I think there's a fault in one of your move functions.. The quadrature decoders generate positive or negative values depending on which direction your motors have spun. This means that one or the other of the while loops will never end in user_movement_functions.c (EDIT: or to be more accurate, it won't end the way you expect it to).
The other thing that strikes me is that there is no endless loop in your main() function. When your code finishes executing, main() returns, and you will wind up in Cm3Start.c at lines 387-390 in the following code:
/* If main returns, make sure we don't return. */
I'd suggest putting the following part of your main() function in an endless loop like so:
Thank you PolyVinalDistillat. That fixed our problem. For the Negitive values of the reverse function we are going to edit the code to take that absolute value of the encoder reading.
Glad to have helped :)