; Listing generated by Microsoft (R) Optimizing Compiler Version 15.00.30729.01 

	TITLE	d:\# METIN2\work in progress\source client\Client\EterBase\error.cpp
	.686P
	.XMM
	include listing.inc
	.model	flat

INCLUDELIB LIBCMT
INCLUDELIB OLDNAMES

PUBLIC	??_C@_0P@GHFPNOJB@bad?5allocation?$AA@		; `string'
PUBLIC	?fException@@3PAU_iobuf@@A			; fException
PUBLIC	?_Value@?$_Is_swap_move@U_Swap_move_tag@std@@@std@@2_NB ; std::_Is_swap_move<std::_Swap_move_tag>::_Value
PUBLIC	?collate@?$_Locbase@H@std@@2HB			; std::_Locbase<int>::collate
PUBLIC	?ctype@?$_Locbase@H@std@@2HB			; std::_Locbase<int>::ctype
PUBLIC	?monetary@?$_Locbase@H@std@@2HB			; std::_Locbase<int>::monetary
PUBLIC	?numeric@?$_Locbase@H@std@@2HB			; std::_Locbase<int>::numeric
PUBLIC	?time@?$_Locbase@H@std@@2HB			; std::_Locbase<int>::time
PUBLIC	?messages@?$_Locbase@H@std@@2HB			; std::_Locbase<int>::messages
PUBLIC	?all@?$_Locbase@H@std@@2HB			; std::_Locbase<int>::all
PUBLIC	?none@?$_Locbase@H@std@@2HB			; std::_Locbase<int>::none
PUBLIC	?table_size@?$ctype@D@std@@2IB			; std::ctype<char>::table_size
PUBLIC	?skipws@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::skipws
PUBLIC	?unitbuf@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::unitbuf
PUBLIC	?uppercase@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::uppercase
PUBLIC	?showbase@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::showbase
PUBLIC	?showpoint@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::showpoint
PUBLIC	?showpos@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::showpos
PUBLIC	?left@?$_Iosb@H@std@@2W4_Fmtflags@12@B		; std::_Iosb<int>::left
PUBLIC	?right@?$_Iosb@H@std@@2W4_Fmtflags@12@B		; std::_Iosb<int>::right
PUBLIC	?internal@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::internal
PUBLIC	?dec@?$_Iosb@H@std@@2W4_Fmtflags@12@B		; std::_Iosb<int>::dec
PUBLIC	?oct@?$_Iosb@H@std@@2W4_Fmtflags@12@B		; std::_Iosb<int>::oct
PUBLIC	?hex@?$_Iosb@H@std@@2W4_Fmtflags@12@B		; std::_Iosb<int>::hex
PUBLIC	?scientific@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::scientific
PUBLIC	?fixed@?$_Iosb@H@std@@2W4_Fmtflags@12@B		; std::_Iosb<int>::fixed
PUBLIC	?hexfloat@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::hexfloat
PUBLIC	?boolalpha@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::boolalpha
PUBLIC	?_Stdio@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::_Stdio
PUBLIC	?adjustfield@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::adjustfield
PUBLIC	?basefield@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::basefield
PUBLIC	?floatfield@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::floatfield
PUBLIC	?goodbit@?$_Iosb@H@std@@2W4_Iostate@12@B	; std::_Iosb<int>::goodbit
PUBLIC	?eofbit@?$_Iosb@H@std@@2W4_Iostate@12@B		; std::_Iosb<int>::eofbit
PUBLIC	?failbit@?$_Iosb@H@std@@2W4_Iostate@12@B	; std::_Iosb<int>::failbit
PUBLIC	?badbit@?$_Iosb@H@std@@2W4_Iostate@12@B		; std::_Iosb<int>::badbit
PUBLIC	?_Hardfail@?$_Iosb@H@std@@2W4_Iostate@12@B	; std::_Iosb<int>::_Hardfail
PUBLIC	?in@?$_Iosb@H@std@@2W4_Openmode@12@B		; std::_Iosb<int>::in
PUBLIC	?out@?$_Iosb@H@std@@2W4_Openmode@12@B		; std::_Iosb<int>::out
PUBLIC	?ate@?$_Iosb@H@std@@2W4_Openmode@12@B		; std::_Iosb<int>::ate
PUBLIC	?app@?$_Iosb@H@std@@2W4_Openmode@12@B		; std::_Iosb<int>::app
PUBLIC	?trunc@?$_Iosb@H@std@@2W4_Openmode@12@B		; std::_Iosb<int>::trunc
PUBLIC	?_Nocreate@?$_Iosb@H@std@@2W4_Openmode@12@B	; std::_Iosb<int>::_Nocreate
PUBLIC	?_Noreplace@?$_Iosb@H@std@@2W4_Openmode@12@B	; std::_Iosb<int>::_Noreplace
PUBLIC	?binary@?$_Iosb@H@std@@2W4_Openmode@12@B	; std::_Iosb<int>::binary
PUBLIC	?beg@?$_Iosb@H@std@@2W4_Seekdir@12@B		; std::_Iosb<int>::beg
PUBLIC	?cur@?$_Iosb@H@std@@2W4_Seekdir@12@B		; std::_Iosb<int>::cur
PUBLIC	?end@?$_Iosb@H@std@@2W4_Seekdir@12@B		; std::_Iosb<int>::end
PUBLIC	?value@?$integral_constant@_N$0A@@tr1@std@@2_NB	; std::tr1::integral_constant<bool,0>::value
PUBLIC	?value@?$integral_constant@_N$00@tr1@std@@2_NB	; std::tr1::integral_constant<bool,1>::value
_BSS	SEGMENT
?fException@@3PAU_iobuf@@A DD 01H DUP (?)		; fException
_BSS	ENDS
;	COMDAT ?value@?$integral_constant@_N$00@tr1@std@@2_NB
CONST	SEGMENT
?value@?$integral_constant@_N$00@tr1@std@@2_NB DB 01H	; std::tr1::integral_constant<bool,1>::value
CONST	ENDS
;	COMDAT ?value@?$integral_constant@_N$0A@@tr1@std@@2_NB
CONST	SEGMENT
?value@?$integral_constant@_N$0A@@tr1@std@@2_NB DB 00H	; std::tr1::integral_constant<bool,0>::value
CONST	ENDS
;	COMDAT ?end@?$_Iosb@H@std@@2W4_Seekdir@12@B
CONST	SEGMENT
?end@?$_Iosb@H@std@@2W4_Seekdir@12@B DD 02H		; std::_Iosb<int>::end
CONST	ENDS
;	COMDAT ?cur@?$_Iosb@H@std@@2W4_Seekdir@12@B
CONST	SEGMENT
?cur@?$_Iosb@H@std@@2W4_Seekdir@12@B DD 01H		; std::_Iosb<int>::cur
CONST	ENDS
;	COMDAT ?beg@?$_Iosb@H@std@@2W4_Seekdir@12@B
CONST	SEGMENT
?beg@?$_Iosb@H@std@@2W4_Seekdir@12@B DD 00H		; std::_Iosb<int>::beg
CONST	ENDS
;	COMDAT ?binary@?$_Iosb@H@std@@2W4_Openmode@12@B
CONST	SEGMENT
?binary@?$_Iosb@H@std@@2W4_Openmode@12@B DD 020H	; std::_Iosb<int>::binary
CONST	ENDS
;	COMDAT ?_Noreplace@?$_Iosb@H@std@@2W4_Openmode@12@B
CONST	SEGMENT
?_Noreplace@?$_Iosb@H@std@@2W4_Openmode@12@B DD 080H	; std::_Iosb<int>::_Noreplace
CONST	ENDS
;	COMDAT ?_Nocreate@?$_Iosb@H@std@@2W4_Openmode@12@B
CONST	SEGMENT
?_Nocreate@?$_Iosb@H@std@@2W4_Openmode@12@B DD 040H	; std::_Iosb<int>::_Nocreate
CONST	ENDS
;	COMDAT ?trunc@?$_Iosb@H@std@@2W4_Openmode@12@B
CONST	SEGMENT
?trunc@?$_Iosb@H@std@@2W4_Openmode@12@B DD 010H		; std::_Iosb<int>::trunc
CONST	ENDS
;	COMDAT ?app@?$_Iosb@H@std@@2W4_Openmode@12@B
CONST	SEGMENT
?app@?$_Iosb@H@std@@2W4_Openmode@12@B DD 08H		; std::_Iosb<int>::app
CONST	ENDS
;	COMDAT ?ate@?$_Iosb@H@std@@2W4_Openmode@12@B
CONST	SEGMENT
?ate@?$_Iosb@H@std@@2W4_Openmode@12@B DD 04H		; std::_Iosb<int>::ate
CONST	ENDS
;	COMDAT ?out@?$_Iosb@H@std@@2W4_Openmode@12@B
CONST	SEGMENT
?out@?$_Iosb@H@std@@2W4_Openmode@12@B DD 02H		; std::_Iosb<int>::out
CONST	ENDS
;	COMDAT ?in@?$_Iosb@H@std@@2W4_Openmode@12@B
CONST	SEGMENT
?in@?$_Iosb@H@std@@2W4_Openmode@12@B DD 01H		; std::_Iosb<int>::in
CONST	ENDS
;	COMDAT ?_Hardfail@?$_Iosb@H@std@@2W4_Iostate@12@B
CONST	SEGMENT
?_Hardfail@?$_Iosb@H@std@@2W4_Iostate@12@B DD 010H	; std::_Iosb<int>::_Hardfail
CONST	ENDS
;	COMDAT ?badbit@?$_Iosb@H@std@@2W4_Iostate@12@B
CONST	SEGMENT
?badbit@?$_Iosb@H@std@@2W4_Iostate@12@B DD 04H		; std::_Iosb<int>::badbit
CONST	ENDS
;	COMDAT ?failbit@?$_Iosb@H@std@@2W4_Iostate@12@B
CONST	SEGMENT
?failbit@?$_Iosb@H@std@@2W4_Iostate@12@B DD 02H		; std::_Iosb<int>::failbit
CONST	ENDS
;	COMDAT ?eofbit@?$_Iosb@H@std@@2W4_Iostate@12@B
CONST	SEGMENT
?eofbit@?$_Iosb@H@std@@2W4_Iostate@12@B DD 01H		; std::_Iosb<int>::eofbit
CONST	ENDS
;	COMDAT ?goodbit@?$_Iosb@H@std@@2W4_Iostate@12@B
CONST	SEGMENT
?goodbit@?$_Iosb@H@std@@2W4_Iostate@12@B DD 00H		; std::_Iosb<int>::goodbit
CONST	ENDS
;	COMDAT ?floatfield@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?floatfield@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 03000H	; std::_Iosb<int>::floatfield
CONST	ENDS
;	COMDAT ?basefield@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?basefield@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 0e00H	; std::_Iosb<int>::basefield
CONST	ENDS
;	COMDAT ?adjustfield@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?adjustfield@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 01c0H	; std::_Iosb<int>::adjustfield
CONST	ENDS
;	COMDAT ?_Stdio@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?_Stdio@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 08000H	; std::_Iosb<int>::_Stdio
CONST	ENDS
;	COMDAT ?boolalpha@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?boolalpha@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 04000H	; std::_Iosb<int>::boolalpha
CONST	ENDS
;	COMDAT ?hexfloat@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?hexfloat@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 03000H	; std::_Iosb<int>::hexfloat
CONST	ENDS
;	COMDAT ?fixed@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?fixed@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 02000H	; std::_Iosb<int>::fixed
CONST	ENDS
;	COMDAT ?scientific@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?scientific@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 01000H	; std::_Iosb<int>::scientific
CONST	ENDS
;	COMDAT ?hex@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?hex@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 0800H		; std::_Iosb<int>::hex
CONST	ENDS
;	COMDAT ?oct@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?oct@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 0400H		; std::_Iosb<int>::oct
CONST	ENDS
;	COMDAT ?dec@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?dec@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 0200H		; std::_Iosb<int>::dec
CONST	ENDS
;	COMDAT ?internal@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?internal@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 0100H	; std::_Iosb<int>::internal
CONST	ENDS
;	COMDAT ?right@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?right@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 080H		; std::_Iosb<int>::right
CONST	ENDS
;	COMDAT ?left@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?left@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 040H		; std::_Iosb<int>::left
CONST	ENDS
;	COMDAT ?showpos@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?showpos@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 020H	; std::_Iosb<int>::showpos
CONST	ENDS
;	COMDAT ?showpoint@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?showpoint@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 010H	; std::_Iosb<int>::showpoint
CONST	ENDS
;	COMDAT ?showbase@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?showbase@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 08H	; std::_Iosb<int>::showbase
CONST	ENDS
;	COMDAT ?uppercase@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?uppercase@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 04H	; std::_Iosb<int>::uppercase
CONST	ENDS
;	COMDAT ?unitbuf@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?unitbuf@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 02H	; std::_Iosb<int>::unitbuf
CONST	ENDS
;	COMDAT ?skipws@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?skipws@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 01H		; std::_Iosb<int>::skipws
CONST	ENDS
;	COMDAT ?table_size@?$ctype@D@std@@2IB
CONST	SEGMENT
?table_size@?$ctype@D@std@@2IB DD 0100H			; std::ctype<char>::table_size
CONST	ENDS
;	COMDAT ?none@?$_Locbase@H@std@@2HB
CONST	SEGMENT
?none@?$_Locbase@H@std@@2HB DD 00H			; std::_Locbase<int>::none
CONST	ENDS
;	COMDAT ?all@?$_Locbase@H@std@@2HB
CONST	SEGMENT
?all@?$_Locbase@H@std@@2HB DD 03fH			; std::_Locbase<int>::all
CONST	ENDS
;	COMDAT ?messages@?$_Locbase@H@std@@2HB
CONST	SEGMENT
?messages@?$_Locbase@H@std@@2HB DD 020H			; std::_Locbase<int>::messages
CONST	ENDS
;	COMDAT ?time@?$_Locbase@H@std@@2HB
CONST	SEGMENT
?time@?$_Locbase@H@std@@2HB DD 010H			; std::_Locbase<int>::time
CONST	ENDS
;	COMDAT ?numeric@?$_Locbase@H@std@@2HB
CONST	SEGMENT
?numeric@?$_Locbase@H@std@@2HB DD 08H			; std::_Locbase<int>::numeric
CONST	ENDS
;	COMDAT ?monetary@?$_Locbase@H@std@@2HB
CONST	SEGMENT
?monetary@?$_Locbase@H@std@@2HB DD 04H			; std::_Locbase<int>::monetary
CONST	ENDS
;	COMDAT ?ctype@?$_Locbase@H@std@@2HB
CONST	SEGMENT
?ctype@?$_Locbase@H@std@@2HB DD 02H			; std::_Locbase<int>::ctype
CONST	ENDS
;	COMDAT ?collate@?$_Locbase@H@std@@2HB
CONST	SEGMENT
?collate@?$_Locbase@H@std@@2HB DD 01H			; std::_Locbase<int>::collate
CONST	ENDS
_DATA	SEGMENT
__bad_alloc_Message DD FLAT:??_C@_0P@GHFPNOJB@bad?5allocation?$AA@
_DATA	ENDS
;	COMDAT ??_C@_0P@GHFPNOJB@bad?5allocation?$AA@
CONST	SEGMENT
??_C@_0P@GHFPNOJB@bad?5allocation?$AA@ DB 'bad allocation', 00H ; `string'
CONST	ENDS
;	COMDAT ?_Value@?$_Is_swap_move@U_Swap_move_tag@std@@@std@@2_NB
CONST	SEGMENT
?_Value@?$_Is_swap_move@U_Swap_move_tag@std@@@std@@2_NB DB 01H ; std::_Is_swap_move<std::_Swap_move_tag>::_Value
CONST	ENDS
EXTRN	__ctime64:PROC
; Function compile flags: /Ogtpy
; File c:\program files (x86)\microsoft visual studio 9.0\vc\include\time.inl
;	COMDAT _ctime
_TEXT	SEGMENT
_ctime	PROC						; COMDAT
; __Time$ = eax

