ebx is a general purpose register. It's not different from eax, ecx, edx, esi or edi
'
You would probably have to read up on the calling convention you use. This is most likely fastcall, which is the standard in delphi and freepascal.

This states that the parameters gets passed left to right like this:
eax,edx,ecx,ebp+4,ebp+8,ebp+12,ebp+16, and so on

You are free to do whatever with ebx in the function, but if you modify any of the others and they are not used to pass parameters in, then you must restore them to the value they were before you altered them

This you must do, to any register, except for eax, which is the result register