1Register Usage
2rax      temporary register; with variable arguments passes information
3         about the number of SSE registers used; 1st return register
4
5rbx*     callee-saved register; optionally used as base pointer
6
7rcx      used to pass 4th integer argument to functions
8
9rdx      used to pass 3rd argument to functions 2nd return register
10
11rsp*     stack pointer
12
13rbp*     callee-saved register; optionally used as frame pointer
14
15rsi      used to pass 2nd argument to functions
16
17rdi      used to pass 1st argument to functions
18
19r8       used to pass 5th argument to functions
20
21r9       used to pass 6th argument to functions
22
23r10      temporary register, used for passing a function's static chain pointer
24
25r11      temporary register
26
27r12-15*  callee-saved registers
28
29xmm0�1   used to pass and return floating point arguments
30
31xmm2�7   used to pass floating point arguments
32
33xmm8�15  temporary registers
34
35mmx0�7   temporary registers
36
37st0      temporary register; used to return long double arguments
38
39st1      temporary registers; used to return long double arguments
40
41st2�7    temporary registers
42
43fs       Reserved for system use (as thread specific data register)
44
45	
46
47*) must be preserved across function calls
48
49Integer arguments from list: rdi,rsi,rdx,rcx,r8,r9,stack
50Floating point arguments from list: xmm0-xmm7