; 90   : #pragma warning( push )
; 91   : #pragma warning( disable : 4996 )
; 92   :     return _ctime64(_Time);

  00000	50		 push	 eax
  00001	e8 00 00 00 00	 call	 __ctime64
  00006	83 c4 04	 add	 esp, 4

; 93   : #pragma warning( pop )
; 94   : }

  00009	c3		 ret	 0
_ctime	ENDP
_TEXT	ENDS
PUBLIC	??_C@_02DKCKIIND@?$CFs?$AA@			; `string'
PUBLIC	?EnumerateLoadedModulesProc@@YGHPBDKKPAX@Z	; EnumerateLoadedModulesProc
EXTRN	_fprintf:PROC
;	COMDAT ??_C@_02DKCKIIND@?$CFs?$AA@
; File d:\# metin2\work in progress\source client\client\eterbase\error.cpp
CONST	SEGMENT
??_C@_02DKCKIIND@?$CFs?$AA@ DB '%s', 00H		; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?EnumerateLoadedModulesProc@@YGHPBDKKPAX@Z
_TEXT	SEGMENT
_ModuleName$ = 8					; size = 4
_ModuleBase$ = 12					; size = 4
_ModuleSize$ = 16					; size = 4
_UserContext$ = 20					; size = 4
?EnumerateLoadedModulesProc@@YGHPBDKKPAX@Z PROC		; EnumerateLoadedModulesProc, COMDAT

; 30   : 	DWORD offset = *((DWORD*)UserContext);

  00000	8b 44 24 10	 mov	 eax, DWORD PTR _UserContext$[esp-4]
  00004	8b 00		 mov	 eax, DWORD PTR [eax]

; 31   : 	
; 32   : 	if (offset >= ModuleBase && offset <= ModuleBase + ModuleSize)

  00006	8b 4c 24 08	 mov	 ecx, DWORD PTR _ModuleBase$[esp-4]
  0000a	3b c1		 cmp	 eax, ecx
  0000c	72 28		 jb	 SHORT $LN2@EnumerateL
  0000e	8b 54 24 0c	 mov	 edx, DWORD PTR _ModuleSize$[esp-4]
  00012	03 ca		 add	 ecx, edx
  00014	3b c1		 cmp	 eax, ecx
  00016	77 1e		 ja	 SHORT $LN2@EnumerateL

; 33   : 	{
; 34   : 		fprintf(fException, "%s", ModuleName);

  00018	8b 44 24 04	 mov	 eax, DWORD PTR _ModuleName$[esp-4]
  0001c	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?fException@@3PAU_iobuf@@A ; fException
  00022	50		 push	 eax
  00023	68 00 00 00 00	 push	 OFFSET ??_C@_02DKCKIIND@?$CFs?$AA@
  00028	51		 push	 ecx
  00029	e8 00 00 00 00	 call	 _fprintf
  0002e	83 c4 0c	 add	 esp, 12			; 0000000cH

; 35   : 		//__idx += sprintf(__msg+__idx, "%s", ModuleName);
; 36   : 		return FALSE;

  00031	33 c0		 xor	 eax, eax

; 40   : }

  00033	c2 10 00	 ret	 16			; 00000010H
$LN2@EnumerateL:

; 37   : 	}
; 38   : 	else
; 39   : 		return TRUE;

  00036	b8 01 00 00 00	 mov	 eax, 1

; 40   : }

  0003b	c2 10 00	 ret	 16			; 00000010H
?EnumerateLoadedModulesProc@@YGHPBDKKPAX@Z ENDP		; EnumerateLoadedModulesProc
_TEXT	ENDS
PUBLIC	??_C@_0N@KMPLBGID@errorlog?4exe?$AA@		; `string'
PUBLIC	??_C@_07IIGIJDEL@0x?$CF08x?7?$AA@		; `string'
PUBLIC	??_C@_0BJ@PBNLKJKC@ebp?3?50x?$CF08x?7esp?3?50x?$CF08x?6?$AA@ ; `string'
PUBLIC	??_C@_0BJ@DIBGGCDL@esi?3?50x?$CF08x?7edi?3?50x?$CF08x?6?$AA@ ; `string'
PUBLIC	??_C@_0BJ@LCAEGKJF@ecx?3?50x?$CF08x?7edx?3?50x?$CF08x?6?$AA@ ; `string'
PUBLIC	??_C@_0BJ@IEACADHK@eax?3?50x?$CF08x?7ebx?3?50x?$CF08x?6?$AA@ ; `string'
PUBLIC	??_C@_0BI@KGPMOIII@Exception?5Type?3?50x?$CF08x?6?$AA@ ; `string'
PUBLIC	??_C@_01EEMJAFIK@?6?$AA@			; `string'
PUBLIC	??_C@_0BJ@GCEEGBIB@Time?5Stamp?3?50x?$CF08x?5?9?5?$CFs?6?$AA@ ; `string'
PUBLIC	??_C@_0BB@MMHGDGEH@Module?5Name?3?5?$CFs?6?$AA@	; `string'
PUBLIC	??_C@_0N@FNIPCMMK@ErrorLog?4txt?$AA@		; `string'
PUBLIC	??_C@_02BKFDOEMK@wt?$AA@			; `string'
PUBLIC	__$ArrayPad$
PUBLIC	?EterExceptionFilter@@YGJPAU_EXCEPTION_POINTERS@@@Z ; EterExceptionFilter
EXTRN	__imp__WinExec@8:PROC
EXTRN	_fclose:PROC
EXTRN	_fflush:PROC
EXTRN	__imp__StackWalk@36:PROC
EXTRN	__imp__EnumerateLoadedModules@12:PROC
EXTRN	__imp__GetTimestampForLoadedLibrary@4:PROC
EXTRN	__imp__GetModuleFileNameA@12:PROC
EXTRN	__imp__GetModuleHandleA@4:PROC
EXTRN	_fopen:PROC
EXTRN	__imp__GetCurrentThread@0:PROC
EXTRN	__imp__GetCurrentProcess@0:PROC
EXTRN	___security_cookie:DWORD
EXTRN	@__security_check_cookie@4:PROC
EXTRN	_memset:PROC
;	COMDAT ??_C@_0N@KMPLBGID@errorlog?4exe?$AA@
; File c:\program files (x86)\microsoft visual studio 9.0\vc\include\time.inl
CONST	SEGMENT
??_C@_0N@KMPLBGID@errorlog?4exe?$AA@ DB 'errorlog.exe', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_07IIGIJDEL@0x?$CF08x?7?$AA@
CONST	SEGMENT
??_C@_07IIGIJDEL@0x?$CF08x?7?$AA@ DB '0x%08x', 09H, 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_0BJ@PBNLKJKC@ebp?3?50x?$CF08x?7esp?3?50x?$CF08x?6?$AA@
CONST	SEGMENT
??_C@_0BJ@PBNLKJKC@ebp?3?50x?$CF08x?7esp?3?50x?$CF08x?6?$AA@ DB 'ebp: 0x%'
	DB	'08x', 09H, 'esp: 0x%08x', 0aH, 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_0BJ@DIBGGCDL@esi?3?50x?$CF08x?7edi?3?50x?$CF08x?6?$AA@
CONST	SEGMENT
??_C@_0BJ@DIBGGCDL@esi?3?50x?$CF08x?7edi?3?50x?$CF08x?6?$AA@ DB 'esi: 0x%'
	DB	'08x', 09H, 'edi: 0x%08x', 0aH, 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_0BJ@LCAEGKJF@ecx?3?50x?$CF08x?7edx?3?50x?$CF08x?6?$AA@
CONST	SEGMENT
??_C@_0BJ@LCAEGKJF@ecx?3?50x?$CF08x?7edx?3?50x?$CF08x?6?$AA@ DB 'ecx: 0x%'
	DB	'08x', 09H, 'edx: 0x%08x', 0aH, 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_0BJ@IEACADHK@eax?3?50x?$CF08x?7ebx?3?50x?$CF08x?6?$AA@
CONST	SEGMENT
??_C@_0BJ@IEACADHK@eax?3?50x?$CF08x?7ebx?3?50x?$CF08x?6?$AA@ DB 'eax: 0x%'
	DB	'08x', 09H, 'ebx: 0x%08x', 0aH, 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_0BI@KGPMOIII@Exception?5Type?3?50x?$CF08x?6?$AA@
CONST	SEGMENT
??_C@_0BI@KGPMOIII@Exception?5Type?3?50x?$CF08x?6?$AA@ DB 'Exception Type'
	DB	': 0x%08x', 0aH, 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_01EEMJAFIK@?6?$AA@
CONST	SEGMENT
??_C@_01EEMJAFIK@?6?$AA@ DB 0aH, 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_0BJ@GCEEGBIB@Time?5Stamp?3?50x?$CF08x?5?9?5?$CFs?6?$AA@
CONST	SEGMENT
??_C@_0BJ@GCEEGBIB@Time?5Stamp?3?50x?$CF08x?5?9?5?$CFs?6?$AA@ DB 'Time St'
	DB	'amp: 0x%08x - %s', 0aH, 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_0BB@MMHGDGEH@Module?5Name?3?5?$CFs?6?$AA@
CONST	SEGMENT
??_C@_0BB@MMHGDGEH@Module?5Name?3?5?$CFs?6?$AA@ DB 'Module Name: %s', 0aH
	DB	00H						; `string'
