2018-07-27 09:40:01 +02:00
|
|
|
/* This file is auto-generated, do not edit. */
|
|
|
|
|
|
|
|
#include <stdarg.h>
|
|
|
|
|
|
|
|
#include "windef.h"
|
|
|
|
#include "winbase.h"
|
|
|
|
|
|
|
|
#include "cxx.h"
|
|
|
|
#include "flatapi.h"
|
|
|
|
|
|
|
|
#ifdef __i386__
|
|
|
|
__ASM_GLOBAL_FUNC(call_flat_method,
|
|
|
|
"popl %eax\n\t"
|
|
|
|
"pushl %ecx\n\t"
|
|
|
|
"pushl %eax\n\t"
|
|
|
|
"jmp *%edx");
|
|
|
|
#else
|
|
|
|
// handles "this" and up to 3 parameters
|
|
|
|
__ASM_GLOBAL_FUNC(call_flat_method,
|
|
|
|
"movq %r8, %r9\n\t" // shift over arguments
|
|
|
|
"movq %rdx, %r8\n\t"
|
|
|
|
"movq %rcx, %rdx\n\t"
|
|
|
|
"movq %r10, %rcx\n\t" // add This pointer
|
|
|
|
"jmp *%r11");
|
|
|
|
extern void call_flat_method(void);
|
|
|
|
|
2018-07-30 17:40:06 +02:00
|
|
|
__ASM_GLOBAL_FUNC(call_flat_method_f,
|
|
|
|
"movq %r8, %r9\n\t" // shift over arguments
|
|
|
|
"movq %rdx, %r8\n\t"
|
|
|
|
"movq %rcx, %rdx\n\t"
|
|
|
|
"movq %r10, %rcx\n\t" // add This pointer
|
2018-07-31 14:08:03 +02:00
|
|
|
"movaps %xmm2, %xmm3\n\t"
|
|
|
|
"movaps %xmm1, %xmm2\n\t"
|
|
|
|
"movaps %xmm0, %xmm1\n\t"
|
2018-07-30 17:40:06 +02:00
|
|
|
"jmp *%r11");
|
|
|
|
extern void call_flat_method_f(void);
|
|
|
|
|
2018-07-27 09:40:01 +02:00
|
|
|
__ASM_GLOBAL_FUNC(call_flat_method4,
|
|
|
|
"subq $0x28, %rsp\n\t"
|
2018-08-29 17:48:11 +02:00
|
|
|
__ASM_CFI(".cfi_adjust_cfa_offset 40\n\t")
|
2018-07-27 09:40:01 +02:00
|
|
|
"movq %r9, 0x20(%rsp)\n\t"
|
|
|
|
"movq %r8, %r9\n\t" // shift over arguments
|
|
|
|
"movq %rdx, %r8\n\t"
|
|
|
|
"movq %rcx, %rdx\n\t"
|
|
|
|
"movq %r10, %rcx\n\t" // add This pointer
|
|
|
|
"call *%r11\n\t"
|
|
|
|
"addq $0x28, %rsp\n\t"
|
2018-08-29 17:48:11 +02:00
|
|
|
__ASM_CFI(".cfi_adjust_cfa_offset -40\n\t")
|
2018-07-27 09:40:01 +02:00
|
|
|
"ret");
|
|
|
|
extern void call_flat_method4(void);
|
|
|
|
|
|
|
|
__ASM_GLOBAL_FUNC(call_flat_method5,
|
|
|
|
"subq $0x38, %rsp\n\t"
|
2018-08-29 17:48:11 +02:00
|
|
|
__ASM_CFI(".cfi_adjust_cfa_offset 56\n\t")
|
2018-07-27 09:40:01 +02:00
|
|
|
"movq %r9, 0x20(%rsp)\n\t"
|
|
|
|
"movq 0x60(%rsp), %rax\n\t" // copy parameter
|
|
|
|
"movq %rax, 0x28(%rsp)\n\t"
|
|
|
|
"movq %r8, %r9\n\t" // shift over arguments
|
|
|
|
"movq %rdx, %r8\n\t"
|
|
|
|
"movq %rcx, %rdx\n\t"
|
|
|
|
"movq %r10, %rcx\n\t" // add This pointer
|
|
|
|
"call *%r11\n\t"
|
|
|
|
"addq $0x38, %rsp\n\t"
|
2018-08-29 17:48:11 +02:00
|
|
|
__ASM_CFI(".cfi_adjust_cfa_offset -56\n\t")
|
2018-07-27 09:40:01 +02:00
|
|
|
"ret");
|
|
|
|
extern void call_flat_method5(void);
|
|
|
|
|
|
|
|
__ASM_GLOBAL_FUNC(call_flat_method6,
|
|
|
|
"subq $0x38, %rsp\n\t"
|
2018-08-29 17:48:11 +02:00
|
|
|
__ASM_CFI(".cfi_adjust_cfa_offset 56\n\t")
|
2018-07-27 09:40:01 +02:00
|
|
|
"movq %r9, 0x20(%rsp)\n\t"
|
|
|
|
"movq 0x60(%rsp), %rax\n\t" // copy parameter
|
|
|
|
"movq %rax, 0x28(%rsp)\n\t"
|
|
|
|
"movq 0x68(%rsp), %rax\n\t" // copy parameter
|
|
|
|
"movq %rax, 0x30(%rsp)\n\t"
|
|
|
|
"movq %r8, %r9\n\t" // shift over arguments
|
|
|
|
"movq %rdx, %r8\n\t"
|
|
|
|
"movq %rcx, %rdx\n\t"
|
|
|
|
"movq %r10, %rcx\n\t" // add This pointer
|
|
|
|
"call *%r11\n\t"
|
|
|
|
"addq $0x38, %rsp\n\t"
|
2018-08-29 17:48:11 +02:00
|
|
|
__ASM_CFI(".cfi_adjust_cfa_offset -56\n\t")
|
2018-07-27 09:40:01 +02:00
|
|
|
"ret");
|
|
|
|
extern void call_flat_method6(void);
|
|
|
|
|
|
|
|
__ASM_GLOBAL_FUNC(call_flat_method7,
|
|
|
|
"subq $0x48, %rsp\n\t"
|
2018-08-29 17:48:11 +02:00
|
|
|
__ASM_CFI(".cfi_adjust_cfa_offset 72\n\t")
|
2018-07-27 09:40:01 +02:00
|
|
|
"movq %r9, 0x20(%rsp)\n\t"
|
|
|
|
"movq 0x70(%rsp), %rax\n\t" // copy parameter
|
|
|
|
"movq %rax, 0x28(%rsp)\n\t"
|
|
|
|
"movq 0x78(%rsp), %rax\n\t" // copy parameter
|
|
|
|
"movq %rax, 0x30(%rsp)\n\t"
|
|
|
|
"movq 0x80(%rsp), %rax\n\t" // copy parameter
|
|
|
|
"movq %rax, 0x38(%rsp)\n\t"
|
|
|
|
"movq %r8, %r9\n\t" // shift over arguments
|
|
|
|
"movq %rdx, %r8\n\t"
|
|
|
|
"movq %rcx, %rdx\n\t"
|
|
|
|
"movq %r10, %rcx\n\t" // add This pointer
|
|
|
|
"call *%r11\n\t"
|
|
|
|
"addq $0x48, %rsp\n\t"
|
2018-08-29 17:48:11 +02:00
|
|
|
__ASM_CFI(".cfi_adjust_cfa_offset -72\n\t")
|
2018-07-27 09:40:01 +02:00
|
|
|
"ret");
|
|
|
|
extern void call_flat_method7(void);
|
|
|
|
|
|
|
|
__ASM_GLOBAL_FUNC(call_flat_method8,
|
|
|
|
"subq $0x48, %rsp\n\t"
|
2018-08-29 17:48:11 +02:00
|
|
|
__ASM_CFI(".cfi_adjust_cfa_offset 72\n\t")
|
2018-07-27 09:40:01 +02:00
|
|
|
"movq %r9, 0x20(%rsp)\n\t"
|
|
|
|
"movq 0x70(%rsp), %rax\n\t" // copy parameter
|
|
|
|
"movq %rax, 0x28(%rsp)\n\t"
|
|
|
|
"movq 0x78(%rsp), %rax\n\t" // copy parameter
|
|
|
|
"movq %rax, 0x30(%rsp)\n\t"
|
|
|
|
"movq 0x80(%rsp), %rax\n\t" // copy parameter
|
|
|
|
"movq %rax, 0x38(%rsp)\n\t"
|
|
|
|
"movq 0x88(%rsp), %rax\n\t" // copy parameter
|
|
|
|
"movq %rax, 0x40(%rsp)\n\t"
|
|
|
|
"movq %r8, %r9\n\t" // shift over arguments
|
|
|
|
"movq %rdx, %r8\n\t"
|
|
|
|
"movq %rcx, %rdx\n\t"
|
|
|
|
"movq %r10, %rcx\n\t" // add This pointer
|
|
|
|
"call *%r11\n\t"
|
|
|
|
"addq $0x48, %rsp\n\t"
|
2018-08-29 17:48:11 +02:00
|
|
|
__ASM_CFI(".cfi_adjust_cfa_offset -72\n\t")
|
2018-07-27 09:40:01 +02:00
|
|
|
"ret");
|
|
|
|
extern void call_flat_method8(void);
|
|
|
|
|
|
|
|
__ASM_GLOBAL_FUNC(call_flat_method9,
|
|
|
|
"subq $0x58, %rsp\n\t"
|
2018-08-29 17:48:11 +02:00
|
|
|
__ASM_CFI(".cfi_adjust_cfa_offset 88\n\t")
|
2018-07-27 09:40:01 +02:00
|
|
|
"movq %r9, 0x20(%rsp)\n\t"
|
|
|
|
"movq 0x80(%rsp), %rax\n\t" // copy parameter
|
|
|
|
"movq %rax, 0x28(%rsp)\n\t"
|
|
|
|
"movq 0x88(%rsp), %rax\n\t" // copy parameter
|
|
|
|
"movq %rax, 0x30(%rsp)\n\t"
|
|
|
|
"movq 0x90(%rsp), %rax\n\t" // copy parameter
|
|
|
|
"movq %rax, 0x38(%rsp)\n\t"
|
|
|
|
"movq 0x98(%rsp), %rax\n\t" // copy parameter
|
|
|
|
"movq %rax, 0x40(%rsp)\n\t"
|
|
|
|
"movq 0xa0(%rsp), %rax\n\t" // copy parameter
|
|
|
|
"movq %rax, 0x48(%rsp)\n\t"
|
|
|
|
"movq %r8, %r9\n\t" // shift over arguments
|
|
|
|
"movq %rdx, %r8\n\t"
|
|
|
|
"movq %rcx, %rdx\n\t"
|
|
|
|
"movq %r10, %rcx\n\t" // add This pointer
|
|
|
|
"call *%r11\n\t"
|
|
|
|
"addq $0x58, %rsp\n\t"
|
2018-08-29 17:48:11 +02:00
|
|
|
__ASM_CFI(".cfi_adjust_cfa_offset -88\n\t")
|
2018-07-27 09:40:01 +02:00
|
|
|
"ret");
|
|
|
|
extern void call_flat_method9(void);
|
|
|
|
|
2018-07-30 17:40:06 +02:00
|
|
|
__ASM_GLOBAL_FUNC(call_flat_method4_f,
|
|
|
|
"subq $0x28, %rsp\n\t"
|
2018-08-29 17:48:11 +02:00
|
|
|
__ASM_CFI(".cfi_adjust_cfa_offset 40\n\t")
|
2018-07-30 17:40:06 +02:00
|
|
|
"movq %r9, 0x20(%rsp)\n\t"
|
|
|
|
"movq %r8, %r9\n\t" // shift over arguments
|
|
|
|
"movq %rdx, %r8\n\t"
|
|
|
|
"movq %rcx, %rdx\n\t"
|
|
|
|
"movq %r10, %rcx\n\t" // add This pointer
|
2018-07-31 14:08:03 +02:00
|
|
|
"movaps %xmm2, %xmm3\n\t"
|
|
|
|
"movaps %xmm1, %xmm2\n\t"
|
|
|
|
"movaps %xmm0, %xmm1\n\t"
|
2018-07-30 17:40:06 +02:00
|
|
|
"call *%r11\n\t"
|
|
|
|
"addq $0x28, %rsp\n\t"
|
2018-08-29 17:48:11 +02:00
|
|
|
__ASM_CFI(".cfi_adjust_cfa_offset -40\n\t")
|
2018-07-30 17:40:06 +02:00
|
|
|
"ret");
|
|
|
|
extern void call_flat_method4_f(void);
|
|
|
|
|
|
|
|
__ASM_GLOBAL_FUNC(call_flat_method4_f_f,
|
|
|
|
"subq $0x28, %rsp\n\t"
|
2018-08-29 17:48:11 +02:00
|
|
|
__ASM_CFI(".cfi_adjust_cfa_offset 40\n\t")
|
2018-07-30 17:40:06 +02:00
|
|
|
"movq %xmm3, 0x20(%rsp)\n\t"
|
|
|
|
"movq %r8, %r9\n\t" // shift over arguments
|
|
|
|
"movq %rdx, %r8\n\t"
|
|
|
|
"movq %rcx, %rdx\n\t"
|
|
|
|
"movq %r10, %rcx\n\t" // add This pointer
|
2018-07-31 14:08:03 +02:00
|
|
|
"movaps %xmm2, %xmm3\n\t"
|
|
|
|
"movaps %xmm1, %xmm2\n\t"
|
|
|
|
"movaps %xmm0, %xmm1\n\t"
|
2018-07-30 17:40:06 +02:00
|
|
|
"call *%r11\n\t"
|
|
|
|
"addq $0x28, %rsp\n\t"
|
2018-08-29 17:48:11 +02:00
|
|
|
__ASM_CFI(".cfi_adjust_cfa_offset -40\n\t")
|
2018-07-30 17:40:06 +02:00
|
|
|
"ret");
|
|
|
|
extern void call_flat_method4_f_f(void);
|
|
|
|
|
|
|
|
__ASM_GLOBAL_FUNC(call_flat_method5_f,
|
|
|
|
"subq $0x38, %rsp\n\t"
|
2018-08-29 17:48:11 +02:00
|
|
|
__ASM_CFI(".cfi_adjust_cfa_offset 56\n\t")
|
2018-07-30 17:40:06 +02:00
|
|
|
"movq %r9, 0x20(%rsp)\n\t"
|
|
|
|
"movq 0x60(%rsp), %rax\n\t" // copy parameter
|
|
|
|
"movq %rax, 0x28(%rsp)\n\t"
|
|
|
|
"movq %r8, %r9\n\t" // shift over arguments
|
|
|
|
"movq %rdx, %r8\n\t"
|
|
|
|
"movq %rcx, %rdx\n\t"
|
|
|
|
"movq %r10, %rcx\n\t" // add This pointer
|
2018-07-31 14:08:03 +02:00
|
|
|
"movaps %xmm2, %xmm3\n\t"
|
|
|
|
"movaps %xmm1, %xmm2\n\t"
|
|
|
|
"movaps %xmm0, %xmm1\n\t"
|
2018-07-30 17:40:06 +02:00
|
|
|
"call *%r11\n\t"
|
|
|
|
"addq $0x38, %rsp\n\t"
|
2018-08-29 17:48:11 +02:00
|
|
|
__ASM_CFI(".cfi_adjust_cfa_offset -56\n\t")
|
2018-07-30 17:40:06 +02:00
|
|
|
"ret");
|
|
|
|
extern void call_flat_method5_f(void);
|
|
|
|
|
|
|
|
__ASM_GLOBAL_FUNC(call_flat_method5_f_f,
|
|
|
|
"subq $0x38, %rsp\n\t"
|
2018-08-29 17:48:11 +02:00
|
|
|
__ASM_CFI(".cfi_adjust_cfa_offset 56\n\t")
|
2018-07-30 17:40:06 +02:00
|
|
|
"movq %xmm3, 0x20(%rsp)\n\t"
|
|
|
|
"movq 0x60(%rsp), %rax\n\t" // copy parameter
|
|
|
|
"movq %rax, 0x28(%rsp)\n\t"
|
|
|
|
"movq %r8, %r9\n\t" // shift over arguments
|
|
|
|
"movq %rdx, %r8\n\t"
|
|
|
|
"movq %rcx, %rdx\n\t"
|
|
|
|
"movq %r10, %rcx\n\t" // add This pointer
|
2018-07-31 14:08:03 +02:00
|
|
|
"movaps %xmm2, %xmm3\n\t"
|
|
|
|
"movaps %xmm1, %xmm2\n\t"
|
|
|
|
"movaps %xmm0, %xmm1\n\t"
|
2018-07-30 17:40:06 +02:00
|
|
|
"call *%r11\n\t"
|
|
|
|
"addq $0x38, %rsp\n\t"
|
2018-08-29 17:48:11 +02:00
|
|
|
__ASM_CFI(".cfi_adjust_cfa_offset -56\n\t")
|
2018-07-30 17:40:06 +02:00
|
|
|
"ret");
|
|
|
|
extern void call_flat_method5_f_f(void);
|
|
|
|
|
|
|
|
__ASM_GLOBAL_FUNC(call_flat_method6_f,
|
|
|
|
"subq $0x38, %rsp\n\t"
|
2018-08-29 17:48:11 +02:00
|
|
|
__ASM_CFI(".cfi_adjust_cfa_offset 56\n\t")
|
2018-07-30 17:40:06 +02:00
|
|
|
"movq %r9, 0x20(%rsp)\n\t"
|
|
|
|
"movq 0x60(%rsp), %rax\n\t" // copy parameter
|
|
|
|
"movq %rax, 0x28(%rsp)\n\t"
|
|
|
|
"movq 0x68(%rsp), %rax\n\t" // copy parameter
|
|
|
|
"movq %rax, 0x30(%rsp)\n\t"
|
|
|
|
"movq %r8, %r9\n\t" // shift over arguments
|
|
|
|
"movq %rdx, %r8\n\t"
|
|
|
|
"movq %rcx, %rdx\n\t"
|
|
|
|
"movq %r10, %rcx\n\t" // add This pointer
|
2018-07-31 14:08:03 +02:00
|
|
|
"movaps %xmm2, %xmm3\n\t"
|
|
|
|
"movaps %xmm1, %xmm2\n\t"
|
|
|
|
"movaps %xmm0, %xmm1\n\t"
|
2018-07-30 17:40:06 +02:00
|
|
|
"call *%r11\n\t"
|
|
|
|
"addq $0x38, %rsp\n\t"
|
2018-08-29 17:48:11 +02:00
|
|
|
__ASM_CFI(".cfi_adjust_cfa_offset -56\n\t")
|
2018-07-30 17:40:06 +02:00
|
|
|
"ret");
|
|
|
|
extern void call_flat_method6_f(void);
|
|
|
|
|
|
|
|
__ASM_GLOBAL_FUNC(call_flat_method6_f_f,
|
|
|
|
"subq $0x38, %rsp\n\t"
|
2018-08-29 17:48:11 +02:00
|
|
|
__ASM_CFI(".cfi_adjust_cfa_offset 56\n\t")
|
2018-07-30 17:40:06 +02:00
|
|
|
"movq %xmm3, 0x20(%rsp)\n\t"
|
|
|
|
"movq 0x60(%rsp), %rax\n\t" // copy parameter
|
|
|
|
"movq %rax, 0x28(%rsp)\n\t"
|
|
|
|
"movq 0x68(%rsp), %rax\n\t" // copy parameter
|
|
|
|
"movq %rax, 0x30(%rsp)\n\t"
|
|
|
|
"movq %r8, %r9\n\t" // shift over arguments
|
|
|
|
"movq %rdx, %r8\n\t"
|
|
|
|
"movq %rcx, %rdx\n\t"
|
|
|
|
"movq %r10, %rcx\n\t" // add This pointer
|
2018-07-31 14:08:03 +02:00
|
|
|
"movaps %xmm2, %xmm3\n\t"
|
|
|
|
"movaps %xmm1, %xmm2\n\t"
|
|
|
|
"movaps %xmm0, %xmm1\n\t"
|
2018-07-30 17:40:06 +02:00
|
|
|
"call *%r11\n\t"
|
|
|
|
"addq $0x38, %rsp\n\t"
|
2018-08-29 17:48:11 +02:00
|
|
|
__ASM_CFI(".cfi_adjust_cfa_offset -56\n\t")
|
2018-07-30 17:40:06 +02:00
|
|
|
"ret");
|
|
|
|
extern void call_flat_method6_f_f(void);
|
|
|
|
|
|
|
|
__ASM_GLOBAL_FUNC(call_flat_method7_f,
|
|
|
|
"subq $0x48, %rsp\n\t"
|
2018-08-29 17:48:11 +02:00
|
|
|
__ASM_CFI(".cfi_adjust_cfa_offset 72\n\t")
|
2018-07-30 17:40:06 +02:00
|
|
|
"movq %r9, 0x20(%rsp)\n\t"
|
|
|
|
"movq 0x70(%rsp), %rax\n\t" // copy parameter
|
|
|
|
"movq %rax, 0x28(%rsp)\n\t"
|
|
|
|
"movq 0x78(%rsp), %rax\n\t" // copy parameter
|
|
|
|
"movq %rax, 0x30(%rsp)\n\t"
|
|
|
|
"movq 0x80(%rsp), %rax\n\t" // copy parameter
|
|
|
|
"movq %rax, 0x38(%rsp)\n\t"
|
|
|
|
"movq %r8, %r9\n\t" // shift over arguments
|
|
|
|
"movq %rdx, %r8\n\t"
|
|
|
|
"movq %rcx, %rdx\n\t"
|
|
|
|
"movq %r10, %rcx\n\t" // add This pointer
|
2018-07-31 14:08:03 +02:00
|
|
|
"movaps %xmm2, %xmm3\n\t"
|
|
|
|
"movaps %xmm1, %xmm2\n\t"
|
|
|
|
"movaps %xmm0, %xmm1\n\t"
|
2018-07-30 17:40:06 +02:00
|
|
|
"call *%r11\n\t"
|
|
|
|
"addq $0x48, %rsp\n\t"
|
2018-08-29 17:48:11 +02:00
|
|
|
__ASM_CFI(".cfi_adjust_cfa_offset -72\n\t")
|
2018-07-30 17:40:06 +02:00
|
|
|
"ret");
|
|
|
|
extern void call_flat_method7_f(void);
|
|
|
|
|
|
|
|
__ASM_GLOBAL_FUNC(call_flat_method7_f_f,
|
|
|
|
"subq $0x48, %rsp\n\t"
|
2018-08-29 17:48:11 +02:00
|
|
|
__ASM_CFI(".cfi_adjust_cfa_offset 72\n\t")
|
2018-07-30 17:40:06 +02:00
|
|
|
"movq %xmm3, 0x20(%rsp)\n\t"
|
|
|
|
"movq 0x70(%rsp), %rax\n\t" // copy parameter
|
|
|
|
"movq %rax, 0x28(%rsp)\n\t"
|
|
|
|
"movq 0x78(%rsp), %rax\n\t" // copy parameter
|
|
|
|
"movq %rax, 0x30(%rsp)\n\t"
|
|
|
|
"movq 0x80(%rsp), %rax\n\t" // copy parameter
|
|
|
|
"movq %rax, 0x38(%rsp)\n\t"
|
|
|
|
"movq %r8, %r9\n\t" // shift over arguments
|
|
|
|
"movq %rdx, %r8\n\t"
|
|
|
|
"movq %rcx, %rdx\n\t"
|
|
|
|
"movq %r10, %rcx\n\t" // add This pointer
|
2018-07-31 14:08:03 +02:00
|
|
|
"movaps %xmm2, %xmm3\n\t"
|
|
|
|
"movaps %xmm1, %xmm2\n\t"
|
|
|
|
"movaps %xmm0, %xmm1\n\t"
|
2018-07-30 17:40:06 +02:00
|
|
|
"call *%r11\n\t"
|
|
|
|
"addq $0x48, %rsp\n\t"
|
2018-08-29 17:48:11 +02:00
|
|
|
__ASM_CFI(".cfi_adjust_cfa_offset -72\n\t")
|
2018-07-30 17:40:06 +02:00
|
|
|
"ret");
|
|
|
|
extern void call_flat_method7_f_f(void);
|
|
|
|
|
|
|
|
__ASM_GLOBAL_FUNC(call_flat_method8_f,
|
|
|
|
"subq $0x48, %rsp\n\t"
|
2018-08-29 17:48:11 +02:00
|
|
|
__ASM_CFI(".cfi_adjust_cfa_offset 72\n\t")
|
2018-07-30 17:40:06 +02:00
|
|
|
"movq %r9, 0x20(%rsp)\n\t"
|
|
|
|
"movq 0x70(%rsp), %rax\n\t" // copy parameter
|
|
|
|
"movq %rax, 0x28(%rsp)\n\t"
|
|
|
|
"movq 0x78(%rsp), %rax\n\t" // copy parameter
|
|
|
|
"movq %rax, 0x30(%rsp)\n\t"
|
|
|
|
"movq 0x80(%rsp), %rax\n\t" // copy parameter
|
|
|
|
"movq %rax, 0x38(%rsp)\n\t"
|
|
|
|
"movq 0x88(%rsp), %rax\n\t" // copy parameter
|
|
|
|
"movq %rax, 0x40(%rsp)\n\t"
|
|
|
|
"movq %r8, %r9\n\t" // shift over arguments
|
|
|
|
"movq %rdx, %r8\n\t"
|
|
|
|
"movq %rcx, %rdx\n\t"
|
|
|
|
"movq %r10, %rcx\n\t" // add This pointer
|
2018-07-31 14:08:03 +02:00
|
|
|
"movaps %xmm2, %xmm3\n\t"
|
|
|
|
"movaps %xmm1, %xmm2\n\t"
|
|
|
|
"movaps %xmm0, %xmm1\n\t"
|
2018-07-30 17:40:06 +02:00
|
|
|
"call *%r11\n\t"
|
|
|
|
"addq $0x48, %rsp\n\t"
|
2018-08-29 17:48:11 +02:00
|
|
|
__ASM_CFI(".cfi_adjust_cfa_offset -72\n\t")
|
2018-07-30 17:40:06 +02:00
|
|
|
"ret");
|
|
|
|
extern void call_flat_method8_f(void);
|
|
|
|
|
|
|
|
__ASM_GLOBAL_FUNC(call_flat_method8_f_f,
|
|
|
|
"subq $0x48, %rsp\n\t"
|
2018-08-29 17:48:11 +02:00
|
|
|
__ASM_CFI(".cfi_adjust_cfa_offset 72\n\t")
|
2018-07-30 17:40:06 +02:00
|
|
|
"movq %xmm3, 0x20(%rsp)\n\t"
|
|
|
|
"movq 0x70(%rsp), %rax\n\t" // copy parameter
|
|
|
|
"movq %rax, 0x28(%rsp)\n\t"
|
|
|
|
"movq 0x78(%rsp), %rax\n\t" // copy parameter
|
|
|
|
"movq %rax, 0x30(%rsp)\n\t"
|
|
|
|
"movq 0x80(%rsp), %rax\n\t" // copy parameter
|
|
|
|
"movq %rax, 0x38(%rsp)\n\t"
|
|
|
|
"movq 0x88(%rsp), %rax\n\t" // copy parameter
|
|
|
|
"movq %rax, 0x40(%rsp)\n\t"
|
|
|
|
"movq %r8, %r9\n\t" // shift over arguments
|
|
|
|
"movq %rdx, %r8\n\t"
|
|
|
|
"movq %rcx, %rdx\n\t"
|
|
|
|
"movq %r10, %rcx\n\t" // add This pointer
|
2018-07-31 14:08:03 +02:00
|
|
|
"movaps %xmm2, %xmm3\n\t"
|
|
|
|
"movaps %xmm1, %xmm2\n\t"
|
|
|
|
"movaps %xmm0, %xmm1\n\t"
|
2018-07-30 17:40:06 +02:00
|
|
|
"call *%r11\n\t"
|
|
|
|
"addq $0x48, %rsp\n\t"
|
2018-08-29 17:48:11 +02:00
|
|
|
__ASM_CFI(".cfi_adjust_cfa_offset -72\n\t")
|
2018-07-30 17:40:06 +02:00
|
|
|
"ret");
|
|
|
|
extern void call_flat_method8_f_f(void);
|
|
|
|
|
|
|
|
__ASM_GLOBAL_FUNC(call_flat_method9_f,
|
|
|
|
"subq $0x58, %rsp\n\t"
|
2018-08-29 17:48:11 +02:00
|
|
|
__ASM_CFI(".cfi_adjust_cfa_offset 88\n\t")
|
2018-07-30 17:40:06 +02:00
|
|
|
"movq %r9, 0x20(%rsp)\n\t"
|
|
|
|
"movq 0x80(%rsp), %rax\n\t" // copy parameter
|
|
|
|
"movq %rax, 0x28(%rsp)\n\t"
|
|
|
|
"movq 0x88(%rsp), %rax\n\t" // copy parameter
|
|
|
|
"movq %rax, 0x30(%rsp)\n\t"
|
|
|
|
"movq 0x90(%rsp), %rax\n\t" // copy parameter
|
|
|
|
"movq %rax, 0x38(%rsp)\n\t"
|
|
|
|
"movq 0x98(%rsp), %rax\n\t" // copy parameter
|
|
|
|
"movq %rax, 0x40(%rsp)\n\t"
|
|
|
|
"movq 0xa0(%rsp), %rax\n\t" // copy parameter
|
|
|
|
"movq %rax, 0x48(%rsp)\n\t"
|
|
|
|
"movq %r8, %r9\n\t" // shift over arguments
|
|
|
|
"movq %rdx, %r8\n\t"
|
|
|
|
"movq %rcx, %rdx\n\t"
|
|
|
|
"movq %r10, %rcx\n\t" // add This pointer
|
2018-07-31 14:08:03 +02:00
|
|
|
"movaps %xmm2, %xmm3\n\t"
|
|
|
|
"movaps %xmm1, %xmm2\n\t"
|
|
|
|
"movaps %xmm0, %xmm1\n\t"
|
2018-07-30 17:40:06 +02:00
|
|
|
"call *%r11\n\t"
|
|
|
|
"addq $0x58, %rsp\n\t"
|
2018-08-29 17:48:11 +02:00
|
|
|
__ASM_CFI(".cfi_adjust_cfa_offset -88\n\t")
|
2018-07-30 17:40:06 +02:00
|
|
|
"ret");
|
|
|
|
extern void call_flat_method9_f(void);
|
|
|
|
|
|
|
|
__ASM_GLOBAL_FUNC(call_flat_method9_f_f,
|
|
|
|
"subq $0x58, %rsp\n\t"
|
2018-08-29 17:48:11 +02:00
|
|
|
__ASM_CFI(".cfi_adjust_cfa_offset 88\n\t")
|
2018-07-30 17:40:06 +02:00
|
|
|
"movq %xmm3, 0x20(%rsp)\n\t"
|
|
|
|
"movq 0x80(%rsp), %rax\n\t" // copy parameter
|
|
|
|
"movq %rax, 0x28(%rsp)\n\t"
|
|
|
|
"movq 0x88(%rsp), %rax\n\t" // copy parameter
|
|
|
|
"movq %rax, 0x30(%rsp)\n\t"
|
|
|
|
"movq 0x90(%rsp), %rax\n\t" // copy parameter
|
|
|
|
"movq %rax, 0x38(%rsp)\n\t"
|
|
|
|
"movq 0x98(%rsp), %rax\n\t" // copy parameter
|
|
|
|
"movq %rax, 0x40(%rsp)\n\t"
|
|
|
|
"movq 0xa0(%rsp), %rax\n\t" // copy parameter
|
|
|
|
"movq %rax, 0x48(%rsp)\n\t"
|
|
|
|
"movq %r8, %r9\n\t" // shift over arguments
|
|
|
|
"movq %rdx, %r8\n\t"
|
|
|
|
"movq %rcx, %rdx\n\t"
|
|
|
|
"movq %r10, %rcx\n\t" // add This pointer
|
2018-07-31 14:08:03 +02:00
|
|
|
"movaps %xmm2, %xmm3\n\t"
|
|
|
|
"movaps %xmm1, %xmm2\n\t"
|
|
|
|
"movaps %xmm0, %xmm1\n\t"
|
2018-07-30 17:40:06 +02:00
|
|
|
"call *%r11\n\t"
|
|
|
|
"addq $0x58, %rsp\n\t"
|
2018-08-29 17:48:11 +02:00
|
|
|
__ASM_CFI(".cfi_adjust_cfa_offset -88\n\t")
|
2018-07-30 17:40:06 +02:00
|
|
|
"ret");
|
|
|
|
extern void call_flat_method9_f_f(void);
|
|
|
|
|
|
|
|
pfn_call_flat_method
|
|
|
|
get_call_flat_method_pfn( int param_count, BOOL has_floats, BOOL is_4th_float )
|
2018-07-27 09:40:01 +02:00
|
|
|
{
|
2018-07-30 17:40:06 +02:00
|
|
|
if (!has_floats)
|
|
|
|
{
|
2018-07-27 09:40:01 +02:00
|
|
|
if (param_count <= 3) return call_flat_method;
|
|
|
|
if (param_count == 4) return call_flat_method4;
|
|
|
|
if (param_count == 5) return call_flat_method5;
|
|
|
|
if (param_count == 6) return call_flat_method6;
|
|
|
|
if (param_count == 7) return call_flat_method7;
|
|
|
|
if (param_count == 8) return call_flat_method8;
|
|
|
|
return call_flat_method9;
|
2018-07-30 17:40:06 +02:00
|
|
|
}
|
|
|
|
if (is_4th_float)
|
|
|
|
{
|
|
|
|
if (param_count <= 3) return call_flat_method_f;
|
|
|
|
if (param_count == 4) return call_flat_method4_f_f;
|
|
|
|
if (param_count == 5) return call_flat_method5_f_f;
|
|
|
|
if (param_count == 6) return call_flat_method6_f_f;
|
|
|
|
if (param_count == 7) return call_flat_method7_f_f;
|
|
|
|
if (param_count == 8) return call_flat_method8_f_f;
|
|
|
|
return call_flat_method9_f_f;
|
|
|
|
}
|
|
|
|
if (param_count <= 3) return call_flat_method_f;
|
|
|
|
if (param_count == 4) return call_flat_method4_f;
|
|
|
|
if (param_count == 5) return call_flat_method5_f;
|
|
|
|
if (param_count == 6) return call_flat_method6_f;
|
|
|
|
if (param_count == 7) return call_flat_method7_f;
|
|
|
|
if (param_count == 8) return call_flat_method8_f;
|
|
|
|
return call_flat_method9_f;
|
2018-07-27 09:40:01 +02:00
|
|
|
}
|
|
|
|
#endif
|