Here's a macro to overload the call function with what Mac OS X expects for the CDECL calling convention:
%imacro call 1-*
mov ebx,esp
and esp,0xFFFFFFF0
%if %0 > 1
%if ((%0-1) % 4) > 0
sub esp,16-(((%0-1) % 4) * 4)
%endif
%rep (%0 - 1)
%rotate -1
push %1
%endrep
%rotate -1
%endif
call %1
mov esp,ebx
%endmacro
The above is "shooting from the hip" so to speak, so check it over for logic/syntax errors.