2011-06-21 13:22:07 +00:00
|
|
|
|
2015-05-14 22:33:27 +00:00
|
|
|
#ifdef _M_ARM
|
|
|
|
|
|
|
|
#include <kxarm.h>
|
|
|
|
|
|
|
|
LEAF_ENTRY call_method
|
|
|
|
__assertfail
|
|
|
|
LEAF_END call_method
|
|
|
|
|
|
|
|
#elif defined(_M_AMD64)
|
2011-06-21 13:22:07 +00:00
|
|
|
|
2015-05-14 22:33:27 +00:00
|
|
|
#include <asm.inc>
|
2011-08-23 08:58:15 +00:00
|
|
|
.code64
|
|
|
|
|
|
|
|
PUBLIC call_method
|
|
|
|
call_method:
|
|
|
|
int 2ch
|
|
|
|
ret
|
|
|
|
|
2019-02-01 17:09:12 +00:00
|
|
|
PUBLIC call_double_method
|
|
|
|
call_double_method:
|
|
|
|
jmp call_method
|
|
|
|
|
2011-08-23 08:58:15 +00:00
|
|
|
#else
|
2015-05-14 22:33:27 +00:00
|
|
|
|
|
|
|
#include <asm.inc>
|
2011-06-21 13:22:07 +00:00
|
|
|
.code32
|
|
|
|
|
|
|
|
PUBLIC _call_method
|
|
|
|
_call_method:
|
|
|
|
push ebp
|
|
|
|
mov ebp, esp
|
|
|
|
push esi
|
|
|
|
push edi
|
|
|
|
mov edx, dword ptr ds:[ebp + 12]
|
2014-09-19 14:35:56 +00:00
|
|
|
mov edi, esp
|
2011-06-21 13:22:07 +00:00
|
|
|
shl edx, 2
|
|
|
|
jz cm1
|
2014-09-19 14:35:56 +00:00
|
|
|
sub edi, edx
|
|
|
|
and edi, HEX(0FFFFFFF0)
|
|
|
|
mov esp, edi
|
2011-06-21 13:22:07 +00:00
|
|
|
mov ecx, dword ptr ds:[ebp + 12]
|
|
|
|
mov esi, dword ptr ds:[ebp + 16]
|
|
|
|
cld
|
|
|
|
rep movsd
|
|
|
|
cm1:
|
|
|
|
call dword ptr ds:[ebp + 8]
|
2014-09-19 14:35:56 +00:00
|
|
|
sub edi, esp
|
|
|
|
mov ecx,[ebp + 20]
|
|
|
|
mov [ecx], edi
|
2011-06-21 13:22:07 +00:00
|
|
|
lea esp, [ebp - 8]
|
|
|
|
pop edi
|
|
|
|
pop esi
|
|
|
|
pop ebp
|
|
|
|
ret
|
2019-01-29 12:18:42 +00:00
|
|
|
|
|
|
|
PUBLIC _call_double_method
|
|
|
|
_call_double_method:
|
|
|
|
jmp _call_method
|
|
|
|
|
2011-08-23 08:58:15 +00:00
|
|
|
#endif
|
2011-06-21 13:22:07 +00:00
|
|
|
|
2015-05-14 22:33:27 +00:00
|
|
|
END
|