CONST	ENDS
;	COMDAT ??_C@_0N@FNIPCMMK@ErrorLog?4txt?$AA@
CONST	SEGMENT
??_C@_0N@FNIPCMMK@ErrorLog?4txt?$AA@ DB 'ErrorLog.txt', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_02BKFDOEMK@wt?$AA@
CONST	SEGMENT
??_C@_02BKFDOEMK@wt?$AA@ DB 'wt', 00H			; `string'
; Function compile flags: /Ogtpy
; File d:\# metin2\work in progress\source client\client\eterbase\error.cpp
CONST	ENDS
;	COMDAT ?EterExceptionFilter@@YGJPAU_EXCEPTION_POINTERS@@@Z
_TEXT	SEGMENT
_module_time$93447 = -436				; size = 8
_hThread$ = -428					; size = 4
_stackFrame$93459 = -424				; size = 164
_module_name$93446 = -260				; size = 256
__$ArrayPad$ = -4					; size = 4
_pExceptionInfo$ = 8					; size = 4
?EterExceptionFilter@@YGJPAU_EXCEPTION_POINTERS@@@Z PROC ; EterExceptionFilter, COMDAT

; 43   : {

  00000	81 ec b4 01 00
	00		 sub	 esp, 436		; 000001b4H
  00006	a1 00 00 00 00	 mov	 eax, DWORD PTR ___security_cookie
  0000b	33 c4		 xor	 eax, esp
  0000d	89 84 24 b0 01
	00 00		 mov	 DWORD PTR __$ArrayPad$[esp+436], eax
  00014	53		 push	 ebx
  00015	55		 push	 ebp
  00016	57		 push	 edi
  00017	8b bc 24 c4 01
	00 00		 mov	 edi, DWORD PTR _pExceptionInfo$[esp+444]

; 44   : 	HANDLE		hProcess	= GetCurrentProcess();

  0001e	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetCurrentProcess@0
  00024	8b d8		 mov	 ebx, eax

; 45   : 	HANDLE		hThread		= GetCurrentThread();

  00026	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetCurrentThread@0

; 46   : 	
; 47   : 	fException = fopen("ErrorLog.txt", "wt");

  0002c	68 00 00 00 00	 push	 OFFSET ??_C@_02BKFDOEMK@wt?$AA@
  00031	68 00 00 00 00	 push	 OFFSET ??_C@_0N@FNIPCMMK@ErrorLog?4txt?$AA@
  00036	89 44 24 1c	 mov	 DWORD PTR _hThread$[esp+456], eax
  0003a	e8 00 00 00 00	 call	 _fopen

; 48   : 	if (fException)

  0003f	33 ed		 xor	 ebp, ebp
  00041	83 c4 08	 add	 esp, 8
  00044	a3 00 00 00 00	 mov	 DWORD PTR ?fException@@3PAU_iobuf@@A, eax ; fException
  00049	3b c5		 cmp	 eax, ebp
  0004b	0f 84 35 02 00
	00		 je	 $LN13@EterExcept
  00051	56		 push	 esi

; 49   : 	{
; 50   : 		char module_name[256];
; 51   : 		time_t module_time;
; 52   : 		
; 53   : 		HMODULE hModule = GetModuleHandle(NULL);

  00052	55		 push	 ebp
  00053	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetModuleHandleA@4
  00059	8b f0		 mov	 esi, eax

; 54   : 		
; 55   : 		GetModuleFileName(hModule, module_name, sizeof(module_name));

  0005b	68 00 01 00 00	 push	 256			; 00000100H
  00060	8d 84 24 c4 00
	00 00		 lea	 eax, DWORD PTR _module_name$93446[esp+456]
  00067	50		 push	 eax
  00068	56		 push	 esi
  00069	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetModuleFileNameA@12

; 56   : 		module_time = (time_t)GetTimestampForLoadedLibrary(hModule);

  0006f	56		 push	 esi
  00070	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetTimestampForLoadedLibrary@4

; 57   : 		
; 58   : 		fprintf(fException, "Module Name: %s\n", module_name);

  00076	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?fException@@3PAU_iobuf@@A ; fException
  0007c	8d 8c 24 c0 00
	00 00		 lea	 ecx, DWORD PTR _module_name$93446[esp+452]
  00083	51		 push	 ecx
  00084	68 00 00 00 00	 push	 OFFSET ??_C@_0BB@MMHGDGEH@Module?5Name?3?5?$CFs?6?$AA@
  00089	52		 push	 edx
  0008a	89 44 24 1c	 mov	 DWORD PTR _module_time$93447[esp+464], eax
  0008e	89 6c 24 20	 mov	 DWORD PTR _module_time$93447[esp+468], ebp
  00092	e8 00 00 00 00	 call	 _fprintf

; 59   : 		fprintf(fException, "Time Stamp: 0x%08x - %s\n", module_time, ctime(&module_time));

  00097	8d 44 24 1c	 lea	 eax, DWORD PTR _module_time$93447[esp+464]
  0009b	50		 push	 eax
  0009c	e8 00 00 00 00	 call	 __ctime64
  000a1	8b 4c 24 24	 mov	 ecx, DWORD PTR _module_time$93447[esp+472]
  000a5	8b 54 24 20	 mov	 edx, DWORD PTR _module_time$93447[esp+468]
  000a9	50		 push	 eax
  000aa	a1 00 00 00 00	 mov	 eax, DWORD PTR ?fException@@3PAU_iobuf@@A ; fException
  000af	51		 push	 ecx
  000b0	52		 push	 edx
  000b1	68 00 00 00 00	 push	 OFFSET ??_C@_0BJ@GCEEGBIB@Time?5Stamp?3?50x?$CF08x?5?9?5?$CFs?6?$AA@
  000b6	50		 push	 eax
  000b7	e8 00 00 00 00	 call	 _fprintf

; 60   : 		fprintf(fException, "\n");

  000bc	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?fException@@3PAU_iobuf@@A ; fException
  000c2	68 00 00 00 00	 push	 OFFSET ??_C@_01EEMJAFIK@?6?$AA@
  000c7	51		 push	 ecx
  000c8	e8 00 00 00 00	 call	 _fprintf

; 61   : 		fprintf(fException, "Exception Type: 0x%08x\n", pExceptionInfo->ExceptionRecord->ExceptionCode);

  000cd	8b 17		 mov	 edx, DWORD PTR [edi]
  000cf	8b 02		 mov	 eax, DWORD PTR [edx]
  000d1	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?fException@@3PAU_iobuf@@A ; fException
  000d7	50		 push	 eax
  000d8	68 00 00 00 00	 push	 OFFSET ??_C@_0BI@KGPMOIII@Exception?5Type?3?50x?$CF08x?6?$AA@
  000dd	51		 push	 ecx
  000de	e8 00 00 00 00	 call	 _fprintf

; 62   : 		fprintf(fException, "\n");

  000e3	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?fException@@3PAU_iobuf@@A ; fException
  000e9	68 00 00 00 00	 push	 OFFSET ??_C@_01EEMJAFIK@?6?$AA@
  000ee	52		 push	 edx
  000ef	e8 00 00 00 00	 call	 _fprintf

; 63   : 
; 64   : 		/*
; 65   : 		{
; 66   : 			__idx+=sprintf(__msg+__idx,"Module Name: %s\n", module_name);
; 67   : 			__idx+=sprintf(__msg+__idx, "Time Stamp: 0x%08x - %s\n", module_time, ctime(&module_time));
; 68   : 			__idx+=sprintf(__msg+__idx, "\n");
; 69   : 			__idx+=sprintf(__msg+__idx, "Exception Type: 0x%08x\n", pExceptionInfo->ExceptionRecord->ExceptionCode);
; 70   : 			__idx+=sprintf(__msg+__idx, "\n");
; 71   : 		}
; 72   : 		*/
; 73   : 		
; 74   : 		CONTEXT&	context		= *pExceptionInfo->ContextRecord;

  000f4	8b 77 04	 mov	 esi, DWORD PTR [edi+4]

; 75   : 		
; 76   : 		fprintf(fException, "eax: 0x%08x\tebx: 0x%08x\n", context.Eax, context.Ebx);

  000f7	8b 86 a4 00 00
	00		 mov	 eax, DWORD PTR [esi+164]
  000fd	8b 8e b0 00 00
	00		 mov	 ecx, DWORD PTR [esi+176]
  00103	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?fException@@3PAU_iobuf@@A ; fException
  00109	83 c4 40	 add	 esp, 64			; 00000040H
  0010c	50		 push	 eax
  0010d	51		 push	 ecx
  0010e	68 00 00 00 00	 push	 OFFSET ??_C@_0BJ@IEACADHK@eax?3?50x?$CF08x?7ebx?3?50x?$CF08x?6?$AA@
  00113	52		 push	 edx
  00114	e8 00 00 00 00	 call	 _fprintf

; 77   : 		fprintf(fException, "ecx: 0x%08x\tedx: 0x%08x\n", context.Ecx, context.Edx);

  00119	8b 86 a8 00 00
	00		 mov	 eax, DWORD PTR [esi+168]
  0011f	8b 8e ac 00 00
	00		 mov	 ecx, DWORD PTR [esi+172]
  00125	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?fException@@3PAU_iobuf@@A ; fException
  0012b	50		 push	 eax
  0012c	51		 push	 ecx
  0012d	68 00 00 00 00	 push	 OFFSET ??_C@_0BJ@LCAEGKJF@ecx?3?50x?$CF08x?7edx?3?50x?$CF08x?6?$AA@
  00132	52		 push	 edx
  00133	e8 00 00 00 00	 call	 _fprintf

; 78   : 		fprintf(fException, "esi: 0x%08x\tedi: 0x%08x\n", context.Esi, context.Edi);

  00138	8b 86 9c 00 00
	00		 mov	 eax, DWORD PTR [esi+156]
  0013e	8b 8e a0 00 00
	00		 mov	 ecx, DWORD PTR [esi+160]
  00144	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?fException@@3PAU_iobuf@@A ; fException
  0014a	50		 push	 eax
  0014b	51		 push	 ecx
  0014c	68 00 00 00 00	 push	 OFFSET ??_C@_0BJ@DIBGGCDL@esi?3?50x?$CF08x?7edi?3?50x?$CF08x?6?$AA@
  00151	52		 push	 edx
  00152	e8 00 00 00 00	 call	 _fprintf

; 79   : 		fprintf(fException, "ebp: 0x%08x\tesp: 0x%08x\n", context.Ebp, context.Esp);

  00157	8b 86 c4 00 00
	00		 mov	 eax, DWORD PTR [esi+196]
  0015d	8b 8e b4 00 00
	00		 mov	 ecx, DWORD PTR [esi+180]
  00163	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?fException@@3PAU_iobuf@@A ; fException
  00169	50		 push	 eax
  0016a	51		 push	 ecx
  0016b	68 00 00 00 00	 push	 OFFSET ??_C@_0BJ@PBNLKJKC@ebp?3?50x?$CF08x?7esp?3?50x?$CF08x?6?$AA@
  00170	52		 push	 edx
  00171	e8 00 00 00 00	 call	 _fprintf
  00176	83 c4 40	 add	 esp, 64			; 00000040H

; 80   : 		fprintf(fException, "\n");

  00179	a1 00 00 00 00	 mov	 eax, DWORD PTR ?fException@@3PAU_iobuf@@A ; fException
  0017e	68 00 00 00 00	 push	 OFFSET ??_C@_01EEMJAFIK@?6?$AA@
  00183	50		 push	 eax
  00184	e8 00 00 00 00	 call	 _fprintf

; 81   : 		/*
; 82   : 		{
; 83   : 			__idx+=sprintf(__msg+__idx, "eax: 0x%08x\tebx: 0x%08x\n", context.Eax, context.Ebx);
; 84   : 			__idx+=sprintf(__msg+__idx, "ecx: 0x%08x\tedx: 0x%08x\n", context.Ecx, context.Edx);
; 85   : 			__idx+=sprintf(__msg+__idx, "esi: 0x%08x\tedi: 0x%08x\n", context.Esi, context.Edi);
; 86   : 			__idx+=sprintf(__msg+__idx, "ebp: 0x%08x\tesp: 0x%08x\n", context.Ebp, context.Esp);
; 87   : 			__idx+=sprintf(__msg+__idx, "\n");
; 88   : 		}
; 89   : 		*/
; 90   : 		
; 91   : 		STACKFRAME stackFrame = {0,};

  00189	68 a0 00 00 00	 push	 160			; 000000a0H
  0018e	8d 4c 24 2c	 lea	 ecx, DWORD PTR _stackFrame$93459[esp+468]
  00192	55		 push	 ebp
  00193	51		 push	 ecx
  00194	89 6c 24 30	 mov	 DWORD PTR _stackFrame$93459[esp+472], ebp
  00198	e8 00 00 00 00	 call	 _memset

; 92   : 		stackFrame.AddrPC.Offset	= context.Eip;

  0019d	8b 96 b8 00 00
	00		 mov	 edx, DWORD PTR [esi+184]

; 93   : 		stackFrame.AddrPC.Mode		= AddrModeFlat;
; 94   : 		stackFrame.AddrStack.Offset	= context.Esp;
; 95   : 		stackFrame.AddrStack.Mode	= AddrModeFlat;
; 96   : 		stackFrame.AddrFrame.Offset	= context.Ebp;
; 97   : 		stackFrame.AddrFrame.Mode	= AddrModeFlat;
; 98   : 		
; 99   : 		for (int i=0; i < 512 && stackFrame.AddrPC.Offset; ++i)

  001a3	8b 2d 00 00 00
	00		 mov	 ebp, DWORD PTR __imp__EnumerateLoadedModules@12
  001a9	b8 03 00 00 00	 mov	 eax, 3
  001ae	89 54 24 30	 mov	 DWORD PTR _stackFrame$93459[esp+472], edx
  001b2	89 44 24 38	 mov	 DWORD PTR _stackFrame$93459[esp+480], eax
  001b6	8b 8e c4 00 00
	00		 mov	 ecx, DWORD PTR [esi+196]
  001bc	89 4c 24 54	 mov	 DWORD PTR _stackFrame$93459[esp+508], ecx
  001c0	89 44 24 5c	 mov	 DWORD PTR _stackFrame$93459[esp+516], eax
  001c4	8b 96 b4 00 00
	00		 mov	 edx, DWORD PTR [esi+180]
  001ca	83 c4 14	 add	 esp, 20			; 00000014H
  001cd	89 54 24 34	 mov	 DWORD PTR _stackFrame$93459[esp+476], edx
  001d1	89 44 24 3c	 mov	 DWORD PTR _stackFrame$93459[esp+484], eax
  001d5	33 ff		 xor	 edi, edi
$LL14@EterExcept:
  001d7	83 7c 24 1c 00	 cmp	 DWORD PTR _stackFrame$93459[esp+452], 0
  001dc	74 65		 je	 SHORT $LN2@EterExcept

; 100  : 		{
; 101  : 			if (StackWalk(IMAGE_FILE_MACHINE_I386, hProcess, hThread, &stackFrame, &context, NULL, NULL, NULL, NULL) != FALSE)

  001de	8b 4c 24 18	 mov	 ecx, DWORD PTR _hThread$[esp+452]
  001e2	6a 00		 push	 0
  001e4	6a 00		 push	 0
  001e6	6a 00		 push	 0
  001e8	6a 00		 push	 0
  001ea	56		 push	 esi
  001eb	8d 44 24 30	 lea	 eax, DWORD PTR _stackFrame$93459[esp+472]
  001ef	50		 push	 eax
  001f0	51		 push	 ecx
  001f1	53		 push	 ebx
  001f2	68 4c 01 00 00	 push	 332			; 0000014cH
  001f7	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__StackWalk@36
  001fd	85 c0		 test	 eax, eax
  001ff	74 42		 je	 SHORT $LN2@EterExcept

; 102  : 			{
; 103  : 				fprintf(fException, "0x%08x\t", stackFrame.AddrPC.Offset);

  00201	8b 54 24 1c	 mov	 edx, DWORD PTR _stackFrame$93459[esp+452]
  00205	a1 00 00 00 00	 mov	 eax, DWORD PTR ?fException@@3PAU_iobuf@@A ; fException
  0020a	52		 push	 edx
  0020b	68 00 00 00 00	 push	 OFFSET ??_C@_07IIGIJDEL@0x?$CF08x?7?$AA@
  00210	50		 push	 eax
  00211	e8 00 00 00 00	 call	 _fprintf
  00216	83 c4 0c	 add	 esp, 12			; 0000000cH

; 104  : 				//__idx+=sprintf(__msg+__idx, "0x%08x\t", stackFrame.AddrPC.Offset);
; 105  : 				EnumerateLoadedModules(hProcess, (PENUMLOADED_MODULES_CALLBACK) EnumerateLoadedModulesProc, &stackFrame.AddrPC.Offset);

  00219	8d 4c 24 1c	 lea	 ecx, DWORD PTR _stackFrame$93459[esp+452]
  0021d	51		 push	 ecx
  0021e	68 00 00 00 00	 push	 OFFSET ?EnumerateLoadedModulesProc@@YGHPBDKKPAX@Z ; EnumerateLoadedModulesProc
  00223	53		 push	 ebx
  00224	ff d5		 call	 ebp

; 106  : 				fprintf(fException, "\n");

  00226	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?fException@@3PAU_iobuf@@A ; fException
  0022c	68 00 00 00 00	 push	 OFFSET ??_C@_01EEMJAFIK@?6?$AA@
  00231	52		 push	 edx
  00232	e8 00 00 00 00	 call	 _fprintf
  00237	47		 inc	 edi
  00238	83 c4 08	 add	 esp, 8
  0023b	81 ff 00 02 00
	00		 cmp	 edi, 512		; 00000200H
  00241	7c 94		 jl	 SHORT $LL14@EterExcept
$LN2@EterExcept:

; 107  : 
; 108  : 				//__idx+=sprintf(__msg+__idx,  "\n");
; 109  : 			}
; 110  : 			else
; 111  : 			{
; 112  : 				break;
; 113  : 			}
; 114  : 		} 
; 115  : 		
; 116  : 		fprintf(fException, "\n");

  00243	a1 00 00 00 00	 mov	 eax, DWORD PTR ?fException@@3PAU_iobuf@@A ; fException
  00248	68 00 00 00 00	 push	 OFFSET ??_C@_01EEMJAFIK@?6?$AA@
  0024d	50		 push	 eax
  0024e	e8 00 00 00 00	 call	 _fprintf

; 117  : 		//__idx+=sprintf(__msg+__idx, "\n");
; 118  : 		
; 119  : 		
; 120  : /*
; 121  : 		BYTE* stack = (BYTE*)(context.Esp);
; 122  : 		fprintf(fException, "stack %08x - %08x\n", context.Esp, context.Esp+1024);
; 123  : 		//__idx+=sprintf(__msg+__idx, "stack %08x - %08x\n", context.Esp, context.Esp+1024);
; 124  : 		
; 125  : 		for(i=0; i<16; ++i)
; 126  : 		{
; 127  : 			fprintf(fException, "%08X : ", context.Esp+i*16);
; 128  : 			//__idx+=sprintf(__msg+__idx, "%08X : ", context.Esp+i*16);
; 129  : 			for(int j=0; j<16; ++j)
; 130  : 			{
; 131  : 				fprintf(fException, "%02X ", stack[i*16+j]);
; 132  : 				//__idx+=sprintf(__msg+__idx, "%02X ", stack[i*16+j]);
; 133  : 			}
; 134  : 			fprintf(fException, "\n");
; 135  : 			//__idx+=sprintf(__msg+__idx, "\n");
; 136  : 		}
; 137  : 		fprintf(fException, "\n");
; 138  : 		//__idx+=sprintf(__msg+__idx, "\n");
; 139  : */
; 140  : 
; 141  : 		fflush(fException);

  00253	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?fException@@3PAU_iobuf@@A ; fException
  00259	51		 push	 ecx
  0025a	e8 00 00 00 00	 call	 _fflush

; 142  : 
; 143  : 		fclose(fException);

  0025f	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?fException@@3PAU_iobuf@@A ; fException
  00265	52		 push	 edx
  00266	e8 00 00 00 00	 call	 _fclose
  0026b	83 c4 10	 add	 esp, 16			; 00000010H

; 144  : 		fException = NULL;
; 145  : 		
; 146  : 		//WinExec()
; 147  : 		/*CreateProcess("cmd.exe",NULL,NULL,NULL,FALSE,
; 148  : 			CREATE_NEW_PROCESS_GROUP|DETACHED_PROCESS,NULL,NULL,NULL,NULL);
; 149  : 		MessageBox(NULL,"게임 실행에 치명적인 문제가 발생하였습니다.\n게임을 종료하고 에러 로그를 남깁니다.\n에러 로그를 서버에 보내시겠습니까?","에러 발생!",MB_YESNO);*/
; 150  : 
; 151  : 		/*
; 152  : 		__l.BeginCompressInBuffer(__msg,__idx,__cmsg);
; 153  : 		if (__l.Compress())
; 154  : 		{
; 155  : 			//fprintf(fException,"Compress printing\n");
; 156  : 			// send this to server
; 157  : 			SOCKET s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
; 158  : 			
; 159  : 			ioctlsocket(s,FIONBIO,0);
; 160  : 
; 161  : 			if (s==INVALID_SOCKET)
; 162  : 			{
; 163  : 				//fprintf(fException,"INVALID %X\n",WSAGetLastError());
; 164  : 			}
; 165  : 			
; 166  : 			sockaddr_in sa;
; 167  : 			sa.sin_family = AF_INET;
; 168  : 			sa.sin_port = htons(19294);
; 169  : 			sa.sin_addr.s_addr = inet_addr("147.46.127.42");
; 170  : 			if (connect(s,(sockaddr*)&sa,sizeof(sa)))
; 171  : 			{
; 172  : 				//fprintf(fException,"%X\n",WSAGetLastError());
; 173  : 			}
; 174  : 
; 175  : 			int total = 0;
; 176  : 			int ret=0;
; 177  : 			while(1)
; 178  : 			{
; 179  : 				//ret = send(s,(char*)__msg+total,__idx-total,0);
; 180  : 				ret = send(s,(char*)__l.GetBuffer()+total,__l.GetSize()-total,0);
; 181  : 				//fprintf(fException,"send %d\n",ret);
; 182  : 				if (ret<0)
; 183  : 				{
; 184  : 					//fprintf(fException,"%X\n",WSAGetLastError());
; 185  : 					break;
; 186  : 				}
; 187  : 				total+=ret;
; 188  : 				if (total>=__idx)
; 189  : 				//if (total>=__l.GetSize())
; 190  : 					break;
; 191  : 			}
; 192  : 			//__l.GetBuffer();
; 193  : 			Sleep(500);
; 194  : 			closesocket(s);
; 195  : 		}*/
; 196  : 
; 197  : 		WinExec("errorlog.exe",SW_SHOW);

  0026e	6a 05		 push	 5
  00270	68 00 00 00 00	 push	 OFFSET ??_C@_0N@KMPLBGID@errorlog?4exe?$AA@
  00275	c7 05 00 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?fException@@3PAU_iobuf@@A, 0 ; fException
  0027f	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__WinExec@8
  00285	5e		 pop	 esi
$LN13@EterExcept:

; 198  : 		
; 199  : 		
; 200  : 	}
; 201  : 	
; 202  : 	return EXCEPTION_EXECUTE_HANDLER;
; 203  : }

  00286	8b 8c 24 bc 01
	00 00		 mov	 ecx, DWORD PTR __$ArrayPad$[esp+448]
  0028d	5f		 pop	 edi
  0028e	5d		 pop	 ebp
  0028f	5b		 pop	 ebx
  00290	33 cc		 xor	 ecx, esp
  00292	b8 01 00 00 00	 mov	 eax, 1
  00297	e8 00 00 00 00	 call	 @__security_check_cookie@4
  0029c	81 c4 b4 01 00
	00		 add	 esp, 436		; 000001b4H
  002a2	c2 04 00	 ret	 4
?EterExceptionFilter@@YGJPAU_EXCEPTION_POINTERS@@@Z ENDP ; EterExceptionFilter
_TEXT	ENDS
PUBLIC	?SetEterExceptionHandler@@YAXXZ			; SetEterExceptionHandler
EXTRN	__imp__SetUnhandledExceptionFilter@4:PROC
; Function compile flags: /Ogtpy
;	COMDAT ?SetEterExceptionHandler@@YAXXZ
_TEXT	SEGMENT
?SetEterExceptionHandler@@YAXXZ PROC			; SetEterExceptionHandler, COMDAT

; 207  : 	SetUnhandledExceptionFilter(EterExceptionFilter);

  00000	68 00 00 00 00	 push	 OFFSET ?EterExceptionFilter@@YGJPAU_EXCEPTION_POINTERS@@@Z ; EterExceptionFilter
  00005	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__SetUnhandledExceptionFilter@4

; 208  : }

  0000b	c3		 ret	 0
?SetEterExceptionHandler@@YAXXZ ENDP			; SetEterExceptionHandler
_TEXT	ENDS
END
