	TITLE	C:\Documents and Settings\Administrator\My Documents\Software\NativeCall\src\cpp\NativeCall.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@_0BD@DFD@Ljava?1lang?1String?$DL?$AA@
CONST	SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST	ENDS
;	COMDAT ??_C@_08JJOG@function?$AA@
CONST	SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST	ENDS
;	COMDAT ??_C@_06CODG@module?$AA@
CONST	SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST	ENDS
;	COMDAT ??_C@_01FLOP@I?$AA@
CONST	SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST	ENDS
;	COMDAT ??_C@_0P@LKIL@functionHandle?$AA@
CONST	SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST	ENDS
;	COMDAT ??_C@_0N@EFAA@moduleHandle?$AA@
CONST	SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST	ENDS
;	COMDAT ??_C@_0O@OMHL@lastErrorCode?$AA@
CONST	SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST	ENDS
;	COMDAT ??_C@_0BL@DALH@com?1eaio?1nativecall?1Holder?$AA@
CONST	SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST	ENDS
;	COMDAT ??_C@_0BD@GEDI@Ljava?1lang?1Object?$DL?$AA@
CONST	SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST	ENDS
;	COMDAT ??_C@_01PGHN@o?$AA@
CONST	SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST	ENDS
;	COMDAT ??_C@_0BC@IGNJ@java?1lang?1Boolean?$AA@
CONST	SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST	ENDS
;	COMDAT ??_C@_0BC@FBKL@java?1lang?1Integer?$AA@
CONST	SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST	ENDS
;	COMDAT ??_C@_0BB@LLFN@java?1lang?1String?$AA@
CONST	SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST	ENDS
;	COMDAT ??_C@_02LOEJ@?$FLB?$AA@
CONST	SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST	ENDS
;	COMDAT ??_C@_02BENO@?$FLC?$AA@
CONST	SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST	ENDS
;	COMDAT ??_C@_03KJOK@?$CI?$CJZ?$AA@
CONST	SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST	ENDS
;	COMDAT ??_C@_0N@KEBP@booleanValue?$AA@
CONST	SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST	ENDS
;	COMDAT ??_C@_03PPCD@?$CI?$CJI?$AA@
CONST	SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST	ENDS
;	COMDAT ??_C@_08JCMA@intValue?$AA@
CONST	SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST	ENDS
;	COMDAT ??_C@_04ECLF@?$CII?$CJV?$AA@
CONST	SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST	ENDS
;	COMDAT ??_C@_06KILP@?$DMinit?$DO?$AA@
CONST	SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST	ENDS
;	COMDAT ??_C@_04JFOE@?$CIZ?$CJV?$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 ?NewGlobalRef@JNIEnv_@@QAEPAV_jobject@@PAV2@@Z
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT ?GetMethodID@JNIEnv_@@QAEPAU_jmethodID@@PAV_jclass@@PBD1@Z
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT ?GetFieldID@JNIEnv_@@QAEPAU_jfieldID@@PAV_jclass@@PBD1@Z
_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 ?SetIntField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@J@Z
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT ?NewStringUTF@JNIEnv_@@QAEPAV_jstring@@PBD@Z
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT ?GetStringUTFChars@JNIEnv_@@QAEPBDPAV_jstring@@PAE@Z
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT ?ReleaseStringUTFChars@JNIEnv_@@QAEXPAV_jstring@@PBD@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_NativeCall_initIDs@8
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT _Java_com_eaio_nativecall_NativeCall_initHandles@8
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT _Java_com_eaio_nativecall_NativeCall_getLastError@8
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT _Java_com_eaio_nativecall_NativeCall_destroy@8
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
FLAT	GROUP _DATA, CONST, _BSS
	ASSUME	CS: FLAT, DS: FLAT, SS: FLAT
