You may want to check on the 3 dimensional chat board but there seems to be a problem in one of two or both areas in the model file.
Not knowing 3dsmax, I can only guess at a few things based on converting this to a directx file. Often in 3d editors there is a selection to set the final pivot point. This is hard to explain... The gun barrel and the holds are set with a rotation before they even go to the animation. If it's at all possible, you should make sure that whatever position you set the model up as, all the rotations should be fixed or set to zero. What I mean by this is in the designing stage of your model if you select the barrel and move it around and rotate it to get it where you want it, that rotation and movement data is saved. Once the barrel is in place, the rotations and positions should be reset to zero so as to say that the barrel's position now is it's starting point. Sometimes this is called locking the transformations or clearing the transformations. If this information is not reset, once the animation starts, it looks at the rotations and positions you made on the barrel to get it into place (before you even started animating) and plays those with the animation key frames. This will often throw a limb into a strange position or it's original position when you first created it.
Enjoy your day.