1744 lines
44 KiB
NASM
1744 lines
44 KiB
NASM
TITLE C:\Documents and Settings\Administrator\My Documents\Software\NativeCall\src\cpp\VoidCall.cpp
|
|
.386P
|
|
include listing.inc
|
|
if @Version gt 510
|
|
.model FLAT
|
|
else
|
|
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
|
|
_TEXT ENDS
|
|
_DATA SEGMENT DWORD USE32 PUBLIC 'DATA'
|
|
_DATA ENDS
|
|
CONST SEGMENT DWORD USE32 PUBLIC 'CONST'
|
|
CONST ENDS
|
|
_BSS SEGMENT DWORD USE32 PUBLIC 'BSS'
|
|
_BSS ENDS
|
|
$$SYMBOLS SEGMENT BYTE USE32 'DEBSYM'
|
|
$$SYMBOLS ENDS
|
|
$$TYPES SEGMENT BYTE USE32 'DEBTYP'
|
|
$$TYPES ENDS
|
|
_TLS SEGMENT DWORD USE32 PUBLIC 'TLS'
|
|
_TLS ENDS
|
|
; COMDAT ??_C@_0BL@NKOM@java?1lang?1OutOfMemoryError?$AA@
|
|
CONST SEGMENT DWORD USE32 PUBLIC 'CONST'
|
|
CONST ENDS
|
|
; COMDAT ?FindClass@JNIEnv_@@QAEPAV_jclass@@PBD@Z
|
|
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
|
|
_TEXT ENDS
|
|
; COMDAT ?ThrowNew@JNIEnv_@@QAEJPAV_jclass@@PBD@Z
|
|
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
|
|
_TEXT ENDS
|
|
; COMDAT ?NewObject@JNIEnv_@@QAAPAV_jobject@@PAV_jclass@@PAU_jmethodID@@ZZ
|
|
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
|
|
_TEXT ENDS
|
|
; COMDAT ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z
|
|
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
|
|
_TEXT ENDS
|
|
; COMDAT ?CallBooleanMethod@JNIEnv_@@QAAEPAV_jobject@@PAU_jmethodID@@ZZ
|
|
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
|
|
_TEXT ENDS
|
|
; COMDAT ?CallIntMethod@JNIEnv_@@QAAJPAV_jobject@@PAU_jmethodID@@ZZ
|
|
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
|
|
_TEXT ENDS
|
|
; COMDAT ?GetObjectField@JNIEnv_@@QAEPAV_jobject@@PAV2@PAU_jfieldID@@@Z
|
|
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
|
|
_TEXT ENDS
|
|
; COMDAT ?GetIntField@JNIEnv_@@QAEJPAV_jobject@@PAU_jfieldID@@@Z
|
|
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
|
|
_TEXT ENDS
|
|
; COMDAT ?SetObjectField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@0@Z
|
|
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
|
|
_TEXT ENDS
|
|
; COMDAT ?SetIntField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@J@Z
|
|
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
|
|
_TEXT ENDS
|
|
; COMDAT ?GetArrayLength@JNIEnv_@@QAEJPAV_jarray@@@Z
|
|
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
|
|
_TEXT ENDS
|
|
; COMDAT ?GetObjectArrayElement@JNIEnv_@@QAEPAV_jobject@@PAV_jobjectArray@@J@Z
|
|
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
|
|
_TEXT ENDS
|
|
; COMDAT ?GetPrimitiveArrayCritical@JNIEnv_@@QAEPAXPAV_jarray@@PAE@Z
|
|
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
|
|
_TEXT ENDS
|
|
; COMDAT ?ReleasePrimitiveArrayCritical@JNIEnv_@@QAEXPAV_jarray@@PAXJ@Z
|
|
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
|
|
_TEXT ENDS
|
|
; COMDAT ??8@YAHABU_GUID@@0@Z
|
|
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
|
|
_TEXT ENDS
|
|
; COMDAT _Java_com_eaio_nativecall_VoidCall_executeCall@8
|
|
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
|
|
_TEXT ENDS
|
|
; COMDAT _Java_com_eaio_nativecall_VoidCall_executeCall0@12
|
|
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
|
|
_TEXT ENDS
|
|
FLAT GROUP _DATA, CONST, _BSS
|
|
ASSUME CS: FLAT, DS: FLAT, SS: FLAT
|
|
endif
|
|
PUBLIC ?GetIntField@JNIEnv_@@QAEJPAV_jobject@@PAU_jfieldID@@@Z ; JNIEnv_::GetIntField
|
|
PUBLIC ?SetIntField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@J@Z ; JNIEnv_::SetIntField
|
|
PUBLIC _Java_com_eaio_nativecall_VoidCall_executeCall@8
|
|
EXTRN __imp__GetLastError@0:NEAR
|
|
EXTRN ?fieldFunctionHandle@@3PAU_jfieldID@@A:DWORD ; fieldFunctionHandle
|
|
EXTRN ?fieldLastErrorCode@@3PAU_jfieldID@@A:DWORD ; fieldLastErrorCode
|
|
EXTRN __chkesp:NEAR
|
|
; COMDAT _Java_com_eaio_nativecall_VoidCall_executeCall@8
|
|
_TEXT SEGMENT
|
|
_env$ = 8
|
|
_obj$ = 12
|
|
_functionHandle$ = -4
|
|
_Java_com_eaio_nativecall_VoidCall_executeCall@8 PROC NEAR ; COMDAT
|
|
|
|
; 79 : (JNIEnv *env, jobject obj) {
|
|
|
|
push ebp
|
|
mov ebp, esp
|
|
sub esp, 68 ; 00000044H
|
|
push ebx
|
|
push esi
|
|
push edi
|
|
lea edi, DWORD PTR [ebp-68]
|
|
mov ecx, 17 ; 00000011H
|
|
mov eax, -858993460 ; ccccccccH
|
|
rep stosd
|
|
|
|
; 80 :
|
|
; 81 : jint functionHandle = env->GetIntField(obj, fieldFunctionHandle);
|
|
|
|
mov eax, DWORD PTR ?fieldFunctionHandle@@3PAU_jfieldID@@A ; fieldFunctionHandle
|
|
push eax
|
|
mov ecx, DWORD PTR _obj$[ebp]
|
|
push ecx
|
|
mov ecx, DWORD PTR _env$[ebp]
|
|
call ?GetIntField@JNIEnv_@@QAEJPAV_jobject@@PAU_jfieldID@@@Z ; JNIEnv_::GetIntField
|
|
mov DWORD PTR _functionHandle$[ebp], eax
|
|
|
|
; 82 :
|
|
; 83 : #ifdef _WINDOWS
|
|
; 84 : #ifdef _X86_
|
|
; 85 :
|
|
; 86 : __asm {
|
|
; 87 :
|
|
; 88 : call functionHandle
|
|
|
|
call DWORD PTR _functionHandle$[ebp]
|
|
|
|
; 89 :
|
|
; 90 : }
|
|
; 91 :
|
|
; 92 : #endif
|
|
; 93 : #endif
|
|
; 94 :
|
|
; 95 : env->SetIntField(obj, fieldLastErrorCode, GetLastError());
|
|
|
|
mov esi, esp
|
|
call DWORD PTR __imp__GetLastError@0
|
|
cmp esi, esp
|
|
call __chkesp
|
|
push eax
|
|
mov edx, DWORD PTR ?fieldLastErrorCode@@3PAU_jfieldID@@A ; fieldLastErrorCode
|
|
push edx
|
|
mov eax, DWORD PTR _obj$[ebp]
|
|
push eax
|
|
mov ecx, DWORD PTR _env$[ebp]
|
|
call ?SetIntField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@J@Z ; JNIEnv_::SetIntField
|
|
|
|
; 96 :
|
|
; 97 : }
|
|
|
|
pop edi
|
|
pop esi
|
|
pop ebx
|
|
add esp, 68 ; 00000044H
|
|
cmp ebp, esp
|
|
call __chkesp
|
|
mov esp, ebp
|
|
pop ebp
|
|
ret 8
|
|
_Java_com_eaio_nativecall_VoidCall_executeCall@8 ENDP
|
|
_TEXT ENDS
|
|
PUBLIC ?GetObjectField@JNIEnv_@@QAEPAV_jobject@@PAV2@PAU_jfieldID@@@Z ; JNIEnv_::GetObjectField
|
|
PUBLIC ?SetObjectField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@0@Z ; JNIEnv_::SetObjectField
|
|
PUBLIC _Java_com_eaio_nativecall_VoidCall_executeCall0@12
|
|
PUBLIC ?GetArrayLength@JNIEnv_@@QAEJPAV_jarray@@@Z ; JNIEnv_::GetArrayLength
|
|
PUBLIC ?GetObjectArrayElement@JNIEnv_@@QAEPAV_jobject@@PAV_jobjectArray@@J@Z ; JNIEnv_::GetObjectArrayElement
|
|
PUBLIC ??_C@_0BL@NKOM@java?1lang?1OutOfMemoryError?$AA@ ; `string'
|
|
PUBLIC ?GetPrimitiveArrayCritical@JNIEnv_@@QAEPAXPAV_jarray@@PAE@Z ; JNIEnv_::GetPrimitiveArrayCritical
|
|
PUBLIC ?ReleasePrimitiveArrayCritical@JNIEnv_@@QAEXPAV_jarray@@PAXJ@Z ; JNIEnv_::ReleasePrimitiveArrayCritical
|
|
PUBLIC ?FindClass@JNIEnv_@@QAEPAV_jclass@@PBD@Z ; JNIEnv_::FindClass
|
|
PUBLIC ?ThrowNew@JNIEnv_@@QAEJPAV_jclass@@PBD@Z ; JNIEnv_::ThrowNew
|
|
PUBLIC ?NewObject@JNIEnv_@@QAAPAV_jobject@@PAV_jclass@@PAU_jmethodID@@ZZ ; JNIEnv_::NewObject
|
|
PUBLIC ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf
|
|
PUBLIC ?CallBooleanMethod@JNIEnv_@@QAAEPAV_jobject@@PAU_jmethodID@@ZZ ; JNIEnv_::CallBooleanMethod
|
|
PUBLIC ?CallIntMethod@JNIEnv_@@QAAJPAV_jobject@@PAU_jmethodID@@ZZ ; JNIEnv_::CallIntMethod
|
|
EXTRN ??2@YAPAXI@Z:NEAR ; operator new
|
|
EXTRN ??3@YAXPAX@Z:NEAR ; operator delete
|
|
EXTRN ?fieldHolderO@@3PAU_jfieldID@@A:DWORD ; fieldHolderO
|
|
EXTRN ?classBoolean@@3PAV_jclass@@A:DWORD ; classBoolean
|
|
EXTRN ?classInteger@@3PAV_jclass@@A:DWORD ; classInteger
|
|
EXTRN ?classByteArray@@3PAV_jclass@@A:DWORD ; classByteArray
|
|
EXTRN ?classCharArray@@3PAV_jclass@@A:DWORD ; classCharArray
|
|
EXTRN ?classHolder@@3PAV_jclass@@A:DWORD ; classHolder
|
|
EXTRN ?methodBooleanValue@@3PAU_jmethodID@@A:DWORD ; methodBooleanValue
|
|
EXTRN ?methodIntValue@@3PAU_jmethodID@@A:DWORD ; methodIntValue
|
|
EXTRN ?newIntegerInt@@3PAU_jmethodID@@A:DWORD ; newIntegerInt
|
|
EXTRN ?newBooleanBoolean@@3PAU_jmethodID@@A:DWORD ; newBooleanBoolean
|
|
EXTRN _memset:NEAR
|
|
; COMDAT ??_C@_0BL@NKOM@java?1lang?1OutOfMemoryError?$AA@
|
|
; File c:\documents and settings\administrator\my documents\software\nativecall\src\cpp\voidcall.cpp
|
|
CONST SEGMENT
|
|
??_C@_0BL@NKOM@java?1lang?1OutOfMemoryError?$AA@ DB 'java/lang/OutOfMemor'
|
|
DB 'yError', 00H ; `string'
|
|
CONST ENDS
|
|
; COMDAT _Java_com_eaio_nativecall_VoidCall_executeCall0@12
|
|
_TEXT SEGMENT
|
|
_env$ = 8
|
|
_obj$ = 12
|
|
_params$ = 16
|
|
_len$ = -4
|
|
_arrays$ = -8
|
|
_param$ = -12
|
|
_i$ = -16
|
|
_intArg$56816 = -20
|
|
_byteArrayArg$56819 = -24
|
|
_charArrayArg$56825 = -28
|
|
_booleanArg$56831 = -32
|
|
_tempArg$56832 = -36
|
|
_o$56835 = -40
|
|
_intPtr$56837 = -44
|
|
_byteArrayArg$56843 = -48
|
|
_charArrayArg$56849 = -52
|
|
_booleanArg$56855 = -56
|
|
_tempPtr$56856 = -60
|
|
_functionHandle$ = -64
|
|
_j$ = -68
|
|
_o$56873 = -72
|
|
_out$56875 = -76
|
|
_out$56885 = -80
|
|
$T56914 = -84
|
|
$T56915 = -88
|
|
$T56916 = -92
|
|
$T56917 = -96
|
|
$T56918 = -100
|
|
$T56919 = -104
|
|
_Java_com_eaio_nativecall_VoidCall_executeCall0@12 PROC NEAR ; COMDAT
|
|
|
|
; 105 : (JNIEnv *env, jobject obj, jobjectArray params) {
|
|
|
|
push ebp
|
|
mov ebp, esp
|
|
sub esp, 168 ; 000000a8H
|
|
push ebx
|
|
push esi
|
|
push edi
|
|
lea edi, DWORD PTR [ebp-168]
|
|
mov ecx, 42 ; 0000002aH
|
|
mov eax, -858993460 ; ccccccccH
|
|
rep stosd
|
|
|
|
; 106 :
|
|
; 107 : const int len = env->GetArrayLength(params);
|
|
|
|
mov eax, DWORD PTR _params$[ebp]
|
|
push eax
|
|
mov ecx, DWORD PTR _env$[ebp]
|
|
call ?GetArrayLength@JNIEnv_@@QAEJPAV_jarray@@@Z ; JNIEnv_::GetArrayLength
|
|
mov DWORD PTR _len$[ebp], eax
|
|
|
|
; 108 :
|
|
; 109 : int* arrays = NULL;
|
|
|
|
mov DWORD PTR _arrays$[ebp], 0
|
|
|
|
; 110 : if (!(arrays = new int[len])) {
|
|
|
|
mov ecx, DWORD PTR _len$[ebp]
|
|
shl ecx, 2
|
|
push ecx
|
|
call ??2@YAPAXI@Z ; operator new
|
|
add esp, 4
|
|
mov DWORD PTR $T56914[ebp], eax
|
|
mov edx, DWORD PTR $T56914[ebp]
|
|
mov DWORD PTR _arrays$[ebp], edx
|
|
cmp DWORD PTR _arrays$[ebp], 0
|
|
jne SHORT $L56805
|
|
|
|
; 111 : env->ThrowNew(env->FindClass("java/lang/OutOfMemoryError"), NULL);
|
|
|
|
push 0
|
|
push OFFSET FLAT:??_C@_0BL@NKOM@java?1lang?1OutOfMemoryError?$AA@ ; `string'
|
|
mov ecx, DWORD PTR _env$[ebp]
|
|
call ?FindClass@JNIEnv_@@QAEPAV_jclass@@PBD@Z ; JNIEnv_::FindClass
|
|
push eax
|
|
mov ecx, DWORD PTR _env$[ebp]
|
|
call ?ThrowNew@JNIEnv_@@QAEJPAV_jclass@@PBD@Z ; JNIEnv_::ThrowNew
|
|
|
|
; 112 : return;
|
|
|
|
jmp $L56800
|
|
$L56805:
|
|
|
|
; 114 : memset(arrays, 0, (sizeof(int) * len));
|
|
|
|
mov eax, DWORD PTR _len$[ebp]
|
|
shl eax, 2
|
|
push eax
|
|
push 0
|
|
mov ecx, DWORD PTR _arrays$[ebp]
|
|
push ecx
|
|
call _memset
|
|
add esp, 12 ; 0000000cH
|
|
|
|
; 115 :
|
|
; 116 : jobject param;
|
|
; 117 :
|
|
; 118 : for (int i = len - 1; i >= 0; i--) {
|
|
|
|
mov edx, DWORD PTR _len$[ebp]
|
|
sub edx, 1
|
|
mov DWORD PTR _i$[ebp], edx
|
|
jmp SHORT $L56810
|
|
$L56811:
|
|
mov eax, DWORD PTR _i$[ebp]
|
|
sub eax, 1
|
|
mov DWORD PTR _i$[ebp], eax
|
|
$L56810:
|
|
cmp DWORD PTR _i$[ebp], 0
|
|
jl $L56812
|
|
|
|
; 119 :
|
|
; 120 : param = env->GetObjectArrayElement(params, i);
|
|
|
|
mov ecx, DWORD PTR _i$[ebp]
|
|
push ecx
|
|
mov edx, DWORD PTR _params$[ebp]
|
|
push edx
|
|
mov ecx, DWORD PTR _env$[ebp]
|
|
call ?GetObjectArrayElement@JNIEnv_@@QAEPAV_jobject@@PAV_jobjectArray@@J@Z ; JNIEnv_::GetObjectArrayElement
|
|
mov DWORD PTR _param$[ebp], eax
|
|
|
|
; 121 :
|
|
; 122 : if (param == NULL) {
|
|
|
|
cmp DWORD PTR _param$[ebp], 0
|
|
jne SHORT $L56813
|
|
|
|
; 123 : _push(0);
|
|
|
|
push 0
|
|
|
|
; 125 : else if (env->IsInstanceOf(param, classInteger)) {
|
|
|
|
jmp $L56854
|
|
$L56813:
|
|
mov eax, DWORD PTR ?classInteger@@3PAV_jclass@@A ; classInteger
|
|
push eax
|
|
mov ecx, DWORD PTR _param$[ebp]
|
|
push ecx
|
|
mov ecx, DWORD PTR _env$[ebp]
|
|
call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf
|
|
and eax, 255 ; 000000ffH
|
|
test eax, eax
|
|
je SHORT $L56815
|
|
|
|
; 126 : int intArg = env->CallIntMethod(param, methodIntValue);
|
|
|
|
mov edx, DWORD PTR ?methodIntValue@@3PAU_jmethodID@@A ; methodIntValue
|
|
push edx
|
|
mov eax, DWORD PTR _param$[ebp]
|
|
push eax
|
|
mov ecx, DWORD PTR _env$[ebp]
|
|
push ecx
|
|
call ?CallIntMethod@JNIEnv_@@QAAJPAV_jobject@@PAU_jmethodID@@ZZ ; JNIEnv_::CallIntMethod
|
|
add esp, 12 ; 0000000cH
|
|
mov DWORD PTR _intArg$56816[ebp], eax
|
|
|
|
; 127 : _push(intArg)
|
|
|
|
push DWORD PTR _intArg$56816[ebp]
|
|
|
|
; 129 : else if (env->IsInstanceOf(param, classByteArray)) {
|
|
|
|
jmp $L56854
|
|
$L56815:
|
|
mov edx, DWORD PTR ?classByteArray@@3PAV_jclass@@A ; classByteArray
|
|
push edx
|
|
mov eax, DWORD PTR _param$[ebp]
|
|
push eax
|
|
mov ecx, DWORD PTR _env$[ebp]
|
|
call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf
|
|
and eax, 255 ; 000000ffH
|
|
test eax, eax
|
|
je SHORT $L56818
|
|
|
|
; 130 : char* byteArrayArg = (char*) env->GetPrimitiveArrayCritical((jarray) param, 0);
|
|
|
|
push 0
|
|
mov ecx, DWORD PTR _param$[ebp]
|
|
push ecx
|
|
mov ecx, DWORD PTR _env$[ebp]
|
|
call ?GetPrimitiveArrayCritical@JNIEnv_@@QAEPAXPAV_jarray@@PAE@Z ; JNIEnv_::GetPrimitiveArrayCritical
|
|
mov DWORD PTR _byteArrayArg$56819[ebp], eax
|
|
|
|
; 131 : arrays[i] = (int) &byteArrayArg;
|
|
|
|
mov edx, DWORD PTR _i$[ebp]
|
|
mov eax, DWORD PTR _arrays$[ebp]
|
|
lea ecx, DWORD PTR _byteArrayArg$56819[ebp]
|
|
mov DWORD PTR [eax+edx*4], ecx
|
|
|
|
; 132 : _push(byteArrayArg)
|
|
|
|
push DWORD PTR _byteArrayArg$56819[ebp]
|
|
|
|
; 134 : else if (env->IsInstanceOf(param, classCharArray)) {
|
|
|
|
jmp $L56854
|
|
$L56818:
|
|
mov edx, DWORD PTR ?classCharArray@@3PAV_jclass@@A ; classCharArray
|
|
push edx
|
|
mov eax, DWORD PTR _param$[ebp]
|
|
push eax
|
|
mov ecx, DWORD PTR _env$[ebp]
|
|
call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf
|
|
and eax, 255 ; 000000ffH
|
|
test eax, eax
|
|
je SHORT $L56824
|
|
|
|
; 135 : unsigned short* charArrayArg = (unsigned short*) env->GetPrimitiveArrayCritical(
|
|
; 136 : (jarray) param, 0);
|
|
|
|
push 0
|
|
mov ecx, DWORD PTR _param$[ebp]
|
|
push ecx
|
|
mov ecx, DWORD PTR _env$[ebp]
|
|
call ?GetPrimitiveArrayCritical@JNIEnv_@@QAEPAXPAV_jarray@@PAE@Z ; JNIEnv_::GetPrimitiveArrayCritical
|
|
mov DWORD PTR _charArrayArg$56825[ebp], eax
|
|
|
|
; 137 : arrays[i] = (int) &charArrayArg;
|
|
|
|
mov edx, DWORD PTR _i$[ebp]
|
|
mov eax, DWORD PTR _arrays$[ebp]
|
|
lea ecx, DWORD PTR _charArrayArg$56825[ebp]
|
|
mov DWORD PTR [eax+edx*4], ecx
|
|
|
|
; 138 : _push(charArrayArg)
|
|
|
|
push DWORD PTR _charArrayArg$56825[ebp]
|
|
|
|
; 140 : else if (env->IsInstanceOf(param, classBoolean)) {
|
|
|
|
jmp $L56854
|
|
$L56824:
|
|
mov edx, DWORD PTR ?classBoolean@@3PAV_jclass@@A ; classBoolean
|
|
push edx
|
|
mov eax, DWORD PTR _param$[ebp]
|
|
push eax
|
|
mov ecx, DWORD PTR _env$[ebp]
|
|
call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf
|
|
and eax, 255 ; 000000ffH
|
|
test eax, eax
|
|
je SHORT $L56830
|
|
|
|
; 141 : jboolean booleanArg = env->CallBooleanMethod(param, methodBooleanValue);
|
|
|
|
mov ecx, DWORD PTR ?methodBooleanValue@@3PAU_jmethodID@@A ; methodBooleanValue
|
|
push ecx
|
|
mov edx, DWORD PTR _param$[ebp]
|
|
push edx
|
|
mov eax, DWORD PTR _env$[ebp]
|
|
push eax
|
|
call ?CallBooleanMethod@JNIEnv_@@QAAEPAV_jobject@@PAU_jmethodID@@ZZ ; JNIEnv_::CallBooleanMethod
|
|
add esp, 12 ; 0000000cH
|
|
mov BYTE PTR _booleanArg$56831[ebp], al
|
|
|
|
; 142 : int tempArg = (booleanArg == JNI_FALSE ? 0 : 1);
|
|
|
|
mov ecx, DWORD PTR _booleanArg$56831[ebp]
|
|
and ecx, 255 ; 000000ffH
|
|
neg ecx
|
|
sbb ecx, ecx
|
|
neg ecx
|
|
mov DWORD PTR _tempArg$56832[ebp], ecx
|
|
|
|
; 143 : _push(tempArg)
|
|
|
|
push DWORD PTR _tempArg$56832[ebp]
|
|
|
|
; 145 : else if (env->IsInstanceOf(param, classHolder)) {
|
|
|
|
jmp $L56854
|
|
$L56830:
|
|
mov edx, DWORD PTR ?classHolder@@3PAV_jclass@@A ; classHolder
|
|
push edx
|
|
mov eax, DWORD PTR _param$[ebp]
|
|
push eax
|
|
mov ecx, DWORD PTR _env$[ebp]
|
|
call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf
|
|
and eax, 255 ; 000000ffH
|
|
test eax, eax
|
|
je $L56854
|
|
|
|
; 146 :
|
|
; 147 : /* Holder */
|
|
; 148 :
|
|
; 149 : jobject o = env->GetObjectField(param, fieldHolderO);
|
|
|
|
mov ecx, DWORD PTR ?fieldHolderO@@3PAU_jfieldID@@A ; fieldHolderO
|
|
push ecx
|
|
mov edx, DWORD PTR _param$[ebp]
|
|
push edx
|
|
mov ecx, DWORD PTR _env$[ebp]
|
|
call ?GetObjectField@JNIEnv_@@QAEPAV_jobject@@PAV2@PAU_jfieldID@@@Z ; JNIEnv_::GetObjectField
|
|
mov DWORD PTR _o$56835[ebp], eax
|
|
|
|
; 150 :
|
|
; 151 : if (env->IsInstanceOf(o, classInteger)) {
|
|
|
|
mov eax, DWORD PTR ?classInteger@@3PAV_jclass@@A ; classInteger
|
|
push eax
|
|
mov ecx, DWORD PTR _o$56835[ebp]
|
|
push ecx
|
|
mov ecx, DWORD PTR _env$[ebp]
|
|
call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf
|
|
and eax, 255 ; 000000ffH
|
|
test eax, eax
|
|
je SHORT $L56836
|
|
|
|
; 152 : int *intPtr = new int;
|
|
|
|
push 4
|
|
call ??2@YAPAXI@Z ; operator new
|
|
add esp, 4
|
|
mov DWORD PTR $T56915[ebp], eax
|
|
mov edx, DWORD PTR $T56915[ebp]
|
|
mov DWORD PTR _intPtr$56837[ebp], edx
|
|
|
|
; 153 : *intPtr = env->CallIntMethod(o, methodIntValue);
|
|
|
|
mov eax, DWORD PTR ?methodIntValue@@3PAU_jmethodID@@A ; methodIntValue
|
|
push eax
|
|
mov ecx, DWORD PTR _o$56835[ebp]
|
|
push ecx
|
|
mov edx, DWORD PTR _env$[ebp]
|
|
push edx
|
|
call ?CallIntMethod@JNIEnv_@@QAAJPAV_jobject@@PAU_jmethodID@@ZZ ; JNIEnv_::CallIntMethod
|
|
add esp, 12 ; 0000000cH
|
|
mov ecx, DWORD PTR _intPtr$56837[ebp]
|
|
mov DWORD PTR [ecx], eax
|
|
|
|
; 154 : arrays[i] = (int) intPtr;
|
|
|
|
mov edx, DWORD PTR _i$[ebp]
|
|
mov eax, DWORD PTR _arrays$[ebp]
|
|
mov ecx, DWORD PTR _intPtr$56837[ebp]
|
|
mov DWORD PTR [eax+edx*4], ecx
|
|
|
|
; 155 : _push(intPtr);
|
|
|
|
push DWORD PTR _intPtr$56837[ebp]
|
|
|
|
; 157 : else if (env->IsInstanceOf(o, classByteArray)) {
|
|
|
|
jmp $L56854
|
|
$L56836:
|
|
mov edx, DWORD PTR ?classByteArray@@3PAV_jclass@@A ; classByteArray
|
|
push edx
|
|
mov eax, DWORD PTR _o$56835[ebp]
|
|
push eax
|
|
mov ecx, DWORD PTR _env$[ebp]
|
|
call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf
|
|
and eax, 255 ; 000000ffH
|
|
test eax, eax
|
|
je SHORT $L56842
|
|
|
|
; 158 : char* byteArrayArg = (char*) env->GetPrimitiveArrayCritical((jarray) o, 0);
|
|
|
|
push 0
|
|
mov ecx, DWORD PTR _o$56835[ebp]
|
|
push ecx
|
|
mov ecx, DWORD PTR _env$[ebp]
|
|
call ?GetPrimitiveArrayCritical@JNIEnv_@@QAEPAXPAV_jarray@@PAE@Z ; JNIEnv_::GetPrimitiveArrayCritical
|
|
mov DWORD PTR _byteArrayArg$56843[ebp], eax
|
|
|
|
; 159 : arrays[i] = (int) &byteArrayArg;
|
|
|
|
mov edx, DWORD PTR _i$[ebp]
|
|
mov eax, DWORD PTR _arrays$[ebp]
|
|
lea ecx, DWORD PTR _byteArrayArg$56843[ebp]
|
|
mov DWORD PTR [eax+edx*4], ecx
|
|
|
|
; 160 : _push(byteArrayArg)
|
|
|
|
push DWORD PTR _byteArrayArg$56843[ebp]
|
|
|
|
; 162 : else if (env->IsInstanceOf(o, classCharArray)) {
|
|
|
|
jmp $L56854
|
|
$L56842:
|
|
mov edx, DWORD PTR ?classCharArray@@3PAV_jclass@@A ; classCharArray
|
|
push edx
|
|
mov eax, DWORD PTR _o$56835[ebp]
|
|
push eax
|
|
mov ecx, DWORD PTR _env$[ebp]
|
|
call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf
|
|
and eax, 255 ; 000000ffH
|
|
test eax, eax
|
|
je SHORT $L56848
|
|
|
|
; 163 : unsigned short* charArrayArg = (unsigned short*) env->GetPrimitiveArrayCritical(
|
|
; 164 : (jarray) o, 0);
|
|
|
|
push 0
|
|
mov ecx, DWORD PTR _o$56835[ebp]
|
|
push ecx
|
|
mov ecx, DWORD PTR _env$[ebp]
|
|
call ?GetPrimitiveArrayCritical@JNIEnv_@@QAEPAXPAV_jarray@@PAE@Z ; JNIEnv_::GetPrimitiveArrayCritical
|
|
mov DWORD PTR _charArrayArg$56849[ebp], eax
|
|
|
|
; 165 : arrays[i] = (int) &charArrayArg;
|
|
|
|
mov edx, DWORD PTR _i$[ebp]
|
|
mov eax, DWORD PTR _arrays$[ebp]
|
|
lea ecx, DWORD PTR _charArrayArg$56849[ebp]
|
|
mov DWORD PTR [eax+edx*4], ecx
|
|
|
|
; 166 : _push(charArrayArg)
|
|
|
|
push DWORD PTR _charArrayArg$56849[ebp]
|
|
|
|
; 168 : else if (env->IsInstanceOf(o, classBoolean)) {
|
|
|
|
jmp SHORT $L56854
|
|
$L56848:
|
|
mov edx, DWORD PTR ?classBoolean@@3PAV_jclass@@A ; classBoolean
|
|
push edx
|
|
mov eax, DWORD PTR _o$56835[ebp]
|
|
push eax
|
|
mov ecx, DWORD PTR _env$[ebp]
|
|
call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf
|
|
and eax, 255 ; 000000ffH
|
|
test eax, eax
|
|
je SHORT $L56854
|
|
|
|
; 169 : jboolean booleanArg = env->CallBooleanMethod(o, methodBooleanValue);
|
|
|
|
mov ecx, DWORD PTR ?methodBooleanValue@@3PAU_jmethodID@@A ; methodBooleanValue
|
|
push ecx
|
|
mov edx, DWORD PTR _o$56835[ebp]
|
|
push edx
|
|
mov eax, DWORD PTR _env$[ebp]
|
|
push eax
|
|
call ?CallBooleanMethod@JNIEnv_@@QAAEPAV_jobject@@PAU_jmethodID@@ZZ ; JNIEnv_::CallBooleanMethod
|
|
add esp, 12 ; 0000000cH
|
|
mov BYTE PTR _booleanArg$56855[ebp], al
|
|
|
|
; 170 : int *tempPtr = new int;
|
|
|
|
push 4
|
|
call ??2@YAPAXI@Z ; operator new
|
|
add esp, 4
|
|
mov DWORD PTR $T56916[ebp], eax
|
|
mov ecx, DWORD PTR $T56916[ebp]
|
|
mov DWORD PTR _tempPtr$56856[ebp], ecx
|
|
|
|
; 171 : *tempPtr = (booleanArg == JNI_FALSE ? 0 : 1);
|
|
|
|
mov edx, DWORD PTR _booleanArg$56855[ebp]
|
|
and edx, 255 ; 000000ffH
|
|
neg edx
|
|
sbb edx, edx
|
|
neg edx
|
|
mov eax, DWORD PTR _tempPtr$56856[ebp]
|
|
mov DWORD PTR [eax], edx
|
|
|
|
; 172 : arrays[i] = (int) tempPtr;
|
|
|
|
mov ecx, DWORD PTR _i$[ebp]
|
|
mov edx, DWORD PTR _arrays$[ebp]
|
|
mov eax, DWORD PTR _tempPtr$56856[ebp]
|
|
mov DWORD PTR [edx+ecx*4], eax
|
|
|
|
; 173 : _push(tempPtr);
|
|
|
|
push DWORD PTR _tempPtr$56856[ebp]
|
|
$L56854:
|
|
|
|
; 179 :
|
|
; 180 : }
|
|
|
|
jmp $L56811
|
|
$L56812:
|
|
|
|
; 181 :
|
|
; 182 : jint functionHandle = env->GetIntField(obj, fieldFunctionHandle);
|
|
|
|
mov ecx, DWORD PTR ?fieldFunctionHandle@@3PAU_jfieldID@@A ; fieldFunctionHandle
|
|
push ecx
|
|
mov edx, DWORD PTR _obj$[ebp]
|
|
push edx
|
|
mov ecx, DWORD PTR _env$[ebp]
|
|
call ?GetIntField@JNIEnv_@@QAEJPAV_jobject@@PAU_jfieldID@@@Z ; JNIEnv_::GetIntField
|
|
mov DWORD PTR _functionHandle$[ebp], eax
|
|
|
|
; 183 :
|
|
; 184 : #ifdef _WINDOWS
|
|
; 185 : #ifdef _X86_
|
|
; 186 :
|
|
; 187 : __asm {
|
|
; 188 :
|
|
; 189 : call functionHandle
|
|
|
|
call DWORD PTR _functionHandle$[ebp]
|
|
|
|
; 190 :
|
|
; 191 : }
|
|
; 192 :
|
|
; 193 : #endif
|
|
; 194 : #endif
|
|
; 195 :
|
|
; 196 : for (int j = 0; j < len; ++j) {
|
|
|
|
mov DWORD PTR _j$[ebp], 0
|
|
jmp SHORT $L56862
|
|
$L56863:
|
|
mov eax, DWORD PTR _j$[ebp]
|
|
add eax, 1
|
|
mov DWORD PTR _j$[ebp], eax
|
|
$L56862:
|
|
mov ecx, DWORD PTR _j$[ebp]
|
|
cmp ecx, DWORD PTR _len$[ebp]
|
|
jge $L56864
|
|
|
|
; 197 : param = env->GetObjectArrayElement(params, j);
|
|
|
|
mov edx, DWORD PTR _j$[ebp]
|
|
push edx
|
|
mov eax, DWORD PTR _params$[ebp]
|
|
push eax
|
|
mov ecx, DWORD PTR _env$[ebp]
|
|
call ?GetObjectArrayElement@JNIEnv_@@QAEPAV_jobject@@PAV_jobjectArray@@J@Z ; JNIEnv_::GetObjectArrayElement
|
|
mov DWORD PTR _param$[ebp], eax
|
|
|
|
; 198 : if (param == NULL) {}
|
|
|
|
cmp DWORD PTR _param$[ebp], 0
|
|
jne SHORT $L56865
|
|
|
|
; 199 : else if (env->IsInstanceOf(param, classByteArray) || env->IsInstanceOf(param, classCharArray)) {
|
|
|
|
jmp $L56884
|
|
$L56865:
|
|
mov ecx, DWORD PTR ?classByteArray@@3PAV_jclass@@A ; classByteArray
|
|
push ecx
|
|
mov edx, DWORD PTR _param$[ebp]
|
|
push edx
|
|
mov ecx, DWORD PTR _env$[ebp]
|
|
call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf
|
|
and eax, 255 ; 000000ffH
|
|
test eax, eax
|
|
jne SHORT $L56868
|
|
mov eax, DWORD PTR ?classCharArray@@3PAV_jclass@@A ; classCharArray
|
|
push eax
|
|
mov ecx, DWORD PTR _param$[ebp]
|
|
push ecx
|
|
mov ecx, DWORD PTR _env$[ebp]
|
|
call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf
|
|
and eax, 255 ; 000000ffH
|
|
test eax, eax
|
|
je SHORT $L56867
|
|
$L56868:
|
|
|
|
; 200 : env->ReleasePrimitiveArrayCritical((jarray) param, (void*) arrays[j], 0);
|
|
|
|
push 0
|
|
mov edx, DWORD PTR _j$[ebp]
|
|
mov eax, DWORD PTR _arrays$[ebp]
|
|
mov ecx, DWORD PTR [eax+edx*4]
|
|
push ecx
|
|
mov edx, DWORD PTR _param$[ebp]
|
|
push edx
|
|
mov ecx, DWORD PTR _env$[ebp]
|
|
call ?ReleasePrimitiveArrayCritical@JNIEnv_@@QAEXPAV_jarray@@PAXJ@Z ; JNIEnv_::ReleasePrimitiveArrayCritical
|
|
|
|
; 202 : else if (env->IsInstanceOf(param, classHolder)) {
|
|
|
|
jmp $L56884
|
|
$L56867:
|
|
mov eax, DWORD PTR ?classHolder@@3PAV_jclass@@A ; classHolder
|
|
push eax
|
|
mov ecx, DWORD PTR _param$[ebp]
|
|
push ecx
|
|
mov ecx, DWORD PTR _env$[ebp]
|
|
call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf
|
|
and eax, 255 ; 000000ffH
|
|
test eax, eax
|
|
je $L56884
|
|
|
|
; 203 :
|
|
; 204 : jobject o = env->GetObjectField(param, fieldHolderO);
|
|
|
|
mov edx, DWORD PTR ?fieldHolderO@@3PAU_jfieldID@@A ; fieldHolderO
|
|
push edx
|
|
mov eax, DWORD PTR _param$[ebp]
|
|
push eax
|
|
mov ecx, DWORD PTR _env$[ebp]
|
|
call ?GetObjectField@JNIEnv_@@QAEPAV_jobject@@PAV2@PAU_jfieldID@@@Z ; JNIEnv_::GetObjectField
|
|
mov DWORD PTR _o$56873[ebp], eax
|
|
|
|
; 205 :
|
|
; 206 : if (env->IsInstanceOf(o, classInteger)) {
|
|
|
|
mov ecx, DWORD PTR ?classInteger@@3PAV_jclass@@A ; classInteger
|
|
push ecx
|
|
mov edx, DWORD PTR _o$56873[ebp]
|
|
push edx
|
|
mov ecx, DWORD PTR _env$[ebp]
|
|
call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf
|
|
and eax, 255 ; 000000ffH
|
|
test eax, eax
|
|
je SHORT $L56874
|
|
|
|
; 207 : int* out = (int*) arrays[j];
|
|
|
|
mov eax, DWORD PTR _j$[ebp]
|
|
mov ecx, DWORD PTR _arrays$[ebp]
|
|
mov edx, DWORD PTR [ecx+eax*4]
|
|
mov DWORD PTR _out$56875[ebp], edx
|
|
|
|
; 208 : env->SetObjectField(param, fieldHolderO, env->NewObject(classInteger, newIntegerInt, *out));
|
|
|
|
mov eax, DWORD PTR _out$56875[ebp]
|
|
mov ecx, DWORD PTR [eax]
|
|
push ecx
|
|
mov edx, DWORD PTR ?newIntegerInt@@3PAU_jmethodID@@A ; newIntegerInt
|
|
push edx
|
|
mov eax, DWORD PTR ?classInteger@@3PAV_jclass@@A ; classInteger
|
|
push eax
|
|
mov ecx, DWORD PTR _env$[ebp]
|
|
push ecx
|
|
call ?NewObject@JNIEnv_@@QAAPAV_jobject@@PAV_jclass@@PAU_jmethodID@@ZZ ; JNIEnv_::NewObject
|
|
add esp, 16 ; 00000010H
|
|
push eax
|
|
mov edx, DWORD PTR ?fieldHolderO@@3PAU_jfieldID@@A ; fieldHolderO
|
|
push edx
|
|
mov eax, DWORD PTR _param$[ebp]
|
|
push eax
|
|
mov ecx, DWORD PTR _env$[ebp]
|
|
call ?SetObjectField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@0@Z ; JNIEnv_::SetObjectField
|
|
|
|
; 209 : delete out;
|
|
|
|
mov ecx, DWORD PTR _out$56875[ebp]
|
|
mov DWORD PTR $T56917[ebp], ecx
|
|
mov edx, DWORD PTR $T56917[ebp]
|
|
push edx
|
|
call ??3@YAXPAX@Z ; operator delete
|
|
add esp, 4
|
|
|
|
; 211 : else if (env->IsInstanceOf(o, classByteArray) || env->IsInstanceOf(o, classCharArray)) {
|
|
|
|
jmp $L56884
|
|
$L56874:
|
|
mov eax, DWORD PTR ?classByteArray@@3PAV_jclass@@A ; classByteArray
|
|
push eax
|
|
mov ecx, DWORD PTR _o$56873[ebp]
|
|
push ecx
|
|
mov ecx, DWORD PTR _env$[ebp]
|
|
call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf
|
|
and eax, 255 ; 000000ffH
|
|
test eax, eax
|
|
jne SHORT $L56880
|
|
mov edx, DWORD PTR ?classCharArray@@3PAV_jclass@@A ; classCharArray
|
|
push edx
|
|
mov eax, DWORD PTR _o$56873[ebp]
|
|
push eax
|
|
mov ecx, DWORD PTR _env$[ebp]
|
|
call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf
|
|
and eax, 255 ; 000000ffH
|
|
test eax, eax
|
|
je SHORT $L56879
|
|
$L56880:
|
|
|
|
; 212 : env->ReleasePrimitiveArrayCritical((jarray) o, (void*) arrays[j], 0);
|
|
|
|
push 0
|
|
mov ecx, DWORD PTR _j$[ebp]
|
|
mov edx, DWORD PTR _arrays$[ebp]
|
|
mov eax, DWORD PTR [edx+ecx*4]
|
|
push eax
|
|
mov ecx, DWORD PTR _o$56873[ebp]
|
|
push ecx
|
|
mov ecx, DWORD PTR _env$[ebp]
|
|
call ?ReleasePrimitiveArrayCritical@JNIEnv_@@QAEXPAV_jarray@@PAXJ@Z ; JNIEnv_::ReleasePrimitiveArrayCritical
|
|
|
|
; 214 : else if (env->IsInstanceOf(o, classBoolean)) {
|
|
|
|
jmp SHORT $L56884
|
|
$L56879:
|
|
mov edx, DWORD PTR ?classBoolean@@3PAV_jclass@@A ; classBoolean
|
|
push edx
|
|
mov eax, DWORD PTR _o$56873[ebp]
|
|
push eax
|
|
mov ecx, DWORD PTR _env$[ebp]
|
|
call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf
|
|
and eax, 255 ; 000000ffH
|
|
test eax, eax
|
|
je SHORT $L56884
|
|
|
|
; 215 : int* out = (int*) arrays[j];
|
|
|
|
mov ecx, DWORD PTR _j$[ebp]
|
|
mov edx, DWORD PTR _arrays$[ebp]
|
|
mov eax, DWORD PTR [edx+ecx*4]
|
|
mov DWORD PTR _out$56885[ebp], eax
|
|
|
|
; 216 : env->SetObjectField(param, fieldHolderO, env->NewObject(classBoolean, newBooleanBoolean, (*out == 0 ? JNI_FALSE : JNI_TRUE)));
|
|
|
|
mov ecx, DWORD PTR _out$56885[ebp]
|
|
xor edx, edx
|
|
cmp DWORD PTR [ecx], 0
|
|
setne dl
|
|
push edx
|
|
mov eax, DWORD PTR ?newBooleanBoolean@@3PAU_jmethodID@@A ; newBooleanBoolean
|
|
push eax
|
|
mov ecx, DWORD PTR ?classBoolean@@3PAV_jclass@@A ; classBoolean
|
|
push ecx
|
|
mov edx, DWORD PTR _env$[ebp]
|
|
push edx
|
|
call ?NewObject@JNIEnv_@@QAAPAV_jobject@@PAV_jclass@@PAU_jmethodID@@ZZ ; JNIEnv_::NewObject
|
|
add esp, 16 ; 00000010H
|
|
push eax
|
|
mov eax, DWORD PTR ?fieldHolderO@@3PAU_jfieldID@@A ; fieldHolderO
|
|
push eax
|
|
mov ecx, DWORD PTR _param$[ebp]
|
|
push ecx
|
|
mov ecx, DWORD PTR _env$[ebp]
|
|
call ?SetObjectField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@0@Z ; JNIEnv_::SetObjectField
|
|
|
|
; 217 : delete out;
|
|
|
|
mov edx, DWORD PTR _out$56885[ebp]
|
|
mov DWORD PTR $T56918[ebp], edx
|
|
mov eax, DWORD PTR $T56918[ebp]
|
|
push eax
|
|
call ??3@YAXPAX@Z ; operator delete
|
|
add esp, 4
|
|
$L56884:
|
|
|
|
; 221 :
|
|
; 222 : }
|
|
|
|
jmp $L56863
|
|
$L56864:
|
|
|
|
; 223 :
|
|
; 224 : delete [] arrays;
|
|
|
|
mov ecx, DWORD PTR _arrays$[ebp]
|
|
mov DWORD PTR $T56919[ebp], ecx
|
|
mov edx, DWORD PTR $T56919[ebp]
|
|
push edx
|
|
call ??3@YAXPAX@Z ; operator delete
|
|
add esp, 4
|
|
|
|
; 225 :
|
|
; 226 : env->SetIntField(obj, fieldLastErrorCode, GetLastError());
|
|
|
|
mov esi, esp
|
|
call DWORD PTR __imp__GetLastError@0
|
|
cmp esi, esp
|
|
call __chkesp
|
|
push eax
|
|
mov eax, DWORD PTR ?fieldLastErrorCode@@3PAU_jfieldID@@A ; fieldLastErrorCode
|
|
push eax
|
|
mov ecx, DWORD PTR _obj$[ebp]
|
|
push ecx
|
|
mov ecx, DWORD PTR _env$[ebp]
|
|
call ?SetIntField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@J@Z ; JNIEnv_::SetIntField
|
|
$L56800:
|
|
|
|
; 227 :
|
|
; 228 : }
|
|
|
|
pop edi
|
|
pop esi
|
|
pop ebx
|
|
add esp, 168 ; 000000a8H
|
|
cmp ebp, esp
|
|
call __chkesp
|
|
mov esp, ebp
|
|
pop ebp
|
|
ret 12 ; 0000000cH
|
|
_Java_com_eaio_nativecall_VoidCall_executeCall0@12 ENDP
|
|
_TEXT ENDS
|
|
; COMDAT ?FindClass@JNIEnv_@@QAEPAV_jclass@@PBD@Z
|
|
_TEXT SEGMENT
|
|
_this$ = -4
|
|
_name$ = 8
|
|
?FindClass@JNIEnv_@@QAEPAV_jclass@@PBD@Z PROC NEAR ; JNIEnv_::FindClass, COMDAT
|
|
|
|
; 759 : jclass FindClass(const char *name) {
|
|
|
|
push ebp
|
|
mov ebp, esp
|
|
sub esp, 68 ; 00000044H
|
|
push ebx
|
|
push esi
|
|
push edi
|
|
push ecx
|
|
lea edi, DWORD PTR [ebp-68]
|
|
mov ecx, 17 ; 00000011H
|
|
mov eax, -858993460 ; ccccccccH
|
|
rep stosd
|
|
pop ecx
|
|
mov DWORD PTR _this$[ebp], ecx
|
|
|
|
; 760 : return functions->FindClass(this, name);
|
|
|
|
mov esi, esp
|
|
mov eax, DWORD PTR _name$[ebp]
|
|
push eax
|
|
mov ecx, DWORD PTR _this$[ebp]
|
|
push ecx
|
|
mov edx, DWORD PTR _this$[ebp]
|
|
mov eax, DWORD PTR [edx]
|
|
call DWORD PTR [eax+24]
|
|
cmp esi, esp
|
|
call __chkesp
|
|
|
|
; 761 : }
|
|
|
|
pop edi
|
|
pop esi
|
|
pop ebx
|
|
add esp, 68 ; 00000044H
|
|
cmp ebp, esp
|
|
call __chkesp
|
|
mov esp, ebp
|
|
pop ebp
|
|
ret 4
|
|
?FindClass@JNIEnv_@@QAEPAV_jclass@@PBD@Z ENDP ; JNIEnv_::FindClass
|
|
_TEXT ENDS
|
|
; COMDAT ?ThrowNew@JNIEnv_@@QAEJPAV_jclass@@PBD@Z
|
|
_TEXT SEGMENT
|
|
_this$ = -4
|
|
_clazz$ = 8
|
|
_msg$ = 12
|
|
?ThrowNew@JNIEnv_@@QAEJPAV_jclass@@PBD@Z PROC NEAR ; JNIEnv_::ThrowNew, COMDAT
|
|
|
|
; 787 : jint ThrowNew(jclass clazz, const char *msg) {
|
|
|
|
push ebp
|
|
mov ebp, esp
|
|
sub esp, 68 ; 00000044H
|
|
push ebx
|
|
push esi
|
|
push edi
|
|
push ecx
|
|
lea edi, DWORD PTR [ebp-68]
|
|
mov ecx, 17 ; 00000011H
|
|
mov eax, -858993460 ; ccccccccH
|
|
rep stosd
|
|
pop ecx
|
|
mov DWORD PTR _this$[ebp], ecx
|
|
|
|
; 788 : return functions->ThrowNew(this, clazz, msg);
|
|
|
|
mov esi, esp
|
|
mov eax, DWORD PTR _msg$[ebp]
|
|
push eax
|
|
mov ecx, DWORD PTR _clazz$[ebp]
|
|
push ecx
|
|
mov edx, DWORD PTR _this$[ebp]
|
|
push edx
|
|
mov eax, DWORD PTR _this$[ebp]
|
|
mov ecx, DWORD PTR [eax]
|
|
call DWORD PTR [ecx+56]
|
|
cmp esi, esp
|
|
call __chkesp
|
|
|
|
; 789 : }
|
|
|
|
pop edi
|
|
pop esi
|
|
pop ebx
|
|
add esp, 68 ; 00000044H
|
|
cmp ebp, esp
|
|
call __chkesp
|
|
mov esp, ebp
|
|
pop ebp
|
|
ret 8
|
|
?ThrowNew@JNIEnv_@@QAEJPAV_jclass@@PBD@Z ENDP ; JNIEnv_::ThrowNew
|
|
_TEXT ENDS
|
|
; COMDAT ?NewObject@JNIEnv_@@QAAPAV_jobject@@PAV_jclass@@PAU_jmethodID@@ZZ
|
|
_TEXT SEGMENT
|
|
_this$ = 8
|
|
_args$ = -4
|
|
_result$ = -8
|
|
_clazz$ = 12
|
|
_methodID$ = 16
|
|
?NewObject@JNIEnv_@@QAAPAV_jobject@@PAV_jclass@@PAU_jmethodID@@ZZ PROC NEAR ; JNIEnv_::NewObject, COMDAT
|
|
|
|
; 834 : jobject NewObject(jclass clazz, jmethodID methodID, ...) {
|
|
|
|
push ebp
|
|
mov ebp, esp
|
|
sub esp, 72 ; 00000048H
|
|
push ebx
|
|
push esi
|
|
push edi
|
|
lea edi, DWORD PTR [ebp-72]
|
|
mov ecx, 18 ; 00000012H
|
|
mov eax, -858993460 ; ccccccccH
|
|
rep stosd
|
|
|
|
; 835 : va_list args;
|
|
; 836 : jobject result;
|
|
; 837 : va_start(args, methodID);
|
|
|
|
lea eax, DWORD PTR _methodID$[ebp+4]
|
|
mov DWORD PTR _args$[ebp], eax
|
|
|
|
; 838 : result = functions->NewObjectV(this,clazz,methodID,args);
|
|
|
|
mov esi, esp
|
|
mov ecx, DWORD PTR _args$[ebp]
|
|
push ecx
|
|
mov edx, DWORD PTR _methodID$[ebp]
|
|
push edx
|
|
mov eax, DWORD PTR _clazz$[ebp]
|
|
push eax
|
|
mov ecx, DWORD PTR _this$[ebp]
|
|
push ecx
|
|
mov edx, DWORD PTR _this$[ebp]
|
|
mov eax, DWORD PTR [edx]
|
|
call DWORD PTR [eax+116]
|
|
cmp esi, esp
|
|
call __chkesp
|
|
mov DWORD PTR _result$[ebp], eax
|
|
|
|
; 839 : va_end(args);
|
|
|
|
mov DWORD PTR _args$[ebp], 0
|
|
|
|
; 840 : return result;
|
|
|
|
mov eax, DWORD PTR _result$[ebp]
|
|
|
|
; 841 : }
|
|
|
|
pop edi
|
|
pop esi
|
|
pop ebx
|
|
add esp, 72 ; 00000048H
|
|
cmp ebp, esp
|
|
call __chkesp
|
|
mov esp, ebp
|
|
pop ebp
|
|
ret 0
|
|
?NewObject@JNIEnv_@@QAAPAV_jobject@@PAV_jclass@@PAU_jmethodID@@ZZ ENDP ; JNIEnv_::NewObject
|
|
_TEXT ENDS
|
|
; COMDAT ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z
|
|
_TEXT SEGMENT
|
|
_this$ = -4
|
|
_obj$ = 8
|
|
_clazz$ = 12
|
|
?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z PROC NEAR ; JNIEnv_::IsInstanceOf, COMDAT
|
|
|
|
; 854 : jboolean IsInstanceOf(jobject obj, jclass clazz) {
|
|
|
|
push ebp
|
|
mov ebp, esp
|
|
sub esp, 68 ; 00000044H
|
|
push ebx
|
|
push esi
|
|
push edi
|
|
push ecx
|
|
lea edi, DWORD PTR [ebp-68]
|
|
mov ecx, 17 ; 00000011H
|
|
mov eax, -858993460 ; ccccccccH
|
|
rep stosd
|
|
pop ecx
|
|
mov DWORD PTR _this$[ebp], ecx
|
|
|
|
; 855 : return functions->IsInstanceOf(this,obj,clazz);
|
|
|
|
mov esi, esp
|
|
mov eax, DWORD PTR _clazz$[ebp]
|
|
push eax
|
|
mov ecx, DWORD PTR _obj$[ebp]
|
|
push ecx
|
|
mov edx, DWORD PTR _this$[ebp]
|
|
push edx
|
|
mov eax, DWORD PTR _this$[ebp]
|
|
mov ecx, DWORD PTR [eax]
|
|
call DWORD PTR [ecx+128]
|
|
cmp esi, esp
|
|
call __chkesp
|
|
|
|
; 856 : }
|
|
|
|
pop edi
|
|
pop esi
|
|
pop ebx
|
|
add esp, 68 ; 00000044H
|
|
cmp ebp, esp
|
|
call __chkesp
|
|
mov esp, ebp
|
|
pop ebp
|
|
ret 8
|
|
?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ENDP ; JNIEnv_::IsInstanceOf
|
|
_TEXT ENDS
|
|
; COMDAT ?CallBooleanMethod@JNIEnv_@@QAAEPAV_jobject@@PAU_jmethodID@@ZZ
|
|
_TEXT SEGMENT
|
|
_this$ = 8
|
|
_args$ = -4
|
|
_result$ = -8
|
|
_obj$ = 12
|
|
_methodID$ = 16
|
|
?CallBooleanMethod@JNIEnv_@@QAAEPAV_jobject@@PAU_jmethodID@@ZZ PROC NEAR ; JNIEnv_::CallBooleanMethod, COMDAT
|
|
|
|
; 881 : jmethodID methodID, ...) {
|
|
|
|
push ebp
|
|
mov ebp, esp
|
|
sub esp, 72 ; 00000048H
|
|
push ebx
|
|
push esi
|
|
push edi
|
|
lea edi, DWORD PTR [ebp-72]
|
|
mov ecx, 18 ; 00000012H
|
|
mov eax, -858993460 ; ccccccccH
|
|
rep stosd
|
|
|
|
; 882 : va_list args;
|
|
; 883 : jboolean result;
|
|
; 884 : va_start(args,methodID);
|
|
|
|
lea eax, DWORD PTR _methodID$[ebp+4]
|
|
mov DWORD PTR _args$[ebp], eax
|
|
|
|
; 885 : result = functions->CallBooleanMethodV(this,obj,methodID,args);
|
|
|
|
mov esi, esp
|
|
mov ecx, DWORD PTR _args$[ebp]
|
|
push ecx
|
|
mov edx, DWORD PTR _methodID$[ebp]
|
|
push edx
|
|
mov eax, DWORD PTR _obj$[ebp]
|
|
push eax
|
|
mov ecx, DWORD PTR _this$[ebp]
|
|
push ecx
|
|
mov edx, DWORD PTR _this$[ebp]
|
|
mov eax, DWORD PTR [edx]
|
|
call DWORD PTR [eax+152]
|
|
cmp esi, esp
|
|
call __chkesp
|
|
mov BYTE PTR _result$[ebp], al
|
|
|
|
; 886 : va_end(args);
|
|
|
|
mov DWORD PTR _args$[ebp], 0
|
|
|
|
; 887 : return result;
|
|
|
|
mov al, BYTE PTR _result$[ebp]
|
|
|
|
; 888 : }
|
|
|
|
pop edi
|
|
pop esi
|
|
pop ebx
|
|
add esp, 72 ; 00000048H
|
|
cmp ebp, esp
|
|
call __chkesp
|
|
mov esp, ebp
|
|
pop ebp
|
|
ret 0
|
|
?CallBooleanMethod@JNIEnv_@@QAAEPAV_jobject@@PAU_jmethodID@@ZZ ENDP ; JNIEnv_::CallBooleanMethod
|
|
_TEXT ENDS
|
|
; COMDAT ?CallIntMethod@JNIEnv_@@QAAJPAV_jobject@@PAU_jmethodID@@ZZ
|
|
_TEXT SEGMENT
|
|
_this$ = 8
|
|
_args$ = -4
|
|
_result$ = -8
|
|
_obj$ = 12
|
|
_methodID$ = 16
|
|
?CallIntMethod@JNIEnv_@@QAAJPAV_jobject@@PAU_jmethodID@@ZZ PROC NEAR ; JNIEnv_::CallIntMethod, COMDAT
|
|
|
|
; 949 : jint CallIntMethod(jobject obj, jmethodID methodID, ...) {
|
|
|
|
push ebp
|
|
mov ebp, esp
|
|
sub esp, 72 ; 00000048H
|
|
push ebx
|
|
push esi
|
|
push edi
|
|
lea edi, DWORD PTR [ebp-72]
|
|
mov ecx, 18 ; 00000012H
|
|
mov eax, -858993460 ; ccccccccH
|
|
rep stosd
|
|
|
|
; 950 : va_list args;
|
|
; 951 : jint result;
|
|
; 952 : va_start(args,methodID);
|
|
|
|
lea eax, DWORD PTR _methodID$[ebp+4]
|
|
mov DWORD PTR _args$[ebp], eax
|
|
|
|
; 953 : result = functions->CallIntMethodV(this,obj,methodID,args);
|
|
|
|
mov esi, esp
|
|
mov ecx, DWORD PTR _args$[ebp]
|
|
push ecx
|
|
mov edx, DWORD PTR _methodID$[ebp]
|
|
push edx
|
|
mov eax, DWORD PTR _obj$[ebp]
|
|
push eax
|
|
mov ecx, DWORD PTR _this$[ebp]
|
|
push ecx
|
|
mov edx, DWORD PTR _this$[ebp]
|
|
mov eax, DWORD PTR [edx]
|
|
call DWORD PTR [eax+200]
|
|
cmp esi, esp
|
|
call __chkesp
|
|
mov DWORD PTR _result$[ebp], eax
|
|
|
|
; 954 : va_end(args);
|
|
|
|
mov DWORD PTR _args$[ebp], 0
|
|
|
|
; 955 : return result;
|
|
|
|
mov eax, DWORD PTR _result$[ebp]
|
|
|
|
; 956 : }
|
|
|
|
pop edi
|
|
pop esi
|
|
pop ebx
|
|
add esp, 72 ; 00000048H
|
|
cmp ebp, esp
|
|
call __chkesp
|
|
mov esp, ebp
|
|
pop ebp
|
|
ret 0
|
|
?CallIntMethod@JNIEnv_@@QAAJPAV_jobject@@PAU_jmethodID@@ZZ ENDP ; JNIEnv_::CallIntMethod
|
|
_TEXT ENDS
|
|
; COMDAT ?GetObjectField@JNIEnv_@@QAEPAV_jobject@@PAV2@PAU_jfieldID@@@Z
|
|
_TEXT SEGMENT
|
|
_obj$ = 8
|
|
_fieldID$ = 12
|
|
_this$ = -4
|
|
?GetObjectField@JNIEnv_@@QAEPAV_jobject@@PAV2@PAU_jfieldID@@@Z PROC NEAR ; JNIEnv_::GetObjectField, COMDAT
|
|
|
|
; 1248 : jobject GetObjectField(jobject obj, jfieldID fieldID) {
|
|
|
|
push ebp
|
|
mov ebp, esp
|
|
sub esp, 68 ; 00000044H
|
|
push ebx
|
|
push esi
|
|
push edi
|
|
push ecx
|
|
lea edi, DWORD PTR [ebp-68]
|
|
mov ecx, 17 ; 00000011H
|
|
mov eax, -858993460 ; ccccccccH
|
|
rep stosd
|
|
pop ecx
|
|
mov DWORD PTR _this$[ebp], ecx
|
|
|
|
; 1249 : return functions->GetObjectField(this,obj,fieldID);
|
|
|
|
mov esi, esp
|
|
mov eax, DWORD PTR _fieldID$[ebp]
|
|
push eax
|
|
mov ecx, DWORD PTR _obj$[ebp]
|
|
push ecx
|
|
mov edx, DWORD PTR _this$[ebp]
|
|
push edx
|
|
mov eax, DWORD PTR _this$[ebp]
|
|
mov ecx, DWORD PTR [eax]
|
|
call DWORD PTR [ecx+380]
|
|
cmp esi, esp
|
|
call __chkesp
|
|
|
|
; 1250 : }
|
|
|
|
pop edi
|
|
pop esi
|
|
pop ebx
|
|
add esp, 68 ; 00000044H
|
|
cmp ebp, esp
|
|
call __chkesp
|
|
mov esp, ebp
|
|
pop ebp
|
|
ret 8
|
|
?GetObjectField@JNIEnv_@@QAEPAV_jobject@@PAV2@PAU_jfieldID@@@Z ENDP ; JNIEnv_::GetObjectField
|
|
_TEXT ENDS
|
|
; COMDAT ?GetIntField@JNIEnv_@@QAEJPAV_jobject@@PAU_jfieldID@@@Z
|
|
_TEXT SEGMENT
|
|
_obj$ = 8
|
|
_fieldID$ = 12
|
|
_this$ = -4
|
|
?GetIntField@JNIEnv_@@QAEJPAV_jobject@@PAU_jfieldID@@@Z PROC NEAR ; JNIEnv_::GetIntField, COMDAT
|
|
|
|
; 1263 : jint GetIntField(jobject obj, jfieldID fieldID) {
|
|
|
|
push ebp
|
|
mov ebp, esp
|
|
sub esp, 68 ; 00000044H
|
|
push ebx
|
|
push esi
|
|
push edi
|
|
push ecx
|
|
lea edi, DWORD PTR [ebp-68]
|
|
mov ecx, 17 ; 00000011H
|
|
mov eax, -858993460 ; ccccccccH
|
|
rep stosd
|
|
pop ecx
|
|
mov DWORD PTR _this$[ebp], ecx
|
|
|
|
; 1264 : return functions->GetIntField(this,obj,fieldID);
|
|
|
|
mov esi, esp
|
|
mov eax, DWORD PTR _fieldID$[ebp]
|
|
push eax
|
|
mov ecx, DWORD PTR _obj$[ebp]
|
|
push ecx
|
|
mov edx, DWORD PTR _this$[ebp]
|
|
push edx
|
|
mov eax, DWORD PTR _this$[ebp]
|
|
mov ecx, DWORD PTR [eax]
|
|
call DWORD PTR [ecx+400]
|
|
cmp esi, esp
|
|
call __chkesp
|
|
|
|
; 1265 : }
|
|
|
|
pop edi
|
|
pop esi
|
|
pop ebx
|
|
add esp, 68 ; 00000044H
|
|
cmp ebp, esp
|
|
call __chkesp
|
|
mov esp, ebp
|
|
pop ebp
|
|
ret 8
|
|
?GetIntField@JNIEnv_@@QAEJPAV_jobject@@PAU_jfieldID@@@Z ENDP ; JNIEnv_::GetIntField
|
|
_TEXT ENDS
|
|
; COMDAT ?SetObjectField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@0@Z
|
|
_TEXT SEGMENT
|
|
_obj$ = 8
|
|
_fieldID$ = 12
|
|
_val$ = 16
|
|
_this$ = -4
|
|
?SetObjectField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@0@Z PROC NEAR ; JNIEnv_::SetObjectField, COMDAT
|
|
|
|
; 1276 : void SetObjectField(jobject obj, jfieldID fieldID, jobject val) {
|
|
|
|
push ebp
|
|
mov ebp, esp
|
|
sub esp, 68 ; 00000044H
|
|
push ebx
|
|
push esi
|
|
push edi
|
|
push ecx
|
|
lea edi, DWORD PTR [ebp-68]
|
|
mov ecx, 17 ; 00000011H
|
|
mov eax, -858993460 ; ccccccccH
|
|
rep stosd
|
|
pop ecx
|
|
mov DWORD PTR _this$[ebp], ecx
|
|
|
|
; 1277 : functions->SetObjectField(this,obj,fieldID,val);
|
|
|
|
mov esi, esp
|
|
mov eax, DWORD PTR _val$[ebp]
|
|
push eax
|
|
mov ecx, DWORD PTR _fieldID$[ebp]
|
|
push ecx
|
|
mov edx, DWORD PTR _obj$[ebp]
|
|
push edx
|
|
mov eax, DWORD PTR _this$[ebp]
|
|
push eax
|
|
mov ecx, DWORD PTR _this$[ebp]
|
|
mov edx, DWORD PTR [ecx]
|
|
call DWORD PTR [edx+416]
|
|
cmp esi, esp
|
|
call __chkesp
|
|
|
|
; 1278 : }
|
|
|
|
pop edi
|
|
pop esi
|
|
pop ebx
|
|
add esp, 68 ; 00000044H
|
|
cmp ebp, esp
|
|
call __chkesp
|
|
mov esp, ebp
|
|
pop ebp
|
|
ret 12 ; 0000000cH
|
|
?SetObjectField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@0@Z ENDP ; JNIEnv_::SetObjectField
|
|
_TEXT ENDS
|
|
; COMDAT ?SetIntField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@J@Z
|
|
_TEXT SEGMENT
|
|
_obj$ = 8
|
|
_fieldID$ = 12
|
|
_val$ = 16
|
|
_this$ = -4
|
|
?SetIntField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@J@Z PROC NEAR ; JNIEnv_::SetIntField, COMDAT
|
|
|
|
; 1296 : jint val) {
|
|
|
|
push ebp
|
|
mov ebp, esp
|
|
sub esp, 68 ; 00000044H
|
|
push ebx
|
|
push esi
|
|
push edi
|
|
push ecx
|
|
lea edi, DWORD PTR [ebp-68]
|
|
mov ecx, 17 ; 00000011H
|
|
mov eax, -858993460 ; ccccccccH
|
|
rep stosd
|
|
pop ecx
|
|
mov DWORD PTR _this$[ebp], ecx
|
|
|
|
; 1297 : functions->SetIntField(this,obj,fieldID,val);
|
|
|
|
mov esi, esp
|
|
mov eax, DWORD PTR _val$[ebp]
|
|
push eax
|
|
mov ecx, DWORD PTR _fieldID$[ebp]
|
|
push ecx
|
|
mov edx, DWORD PTR _obj$[ebp]
|
|
push edx
|
|
mov eax, DWORD PTR _this$[ebp]
|
|
push eax
|
|
mov ecx, DWORD PTR _this$[ebp]
|
|
mov edx, DWORD PTR [ecx]
|
|
call DWORD PTR [edx+436]
|
|
cmp esi, esp
|
|
call __chkesp
|
|
|
|
; 1298 : }
|
|
|
|
pop edi
|
|
pop esi
|
|
pop ebx
|
|
add esp, 68 ; 00000044H
|
|
cmp ebp, esp
|
|
call __chkesp
|
|
mov esp, ebp
|
|
pop ebp
|
|
ret 12 ; 0000000cH
|
|
?SetIntField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@J@Z ENDP ; JNIEnv_::SetIntField
|
|
_TEXT ENDS
|
|
; COMDAT ?GetArrayLength@JNIEnv_@@QAEJPAV_jarray@@@Z
|
|
_TEXT SEGMENT
|
|
_this$ = -4
|
|
_array$ = 8
|
|
?GetArrayLength@JNIEnv_@@QAEJPAV_jarray@@@Z PROC NEAR ; JNIEnv_::GetArrayLength, COMDAT
|
|
|
|
; 1589 : jsize GetArrayLength(jarray array) {
|
|
|
|
push ebp
|
|
mov ebp, esp
|
|
sub esp, 68 ; 00000044H
|
|
push ebx
|
|
push esi
|
|
push edi
|
|
push ecx
|
|
lea edi, DWORD PTR [ebp-68]
|
|
mov ecx, 17 ; 00000011H
|
|
mov eax, -858993460 ; ccccccccH
|
|
rep stosd
|
|
pop ecx
|
|
mov DWORD PTR _this$[ebp], ecx
|
|
|
|
; 1590 : return functions->GetArrayLength(this,array);
|
|
|
|
mov esi, esp
|
|
mov eax, DWORD PTR _array$[ebp]
|
|
push eax
|
|
mov ecx, DWORD PTR _this$[ebp]
|
|
push ecx
|
|
mov edx, DWORD PTR _this$[ebp]
|
|
mov eax, DWORD PTR [edx]
|
|
call DWORD PTR [eax+684]
|
|
cmp esi, esp
|
|
call __chkesp
|
|
|
|
; 1591 : }
|
|
|
|
pop edi
|
|
pop esi
|
|
pop ebx
|
|
add esp, 68 ; 00000044H
|
|
cmp ebp, esp
|
|
call __chkesp
|
|
mov esp, ebp
|
|
pop ebp
|
|
ret 4
|
|
?GetArrayLength@JNIEnv_@@QAEJPAV_jarray@@@Z ENDP ; JNIEnv_::GetArrayLength
|
|
_TEXT ENDS
|
|
; COMDAT ?GetObjectArrayElement@JNIEnv_@@QAEPAV_jobject@@PAV_jobjectArray@@J@Z
|
|
_TEXT SEGMENT
|
|
_this$ = -4
|
|
_array$ = 8
|
|
_index$ = 12
|
|
?GetObjectArrayElement@JNIEnv_@@QAEPAV_jobject@@PAV_jobjectArray@@J@Z PROC NEAR ; JNIEnv_::GetObjectArrayElement, COMDAT
|
|
|
|
; 1597 : jobject GetObjectArrayElement(jobjectArray array, jsize index) {
|
|
|
|
push ebp
|
|
mov ebp, esp
|
|
sub esp, 68 ; 00000044H
|
|
push ebx
|
|
push esi
|
|
push edi
|
|
push ecx
|
|
lea edi, DWORD PTR [ebp-68]
|
|
mov ecx, 17 ; 00000011H
|
|
mov eax, -858993460 ; ccccccccH
|
|
rep stosd
|
|
pop ecx
|
|
mov DWORD PTR _this$[ebp], ecx
|
|
|
|
; 1598 : return functions->GetObjectArrayElement(this,array,index);
|
|
|
|
mov esi, esp
|
|
mov eax, DWORD PTR _index$[ebp]
|
|
push eax
|
|
mov ecx, DWORD PTR _array$[ebp]
|
|
push ecx
|
|
mov edx, DWORD PTR _this$[ebp]
|
|
push edx
|
|
mov eax, DWORD PTR _this$[ebp]
|
|
mov ecx, DWORD PTR [eax]
|
|
call DWORD PTR [ecx+692]
|
|
cmp esi, esp
|
|
call __chkesp
|
|
|
|
; 1599 : }
|
|
|
|
pop edi
|
|
pop esi
|
|
pop ebx
|
|
add esp, 68 ; 00000044H
|
|
cmp ebp, esp
|
|
call __chkesp
|
|
mov esp, ebp
|
|
pop ebp
|
|
ret 8
|
|
?GetObjectArrayElement@JNIEnv_@@QAEPAV_jobject@@PAV_jobjectArray@@J@Z ENDP ; JNIEnv_::GetObjectArrayElement
|
|
_TEXT ENDS
|
|
; COMDAT ?GetPrimitiveArrayCritical@JNIEnv_@@QAEPAXPAV_jarray@@PAE@Z
|
|
_TEXT SEGMENT
|
|
_this$ = -4
|
|
_array$ = 8
|
|
_isCopy$ = 12
|
|
?GetPrimitiveArrayCritical@JNIEnv_@@QAEPAXPAV_jarray@@PAE@Z PROC NEAR ; JNIEnv_::GetPrimitiveArrayCritical, COMDAT
|
|
|
|
; 1788 : void * GetPrimitiveArrayCritical(jarray array, jboolean *isCopy) {
|
|
|
|
push ebp
|
|
mov ebp, esp
|
|
sub esp, 68 ; 00000044H
|
|
push ebx
|
|
push esi
|
|
push edi
|
|
push ecx
|
|
lea edi, DWORD PTR [ebp-68]
|
|
mov ecx, 17 ; 00000011H
|
|
mov eax, -858993460 ; ccccccccH
|
|
rep stosd
|
|
pop ecx
|
|
mov DWORD PTR _this$[ebp], ecx
|
|
|
|
; 1789 : return functions->GetPrimitiveArrayCritical(this,array,isCopy);
|
|
|
|
mov esi, esp
|
|
mov eax, DWORD PTR _isCopy$[ebp]
|
|
push eax
|
|
mov ecx, DWORD PTR _array$[ebp]
|
|
push ecx
|
|
mov edx, DWORD PTR _this$[ebp]
|
|
push edx
|
|
mov eax, DWORD PTR _this$[ebp]
|
|
mov ecx, DWORD PTR [eax]
|
|
call DWORD PTR [ecx+888]
|
|
cmp esi, esp
|
|
call __chkesp
|
|
|
|
; 1790 : }
|
|
|
|
pop edi
|
|
pop esi
|
|
pop ebx
|
|
add esp, 68 ; 00000044H
|
|
cmp ebp, esp
|
|
call __chkesp
|
|
mov esp, ebp
|
|
pop ebp
|
|
ret 8
|
|
?GetPrimitiveArrayCritical@JNIEnv_@@QAEPAXPAV_jarray@@PAE@Z ENDP ; JNIEnv_::GetPrimitiveArrayCritical
|
|
_TEXT ENDS
|
|
; COMDAT ?ReleasePrimitiveArrayCritical@JNIEnv_@@QAEXPAV_jarray@@PAXJ@Z
|
|
_TEXT SEGMENT
|
|
_this$ = -4
|
|
_array$ = 8
|
|
_carray$ = 12
|
|
_mode$ = 16
|
|
?ReleasePrimitiveArrayCritical@JNIEnv_@@QAEXPAV_jarray@@PAXJ@Z PROC NEAR ; JNIEnv_::ReleasePrimitiveArrayCritical, COMDAT
|
|
|
|
; 1791 : void ReleasePrimitiveArrayCritical(jarray array, void *carray, jint mode) {
|
|
|
|
push ebp
|
|
mov ebp, esp
|
|
sub esp, 68 ; 00000044H
|
|
push ebx
|
|
push esi
|
|
push edi
|
|
push ecx
|
|
lea edi, DWORD PTR [ebp-68]
|
|
mov ecx, 17 ; 00000011H
|
|
mov eax, -858993460 ; ccccccccH
|
|
rep stosd
|
|
pop ecx
|
|
mov DWORD PTR _this$[ebp], ecx
|
|
|
|
; 1792 : functions->ReleasePrimitiveArrayCritical(this,array,carray,mode);
|
|
|
|
mov esi, esp
|
|
mov eax, DWORD PTR _mode$[ebp]
|
|
push eax
|
|
mov ecx, DWORD PTR _carray$[ebp]
|
|
push ecx
|
|
mov edx, DWORD PTR _array$[ebp]
|
|
push edx
|
|
mov eax, DWORD PTR _this$[ebp]
|
|
push eax
|
|
mov ecx, DWORD PTR _this$[ebp]
|
|
mov edx, DWORD PTR [ecx]
|
|
call DWORD PTR [edx+892]
|
|
cmp esi, esp
|
|
call __chkesp
|
|
|
|
; 1793 : }
|
|
|
|
pop edi
|
|
pop esi
|
|
pop ebx
|
|
add esp, 68 ; 00000044H
|
|
cmp ebp, esp
|
|
call __chkesp
|
|
mov esp, ebp
|
|
pop ebp
|
|
ret 12 ; 0000000cH
|
|
?ReleasePrimitiveArrayCritical@JNIEnv_@@QAEXPAV_jarray@@PAXJ@Z ENDP ; JNIEnv_::ReleasePrimitiveArrayCritical
|
|
_TEXT ENDS
|
|
END
|