endif
PUBLIC	?fieldFunction@@3PAU_jfieldID@@A		; fieldFunction
PUBLIC	?fieldModule@@3PAU_jfieldID@@A			; fieldModule
PUBLIC	?fieldFunctionHandle@@3PAU_jfieldID@@A		; fieldFunctionHandle
PUBLIC	?fieldModuleHandle@@3PAU_jfieldID@@A		; fieldModuleHandle
PUBLIC	?fieldLastErrorCode@@3PAU_jfieldID@@A		; fieldLastErrorCode
PUBLIC	?fieldHolderO@@3PAU_jfieldID@@A			; fieldHolderO
PUBLIC	?classBoolean@@3PAV_jclass@@A			; classBoolean
PUBLIC	?classInteger@@3PAV_jclass@@A			; classInteger
PUBLIC	?classString@@3PAV_jclass@@A			; classString
PUBLIC	?classByteArray@@3PAV_jclass@@A			; classByteArray
PUBLIC	?classCharArray@@3PAV_jclass@@A			; classCharArray
PUBLIC	?classHolder@@3PAV_jclass@@A			; classHolder
PUBLIC	?methodBooleanValue@@3PAU_jmethodID@@A		; methodBooleanValue
PUBLIC	?methodIntValue@@3PAU_jmethodID@@A		; methodIntValue
PUBLIC	?newIntegerInt@@3PAU_jmethodID@@A		; newIntegerInt
PUBLIC	?newBooleanBoolean@@3PAU_jmethodID@@A		; newBooleanBoolean
_BSS	SEGMENT
?fieldFunction@@3PAU_jfieldID@@A DD 01H DUP (?)		; fieldFunction
?fieldModule@@3PAU_jfieldID@@A DD 01H DUP (?)		; fieldModule
?fieldFunctionHandle@@3PAU_jfieldID@@A DD 01H DUP (?)	; fieldFunctionHandle
?fieldModuleHandle@@3PAU_jfieldID@@A DD 01H DUP (?)	; fieldModuleHandle
?fieldLastErrorCode@@3PAU_jfieldID@@A DD 01H DUP (?)	; fieldLastErrorCode
?fieldHolderO@@3PAU_jfieldID@@A DD 01H DUP (?)		; fieldHolderO
?classBoolean@@3PAV_jclass@@A DD 01H DUP (?)		; classBoolean
?classInteger@@3PAV_jclass@@A DD 01H DUP (?)		; classInteger
?classString@@3PAV_jclass@@A DD 01H DUP (?)		; classString
?classByteArray@@3PAV_jclass@@A DD 01H DUP (?)		; classByteArray
?classCharArray@@3PAV_jclass@@A DD 01H DUP (?)		; classCharArray
?classHolder@@3PAV_jclass@@A DD 01H DUP (?)		; classHolder
?methodBooleanValue@@3PAU_jmethodID@@A DD 01H DUP (?)	; methodBooleanValue
?methodIntValue@@3PAU_jmethodID@@A DD 01H DUP (?)	; methodIntValue
?newIntegerInt@@3PAU_jmethodID@@A DD 01H DUP (?)	; newIntegerInt
?newBooleanBoolean@@3PAU_jmethodID@@A DD 01H DUP (?)	; newBooleanBoolean
_BSS	ENDS
PUBLIC	?GetFieldID@JNIEnv_@@QAEPAU_jfieldID@@PAV_jclass@@PBD1@Z ; JNIEnv_::GetFieldID
PUBLIC	_Java_com_eaio_nativecall_NativeCall_initIDs@8
PUBLIC	??_C@_0BD@DFD@Ljava?1lang?1String?$DL?$AA@	; `string'
PUBLIC	??_C@_08JJOG@function?$AA@			; `string'
PUBLIC	??_C@_06CODG@module?$AA@			; `string'
PUBLIC	??_C@_01FLOP@I?$AA@				; `string'
PUBLIC	??_C@_0P@LKIL@functionHandle?$AA@		; `string'
PUBLIC	??_C@_0N@EFAA@moduleHandle?$AA@			; `string'
PUBLIC	??_C@_0O@OMHL@lastErrorCode?$AA@		; `string'
PUBLIC	??_C@_0BL@DALH@com?1eaio?1nativecall?1Holder?$AA@ ; `string'
PUBLIC	??_C@_0BD@GEDI@Ljava?1lang?1Object?$DL?$AA@	; `string'
PUBLIC	??_C@_01PGHN@o?$AA@				; `string'
PUBLIC	??_C@_0BC@IGNJ@java?1lang?1Boolean?$AA@		; `string'
PUBLIC	??_C@_0BC@FBKL@java?1lang?1Integer?$AA@		; `string'
PUBLIC	??_C@_0BB@LLFN@java?1lang?1String?$AA@		; `string'
PUBLIC	??_C@_02LOEJ@?$FLB?$AA@				; `string'
PUBLIC	??_C@_02BENO@?$FLC?$AA@				; `string'
PUBLIC	??_C@_03KJOK@?$CI?$CJZ?$AA@			; `string'
PUBLIC	??_C@_0N@KEBP@booleanValue?$AA@			; `string'
PUBLIC	??_C@_03PPCD@?$CI?$CJI?$AA@			; `string'
PUBLIC	??_C@_08JCMA@intValue?$AA@			; `string'
PUBLIC	??_C@_04ECLF@?$CII?$CJV?$AA@			; `string'
PUBLIC	??_C@_06KILP@?$DMinit?$DO?$AA@			; `string'
PUBLIC	??_C@_04JFOE@?$CIZ?$CJV?$AA@			; `string'
PUBLIC	?FindClass@JNIEnv_@@QAEPAV_jclass@@PBD@Z	; JNIEnv_::FindClass
PUBLIC	?NewGlobalRef@JNIEnv_@@QAEPAV_jobject@@PAV2@@Z	; JNIEnv_::NewGlobalRef
PUBLIC	?GetMethodID@JNIEnv_@@QAEPAU_jmethodID@@PAV_jclass@@PBD1@Z ; JNIEnv_::GetMethodID
EXTRN	__chkesp:NEAR
;	COMDAT ??_C@_0BD@DFD@Ljava?1lang?1String?$DL?$AA@
; File c:\documents and settings\administrator\my documents\software\nativecall\src\cpp\nativecall.cpp
CONST	SEGMENT
??_C@_0BD@DFD@Ljava?1lang?1String?$DL?$AA@ DB 'Ljava/lang/String;', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_08JJOG@function?$AA@
CONST	SEGMENT
??_C@_08JJOG@function?$AA@ DB 'function', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_06CODG@module?$AA@
CONST	SEGMENT
??_C@_06CODG@module?$AA@ DB 'module', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_01FLOP@I?$AA@
CONST	SEGMENT
??_C@_01FLOP@I?$AA@ DB 'I', 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_0P@LKIL@functionHandle?$AA@
CONST	SEGMENT
??_C@_0P@LKIL@functionHandle?$AA@ DB 'functionHandle', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0N@EFAA@moduleHandle?$AA@
CONST	SEGMENT
??_C@_0N@EFAA@moduleHandle?$AA@ DB 'moduleHandle', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_0O@OMHL@lastErrorCode?$AA@
CONST	SEGMENT
??_C@_0O@OMHL@lastErrorCode?$AA@ DB 'lastErrorCode', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BL@DALH@com?1eaio?1nativecall?1Holder?$AA@
CONST	SEGMENT
??_C@_0BL@DALH@com?1eaio?1nativecall?1Holder?$AA@ DB 'com/eaio/nativecall'
	DB	'/Holder', 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_0BD@GEDI@Ljava?1lang?1Object?$DL?$AA@
