1.) First of all there is no return statements at the end of the procedure(s).
2.) Since I am using floating point AND STACK I put finit before each procedure call.
3.) I needed to establish a stack frame in the beginning of each procedure
push    ebp             ; save base pointer
mov     ebp, esp        ; establish stack frame
push    ebx             ; save EBX
4.) Pop the registers from the stack frame before the return on each procedure
pop     ebx             ; restore EBX
pop     ebp             ; restore EBP
ret                     ; return  
Those things fixed my problem.
2
solved Procedures with floating points breaking