MS does explain that EAX, EDX and ECX are "destroyed" by calls, all other registers must be preserved by callee in 32-bit code, link to MSDN docs - it doesn't matter which calling convention is used.
So, to be clear, you need to mark ecx
as clobbered, since eax
and edx
are already being used in your inline assembler.
And for x86-64, the documentation is here, and says
The registers RBX, RBP, RDI, RSI, R12, R13, R14, and R15 are considered nonvolatile and must be saved and restored by a function that uses them.