You can find a bone and adjust its rotation, position, etc at runtime. The animator just needs to animate the arm to be straight and you'll rotate it as needed. For pulling back the arm, you can translate a bone and use IK, but it may be difficult not to move it too far. It'd be easier if the animator sets it up so the arm is fully back when a transform constraint is applied with a mix of 100%. Then you can set the mix of the constraint at runtime to get anything from the arm not back (0%) to all the way back (100%).