CONST	SEGMENT
??_C@_0BD@GEDI@Ljava?1lang?1Object?$DL?$AA@ DB 'Ljava/lang/Object;', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_01PGHN@o?$AA@
CONST	SEGMENT
??_C@_01PGHN@o?$AA@ DB 'o', 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_0BC@IGNJ@java?1lang?1Boolean?$AA@
CONST	SEGMENT
??_C@_0BC@IGNJ@java?1lang?1Boolean?$AA@ DB 'java/lang/Boolean', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BC@FBKL@java?1lang?1Integer?$AA@
CONST	SEGMENT
??_C@_0BC@FBKL@java?1lang?1Integer?$AA@ DB 'java/lang/Integer', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BB@LLFN@java?1lang?1String?$AA@
CONST	SEGMENT
??_C@_0BB@LLFN@java?1lang?1String?$AA@ DB 'java/lang/String', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_02LOEJ@?$FLB?$AA@
CONST	SEGMENT
??_C@_02LOEJ@?$FLB?$AA@ DB '[B', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_02BENO@?$FLC?$AA@
CONST	SEGMENT
??_C@_02BENO@?$FLC?$AA@ DB '[C', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_03KJOK@?$CI?$CJZ?$AA@
CONST	SEGMENT
??_C@_03KJOK@?$CI?$CJZ?$AA@ DB '()Z', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_0N@KEBP@booleanValue?$AA@
CONST	SEGMENT
??_C@_0N@KEBP@booleanValue?$AA@ DB 'booleanValue', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_03PPCD@?$CI?$CJI?$AA@
CONST	SEGMENT
??_C@_03PPCD@?$CI?$CJI?$AA@ DB '()I', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_08JCMA@intValue?$AA@
CONST	SEGMENT
??_C@_08JCMA@intValue?$AA@ DB 'intValue', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_04ECLF@?$CII?$CJV?$AA@
CONST	SEGMENT
??_C@_04ECLF@?$CII?$CJV?$AA@ DB '(I)V', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_06KILP@?$DMinit?$DO?$AA@
CONST	SEGMENT
??_C@_06KILP@?$DMinit?$DO?$AA@ DB '<init>', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_04JFOE@?$CIZ?$CJV?$AA@
CONST	SEGMENT
??_C@_04JFOE@?$CIZ?$CJV?$AA@ DB '(Z)V', 00H		; `string'
CONST	ENDS
;	COMDAT _Java_com_eaio_nativecall_NativeCall_initIDs@8
_TEXT	SEGMENT
_env$ = 8
_cls$ = 12
_Java_com_eaio_nativecall_NativeCall_initIDs@8 PROC NEAR ; COMDAT

; 71   : (JNIEnv *env, jclass cls) {

	push	ebp
	mov	ebp, esp
	sub	esp, 64					; 00000040H
	push	ebx
	push	esi
	push	edi
	lea	edi, DWORD PTR [ebp-64]
	mov	ecx, 16					; 00000010H
	mov	eax, -858993460				; ccccccccH
	rep stosd

; 72   : 
; 73   :  // NativeCall fields
; 74   : 
; 75   :  fieldFunction = env->GetFieldID(cls, "function", "Ljava/lang/String;");

	push	OFFSET FLAT:??_C@_0BD@DFD@Ljava?1lang?1String?$DL?$AA@ ; `string'
	push	OFFSET FLAT:??_C@_08JJOG@function?$AA@	; `string'
	mov	eax, DWORD PTR _cls$[ebp]
	push	eax
	mov	ecx, DWORD PTR _env$[ebp]
	call	?GetFieldID@JNIEnv_@@QAEPAU_jfieldID@@PAV_jclass@@PBD1@Z ; JNIEnv_::GetFieldID
	mov	DWORD PTR ?fieldFunction@@3PAU_jfieldID@@A, eax ; fieldFunction

; 76   :  fieldModule = env->GetFieldID(cls, "module", "Ljava/lang/String;");

	push	OFFSET FLAT:??_C@_0BD@DFD@Ljava?1lang?1String?$DL?$AA@ ; `string'
	push	OFFSET FLAT:??_C@_06CODG@module?$AA@	; `string'
	mov	ecx, DWORD PTR _cls$[ebp]
	push	ecx
	mov	ecx, DWORD PTR _env$[ebp]
	call	?GetFieldID@JNIEnv_@@QAEPAU_jfieldID@@PAV_jclass@@PBD1@Z ; JNIEnv_::GetFieldID
	mov	DWORD PTR ?fieldModule@@3PAU_jfieldID@@A, eax ; fieldModule

; 77   : 
; 78   :  fieldFunctionHandle = env->GetFieldID(cls, "functionHandle", "I");

	push	OFFSET FLAT:??_C@_01FLOP@I?$AA@		; `string'
	push	OFFSET FLAT:??_C@_0P@LKIL@functionHandle?$AA@ ; `string'
	mov	edx, DWORD PTR _cls$[ebp]
	push	edx
	mov	ecx, DWORD PTR _env$[ebp]
	call	?GetFieldID@JNIEnv_@@QAEPAU_jfieldID@@PAV_jclass@@PBD1@Z ; JNIEnv_::GetFieldID
	mov	DWORD PTR ?fieldFunctionHandle@@3PAU_jfieldID@@A, eax ; fieldFunctionHandle

; 79   :  fieldModuleHandle = env-> GetFieldID(cls, "moduleHandle", "I");

	push	OFFSET FLAT:??_C@_01FLOP@I?$AA@		; `string'
	push	OFFSET FLAT:??_C@_0N@EFAA@moduleHandle?$AA@ ; `string'
	mov	eax, DWORD PTR _cls$[ebp]
	push	eax
	mov	ecx, DWORD PTR _env$[ebp]
	call	?GetFieldID@JNIEnv_@@QAEPAU_jfieldID@@PAV_jclass@@PBD1@Z ; JNIEnv_::GetFieldID
	mov	DWORD PTR ?fieldModuleHandle@@3PAU_jfieldID@@A, eax ; fieldModuleHandle

; 80   : 
; 81   :  fieldLastErrorCode = env->GetFieldID(cls, "lastErrorCode", "I");

	push	OFFSET FLAT:??_C@_01FLOP@I?$AA@		; `string'
	push	OFFSET FLAT:??_C@_0O@OMHL@lastErrorCode?$AA@ ; `string'
	mov	ecx, DWORD PTR _cls$[ebp]
	push	ecx
	mov	ecx, DWORD PTR _env$[ebp]
	call	?GetFieldID@JNIEnv_@@QAEPAU_jfieldID@@PAV_jclass@@PBD1@Z ; JNIEnv_::GetFieldID
	mov	DWORD PTR ?fieldLastErrorCode@@3PAU_jfieldID@@A, eax ; fieldLastErrorCode

; 82   : 
; 83   :  // Holder fields
; 84   : 
; 85   :  classHolder = (jclass) env->NewGlobalRef(env->FindClass("com/eaio/nativecall/Holder"));

	push	OFFSET FLAT:??_C@_0BL@DALH@com?1eaio?1nativecall?1Holder?$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	?NewGlobalRef@JNIEnv_@@QAEPAV_jobject@@PAV2@@Z ; JNIEnv_::NewGlobalRef
	mov	DWORD PTR ?classHolder@@3PAV_jclass@@A, eax ; classHolder

; 86   :  fieldHolderO = env->GetFieldID(classHolder, "o", "Ljava/lang/Object;");

	push	OFFSET FLAT:??_C@_0BD@GEDI@Ljava?1lang?1Object?$DL?$AA@ ; `string'
	push	OFFSET FLAT:??_C@_01PGHN@o?$AA@		; `string'
	mov	edx, DWORD PTR ?classHolder@@3PAV_jclass@@A ; classHolder
	push	edx
	mov	ecx, DWORD PTR _env$[ebp]
	call	?GetFieldID@JNIEnv_@@QAEPAU_jfieldID@@PAV_jclass@@PBD1@Z ; JNIEnv_::GetFieldID
	mov	DWORD PTR ?fieldHolderO@@3PAU_jfieldID@@A, eax ; fieldHolderO

; 87   : 
; 88   :  // Other classes
; 89   : 
; 90   :  classBoolean = (jclass) env->NewGlobalRef(env->FindClass("java/lang/Boolean"));

	push	OFFSET FLAT:??_C@_0BC@IGNJ@java?1lang?1Boolean?$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	?NewGlobalRef@JNIEnv_@@QAEPAV_jobject@@PAV2@@Z ; JNIEnv_::NewGlobalRef
	mov	DWORD PTR ?classBoolean@@3PAV_jclass@@A, eax ; classBoolean

; 91   :  /*classByte = (jclass) env->NewGlobalRef(env->FindClass("java/lang/Byte"));
; 92   :  classCharacter = (jclass) env->NewGlobalRef(env->FindClass("java/lang/Character"));
; 93   :  classShort = (jclass) env->NewGlobalRef(env->FindClass("java/lang/Short"));*/
; 94   :  classInteger = (jclass) env->NewGlobalRef(env->FindClass("java/lang/Integer"));

	push	OFFSET FLAT:??_C@_0BC@FBKL@java?1lang?1Integer?$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	?NewGlobalRef@JNIEnv_@@QAEPAV_jobject@@PAV2@@Z ; JNIEnv_::NewGlobalRef
	mov	DWORD PTR ?classInteger@@3PAV_jclass@@A, eax ; classInteger

; 95   :  /*classLong = (jclass) env->NewGlobalRef(env->FindClass("java/lang/Long"));
; 96   :  classFloat = (jclass) env->NewGlobalRef(env->FindClass("java/lang/Float"));
; 97   :  classDouble = (jclass) env->NewGlobalRef(env->FindClass("java/lang/Double"));*/
; 98   :  classString = (jclass) env->NewGlobalRef(env->FindClass("java/lang/String"));

	push	OFFSET FLAT:??_C@_0BB@LLFN@java?1lang?1String?$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	?NewGlobalRef@JNIEnv_@@QAEPAV_jobject@@PAV2@@Z ; JNIEnv_::NewGlobalRef
	mov	DWORD PTR ?classString@@3PAV_jclass@@A, eax ; classString

; 99   :  classByteArray = (jclass) env->NewGlobalRef(env->FindClass("[B"));

	push	OFFSET FLAT:??_C@_02LOEJ@?$FLB?$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	?NewGlobalRef@JNIEnv_@@QAEPAV_jobject@@PAV2@@Z ; JNIEnv_::NewGlobalRef
	mov	DWORD PTR ?classByteArray@@3PAV_jclass@@A, eax ; classByteArray

; 100  :  classCharArray = (jclass) env->NewGlobalRef(env->FindClass("[C"));

	push	OFFSET FLAT:??_C@_02BENO@?$FLC?$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	?NewGlobalRef@JNIEnv_@@QAEPAV_jobject@@PAV2@@Z ; JNIEnv_::NewGlobalRef
	mov	DWORD PTR ?classCharArray@@3PAV_jclass@@A, eax ; classCharArray

; 101  :  /*classIntArray = (jclass) env->NewGlobalRef(env->FindClass("[I"));*/
; 102  : 
; 103  :  // Wrapper class methods
; 104  : 
; 105  :  methodBooleanValue = env->GetMethodID(classBoolean,
; 106  :   "booleanValue", "()Z");

	push	OFFSET FLAT:??_C@_03KJOK@?$CI?$CJZ?$AA@	; `string'
	push	OFFSET FLAT:??_C@_0N@KEBP@booleanValue?$AA@ ; `string'
	mov	eax, DWORD PTR ?classBoolean@@3PAV_jclass@@A ; classBoolean
	push	eax
	mov	ecx, DWORD PTR _env$[ebp]
	call	?GetMethodID@JNIEnv_@@QAEPAU_jmethodID@@PAV_jclass@@PBD1@Z ; JNIEnv_::GetMethodID
	mov	DWORD PTR ?methodBooleanValue@@3PAU_jmethodID@@A, eax ; methodBooleanValue

; 107  :  /*methodByteValue = env->GetMethodID(classByte,
; 108  :   "byteValue", "()B");
; 109  :  methodCharValue = env->GetMethodID(classCharacter,
; 110  :   "charValue", "()C");
; 111  :  methodShortValue = env->GetMethodID(classShort,
; 112  :   "shortValue", "()S");*/
; 113  :  methodIntValue = env->GetMethodID(classInteger,
; 114  :   "intValue", "()I");

	push	OFFSET FLAT:??_C@_03PPCD@?$CI?$CJI?$AA@	; `string'
	push	OFFSET FLAT:??_C@_08JCMA@intValue?$AA@	; `string'
	mov	ecx, DWORD PTR ?classInteger@@3PAV_jclass@@A ; classInteger
	push	ecx
	mov	ecx, DWORD PTR _env$[ebp]
	call	?GetMethodID@JNIEnv_@@QAEPAU_jmethodID@@PAV_jclass@@PBD1@Z ; JNIEnv_::GetMethodID
	mov	DWORD PTR ?methodIntValue@@3PAU_jmethodID@@A, eax ; methodIntValue

; 115  :  /*methodLongValue = env->GetMethodID(classLong,
; 116  :   "longValue", "()J");
; 117  :  methodFloatValue = env->GetMethodID(classFloat,
; 118  :   "floatValue", "()F");
; 119  :  methodDoubleValue = env->GetMethodID(classDouble,
; 120  :   "doubleValue", "()D");*/
; 121  : 
; 122  :  // Constructors
; 123  : 
; 124  :  newIntegerInt = env->GetMethodID(classInteger, "<init>", "(I)V");

	push	OFFSET FLAT:??_C@_04ECLF@?$CII?$CJV?$AA@ ; `string'
	push	OFFSET FLAT:??_C@_06KILP@?$DMinit?$DO?$AA@ ; `string'
	mov	edx, DWORD PTR ?classInteger@@3PAV_jclass@@A ; classInteger
	push	edx
	mov	ecx, DWORD PTR _env$[ebp]
	call	?GetMethodID@JNIEnv_@@QAEPAU_jmethodID@@PAV_jclass@@PBD1@Z ; JNIEnv_::GetMethodID
	mov	DWORD PTR ?newIntegerInt@@3PAU_jmethodID@@A, eax ; newIntegerInt

; 125  :  newBooleanBoolean = env->GetMethodID(classBoolean, "<init>", "(Z)V");

	push	OFFSET FLAT:??_C@_04JFOE@?$CIZ?$CJV?$AA@ ; `string'
	push	OFFSET FLAT:??_C@_06KILP@?$DMinit?$DO?$AA@ ; `string'
	mov	eax, DWORD PTR ?classBoolean@@3PAV_jclass@@A ; classBoolean
	push	eax
	mov	ecx, DWORD PTR _env$[ebp]
	call	?GetMethodID@JNIEnv_@@QAEPAU_jmethodID@@PAV_jclass@@PBD1@Z ; JNIEnv_::GetMethodID
	mov	DWORD PTR ?newBooleanBoolean@@3PAU_jmethodID@@A, eax ; newBooleanBoolean

; 126  :   
; 127  : }

	pop	edi
	pop	esi
	pop	ebx
	add	esp, 64					; 00000040H
	cmp	ebp, esp
	call	__chkesp
	mov	esp, ebp
	pop	ebp
	ret	8
_Java_com_eaio_nativecall_NativeCall_initIDs@8 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
PUBLIC	?GetObjectField@JNIEnv_@@QAEPAV_jobject@@PAV2@PAU_jfieldID@@@Z ; JNIEnv_::GetObjectField
PUBLIC	?SetIntField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@J@Z ; JNIEnv_::SetIntField
PUBLIC	_Java_com_eaio_nativecall_NativeCall_initHandles@8
PUBLIC	?GetStringUTFChars@JNIEnv_@@QAEPBDPAV_jstring@@PAE@Z ; JNIEnv_::GetStringUTFChars
PUBLIC	?ReleaseStringUTFChars@JNIEnv_@@QAEXPAV_jstring@@PBD@Z ; JNIEnv_::ReleaseStringUTFChars
EXTRN	__imp__LoadLibraryA@4:NEAR
EXTRN	__imp__GetLastError@0:NEAR
EXTRN	__imp__FreeLibrary@4:NEAR
EXTRN	__imp__GetProcAddress@8:NEAR
;	COMDAT _Java_com_eaio_nativecall_NativeCall_initHandles@8
_TEXT	SEGMENT
_env$ = 8
_obj$ = 12
_out$ = -4
_moduleNameS$ = -8
_functionNameS$ = -12
_moduleName$ = -16
_functionName$ = -20
_mod$ = -24
_addr$56841 = -28
_Java_com_eaio_nativecall_NativeCall_initHandles@8 PROC NEAR ; COMDAT

; 135  : (JNIEnv *env, jobject obj) {

	push	ebp
	mov	ebp, esp
	sub	esp, 92					; 0000005cH
	push	ebx
	push	esi
	push	edi
	lea	edi, DWORD PTR [ebp-92]
	mov	ecx, 23					; 00000017H
	mov	eax, -858993460				; ccccccccH
	rep stosd

; 136  :   
; 137  :  bool out = JNI_TRUE;

	mov	BYTE PTR _out$[ebp], 1

; 138  :  
; 139  :  jstring moduleNameS = (jstring) env->GetObjectField(obj, fieldModule);

	mov	eax, DWORD PTR ?fieldModule@@3PAU_jfieldID@@A ; fieldModule
	push	eax
	mov	ecx, DWORD PTR _obj$[ebp]
	push	ecx
	mov	ecx, DWORD PTR _env$[ebp]
	call	?GetObjectField@JNIEnv_@@QAEPAV_jobject@@PAV2@PAU_jfieldID@@@Z ; JNIEnv_::GetObjectField
	mov	DWORD PTR _moduleNameS$[ebp], eax

; 140  :  jstring functionNameS = (jstring) env->GetObjectField(obj, fieldFunction);

	mov	edx, DWORD PTR ?fieldFunction@@3PAU_jfieldID@@A ; fieldFunction
	push	edx
	mov	eax, DWORD PTR _obj$[ebp]
	push	eax
	mov	ecx, DWORD PTR _env$[ebp]
	call	?GetObjectField@JNIEnv_@@QAEPAV_jobject@@PAV2@PAU_jfieldID@@@Z ; JNIEnv_::GetObjectField
	mov	DWORD PTR _functionNameS$[ebp], eax

; 141  :  
; 142  :  const char* moduleName = env->GetStringUTFChars(moduleNameS, 0);

	push	0
	mov	ecx, DWORD PTR _moduleNameS$[ebp]
	push	ecx
	mov	ecx, DWORD PTR _env$[ebp]
	call	?GetStringUTFChars@JNIEnv_@@QAEPBDPAV_jstring@@PAE@Z ; JNIEnv_::GetStringUTFChars
	mov	DWORD PTR _moduleName$[ebp], eax

; 143  :  const char* functionName = env->GetStringUTFChars(functionNameS, 0);

	push	0
	mov	edx, DWORD PTR _functionNameS$[ebp]
	push	edx
	mov	ecx, DWORD PTR _env$[ebp]
	call	?GetStringUTFChars@JNIEnv_@@QAEPBDPAV_jstring@@PAE@Z ; JNIEnv_::GetStringUTFChars
	mov	DWORD PTR _functionName$[ebp], eax

; 144  :  
; 145  : #ifdef _WINDOWS
; 146  :  
; 147  :  HMODULE mod = LoadLibrary(moduleName);

	mov	esi, esp
	mov	eax, DWORD PTR _moduleName$[ebp]
	push	eax
	call	DWORD PTR __imp__LoadLibraryA@4
	cmp	esi, esp
	call	__chkesp
	mov	DWORD PTR _mod$[ebp], eax

; 148  :  
; 149  :  if (mod == NULL) {

	cmp	DWORD PTR _mod$[ebp], 0
	jne	SHORT $L56839

; 150  :   /* no such module or DllMain returned FALSE */
; 151  :   env->SetIntField(obj, fieldLastErrorCode, GetLastError());

	mov	esi, esp
	call	DWORD PTR __imp__GetLastError@0
	cmp	esi, esp
	call	__chkesp
	push	eax
	mov	ecx, DWORD PTR ?fieldLastErrorCode@@3PAU_jfieldID@@A ; fieldLastErrorCode
	push	ecx
	mov	edx, DWORD PTR _obj$[ebp]
	push	edx
	mov	ecx, DWORD PTR _env$[ebp]
	call	?SetIntField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@J@Z ; JNIEnv_::SetIntField

; 152  :   out = JNI_FALSE;

	mov	BYTE PTR _out$[ebp], 0

; 154  :  else {

	jmp	$L56843
$L56839:

; 155  :   FARPROC addr = GetProcAddress(mod, functionName);

	mov	esi, esp
	mov	eax, DWORD PTR _functionName$[ebp]
	push	eax
	mov	ecx, DWORD PTR _mod$[ebp]
	push	ecx
	call	DWORD PTR __imp__GetProcAddress@8
	cmp	esi, esp
	call	__chkesp
	mov	DWORD PTR _addr$56841[ebp], eax

; 156  :   if (addr == NULL) {

	cmp	DWORD PTR _addr$56841[ebp], 0
	jne	SHORT $L56842

; 157  :    /* function not found */
; 158  :    FreeLibrary(mod);

	mov	esi, esp
	mov	edx, DWORD PTR _mod$[ebp]
	push	edx
	call	DWORD PTR __imp__FreeLibrary@4
	cmp	esi, esp
	call	__chkesp

; 159  :    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

; 160  :    out = JNI_FALSE;

	mov	BYTE PTR _out$[ebp], 0

; 162  :   else {

	jmp	SHORT $L56843
$L56842:

; 163  :    /* all ok */ 
; 164  :    env->SetIntField(obj, fieldModuleHandle, (jint) mod);

	mov	edx, DWORD PTR _mod$[ebp]
	push	edx
	mov	eax, DWORD PTR ?fieldModuleHandle@@3PAU_jfieldID@@A ; fieldModuleHandle
	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

; 165  :    env->SetIntField(obj, fieldFunctionHandle, (jint) addr);

	mov	edx, DWORD PTR _addr$56841[ebp]
	push	edx
	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	?SetIntField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@J@Z ; JNIEnv_::SetIntField
$L56843:

; 168  :  
; 169  : #endif
; 170  :  
; 171  :  env->ReleaseStringUTFChars(moduleNameS, moduleName);

	mov	edx, DWORD PTR _moduleName$[ebp]
	push	edx
	mov	eax, DWORD PTR _moduleNameS$[ebp]
	push	eax
	mov	ecx, DWORD PTR _env$[ebp]
	call	?ReleaseStringUTFChars@JNIEnv_@@QAEXPAV_jstring@@PBD@Z ; JNIEnv_::ReleaseStringUTFChars

; 172  :  env->ReleaseStringUTFChars(functionNameS, functionName);

	mov	ecx, DWORD PTR _functionName$[ebp]
	push	ecx
	mov	edx, DWORD PTR _functionNameS$[ebp]
	push	edx
	mov	ecx, DWORD PTR _env$[ebp]
	call	?ReleaseStringUTFChars@JNIEnv_@@QAEXPAV_jstring@@PBD@Z ; JNIEnv_::ReleaseStringUTFChars

; 173  :  
; 174  :  return out;

	mov	al, BYTE PTR _out$[ebp]

; 175  :  
; 176  : }

	pop	edi
	pop	esi
	pop	ebx
	add	esp, 92					; 0000005cH
	cmp	ebp, esp
	call	__chkesp
	mov	esp, ebp
	pop	ebp
	ret	8
_Java_com_eaio_nativecall_NativeCall_initHandles@8 ENDP
_TEXT	ENDS
PUBLIC	?GetIntField@JNIEnv_@@QAEJPAV_jobject@@PAU_jfieldID@@@Z ; JNIEnv_::GetIntField
PUBLIC	_Java_com_eaio_nativecall_NativeCall_getLastError@8
PUBLIC	?NewStringUTF@JNIEnv_@@QAEPAV_jstring@@PBD@Z	; JNIEnv_::NewStringUTF
EXTRN	__imp__FormatMessageA@28:NEAR
EXTRN	__imp__LocalFree@4:NEAR
;	COMDAT _Java_com_eaio_nativecall_NativeCall_getLastError@8
_TEXT	SEGMENT
_env$ = 8
_obj$ = 12
_lastError$ = -4
_out$ = -8
_msgBufPtr$ = -12
_Java_com_eaio_nativecall_NativeCall_getLastError@8 PROC NEAR ; COMDAT

; 184  : (JNIEnv *env, jobject obj) {

	push	ebp
	mov	ebp, esp
	sub	esp, 76					; 0000004cH
	push	ebx
	push	esi
	push	edi
	lea	edi, DWORD PTR [ebp-76]
	mov	ecx, 19					; 00000013H
	mov	eax, -858993460				; ccccccccH
	rep stosd

; 185  :  
; 186  :  jint lastError = env->GetIntField(obj, fieldLastErrorCode);

	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	?GetIntField@JNIEnv_@@QAEJPAV_jobject@@PAU_jfieldID@@@Z ; JNIEnv_::GetIntField
	mov	DWORD PTR _lastError$[ebp], eax

; 187  :  
; 188  :  if (lastError == 0) return NULL;

	cmp	DWORD PTR _lastError$[ebp], 0
	jne	SHORT $L56851
	xor	eax, eax
	jmp	SHORT $L56849
$L56851:

; 189  :  
; 190  :  jstring out = NULL;

	mov	DWORD PTR _out$[ebp], 0

; 191  :  
; 192  : #ifdef _WINDOWS
; 193  :  
; 194  :  LPVOID msgBufPtr = NULL;

	mov	DWORD PTR _msgBufPtr$[ebp], 0

; 195  :  FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | 
; 196  :   FORMAT_MESSAGE_FROM_SYSTEM, NULL, lastError, 0,
; 197  :   (LPSTR) &msgBufPtr, 0, NULL);

	mov	esi, esp
	push	0
	push	0
	lea	edx, DWORD PTR _msgBufPtr$[ebp]
	push	edx
	push	0
	mov	eax, DWORD PTR _lastError$[ebp]
	push	eax
	push	0
	push	4352					; 00001100H
	call	DWORD PTR __imp__FormatMessageA@28
	cmp	esi, esp
	call	__chkesp

; 198  :  
; 199  :  out = env->NewStringUTF((char*) msgBufPtr);

	mov	ecx, DWORD PTR _msgBufPtr$[ebp]
	push	ecx
	mov	ecx, DWORD PTR _env$[ebp]
	call	?NewStringUTF@JNIEnv_@@QAEPAV_jstring@@PBD@Z ; JNIEnv_::NewStringUTF
	mov	DWORD PTR _out$[ebp], eax

; 200  :  
; 201  :  LocalFree(msgBufPtr);

	mov	esi, esp
	mov	edx, DWORD PTR _msgBufPtr$[ebp]
	push	edx
	call	DWORD PTR __imp__LocalFree@4
	cmp	esi, esp
	call	__chkesp

; 202  :  
; 203  : #endif
; 204  :  
; 205  :  return out;

	mov	eax, DWORD PTR _out$[ebp]
$L56849:

; 206  :  
; 207  : }

	pop	edi
	pop	esi
	pop	ebx
	add	esp, 76					; 0000004cH
	cmp	ebp, esp
	call	__chkesp
	mov	esp, ebp
	pop	ebp
	ret	8
_Java_com_eaio_nativecall_NativeCall_getLastError@8 ENDP
_TEXT	ENDS
PUBLIC	_Java_com_eaio_nativecall_NativeCall_destroy@8
;	COMDAT _Java_com_eaio_nativecall_NativeCall_destroy@8
_TEXT	SEGMENT
_env$ = 8
_obj$ = 12
_module$ = -4
_Java_com_eaio_nativecall_NativeCall_destroy@8 PROC NEAR ; COMDAT

; 215  : (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

; 216  :  
; 217  :  jint module = env->GetIntField(obj, fieldModuleHandle);

	mov	eax, DWORD PTR ?fieldModuleHandle@@3PAU_jfieldID@@A ; fieldModuleHandle
	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 _module$[ebp], eax

; 218  : 
; 219  :  if (module == 0) return;

	cmp	DWORD PTR _module$[ebp], 0
	jne	SHORT $L56861
	jmp	SHORT $L56859
$L56861:

; 220  :  
; 221  : #ifdef _WINDOWS
; 222  :   
; 223  :  if (FreeLibrary((HMODULE) module) == 0) {

	mov	esi, esp
	mov	edx, DWORD PTR _module$[ebp]
	push	edx
	call	DWORD PTR __imp__FreeLibrary@4
	cmp	esi, esp
	call	__chkesp
	test	eax, eax
	jne	SHORT $L56863

; 224  :   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
$L56863:

; 226  :   
; 227  : #endif
; 228  :  
; 229  :  env->SetIntField(obj, fieldModuleHandle, 0);

	push	0
	mov	edx, DWORD PTR ?fieldModuleHandle@@3PAU_jfieldID@@A ; fieldModuleHandle
	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

; 230  :  env->SetIntField(obj, fieldFunctionHandle, 0);

	push	0
	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	?SetIntField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@J@Z ; JNIEnv_::SetIntField
$L56859:

; 231  :  
; 232  :  return;
; 233  :  
; 234  : }

	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_NativeCall_destroy@8 ENDP
_TEXT	ENDS
;	COMDAT ?NewGlobalRef@JNIEnv_@@QAEPAV_jobject@@PAV2@@Z
_TEXT	SEGMENT
_this$ = -4
_lobj$ = 8
?NewGlobalRef@JNIEnv_@@QAEPAV_jobject@@PAV2@@Z PROC NEAR ; JNIEnv_::NewGlobalRef, COMDAT

; 810  :     jobject NewGlobalRef(jobject lobj) {

	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

; 811  :         return functions->NewGlobalRef(this,lobj);

	mov	esi, esp
	mov	eax, DWORD PTR _lobj$[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+84]
	cmp	esi, esp
	call	__chkesp

; 812  :     }

	pop	edi
	pop	esi
	pop	ebx
	add	esp, 68					; 00000044H
	cmp	ebp, esp
	call	__chkesp
	mov	esp, ebp
	pop	ebp
	ret	4
?NewGlobalRef@JNIEnv_@@QAEPAV_jobject@@PAV2@@Z ENDP	; JNIEnv_::NewGlobalRef
_TEXT	ENDS
;	COMDAT ?GetMethodID@JNIEnv_@@QAEPAU_jmethodID@@PAV_jclass@@PBD1@Z
_TEXT	SEGMENT
_this$ = -4
_clazz$ = 8
_name$ = 12
_sig$ = 16
?GetMethodID@JNIEnv_@@QAEPAU_jmethodID@@PAV_jclass@@PBD1@Z PROC NEAR ; JNIEnv_::GetMethodID, COMDAT

; 859  :                           const char *sig) {

	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

; 860  :         return functions->GetMethodID(this,clazz,name,sig);

	mov	esi, esp
	mov	eax, DWORD PTR _sig$[ebp]
	push	eax
	mov	ecx, DWORD PTR _name$[ebp]
	push	ecx
	mov	edx, DWORD PTR _clazz$[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+132]
	cmp	esi, esp
	call	__chkesp

; 861  :     }

	pop	edi
	pop	esi
	pop	ebx
	add	esp, 68					; 00000044H
	cmp	ebp, esp
	call	__chkesp
	mov	esp, ebp
	pop	ebp
	ret	12					; 0000000cH
?GetMethodID@JNIEnv_@@QAEPAU_jmethodID@@PAV_jclass@@PBD1@Z ENDP ; JNIEnv_::GetMethodID
_TEXT	ENDS
;	COMDAT ?GetFieldID@JNIEnv_@@QAEPAU_jfieldID@@PAV_jclass@@PBD1@Z
_TEXT	SEGMENT
_clazz$ = 8
_name$ = 12
_sig$ = 16
_this$ = -4
?GetFieldID@JNIEnv_@@QAEPAU_jfieldID@@PAV_jclass@@PBD1@Z PROC NEAR ; JNIEnv_::GetFieldID, COMDAT

; 1244 :                         const char *sig) {

	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

; 1245 :         return functions->GetFieldID(this,clazz,name,sig);

	mov	esi, esp
	mov	eax, DWORD PTR _sig$[ebp]
	push	eax
	mov	ecx, DWORD PTR _name$[ebp]
	push	ecx
	mov	edx, DWORD PTR _clazz$[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+376]
	cmp	esi, esp
	call	__chkesp

; 1246 :     }

	pop	edi
	pop	esi
	pop	ebx
	add	esp, 68					; 00000044H
	cmp	ebp, esp
	call	__chkesp
	mov	esp, ebp
	pop	ebp
	ret	12					; 0000000cH
?GetFieldID@JNIEnv_@@QAEPAU_jfieldID@@PAV_jclass@@PBD1@Z ENDP ; JNIEnv_::GetFieldID
_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 ?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 ?NewStringUTF@JNIEnv_@@QAEPAV_jstring@@PBD@Z
_TEXT	SEGMENT
_this$ = -4
_utf$ = 8
?NewStringUTF@JNIEnv_@@QAEPAV_jstring@@PBD@Z PROC NEAR	; JNIEnv_::NewStringUTF, COMDAT

; 1576 :     jstring NewStringUTF(const char *utf) {

	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

; 1577 :         return functions->NewStringUTF(this,utf);

	mov	esi, esp
	mov	eax, DWORD PTR _utf$[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+668]
	cmp	esi, esp
	call	__chkesp

; 1578 :     }

	pop	edi
	pop	esi
	pop	ebx
	add	esp, 68					; 00000044H
	cmp	ebp, esp
	call	__chkesp
	mov	esp, ebp
	pop	ebp
	ret	4
?NewStringUTF@JNIEnv_@@QAEPAV_jstring@@PBD@Z ENDP	; JNIEnv_::NewStringUTF
_TEXT	ENDS
;	COMDAT ?GetStringUTFChars@JNIEnv_@@QAEPBDPAV_jstring@@PAE@Z
_TEXT	SEGMENT
_this$ = -4
_str$ = 8
_isCopy$ = 12
?GetStringUTFChars@JNIEnv_@@QAEPBDPAV_jstring@@PAE@Z PROC NEAR ; JNIEnv_::GetStringUTFChars, COMDAT

; 1582 :     const char* GetStringUTFChars(jstring str, 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

; 1583 :         return functions->GetStringUTFChars(this,str,isCopy);

	mov	esi, esp
	mov	eax, DWORD PTR _isCopy$[ebp]
	push	eax
	mov	ecx, DWORD PTR _str$[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+676]
	cmp	esi, esp
	call	__chkesp

; 1584 :     }

	pop	edi
	pop	esi
	pop	ebx
	add	esp, 68					; 00000044H
	cmp	ebp, esp
	call	__chkesp
	mov	esp, ebp
	pop	ebp
	ret	8
?GetStringUTFChars@JNIEnv_@@QAEPBDPAV_jstring@@PAE@Z ENDP ; JNIEnv_::GetStringUTFChars
_TEXT	ENDS
;	COMDAT ?ReleaseStringUTFChars@JNIEnv_@@QAEXPAV_jstring@@PBD@Z
_TEXT	SEGMENT
_this$ = -4
_str$ = 8
_chars$ = 12
?ReleaseStringUTFChars@JNIEnv_@@QAEXPAV_jstring@@PBD@Z PROC NEAR ; JNIEnv_::ReleaseStringUTFChars, COMDAT

; 1585 :     void ReleaseStringUTFChars(jstring str, const char* chars) {

	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

; 1586 :         functions->ReleaseStringUTFChars(this,str,chars);

	mov	esi, esp
	mov	eax, DWORD PTR _chars$[ebp]
	push	eax
	mov	ecx, DWORD PTR _str$[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+680]
	cmp	esi, esp
	call	__chkesp

; 1587 :     }

	pop	edi
	pop	esi
	pop	ebx
	add	esp, 68					; 00000044H
	cmp	ebp, esp
	call	__chkesp
	mov	esp, ebp
	pop	ebp
	ret	8
?ReleaseStringUTFChars@JNIEnv_@@QAEXPAV_jstring@@PBD@Z ENDP ; JNIEnv_::ReleaseStringUTFChars
_TEXT	ENDS
END
