We have these for a reason. I think this also fixes a theoretical problem when `ABI_PARAM1 == loop_counter` where the first MOV destroys the second's value; I'm not sure if this can actually happen in practice though.