0
|
1 .CODE
|
|
2
|
|
3 dcCall_x64_sysv PROC
|
|
4 OPTION PROLOGUE:NONE, EPILOGUE:NONE
|
|
5 push rbp
|
|
6 push rbx
|
|
7 mov rbp, rsp
|
|
8 mov rbx, r8
|
|
9 movsd xmm0, qword ptr[rcx ]
|
|
10 movsd xmm1, qword ptr[rcx+ 8]
|
|
11 movsd xmm2, qword ptr[rcx+16]
|
|
12 movsd xmm3, qword ptr[rcx+24]
|
|
13 movsd xmm4, qword ptr[rcx+32]
|
|
14 movsd xmm5, qword ptr[rcx+40]
|
|
15 movsd xmm6, qword ptr[rcx+48]
|
|
16 movsd xmm7, qword ptr[rcx+56]
|
|
17 sub rsp, rdi
|
|
18 mov rax, rdi
|
|
19 add rax, 8
|
|
20 and rax, 15
|
|
21 sub rsp, rax
|
|
22 mov rcx, rdi
|
|
23 mov rdi, rsp
|
|
24 rep movsb
|
|
25 mov rdi, qword ptr[rdx ]
|
|
26 mov rsi, qword ptr[rdx+ 8]
|
|
27 mov rcx, qword ptr[rdx+24]
|
|
28 mov r8, qword ptr[rdx+32]
|
|
29 mov r9, qword ptr[rdx+40]
|
|
30 mov rdx, qword ptr[rdx+16]
|
|
31 mov al, 8
|
|
32 call rbx
|
|
33 mov rsp, rbp
|
|
34 pop rbx
|
|
35 pop rbp
|
|
36 ret
|
|
37 dcCall_x64_sysv ENDP
|
|
38 dcCall_x64_win64 PROC
|
|
39 OPTION PROLOGUE:NONE, EPILOGUE:NONE
|
|
40 push rbp
|
|
41 push rsi
|
|
42 push rdi
|
|
43 mov rbp, rsp
|
|
44 sub rsp, rcx
|
|
45 mov rax, rcx
|
|
46 add rax, 8
|
|
47 and rax, 15
|
|
48 sub rsp, rax
|
|
49 mov rsi, rdx
|
|
50 mov rdi, rsp
|
|
51 mov rax, r9
|
|
52 rep movsb
|
|
53 mov rcx, qword ptr[r8 ]
|
|
54 mov rdx, qword ptr[r8+ 8]
|
|
55 mov r9, qword ptr[r8+24]
|
|
56 mov r8, qword ptr[r8+16]
|
|
57 movd xmm0, rcx
|
|
58 movd xmm1, rdx
|
|
59 movd xmm2, r8
|
|
60 movd xmm3, r9
|
|
61 push r9
|
|
62 push r8
|
|
63 push rdx
|
|
64 push rcx
|
|
65 call rax
|
|
66 mov rsp, rbp
|
|
67 pop rdi
|
|
68 pop rsi
|
|
69 pop rbp
|
|
70 ret
|
|
71 dcCall_x64_win64 ENDP
|
|
72 END
|