1 2#ifdef _M_ARM 3 4#include <kxarm.h> 5 6 LEAF_ENTRY call_method 7 __assertfail 8 LEAF_END call_method 9 10#elif defined(_M_AMD64) 11 12#include <asm.inc> 13.code64 14 15PUBLIC call_method 16call_method: 17 int 2ch 18 ret 19 20PUBLIC call_double_method 21call_double_method: 22 jmp call_method 23 24#else 25 26#include <asm.inc> 27.code32 28 29PUBLIC _call_method 30_call_method: 31 push ebp 32 mov ebp, esp 33 push esi 34 push edi 35 mov edx, dword ptr ds:[ebp + 12] 36 mov edi, esp 37 shl edx, 2 38 jz cm1 39 sub edi, edx 40 and edi, HEX(0FFFFFFF0) 41 mov esp, edi 42 mov ecx, dword ptr ds:[ebp + 12] 43 mov esi, dword ptr ds:[ebp + 16] 44 cld 45 rep movsd 46cm1: 47 call dword ptr ds:[ebp + 8] 48 sub edi, esp 49 mov ecx,[ebp + 20] 50 mov [ecx], edi 51 lea esp, [ebp - 8] 52 pop edi 53 pop esi 54 pop ebp 55 ret 56 57PUBLIC _call_double_method 58_call_double_method: 59 jmp _call_method 60 61#endif 62 63 END 64