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

	TITLE	d:\Source Code\GZGM\gzhook.cpp
	.686P
	.XMM
	include listing.inc
	.model	flat

INCLUDELIB LIBCMTD
INCLUDELIB OLDNAMES

PUBLIC	??_C@_0P@GHFPNOJB@bad?5allocation?$AA@		; `string'
PUBLIC	?Speed_Sync_Soldier@@3PAVnc_SoldierGameObj@@A	; Speed_Sync_Soldier
PUBLIC	?Speed_Sync_Speed@@3MA				; Speed_Sync_Speed
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	?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
_BSS	SEGMENT
?Speed_Sync_Soldier@@3PAVnc_SoldierGameObj@@A DD 01H DUP (?) ; Speed_Sync_Soldier
?Speed_Sync_Speed@@3MA DD 01H DUP (?)			; Speed_Sync_Speed
_BSS	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 ?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
EXTRN	__localtime64:PROC
; Function compile flags: /Ogtpy
; File c:\program files\microsoft visual studio 8\vc\include\time.inl
;	COMDAT _localtime
_TEXT	SEGMENT
_localtime PROC						; COMDAT
; __Time$ = eax

; 116  : #pragma warning( push )
; 117  : #pragma warning( disable : 4996 )
; 118  :     return _localtime64(_Time);

	push	eax
	call	__localtime64
	add	esp, 4

; 119  : #pragma warning( pop )
; 120  : }

	ret	0
_localtime ENDP
_TEXT	ENDS
EXTRN	__time64:PROC
; Function compile flags: /Ogtpy
;	COMDAT _time
_TEXT	SEGMENT
_time	PROC						; COMDAT
; __Time$ = eax

; 135  :     return _time64(_Time);

	push	eax
	call	__time64
	add	esp, 4

; 136  : }

	ret	0
_time	ENDP
_TEXT	ENDS
PUBLIC	??_7bad_alloc@std@@6B@				; std::bad_alloc::`vftable'
PUBLIC	??0bad_alloc@std@@QAE@PBD@Z			; std::bad_alloc::bad_alloc
PUBLIC	??_R4bad_alloc@std@@6B@				; std::bad_alloc::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVbad_alloc@std@@@8			; std::bad_alloc `RTTI Type Descriptor'
PUBLIC	??_R3bad_alloc@std@@8				; std::bad_alloc::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2bad_alloc@std@@8				; std::bad_alloc::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@bad_alloc@std@@8			; std::bad_alloc::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	??_R1A@?0A@EA@exception@std@@8			; std::exception::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	??_R0?AVexception@std@@@8			; std::exception `RTTI Type Descriptor'
PUBLIC	??_R3exception@std@@8				; std::exception::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2exception@std@@8				; std::exception::`RTTI Base Class Array'
EXTRN	??0exception@std@@QAE@ABQBD@Z:PROC		; std::exception::exception
EXTRN	??_7type_info@@6B@:QWORD			; type_info::`vftable'
EXTRN	??_Ebad_alloc@std@@UAEPAXI@Z:PROC		; std::bad_alloc::`vector deleting destructor'
EXTRN	?what@exception@std@@UBEPBDXZ:PROC		; std::exception::what
;	COMDAT ??_R2exception@std@@8
; File c:\program files\microsoft visual studio 8\vc\include\exception
rdata$r	SEGMENT
??_R2exception@std@@8 DD FLAT:??_R1A@?0A@EA@exception@std@@8 ; std::exception::`RTTI Base Class Array'
rdata$r	ENDS
;	COMDAT ??_R3exception@std@@8
rdata$r	SEGMENT
??_R3exception@std@@8 DD 00H				; std::exception::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	01H
	DD	FLAT:??_R2exception@std@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVexception@std@@@8
_DATA	SEGMENT
??_R0?AVexception@std@@@8 DD FLAT:??_7type_info@@6B@	; std::exception `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVexception@std@@', 00H
_DATA	ENDS
;	COMDAT ??_R1A@?0A@EA@exception@std@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@exception@std@@8 DD FLAT:??_R0?AVexception@std@@@8 ; std::exception::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	00H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3exception@std@@8
rdata$r	ENDS
;	COMDAT ??_R1A@?0A@EA@bad_alloc@std@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@bad_alloc@std@@8 DD FLAT:??_R0?AVbad_alloc@std@@@8 ; std::bad_alloc::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3bad_alloc@std@@8
rdata$r	ENDS
;	COMDAT ??_R2bad_alloc@std@@8
rdata$r	SEGMENT
??_R2bad_alloc@std@@8 DD FLAT:??_R1A@?0A@EA@bad_alloc@std@@8 ; std::bad_alloc::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@exception@std@@8
rdata$r	ENDS
;	COMDAT ??_R3bad_alloc@std@@8
rdata$r	SEGMENT
??_R3bad_alloc@std@@8 DD 00H				; std::bad_alloc::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2bad_alloc@std@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVbad_alloc@std@@@8
_DATA	SEGMENT
??_R0?AVbad_alloc@std@@@8 DD FLAT:??_7type_info@@6B@	; std::bad_alloc `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVbad_alloc@std@@', 00H
_DATA	ENDS
;	COMDAT ??_R4bad_alloc@std@@6B@
rdata$r	SEGMENT
??_R4bad_alloc@std@@6B@ DD 00H				; std::bad_alloc::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVbad_alloc@std@@@8
	DD	FLAT:??_R3bad_alloc@std@@8
rdata$r	ENDS
;	COMDAT ??_7bad_alloc@std@@6B@
CONST	SEGMENT
??_7bad_alloc@std@@6B@ DD FLAT:??_R4bad_alloc@std@@6B@	; std::bad_alloc::`vftable'
	DD	FLAT:??_Ebad_alloc@std@@UAEPAXI@Z
	DD	FLAT:?what@exception@std@@UBEPBDXZ
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0bad_alloc@std@@QAE@PBD@Z
_TEXT	SEGMENT
__Message$ = 8						; size = 4
??0bad_alloc@std@@QAE@PBD@Z PROC			; std::bad_alloc::bad_alloc, COMDAT
; _this$ = ecx

; 371  : 		{	// construct from message string

	push	esi
	lea	eax, DWORD PTR __Message$[esp]
	push	eax
	mov	esi, ecx
	call	??0exception@std@@QAE@ABQBD@Z		; std::exception::exception
	mov	DWORD PTR [esi], OFFSET ??_7bad_alloc@std@@6B@

; 372  : 		}

	mov	eax, esi
	pop	esi
	ret	4
??0bad_alloc@std@@QAE@PBD@Z ENDP			; std::bad_alloc::bad_alloc
_TEXT	ENDS
PUBLIC	??1bad_alloc@std@@UAE@XZ			; std::bad_alloc::~bad_alloc
EXTRN	??1exception@std@@UAE@XZ:PROC			; std::exception::~exception
; Function compile flags: /Ogtpy
;	COMDAT ??1bad_alloc@std@@UAE@XZ
_TEXT	SEGMENT
??1bad_alloc@std@@UAE@XZ PROC				; std::bad_alloc::~bad_alloc, COMDAT
; _this$ = ecx

; 380  : 		{	// destroy the object

	mov	DWORD PTR [ecx], OFFSET ??_7bad_alloc@std@@6B@

; 381  : 		}

	jmp	??1exception@std@@UAE@XZ		; std::exception::~exception
??1bad_alloc@std@@UAE@XZ ENDP				; std::bad_alloc::~bad_alloc
_TEXT	ENDS
EXTRN	??3@YAXPAX@Z:PROC				; operator delete
; Function compile flags: /Ogtpy
;	COMDAT ??_Gbad_alloc@std@@UAEPAXI@Z
_TEXT	SEGMENT
___flags$ = 8						; size = 4
??_Gbad_alloc@std@@UAEPAXI@Z PROC			; std::bad_alloc::`scalar deleting destructor', COMDAT
; _this$ = ecx
	push	esi
	mov	esi, ecx
	mov	DWORD PTR [esi], OFFSET ??_7bad_alloc@std@@6B@
	call	??1exception@std@@UAE@XZ		; std::exception::~exception
	test	BYTE PTR ___flags$[esp], 1
	je	SHORT $LN6@scalar
	push	esi
	call	??3@YAXPAX@Z				; operator delete
	add	esp, 4
$LN6@scalar:
	mov	eax, esi
	pop	esi
	ret	4
??_Gbad_alloc@std@@UAEPAXI@Z ENDP			; std::bad_alloc::`scalar deleting destructor'
_TEXT	ENDS
PUBLIC	??0ncString@@QAE@XZ				; ncString::ncString
; Function compile flags: /Ogtpy
; File d:\source code\nc lib\ncstring.h
;	COMDAT ??0ncString@@QAE@XZ
_TEXT	SEGMENT
??0ncString@@QAE@XZ PROC				; ncString::ncString, COMDAT
; _this$ = ecx

; 20   : 	ncString()

	mov	eax, ecx

; 21   : 	{
; 22   : 		this->m_String = NULL;

	xor	ecx, ecx
	mov	DWORD PTR [eax], ecx

; 23   : 		this->m_Length = 0;

	mov	DWORD PTR [eax+4], ecx

; 24   : 		this->m_AllocSize = 0;

	mov	DWORD PTR [eax+8], ecx

; 25   : 	};

	ret	0
??0ncString@@QAE@XZ ENDP				; ncString::ncString
_TEXT	ENDS
PUBLIC	?GetString@ncString@@QAEPBDXZ			; ncString::GetString
; Function compile flags: /Ogtpy
;	COMDAT ?GetString@ncString@@QAEPBDXZ
_TEXT	SEGMENT
?GetString@ncString@@QAEPBDXZ PROC			; ncString::GetString, COMDAT
; _this$ = ecx

; 43   : 		return this->m_String;

	mov	eax, DWORD PTR [ecx]

; 44   : 	};

	ret	0
?GetString@ncString@@QAEPBDXZ ENDP			; ncString::GetString
_TEXT	ENDS
PUBLIC	??_C@_0CB@MAJIAFJL@d?3?2source?5code?2nc?5lib?2ncString?4h@ ; `string'
PUBLIC	??_C@_0BG@IMAMDEJB@ncString?3?3Free_String?$AA@	; `string'
PUBLIC	?Free_String@ncString@@QAEXXZ			; ncString::Free_String
EXTRN	??_V@YAXPAX@Z:PROC				; operator delete[]
EXTRN	?m_setOwner@@YAXPBDI0@Z:PROC			; m_setOwner
;	COMDAT ??_C@_0CB@MAJIAFJL@d?3?2source?5code?2nc?5lib?2ncString?4h@
CONST	SEGMENT
??_C@_0CB@MAJIAFJL@d?3?2source?5code?2nc?5lib?2ncString?4h@ DB 'd:\source'
	DB	' code\nc lib\ncString.h', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_0BG@IMAMDEJB@ncString?3?3Free_String?$AA@
CONST	SEGMENT
??_C@_0BG@IMAMDEJB@ncString?3?3Free_String?$AA@ DB 'ncString::Free_String'
	DB	00H						; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?Free_String@ncString@@QAEXXZ
_TEXT	SEGMENT
?Free_String@ncString@@QAEXXZ PROC			; ncString::Free_String, COMDAT
; _this$ = ecx

; 214  : 	{

	push	esi
	mov	esi, ecx

; 215  : 		if (this->m_String != NULL)

	cmp	DWORD PTR [esi], 0
	je	SHORT $LN5@Free_Strin

; 216  : 			delete [] this->m_String;

	push	OFFSET ??_C@_0BG@IMAMDEJB@ncString?3?3Free_String?$AA@
	push	216					; 000000d8H
	push	OFFSET ??_C@_0CB@MAJIAFJL@d?3?2source?5code?2nc?5lib?2ncString?4h@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	eax, DWORD PTR [esi]
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
$LN5@Free_Strin:

; 217  : 		this->m_String = NULL;

	mov	DWORD PTR [esi], 0

; 218  : 		this->m_Length = 0;

	mov	DWORD PTR [esi+4], 0

; 219  : 		this->m_AllocSize = 0;

	mov	DWORD PTR [esi+8], 0
	pop	esi

; 220  : 	};

	ret	0
?Free_String@ncString@@QAEXXZ ENDP			; ncString::Free_String
_TEXT	ENDS
PUBLIC	??_C@_0BB@NMGECEKH@ncString?3?3Resize?$AA@	; `string'
PUBLIC	?Resize@ncString@@QAEXH@Z			; ncString::Resize
EXTRN	_strncpy:PROC
EXTRN	??_U@YAPAXI@Z:PROC				; operator new[]
;	COMDAT ??_C@_0BB@NMGECEKH@ncString?3?3Resize?$AA@
CONST	SEGMENT
??_C@_0BB@NMGECEKH@ncString?3?3Resize?$AA@ DB 'ncString::Resize', 00H ; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?Resize@ncString@@QAEXH@Z
_TEXT	SEGMENT
_size$ = 8						; size = 4
?Resize@ncString@@QAEXH@Z PROC				; ncString::Resize, COMDAT
; _this$ = ecx

; 239  : 	{

	push	ebx
	push	esi
	push	edi

; 240  : 		if (size > 0)

	mov	edi, DWORD PTR _size$[esp+8]
	xor	ebx, ebx
	cmp	edi, ebx
	mov	esi, ecx
	jle	SHORT $LN3@Resize
	push	ebp

; 241  : 		{
; 242  : 			size++;
; 243  : 			char *newBuf = new char[size];

	push	OFFSET ??_C@_0BB@NMGECEKH@ncString?3?3Resize?$AA@
	push	243					; 000000f3H
	push	OFFSET ??_C@_0CB@MAJIAFJL@d?3?2source?5code?2nc?5lib?2ncString?4h@
	add	edi, 1
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	push	edi
	call	??_U@YAPAXI@Z				; operator new[]
	mov	ebp, eax

; 244  : 			if (this->m_String)

	mov	eax, DWORD PTR [esi]
	add	esp, 16					; 00000010H
	cmp	eax, ebx
	je	SHORT $LN2@Resize

; 245  : 			{
; 246  : 				int Length = (this->m_Length > (size - 1)) ? size - 1 : this->m_Length;

	mov	ebx, DWORD PTR [esi+4]
	lea	ecx, DWORD PTR [edi-1]
	cmp	ebx, ecx
	jle	SHORT $LN8@Resize
	mov	ebx, ecx
$LN8@Resize:

; 247  : 				strncpy(newBuf, this->m_String, Length);

	push	ebx
	push	eax
	push	ebp
	call	_strncpy

; 248  : 				delete [] this->m_String;

	push	OFFSET ??_C@_0BB@NMGECEKH@ncString?3?3Resize?$AA@
	push	248					; 000000f8H
	push	OFFSET ??_C@_0CB@MAJIAFJL@d?3?2source?5code?2nc?5lib?2ncString?4h@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	eax, DWORD PTR [esi]
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 28					; 0000001cH

; 249  : 				this->m_Length = Length;

	mov	DWORD PTR [esi+4], ebx
$LN2@Resize:

; 250  : 			}
; 251  : 			newBuf[size - 1] = '\0';

	mov	BYTE PTR [edi+ebp-1], 0

; 252  : 			this->m_String = newBuf;

	mov	DWORD PTR [esi], ebp
	pop	ebp

; 253  : 			this->m_AllocSize = size;

	mov	DWORD PTR [esi+8], edi
	pop	edi
	pop	esi
	pop	ebx

; 257  : 	};

	ret	4
$LN3@Resize:

; 254  : 		}
; 255  : 		else
; 256  : 			this->Free_String();

	cmp	DWORD PTR [esi], ebx
	je	SHORT $LN16@Resize
	push	OFFSET ??_C@_0BG@IMAMDEJB@ncString?3?3Free_String?$AA@
	push	216					; 000000d8H
	push	OFFSET ??_C@_0CB@MAJIAFJL@d?3?2source?5code?2nc?5lib?2ncString?4h@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	ecx, DWORD PTR [esi]
	push	ecx
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
$LN16@Resize:
	pop	edi
	mov	DWORD PTR [esi], ebx
	mov	DWORD PTR [esi+4], ebx
	mov	DWORD PTR [esi+8], ebx
	pop	esi
	pop	ebx

; 257  : 	};

	ret	4
?Resize@ncString@@QAEXH@Z ENDP				; ncString::Resize
_TEXT	ENDS
PUBLIC	??0ncWideString@@QAE@XZ				; ncWideString::ncWideString
; Function compile flags: /Ogtpy
;	COMDAT ??0ncWideString@@QAE@XZ
_TEXT	SEGMENT
??0ncWideString@@QAE@XZ PROC				; ncWideString::ncWideString, COMDAT
; _this$ = ecx

; 402  : 	ncWideString()

	mov	eax, ecx

; 403  : 	{
; 404  : 		this->m_String = NULL;

	xor	ecx, ecx
	mov	DWORD PTR [eax], ecx

; 405  : 		this->m_Length = 0;

	mov	DWORD PTR [eax+4], ecx

; 406  : 		this->m_AllocSize = 0;

	mov	DWORD PTR [eax+8], ecx

; 407  : 	};

	ret	0
??0ncWideString@@QAE@XZ ENDP				; ncWideString::ncWideString
_TEXT	ENDS
PUBLIC	?GetString@ncWideString@@QAEPB_WXZ		; ncWideString::GetString
; Function compile flags: /Ogtpy
;	COMDAT ?GetString@ncWideString@@QAEPB_WXZ
_TEXT	SEGMENT
?GetString@ncWideString@@QAEPB_WXZ PROC			; ncWideString::GetString, COMDAT
; _this$ = ecx

; 425  : 		return this->m_String;

	mov	eax, DWORD PTR [ecx]

; 426  : 	};

	ret	0
?GetString@ncWideString@@QAEPB_WXZ ENDP			; ncWideString::GetString
_TEXT	ENDS
PUBLIC	?GetLength@ncWideString@@QAEHXZ			; ncWideString::GetLength
; Function compile flags: /Ogtpy
;	COMDAT ?GetLength@ncWideString@@QAEHXZ
_TEXT	SEGMENT
?GetLength@ncWideString@@QAEHXZ PROC			; ncWideString::GetLength, COMDAT
; _this$ = ecx

; 429  : 		return this->m_Length;

	mov	eax, DWORD PTR [ecx+4]

; 430  : 	}

	ret	0
?GetLength@ncWideString@@QAEHXZ ENDP			; ncWideString::GetLength
_TEXT	ENDS
PUBLIC	??_C@_0BK@BLLJLEJ@ncWideString?3?3Free_String?$AA@ ; `string'
PUBLIC	?Free_String@ncWideString@@QAEXXZ		; ncWideString::Free_String
;	COMDAT ??_C@_0BK@BLLJLEJ@ncWideString?3?3Free_String?$AA@
CONST	SEGMENT
??_C@_0BK@BLLJLEJ@ncWideString?3?3Free_String?$AA@ DB 'ncWideString::Free'
	DB	'_String', 00H				; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?Free_String@ncWideString@@QAEXXZ
_TEXT	SEGMENT
?Free_String@ncWideString@@QAEXXZ PROC			; ncWideString::Free_String, COMDAT
; _this$ = ecx

; 565  : 	{

	push	esi
	mov	esi, ecx

; 566  : 		if (this->m_String)

	cmp	DWORD PTR [esi], 0
	je	SHORT $LN5@Free_Strin@2

; 567  : 			delete [] this->m_String;

	push	OFFSET ??_C@_0BK@BLLJLEJ@ncWideString?3?3Free_String?$AA@
	push	567					; 00000237H
	push	OFFSET ??_C@_0CB@MAJIAFJL@d?3?2source?5code?2nc?5lib?2ncString?4h@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	eax, DWORD PTR [esi]
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
$LN5@Free_Strin@2:

; 568  : 		this->m_String = NULL;

	mov	DWORD PTR [esi], 0

; 569  : 		this->m_Length = 0;

	mov	DWORD PTR [esi+4], 0

; 570  : 		this->m_AllocSize = 0;

	mov	DWORD PTR [esi+8], 0
	pop	esi

; 571  : 	};

	ret	0
?Free_String@ncWideString@@QAEXXZ ENDP			; ncWideString::Free_String
_TEXT	ENDS
PUBLIC	??_C@_0BF@OMFPDLG@ncWideString?3?3Resize?$AA@	; `string'
PUBLIC	?Resize@ncWideString@@QAEXH@Z			; ncWideString::Resize
EXTRN	_wcsncpy:PROC
;	COMDAT ??_C@_0BF@OMFPDLG@ncWideString?3?3Resize?$AA@
CONST	SEGMENT
??_C@_0BF@OMFPDLG@ncWideString?3?3Resize?$AA@ DB 'ncWideString::Resize', 00H ; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?Resize@ncWideString@@QAEXH@Z
_TEXT	SEGMENT
_size$ = 8						; size = 4
?Resize@ncWideString@@QAEXH@Z PROC			; ncWideString::Resize, COMDAT
; _this$ = ecx

; 590  : 	{

	push	ebp
	push	esi
	push	edi

; 591  : 		if (size > 0)

	mov	edi, DWORD PTR _size$[esp+8]
	xor	ebp, ebp
	cmp	edi, ebp
	mov	esi, ecx
	jle	$LN3@Resize@2
	push	ebx

; 592  : 		{
; 593  : 			size++;
; 594  : 			wchar_t *newBuf = new wchar_t[size];

	push	OFFSET ??_C@_0BF@OMFPDLG@ncWideString?3?3Resize?$AA@
	push	594					; 00000252H
	push	OFFSET ??_C@_0CB@MAJIAFJL@d?3?2source?5code?2nc?5lib?2ncString?4h@
	add	edi, 1
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	xor	ecx, ecx
	mov	eax, edi
	mov	edx, 2
	mul	edx
	seto	cl
	neg	ecx
	or	ecx, eax
	push	ecx
	call	??_U@YAPAXI@Z				; operator new[]
	mov	ebx, eax

; 595  : 			if (this->m_String)

	mov	eax, DWORD PTR [esi]
	add	esp, 16					; 00000010H
	cmp	eax, ebp
	je	SHORT $LN2@Resize@2

; 596  : 			{
; 597  : 				int Length = (this->m_Length > (size - 1)) ? (size - 1) : this->m_Length;

	mov	ebp, DWORD PTR [esi+4]
	lea	ecx, DWORD PTR [edi-1]
	cmp	ebp, ecx
	jle	SHORT $LN8@Resize@2
	mov	ebp, ecx
$LN8@Resize@2:

; 598  : 				wcsncpy(newBuf, this->m_String, Length);

	push	ebp
	push	eax
	push	ebx
	call	_wcsncpy

; 599  : 				delete [] this->m_String;

	push	OFFSET ??_C@_0BF@OMFPDLG@ncWideString?3?3Resize?$AA@
	push	599					; 00000257H
	push	OFFSET ??_C@_0CB@MAJIAFJL@d?3?2source?5code?2nc?5lib?2ncString?4h@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	eax, DWORD PTR [esi]
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 28					; 0000001cH

; 600  : 				this->m_Length = Length;

	mov	DWORD PTR [esi+4], ebp
	xor	ebp, ebp
$LN2@Resize@2:

; 601  : 			}
; 602  : 			newBuf[size - 1] = '\0';

	mov	WORD PTR [ebx+edi*2-2], bp

; 603  : 			this->m_String = newBuf;

	mov	DWORD PTR [esi], ebx
	pop	ebx

; 604  : 			this->m_AllocSize = size;

	mov	DWORD PTR [esi+8], edi
	pop	edi
	pop	esi
	pop	ebp

; 608  : 	};

	ret	4
$LN3@Resize@2:

; 605  : 		}
; 606  : 		else
; 607  : 			this->Free_String();

	cmp	DWORD PTR [esi], ebp
	je	SHORT $LN16@Resize@2
	push	OFFSET ??_C@_0BK@BLLJLEJ@ncWideString?3?3Free_String?$AA@
	push	567					; 00000237H
	push	OFFSET ??_C@_0CB@MAJIAFJL@d?3?2source?5code?2nc?5lib?2ncString?4h@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	ecx, DWORD PTR [esi]
	push	ecx
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
$LN16@Resize@2:
	pop	edi
	mov	DWORD PTR [esi], ebp
	mov	DWORD PTR [esi+4], ebp
	mov	DWORD PTR [esi+8], ebp
	pop	esi
	pop	ebp

; 608  : 	};

	ret	4
?Resize@ncWideString@@QAEXH@Z ENDP			; ncWideString::Resize
_TEXT	ENDS
PUBLIC	?GetTimeInfo@ncDateTime@@AAEPAUtm@@XZ		; ncDateTime::GetTimeInfo
; Function compile flags: /Ogtpy
; File d:\source code\nc lib\ncdatetime.h
;	COMDAT ?GetTimeInfo@ncDateTime@@AAEPAUtm@@XZ
_TEXT	SEGMENT
?GetTimeInfo@ncDateTime@@AAEPAUtm@@XZ PROC		; ncDateTime::GetTimeInfo, COMDAT
; _this$ = ecx

; 18   : 		return localtime(&this->m_time.time);

	push	ecx
	call	__localtime64
	add	esp, 4

; 19   : 	};

	ret	0
?GetTimeInfo@ncDateTime@@AAEPAUtm@@XZ ENDP		; ncDateTime::GetTimeInfo
_TEXT	ENDS
PUBLIC	??0ncDateTime@@QAE@_JG@Z			; ncDateTime::ncDateTime
; Function compile flags: /Ogtpy
;	COMDAT ??0ncDateTime@@QAE@_JG@Z
_TEXT	SEGMENT
_time$ = 8						; size = 8
_ms$ = 16						; size = 2
??0ncDateTime@@QAE@_JG@Z PROC				; ncDateTime::ncDateTime, COMDAT
; _this$ = ecx

; 28   : 	{
; 29   : 		this->m_needMillisec = true;
; 30   : 		this->m_time.time = time;

	mov	edx, DWORD PTR _time$[esp]
	mov	eax, ecx
	xor	ecx, ecx
	mov	DWORD PTR [eax+20], ecx
	mov	DWORD PTR [eax+24], ecx
	mov	DWORD PTR [eax+28], ecx
	mov	ecx, DWORD PTR _time$[esp-4]
	mov	DWORD PTR [eax], ecx

; 31   : 		this->m_time.millitm = ms;

	mov	cx, WORD PTR _ms$[esp-4]
	mov	BYTE PTR [eax+16], 1
	mov	DWORD PTR [eax+4], edx
	mov	WORD PTR [eax+8], cx

; 32   : 	};

	ret	12					; 0000000cH
??0ncDateTime@@QAE@_JG@Z ENDP				; ncDateTime::ncDateTime
_TEXT	ENDS
PUBLIC	??1ncDateTime@@QAE@XZ				; ncDateTime::~ncDateTime
; Function compile flags: /Ogtpy
;	COMDAT ??1ncDateTime@@QAE@XZ
_TEXT	SEGMENT
??1ncDateTime@@QAE@XZ PROC				; ncDateTime::~ncDateTime, COMDAT
; _this$ = ecx

; 34   : 	{

	push	esi
	mov	esi, ecx

; 35   : 		this->m_string.Free_String();

	cmp	DWORD PTR [esi+20], 0
	je	SHORT $LN7@ncDateTime
	push	OFFSET ??_C@_0BG@IMAMDEJB@ncString?3?3Free_String?$AA@
	push	216					; 000000d8H
	push	OFFSET ??_C@_0CB@MAJIAFJL@d?3?2source?5code?2nc?5lib?2ncString?4h@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	eax, DWORD PTR [esi+20]
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
$LN7@ncDateTime:
	mov	DWORD PTR [esi+20], 0
	mov	DWORD PTR [esi+24], 0
	mov	DWORD PTR [esi+28], 0
	pop	esi

; 36   : 	};

	ret	0
??1ncDateTime@@QAE@XZ ENDP				; ncDateTime::~ncDateTime
_TEXT	ENDS
PUBLIC	?Now@ncDateTime@@SA?AV1@XZ			; ncDateTime::Now
; Function compile flags: /Ogtpy
;	COMDAT ?Now@ncDateTime@@SA?AV1@XZ
_TEXT	SEGMENT
$T65089 = -4						; size = 4
___$ReturnUdt$ = 8					; size = 4
?Now@ncDateTime@@SA?AV1@XZ PROC				; ncDateTime::Now, COMDAT

; 38   : 	{

	push	ecx
	push	esi
	xor	esi, esi

; 39   : 		return ncDateTime(time(NULL), 0);

	push	esi
	mov	DWORD PTR $T65089[esp+12], esi
	call	__time64
	mov	ecx, eax
	mov	eax, DWORD PTR ___$ReturnUdt$[esp+8]
	mov	DWORD PTR [eax+20], esi
	mov	DWORD PTR [eax+24], esi
	mov	DWORD PTR [eax+28], esi
	add	esp, 4
	mov	WORD PTR [eax+8], si
	mov	BYTE PTR [eax+16], 1
	mov	DWORD PTR [eax], ecx
	mov	DWORD PTR [eax+4], edx
	pop	esi

; 40   : 	};

	pop	ecx
	ret	0
?Now@ncDateTime@@SA?AV1@XZ ENDP				; ncDateTime::Now
_TEXT	ENDS
PUBLIC	?GetYear@ncDateTime@@QAEIXZ			; ncDateTime::GetYear
; Function compile flags: /Ogtpy
;	COMDAT ?GetYear@ncDateTime@@QAEIXZ
_TEXT	SEGMENT
?GetYear@ncDateTime@@QAEIXZ PROC			; ncDateTime::GetYear, COMDAT
; _this$ = ecx

; 116  : 		return this->GetTimeInfo()->tm_year + 1900;

	push	ecx
	call	__localtime64
	mov	eax, DWORD PTR [eax+20]
	add	esp, 4
	add	eax, 1900				; 0000076cH

; 117  : 	};

	ret	0
?GetYear@ncDateTime@@QAEIXZ ENDP			; ncDateTime::GetYear
_TEXT	ENDS
PUBLIC	?GetMonth@ncDateTime@@QAEIXZ			; ncDateTime::GetMonth
; Function compile flags: /Ogtpy
;	COMDAT ?GetMonth@ncDateTime@@QAEIXZ
_TEXT	SEGMENT
?GetMonth@ncDateTime@@QAEIXZ PROC			; ncDateTime::GetMonth, COMDAT
; _this$ = ecx

; 120  : 		return this->GetTimeInfo()->tm_mon + 1;

	push	ecx
	call	__localtime64
	mov	eax, DWORD PTR [eax+16]
	add	esp, 4
	add	eax, 1

; 121  : 	};

	ret	0
?GetMonth@ncDateTime@@QAEIXZ ENDP			; ncDateTime::GetMonth
_TEXT	ENDS
PUBLIC	?GetDay@ncDateTime@@QAEIXZ			; ncDateTime::GetDay
; Function compile flags: /Ogtpy
;	COMDAT ?GetDay@ncDateTime@@QAEIXZ
_TEXT	SEGMENT
?GetDay@ncDateTime@@QAEIXZ PROC				; ncDateTime::GetDay, COMDAT
; _this$ = ecx

; 124  : 		return this->GetTimeInfo()->tm_mday;

	push	ecx
	call	__localtime64
	mov	eax, DWORD PTR [eax+12]
	add	esp, 4

; 125  : 	};

	ret	0
?GetDay@ncDateTime@@QAEIXZ ENDP				; ncDateTime::GetDay
_TEXT	ENDS
PUBLIC	?GetHour@ncDateTime@@QAEIXZ			; ncDateTime::GetHour
; Function compile flags: /Ogtpy
;	COMDAT ?GetHour@ncDateTime@@QAEIXZ
_TEXT	SEGMENT
?GetHour@ncDateTime@@QAEIXZ PROC			; ncDateTime::GetHour, COMDAT
; _this$ = ecx

; 128  : 		return this->GetTimeInfo()->tm_hour;

	push	ecx
	call	__localtime64
	mov	eax, DWORD PTR [eax+8]
	add	esp, 4

; 129  : 	};

	ret	0
?GetHour@ncDateTime@@QAEIXZ ENDP			; ncDateTime::GetHour
_TEXT	ENDS
PUBLIC	?GetMinute@ncDateTime@@QAEIXZ			; ncDateTime::GetMinute
; Function compile flags: /Ogtpy
;	COMDAT ?GetMinute@ncDateTime@@QAEIXZ
_TEXT	SEGMENT
?GetMinute@ncDateTime@@QAEIXZ PROC			; ncDateTime::GetMinute, COMDAT
; _this$ = ecx

; 132  : 		return this->GetTimeInfo()->tm_min;

	push	ecx
	call	__localtime64
	mov	eax, DWORD PTR [eax+4]
	add	esp, 4

; 133  : 	};

	ret	0
?GetMinute@ncDateTime@@QAEIXZ ENDP			; ncDateTime::GetMinute
_TEXT	ENDS
PUBLIC	?GetSecond@ncDateTime@@QAEIXZ			; ncDateTime::GetSecond
; Function compile flags: /Ogtpy
;	COMDAT ?GetSecond@ncDateTime@@QAEIXZ
_TEXT	SEGMENT
?GetSecond@ncDateTime@@QAEIXZ PROC			; ncDateTime::GetSecond, COMDAT
; _this$ = ecx

; 136  : 		return this->GetTimeInfo()->tm_sec;

	push	ecx
	call	__localtime64
	mov	eax, DWORD PTR [eax]
	add	esp, 4

; 137  : 	};

	ret	0
?GetSecond@ncDateTime@@QAEIXZ ENDP			; ncDateTime::GetSecond
_TEXT	ENDS
PUBLIC	??0nc_StringClass@@QAE@XZ			; nc_StringClass::nc_StringClass
EXTRN	?m_EmptyString@nc_StringClass@@2PAPADA:DWORD	; nc_StringClass::m_EmptyString
; Function compile flags: /Ogtpy
; File d:\source code\fds lib\new\fds_string.h
;	COMDAT ??0nc_StringClass@@QAE@XZ
_TEXT	SEGMENT
??0nc_StringClass@@QAE@XZ PROC				; nc_StringClass::nc_StringClass, COMDAT
; _this$ = ecx

; 9    : 	nc_StringClass() {

	mov	eax, ecx

; 10   : 		this->m_Buffer = *this->m_EmptyString;

	mov	ecx, DWORD PTR ?m_EmptyString@nc_StringClass@@2PAPADA ; nc_StringClass::m_EmptyString
	mov	edx, DWORD PTR [ecx]
	mov	DWORD PTR [eax], edx

; 11   : 	}

	ret	0
??0nc_StringClass@@QAE@XZ ENDP				; nc_StringClass::nc_StringClass
_TEXT	ENDS
PUBLIC	??1nc_StringClass@@QAE@XZ			; nc_StringClass::~nc_StringClass
EXTRN	?Free_String@nc_StringClass@@QAEXXZ:PROC	; nc_StringClass::Free_String
; Function compile flags: /Ogtpy
;	COMDAT ??1nc_StringClass@@QAE@XZ
_TEXT	SEGMENT
??1nc_StringClass@@QAE@XZ PROC				; nc_StringClass::~nc_StringClass, COMDAT
; _this$ = ecx

; 27   : 		this->Free_String();

	jmp	?Free_String@nc_StringClass@@QAEXXZ	; nc_StringClass::Free_String
??1nc_StringClass@@QAE@XZ ENDP				; nc_StringClass::~nc_StringClass
_TEXT	ENDS
PUBLIC	??0nc_WideStringClass@@QAE@XZ			; nc_WideStringClass::nc_WideStringClass
EXTRN	?m_EmptyString@nc_WideStringClass@@2PAPA_WA:DWORD ; nc_WideStringClass::m_EmptyString
; Function compile flags: /Ogtpy
;	COMDAT ??0nc_WideStringClass@@QAE@XZ
_TEXT	SEGMENT
??0nc_WideStringClass@@QAE@XZ PROC			; nc_WideStringClass::nc_WideStringClass, COMDAT
; _this$ = ecx

; 49   : 	nc_WideStringClass() {

	mov	eax, ecx

; 50   : 		this->m_Buffer = *this->m_EmptyString;

	mov	ecx, DWORD PTR ?m_EmptyString@nc_WideStringClass@@2PAPA_WA ; nc_WideStringClass::m_EmptyString
	mov	edx, DWORD PTR [ecx]
	mov	DWORD PTR [eax], edx

; 51   : 	}

	ret	0
??0nc_WideStringClass@@QAE@XZ ENDP			; nc_WideStringClass::nc_WideStringClass
_TEXT	ENDS
PUBLIC	??1nc_WideStringClass@@QAE@XZ			; nc_WideStringClass::~nc_WideStringClass
EXTRN	?Free_String@nc_WideStringClass@@QAEXXZ:PROC	; nc_WideStringClass::Free_String
; Function compile flags: /Ogtpy
;	COMDAT ??1nc_WideStringClass@@QAE@XZ
_TEXT	SEGMENT
??1nc_WideStringClass@@QAE@XZ PROC			; nc_WideStringClass::~nc_WideStringClass, COMDAT
; _this$ = ecx

; 63   : 		this->Free_String();

	jmp	?Free_String@nc_WideStringClass@@QAEXXZ	; nc_WideStringClass::Free_String
??1nc_WideStringClass@@QAE@XZ ENDP			; nc_WideStringClass::~nc_WideStringClass
_TEXT	ENDS
PUBLIC	??4nc_FloatDataSafeClass@@QAEXM@Z		; nc_FloatDataSafeClass::operator=
EXTRN	?Set@nc_FloatDataSafeClass@@QAG_NAAM@Z:PROC	; nc_FloatDataSafeClass::Set
; Function compile flags: /Ogtpy
; File d:\source code\fds lib\new\fds_def.h
;	COMDAT ??4nc_FloatDataSafeClass@@QAEXM@Z
_TEXT	SEGMENT
_value$ = 8						; size = 4
??4nc_FloatDataSafeClass@@QAEXM@Z PROC			; nc_FloatDataSafeClass::operator=, COMDAT
; _this$ = ecx

; 235  : 	void operator=(float value) { this->Set(value); }

	lea	eax, DWORD PTR _value$[esp-4]
	push	eax
	push	ecx
	call	?Set@nc_FloatDataSafeClass@@QAG_NAAM@Z	; nc_FloatDataSafeClass::Set
	ret	4
??4nc_FloatDataSafeClass@@QAEXM@Z ENDP			; nc_FloatDataSafeClass::operator=
_TEXT	ENDS
PUBLIC	??4nc_FloatDataSafeClass@@QAEXAAV0@@Z		; nc_FloatDataSafeClass::operator=
EXTRN	?Get@nc_FloatDataSafeClass@@QAEMXZ:PROC		; nc_FloatDataSafeClass::Get
EXTRN	__fltused:DWORD
; Function compile flags: /Ogtpy
;	COMDAT ??4nc_FloatDataSafeClass@@QAEXAAV0@@Z
_TEXT	SEGMENT
_value$ = 8						; size = 4
_data$ = 8						; size = 4
??4nc_FloatDataSafeClass@@QAEXAAV0@@Z PROC		; nc_FloatDataSafeClass::operator=, COMDAT
; _this$ = ecx

; 237  : 	{

	push	esi
	mov	esi, ecx

; 238  : 		float value = data.Get();

	mov	ecx, DWORD PTR _data$[esp]
	call	?Get@nc_FloatDataSafeClass@@QAEMXZ	; nc_FloatDataSafeClass::Get
	fstp	DWORD PTR _value$[esp]

; 239  : 		this->Set(value);

	lea	eax, DWORD PTR _value$[esp]
	push	eax
	push	esi
	call	?Set@nc_FloatDataSafeClass@@QAG_NAAM@Z	; nc_FloatDataSafeClass::Set
	pop	esi

; 240  : 	}

	ret	4
??4nc_FloatDataSafeClass@@QAEXAAV0@@Z ENDP		; nc_FloatDataSafeClass::operator=
_TEXT	ENDS
PUBLIC	??4nc_IntDataSafeClass@@QAEXH@Z			; nc_IntDataSafeClass::operator=
EXTRN	?Set@nc_IntDataSafeClass@@QAG_NAAH@Z:PROC	; nc_IntDataSafeClass::Set
; Function compile flags: /Ogtpy
;	COMDAT ??4nc_IntDataSafeClass@@QAEXH@Z
_TEXT	SEGMENT
_value$ = 8						; size = 4
??4nc_IntDataSafeClass@@QAEXH@Z PROC			; nc_IntDataSafeClass::operator=, COMDAT
; _this$ = ecx

; 265  : 	void operator=(int value) { this->Set(value); }

	lea	eax, DWORD PTR _value$[esp-4]
	push	eax
	push	ecx
	call	?Set@nc_IntDataSafeClass@@QAG_NAAH@Z	; nc_IntDataSafeClass::Set
	ret	4
??4nc_IntDataSafeClass@@QAEXH@Z ENDP			; nc_IntDataSafeClass::operator=
_TEXT	ENDS
PUBLIC	??Znc_IntDataSafeClass@@QAEXH@Z			; nc_IntDataSafeClass::operator-=
EXTRN	?Get@nc_IntDataSafeClass@@QAEHXZ:PROC		; nc_IntDataSafeClass::Get
; Function compile flags: /Ogtpy
;	COMDAT ??Znc_IntDataSafeClass@@QAEXH@Z
_TEXT	SEGMENT
_value$ = 8						; size = 4
??Znc_IntDataSafeClass@@QAEXH@Z PROC			; nc_IntDataSafeClass::operator-=, COMDAT
; _this$ = ecx

; 275  : 	void operator-=(int value) {

	push	esi
	mov	esi, ecx

; 276  : 		value = this->Get() - value;

	call	?Get@nc_IntDataSafeClass@@QAEHXZ	; nc_IntDataSafeClass::Get
	sub	eax, DWORD PTR _value$[esp]
	mov	DWORD PTR _value$[esp], eax

; 277  : 		this->Set(value);

	lea	eax, DWORD PTR _value$[esp]
	push	eax
	push	esi
	call	?Set@nc_IntDataSafeClass@@QAG_NAAH@Z	; nc_IntDataSafeClass::Set
	pop	esi

; 278  : 	}

	ret	4
??Znc_IntDataSafeClass@@QAEXH@Z ENDP			; nc_IntDataSafeClass::operator-=
_TEXT	ENDS
PUBLIC	??0gzEventBase@@QAE@XZ				; gzEventBase::gzEventBase
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzeventbase.h
;	COMDAT ??0gzEventBase@@QAE@XZ
_TEXT	SEGMENT
??0gzEventBase@@QAE@XZ PROC				; gzEventBase::gzEventBase, COMDAT
; _this$ = ecx

; 15   : 	gzEventBase()

	mov	eax, ecx

; 16   : 	{
; 17   : 		this->m_continue = true;

	mov	BYTE PTR [eax+12], 1

; 18   : 	};

	ret	0
??0gzEventBase@@QAE@XZ ENDP				; gzEventBase::gzEventBase
_TEXT	ENDS
PUBLIC	?SetInt@gzEventBase@@QAEXH@Z			; gzEventBase::SetInt
; Function compile flags: /Ogtpy
;	COMDAT ?SetInt@gzEventBase@@QAEXH@Z
_TEXT	SEGMENT
_data$ = 8						; size = 4
?SetInt@gzEventBase@@QAEXH@Z PROC			; gzEventBase::SetInt, COMDAT
; _this$ = ecx

; 33   : 		this->m_dataInt = data;

	mov	eax, DWORD PTR _data$[esp-4]
	mov	DWORD PTR [ecx+8], eax

; 34   : 	};

	ret	4
?SetInt@gzEventBase@@QAEXH@Z ENDP			; gzEventBase::SetInt
_TEXT	ENDS
PUBLIC	?CanContinue@gzEventBase@@QAE_NXZ		; gzEventBase::CanContinue
; Function compile flags: /Ogtpy
;	COMDAT ?CanContinue@gzEventBase@@QAE_NXZ
_TEXT	SEGMENT
?CanContinue@gzEventBase@@QAE_NXZ PROC			; gzEventBase::CanContinue, COMDAT
; _this$ = ecx

; 37   : 		return (this->m_continue);

	mov	al, BYTE PTR [ecx+12]

; 38   : 	};

	ret	0
?CanContinue@gzEventBase@@QAE_NXZ ENDP			; gzEventBase::CanContinue
_TEXT	ENDS
PUBLIC	?GetPlayer@gzEventPlayerBase@@QAEPAVnc_cPlayer@@XZ ; gzEventPlayerBase::GetPlayer
; Function compile flags: /Ogtpy
;	COMDAT ?GetPlayer@gzEventPlayerBase@@QAEPAVnc_cPlayer@@XZ
_TEXT	SEGMENT
?GetPlayer@gzEventPlayerBase@@QAEPAVnc_cPlayer@@XZ PROC	; gzEventPlayerBase::GetPlayer, COMDAT
; _this$ = ecx

; 54   : 		return this->m_player;

	mov	eax, DWORD PTR [ecx+16]

; 55   : 	};

	ret	0
?GetPlayer@gzEventPlayerBase@@QAEPAVnc_cPlayer@@XZ ENDP	; gzEventPlayerBase::GetPlayer
_TEXT	ENDS
PUBLIC	?SetPlayer@gzEventPlayerBase@@QAEXPAVnc_cPlayer@@@Z ; gzEventPlayerBase::SetPlayer
; Function compile flags: /Ogtpy
;	COMDAT ?SetPlayer@gzEventPlayerBase@@QAEXPAVnc_cPlayer@@@Z
_TEXT	SEGMENT
_player$ = 8						; size = 4
?SetPlayer@gzEventPlayerBase@@QAEXPAVnc_cPlayer@@@Z PROC ; gzEventPlayerBase::SetPlayer, COMDAT
; _this$ = ecx

; 58   : 		this->m_player = player;

	mov	eax, DWORD PTR _player$[esp-4]
	mov	DWORD PTR [ecx+16], eax

; 59   : 	};

	ret	4
?SetPlayer@gzEventPlayerBase@@QAEXPAVnc_cPlayer@@@Z ENDP ; gzEventPlayerBase::SetPlayer
_TEXT	ENDS
PUBLIC	??1gzEventPlayerChat@@QAE@XZ			; gzEventPlayerChat::~gzEventPlayerChat
; Function compile flags: /Ogtpy
;	COMDAT ??1gzEventPlayerChat@@QAE@XZ
_TEXT	SEGMENT
??1gzEventPlayerChat@@QAE@XZ PROC			; gzEventPlayerChat::~gzEventPlayerChat, COMDAT
; _this$ = ecx

; 73   : 	{

	push	esi
	mov	esi, ecx

; 74   : 		this->m_message.Free_String();

	cmp	DWORD PTR [esi+28], 0
	je	SHORT $LN7@gzEventPla
	push	OFFSET ??_C@_0BK@BLLJLEJ@ncWideString?3?3Free_String?$AA@
	push	567					; 00000237H
	push	OFFSET ??_C@_0CB@MAJIAFJL@d?3?2source?5code?2nc?5lib?2ncString?4h@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	eax, DWORD PTR [esi+28]
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
$LN7@gzEventPla:
	mov	DWORD PTR [esi+28], 0
	mov	DWORD PTR [esi+32], 0
	mov	DWORD PTR [esi+36], 0
	pop	esi

; 75   : 	};

	ret	0
??1gzEventPlayerChat@@QAE@XZ ENDP			; gzEventPlayerChat::~gzEventPlayerChat
_TEXT	ENDS
PUBLIC	??1gzEventPlayerSerialHash@@QAE@XZ		; gzEventPlayerSerialHash::~gzEventPlayerSerialHash
; Function compile flags: /Ogtpy
;	COMDAT ??1gzEventPlayerSerialHash@@QAE@XZ
_TEXT	SEGMENT
??1gzEventPlayerSerialHash@@QAE@XZ PROC			; gzEventPlayerSerialHash::~gzEventPlayerSerialHash, COMDAT
; _this$ = ecx

; 94   : 	{

	push	esi
	mov	esi, ecx

; 95   : 		this->m_hash.Free_String();

	cmp	DWORD PTR [esi+24], 0
	je	SHORT $LN7@gzEventPla@2
	push	OFFSET ??_C@_0BG@IMAMDEJB@ncString?3?3Free_String?$AA@
	push	216					; 000000d8H
	push	OFFSET ??_C@_0CB@MAJIAFJL@d?3?2source?5code?2nc?5lib?2ncString?4h@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	eax, DWORD PTR [esi+24]
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
$LN7@gzEventPla@2:
	mov	DWORD PTR [esi+24], 0
	mov	DWORD PTR [esi+28], 0
	mov	DWORD PTR [esi+32], 0
	pop	esi

; 96   : 	};

	ret	0
??1gzEventPlayerSerialHash@@QAE@XZ ENDP			; gzEventPlayerSerialHash::~gzEventPlayerSerialHash
_TEXT	ENDS
PUBLIC	??1gzEventNetWolPage@@QAE@XZ			; gzEventNetWolPage::~gzEventNetWolPage
; Function compile flags: /Ogtpy
;	COMDAT ??1gzEventNetWolPage@@QAE@XZ
_TEXT	SEGMENT
??1gzEventNetWolPage@@QAE@XZ PROC			; gzEventNetWolPage::~gzEventNetWolPage, COMDAT
; _this$ = ecx

; 111  : 	{

	push	esi
	push	edi
	mov	esi, ecx

; 112  : 		this->m_sender.Free_String();

	xor	edi, edi
	cmp	DWORD PTR [esi+16], edi
	je	SHORT $LN7@gzEventNet
	push	OFFSET ??_C@_0BG@IMAMDEJB@ncString?3?3Free_String?$AA@
	push	216					; 000000d8H
	push	OFFSET ??_C@_0CB@MAJIAFJL@d?3?2source?5code?2nc?5lib?2ncString?4h@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	eax, DWORD PTR [esi+16]
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
$LN7@gzEventNet:
	mov	DWORD PTR [esi+16], edi
	mov	DWORD PTR [esi+20], edi
	mov	DWORD PTR [esi+24], edi

; 113  : 		this->m_message.Free_String();

	cmp	DWORD PTR [esi+28], edi
	je	SHORT $LN12@gzEventNet
	push	OFFSET ??_C@_0BG@IMAMDEJB@ncString?3?3Free_String?$AA@
	push	216					; 000000d8H
	push	OFFSET ??_C@_0CB@MAJIAFJL@d?3?2source?5code?2nc?5lib?2ncString?4h@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	ecx, DWORD PTR [esi+28]
	push	ecx
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
$LN12@gzEventNet:
	mov	DWORD PTR [esi+28], edi
	mov	DWORD PTR [esi+32], edi
	mov	DWORD PTR [esi+36], edi
	pop	edi
	pop	esi

; 114  : 	};

	ret	0
??1gzEventNetWolPage@@QAE@XZ ENDP			; gzEventNetWolPage::~gzEventNetWolPage
_TEXT	ENDS
PUBLIC	??1gzEventNetSerialAuth@@QAE@XZ			; gzEventNetSerialAuth::~gzEventNetSerialAuth
; Function compile flags: /Ogtpy
;	COMDAT ??1gzEventNetSerialAuth@@QAE@XZ
_TEXT	SEGMENT
??1gzEventNetSerialAuth@@QAE@XZ PROC			; gzEventNetSerialAuth::~gzEventNetSerialAuth, COMDAT
; _this$ = ecx

; 126  : 	{

	push	esi
	mov	esi, ecx

; 127  : 		this->m_message.Free_String();

	cmp	DWORD PTR [esi+24], 0
	je	SHORT $LN7@gzEventNet@2
	push	OFFSET ??_C@_0BG@IMAMDEJB@ncString?3?3Free_String?$AA@
	push	216					; 000000d8H
	push	OFFSET ??_C@_0CB@MAJIAFJL@d?3?2source?5code?2nc?5lib?2ncString?4h@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	eax, DWORD PTR [esi+24]
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
$LN7@gzEventNet@2:
	mov	DWORD PTR [esi+24], 0
	mov	DWORD PTR [esi+28], 0
	mov	DWORD PTR [esi+32], 0
	pop	esi

; 128  : 	};

	ret	0
??1gzEventNetSerialAuth@@QAE@XZ ENDP			; gzEventNetSerialAuth::~gzEventNetSerialAuth
_TEXT	ENDS
PUBLIC	?GetEventType@gzEvtHandler@@QAEKXZ		; gzEvtHandler::GetEventType
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzevent.h
;	COMDAT ?GetEventType@gzEvtHandler@@QAEKXZ
_TEXT	SEGMENT
?GetEventType@gzEvtHandler@@QAEKXZ PROC			; gzEvtHandler::GetEventType, COMDAT
; _this$ = ecx

; 70   : 		return this->m_recvEvtType;

	mov	eax, DWORD PTR [ecx+16]

; 71   : 	};

	ret	0
?GetEventType@gzEvtHandler@@QAEKXZ ENDP			; gzEvtHandler::GetEventType
_TEXT	ENDS
PUBLIC	?In@gzConsole@@SAXPBDZZ				; gzConsole::In
EXTRN	__vsnprintf:PROC
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzmanager.h
;	COMDAT ?In@gzConsole@@SAXPBDZZ
_TEXT	SEGMENT
_buf$ = -256						; size = 256
_msg$ = 8						; size = 4
?In@gzConsole@@SAXPBDZZ PROC				; gzConsole::In, COMDAT

; 86   : 	static void In(const char *msg, ...) {

	push	ebp
	mov	ebp, esp

; 87   : 		va_list args;
; 88   : 		va_start(args,msg);
; 89   : 		char buf[256];
; 90   : 		_vsnprintf(buf,255,msg,args);

	mov	ecx, DWORD PTR _msg$[ebp]
	sub	esp, 256				; 00000100H
	lea	eax, DWORD PTR _msg$[ebp+4]
	push	eax
	push	ecx
	lea	edx, DWORD PTR _buf$[ebp]
	push	255					; 000000ffH
	push	edx
	call	__vsnprintf
	add	esp, 16					; 00000010H

; 91   : 		_asm {
; 92   : 			mov eax, 0x428960

	mov	eax, 4360544				; 00428960H

; 93   : 			lea edx, buf

	lea	edx, DWORD PTR _buf$[ebp]

; 94   : 			push edx

	push	edx

; 95   : 			call eax

	call	eax

; 96   : 		}
; 97   : 		va_end(args);
; 98   : 	}

	mov	esp, ebp
	pop	ebp
	ret	0
?In@gzConsole@@SAXPBDZZ ENDP				; gzConsole::In
_TEXT	ENDS
PUBLIC	?Write@HookBase@@IAEXKPAXH@Z			; HookBase::Write
EXTRN	__imp__CloseHandle@4:PROC
EXTRN	__imp__WriteProcessMemory@20:PROC
EXTRN	__imp__OpenProcess@12:PROC
EXTRN	__imp__GetCurrentProcessId@0:PROC
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzhook.h
;	COMDAT ?Write@HookBase@@IAEXKPAXH@Z
_TEXT	SEGMENT
_Address$ = 8						; size = 4
_Bytes$ = 12						; size = 4
_Size$ = 16						; size = 4
?Write@HookBase@@IAEXKPAXH@Z PROC			; HookBase::Write, COMDAT
; _this$ = ecx

; 20   : 	{

	push	esi

; 21   : 		unsigned long PID = GetCurrentProcessId();

	call	DWORD PTR __imp__GetCurrentProcessId@0

; 22   : 		HANDLE PHandle = OpenProcess(PROCESS_ALL_ACCESS, false, PID);

	push	eax
	push	0
	push	2035711					; 001f0fffH
	call	DWORD PTR __imp__OpenProcess@12

; 23   : 		WriteProcessMemory(PHandle, (void *)Address, Bytes, Size, NULL);

	mov	ecx, DWORD PTR _Bytes$[esp]
	mov	edx, DWORD PTR _Address$[esp]
	push	0
	mov	esi, eax
	mov	eax, DWORD PTR _Size$[esp+4]
	push	eax
	push	ecx
	push	edx
	push	esi
	call	DWORD PTR __imp__WriteProcessMemory@20

; 24   : 		CloseHandle(PHandle);

	push	esi
	call	DWORD PTR __imp__CloseHandle@4
	pop	esi

; 25   : 	}

	ret	12					; 0000000cH
?Write@HookBase@@IAEXKPAXH@Z ENDP			; HookBase::Write
_TEXT	ENDS
PUBLIC	?Read@HookBase@@IAEXKHPAX@Z			; HookBase::Read
EXTRN	__imp__ReadProcessMemory@20:PROC
; Function compile flags: /Ogtpy
;	COMDAT ?Read@HookBase@@IAEXKHPAX@Z
_TEXT	SEGMENT
_Address$ = 8						; size = 4
_Size$ = 12						; size = 4
_buf$ = 16						; size = 4
?Read@HookBase@@IAEXKHPAX@Z PROC			; HookBase::Read, COMDAT
; _this$ = ecx

; 27   : 	{

	push	esi

; 28   : 		unsigned long PID = GetCurrentProcessId();

	call	DWORD PTR __imp__GetCurrentProcessId@0

; 29   : 		HANDLE PHandle = OpenProcess(PROCESS_ALL_ACCESS, false, PID);

	push	eax
	push	0
	push	2035711					; 001f0fffH
	call	DWORD PTR __imp__OpenProcess@12

; 30   : 		ReadProcessMemory(PHandle,(void *)Address,(void *)buf,Size,NULL);

	mov	ecx, DWORD PTR _buf$[esp]
	mov	edx, DWORD PTR _Address$[esp]
	push	0
	mov	esi, eax
	mov	eax, DWORD PTR _Size$[esp+4]
	push	eax
	push	ecx
	push	edx
	push	esi
	call	DWORD PTR __imp__ReadProcessMemory@20

; 31   : 		CloseHandle(PHandle);

	push	esi
	call	DWORD PTR __imp__CloseHandle@4
	pop	esi

; 32   : 	}

	ret	12					; 0000000cH
?Read@HookBase@@IAEXKHPAX@Z ENDP			; HookBase::Read
_TEXT	ENDS
PUBLIC	??0gzEventObjectBase@@QAE@XZ			; gzEventObjectBase::gzEventObjectBase
; Function compile flags: /Ogtpy
;	COMDAT ??0gzEventObjectBase@@QAE@XZ
_TEXT	SEGMENT
??0gzEventObjectBase@@QAE@XZ PROC			; gzEventObjectBase::gzEventObjectBase, COMDAT
; _this$ = ecx
	mov	eax, ecx
	mov	BYTE PTR [eax+12], 1
	ret	0
??0gzEventObjectBase@@QAE@XZ ENDP			; gzEventObjectBase::gzEventObjectBase
_TEXT	ENDS
PUBLIC	__real@00000000
PUBLIC	?Hook_TiberiumDamage@@YGXABVnc_OffenseObjectClass@@MAAUnc_Vector3@@H@Z ; Hook_TiberiumDamage
EXTRN	?gzCommands@@3PAUnc_ScriptCommands@@A:DWORD	; gzCommands
;	COMDAT __real@00000000
; File d:\source code\gzgm\gzhook.cpp
CONST	SEGMENT
__real@00000000 DD 000000000r			; 0
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?Hook_TiberiumDamage@@YGXABVnc_OffenseObjectClass@@MAAUnc_Vector3@@H@Z
_TEXT	SEGMENT
_victim$ = -4						; size = 4
_offense$ = 8						; size = 4
_damage$ = 12						; size = 4
_velocity$ = 16						; size = 4
_unk$ = 20						; size = 4
?Hook_TiberiumDamage@@YGXABVnc_OffenseObjectClass@@MAAUnc_Vector3@@H@Z PROC ; Hook_TiberiumDamage, COMDAT

; 208  : void __stdcall Hook_TiberiumDamage(const nc_OffenseObjectClass &offense, float damage, nc_Vector3 &velocity, int unk) {

	push	ecx

; 209  : 	nc_SoldierGameObj *victim;
; 210  : 	_asm mov victim, ecx

	mov	DWORD PTR _victim$[esp+4], ecx

; 211  : 	gzCommands->Send_Custom_Event(NULL, victim, 306494, 0, 0);

	fldz
	mov	eax, DWORD PTR _victim$[esp+4]
	push	ecx
	mov	ecx, DWORD PTR ?gzCommands@@3PAUnc_ScriptCommands@@A ; gzCommands
	fstp	DWORD PTR [esp]
	mov	edx, DWORD PTR [ecx+140]
	push	0
	push	306494					; 0004ad3eH
	push	eax
	push	0
	call	edx

; 212  : 	victim->Apply_Damage_Extended(offense,damage,velocity,unk);

	fld	DWORD PTR _damage$[esp+20]
	mov	edx, DWORD PTR _unk$[esp+20]
	mov	ecx, DWORD PTR _victim$[esp+24]
	mov	eax, DWORD PTR [ecx]
	mov	eax, DWORD PTR [eax+128]
	add	esp, 20					; 00000014H
	push	edx
	mov	edx, DWORD PTR _velocity$[esp+4]
	push	edx
	mov	edx, DWORD PTR _offense$[esp+8]
	push	ecx
	fstp	DWORD PTR [esp]
	push	edx
	call	eax

; 213  : }

	pop	ecx
	ret	16					; 00000010H
?Hook_TiberiumDamage@@YGXABVnc_OffenseObjectClass@@MAAUnc_Vector3@@H@Z ENDP ; Hook_TiberiumDamage
_TEXT	ENDS
PUBLIC	??0gzEventObjectKill@@QAE@XZ			; gzEventObjectKill::gzEventObjectKill
; Function compile flags: /Ogtpy
;	COMDAT ??0gzEventObjectKill@@QAE@XZ
_TEXT	SEGMENT
??0gzEventObjectKill@@QAE@XZ PROC			; gzEventObjectKill::gzEventObjectKill, COMDAT
; _this$ = ecx
	mov	eax, ecx
	mov	BYTE PTR [eax+12], 1
	ret	0
??0gzEventObjectKill@@QAE@XZ ENDP			; gzEventObjectKill::gzEventObjectKill
_TEXT	ENDS
PUBLIC	??0gzEventObjectTransition@@QAE@XZ		; gzEventObjectTransition::gzEventObjectTransition
; Function compile flags: /Ogtpy
;	COMDAT ??0gzEventObjectTransition@@QAE@XZ
_TEXT	SEGMENT
??0gzEventObjectTransition@@QAE@XZ PROC			; gzEventObjectTransition::gzEventObjectTransition, COMDAT
; _this$ = ecx
	mov	eax, ecx
	mov	BYTE PTR [eax+12], 1
	ret	0
??0gzEventObjectTransition@@QAE@XZ ENDP			; gzEventObjectTransition::gzEventObjectTransition
_TEXT	ENDS
PUBLIC	??0gzEventObjectJump@@QAE@XZ			; gzEventObjectJump::gzEventObjectJump
; Function compile flags: /Ogtpy
;	COMDAT ??0gzEventObjectJump@@QAE@XZ
_TEXT	SEGMENT
??0gzEventObjectJump@@QAE@XZ PROC			; gzEventObjectJump::gzEventObjectJump, COMDAT
; _this$ = ecx
	mov	eax, ecx
	mov	BYTE PTR [eax+12], 1
	ret	0
??0gzEventObjectJump@@QAE@XZ ENDP			; gzEventObjectJump::gzEventObjectJump
_TEXT	ENDS
PUBLIC	??0gzEventObjectC4Detonate@@QAE@XZ		; gzEventObjectC4Detonate::gzEventObjectC4Detonate
; Function compile flags: /Ogtpy
;	COMDAT ??0gzEventObjectC4Detonate@@QAE@XZ
_TEXT	SEGMENT
??0gzEventObjectC4Detonate@@QAE@XZ PROC			; gzEventObjectC4Detonate::gzEventObjectC4Detonate, COMDAT
; _this$ = ecx
	mov	eax, ecx
	mov	BYTE PTR [eax+12], 1
	ret	0
??0gzEventObjectC4Detonate@@QAE@XZ ENDP			; gzEventObjectC4Detonate::gzEventObjectC4Detonate
_TEXT	ENDS
PUBLIC	??0gzEventObjectPowerupGrant@@QAE@XZ		; gzEventObjectPowerupGrant::gzEventObjectPowerupGrant
; Function compile flags: /Ogtpy
;	COMDAT ??0gzEventObjectPowerupGrant@@QAE@XZ
_TEXT	SEGMENT
??0gzEventObjectPowerupGrant@@QAE@XZ PROC		; gzEventObjectPowerupGrant::gzEventObjectPowerupGrant, COMDAT
; _this$ = ecx
	mov	eax, ecx
	mov	BYTE PTR [eax+12], 1
	ret	0
??0gzEventObjectPowerupGrant@@QAE@XZ ENDP		; gzEventObjectPowerupGrant::gzEventObjectPowerupGrant
_TEXT	ENDS
PUBLIC	??0gzEventObjectFire@@QAE@XZ			; gzEventObjectFire::gzEventObjectFire
; Function compile flags: /Ogtpy
;	COMDAT ??0gzEventObjectFire@@QAE@XZ
_TEXT	SEGMENT
??0gzEventObjectFire@@QAE@XZ PROC			; gzEventObjectFire::gzEventObjectFire, COMDAT
; _this$ = ecx
	mov	eax, ecx
	mov	BYTE PTR [eax+12], 1
	ret	0
??0gzEventObjectFire@@QAE@XZ ENDP			; gzEventObjectFire::gzEventObjectFire
_TEXT	ENDS
PUBLIC	??0gzEventPlayerBase@@QAE@XZ			; gzEventPlayerBase::gzEventPlayerBase
; Function compile flags: /Ogtpy
;	COMDAT ??0gzEventPlayerBase@@QAE@XZ
_TEXT	SEGMENT
??0gzEventPlayerBase@@QAE@XZ PROC			; gzEventPlayerBase::gzEventPlayerBase, COMDAT
; _this$ = ecx
	mov	eax, ecx
	mov	BYTE PTR [eax+12], 1
	ret	0
??0gzEventPlayerBase@@QAE@XZ ENDP			; gzEventPlayerBase::gzEventPlayerBase
_TEXT	ENDS
PUBLIC	??0gzEventPlayerChat@@QAE@XZ			; gzEventPlayerChat::gzEventPlayerChat
; Function compile flags: /Ogtpy
;	COMDAT ??0gzEventPlayerChat@@QAE@XZ
_TEXT	SEGMENT
??0gzEventPlayerChat@@QAE@XZ PROC			; gzEventPlayerChat::gzEventPlayerChat, COMDAT
; _this$ = ecx
	mov	eax, ecx
	xor	ecx, ecx
	mov	BYTE PTR [eax+12], 1
	mov	DWORD PTR [eax+28], ecx
	mov	DWORD PTR [eax+32], ecx
	mov	DWORD PTR [eax+36], ecx
	ret	0
??0gzEventPlayerChat@@QAE@XZ ENDP			; gzEventPlayerChat::gzEventPlayerChat
_TEXT	ENDS
PUBLIC	??0gzEventPlayerRadio@@QAE@XZ			; gzEventPlayerRadio::gzEventPlayerRadio
; Function compile flags: /Ogtpy
;	COMDAT ??0gzEventPlayerRadio@@QAE@XZ
_TEXT	SEGMENT
??0gzEventPlayerRadio@@QAE@XZ PROC			; gzEventPlayerRadio::gzEventPlayerRadio, COMDAT
; _this$ = ecx
	mov	eax, ecx
	mov	BYTE PTR [eax+12], 1
	ret	0
??0gzEventPlayerRadio@@QAE@XZ ENDP			; gzEventPlayerRadio::gzEventPlayerRadio
_TEXT	ENDS
PUBLIC	??0gzEventPlayerSerialHash@@QAE@XZ		; gzEventPlayerSerialHash::gzEventPlayerSerialHash
; Function compile flags: /Ogtpy
;	COMDAT ??0gzEventPlayerSerialHash@@QAE@XZ
_TEXT	SEGMENT
??0gzEventPlayerSerialHash@@QAE@XZ PROC			; gzEventPlayerSerialHash::gzEventPlayerSerialHash, COMDAT
; _this$ = ecx
	mov	eax, ecx
	xor	ecx, ecx
	mov	BYTE PTR [eax+12], 1
	mov	DWORD PTR [eax+24], ecx
	mov	DWORD PTR [eax+28], ecx
	mov	DWORD PTR [eax+32], ecx
	ret	0
??0gzEventPlayerSerialHash@@QAE@XZ ENDP			; gzEventPlayerSerialHash::gzEventPlayerSerialHash
_TEXT	ENDS
PUBLIC	??0gzEventPlayerPurchase@@QAE@XZ		; gzEventPlayerPurchase::gzEventPlayerPurchase
; Function compile flags: /Ogtpy
;	COMDAT ??0gzEventPlayerPurchase@@QAE@XZ
_TEXT	SEGMENT
??0gzEventPlayerPurchase@@QAE@XZ PROC			; gzEventPlayerPurchase::gzEventPlayerPurchase, COMDAT
; _this$ = ecx
	mov	eax, ecx
	mov	BYTE PTR [eax+12], 1
	ret	0
??0gzEventPlayerPurchase@@QAE@XZ ENDP			; gzEventPlayerPurchase::gzEventPlayerPurchase
_TEXT	ENDS
PUBLIC	??0gzEventNetBase@@QAE@XZ			; gzEventNetBase::gzEventNetBase
; Function compile flags: /Ogtpy
;	COMDAT ??0gzEventNetBase@@QAE@XZ
_TEXT	SEGMENT
??0gzEventNetBase@@QAE@XZ PROC				; gzEventNetBase::gzEventNetBase, COMDAT
; _this$ = ecx
	mov	eax, ecx
	mov	BYTE PTR [eax+12], 1
	ret	0
??0gzEventNetBase@@QAE@XZ ENDP				; gzEventNetBase::gzEventNetBase
_TEXT	ENDS
PUBLIC	??0gzEventNetSerialAuth@@QAE@XZ			; gzEventNetSerialAuth::gzEventNetSerialAuth
; Function compile flags: /Ogtpy
;	COMDAT ??0gzEventNetSerialAuth@@QAE@XZ
_TEXT	SEGMENT
??0gzEventNetSerialAuth@@QAE@XZ PROC			; gzEventNetSerialAuth::gzEventNetSerialAuth, COMDAT
; _this$ = ecx
	mov	eax, ecx
	xor	ecx, ecx
	mov	BYTE PTR [eax+12], 1
	mov	DWORD PTR [eax+24], ecx
	mov	DWORD PTR [eax+28], ecx
	mov	DWORD PTR [eax+32], ecx
	ret	0
??0gzEventNetSerialAuth@@QAE@XZ ENDP			; gzEventNetSerialAuth::gzEventNetSerialAuth
_TEXT	ENDS
PUBLIC	__real@40a00000
PUBLIC	?Proc_BeaconUpdateState@@YGXPAVnc_BeaconGameObj@@@Z ; Proc_BeaconUpdateState
EXTRN	?Restore_Wind@nc_WeatherMgrClass@@SAXM@Z:PROC	; nc_WeatherMgrClass::Restore_Wind
EXTRN	?Restore_Lightning@nc_BackgroundMgrClass@@SAXM@Z:PROC ; nc_BackgroundMgrClass::Restore_Lightning
EXTRN	?Restore_Clouds@nc_BackgroundMgrClass@@SAXM@Z:PROC ; nc_BackgroundMgrClass::Restore_Clouds
EXTRN	?Restore_Sky_Tint@nc_BackgroundMgrClass@@SAXM@Z:PROC ; nc_BackgroundMgrClass::Restore_Sky_Tint
EXTRN	?Set_Beacon_Destroyed_Base@nc_BaseControllerClass@@QAEX_N@Z:PROC ; nc_BaseControllerClass::Set_Beacon_Destroyed_Base
EXTRN	?Destroy_Base@nc_BaseControllerClass@@QAEXXZ:PROC ; nc_BaseControllerClass::Destroy_Base
EXTRN	?Overlap_Test@nc_CollisionMath@@SAHABVnc_OBBoxClass@@ABUnc_Vector3@@@Z:PROC ; nc_CollisionMath::Overlap_Test
EXTRN	?Find_Base@nc_BaseControllerClass@@SAPAV1@H@Z:PROC ; nc_BaseControllerClass::Find_Base
EXTRN	?BeaconPlacementEndsGame@nc_CombatManager@@2AA_NA:DWORD ; nc_CombatManager::BeaconPlacementEndsGame
EXTRN	?__as@nc_ReferencerClass@@QAEXPBVnc_ScriptableGameObj@@@Z:PROC ; nc_ReferencerClass::__as
EXTRN	?Start_Observers@nc_ScriptableGameObj@@QAEXXZ:PROC ; nc_ScriptableGameObj::Start_Observers
EXTRN	?Set_Position@nc_PhysicalGameObj@@QAEXABUnc_Vector3@@@Z:PROC ; nc_PhysicalGameObj::Set_Position
EXTRN	?Create_Object@nc_ObjectLibraryManager@@SAPAVnc_ScriptableGameObj@@PBD@Z:PROC ; nc_ObjectLibraryManager::Create_Object
EXTRN	?Find_Definition@nc_DefinitionMgrClass@@SAPAVnc_DefinitionClass@@K_N@Z:PROC ; nc_DefinitionMgrClass::Find_Definition
EXTRN	?Set_State@nc_BeaconGameObj@@QAEXH@Z:PROC	; nc_BeaconGameObj::Set_State
EXTRN	?FrameSeconds@nc_TimeManager@@2AAMA:DWORD	; nc_TimeManager::FrameSeconds
;	COMDAT __real@40a00000
CONST	SEGMENT
__real@40a00000 DD 040a00000r			; 5
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?Proc_BeaconUpdateState@@YGXPAVnc_BeaconGameObj@@@Z
_TEXT	SEGMENT
_beaconPos$58433 = -12					; size = 12
_animPos$58417 = -12					; size = 12
_Beacon$ = 8						; size = 4
?Proc_BeaconUpdateState@@YGXPAVnc_BeaconGameObj@@@Z PROC ; Proc_BeaconUpdateState, COMDAT

; 1126 : 	Beacon->ArmTime -= nc_TimeManager::FrameSeconds;

	mov	eax, DWORD PTR ?FrameSeconds@nc_TimeManager@@2AAMA ; nc_TimeManager::FrameSeconds
	sub	esp, 12					; 0000000cH
	push	ebx
	push	esi
	mov	esi, DWORD PTR _Beacon$[esp+16]

; 1127 : 	nc_BeaconGameObjDef *BeaconDef = (nc_BeaconGameObjDef *)Beacon->definition;
; 1128 : 	if (Beacon->PreDetonateCinematicActive)

	cmp	BYTE PTR [esi+2012], 0
	fld	DWORD PTR [esi+1988]
	fsub	DWORD PTR [eax]
	mov	ebx, DWORD PTR [esi+1724]
	push	edi
	fstp	DWORD PTR [esi+1988]
	fldz
	je	$LN21@Proc_Beaco

; 1129 : 	{
; 1130 : 		if ((Beacon->DetonateTime -= nc_TimeManager::FrameSeconds) <= 0.0f)

	fld	DWORD PTR [esi+1996]
	mov	ecx, DWORD PTR ?FrameSeconds@nc_TimeManager@@2AAMA ; nc_TimeManager::FrameSeconds
	fsub	DWORD PTR [ecx]
	fst	DWORD PTR [esi+1996]
	fcomp	ST(1)
	fnstsw	ax
	test	ah, 65					; 00000041H
	jp	SHORT $LN16@Proc_Beaco

; 1131 : 			Beacon->Set_State(4);

	push	4
	fstp	ST(0)
	mov	ecx, esi
	call	?Set_State@nc_BeaconGameObj@@QAEXH@Z	; nc_BeaconGameObj::Set_State
	fldz
$LN16@Proc_Beaco:

; 1132 : 		if (Beacon->PreDetonateCinematicDelay > 0.0f)

	fcom	DWORD PTR [esi+1992]
	fnstsw	ax
	test	ah, 5
	jp	$LN21@Proc_Beaco

; 1133 : 		{
; 1134 : 			Beacon->PreDetonateCinematicDelay -= nc_TimeManager::FrameSeconds;

	fld	DWORD PTR [esi+1992]
	mov	edx, DWORD PTR ?FrameSeconds@nc_TimeManager@@2AAMA ; nc_TimeManager::FrameSeconds
	fsub	DWORD PTR [edx]
	fst	DWORD PTR [esi+1992]

; 1135 : 			if (Beacon->PreDetonateCinematicDelay <= 0.0f)

	fcomp	ST(1)
	fnstsw	ax
	test	ah, 65					; 00000041H
	jp	SHORT $LN21@Proc_Beaco

; 1136 : 			{
; 1137 : 				Beacon->PreDetonateCinematicDelay = 0.0f;
; 1138 : 				nc_Vector3 animPos;
; 1139 : 				animPos.X = Beacon->Physics->PhysRender->Transform.PosX;

	mov	eax, DWORD PTR [esi+1908]
	fstp	DWORD PTR [esi+1992]
	mov	ecx, DWORD PTR [eax+60]
	fld	DWORD PTR [ecx+40]

; 1140 : 				animPos.Y = Beacon->Physics->PhysRender->Transform.PosY;
; 1141 : 				animPos.Z = Beacon->Physics->PhysRender->Transform.PosZ;
; 1142 : 				nc_CinematicGameObj *animObj = (nc_CinematicGameObj *)nc_ObjectLibraryManager::Create_Object(nc_DefinitionMgrClass::Find_Definition(BeaconDef->PreDetonateCinematicObj, true)->Get_Name());

	mov	ecx, DWORD PTR [ebx+224]
	fstp	DWORD PTR _animPos$58417[esp+24]
	mov	edx, DWORD PTR [eax+60]
	fld	DWORD PTR [edx+56]
	push	1
	fstp	DWORD PTR _animPos$58417[esp+32]
	mov	eax, DWORD PTR [eax+60]
	fld	DWORD PTR [eax+72]
	push	ecx
	fstp	DWORD PTR _animPos$58417[esp+40]
	call	?Find_Definition@nc_DefinitionMgrClass@@SAPAVnc_DefinitionClass@@K_N@Z ; nc_DefinitionMgrClass::Find_Definition
	mov	edx, DWORD PTR [eax]
	mov	ecx, eax
	mov	eax, DWORD PTR [edx+48]
	add	esp, 8
	call	eax
	push	eax
	call	?Create_Object@nc_ObjectLibraryManager@@SAPAVnc_ScriptableGameObj@@PBD@Z ; nc_ObjectLibraryManager::Create_Object
	mov	edi, eax
	add	esp, 4

; 1143 : 				if (animObj != NULL)

	test	edi, edi
	je	SHORT $LN20@Proc_Beaco

; 1144 : 				{
; 1145 : 					animObj->Set_Position(animPos);

	lea	ecx, DWORD PTR _animPos$58417[esp+24]
	push	ecx
	mov	ecx, edi
	call	?Set_Position@nc_PhysicalGameObj@@QAEXABUnc_Vector3@@@Z ; nc_PhysicalGameObj::Set_Position

; 1146 : 					animObj->Start_Observers();

	mov	ecx, edi
	call	?Start_Observers@nc_ScriptableGameObj@@QAEXXZ ; nc_ScriptableGameObj::Start_Observers

; 1147 : 					Beacon->CinematicObj.__as(animObj);

	push	edi
	lea	ecx, DWORD PTR [esi+2020]
	call	?__as@nc_ReferencerClass@@QAEXPBVnc_ScriptableGameObj@@@Z ; nc_ReferencerClass::__as
$LN20@Proc_Beaco:
	fldz
$LN21@Proc_Beaco:

; 1148 : 				}
; 1149 : 			}
; 1150 : 		}
; 1151 : 	}
; 1152 : 	switch (Beacon->State)

	mov	eax, DWORD PTR [esi+1984]
	sub	eax, 1
	je	$LN10@Proc_Beaco
	sub	eax, 3
	jne	$LN36@Proc_Beaco

; 1157 : 			break;
; 1158 : 		case 2: // Deployed
; 1159 : 			break;
; 1160 : 		case 4: // Detonated, cleanups
; 1161 : 			if (Beacon->ArmTime != 0.0f)

	fcomp	DWORD PTR [esi+1988]
	fnstsw	ax
	test	ah, 68					; 00000044H
	jnp	$LN9@Proc_Beaco

; 1162 : 			{
; 1163 : 				if (nc_CombatManager::BeaconPlacementEndsGame == true)

	mov	edx, DWORD PTR ?BeaconPlacementEndsGame@nc_CombatManager@@2AA_NA ; nc_CombatManager::BeaconPlacementEndsGame
	cmp	BYTE PTR [edx], 1
	jne	SHORT $LN3@Proc_Beaco

; 1164 : 				{
; 1165 : 					nc_BaseControllerClass *enemyBase = nc_BaseControllerClass::Find_Base(Beacon->Get_Player_Type() ^ 1);

	mov	eax, DWORD PTR [esi]
	mov	edx, DWORD PTR [eax+104]
	mov	ecx, esi
	call	edx
	xor	eax, 1
	push	eax
	call	?Find_Base@nc_BaseControllerClass@@SAPAV1@H@Z ; nc_BaseControllerClass::Find_Base
	mov	edi, eax
	add	esp, 4

; 1166 : 					if (enemyBase != NULL)

	test	edi, edi
	je	SHORT $LN3@Proc_Beaco

; 1167 : 					{
; 1168 : 						nc_Vector3 beaconPos;
; 1169 : 						Beacon->Get_Position(&beaconPos);

	mov	eax, DWORD PTR [esi]
	mov	edx, DWORD PTR [eax+56]
	lea	ecx, DWORD PTR _beaconPos$58433[esp+24]
	push	ecx
	mov	ecx, esi
	call	edx

; 1170 : 						if (nc_CollisionMath::Overlap_Test(enemyBase->BeaconZone, beaconPos) != 1)

	lea	eax, DWORD PTR _beaconPos$58433[esp+24]
	push	eax
	lea	ecx, DWORD PTR [edi+1756]
	push	ecx
	call	?Overlap_Test@nc_CollisionMath@@SAHABVnc_OBBoxClass@@ABUnc_Vector3@@@Z ; nc_CollisionMath::Overlap_Test
	add	esp, 8
	cmp	eax, 1
	je	SHORT $LN3@Proc_Beaco

; 1171 : 						{
; 1172 : 							//if (canPedApprove(enemyBase->team ^ 1) == true) /* Addition routine to fit my modification */
; 1173 : 							//{
; 1174 : 								enemyBase->Destroy_Base();

	mov	ecx, edi
	call	?Destroy_Base@nc_BaseControllerClass@@QAEXXZ ; nc_BaseControllerClass::Destroy_Base

; 1175 : 								enemyBase->Set_Beacon_Destroyed_Base(true);

	push	1
	mov	ecx, edi
	call	?Set_Beacon_Destroyed_Base@nc_BaseControllerClass@@QAEX_N@Z ; nc_BaseControllerClass::Set_Beacon_Destroyed_Base
$LN3@Proc_Beaco:

; 1176 : 							//}
; 1177 : 						}
; 1178 : 					}
; 1179 : 				}
; 1180 : 				if (BeaconDef->IsNuke == true)

	cmp	BYTE PTR [ebx+236], 1

; 1181 : 					nc_BackgroundMgrClass::Restore_Sky_Tint(5.0f);

	fld	DWORD PTR __real@40a00000
	push	ecx
	fstp	DWORD PTR [esp]
	jne	SHORT $LN2@Proc_Beaco
	call	?Restore_Sky_Tint@nc_BackgroundMgrClass@@SAXM@Z ; nc_BackgroundMgrClass::Restore_Sky_Tint

; 1182 : 				else

	jmp	SHORT $LN38@Proc_Beaco
$LN2@Proc_Beaco:

; 1183 : 				{
; 1184 : 					nc_BackgroundMgrClass::Restore_Clouds(5.0f);

	call	?Restore_Clouds@nc_BackgroundMgrClass@@SAXM@Z ; nc_BackgroundMgrClass::Restore_Clouds

; 1185 : 					nc_BackgroundMgrClass::Restore_Lightning(5.0f);

	fld	DWORD PTR __real@40a00000
	fstp	DWORD PTR [esp]
	call	?Restore_Lightning@nc_BackgroundMgrClass@@SAXM@Z ; nc_BackgroundMgrClass::Restore_Lightning
$LN38@Proc_Beaco:

; 1186 : 				}
; 1187 : 				nc_WeatherMgrClass::Restore_Wind(5.0f);

	fld	DWORD PTR __real@40a00000
	add	esp, 4
	push	ecx
	fstp	DWORD PTR [esp]
	call	?Restore_Wind@nc_WeatherMgrClass@@SAXM@Z ; nc_WeatherMgrClass::Restore_Wind

; 1188 : 				Beacon->Set_Delete_Pending();

	mov	edx, DWORD PTR [esi+8]
	mov	eax, DWORD PTR [edx+44]
	lea	ecx, DWORD PTR [esi+8]
	add	esp, 4
	call	eax
	pop	edi
	pop	esi
	pop	ebx

; 1189 : 			}
; 1190 : 			break;
; 1191 : 	}
; 1192 : }

	add	esp, 12					; 0000000cH
	ret	4
$LN10@Proc_Beaco:

; 1153 : 	{
; 1154 : 		case 1: // Begin arming
; 1155 : 			if ((Beacon->ArmTime / BeaconDef->ArmTime) <= 0.0f)

	fld	DWORD PTR [esi+1988]
	fdiv	DWORD PTR [ebx+180]
	fcompp
	fnstsw	ax
	test	ah, 65					; 00000041H
	jp	SHORT $LN9@Proc_Beaco

; 1156 : 				Beacon->Set_State(2);

	push	2
	mov	ecx, esi
	call	?Set_State@nc_BeaconGameObj@@QAEXH@Z	; nc_BeaconGameObj::Set_State
	pop	edi
	pop	esi
	pop	ebx

; 1189 : 			}
; 1190 : 			break;
; 1191 : 	}
; 1192 : }

	add	esp, 12					; 0000000cH
	ret	4
$LN36@Proc_Beaco:

; 1148 : 				}
; 1149 : 			}
; 1150 : 		}
; 1151 : 	}
; 1152 : 	switch (Beacon->State)

	fstp	ST(0)
$LN9@Proc_Beaco:
	pop	edi
	pop	esi
	pop	ebx

; 1189 : 			}
; 1190 : 			break;
; 1191 : 	}
; 1192 : }

	add	esp, 12					; 0000000cH
	ret	4
?Proc_BeaconUpdateState@@YGXPAVnc_BeaconGameObj@@@Z ENDP ; Proc_BeaconUpdateState
_TEXT	ENDS
PUBLIC	?Hook_BeaconUpdateState@@YAXXZ			; Hook_BeaconUpdateState
; Function compile flags: /Ogtpy
;	COMDAT ?Hook_BeaconUpdateState@@YAXXZ
_TEXT	SEGMENT
?Hook_BeaconUpdateState@@YAXXZ PROC			; Hook_BeaconUpdateState, COMDAT

; 1195 : 	_asm {
; 1196 : 		push ecx

	push	ecx

; 1197 : 		call Proc_BeaconUpdateState

	call	?Proc_BeaconUpdateState@@YGXPAVnc_BeaconGameObj@@@Z ; Proc_BeaconUpdateState

; 1198 : 		retn

	ret	0
?Hook_BeaconUpdateState@@YAXXZ ENDP			; Hook_BeaconUpdateState
_TEXT	ENDS
PUBLIC	?Patch_cRemoteHostSize@@YAXXZ			; Patch_cRemoteHostSize
; Function compile flags: /Odtpy
;	COMDAT ?Patch_cRemoteHostSize@@YAXXZ
_TEXT	SEGMENT
?Patch_cRemoteHostSize@@YAXXZ PROC			; Patch_cRemoteHostSize, COMDAT

; 1210 : 	//CanSetMaxPlayers = true;
; 1211 : 	_asm {
; 1212 : 		mov eax, 127 // Max connections, nc_cRemoteHost array size

	mov	eax, 127				; 0000007fH

; 1213 : #if ISDEV()
; 1214 : 		// Force to bind the IP to 0.0.0.0
; 1215 : 		mov edx, 0

	mov	edx, 0

; 1216 : 		mov [esp+0x10], edx

	mov	DWORD PTR [esp+16], edx

; 1217 : #endif
; 1218 : 		sub esp, 0x10

	sub	esp, 16					; 00000010H

; 1219 : 		mov edx, 0x617ED7

	mov	edx, 6389463				; 00617ed7H

; 1220 : 		jmp edx

	jmp	edx
?Patch_cRemoteHostSize@@YAXXZ ENDP			; Patch_cRemoteHostSize
_TEXT	ENDS
PUBLIC	?Patch_WolLadderMapFix@@YGXPAD0@Z		; Patch_WolLadderMapFix
EXTRN	?cGame@@3AAPAVnc_cGameData@@A:DWORD		; cGame
EXTRN	_memset:PROC
; Function compile flags: /Ogtpy
;	COMDAT ?Patch_WolLadderMapFix@@YGXPAD0@Z
_TEXT	SEGMENT
_Map$ = -128						; size = 128
_data$ = 8						; size = 4
_string$ = 12						; size = 4
?Patch_WolLadderMapFix@@YGXPAD0@Z PROC			; Patch_WolLadderMapFix, COMDAT

; 1229 : {

	push	ebp
	mov	ebp, esp
	sub	esp, 128				; 00000080H
	push	esi

; 1230 : 	_asm push ecx

	push	ecx

; 1231 : 	char Map[128];
; 1232 : 	memset(Map,0,sizeof(Map));

	push	128					; 00000080H
	lea	eax, DWORD PTR _Map$[ebp]
	push	0
	push	eax
	call	_memset

; 1233 : 	if ((cGame->MapNumber -1) == -1)

	mov	ecx, DWORD PTR ?cGame@@3AAPAVnc_cGameData@@A ; cGame
	mov	eax, DWORD PTR [ecx]
	mov	ecx, DWORD PTR [eax+24]
	lea	edx, DWORD PTR [ecx-1]
	add	esp, 12					; 0000000cH
	cmp	edx, -1
	jne	SHORT $LN8@Patch_WolL

; 1234 : 	{
; 1235 : 		for (int i = 0; i < 100; i++)

	mov	esi, 48					; 00000030H
$LN7@Patch_WolL:

; 1236 : 		{
; 1237 : 			if (!*cGame->MapList[i].m_Buffer)

	mov	eax, DWORD PTR ?cGame@@3AAPAVnc_cGameData@@A ; cGame
	mov	ecx, DWORD PTR [eax]
	mov	eax, DWORD PTR [esi+ecx]
	cmp	BYTE PTR [eax], 0
	je	SHORT $LN1@Patch_WolL

; 1238 : 				break;
; 1239 : 			strncpy(Map,cGame->MapList[i].m_Buffer,127);

	push	127					; 0000007fH
	push	eax
	lea	edx, DWORD PTR _Map$[ebp]
	push	edx
	call	_strncpy
	add	esi, 4
	add	esp, 12					; 0000000cH
	cmp	esi, 448				; 000001c0H
	jl	SHORT $LN7@Patch_WolL

; 1240 : 		}
; 1241 : 	}
; 1242 : 	else if (!*cGame->MapList[cGame->MapNumber].m_Buffer)

	jmp	SHORT $LN1@Patch_WolL
$LN8@Patch_WolL:
	mov	edx, DWORD PTR [eax+ecx*4+48]
	cmp	BYTE PTR [edx], 0

; 1243 : 		strncpy(Map,cGame->MapList[0].m_Buffer,127);

	push	127					; 0000007fH
	jne	SHORT $LN2@Patch_WolL
	mov	eax, DWORD PTR [eax+48]
	push	eax
	lea	ecx, DWORD PTR _Map$[ebp]
	push	ecx

; 1244 : 	else

	jmp	SHORT $LN15@Patch_WolL
$LN2@Patch_WolL:

; 1245 : 		strncpy(Map,cGame->MapList[cGame->MapNumber -1].m_Buffer,127);

	mov	edx, DWORD PTR [eax+ecx*4+44]
	push	edx
	lea	eax, DWORD PTR _Map$[ebp]
	push	eax
$LN15@Patch_WolL:
	call	_strncpy
	add	esp, 12					; 0000000cH
$LN1@Patch_WolL:

; 1246 : 	_asm {
; 1247 : 		pop ecx

	pop	ecx

; 1248 : 		mov eax, 0x4BB590

	mov	eax, 4961680				; 004bb590H

; 1249 : 		lea edx, Map

	lea	edx, DWORD PTR _Map$[ebp]

; 1250 : 		push edx

	push	edx

; 1251 : 		push data

	push	DWORD PTR _data$[ebp]

; 1252 : 		call eax

	call	eax

; 1253 : 	}
; 1254 : }

	pop	esi
	mov	esp, ebp
	pop	ebp
	ret	8
?Patch_WolLadderMapFix@@YGXPAD0@Z ENDP			; Patch_WolLadderMapFix
_TEXT	ENDS
PUBLIC	?Patch_WolLadderNicknameLengthExtend@@YGXPAD0@Z	; Patch_WolLadderNicknameLengthExtend
EXTRN	_wcstombs:PROC
; Function compile flags: /Ogtpy
;	COMDAT ?Patch_WolLadderNicknameLengthExtend@@YGXPAD0@Z
_TEXT	SEGMENT
_Name$ = -72						; size = 65
_p$ = -4						; size = 4
_data$ = 8						; size = 4
_string$ = 12						; size = 4
?Patch_WolLadderNicknameLengthExtend@@YGXPAD0@Z PROC	; Patch_WolLadderNicknameLengthExtend, COMDAT

; 1258 : {

	push	ebp
	mov	ebp, esp
	sub	esp, 72					; 00000048H

; 1259 : 	nc_cPlayer *p;
; 1260 : 	_asm {
; 1261 : 		push ecx

	push	ecx

; 1262 : 		mov p, esi

	mov	DWORD PTR _p$[ebp], esi

; 1263 : 	}
; 1264 : 	char Name[65];
; 1265 : 	memset(Name,0,sizeof(Name));

	push	65					; 00000041H
	lea	eax, DWORD PTR _Name$[ebp]
	push	0
	push	eax
	call	_memset

; 1266 : 	wcstombs(Name,p->PlayerName.m_Buffer,sizeof(Name) -1);

	mov	ecx, DWORD PTR _p$[ebp]
	mov	edx, DWORD PTR [ecx+1880]
	push	64					; 00000040H
	push	edx
	lea	eax, DWORD PTR _Name$[ebp]
	push	eax
	call	_wcstombs
	add	esp, 24					; 00000018H

; 1267 : 	_asm {
; 1268 : 		pop ecx

	pop	ecx

; 1269 : 		mov eax, 0x4BB590

	mov	eax, 4961680				; 004bb590H

; 1270 : 		lea edx, Name

	lea	edx, DWORD PTR _Name$[ebp]

; 1271 : 		push edx

	push	edx

; 1272 : 		push data

	push	DWORD PTR _data$[ebp]

; 1273 : 		call eax

	call	eax

; 1274 : 	}
; 1275 : }

	mov	esp, ebp
	pop	ebp
	ret	8
?Patch_WolLadderNicknameLengthExtend@@YGXPAD0@Z ENDP	; Patch_WolLadderNicknameLengthExtend
_TEXT	ENDS
PUBLIC	?Proc_PurchaseTerminalFix@@YGXPAVnc_cPlayer@@@Z	; Proc_PurchaseTerminalFix
EXTRN	?Send_Object_Update@nc_cNetwork@@SAXPAVnc_NetworkObjectClass@@H@Z:PROC ; nc_cNetwork::Send_Object_Update
EXTRN	?Set_Is_Active@nc_cPlayer@@QAEX_N@Z:PROC	; nc_cPlayer::Set_Is_Active
; Function compile flags: /Ogtpy
;	COMDAT ?Proc_PurchaseTerminalFix@@YGXPAVnc_cPlayer@@@Z
_TEXT	SEGMENT
_pData$ = 8						; size = 4
?Proc_PurchaseTerminalFix@@YGXPAVnc_cPlayer@@@Z PROC	; Proc_PurchaseTerminalFix, COMDAT

; 1279 : {

	push	esi

; 1280 : 	pData->Set_Is_Active(true);

	mov	esi, DWORD PTR _pData$[esp]
	push	1
	mov	ecx, esi
	call	?Set_Is_Active@nc_cPlayer@@QAEX_N@Z	; nc_cPlayer::Set_Is_Active

; 1281 : 	nc_cNetwork::Send_Object_Update(pData, pData->PlayerId);

	test	esi, esi
	je	SHORT $LN3@Proc_Purch
	mov	ecx, DWORD PTR [esi+1884]
	lea	eax, DWORD PTR [esi+160]
	push	ecx
	push	eax
	call	?Send_Object_Update@nc_cNetwork@@SAXPAVnc_NetworkObjectClass@@H@Z ; nc_cNetwork::Send_Object_Update
	add	esp, 8
	pop	esi

; 1282 : }

	ret	4
$LN3@Proc_Purch:

; 1281 : 	nc_cNetwork::Send_Object_Update(pData, pData->PlayerId);

	mov	ecx, DWORD PTR [esi+1884]
	xor	eax, eax
	push	ecx
	push	eax
	call	?Send_Object_Update@nc_cNetwork@@SAXPAVnc_NetworkObjectClass@@H@Z ; nc_cNetwork::Send_Object_Update
	add	esp, 8
	pop	esi

; 1282 : }

	ret	4
?Proc_PurchaseTerminalFix@@YGXPAVnc_cPlayer@@@Z ENDP	; Proc_PurchaseTerminalFix
_TEXT	ENDS
PUBLIC	?Patch_PurchaseTerminalFix@@YAXXZ		; Patch_PurchaseTerminalFix
; Function compile flags: /Ogtpy
;	COMDAT ?Patch_PurchaseTerminalFix@@YAXXZ
_TEXT	SEGMENT
?Patch_PurchaseTerminalFix@@YAXXZ PROC			; Patch_PurchaseTerminalFix, COMDAT

; 1285 : 	__asm {
; 1286 : 		mov [esp+4], ecx

	mov	DWORD PTR [esp+4], ecx

; 1287 : 		jmp Proc_PurchaseTerminalFix

	jmp	?Proc_PurchaseTerminalFix@@YGXPAVnc_cPlayer@@@Z ; Proc_PurchaseTerminalFix
?Patch_PurchaseTerminalFix@@YAXXZ ENDP			; Patch_PurchaseTerminalFix
_TEXT	ENDS
PUBLIC	?GetDamageMultiplier@@YGMAAVnc_DefenseObjectClass@@AAVnc_OffenseObjectClass@@@Z ; GetDamageMultiplier
EXTRN	?Get_Damage_Multiplier@nc_ArmorWarheadManager@@SAMII@Z:PROC ; nc_ArmorWarheadManager::Get_Damage_Multiplier
EXTRN	?Get@nc_UIntDataSafeClass@@QAEIXZ:PROC		; nc_UIntDataSafeClass::Get
; Function compile flags: /Ogtpy
;	COMDAT ?GetDamageMultiplier@@YGMAAVnc_DefenseObjectClass@@AAVnc_OffenseObjectClass@@@Z
_TEXT	SEGMENT
_defense$ = 8						; size = 4
_offense$ = 12						; size = 4
?GetDamageMultiplier@@YGMAAVnc_DefenseObjectClass@@AAVnc_OffenseObjectClass@@@Z PROC ; GetDamageMultiplier, COMDAT

; 1294 : 	return nc_ArmorWarheadManager::Get_Damage_Multiplier(defense.ShieldType.Get(),offense.Warhead);

	mov	eax, DWORD PTR _offense$[esp-4]
	mov	ecx, DWORD PTR [eax+8]
	push	ecx
	mov	ecx, DWORD PTR _defense$[esp]
	add	ecx, 24					; 00000018H
	call	?Get@nc_UIntDataSafeClass@@QAEIXZ	; nc_UIntDataSafeClass::Get
	push	eax
	call	?Get_Damage_Multiplier@nc_ArmorWarheadManager@@SAMII@Z ; nc_ArmorWarheadManager::Get_Damage_Multiplier
	add	esp, 8

; 1295 : }

	ret	8
?GetDamageMultiplier@@YGMAAVnc_DefenseObjectClass@@AAVnc_OffenseObjectClass@@@Z ENDP ; GetDamageMultiplier
_TEXT	ENDS
PUBLIC	?Patch_DamageScoreFix@@YAXXZ			; Patch_DamageScoreFix
; Function compile flags: /Odtp
;	COMDAT ?Patch_DamageScoreFix@@YAXXZ
_TEXT	SEGMENT
?Patch_DamageScoreFix@@YAXXZ PROC			; Patch_DamageScoreFix, COMDAT

; 1298 : 	_asm {
; 1299 : 		push ebp

	push	ebp

; 1300 : 		mov ebp, esp

	mov	ebp, esp

; 1301 : 		push [ebp+4+0x4C] // OffenseObject

	push	DWORD PTR [ebp+80]

; 1302 : 		push ebx // DefenseObject

	push	ebx

; 1303 : 		call GetDamageMultiplier

	call	?GetDamageMultiplier@@YGMAAVnc_DefenseObjectClass@@AAVnc_OffenseObjectClass@@@Z ; GetDamageMultiplier

; 1304 : 		fmul [ebp+4+0x14] // ShieldDamage

	fmul	DWORD PTR [ebp+24]

; 1305 : 		fadd [ebp+4+0x10] // HealthDamage

	fadd	DWORD PTR [ebp+20]

; 1306 : 		mov esp, ebp

	mov	esp, ebp

; 1307 : 		pop ebp

	pop	ebp

; 1308 : 		mov ecx, 0x68B2A6

	mov	ecx, 6861478				; 0068b2a6H

; 1309 : 		jmp ecx

	jmp	ecx
?Patch_DamageScoreFix@@YAXXZ ENDP			; Patch_DamageScoreFix
_TEXT	ENDS
PUBLIC	?Patch_UnlimitedInventoryAmmoFix@@YAHXZ		; Patch_UnlimitedInventoryAmmoFix
; Function compile flags: /Ogtpy
;	COMDAT ?Patch_UnlimitedInventoryAmmoFix@@YAHXZ
_TEXT	SEGMENT
_Weapon$ = -4						; size = 4
?Patch_UnlimitedInventoryAmmoFix@@YAHXZ PROC		; Patch_UnlimitedInventoryAmmoFix, COMDAT

; 1315 : {

	push	ecx

; 1316 : 	nc_WeaponClass *Weapon;
; 1317 : 	_asm {
; 1318 : 		mov Weapon, ecx

	mov	DWORD PTR _Weapon$[esp+4], ecx

; 1319 : 	}
; 1320 : 	int Return = 0;
; 1321 : 	if (Weapon)

	mov	ecx, DWORD PTR _Weapon$[esp+4]
	xor	eax, eax
	test	ecx, ecx
	je	SHORT $LN1@Patch_Unli

; 1322 : 	{
; 1323 : 		if (Weapon->InventoryBullets.Get() == -1)

	add	ecx, 40					; 00000028H
	call	?Get@nc_IntDataSafeClass@@QAEHXZ	; nc_IntDataSafeClass::Get
	cmp	eax, -1

; 1324 : 		{
; 1325 : 			if (Weapon->LoadedBullets.Get() == 0)

	mov	ecx, DWORD PTR _Weapon$[esp+4]
	jne	SHORT $LN4@Patch_Unli
	add	ecx, 36					; 00000024H
	call	?Get@nc_IntDataSafeClass@@QAEHXZ	; nc_IntDataSafeClass::Get
	test	eax, eax
	jne	SHORT $LN3@Patch_Unli

; 1326 : 				Return = -1;

	or	eax, -1

; 1334 : }

	pop	ecx
	ret	0
$LN3@Patch_Unli:

; 1327 : 			else
; 1328 : 				Return = Weapon->LoadedBullets.Get();

	mov	ecx, DWORD PTR _Weapon$[esp+4]
	add	ecx, 36					; 00000024H

; 1334 : }

	add	esp, 4

; 1327 : 			else
; 1328 : 				Return = Weapon->LoadedBullets.Get();

	jmp	?Get@nc_IntDataSafeClass@@QAEHXZ	; nc_IntDataSafeClass::Get
$LN4@Patch_Unli:
	push	esi

; 1329 : 		}
; 1330 : 		else
; 1331 : 			Return = Weapon->LoadedBullets.Get() + Weapon->InventoryBullets.Get();

	add	ecx, 40					; 00000028H
	call	?Get@nc_IntDataSafeClass@@QAEHXZ	; nc_IntDataSafeClass::Get
	mov	ecx, DWORD PTR _Weapon$[esp+8]
	add	ecx, 36					; 00000024H
	mov	esi, eax
	call	?Get@nc_IntDataSafeClass@@QAEHXZ	; nc_IntDataSafeClass::Get
	add	esi, eax

; 1332 : 	}
; 1333 : 	return Return;

	mov	eax, esi
	pop	esi
$LN1@Patch_Unli:

; 1334 : }

	pop	ecx
	ret	0
?Patch_UnlimitedInventoryAmmoFix@@YAHXZ ENDP		; Patch_UnlimitedInventoryAmmoFix
_TEXT	ENDS
PUBLIC	?Proc_DoorCheck@@YG_NPAVnc_DoorPhysClass@@PAVnc_SmartGameObj@@@Z ; Proc_DoorCheck
; Function compile flags: /Ogtpy
;	COMDAT ?Proc_DoorCheck@@YG_NPAVnc_DoorPhysClass@@PAVnc_SmartGameObj@@@Z
_TEXT	SEGMENT
_Door$ = 8						; size = 4
_Object$ = 12						; size = 4
?Proc_DoorCheck@@YG_NPAVnc_DoorPhysClass@@PAVnc_SmartGameObj@@@Z PROC ; Proc_DoorCheck, COMDAT

; 1338 : {

	push	esi

; 1339 : 	if (Object->As_SoldierGameObj() && Object->As_SoldierGameObj()->Vehicle && !((nc_DoorPhysDefClass *)Door->Definition)->DoorOpensForVehicles)

	mov	esi, DWORD PTR _Object$[esp]
	mov	eax, DWORD PTR [esi]
	mov	edx, DWORD PTR [eax+68]
	mov	ecx, esi
	call	edx
	test	eax, eax
	je	SHORT $LN1@Proc_DoorC
	mov	eax, DWORD PTR [esi]
	mov	edx, DWORD PTR [eax+68]
	mov	ecx, esi
	call	edx
	cmp	DWORD PTR [eax+2444], 0
	je	SHORT $LN1@Proc_DoorC
	mov	eax, DWORD PTR _Door$[esp]
	mov	ecx, DWORD PTR [eax+80]
	cmp	BYTE PTR [ecx+260], 0
	jne	SHORT $LN1@Proc_DoorC

; 1340 : 		return false;

	xor	al, al
	pop	esi

; 1342 : }

	ret	8
$LN1@Proc_DoorC:

; 1341 : 	return (Object->ControlOwner >= 0);

	xor	eax, eax
	cmp	DWORD PTR [esi+2396], eax
	pop	esi
	setge	al

; 1342 : }

	ret	8
?Proc_DoorCheck@@YG_NPAVnc_DoorPhysClass@@PAVnc_SmartGameObj@@@Z ENDP ; Proc_DoorCheck
_TEXT	ENDS
PUBLIC	?Hook_DoorCheck@@YAXXZ				; Hook_DoorCheck
; Function compile flags: /Odtpy
;	COMDAT ?Hook_DoorCheck@@YAXXZ
_TEXT	SEGMENT
?Hook_DoorCheck@@YAXXZ PROC				; Hook_DoorCheck, COMDAT

; 1345 : 	_asm {
; 1346 : 		push ecx

	push	ecx

; 1347 : 		push [esp+0x10]

	push	DWORD PTR [esp+16]

; 1348 : 		call Proc_DoorCheck

	call	?Proc_DoorCheck@@YG_NPAVnc_DoorPhysClass@@PAVnc_SmartGameObj@@@Z ; Proc_DoorCheck

; 1349 : 		mov ecx, 0x6997E6

	mov	ecx, 6920166				; 006997e6H

; 1350 : 		jmp ecx

	jmp	ecx
?Hook_DoorCheck@@YAXXZ ENDP				; Hook_DoorCheck
_TEXT	ENDS
PUBLIC	?Hook_PlayerSpawnPreset@@YAPAVnc_ScriptableGameObj@@PBD@Z ; Hook_PlayerSpawnPreset
EXTRN	?gzGameMgr@@3PAVgzGameManager@@A:DWORD		; gzGameMgr
EXTRN	?Find_Player@nc_cPlayerManager@@SAPAVnc_cPlayer@@H@Z:PROC ; nc_cPlayerManager::Find_Player
; Function compile flags: /Ogtpy
;	COMDAT ?Hook_PlayerSpawnPreset@@YAPAVnc_ScriptableGameObj@@PBD@Z
_TEXT	SEGMENT
_pId$ = -4						; size = 4
_preset$ = 8						; size = 4
?Hook_PlayerSpawnPreset@@YAPAVnc_ScriptableGameObj@@PBD@Z PROC ; Hook_PlayerSpawnPreset, COMDAT

; 1359 : {

	push	ecx

; 1360 : 	int pId = -1;

	mov	DWORD PTR _pId$[esp+4], -1

; 1361 : 	_asm
; 1362 : 	{
; 1363 : 		mov ecx, [esp+0x138-4]

	mov	ecx, DWORD PTR [esp+308]

; 1364 : 		mov pId, ecx

	mov	DWORD PTR _pId$[esp+4], ecx

; 1365 : 	}
; 1366 : 	nc_cPlayer *pData = nc_cPlayerManager::Find_Player(pId);

	mov	eax, DWORD PTR _pId$[esp+4]
	push	eax
	call	?Find_Player@nc_cPlayerManager@@SAPAVnc_cPlayer@@H@Z ; nc_cPlayerManager::Find_Player
	add	esp, 4

; 1367 : 	if (pData)

	test	eax, eax
	je	SHORT $LN6@Hook_Playe

; 1368 : 		preset = gzGameMgr->m_settings->m_spawnChar[pData->PlayerType.Get()].GetString();

	lea	ecx, DWORD PTR [eax+1900]
	call	?Get@nc_IntDataSafeClass@@QAEHXZ	; nc_IntDataSafeClass::Get
	mov	edx, DWORD PTR ?gzGameMgr@@3PAVgzGameManager@@A ; gzGameMgr
	add	eax, 5
	lea	ecx, DWORD PTR [eax+eax*2]
	mov	eax, DWORD PTR [edx+28]
	lea	eax, DWORD PTR [eax+ecx*4]
	mov	eax, DWORD PTR [eax]

; 1370 : }

	add	esp, 4

; 1369 : 	return nc_ObjectLibraryManager::Create_Object(preset);

	mov	DWORD PTR _preset$[esp-4], eax
	jmp	?Create_Object@nc_ObjectLibraryManager@@SAPAVnc_ScriptableGameObj@@PBD@Z ; nc_ObjectLibraryManager::Create_Object
$LN6@Hook_Playe:

; 1368 : 		preset = gzGameMgr->m_settings->m_spawnChar[pData->PlayerType.Get()].GetString();

	mov	eax, DWORD PTR _preset$[esp]

; 1370 : }

	add	esp, 4

; 1369 : 	return nc_ObjectLibraryManager::Create_Object(preset);

	mov	DWORD PTR _preset$[esp-4], eax
	jmp	?Create_Object@nc_ObjectLibraryManager@@SAPAVnc_ScriptableGameObj@@PBD@Z ; nc_ObjectLibraryManager::Create_Object
?Hook_PlayerSpawnPreset@@YAPAVnc_ScriptableGameObj@@PBD@Z ENDP ; Hook_PlayerSpawnPreset
_TEXT	ENDS
PUBLIC	??_C@_08JLPBMOII@NC?6SS?6?$CFf?$AA@		; `string'
PUBLIC	?Proc_SoldierSetSpeed@@YAXPAVnc_SoldierGameObj@@M@Z ; Proc_SoldierSetSpeed
EXTRN	?Send_Text_Msg@@YAXABVnc_WideStringClass@@H_NHH@Z:PROC ; Send_Text_Msg
EXTRN	?Convert_From@nc_WideStringClass@@QAEXPBD@Z:PROC ; nc_WideStringClass::Convert_From
EXTRN	?Get_String@nc_WideStringClass@@QAE_WH_N@Z:PROC	; nc_WideStringClass::Get_String
EXTRN	_sprintf:PROC
EXTRN	___CxxFrameHandler3:PROC
;	COMDAT ??_C@_08JLPBMOII@NC?6SS?6?$CFf?$AA@
; File d:\source code\fds lib\new\fds_string.h
CONST	SEGMENT
??_C@_08JLPBMOII@NC?6SS?6?$CFf?$AA@ DB 'NC', 0aH, 'SS', 0aH, '%f', 00H ; `string'
CONST	ENDS
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$?Proc_SoldierSetSpeed@@YAXPAVnc_SoldierGameObj@@M@Z DD 0ffffffffH
	DD	FLAT:__unwindfunclet$?Proc_SoldierSetSpeed@@YAXPAVnc_SoldierGameObj@@M@Z$0
__ehfuncinfo$?Proc_SoldierSetSpeed@@YAXPAVnc_SoldierGameObj@@M@Z DD 019930522H
	DD	01H
	DD	FLAT:__unwindtable$?Proc_SoldierSetSpeed@@YAXPAVnc_SoldierGameObj@@M@Z
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	01H
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzhook.cpp
xdata$x	ENDS
;	COMDAT ?Proc_SoldierSetSpeed@@YAXPAVnc_SoldierGameObj@@M@Z
_TEXT	SEGMENT
_msg$58579 = -76					; size = 64
__$EHRec$ = -12						; size = 12
_wstr$58581 = 8						; size = 4
_soldier$ = 8						; size = 4
_Speed$ = 12						; size = 4
?Proc_SoldierSetSpeed@@YAXPAVnc_SoldierGameObj@@M@Z PROC ; Proc_SoldierSetSpeed, COMDAT

; 1380 : void Proc_SoldierSetSpeed(nc_SoldierGameObj *soldier, float Speed) {

	mov	eax, DWORD PTR fs:0
	push	-1
	push	__ehhandler$?Proc_SoldierSetSpeed@@YAXPAVnc_SoldierGameObj@@M@Z
	push	eax
	mov	DWORD PTR fs:0, esp
	sub	esp, 64					; 00000040H
	push	esi

; 1381 : 	if (soldier->ControlOwner != -1) {

	mov	esi, DWORD PTR _soldier$[esp+76]
	cmp	DWORD PTR [esi+2396], -1
	je	$LN7@Proc_Soldi

; 1382 : 		char msg[64];
; 1383 : 		sprintf(msg, "NC\nSS\n%f", Speed_Sync_Speed);

	fld	DWORD PTR ?Speed_Sync_Speed@@3MA	; Speed_Sync_Speed
	sub	esp, 8
	fstp	QWORD PTR [esp]
	lea	eax, DWORD PTR _msg$58579[esp+88]
	push	OFFSET ??_C@_08JLPBMOII@NC?6SS?6?$CFf?$AA@
	push	eax
	call	_sprintf

; 1384 : 		nc_WideStringClass wstr;

	mov	ecx, DWORD PTR ?m_EmptyString@nc_WideStringClass@@2PAPA_WA ; nc_WideStringClass::m_EmptyString
	mov	edx, DWORD PTR [ecx]
	add	esp, 16					; 00000010H
	mov	DWORD PTR _wstr$58581[esp+76], edx

; 1385 : 		wstr.Get_String(0, false);

	push	0
	push	0
	lea	ecx, DWORD PTR _wstr$58581[esp+84]
	mov	DWORD PTR __$EHRec$[esp+96], 0
	call	?Get_String@nc_WideStringClass@@QAE_WH_N@Z ; nc_WideStringClass::Get_String

; 1386 : 		wstr.Convert_From(msg);

	lea	eax, DWORD PTR _msg$58579[esp+80]
	push	eax
	lea	ecx, DWORD PTR _wstr$58581[esp+80]
	call	?Convert_From@nc_WideStringClass@@QAEXPBD@Z ; nc_WideStringClass::Convert_From

; 1387 : 		Send_Text_Msg(wstr, 2 , false, -2, soldier->ControlOwner);

	mov	ecx, DWORD PTR [esi+2396]
	push	ecx
	push	-2					; fffffffeH
	push	0
	lea	edx, DWORD PTR _wstr$58581[esp+88]
	push	2
	push	edx
	call	?Send_Text_Msg@@YAXABVnc_WideStringClass@@H_NHH@Z ; Send_Text_Msg
	add	esp, 20					; 00000014H

; 1388 : 		wstr.Free_String();

	lea	ecx, DWORD PTR _wstr$58581[esp+76]
	call	?Free_String@nc_WideStringClass@@QAEXXZ	; nc_WideStringClass::Free_String

; 1389 : 	}

	lea	ecx, DWORD PTR _wstr$58581[esp+76]
	mov	DWORD PTR __$EHRec$[esp+88], -1
	call	?Free_String@nc_WideStringClass@@QAEXXZ	; nc_WideStringClass::Free_String
$LN7@Proc_Soldi:

; 1390 : }

	mov	ecx, DWORD PTR __$EHRec$[esp+80]
	pop	esi
	mov	DWORD PTR fs:0, ecx
	add	esp, 76					; 0000004cH
	ret	0
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$?Proc_SoldierSetSpeed@@YAXPAVnc_SoldierGameObj@@M@Z$0:
	lea	ecx, DWORD PTR _wstr$58581[ebp-4]
	jmp	??1nc_WideStringClass@@QAE@XZ		; nc_WideStringClass::~nc_WideStringClass
__ehhandler$?Proc_SoldierSetSpeed@@YAXPAVnc_SoldierGameObj@@M@Z:
	mov	eax, OFFSET __ehfuncinfo$?Proc_SoldierSetSpeed@@YAXPAVnc_SoldierGameObj@@M@Z
	jmp	___CxxFrameHandler3
text$x	ENDS
?Proc_SoldierSetSpeed@@YAXPAVnc_SoldierGameObj@@M@Z ENDP ; Proc_SoldierSetSpeed
PUBLIC	?Hook_SoldierSetSpeed@@YAXXZ			; Hook_SoldierSetSpeed
; Function compile flags: /Odtpy
;	COMDAT ?Hook_SoldierSetSpeed@@YAXXZ
_TEXT	SEGMENT
?Hook_SoldierSetSpeed@@YAXXZ PROC			; Hook_SoldierSetSpeed, COMDAT

; 1392 : 	_asm {
; 1393 : 		mov Speed_Sync_Soldier, ecx

	mov	DWORD PTR ?Speed_Sync_Soldier@@3PAVnc_SoldierGameObj@@A, ecx ; Speed_Sync_Soldier

; 1394 : 		mov eax, [esp+4]

	mov	eax, DWORD PTR [esp+4]

; 1395 : 		mov Speed_Sync_Speed, eax

	mov	DWORD PTR ?Speed_Sync_Speed@@3MA, eax

; 1396 : 	}
; 1397 : 	Proc_SoldierSetSpeed(Speed_Sync_Soldier,Speed_Sync_Speed);

	push	ecx
	fld	DWORD PTR ?Speed_Sync_Speed@@3MA	; Speed_Sync_Speed
	fstp	DWORD PTR [esp]
	mov	eax, DWORD PTR ?Speed_Sync_Soldier@@3PAVnc_SoldierGameObj@@A ; Speed_Sync_Soldier
	push	eax
	call	?Proc_SoldierSetSpeed@@YAXPAVnc_SoldierGameObj@@M@Z ; Proc_SoldierSetSpeed
	add	esp, 8

; 1398 : 	_asm {
; 1399 : 		mov ecx, Speed_Sync_Soldier

	mov	ecx, DWORD PTR ?Speed_Sync_Soldier@@3PAVnc_SoldierGameObj@@A ; Speed_Sync_Soldier

; 1400 : 		mov ecx, [ecx+0x774]

	mov	ecx, DWORD PTR [ecx+1908]

; 1401 : 		mov eax, 0x6C8F26

	mov	eax, 7114534				; 006c8f26H

; 1402 : 		jmp eax

	jmp	eax
?Hook_SoldierSetSpeed@@YAXXZ ENDP			; Hook_SoldierSetSpeed
_TEXT	ENDS
PUBLIC	??_C@_0CH@GLOOKAJP@msg?5Flip?5kill?5detected?5for?5vehic@ ; `string'
PUBLIC	?Proc_VehicleFlipKill@@YG_NPAVnc_VehicleGameObj@@@Z ; Proc_VehicleFlipKill
;	COMDAT ??_C@_0CH@GLOOKAJP@msg?5Flip?5kill?5detected?5for?5vehic@
CONST	SEGMENT
??_C@_0CH@GLOOKAJP@msg?5Flip?5kill?5detected?5for?5vehic@ DB 'msg Flip ki'
	DB	'll detected for vehicle: %s', 00H		; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?Proc_VehicleFlipKill@@YG_NPAVnc_VehicleGameObj@@@Z
_TEXT	SEGMENT
_vehicle$ = 8						; size = 4
?Proc_VehicleFlipKill@@YG_NPAVnc_VehicleGameObj@@@Z PROC ; Proc_VehicleFlipKill, COMDAT

; 1409 : 	gzConsole::In("msg Flip kill detected for vehicle: %s", vehicle->definition->Get_Name());

	mov	eax, DWORD PTR _vehicle$[esp-4]
	mov	ecx, DWORD PTR [eax+1724]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+48]
	call	eax
	push	eax
	push	OFFSET ??_C@_0CH@GLOOKAJP@msg?5Flip?5kill?5detected?5for?5vehic@
	call	?In@gzConsole@@SAXPBDZZ			; gzConsole::In
	add	esp, 8

; 1410 : 	return true;

	mov	al, 1

; 1411 : }

	ret	4
?Proc_VehicleFlipKill@@YG_NPAVnc_VehicleGameObj@@@Z ENDP ; Proc_VehicleFlipKill
_TEXT	ENDS
PUBLIC	?Hook_VehicleFlipKill@@YAXXZ			; Hook_VehicleFlipKill
; Function compile flags: /Odtpy
;	COMDAT ?Hook_VehicleFlipKill@@YAXXZ
_TEXT	SEGMENT
?Hook_VehicleFlipKill@@YAXXZ PROC			; Hook_VehicleFlipKill, COMDAT

; 1414 : 	_asm {
; 1415 : 		push ecx

	push	ecx

; 1416 : 		lea ebx, [ecx-0x76C]

	lea	ebx, DWORD PTR [ecx-1900]

; 1417 : 		push ebx

	push	ebx

; 1418 : 		call Proc_VehicleFlipKill

	call	?Proc_VehicleFlipKill@@YG_NPAVnc_VehicleGameObj@@@Z ; Proc_VehicleFlipKill

; 1419 : 		pop ecx

	pop	ecx

; 1420 : 		mov ebx, 0x67C065

	mov	ebx, 6799461				; 0067c065H

; 1421 : 		jmp ebx

	jmp	ebx
?Hook_VehicleFlipKill@@YAXXZ ENDP			; Hook_VehicleFlipKill
_TEXT	ENDS
PUBLIC	__TI2?AVbad_alloc@std@@
PUBLIC	??_C@_0DN@JHKGIIJF@C?3?2Program?5Files?2Microsoft?5Visua@ ; `string'
PUBLIC	?allocate@?$_DebugHeapAllocator@D@std@@QAAPADIPBX@Z ; std::_DebugHeapAllocator<char>::allocate
PUBLIC	__CTA2?AVbad_alloc@std@@
PUBLIC	__CT??_R0?AVbad_alloc@std@@@8??0bad_alloc@std@@QAE@ABV01@@Z12
PUBLIC	??0bad_alloc@std@@QAE@ABV01@@Z			; std::bad_alloc::bad_alloc
PUBLIC	__CT??_R0?AVexception@std@@@8??0exception@std@@QAE@ABV01@@Z12
EXTRN	??_U@YAPAXIABU_DebugHeapTag_t@std@@PADH@Z:PROC	; operator new[]
EXTRN	?_DebugHeapTag_func@std@@YAABU_DebugHeapTag_t@1@XZ:PROC ; std::_DebugHeapTag_func
EXTRN	__CxxThrowException@8:PROC
EXTRN	??0exception@std@@QAE@ABV01@@Z:PROC		; std::exception::exception
;	COMDAT __CT??_R0?AVexception@std@@@8??0exception@std@@QAE@ABV01@@Z12
; File c:\program files\microsoft visual studio 8\vc\include\exception
xdata$x	SEGMENT
__CT??_R0?AVexception@std@@@8??0exception@std@@QAE@ABV01@@Z12 DD 00H
	DD	FLAT:??_R0?AVexception@std@@@8
	DD	00H
	DD	0ffffffffH
	ORG $+4
	DD	0cH
	DD	FLAT:??0exception@std@@QAE@ABV01@@Z
xdata$x	ENDS
;	COMDAT __CT??_R0?AVbad_alloc@std@@@8??0bad_alloc@std@@QAE@ABV01@@Z12
xdata$x	SEGMENT
__CT??_R0?AVbad_alloc@std@@@8??0bad_alloc@std@@QAE@ABV01@@Z12 DD 00H
	DD	FLAT:??_R0?AVbad_alloc@std@@@8
	DD	00H
	DD	0ffffffffH
	ORG $+4
	DD	0cH
	DD	FLAT:??0bad_alloc@std@@QAE@ABV01@@Z
xdata$x	ENDS
;	COMDAT __CTA2?AVbad_alloc@std@@
xdata$x	SEGMENT
__CTA2?AVbad_alloc@std@@ DD 02H
	DD	FLAT:__CT??_R0?AVbad_alloc@std@@@8??0bad_alloc@std@@QAE@ABV01@@Z12
	DD	FLAT:__CT??_R0?AVexception@std@@@8??0exception@std@@QAE@ABV01@@Z12
xdata$x	ENDS
;	COMDAT __TI2?AVbad_alloc@std@@
xdata$x	SEGMENT
__TI2?AVbad_alloc@std@@ DD 00H
	DD	FLAT:??1bad_alloc@std@@UAE@XZ
	DD	00H
	DD	FLAT:__CTA2?AVbad_alloc@std@@
xdata$x	ENDS
;	COMDAT ??_C@_0DN@JHKGIIJF@C?3?2Program?5Files?2Microsoft?5Visua@
CONST	SEGMENT
??_C@_0DN@JHKGIIJF@C?3?2Program?5Files?2Microsoft?5Visua@ DB 'C:\Program '
	DB	'Files\Microsoft Visual Studio 8\VC\include\xdebug', 00H ; `string'
; Function compile flags: /Ogtpy
; File c:\program files\microsoft visual studio 8\vc\include\xdebug
CONST	ENDS
;	COMDAT ?allocate@?$_DebugHeapAllocator@D@std@@QAAPADIPBX@Z
_TEXT	SEGMENT
$T65548 = -12						; size = 12
_this$ = 8						; size = 4
$T65554 = 12						; size = 4
__Count$ = 12						; size = 4
___formal$ = 16						; size = 4
?allocate@?$_DebugHeapAllocator@D@std@@QAAPADIPBX@Z PROC ; std::_DebugHeapAllocator<char>::allocate, COMDAT

; 79   : 		{	// check for integer overflow

	sub	esp, 12					; 0000000cH
	push	esi

; 80   : 		if (_Count <= 0)

	mov	esi, DWORD PTR __Count$[esp+12]
	test	esi, esi
	ja	SHORT $LN3@allocate

; 81   : 			_Count = 0;

	xor	esi, esi
$LN1@allocate:

; 84   : 
; 85   : 			// allocate array of _Count elements, ignore hint
; 86   : 		return ((_Ty *)_NEW_CRT char[_Count * sizeof(_Ty)]);

	push	86					; 00000056H
	push	OFFSET ??_C@_0DN@JHKGIIJF@C?3?2Program?5Files?2Microsoft?5Visua@
	call	?_DebugHeapTag_func@std@@YAABU_DebugHeapTag_t@1@XZ ; std::_DebugHeapTag_func
	push	eax
	push	esi
	call	??_U@YAPAXIABU_DebugHeapTag_t@std@@PADH@Z ; operator new[]
	add	esp, 16					; 00000010H
	pop	esi

; 87   : 		}

	add	esp, 12					; 0000000cH
	ret	0
$LN3@allocate:

; 82   : 		else if (((size_t)(-1) / _Count) < sizeof(_Ty))

	or	eax, -1
	xor	edx, edx
	div	esi
	cmp	eax, 1
	jae	SHORT $LN1@allocate

; 83   : 			_THROW_NCEE(std::bad_alloc, NULL);

	lea	eax, DWORD PTR $T65554[esp+12]
	push	eax
	lea	ecx, DWORD PTR $T65548[esp+20]
	mov	DWORD PTR $T65554[esp+16], 0
	call	??0exception@std@@QAE@ABQBD@Z		; std::exception::exception
	push	OFFSET __TI2?AVbad_alloc@std@@
	lea	ecx, DWORD PTR $T65548[esp+20]
	push	ecx
	mov	DWORD PTR $T65548[esp+24], OFFSET ??_7bad_alloc@std@@6B@
	call	__CxxThrowException@8
$LN9@allocate:
$LN8@allocate:
	int	3
?allocate@?$_DebugHeapAllocator@D@std@@QAAPADIPBX@Z ENDP ; std::_DebugHeapAllocator<char>::allocate
_TEXT	ENDS
PUBLIC	?allocate@?$_DebugHeapAllocator@D@std@@QAEPADI@Z ; std::_DebugHeapAllocator<char>::allocate
; Function compile flags: /Ogtpy
;	COMDAT ?allocate@?$_DebugHeapAllocator@D@std@@QAEPADI@Z
_TEXT	SEGMENT
$T65560 = -12						; size = 12
$T65565 = 8						; size = 4
__Count$ = 8						; size = 4
?allocate@?$_DebugHeapAllocator@D@std@@QAEPADI@Z PROC	; std::_DebugHeapAllocator<char>::allocate, COMDAT
; _this$ = ecx

; 90   : 		{	// check for integer overflow

	sub	esp, 12					; 0000000cH
	push	esi

; 91   : 		if (_Count <= 0)

	mov	esi, DWORD PTR __Count$[esp+12]
	test	esi, esi
	ja	SHORT $LN3@allocate@2

; 92   : 			_Count = 0;

	xor	esi, esi
$LN1@allocate@2:

; 95   : 
; 96   : 			// allocate array of _Count elements
; 97   : 		return ((_Ty *)_NEW_CRT char[_Count * sizeof(_Ty)]);

	push	97					; 00000061H
	push	OFFSET ??_C@_0DN@JHKGIIJF@C?3?2Program?5Files?2Microsoft?5Visua@
	call	?_DebugHeapTag_func@std@@YAABU_DebugHeapTag_t@1@XZ ; std::_DebugHeapTag_func
	push	eax
	push	esi
	call	??_U@YAPAXIABU_DebugHeapTag_t@std@@PADH@Z ; operator new[]
	add	esp, 16					; 00000010H
	pop	esi

; 98   : 		}

	add	esp, 12					; 0000000cH
	ret	4
$LN3@allocate@2:

; 93   : 		else if (((size_t)(-1) / _Count) < sizeof(_Ty))

	or	eax, -1
	xor	edx, edx
	div	esi
	cmp	eax, 1
	jae	SHORT $LN1@allocate@2

; 94   : 			_THROW_NCEE(std::bad_alloc, NULL);

	lea	eax, DWORD PTR $T65565[esp+12]
	push	eax
	lea	ecx, DWORD PTR $T65560[esp+20]
	mov	DWORD PTR $T65565[esp+16], 0
	call	??0exception@std@@QAE@ABQBD@Z		; std::exception::exception
	push	OFFSET __TI2?AVbad_alloc@std@@
	lea	ecx, DWORD PTR $T65560[esp+20]
	push	ecx
	mov	DWORD PTR $T65560[esp+24], OFFSET ??_7bad_alloc@std@@6B@
	call	__CxxThrowException@8
$LN9@allocate@2:
$LN8@allocate@2:
	int	3
?allocate@?$_DebugHeapAllocator@D@std@@QAEPADI@Z ENDP	; std::_DebugHeapAllocator<char>::allocate
_TEXT	ENDS
PUBLIC	?Count@?$nc_DynamicVectorClass@PAVnc_WeaponClass@@@@QAEHXZ ; nc_DynamicVectorClass<nc_WeaponClass *>::Count
; Function compile flags: /Ogtpy
; File d:\source code\fds lib\new\fds_vector.h
;	COMDAT ?Count@?$nc_DynamicVectorClass@PAVnc_WeaponClass@@@@QAEHXZ
_TEXT	SEGMENT
?Count@?$nc_DynamicVectorClass@PAVnc_WeaponClass@@@@QAEHXZ PROC ; nc_DynamicVectorClass<nc_WeaponClass *>::Count, COMDAT
; _this$ = ecx

; 375  : 		return ActiveCount;

	mov	eax, DWORD PTR [ecx+16]

; 376  : 	}

	ret	0
?Count@?$nc_DynamicVectorClass@PAVnc_WeaponClass@@@@QAEHXZ ENDP ; nc_DynamicVectorClass<nc_WeaponClass *>::Count
_TEXT	ENDS
PUBLIC	??A?$nc_VectorClass@PAVnc_WeaponClass@@@@QAEAAPAVnc_WeaponClass@@H@Z ; nc_VectorClass<nc_WeaponClass *>::operator[]
; Function compile flags: /Ogtpy
;	COMDAT ??A?$nc_VectorClass@PAVnc_WeaponClass@@@@QAEAAPAVnc_WeaponClass@@H@Z
_TEXT	SEGMENT
_index$ = 8						; size = 4
??A?$nc_VectorClass@PAVnc_WeaponClass@@@@QAEAAPAVnc_WeaponClass@@H@Z PROC ; nc_VectorClass<nc_WeaponClass *>::operator[], COMDAT
; _this$ = ecx

; 341  : 		return Vector[index];

	mov	eax, DWORD PTR [ecx+4]
	mov	ecx, DWORD PTR _index$[esp-4]
	lea	eax, DWORD PTR [eax+ecx*4]

; 342  : 	}

	ret	4
??A?$nc_VectorClass@PAVnc_WeaponClass@@@@QAEAAPAVnc_WeaponClass@@H@Z ENDP ; nc_VectorClass<nc_WeaponClass *>::operator[]
_TEXT	ENDS
PUBLIC	?Count@?$ncDynamicVector@PAVgzEvtHandler@@@@QAEHXZ ; ncDynamicVector<gzEvtHandler *>::Count
; Function compile flags: /Ogtpy
; File d:\source code\nc lib\ncvector.h
;	COMDAT ?Count@?$ncDynamicVector@PAVgzEvtHandler@@@@QAEHXZ
_TEXT	SEGMENT
?Count@?$ncDynamicVector@PAVgzEvtHandler@@@@QAEHXZ PROC	; ncDynamicVector<gzEvtHandler *>::Count, COMDAT
; _this$ = ecx

; 113  : 		return this->m_Items;

	mov	eax, DWORD PTR [ecx+12]

; 114  : 	}

	ret	0
?Count@?$ncDynamicVector@PAVgzEvtHandler@@@@QAEHXZ ENDP	; ncDynamicVector<gzEvtHandler *>::Count
_TEXT	ENDS
PUBLIC	??A?$ncVector@PAVgzEvtHandler@@@@QAEAAPAVgzEvtHandler@@H@Z ; ncVector<gzEvtHandler *>::operator[]
; Function compile flags: /Ogtpy
;	COMDAT ??A?$ncVector@PAVgzEvtHandler@@@@QAEAAPAVgzEvtHandler@@H@Z
_TEXT	SEGMENT
_Index$ = 8						; size = 4
??A?$ncVector@PAVgzEvtHandler@@@@QAEAAPAVgzEvtHandler@@H@Z PROC ; ncVector<gzEvtHandler *>::operator[], COMDAT
; _this$ = ecx

; 39   : 		return this->m_Vector[Index];

	mov	eax, DWORD PTR [ecx+4]
	mov	ecx, DWORD PTR _Index$[esp-4]
	lea	eax, DWORD PTR [eax+ecx*4]

; 40   : 	}

	ret	4
??A?$ncVector@PAVgzEvtHandler@@@@QAEAAPAVgzEvtHandler@@H@Z ENDP ; ncVector<gzEvtHandler *>::operator[]
_TEXT	ENDS
PUBLIC	?Add@?$ncDynamicVector@PAVHookBase@@@@UAEXABQAVHookBase@@@Z ; ncDynamicVector<HookBase *>::Add
; Function compile flags: /Ogtpy
;	COMDAT ?Add@?$ncDynamicVector@PAVHookBase@@@@UAEXABQAVHookBase@@@Z
_TEXT	SEGMENT
_object$ = 8						; size = 4
?Add@?$ncDynamicVector@PAVHookBase@@@@UAEXABQAVHookBase@@@Z PROC ; ncDynamicVector<HookBase *>::Add, COMDAT
; _this$ = ecx

; 135  : 	{

	push	esi
	mov	esi, ecx

; 136  : 		if (this->Resize(this->m_Length +1))

	mov	ecx, DWORD PTR [esi+8]
	mov	eax, DWORD PTR [esi]
	mov	edx, DWORD PTR [eax+8]
	add	ecx, 1
	push	ecx
	mov	ecx, esi
	call	edx
	test	al, al
	je	SHORT $LN1@Add

; 137  : 		{
; 138  : 			this->m_Vector[this->m_Length -1] = object;

	mov	edx, DWORD PTR _object$[esp]
	mov	edx, DWORD PTR [edx]
	mov	eax, DWORD PTR [esi+8]
	mov	ecx, DWORD PTR [esi+4]
	mov	DWORD PTR [ecx+eax*4-4], edx

; 139  : 			this->m_Items++;

	add	DWORD PTR [esi+12], 1
$LN1@Add:
	pop	esi

; 140  : 		}
; 141  : 	}

	ret	4
?Add@?$ncDynamicVector@PAVHookBase@@@@UAEXABQAVHookBase@@@Z ENDP ; ncDynamicVector<HookBase *>::Add
_TEXT	ENDS
PUBLIC	?Delete@?$ncDynamicVector@PAVHookBase@@@@UAEXH@Z ; ncDynamicVector<HookBase *>::Delete
EXTRN	_memmove:PROC
; Function compile flags: /Ogtpy
;	COMDAT ?Delete@?$ncDynamicVector@PAVHookBase@@@@UAEXH@Z
_TEXT	SEGMENT
_Index$ = 8						; size = 4
?Delete@?$ncDynamicVector@PAVHookBase@@@@UAEXH@Z PROC	; ncDynamicVector<HookBase *>::Delete, COMDAT
; _this$ = ecx

; 156  : 	{

	push	esi
	mov	esi, ecx

; 157  : 		if (Index < 0 || Index >= this->m_Length)

	mov	ecx, DWORD PTR _Index$[esp]
	test	ecx, ecx
	jl	SHORT $LN4@Delete
	mov	eax, DWORD PTR [esi+8]
	cmp	ecx, eax
	jge	SHORT $LN4@Delete

; 158  : 			return;
; 159  : 		this->m_Items--;

	add	DWORD PTR [esi+12], -1

; 160  : 		if (this->m_Items == 0)

	jne	SHORT $LN3@Delete

; 161  : 			this->Clear();

	mov	eax, DWORD PTR [esi]
	mov	edx, DWORD PTR [eax+4]
	mov	ecx, esi
	call	edx
	pop	esi

; 167  : 		}
; 168  : 	}

	ret	4
$LN3@Delete:

; 162  : 		else
; 163  : 		{
; 164  : 			if (Index < this->m_Length)
; 165  : 				memmove(&this->m_Vector[Index], &this->m_Vector[Index +1], (this->m_Length - Index -1) * sizeof(T));

	mov	edx, DWORD PTR [esi+4]
	sub	eax, ecx
	lea	edx, DWORD PTR [edx+ecx*4]
	lea	eax, DWORD PTR [eax*4-4]
	push	eax
	lea	ecx, DWORD PTR [edx+4]
	push	ecx
	push	edx
	call	_memmove

; 166  : 			this->Resize(this->m_Items);

	mov	edx, DWORD PTR [esi]
	mov	eax, DWORD PTR [esi+12]
	mov	edx, DWORD PTR [edx+8]
	add	esp, 12					; 0000000cH
	push	eax
	mov	ecx, esi
	call	edx
$LN4@Delete:
	pop	esi

; 167  : 		}
; 168  : 	}

	ret	4
?Delete@?$ncDynamicVector@PAVHookBase@@@@UAEXH@Z ENDP	; ncDynamicVector<HookBase *>::Delete
_TEXT	ENDS
PUBLIC	??_C@_0CB@BOFIHJED@d?3?2source?5code?2nc?5lib?2ncVector?4h@ ; `string'
PUBLIC	??_C@_0CC@FAGGMAID@ncVector?$DMclass?5HookBase?5?$CK?$DO?3?3Clea@ ; `string'
PUBLIC	?Clear@?$ncVector@PAVHookBase@@@@UAEXXZ		; ncVector<HookBase *>::Clear
;	COMDAT ??_C@_0CB@BOFIHJED@d?3?2source?5code?2nc?5lib?2ncVector?4h@
CONST	SEGMENT
??_C@_0CB@BOFIHJED@d?3?2source?5code?2nc?5lib?2ncVector?4h@ DB 'd:\source'
	DB	' code\nc lib\ncVector.h', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_0CC@FAGGMAID@ncVector?$DMclass?5HookBase?5?$CK?$DO?3?3Clea@
CONST	SEGMENT
??_C@_0CC@FAGGMAID@ncVector?$DMclass?5HookBase?5?$CK?$DO?3?3Clea@ DB 'ncV'
	DB	'ector<class HookBase *>::Clear', 00H	; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?Clear@?$ncVector@PAVHookBase@@@@UAEXXZ
_TEXT	SEGMENT
?Clear@?$ncVector@PAVHookBase@@@@UAEXXZ PROC		; ncVector<HookBase *>::Clear, COMDAT
; _this$ = ecx

; 51   : 	{

	push	esi
	mov	esi, ecx

; 52   : 		if (this->m_Vector)

	cmp	DWORD PTR [esi+4], 0
	je	SHORT $LN6@Clear

; 53   : 		{
; 54   : 			delete [] this->m_Vector;

	push	OFFSET ??_C@_0CC@FAGGMAID@ncVector?$DMclass?5HookBase?5?$CK?$DO?3?3Clea@
	push	54					; 00000036H
	push	OFFSET ??_C@_0CB@BOFIHJED@d?3?2source?5code?2nc?5lib?2ncVector?4h@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	eax, DWORD PTR [esi+4]
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H

; 55   : 			this->m_Vector = NULL;

	mov	DWORD PTR [esi+4], 0
$LN6@Clear:

; 56   : 		}
; 57   : 		this->m_Length = 0;

	mov	DWORD PTR [esi+8], 0
	pop	esi

; 58   : 	}

	ret	0
?Clear@?$ncVector@PAVHookBase@@@@UAEXXZ ENDP		; ncVector<HookBase *>::Clear
_TEXT	ENDS
PUBLIC	?Get_Index@?$ncVector@PAVHookBase@@@@QAEHABQAVHookBase@@@Z ; ncVector<HookBase *>::Get_Index
; Function compile flags: /Ogtpy
;	COMDAT ?Get_Index@?$ncVector@PAVHookBase@@@@QAEHABQAVHookBase@@@Z
_TEXT	SEGMENT
_object$ = 8						; size = 4
?Get_Index@?$ncVector@PAVHookBase@@@@QAEHABQAVHookBase@@@Z PROC ; ncVector<HookBase *>::Get_Index, COMDAT
; _this$ = ecx

; 77   : 	{

	mov	edx, DWORD PTR [ecx+8]

; 78   : 		for (int i = 0; i < this->m_Length; i++)

	xor	eax, eax
	test	edx, edx
	push	esi
	jle	SHORT $LN2@Get_Index
	mov	esi, DWORD PTR _object$[esp]
	mov	esi, DWORD PTR [esi]
	mov	ecx, DWORD PTR [ecx+4]
$LL4@Get_Index:

; 79   : 		{
; 80   : 			if (this->m_Vector[i] == object)

	cmp	DWORD PTR [ecx], esi
	je	SHORT $LN5@Get_Index
	add	eax, 1
	add	ecx, 4
	cmp	eax, edx
	jl	SHORT $LL4@Get_Index
$LN2@Get_Index:

; 81   : 				return i;
; 82   : 		}
; 83   : 		return -1;

	or	eax, -1
$LN5@Get_Index:
	pop	esi

; 84   : 	}

	ret	4
?Get_Index@?$ncVector@PAVHookBase@@@@QAEHABQAVHookBase@@@Z ENDP ; ncVector<HookBase *>::Get_Index
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ??0bad_alloc@std@@QAE@ABV01@@Z
_TEXT	SEGMENT
___that$ = 8						; size = 4
??0bad_alloc@std@@QAE@ABV01@@Z PROC			; std::bad_alloc::bad_alloc, COMDAT
; _this$ = ecx
	mov	eax, DWORD PTR ___that$[esp-4]
	push	esi
	push	eax
	mov	esi, ecx
	call	??0exception@std@@QAE@ABV01@@Z		; std::exception::exception
	mov	DWORD PTR [esi], OFFSET ??_7bad_alloc@std@@6B@
	mov	eax, esi
	pop	esi
	ret	4
??0bad_alloc@std@@QAE@ABV01@@Z ENDP			; std::bad_alloc::bad_alloc
_TEXT	ENDS
PUBLIC	??_H@YGXPAXIHP6EPAX0@Z@Z			; `vector constructor iterator'
; Function compile flags: /Ogtpy
;	COMDAT ??_H@YGXPAXIHP6EPAX0@Z@Z
_TEXT	SEGMENT
___t$ = 8						; size = 4
___s$ = 12						; size = 4
___n$ = 16						; size = 4
___f$ = 20						; size = 4
??_H@YGXPAXIHP6EPAX0@Z@Z PROC				; `vector constructor iterator', COMDAT
	push	edi
	mov	edi, DWORD PTR ___n$[esp]
	sub	edi, 1
	js	SHORT $LN1@vector
	push	ebx
	mov	ebx, DWORD PTR ___f$[esp+4]
	push	ebp
	mov	ebp, DWORD PTR ___s$[esp+8]
	push	esi
	mov	esi, DWORD PTR ___t$[esp+12]
	npad	7
$LL2@vector:
	mov	ecx, esi
	call	ebx
	add	esi, ebp
	sub	edi, 1
	jns	SHORT $LL2@vector
	pop	esi
	pop	ebp
	pop	ebx
$LN1@vector:
	pop	edi
	ret	16					; 00000010H
??_H@YGXPAXIHP6EPAX0@Z@Z ENDP				; `vector constructor iterator'
_TEXT	ENDS
PUBLIC	??0?$allocator@D@std@@QAE@XZ			; std::allocator<char>::allocator<char>
; Function compile flags: /Ogtpy
; File c:\program files\microsoft visual studio 8\vc\include\xmemory
;	COMDAT ??0?$allocator@D@std@@QAE@XZ
_TEXT	SEGMENT
??0?$allocator@D@std@@QAE@XZ PROC			; std::allocator<char>::allocator<char>, COMDAT
; _this$ = ecx

; 120  : 	allocator() _THROW0()

	mov	eax, ecx

; 121  : 		{	// construct default allocator (do nothing)
; 122  : 		}

	ret	0
??0?$allocator@D@std@@QAE@XZ ENDP			; std::allocator<char>::allocator<char>
_TEXT	ENDS
PUBLIC	??_7?$ncVector@PAVHookBase@@@@6B@		; ncVector<HookBase *>::`vftable'
PUBLIC	??0?$ncVector@PAVHookBase@@@@QAE@XZ		; ncVector<HookBase *>::ncVector<HookBase *>
PUBLIC	??_R4?$ncVector@PAVHookBase@@@@6B@		; ncVector<HookBase *>::`RTTI Complete Object Locator'
PUBLIC	??_R0?AV?$ncVector@PAVHookBase@@@@@8		; ncVector<HookBase *> `RTTI Type Descriptor'
PUBLIC	??_R3?$ncVector@PAVHookBase@@@@8		; ncVector<HookBase *>::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2?$ncVector@PAVHookBase@@@@8		; ncVector<HookBase *>::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@?$ncVector@PAVHookBase@@@@8	; ncVector<HookBase *>::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?Resize@?$ncVector@PAVHookBase@@@@UAE_NH@Z	; ncVector<HookBase *>::Resize
EXTRN	??_E?$ncVector@PAVHookBase@@@@UAEPAXI@Z:PROC	; ncVector<HookBase *>::`vector deleting destructor'
;	COMDAT ??_R1A@?0A@EA@?$ncVector@PAVHookBase@@@@8
; File d:\source code\nc lib\ncvector.h
rdata$r	SEGMENT
??_R1A@?0A@EA@?$ncVector@PAVHookBase@@@@8 DD FLAT:??_R0?AV?$ncVector@PAVHookBase@@@@@8 ; ncVector<HookBase *>::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	00H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3?$ncVector@PAVHookBase@@@@8
rdata$r	ENDS
;	COMDAT ??_R2?$ncVector@PAVHookBase@@@@8
rdata$r	SEGMENT
??_R2?$ncVector@PAVHookBase@@@@8 DD FLAT:??_R1A@?0A@EA@?$ncVector@PAVHookBase@@@@8 ; ncVector<HookBase *>::`RTTI Base Class Array'
rdata$r	ENDS
;	COMDAT ??_R3?$ncVector@PAVHookBase@@@@8
rdata$r	SEGMENT
??_R3?$ncVector@PAVHookBase@@@@8 DD 00H			; ncVector<HookBase *>::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	01H
	DD	FLAT:??_R2?$ncVector@PAVHookBase@@@@8
rdata$r	ENDS
;	COMDAT ??_R0?AV?$ncVector@PAVHookBase@@@@@8
_DATA	SEGMENT
??_R0?AV?$ncVector@PAVHookBase@@@@@8 DD FLAT:??_7type_info@@6B@ ; ncVector<HookBase *> `RTTI Type Descriptor'
	DD	00H
	DB	'.?AV?$ncVector@PAVHookBase@@@@', 00H
_DATA	ENDS
;	COMDAT ??_R4?$ncVector@PAVHookBase@@@@6B@
rdata$r	SEGMENT
??_R4?$ncVector@PAVHookBase@@@@6B@ DD 00H		; ncVector<HookBase *>::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AV?$ncVector@PAVHookBase@@@@@8
	DD	FLAT:??_R3?$ncVector@PAVHookBase@@@@8
rdata$r	ENDS
;	COMDAT ??_7?$ncVector@PAVHookBase@@@@6B@
CONST	SEGMENT
??_7?$ncVector@PAVHookBase@@@@6B@ DD FLAT:??_R4?$ncVector@PAVHookBase@@@@6B@ ; ncVector<HookBase *>::`vftable'
	DD	FLAT:??_E?$ncVector@PAVHookBase@@@@UAEPAXI@Z
	DD	FLAT:?Clear@?$ncVector@PAVHookBase@@@@UAEXXZ
	DD	FLAT:?Resize@?$ncVector@PAVHookBase@@@@UAE_NH@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0?$ncVector@PAVHookBase@@@@QAE@XZ
_TEXT	SEGMENT
??0?$ncVector@PAVHookBase@@@@QAE@XZ PROC		; ncVector<HookBase *>::ncVector<HookBase *>, COMDAT
; _this$ = ecx

; 18   : 	ncVector()

	mov	eax, ecx

; 19   : 	{
; 20   : 		this->m_Length = 0;

	xor	ecx, ecx
	mov	DWORD PTR [eax], OFFSET ??_7?$ncVector@PAVHookBase@@@@6B@
	mov	DWORD PTR [eax+8], ecx

; 21   : 		this->m_Vector = NULL;

	mov	DWORD PTR [eax+4], ecx

; 22   : 	}

	ret	0
??0?$ncVector@PAVHookBase@@@@QAE@XZ ENDP		; ncVector<HookBase *>::ncVector<HookBase *>
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Resize@?$ncVector@PAVHookBase@@@@UAE_NH@Z
_TEXT	SEGMENT
___formal$ = 8						; size = 4
?Resize@?$ncVector@PAVHookBase@@@@UAE_NH@Z PROC		; ncVector<HookBase *>::Resize, COMDAT
; _this$ = ecx

; 65   : 		return false;

	xor	al, al

; 66   : 	}

	ret	4
?Resize@?$ncVector@PAVHookBase@@@@UAE_NH@Z ENDP		; ncVector<HookBase *>::Resize
_TEXT	ENDS
PUBLIC	??0?$allocator@D@std@@QAE@ABV01@@Z		; std::allocator<char>::allocator<char>
; Function compile flags: /Ogtpy
; File c:\program files\microsoft visual studio 8\vc\include\xmemory
;	COMDAT ??0?$allocator@D@std@@QAE@ABV01@@Z
_TEXT	SEGMENT
___formal$ = 8						; size = 4
??0?$allocator@D@std@@QAE@ABV01@@Z PROC			; std::allocator<char>::allocator<char>, COMDAT
; _this$ = ecx

; 124  : 	allocator(const allocator<_Ty>&) _THROW0()

	mov	eax, ecx

; 125  : 		{	// construct by copying (do nothing)
; 126  : 		}

	ret	4
??0?$allocator@D@std@@QAE@ABV01@@Z ENDP			; std::allocator<char>::allocator<char>
_TEXT	ENDS
PUBLIC	??$_DebugHeapDelete@X@std@@YAXPAX@Z		; std::_DebugHeapDelete<void>
EXTRN	_free:PROC
; Function compile flags: /Ogtpy
; File c:\program files\microsoft visual studio 8\vc\include\xdebug
;	COMDAT ??$_DebugHeapDelete@X@std@@YAXPAX@Z
_TEXT	SEGMENT
__Ptr$ = 8						; size = 4
??$_DebugHeapDelete@X@std@@YAXPAX@Z PROC		; std::_DebugHeapDelete<void>, COMDAT

; 56   : 	if (_Ptr != 0)

	mov	eax, DWORD PTR __Ptr$[esp-4]
	test	eax, eax
	je	SHORT $LN1@DebugHeapD

; 57   : 		{	// worth deleting
; 58   : 		_Ptr->~_Ty();
; 59   : 		// delete as _NORMAL_BLOCK, not _CRT_BLOCK, since we might have
; 60   : 		// facets allocated by normal new.
; 61   : 		free(_Ptr);

	mov	DWORD PTR __Ptr$[esp-4], eax
	jmp	_free
$LN1@DebugHeapD:

; 62   : 		}
; 63   : 	}

	ret	0
??$_DebugHeapDelete@X@std@@YAXPAX@Z ENDP		; std::_DebugHeapDelete<void>
_TEXT	ENDS
PUBLIC	??4ncString@@QAEAAV0@PBD@Z			; ncString::operator=
; Function compile flags: /Ogtpy
; File d:\source code\nc lib\ncstring.h
;	COMDAT ??4ncString@@QAEAAV0@PBD@Z
_TEXT	SEGMENT
_string$ = 8						; size = 4
??4ncString@@QAEAAV0@PBD@Z PROC				; ncString::operator=, COMDAT
; _this$ = ecx

; 74   : 	{

	push	esi
	push	edi

; 75   : 		if (string == NULL || !*string)

	mov	edi, DWORD PTR _string$[esp+4]
	test	edi, edi
	mov	esi, ecx
	je	SHORT $LN2@operator
	cmp	BYTE PTR [edi], 0
	je	SHORT $LN2@operator

; 77   : 		else
; 78   : 		{
; 79   : 			int len = strlen(string);

	mov	eax, edi
	lea	edx, DWORD PTR [eax+1]
$LL13@operator:
	mov	cl, BYTE PTR [eax]
	add	eax, 1
	test	cl, cl
	jne	SHORT $LL13@operator
	push	ebp
	sub	eax, edx
	mov	ebp, eax

; 80   : 			this->Resize(len);

	push	ebp
	mov	ecx, esi
	call	?Resize@ncString@@QAEXH@Z		; ncString::Resize

; 81   : 			strcpy(this->m_String, string);

	mov	edx, DWORD PTR [esi]
	mov	ecx, edi
$LL6@operator:
	mov	al, BYTE PTR [ecx]
	mov	BYTE PTR [edx], al
	add	ecx, 1
	add	edx, 1
	test	al, al
	jne	SHORT $LL6@operator

; 82   : 			this->m_Length = len;

	mov	DWORD PTR [esi+4], ebp
	pop	ebp
	pop	edi

; 83   : 		}
; 84   : 		return *this;

	mov	eax, esi
	pop	esi

; 85   : 	};

	ret	4
$LN2@operator:

; 76   : 			this->Free_String();

	cmp	DWORD PTR [esi], 0
	je	SHORT $LN11@operator
	push	OFFSET ??_C@_0BG@IMAMDEJB@ncString?3?3Free_String?$AA@
	push	216					; 000000d8H
	push	OFFSET ??_C@_0CB@MAJIAFJL@d?3?2source?5code?2nc?5lib?2ncString?4h@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	eax, DWORD PTR [esi]
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
$LN11@operator:
	pop	edi
	mov	DWORD PTR [esi], 0
	mov	DWORD PTR [esi+4], 0
	mov	DWORD PTR [esi+8], 0

; 83   : 		}
; 84   : 		return *this;

	mov	eax, esi
	pop	esi

; 85   : 	};

	ret	4
??4ncString@@QAEAAV0@PBD@Z ENDP				; ncString::operator=
_TEXT	ENDS
PUBLIC	??_C@_0BG@CABEMIGO@ncString?3?3Format_Args?$AA@	; `string'
PUBLIC	?Format_Args@ncString@@QAEHPBDPAD@Z		; ncString::Format_Args
EXTRN	_vsprintf:PROC
EXTRN	__vscprintf:PROC
;	COMDAT ??_C@_0BG@CABEMIGO@ncString?3?3Format_Args?$AA@
CONST	SEGMENT
??_C@_0BG@CABEMIGO@ncString?3?3Format_Args?$AA@ DB 'ncString::Format_Args'
	DB	00H						; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?Format_Args@ncString@@QAEHPBDPAD@Z
_TEXT	SEGMENT
_string$ = 8						; size = 4
_args$ = 12						; size = 4
?Format_Args@ncString@@QAEHPBDPAD@Z PROC		; ncString::Format_Args, COMDAT
; _this$ = ecx

; 231  : 		int size = _vscprintf(string, args);

	mov	eax, DWORD PTR _string$[esp-4]
	push	ebx
	push	ebp
	mov	ebp, DWORD PTR _args$[esp+4]
	push	esi
	push	edi
	push	ebp
	push	eax
	mov	ebx, ecx
	call	__vscprintf

; 232  : 		char *tmp = new char[size + 1];

	push	OFFSET ??_C@_0BG@CABEMIGO@ncString?3?3Format_Args?$AA@
	push	232					; 000000e8H
	push	OFFSET ??_C@_0CB@MAJIAFJL@d?3?2source?5code?2nc?5lib?2ncString?4h@
	mov	edi, eax
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	lea	ecx, DWORD PTR [edi+1]
	push	ecx
	call	??_U@YAPAXI@Z				; operator new[]

; 233  : 		vsprintf(tmp, string, args);

	mov	edx, DWORD PTR _string$[esp+36]
	push	ebp
	mov	esi, eax
	push	edx
	push	esi
	call	_vsprintf
	add	esp, 36					; 00000024H

; 234  : 		*this = tmp;

	push	esi
	mov	ecx, ebx
	call	??4ncString@@QAEAAV0@PBD@Z		; ncString::operator=

; 235  : 		delete [] tmp;

	push	OFFSET ??_C@_0BG@CABEMIGO@ncString?3?3Format_Args?$AA@
	push	235					; 000000ebH
	push	OFFSET ??_C@_0CB@MAJIAFJL@d?3?2source?5code?2nc?5lib?2ncString?4h@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	push	esi
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H

; 236  : 		return size;

	mov	eax, edi
	pop	edi
	pop	esi
	pop	ebp
	pop	ebx

; 237  : 	};

	ret	8
?Format_Args@ncString@@QAEHPBDPAD@Z ENDP		; ncString::Format_Args
_TEXT	ENDS
PUBLIC	??4ncWideString@@QAEAAV0@PB_W@Z			; ncWideString::operator=
; Function compile flags: /Ogtpy
;	COMDAT ??4ncWideString@@QAEAAV0@PB_W@Z
_TEXT	SEGMENT
_wString$ = 8						; size = 4
??4ncWideString@@QAEAAV0@PB_W@Z PROC			; ncWideString::operator=, COMDAT
; _this$ = ecx

; 444  : 	{

	push	ebx

; 445  : 		if (wString == NULL || !*wString)

	mov	ebx, DWORD PTR _wString$[esp]
	test	ebx, ebx
	push	esi
	mov	esi, ecx
	je	SHORT $LN2@operator@2
	cmp	WORD PTR [ebx], 0
	je	SHORT $LN2@operator@2

; 447  : 		else
; 448  : 		{
; 449  : 			int len = wcslen(wString);

	mov	eax, ebx
	lea	edx, DWORD PTR [eax+2]
$LL13@operator@2:
	mov	cx, WORD PTR [eax]
	add	eax, 2
	test	cx, cx
	jne	SHORT $LL13@operator@2
	sub	eax, edx
	push	edi
	sar	eax, 1
	mov	edi, eax

; 450  : 			this->Resize(len);

	push	edi
	mov	ecx, esi
	call	?Resize@ncWideString@@QAEXH@Z		; ncWideString::Resize

; 451  : 			wcscpy(this->m_String, wString);

	mov	edx, DWORD PTR [esi]
	mov	ecx, ebx
$LL6@operator@2:
	movzx	eax, WORD PTR [ecx]
	mov	WORD PTR [edx], ax
	add	ecx, 2
	add	edx, 2
	test	ax, ax
	jne	SHORT $LL6@operator@2

; 452  : 			this->m_Length = len;

	mov	DWORD PTR [esi+4], edi
	pop	edi

; 453  : 		}
; 454  : 		return *this;

	mov	eax, esi
	pop	esi
	pop	ebx

; 455  : 	};

	ret	4
$LN2@operator@2:

; 446  : 			this->Free_String();

	cmp	DWORD PTR [esi], 0
	je	SHORT $LN11@operator@2
	push	OFFSET ??_C@_0BK@BLLJLEJ@ncWideString?3?3Free_String?$AA@
	push	567					; 00000237H
	push	OFFSET ??_C@_0CB@MAJIAFJL@d?3?2source?5code?2nc?5lib?2ncString?4h@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	eax, DWORD PTR [esi]
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
$LN11@operator@2:
	mov	DWORD PTR [esi], 0
	mov	DWORD PTR [esi+4], 0
	mov	DWORD PTR [esi+8], 0

; 453  : 		}
; 454  : 		return *this;

	mov	eax, esi
	pop	esi
	pop	ebx

; 455  : 	};

	ret	4
??4ncWideString@@QAEAAV0@PB_W@Z ENDP			; ncWideString::operator=
_TEXT	ENDS
PUBLIC	??_7HookBase@@6B@				; HookBase::`vftable'
PUBLIC	??0HookBase@@QAE@PBDKPAX@Z			; HookBase::HookBase
PUBLIC	??_R4HookBase@@6B@				; HookBase::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVHookBase@@@8				; HookBase `RTTI Type Descriptor'
PUBLIC	??_R3HookBase@@8				; HookBase::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2HookBase@@8				; HookBase::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@HookBase@@8			; HookBase::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?As_CallHookClass@HookBase@@UAEPAVHookCallClass@@XZ ; HookBase::As_CallHookClass
PUBLIC	?As_JumpHookClass@HookBase@@UAEPAVHookJumpClass@@XZ ; HookBase::As_JumpHookClass
PUBLIC	?As_PatchByteClass@HookBase@@UAEPAVPatchByteClass@@XZ ; HookBase::As_PatchByteClass
EXTRN	??_EHookBase@@UAEPAXI@Z:PROC			; HookBase::`vector deleting destructor'
;	COMDAT ??_R1A@?0A@EA@HookBase@@8
; File d:\source code\nc lib\ncvector.h
rdata$r	SEGMENT
??_R1A@?0A@EA@HookBase@@8 DD FLAT:??_R0?AVHookBase@@@8	; HookBase::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	00H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3HookBase@@8
rdata$r	ENDS
;	COMDAT ??_R2HookBase@@8
rdata$r	SEGMENT
??_R2HookBase@@8 DD FLAT:??_R1A@?0A@EA@HookBase@@8	; HookBase::`RTTI Base Class Array'
rdata$r	ENDS
;	COMDAT ??_R3HookBase@@8
rdata$r	SEGMENT
??_R3HookBase@@8 DD 00H					; HookBase::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	01H
	DD	FLAT:??_R2HookBase@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVHookBase@@@8
_DATA	SEGMENT
??_R0?AVHookBase@@@8 DD FLAT:??_7type_info@@6B@		; HookBase `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVHookBase@@', 00H
_DATA	ENDS
;	COMDAT ??_R4HookBase@@6B@
rdata$r	SEGMENT
??_R4HookBase@@6B@ DD 00H				; HookBase::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVHookBase@@@8
	DD	FLAT:??_R3HookBase@@8
rdata$r	ENDS
;	COMDAT ??_7HookBase@@6B@
CONST	SEGMENT
??_7HookBase@@6B@ DD FLAT:??_R4HookBase@@6B@		; HookBase::`vftable'
	DD	FLAT:??_EHookBase@@UAEPAXI@Z
	DD	FLAT:?As_CallHookClass@HookBase@@UAEPAVHookCallClass@@XZ
	DD	FLAT:?As_JumpHookClass@HookBase@@UAEPAVHookJumpClass@@XZ
	DD	FLAT:?As_PatchByteClass@HookBase@@UAEPAVPatchByteClass@@XZ
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzhook.h
CONST	ENDS
;	COMDAT ??0HookBase@@QAE@PBDKPAX@Z
_TEXT	SEGMENT
_name$ = 8						; size = 4
_Address$ = 12						; size = 4
_Function$ = 16						; size = 4
??0HookBase@@QAE@PBDKPAX@Z PROC				; HookBase::HookBase, COMDAT
; _this$ = ecx

; 39   : 	{
; 40   : 		this->m_name = name;

	mov	eax, DWORD PTR _name$[esp-4]

; 41   : 		this->m_address = Address;
; 42   : 		this->m_func = (int)*&Function;

	mov	edx, DWORD PTR _Function$[esp-4]
	push	esi
	mov	esi, ecx
	mov	ecx, DWORD PTR _Address$[esp]
	mov	DWORD PTR [esi+4], eax
	mov	DWORD PTR [esi+8], ecx
	mov	DWORD PTR [esi], OFFSET ??_7HookBase@@6B@
	mov	DWORD PTR [esi+12], edx

; 43   : 		gzHookManager::m_list.Add(this);

	mov	eax, DWORD PTR ?m_list@gzHookManager@@2V?$ncDynamicVector@PAVHookBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzHookManager@@2V?$ncDynamicVector@PAVHookBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzHookManager@@2V?$ncDynamicVector@PAVHookBase@@@@A ; gzHookManager::m_list
	call	eax
	test	al, al

; 44   : 	};

	mov	eax, esi
	je	SHORT $LN3@HookBase
	mov	ecx, DWORD PTR ?m_list@gzHookManager@@2V?$ncDynamicVector@PAVHookBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzHookManager@@2V?$ncDynamicVector@PAVHookBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], esi
	add	DWORD PTR ?m_list@gzHookManager@@2V?$ncDynamicVector@PAVHookBase@@@@A+12, 1
$LN3@HookBase:
	pop	esi
	ret	12					; 0000000cH
??0HookBase@@QAE@PBDKPAX@Z ENDP				; HookBase::HookBase
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?As_CallHookClass@HookBase@@UAEPAVHookCallClass@@XZ
_TEXT	SEGMENT
?As_CallHookClass@HookBase@@UAEPAVHookCallClass@@XZ PROC ; HookBase::As_CallHookClass, COMDAT
; _this$ = ecx

; 52   : 		return NULL;

	xor	eax, eax

; 53   : 	}

	ret	0
?As_CallHookClass@HookBase@@UAEPAVHookCallClass@@XZ ENDP ; HookBase::As_CallHookClass
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?As_JumpHookClass@HookBase@@UAEPAVHookJumpClass@@XZ
_TEXT	SEGMENT
?As_JumpHookClass@HookBase@@UAEPAVHookJumpClass@@XZ PROC ; HookBase::As_JumpHookClass, COMDAT
; _this$ = ecx

; 56   : 		return NULL;

	xor	eax, eax

; 57   : 	}

	ret	0
?As_JumpHookClass@HookBase@@UAEPAVHookJumpClass@@XZ ENDP ; HookBase::As_JumpHookClass
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?As_PatchByteClass@HookBase@@UAEPAVPatchByteClass@@XZ
_TEXT	SEGMENT
?As_PatchByteClass@HookBase@@UAEPAVPatchByteClass@@XZ PROC ; HookBase::As_PatchByteClass, COMDAT
; _this$ = ecx

; 60   : 		return NULL;

	xor	eax, eax

; 61   : 	};

	ret	0
?As_PatchByteClass@HookBase@@UAEPAVPatchByteClass@@XZ ENDP ; HookBase::As_PatchByteClass
_TEXT	ENDS
PUBLIC	??1HookBase@@UAE@XZ				; HookBase::~HookBase
; Function compile flags: /Ogtpy
;	COMDAT ??1HookBase@@UAE@XZ
_TEXT	SEGMENT
??1HookBase@@UAE@XZ PROC				; HookBase::~HookBase, COMDAT
; _this$ = ecx

; 46   : 	{

	mov	DWORD PTR [ecx], OFFSET ??_7HookBase@@6B@

; 47   : 		if (gzHookManager::m_list.Get_Index(this))

	mov	edx, DWORD PTR ?m_list@gzHookManager@@2V?$ncDynamicVector@PAVHookBase@@@@A+8
	xor	eax, eax
	test	edx, edx
	push	esi
	mov	esi, DWORD PTR ?m_list@gzHookManager@@2V?$ncDynamicVector@PAVHookBase@@@@A+4
	jle	SHORT $LN22@HookBase@2
	npad	7
$LL7@HookBase@2:
	cmp	DWORD PTR [esi+eax*4], ecx
	je	SHORT $LN8@HookBase@2
	add	eax, 1
	cmp	eax, edx
	jl	SHORT $LL7@HookBase@2

; 48   : 			gzHookManager::m_list.Delete(gzHookManager::m_list.Get_Index(this));

	jmp	SHORT $LN22@HookBase@2

; 47   : 		if (gzHookManager::m_list.Get_Index(this))

$LN8@HookBase@2:
	test	eax, eax
	je	SHORT $LN1@HookBase@2
$LN22@HookBase@2:

; 48   : 			gzHookManager::m_list.Delete(gzHookManager::m_list.Get_Index(this));

	xor	eax, eax
	test	edx, edx
	jle	SHORT $LN11@HookBase@2
$LL13@HookBase@2:
	cmp	DWORD PTR [esi+eax*4], ecx
	je	SHORT $LN14@HookBase@2
	add	eax, 1
	cmp	eax, edx
	jl	SHORT $LL13@HookBase@2
$LN11@HookBase@2:
	or	eax, -1
$LN14@HookBase@2:
	push	eax
	mov	ecx, OFFSET ?m_list@gzHookManager@@2V?$ncDynamicVector@PAVHookBase@@@@A ; gzHookManager::m_list
	call	?Delete@?$ncDynamicVector@PAVHookBase@@@@UAEXH@Z ; ncDynamicVector<HookBase *>::Delete
$LN1@HookBase@2:
	pop	esi

; 49   : 	};

	ret	0
??1HookBase@@UAE@XZ ENDP				; HookBase::~HookBase
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ??_GHookBase@@UAEPAXI@Z
_TEXT	SEGMENT
___flags$ = 8						; size = 4
??_GHookBase@@UAEPAXI@Z PROC				; HookBase::`scalar deleting destructor', COMDAT
; _this$ = ecx
	push	esi
	mov	esi, ecx
	call	??1HookBase@@UAE@XZ			; HookBase::~HookBase
	test	BYTE PTR ___flags$[esp], 1
	je	SHORT $LN4@scalar@2
	push	esi
	call	??3@YAXPAX@Z				; operator delete
	add	esp, 4
$LN4@scalar@2:
	mov	eax, esi
	pop	esi
	ret	4
??_GHookBase@@UAEPAXI@Z ENDP				; HookBase::`scalar deleting destructor'
_TEXT	ENDS
PUBLIC	??_7HookCallClass@@6B@				; HookCallClass::`vftable'
PUBLIC	??0HookCallClass@@QAE@PBDKPAX@Z			; HookCallClass::HookCallClass
PUBLIC	??_R4HookCallClass@@6B@				; HookCallClass::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVHookCallClass@@@8			; HookCallClass `RTTI Type Descriptor'
PUBLIC	??_R3HookCallClass@@8				; HookCallClass::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2HookCallClass@@8				; HookCallClass::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@HookCallClass@@8			; HookCallClass::`RTTI Base Class Descriptor at (0,-1,0,64)'
EXTRN	??_EHookCallClass@@UAEPAXI@Z:PROC		; HookCallClass::`vector deleting destructor'
;	COMDAT ??_R1A@?0A@EA@HookCallClass@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@HookCallClass@@8 DD FLAT:??_R0?AVHookCallClass@@@8 ; HookCallClass::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3HookCallClass@@8
rdata$r	ENDS
;	COMDAT ??_R2HookCallClass@@8
rdata$r	SEGMENT
??_R2HookCallClass@@8 DD FLAT:??_R1A@?0A@EA@HookCallClass@@8 ; HookCallClass::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@HookBase@@8
rdata$r	ENDS
;	COMDAT ??_R3HookCallClass@@8
rdata$r	SEGMENT
??_R3HookCallClass@@8 DD 00H				; HookCallClass::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2HookCallClass@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVHookCallClass@@@8
_DATA	SEGMENT
??_R0?AVHookCallClass@@@8 DD FLAT:??_7type_info@@6B@	; HookCallClass `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVHookCallClass@@', 00H
_DATA	ENDS
;	COMDAT ??_R4HookCallClass@@6B@
rdata$r	SEGMENT
??_R4HookCallClass@@6B@ DD 00H				; HookCallClass::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVHookCallClass@@@8
	DD	FLAT:??_R3HookCallClass@@8
rdata$r	ENDS
;	COMDAT ??_7HookCallClass@@6B@
CONST	SEGMENT
??_7HookCallClass@@6B@ DD FLAT:??_R4HookCallClass@@6B@	; HookCallClass::`vftable'
	DD	FLAT:??_EHookCallClass@@UAEPAXI@Z
	DD	FLAT:?As_CallHookClass@HookBase@@UAEPAVHookCallClass@@XZ
	DD	FLAT:?As_JumpHookClass@HookBase@@UAEPAVHookJumpClass@@XZ
	DD	FLAT:?As_PatchByteClass@HookBase@@UAEPAVPatchByteClass@@XZ
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0HookCallClass@@QAE@PBDKPAX@Z
_TEXT	SEGMENT
_offset$ = 8						; size = 4
_name$ = 8						; size = 4
_PHandle$65728 = 12					; size = 4
_Address$ = 12						; size = 4
_call$ = 16						; size = 1
_Function$ = 16						; size = 4
??0HookCallClass@@QAE@PBDKPAX@Z PROC			; HookCallClass::HookCallClass, COMDAT
; _this$ = ecx

; 68   : 	{

	mov	eax, DWORD PTR _name$[esp-4]
	push	ebx
	mov	ebx, DWORD PTR _Address$[esp]
	push	ebp
	push	esi
	push	edi
	mov	edi, DWORD PTR _Function$[esp+12]
	push	edi
	push	ebx
	push	eax
	mov	esi, ecx
	call	??0HookBase@@QAE@PBDKPAX@Z		; HookBase::HookBase

; 69   : 		this->Read(Address,5,this->origBytes);

	mov	ebp, DWORD PTR __imp__GetCurrentProcessId@0
	mov	DWORD PTR [esi], OFFSET ??_7HookCallClass@@6B@
	call	ebp
	push	eax
	push	0
	push	2035711					; 001f0fffH
	call	DWORD PTR __imp__OpenProcess@12
	push	0
	push	5
	lea	ecx, DWORD PTR [esi+16]
	push	ecx
	push	ebx
	push	eax
	mov	DWORD PTR _PHandle$65728[esp+32], eax
	call	DWORD PTR __imp__ReadProcessMemory@20
	mov	edx, DWORD PTR _PHandle$65728[esp+12]
	push	edx
	call	DWORD PTR __imp__CloseHandle@4

; 70   : 		unsigned char call = 0xE8;
; 71   : 		int offset = (int)*&Function - Address -5;

	sub	edi, ebx
	sub	edi, 5
	mov	BYTE PTR _call$[esp+12], 232		; 000000e8H
	mov	DWORD PTR _offset$[esp+12], edi

; 72   : 		this->Write(Address,&call,1);

	call	ebp
	push	eax
	push	0
	push	2035711					; 001f0fffH
	call	DWORD PTR __imp__OpenProcess@12
	push	0
	mov	edi, eax
	push	1
	lea	eax, DWORD PTR _call$[esp+20]
	push	eax
	push	ebx
	push	edi
	call	DWORD PTR __imp__WriteProcessMemory@20
	push	edi
	mov	edi, DWORD PTR __imp__CloseHandle@4
	call	edi

; 73   : 		this->Write(Address +1,&offset,4);

	call	ebp
	push	eax
	push	0
	push	2035711					; 001f0fffH
	call	DWORD PTR __imp__OpenProcess@12
	push	0
	push	4
	lea	ecx, DWORD PTR _offset$[esp+20]
	push	ecx
	add	ebx, 1
	mov	ebp, eax
	push	ebx
	push	ebp
	call	DWORD PTR __imp__WriteProcessMemory@20
	push	ebp
	call	edi
	pop	edi

; 74   : 	}

	mov	eax, esi
	pop	esi
	pop	ebp
	pop	ebx
	ret	12					; 0000000cH
??0HookCallClass@@QAE@PBDKPAX@Z ENDP			; HookCallClass::HookCallClass
_TEXT	ENDS
PUBLIC	??1HookCallClass@@UAE@XZ			; HookCallClass::~HookCallClass
; Function compile flags: /Ogtpy
;	COMDAT ??1HookCallClass@@UAE@XZ
_TEXT	SEGMENT
??1HookCallClass@@UAE@XZ PROC				; HookCallClass::~HookCallClass, COMDAT
; _this$ = ecx

; 76   : 	{

	push	ebp
	push	edi
	mov	ebp, ecx
	push	ebx
	mov	DWORD PTR [ebp], OFFSET ??_7HookCallClass@@6B@

; 77   : 		for (int i = 0; i <= 4; i++)

	xor	edi, edi
	push	esi
	npad	1
$LL40@HookCallCl:

; 78   : 			this->Write(this->m_address + i,&this->origBytes[i],1);

	mov	esi, DWORD PTR [ebp+8]
	add	esi, edi
	call	DWORD PTR __imp__GetCurrentProcessId@0
	push	eax
	push	0
	push	2035711					; 001f0fffH
	call	DWORD PTR __imp__OpenProcess@12
	push	0
	mov	ebx, eax
	push	1
	lea	eax, DWORD PTR [edi+ebp+16]
	push	eax
	push	esi
	push	ebx
	call	DWORD PTR __imp__WriteProcessMemory@20
	push	ebx
	call	DWORD PTR __imp__CloseHandle@4
	add	edi, 1
	cmp	edi, 4
	jle	SHORT $LL40@HookCallCl

; 79   : 	}

	mov	DWORD PTR [ebp], OFFSET ??_7HookBase@@6B@
	mov	ecx, DWORD PTR ?m_list@gzHookManager@@2V?$ncDynamicVector@PAVHookBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzHookManager@@2V?$ncDynamicVector@PAVHookBase@@@@A+4
	xor	eax, eax
	test	ecx, ecx
	pop	esi
	pop	ebx
	jle	SHORT $LN39@HookCallCl
$LL15@HookCallCl:
	cmp	DWORD PTR [edx+eax*4], ebp
	je	SHORT $LN16@HookCallCl
	add	eax, 1
	cmp	eax, ecx
	jl	SHORT $LL15@HookCallCl
	jmp	SHORT $LN39@HookCallCl
$LN16@HookCallCl:
	test	eax, eax
	je	SHORT $LN27@HookCallCl
$LN39@HookCallCl:
	xor	eax, eax
	test	ecx, ecx
	jle	SHORT $LN27@HookCallCl
	npad	2
$LL21@HookCallCl:
	cmp	DWORD PTR [edx+eax*4], ebp
	je	SHORT $LN22@HookCallCl
	add	eax, 1
	cmp	eax, ecx
	jl	SHORT $LL21@HookCallCl
	pop	edi
	pop	ebp
	ret	0
$LN22@HookCallCl:
	test	eax, eax
	jl	SHORT $LN27@HookCallCl
	cmp	eax, ecx
	jge	SHORT $LN27@HookCallCl
	sub	DWORD PTR ?m_list@gzHookManager@@2V?$ncDynamicVector@PAVHookBase@@@@A+12, 1
	jne	SHORT $LN26@HookCallCl
	mov	edx, DWORD PTR ?m_list@gzHookManager@@2V?$ncDynamicVector@PAVHookBase@@@@A
	mov	eax, DWORD PTR [edx+4]
	pop	edi
	mov	ecx, OFFSET ?m_list@gzHookManager@@2V?$ncDynamicVector@PAVHookBase@@@@A ; gzHookManager::m_list
	pop	ebp
	jmp	eax
$LN26@HookCallCl:
	sub	ecx, eax
	lea	edx, DWORD PTR [edx+eax*4]
	lea	ecx, DWORD PTR [ecx*4-4]
	push	ecx
	lea	eax, DWORD PTR [edx+4]
	push	eax
	push	edx
	call	_memmove
	mov	ecx, DWORD PTR ?m_list@gzHookManager@@2V?$ncDynamicVector@PAVHookBase@@@@A+12
	mov	edx, DWORD PTR ?m_list@gzHookManager@@2V?$ncDynamicVector@PAVHookBase@@@@A
	mov	eax, DWORD PTR [edx+8]
	add	esp, 12					; 0000000cH
	push	ecx
	mov	ecx, OFFSET ?m_list@gzHookManager@@2V?$ncDynamicVector@PAVHookBase@@@@A ; gzHookManager::m_list
	call	eax
$LN27@HookCallCl:
	pop	edi
	pop	ebp
	ret	0
??1HookCallClass@@UAE@XZ ENDP				; HookCallClass::~HookCallClass
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ??_GHookCallClass@@UAEPAXI@Z
_TEXT	SEGMENT
___flags$ = 8						; size = 4
??_GHookCallClass@@UAEPAXI@Z PROC			; HookCallClass::`scalar deleting destructor', COMDAT
; _this$ = ecx
	push	esi
	mov	esi, ecx
	call	??1HookCallClass@@UAE@XZ		; HookCallClass::~HookCallClass
	test	BYTE PTR ___flags$[esp], 1
	je	SHORT $LN4@scalar@3
	push	esi
	call	??3@YAXPAX@Z				; operator delete
	add	esp, 4
$LN4@scalar@3:
	mov	eax, esi
	pop	esi
	ret	4
??_GHookCallClass@@UAEPAXI@Z ENDP			; HookCallClass::`scalar deleting destructor'
_TEXT	ENDS
PUBLIC	??_7HookJumpClass@@6B@				; HookJumpClass::`vftable'
PUBLIC	??0HookJumpClass@@QAE@PBDKPAX@Z			; HookJumpClass::HookJumpClass
PUBLIC	??_R4HookJumpClass@@6B@				; HookJumpClass::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVHookJumpClass@@@8			; HookJumpClass `RTTI Type Descriptor'
PUBLIC	??_R3HookJumpClass@@8				; HookJumpClass::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2HookJumpClass@@8				; HookJumpClass::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@HookJumpClass@@8			; HookJumpClass::`RTTI Base Class Descriptor at (0,-1,0,64)'
EXTRN	??_EHookJumpClass@@UAEPAXI@Z:PROC		; HookJumpClass::`vector deleting destructor'
;	COMDAT ??_R1A@?0A@EA@HookJumpClass@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@HookJumpClass@@8 DD FLAT:??_R0?AVHookJumpClass@@@8 ; HookJumpClass::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3HookJumpClass@@8
rdata$r	ENDS
;	COMDAT ??_R2HookJumpClass@@8
rdata$r	SEGMENT
??_R2HookJumpClass@@8 DD FLAT:??_R1A@?0A@EA@HookJumpClass@@8 ; HookJumpClass::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@HookBase@@8
rdata$r	ENDS
;	COMDAT ??_R3HookJumpClass@@8
rdata$r	SEGMENT
??_R3HookJumpClass@@8 DD 00H				; HookJumpClass::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2HookJumpClass@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVHookJumpClass@@@8
_DATA	SEGMENT
??_R0?AVHookJumpClass@@@8 DD FLAT:??_7type_info@@6B@	; HookJumpClass `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVHookJumpClass@@', 00H
_DATA	ENDS
;	COMDAT ??_R4HookJumpClass@@6B@
rdata$r	SEGMENT
??_R4HookJumpClass@@6B@ DD 00H				; HookJumpClass::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVHookJumpClass@@@8
	DD	FLAT:??_R3HookJumpClass@@8
rdata$r	ENDS
;	COMDAT ??_7HookJumpClass@@6B@
CONST	SEGMENT
??_7HookJumpClass@@6B@ DD FLAT:??_R4HookJumpClass@@6B@	; HookJumpClass::`vftable'
	DD	FLAT:??_EHookJumpClass@@UAEPAXI@Z
	DD	FLAT:?As_CallHookClass@HookBase@@UAEPAVHookCallClass@@XZ
	DD	FLAT:?As_JumpHookClass@HookBase@@UAEPAVHookJumpClass@@XZ
	DD	FLAT:?As_PatchByteClass@HookBase@@UAEPAVPatchByteClass@@XZ
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0HookJumpClass@@QAE@PBDKPAX@Z
_TEXT	SEGMENT
_offset$ = 8						; size = 4
_name$ = 8						; size = 4
_PHandle$65827 = 12					; size = 4
_Address$ = 12						; size = 4
_jmp$ = 16						; size = 1
_Function$ = 16						; size = 4
??0HookJumpClass@@QAE@PBDKPAX@Z PROC			; HookJumpClass::HookJumpClass, COMDAT
; _this$ = ecx

; 91   : 	{

	mov	eax, DWORD PTR _name$[esp-4]
	push	ebx
	mov	ebx, DWORD PTR _Address$[esp]
	push	ebp
	push	esi
	push	edi
	mov	edi, DWORD PTR _Function$[esp+12]
	push	edi
	push	ebx
	push	eax
	mov	esi, ecx
	call	??0HookBase@@QAE@PBDKPAX@Z		; HookBase::HookBase

; 92   : 		this->Read(Address,5,this->origBytes);

	mov	ebp, DWORD PTR __imp__GetCurrentProcessId@0
	mov	DWORD PTR [esi], OFFSET ??_7HookJumpClass@@6B@
	call	ebp
	push	eax
	push	0
	push	2035711					; 001f0fffH
	call	DWORD PTR __imp__OpenProcess@12
	push	0
	push	5
	lea	ecx, DWORD PTR [esi+16]
	push	ecx
	push	ebx
	push	eax
	mov	DWORD PTR _PHandle$65827[esp+32], eax
	call	DWORD PTR __imp__ReadProcessMemory@20
	mov	edx, DWORD PTR _PHandle$65827[esp+12]
	push	edx
	call	DWORD PTR __imp__CloseHandle@4

; 93   : 		unsigned char jmp = 0xE9;
; 94   : 		int offset = (int)*&Function - Address -5;

	sub	edi, ebx
	sub	edi, 5
	mov	BYTE PTR _jmp$[esp+12], 233		; 000000e9H
	mov	DWORD PTR _offset$[esp+12], edi

; 95   : 		this->Write(Address,&jmp,1);

	call	ebp
	push	eax
	push	0
	push	2035711					; 001f0fffH
	call	DWORD PTR __imp__OpenProcess@12
	push	0
	mov	edi, eax
	push	1
	lea	eax, DWORD PTR _jmp$[esp+20]
	push	eax
	push	ebx
	push	edi
	call	DWORD PTR __imp__WriteProcessMemory@20
	push	edi
	mov	edi, DWORD PTR __imp__CloseHandle@4
	call	edi

; 96   : 		this->Write(Address +1,&offset,4);

	call	ebp
	push	eax
	push	0
	push	2035711					; 001f0fffH
	call	DWORD PTR __imp__OpenProcess@12
	push	0
	push	4
	lea	ecx, DWORD PTR _offset$[esp+20]
	push	ecx
	add	ebx, 1
	mov	ebp, eax
	push	ebx
	push	ebp
	call	DWORD PTR __imp__WriteProcessMemory@20
	push	ebp
	call	edi
	pop	edi

; 97   : 	}

	mov	eax, esi
	pop	esi
	pop	ebp
	pop	ebx
	ret	12					; 0000000cH
??0HookJumpClass@@QAE@PBDKPAX@Z ENDP			; HookJumpClass::HookJumpClass
_TEXT	ENDS
PUBLIC	??1HookJumpClass@@UAE@XZ			; HookJumpClass::~HookJumpClass
; Function compile flags: /Ogtpy
;	COMDAT ??1HookJumpClass@@UAE@XZ
_TEXT	SEGMENT
??1HookJumpClass@@UAE@XZ PROC				; HookJumpClass::~HookJumpClass, COMDAT
; _this$ = ecx

; 99   : 	{

	push	ebp
	push	edi
	mov	ebp, ecx
	push	ebx
	mov	DWORD PTR [ebp], OFFSET ??_7HookJumpClass@@6B@

; 100  : 		for (int i = 0; i <= 4; i++)

	xor	edi, edi
	push	esi
	npad	1
$LL40@HookJumpCl:

; 101  : 			this->Write(this->m_address + i,&this->origBytes[i],1);

	mov	esi, DWORD PTR [ebp+8]
	add	esi, edi
	call	DWORD PTR __imp__GetCurrentProcessId@0
	push	eax
	push	0
	push	2035711					; 001f0fffH
	call	DWORD PTR __imp__OpenProcess@12
	push	0
	mov	ebx, eax
	push	1
	lea	eax, DWORD PTR [edi+ebp+16]
	push	eax
	push	esi
	push	ebx
	call	DWORD PTR __imp__WriteProcessMemory@20
	push	ebx
	call	DWORD PTR __imp__CloseHandle@4
	add	edi, 1
	cmp	edi, 4
	jle	SHORT $LL40@HookJumpCl

; 102  : 	}

	mov	DWORD PTR [ebp], OFFSET ??_7HookBase@@6B@
	mov	ecx, DWORD PTR ?m_list@gzHookManager@@2V?$ncDynamicVector@PAVHookBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzHookManager@@2V?$ncDynamicVector@PAVHookBase@@@@A+4
	xor	eax, eax
	test	ecx, ecx
	pop	esi
	pop	ebx
	jle	SHORT $LN39@HookJumpCl
$LL15@HookJumpCl:
	cmp	DWORD PTR [edx+eax*4], ebp
	je	SHORT $LN16@HookJumpCl
	add	eax, 1
	cmp	eax, ecx
	jl	SHORT $LL15@HookJumpCl
	jmp	SHORT $LN39@HookJumpCl
$LN16@HookJumpCl:
	test	eax, eax
	je	SHORT $LN27@HookJumpCl
$LN39@HookJumpCl:
	xor	eax, eax
	test	ecx, ecx
	jle	SHORT $LN27@HookJumpCl
	npad	2
$LL21@HookJumpCl:
	cmp	DWORD PTR [edx+eax*4], ebp
	je	SHORT $LN22@HookJumpCl
	add	eax, 1
	cmp	eax, ecx
	jl	SHORT $LL21@HookJumpCl
	pop	edi
	pop	ebp
	ret	0
$LN22@HookJumpCl:
	test	eax, eax
	jl	SHORT $LN27@HookJumpCl
	cmp	eax, ecx
	jge	SHORT $LN27@HookJumpCl
	sub	DWORD PTR ?m_list@gzHookManager@@2V?$ncDynamicVector@PAVHookBase@@@@A+12, 1
	jne	SHORT $LN26@HookJumpCl
	mov	edx, DWORD PTR ?m_list@gzHookManager@@2V?$ncDynamicVector@PAVHookBase@@@@A
	mov	eax, DWORD PTR [edx+4]
	pop	edi
	mov	ecx, OFFSET ?m_list@gzHookManager@@2V?$ncDynamicVector@PAVHookBase@@@@A ; gzHookManager::m_list
	pop	ebp
	jmp	eax
$LN26@HookJumpCl:
	sub	ecx, eax
	lea	edx, DWORD PTR [edx+eax*4]
	lea	ecx, DWORD PTR [ecx*4-4]
	push	ecx
	lea	eax, DWORD PTR [edx+4]
	push	eax
	push	edx
	call	_memmove
	mov	ecx, DWORD PTR ?m_list@gzHookManager@@2V?$ncDynamicVector@PAVHookBase@@@@A+12
	mov	edx, DWORD PTR ?m_list@gzHookManager@@2V?$ncDynamicVector@PAVHookBase@@@@A
	mov	eax, DWORD PTR [edx+8]
	add	esp, 12					; 0000000cH
	push	ecx
	mov	ecx, OFFSET ?m_list@gzHookManager@@2V?$ncDynamicVector@PAVHookBase@@@@A ; gzHookManager::m_list
	call	eax
$LN27@HookJumpCl:
	pop	edi
	pop	ebp
	ret	0
??1HookJumpClass@@UAE@XZ ENDP				; HookJumpClass::~HookJumpClass
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ??_GHookJumpClass@@UAEPAXI@Z
_TEXT	SEGMENT
___flags$ = 8						; size = 4
??_GHookJumpClass@@UAEPAXI@Z PROC			; HookJumpClass::`scalar deleting destructor', COMDAT
; _this$ = ecx
	push	esi
	mov	esi, ecx
	call	??1HookJumpClass@@UAE@XZ		; HookJumpClass::~HookJumpClass
	test	BYTE PTR ___flags$[esp], 1
	je	SHORT $LN4@scalar@4
	push	esi
	call	??3@YAXPAX@Z				; operator delete
	add	esp, 4
$LN4@scalar@4:
	mov	eax, esi
	pop	esi
	ret	4
??_GHookJumpClass@@UAEPAXI@Z ENDP			; HookJumpClass::`scalar deleting destructor'
_TEXT	ENDS
PUBLIC	??_7PatchByteClass@@6B@				; PatchByteClass::`vftable'
PUBLIC	??0PatchByteClass@@QAE@PBDKEH@Z			; PatchByteClass::PatchByteClass
PUBLIC	??_R4PatchByteClass@@6B@			; PatchByteClass::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVPatchByteClass@@@8			; PatchByteClass `RTTI Type Descriptor'
PUBLIC	??_R3PatchByteClass@@8				; PatchByteClass::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2PatchByteClass@@8				; PatchByteClass::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@PatchByteClass@@8			; PatchByteClass::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?As_PatchByteClass@PatchByteClass@@UAEPAV1@XZ	; PatchByteClass::As_PatchByteClass
EXTRN	??_EPatchByteClass@@UAEPAXI@Z:PROC		; PatchByteClass::`vector deleting destructor'
;	COMDAT ??_R1A@?0A@EA@PatchByteClass@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@PatchByteClass@@8 DD FLAT:??_R0?AVPatchByteClass@@@8 ; PatchByteClass::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3PatchByteClass@@8
rdata$r	ENDS
;	COMDAT ??_R2PatchByteClass@@8
rdata$r	SEGMENT
??_R2PatchByteClass@@8 DD FLAT:??_R1A@?0A@EA@PatchByteClass@@8 ; PatchByteClass::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@HookBase@@8
rdata$r	ENDS
;	COMDAT ??_R3PatchByteClass@@8
rdata$r	SEGMENT
??_R3PatchByteClass@@8 DD 00H				; PatchByteClass::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2PatchByteClass@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVPatchByteClass@@@8
_DATA	SEGMENT
??_R0?AVPatchByteClass@@@8 DD FLAT:??_7type_info@@6B@	; PatchByteClass `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVPatchByteClass@@', 00H
_DATA	ENDS
;	COMDAT ??_R4PatchByteClass@@6B@
rdata$r	SEGMENT
??_R4PatchByteClass@@6B@ DD 00H				; PatchByteClass::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVPatchByteClass@@@8
	DD	FLAT:??_R3PatchByteClass@@8
rdata$r	ENDS
;	COMDAT ??_7PatchByteClass@@6B@
CONST	SEGMENT
??_7PatchByteClass@@6B@ DD FLAT:??_R4PatchByteClass@@6B@ ; PatchByteClass::`vftable'
	DD	FLAT:??_EPatchByteClass@@UAEPAXI@Z
	DD	FLAT:?As_CallHookClass@HookBase@@UAEPAVHookCallClass@@XZ
	DD	FLAT:?As_JumpHookClass@HookBase@@UAEPAVHookJumpClass@@XZ
	DD	FLAT:?As_PatchByteClass@PatchByteClass@@UAEPAV1@XZ
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0PatchByteClass@@QAE@PBDKEH@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
_name$ = 8						; size = 4
_Address$ = 12						; size = 4
_Byte$ = 16						; size = 1
_patchLength$ = 20					; size = 4
??0PatchByteClass@@QAE@PBDKEH@Z PROC			; PatchByteClass::PatchByteClass, COMDAT
; _this$ = ecx

; 114  : 	{

	push	ecx
	mov	eax, DWORD PTR _name$[esp]
	push	ebx
	push	ebp
	mov	ebp, DWORD PTR _Address$[esp+8]
	push	esi
	push	edi
	push	0
	push	ebp
	mov	edi, ecx
	push	eax
	mov	DWORD PTR _this$[esp+32], edi
	call	??0HookBase@@QAE@PBDKPAX@Z		; HookBase::HookBase

; 115  : 		this->Byte = Byte;
; 116  : 		//this->origBytes = new unsigned char[patchLength +1];
; 117  : 		//this->Read(Address,patchLength,this->origBytes);
; 118  : 		this->patchedSize = patchLength;

	mov	ebx, DWORD PTR _patchLength$[esp+16]
	mov	cl, BYTE PTR _Byte$[esp+16]

; 119  : 		for (int i = 0; i < patchLength; i++)

	xor	esi, esi
	test	ebx, ebx
	mov	DWORD PTR [edi], OFFSET ??_7PatchByteClass@@6B@
	mov	BYTE PTR [edi+20], cl
	mov	DWORD PTR [edi+16], ebx
	jle	SHORT $LN11@PatchByteC
$LL12@PatchByteC:

; 120  : 			this->Write(Address + i,&Byte,1);

	call	DWORD PTR __imp__GetCurrentProcessId@0
	push	eax
	push	0
	push	2035711					; 001f0fffH
	call	DWORD PTR __imp__OpenProcess@12
	push	0
	push	1
	mov	edi, eax
	lea	edx, DWORD PTR _Byte$[esp+24]
	push	edx
	lea	eax, DWORD PTR [esi+ebp]
	push	eax
	push	edi
	call	DWORD PTR __imp__WriteProcessMemory@20
	push	edi
	call	DWORD PTR __imp__CloseHandle@4
	add	esi, 1
	cmp	esi, ebx
	jl	SHORT $LL12@PatchByteC

; 121  : 	}

	mov	eax, DWORD PTR _this$[esp+20]
	pop	edi
	pop	esi
	pop	ebp
	pop	ebx
	pop	ecx
	ret	16					; 00000010H
$LN11@PatchByteC:
	mov	eax, edi
	pop	edi
	pop	esi
	pop	ebp
	pop	ebx
	pop	ecx
	ret	16					; 00000010H
??0PatchByteClass@@QAE@PBDKEH@Z ENDP			; PatchByteClass::PatchByteClass
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?As_PatchByteClass@PatchByteClass@@UAEPAV1@XZ
_TEXT	SEGMENT
?As_PatchByteClass@PatchByteClass@@UAEPAV1@XZ PROC	; PatchByteClass::As_PatchByteClass, COMDAT
; _this$ = ecx

; 134  : 	{

	mov	eax, ecx

; 135  : 		return this;
; 136  : 	}

	ret	0
?As_PatchByteClass@PatchByteClass@@UAEPAV1@XZ ENDP	; PatchByteClass::As_PatchByteClass
_TEXT	ENDS
PUBLIC	??1PatchByteClass@@UAE@XZ			; PatchByteClass::~PatchByteClass
; Function compile flags: /Ogtpy
;	COMDAT ??1PatchByteClass@@UAE@XZ
_TEXT	SEGMENT
??1PatchByteClass@@UAE@XZ PROC				; PatchByteClass::~PatchByteClass, COMDAT
; _this$ = ecx

; 129  : 	{

	mov	DWORD PTR [ecx], OFFSET ??_7PatchByteClass@@6B@

; 130  : 		//if (this->origBytes)
; 131  : 		//	delete this->origBytes;
; 132  : 	}

	jmp	??1HookBase@@UAE@XZ			; HookBase::~HookBase
??1PatchByteClass@@UAE@XZ ENDP				; PatchByteClass::~PatchByteClass
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ??_GPatchByteClass@@UAEPAXI@Z
_TEXT	SEGMENT
___flags$ = 8						; size = 4
??_GPatchByteClass@@UAEPAXI@Z PROC			; PatchByteClass::`scalar deleting destructor', COMDAT
; _this$ = ecx
	push	esi
	mov	esi, ecx
	mov	DWORD PTR [esi], OFFSET ??_7PatchByteClass@@6B@
	call	??1HookBase@@UAE@XZ			; HookBase::~HookBase
	test	BYTE PTR ___flags$[esp], 1
	je	SHORT $LN7@scalar@5
	push	esi
	call	??3@YAXPAX@Z				; operator delete
	add	esp, 4
$LN7@scalar@5:
	mov	eax, esi
	pop	esi
	ret	4
??_GPatchByteClass@@UAEPAXI@Z ENDP			; PatchByteClass::`scalar deleting destructor'
_TEXT	ENDS
PUBLIC	??_C@_0N@MFPHPFEP@?4?2gzhook?4cpp?$AA@		; `string'
PUBLIC	??_C@_0BB@JKNLGBOD@Hook_LevelLoaded?$AA@	; `string'
PUBLIC	?Hook_LevelLoaded@@YGXXZ			; Hook_LevelLoaded
EXTRN	?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A:BYTE ; gzEventManager::m_list
EXTRN	?gzInit@@3PAVgzInitClass@@A:DWORD		; gzInit
EXTRN	??0gzInitClass@@QAE@XZ:PROC			; gzInitClass::gzInitClass
EXTRN	??2@YAPAXI@Z:PROC				; operator new
EXTRN	?m_initial@gzManagerClass@@2_NA:BYTE		; gzManagerClass::m_initial
;	COMDAT ??_C@_0N@MFPHPFEP@?4?2gzhook?4cpp?$AA@
; File d:\source code\nc lib\ncvector.h
CONST	SEGMENT
??_C@_0N@MFPHPFEP@?4?2gzhook?4cpp?$AA@ DB '.\gzhook.cpp', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BB@JKNLGBOD@Hook_LevelLoaded?$AA@
CONST	SEGMENT
??_C@_0BB@JKNLGBOD@Hook_LevelLoaded?$AA@ DB 'Hook_LevelLoaded', 00H ; `string'
CONST	ENDS
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$?Hook_LevelLoaded@@YGXXZ DD 0ffffffffH
	DD	FLAT:__unwindfunclet$?Hook_LevelLoaded@@YGXXZ$0
__ehfuncinfo$?Hook_LevelLoaded@@YGXXZ DD 019930522H
	DD	01H
	DD	FLAT:__unwindtable$?Hook_LevelLoaded@@YGXXZ
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	01H
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzhook.cpp
xdata$x	ENDS
;	COMDAT ?Hook_LevelLoaded@@YGXXZ
_TEXT	SEGMENT
$T65951 = -16						; size = 4
__$EHRec$ = -12						; size = 12
?Hook_LevelLoaded@@YGXXZ PROC				; Hook_LevelLoaded, COMDAT

; 17   : void __stdcall Hook_LevelLoaded() {

	push	-1
	push	__ehhandler$?Hook_LevelLoaded@@YGXXZ
	mov	eax, DWORD PTR fs:0
	push	eax
	mov	DWORD PTR fs:0, esp
	push	ecx

; 18   : 	if (!gzManagerClass::m_initial)

	cmp	BYTE PTR ?m_initial@gzManagerClass@@2_NA, 0 ; gzManagerClass::m_initial
	jne	SHORT $LN23@Hook_Level

; 19   : 	{
; 20   : 		gzInit = new gzInitClass;

	push	OFFSET ??_C@_0BB@JKNLGBOD@Hook_LevelLoaded?$AA@
	push	20					; 00000014H
	push	OFFSET ??_C@_0N@MFPHPFEP@?4?2gzhook?4cpp?$AA@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	push	1
	call	??2@YAPAXI@Z				; operator new
	add	esp, 16					; 00000010H
	mov	DWORD PTR $T65951[esp+16], eax
	test	eax, eax
	mov	DWORD PTR __$EHRec$[esp+24], 0
	je	SHORT $LN8@Hook_Level
	mov	ecx, eax
	call	??0gzInitClass@@QAE@XZ			; gzInitClass::gzInitClass
	jmp	SHORT $LN9@Hook_Level
$LN8@Hook_Level:
	xor	eax, eax
$LN9@Hook_Level:
	mov	DWORD PTR __$EHRec$[esp+24], -1
	mov	DWORD PTR ?gzInit@@3PAVgzInitClass@@A, eax ; gzInit

; 21   : 		gzManagerClass::m_initial = true;

	mov	BYTE PTR ?m_initial@gzManagerClass@@2_NA, 1 ; gzManagerClass::m_initial
$LN23@Hook_Level:
	push	esi

; 22   : 	}
; 23   : 
; 24   : 	// Events
; 25   : 	for (int i = 0; i < gzEventManager::m_list.Count(); i++)

	xor	esi, esi
	cmp	DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12, esi
	jle	SHORT $LN2@Hook_Level
$LL4@Hook_Level:

; 26   : 	{
; 27   : 		if ((gzEventManager::m_list[i]->GetEventType() & EVT_GAME) == EVT_GAME)

	mov	eax, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+4
	mov	ecx, DWORD PTR [eax+esi*4]
	test	BYTE PTR [ecx+16], 1
	je	SHORT $LN3@Hook_Level

; 28   : 			gzEventManager::m_list[i]->Level_Loaded();

	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+16]
	call	eax
$LN3@Hook_Level:
	add	esi, 1
	cmp	esi, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12
	jl	SHORT $LL4@Hook_Level
$LN2@Hook_Level:

; 29   : 	}
; 30   : 	_asm {
; 31   : 		mov eax, [0x81FF84]

	mov	eax, 8519556				; 0081ff84H

; 32   : 		mov eax, [eax]

	mov	eax, DWORD PTR [eax]

; 33   : 	}
; 34   : }

	mov	ecx, DWORD PTR __$EHRec$[esp+20]
	pop	esi
	mov	DWORD PTR fs:0, ecx
	add	esp, 16					; 00000010H
	ret	0
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$?Hook_LevelLoaded@@YGXXZ$0:
	mov	eax, DWORD PTR $T65951[ebp]
	push	eax
	call	??3@YAXPAX@Z				; operator delete
	pop	ecx
	ret	0
__ehhandler$?Hook_LevelLoaded@@YGXXZ:
	mov	eax, OFFSET __ehfuncinfo$?Hook_LevelLoaded@@YGXXZ
	jmp	___CxxFrameHandler3
text$x	ENDS
?Hook_LevelLoaded@@YGXXZ ENDP				; Hook_LevelLoaded
PUBLIC	?Proc_GameOver@@YGXXZ				; Proc_GameOver
; Function compile flags: /Ogtpy
;	COMDAT ?Proc_GameOver@@YGXXZ
_TEXT	SEGMENT
?Proc_GameOver@@YGXXZ PROC				; Proc_GameOver, COMDAT

; 38   : {

	push	esi

; 39   : 	for (int i = 0; i < gzEventManager::m_list.Count(); i++)

	xor	esi, esi
	cmp	DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12, esi
	jle	SHORT $LN2@Proc_GameO
	npad	5
$LL4@Proc_GameO:

; 40   : 	{
; 41   : 		if ((gzEventManager::m_list[i]->GetEventType() & EVT_GAME) == EVT_GAME)

	mov	eax, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+4
	mov	ecx, DWORD PTR [eax+esi*4]
	test	BYTE PTR [ecx+16], 1
	je	SHORT $LN3@Proc_GameO

; 42   : 			gzEventManager::m_list[i]->Level_Ended();

	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+20]
	call	eax
$LN3@Proc_GameO:
	add	esi, 1
	cmp	esi, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12
	jl	SHORT $LL4@Proc_GameO
$LN2@Proc_GameO:
	pop	esi

; 43   : 	}
; 44   : }

	ret	0
?Proc_GameOver@@YGXXZ ENDP				; Proc_GameOver
_TEXT	ENDS
PUBLIC	?Hook_GameOver@@YAXXZ				; Hook_GameOver
; Function compile flags: /Odtp
;	COMDAT ?Hook_GameOver@@YAXXZ
_TEXT	SEGMENT
?Hook_GameOver@@YAXXZ PROC				; Hook_GameOver, COMDAT

; 47   : 	_asm {
; 48   : 		push ecx

	push	ecx

; 49   : 		call Proc_GameOver

	call	?Proc_GameOver@@YGXXZ			; Proc_GameOver

; 50   : 		pop ecx

	pop	ecx

; 51   : 		sub esp, 0x10

	sub	esp, 16					; 00000010H

; 52   : 		push ebx

	push	ebx

; 53   : 		push ebp

	push	ebp

; 54   : 		push esi

	push	esi

; 55   : 		mov esi, 0x4749B6

	mov	esi, 4671926				; 004749b6H

; 56   : 		jmp esi

	jmp	esi
?Hook_GameOver@@YAXXZ ENDP				; Hook_GameOver
_TEXT	ENDS
PUBLIC	?Hook_FrameUpdate@@YGXXZ			; Hook_FrameUpdate
EXTRN	?Think@nc_GameModeManager@@SAXXZ:PROC		; nc_GameModeManager::Think
EXTRN	?PServerConnection@nc_cNetwork@@2AAPAVnc_cConnection@@A:DWORD ; nc_cNetwork::PServerConnection
; Function compile flags: /Ogtpy
;	COMDAT ?Hook_FrameUpdate@@YGXXZ
_TEXT	SEGMENT
?Hook_FrameUpdate@@YGXXZ PROC				; Hook_FrameUpdate, COMDAT

; 62   : 	if (nc_cNetwork::PServerConnection)

	mov	eax, DWORD PTR ?PServerConnection@nc_cNetwork@@2AAPAVnc_cConnection@@A ; nc_cNetwork::PServerConnection
	cmp	DWORD PTR [eax], 0
	je	SHORT $LN2@Hook_Frame
	push	esi

; 63   : 	{
; 64   : 		for (int i = 0; i < gzEventManager::m_list.Count(); i++)

	xor	esi, esi
	cmp	DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12, esi
	jle	SHORT $LN18@Hook_Frame
	npad	11
$LL4@Hook_Frame:

; 65   : 		{
; 66   : 			if ((gzEventManager::m_list[i]->GetEventType() & EVT_GAME) == EVT_GAME)

	mov	ecx, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+4
	mov	ecx, DWORD PTR [ecx+esi*4]
	test	BYTE PTR [ecx+16], 1
	je	SHORT $LN3@Hook_Frame

; 67   : 				gzEventManager::m_list[i]->Think();

	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+24]
	call	eax
$LN3@Hook_Frame:
	add	esi, 1
	cmp	esi, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12
	jl	SHORT $LL4@Hook_Frame
$LN18@Hook_Frame:
	pop	esi
$LN2@Hook_Frame:

; 68   : 		}
; 69   : 	}
; 70   : 	nc_GameModeManager::Think();

	jmp	?Think@nc_GameModeManager@@SAXXZ	; nc_GameModeManager::Think
?Hook_FrameUpdate@@YGXXZ ENDP				; Hook_FrameUpdate
_TEXT	ENDS
PUBLIC	??0gzEventObjectDamage@@QAE@XZ			; gzEventObjectDamage::gzEventObjectDamage
; Function compile flags: /Ogtpy
;	COMDAT ??0gzEventObjectDamage@@QAE@XZ
_TEXT	SEGMENT
??0gzEventObjectDamage@@QAE@XZ PROC			; gzEventObjectDamage::gzEventObjectDamage, COMDAT
; _this$ = ecx
	mov	eax, ecx
	mov	BYTE PTR [eax+12], 1
	ret	0
??0gzEventObjectDamage@@QAE@XZ ENDP			; gzEventObjectDamage::gzEventObjectDamage
_TEXT	ENDS
PUBLIC	?Proc_OnObjectKill@@YGXPAVnc_OffenseObjectClass@@PAVnc_DamageableGameObj@@@Z ; Proc_OnObjectKill
; Function compile flags: /Ogtpy
;	COMDAT ?Proc_OnObjectKill@@YGXPAVnc_OffenseObjectClass@@PAVnc_DamageableGameObj@@@Z
_TEXT	SEGMENT
_evt$ = -24						; size = 24
_Offense$ = 8						; size = 4
_victim$ = 12						; size = 4
?Proc_OnObjectKill@@YGXPAVnc_OffenseObjectClass@@PAVnc_DamageableGameObj@@@Z PROC ; Proc_OnObjectKill, COMDAT

; 219  : 	nc_ScriptableGameObj *killer = NULL;
; 220  : 	if (Offense->Damager.Reference)

	mov	eax, DWORD PTR _Offense$[esp-4]
	mov	eax, DWORD PTR [eax+20]
	sub	esp, 24					; 00000018H
	push	esi
	xor	esi, esi
	xor	ecx, ecx
	cmp	eax, esi
	je	SHORT $LN5@Proc_OnObj

; 221  : 		killer = Offense->Damager.Reference->obj;

	mov	ecx, DWORD PTR [eax+4]
$LN5@Proc_OnObj:

; 222  : 
; 223  : 	gzEventObjectKill evt;
; 224  : 	evt.m_attacker = (killer ? killer->As_DamageableGameObj() : NULL);

	cmp	ecx, esi
	mov	BYTE PTR _evt$[esp+40], 1
	je	SHORT $LN8@Proc_OnObj
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+60]
	call	eax
	mov	DWORD PTR _evt$[esp+48], eax
	jmp	SHORT $LN9@Proc_OnObj
$LN8@Proc_OnObj:
	mov	DWORD PTR _evt$[esp+48], esi
$LN9@Proc_OnObj:

; 225  : 	evt.m_defender = victim->As_DamageableGameObj();

	mov	ecx, DWORD PTR _victim$[esp+24]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+60]
	call	eax

; 226  : 	for (int i = 0; i < gzEventManager::m_list.Count(); i++)

	cmp	DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12, esi
	mov	DWORD PTR _evt$[esp+44], eax
	jle	SHORT $LN2@Proc_OnObj
	npad	9
$LL4@Proc_OnObj:

; 227  : 	{
; 228  : 		if ((gzEventManager::m_list[i]->GetEventType() & EVT_OBJECT) == EVT_OBJECT)

	mov	ecx, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+4
	mov	ecx, DWORD PTR [ecx+esi*4]
	test	BYTE PTR [ecx+16], 2
	je	SHORT $LN3@Proc_OnObj

; 229  : 			gzEventManager::m_list[i]->Object_Killed(evt);

	mov	edx, DWORD PTR [ecx]
	mov	edx, DWORD PTR [edx+36]
	lea	eax, DWORD PTR _evt$[esp+28]
	push	eax
	call	edx
$LN3@Proc_OnObj:
	add	esi, 1
	cmp	esi, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12
	jl	SHORT $LL4@Proc_OnObj
$LN2@Proc_OnObj:
	pop	esi

; 230  : 	}
; 231  : }

	add	esp, 24					; 00000018H
	ret	8
?Proc_OnObjectKill@@YGXPAVnc_OffenseObjectClass@@PAVnc_DamageableGameObj@@@Z ENDP ; Proc_OnObjectKill
_TEXT	ENDS
PUBLIC	?Hook_OnObjectKill@@YAXXZ			; Hook_OnObjectKill
; Function compile flags: /Odtp
;	COMDAT ?Hook_OnObjectKill@@YAXXZ
_TEXT	SEGMENT
?Hook_OnObjectKill@@YAXXZ PROC				; Hook_OnObjectKill, COMDAT

; 234  : 	_asm {
; 235  : 		push esi

	push	esi

; 236  : 		push ebp

	push	ebp

; 237  : 		call Proc_OnObjectKill

	call	?Proc_OnObjectKill@@YGXPAVnc_OffenseObjectClass@@PAVnc_DamageableGameObj@@@Z ; Proc_OnObjectKill

; 238  : 		mov eax, [esi+0x6F8]

	mov	eax, DWORD PTR [esi+1784]

; 239  : 		mov edi, 0x6D8E9C

	mov	edi, 7179932				; 006d8e9cH

; 240  : 		jmp edi

	jmp	edi
?Hook_OnObjectKill@@YAXXZ ENDP				; Hook_OnObjectKill
_TEXT	ENDS
PUBLIC	?Proc_OnObjectKillExpired@@YGXPAVnc_DamageableGameObj@@@Z ; Proc_OnObjectKillExpired
; Function compile flags: /Ogtpy
;	COMDAT ?Proc_OnObjectKillExpired@@YGXPAVnc_DamageableGameObj@@@Z
_TEXT	SEGMENT
_evt$ = -24						; size = 24
_victim$ = 8						; size = 4
?Proc_OnObjectKillExpired@@YGXPAVnc_DamageableGameObj@@@Z PROC ; Proc_OnObjectKillExpired, COMDAT

; 246  : {

	sub	esp, 24					; 00000018H

; 247  : 	gzEventObjectKill evt;
; 248  : 	evt.m_attacker = NULL;
; 249  : 	evt.m_defender = victim;

	mov	eax, DWORD PTR _victim$[esp+20]
	push	esi
	xor	esi, esi

; 250  : 	for (int i = 0; i < gzEventManager::m_list.Count(); i++)

	cmp	DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12, esi
	mov	BYTE PTR _evt$[esp+40], 1
	mov	DWORD PTR _evt$[esp+48], esi
	mov	DWORD PTR _evt$[esp+44], eax
	jle	SHORT $LN2@Proc_OnObj@2
	npad	1
$LL4@Proc_OnObj@2:

; 251  : 	{
; 252  : 		if ((gzEventManager::m_list[i]->GetEventType() & EVT_OBJECT) == EVT_OBJECT)

	mov	ecx, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+4
	mov	ecx, DWORD PTR [ecx+esi*4]
	test	BYTE PTR [ecx+16], 2
	je	SHORT $LN3@Proc_OnObj@2

; 253  : 			gzEventManager::m_list[i]->Object_Killed(evt);

	mov	edx, DWORD PTR [ecx]
	mov	edx, DWORD PTR [edx+36]
	lea	eax, DWORD PTR _evt$[esp+28]
	push	eax
	call	edx
$LN3@Proc_OnObj@2:
	add	esi, 1
	cmp	esi, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12
	jl	SHORT $LL4@Proc_OnObj@2
$LN2@Proc_OnObj@2:
	pop	esi

; 254  : 	}
; 255  : }

	add	esp, 24					; 00000018H
	ret	4
?Proc_OnObjectKillExpired@@YGXPAVnc_DamageableGameObj@@@Z ENDP ; Proc_OnObjectKillExpired
_TEXT	ENDS
PUBLIC	?Hook_OnObjectKillExpired@@YAXXZ		; Hook_OnObjectKillExpired
; Function compile flags: /Odtpy
;	COMDAT ?Hook_OnObjectKillExpired@@YAXXZ
_TEXT	SEGMENT
?Hook_OnObjectKillExpired@@YAXXZ PROC			; Hook_OnObjectKillExpired, COMDAT

; 258  : 	_asm {
; 259  : 		push ebx

	push	ebx

; 260  : 		call Proc_OnObjectKillExpired

	call	?Proc_OnObjectKillExpired@@YGXPAVnc_DamageableGameObj@@@Z ; Proc_OnObjectKillExpired

; 261  : 		mov eax, [edi-74h]

	mov	eax, DWORD PTR [edi-116]

; 262  : 		xor esi, esi

	xor	esi, esi

; 263  : 		mov ecx, 0x67C0D0

	mov	ecx, 6799568				; 0067c0d0H

; 264  : 		jmp ecx

	jmp	ecx
?Hook_OnObjectKillExpired@@YAXXZ ENDP			; Hook_OnObjectKillExpired
_TEXT	ENDS
PUBLIC	?Hook_SoldierSquished@@YGXABVnc_OffenseObjectClass@@MAAUnc_Vector3@@H@Z ; Hook_SoldierSquished
; Function compile flags: /Ogtpy
;	COMDAT ?Hook_SoldierSquished@@YGXABVnc_OffenseObjectClass@@MAAUnc_Vector3@@H@Z
_TEXT	SEGMENT
_killed$ = -28						; size = 4
_evt$ = -24						; size = 24
_offense$ = 8						; size = 4
_damage$ = 12						; size = 4
_speed$ = 16						; size = 4
_unk$ = 20						; size = 4
?Hook_SoldierSquished@@YGXABVnc_OffenseObjectClass@@MAAUnc_Vector3@@H@Z PROC ; Hook_SoldierSquished, COMDAT

; 377  : void __stdcall Hook_SoldierSquished(const nc_OffenseObjectClass &offense, float damage, nc_Vector3 &speed, int unk) {

	sub	esp, 28					; 0000001cH
	push	esi
	push	edi

; 378  : 	nc_SoldierGameObj *killed;
; 379  : 	_asm mov killed, ecx

	mov	DWORD PTR _killed$[esp+36], ecx

; 380  : 
; 381  : 	gzEventObjectKill evt;
; 382  : 	evt.m_attacker = offense.Damager.Reference->obj->As_DamageableGameObj();

	mov	edi, DWORD PTR _offense$[esp+32]
	mov	eax, DWORD PTR [edi+20]
	mov	BYTE PTR _evt$[esp+48], 1
	mov	ecx, DWORD PTR [eax+4]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+60]
	call	eax

; 383  : 	evt.m_defender = killed->As_DamageableGameObj();

	mov	ecx, DWORD PTR _killed$[esp+36]
	mov	DWORD PTR _evt$[esp+56], eax
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+60]
	call	eax

; 384  : 	for (int i = 0; i < gzEventManager::m_list.Count(); i++)

	xor	esi, esi
	cmp	DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12, esi
	mov	DWORD PTR _evt$[esp+52], eax
	jle	SHORT $LN3@Hook_Soldi
	npad	4
$LL5@Hook_Soldi:

; 385  : 	{
; 386  : 		if ((gzEventManager::m_list[i]->GetEventType() & EVT_OBJECT) == EVT_OBJECT)

	mov	ecx, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+4
	mov	ecx, DWORD PTR [ecx+esi*4]
	test	BYTE PTR [ecx+16], 2
	je	SHORT $LN4@Hook_Soldi

; 387  : 		{
; 388  : 			gzEventManager::m_list[i]->Object_SoldierSquished(evt);

	mov	edx, DWORD PTR [ecx]
	mov	edx, DWORD PTR [edx+52]
	lea	eax, DWORD PTR _evt$[esp+36]
	push	eax
	call	edx

; 389  : 			if (!evt.CanContinue())

	cmp	BYTE PTR _evt$[esp+48], 0
	je	SHORT $LN6@Hook_Soldi
$LN4@Hook_Soldi:

; 384  : 	for (int i = 0; i < gzEventManager::m_list.Count(); i++)

	add	esi, 1
	cmp	esi, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12
	jl	SHORT $LL5@Hook_Soldi
$LN3@Hook_Soldi:

; 390  : 				return;
; 391  : 		}
; 392  : 	}
; 393  : 	killed->Apply_Damage_Extended(offense, damage, speed, unk);

	mov	edx, DWORD PTR _unk$[esp+32]
	fld	DWORD PTR _damage$[esp+32]
	mov	ecx, DWORD PTR _killed$[esp+36]
	mov	eax, DWORD PTR [ecx]
	mov	eax, DWORD PTR [eax+128]
	push	edx
	mov	edx, DWORD PTR _speed$[esp+36]
	push	edx
	push	ecx
	fstp	DWORD PTR [esp]
	push	edi
	call	eax
$LN6@Hook_Soldi:
	pop	edi
	pop	esi

; 394  : }

	add	esp, 28					; 0000001cH
	ret	16					; 00000010H
?Hook_SoldierSquished@@YGXABVnc_OffenseObjectClass@@MAAUnc_Vector3@@H@Z ENDP ; Hook_SoldierSquished
_TEXT	ENDS
PUBLIC	?Proc_C4Detonate@@YG_NPAVnc_C4GameObj@@PAVnc_SmartGameObj@@@Z ; Proc_C4Detonate
; Function compile flags: /Ogtpy
;	COMDAT ?Proc_C4Detonate@@YG_NPAVnc_C4GameObj@@PAVnc_SmartGameObj@@@Z
_TEXT	SEGMENT
_evt$ = -24						; size = 24
_C4$ = 8						; size = 4
_Enemy$ = 12						; size = 4
?Proc_C4Detonate@@YG_NPAVnc_C4GameObj@@PAVnc_SmartGameObj@@@Z PROC ; Proc_C4Detonate, COMDAT

; 399  : {

	sub	esp, 24					; 00000018H
	push	esi

; 400  : 	if (C4->AmmoDef->AmmoType.Get() != 3)

	mov	esi, DWORD PTR _C4$[esp+24]
	mov	ecx, DWORD PTR [esi+1992]
	add	ecx, 140				; 0000008cH
	call	?Get@nc_IntDataSafeClass@@QAEHXZ	; nc_IntDataSafeClass::Get
	cmp	eax, 3
	je	SHORT $LN28@Proc_C4Det

; 401  : 		Enemy = NULL;

	xor	eax, eax
	jmp	SHORT $LN6@Proc_C4Det
$LN28@Proc_C4Det:
	mov	eax, DWORD PTR _Enemy$[esp+24]
$LN6@Proc_C4Det:

; 402  : 
; 403  : 	gzEventObjectC4Detonate evt;
; 404  : 	evt.m_C4 = C4;

	mov	DWORD PTR _evt$[esp+44], esi

; 405  : 	evt.m_explodeBy = Enemy;
; 406  : 	for (int i = 0; i < gzEventManager::m_list.Count(); i++)

	xor	esi, esi
	cmp	DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12, esi
	mov	BYTE PTR _evt$[esp+40], 1
	mov	DWORD PTR _evt$[esp+48], eax
	jle	SHORT $LN3@Proc_C4Det
	npad	3
$LL5@Proc_C4Det:

; 407  : 	{
; 408  : 		if ((gzEventManager::m_list[i]->GetEventType() & EVT_OBJECT) == EVT_OBJECT)

	mov	eax, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+4
	mov	ecx, DWORD PTR [eax+esi*4]
	test	BYTE PTR [ecx+16], 2
	je	SHORT $LN4@Proc_C4Det

; 409  : 		{
; 410  : 			gzEventManager::m_list[i]->Object_C4Detonate(evt);

	mov	edx, DWORD PTR [ecx]
	mov	edx, DWORD PTR [edx+56]
	lea	eax, DWORD PTR _evt$[esp+28]
	push	eax
	call	edx

; 411  : 			if (!evt.CanContinue())

	cmp	BYTE PTR _evt$[esp+40], 0
	je	SHORT $LN26@Proc_C4Det
$LN4@Proc_C4Det:

; 405  : 	evt.m_explodeBy = Enemy;
; 406  : 	for (int i = 0; i < gzEventManager::m_list.Count(); i++)

	add	esi, 1
	cmp	esi, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12
	jl	SHORT $LL5@Proc_C4Det
$LN3@Proc_C4Det:

; 413  : 		}
; 414  : 	}
; 415  : 	return true;

	mov	al, 1
	pop	esi

; 416  : }

	add	esp, 24					; 00000018H
	ret	8
$LN26@Proc_C4Det:

; 412  : 				return false;

	xor	al, al
	pop	esi

; 416  : }

	add	esp, 24					; 00000018H
	ret	8
?Proc_C4Detonate@@YG_NPAVnc_C4GameObj@@PAVnc_SmartGameObj@@@Z ENDP ; Proc_C4Detonate
_TEXT	ENDS
PUBLIC	?Hook_C4Detonate@@YAXXZ				; Hook_C4Detonate
; Function compile flags: /Odtpy
;	COMDAT ?Hook_C4Detonate@@YAXXZ
_TEXT	SEGMENT
?Hook_C4Detonate@@YAXXZ PROC				; Hook_C4Detonate, COMDAT

; 419  : 	_asm {
; 420  : 		push ecx

	push	ecx

; 421  : 		push ebx

	push	ebx

; 422  : 		push ecx

	push	ecx

; 423  : 		call Proc_C4Detonate

	call	?Proc_C4Detonate@@YG_NPAVnc_C4GameObj@@PAVnc_SmartGameObj@@@Z ; Proc_C4Detonate

; 424  : 		pop ecx

	pop	ecx

; 425  : 		test al, al

	test	al, al

; 426  : 		jz no_detonate

	je	SHORT $no_detonate$57873

; 427  : 		sub esp, 0xC

	sub	esp, 12					; 0000000cH

; 428  : 		push esi

	push	esi

; 429  : 		mov esi, ecx

	mov	esi, ecx

; 430  : 		mov eax, 0x70BEA3

	mov	eax, 7388835				; 0070bea3H

; 431  : 		jmp eax

	jmp	eax
$no_detonate$57873:

; 432  : no_detonate:
; 433  : 		retn

	ret	0
?Hook_C4Detonate@@YAXXZ ENDP				; Hook_C4Detonate
_TEXT	ENDS
PUBLIC	??_C@_04MLLLIHIP@null?$AA@			; `string'
PUBLIC	?Hook_PowerupGrant@@YGXPAVnc_SoldierGameObj@@@Z	; Hook_PowerupGrant
EXTRN	?Grant@nc_PowerUpGameObj@@QAEXPAVnc_SoldierGameObj@@@Z:PROC ; nc_PowerUpGameObj::Grant
EXTRN	_stricmp:PROC
;	COMDAT ??_C@_04MLLLIHIP@null?$AA@
; File d:\source code\gzgm\gzeventbase.h
CONST	SEGMENT
??_C@_04MLLLIHIP@null?$AA@ DB 'null', 00H		; `string'
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzhook.cpp
CONST	ENDS
;	COMDAT ?Hook_PowerupGrant@@YGXPAVnc_SoldierGameObj@@@Z
_TEXT	SEGMENT
_Powerup$ = -28						; size = 4
_evt$57896 = -24					; size = 24
_Soldier$ = 8						; size = 4
?Hook_PowerupGrant@@YGXPAVnc_SoldierGameObj@@@Z PROC	; Hook_PowerupGrant, COMDAT

; 439  : void __stdcall Hook_PowerupGrant(nc_SoldierGameObj *Soldier) {

	sub	esp, 28					; 0000001cH
	push	edi

; 440  : 	nc_PowerUpGameObj *Powerup;
; 441  : 	_asm {
; 442  : 		mov Powerup, ecx

	mov	DWORD PTR _Powerup$[esp+32], ecx

; 443  : 	}
; 444  : 	if (!stricmp(Soldier->Physics->PhysRender->Get_Name(),"null") || Soldier->Defense.Health.Get() == 0.0f)

	mov	edi, DWORD PTR _Soldier$[esp+28]
	mov	eax, DWORD PTR [edi+1908]
	mov	ecx, DWORD PTR [eax+60]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+16]
	push	OFFSET ??_C@_04MLLLIHIP@null?$AA@
	call	eax
	push	eax
	call	_stricmp
	add	esp, 8
	test	eax, eax
	je	SHORT $LN7@Hook_Power
	lea	ecx, DWORD PTR [edi+1840]
	call	?Get@nc_FloatDataSafeClass@@QAEMXZ	; nc_FloatDataSafeClass::Get
	fcomp	DWORD PTR __real@00000000
	fnstsw	ax
	test	ah, 68					; 00000044H
	jnp	SHORT $LN7@Hook_Power

; 445  : 		return;
; 446  : 	if (Soldier->Player)

	cmp	DWORD PTR [edi+2400], 0
	push	esi
	je	SHORT $LN30@Hook_Power

; 447  : 	{
; 448  : 		gzEventObjectPowerupGrant evt;
; 449  : 		evt.m_powerup = Powerup;

	mov	ecx, DWORD PTR _Powerup$[esp+36]

; 450  : 		evt.m_soldier = Soldier;
; 451  : 		for (int i = 0; i < gzEventManager::m_list.Count(); i++)

	xor	esi, esi
	cmp	DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12, esi
	mov	BYTE PTR _evt$57896[esp+48], 1
	mov	DWORD PTR _evt$57896[esp+52], ecx
	mov	DWORD PTR _evt$57896[esp+56], edi
	jle	SHORT $LN30@Hook_Power
	npad	5
$LL5@Hook_Power:

; 452  : 		{
; 453  : 			if ((gzEventManager::m_list[i]->GetEventType() & EVT_OBJECT) == EVT_OBJECT)

	mov	edx, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+4
	mov	ecx, DWORD PTR [edx+esi*4]
	test	BYTE PTR [ecx+16], 2
	je	SHORT $LN4@Hook_Power

; 454  : 			{
; 455  : 				gzEventManager::m_list[i]->Object_PowerupGrant(evt);

	mov	eax, DWORD PTR [ecx]
	mov	eax, DWORD PTR [eax+60]
	lea	edx, DWORD PTR _evt$57896[esp+36]
	push	edx
	call	eax

; 456  : 				if (!evt.CanContinue())

	cmp	BYTE PTR _evt$57896[esp+48], 0
	je	SHORT $LN31@Hook_Power
$LN4@Hook_Power:

; 450  : 		evt.m_soldier = Soldier;
; 451  : 		for (int i = 0; i < gzEventManager::m_list.Count(); i++)

	add	esi, 1
	cmp	esi, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12
	jl	SHORT $LL5@Hook_Power
$LN30@Hook_Power:

; 457  : 					return;
; 458  : 			}
; 459  : 		}
; 460  : 	}
; 461  : 	Powerup->Grant(Soldier);

	mov	ecx, DWORD PTR _Powerup$[esp+36]
	push	edi
	call	?Grant@nc_PowerUpGameObj@@QAEXPAVnc_SoldierGameObj@@@Z ; nc_PowerUpGameObj::Grant
$LN31@Hook_Power:
	pop	esi
$LN7@Hook_Power:
	pop	edi

; 462  : }

	add	esp, 28					; 0000001cH
	ret	4
?Hook_PowerupGrant@@YGXPAVnc_SoldierGameObj@@@Z ENDP	; Hook_PowerupGrant
_TEXT	ENDS
PUBLIC	?Hook_FireBullet@@YGX_N@Z			; Hook_FireBullet
; Function compile flags: /Ogtpy
;	COMDAT ?Hook_FireBullet@@YGX_N@Z
_TEXT	SEGMENT
_evt$57917 = -36					; size = 32
_Weapon$ = -4						; size = 4
_isPrimary$ = 8						; size = 1
?Hook_FireBullet@@YGX_N@Z PROC				; Hook_FireBullet, COMDAT

; 465  : void __stdcall Hook_FireBullet(bool isPrimary) {

	push	ebp
	mov	ebp, esp
	sub	esp, 36					; 00000024H
	push	esi

; 466  : 	nc_WeaponClass *Weapon;
; 467  : 	_asm
; 468  : 	{
; 469  : 		mov Weapon, ecx

	mov	DWORD PTR _Weapon$[ebp], ecx

; 470  : 	}
; 471  : 	if (Weapon->Owner.Reference)

	mov	eax, DWORD PTR _Weapon$[ebp]
	cmp	DWORD PTR [eax+12], 0
	je	SHORT $LN2@Hook_FireB

; 472  : 	{
; 473  : 		gzEventObjectFire evt;
; 474  : 		evt.m_primaryFire = isPrimary;

	mov	cl, BYTE PTR _isPrimary$[ebp]
	mov	BYTE PTR _evt$57917[ebp+12], 1
	mov	BYTE PTR _evt$57917[ebp+16], cl

; 475  : 		evt.m_shooter = Weapon->Owner.Reference->obj->As_SoldierGameObj();

	mov	edx, DWORD PTR [eax+12]
	mov	ecx, DWORD PTR [edx+4]
	mov	eax, DWORD PTR [ecx]
	mov	edx, DWORD PTR [eax+68]
	call	edx
	mov	DWORD PTR _evt$57917[ebp+20], eax

; 476  : 		evt.m_weapon = Weapon;

	mov	eax, DWORD PTR _Weapon$[ebp]

; 477  : 		for (int i = 0; i < gzEventManager::m_list.Count(); i++)

	xor	esi, esi
	cmp	DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12, esi
	mov	DWORD PTR _evt$57917[ebp+24], eax
	jle	SHORT $LN2@Hook_FireB
	npad	3
$LL4@Hook_FireB:

; 478  : 		{
; 479  : 			if ((gzEventManager::m_list[i]->GetEventType() & EVT_OBJECT) == EVT_OBJECT)

	mov	ecx, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+4
	mov	ecx, DWORD PTR [ecx+esi*4]
	test	BYTE PTR [ecx+16], 2
	je	SHORT $LN3@Hook_FireB

; 480  : 				gzEventManager::m_list[i]->Object_Fire(evt);

	mov	edx, DWORD PTR [ecx]
	mov	edx, DWORD PTR [edx+64]
	lea	eax, DWORD PTR _evt$57917[ebp]
	push	eax
	call	edx
$LN3@Hook_FireB:
	add	esi, 1
	cmp	esi, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12
	jl	SHORT $LL4@Hook_FireB
$LN2@Hook_FireB:

; 481  : 		}
; 482  : 	}
; 483  : 	_asm {
; 484  : 		mov eax, 0x6FDA60

	mov	eax, 7330400				; 006fda60H

; 485  : 		mov ecx, Weapon

	mov	ecx, DWORD PTR _Weapon$[ebp]

; 486  : 		push dword ptr isPrimary

	push	DWORD PTR _isPrimary$[ebp]

; 487  : 		call eax

	call	eax

; 488  : 	}
; 489  : }

	pop	esi
	mov	esp, ebp
	pop	ebp
	ret	4
?Hook_FireBullet@@YGX_N@Z ENDP				; Hook_FireBullet
_TEXT	ENDS
PUBLIC	?Proc_PlayerLeft@@YGXHK@Z			; Proc_PlayerLeft
; Function compile flags: /Ogtpy
;	COMDAT ?Proc_PlayerLeft@@YGXHK@Z
_TEXT	SEGMENT
_evt$58050 = -24					; size = 24
_pID$ = 8						; size = 4
_callFrom$ = 12						; size = 4
?Proc_PlayerLeft@@YGXHK@Z PROC				; Proc_PlayerLeft, COMDAT

; 568  : 	nc_cPlayer *pData = nc_cPlayerManager::Find_Player(pID);

	mov	eax, DWORD PTR _pID$[esp-4]
	sub	esp, 24					; 00000018H
	push	eax
	call	?Find_Player@nc_cPlayerManager@@SAPAVnc_cPlayer@@H@Z ; nc_cPlayerManager::Find_Player

; 569  : 	gzPlayerLeftEnum Type = LEFT_UNKNOWN;
; 570  : 	switch (callFrom)

	mov	edx, DWORD PTR _callFrom$[esp+24]
	add	esp, 4
	or	ecx, -1
	cmp	edx, 4935840				; 004b50a0H
	ja	SHORT $LN15@Proc_Playe
	je	SHORT $LN10@Proc_Playe
	cmp	edx, 4389364				; 0042f9f4H
	je	SHORT $LN8@Proc_Playe
	cmp	edx, 4554698				; 00457fcaH
	jne	SHORT $LN34@Proc_Playe

; 575  : 		case 0x457FCA:
; 576  : 			Type = LEFT_DISCONNECT;

	mov	ecx, 1

; 577  : 			break;

	jmp	SHORT $LN34@Proc_Playe
$LN8@Proc_Playe:

; 578  : 		case 0x42F9F4:
; 579  : 			Type = LEFT_WOLKICK;

	mov	ecx, 2

; 580  : 			break;

	jmp	SHORT $LN34@Proc_Playe
$LN10@Proc_Playe:

; 571  : 	{
; 572  : 		case 0x4B50A0:
; 573  : 			Type = LEFT_NORMAL;

	xor	ecx, ecx

; 574  : 			break;

	jmp	SHORT $LN34@Proc_Playe
$LN15@Proc_Playe:

; 569  : 	gzPlayerLeftEnum Type = LEFT_UNKNOWN;
; 570  : 	switch (callFrom)

	cmp	edx, 5128129				; 004e3fc1H
	je	SHORT $LN6@Proc_Playe
	cmp	edx, 5129925				; 004e46c5H
	jne	SHORT $LN34@Proc_Playe

; 581  : 		case 0x4E46C5:
; 582  : 			Type = LEFT_GAMESPYKICK;

	mov	ecx, 3

; 583  : 			break;

	jmp	SHORT $LN34@Proc_Playe
$LN6@Proc_Playe:

; 584  : 		case 0x4E3FC1:
; 585  : 			Type = LEFT_GAMESPYEVICT;

	mov	ecx, 4
$LN34@Proc_Playe:

; 586  : 			break;
; 587  : 	}
; 588  : 	if (pData && Type != LEFT_UNKNOWN)

	test	eax, eax
	je	SHORT $LN2@Proc_Playe
	cmp	ecx, -1
	je	SHORT $LN2@Proc_Playe
	push	esi

; 589  : 	{
; 590  : 		gzEventPlayerBase evt;
; 591  : 		evt.SetPlayer(pData);
; 592  : 		evt.SetInt(Type);
; 593  : 		for (int i = 0; i < gzEventManager::m_list.Count(); i++)

	xor	esi, esi
	cmp	DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12, esi
	mov	BYTE PTR _evt$58050[esp+40], 1
	mov	DWORD PTR _evt$58050[esp+44], eax
	mov	DWORD PTR _evt$58050[esp+36], ecx
	jle	SHORT $LN35@Proc_Playe
$LL4@Proc_Playe:

; 594  : 		{
; 595  : 			if ((gzEventManager::m_list[i]->GetEventType() & EVT_PLAYER) == EVT_PLAYER)

	mov	ecx, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+4
	mov	ecx, DWORD PTR [ecx+esi*4]
	test	BYTE PTR [ecx+16], 4
	je	SHORT $LN3@Proc_Playe

; 596  : 				gzEventManager::m_list[i]->Player_Left(evt);

	mov	edx, DWORD PTR [ecx]
	mov	edx, DWORD PTR [edx+72]
	lea	eax, DWORD PTR _evt$58050[esp+28]
	push	eax
	call	edx
$LN3@Proc_Playe:
	add	esi, 1
	cmp	esi, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12
	jl	SHORT $LL4@Proc_Playe
$LN35@Proc_Playe:
	pop	esi
$LN2@Proc_Playe:

; 597  : 		}
; 598  : 	}
; 599  : }

	add	esp, 24					; 00000018H
	ret	8
?Proc_PlayerLeft@@YGXHK@Z ENDP				; Proc_PlayerLeft
_TEXT	ENDS
PUBLIC	?Hook_PlayerLeft@@YAXXZ				; Hook_PlayerLeft
; Function compile flags: /Odtp
;	COMDAT ?Hook_PlayerLeft@@YAXXZ
_TEXT	SEGMENT
?Hook_PlayerLeft@@YAXXZ PROC				; Hook_PlayerLeft, COMDAT

; 602  : 	_asm {
; 603  : 		push [esp] // Call from

	push	DWORD PTR [esp]

; 604  : 		push [esp+8] // Player ID

	push	DWORD PTR [esp+8]

; 605  : 		call Proc_PlayerLeft

	call	?Proc_PlayerLeft@@YGXHK@Z		; Proc_PlayerLeft

; 606  : 		sub esp, 0x10

	sub	esp, 16					; 00000010H

; 607  : 		push ebx

	push	ebx

; 608  : 		push ebp

	push	ebp

; 609  : 		push esi

	push	esi

; 610  : 		mov esi, 0x461B36

	mov	esi, 4594486				; 00461b36H

; 611  : 		jmp esi

	jmp	esi
?Hook_PlayerLeft@@YAXXZ ENDP				; Hook_PlayerLeft
_TEXT	ENDS
PUBLIC	??_C@_1GI@OJFEDLBJ@?$AA?$CF?$AAl?$AAs?$AA?5?$AAc?$AAo?$AAm?$AAm?$AAi?$AAt?$AAt?$AAe?$AAd?$AA?5?$AAs?$AAu?$AAi?$AAc?$AAi?$AAd?$AAe?$AA?4?$AA?5?$AAL?$AAe?$AAt?$AA?8?$AAs?$AA?5?$AAa?$AAl?$AAl@ ; `string'
PUBLIC	?Hook_PlayerSuicide@@YGXXZ			; Hook_PlayerSuicide
EXTRN	?Format@nc_WideStringClass@@QAAXPB_WZZ:PROC	; nc_WideStringClass::Format
;	COMDAT ??_C@_1GI@OJFEDLBJ@?$AA?$CF?$AAl?$AAs?$AA?5?$AAc?$AAo?$AAm?$AAm?$AAi?$AAt?$AAt?$AAe?$AAd?$AA?5?$AAs?$AAu?$AAi?$AAc?$AAi?$AAd?$AAe?$AA?4?$AA?5?$AAL?$AAe?$AAt?$AA?8?$AAs?$AA?5?$AAa?$AAl?$AAl@
; File d:\source code\fds lib\new\fds_string.h
CONST	SEGMENT
??_C@_1GI@OJFEDLBJ@?$AA?$CF?$AAl?$AAs?$AA?5?$AAc?$AAo?$AAm?$AAm?$AAi?$AAt?$AAt?$AAe?$AAd?$AA?5?$AAs?$AAu?$AAi?$AAc?$AAi?$AAd?$AAe?$AA?4?$AA?5?$AAL?$AAe?$AAt?$AA?8?$AAs?$AA?5?$AAa?$AAl?$AAl@ DB '%'
	DB	00H, 'l', 00H, 's', 00H, ' ', 00H, 'c', 00H, 'o', 00H, 'm', 00H
	DB	'm', 00H, 'i', 00H, 't', 00H, 't', 00H, 'e', 00H, 'd', 00H, ' '
	DB	00H, 's', 00H, 'u', 00H, 'i', 00H, 'c', 00H, 'i', 00H, 'd', 00H
	DB	'e', 00H, '.', 00H, ' ', 00H, 'L', 00H, 'e', 00H, 't', 00H, ''''
	DB	00H, 's', 00H, ' ', 00H, 'a', 00H, 'l', 00H, 'l', 00H, ' ', 00H
	DB	'c', 00H, 'l', 00H, 'a', 00H, 'p', 00H, ' ', 00H, 'f', 00H, 'o'
	DB	00H, 'r', 00H, ' ', 00H, 't', 00H, 'h', 00H, 'e', 00H, ' ', 00H
	DB	'n', 00H, '0', 00H, '0', 00H, 'b', 00H, '!', 00H, 00H, 00H ; `string'
CONST	ENDS
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$?Hook_PlayerSuicide@@YGXXZ DD 0ffffffffH
	DD	FLAT:__unwindfunclet$?Hook_PlayerSuicide@@YGXXZ$0
__ehfuncinfo$?Hook_PlayerSuicide@@YGXXZ DD 019930522H
	DD	01H
	DD	FLAT:__unwindtable$?Hook_PlayerSuicide@@YGXXZ
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	01H
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzhook.cpp
xdata$x	ENDS
;	COMDAT ?Hook_PlayerSuicide@@YGXXZ
_TEXT	SEGMENT
_wstr$ = -52						; size = 4
_Suicide$ = -48						; size = 4
_packet$ = -44						; size = 4
$T66307 = -40						; size = 4
_evt$58096 = -36					; size = 24
__$EHRec$ = -12						; size = 12
?Hook_PlayerSuicide@@YGXXZ PROC				; Hook_PlayerSuicide, COMDAT

; 650  : void __stdcall Hook_PlayerSuicide() {

	mov	eax, DWORD PTR fs:0
	push	-1
	push	__ehhandler$?Hook_PlayerSuicide@@YGXXZ
	push	eax
	mov	DWORD PTR fs:0, esp
	sub	esp, 40					; 00000028H
	push	esi
	push	edi

; 651  : 	nc_cSuicideEvent *Suicide;
; 652  : 	nc_cPacket *packet;
; 653  : 	_asm {
; 654  : 		mov Suicide, esi

	mov	DWORD PTR _Suicide$[esp+60], esi

; 655  : 		mov packet, edi

	mov	DWORD PTR _packet$[esp+60], edi

; 656  : 	}
; 657  : 	nc_cPlayer *pData = nc_cPlayerManager::Find_Player(Suicide->ID);

	mov	eax, DWORD PTR _Suicide$[esp+60]
	mov	ecx, DWORD PTR [eax+1716]
	push	ecx
	call	?Find_Player@nc_cPlayerManager@@SAPAVnc_cPlayer@@H@Z ; nc_cPlayerManager::Find_Player
	mov	edi, eax
	add	esp, 4

; 658  : 	if (!pData)

	test	edi, edi
	jne	SHORT $LN9@Hook_Playe@2

; 659  : 	{
; 660  : 		Suicide->Set_Delete_Pending();

	mov	ecx, DWORD PTR _Suicide$[esp+60]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+44]
	call	eax
	pop	edi
	pop	esi

; 686  : }

	mov	ecx, DWORD PTR __$EHRec$[esp+52]
	mov	DWORD PTR fs:0, ecx
	add	esp, 52					; 00000034H
	ret	0
$LN9@Hook_Playe@2:

; 661  : 		return;
; 662  : 	}
; 663  : 	if (pData->Owner.Reference)

	cmp	DWORD PTR [edi+20], 0
	je	SHORT $LN8@Hook_Playe@2

; 664  : 		pData->Owner.Reference->obj->Set_Delete_Pending();

	mov	ecx, DWORD PTR [edi+20]
	mov	eax, DWORD PTR [ecx+4]
	mov	edx, DWORD PTR [eax+8]
	lea	ecx, DWORD PTR [eax+8]
	mov	eax, DWORD PTR [edx+44]
	call	eax
$LN8@Hook_Playe@2:

; 665  : 	if (pData)
; 666  : 	{
; 667  : 		if (gzGameMgr->m_settings->m_SuicideResetNegativeCredits || (!gzGameMgr->m_settings->m_SuicideResetNegativeCredits && pData->Money.Get() > 0.0f))

	mov	ecx, DWORD PTR ?gzGameMgr@@3PAVgzGameManager@@A ; gzGameMgr
	mov	edx, DWORD PTR [ecx+28]
	cmp	BYTE PTR [edx+53], 0
	jne	SHORT $LN5@Hook_Playe@2
	lea	ecx, DWORD PTR [edi+8]
	call	?Get@nc_FloatDataSafeClass@@QAEMXZ	; nc_FloatDataSafeClass::Get
	fcomp	DWORD PTR __real@00000000
	fnstsw	ax
	test	ah, 65					; 00000041H
	jne	SHORT $LN6@Hook_Playe@2
$LN5@Hook_Playe@2:

; 668  : 		{
; 669  : 			pData->Money = 0.0f;

	fldz
	lea	eax, DWORD PTR $T66307[esp+60]
	push	eax
	fstp	DWORD PTR $T66307[esp+64]
	lea	ecx, DWORD PTR [edi+8]
	push	ecx
	call	?Set@nc_FloatDataSafeClass@@QAG_NAAM@Z	; nc_FloatDataSafeClass::Set

; 670  : 			pData->Set_Object_Dirty_Bit(nc_DB_OCCASIONAL, true);

	mov	edx, DWORD PTR [edi+160]
	mov	eax, DWORD PTR [edx+56]
	lea	ecx, DWORD PTR [edi+160]
	push	1
	push	3
	call	eax
$LN6@Hook_Playe@2:

; 671  : 		}
; 672  : 
; 673  : 		gzEventPlayerBase evt;
; 674  : 		evt.SetPlayer(pData);
; 675  : 		for (int i = 0; i < gzEventManager::m_list.Count(); i++)

	xor	esi, esi
	cmp	DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12, esi
	mov	BYTE PTR _evt$58096[esp+72], 1
	mov	DWORD PTR _evt$58096[esp+76], edi
	jle	SHORT $LN2@Hook_Playe@2
	npad	2
$LL4@Hook_Playe@2:

; 676  : 		{
; 677  : 			if ((gzEventManager::m_list[i]->GetEventType() & EVT_PLAYER) == EVT_PLAYER)

	mov	ecx, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+4
	mov	ecx, DWORD PTR [ecx+esi*4]
	test	BYTE PTR [ecx+16], 4
	je	SHORT $LN3@Hook_Playe@2

; 678  : 				gzEventManager::m_list[i]->Player_Suicide(evt);

	mov	edx, DWORD PTR [ecx]
	mov	edx, DWORD PTR [edx+88]
	lea	eax, DWORD PTR _evt$58096[esp+60]
	push	eax
	call	edx
$LN3@Hook_Playe@2:
	add	esi, 1
	cmp	esi, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12
	jl	SHORT $LL4@Hook_Playe@2
$LN2@Hook_Playe@2:

; 679  : 		}
; 680  : 	}
; 681  : 	nc_WideStringClass wstr;

	mov	eax, DWORD PTR ?m_EmptyString@nc_WideStringClass@@2PAPA_WA ; nc_WideStringClass::m_EmptyString
	mov	ecx, DWORD PTR [eax]
	mov	DWORD PTR _wstr$[esp+60], ecx

; 682  : 	wstr.Format(L"%ls committed suicide. Let's all clap for the n00b!", pData->PlayerName.m_Buffer);

	mov	edx, DWORD PTR [edi+1880]
	push	edx
	lea	eax, DWORD PTR _wstr$[esp+64]
	push	OFFSET ??_C@_1GI@OJFEDLBJ@?$AA?$CF?$AAl?$AAs?$AA?5?$AAc?$AAo?$AAm?$AAm?$AAi?$AAt?$AAt?$AAe?$AAd?$AA?5?$AAs?$AAu?$AAi?$AAc?$AAi?$AAd?$AAe?$AA?4?$AA?5?$AAL?$AAe?$AAt?$AA?8?$AAs?$AA?5?$AAa?$AAl?$AAl@
	push	eax
	mov	DWORD PTR __$EHRec$[esp+80], 0
	call	?Format@nc_WideStringClass@@QAAXPB_WZZ	; nc_WideStringClass::Format

; 683  : 	Send_Text_Msg(wstr,All, false, -1, -1);

	push	-1
	push	-1
	push	0
	lea	ecx, DWORD PTR _wstr$[esp+84]
	push	0
	push	ecx
	call	?Send_Text_Msg@@YAXABVnc_WideStringClass@@H_NHH@Z ; Send_Text_Msg
	add	esp, 32					; 00000020H

; 684  : 	wstr.Free_String();

	lea	ecx, DWORD PTR _wstr$[esp+60]
	call	?Free_String@nc_WideStringClass@@QAEXXZ	; nc_WideStringClass::Free_String

; 685  : 	Suicide->Set_Delete_Pending();

	mov	ecx, DWORD PTR _Suicide$[esp+60]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+44]
	call	eax

; 686  : }

	lea	ecx, DWORD PTR _wstr$[esp+60]
	mov	DWORD PTR __$EHRec$[esp+68], -1
	call	?Free_String@nc_WideStringClass@@QAEXXZ	; nc_WideStringClass::Free_String
	mov	ecx, DWORD PTR __$EHRec$[esp+60]
	pop	edi
	pop	esi
	mov	DWORD PTR fs:0, ecx
	add	esp, 52					; 00000034H
	ret	0
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$?Hook_PlayerSuicide@@YGXXZ$0:
	lea	ecx, DWORD PTR _wstr$[ebp]
	jmp	??1nc_WideStringClass@@QAE@XZ		; nc_WideStringClass::~nc_WideStringClass
__ehhandler$?Hook_PlayerSuicide@@YGXXZ:
	mov	eax, OFFSET __ehfuncinfo$?Hook_PlayerSuicide@@YGXXZ
	jmp	___CxxFrameHandler3
text$x	ENDS
?Hook_PlayerSuicide@@YGXXZ ENDP				; Hook_PlayerSuicide
PUBLIC	??_C@_1DG@COGFHEOK@?$AA?$CF?$AAs?$AA?5?$AAh?$AAa?$AAs?$AA?5?$AAc?$AAh?$AAa?$AAn?$AAg?$AAe?$AAd?$AA?5?$AAt?$AAo?$AA?5?$AAt?$AAe?$AAa?$AAm?$AA?5?$AA?$CF?$AAs?$AA?$CB?$AA?$AA@ ; `string'
PUBLIC	??_C@_17MLFALEKP@?$AAG?$AAD?$AAI?$AA?$AA@	; `string'
PUBLIC	??_C@_17OLCMCNJC@?$AAN?$AAo?$AAd?$AA?$AA@	; `string'
PUBLIC	??_C@_0BL@LDBNOGG@Team?5changing?5is?5disabled?4?$AA@ ; `string'
PUBLIC	?Hook_ChangeTeam@@YGXXZ				; Hook_ChangeTeam
EXTRN	?Get_Owner@nc_BeaconGameObj@@QAEPAVnc_SoldierGameObj@@XZ:PROC ; nc_BeaconGameObj::Get_Owner
EXTRN	?As_C4@@YAPAVnc_C4GameObj@@PAE@Z:PROC		; As_C4
EXTRN	?As_Beacon@@YAPAVnc_BeaconGameObj@@PAE@Z:PROC	; As_Beacon
EXTRN	?GameObjList@nc_GameObjManager@@2PAV?$nc_SList@Vnc_BaseGameObj@@@@A:DWORD ; nc_GameObjManager::GameObjList
EXTRN	?SystemTime@@3AAKA:DWORD			; SystemTime
EXTRN	__imp__GetTickCount@0:PROC
EXTRN	?PagePlayer@@YAXHPBDZZ:PROC			; PagePlayer
;	COMDAT ??_C@_1DG@COGFHEOK@?$AA?$CF?$AAs?$AA?5?$AAh?$AAa?$AAs?$AA?5?$AAc?$AAh?$AAa?$AAn?$AAg?$AAe?$AAd?$AA?5?$AAt?$AAo?$AA?5?$AAt?$AAe?$AAa?$AAm?$AA?5?$AA?$CF?$AAs?$AA?$CB?$AA?$AA@
; File d:\source code\fds lib\new\fds_string.h
CONST	SEGMENT
??_C@_1DG@COGFHEOK@?$AA?$CF?$AAs?$AA?5?$AAh?$AAa?$AAs?$AA?5?$AAc?$AAh?$AAa?$AAn?$AAg?$AAe?$AAd?$AA?5?$AAt?$AAo?$AA?5?$AAt?$AAe?$AAa?$AAm?$AA?5?$AA?$CF?$AAs?$AA?$CB?$AA?$AA@ DB '%'
	DB	00H, 's', 00H, ' ', 00H, 'h', 00H, 'a', 00H, 's', 00H, ' ', 00H
	DB	'c', 00H, 'h', 00H, 'a', 00H, 'n', 00H, 'g', 00H, 'e', 00H, 'd'
	DB	00H, ' ', 00H, 't', 00H, 'o', 00H, ' ', 00H, 't', 00H, 'e', 00H
	DB	'a', 00H, 'm', 00H, ' ', 00H, '%', 00H, 's', 00H, '!', 00H, 00H
	DB	00H						; `string'
CONST	ENDS
;	COMDAT ??_C@_17MLFALEKP@?$AAG?$AAD?$AAI?$AA?$AA@
CONST	SEGMENT
??_C@_17MLFALEKP@?$AAG?$AAD?$AAI?$AA?$AA@ DB 'G', 00H, 'D', 00H, 'I', 00H
	DB	00H, 00H					; `string'
CONST	ENDS
;	COMDAT ??_C@_17OLCMCNJC@?$AAN?$AAo?$AAd?$AA?$AA@
CONST	SEGMENT
??_C@_17OLCMCNJC@?$AAN?$AAo?$AAd?$AA?$AA@ DB 'N', 00H, 'o', 00H, 'd', 00H
	DB	00H, 00H					; `string'
CONST	ENDS
;	COMDAT ??_C@_0BL@LDBNOGG@Team?5changing?5is?5disabled?4?$AA@
CONST	SEGMENT
??_C@_0BL@LDBNOGG@Team?5changing?5is?5disabled?4?$AA@ DB 'Team changing i'
	DB	's disabled.', 00H				; `string'
CONST	ENDS
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$?Hook_ChangeTeam@@YGXXZ DD 0ffffffffH
	DD	FLAT:__unwindfunclet$?Hook_ChangeTeam@@YGXXZ$0
__ehfuncinfo$?Hook_ChangeTeam@@YGXXZ DD 019930522H
	DD	01H
	DD	FLAT:__unwindtable$?Hook_ChangeTeam@@YGXXZ
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	01H
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzhook.cpp
xdata$x	ENDS
;	COMDAT ?Hook_ChangeTeam@@YGXXZ
_TEXT	SEGMENT
_ChangeTeam$ = -60					; size = 4
_wstr$ = -56						; size = 4
$T66365 = -52						; size = 4
_Type$ = -48						; size = 4
_packet$ = -44						; size = 4
$T66360 = -40						; size = 4
$T66356 = -40						; size = 4
_evt$ = -36						; size = 24
__$EHRec$ = -12						; size = 12
?Hook_ChangeTeam@@YGXXZ PROC				; Hook_ChangeTeam, COMDAT

; 800  : {

	mov	eax, DWORD PTR fs:0
	push	-1
	push	__ehhandler$?Hook_ChangeTeam@@YGXXZ
	push	eax
	mov	DWORD PTR fs:0, esp
	sub	esp, 48					; 00000030H
	push	esi
	push	edi

; 801  : 	nc_cChangeTeamEvent *ChangeTeam;
; 802  : 	nc_cPacket *packet;
; 803  : 	_asm
; 804  : 	{
; 805  : 		mov ChangeTeam, esi

	mov	DWORD PTR _ChangeTeam$[esp+68], esi

; 806  : 		mov packet, edi

	mov	DWORD PTR _packet$[esp+68], edi

; 807  : 	}
; 808  : 	nc_cPlayer *pData = nc_cPlayerManager::Find_Player(ChangeTeam->ID);

	mov	eax, DWORD PTR _ChangeTeam$[esp+68]
	mov	ecx, DWORD PTR [eax+1716]
	push	ecx
	call	?Find_Player@nc_cPlayerManager@@SAPAVnc_cPlayer@@H@Z ; nc_cPlayerManager::Find_Player

; 809  : 	if (!cGame->IsTeamChangingAllowed) {

	mov	edx, DWORD PTR ?cGame@@3AAPAVnc_cGameData@@A ; cGame
	mov	esi, eax
	mov	eax, DWORD PTR [edx]
	add	esp, 4
	cmp	BYTE PTR [eax+12], 0
	jne	SHORT $LN14@Hook_Chang

; 810  : 		PagePlayer(ChangeTeam->ID, "Team changing is disabled.");

	mov	ecx, DWORD PTR _ChangeTeam$[esp+68]
	mov	edx, DWORD PTR [ecx+1716]
	push	OFFSET ??_C@_0BL@LDBNOGG@Team?5changing?5is?5disabled?4?$AA@
	push	edx
	call	?PagePlayer@@YAXHPBDZZ			; PagePlayer

; 811  : 		ChangeTeam->Set_Delete_Pending();

	mov	ecx, DWORD PTR _ChangeTeam$[esp+76]
	mov	eax, DWORD PTR [ecx]
	mov	edx, DWORD PTR [eax+44]
	add	esp, 8
	call	edx
	pop	edi
	pop	esi

; 849  : 	}
; 850  : }

	mov	ecx, DWORD PTR __$EHRec$[esp+60]
	mov	DWORD PTR fs:0, ecx
	add	esp, 60					; 0000003cH
	ret	0
$LN14@Hook_Chang:
	push	ebx

; 812  : 		return;
; 813  : 	}
; 814  : 	int Type = (pData->PlayerType.Get() == 1) ? 0 : 1,

	lea	ebx, DWORD PTR [esi+1900]
	push	ebp
	mov	ecx, ebx
	call	?Get@nc_IntDataSafeClass@@QAEHXZ	; nc_IntDataSafeClass::Get
	sub	eax, 1
	neg	eax
	sbb	eax, eax
	neg	eax
	mov	DWORD PTR _Type$[esp+76], eax

; 815  : 		Time = GetTickCount() - SystemTime - pData->JoinTime;

	call	DWORD PTR __imp__GetTickCount@0
	mov	edi, eax
	sub	edi, DWORD PTR [esi+1924]
	mov	eax, DWORD PTR ?SystemTime@@3AAKA	; SystemTime
	sub	edi, DWORD PTR [eax]

; 816  : 	if (pData->Score.Get() > 0.0f)

	lea	ebp, DWORD PTR [esi+4]
	mov	ecx, ebp
	call	?Get@nc_FloatDataSafeClass@@QAEMXZ	; nc_FloatDataSafeClass::Get
	fldz
	fcom	ST(1)
	fnstsw	ax
	fstp	ST(1)
	test	ah, 5
	jp	SHORT $LN52@Hook_Chang

; 817  : 		pData->Score = 0.0f;

	lea	ecx, DWORD PTR $T66356[esp+76]
	fstp	DWORD PTR $T66356[esp+76]
	push	ecx
	push	ebp
	call	?Set@nc_FloatDataSafeClass@@QAG_NAAM@Z	; nc_FloatDataSafeClass::Set
	jmp	SHORT $LN20@Hook_Chang
$LN52@Hook_Chang:
	fstp	ST(0)
$LN20@Hook_Chang:

; 818  : 	if (pData->Money.Get() > 0.0f && Time >= 30000)

	lea	ebp, DWORD PTR [esi+8]
	mov	ecx, ebp
	call	?Get@nc_FloatDataSafeClass@@QAEMXZ	; nc_FloatDataSafeClass::Get
	fldz
	fcom	ST(1)
	fnstsw	ax
	fstp	ST(1)
	test	ah, 5
	jp	SHORT $LN58@Hook_Chang
	cmp	edi, 30000				; 00007530H
	jl	SHORT $LN58@Hook_Chang

; 819  : 		pData->Money = 0.0f;

	lea	edx, DWORD PTR $T66360[esp+76]
	fstp	DWORD PTR $T66360[esp+76]
	push	edx
	push	ebp
	call	?Set@nc_FloatDataSafeClass@@QAG_NAAM@Z	; nc_FloatDataSafeClass::Set
	jmp	SHORT $LN22@Hook_Chang
$LN58@Hook_Chang:

; 818  : 	if (pData->Money.Get() > 0.0f && Time >= 30000)

	fstp	ST(0)

; 819  : 		pData->Money = 0.0f;

$LN22@Hook_Chang:

; 820  : 	pData->Deaths -= 1;

	lea	edi, DWORD PTR [esi+1896]
	mov	ecx, edi
	mov	DWORD PTR $T66365[esp+76], 1
	call	?Get@nc_IntDataSafeClass@@QAEHXZ	; nc_IntDataSafeClass::Get
	sub	eax, DWORD PTR $T66365[esp+76]
	mov	DWORD PTR $T66365[esp+76], eax
	lea	eax, DWORD PTR $T66365[esp+76]
	push	eax
	push	edi
	call	?Set@nc_IntDataSafeClass@@QAG_NAAH@Z	; nc_IntDataSafeClass::Set

; 821  : 	pData->PlayerType.Set(Type);

	lea	ecx, DWORD PTR _Type$[esp+76]
	push	ecx
	push	ebx
	call	?Set@nc_IntDataSafeClass@@QAG_NAAH@Z	; nc_IntDataSafeClass::Set

; 822  : 	pData->Set_Object_Dirty_Bit(nc_DB_RARE, true);

	mov	edx, DWORD PTR [esi+160]
	mov	eax, DWORD PTR [edx+56]
	lea	edi, DWORD PTR [esi+160]
	push	1
	push	7
	mov	ecx, edi
	call	eax

; 823  : 	pData->Set_Object_Dirty_Bit(nc_DB_OCCASIONAL, true);

	mov	edx, DWORD PTR [edi]
	mov	eax, DWORD PTR [edx+56]
	push	1
	push	3
	mov	ecx, edi
	call	eax

; 824  : 	for (nc_GenericSLNode<nc_BaseGameObj> *objList = nc_GameObjManager::GameObjList->HeadNode; objList != NULL; objList = objList->NodeNext)

	mov	ecx, DWORD PTR ?GameObjList@nc_GameObjManager@@2PAV?$nc_SList@Vnc_BaseGameObj@@@@A ; nc_GameObjManager::GameObjList
	mov	edi, DWORD PTR [ecx+4]
	test	edi, edi
	je	$LN9@Hook_Chang
	npad	2
$LL11@Hook_Chang:

; 825  : 	{
; 826  : 		nc_BeaconGameObj *Beacon = As_Beacon((GameObject *)objList->NodeData);

	mov	edx, DWORD PTR [edi+4]
	push	edx
	call	?As_Beacon@@YAPAVnc_BeaconGameObj@@PAE@Z ; As_Beacon
	mov	ebp, eax

; 827  : 		nc_C4GameObj *C4 = As_C4((GameObject *)objList->NodeData);

	mov	eax, DWORD PTR [edi+4]
	push	eax
	call	?As_C4@@YAPAVnc_C4GameObj@@PAE@Z	; As_C4
	add	esp, 8

; 828  : 		nc_OffenseObjectClass *offense = NULL;
; 829  : 		if (Beacon && Beacon->Get_Owner()->Player->PlayerId == ChangeTeam->ID)

	test	ebp, ebp
	mov	ebx, eax
	je	SHORT $LN48@Hook_Chang
	mov	ecx, ebp
	call	?Get_Owner@nc_BeaconGameObj@@QAEPAVnc_SoldierGameObj@@XZ ; nc_BeaconGameObj::Get_Owner
	mov	ecx, DWORD PTR [eax+2400]
	mov	edx, DWORD PTR [ecx+1884]
	mov	eax, DWORD PTR _ChangeTeam$[esp+76]
	cmp	edx, DWORD PTR [eax+1716]
	jne	SHORT $LN48@Hook_Chang

; 830  : 			Beacon->Completely_Damaged(*offense);

	mov	edx, DWORD PTR [ebp]
	mov	ecx, ebp
	jmp	SHORT $LN60@Hook_Chang
$LN48@Hook_Chang:

; 831  : 		else if (C4 && C4->Owner.Reference->obj->As_SmartGameObj()->Player->PlayerId == ChangeTeam->ID)

	test	ebx, ebx
	je	SHORT $LN10@Hook_Chang
	mov	ecx, DWORD PTR [ebx+1980]
	mov	ecx, DWORD PTR [ecx+4]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+44]
	call	eax
	mov	ecx, DWORD PTR [eax+2400]
	mov	edx, DWORD PTR [ecx+1884]
	mov	eax, DWORD PTR _ChangeTeam$[esp+76]
	cmp	edx, DWORD PTR [eax+1716]
	jne	SHORT $LN10@Hook_Chang

; 832  : 			C4->Completely_Damaged(*offense);

	mov	edx, DWORD PTR [ebx]
	mov	ecx, ebx
$LN60@Hook_Chang:
	mov	eax, DWORD PTR [edx+88]
	push	0
	call	eax
$LN10@Hook_Chang:
	mov	edi, DWORD PTR [edi]
	test	edi, edi
	jne	SHORT $LL11@Hook_Chang
$LN9@Hook_Chang:

; 833  : 	}
; 834  : 	if (pData->Owner.Reference->obj)

	mov	ecx, DWORD PTR [esi+20]
	cmp	DWORD PTR [ecx+4], 0
	pop	ebp
	pop	ebx
	je	SHORT $LN5@Hook_Chang

; 835  : 		pData->Owner.Reference->obj->Set_Delete_Pending();

	mov	edx, ecx
	mov	eax, DWORD PTR [edx+4]
	lea	ecx, DWORD PTR [eax+8]
	mov	eax, DWORD PTR [ecx]
	mov	edx, DWORD PTR [eax+44]
	call	edx
$LN5@Hook_Chang:

; 836  : 	nc_WideStringClass wstr;

	mov	eax, DWORD PTR ?m_EmptyString@nc_WideStringClass@@2PAPA_WA ; nc_WideStringClass::m_EmptyString
	mov	ecx, DWORD PTR [eax]
	mov	DWORD PTR _wstr$[esp+68], ecx

; 837  : 	wstr.Get_String(0, false);

	push	0
	push	0
	lea	ecx, DWORD PTR _wstr$[esp+76]
	mov	DWORD PTR __$EHRec$[esp+84], 0
	call	?Get_String@nc_WideStringClass@@QAE_WH_N@Z ; nc_WideStringClass::Get_String

; 838  : 	wstr.Format(L"%s has changed to team %s!", pData->PlayerName.m_Buffer, (pData->PlayerType.Get() == 0) ? L"Nod" : L"GDI");

	lea	ecx, DWORD PTR [esi+1900]
	call	?Get@nc_IntDataSafeClass@@QAEHXZ	; nc_IntDataSafeClass::Get
	test	eax, eax
	mov	eax, OFFSET ??_C@_17OLCMCNJC@?$AAN?$AAo?$AAd?$AA?$AA@
	je	SHORT $LN18@Hook_Chang
	mov	eax, OFFSET ??_C@_17MLFALEKP@?$AAG?$AAD?$AAI?$AA?$AA@
$LN18@Hook_Chang:
	mov	edx, DWORD PTR [esi+1880]
	push	eax
	push	edx
	lea	eax, DWORD PTR _wstr$[esp+76]
	push	OFFSET ??_C@_1DG@COGFHEOK@?$AA?$CF?$AAs?$AA?5?$AAh?$AAa?$AAs?$AA?5?$AAc?$AAh?$AAa?$AAn?$AAg?$AAe?$AAd?$AA?5?$AAt?$AAo?$AA?5?$AAt?$AAe?$AAa?$AAm?$AA?5?$AA?$CF?$AAs?$AA?$CB?$AA?$AA@
	push	eax
	call	?Format@nc_WideStringClass@@QAAXPB_WZZ	; nc_WideStringClass::Format

; 839  : 	Send_Text_Msg(wstr, 0, false, -1, -1);

	push	-1
	push	-1
	push	0
	lea	ecx, DWORD PTR _wstr$[esp+96]
	push	0
	push	ecx
	call	?Send_Text_Msg@@YAXABVnc_WideStringClass@@H_NHH@Z ; Send_Text_Msg
	add	esp, 36					; 00000024H

; 840  : 	wstr.Free_String();

	lea	ecx, DWORD PTR _wstr$[esp+68]
	call	?Free_String@nc_WideStringClass@@QAEXXZ	; nc_WideStringClass::Free_String

; 841  : 	ChangeTeam->Set_Delete_Pending();

	mov	ecx, DWORD PTR _ChangeTeam$[esp+68]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+44]
	call	eax

; 842  : 
; 843  : 	gzEventPlayerBase evt;
; 844  : 	evt.SetPlayer(pData);

	mov	DWORD PTR _evt$[esp+84], esi

; 845  : 	for (int i = 0; i < gzEventManager::m_list.Count(); i++)

	xor	esi, esi
	cmp	DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12, esi
	mov	BYTE PTR _evt$[esp+80], 1
	jle	SHORT $LN2@Hook_Chang
	npad	10
$LL4@Hook_Chang:

; 846  : 	{
; 847  : 		if ((gzEventManager::m_list[i]->GetEventType() & EVT_PLAYER) == EVT_PLAYER)

	mov	ecx, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+4
	mov	ecx, DWORD PTR [ecx+esi*4]
	test	BYTE PTR [ecx+16], 4
	je	SHORT $LN3@Hook_Chang

; 848  : 			gzEventManager::m_list[i]->Player_TeamChange(evt);

	mov	edx, DWORD PTR [ecx]
	mov	edx, DWORD PTR [edx+92]
	lea	eax, DWORD PTR _evt$[esp+68]
	push	eax
	call	edx
$LN3@Hook_Chang:
	add	esi, 1
	cmp	esi, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12
	jl	SHORT $LL4@Hook_Chang
$LN2@Hook_Chang:

; 849  : 	}
; 850  : }

	lea	ecx, DWORD PTR _wstr$[esp+68]
	mov	DWORD PTR __$EHRec$[esp+76], -1
	call	?Free_String@nc_WideStringClass@@QAEXXZ	; nc_WideStringClass::Free_String
	mov	ecx, DWORD PTR __$EHRec$[esp+68]
	pop	edi
	pop	esi
	mov	DWORD PTR fs:0, ecx
	add	esp, 60					; 0000003cH
	ret	0
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$?Hook_ChangeTeam@@YGXXZ$0:
	lea	ecx, DWORD PTR _wstr$[ebp]
	jmp	??1nc_WideStringClass@@QAE@XZ		; nc_WideStringClass::~nc_WideStringClass
__ehhandler$?Hook_ChangeTeam@@YGXXZ:
	mov	eax, OFFSET __ehfuncinfo$?Hook_ChangeTeam@@YGXXZ
	jmp	___CxxFrameHandler3
text$x	ENDS
?Hook_ChangeTeam@@YGXXZ ENDP				; Hook_ChangeTeam
PUBLIC	?Hook_SerialHash@@YGXXZ				; Hook_SerialHash
;	COMDAT xdata$x
; File d:\source code\nc lib\ncstring.h
xdata$x	SEGMENT
__unwindtable$?Hook_SerialHash@@YGXXZ DD 0ffffffffH
	DD	FLAT:__unwindfunclet$?Hook_SerialHash@@YGXXZ$0
__ehfuncinfo$?Hook_SerialHash@@YGXXZ DD 019930522H
	DD	01H
	DD	FLAT:__unwindtable$?Hook_SerialHash@@YGXXZ
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	01H
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzhook.cpp
xdata$x	ENDS
;	COMDAT ?Hook_SerialHash@@YGXXZ
_TEXT	SEGMENT
_GameSpy$ = -60						; size = 4
_packet$ = -56						; size = 4
_evt$58261 = -52					; size = 40
__$EHRec$ = -12						; size = 12
?Hook_SerialHash@@YGXXZ PROC				; Hook_SerialHash, COMDAT

; 854  : {

	mov	eax, DWORD PTR fs:0
	push	-1
	push	__ehhandler$?Hook_SerialHash@@YGXXZ
	push	eax
	mov	DWORD PTR fs:0, esp
	sub	esp, 48					; 00000030H
	push	esi
	push	edi

; 855  : 	nc_cPacket *packet;
; 856  : 	nc_cGameSpyCsChallengeResponseEvent *GameSpy;
; 857  : 	_asm
; 858  : 	{
; 859  : 		mov GameSpy, esi

	mov	DWORD PTR _GameSpy$[esp+68], esi

; 860  : 		mov packet, edi

	mov	DWORD PTR _packet$[esp+68], edi

; 861  : 	}
; 862  : 	nc_cPlayer *pData = nc_cPlayerManager::Find_Player(GameSpy->ID);

	mov	eax, DWORD PTR _GameSpy$[esp+68]
	mov	ecx, DWORD PTR [eax+1716]
	push	ecx
	call	?Find_Player@nc_cPlayerManager@@SAPAVnc_cPlayer@@H@Z ; nc_cPlayerManager::Find_Player

; 863  : 	if (pData)

	xor	edi, edi
	add	esp, 4
	cmp	eax, edi
	je	$LN30@Hook_Seria

; 864  : 	{
; 865  : 		gzEventPlayerSerialHash evt;

	mov	BYTE PTR _evt$58261[esp+80], 1
	mov	DWORD PTR _evt$58261[esp+92], edi
	mov	DWORD PTR _evt$58261[esp+96], edi
	mov	DWORD PTR _evt$58261[esp+100], edi

; 866  : 		evt.SetPlayer(pData);
; 867  : 		evt.m_hash = GameSpy->Hash.m_Buffer;

	mov	edx, DWORD PTR _GameSpy$[esp+68]
	mov	DWORD PTR _evt$58261[esp+84], eax
	mov	eax, DWORD PTR [edx+1720]
	push	eax
	lea	ecx, DWORD PTR _evt$58261[esp+96]
	mov	DWORD PTR __$EHRec$[esp+80], edi
	call	??4ncString@@QAEAAV0@PBD@Z		; ncString::operator=

; 868  : 		for (int i = 0; i < gzEventManager::m_list.Count(); i++)

	xor	esi, esi
	cmp	DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12, edi
	jle	SHORT $LN2@Hook_Seria
	npad	10
$LL4@Hook_Seria:

; 869  : 		{
; 870  : 			if ((gzEventManager::m_list[i]->GetEventType() & EVT_PLAYER) == EVT_PLAYER)

	mov	ecx, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+4
	mov	ecx, DWORD PTR [ecx+esi*4]
	test	BYTE PTR [ecx+16], 4
	je	SHORT $LN3@Hook_Seria

; 871  : 				gzEventManager::m_list[i]->Player_SerialHash(evt);

	mov	edx, DWORD PTR [ecx]
	mov	edx, DWORD PTR [edx+104]
	lea	eax, DWORD PTR _evt$58261[esp+68]
	push	eax
	call	edx
$LN3@Hook_Seria:
	add	esi, 1
	cmp	esi, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12
	jl	SHORT $LL4@Hook_Seria
$LN2@Hook_Seria:

; 872  : 		}
; 873  : 	}

	cmp	DWORD PTR _evt$58261[esp+92], edi
	mov	DWORD PTR __$EHRec$[esp+76], -1
	je	SHORT $LN33@Hook_Seria
	push	OFFSET ??_C@_0BG@IMAMDEJB@ncString?3?3Free_String?$AA@
	push	216					; 000000d8H
	push	OFFSET ??_C@_0CB@MAJIAFJL@d?3?2source?5code?2nc?5lib?2ncString?4h@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	eax, DWORD PTR _evt$58261[esp+104]
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
$LN33@Hook_Seria:
	mov	DWORD PTR _evt$58261[esp+92], edi
	mov	DWORD PTR _evt$58261[esp+96], edi
	mov	DWORD PTR _evt$58261[esp+100], edi
$LN30@Hook_Seria:

; 874  : 	GameSpy->Act();

	mov	ecx, DWORD PTR _GameSpy$[esp+68]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+104]
	call	eax

; 875  : }

	mov	ecx, DWORD PTR __$EHRec$[esp+68]
	pop	edi
	pop	esi
	mov	DWORD PTR fs:0, ecx
	add	esp, 60					; 0000003cH
	ret	0
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$?Hook_SerialHash@@YGXXZ$0:
	lea	ecx, DWORD PTR _evt$58261[ebp]
	jmp	??1gzEventPlayerSerialHash@@QAE@XZ	; gzEventPlayerSerialHash::~gzEventPlayerSerialHash
__ehhandler$?Hook_SerialHash@@YGXXZ:
	mov	eax, OFFSET __ehfuncinfo$?Hook_SerialHash@@YGXXZ
	jmp	___CxxFrameHandler3
text$x	ENDS
?Hook_SerialHash@@YGXXZ ENDP				; Hook_SerialHash
PUBLIC	?Hook_PlayerRawDamage@@YGXXZ			; Hook_PlayerRawDamage
EXTRN	?Find_PhysicalGameObj@nc_GameObjManager@@SAPAVnc_PhysicalGameObj@@H@Z:PROC ; nc_GameObjManager::Find_PhysicalGameObj
; Function compile flags: /Ogtpy
;	COMDAT ?Hook_PlayerRawDamage@@YGXXZ
_TEXT	SEGMENT
_CsDamage$ = -40					; size = 4
tv282 = -36						; size = 4
_evt$58281 = -32					; size = 32
?Hook_PlayerRawDamage@@YGXXZ PROC			; Hook_PlayerRawDamage, COMDAT

; 878  : void __stdcall Hook_PlayerRawDamage() {

	sub	esp, 40					; 00000028H
	push	esi

; 879  : 	nc_cCsDamageEvent *CsDamage;
; 880  : 	_asm
; 881  : 	{
; 882  : 		mov CsDamage, esi

	mov	DWORD PTR _CsDamage$[esp+44], esi

; 883  : 	}
; 884  : 
; 885  : 	nc_cPlayer *pData = nc_cPlayerManager::Find_Player(CsDamage->Damager);

	mov	eax, DWORD PTR _CsDamage$[esp+44]
	mov	ecx, DWORD PTR [eax+1716]
	push	ecx
	call	?Find_Player@nc_cPlayerManager@@SAPAVnc_cPlayer@@H@Z ; nc_cPlayerManager::Find_Player

; 886  : 	if (pData)

	xor	esi, esi
	add	esp, 4
	cmp	eax, esi
	je	$LN9@Hook_Playe@3

; 887  : 	{
; 888  : 		gzEventObjectDamage evt;
; 889  : 		evt.m_attacker = (pData->Owner.Reference) ? pData->Owner.Reference->obj->As_DamageableGameObj() : NULL;

	cmp	DWORD PTR [eax+20], esi
	mov	BYTE PTR _evt$58281[esp+56], 1
	je	SHORT $LN12@Hook_Playe@3
	mov	edx, DWORD PTR [eax+20]
	mov	ecx, DWORD PTR [edx+4]
	mov	eax, DWORD PTR [ecx]
	mov	edx, DWORD PTR [eax+60]
	call	edx
	mov	DWORD PTR _evt$58281[esp+60], eax
	jmp	SHORT $LN13@Hook_Playe@3
$LN12@Hook_Playe@3:
	mov	DWORD PTR _evt$58281[esp+60], esi
$LN13@Hook_Playe@3:

; 890  : 		evt.m_defender = nc_GameObjManager::Find_PhysicalGameObj(CsDamage->DamagedObj);

	mov	eax, DWORD PTR _CsDamage$[esp+44]
	mov	ecx, DWORD PTR [eax+1724]
	push	ecx
	call	?Find_PhysicalGameObj@nc_GameObjManager@@SAPAVnc_PhysicalGameObj@@H@Z ; nc_GameObjManager::Find_PhysicalGameObj

; 891  : 		evt.m_damage = CsDamage->Damage;

	mov	ecx, DWORD PTR _CsDamage$[esp+48]
	mov	DWORD PTR _evt$58281[esp+68], eax
	fld	DWORD PTR [ecx+1728]
	fstp	DWORD PTR _evt$58281[esp+72]

; 892  : 		evt.m_warhead = CsDamage->Warhead;

	mov	edx, DWORD PTR [ecx+1732]
	add	esp, 4

; 893  : 
; 894  : 		if (evt.m_defender && (evt.m_defender->Defense.Health.Get() + evt.m_defender->Defense.ShieldStrength.Get()) > 0.0f)

	cmp	eax, esi
	mov	DWORD PTR _evt$58281[esp+72], edx
	je	SHORT $LN8@Hook_Playe@3
	lea	ecx, DWORD PTR [eax+1852]
	call	?Get@nc_FloatDataSafeClass@@QAEMXZ	; nc_FloatDataSafeClass::Get
	fstp	DWORD PTR tv282[esp+44]
	mov	ecx, DWORD PTR _evt$58281[esp+64]
	add	ecx, 1840				; 00000730H
	call	?Get@nc_FloatDataSafeClass@@QAEMXZ	; nc_FloatDataSafeClass::Get
	fadd	DWORD PTR tv282[esp+44]
	fcomp	DWORD PTR __real@00000000
	fnstsw	ax
	test	ah, 65					; 00000041H
	jne	SHORT $LN9@Hook_Playe@3

; 895  : 		{
; 896  : 			for (int i = 0; i < gzEventManager::m_list.Count(); i++)

	cmp	DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12, esi
	jle	SHORT $LN5@Hook_Playe@3
$LL7@Hook_Playe@3:

; 897  : 			{
; 898  : 				if ((gzEventManager::m_list[i]->GetEventType() & EVT_PLAYER) == EVT_PLAYER)

	mov	eax, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+4
	mov	ecx, DWORD PTR [eax+esi*4]
	test	BYTE PTR [ecx+16], 4
	je	SHORT $LN6@Hook_Playe@3

; 899  : 				{
; 900  : 					gzEventManager::m_list[i]->Player_RawDamage(evt);

	mov	edx, DWORD PTR [ecx]
	mov	edx, DWORD PTR [edx+108]
	lea	eax, DWORD PTR _evt$58281[esp+44]
	push	eax
	call	edx

; 901  : 					if (!evt.CanContinue())

	cmp	BYTE PTR _evt$58281[esp+56], 0
	je	SHORT $LN9@Hook_Playe@3
$LN6@Hook_Playe@3:

; 895  : 		{
; 896  : 			for (int i = 0; i < gzEventManager::m_list.Count(); i++)

	add	esi, 1
	cmp	esi, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12
	jl	SHORT $LL7@Hook_Playe@3
$LN5@Hook_Playe@3:

; 902  : 					{
; 903  : 						CsDamage->Set_Delete_Pending();
; 904  : 						return;
; 905  : 					}
; 906  : 				}
; 907  : 			}
; 908  : 			CsDamage->Act();

	mov	ecx, DWORD PTR _CsDamage$[esp+44]
	mov	eax, DWORD PTR [ecx]
	mov	edx, DWORD PTR [eax+104]

; 909  : 		}
; 910  : 		else
; 911  : 			CsDamage->Set_Delete_Pending();
; 912  : 	}
; 913  : 	else
; 914  : 		CsDamage->Set_Delete_Pending();

	call	edx
	pop	esi

; 915  : }

	add	esp, 40					; 00000028H
	ret	0
$LN9@Hook_Playe@3:

; 909  : 		}
; 910  : 		else
; 911  : 			CsDamage->Set_Delete_Pending();
; 912  : 	}
; 913  : 	else
; 914  : 		CsDamage->Set_Delete_Pending();

	mov	ecx, DWORD PTR _CsDamage$[esp+44]
$LN8@Hook_Playe@3:
	mov	eax, DWORD PTR [ecx]
	mov	edx, DWORD PTR [eax+44]
	call	edx
	pop	esi

; 915  : }

	add	esp, 40					; 00000028H
	ret	0
?Hook_PlayerRawDamage@@YGXXZ ENDP			; Hook_PlayerRawDamage
_TEXT	ENDS
PUBLIC	??0gzEventNetWolPage@@QAE@XZ			; gzEventNetWolPage::gzEventNetWolPage
; Function compile flags: /Ogtpy
;	COMDAT ??0gzEventNetWolPage@@QAE@XZ
_TEXT	SEGMENT
??0gzEventNetWolPage@@QAE@XZ PROC			; gzEventNetWolPage::gzEventNetWolPage, COMDAT
; _this$ = ecx
	mov	eax, ecx
	xor	ecx, ecx
	mov	BYTE PTR [eax+12], 1
	mov	DWORD PTR [eax+16], ecx
	mov	DWORD PTR [eax+20], ecx
	mov	DWORD PTR [eax+24], ecx
	mov	DWORD PTR [eax+28], ecx
	mov	DWORD PTR [eax+32], ecx
	mov	DWORD PTR [eax+36], ecx
	ret	0
??0gzEventNetWolPage@@QAE@XZ ENDP			; gzEventNetWolPage::gzEventNetWolPage
_TEXT	ENDS
PUBLIC	?Proc_CDKeyAuthCallback@@YGXHHPBD@Z		; Proc_CDKeyAuthCallback
;	COMDAT xdata$x
; File d:\source code\nc lib\ncstring.h
xdata$x	SEGMENT
__unwindtable$?Proc_CDKeyAuthCallback@@YGXHHPBD@Z DD 0ffffffffH
	DD	FLAT:__unwindfunclet$?Proc_CDKeyAuthCallback@@YGXHHPBD@Z$0
__ehfuncinfo$?Proc_CDKeyAuthCallback@@YGXHHPBD@Z DD 019930522H
	DD	01H
	DD	FLAT:__unwindtable$?Proc_CDKeyAuthCallback@@YGXHHPBD@Z
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	01H
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzhook.cpp
xdata$x	ENDS
;	COMDAT ?Proc_CDKeyAuthCallback@@YGXHHPBD@Z
_TEXT	SEGMENT
_evt$58391 = -52					; size = 40
__$EHRec$ = -12						; size = 12
_ID$ = 8						; size = 4
_Type$ = 12						; size = 4
_msg$ = 16						; size = 4
?Proc_CDKeyAuthCallback@@YGXHHPBD@Z PROC		; Proc_CDKeyAuthCallback, COMDAT

; 1089 : {

	mov	eax, DWORD PTR fs:0
	push	-1
	push	__ehhandler$?Proc_CDKeyAuthCallback@@YGXHHPBD@Z
	push	eax

; 1090 : 	nc_cPlayer *pData = nc_cPlayerManager::Find_Player(ID);

	mov	eax, DWORD PTR _ID$[esp+8]
	mov	DWORD PTR fs:0, esp
	sub	esp, 40					; 00000028H
	push	ebx
	push	eax
	call	?Find_Player@nc_cPlayerManager@@SAPAVnc_cPlayer@@H@Z ; nc_cPlayerManager::Find_Player

; 1091 : 	if (pData && pData->IsActive)

	xor	ebx, ebx
	add	esp, 4
	cmp	eax, ebx
	je	$LN35@Proc_CDKey
	cmp	BYTE PTR [eax+1981], bl
	je	$LN35@Proc_CDKey
	push	esi

; 1092 : 	{
; 1093 : 		gzEventNetSerialAuth evt;

	mov	BYTE PTR _evt$58391[esp+72], 1
	mov	DWORD PTR _evt$58391[esp+84], ebx
	mov	DWORD PTR _evt$58391[esp+88], ebx
	mov	DWORD PTR _evt$58391[esp+92], ebx

; 1094 : 		evt.SetPlayer(pData);
; 1095 : 		evt.SetInt(Type);

	mov	ecx, DWORD PTR _Type$[esp+56]

; 1096 : 		evt.m_message = msg;

	mov	edx, DWORD PTR _msg$[esp+56]
	mov	DWORD PTR _evt$58391[esp+68], ecx
	push	edx
	lea	ecx, DWORD PTR _evt$58391[esp+88]
	mov	DWORD PTR __$EHRec$[esp+72], ebx
	mov	DWORD PTR _evt$58391[esp+80], eax
	call	??4ncString@@QAEAAV0@PBD@Z		; ncString::operator=

; 1097 : 		for (int i = 0; i < gzEventManager::m_list.Count(); i++)

	xor	esi, esi
	cmp	DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12, ebx
	jle	SHORT $LN2@Proc_CDKey
	npad	10
$LL4@Proc_CDKey:

; 1098 : 		{
; 1099 : 			if ((gzEventManager::m_list[i]->GetEventType() & EVT_NET) == EVT_NET)

	mov	eax, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+4
	mov	ecx, DWORD PTR [eax+esi*4]
	test	BYTE PTR [ecx+16], 8
	je	SHORT $LN3@Proc_CDKey

; 1100 : 				gzEventManager::m_list[i]->Net_SerialAuth(evt);

	mov	edx, DWORD PTR [ecx]
	mov	edx, DWORD PTR [edx+116]
	lea	eax, DWORD PTR _evt$58391[esp+60]
	push	eax
	call	edx
$LN3@Proc_CDKey:
	add	esi, 1
	cmp	esi, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12
	jl	SHORT $LL4@Proc_CDKey
$LN2@Proc_CDKey:

; 1101 : 		}
; 1102 : 	}

	cmp	DWORD PTR _evt$58391[esp+84], ebx
	mov	DWORD PTR __$EHRec$[esp+68], -1
	pop	esi
	je	SHORT $LN35@Proc_CDKey
	push	OFFSET ??_C@_0BG@IMAMDEJB@ncString?3?3Free_String?$AA@
	push	216					; 000000d8H
	push	OFFSET ??_C@_0CB@MAJIAFJL@d?3?2source?5code?2nc?5lib?2ncString?4h@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	eax, DWORD PTR _evt$58391[esp+92]
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
$LN35@Proc_CDKey:

; 1103 : }

	mov	ecx, DWORD PTR __$EHRec$[esp+56]
	pop	ebx
	mov	DWORD PTR fs:0, ecx
	add	esp, 52					; 00000034H
	ret	12					; 0000000cH
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$?Proc_CDKeyAuthCallback@@YGXHHPBD@Z$0:
	lea	ecx, DWORD PTR _evt$58391[ebp]
	jmp	??1gzEventNetSerialAuth@@QAE@XZ		; gzEventNetSerialAuth::~gzEventNetSerialAuth
__ehhandler$?Proc_CDKeyAuthCallback@@YGXHHPBD@Z:
	mov	eax, OFFSET __ehfuncinfo$?Proc_CDKeyAuthCallback@@YGXHHPBD@Z
	jmp	___CxxFrameHandler3
text$x	ENDS
?Proc_CDKeyAuthCallback@@YGXHHPBD@Z ENDP		; Proc_CDKeyAuthCallback
PUBLIC	?Hook_CDKeyAuthCallback@@YAXXZ			; Hook_CDKeyAuthCallback
; Function compile flags: /Ogtp
;	COMDAT ?Hook_CDKeyAuthCallback@@YAXXZ
_TEXT	SEGMENT
?Hook_CDKeyAuthCallback@@YAXXZ PROC			; Hook_CDKeyAuthCallback, COMDAT

; 1105 : 	_asm {
; 1106 : 		push ebp

	push	ebp

; 1107 : 		mov ebp, esp

	mov	ebp, esp

; 1108 : 		push [ebp+10h] // Message

	push	DWORD PTR [ebp+16]

; 1109 : 		push [ebp+0Ch] // Type

	push	DWORD PTR [ebp+12]

; 1110 : 		push [ebp+8] // Player ID

	push	DWORD PTR [ebp+8]

; 1111 : 		call Proc_CDKeyAuthCallback

	call	?Proc_CDKeyAuthCallback@@YGXHHPBD@Z	; Proc_CDKeyAuthCallback

; 1112 : 		mov esp, ebp

	mov	esp, ebp

; 1113 : 		pop ebp

	pop	ebp

; 1114 : 		retn

	ret	0
?Hook_CDKeyAuthCallback@@YAXXZ ENDP			; Hook_CDKeyAuthCallback
_TEXT	ENDS
PUBLIC	?deallocate@?$_DebugHeapAllocator@D@std@@QAEXPADI@Z ; std::_DebugHeapAllocator<char>::deallocate
; Function compile flags: /Ogtpy
; File c:\program files\microsoft visual studio 8\vc\include\xdebug
;	COMDAT ?deallocate@?$_DebugHeapAllocator@D@std@@QAEXPADI@Z
_TEXT	SEGMENT
__Ptr$ = 8						; size = 4
___formal$ = 12						; size = 4
?deallocate@?$_DebugHeapAllocator@D@std@@QAEXPADI@Z PROC ; std::_DebugHeapAllocator<char>::deallocate, COMDAT
; _this$ = ecx

; 102  : 		_DELETE_CRT_VEC(_Ptr);

	mov	eax, DWORD PTR __Ptr$[esp-4]
	test	eax, eax
	je	SHORT $LN3@deallocate
	push	eax
	call	_free
	pop	ecx
$LN3@deallocate:

; 103  : 		}

	ret	8
?deallocate@?$_DebugHeapAllocator@D@std@@QAEXPADI@Z ENDP ; std::_DebugHeapAllocator<char>::deallocate
_TEXT	ENDS
PUBLIC	??1?$ncVector@PAVHookBase@@@@UAE@XZ		; ncVector<HookBase *>::~ncVector<HookBase *>
; Function compile flags: /Ogtpy
; File d:\source code\nc lib\ncvector.h
;	COMDAT ??1?$ncVector@PAVHookBase@@@@UAE@XZ
_TEXT	SEGMENT
??1?$ncVector@PAVHookBase@@@@UAE@XZ PROC		; ncVector<HookBase *>::~ncVector<HookBase *>, COMDAT
; _this$ = ecx

; 34   : 	{

	push	esi
	mov	esi, ecx

; 35   : 		this->Clear();

	cmp	DWORD PTR [esi+4], 0
	mov	DWORD PTR [esi], OFFSET ??_7?$ncVector@PAVHookBase@@@@6B@
	je	SHORT $LN8@ncVector
	push	OFFSET ??_C@_0CC@FAGGMAID@ncVector?$DMclass?5HookBase?5?$CK?$DO?3?3Clea@
	push	54					; 00000036H
	push	OFFSET ??_C@_0CB@BOFIHJED@d?3?2source?5code?2nc?5lib?2ncVector?4h@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	eax, DWORD PTR [esi+4]
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
	mov	DWORD PTR [esi+4], 0
$LN8@ncVector:
	mov	DWORD PTR [esi+8], 0
	pop	esi

; 36   : 	}

	ret	0
??1?$ncVector@PAVHookBase@@@@UAE@XZ ENDP		; ncVector<HookBase *>::~ncVector<HookBase *>
_TEXT	ENDS
PUBLIC	??0?$_DebugHeapAllocator@D@std@@QAE@XZ		; std::_DebugHeapAllocator<char>::_DebugHeapAllocator<char>
; Function compile flags: /Ogtpy
;	COMDAT ??0?$_DebugHeapAllocator@D@std@@QAE@XZ
_TEXT	SEGMENT
??0?$_DebugHeapAllocator@D@std@@QAE@XZ PROC		; std::_DebugHeapAllocator<char>::_DebugHeapAllocator<char>, COMDAT
; _this$ = ecx
	mov	eax, ecx
	ret	0
??0?$_DebugHeapAllocator@D@std@@QAE@XZ ENDP		; std::_DebugHeapAllocator<char>::_DebugHeapAllocator<char>
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ??_G?$ncVector@PAVHookBase@@@@UAEPAXI@Z
_TEXT	SEGMENT
___flags$ = 8						; size = 4
??_G?$ncVector@PAVHookBase@@@@UAEPAXI@Z PROC		; ncVector<HookBase *>::`scalar deleting destructor', COMDAT
; _this$ = ecx
	push	esi
	mov	esi, ecx
	cmp	DWORD PTR [esi+4], 0
	mov	DWORD PTR [esi], OFFSET ??_7?$ncVector@PAVHookBase@@@@6B@
	je	SHORT $LN6@scalar@6
	push	OFFSET ??_C@_0CC@FAGGMAID@ncVector?$DMclass?5HookBase?5?$CK?$DO?3?3Clea@
	push	54					; 00000036H
	push	OFFSET ??_C@_0CB@BOFIHJED@d?3?2source?5code?2nc?5lib?2ncVector?4h@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	eax, DWORD PTR [esi+4]
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
	mov	DWORD PTR [esi+4], 0
$LN6@scalar@6:
	test	BYTE PTR ___flags$[esp], 1
	mov	DWORD PTR [esi+8], 0
	je	SHORT $LN11@scalar@6
	push	esi
	call	??3@YAXPAX@Z				; operator delete
	add	esp, 4
$LN11@scalar@6:
	mov	eax, esi
	pop	esi
	ret	4
??_G?$ncVector@PAVHookBase@@@@UAEPAXI@Z ENDP		; ncVector<HookBase *>::`scalar deleting destructor'
_TEXT	ENDS
PUBLIC	??0?$_DebugHeapAllocator@D@std@@QAE@ABV01@@Z	; std::_DebugHeapAllocator<char>::_DebugHeapAllocator<char>
; Function compile flags: /Ogtpy
;	COMDAT ??0?$_DebugHeapAllocator@D@std@@QAE@ABV01@@Z
_TEXT	SEGMENT
___that$ = 8						; size = 4
??0?$_DebugHeapAllocator@D@std@@QAE@ABV01@@Z PROC	; std::_DebugHeapAllocator<char>::_DebugHeapAllocator<char>, COMDAT
; _this$ = ecx
	mov	eax, ecx
	ret	4
??0?$_DebugHeapAllocator@D@std@@QAE@ABV01@@Z ENDP	; std::_DebugHeapAllocator<char>::_DebugHeapAllocator<char>
_TEXT	ENDS
PUBLIC	?Format@ncString@@QAAHPBDZZ			; ncString::Format
; Function compile flags: /Ogtpy
; File d:\source code\nc lib\ncstring.h
;	COMDAT ?Format@ncString@@QAAHPBDZZ
_TEXT	SEGMENT
_this$ = 8						; size = 4
_string$ = 12						; size = 4
?Format@ncString@@QAAHPBDZZ PROC			; ncString::Format, COMDAT

; 223  : 		va_list args;
; 224  : 		va_start(args, string);
; 225  : 		int size = this->Format_Args(string, args);

	mov	ecx, DWORD PTR _string$[esp-4]
	lea	eax, DWORD PTR _string$[esp]
	push	eax
	push	ecx
	mov	ecx, DWORD PTR _this$[esp+4]
	call	?Format_Args@ncString@@QAEHPBDPAD@Z	; ncString::Format_Args

; 226  : 		va_end(args);
; 227  : 		return size;
; 228  : 	};

	ret	0
?Format@ncString@@QAAHPBDZZ ENDP			; ncString::Format
_TEXT	ENDS
PUBLIC	??0ncWideString@@QAE@PB_W@Z			; ncWideString::ncWideString
; Function compile flags: /Ogtpy
;	COMDAT ??0ncWideString@@QAE@PB_W@Z
_TEXT	SEGMENT
_wString$ = 8						; size = 4
??0ncWideString@@QAE@PB_W@Z PROC			; ncWideString::ncWideString, COMDAT
; _this$ = ecx

; 409  : 	{
; 410  : 		this->m_String = NULL;
; 411  : 		*this = wString;

	mov	eax, DWORD PTR _wString$[esp-4]
	push	esi
	mov	esi, ecx
	push	eax
	mov	DWORD PTR [esi], 0
	call	??4ncWideString@@QAEAAV0@PB_W@Z		; ncWideString::operator=

; 412  : 	};

	mov	eax, esi
	pop	esi
	ret	4
??0ncWideString@@QAE@PB_W@Z ENDP			; ncWideString::ncWideString
_TEXT	ENDS
PUBLIC	??_C@_02DKCKIIND@?$CFs?$AA@			; `string'
PUBLIC	??_C@_0BC@MALIEGMD@?$FL?$CF02d?3?$CF02d?3?$CF02d?$FN?5?$AA@ ; `string'
PUBLIC	??_C@_01MCMALHOG@a?$AA@				; `string'
PUBLIC	??_C@_0BG@MMMBFLGC@renlog_?$CFd?9?$CFd?9?$CF04d?4txt?$AA@ ; `string'
PUBLIC	??_C@_0CA@KAGADMKD@d?3?2source?5code?2gzgm?2gzmanager?4h?$AA@ ; `string'
PUBLIC	??_C@_0P@MFGIBAIL@gzConsole?3?3Out?$AA@		; `string'
PUBLIC	?Out@gzConsole@@SAXPBDZZ			; gzConsole::Out
EXTRN	_printf:PROC
EXTRN	?Format@nc_StringClass@@QAAXPBDZZ:PROC		; nc_StringClass::Format
EXTRN	_fclose:PROC
EXTRN	_fputs:PROC
EXTRN	_fprintf:PROC
EXTRN	_fopen:PROC
;	COMDAT ??_C@_02DKCKIIND@?$CFs?$AA@
; File c:\program files\microsoft visual studio 8\vc\include\time.inl
CONST	SEGMENT
??_C@_02DKCKIIND@?$CFs?$AA@ DB '%s', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_0BC@MALIEGMD@?$FL?$CF02d?3?$CF02d?3?$CF02d?$FN?5?$AA@
CONST	SEGMENT
??_C@_0BC@MALIEGMD@?$FL?$CF02d?3?$CF02d?3?$CF02d?$FN?5?$AA@ DB '[%02d:%02'
	DB	'd:%02d] ', 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_01MCMALHOG@a?$AA@
CONST	SEGMENT
??_C@_01MCMALHOG@a?$AA@ DB 'a', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_0BG@MMMBFLGC@renlog_?$CFd?9?$CFd?9?$CF04d?4txt?$AA@
CONST	SEGMENT
??_C@_0BG@MMMBFLGC@renlog_?$CFd?9?$CFd?9?$CF04d?4txt?$AA@ DB 'renlog_%d-%'
	DB	'd-%04d.txt', 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_0CA@KAGADMKD@d?3?2source?5code?2gzgm?2gzmanager?4h?$AA@
CONST	SEGMENT
??_C@_0CA@KAGADMKD@d?3?2source?5code?2gzgm?2gzmanager?4h?$AA@ DB 'd:\sour'
	DB	'ce code\gzgm\gzmanager.h', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_0P@MFGIBAIL@gzConsole?3?3Out?$AA@
CONST	SEGMENT
??_C@_0P@MFGIBAIL@gzConsole?3?3Out?$AA@ DB 'gzConsole::Out', 00H ; `string'
CONST	ENDS
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$?Out@gzConsole@@SAXPBDZZ DD 0ffffffffH
	DD	FLAT:__unwindfunclet$?Out@gzConsole@@SAXPBDZZ$0
__ehfuncinfo$?Out@gzConsole@@SAXPBDZZ DD 019930522H
	DD	01H
	DD	FLAT:__unwindtable$?Out@gzConsole@@SAXPBDZZ
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	01H
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzmanager.h
xdata$x	ENDS
;	COMDAT ?Out@gzConsole@@SAXPBDZZ
_TEXT	SEGMENT
_renlog$ = -56						; size = 12
_now$ = -44						; size = 32
__$EHRec$ = -12						; size = 12
_msg$ = 8						; size = 4
?Out@gzConsole@@SAXPBDZZ PROC				; gzConsole::Out, COMDAT

; 100  : 	{

	mov	eax, DWORD PTR fs:0
	push	-1
	push	__ehhandler$?Out@gzConsole@@SAXPBDZZ
	push	eax
	mov	DWORD PTR fs:0, esp

; 101  : 		if (!msg || !*msg)

	mov	eax, DWORD PTR _msg$[esp+8]
	sub	esp, 44					; 0000002cH
	push	ebx
	xor	ebx, ebx
	cmp	eax, ebx
	je	$LN2@Out
	cmp	BYTE PTR [eax], bl
	je	$LN2@Out
	push	ebp
	push	esi
	push	edi

; 102  : 			return;
; 103  : 		va_list args;
; 104  : 		va_start(args,msg);
; 105  : 		int size = _vscprintf(msg,args);

	lea	ecx, DWORD PTR _msg$[esp+72]
	push	ecx
	push	eax
	call	__vscprintf

; 106  : 		char *tmp = new char[size +1];

	push	OFFSET ??_C@_0P@MFGIBAIL@gzConsole?3?3Out?$AA@
	push	106					; 0000006aH
	push	OFFSET ??_C@_0CA@KAGADMKD@d?3?2source?5code?2gzgm?2gzmanager?4h?$AA@
	mov	esi, eax
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	add	esi, 1
	push	esi
	call	??_U@YAPAXI@Z				; operator new[]
	mov	edi, eax

; 107  : 		vsprintf(tmp,msg,args);

	mov	eax, DWORD PTR _msg$[esp+92]
	lea	edx, DWORD PTR _msg$[esp+96]
	push	edx
	push	eax
	push	edi
	call	_vsprintf

; 108  : 		va_end(args);
; 109  : 		ncDateTime now = ncDateTime::Now();

	lea	ecx, DWORD PTR _now$[esp+108]
	push	ecx
	call	?Now@ncDateTime@@SA?AV1@XZ		; ncDateTime::Now

; 110  : 		ncString renlog;
; 111  : 		renlog.Format("renlog_%d-%d-%04d.txt", now.GetMonth(), now.GetDay(), now.GetYear());

	lea	edx, DWORD PTR _now$[esp+112]
	push	edx
	mov	DWORD PTR __$EHRec$[esp+124], ebx
	mov	DWORD PTR _renlog$[esp+116], ebx
	mov	DWORD PTR _renlog$[esp+120], ebx
	mov	DWORD PTR _renlog$[esp+124], ebx
	call	__localtime64
	mov	esi, DWORD PTR [eax+20]
	lea	eax, DWORD PTR _now$[esp+116]
	push	eax
	add	esi, 1900				; 0000076cH
	call	__localtime64
	mov	ebp, DWORD PTR [eax+12]
	lea	ecx, DWORD PTR _now$[esp+120]
	push	ecx
	call	__localtime64
	mov	edx, DWORD PTR [eax+16]
	push	esi
	push	ebp
	add	edx, 1
	push	edx
	lea	eax, DWORD PTR _renlog$[esp+136]
	push	OFFSET ??_C@_0BG@MMMBFLGC@renlog_?$CFd?9?$CFd?9?$CF04d?4txt?$AA@
	push	eax
	call	?Format@ncString@@QAAHPBDZZ		; ncString::Format

; 112  : 		FILE *logFile = fopen(renlog.GetString(),"a");

	mov	ecx, DWORD PTR _renlog$[esp+144]
	add	esp, 72					; 00000048H
	push	OFFSET ??_C@_01MCMALHOG@a?$AA@
	push	ecx
	call	_fopen
	mov	esi, eax
	add	esp, 8

; 113  : 		if (logFile)

	cmp	esi, ebx
	je	SHORT $LN1@Out

; 114  : 		{
; 115  : 			fprintf(logFile,"[%02d:%02d:%02d] ", now.GetHour(), now.GetMinute(), now.GetSecond());

	lea	edx, DWORD PTR _now$[esp+72]
	push	edx
	call	__localtime64
	mov	ebx, DWORD PTR [eax]
	lea	eax, DWORD PTR _now$[esp+76]
	push	eax
	call	__localtime64
	mov	ebp, DWORD PTR [eax+4]
	lea	ecx, DWORD PTR _now$[esp+80]
	push	ecx
	call	__localtime64
	mov	eax, DWORD PTR [eax+8]
	push	ebx
	push	ebp
	push	eax
	push	OFFSET ??_C@_0BC@MALIEGMD@?$FL?$CF02d?3?$CF02d?3?$CF02d?$FN?5?$AA@
	push	esi
	call	_fprintf

; 116  : 			fputs(tmp,logFile);

	push	esi
	push	edi
	call	_fputs

; 117  : 			fclose(logFile);

	push	esi
	call	_fclose
	add	esp, 44					; 0000002cH
$LN1@Out:

; 118  : 		}
; 119  : 
; 120  : 		// RenRem output
; 121  : 		nc_StringClass &renrem = *(nc_StringClass *)0x81E540;
; 122  : 		renrem.Format("%s",tmp);

	push	edi
	push	OFFSET ??_C@_02DKCKIIND@?$CFs?$AA@
	push	8512832					; 0081e540H
	call	?Format@nc_StringClass@@QAAXPBDZZ	; nc_StringClass::Format

; 123  : 
; 124  : 		printf("%s",tmp);

	push	edi
	push	OFFSET ??_C@_02DKCKIIND@?$CFs?$AA@
	call	_printf
	add	esp, 20					; 00000014H

; 125  : 		renlog.Free_String();

	lea	ecx, DWORD PTR _renlog$[esp+72]
	call	?Free_String@ncString@@QAEXXZ		; ncString::Free_String

; 126  : 		delete [] tmp;

	push	OFFSET ??_C@_0P@MFGIBAIL@gzConsole?3?3Out?$AA@
	push	126					; 0000007eH
	push	OFFSET ??_C@_0CA@KAGADMKD@d?3?2source?5code?2gzgm?2gzmanager?4h?$AA@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	push	edi
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H

; 127  : 	}

	lea	ecx, DWORD PTR _now$[esp+72]
	mov	DWORD PTR __$EHRec$[esp+80], -1
	call	??1ncDateTime@@QAE@XZ			; ncDateTime::~ncDateTime
	pop	edi
	pop	esi
	pop	ebp
$LN2@Out:
	mov	ecx, DWORD PTR __$EHRec$[esp+60]
	pop	ebx
	mov	DWORD PTR fs:0, ecx
	add	esp, 56					; 00000038H
	ret	0
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$?Out@gzConsole@@SAXPBDZZ$0:
	lea	ecx, DWORD PTR _now$[ebp]
	jmp	??1ncDateTime@@QAE@XZ			; ncDateTime::~ncDateTime
__ehhandler$?Out@gzConsole@@SAXPBDZZ:
	mov	eax, OFFSET __ehfuncinfo$?Out@gzConsole@@SAXPBDZZ
	jmp	___CxxFrameHandler3
text$x	ENDS
?Out@gzConsole@@SAXPBDZZ ENDP				; gzConsole::Out
PUBLIC	??_C@_0BO@KLBKOCME@Error?5creating?5object?5?$CFs?3?5?$CFs?6?$AA@ ; `string'
PUBLIC	?Proc_CreateObjectByID@@YGPAVnc_PersistClass@@K@Z ; Proc_CreateObjectByID
EXTRN	?Get_String@nc_StringClass@@QAEXH_N@Z:PROC	; nc_StringClass::Get_String
;	COMDAT ??_C@_0BO@KLBKOCME@Error?5creating?5object?5?$CFs?3?5?$CFs?6?$AA@
; File d:\source code\fds lib\new\fds_string.h
CONST	SEGMENT
??_C@_0BO@KLBKOCME@Error?5creating?5object?5?$CFs?3?5?$CFs?6?$AA@ DB 'Err'
	DB	'or creating object %s: %s', 0aH, 00H	; `string'
CONST	ENDS
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$?Proc_CreateObjectByID@@YGPAVnc_PersistClass@@K@Z DD 0ffffffffH
	DD	FLAT:__unwindfunclet$?Proc_CreateObjectByID@@YGPAVnc_PersistClass@@K@Z$0
__ehfuncinfo$?Proc_CreateObjectByID@@YGPAVnc_PersistClass@@K@Z DD 019930522H
	DD	01H
	DD	FLAT:__unwindtable$?Proc_CreateObjectByID@@YGPAVnc_PersistClass@@K@Z
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	01H
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzhook.cpp
xdata$x	ENDS
;	COMDAT ?Proc_CreateObjectByID@@YGPAVnc_PersistClass@@K@Z
_TEXT	SEGMENT
__$EHRec$ = -12						; size = 12
_ErrorMsg$ = 8						; size = 4
_ID$ = 8						; size = 4
?Proc_CreateObjectByID@@YGPAVnc_PersistClass@@K@Z PROC	; Proc_CreateObjectByID, COMDAT

; 79   : {

	mov	eax, DWORD PTR fs:0
	push	-1
	push	__ehhandler$?Proc_CreateObjectByID@@YGPAVnc_PersistClass@@K@Z
	push	eax
	mov	DWORD PTR fs:0, esp

; 80   : 	nc_DefinitionClass *Definition = nc_DefinitionMgrClass::Find_Definition(ID,true);

	mov	eax, DWORD PTR _ID$[esp+8]
	push	esi
	push	edi
	push	1
	push	eax
	call	?Find_Definition@nc_DefinitionMgrClass@@SAPAVnc_DefinitionClass@@K_N@Z ; nc_DefinitionMgrClass::Find_Definition
	mov	esi, eax
	add	esp, 8

; 81   : 	if (!Definition)

	test	esi, esi

; 82   : 		return 0;

	je	$LN28@Proc_Creat

; 83   : 	int VerifyID = Definition->Get_Class_ID() - 0x1000;

	mov	edx, DWORD PTR [esi]
	mov	eax, DWORD PTR [edx+32]
	mov	ecx, esi
	call	eax
	sub	eax, 4096				; 00001000H

; 84   : 	VerifyID = (((VerifyID + (VerifyID & 0xFFF)) >> 0xC) +1) << 0xC;

	mov	ecx, eax
	and	ecx, 4095				; 00000fffH
	add	ecx, eax
	and	ecx, -4096				; fffff000H
	add	ecx, 4096				; 00001000H

; 85   : 	if (VerifyID != 0x3000)

	cmp	ecx, 12288				; 00003000H

; 86   : 		return 0;

	jne	SHORT $LN28@Proc_Creat

; 87   : 	nc_StringClass ErrorMsg;

	mov	ecx, DWORD PTR ?m_EmptyString@nc_StringClass@@2PAPADA ; nc_StringClass::m_EmptyString
	mov	edx, DWORD PTR [ecx]
	mov	DWORD PTR _ErrorMsg$[esp+16], edx

; 88   : 	ErrorMsg.Get_String(0,false);

	push	0
	push	0
	lea	ecx, DWORD PTR _ErrorMsg$[esp+24]
	mov	DWORD PTR __$EHRec$[esp+36], 0
	call	?Get_String@nc_StringClass@@QAEXH_N@Z	; nc_StringClass::Get_String

; 89   : 	if (!Definition->Is_Valid_Config(ErrorMsg.m_Buffer))

	mov	ecx, DWORD PTR _ErrorMsg$[esp+16]
	mov	eax, DWORD PTR [esi]
	mov	edx, DWORD PTR [eax+56]
	push	ecx
	mov	ecx, esi
	call	edx
	test	al, al
	jne	SHORT $LN5@Proc_Creat

; 90   : 	{
; 91   : 		gzConsole::Out("Error creating object %s: %s\n",Definition->Get_Name(),ErrorMsg);

	mov	eax, DWORD PTR _ErrorMsg$[esp+16]
	mov	edx, DWORD PTR [esi]
	push	eax
	mov	eax, DWORD PTR [edx+48]
	mov	ecx, esi
	call	eax
	push	eax
	push	OFFSET ??_C@_0BO@KLBKOCME@Error?5creating?5object?5?$CFs?3?5?$CFs?6?$AA@
	call	?Out@gzConsole@@SAXPBDZZ		; gzConsole::Out
	add	esp, 12					; 0000000cH

; 92   : 		ErrorMsg.Free_String();

	lea	ecx, DWORD PTR _ErrorMsg$[esp+16]
	call	?Free_String@nc_StringClass@@QAEXXZ	; nc_StringClass::Free_String

; 93   : 		return 0;

	lea	ecx, DWORD PTR _ErrorMsg$[esp+16]
	mov	DWORD PTR __$EHRec$[esp+28], -1
	call	?Free_String@nc_StringClass@@QAEXXZ	; nc_StringClass::Free_String
$LN28@Proc_Creat:
	xor	eax, eax

; 103  : }

	mov	ecx, DWORD PTR __$EHRec$[esp+20]
	mov	DWORD PTR fs:0, ecx
	pop	edi
	pop	esi
	add	esp, 12					; 0000000cH
	ret	4
$LN5@Proc_Creat:

; 94   : 	}
; 95   : 	ErrorMsg.Free_String();

	lea	ecx, DWORD PTR _ErrorMsg$[esp+16]
	call	?Free_String@nc_StringClass@@QAEXXZ	; nc_StringClass::Free_String

; 96   : 	nc_PersistClass *NewObject = Definition->Create();

	mov	edx, DWORD PTR [esi]
	mov	eax, DWORD PTR [edx+44]
	mov	ecx, esi
	call	eax

; 97   : 	for (int i = 0; i < gzEventManager::m_list.Count(); i++)

	xor	esi, esi
	cmp	DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12, esi
	mov	edi, eax
	jle	SHORT $LN2@Proc_Creat
	npad	8
$LL4@Proc_Creat:

; 98   : 	{
; 99   : 		if ((gzEventManager::m_list[i]->GetEventType() & EVT_OBJECT) == EVT_OBJECT)

	mov	ecx, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+4
	mov	ecx, DWORD PTR [ecx+esi*4]
	test	BYTE PTR [ecx+16], 2
	je	SHORT $LN3@Proc_Creat

; 100  : 			gzEventManager::m_list[i]->Object_Created((nc_ScriptableGameObj *)NewObject);

	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+28]
	push	edi
	call	eax
$LN3@Proc_Creat:
	add	esi, 1
	cmp	esi, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12
	jl	SHORT $LL4@Proc_Creat
$LN2@Proc_Creat:

; 101  : 	}
; 102  : 	return NewObject;

	lea	ecx, DWORD PTR _ErrorMsg$[esp+16]
	mov	DWORD PTR __$EHRec$[esp+28], -1
	call	?Free_String@nc_StringClass@@QAEXXZ	; nc_StringClass::Free_String

; 103  : }

	mov	ecx, DWORD PTR __$EHRec$[esp+20]
	mov	eax, edi
	pop	edi
	mov	DWORD PTR fs:0, ecx
	pop	esi
	add	esp, 12					; 0000000cH
	ret	4
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$?Proc_CreateObjectByID@@YGPAVnc_PersistClass@@K@Z$0:
	lea	ecx, DWORD PTR _ErrorMsg$[ebp-4]
	jmp	??1nc_StringClass@@QAE@XZ		; nc_StringClass::~nc_StringClass
__ehhandler$?Proc_CreateObjectByID@@YGPAVnc_PersistClass@@K@Z:
	mov	eax, OFFSET __ehfuncinfo$?Proc_CreateObjectByID@@YGPAVnc_PersistClass@@K@Z
	jmp	___CxxFrameHandler3
text$x	ENDS
?Proc_CreateObjectByID@@YGPAVnc_PersistClass@@K@Z ENDP	; Proc_CreateObjectByID
PUBLIC	?Hook_CreateObjectByID@@YAXK@Z			; Hook_CreateObjectByID
; Function compile flags: /Ogtp
;	COMDAT ?Hook_CreateObjectByID@@YAXK@Z
_TEXT	SEGMENT
_ID$ = 8						; size = 4
?Hook_CreateObjectByID@@YAXK@Z PROC			; Hook_CreateObjectByID, COMDAT

; 106  : 	_asm {
; 107  : 		push ebp

	push	ebp

; 108  : 		mov ebp, esp

	mov	ebp, esp

; 109  : 		push ID

	push	DWORD PTR _ID$[ebp]

; 110  : 		call Proc_CreateObjectByID

	call	?Proc_CreateObjectByID@@YGPAVnc_PersistClass@@K@Z ; Proc_CreateObjectByID

; 111  : 		mov esp, ebp

	mov	esp, ebp

; 112  : 		pop ebp

	pop	ebp

; 113  : 		retn

	ret	0
?Hook_CreateObjectByID@@YAXK@Z ENDP			; Hook_CreateObjectByID
_TEXT	ENDS
PUBLIC	?Proc_CreateObjectByPresetName@@YGPAVnc_PersistClass@@PBD@Z ; Proc_CreateObjectByPresetName
EXTRN	?Find_Typed_Definition@nc_DefinitionMgrClass@@SAPAVnc_DefinitionClass@@PBDK_N@Z:PROC ; nc_DefinitionMgrClass::Find_Typed_Definition
;	COMDAT xdata$x
; File d:\source code\fds lib\new\fds_string.h
xdata$x	SEGMENT
__unwindtable$?Proc_CreateObjectByPresetName@@YGPAVnc_PersistClass@@PBD@Z DD 0ffffffffH
	DD	FLAT:__unwindfunclet$?Proc_CreateObjectByPresetName@@YGPAVnc_PersistClass@@PBD@Z$0
__ehfuncinfo$?Proc_CreateObjectByPresetName@@YGPAVnc_PersistClass@@PBD@Z DD 019930522H
	DD	01H
	DD	FLAT:__unwindtable$?Proc_CreateObjectByPresetName@@YGPAVnc_PersistClass@@PBD@Z
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	01H
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzhook.cpp
xdata$x	ENDS
;	COMDAT ?Proc_CreateObjectByPresetName@@YGPAVnc_PersistClass@@PBD@Z
_TEXT	SEGMENT
__$EHRec$ = -12						; size = 12
_ErrorMsg$ = 8						; size = 4
_preset$ = 8						; size = 4
?Proc_CreateObjectByPresetName@@YGPAVnc_PersistClass@@PBD@Z PROC ; Proc_CreateObjectByPresetName, COMDAT

; 119  : {

	mov	eax, DWORD PTR fs:0
	push	-1
	push	__ehhandler$?Proc_CreateObjectByPresetName@@YGPAVnc_PersistClass@@PBD@Z
	push	eax
	mov	DWORD PTR fs:0, esp

; 120  : 	nc_DefinitionClass *Definition = nc_DefinitionMgrClass::Find_Typed_Definition(preset,0x3000,true);

	mov	eax, DWORD PTR _preset$[esp+8]
	push	esi
	push	edi
	push	1
	push	12288					; 00003000H
	push	eax
	call	?Find_Typed_Definition@nc_DefinitionMgrClass@@SAPAVnc_DefinitionClass@@PBDK_N@Z ; nc_DefinitionMgrClass::Find_Typed_Definition
	mov	esi, eax
	add	esp, 12					; 0000000cH

; 121  : 	if (!Definition)

	test	esi, esi

; 122  : 		return 0;

	je	SHORT $LN27@Proc_Creat@2

; 123  : 	nc_StringClass ErrorMsg;

	mov	ecx, DWORD PTR ?m_EmptyString@nc_StringClass@@2PAPADA ; nc_StringClass::m_EmptyString
	mov	edx, DWORD PTR [ecx]
	mov	DWORD PTR _ErrorMsg$[esp+16], edx

; 124  : 	ErrorMsg.Get_String(0,false);

	push	0
	push	0
	lea	ecx, DWORD PTR _ErrorMsg$[esp+24]
	mov	DWORD PTR __$EHRec$[esp+36], 0
	call	?Get_String@nc_StringClass@@QAEXH_N@Z	; nc_StringClass::Get_String

; 125  : 	if (!Definition->Is_Valid_Config(ErrorMsg.m_Buffer))

	mov	ecx, DWORD PTR _ErrorMsg$[esp+16]
	mov	eax, DWORD PTR [esi]
	mov	edx, DWORD PTR [eax+56]
	push	ecx
	mov	ecx, esi
	call	edx
	test	al, al
	jne	SHORT $LN5@Proc_Creat@2

; 126  : 	{
; 127  : 		gzConsole::Out("Error creating object %s: %s\n",Definition->Get_Name(),ErrorMsg);

	mov	eax, DWORD PTR _ErrorMsg$[esp+16]
	mov	edx, DWORD PTR [esi]
	push	eax
	mov	eax, DWORD PTR [edx+48]
	mov	ecx, esi
	call	eax
	push	eax
	push	OFFSET ??_C@_0BO@KLBKOCME@Error?5creating?5object?5?$CFs?3?5?$CFs?6?$AA@
	call	?Out@gzConsole@@SAXPBDZZ		; gzConsole::Out
	add	esp, 12					; 0000000cH

; 128  : 		ErrorMsg.Free_String();

	lea	ecx, DWORD PTR _ErrorMsg$[esp+16]
	call	?Free_String@nc_StringClass@@QAEXXZ	; nc_StringClass::Free_String

; 129  : 		return 0;

	lea	ecx, DWORD PTR _ErrorMsg$[esp+16]
	mov	DWORD PTR __$EHRec$[esp+28], -1
	call	?Free_String@nc_StringClass@@QAEXXZ	; nc_StringClass::Free_String
$LN27@Proc_Creat@2:
	xor	eax, eax

; 139  : }

	mov	ecx, DWORD PTR __$EHRec$[esp+20]
	mov	DWORD PTR fs:0, ecx
	pop	edi
	pop	esi
	add	esp, 12					; 0000000cH
	ret	4
$LN5@Proc_Creat@2:

; 130  : 	}
; 131  : 	ErrorMsg.Free_String();

	lea	ecx, DWORD PTR _ErrorMsg$[esp+16]
	call	?Free_String@nc_StringClass@@QAEXXZ	; nc_StringClass::Free_String

; 132  : 	nc_PersistClass *NewObject = Definition->Create();

	mov	edx, DWORD PTR [esi]
	mov	eax, DWORD PTR [edx+44]
	mov	ecx, esi
	call	eax

; 133  : 	for (int i = 0; i < gzEventManager::m_list.Count(); i++)

	xor	esi, esi
	cmp	DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12, esi
	mov	edi, eax
	jle	SHORT $LN2@Proc_Creat@2
	npad	3
$LL4@Proc_Creat@2:

; 134  : 	{
; 135  : 		if ((gzEventManager::m_list[i]->GetEventType() & EVT_OBJECT) == EVT_OBJECT)

	mov	ecx, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+4
	mov	ecx, DWORD PTR [ecx+esi*4]
	test	BYTE PTR [ecx+16], 2
	je	SHORT $LN3@Proc_Creat@2

; 136  : 			gzEventManager::m_list[i]->Object_Created((nc_ScriptableGameObj *)NewObject);

	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+28]
	push	edi
	call	eax
$LN3@Proc_Creat@2:
	add	esi, 1
	cmp	esi, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12
	jl	SHORT $LL4@Proc_Creat@2
$LN2@Proc_Creat@2:

; 137  : 	}
; 138  : 	return NewObject;

	lea	ecx, DWORD PTR _ErrorMsg$[esp+16]
	mov	DWORD PTR __$EHRec$[esp+28], -1
	call	?Free_String@nc_StringClass@@QAEXXZ	; nc_StringClass::Free_String

; 139  : }

	mov	ecx, DWORD PTR __$EHRec$[esp+20]
	mov	eax, edi
	pop	edi
	mov	DWORD PTR fs:0, ecx
	pop	esi
	add	esp, 12					; 0000000cH
	ret	4
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$?Proc_CreateObjectByPresetName@@YGPAVnc_PersistClass@@PBD@Z$0:
	lea	ecx, DWORD PTR _ErrorMsg$[ebp-4]
	jmp	??1nc_StringClass@@QAE@XZ		; nc_StringClass::~nc_StringClass
__ehhandler$?Proc_CreateObjectByPresetName@@YGPAVnc_PersistClass@@PBD@Z:
	mov	eax, OFFSET __ehfuncinfo$?Proc_CreateObjectByPresetName@@YGPAVnc_PersistClass@@PBD@Z
	jmp	___CxxFrameHandler3
text$x	ENDS
?Proc_CreateObjectByPresetName@@YGPAVnc_PersistClass@@PBD@Z ENDP ; Proc_CreateObjectByPresetName
PUBLIC	?Hook_CreateObjectByPresetName@@YAXPBD@Z	; Hook_CreateObjectByPresetName
; Function compile flags: /Ogtp
;	COMDAT ?Hook_CreateObjectByPresetName@@YAXPBD@Z
_TEXT	SEGMENT
_preset$ = 8						; size = 4
?Hook_CreateObjectByPresetName@@YAXPBD@Z PROC		; Hook_CreateObjectByPresetName, COMDAT

; 142  : 	_asm {
; 143  : 		push ebp

	push	ebp

; 144  : 		mov ebp, esp

	mov	ebp, esp

; 145  : 		push preset

	push	DWORD PTR _preset$[ebp]

; 146  : 		call Proc_CreateObjectByPresetName

	call	?Proc_CreateObjectByPresetName@@YGPAVnc_PersistClass@@PBD@Z ; Proc_CreateObjectByPresetName

; 147  : 		mov esp, ebp

	mov	esp, ebp

; 148  : 		pop ebp

	pop	ebp

; 149  : 		retn

	ret	0
?Hook_CreateObjectByPresetName@@YAXPBD@Z ENDP		; Hook_CreateObjectByPresetName
_TEXT	ENDS
PUBLIC	??_C@_0CE@BEFAENAL@?$FL?$CFs?$FN?5Damage?5refused?5by?5class?5?$CC?$CFs@ ; `string'
PUBLIC	??_C@_0BC@EMNKBIDG@Proc_ServerDamage?$AA@	; `string'
PUBLIC	?Proc_ServerDamage@@YG_NPAVnc_DamageableGameObj@@PBVnc_OffenseObjectClass@@MH@Z ; Proc_ServerDamage
;	COMDAT ??_C@_0CE@BEFAENAL@?$FL?$CFs?$FN?5Damage?5refused?5by?5class?5?$CC?$CFs@
; File d:\source code\nc lib\ncvector.h
CONST	SEGMENT
??_C@_0CE@BEFAENAL@?$FL?$CFs?$FN?5Damage?5refused?5by?5class?5?$CC?$CFs@ DB '['
	DB	'%s] Damage refused by class "%s".', 0aH, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BC@EMNKBIDG@Proc_ServerDamage?$AA@
CONST	SEGMENT
??_C@_0BC@EMNKBIDG@Proc_ServerDamage?$AA@ DB 'Proc_ServerDamage', 00H ; `string'
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzhook.cpp
CONST	ENDS
;	COMDAT ?Proc_ServerDamage@@YG_NPAVnc_DamageableGameObj@@PBVnc_OffenseObjectClass@@MH@Z
_TEXT	SEGMENT
_evt$ = -32						; size = 32
_Object$ = 8						; size = 4
_Offense$ = 12						; size = 4
_DamageMultipler$ = 16					; size = 4
_Warhead$ = 20						; size = 4
?Proc_ServerDamage@@YG_NPAVnc_DamageableGameObj@@PBVnc_OffenseObjectClass@@MH@Z PROC ; Proc_ServerDamage, COMDAT

; 155  : {

	sub	esp, 32					; 00000020H
	push	edi

; 156  : 	if (Object->Defense.Health.Get() == 0.0f)

	mov	edi, DWORD PTR _Object$[esp+32]
	lea	ecx, DWORD PTR [edi+1840]
	call	?Get@nc_FloatDataSafeClass@@QAEMXZ	; nc_FloatDataSafeClass::Get
	fcomp	DWORD PTR __real@00000000
	fnstsw	ax
	test	ah, 68					; 00000044H
	jp	SHORT $LN6@Proc_Serve

; 157  : 		return false;

	xor	al, al
	pop	edi

; 179  : }

	add	esp, 32					; 00000020H
	ret	16					; 00000010H
$LN6@Proc_Serve:
	push	esi

; 158  : 
; 159  : 	gzEventObjectDamage evt;
; 160  : 	evt.m_attacker = (Offense->Damager.Reference) ? Offense->Damager.Reference->obj->As_DamageableGameObj() : NULL;

	mov	esi, DWORD PTR _Offense$[esp+36]
	cmp	DWORD PTR [esi+20], 0
	mov	BYTE PTR _evt$[esp+52], 1
	je	SHORT $LN9@Proc_Serve
	mov	eax, DWORD PTR [esi+20]
	mov	ecx, DWORD PTR [eax+4]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+60]
	call	eax
	mov	DWORD PTR _evt$[esp+56], eax
	jmp	SHORT $LN10@Proc_Serve
$LN9@Proc_Serve:
	mov	DWORD PTR _evt$[esp+56], 0
$LN10@Proc_Serve:

; 161  : 	evt.m_defender = Object;
; 162  : 	evt.m_damage = Offense->Damage;

	fld	DWORD PTR [esi+4]

; 163  : 	evt.m_warhead = Offense->Warhead;

	mov	ecx, DWORD PTR [esi+8]

; 164  : 	for (int i = 0; i < gzEventManager::m_list.Count(); i++)

	xor	esi, esi
	fstp	DWORD PTR _evt$[esp+64]
	cmp	DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12, esi
	mov	DWORD PTR _evt$[esp+60], edi
	mov	DWORD PTR _evt$[esp+68], ecx
	jle	SHORT $LN3@Proc_Serve
$LL5@Proc_Serve:

; 165  : 	{
; 166  : 		if ((gzEventManager::m_list[i]->GetEventType() & EVT_OBJECT) == EVT_OBJECT)

	mov	edx, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+4
	mov	ecx, DWORD PTR [edx+esi*4]
	test	BYTE PTR [ecx+16], 2
	je	SHORT $LN4@Proc_Serve

; 167  : 		{
; 168  : 			gzEventManager::m_list[i]->Object_Damaged(evt);

	mov	eax, DWORD PTR [ecx]
	mov	eax, DWORD PTR [eax+32]
	lea	edx, DWORD PTR _evt$[esp+40]
	push	edx
	call	eax

; 169  : 			if (!evt.CanContinue())

	cmp	BYTE PTR _evt$[esp+52], 0
	je	SHORT $LN30@Proc_Serve
$LN4@Proc_Serve:

; 164  : 	for (int i = 0; i < gzEventManager::m_list.Count(); i++)

	add	esi, 1
	cmp	esi, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12
	jl	SHORT $LL5@Proc_Serve
$LN3@Proc_Serve:
	pop	esi

; 175  : 			}
; 176  : 		}
; 177  : 	}
; 178  : 	return true;

	mov	al, 1
	pop	edi

; 179  : }

	add	esp, 32					; 00000020H
	ret	16					; 00000010H
$LN30@Proc_Serve:

; 170  : 			{
; 171  : #if ISDEV()
; 172  : 				gzConsole::Out("[%s] Damage refused by class \"%s\".\n", __FUNCTION__, gzEventManager::m_list[i]->Get_Name());

	mov	ecx, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+4
	mov	ecx, DWORD PTR [ecx+esi*4]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx]
	call	eax
	push	eax
	push	OFFSET ??_C@_0BC@EMNKBIDG@Proc_ServerDamage?$AA@
	push	OFFSET ??_C@_0CE@BEFAENAL@?$FL?$CFs?$FN?5Damage?5refused?5by?5class?5?$CC?$CFs@
	call	?Out@gzConsole@@SAXPBDZZ		; gzConsole::Out
	add	esp, 12					; 0000000cH
	pop	esi

; 173  : #endif
; 174  : 				return false;

	xor	al, al
	pop	edi

; 179  : }

	add	esp, 32					; 00000020H
	ret	16					; 00000010H
?Proc_ServerDamage@@YG_NPAVnc_DamageableGameObj@@PBVnc_OffenseObjectClass@@MH@Z ENDP ; Proc_ServerDamage
_TEXT	ENDS
PUBLIC	?Hook_ServerDamage@@YAXXZ			; Hook_ServerDamage
; Function compile flags: /Odtp
;	COMDAT ?Hook_ServerDamage@@YAXXZ
_TEXT	SEGMENT
?Hook_ServerDamage@@YAXXZ PROC				; Hook_ServerDamage, COMDAT

; 182  : 	_asm {
; 183  : 		push ebp

	push	ebp

; 184  : 		mov ebp, esp

	mov	ebp, esp

; 185  : 		push ecx

	push	ecx

; 186  : 		push [ebp+0x10]

	push	DWORD PTR [ebp+16]

; 187  : 		push [ebp+0xC]

	push	DWORD PTR [ebp+12]

; 188  : 		push [ebp+8]

	push	DWORD PTR [ebp+8]

; 189  : 		push ecx

	push	ecx

; 190  : 		call Proc_ServerDamage

	call	?Proc_ServerDamage@@YG_NPAVnc_DamageableGameObj@@PBVnc_OffenseObjectClass@@MH@Z ; Proc_ServerDamage

; 191  : 		test al, al

	test	al, al

; 192  : 		pop ecx

	pop	ecx

; 193  : 		mov esp, ebp

	mov	esp, ebp

; 194  : 		pop ebp

	pop	ebp

; 195  : 		jz no_damage

	je	SHORT $no_damage$57695

; 196  : 		sub esp, 8

	sub	esp, 8

; 197  : 		push ebx

	push	ebx

; 198  : 		push ebp

	push	ebp

; 199  : 		push esi

	push	esi

; 200  : 		mov ebx, 0x6D8DC6

	mov	ebx, 7179718				; 006d8dc6H

; 201  : 		jmp ebx

	jmp	ebx
$no_damage$57695:

; 202  : no_damage:
; 203  : 		retn 0xC

	ret	12					; 0000000cH
?Hook_ServerDamage@@YAXXZ ENDP				; Hook_ServerDamage
_TEXT	ENDS
PUBLIC	??_C@_0DP@PBBGBGPA@?$FL?$CFs?$FN?5Transition?5request?5from?5?$CFls@ ; `string'
PUBLIC	??_C@_0BH@OJGAHENN@Hook_SoldierTransition?$AA@	; `string'
PUBLIC	?Hook_SoldierTransition@@YGXPAVnc_SoldierGameObj@@@Z ; Hook_SoldierTransition
EXTRN	?Start@nc_TransitionInstanceClass@@QAEXPAVnc_SoldierGameObj@@@Z:PROC ; nc_TransitionInstanceClass::Start
;	COMDAT ??_C@_0DP@PBBGBGPA@?$FL?$CFs?$FN?5Transition?5request?5from?5?$CFls@
; File d:\source code\nc lib\ncvector.h
CONST	SEGMENT
??_C@_0DP@PBBGBGPA@?$FL?$CFs?$FN?5Transition?5request?5from?5?$CFls@ DB '['
	DB	'%s] Transition request from %ls to %s refused by class "%s".', 0aH
	DB	00H						; `string'
CONST	ENDS
;	COMDAT ??_C@_0BH@OJGAHENN@Hook_SoldierTransition?$AA@
CONST	SEGMENT
??_C@_0BH@OJGAHENN@Hook_SoldierTransition?$AA@ DB 'Hook_SoldierTransition'
	DB	00H						; `string'
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzhook.cpp
CONST	ENDS
;	COMDAT ?Hook_SoldierTransition@@YGXPAVnc_SoldierGameObj@@@Z
_TEXT	SEGMENT
_Instance$ = -28					; size = 4
_evt$ = -24						; size = 24
_soldier$ = 8						; size = 4
?Hook_SoldierTransition@@YGXPAVnc_SoldierGameObj@@@Z PROC ; Hook_SoldierTransition, COMDAT

; 269  : void __stdcall Hook_SoldierTransition(nc_SoldierGameObj *soldier) {

	sub	esp, 28					; 0000001cH
	push	esi
	push	edi

; 270  : 	nc_TransitionInstanceClass *Instance;
; 271  : 	_asm {
; 272  : 		mov Instance, ecx

	mov	DWORD PTR _Instance$[esp+36], ecx

; 273  : 	}
; 274  : 
; 275  : 	gzEventObjectTransition evt;
; 276  : 	evt.m_soldier = soldier;

	mov	edi, DWORD PTR _soldier$[esp+32]

; 277  : 	evt.m_instance = Instance;

	mov	eax, DWORD PTR _Instance$[esp+36]

; 278  : 	for (int i = 0; i < gzEventManager::m_list.Count(); i++)

	xor	esi, esi
	cmp	DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12, esi
	mov	BYTE PTR _evt$[esp+48], 1
	mov	DWORD PTR _evt$[esp+52], edi
	mov	DWORD PTR _evt$[esp+56], eax
	jle	SHORT $LN3@Hook_Soldi@2
	npad	8
$LL5@Hook_Soldi@2:

; 279  : 	{
; 280  : 		if ((gzEventManager::m_list[i]->GetEventType() & EVT_OBJECT) == EVT_OBJECT)

	mov	ecx, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+4
	mov	ecx, DWORD PTR [ecx+esi*4]
	test	BYTE PTR [ecx+16], 2
	je	SHORT $LN4@Hook_Soldi@2

; 281  : 		{
; 282  : 			gzEventManager::m_list[i]->Object_Transition(evt);

	mov	edx, DWORD PTR [ecx]
	mov	edx, DWORD PTR [edx+40]
	lea	eax, DWORD PTR _evt$[esp+36]
	push	eax
	call	edx

; 283  : 			if (!evt.CanContinue())

	cmp	BYTE PTR _evt$[esp+48], 0
	je	SHORT $LN27@Hook_Soldi@2
$LN4@Hook_Soldi@2:

; 278  : 	for (int i = 0; i < gzEventManager::m_list.Count(); i++)

	add	esi, 1
	cmp	esi, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12
	jl	SHORT $LL5@Hook_Soldi@2
$LN3@Hook_Soldi@2:

; 292  : #endif
; 293  : 				return;
; 294  : 			}
; 295  : 		}
; 296  : 	}
; 297  : 	Instance->Start(soldier);

	mov	ecx, DWORD PTR _Instance$[esp+36]
	push	edi
	call	?Start@nc_TransitionInstanceClass@@QAEXPAVnc_SoldierGameObj@@@Z ; nc_TransitionInstanceClass::Start
	pop	edi
	pop	esi

; 298  : }

	add	esp, 28					; 0000001cH
	ret	4
$LN27@Hook_Soldi@2:

; 284  : 			{
; 285  : #ifdef DEVMSG
; 286  : 				gzConsole::Out("[%s] Transition request from %ls to %s refused by class \"%s\".\n",
; 287  : 					__FUNCTION__,
; 288  : 					soldier->Player->PlayerName.m_Buffer,
; 289  : 					Instance->Target.Reference->obj->definition->Get_Name(),
; 290  : 					gzEventManager::m_list[i]->Get_Name()
; 291  : 				);

	mov	eax, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+4
	mov	ecx, DWORD PTR [eax+esi*4]
	mov	edx, DWORD PTR _Instance$[esp+36]
	mov	eax, DWORD PTR [edx+116]
	mov	edx, DWORD PTR [eax+4]
	mov	eax, DWORD PTR [ecx]
	mov	esi, DWORD PTR [edx+1724]
	mov	edx, DWORD PTR [eax]
	call	edx
	push	eax
	mov	eax, DWORD PTR [esi]
	mov	edx, DWORD PTR [eax+48]
	mov	ecx, esi
	call	edx
	push	eax
	mov	eax, DWORD PTR [edi+2400]
	mov	ecx, DWORD PTR [eax+1880]
	push	ecx
	push	OFFSET ??_C@_0BH@OJGAHENN@Hook_SoldierTransition?$AA@
	push	OFFSET ??_C@_0DP@PBBGBGPA@?$FL?$CFs?$FN?5Transition?5request?5from?5?$CFls@
	call	?Out@gzConsole@@SAXPBDZZ		; gzConsole::Out
	add	esp, 20					; 00000014H
	pop	edi
	pop	esi

; 298  : }

	add	esp, 28					; 0000001cH
	ret	4
?Hook_SoldierTransition@@YGXPAVnc_SoldierGameObj@@@Z ENDP ; Hook_SoldierTransition
_TEXT	ENDS
PUBLIC	??_C@_0BO@PHIBDFDB@Start?5jump?3?5?$CFls?5?9?5Height?3?5?$CFf?6?$AA@ ; `string'
PUBLIC	?Proc_JumpStart@@YGXPAVnc_SoldierGameObj@@@Z	; Proc_JumpStart
EXTRN	?Get_Transform@nc_PhysicalGameObj@@QAEPAUnc_Matrix3D@@XZ:PROC ; nc_PhysicalGameObj::Get_Transform
;	COMDAT ??_C@_0BO@PHIBDFDB@Start?5jump?3?5?$CFls?5?9?5Height?3?5?$CFf?6?$AA@
; File d:\source code\nc lib\ncvector.h
CONST	SEGMENT
??_C@_0BO@PHIBDFDB@Start?5jump?3?5?$CFls?5?9?5Height?3?5?$CFf?6?$AA@ DB 'S'
	DB	'tart jump: %ls - Height: %f', 0aH, 00H	; `string'
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzhook.cpp
CONST	ENDS
;	COMDAT ?Proc_JumpStart@@YGXPAVnc_SoldierGameObj@@@Z
_TEXT	SEGMENT
_evt$57792 = -24					; size = 24
_soldier$ = 8						; size = 4
?Proc_JumpStart@@YGXPAVnc_SoldierGameObj@@@Z PROC	; Proc_JumpStart, COMDAT

; 302  : {

	sub	esp, 24					; 00000018H
	push	esi

; 303  : 	if (soldier->Player) {

	mov	esi, DWORD PTR _soldier$[esp+24]
	cmp	DWORD PTR [esi+2400], 0
	je	SHORT $LN2@Proc_JumpS

; 304  : #if ISDEV()
; 305  : 		gzConsole::Out("Start jump: %ls - Height: %f\n",
; 306  : 			soldier->Player->PlayerName.m_Buffer,
; 307  : 			soldier->Get_Transform()->PosZ
; 308  : 		);

	mov	ecx, esi
	call	?Get_Transform@nc_PhysicalGameObj@@QAEPAUnc_Matrix3D@@XZ ; nc_PhysicalGameObj::Get_Transform
	fld	DWORD PTR [eax+44]
	mov	eax, DWORD PTR [esi+2400]
	mov	ecx, DWORD PTR [eax+1880]
	sub	esp, 8
	fstp	QWORD PTR [esp]
	push	ecx
	push	OFFSET ??_C@_0BO@PHIBDFDB@Start?5jump?3?5?$CFls?5?9?5Height?3?5?$CFf?6?$AA@
	call	?Out@gzConsole@@SAXPBDZZ		; gzConsole::Out

; 309  : #endif
; 310  : 
; 311  : 		gzEventObjectJump evt;
; 312  : 		evt.m_soldier = soldier;

	mov	DWORD PTR _evt$57792[esp+60], esi

; 313  : 		for (int i = 0; i < gzEventManager::m_list.Count(); i++)

	xor	esi, esi
	add	esp, 16					; 00000010H
	cmp	DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12, esi
	mov	BYTE PTR _evt$57792[esp+40], 1
	jle	SHORT $LN2@Proc_JumpS
	npad	2
$LL4@Proc_JumpS:

; 314  : 		{
; 315  : 			if ((gzEventManager::m_list[i]->GetEventType() & EVT_OBJECT) == EVT_OBJECT)

	mov	edx, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+4
	mov	ecx, DWORD PTR [edx+esi*4]
	test	BYTE PTR [ecx+16], 2
	je	SHORT $LN3@Proc_JumpS

; 316  : 				gzEventManager::m_list[i]->Object_JumpStart(evt);

	mov	eax, DWORD PTR [ecx]
	mov	eax, DWORD PTR [eax+44]
	lea	edx, DWORD PTR _evt$57792[esp+28]
	push	edx
	call	eax
$LN3@Proc_JumpS:
	add	esi, 1
	cmp	esi, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12
	jl	SHORT $LL4@Proc_JumpS
$LN2@Proc_JumpS:
	pop	esi

; 317  : 		}
; 318  : 	}
; 319  : }

	add	esp, 24					; 00000018H
	ret	4
?Proc_JumpStart@@YGXPAVnc_SoldierGameObj@@@Z ENDP	; Proc_JumpStart
_TEXT	ENDS
PUBLIC	?Hook_JumpStart@@YAXXZ				; Hook_JumpStart
; Function compile flags: /Odtpy
;	COMDAT ?Hook_JumpStart@@YAXXZ
_TEXT	SEGMENT
?Hook_JumpStart@@YAXXZ PROC				; Hook_JumpStart, COMDAT

; 322  : 	_asm {
; 323  : 		push ecx

	push	ecx

; 324  : 		mov eax, [ecx+0x2C]

	mov	eax, DWORD PTR [ecx+44]

; 325  : 		mov eax, [eax+0x4C]

	mov	eax, DWORD PTR [eax+76]

; 326  : 		add eax, 0xFFFFF894

	add	eax, -1900				; fffff894H

; 327  : 		push eax

	push	eax

; 328  : 		call Proc_JumpStart

	call	?Proc_JumpStart@@YGXPAVnc_SoldierGameObj@@@Z ; Proc_JumpStart

; 329  : 		pop ecx

	pop	ecx

; 330  : 		sub esp, 0x48

	sub	esp, 72					; 00000048H

; 331  : 		push esi

	push	esi

; 332  : 		mov esi, ecx

	mov	esi, ecx

; 333  : 		mov ecx, 0x69BDF6

	mov	ecx, 6929910				; 0069bdf6H

; 334  : 		jmp ecx

	jmp	ecx
?Hook_JumpStart@@YAXXZ ENDP				; Hook_JumpStart
_TEXT	ENDS
PUBLIC	??_C@_0EK@OEPFOIMF@Complete?5jump?3?5?$CFls?5?9?5From?5height@ ; `string'
PUBLIC	?Proc_JumpComplete@@YGXPAVnc_SoldierGameObj@@@Z	; Proc_JumpComplete
;	COMDAT ??_C@_0EK@OEPFOIMF@Complete?5jump?3?5?$CFls?5?9?5From?5height@
; File d:\source code\nc lib\ncvector.h
CONST	SEGMENT
??_C@_0EK@OEPFOIMF@Complete?5jump?3?5?$CFls?5?9?5From?5height@ DB 'Comple'
	DB	'te jump: %ls - From height: %f - Current height: %f - Distanc'
	DB	'e: %f', 0aH, 00H				; `string'
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzhook.cpp
CONST	ENDS
;	COMDAT ?Proc_JumpComplete@@YGXPAVnc_SoldierGameObj@@@Z
_TEXT	SEGMENT
_evt$57813 = -24					; size = 24
_soldier$ = 8						; size = 4
?Proc_JumpComplete@@YGXPAVnc_SoldierGameObj@@@Z PROC	; Proc_JumpComplete, COMDAT

; 340  : {

	sub	esp, 24					; 00000018H
	push	edi

; 341  : 	if (soldier && soldier->Player)

	mov	edi, DWORD PTR _soldier$[esp+24]
	test	edi, edi
	je	$LN5@Proc_JumpC
	cmp	DWORD PTR [edi+2400], 0
	je	$LN5@Proc_JumpC
	push	esi

; 342  : 	{
; 343  : 		gzEventObjectJump evt;
; 344  : 		evt.m_soldier = soldier;
; 345  : 		for (int i = 0; i < gzEventManager::m_list.Count(); i++)

	xor	esi, esi
	cmp	DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12, esi
	mov	BYTE PTR _evt$57813[esp+44], 1
	mov	DWORD PTR _evt$57813[esp+48], edi
	jle	SHORT $LN2@Proc_JumpC
$LL4@Proc_JumpC:

; 346  : 		{
; 347  : 			if ((gzEventManager::m_list[i]->GetEventType() & EVT_OBJECT) == EVT_OBJECT)

	mov	eax, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+4
	mov	ecx, DWORD PTR [eax+esi*4]
	test	BYTE PTR [ecx+16], 2
	je	SHORT $LN3@Proc_JumpC

; 348  : 				gzEventManager::m_list[i]->Object_JumpComplete(evt);

	mov	edx, DWORD PTR [ecx]
	mov	edx, DWORD PTR [edx+48]
	lea	eax, DWORD PTR _evt$57813[esp+32]
	push	eax
	call	edx
$LN3@Proc_JumpC:
	add	esi, 1
	cmp	esi, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12
	jl	SHORT $LL4@Proc_JumpC
$LN2@Proc_JumpC:

; 349  : 		}
; 350  : #if ISDEV()
; 351  : 		gzConsole::Out("Complete jump: %ls - From height: %f - Current height: %f - Distance: %f\n",
; 352  : 			soldier->Player->PlayerName.m_Buffer,
; 353  : 			soldier->Human.JumpStart.PosZ,
; 354  : 			soldier->Get_Transform()->PosZ,
; 355  : 			soldier->Human.JumpStart.PosZ - soldier->Get_Transform()->PosZ
; 356  : 		);

	mov	ecx, edi
	call	?Get_Transform@nc_PhysicalGameObj@@QAEPAUnc_Matrix3D@@XZ ; nc_PhysicalGameObj::Get_Transform
	fld	DWORD PTR [edi+2552]
	fsub	DWORD PTR [eax+44]
	sub	esp, 8
	mov	ecx, edi
	fstp	QWORD PTR [esp]
	call	?Get_Transform@nc_PhysicalGameObj@@QAEPAUnc_Matrix3D@@XZ ; nc_PhysicalGameObj::Get_Transform
	fld	DWORD PTR [eax+44]
	mov	eax, DWORD PTR [edi+2400]
	mov	ecx, DWORD PTR [eax+1880]
	sub	esp, 16					; 00000010H
	fstp	QWORD PTR [esp+8]
	fld	DWORD PTR [edi+2552]
	fstp	QWORD PTR [esp]
	push	ecx
	push	OFFSET ??_C@_0EK@OEPFOIMF@Complete?5jump?3?5?$CFls?5?9?5From?5height@
	call	?Out@gzConsole@@SAXPBDZZ		; gzConsole::Out
	add	esp, 32					; 00000020H
	pop	esi
$LN5@Proc_JumpC:
	pop	edi

; 357  : #endif
; 358  : 	}
; 359  : }

	add	esp, 24					; 00000018H
	ret	4
?Proc_JumpComplete@@YGXPAVnc_SoldierGameObj@@@Z ENDP	; Proc_JumpComplete
_TEXT	ENDS
PUBLIC	?Hook_JumpComplete@@YAXXZ			; Hook_JumpComplete
; Function compile flags: /Odtpy
;	COMDAT ?Hook_JumpComplete@@YAXXZ
_TEXT	SEGMENT
?Hook_JumpComplete@@YAXXZ PROC				; Hook_JumpComplete, COMDAT

; 362  : 	_asm {
; 363  : 		push ecx

	push	ecx

; 364  : 		mov eax, [ecx+0x2C]

	mov	eax, DWORD PTR [ecx+44]

; 365  : 		mov eax, [eax+0x4C]

	mov	eax, DWORD PTR [eax+76]

; 366  : 		add eax, 0xFFFFF894

	add	eax, -1900				; fffff894H

; 367  : 		push eax

	push	eax

; 368  : 		call Proc_JumpComplete

	call	?Proc_JumpComplete@@YGXPAVnc_SoldierGameObj@@@Z ; Proc_JumpComplete

; 369  : 		pop ecx

	pop	ecx

; 370  : 		sub esp, 0x88

	sub	esp, 136				; 00000088H

; 371  : 		mov eax, 0x69BF76

	mov	eax, 6930294				; 0069bf76H

; 372  : 		jmp eax

	jmp	eax
?Hook_JumpComplete@@YAXXZ ENDP				; Hook_JumpComplete
_TEXT	ENDS
PUBLIC	??_C@_17CNPHIMPH@?$AA?$CF?$AAl?$AAs?$AA?$AA@	; `string'
PUBLIC	??_C@_1M@OJJBDCE@?$AA?$CF?$AAl?$AAs?$AA?$CF?$AAd?$AA?$AA@ ; `string'
PUBLIC	??_C@_0GF@GDKCHJEB@?$FLGZ?$FN?5Notice?3?5Nickname?5?$CC?$CFls?$CC?5cont@ ; `string'
PUBLIC	??_C@_0GD@MAMKMPBA@?$FLGZ?$FN?5Notice?3?5Nickname?5?$CC?$CFls?$CC?5is?5l@ ; `string'
PUBLIC	?Proc_PlayerJoin@@YGXPAVnc_cPlayer@@PAVnc_WideStringClass@@@Z ; Proc_PlayerJoin
EXTRN	?Find_Player@nc_cPlayerManager@@SAPAVnc_cPlayer@@ABVnc_WideStringClass@@@Z:PROC ; nc_cPlayerManager::Find_Player
EXTRN	_wcsicmp:PROC
EXTRN	?PlayerList@nc_cPlayerManager@@2PAV?$nc_SList@Vnc_cPlayer@@@@A:DWORD ; nc_cPlayerManager::PlayerList
EXTRN	?Resize@nc_WideStringClass@@QAEXH@Z:PROC	; nc_WideStringClass::Resize
EXTRN	?Get_Length@nc_WideStringClass@@QAEHXZ:PROC	; nc_WideStringClass::Get_Length
;	COMDAT ??_C@_17CNPHIMPH@?$AA?$CF?$AAl?$AAs?$AA?$AA@
; File d:\source code\nc lib\ncvector.h
CONST	SEGMENT
??_C@_17CNPHIMPH@?$AA?$CF?$AAl?$AAs?$AA?$AA@ DB '%', 00H, 'l', 00H, 's', 00H
	DB	00H, 00H					; `string'
CONST	ENDS
;	COMDAT ??_C@_1M@OJJBDCE@?$AA?$CF?$AAl?$AAs?$AA?$CF?$AAd?$AA?$AA@
CONST	SEGMENT
??_C@_1M@OJJBDCE@?$AA?$CF?$AAl?$AAs?$AA?$CF?$AAd?$AA?$AA@ DB '%', 00H, 'l'
	DB	00H, 's', 00H, '%', 00H, 'd', 00H, 00H, 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_0GF@GDKCHJEB@?$FLGZ?$FN?5Notice?3?5Nickname?5?$CC?$CFls?$CC?5cont@
CONST	SEGMENT
??_C@_0GF@GDKCHJEB@?$FLGZ?$FN?5Notice?3?5Nickname?5?$CC?$CFls?$CC?5cont@ DB '['
	DB	'GZ] Notice: Nickname "%ls" contains disallowed character(s) a'
	DB	'nd has been replaced with underscore.', 0aH, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0GD@MAMKMPBA@?$FLGZ?$FN?5Notice?3?5Nickname?5?$CC?$CFls?$CC?5is?5l@
CONST	SEGMENT
??_C@_0GD@MAMKMPBA@?$FLGZ?$FN?5Notice?3?5Nickname?5?$CC?$CFls?$CC?5is?5l@ DB '['
	DB	'GZ] Notice: Nickname "%ls" is longer than 20 characters and h'
	DB	'as been truncated to 20 characters.', 0aH, 00H ; `string'
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzhook.cpp
CONST	ENDS
;	COMDAT ?Proc_PlayerJoin@@YGXPAVnc_cPlayer@@PAVnc_WideStringClass@@@Z
_TEXT	SEGMENT
_changedName$ = -36					; size = 12
_evt$ = -24						; size = 24
_pData$ = 8						; size = 4
tv226 = 12						; size = 4
_pName$ = 12						; size = 4
?Proc_PlayerJoin@@YGXPAVnc_cPlayer@@PAVnc_WideStringClass@@@Z PROC ; Proc_PlayerJoin, COMDAT

; 497  : {

	sub	esp, 36					; 00000024H
	push	ebx
	push	esi

; 498  : 	if (pName->Get_Length() > 20)

	mov	esi, DWORD PTR _pName$[esp+40]
	push	edi
	mov	ecx, esi
	call	?Get_Length@nc_WideStringClass@@QAEHXZ	; nc_WideStringClass::Get_Length
	cmp	eax, 20					; 00000014H
	jle	SHORT $LN56@Proc_Playe@2

; 499  : 	{
; 500  : 		gzConsole::Out("[GZ] Notice: Nickname \"%ls\" is longer than 20 characters and has been truncated to 20 characters.\n",pName->m_Buffer);

	mov	eax, DWORD PTR [esi]
	push	eax
	push	OFFSET ??_C@_0GD@MAMKMPBA@?$FLGZ?$FN?5Notice?3?5Nickname?5?$CC?$CFls?$CC?5is?5l@
	call	?Out@gzConsole@@SAXPBDZZ		; gzConsole::Out
	add	esp, 8

; 501  : 		pName->Resize(21);

	push	21					; 00000015H
	mov	ecx, esi
	call	?Resize@nc_WideStringClass@@QAEXH@Z	; nc_WideStringClass::Resize

; 502  : 		pName->m_Buffer[20] = '\0';

	mov	ecx, DWORD PTR [esi]

; 503  : 		pData->PlayerName.Resize(21);

	mov	edi, DWORD PTR _pData$[esp+44]
	xor	ebx, ebx
	add	edi, 1880				; 00000758H
	mov	WORD PTR [ecx+40], bx
	push	21					; 00000015H
	mov	ecx, edi
	call	?Resize@nc_WideStringClass@@QAEXH@Z	; nc_WideStringClass::Resize

; 504  : 		pData->PlayerName.m_Buffer[20] = '\0';

	mov	edx, DWORD PTR [edi]
	mov	WORD PTR [edx+40], bx
	jmp	SHORT $LN20@Proc_Playe@2
$LN56@Proc_Playe@2:
	xor	ebx, ebx
$LN20@Proc_Playe@2:

; 505  : 	}
; 506  : 	bool noticeShown = false;
; 507  : 	wchar_t *pNamePtr = pName->m_Buffer;

	mov	edi, DWORD PTR [esi]
	xor	cl, cl

; 508  : 	while (*pName->m_Buffer)

	cmp	WORD PTR [edi], bx
	mov	DWORD PTR tv226[esp+44], edi
	je	SHORT $LN18@Proc_Playe@2
$LL19@Proc_Playe@2:

; 509  : 	{
; 510  : 		switch (*pName->m_Buffer)

	mov	eax, DWORD PTR [esi]
	movzx	eax, WORD PTR [eax]
	add	eax, -32				; ffffffe0H
	cmp	eax, 27					; 0000001bH
	ja	SHORT $LN13@Proc_Playe@2
	movzx	edx, BYTE PTR $LN55@Proc_Playe@2[eax]
	jmp	DWORD PTR $LN58@Proc_Playe@2[edx*4]
$LN15@Proc_Playe@2:

; 511  : 		{
; 512  : 			case ' ':
; 513  : 			case ';':
; 514  : 			case ':':
; 515  : 			case '"':
; 516  : 				if (!noticeShown)

	test	cl, cl
	jne	SHORT $LN14@Proc_Playe@2

; 517  : 				{
; 518  : 					gzConsole::Out("[GZ] Notice: Nickname \"%ls\" contains disallowed character(s) and has been replaced with underscore.\n",pNamePtr);

	push	edi
	push	OFFSET ??_C@_0GF@GDKCHJEB@?$FLGZ?$FN?5Notice?3?5Nickname?5?$CC?$CFls?$CC?5cont@
	call	?Out@gzConsole@@SAXPBDZZ		; gzConsole::Out
	add	esp, 8

; 519  : 					noticeShown = true;

	mov	cl, 1
$LN14@Proc_Playe@2:

; 520  : 				}
; 521  : 				*pName->m_Buffer = '_';

	mov	eax, DWORD PTR [esi]
	mov	WORD PTR [eax], 95			; 0000005fH
$LN13@Proc_Playe@2:

; 522  : 				break;
; 523  : 			default:
; 524  : 				break;
; 525  : 		}
; 526  : 		*pName->m_Buffer++;

	add	DWORD PTR [esi], 2
	mov	edx, DWORD PTR [esi]
	cmp	WORD PTR [edx], bx
	jne	SHORT $LL19@Proc_Playe@2
$LN18@Proc_Playe@2:
	push	ebp

; 527  : 	}
; 528  : 	pName->m_Buffer = pNamePtr;
; 529  : 	ncWideString changedName = pNamePtr;

	push	edi
	lea	ecx, DWORD PTR _changedName$[esp+56]
	mov	DWORD PTR [esi], edi
	mov	DWORD PTR _changedName$[esp+56], ebx
	call	??4ncWideString@@QAEAAV0@PB_W@Z		; ncWideString::operator=

; 530  : 	for (nc_GenericSLNode<nc_cPlayer> *pList = nc_cPlayerManager::PlayerList->HeadNode; pList != NULL; pList = pList->NodeNext)

	mov	eax, DWORD PTR ?PlayerList@nc_cPlayerManager@@2PAV?$nc_SList@Vnc_cPlayer@@@@A ; nc_cPlayerManager::PlayerList
	mov	ebp, DWORD PTR [eax+4]
	cmp	ebp, ebx
	mov	ebx, DWORD PTR _changedName$[esp+52]
	je	SHORT $LN10@Proc_Playe@2
$LL12@Proc_Playe@2:

; 531  : 	{
; 532  : 		if (pList->NodeData->IsActive && pList->NodeData != pData && !wcsicmp(pNamePtr,pList->NodeData->PlayerName.m_Buffer))

	mov	eax, DWORD PTR [ebp+4]
	cmp	BYTE PTR [eax+1981], 0
	je	SHORT $LN11@Proc_Playe@2
	cmp	eax, DWORD PTR _pData$[esp+48]
	je	SHORT $LN11@Proc_Playe@2
	mov	ecx, DWORD PTR [eax+1880]
	push	ecx
	push	edi
	call	_wcsicmp
	add	esp, 8
	test	eax, eax
	jne	SHORT $LN11@Proc_Playe@2

; 533  : 		{
; 534  : 			for (int i = 1; i <= 128; i++)

	mov	edi, 1
	npad	3
$LL8@Proc_Playe@2:

; 535  : 			{
; 536  : 				pName->Format(L"%ls%d",changedName.GetString(),i);

	push	edi
	push	ebx
	push	OFFSET ??_C@_1M@OJJBDCE@?$AA?$CF?$AAl?$AAs?$AA?$CF?$AAd?$AA?$AA@
	push	esi
	call	?Format@nc_WideStringClass@@QAAXPB_WZZ	; nc_WideStringClass::Format

; 537  : 				if (!nc_cPlayerManager::Find_Player(*pName))

	push	esi
	call	?Find_Player@nc_cPlayerManager@@SAPAVnc_cPlayer@@ABVnc_WideStringClass@@@Z ; nc_cPlayerManager::Find_Player
	add	esp, 20					; 00000014H
	test	eax, eax
	je	SHORT $LN57@Proc_Playe@2
	add	edi, 1
	cmp	edi, 128				; 00000080H
	jle	SHORT $LL8@Proc_Playe@2
$LN57@Proc_Playe@2:

; 533  : 		{
; 534  : 			for (int i = 1; i <= 128; i++)

	mov	edi, DWORD PTR tv226[esp+48]
$LN11@Proc_Playe@2:

; 530  : 	for (nc_GenericSLNode<nc_cPlayer> *pList = nc_cPlayerManager::PlayerList->HeadNode; pList != NULL; pList = pList->NodeNext)

	mov	ebp, DWORD PTR [ebp]
	test	ebp, ebp
	jne	SHORT $LL12@Proc_Playe@2
$LN10@Proc_Playe@2:

; 538  : 					break;
; 539  : 			}
; 540  : 		}
; 541  : 	}
; 542  : 	changedName.Free_String();

	test	ebx, ebx
	pop	ebp
	je	SHORT $LN31@Proc_Playe@2
	push	OFFSET ??_C@_0BK@BLLJLEJ@ncWideString?3?3Free_String?$AA@
	push	567					; 00000237H
	push	OFFSET ??_C@_0CB@MAJIAFJL@d?3?2source?5code?2nc?5lib?2ncString?4h@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	push	ebx
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
$LN31@Proc_Playe@2:

; 543  : 	pData->PlayerName.Format(L"%ls",pNamePtr);

	mov	esi, DWORD PTR _pData$[esp+44]
	push	edi
	lea	edx, DWORD PTR [esi+1880]
	push	OFFSET ??_C@_17CNPHIMPH@?$AA?$CF?$AAl?$AAs?$AA?$AA@
	push	edx
	call	?Format@nc_WideStringClass@@QAAXPB_WZZ	; nc_WideStringClass::Format

; 544  : 	gzEventPlayerBase evt;
; 545  : 	evt.SetPlayer(pData);

	mov	DWORD PTR _evt$[esp+76], esi

; 546  : 	for (int i = 0; i < gzEventManager::m_list.Count(); i++)

	xor	esi, esi
	add	esp, 12					; 0000000cH
	cmp	DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12, esi
	mov	BYTE PTR _evt$[esp+60], 1
	jle	SHORT $LN2@Proc_Playe@2
	mov	bl, 4
$LL4@Proc_Playe@2:

; 547  : 	{
; 548  : 		if ((gzEventManager::m_list[i]->GetEventType() & EVT_PLAYER) == EVT_PLAYER)

	mov	eax, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+4
	mov	ecx, DWORD PTR [eax+esi*4]
	test	BYTE PTR [ecx+16], bl
	je	SHORT $LN3@Proc_Playe@2

; 549  : 			gzEventManager::m_list[i]->Player_Joined(evt);

	mov	edx, DWORD PTR [ecx]
	mov	edx, DWORD PTR [edx+68]
	lea	eax, DWORD PTR _evt$[esp+48]
	push	eax
	call	edx
$LN3@Proc_Playe@2:
	add	esi, 1
	cmp	esi, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12
	jl	SHORT $LL4@Proc_Playe@2
$LN2@Proc_Playe@2:
	pop	edi
	pop	esi
	pop	ebx

; 550  : 	}
; 551  : }

	add	esp, 36					; 00000024H
	ret	8
	npad	3
$LN58@Proc_Playe@2:
	DD	$LN15@Proc_Playe@2
	DD	$LN13@Proc_Playe@2
$LN55@Proc_Playe@2:
	DB	0
	DB	1
	DB	0
	DB	1
	DB	1
	DB	1
	DB	1
	DB	1
	DB	1
	DB	1
	DB	1
	DB	1
	DB	1
	DB	1
	DB	1
	DB	1
	DB	1
	DB	1
	DB	1
	DB	1
	DB	1
	DB	1
	DB	1
	DB	1
	DB	1
	DB	1
	DB	0
	DB	0
?Proc_PlayerJoin@@YGXPAVnc_cPlayer@@PAVnc_WideStringClass@@@Z ENDP ; Proc_PlayerJoin
_TEXT	ENDS
PUBLIC	?Hook_PlayerJoin@@YAXXZ				; Hook_PlayerJoin
; Function compile flags: /Odtpy
;	COMDAT ?Hook_PlayerJoin@@YAXXZ
_TEXT	SEGMENT
?Hook_PlayerJoin@@YAXXZ PROC				; Hook_PlayerJoin, COMDAT

; 554  : 	_asm {
; 555  : 		push [esp+8]

	push	DWORD PTR [esp+8]

; 556  : 		push esi

	push	esi

; 557  : 		call Proc_PlayerJoin

	call	?Proc_PlayerJoin@@YGXPAVnc_cPlayer@@PAVnc_WideStringClass@@@Z ; Proc_PlayerJoin

; 558  : 		mov ecx, 0x81FF84

	mov	ecx, 8519556				; 0081ff84H

; 559  : 		mov ecx, [ecx]

	mov	ecx, DWORD PTR [ecx]

; 560  : 		mov edx, 0x4B4517

	mov	edx, 4932887				; 004b4517H

; 561  : 		jmp edx

	jmp	edx
?Hook_PlayerJoin@@YAXXZ ENDP				; Hook_PlayerJoin
_TEXT	ENDS
PUBLIC	??_C@_0CJ@HAMJKLJG@?$FL?$CFs?$FN?5BBO?5request?5refused?5by?5clas@ ; `string'
PUBLIC	??_C@_0BL@IPJICGCM@Hook_PlayerBandwidthChange?$AA@ ; `string'
PUBLIC	?Hook_PlayerBandwidthChange@@YGXXZ		; Hook_PlayerBandwidthChange
;	COMDAT ??_C@_0CJ@HAMJKLJG@?$FL?$CFs?$FN?5BBO?5request?5refused?5by?5clas@
; File d:\source code\nc lib\ncvector.h
CONST	SEGMENT
??_C@_0CJ@HAMJKLJG@?$FL?$CFs?$FN?5BBO?5request?5refused?5by?5clas@ DB '[%'
	DB	's] BBO request refused by class "%s".', 0aH, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BL@IPJICGCM@Hook_PlayerBandwidthChange?$AA@
CONST	SEGMENT
??_C@_0BL@IPJICGCM@Hook_PlayerBandwidthChange?$AA@ DB 'Hook_PlayerBandwid'
	DB	'thChange', 00H				; `string'
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzhook.cpp
CONST	ENDS
;	COMDAT ?Hook_PlayerBandwidthChange@@YGXXZ
_TEXT	SEGMENT
_Bbo$ = -28						; size = 4
_evt$ = -24						; size = 24
?Hook_PlayerBandwidthChange@@YGXXZ PROC			; Hook_PlayerBandwidthChange, COMDAT

; 616  : void __stdcall Hook_PlayerBandwidthChange() {

	sub	esp, 28					; 0000001cH

; 617  : 	nc_cClientBboEvent *Bbo;
; 618  : 	_asm {
; 619  : 		mov Bbo, ecx

	mov	DWORD PTR _Bbo$[esp+28], ecx

; 620  : 	}
; 621  : 	nc_cPlayer *pData = nc_cPlayerManager::Find_Player(Bbo->ID);

	mov	eax, DWORD PTR _Bbo$[esp+28]
	mov	ecx, DWORD PTR [eax+1716]
	push	ecx
	call	?Find_Player@nc_cPlayerManager@@SAPAVnc_cPlayer@@H@Z ; nc_cPlayerManager::Find_Player

; 622  : 	if (!pData)
; 623  : 	{
; 624  : 		Bbo->Set_Delete_Pending();

	mov	ecx, DWORD PTR _Bbo$[esp+32]
	add	esp, 4
	test	eax, eax
	jne	SHORT $LN6@Hook_Playe@4
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+44]
	call	eax

; 647  : }

	add	esp, 28					; 0000001cH
	ret	0
$LN6@Hook_Playe@4:
	push	esi

; 625  : 		return;
; 626  : 	}
; 627  : 
; 628  : 	gzEventPlayerBase evt;

	mov	BYTE PTR _evt$[esp+44], 1

; 629  : 	evt.SetPlayer(pData);

	mov	DWORD PTR _evt$[esp+48], eax

; 630  : 	evt.SetInt(Bbo->Bandwidth);

	mov	edx, DWORD PTR [ecx+1720]

; 631  : 	for (int i = 0; i < gzEventManager::m_list.Count(); i++)

	xor	esi, esi
	cmp	DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12, esi
	mov	DWORD PTR _evt$[esp+40], edx
	jle	SHORT $LN3@Hook_Playe@4
	npad	7
$LL5@Hook_Playe@4:

; 632  : 	{
; 633  : 		if ((gzEventManager::m_list[i]->GetEventType() & EVT_PLAYER) == EVT_PLAYER)

	mov	eax, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+4
	mov	ecx, DWORD PTR [eax+esi*4]
	test	BYTE PTR [ecx+16], 4
	je	SHORT $LN4@Hook_Playe@4

; 634  : 		{
; 635  : 			gzEventManager::m_list[i]->Player_BandwidthChange(evt);

	mov	edx, DWORD PTR [ecx]
	mov	edx, DWORD PTR [edx+84]
	lea	eax, DWORD PTR _evt$[esp+32]
	push	eax
	call	edx

; 636  : 			if (!evt.CanContinue())

	cmp	BYTE PTR _evt$[esp+44], 0
	je	SHORT $LN30@Hook_Playe@4
$LN4@Hook_Playe@4:

; 631  : 	for (int i = 0; i < gzEventManager::m_list.Count(); i++)

	add	esi, 1
	cmp	esi, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12
	jl	SHORT $LL5@Hook_Playe@4

; 636  : 			if (!evt.CanContinue())

	mov	ecx, DWORD PTR _Bbo$[esp+32]
$LN3@Hook_Playe@4:

; 642  : 				return;
; 643  : 			}
; 644  : 		}
; 645  : 	}
; 646  : 	Bbo->Act();

	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+104]
	call	eax
	pop	esi

; 647  : }

	add	esp, 28					; 0000001cH
	ret	0
$LN30@Hook_Playe@4:

; 637  : 			{
; 638  : #if ISDEV()
; 639  : 				gzConsole::Out("[%s] BBO request refused by class \"%s\".\n", __FUNCTION__, gzEventManager::m_list[i]->Get_Name());

	mov	eax, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+4
	mov	ecx, DWORD PTR [eax+esi*4]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx]
	call	eax
	push	eax
	push	OFFSET ??_C@_0BL@IPJICGCM@Hook_PlayerBandwidthChange?$AA@
	push	OFFSET ??_C@_0CJ@HAMJKLJG@?$FL?$CFs?$FN?5BBO?5request?5refused?5by?5clas@
	call	?Out@gzConsole@@SAXPBDZZ		; gzConsole::Out

; 640  : #endif
; 641  : 				Bbo->Set_Delete_Pending();

	mov	ecx, DWORD PTR _Bbo$[esp+44]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+44]
	add	esp, 12					; 0000000cH

; 642  : 				return;
; 643  : 			}
; 644  : 		}
; 645  : 	}
; 646  : 	Bbo->Act();

	call	eax
	pop	esi

; 647  : }

	add	esp, 28					; 0000001cH
	ret	0
?Hook_PlayerBandwidthChange@@YGXXZ ENDP			; Hook_PlayerBandwidthChange
_TEXT	ENDS
PUBLIC	??_C@_0DD@FIPLDCGK@?$FL?$CFs?$FN?5Chat?5message?5from?5?$CFls?5refus@ ; `string'
PUBLIC	??_C@_0BA@NDDKGPJO@Proc_cCsTextObj?$AA@		; `string'
PUBLIC	?Proc_cCsTextObj@@YG_NPAVnc_cCsTextObj@@@Z	; Proc_cCsTextObj
;	COMDAT ??_C@_0DD@FIPLDCGK@?$FL?$CFs?$FN?5Chat?5message?5from?5?$CFls?5refus@
; File d:\source code\nc lib\ncstring.h
CONST	SEGMENT
??_C@_0DD@FIPLDCGK@?$FL?$CFs?$FN?5Chat?5message?5from?5?$CFls?5refus@ DB '['
	DB	'%s] Chat message from %ls refused by class "%s".', 0aH, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BA@NDDKGPJO@Proc_cCsTextObj?$AA@
CONST	SEGMENT
??_C@_0BA@NDDKGPJO@Proc_cCsTextObj?$AA@ DB 'Proc_cCsTextObj', 00H ; `string'
CONST	ENDS
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$?Proc_cCsTextObj@@YG_NPAVnc_cCsTextObj@@@Z DD 0ffffffffH
	DD	FLAT:__unwindfunclet$?Proc_cCsTextObj@@YG_NPAVnc_cCsTextObj@@@Z$0
__ehfuncinfo$?Proc_cCsTextObj@@YG_NPAVnc_cCsTextObj@@@Z DD 019930522H
	DD	01H
	DD	FLAT:__unwindtable$?Proc_cCsTextObj@@YG_NPAVnc_cCsTextObj@@@Z
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	01H
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzhook.cpp
xdata$x	ENDS
;	COMDAT ?Proc_cCsTextObj@@YG_NPAVnc_cCsTextObj@@@Z
_TEXT	SEGMENT
_evt$ = -60						; size = 48
__$EHRec$ = -12						; size = 12
_TextObj$ = 8						; size = 4
?Proc_cCsTextObj@@YG_NPAVnc_cCsTextObj@@@Z PROC		; Proc_cCsTextObj, COMDAT

; 690  : {

	push	-1
	push	__ehhandler$?Proc_cCsTextObj@@YG_NPAVnc_cCsTextObj@@@Z
	mov	eax, DWORD PTR fs:0
	push	eax
	mov	DWORD PTR fs:0, esp
	sub	esp, 48					; 00000030H
	push	ebx
	push	ebp

; 691  : 	gzEventPlayerChat evt;

	xor	ebx, ebx
	push	esi
	push	edi
	mov	BYTE PTR _evt$[esp+88], 1
	mov	DWORD PTR _evt$[esp+104], ebx
	mov	DWORD PTR _evt$[esp+108], ebx
	mov	DWORD PTR _evt$[esp+112], ebx

; 692  : 	evt.m_sender = TextObj->Sender;

	mov	esi, DWORD PTR _TextObj$[esp+72]
	mov	eax, DWORD PTR [esi+1716]

; 693  : 	evt.m_receiver = TextObj->Receiver;

	mov	ecx, DWORD PTR [esi+1728]

; 694  : 	evt.m_type = TextObj->Type;

	mov	edx, DWORD PTR [esi+1720]
	mov	DWORD PTR _evt$[esp+116], eax

; 695  : 	evt.m_message = TextObj->Message.m_Buffer;

	mov	eax, DWORD PTR [esi+1724]
	lea	ebp, DWORD PTR [esi+1724]
	mov	DWORD PTR _evt$[esp+120], ecx
	push	eax
	lea	ecx, DWORD PTR _evt$[esp+108]
	mov	DWORD PTR __$EHRec$[esp+88], ebx
	mov	DWORD PTR _evt$[esp+104], edx
	call	??4ncWideString@@QAEAAV0@PB_W@Z		; ncWideString::operator=

; 696  : 	for (int i = 0; i < gzEventManager::m_list.Count(); i++)

	xor	edi, edi
	cmp	DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12, ebx
	jle	SHORT $LN3@Proc_cCsTe
	npad	11
$LL5@Proc_cCsTe:

; 697  : 	{
; 698  : 		if ((gzEventManager::m_list[i]->GetEventType() & EVT_PLAYER) == EVT_PLAYER)

	mov	ecx, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+4
	mov	ecx, DWORD PTR [ecx+edi*4]
	test	BYTE PTR [ecx+16], 4
	je	SHORT $LN4@Proc_cCsTe

; 699  : 		{
; 700  : 			gzEventManager::m_list[i]->Player_Chat(evt);

	mov	edx, DWORD PTR [ecx]
	mov	edx, DWORD PTR [edx+96]
	lea	eax, DWORD PTR _evt$[esp+76]
	push	eax
	call	edx

; 701  : 			if (!evt.CanContinue())

	cmp	BYTE PTR _evt$[esp+88], bl
	je	$LN48@Proc_cCsTe
$LN4@Proc_cCsTe:

; 696  : 	for (int i = 0; i < gzEventManager::m_list.Count(); i++)

	add	edi, 1
	cmp	edi, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12
	jl	SHORT $LL5@Proc_cCsTe
$LN3@Proc_cCsTe:

; 712  : 			}
; 713  : 		}
; 714  : 	}
; 715  : 
; 716  : 	TextObj->Sender		= evt.m_sender;

	mov	ecx, DWORD PTR _evt$[esp+116]

; 717  : 	TextObj->Receiver	= evt.m_receiver;

	mov	edx, DWORD PTR _evt$[esp+120]

; 718  : 	TextObj->Type		= evt.m_type;

	mov	eax, DWORD PTR _evt$[esp+100]
	mov	DWORD PTR [esi+1716], ecx

; 719  : 	TextObj->Message.Resize(evt.m_message.GetLength() + 1);

	mov	ecx, DWORD PTR _evt$[esp+108]
	add	ecx, 1
	push	ecx
	mov	ecx, ebp
	mov	DWORD PTR [esi+1728], edx
	mov	DWORD PTR [esi+1720], eax
	call	?Resize@nc_WideStringClass@@QAEXH@Z	; nc_WideStringClass::Resize

; 720  : 	TextObj->Message.Format(L"%ls", evt.m_message.GetString());

	mov	edx, DWORD PTR _evt$[esp+104]
	push	edx
	push	OFFSET ??_C@_17CNPHIMPH@?$AA?$CF?$AAl?$AAs?$AA?$AA@
	push	ebp
	call	?Format@nc_WideStringClass@@QAAXPB_WZZ	; nc_WideStringClass::Format
	add	esp, 12					; 0000000cH

; 721  : 
; 722  : 	return true;

	cmp	DWORD PTR _evt$[esp+104], ebx
	mov	DWORD PTR __$EHRec$[esp+84], -1
	je	SHORT $LN46@Proc_cCsTe
	push	OFFSET ??_C@_0BK@BLLJLEJ@ncWideString?3?3Free_String?$AA@
	push	567					; 00000237H
	push	OFFSET ??_C@_0CB@MAJIAFJL@d?3?2source?5code?2nc?5lib?2ncString?4h@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	eax, DWORD PTR _evt$[esp+116]
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
$LN46@Proc_cCsTe:
	pop	edi
	pop	esi
	pop	ebp
	mov	al, 1
	pop	ebx

; 723  : }

	mov	ecx, DWORD PTR __$EHRec$[esp+60]
	mov	DWORD PTR fs:0, ecx
	add	esp, 60					; 0000003cH
	ret	4
$LN48@Proc_cCsTe:

; 702  : 			{
; 703  : #if ISDEV()
; 704  : 				gzConsole::Out("[%s] Chat message from %ls refused by class \"%s\".\n",
; 705  : 					__FUNCTION__,
; 706  : 					nc_cPlayerManager::Find_Player(TextObj->Sender)->PlayerName.m_Buffer,
; 707  : 					gzEventManager::m_list[i]->Get_Name()
; 708  : 				);

	mov	eax, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+4
	mov	ecx, DWORD PTR [eax+edi*4]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx]
	call	eax
	mov	ecx, DWORD PTR [esi+1716]
	push	eax
	push	ecx
	call	?Find_Player@nc_cPlayerManager@@SAPAVnc_cPlayer@@H@Z ; nc_cPlayerManager::Find_Player
	mov	edx, DWORD PTR [eax+1880]
	add	esp, 4
	push	edx
	push	OFFSET ??_C@_0BA@NDDKGPJO@Proc_cCsTextObj?$AA@
	push	OFFSET ??_C@_0DD@FIPLDCGK@?$FL?$CFs?$FN?5Chat?5message?5from?5?$CFls?5refus@
	call	?Out@gzConsole@@SAXPBDZZ		; gzConsole::Out

; 709  : #endif
; 710  : 				TextObj->Set_Delete_Pending();

	mov	eax, DWORD PTR [esi]
	mov	edx, DWORD PTR [eax+44]
	add	esp, 16					; 00000010H
	mov	ecx, esi
	call	edx

; 711  : 				return false;

	cmp	DWORD PTR _evt$[esp+104], ebx
	mov	DWORD PTR __$EHRec$[esp+84], -1
	je	SHORT $LN35@Proc_cCsTe
	push	OFFSET ??_C@_0BK@BLLJLEJ@ncWideString?3?3Free_String?$AA@
	push	567					; 00000237H
	push	OFFSET ??_C@_0CB@MAJIAFJL@d?3?2source?5code?2nc?5lib?2ncString?4h@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	eax, DWORD PTR _evt$[esp+116]
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
$LN35@Proc_cCsTe:

; 723  : }

	mov	ecx, DWORD PTR __$EHRec$[esp+76]
	pop	edi
	pop	esi
	pop	ebp
	xor	al, al
	pop	ebx
	mov	DWORD PTR fs:0, ecx
	add	esp, 60					; 0000003cH
	ret	4
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$?Proc_cCsTextObj@@YG_NPAVnc_cCsTextObj@@@Z$0:
	lea	ecx, DWORD PTR _evt$[ebp]
	jmp	??1gzEventPlayerChat@@QAE@XZ		; gzEventPlayerChat::~gzEventPlayerChat
__ehhandler$?Proc_cCsTextObj@@YG_NPAVnc_cCsTextObj@@@Z:
	mov	eax, OFFSET __ehfuncinfo$?Proc_cCsTextObj@@YG_NPAVnc_cCsTextObj@@@Z
	jmp	___CxxFrameHandler3
text$x	ENDS
?Proc_cCsTextObj@@YG_NPAVnc_cCsTextObj@@@Z ENDP		; Proc_cCsTextObj
PUBLIC	?Hook_cCsTextObj@@YAXXZ				; Hook_cCsTextObj
; Function compile flags: /Odtpy
;	COMDAT ?Hook_cCsTextObj@@YAXXZ
_TEXT	SEGMENT
?Hook_cCsTextObj@@YAXXZ PROC				; Hook_cCsTextObj, COMDAT

; 726  : 	_asm {
; 727  : 		push esi

	push	esi

; 728  : 		push esi

	push	esi

; 729  : 		call Proc_cCsTextObj

	call	?Proc_cCsTextObj@@YG_NPAVnc_cCsTextObj@@@Z ; Proc_cCsTextObj

; 730  : 		pop esi

	pop	esi

; 731  : 		test al, al

	test	al, al

; 732  : 		jz no_chat

	je	SHORT $no_chat$58129

; 733  : 		mov ecx, esi

	mov	ecx, esi

; 734  : 		mov edx, [esi]

	mov	edx, DWORD PTR [esi]

; 735  : 		call [edx+0x68]

	call	DWORD PTR [edx+104]
$no_chat$58129:

; 736  : no_chat:
; 737  : 		mov edi, 0x4B5D96

	mov	edi, 4939158				; 004b5d96H

; 738  : 		jmp edi

	jmp	edi
?Hook_cCsTextObj@@YAXXZ ENDP				; Hook_cCsTextObj
_TEXT	ENDS
PUBLIC	??_C@_0CM@LEPALKBJ@?$FL?$CFs?$FN?5Radio?5from?5?$CFls?5refused?5by?5c@ ; `string'
PUBLIC	??_C@_0L@OCGKKGHD@Proc_Radio?$AA@		; `string'
PUBLIC	?Proc_Radio@@YG_NPAVnc_CSAnnouncement@@@Z	; Proc_Radio
;	COMDAT ??_C@_0CM@LEPALKBJ@?$FL?$CFs?$FN?5Radio?5from?5?$CFls?5refused?5by?5c@
; File d:\source code\nc lib\ncvector.h
CONST	SEGMENT
??_C@_0CM@LEPALKBJ@?$FL?$CFs?$FN?5Radio?5from?5?$CFls?5refused?5by?5c@ DB '['
	DB	'%s] Radio from %ls refused by class "%s".', 0aH, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0L@OCGKKGHD@Proc_Radio?$AA@
CONST	SEGMENT
??_C@_0L@OCGKKGHD@Proc_Radio?$AA@ DB 'Proc_Radio', 00H	; `string'
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzhook.cpp
CONST	ENDS
;	COMDAT ?Proc_Radio@@YG_NPAVnc_CSAnnouncement@@@Z
_TEXT	SEGMENT
_evt$ = -48						; size = 48
_Radio$ = 8						; size = 4
?Proc_Radio@@YG_NPAVnc_CSAnnouncement@@@Z PROC		; Proc_Radio, COMDAT

; 744  : {

	sub	esp, 48					; 00000030H
	push	esi

; 745  : 	gzEventPlayerRadio evt;
; 746  : 	evt.m_team = Radio->Team;

	mov	esi, DWORD PTR _Radio$[esp+48]
	mov	eax, DWORD PTR [esi+1716]

; 747  : 	evt.m_sender = Radio->Sender;

	mov	ecx, DWORD PTR [esi+1720]

; 748  : 	evt.m_key = Radio->Key;

	mov	edx, DWORD PTR [esi+1728]
	push	edi
	mov	DWORD PTR _evt$[esp+80], eax

; 749  : 	evt.m_radioID = Radio->RadioID;

	mov	eax, DWORD PTR [esi+1724]
	mov	DWORD PTR _evt$[esp+84], ecx

; 750  : 	evt.m_toTeamOnly = Radio->SendToTeamOnly;

	mov	cl, BYTE PTR [esi+1732]

; 751  : 	for (int i = 0; i < gzEventManager::m_list.Count(); i++)

	xor	edi, edi
	cmp	DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12, edi
	mov	BYTE PTR _evt$[esp+68], 1
	mov	DWORD PTR _evt$[esp+92], edx
	mov	DWORD PTR _evt$[esp+88], eax
	mov	BYTE PTR _evt$[esp+96], cl
	jle	SHORT $LN3@Proc_Radio
	npad	6
$LL5@Proc_Radio:

; 752  : 	{
; 753  : 		if ((gzEventManager::m_list[i]->GetEventType() & EVT_PLAYER) == EVT_PLAYER)

	mov	edx, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+4
	mov	ecx, DWORD PTR [edx+edi*4]
	test	BYTE PTR [ecx+16], 4
	je	SHORT $LN4@Proc_Radio

; 754  : 		{
; 755  : 			gzEventManager::m_list[i]->Player_Radio(evt);

	mov	eax, DWORD PTR [ecx]
	mov	eax, DWORD PTR [eax+100]
	lea	edx, DWORD PTR _evt$[esp+56]
	push	edx
	call	eax

; 756  : 			if (!evt.CanContinue())

	cmp	BYTE PTR _evt$[esp+68], 0
	je	SHORT $LN27@Proc_Radio
$LN4@Proc_Radio:

; 751  : 	for (int i = 0; i < gzEventManager::m_list.Count(); i++)

	add	edi, 1
	cmp	edi, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12
	jl	SHORT $LL5@Proc_Radio
$LN3@Proc_Radio:

; 767  : 			}
; 768  : 		}
; 769  : 	}
; 770  : 
; 771  : 	Radio->Team				= evt.m_team;

	mov	eax, DWORD PTR _evt$[esp+80]

; 772  : 	Radio->Sender			= evt.m_sender;

	mov	ecx, DWORD PTR _evt$[esp+84]

; 773  : 	Radio->Key				= evt.m_key;

	mov	edx, DWORD PTR _evt$[esp+92]
	mov	DWORD PTR [esi+1716], eax

; 774  : 	Radio->RadioID			= evt.m_radioID;

	mov	eax, DWORD PTR _evt$[esp+88]
	mov	DWORD PTR [esi+1720], ecx

; 775  : 	Radio->SendToTeamOnly	= evt.m_toTeamOnly;

	mov	cl, BYTE PTR _evt$[esp+96]
	mov	DWORD PTR [esi+1724], eax
	pop	edi
	mov	DWORD PTR [esi+1728], edx
	mov	BYTE PTR [esi+1732], cl

; 776  : 
; 777  : 	return true;

	mov	al, 1
	pop	esi

; 778  : }

	add	esp, 48					; 00000030H
	ret	4
$LN27@Proc_Radio:

; 757  : 			{
; 758  : #if ISDEV()
; 759  : 				gzConsole::Out("[%s] Radio from %ls refused by class \"%s\".\n",
; 760  : 					__FUNCTION__,
; 761  : 					nc_cPlayerManager::Find_Player(Radio->Sender)->PlayerName.m_Buffer,
; 762  : 					gzEventManager::m_list[i]->Get_Name()
; 763  : 				);

	mov	ecx, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+4
	mov	ecx, DWORD PTR [ecx+edi*4]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx]
	call	eax
	mov	ecx, DWORD PTR [esi+1720]
	push	eax
	push	ecx
	call	?Find_Player@nc_cPlayerManager@@SAPAVnc_cPlayer@@H@Z ; nc_cPlayerManager::Find_Player
	mov	edx, DWORD PTR [eax+1880]
	add	esp, 4
	push	edx
	push	OFFSET ??_C@_0L@OCGKKGHD@Proc_Radio?$AA@
	push	OFFSET ??_C@_0CM@LEPALKBJ@?$FL?$CFs?$FN?5Radio?5from?5?$CFls?5refused?5by?5c@
	call	?Out@gzConsole@@SAXPBDZZ		; gzConsole::Out

; 764  : #endif
; 765  : 				Radio->Set_Delete_Pending();

	mov	eax, DWORD PTR [esi]
	mov	edx, DWORD PTR [eax+44]
	add	esp, 16					; 00000010H
	mov	ecx, esi
	call	edx
	pop	edi

; 766  : 				return false;

	xor	al, al
	pop	esi

; 778  : }

	add	esp, 48					; 00000030H
	ret	4
?Proc_Radio@@YG_NPAVnc_CSAnnouncement@@@Z ENDP		; Proc_Radio
_TEXT	ENDS
PUBLIC	?Hook_Radio@@YAXXZ				; Hook_Radio
; Function compile flags: /Ogtpy
;	COMDAT ?Hook_Radio@@YAXXZ
_TEXT	SEGMENT
?Hook_Radio@@YAXXZ PROC					; Hook_Radio, COMDAT

; 781  : 	_asm {
; 782  : 		push ecx

	push	ecx

; 783  : 		push esi

	push	esi

; 784  : 		call Proc_Radio

	call	?Proc_Radio@@YG_NPAVnc_CSAnnouncement@@@Z ; Proc_Radio

; 785  : 		test al, al

	test	al, al

; 786  : 		pop ecx

	pop	ecx

; 787  : 		jz no_radio

	je	SHORT $no_radio$58153

; 788  : 		mov edx, [esi]

	mov	edx, DWORD PTR [esi]

; 789  : 		call [edx+0x68]

	call	DWORD PTR [edx+104]
$no_radio$58153:

; 790  : no_radio:
; 791  : 		pop edi

	pop	edi

; 792  : 		pop esi

	pop	esi

; 793  : 		retn 4

	ret	4
?Hook_Radio@@YAXXZ ENDP					; Hook_Radio
_TEXT	ENDS
PUBLIC	??_C@_0EC@OCMBFMIK@?$FLPurchaseHook?$FN?5Purchase?5refused?5@ ; `string'
PUBLIC	__real@4f800000
PUBLIC	?Hook_PlayerPurchase@@YGXXZ			; Hook_PlayerPurchase
EXTRN	?Grant@nc_PowerUpGameObjDef@@QAEXPAVnc_SmartGameObj@@PAVnc_PowerUpGameObj@@_N@Z:PROC ; nc_PowerUpGameObjDef::Grant
EXTRN	?Request_Vehicle@nc_VehicleFactoryGameObj@@QAEXHMPAVnc_SoldierGameObj@@@Z:PROC ; nc_VehicleFactoryGameObj::Request_Vehicle
EXTRN	?Re_Init@nc_SoldierGameObj@@QAEXAAVnc_SoldierGameObjDef@@@Z:PROC ; nc_SoldierGameObj::Re_Init
EXTRN	?Find_Building@nc_BaseControllerClass@@QAEPAVnc_BuildingGameObj@@W4BuildingType@@@Z:PROC ; nc_BaseControllerClass::Find_Building
EXTRN	?Send_Purchase_Response@@YAXHH@Z:PROC		; Send_Purchase_Response
EXTRN	?Get_Merchandise_Information@nc_VendorClass@@SAXPAVnc_SoldierGameObj@@HHHAAIAAK@Z:PROC ; nc_VendorClass::Get_Merchandise_Information
;	COMDAT ??_C@_0EC@OCMBFMIK@?$FLPurchaseHook?$FN?5Purchase?5refused?5@
; File d:\source code\fds lib\new\fds_def.h
CONST	SEGMENT
??_C@_0EC@OCMBFMIK@?$FLPurchaseHook?$FN?5Purchase?5refused?5@ DB '[Purcha'
	DB	'seHook] Purchase refused in "%s". Code: %d; Purchaser %ls', 0aH
	DB	00H						; `string'
CONST	ENDS
;	COMDAT __real@4f800000
CONST	SEGMENT
__real@4f800000 DD 04f800000r			; 4.29497e+009
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzhook.cpp
CONST	ENDS
;	COMDAT ?Hook_PlayerPurchase@@YGXXZ
_TEXT	SEGMENT
tv720 = -64						; size = 2
_ResponseType$ = -64					; size = 4
_Request$ = -60						; size = 4
_packet$ = -56						; size = 4
tv717 = -52						; size = 4
$T67371 = -52						; size = 4
tv715 = -48						; size = 8
tv703 = -48						; size = 4
tv671 = -48						; size = 4
_value$67392 = -48					; size = 4
_value$67388 = -48					; size = 4
$T67384 = -48						; size = 4
_evt$ = -40						; size = 40
?Hook_PlayerPurchase@@YGXXZ PROC			; Hook_PlayerPurchase, COMDAT

; 918  : void __stdcall Hook_PlayerPurchase() {

	sub	esp, 64					; 00000040H
	push	ebx
	push	ebp
	push	esi
	push	edi

; 919  : 	nc_cPacket *packet;
; 920  : 	nc_cPurchaseRequestEvent *Request;
; 921  : 	_asm {
; 922  : 		mov Request, esi

	mov	DWORD PTR _Request$[esp+80], esi

; 923  : 		mov packet, edi

	mov	DWORD PTR _packet$[esp+80], edi

; 924  : 	}
; 925  : 	nc_cPlayer *pData = nc_cPlayerManager::Find_Player(Request->ID);

	mov	eax, DWORD PTR _Request$[esp+80]
	mov	ecx, DWORD PTR [eax+1716]
	push	ecx
	call	?Find_Player@nc_cPlayerManager@@SAPAVnc_cPlayer@@H@Z ; nc_cPlayerManager::Find_Player
	mov	ebx, eax

; 926  : 	if (!pData || !pData->Owner.Reference)

	xor	ebp, ebp
	add	esp, 4
	cmp	ebx, ebp
	je	$LN28@Hook_Playe@5
	cmp	DWORD PTR [ebx+20], ebp
	je	$LN28@Hook_Playe@5

; 929  : 		return;
; 930  : 	}
; 931  : 
; 932  : 	gzEventPlayerPurchase evt;
; 933  : 	evt.SetPlayer(pData);
; 934  : 	evt.m_base = nc_BaseControllerClass::Find_Base(pData->PlayerType.Get());

	lea	ecx, DWORD PTR [ebx+1900]
	mov	BYTE PTR _evt$[esp+92], 1
	mov	DWORD PTR _evt$[esp+96], ebx
	call	?Get@nc_IntDataSafeClass@@QAEHXZ	; nc_IntDataSafeClass::Get
	push	eax
	call	?Find_Base@nc_BaseControllerClass@@SAPAV1@H@Z ; nc_BaseControllerClass::Find_Base
	mov	DWORD PTR _evt$[esp+108], eax

; 935  : 	evt.m_originalCost = 0;
; 936  : 	evt.m_cost = 0;
; 937  : 	evt.m_presetId = 0;
; 938  : 	evt.SetInt(Request->Type);

	mov	eax, DWORD PTR _Request$[esp+84]
	mov	DWORD PTR _evt$[esp+112], ebp
	mov	DWORD PTR _evt$[esp+116], ebp
	mov	DWORD PTR _evt$[esp+120], ebp
	mov	edx, DWORD PTR [eax+1720]
	mov	DWORD PTR _evt$[esp+92], edx

; 939  : 	nc_VendorClass::Get_Merchandise_Information(pData->Owner.Reference->obj->As_SoldierGameObj(), Request->Type, Request->Item, Request->Alt_Id, evt.m_originalCost, evt.m_presetId);

	mov	ecx, DWORD PTR [ebx+20]
	mov	ecx, DWORD PTR [ecx+4]
	add	esp, 4
	lea	edx, DWORD PTR _evt$[esp+116]
	push	edx
	lea	edx, DWORD PTR _evt$[esp+112]
	push	edx
	mov	edx, DWORD PTR [eax+1728]
	push	edx
	mov	edx, DWORD PTR [eax+1724]
	mov	eax, DWORD PTR [eax+1720]
	push	edx
	mov	edx, DWORD PTR [ecx]
	push	eax
	mov	eax, DWORD PTR [edx+68]
	call	eax
	push	eax
	call	?Get_Merchandise_Information@nc_VendorClass@@SAXPAVnc_SoldierGameObj@@HHHAAIAAK@Z ; nc_VendorClass::Get_Merchandise_Information

; 940  : 	evt.m_originalCost *= (int)evt.m_base->OperationTimeFactor;

	fnstcw	WORD PTR tv720[esp+104]
	movzx	eax, WORD PTR tv720[esp+104]
	mov	ecx, DWORD PTR _evt$[esp+128]
	or	eax, 3072				; 00000c00H
	mov	DWORD PTR tv717[esp+104], eax
	fld	DWORD PTR [ecx+1716]
	add	esp, 24					; 00000018H
	fldcw	WORD PTR tv717[esp+80]

; 941  : 	evt.m_cost = evt.m_originalCost;
; 942  : 
; 943  : 	for (int i = 0; i < gzEventManager::m_list.Count(); i++)

	xor	esi, esi
	fistp	QWORD PTR tv715[esp+80]
	mov	eax, DWORD PTR tv715[esp+80]
	imul	eax, DWORD PTR _evt$[esp+108]
	fldcw	WORD PTR tv720[esp+80]
	cmp	DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12, ebp
	mov	DWORD PTR _evt$[esp+108], eax
	mov	DWORD PTR _evt$[esp+112], eax
	jle	SHORT $LN25@Hook_Playe@5
	npad	6
$LL27@Hook_Playe@5:

; 944  : 	{
; 945  : 		if ((gzEventManager::m_list[i]->GetEventType() & EVT_PLAYER) == EVT_PLAYER)

	mov	edx, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+4
	mov	ecx, DWORD PTR [edx+esi*4]
	test	BYTE PTR [ecx+16], 4
	je	SHORT $LN26@Hook_Playe@5

; 946  : 		{
; 947  : 			int ret = gzEventManager::m_list[i]->Player_Purchase(evt);

	mov	eax, DWORD PTR [ecx]
	mov	eax, DWORD PTR [eax+80]
	lea	edx, DWORD PTR _evt$[esp+80]
	push	edx
	call	eax

; 948  : 			if (!evt.CanContinue())

	cmp	BYTE PTR _evt$[esp+92], 0
	mov	edi, eax
	je	SHORT $LN78@Hook_Playe@5
$LN26@Hook_Playe@5:

; 941  : 	evt.m_cost = evt.m_originalCost;
; 942  : 
; 943  : 	for (int i = 0; i < gzEventManager::m_list.Count(); i++)

	add	esi, 1
	cmp	esi, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12
	jl	SHORT $LL27@Hook_Playe@5
$LN25@Hook_Playe@5:

; 958  : 				return;
; 959  : 			}
; 960  : 		}
; 961  : 	}
; 962  : 	int ResponseType = 0;
; 963  : 
; 964  : 	// Not enough credits
; 965  : 	if (pData->Money.Get() < evt.m_cost)

	lea	ecx, DWORD PTR [ebx+8]
	mov	DWORD PTR _ResponseType$[esp+80], ebp
	call	?Get@nc_FloatDataSafeClass@@QAEMXZ	; nc_FloatDataSafeClass::Get
	fild	DWORD PTR _evt$[esp+112]
	mov	ecx, DWORD PTR _evt$[esp+112]
	test	ecx, ecx
	jge	SHORT $LN86@Hook_Playe@5
	fadd	DWORD PTR __real@4f800000
$LN86@Hook_Playe@5:
	fcompp
	fnstsw	ax
	test	ah, 65					; 00000041H
	jne	SHORT $LN22@Hook_Playe@5

; 966  : 		ResponseType = 2;

	mov	DWORD PTR _ResponseType$[esp+80], 2
	jmp	$LN1@Hook_Playe@5
$LN78@Hook_Playe@5:

; 949  : 			{
; 950  : #ifdef DEVMSG
; 951  : 				gzConsole::Out("[PurchaseHook] Purchase refused in \"%s\". Code: %d; Purchaser %ls\n",
; 952  : 					gzEventManager::m_list[i]->Get_Name(),
; 953  : 					ret,
; 954  : 					pData->PlayerName.m_Buffer
; 955  : 				);

	mov	ecx, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+4
	mov	edx, DWORD PTR [ebx+1880]
	mov	ecx, DWORD PTR [ecx+esi*4]
	mov	eax, DWORD PTR [ecx]
	push	edx
	mov	edx, DWORD PTR [eax]
	push	edi
	call	edx
	push	eax
	push	OFFSET ??_C@_0EC@OCMBFMIK@?$FLPurchaseHook?$FN?5Purchase?5refused?5@
	call	?Out@gzConsole@@SAXPBDZZ		; gzConsole::Out

; 956  : #endif
; 957  : 				Send_Purchase_Response(pData->PlayerId, ret);

	mov	eax, DWORD PTR [ebx+1884]
	push	edi
	push	eax
	call	?Send_Purchase_Response@@YAXHH@Z	; Send_Purchase_Response
	add	esp, 24					; 00000018H
	pop	edi
	pop	esi
	pop	ebp
	pop	ebx

; 1032 : }

	add	esp, 64					; 00000040H
	ret	0
$LN22@Hook_Playe@5:

; 967  : 
; 968  : 	// Preset does not exist
; 969  : 	else if (evt.m_presetId != 0 && !nc_DefinitionMgrClass::Find_Definition(evt.m_presetId, true))

	mov	eax, DWORD PTR _evt$[esp+116]
	cmp	eax, ebp
	je	SHORT $LN84@Hook_Playe@5
	push	1
	push	eax
	call	?Find_Definition@nc_DefinitionMgrClass@@SAPAVnc_DefinitionClass@@K_N@Z ; nc_DefinitionMgrClass::Find_Definition
	add	esp, 8
	test	eax, eax
	jne	SHORT $LN84@Hook_Playe@5
$LN88@Hook_Playe@5:

; 970  : 		ResponseType = 4;

	mov	DWORD PTR _ResponseType$[esp+80], 4

; 971  : 
; 972  : 	else

	jmp	$LN1@Hook_Playe@5
$LN84@Hook_Playe@5:

; 973  : 	{
; 974  : 		nc_SoldierGameObj *Soldier = evt.GetPlayer()->Owner.Reference->obj->As_SoldierGameObj();

	mov	edx, DWORD PTR _evt$[esp+96]
	mov	eax, DWORD PTR [edx+20]
	mov	ecx, DWORD PTR [eax+4]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+68]
	call	eax

; 975  : 		nc_BuildingGameObj *vehFactory = evt.m_base->Find_Building(nc_VEHICLE_FACTORY);

	mov	ecx, DWORD PTR _evt$[esp+104]
	push	2
	mov	esi, eax
	call	?Find_Building@nc_BaseControllerClass@@QAEPAVnc_BuildingGameObj@@W4BuildingType@@@Z ; nc_BaseControllerClass::Find_Building

; 976  : 		switch (Request->Type)

	mov	ecx, DWORD PTR _Request$[esp+80]
	mov	edi, eax
	mov	eax, DWORD PTR [ecx+1720]
	cmp	eax, 6
	ja	$LN81@Hook_Playe@5
	jmp	DWORD PTR $LN89@Hook_Playe@5[eax*4]
$LN16@Hook_Playe@5:

; 977  : 		{
; 978  : 			case PURCHASE_INFANTRY:
; 979  : 			case PURCHASE_SECRET_INFANTRY:
; 980  : 				if (evt.m_base->Find_Building(nc_SOLDIER_FACTORY)->Destroyed)

	mov	ecx, DWORD PTR _evt$[esp+104]
	push	1
	call	?Find_Building@nc_BaseControllerClass@@QAEPAVnc_BuildingGameObj@@W4BuildingType@@@Z ; nc_BaseControllerClass::Find_Building
	cmp	BYTE PTR [eax+1912], 0
	je	SHORT $LN85@Hook_Playe@5
$LN83@Hook_Playe@5:

; 981  : 				{
; 982  : 					ResponseType = 3;

	mov	DWORD PTR _ResponseType$[esp+80], 3

; 983  : 					break;

	jmp	$LN1@Hook_Playe@5
$LN85@Hook_Playe@5:

; 984  : 				}
; 985  : 			case PURCHASE_FREE_INFANTRY:
; 986  : 				Soldier->Re_Init(*(nc_SoldierGameObjDef *)nc_DefinitionMgrClass::Find_Definition(evt.m_presetId, true));

	mov	edx, DWORD PTR _evt$[esp+116]
	push	1
	push	edx
	call	?Find_Definition@nc_DefinitionMgrClass@@SAPAVnc_DefinitionClass@@K_N@Z ; nc_DefinitionMgrClass::Find_Definition
	add	esp, 8
	push	eax
	mov	ecx, esi
	call	?Re_Init@nc_SoldierGameObj@@QAEXAAVnc_SoldierGameObjDef@@@Z ; nc_SoldierGameObj::Re_Init

; 987  : 				Soldier->Post_Re_Init();

	mov	eax, DWORD PTR [esi]
	mov	edx, DWORD PTR [eax+52]
	mov	ecx, esi
	call	edx

; 988  : 				break;

	jmp	$LN81@Hook_Playe@5
$LN13@Hook_Playe@5:

; 989  : 
; 990  : 			case PURCHASE_SECRET_VEHICLE:
; 991  : 				if (!vehFactory->As_VehicleFactoryGameObj())

	mov	eax, DWORD PTR [edi]
	mov	edx, DWORD PTR [eax+120]
	mov	ecx, edi
	call	edx
	test	eax, eax

; 992  : 				{
; 993  : 					ResponseType = 4;
; 994  : 					break;

	je	$LN88@Hook_Playe@5

; 995  : 				}
; 996  : 				if (cGame->IsLaddered)

	mov	eax, DWORD PTR ?cGame@@3AAPAVnc_cGameData@@A ; cGame
	mov	ecx, DWORD PTR [eax]
	cmp	BYTE PTR [ecx+15], 0

; 997  : 				{
; 998  : 					ResponseType = 4;
; 999  : 					break;

	jne	$LN88@Hook_Playe@5
$LN82@Hook_Playe@5:

; 1000 : 				}
; 1001 : 			case PURCHASE_VEHICLE:
; 1002 : 				if (!vehFactory || vehFactory->Destroyed || vehFactory->As_VehicleFactoryGameObj()->IsGenerating)

	cmp	edi, ebp
	je	SHORT $LN83@Hook_Playe@5
	cmp	BYTE PTR [edi+1912], 0
	jne	SHORT $LN83@Hook_Playe@5
	mov	edx, DWORD PTR [edi]
	mov	eax, DWORD PTR [edx+120]
	mov	ecx, edi
	call	eax
	cmp	BYTE PTR [eax+2224], 0
	jne	SHORT $LN83@Hook_Playe@5

; 1003 : 				{
; 1004 : 					ResponseType = 3;
; 1005 : 					break;
; 1006 : 				}
; 1007 : 				vehFactory->As_VehicleFactoryGameObj()->Request_Vehicle(evt.m_presetId, 5.0f, Soldier);

	fld	DWORD PTR __real@40a00000
	mov	edx, DWORD PTR [edi]
	mov	eax, DWORD PTR [edx+120]
	push	esi
	push	ecx
	mov	ecx, DWORD PTR _evt$[esp+124]
	fstp	DWORD PTR [esp]
	push	ecx
	mov	ecx, edi
	call	eax
	mov	ecx, eax
	call	?Request_Vehicle@nc_VehicleFactoryGameObj@@QAEXHMPAVnc_SoldierGameObj@@@Z ; nc_VehicleFactoryGameObj::Request_Vehicle

; 1008 : 				break;

	jmp	$LN81@Hook_Playe@5
$LN7@Hook_Playe@5:

; 1009 : 
; 1010 : 			case PURCHASE_POWERUP:
; 1011 : 				((nc_PowerUpGameObjDef *)nc_DefinitionMgrClass::Find_Definition(evt.m_presetId, true))->Grant(Soldier, NULL, true);

	mov	ecx, DWORD PTR _evt$[esp+116]
	push	1
	push	ebp
	push	esi
	push	1
	push	ecx
	call	?Find_Definition@nc_DefinitionMgrClass@@SAPAVnc_DefinitionClass@@K_N@Z ; nc_DefinitionMgrClass::Find_Definition
	add	esp, 8
	mov	ecx, eax
	call	?Grant@nc_PowerUpGameObjDef@@QAEXPAVnc_SmartGameObj@@PAVnc_PowerUpGameObj@@_N@Z ; nc_PowerUpGameObjDef::Grant

; 1012 : 				break;

	jmp	$LN81@Hook_Playe@5
$LN6@Hook_Playe@5:

; 1013 : 
; 1014 : 			case PURCHASE_REFILL:
; 1015 : 				for (int i = 1; i < Soldier->WeaponBag->Vector.Count(); i++)

	mov	eax, DWORD PTR [esi+1968]
	mov	edi, 1
	cmp	DWORD PTR [eax+20], edi
	jle	SHORT $LN3@Hook_Playe@5
$LL5@Hook_Playe@5:

; 1016 : 				{
; 1017 : 					if (Soldier->WeaponBag->Vector[i]->WeaponDef->CanRecieveGenericCnCAmmo)

	mov	edx, DWORD PTR [eax+8]
	mov	eax, DWORD PTR [edx+edi*4]
	mov	ecx, DWORD PTR [eax]
	cmp	BYTE PTR [ecx+61], 0
	je	SHORT $LN4@Hook_Playe@5
	mov	edx, DWORD PTR [esi+1968]
	mov	eax, DWORD PTR [edx+8]

; 1018 : 					{
; 1019 : 						Soldier->WeaponBag->Vector[i]->InventoryBullets = Soldier->WeaponBag->Vector[i]->WeaponDef->MaxInventoryRounds.Get();

	mov	ecx, DWORD PTR [eax+edi*4]
	mov	ecx, DWORD PTR [ecx]
	lea	ebp, DWORD PTR [eax+edi*4]
	add	ecx, 132				; 00000084H
	call	?Get@nc_IntDataSafeClass@@QAEHXZ	; nc_IntDataSafeClass::Get
	mov	DWORD PTR $T67371[esp+80], eax
	mov	eax, DWORD PTR [ebp]
	lea	edx, DWORD PTR $T67371[esp+80]
	push	edx
	add	eax, 40					; 00000028H
	push	eax
	call	?Set@nc_IntDataSafeClass@@QAG_NAAH@Z	; nc_IntDataSafeClass::Set
	mov	ecx, DWORD PTR [esi+1968]
	mov	edx, DWORD PTR [ecx+8]

; 1020 : 						Soldier->WeaponBag->Vector[i]->LoadedBullets = Soldier->WeaponBag->Vector[i]->WeaponDef->ClipSize.Get();

	mov	eax, DWORD PTR [edx+edi*4]
	mov	ecx, DWORD PTR [eax]
	lea	ebp, DWORD PTR [edx+edi*4]
	add	ecx, 116				; 00000074H
	call	?Get@nc_IntDataSafeClass@@QAEHXZ	; nc_IntDataSafeClass::Get
	mov	edx, DWORD PTR [ebp]
	lea	ecx, DWORD PTR $T67384[esp+80]
	push	ecx
	add	edx, 36					; 00000024H
	push	edx
	mov	DWORD PTR $T67384[esp+88], eax
	call	?Set@nc_IntDataSafeClass@@QAG_NAAH@Z	; nc_IntDataSafeClass::Set
	xor	ebp, ebp
$LN4@Hook_Playe@5:
	mov	eax, DWORD PTR [esi+1968]
	add	edi, 1
	cmp	edi, DWORD PTR [eax+20]
	jl	SHORT $LL5@Hook_Playe@5
$LN3@Hook_Playe@5:

; 1021 : 					}
; 1022 : 				}
; 1023 : 				Soldier->Defense.Health = Soldier->Defense.HealthMax;

	lea	ecx, DWORD PTR [esi+1844]
	call	?Get@nc_FloatDataSafeClass@@QAEMXZ	; nc_FloatDataSafeClass::Get
	fstp	DWORD PTR _value$67388[esp+80]
	lea	eax, DWORD PTR _value$67388[esp+80]
	push	eax
	lea	ecx, DWORD PTR [esi+1840]
	push	ecx
	call	?Set@nc_FloatDataSafeClass@@QAG_NAAM@Z	; nc_FloatDataSafeClass::Set

; 1024 : 				Soldier->Defense.ShieldStrength = Soldier->Defense.ShieldStrengthMax;

	lea	ecx, DWORD PTR [esi+1856]
	call	?Get@nc_FloatDataSafeClass@@QAEMXZ	; nc_FloatDataSafeClass::Get
	fstp	DWORD PTR _value$67392[esp+80]
	lea	edx, DWORD PTR _value$67392[esp+80]
	push	edx
	lea	eax, DWORD PTR [esi+1852]
	push	eax
	call	?Set@nc_FloatDataSafeClass@@QAG_NAAM@Z	; nc_FloatDataSafeClass::Set

; 1025 : 				Soldier->Set_Object_Dirty_Bit(nc_DB_OCCASIONAL,true);

	mov	edx, DWORD PTR [esi+8]
	mov	eax, DWORD PTR [edx+56]
	lea	ecx, DWORD PTR [esi+8]
	push	1
	push	3
	call	eax
$LN81@Hook_Playe@5:

; 1026 : 				break;
; 1027 : 		}
; 1028 : 		if (ResponseType == 0 && evt.m_cost > 0)

	mov	eax, DWORD PTR _evt$[esp+112]
	cmp	eax, ebp
	jbe	SHORT $LN1@Hook_Playe@5

; 1029 : 			pData->Increment_Money(-(float)evt.m_cost);

	test	eax, eax
	mov	edx, DWORD PTR [ebx]
	mov	DWORD PTR tv671[esp+80], eax
	fild	DWORD PTR tv671[esp+80]
	jge	SHORT $LN87@Hook_Playe@5
	fadd	DWORD PTR __real@4f800000
$LN87@Hook_Playe@5:
	mov	eax, DWORD PTR [edx+16]
	fchs
	push	ecx
	mov	ecx, ebx
	fstp	DWORD PTR [esp]
	call	eax
$LN1@Hook_Playe@5:

; 1030 : 	}
; 1031 : 	Send_Purchase_Response(Request->ID, ResponseType);

	mov	ecx, DWORD PTR _ResponseType$[esp+80]
	mov	edx, DWORD PTR _Request$[esp+80]
	mov	eax, DWORD PTR [edx+1716]
	push	ecx
	push	eax
	call	?Send_Purchase_Response@@YAXHH@Z	; Send_Purchase_Response
	add	esp, 8
	pop	edi
	pop	esi
	pop	ebp
	pop	ebx

; 1032 : }

	add	esp, 64					; 00000040H
	ret	0
$LN28@Hook_Playe@5:

; 927  : 	{
; 928  : 		Request->Set_Delete_Pending();

	mov	ecx, DWORD PTR _Request$[esp+80]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+44]
	call	eax
	pop	edi
	pop	esi
	pop	ebp
	pop	ebx

; 1032 : }

	add	esp, 64					; 00000040H
	ret	0
	npad	2
$LN89@Hook_Playe@5:
	DD	$LN16@Hook_Playe@5
	DD	$LN82@Hook_Playe@5
	DD	$LN85@Hook_Playe@5
	DD	$LN7@Hook_Playe@5
	DD	$LN6@Hook_Playe@5
	DD	$LN16@Hook_Playe@5
	DD	$LN13@Hook_Playe@5
?Hook_PlayerPurchase@@YGXXZ ENDP			; Hook_PlayerPurchase
_TEXT	ENDS
PUBLIC	??_C@_0CO@JCMEJGEK@?$FL?$CFs?$FN?5WOL?5Page?5from?5?$CFs?5refused?5by@ ; `string'
PUBLIC	??_C@_0N@BOMGOKPP@Proc_WOLPage?$AA@		; `string'
PUBLIC	?Proc_WOLPage@@YG_NPBD0@Z			; Proc_WOLPage
;	COMDAT ??_C@_0CO@JCMEJGEK@?$FL?$CFs?$FN?5WOL?5Page?5from?5?$CFs?5refused?5by@
; File d:\source code\nc lib\ncstring.h
CONST	SEGMENT
??_C@_0CO@JCMEJGEK@?$FL?$CFs?$FN?5WOL?5Page?5from?5?$CFs?5refused?5by@ DB '['
	DB	'%s] WOL Page from %s refused by class "%s".', 0aH, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0N@BOMGOKPP@Proc_WOLPage?$AA@
CONST	SEGMENT
??_C@_0N@BOMGOKPP@Proc_WOLPage?$AA@ DB 'Proc_WOLPage', 00H ; `string'
CONST	ENDS
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$?Proc_WOLPage@@YG_NPBD0@Z DD 0ffffffffH
	DD	FLAT:__unwindfunclet$?Proc_WOLPage@@YG_NPBD0@Z$0
__ehfuncinfo$?Proc_WOLPage@@YG_NPBD0@Z DD 019930522H
	DD	01H
	DD	FLAT:__unwindtable$?Proc_WOLPage@@YG_NPBD0@Z
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	01H
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzhook.cpp
xdata$x	ENDS
;	COMDAT ?Proc_WOLPage@@YG_NPBD0@Z
_TEXT	SEGMENT
_evt$ = -52						; size = 40
__$EHRec$ = -12						; size = 12
_sender$ = 8						; size = 4
_message$ = 12						; size = 4
?Proc_WOLPage@@YG_NPBD0@Z PROC				; Proc_WOLPage, COMDAT

; 1042 : {

	push	-1
	push	__ehhandler$?Proc_WOLPage@@YG_NPBD0@Z
	mov	eax, DWORD PTR fs:0
	push	eax
	mov	DWORD PTR fs:0, esp
	sub	esp, 40					; 00000028H
	push	ebx

; 1043 : 	gzEventNetWolPage evt;

	xor	ebx, ebx
	push	esi
	push	edi
	mov	BYTE PTR _evt$[esp+76], 1
	mov	DWORD PTR _evt$[esp+80], ebx
	mov	DWORD PTR _evt$[esp+84], ebx
	mov	DWORD PTR _evt$[esp+88], ebx
	mov	DWORD PTR _evt$[esp+92], ebx
	mov	DWORD PTR _evt$[esp+96], ebx
	mov	DWORD PTR _evt$[esp+100], ebx

; 1044 : 	evt.m_sender = sender;

	mov	edi, DWORD PTR _sender$[esp+60]
	push	edi
	lea	ecx, DWORD PTR _evt$[esp+84]
	mov	DWORD PTR __$EHRec$[esp+76], ebx
	call	??4ncString@@QAEAAV0@PBD@Z		; ncString::operator=

; 1045 : 	evt.m_message = message;

	mov	eax, DWORD PTR _message$[esp+60]
	push	eax
	lea	ecx, DWORD PTR _evt$[esp+96]
	call	??4ncString@@QAEAAV0@PBD@Z		; ncString::operator=

; 1046 : 	for (int i = 0; i < gzEventManager::m_list.Count(); i++)

	xor	esi, esi
	cmp	DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12, ebx
	jle	SHORT $LN3@Proc_WOLPa
	npad	12
$LL5@Proc_WOLPa:

; 1047 : 	{
; 1048 : 		if ((gzEventManager::m_list[i]->GetEventType() & EVT_NET) == EVT_NET)

	mov	ecx, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+4
	mov	ecx, DWORD PTR [ecx+esi*4]
	test	BYTE PTR [ecx+16], 8
	je	SHORT $LN4@Proc_WOLPa

; 1049 : 		{
; 1050 : 			gzEventManager::m_list[i]->Net_WolPage(evt);

	mov	edx, DWORD PTR [ecx]
	mov	edx, DWORD PTR [edx+112]
	lea	eax, DWORD PTR _evt$[esp+64]
	push	eax
	call	edx

; 1051 : 			if (!evt.CanContinue())

	cmp	BYTE PTR _evt$[esp+76], bl
	je	$LN44@Proc_WOLPa
$LN4@Proc_WOLPa:

; 1046 : 	for (int i = 0; i < gzEventManager::m_list.Count(); i++)

	add	esi, 1
	cmp	esi, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+12
	jl	SHORT $LL5@Proc_WOLPa
$LN3@Proc_WOLPa:

; 1061 : 			}
; 1062 : 		}
; 1063 : 	}
; 1064 : 	return true;

	cmp	DWORD PTR _evt$[esp+80], ebx
	mov	DWORD PTR __$EHRec$[esp+72], -1
	je	SHORT $LN37@Proc_WOLPa
	push	OFFSET ??_C@_0BG@IMAMDEJB@ncString?3?3Free_String?$AA@
	push	216					; 000000d8H
	push	OFFSET ??_C@_0CB@MAJIAFJL@d?3?2source?5code?2nc?5lib?2ncString?4h@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	ecx, DWORD PTR _evt$[esp+92]
	push	ecx
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
$LN37@Proc_WOLPa:
	cmp	DWORD PTR _evt$[esp+92], ebx
	mov	DWORD PTR _evt$[esp+80], ebx
	mov	DWORD PTR _evt$[esp+84], ebx
	mov	DWORD PTR _evt$[esp+88], ebx
	je	SHORT $LN42@Proc_WOLPa
	push	OFFSET ??_C@_0BG@IMAMDEJB@ncString?3?3Free_String?$AA@
	push	216					; 000000d8H
	push	OFFSET ??_C@_0CB@MAJIAFJL@d?3?2source?5code?2nc?5lib?2ncString?4h@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	edx, DWORD PTR _evt$[esp+104]
	push	edx
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
$LN42@Proc_WOLPa:
	pop	edi
	pop	esi
	mov	al, 1
	pop	ebx

; 1065 : }

	mov	ecx, DWORD PTR __$EHRec$[esp+52]
	mov	DWORD PTR fs:0, ecx
	add	esp, 52					; 00000034H
	ret	8
$LN44@Proc_WOLPa:

; 1052 : 			{
; 1053 : #if ISDEV()
; 1054 : 				gzConsole::Out("[%s] WOL Page from %s refused by class \"%s\".\n",
; 1055 : 					__FUNCTION__,
; 1056 : 					sender,
; 1057 : 					gzEventManager::m_list[i]->Get_Name()
; 1058 : 				);

	mov	eax, DWORD PTR ?m_list@gzEventManager@@2V?$ncDynamicVector@PAVgzEvtHandler@@@@A+4
	mov	ecx, DWORD PTR [eax+esi*4]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx]
	call	eax
	push	eax
	push	edi
	push	OFFSET ??_C@_0N@BOMGOKPP@Proc_WOLPage?$AA@
	push	OFFSET ??_C@_0CO@JCMEJGEK@?$FL?$CFs?$FN?5WOL?5Page?5from?5?$CFs?5refused?5by@
	call	?Out@gzConsole@@SAXPBDZZ		; gzConsole::Out
	add	esp, 16					; 00000010H

; 1059 : #endif
; 1060 : 				return false;

	lea	ecx, DWORD PTR _evt$[esp+64]
	mov	DWORD PTR __$EHRec$[esp+72], -1
	call	??1gzEventNetWolPage@@QAE@XZ		; gzEventNetWolPage::~gzEventNetWolPage

; 1065 : }

	mov	ecx, DWORD PTR __$EHRec$[esp+64]
	pop	edi
	pop	esi
	xor	al, al
	pop	ebx
	mov	DWORD PTR fs:0, ecx
	add	esp, 52					; 00000034H
	ret	8
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$?Proc_WOLPage@@YG_NPBD0@Z$0:
	lea	ecx, DWORD PTR _evt$[ebp]
	jmp	??1gzEventNetWolPage@@QAE@XZ		; gzEventNetWolPage::~gzEventNetWolPage
__ehhandler$?Proc_WOLPage@@YG_NPBD0@Z:
	mov	eax, OFFSET __ehfuncinfo$?Proc_WOLPage@@YG_NPBD0@Z
	jmp	___CxxFrameHandler3
text$x	ENDS
?Proc_WOLPage@@YG_NPBD0@Z ENDP				; Proc_WOLPage
PUBLIC	?Hook_WOLPage@@YAXXZ				; Hook_WOLPage
; Function compile flags: /Odtpy
;	COMDAT ?Hook_WOLPage@@YAXXZ
_TEXT	SEGMENT
?Hook_WOLPage@@YAXXZ PROC				; Hook_WOLPage, COMDAT

; 1068 : 	_asm {
; 1069 : 		mov eax, [esp+0xC]

	mov	eax, DWORD PTR [esp+12]

; 1070 : 		add eax, 0x24

	add	eax, 36					; 00000024H

; 1071 : 		push [esp+0x10]

	push	DWORD PTR [esp+16]

; 1072 : 		push eax

	push	eax

; 1073 : 		call Proc_WOLPage

	call	?Proc_WOLPage@@YG_NPBD0@Z		; Proc_WOLPage

; 1074 : 		test al, al

	test	al, al

; 1075 : 		jz block_page

	je	SHORT $block_page$58376

; 1076 : 		sub esp, 0xC

	sub	esp, 12					; 0000000cH

; 1077 : 		push esi

	push	esi

; 1078 : 		mov esi, [esp+0x14]

	mov	esi, DWORD PTR [esp+20]

; 1079 : 		mov eax, 0x4C1E54

	mov	eax, 4988500				; 004c1e54H

; 1080 : 		jmp eax

	jmp	eax
$block_page$58376:

; 1081 : block_page:
; 1082 : 		xor eax, eax

	xor	eax, eax

; 1083 : 		retn 0x10

	ret	16					; 00000010H
?Hook_WOLPage@@YAXXZ ENDP				; Hook_WOLPage
_TEXT	ENDS
PUBLIC	??_7?$ncDynamicVector@PAVHookBase@@@@6B@	; ncDynamicVector<HookBase *>::`vftable'
PUBLIC	??0?$ncDynamicVector@PAVHookBase@@@@QAE@XZ	; ncDynamicVector<HookBase *>::ncDynamicVector<HookBase *>
PUBLIC	??_R4?$ncDynamicVector@PAVHookBase@@@@6B@	; ncDynamicVector<HookBase *>::`RTTI Complete Object Locator'
PUBLIC	??_R0?AV?$ncDynamicVector@PAVHookBase@@@@@8	; ncDynamicVector<HookBase *> `RTTI Type Descriptor'
PUBLIC	??_R3?$ncDynamicVector@PAVHookBase@@@@8		; ncDynamicVector<HookBase *>::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2?$ncDynamicVector@PAVHookBase@@@@8		; ncDynamicVector<HookBase *>::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@?$ncDynamicVector@PAVHookBase@@@@8 ; ncDynamicVector<HookBase *>::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?Clear@?$ncDynamicVector@PAVHookBase@@@@UAEXXZ	; ncDynamicVector<HookBase *>::Clear
PUBLIC	?Resize@?$ncDynamicVector@PAVHookBase@@@@UAE_NH@Z ; ncDynamicVector<HookBase *>::Resize
PUBLIC	?Insert@?$ncDynamicVector@PAVHookBase@@@@UAEXHABQAVHookBase@@@Z ; ncDynamicVector<HookBase *>::Insert
EXTRN	??_E?$ncDynamicVector@PAVHookBase@@@@UAEPAXI@Z:PROC ; ncDynamicVector<HookBase *>::`vector deleting destructor'
;	COMDAT ??_R1A@?0A@EA@?$ncDynamicVector@PAVHookBase@@@@8
; File d:\source code\nc lib\ncvector.h
rdata$r	SEGMENT
??_R1A@?0A@EA@?$ncDynamicVector@PAVHookBase@@@@8 DD FLAT:??_R0?AV?$ncDynamicVector@PAVHookBase@@@@@8 ; ncDynamicVector<HookBase *>::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3?$ncDynamicVector@PAVHookBase@@@@8
rdata$r	ENDS
;	COMDAT ??_R2?$ncDynamicVector@PAVHookBase@@@@8
rdata$r	SEGMENT
??_R2?$ncDynamicVector@PAVHookBase@@@@8 DD FLAT:??_R1A@?0A@EA@?$ncDynamicVector@PAVHookBase@@@@8 ; ncDynamicVector<HookBase *>::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@?$ncVector@PAVHookBase@@@@8
rdata$r	ENDS
;	COMDAT ??_R3?$ncDynamicVector@PAVHookBase@@@@8
rdata$r	SEGMENT
??_R3?$ncDynamicVector@PAVHookBase@@@@8 DD 00H		; ncDynamicVector<HookBase *>::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2?$ncDynamicVector@PAVHookBase@@@@8
rdata$r	ENDS
;	COMDAT ??_R0?AV?$ncDynamicVector@PAVHookBase@@@@@8
_DATA	SEGMENT
??_R0?AV?$ncDynamicVector@PAVHookBase@@@@@8 DD FLAT:??_7type_info@@6B@ ; ncDynamicVector<HookBase *> `RTTI Type Descriptor'
	DD	00H
	DB	'.?AV?$ncDynamicVector@PAVHookBase@@@@', 00H
_DATA	ENDS
;	COMDAT ??_R4?$ncDynamicVector@PAVHookBase@@@@6B@
rdata$r	SEGMENT
??_R4?$ncDynamicVector@PAVHookBase@@@@6B@ DD 00H	; ncDynamicVector<HookBase *>::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AV?$ncDynamicVector@PAVHookBase@@@@@8
	DD	FLAT:??_R3?$ncDynamicVector@PAVHookBase@@@@8
rdata$r	ENDS
;	COMDAT ??_7?$ncDynamicVector@PAVHookBase@@@@6B@
CONST	SEGMENT
??_7?$ncDynamicVector@PAVHookBase@@@@6B@ DD FLAT:??_R4?$ncDynamicVector@PAVHookBase@@@@6B@ ; ncDynamicVector<HookBase *>::`vftable'
	DD	FLAT:??_E?$ncDynamicVector@PAVHookBase@@@@UAEPAXI@Z
	DD	FLAT:?Clear@?$ncDynamicVector@PAVHookBase@@@@UAEXXZ
	DD	FLAT:?Resize@?$ncDynamicVector@PAVHookBase@@@@UAE_NH@Z
	DD	FLAT:?Add@?$ncDynamicVector@PAVHookBase@@@@UAEXABQAVHookBase@@@Z
	DD	FLAT:?Insert@?$ncDynamicVector@PAVHookBase@@@@UAEXHABQAVHookBase@@@Z
	DD	FLAT:?Delete@?$ncDynamicVector@PAVHookBase@@@@UAEXH@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0?$ncDynamicVector@PAVHookBase@@@@QAE@XZ
_TEXT	SEGMENT
??0?$ncDynamicVector@PAVHookBase@@@@QAE@XZ PROC		; ncDynamicVector<HookBase *>::ncDynamicVector<HookBase *>, COMDAT
; _this$ = ecx

; 92   : 	{

	mov	eax, ecx
	xor	ecx, ecx
	mov	DWORD PTR [eax+8], ecx
	mov	DWORD PTR [eax+4], ecx
	mov	DWORD PTR [eax], OFFSET ??_7?$ncDynamicVector@PAVHookBase@@@@6B@

; 93   : 		this->m_Items = 0;

	mov	DWORD PTR [eax+12], ecx

; 94   : 	}

	ret	0
??0?$ncDynamicVector@PAVHookBase@@@@QAE@XZ ENDP		; ncDynamicVector<HookBase *>::ncDynamicVector<HookBase *>
_TEXT	ENDS
PUBLIC	??_C@_0CK@KJOLMCI@ncDynamicVector?$DMclass?5HookBase?5?$CK@ ; `string'
EXTRN	_memcpy:PROC
;	COMDAT ??_C@_0CK@KJOLMCI@ncDynamicVector?$DMclass?5HookBase?5?$CK@
CONST	SEGMENT
??_C@_0CK@KJOLMCI@ncDynamicVector?$DMclass?5HookBase?5?$CK@ DB 'ncDynamic'
	DB	'Vector<class HookBase *>::Resize', 00H	; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?Resize@?$ncDynamicVector@PAVHookBase@@@@UAE_NH@Z
_TEXT	SEGMENT
_newSize$ = 8						; size = 4
?Resize@?$ncDynamicVector@PAVHookBase@@@@UAE_NH@Z PROC	; ncDynamicVector<HookBase *>::Resize, COMDAT
; _this$ = ecx

; 116  : 	{

	push	esi
	push	edi

; 117  : 		if (newSize > 0)

	mov	edi, DWORD PTR _newSize$[esp+4]
	test	edi, edi
	mov	esi, ecx
	jle	SHORT $LN3@Resize@3
	push	ebx

; 118  : 		{
; 119  : 			T *newVec = new T[newSize];

	push	OFFSET ??_C@_0CK@KJOLMCI@ncDynamicVector?$DMclass?5HookBase?5?$CK@
	push	119					; 00000077H
	push	OFFSET ??_C@_0CB@BOFIHJED@d?3?2source?5code?2nc?5lib?2ncVector?4h@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	xor	ecx, ecx
	mov	eax, edi
	mov	edx, 4
	mul	edx
	seto	cl
	neg	ecx
	or	ecx, eax
	push	ecx
	call	??_U@YAPAXI@Z				; operator new[]
	mov	ebx, eax

; 120  : 			if (this->m_Vector != NULL)

	mov	eax, DWORD PTR [esi+4]
	add	esp, 16					; 00000010H
	test	eax, eax
	je	SHORT $LN11@Resize@3

; 121  : 			{
; 122  : 				int allocCount = (this->m_Length > newSize) ? newSize : this->m_Length;

	mov	ecx, DWORD PTR [esi+8]
	cmp	ecx, edi
	jle	SHORT $LN8@Resize@3
	mov	ecx, edi
$LN8@Resize@3:

; 123  : 				memcpy(newVec, this->m_Vector, allocCount * sizeof(T));

	add	ecx, ecx
	add	ecx, ecx
	push	ecx
	push	eax
	push	ebx
	call	_memcpy

; 124  : 				delete [] this->m_Vector;

	push	OFFSET ??_C@_0CK@KJOLMCI@ncDynamicVector?$DMclass?5HookBase?5?$CK@
	push	124					; 0000007cH
	push	OFFSET ??_C@_0CB@BOFIHJED@d?3?2source?5code?2nc?5lib?2ncVector?4h@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	edx, DWORD PTR [esi+4]
	push	edx
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 28					; 0000001cH
$LN11@Resize@3:

; 125  : 			}
; 126  : 			if (this->m_Items > newSize)

	cmp	DWORD PTR [esi+12], edi
	jle	SHORT $LN1@Resize@3

; 127  : 				this->m_Items = newSize;

	mov	DWORD PTR [esi+12], edi
$LN1@Resize@3:

; 128  : 			this->m_Length = newSize;
; 129  : 			this->m_Vector = newVec;

	mov	DWORD PTR [esi+4], ebx
	pop	ebx
	mov	DWORD PTR [esi+8], edi
	pop	edi

; 130  : 			return true;

	mov	al, 1
	pop	esi

; 133  : 	}

	ret	4
$LN3@Resize@3:
	pop	edi

; 131  : 		}
; 132  : 		return false;

	xor	al, al
	pop	esi

; 133  : 	}

	ret	4
?Resize@?$ncDynamicVector@PAVHookBase@@@@UAE_NH@Z ENDP	; ncDynamicVector<HookBase *>::Resize
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Insert@?$ncDynamicVector@PAVHookBase@@@@UAEXHABQAVHookBase@@@Z
_TEXT	SEGMENT
_Index$ = 8						; size = 4
_object$ = 12						; size = 4
?Insert@?$ncDynamicVector@PAVHookBase@@@@UAEXHABQAVHookBase@@@Z PROC ; ncDynamicVector<HookBase *>::Insert, COMDAT
; _this$ = ecx

; 143  : 	{

	push	esi
	push	edi

; 144  : 		if (Index < 0)

	mov	edi, DWORD PTR _Index$[esp+4]
	test	edi, edi
	mov	esi, ecx
	jl	SHORT $LN1@Insert

; 145  : 			return;
; 146  : 		else if (Index > this->m_Length)

	mov	eax, DWORD PTR [esi+8]
	cmp	edi, eax
	jle	SHORT $LN3@Insert

; 147  : 			this->Add(object);

	mov	ecx, DWORD PTR _object$[esp+4]
	mov	eax, DWORD PTR [esi]
	mov	edx, DWORD PTR [eax+12]
	push	ecx
	mov	ecx, esi
	call	edx
	pop	edi
	pop	esi

; 153  : 		}
; 154  : 	}

	ret	8
$LN3@Insert:

; 148  : 		else if (this->Resize(this->m_Length +1))

	mov	edx, DWORD PTR [esi]
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	call	eax
	test	al, al
	je	SHORT $LN1@Insert

; 149  : 		{
; 150  : 			memmove(&this->m_Vector[Index +1], &this->m_Vector[Index], (this->m_Length - Index -1) * sizeof(T));

	mov	ecx, DWORD PTR [esi+4]
	mov	edx, DWORD PTR [esi+8]
	lea	eax, DWORD PTR [ecx+edi*4]
	sub	edx, edi
	lea	ecx, DWORD PTR [edx*4-4]
	push	ecx
	push	eax
	add	eax, 4
	push	eax
	call	_memmove

; 151  : 			this->m_Vector[Index] = object;

	mov	eax, DWORD PTR _object$[esp+16]
	mov	ecx, DWORD PTR [eax]
	mov	edx, DWORD PTR [esi+4]
	add	esp, 12					; 0000000cH
	mov	DWORD PTR [edx+edi*4], ecx

; 152  : 			this->m_Items++;

	add	DWORD PTR [esi+12], 1
$LN1@Insert:
	pop	edi
	pop	esi

; 153  : 		}
; 154  : 	}

	ret	8
?Insert@?$ncDynamicVector@PAVHookBase@@@@UAEXHABQAVHookBase@@@Z ENDP ; ncDynamicVector<HookBase *>::Insert
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Clear@?$ncDynamicVector@PAVHookBase@@@@UAEXXZ
_TEXT	SEGMENT
?Clear@?$ncDynamicVector@PAVHookBase@@@@UAEXXZ PROC	; ncDynamicVector<HookBase *>::Clear, COMDAT
; _this$ = ecx

; 107  : 	{

	push	esi
	push	edi
	mov	esi, ecx

; 108  : 		this->ncVector<T>::Clear();

	xor	edi, edi
	cmp	DWORD PTR [esi+4], edi
	je	SHORT $LN8@Clear@2
	push	OFFSET ??_C@_0CC@FAGGMAID@ncVector?$DMclass?5HookBase?5?$CK?$DO?3?3Clea@
	push	54					; 00000036H
	push	OFFSET ??_C@_0CB@BOFIHJED@d?3?2source?5code?2nc?5lib?2ncVector?4h@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	eax, DWORD PTR [esi+4]
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
	mov	DWORD PTR [esi+4], edi
$LN8@Clear@2:

; 109  : 		this->m_Items = 0;

	mov	DWORD PTR [esi+12], edi
	mov	DWORD PTR [esi+8], edi
	pop	edi
	pop	esi

; 110  : 	}

	ret	0
?Clear@?$ncDynamicVector@PAVHookBase@@@@UAEXXZ ENDP	; ncDynamicVector<HookBase *>::Clear
_TEXT	ENDS
PUBLIC	??1?$ncDynamicVector@PAVHookBase@@@@UAE@XZ	; ncDynamicVector<HookBase *>::~ncDynamicVector<HookBase *>
; Function compile flags: /Ogtpy
;	COMDAT ??1?$ncDynamicVector@PAVHookBase@@@@UAE@XZ
_TEXT	SEGMENT
??1?$ncDynamicVector@PAVHookBase@@@@UAE@XZ PROC		; ncDynamicVector<HookBase *>::~ncDynamicVector<HookBase *>, COMDAT
; _this$ = ecx

; 103  : 	{

	push	esi
	mov	esi, ecx
	push	edi

; 104  : 		this->m_Items = 0;

	xor	edi, edi

; 105  : 	}

	cmp	DWORD PTR [esi+4], edi
	mov	DWORD PTR [esi+12], edi
	mov	DWORD PTR [esi], OFFSET ??_7?$ncVector@PAVHookBase@@@@6B@
	je	SHORT $LN11@ncDynamicV
	push	OFFSET ??_C@_0CC@FAGGMAID@ncVector?$DMclass?5HookBase?5?$CK?$DO?3?3Clea@
	push	54					; 00000036H
	push	OFFSET ??_C@_0CB@BOFIHJED@d?3?2source?5code?2nc?5lib?2ncVector?4h@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	eax, DWORD PTR [esi+4]
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
	mov	DWORD PTR [esi+4], edi
$LN11@ncDynamicV:
	mov	DWORD PTR [esi+8], edi
	pop	edi
	pop	esi
	ret	0
??1?$ncDynamicVector@PAVHookBase@@@@UAE@XZ ENDP		; ncDynamicVector<HookBase *>::~ncDynamicVector<HookBase *>
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ??_G?$ncDynamicVector@PAVHookBase@@@@UAEPAXI@Z
_TEXT	SEGMENT
___flags$ = 8						; size = 4
??_G?$ncDynamicVector@PAVHookBase@@@@UAEPAXI@Z PROC	; ncDynamicVector<HookBase *>::`scalar deleting destructor', COMDAT
; _this$ = ecx
	push	esi
	mov	esi, ecx
	cmp	DWORD PTR [esi+4], 0
	mov	DWORD PTR [esi+12], 0
	mov	DWORD PTR [esi], OFFSET ??_7?$ncVector@PAVHookBase@@@@6B@
	je	SHORT $LN9@scalar@7
	push	OFFSET ??_C@_0CC@FAGGMAID@ncVector?$DMclass?5HookBase?5?$CK?$DO?3?3Clea@
	push	54					; 00000036H
	push	OFFSET ??_C@_0CB@BOFIHJED@d?3?2source?5code?2nc?5lib?2ncVector?4h@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	eax, DWORD PTR [esi+4]
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
	mov	DWORD PTR [esi+4], 0
$LN9@scalar@7:
	test	BYTE PTR ___flags$[esp], 1
	mov	DWORD PTR [esi+8], 0
	je	SHORT $LN14@scalar@7
	push	esi
	call	??3@YAXPAX@Z				; operator delete
	add	esp, 4
$LN14@scalar@7:
	mov	eax, esi
	pop	esi
	ret	4
??_G?$ncDynamicVector@PAVHookBase@@@@UAEPAXI@Z ENDP	; ncDynamicVector<HookBase *>::`scalar deleting destructor'
_TEXT	ENDS
PUBLIC	?m_list@gzHookManager@@2V?$ncDynamicVector@PAVHookBase@@@@A ; gzHookManager::m_list
EXTRN	_atexit:PROC
_DATA	SEGMENT
?m_list@gzHookManager@@2V?$ncDynamicVector@PAVHookBase@@@@A DD FLAT:??_7?$ncDynamicVector@PAVHookBase@@@@6B@ ; gzHookManager::m_list
	DB	8 DUP(00H)
	DD	00H
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzhook.cpp
_DATA	ENDS
;	COMDAT ??__E?m_list@gzHookManager@@2V?$ncDynamicVector@PAVHookBase@@@@A@@YAXXZ
text$yc	SEGMENT
??__E?m_list@gzHookManager@@2V?$ncDynamicVector@PAVHookBase@@@@A@@YAXXZ PROC ; `dynamic initializer for 'gzHookManager::m_list'', COMDAT

; 12   : ncDynamicVector<HookBase *> gzHookManager::m_list;

	push	OFFSET ??__F?m_list@gzHookManager@@2V?$ncDynamicVector@PAVHookBase@@@@A@@YAXXZ ; `dynamic atexit destructor for 'gzHookManager::m_list''
	call	_atexit
	pop	ecx
	ret	0
??__E?m_list@gzHookManager@@2V?$ncDynamicVector@PAVHookBase@@@@A@@YAXXZ ENDP ; `dynamic initializer for 'gzHookManager::m_list''
text$yc	ENDS
PUBLIC	??_C@_0BC@GPMGCMBI@Level?5loaded?5hook?$AA@	; `string'
;	COMDAT ??_C@_0BC@GPMGCMBI@Level?5loaded?5hook?$AA@
CONST	SEGMENT
??_C@_0BC@GPMGCMBI@Level?5loaded?5hook?$AA@ DB 'Level loaded hook', 00H ; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Ellh@@YAXXZ
text$yc	SEGMENT
??__Ellh@@YAXXZ PROC					; `dynamic initializer for 'llh'', COMDAT

; 35   : HookCallClass llh("Level loaded hook", 0x40244B, &Hook_LevelLoaded);

	push	OFFSET ?Hook_LevelLoaded@@YGXXZ		; Hook_LevelLoaded
	push	4203595					; 0040244bH
	push	OFFSET ??_C@_0BC@GPMGCMBI@Level?5loaded?5hook?$AA@
	mov	ecx, OFFSET ?llh@@3VHookCallClass@@A	; llh
	call	??0HookCallClass@@QAE@PBDKPAX@Z		; HookCallClass::HookCallClass
	push	OFFSET ??__Fllh@@YAXXZ			; `dynamic atexit destructor for 'llh''
	call	_atexit
	pop	ecx
	ret	0
??__Ellh@@YAXXZ ENDP					; `dynamic initializer for 'llh''
text$yc	ENDS
PUBLIC	??_C@_0P@FPDGKCCO@Game?5over?5hook?$AA@		; `string'
;	COMDAT ??_C@_0P@FPDGKCCO@Game?5over?5hook?$AA@
CONST	SEGMENT
??_C@_0P@FPDGKCCO@Game?5over?5hook?$AA@ DB 'Game over hook', 00H ; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Ehgo@@YAXXZ
text$yc	SEGMENT
??__Ehgo@@YAXXZ PROC					; `dynamic initializer for 'hgo'', COMDAT

; 59   : HookJumpClass hgo("Game over hook", 0x4749B0, &Hook_GameOver);

	push	OFFSET ?Hook_GameOver@@YAXXZ		; Hook_GameOver
	push	4671920					; 004749b0H
	push	OFFSET ??_C@_0P@FPDGKCCO@Game?5over?5hook?$AA@
	mov	ecx, OFFSET ?hgo@@3VHookJumpClass@@A	; hgo
	call	??0HookJumpClass@@QAE@PBDKPAX@Z		; HookJumpClass::HookJumpClass
	push	OFFSET ??__Fhgo@@YAXXZ			; `dynamic atexit destructor for 'hgo''
	call	_atexit
	pop	ecx
	ret	0
??__Ehgo@@YAXXZ ENDP					; `dynamic initializer for 'hgo''
text$yc	ENDS
PUBLIC	??_C@_0BC@CGOGKKOH@Frame?5update?5hook?$AA@	; `string'
;	COMDAT ??_C@_0BC@CGOGKKOH@Frame?5update?5hook?$AA@
CONST	SEGMENT
??_C@_0BC@CGOGKKOH@Frame?5update?5hook?$AA@ DB 'Frame update hook', 00H ; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Efuh@@YAXXZ
text$yc	SEGMENT
??__Efuh@@YAXXZ PROC					; `dynamic initializer for 'fuh'', COMDAT

; 72   : HookCallClass fuh("Frame update hook", 0x43B9CD, &Hook_FrameUpdate);

	push	OFFSET ?Hook_FrameUpdate@@YGXXZ		; Hook_FrameUpdate
	push	4438477					; 0043b9cdH
	push	OFFSET ??_C@_0BC@CGOGKKOH@Frame?5update?5hook?$AA@
	mov	ecx, OFFSET ?fuh@@3VHookCallClass@@A	; fuh
	call	??0HookCallClass@@QAE@PBDKPAX@Z		; HookCallClass::HookCallClass
	push	OFFSET ??__Ffuh@@YAXXZ			; `dynamic atexit destructor for 'fuh''
	call	_atexit
	pop	ecx
	ret	0
??__Efuh@@YAXXZ ENDP					; `dynamic initializer for 'fuh''
text$yc	ENDS
PUBLIC	??_C@_0CC@IGMECCDH@Object?5create?5hook?5?$FLID?$FN?5?$FLreplace@ ; `string'
;	COMDAT ??_C@_0CC@IGMECCDH@Object?5create?5hook?5?$FLID?$FN?5?$FLreplace@
CONST	SEGMENT
??_C@_0CC@IGMECCDH@Object?5create?5hook?5?$FLID?$FN?5?$FLreplace@ DB 'Obj'
	DB	'ect create hook [ID] [replace]', 00H	; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Ecobih@@YAXXZ
text$yc	SEGMENT
??__Ecobih@@YAXXZ PROC					; `dynamic initializer for 'cobih'', COMDAT

; 116  : HookJumpClass cobih("Object create hook [ID] [replace]", 0x6C5C30, &Hook_CreateObjectByID);

	push	OFFSET ?Hook_CreateObjectByID@@YAXK@Z	; Hook_CreateObjectByID
	push	7101488					; 006c5c30H
	push	OFFSET ??_C@_0CC@IGMECCDH@Object?5create?5hook?5?$FLID?$FN?5?$FLreplace@
	mov	ecx, OFFSET ?cobih@@3VHookJumpClass@@A	; cobih
	call	??0HookJumpClass@@QAE@PBDKPAX@Z		; HookJumpClass::HookJumpClass
	push	OFFSET ??__Fcobih@@YAXXZ		; `dynamic atexit destructor for 'cobih''
	call	_atexit
	pop	ecx
	ret	0
??__Ecobih@@YAXXZ ENDP					; `dynamic initializer for 'cobih''
text$yc	ENDS
PUBLIC	??_C@_0CE@BEEGBPHE@Object?5create?5hook?5?$FLName?$FN?5?$FLrepla@ ; `string'
;	COMDAT ??_C@_0CE@BEEGBPHE@Object?5create?5hook?5?$FLName?$FN?5?$FLrepla@
CONST	SEGMENT
??_C@_0CE@BEEGBPHE@Object?5create?5hook?5?$FLName?$FN?5?$FLrepla@ DB 'Obj'
	DB	'ect create hook [Name] [replace]', 00H	; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Ecobpnh@@YAXXZ
text$yc	SEGMENT
??__Ecobpnh@@YAXXZ PROC					; `dynamic initializer for 'cobpnh'', COMDAT

; 152  : HookJumpClass cobpnh("Object create hook [Name] [replace]", 0x6C5CC0, &Hook_CreateObjectByPresetName);

	push	OFFSET ?Hook_CreateObjectByPresetName@@YAXPBD@Z ; Hook_CreateObjectByPresetName
	push	7101632					; 006c5cc0H
	push	OFFSET ??_C@_0CE@BEEGBPHE@Object?5create?5hook?5?$FLName?$FN?5?$FLrepla@
	mov	ecx, OFFSET ?cobpnh@@3VHookJumpClass@@A	; cobpnh
	call	??0HookJumpClass@@QAE@PBDKPAX@Z		; HookJumpClass::HookJumpClass
	push	OFFSET ??__Fcobpnh@@YAXXZ		; `dynamic atexit destructor for 'cobpnh''
	call	_atexit
	pop	ecx
	ret	0
??__Ecobpnh@@YAXXZ ENDP					; `dynamic initializer for 'cobpnh''
text$yc	ENDS
PUBLIC	??_C@_0BD@PAOFKDEG@Server?5damage?5hook?$AA@	; `string'
;	COMDAT ??_C@_0BD@PAOFKDEG@Server?5damage?5hook?$AA@
CONST	SEGMENT
??_C@_0BD@PAOFKDEG@Server?5damage?5hook?$AA@ DB 'Server damage hook', 00H ; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Esdh@@YAXXZ
text$yc	SEGMENT
??__Esdh@@YAXXZ PROC					; `dynamic initializer for 'sdh'', COMDAT

; 206  : HookJumpClass sdh("Server damage hook", 0x6D8DC0, &Hook_ServerDamage);

	push	OFFSET ?Hook_ServerDamage@@YAXXZ	; Hook_ServerDamage
	push	7179712					; 006d8dc0H
	push	OFFSET ??_C@_0BD@PAOFKDEG@Server?5damage?5hook?$AA@
	mov	ecx, OFFSET ?sdh@@3VHookJumpClass@@A	; sdh
	call	??0HookJumpClass@@QAE@PBDKPAX@Z		; HookJumpClass::HookJumpClass
	push	OFFSET ??__Fsdh@@YAXXZ			; `dynamic atexit destructor for 'sdh''
	call	_atexit
	pop	ecx
	ret	0
??__Esdh@@YAXXZ ENDP					; `dynamic initializer for 'sdh''
text$yc	ENDS
PUBLIC	??_C@_0BF@OPAAGKNK@Tiberium?5damage?5hook?$AA@	; `string'
;	COMDAT ??_C@_0BF@OPAAGKNK@Tiberium?5damage?5hook?$AA@
CONST	SEGMENT
??_C@_0BF@OPAAGKNK@Tiberium?5damage?5hook?$AA@ DB 'Tiberium damage hook', 00H ; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Etdh@@YAXXZ
text$yc	SEGMENT
??__Etdh@@YAXXZ PROC					; `dynamic initializer for 'tdh'', COMDAT

; 214  : HookCallClass tdh("Tiberium damage hook", 0x6A951C, &Hook_TiberiumDamage);

	push	OFFSET ?Hook_TiberiumDamage@@YGXABVnc_OffenseObjectClass@@MAAUnc_Vector3@@H@Z ; Hook_TiberiumDamage
	push	6984988					; 006a951cH
	push	OFFSET ??_C@_0BF@OPAAGKNK@Tiberium?5damage?5hook?$AA@
	mov	ecx, OFFSET ?tdh@@3VHookCallClass@@A	; tdh
	call	??0HookCallClass@@QAE@PBDKPAX@Z		; HookCallClass::HookCallClass
	push	OFFSET ??__Ftdh@@YAXXZ			; `dynamic atexit destructor for 'tdh''
	call	_atexit
	pop	ecx
	ret	0
??__Etdh@@YAXXZ ENDP					; `dynamic initializer for 'tdh''
text$yc	ENDS
PUBLIC	??_C@_0BK@PHCDAONP@Tiberium?5damage?5hook?5byte?$AA@ ; `string'
;	COMDAT ??_C@_0BK@PHCDAONP@Tiberium?5damage?5hook?5byte?$AA@
CONST	SEGMENT
??_C@_0BK@PHCDAONP@Tiberium?5damage?5hook?5byte?$AA@ DB 'Tiberium damage '
	DB	'hook byte', 00H				; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Etdhb@@YAXXZ
text$yc	SEGMENT
??__Etdhb@@YAXXZ PROC					; `dynamic initializer for 'tdhb'', COMDAT

; 215  : PatchByteClass tdhb("Tiberium damage hook byte", 0x6A9521, 0x90, 1);

	push	1
	push	144					; 00000090H
	push	6984993					; 006a9521H
	push	OFFSET ??_C@_0BK@PHCDAONP@Tiberium?5damage?5hook?5byte?$AA@
	mov	ecx, OFFSET ?tdhb@@3VPatchByteClass@@A	; tdhb
	call	??0PatchByteClass@@QAE@PBDKEH@Z		; PatchByteClass::PatchByteClass
	push	OFFSET ??__Ftdhb@@YAXXZ			; `dynamic atexit destructor for 'tdhb''
	call	_atexit
	pop	ecx
	ret	0
??__Etdhb@@YAXXZ ENDP					; `dynamic initializer for 'tdhb''
text$yc	ENDS
PUBLIC	??_C@_0BB@DGCPBBHJ@Object?5kill?5hook?$AA@	; `string'
;	COMDAT ??_C@_0BB@DGCPBBHJ@Object?5kill?5hook?$AA@
CONST	SEGMENT
??_C@_0BB@DGCPBBHJ@Object?5kill?5hook?$AA@ DB 'Object kill hook', 00H ; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Eook@@YAXXZ
text$yc	SEGMENT
??__Eook@@YAXXZ PROC					; `dynamic initializer for 'ook'', COMDAT

; 243  : HookJumpClass ook("Object kill hook", 0x6D8E96, &Hook_OnObjectKill);

	push	OFFSET ?Hook_OnObjectKill@@YAXXZ	; Hook_OnObjectKill
	push	7179926					; 006d8e96H
	push	OFFSET ??_C@_0BB@DGCPBBHJ@Object?5kill?5hook?$AA@
	mov	ecx, OFFSET ?ook@@3VHookJumpClass@@A	; ook
	call	??0HookJumpClass@@QAE@PBDKPAX@Z		; HookJumpClass::HookJumpClass
	push	OFFSET ??__Fook@@YAXXZ			; `dynamic atexit destructor for 'ook''
	call	_atexit
	pop	ecx
	ret	0
??__Eook@@YAXXZ ENDP					; `dynamic initializer for 'ook''
text$yc	ENDS
PUBLIC	??_C@_0BL@DPEMFLAH@Object?5kill?5?$CIexpired?$CJ?5hook?$AA@ ; `string'
;	COMDAT ??_C@_0BL@DPEMFLAH@Object?5kill?5?$CIexpired?$CJ?5hook?$AA@
CONST	SEGMENT
??_C@_0BL@DPEMFLAH@Object?5kill?5?$CIexpired?$CJ?5hook?$AA@ DB 'Object ki'
	DB	'll (expired) hook', 00H			; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Eoke@@YAXXZ
text$yc	SEGMENT
??__Eoke@@YAXXZ PROC					; `dynamic initializer for 'oke'', COMDAT

; 267  : HookJumpClass oke("Object kill (expired) hook", 0x67C0CB, &Hook_OnObjectKillExpired);

	push	OFFSET ?Hook_OnObjectKillExpired@@YAXXZ	; Hook_OnObjectKillExpired
	push	6799563					; 0067c0cbH
	push	OFFSET ??_C@_0BL@DPEMFLAH@Object?5kill?5?$CIexpired?$CJ?5hook?$AA@
	mov	ecx, OFFSET ?oke@@3VHookJumpClass@@A	; oke
	call	??0HookJumpClass@@QAE@PBDKPAX@Z		; HookJumpClass::HookJumpClass
	push	OFFSET ??__Foke@@YAXXZ			; `dynamic atexit destructor for 'oke''
	call	_atexit
	pop	ecx
	ret	0
??__Eoke@@YAXXZ ENDP					; `dynamic initializer for 'oke''
text$yc	ENDS
PUBLIC	??_C@_0BI@HHPENIBA@Soldier?5transition?5hook?$AA@ ; `string'
;	COMDAT ??_C@_0BI@HHPENIBA@Soldier?5transition?5hook?$AA@
CONST	SEGMENT
??_C@_0BI@HHPENIBA@Soldier?5transition?5hook?$AA@ DB 'Soldier transition '
	DB	'hook', 00H					; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Est@@YAXXZ
text$yc	SEGMENT
??__Est@@YAXXZ PROC					; `dynamic initializer for 'st'', COMDAT

; 299  : HookCallClass st("Soldier transition hook", 0x6D4517, &Hook_SoldierTransition);

	push	OFFSET ?Hook_SoldierTransition@@YGXPAVnc_SoldierGameObj@@@Z ; Hook_SoldierTransition
	push	7161111					; 006d4517H
	push	OFFSET ??_C@_0BI@HHPENIBA@Soldier?5transition?5hook?$AA@
	mov	ecx, OFFSET ?st@@3VHookCallClass@@A	; st
	call	??0HookCallClass@@QAE@PBDKPAX@Z		; HookCallClass::HookCallClass
	push	OFFSET ??__Fst@@YAXXZ			; `dynamic atexit destructor for 'st''
	call	_atexit
	pop	ecx
	ret	0
??__Est@@YAXXZ ENDP					; `dynamic initializer for 'st''
text$yc	ENDS
PUBLIC	??_C@_0BA@EILBMCOJ@Jump?5start?5hook?$AA@	; `string'
;	COMDAT ??_C@_0BA@EILBMCOJ@Jump?5start?5hook?$AA@
CONST	SEGMENT
??_C@_0BA@EILBMCOJ@Jump?5start?5hook?$AA@ DB 'Jump start hook', 00H ; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Ejs@@YAXXZ
text$yc	SEGMENT
??__Ejs@@YAXXZ PROC					; `dynamic initializer for 'js'', COMDAT

; 337  : HookJumpClass js("Jump start hook", 0x69BDF0, &Hook_JumpStart);

	push	OFFSET ?Hook_JumpStart@@YAXXZ		; Hook_JumpStart
	push	6929904					; 0069bdf0H
	push	OFFSET ??_C@_0BA@EILBMCOJ@Jump?5start?5hook?$AA@
	mov	ecx, OFFSET ?js@@3VHookJumpClass@@A	; js
	call	??0HookJumpClass@@QAE@PBDKPAX@Z		; HookJumpClass::HookJumpClass
	push	OFFSET ??__Fjs@@YAXXZ			; `dynamic atexit destructor for 'js''
	call	_atexit
	pop	ecx
	ret	0
??__Ejs@@YAXXZ ENDP					; `dynamic initializer for 'js''
text$yc	ENDS
PUBLIC	??_C@_0BD@LLPCOLNH@Jump?5complete?5hook?$AA@	; `string'
;	COMDAT ??_C@_0BD@LLPCOLNH@Jump?5complete?5hook?$AA@
CONST	SEGMENT
??_C@_0BD@LLPCOLNH@Jump?5complete?5hook?$AA@ DB 'Jump complete hook', 00H ; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Ejc@@YAXXZ
text$yc	SEGMENT
??__Ejc@@YAXXZ PROC					; `dynamic initializer for 'jc'', COMDAT

; 375  : HookJumpClass jc("Jump complete hook", 0x69BF70, &Hook_JumpComplete);

	push	OFFSET ?Hook_JumpComplete@@YAXXZ	; Hook_JumpComplete
	push	6930288					; 0069bf70H
	push	OFFSET ??_C@_0BD@LLPCOLNH@Jump?5complete?5hook?$AA@
	mov	ecx, OFFSET ?jc@@3VHookJumpClass@@A	; jc
	call	??0HookJumpClass@@QAE@PBDKPAX@Z		; HookJumpClass::HookJumpClass
	push	OFFSET ??__Fjc@@YAXXZ			; `dynamic atexit destructor for 'jc''
	call	_atexit
	pop	ecx
	ret	0
??__Ejc@@YAXXZ ENDP					; `dynamic initializer for 'jc''
text$yc	ENDS
PUBLIC	??_C@_0BE@GKPKHILF@Soldier?5squish?5hook?$AA@	; `string'
;	COMDAT ??_C@_0BE@GKPKHILF@Soldier?5squish?5hook?$AA@
CONST	SEGMENT
??_C@_0BE@GKPKHILF@Soldier?5squish?5hook?$AA@ DB 'Soldier squish hook', 00H ; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Ess@@YAXXZ
text$yc	SEGMENT
??__Ess@@YAXXZ PROC					; `dynamic initializer for 'ss'', COMDAT

; 395  : HookCallClass ss("Soldier squish hook", 0x6C7A98, &Hook_SoldierSquished);

	push	OFFSET ?Hook_SoldierSquished@@YGXABVnc_OffenseObjectClass@@MAAUnc_Vector3@@H@Z ; Hook_SoldierSquished
	push	7109272					; 006c7a98H
	push	OFFSET ??_C@_0BE@GKPKHILF@Soldier?5squish?5hook?$AA@
	mov	ecx, OFFSET ?ss@@3VHookCallClass@@A	; ss
	call	??0HookCallClass@@QAE@PBDKPAX@Z		; HookCallClass::HookCallClass
	push	OFFSET ??__Fss@@YAXXZ			; `dynamic atexit destructor for 'ss''
	call	_atexit
	pop	ecx
	ret	0
??__Ess@@YAXXZ ENDP					; `dynamic initializer for 'ss''
text$yc	ENDS
PUBLIC	??_C@_0BD@HFPCGDPP@Soldier?5squish?5NOP?$AA@	; `string'
;	COMDAT ??_C@_0BD@HFPCGDPP@Soldier?5squish?5NOP?$AA@
CONST	SEGMENT
??_C@_0BD@HFPCGDPP@Soldier?5squish?5NOP?$AA@ DB 'Soldier squish NOP', 00H ; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Essp@@YAXXZ
text$yc	SEGMENT
??__Essp@@YAXXZ PROC					; `dynamic initializer for 'ssp'', COMDAT

; 396  : PatchByteClass ssp("Soldier squish NOP", 0x6C7A9D, 0x90, 1);

	push	1
	push	144					; 00000090H
	push	7109277					; 006c7a9dH
	push	OFFSET ??_C@_0BD@HFPCGDPP@Soldier?5squish?5NOP?$AA@
	mov	ecx, OFFSET ?ssp@@3VPatchByteClass@@A	; ssp
	call	??0PatchByteClass@@QAE@PBDKEH@Z		; PatchByteClass::PatchByteClass
	push	OFFSET ??__Fssp@@YAXXZ			; `dynamic atexit destructor for 'ssp''
	call	_atexit
	pop	ecx
	ret	0
??__Essp@@YAXXZ ENDP					; `dynamic initializer for 'ssp''
text$yc	ENDS
PUBLIC	??_C@_0BB@IKGGALFA@C4?5detonate?5hook?$AA@	; `string'
;	COMDAT ??_C@_0BB@IKGGALFA@C4?5detonate?5hook?$AA@
CONST	SEGMENT
??_C@_0BB@IKGGALFA@C4?5detonate?5hook?$AA@ DB 'C4 detonate hook', 00H ; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Ecd@@YAXXZ
text$yc	SEGMENT
??__Ecd@@YAXXZ PROC					; `dynamic initializer for 'cd'', COMDAT

; 436  : HookJumpClass cd("C4 detonate hook", 0x70BE90, &Hook_C4Detonate);

	push	OFFSET ?Hook_C4Detonate@@YAXXZ		; Hook_C4Detonate
	push	7388816					; 0070be90H
	push	OFFSET ??_C@_0BB@IKGGALFA@C4?5detonate?5hook?$AA@
	mov	ecx, OFFSET ?cd@@3VHookJumpClass@@A	; cd
	call	??0HookJumpClass@@QAE@PBDKPAX@Z		; HookJumpClass::HookJumpClass
	push	OFFSET ??__Fcd@@YAXXZ			; `dynamic atexit destructor for 'cd''
	call	_atexit
	pop	ecx
	ret	0
??__Ecd@@YAXXZ ENDP					; `dynamic initializer for 'cd''
text$yc	ENDS
PUBLIC	??_C@_0BP@GJKKMEFM@Maintain?5C4?5limit?5?$CCretn?$CC?5patch?$AA@ ; `string'
;	COMDAT ??_C@_0BP@GJKKMEFM@Maintain?5C4?5limit?5?$CCretn?$CC?5patch?$AA@
CONST	SEGMENT
??_C@_0BP@GJKKMEFM@Maintain?5C4?5limit?5?$CCretn?$CC?5patch?$AA@ DB 'Main'
	DB	'tain C4 limit "retn" patch', 00H		; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Ecmcl@@YAXXZ
text$yc	SEGMENT
??__Ecmcl@@YAXXZ PROC					; `dynamic initializer for 'cmcl'', COMDAT

; 437  : PatchByteClass cmcl("Maintain C4 limit \"retn\" patch", 0x70CFD0, 0xC3, 1);

	push	1
	push	195					; 000000c3H
	push	7393232					; 0070cfd0H
	push	OFFSET ??_C@_0BP@GJKKMEFM@Maintain?5C4?5limit?5?$CCretn?$CC?5patch?$AA@
	mov	ecx, OFFSET ?cmcl@@3VPatchByteClass@@A	; cmcl
	call	??0PatchByteClass@@QAE@PBDKEH@Z		; PatchByteClass::PatchByteClass
	push	OFFSET ??__Fcmcl@@YAXXZ			; `dynamic atexit destructor for 'cmcl''
	call	_atexit
	pop	ecx
	ret	0
??__Ecmcl@@YAXXZ ENDP					; `dynamic initializer for 'cmcl''
text$yc	ENDS
PUBLIC	??_C@_0BD@BKMAJLJM@Powerup?5grant?5hook?$AA@	; `string'
;	COMDAT ??_C@_0BD@BKMAJLJM@Powerup?5grant?5hook?$AA@
CONST	SEGMENT
??_C@_0BD@BKMAJLJM@Powerup?5grant?5hook?$AA@ DB 'Powerup grant hook', 00H ; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Epg@@YAXXZ
text$yc	SEGMENT
??__Epg@@YAXXZ PROC					; `dynamic initializer for 'pg'', COMDAT

; 463  : HookCallClass pg("Powerup grant hook", 0x6F12AC, &Hook_PowerupGrant);

	push	OFFSET ?Hook_PowerupGrant@@YGXPAVnc_SoldierGameObj@@@Z ; Hook_PowerupGrant
	push	7279276					; 006f12acH
	push	OFFSET ??_C@_0BD@BKMAJLJM@Powerup?5grant?5hook?$AA@
	mov	ecx, OFFSET ?pg@@3VHookCallClass@@A	; pg
	call	??0HookCallClass@@QAE@PBDKPAX@Z		; HookCallClass::HookCallClass
	push	OFFSET ??__Fpg@@YAXXZ			; `dynamic atexit destructor for 'pg''
	call	_atexit
	pop	ecx
	ret	0
??__Epg@@YAXXZ ENDP					; `dynamic initializer for 'pg''
text$yc	ENDS
PUBLIC	??_C@_0BB@DMONJJNM@Weapon?5Fire?5hook?$AA@	; `string'
;	COMDAT ??_C@_0BB@DMONJJNM@Weapon?5Fire?5hook?$AA@
CONST	SEGMENT
??_C@_0BB@DMONJJNM@Weapon?5Fire?5hook?$AA@ DB 'Weapon Fire hook', 00H ; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Efbh@@YAXXZ
text$yc	SEGMENT
??__Efbh@@YAXXZ PROC					; `dynamic initializer for 'fbh'', COMDAT

; 490  : HookCallClass fbh("Weapon Fire hook", 0x700DC3, &Hook_FireBullet);

	push	OFFSET ?Hook_FireBullet@@YGX_N@Z	; Hook_FireBullet
	push	7343555					; 00700dc3H
	push	OFFSET ??_C@_0BB@DMONJJNM@Weapon?5Fire?5hook?$AA@
	mov	ecx, OFFSET ?fbh@@3VHookCallClass@@A	; fbh
	call	??0HookCallClass@@QAE@PBDKPAX@Z		; HookCallClass::HookCallClass
	push	OFFSET ??__Ffbh@@YAXXZ			; `dynamic atexit destructor for 'fbh''
	call	_atexit
	pop	ecx
	ret	0
??__Efbh@@YAXXZ ENDP					; `dynamic initializer for 'fbh''
text$yc	ENDS
PUBLIC	??_C@_0BB@BGOPDCNB@Player?5Join?5hook?$AA@	; `string'
;	COMDAT ??_C@_0BB@BGOPDCNB@Player?5Join?5hook?$AA@
CONST	SEGMENT
??_C@_0BB@BGOPDCNB@Player?5Join?5hook?$AA@ DB 'Player Join hook', 00H ; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Epjh@@YAXXZ
text$yc	SEGMENT
??__Epjh@@YAXXZ PROC					; `dynamic initializer for 'pjh'', COMDAT

; 564  : HookJumpClass pjh("Player Join hook", 0x4B4511, &Hook_PlayerJoin);

	push	OFFSET ?Hook_PlayerJoin@@YAXXZ		; Hook_PlayerJoin
	push	4932881					; 004b4511H
	push	OFFSET ??_C@_0BB@BGOPDCNB@Player?5Join?5hook?$AA@
	mov	ecx, OFFSET ?pjh@@3VHookJumpClass@@A	; pjh
	call	??0HookJumpClass@@QAE@PBDKPAX@Z		; HookJumpClass::HookJumpClass
	push	OFFSET ??__Fpjh@@YAXXZ			; `dynamic atexit destructor for 'pjh''
	call	_atexit
	pop	ecx
	ret	0
??__Epjh@@YAXXZ ENDP					; `dynamic initializer for 'pjh''
text$yc	ENDS
PUBLIC	??_C@_0BB@JEFBBJCE@Player?5Left?5hook?$AA@	; `string'
;	COMDAT ??_C@_0BB@JEFBBJCE@Player?5Left?5hook?$AA@
CONST	SEGMENT
??_C@_0BB@JEFBBJCE@Player?5Left?5hook?$AA@ DB 'Player Left hook', 00H ; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Eplh@@YAXXZ
text$yc	SEGMENT
??__Eplh@@YAXXZ PROC					; `dynamic initializer for 'plh'', COMDAT

; 614  : HookJumpClass plh("Player Left hook", 0x461B30, &Hook_PlayerLeft);

	push	OFFSET ?Hook_PlayerLeft@@YAXXZ		; Hook_PlayerLeft
	push	4594480					; 00461b30H
	push	OFFSET ??_C@_0BB@JEFBBJCE@Player?5Left?5hook?$AA@
	mov	ecx, OFFSET ?plh@@3VHookJumpClass@@A	; plh
	call	??0HookJumpClass@@QAE@PBDKPAX@Z		; HookJumpClass::HookJumpClass
	push	OFFSET ??__Fplh@@YAXXZ			; `dynamic atexit destructor for 'plh''
	call	_atexit
	pop	ecx
	ret	0
??__Eplh@@YAXXZ ENDP					; `dynamic initializer for 'plh''
text$yc	ENDS
PUBLIC	??_C@_0BN@KEDKADHO@Client?5bandwidth?5change?5hook?$AA@ ; `string'
;	COMDAT ??_C@_0BN@KEDKADHO@Client?5bandwidth?5change?5hook?$AA@
CONST	SEGMENT
??_C@_0BN@KEDKADHO@Client?5bandwidth?5change?5hook?$AA@ DB 'Client bandwi'
	DB	'dth change hook', 00H			; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Ecbr@@YAXXZ
text$yc	SEGMENT
??__Ecbr@@YAXXZ PROC					; `dynamic initializer for 'cbr'', COMDAT

; 648  : HookCallClass cbr("Client bandwidth change hook", 0x4B4F20, &Hook_PlayerBandwidthChange);

	push	OFFSET ?Hook_PlayerBandwidthChange@@YGXXZ ; Hook_PlayerBandwidthChange
	push	4935456					; 004b4f20H
	push	OFFSET ??_C@_0BN@KEDKADHO@Client?5bandwidth?5change?5hook?$AA@
	mov	ecx, OFFSET ?cbr@@3VHookCallClass@@A	; cbr
	call	??0HookCallClass@@QAE@PBDKPAX@Z		; HookCallClass::HookCallClass
	push	OFFSET ??__Fcbr@@YAXXZ			; `dynamic atexit destructor for 'cbr''
	call	_atexit
	pop	ecx
	ret	0
??__Ecbr@@YAXXZ ENDP					; `dynamic initializer for 'cbr''
text$yc	ENDS
PUBLIC	??_C@_0BO@HKCMBBHN@Player?5suicide?5hook?5?$FLreplace?$FN?$AA@ ; `string'
;	COMDAT ??_C@_0BO@HKCMBBHN@Player?5suicide?5hook?5?$FLreplace?$FN?$AA@
CONST	SEGMENT
??_C@_0BO@HKCMBBHN@Player?5suicide?5hook?5?$FLreplace?$FN?$AA@ DB 'Player'
	DB	' suicide hook [replace]', 00H		; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Esuicideh@@YAXXZ
text$yc	SEGMENT
??__Esuicideh@@YAXXZ PROC				; `dynamic initializer for 'suicideh'', COMDAT

; 687  : HookCallClass suicideh("Player suicide hook [replace]", 0x4BA298, &Hook_PlayerSuicide);

	push	OFFSET ?Hook_PlayerSuicide@@YGXXZ	; Hook_PlayerSuicide
	push	4956824					; 004ba298H
	push	OFFSET ??_C@_0BO@HKCMBBHN@Player?5suicide?5hook?5?$FLreplace?$FN?$AA@
	mov	ecx, OFFSET ?suicideh@@3VHookCallClass@@A ; suicideh
	call	??0HookCallClass@@QAE@PBDKPAX@Z		; HookCallClass::HookCallClass
	push	OFFSET ??__Fsuicideh@@YAXXZ		; `dynamic atexit destructor for 'suicideh''
	call	_atexit
	pop	ecx
	ret	0
??__Esuicideh@@YAXXZ ENDP				; `dynamic initializer for 'suicideh''
text$yc	ENDS
PUBLIC	??_C@_09ICAMLMBF@Chat?5hook?$AA@		; `string'
;	COMDAT ??_C@_09ICAMLMBF@Chat?5hook?$AA@
CONST	SEGMENT
??_C@_09ICAMLMBF@Chat?5hook?$AA@ DB 'Chat hook', 00H	; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Ecto@@YAXXZ
text$yc	SEGMENT
??__Ecto@@YAXXZ PROC					; `dynamic initializer for 'cto'', COMDAT

; 741  : HookJumpClass cto("Chat hook", 0x4B5D91, &Hook_cCsTextObj);

	push	OFFSET ?Hook_cCsTextObj@@YAXXZ		; Hook_cCsTextObj
	push	4939153					; 004b5d91H
	push	OFFSET ??_C@_09ICAMLMBF@Chat?5hook?$AA@
	mov	ecx, OFFSET ?cto@@3VHookJumpClass@@A	; cto
	call	??0HookJumpClass@@QAE@PBDKPAX@Z		; HookJumpClass::HookJumpClass
	push	OFFSET ??__Fcto@@YAXXZ			; `dynamic atexit destructor for 'cto''
	call	_atexit
	pop	ecx
	ret	0
??__Ecto@@YAXXZ ENDP					; `dynamic initializer for 'cto''
text$yc	ENDS
PUBLIC	??_C@_0L@DBHDPCBC@Radio?5hook?$AA@		; `string'
;	COMDAT ??_C@_0L@DBHDPCBC@Radio?5hook?$AA@
CONST	SEGMENT
??_C@_0L@DBHDPCBC@Radio?5hook?$AA@ DB 'Radio hook', 00H	; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Erh@@YAXXZ
text$yc	SEGMENT
??__Erh@@YAXXZ PROC					; `dynamic initializer for 'rh'', COMDAT

; 796  : HookJumpClass rh("Radio hook", 0x4B386F, &Hook_Radio);

	push	OFFSET ?Hook_Radio@@YAXXZ		; Hook_Radio
	push	4929647					; 004b386fH
	push	OFFSET ??_C@_0L@DBHDPCBC@Radio?5hook?$AA@
	mov	ecx, OFFSET ?rh@@3VHookJumpClass@@A	; rh
	call	??0HookJumpClass@@QAE@PBDKPAX@Z		; HookJumpClass::HookJumpClass
	push	OFFSET ??__Frh@@YAXXZ			; `dynamic atexit destructor for 'rh''
	call	_atexit
	pop	ecx
	ret	0
??__Erh@@YAXXZ ENDP					; `dynamic initializer for 'rh''
text$yc	ENDS
PUBLIC	??_C@_0BB@DDGMKCGC@Team?5Change?5hook?$AA@	; `string'
;	COMDAT ??_C@_0BB@DDGMKCGC@Team?5Change?5hook?$AA@
CONST	SEGMENT
??_C@_0BB@DDGMKCGC@Team?5Change?5hook?$AA@ DB 'Team Change hook', 00H ; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Etch@@YAXXZ
text$yc	SEGMENT
??__Etch@@YAXXZ PROC					; `dynamic initializer for 'tch'', COMDAT

; 851  : HookCallClass tch("Team Change hook", 0x4B4C98, &Hook_ChangeTeam);

	push	OFFSET ?Hook_ChangeTeam@@YGXXZ		; Hook_ChangeTeam
	push	4934808					; 004b4c98H
	push	OFFSET ??_C@_0BB@DDGMKCGC@Team?5Change?5hook?$AA@
	mov	ecx, OFFSET ?tch@@3VHookCallClass@@A	; tch
	call	??0HookCallClass@@QAE@PBDKPAX@Z		; HookCallClass::HookCallClass
	push	OFFSET ??__Ftch@@YAXXZ			; `dynamic atexit destructor for 'tch''
	call	_atexit
	pop	ecx
	ret	0
??__Etch@@YAXXZ ENDP					; `dynamic initializer for 'tch''
text$yc	ENDS
PUBLIC	??_C@_0BB@MMKPOJND@Serial?5Hash?5hook?$AA@	; `string'
;	COMDAT ??_C@_0BB@MMKPOJND@Serial?5Hash?5hook?$AA@
CONST	SEGMENT
??_C@_0BB@MMKPOJND@Serial?5Hash?5hook?$AA@ DB 'Serial Hash hook', 00H ; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Eshh@@YAXXZ
text$yc	SEGMENT
??__Eshh@@YAXXZ PROC					; `dynamic initializer for 'shh'', COMDAT

; 876  : HookCallClass shh("Serial Hash hook", 0x4B712C, &Hook_SerialHash);

	push	OFFSET ?Hook_SerialHash@@YGXXZ		; Hook_SerialHash
	push	4944172					; 004b712cH
	push	OFFSET ??_C@_0BB@MMKPOJND@Serial?5Hash?5hook?$AA@
	mov	ecx, OFFSET ?shh@@3VHookCallClass@@A	; shh
	call	??0HookCallClass@@QAE@PBDKPAX@Z		; HookCallClass::HookCallClass
	push	OFFSET ??__Fshh@@YAXXZ			; `dynamic atexit destructor for 'shh''
	call	_atexit
	pop	ecx
	ret	0
??__Eshh@@YAXXZ ENDP					; `dynamic initializer for 'shh''
text$yc	ENDS
PUBLIC	??_C@_0BH@BDBJLDNI@Player?5raw?5damage?5hook?$AA@ ; `string'
;	COMDAT ??_C@_0BH@BDBJLDNI@Player?5raw?5damage?5hook?$AA@
CONST	SEGMENT
??_C@_0BH@BDBJLDNI@Player?5raw?5damage?5hook?$AA@ DB 'Player raw damage h'
	DB	'ook', 00H					; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Eprdh@@YAXXZ
text$yc	SEGMENT
??__Eprdh@@YAXXZ PROC					; `dynamic initializer for 'prdh'', COMDAT

; 916  : HookCallClass prdh("Player raw damage hook", 0x6F4152, &Hook_PlayerRawDamage);

	push	OFFSET ?Hook_PlayerRawDamage@@YGXXZ	; Hook_PlayerRawDamage
	push	7291218					; 006f4152H
	push	OFFSET ??_C@_0BH@BDBJLDNI@Player?5raw?5damage?5hook?$AA@
	mov	ecx, OFFSET ?prdh@@3VHookCallClass@@A	; prdh
	call	??0HookCallClass@@QAE@PBDKPAX@Z		; HookCallClass::HookCallClass
	push	OFFSET ??__Fprdh@@YAXXZ			; `dynamic atexit destructor for 'prdh''
	call	_atexit
	pop	ecx
	ret	0
??__Eprdh@@YAXXZ ENDP					; `dynamic initializer for 'prdh''
text$yc	ENDS
PUBLIC	??_C@_0BF@BBCCHKHE@Player?5purchase?5hook?$AA@	; `string'
;	COMDAT ??_C@_0BF@BBCCHKHE@Player?5purchase?5hook?$AA@
CONST	SEGMENT
??_C@_0BF@BBCCHKHE@Player?5purchase?5hook?$AA@ DB 'Player purchase hook', 00H ; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Epph@@YAXXZ
text$yc	SEGMENT
??__Epph@@YAXXZ PROC					; `dynamic initializer for 'pph'', COMDAT

; 1033 : HookCallClass pph("Player purchase hook", 0x4B8520, &Hook_PlayerPurchase);

	push	OFFSET ?Hook_PlayerPurchase@@YGXXZ	; Hook_PlayerPurchase
	push	4949280					; 004b8520H
	push	OFFSET ??_C@_0BF@BBCCHKHE@Player?5purchase?5hook?$AA@
	mov	ecx, OFFSET ?pph@@3VHookCallClass@@A	; pph
	call	??0HookCallClass@@QAE@PBDKPAX@Z		; HookCallClass::HookCallClass
	push	OFFSET ??__Fpph@@YAXXZ			; `dynamic atexit destructor for 'pph''
	call	_atexit
	pop	ecx
	ret	0
??__Epph@@YAXXZ ENDP					; `dynamic initializer for 'pph''
text$yc	ENDS
PUBLIC	??_C@_0O@LMAPOPIM@WOL?5Page?5hook?$AA@		; `string'
;	COMDAT ??_C@_0O@LMAPOPIM@WOL?5Page?5hook?$AA@
CONST	SEGMENT
??_C@_0O@LMAPOPIM@WOL?5Page?5hook?$AA@ DB 'WOL Page hook', 00H ; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Ewph@@YAXXZ
text$yc	SEGMENT
??__Ewph@@YAXXZ PROC					; `dynamic initializer for 'wph'', COMDAT

; 1086 : HookJumpClass wph("WOL Page hook", 0x4C1E50, &Hook_WOLPage);

	push	OFFSET ?Hook_WOLPage@@YAXXZ		; Hook_WOLPage
	push	4988496					; 004c1e50H
	push	OFFSET ??_C@_0O@LMAPOPIM@WOL?5Page?5hook?$AA@
	mov	ecx, OFFSET ?wph@@3VHookJumpClass@@A	; wph
	call	??0HookJumpClass@@QAE@PBDKPAX@Z		; HookJumpClass::HookJumpClass
	push	OFFSET ??__Fwph@@YAXXZ			; `dynamic atexit destructor for 'wph''
	call	_atexit
	pop	ecx
	ret	0
??__Ewph@@YAXXZ ENDP					; `dynamic initializer for 'wph''
text$yc	ENDS
PUBLIC	??_C@_0BL@MGIJJCGJ@CD?5key?5auth?5call?5back?5hook?$AA@ ; `string'
;	COMDAT ??_C@_0BL@MGIJJCGJ@CD?5key?5auth?5call?5back?5hook?$AA@
CONST	SEGMENT
??_C@_0BL@MGIJJCGJ@CD?5key?5auth?5call?5back?5hook?$AA@ DB 'CD key auth c'
	DB	'all back hook', 00H				; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Eckac@@YAXXZ
text$yc	SEGMENT
??__Eckac@@YAXXZ PROC					; `dynamic initializer for 'ckac'', COMDAT

; 1117 : HookJumpClass ckac("CD key auth call back hook", 0x4E2180, &Hook_CDKeyAuthCallback);

	push	OFFSET ?Hook_CDKeyAuthCallback@@YAXXZ	; Hook_CDKeyAuthCallback
	push	5120384					; 004e2180H
	push	OFFSET ??_C@_0BL@MGIJJCGJ@CD?5key?5auth?5call?5back?5hook?$AA@
	mov	ecx, OFFSET ?ckac@@3VHookJumpClass@@A	; ckac
	call	??0HookJumpClass@@QAE@PBDKPAX@Z		; HookJumpClass::HookJumpClass
	push	OFFSET ??__Fckac@@YAXXZ			; `dynamic atexit destructor for 'ckac''
	call	_atexit
	pop	ecx
	ret	0
??__Eckac@@YAXXZ ENDP					; `dynamic initializer for 'ckac''
text$yc	ENDS
PUBLIC	??_C@_0BJ@FIJJAIEP@Beacon?5update?5state?5hook?$AA@ ; `string'
;	COMDAT ??_C@_0BJ@FIJJAIEP@Beacon?5update?5state?5hook?$AA@
CONST	SEGMENT
??_C@_0BJ@FIJJAIEP@Beacon?5update?5state?5hook?$AA@ DB 'Beacon update sta'
	DB	'te hook', 00H				; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Ebus@@YAXXZ
text$yc	SEGMENT
??__Ebus@@YAXXZ PROC					; `dynamic initializer for 'bus'', COMDAT

; 1201 : HookJumpClass bus("Beacon update state hook", 0x709780, &Hook_BeaconUpdateState);

	push	OFFSET ?Hook_BeaconUpdateState@@YAXXZ	; Hook_BeaconUpdateState
	push	7378816					; 00709780H
	push	OFFSET ??_C@_0BJ@FIJJAIEP@Beacon?5update?5state?5hook?$AA@
	mov	ecx, OFFSET ?bus@@3VHookJumpClass@@A	; bus
	call	??0HookJumpClass@@QAE@PBDKPAX@Z		; HookJumpClass::HookJumpClass
	push	OFFSET ??__Fbus@@YAXXZ			; `dynamic atexit destructor for 'bus''
	call	_atexit
	pop	ecx
	ret	0
??__Ebus@@YAXXZ ENDP					; `dynamic initializer for 'bus''
text$yc	ENDS
PUBLIC	??_C@_0BH@DFHJHKJG@Remote?5host?5size?5patch?$AA@ ; `string'
;	COMDAT ??_C@_0BH@DFHJHKJG@Remote?5host?5size?5patch?$AA@
CONST	SEGMENT
??_C@_0BH@DFHJHKJG@Remote?5host?5size?5patch?$AA@ DB 'Remote host size pa'
	DB	'tch', 00H					; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Ecrsp@@YAXXZ
text$yc	SEGMENT
??__Ecrsp@@YAXXZ PROC					; `dynamic initializer for 'crsp'', COMDAT

; 1223 : HookJumpClass crsp("Remote host size patch", 0x617ED0, &Patch_cRemoteHostSize);

	push	OFFSET ?Patch_cRemoteHostSize@@YAXXZ	; Patch_cRemoteHostSize
	push	6389456					; 00617ed0H
	push	OFFSET ??_C@_0BH@DFHJHKJG@Remote?5host?5size?5patch?$AA@
	mov	ecx, OFFSET ?crsp@@3VHookJumpClass@@A	; crsp
	call	??0HookJumpClass@@QAE@PBDKPAX@Z		; HookJumpClass::HookJumpClass
	push	OFFSET ??__Fcrsp@@YAXXZ			; `dynamic atexit destructor for 'crsp''
	call	_atexit
	pop	ecx
	ret	0
??__Ecrsp@@YAXXZ ENDP					; `dynamic initializer for 'crsp''
text$yc	ENDS
PUBLIC	??_C@_0CM@PDDNFMEM@FDS?5auto?5start?5on?5windows?5user?5l@ ; `string'
;	COMDAT ??_C@_0CM@PDDNFMEM@FDS?5auto?5start?5on?5windows?5user?5l@
CONST	SEGMENT
??_C@_0CM@PDDNFMEM@FDS?5auto?5start?5on?5windows?5user?5l@ DB 'FDS auto s'
	DB	'tart on windows user log on patch', 00H	; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Esuowl@@YAXXZ
text$yc	SEGMENT
??__Esuowl@@YAXXZ PROC					; `dynamic initializer for 'suowl'', COMDAT

; 1225 : PatchByteClass suowl("FDS auto start on windows user log on patch", 0x434CDE, 0x90, 7);

	push	7
	push	144					; 00000090H
	push	4410590					; 00434cdeH
	push	OFFSET ??_C@_0CM@PDDNFMEM@FDS?5auto?5start?5on?5windows?5user?5l@
	mov	ecx, OFFSET ?suowl@@3VPatchByteClass@@A	; suowl
	call	??0PatchByteClass@@QAE@PBDKEH@Z		; PatchByteClass::PatchByteClass
	push	OFFSET ??__Fsuowl@@YAXXZ		; `dynamic atexit destructor for 'suowl''
	call	_atexit
	pop	ecx
	ret	0
??__Esuowl@@YAXXZ ENDP					; `dynamic initializer for 'suowl''
text$yc	ENDS
PUBLIC	??_C@_0BL@JEONDGFP@GameOver?5result?5screen?5fix?$AA@ ; `string'
;	COMDAT ??_C@_0BL@JEONDGFP@GameOver?5result?5screen?5fix?$AA@
CONST	SEGMENT
??_C@_0BL@JEONDGFP@GameOver?5result?5screen?5fix?$AA@ DB 'GameOver result'
	DB	' screen fix', 00H				; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Egof@@YAXXZ
text$yc	SEGMENT
??__Egof@@YAXXZ PROC					; `dynamic initializer for 'gof'', COMDAT

; 1226 : PatchByteClass gof("GameOver result screen fix", 0x4BAD6C, 0x90, 9);

	push	9
	push	144					; 00000090H
	push	4959596					; 004bad6cH
	push	OFFSET ??_C@_0BL@JEONDGFP@GameOver?5result?5screen?5fix?$AA@
	mov	ecx, OFFSET ?gof@@3VPatchByteClass@@A	; gof
	call	??0PatchByteClass@@QAE@PBDKEH@Z		; PatchByteClass::PatchByteClass
	push	OFFSET ??__Fgof@@YAXXZ			; `dynamic atexit destructor for 'gof''
	call	_atexit
	pop	ecx
	ret	0
??__Egof@@YAXXZ ENDP					; `dynamic initializer for 'gof''
text$yc	ENDS
PUBLIC	??_C@_0BD@BCLIDLMC@WOL?5ladder?5map?5fix?$AA@	; `string'
;	COMDAT ??_C@_0BD@BCLIDLMC@WOL?5ladder?5map?5fix?$AA@
CONST	SEGMENT
??_C@_0BD@BCLIDLMC@WOL?5ladder?5map?5fix?$AA@ DB 'WOL ladder map fix', 00H ; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Ewlsf@@YAXXZ
text$yc	SEGMENT
??__Ewlsf@@YAXXZ PROC					; `dynamic initializer for 'wlsf'', COMDAT

; 1255 : HookCallClass wlsf("WOL ladder map fix",0x43F8EF,&Patch_WolLadderMapFix);

	push	OFFSET ?Patch_WolLadderMapFix@@YGXPAD0@Z ; Patch_WolLadderMapFix
	push	4454639					; 0043f8efH
	push	OFFSET ??_C@_0BD@BCLIDLMC@WOL?5ladder?5map?5fix?$AA@
	mov	ecx, OFFSET ?wlsf@@3VHookCallClass@@A	; wlsf
	call	??0HookCallClass@@QAE@PBDKPAX@Z		; HookCallClass::HookCallClass
	push	OFFSET ??__Fwlsf@@YAXXZ			; `dynamic atexit destructor for 'wlsf''
	call	_atexit
	pop	ecx
	ret	0
??__Ewlsf@@YAXXZ ENDP					; `dynamic initializer for 'wlsf''
text$yc	ENDS
PUBLIC	??_C@_0CF@LEBLCLCJ@WOL?5ladder?5nickname?5length?5exten@ ; `string'
;	COMDAT ??_C@_0CF@LEBLCLCJ@WOL?5ladder?5nickname?5length?5exten@
CONST	SEGMENT
??_C@_0CF@LEBLCLCJ@WOL?5ladder?5nickname?5length?5exten@ DB 'WOL ladder n'
	DB	'ickname length extension', 00H		; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Ewlnle@@YAXXZ
text$yc	SEGMENT
??__Ewlnle@@YAXXZ PROC					; `dynamic initializer for 'wlnle'', COMDAT

; 1276 : HookCallClass wlnle("WOL ladder nickname length extension", 0x43FCC8, &Patch_WolLadderNicknameLengthExtend);

	push	OFFSET ?Patch_WolLadderNicknameLengthExtend@@YGXPAD0@Z ; Patch_WolLadderNicknameLengthExtend
	push	4455624					; 0043fcc8H
	push	OFFSET ??_C@_0CF@LEBLCLCJ@WOL?5ladder?5nickname?5length?5exten@
	mov	ecx, OFFSET ?wlnle@@3VHookCallClass@@A	; wlnle
	call	??0HookCallClass@@QAE@PBDKPAX@Z		; HookCallClass::HookCallClass
	push	OFFSET ??__Fwlnle@@YAXXZ		; `dynamic atexit destructor for 'wlnle''
	call	_atexit
	pop	ecx
	ret	0
??__Ewlnle@@YAXXZ ENDP					; `dynamic initializer for 'wlnle''
text$yc	ENDS
PUBLIC	??_C@_0BG@PBFCDOJD@Purchase?5Terminal?5fix?$AA@	; `string'
;	COMDAT ??_C@_0BG@PBFCDOJD@Purchase?5Terminal?5fix?$AA@
CONST	SEGMENT
??_C@_0BG@PBFCDOJD@Purchase?5Terminal?5fix?$AA@ DB 'Purchase Terminal fix'
	DB	00H						; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Etbf@@YAXXZ
text$yc	SEGMENT
??__Etbf@@YAXXZ PROC					; `dynamic initializer for 'tbf'', COMDAT

; 1290 : HookCallClass tbf("Purchase Terminal fix", 0x406707, &Patch_PurchaseTerminalFix);

	push	OFFSET ?Patch_PurchaseTerminalFix@@YAXXZ ; Patch_PurchaseTerminalFix
	push	4220679					; 00406707H
	push	OFFSET ??_C@_0BG@PBFCDOJD@Purchase?5Terminal?5fix?$AA@
	mov	ecx, OFFSET ?tbf@@3VHookCallClass@@A	; tbf
	call	??0HookCallClass@@QAE@PBDKPAX@Z		; HookCallClass::HookCallClass
	push	OFFSET ??__Ftbf@@YAXXZ			; `dynamic atexit destructor for 'tbf''
	call	_atexit
	pop	ecx
	ret	0
??__Etbf@@YAXXZ ENDP					; `dynamic initializer for 'tbf''
text$yc	ENDS
PUBLIC	??_C@_0L@BDHGEGGB@Points?5fix?$AA@		; `string'
;	COMDAT ??_C@_0L@BDHGEGGB@Points?5fix?$AA@
CONST	SEGMENT
??_C@_0L@BDHGEGGB@Points?5fix?$AA@ DB 'Points fix', 00H	; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Epf@@YAXXZ
text$yc	SEGMENT
??__Epf@@YAXXZ PROC					; `dynamic initializer for 'pf'', COMDAT

; 1312 : HookJumpClass pf("Points fix", 0x68B29E, &Patch_DamageScoreFix);

	push	OFFSET ?Patch_DamageScoreFix@@YAXXZ	; Patch_DamageScoreFix
	push	6861470					; 0068b29eH
	push	OFFSET ??_C@_0L@BDHGEGGB@Points?5fix?$AA@
	mov	ecx, OFFSET ?pf@@3VHookJumpClass@@A	; pf
	call	??0HookJumpClass@@QAE@PBDKPAX@Z		; HookJumpClass::HookJumpClass
	push	OFFSET ??__Fpf@@YAXXZ			; `dynamic atexit destructor for 'pf''
	call	_atexit
	pop	ecx
	ret	0
??__Epf@@YAXXZ ENDP					; `dynamic initializer for 'pf''
text$yc	ENDS
PUBLIC	??_C@_0CA@DENBAENN@Infinity?5Ineventory?5startup?5fix?$AA@ ; `string'
;	COMDAT ??_C@_0CA@DENBAENN@Infinity?5Ineventory?5startup?5fix?$AA@
CONST	SEGMENT
??_C@_0CA@DENBAENN@Infinity?5Ineventory?5startup?5fix?$AA@ DB 'Infinity I'
	DB	'neventory startup fix', 00H			; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Euiafh@@YAXXZ
text$yc	SEGMENT
??__Euiafh@@YAXXZ PROC					; `dynamic initializer for 'uiafh'', COMDAT

; 1335 : HookCallClass uiafh("Infinity Ineventory startup fix", 0x6F38A2, &Patch_UnlimitedInventoryAmmoFix);

	push	OFFSET ?Patch_UnlimitedInventoryAmmoFix@@YAHXZ ; Patch_UnlimitedInventoryAmmoFix
	push	7288994					; 006f38a2H
	push	OFFSET ??_C@_0CA@DENBAENN@Infinity?5Ineventory?5startup?5fix?$AA@
	mov	ecx, OFFSET ?uiafh@@3VHookCallClass@@A	; uiafh
	call	??0HookCallClass@@QAE@PBDKPAX@Z		; HookCallClass::HookCallClass
	push	OFFSET ??__Fuiafh@@YAXXZ		; `dynamic atexit destructor for 'uiafh''
	call	_atexit
	pop	ecx
	ret	0
??__Euiafh@@YAXXZ ENDP					; `dynamic initializer for 'uiafh''
text$yc	ENDS
PUBLIC	??_C@_0BA@CFGDIOMO@Door?5check?5hook?$AA@	; `string'
;	COMDAT ??_C@_0BA@CFGDIOMO@Door?5check?5hook?$AA@
CONST	SEGMENT
??_C@_0BA@CFGDIOMO@Door?5check?5hook?$AA@ DB 'Door check hook', 00H ; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Edch@@YAXXZ
text$yc	SEGMENT
??__Edch@@YAXXZ PROC					; `dynamic initializer for 'dch'', COMDAT

; 1353 : HookJumpClass dch("Door check hook", 0x6997E1, &Hook_DoorCheck);

	push	OFFSET ?Hook_DoorCheck@@YAXXZ		; Hook_DoorCheck
	push	6920161					; 006997e1H
	push	OFFSET ??_C@_0BA@CFGDIOMO@Door?5check?5hook?$AA@
	mov	ecx, OFFSET ?dch@@3VHookJumpClass@@A	; dch
	call	??0HookJumpClass@@QAE@PBDKPAX@Z		; HookJumpClass::HookJumpClass
	push	OFFSET ??__Fdch@@YAXXZ			; `dynamic atexit destructor for 'dch''
	call	_atexit
	pop	ecx
	ret	0
??__Edch@@YAXXZ ENDP					; `dynamic initializer for 'dch''
text$yc	ENDS
PUBLIC	??_C@_0BJ@MPGPCGKC@Player?5spawn?5preset?5hook?$AA@ ; `string'
;	COMDAT ??_C@_0BJ@MPGPCGKC@Player?5spawn?5preset?5hook?$AA@
CONST	SEGMENT
??_C@_0BJ@MPGPCGKC@Player?5spawn?5preset?5hook?$AA@ DB 'Player spawn pres'
	DB	'et hook', 00H				; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Epsp@@YAXXZ
text$yc	SEGMENT
??__Epsp@@YAXXZ PROC					; `dynamic initializer for 'psp'', COMDAT

; 1371 : HookCallClass psp("Player spawn preset hook", 0x4068A0, &Hook_PlayerSpawnPreset);

	push	OFFSET ?Hook_PlayerSpawnPreset@@YAPAVnc_ScriptableGameObj@@PBD@Z ; Hook_PlayerSpawnPreset
	push	4221088					; 004068a0H
	push	OFFSET ??_C@_0BJ@MPGPCGKC@Player?5spawn?5preset?5hook?$AA@
	mov	ecx, OFFSET ?psp@@3VHookCallClass@@A	; psp
	call	??0HookCallClass@@QAE@PBDKPAX@Z		; HookCallClass::HookCallClass
	push	OFFSET ??__Fpsp@@YAXXZ			; `dynamic atexit destructor for 'psp''
	call	_atexit
	pop	ecx
	ret	0
??__Epsp@@YAXXZ ENDP					; `dynamic initializer for 'psp''
text$yc	ENDS
PUBLIC	??_C@_0BH@FAEOOOMM@Soldier?5set?5speed?5hook?$AA@ ; `string'
;	COMDAT ??_C@_0BH@FAEOOOMM@Soldier?5set?5speed?5hook?$AA@
CONST	SEGMENT
??_C@_0BH@FAEOOOMM@Soldier?5set?5speed?5hook?$AA@ DB 'Soldier set speed h'
	DB	'ook', 00H					; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Esssh@@YAXXZ
text$yc	SEGMENT
??__Esssh@@YAXXZ PROC					; `dynamic initializer for 'sssh'', COMDAT

; 1405 : HookJumpClass sssh("Soldier set speed hook", 0x6C8F20, &Hook_SoldierSetSpeed);

	push	OFFSET ?Hook_SoldierSetSpeed@@YAXXZ	; Hook_SoldierSetSpeed
	push	7114528					; 006c8f20H
	push	OFFSET ??_C@_0BH@FAEOOOMM@Soldier?5set?5speed?5hook?$AA@
	mov	ecx, OFFSET ?sssh@@3VHookJumpClass@@A	; sssh
	call	??0HookJumpClass@@QAE@PBDKPAX@Z		; HookJumpClass::HookJumpClass
	push	OFFSET ??__Fsssh@@YAXXZ			; `dynamic atexit destructor for 'sssh''
	call	_atexit
	pop	ecx
	ret	0
??__Esssh@@YAXXZ ENDP					; `dynamic initializer for 'sssh''
text$yc	ENDS
PUBLIC	??_C@_0BH@KIGKILPM@Vehicle?5flip?5kill?5hook?$AA@ ; `string'
;	COMDAT ??_C@_0BH@KIGKILPM@Vehicle?5flip?5kill?5hook?$AA@
CONST	SEGMENT
??_C@_0BH@KIGKILPM@Vehicle?5flip?5kill?5hook?$AA@ DB 'Vehicle flip kill h'
	DB	'ook', 00H					; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Evfkh@@YAXXZ
text$yc	SEGMENT
??__Evfkh@@YAXXZ PROC					; `dynamic initializer for 'vfkh'', COMDAT

; 1424 : HookJumpClass vfkh("Vehicle flip kill hook", 0x67C060, &Hook_VehicleFlipKill);

	push	OFFSET ?Hook_VehicleFlipKill@@YAXXZ	; Hook_VehicleFlipKill
	push	6799456					; 0067c060H
	push	OFFSET ??_C@_0BH@KIGKILPM@Vehicle?5flip?5kill?5hook?$AA@
	mov	ecx, OFFSET ?vfkh@@3VHookJumpClass@@A	; vfkh
	call	??0HookJumpClass@@QAE@PBDKPAX@Z		; HookJumpClass::HookJumpClass
	push	OFFSET ??__Fvfkh@@YAXXZ			; `dynamic atexit destructor for 'vfkh''
	call	_atexit
	pop	ecx
	ret	0
??__Evfkh@@YAXXZ ENDP					; `dynamic initializer for 'vfkh''
; Function compile flags: /Ogtpy
text$yc	ENDS
;	COMDAT ??__Fllh@@YAXXZ
text$yd	SEGMENT
??__Fllh@@YAXXZ PROC					; `dynamic atexit destructor for 'llh'', COMDAT
	mov	ecx, OFFSET ?llh@@3VHookCallClass@@A	; llh
	jmp	??1HookCallClass@@UAE@XZ		; HookCallClass::~HookCallClass
??__Fllh@@YAXXZ ENDP					; `dynamic atexit destructor for 'llh''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Fhgo@@YAXXZ
text$yd	SEGMENT
??__Fhgo@@YAXXZ PROC					; `dynamic atexit destructor for 'hgo'', COMDAT
	mov	ecx, OFFSET ?hgo@@3VHookJumpClass@@A	; hgo
	jmp	??1HookJumpClass@@UAE@XZ		; HookJumpClass::~HookJumpClass
??__Fhgo@@YAXXZ ENDP					; `dynamic atexit destructor for 'hgo''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Ffuh@@YAXXZ
text$yd	SEGMENT
??__Ffuh@@YAXXZ PROC					; `dynamic atexit destructor for 'fuh'', COMDAT
	mov	ecx, OFFSET ?fuh@@3VHookCallClass@@A	; fuh
	jmp	??1HookCallClass@@UAE@XZ		; HookCallClass::~HookCallClass
??__Ffuh@@YAXXZ ENDP					; `dynamic atexit destructor for 'fuh''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Fcobih@@YAXXZ
text$yd	SEGMENT
??__Fcobih@@YAXXZ PROC					; `dynamic atexit destructor for 'cobih'', COMDAT
	mov	ecx, OFFSET ?cobih@@3VHookJumpClass@@A	; cobih
	jmp	??1HookJumpClass@@UAE@XZ		; HookJumpClass::~HookJumpClass
??__Fcobih@@YAXXZ ENDP					; `dynamic atexit destructor for 'cobih''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Fcobpnh@@YAXXZ
text$yd	SEGMENT
??__Fcobpnh@@YAXXZ PROC					; `dynamic atexit destructor for 'cobpnh'', COMDAT
	mov	ecx, OFFSET ?cobpnh@@3VHookJumpClass@@A	; cobpnh
	jmp	??1HookJumpClass@@UAE@XZ		; HookJumpClass::~HookJumpClass
??__Fcobpnh@@YAXXZ ENDP					; `dynamic atexit destructor for 'cobpnh''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Fsdh@@YAXXZ
text$yd	SEGMENT
??__Fsdh@@YAXXZ PROC					; `dynamic atexit destructor for 'sdh'', COMDAT
	mov	ecx, OFFSET ?sdh@@3VHookJumpClass@@A	; sdh
	jmp	??1HookJumpClass@@UAE@XZ		; HookJumpClass::~HookJumpClass
??__Fsdh@@YAXXZ ENDP					; `dynamic atexit destructor for 'sdh''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Ftdh@@YAXXZ
text$yd	SEGMENT
??__Ftdh@@YAXXZ PROC					; `dynamic atexit destructor for 'tdh'', COMDAT
	mov	ecx, OFFSET ?tdh@@3VHookCallClass@@A	; tdh
	jmp	??1HookCallClass@@UAE@XZ		; HookCallClass::~HookCallClass
??__Ftdh@@YAXXZ ENDP					; `dynamic atexit destructor for 'tdh''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Ftdhb@@YAXXZ
text$yd	SEGMENT
??__Ftdhb@@YAXXZ PROC					; `dynamic atexit destructor for 'tdhb'', COMDAT
	mov	DWORD PTR ?tdhb@@3VPatchByteClass@@A, OFFSET ??_7PatchByteClass@@6B@
	mov	ecx, OFFSET ?tdhb@@3VPatchByteClass@@A	; tdhb
	jmp	??1HookBase@@UAE@XZ			; HookBase::~HookBase
??__Ftdhb@@YAXXZ ENDP					; `dynamic atexit destructor for 'tdhb''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Fook@@YAXXZ
text$yd	SEGMENT
??__Fook@@YAXXZ PROC					; `dynamic atexit destructor for 'ook'', COMDAT
	mov	ecx, OFFSET ?ook@@3VHookJumpClass@@A	; ook
	jmp	??1HookJumpClass@@UAE@XZ		; HookJumpClass::~HookJumpClass
??__Fook@@YAXXZ ENDP					; `dynamic atexit destructor for 'ook''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Foke@@YAXXZ
text$yd	SEGMENT
??__Foke@@YAXXZ PROC					; `dynamic atexit destructor for 'oke'', COMDAT
	mov	ecx, OFFSET ?oke@@3VHookJumpClass@@A	; oke
	jmp	??1HookJumpClass@@UAE@XZ		; HookJumpClass::~HookJumpClass
??__Foke@@YAXXZ ENDP					; `dynamic atexit destructor for 'oke''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Fst@@YAXXZ
text$yd	SEGMENT
??__Fst@@YAXXZ PROC					; `dynamic atexit destructor for 'st'', COMDAT
	mov	ecx, OFFSET ?st@@3VHookCallClass@@A	; st
	jmp	??1HookCallClass@@UAE@XZ		; HookCallClass::~HookCallClass
??__Fst@@YAXXZ ENDP					; `dynamic atexit destructor for 'st''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Fjs@@YAXXZ
text$yd	SEGMENT
??__Fjs@@YAXXZ PROC					; `dynamic atexit destructor for 'js'', COMDAT
	mov	ecx, OFFSET ?js@@3VHookJumpClass@@A	; js
	jmp	??1HookJumpClass@@UAE@XZ		; HookJumpClass::~HookJumpClass
??__Fjs@@YAXXZ ENDP					; `dynamic atexit destructor for 'js''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Fjc@@YAXXZ
text$yd	SEGMENT
??__Fjc@@YAXXZ PROC					; `dynamic atexit destructor for 'jc'', COMDAT
	mov	ecx, OFFSET ?jc@@3VHookJumpClass@@A	; jc
	jmp	??1HookJumpClass@@UAE@XZ		; HookJumpClass::~HookJumpClass
??__Fjc@@YAXXZ ENDP					; `dynamic atexit destructor for 'jc''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Fss@@YAXXZ
text$yd	SEGMENT
??__Fss@@YAXXZ PROC					; `dynamic atexit destructor for 'ss'', COMDAT
	mov	ecx, OFFSET ?ss@@3VHookCallClass@@A	; ss
	jmp	??1HookCallClass@@UAE@XZ		; HookCallClass::~HookCallClass
??__Fss@@YAXXZ ENDP					; `dynamic atexit destructor for 'ss''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Fssp@@YAXXZ
text$yd	SEGMENT
??__Fssp@@YAXXZ PROC					; `dynamic atexit destructor for 'ssp'', COMDAT
	mov	DWORD PTR ?ssp@@3VPatchByteClass@@A, OFFSET ??_7PatchByteClass@@6B@
	mov	ecx, OFFSET ?ssp@@3VPatchByteClass@@A	; ssp
	jmp	??1HookBase@@UAE@XZ			; HookBase::~HookBase
??__Fssp@@YAXXZ ENDP					; `dynamic atexit destructor for 'ssp''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Fcd@@YAXXZ
text$yd	SEGMENT
??__Fcd@@YAXXZ PROC					; `dynamic atexit destructor for 'cd'', COMDAT
	mov	ecx, OFFSET ?cd@@3VHookJumpClass@@A	; cd
	jmp	??1HookJumpClass@@UAE@XZ		; HookJumpClass::~HookJumpClass
??__Fcd@@YAXXZ ENDP					; `dynamic atexit destructor for 'cd''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Fcmcl@@YAXXZ
text$yd	SEGMENT
??__Fcmcl@@YAXXZ PROC					; `dynamic atexit destructor for 'cmcl'', COMDAT
	mov	DWORD PTR ?cmcl@@3VPatchByteClass@@A, OFFSET ??_7PatchByteClass@@6B@
	mov	ecx, OFFSET ?cmcl@@3VPatchByteClass@@A	; cmcl
	jmp	??1HookBase@@UAE@XZ			; HookBase::~HookBase
??__Fcmcl@@YAXXZ ENDP					; `dynamic atexit destructor for 'cmcl''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Fpg@@YAXXZ
text$yd	SEGMENT
??__Fpg@@YAXXZ PROC					; `dynamic atexit destructor for 'pg'', COMDAT
	mov	ecx, OFFSET ?pg@@3VHookCallClass@@A	; pg
	jmp	??1HookCallClass@@UAE@XZ		; HookCallClass::~HookCallClass
??__Fpg@@YAXXZ ENDP					; `dynamic atexit destructor for 'pg''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Ffbh@@YAXXZ
text$yd	SEGMENT
??__Ffbh@@YAXXZ PROC					; `dynamic atexit destructor for 'fbh'', COMDAT
	mov	ecx, OFFSET ?fbh@@3VHookCallClass@@A	; fbh
	jmp	??1HookCallClass@@UAE@XZ		; HookCallClass::~HookCallClass
??__Ffbh@@YAXXZ ENDP					; `dynamic atexit destructor for 'fbh''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Fpjh@@YAXXZ
text$yd	SEGMENT
??__Fpjh@@YAXXZ PROC					; `dynamic atexit destructor for 'pjh'', COMDAT
	mov	ecx, OFFSET ?pjh@@3VHookJumpClass@@A	; pjh
	jmp	??1HookJumpClass@@UAE@XZ		; HookJumpClass::~HookJumpClass
??__Fpjh@@YAXXZ ENDP					; `dynamic atexit destructor for 'pjh''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Fplh@@YAXXZ
text$yd	SEGMENT
??__Fplh@@YAXXZ PROC					; `dynamic atexit destructor for 'plh'', COMDAT
	mov	ecx, OFFSET ?plh@@3VHookJumpClass@@A	; plh
	jmp	??1HookJumpClass@@UAE@XZ		; HookJumpClass::~HookJumpClass
??__Fplh@@YAXXZ ENDP					; `dynamic atexit destructor for 'plh''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Fcbr@@YAXXZ
text$yd	SEGMENT
??__Fcbr@@YAXXZ PROC					; `dynamic atexit destructor for 'cbr'', COMDAT
	mov	ecx, OFFSET ?cbr@@3VHookCallClass@@A	; cbr
	jmp	??1HookCallClass@@UAE@XZ		; HookCallClass::~HookCallClass
??__Fcbr@@YAXXZ ENDP					; `dynamic atexit destructor for 'cbr''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Fsuicideh@@YAXXZ
text$yd	SEGMENT
??__Fsuicideh@@YAXXZ PROC				; `dynamic atexit destructor for 'suicideh'', COMDAT
	mov	ecx, OFFSET ?suicideh@@3VHookCallClass@@A ; suicideh
	jmp	??1HookCallClass@@UAE@XZ		; HookCallClass::~HookCallClass
??__Fsuicideh@@YAXXZ ENDP				; `dynamic atexit destructor for 'suicideh''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Fcto@@YAXXZ
text$yd	SEGMENT
??__Fcto@@YAXXZ PROC					; `dynamic atexit destructor for 'cto'', COMDAT
	mov	ecx, OFFSET ?cto@@3VHookJumpClass@@A	; cto
	jmp	??1HookJumpClass@@UAE@XZ		; HookJumpClass::~HookJumpClass
??__Fcto@@YAXXZ ENDP					; `dynamic atexit destructor for 'cto''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Frh@@YAXXZ
text$yd	SEGMENT
??__Frh@@YAXXZ PROC					; `dynamic atexit destructor for 'rh'', COMDAT
	mov	ecx, OFFSET ?rh@@3VHookJumpClass@@A	; rh
	jmp	??1HookJumpClass@@UAE@XZ		; HookJumpClass::~HookJumpClass
??__Frh@@YAXXZ ENDP					; `dynamic atexit destructor for 'rh''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Ftch@@YAXXZ
text$yd	SEGMENT
??__Ftch@@YAXXZ PROC					; `dynamic atexit destructor for 'tch'', COMDAT
	mov	ecx, OFFSET ?tch@@3VHookCallClass@@A	; tch
	jmp	??1HookCallClass@@UAE@XZ		; HookCallClass::~HookCallClass
??__Ftch@@YAXXZ ENDP					; `dynamic atexit destructor for 'tch''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Fshh@@YAXXZ
text$yd	SEGMENT
??__Fshh@@YAXXZ PROC					; `dynamic atexit destructor for 'shh'', COMDAT
	mov	ecx, OFFSET ?shh@@3VHookCallClass@@A	; shh
	jmp	??1HookCallClass@@UAE@XZ		; HookCallClass::~HookCallClass
??__Fshh@@YAXXZ ENDP					; `dynamic atexit destructor for 'shh''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Fprdh@@YAXXZ
text$yd	SEGMENT
??__Fprdh@@YAXXZ PROC					; `dynamic atexit destructor for 'prdh'', COMDAT
	mov	ecx, OFFSET ?prdh@@3VHookCallClass@@A	; prdh
	jmp	??1HookCallClass@@UAE@XZ		; HookCallClass::~HookCallClass
??__Fprdh@@YAXXZ ENDP					; `dynamic atexit destructor for 'prdh''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Fpph@@YAXXZ
text$yd	SEGMENT
??__Fpph@@YAXXZ PROC					; `dynamic atexit destructor for 'pph'', COMDAT
	mov	ecx, OFFSET ?pph@@3VHookCallClass@@A	; pph
	jmp	??1HookCallClass@@UAE@XZ		; HookCallClass::~HookCallClass
??__Fpph@@YAXXZ ENDP					; `dynamic atexit destructor for 'pph''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Fwph@@YAXXZ
text$yd	SEGMENT
??__Fwph@@YAXXZ PROC					; `dynamic atexit destructor for 'wph'', COMDAT
	mov	ecx, OFFSET ?wph@@3VHookJumpClass@@A	; wph
	jmp	??1HookJumpClass@@UAE@XZ		; HookJumpClass::~HookJumpClass
??__Fwph@@YAXXZ ENDP					; `dynamic atexit destructor for 'wph''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Fckac@@YAXXZ
text$yd	SEGMENT
??__Fckac@@YAXXZ PROC					; `dynamic atexit destructor for 'ckac'', COMDAT
	mov	ecx, OFFSET ?ckac@@3VHookJumpClass@@A	; ckac
	jmp	??1HookJumpClass@@UAE@XZ		; HookJumpClass::~HookJumpClass
??__Fckac@@YAXXZ ENDP					; `dynamic atexit destructor for 'ckac''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Fbus@@YAXXZ
text$yd	SEGMENT
??__Fbus@@YAXXZ PROC					; `dynamic atexit destructor for 'bus'', COMDAT
	mov	ecx, OFFSET ?bus@@3VHookJumpClass@@A	; bus
	jmp	??1HookJumpClass@@UAE@XZ		; HookJumpClass::~HookJumpClass
??__Fbus@@YAXXZ ENDP					; `dynamic atexit destructor for 'bus''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Fcrsp@@YAXXZ
text$yd	SEGMENT
??__Fcrsp@@YAXXZ PROC					; `dynamic atexit destructor for 'crsp'', COMDAT
	mov	ecx, OFFSET ?crsp@@3VHookJumpClass@@A	; crsp
	jmp	??1HookJumpClass@@UAE@XZ		; HookJumpClass::~HookJumpClass
??__Fcrsp@@YAXXZ ENDP					; `dynamic atexit destructor for 'crsp''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Fsuowl@@YAXXZ
text$yd	SEGMENT
??__Fsuowl@@YAXXZ PROC					; `dynamic atexit destructor for 'suowl'', COMDAT
	mov	DWORD PTR ?suowl@@3VPatchByteClass@@A, OFFSET ??_7PatchByteClass@@6B@
	mov	ecx, OFFSET ?suowl@@3VPatchByteClass@@A	; suowl
	jmp	??1HookBase@@UAE@XZ			; HookBase::~HookBase
??__Fsuowl@@YAXXZ ENDP					; `dynamic atexit destructor for 'suowl''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Fgof@@YAXXZ
text$yd	SEGMENT
??__Fgof@@YAXXZ PROC					; `dynamic atexit destructor for 'gof'', COMDAT
	mov	DWORD PTR ?gof@@3VPatchByteClass@@A, OFFSET ??_7PatchByteClass@@6B@
	mov	ecx, OFFSET ?gof@@3VPatchByteClass@@A	; gof
	jmp	??1HookBase@@UAE@XZ			; HookBase::~HookBase
??__Fgof@@YAXXZ ENDP					; `dynamic atexit destructor for 'gof''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Fwlsf@@YAXXZ
text$yd	SEGMENT
??__Fwlsf@@YAXXZ PROC					; `dynamic atexit destructor for 'wlsf'', COMDAT
	mov	ecx, OFFSET ?wlsf@@3VHookCallClass@@A	; wlsf
	jmp	??1HookCallClass@@UAE@XZ		; HookCallClass::~HookCallClass
??__Fwlsf@@YAXXZ ENDP					; `dynamic atexit destructor for 'wlsf''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Fwlnle@@YAXXZ
text$yd	SEGMENT
??__Fwlnle@@YAXXZ PROC					; `dynamic atexit destructor for 'wlnle'', COMDAT
	mov	ecx, OFFSET ?wlnle@@3VHookCallClass@@A	; wlnle
	jmp	??1HookCallClass@@UAE@XZ		; HookCallClass::~HookCallClass
??__Fwlnle@@YAXXZ ENDP					; `dynamic atexit destructor for 'wlnle''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Ftbf@@YAXXZ
text$yd	SEGMENT
??__Ftbf@@YAXXZ PROC					; `dynamic atexit destructor for 'tbf'', COMDAT
	mov	ecx, OFFSET ?tbf@@3VHookCallClass@@A	; tbf
	jmp	??1HookCallClass@@UAE@XZ		; HookCallClass::~HookCallClass
??__Ftbf@@YAXXZ ENDP					; `dynamic atexit destructor for 'tbf''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Fpf@@YAXXZ
text$yd	SEGMENT
??__Fpf@@YAXXZ PROC					; `dynamic atexit destructor for 'pf'', COMDAT
	mov	ecx, OFFSET ?pf@@3VHookJumpClass@@A	; pf
	jmp	??1HookJumpClass@@UAE@XZ		; HookJumpClass::~HookJumpClass
??__Fpf@@YAXXZ ENDP					; `dynamic atexit destructor for 'pf''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Fuiafh@@YAXXZ
text$yd	SEGMENT
??__Fuiafh@@YAXXZ PROC					; `dynamic atexit destructor for 'uiafh'', COMDAT
	mov	ecx, OFFSET ?uiafh@@3VHookCallClass@@A	; uiafh
	jmp	??1HookCallClass@@UAE@XZ		; HookCallClass::~HookCallClass
??__Fuiafh@@YAXXZ ENDP					; `dynamic atexit destructor for 'uiafh''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Fdch@@YAXXZ
text$yd	SEGMENT
??__Fdch@@YAXXZ PROC					; `dynamic atexit destructor for 'dch'', COMDAT
	mov	ecx, OFFSET ?dch@@3VHookJumpClass@@A	; dch
	jmp	??1HookJumpClass@@UAE@XZ		; HookJumpClass::~HookJumpClass
??__Fdch@@YAXXZ ENDP					; `dynamic atexit destructor for 'dch''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Fpsp@@YAXXZ
text$yd	SEGMENT
??__Fpsp@@YAXXZ PROC					; `dynamic atexit destructor for 'psp'', COMDAT
	mov	ecx, OFFSET ?psp@@3VHookCallClass@@A	; psp
	jmp	??1HookCallClass@@UAE@XZ		; HookCallClass::~HookCallClass
??__Fpsp@@YAXXZ ENDP					; `dynamic atexit destructor for 'psp''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Fsssh@@YAXXZ
text$yd	SEGMENT
??__Fsssh@@YAXXZ PROC					; `dynamic atexit destructor for 'sssh'', COMDAT
	mov	ecx, OFFSET ?sssh@@3VHookJumpClass@@A	; sssh
	jmp	??1HookJumpClass@@UAE@XZ		; HookJumpClass::~HookJumpClass
??__Fsssh@@YAXXZ ENDP					; `dynamic atexit destructor for 'sssh''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Fvfkh@@YAXXZ
text$yd	SEGMENT
??__Fvfkh@@YAXXZ PROC					; `dynamic atexit destructor for 'vfkh'', COMDAT
	mov	ecx, OFFSET ?vfkh@@3VHookJumpClass@@A	; vfkh
	jmp	??1HookJumpClass@@UAE@XZ		; HookJumpClass::~HookJumpClass
??__Fvfkh@@YAXXZ ENDP					; `dynamic atexit destructor for 'vfkh''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__F?m_list@gzHookManager@@2V?$ncDynamicVector@PAVHookBase@@@@A@@YAXXZ
text$yd	SEGMENT
??__F?m_list@gzHookManager@@2V?$ncDynamicVector@PAVHookBase@@@@A@@YAXXZ PROC ; `dynamic atexit destructor for 'gzHookManager::m_list'', COMDAT
	push	esi
	xor	esi, esi
	cmp	DWORD PTR ?m_list@gzHookManager@@2V?$ncDynamicVector@PAVHookBase@@@@A+4, esi
	mov	DWORD PTR ?m_list@gzHookManager@@2V?$ncDynamicVector@PAVHookBase@@@@A+12, esi
	mov	DWORD PTR ?m_list@gzHookManager@@2V?$ncDynamicVector@PAVHookBase@@@@A, OFFSET ??_7?$ncVector@PAVHookBase@@@@6B@
	je	SHORT $LN13@m_list
	push	OFFSET ??_C@_0CC@FAGGMAID@ncVector?$DMclass?5HookBase?5?$CK?$DO?3?3Clea@
	push	54					; 00000036H
	push	OFFSET ??_C@_0CB@BOFIHJED@d?3?2source?5code?2nc?5lib?2ncVector?4h@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	eax, DWORD PTR ?m_list@gzHookManager@@2V?$ncDynamicVector@PAVHookBase@@@@A+4
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
	mov	DWORD PTR ?m_list@gzHookManager@@2V?$ncDynamicVector@PAVHookBase@@@@A+4, esi
$LN13@m_list:
	mov	DWORD PTR ?m_list@gzHookManager@@2V?$ncDynamicVector@PAVHookBase@@@@A+8, esi
	pop	esi
	ret	0
??__F?m_list@gzHookManager@@2V?$ncDynamicVector@PAVHookBase@@@@A@@YAXXZ ENDP ; `dynamic atexit destructor for 'gzHookManager::m_list''
text$yd	ENDS
PUBLIC	?pg@@3VHookCallClass@@A				; pg
PUBLIC	?js@@3VHookJumpClass@@A				; js
PUBLIC	?gof@@3VPatchByteClass@@A			; gof
PUBLIC	?hgo@@3VHookJumpClass@@A			; hgo
PUBLIC	?pf@@3VHookJumpClass@@A				; pf
PUBLIC	?cto@@3VHookJumpClass@@A			; cto
PUBLIC	?jc@@3VHookJumpClass@@A				; jc
PUBLIC	?wlnle@@3VHookCallClass@@A			; wlnle
PUBLIC	?dch@@3VHookJumpClass@@A			; dch
PUBLIC	?wlsf@@3VHookCallClass@@A			; wlsf
PUBLIC	?cmcl@@3VPatchByteClass@@A			; cmcl
PUBLIC	?ss@@3VHookCallClass@@A				; ss
PUBLIC	?cobpnh@@3VHookJumpClass@@A			; cobpnh
PUBLIC	?tbf@@3VHookCallClass@@A			; tbf
PUBLIC	?suowl@@3VPatchByteClass@@A			; suowl
PUBLIC	?tdhb@@3VPatchByteClass@@A			; tdhb
PUBLIC	?plh@@3VHookJumpClass@@A			; plh
PUBLIC	?oke@@3VHookJumpClass@@A			; oke
PUBLIC	?tdh@@3VHookCallClass@@A			; tdh
PUBLIC	?cd@@3VHookJumpClass@@A				; cd
PUBLIC	?llh@@3VHookCallClass@@A			; llh
PUBLIC	?cbr@@3VHookCallClass@@A			; cbr
PUBLIC	?sssh@@3VHookJumpClass@@A			; sssh
PUBLIC	?shh@@3VHookCallClass@@A			; shh
PUBLIC	?crsp@@3VHookJumpClass@@A			; crsp
PUBLIC	?uiafh@@3VHookCallClass@@A			; uiafh
PUBLIC	?ckac@@3VHookJumpClass@@A			; ckac
PUBLIC	?prdh@@3VHookCallClass@@A			; prdh
PUBLIC	?bus@@3VHookJumpClass@@A			; bus
PUBLIC	?fbh@@3VHookCallClass@@A			; fbh
PUBLIC	?cobih@@3VHookJumpClass@@A			; cobih
PUBLIC	?sdh@@3VHookJumpClass@@A			; sdh
PUBLIC	?fuh@@3VHookCallClass@@A			; fuh
PUBLIC	?psp@@3VHookCallClass@@A			; psp
PUBLIC	?pph@@3VHookCallClass@@A			; pph
PUBLIC	?pjh@@3VHookJumpClass@@A			; pjh
PUBLIC	?st@@3VHookCallClass@@A				; st
PUBLIC	?ook@@3VHookJumpClass@@A			; ook
PUBLIC	?vfkh@@3VHookJumpClass@@A			; vfkh
PUBLIC	?tch@@3VHookCallClass@@A			; tch
PUBLIC	?wph@@3VHookJumpClass@@A			; wph
PUBLIC	?rh@@3VHookJumpClass@@A				; rh
PUBLIC	?ssp@@3VPatchByteClass@@A			; ssp
PUBLIC	?suicideh@@3VHookCallClass@@A			; suicideh
_BSS	SEGMENT
?pg@@3VHookCallClass@@A DB 018H DUP (?)			; pg
?js@@3VHookJumpClass@@A DB 018H DUP (?)			; js
?gof@@3VPatchByteClass@@A DB 01cH DUP (?)		; gof
?hgo@@3VHookJumpClass@@A DB 018H DUP (?)		; hgo
?pf@@3VHookJumpClass@@A DB 018H DUP (?)			; pf
?cto@@3VHookJumpClass@@A DB 018H DUP (?)		; cto
?jc@@3VHookJumpClass@@A DB 018H DUP (?)			; jc
?wlnle@@3VHookCallClass@@A DB 018H DUP (?)		; wlnle
?dch@@3VHookJumpClass@@A DB 018H DUP (?)		; dch
?wlsf@@3VHookCallClass@@A DB 018H DUP (?)		; wlsf
?cmcl@@3VPatchByteClass@@A DB 01cH DUP (?)		; cmcl
?ss@@3VHookCallClass@@A DB 018H DUP (?)			; ss
?cobpnh@@3VHookJumpClass@@A DB 018H DUP (?)		; cobpnh
?tbf@@3VHookCallClass@@A DB 018H DUP (?)		; tbf
?suowl@@3VPatchByteClass@@A DB 01cH DUP (?)		; suowl
?tdhb@@3VPatchByteClass@@A DB 01cH DUP (?)		; tdhb
?plh@@3VHookJumpClass@@A DB 018H DUP (?)		; plh
?oke@@3VHookJumpClass@@A DB 018H DUP (?)		; oke
?tdh@@3VHookCallClass@@A DB 018H DUP (?)		; tdh
?cd@@3VHookJumpClass@@A DB 018H DUP (?)			; cd
?llh@@3VHookCallClass@@A DB 018H DUP (?)		; llh
?cbr@@3VHookCallClass@@A DB 018H DUP (?)		; cbr
?sssh@@3VHookJumpClass@@A DB 018H DUP (?)		; sssh
?shh@@3VHookCallClass@@A DB 018H DUP (?)		; shh
?crsp@@3VHookJumpClass@@A DB 018H DUP (?)		; crsp
?uiafh@@3VHookCallClass@@A DB 018H DUP (?)		; uiafh
?ckac@@3VHookJumpClass@@A DB 018H DUP (?)		; ckac
?prdh@@3VHookCallClass@@A DB 018H DUP (?)		; prdh
?bus@@3VHookJumpClass@@A DB 018H DUP (?)		; bus
?fbh@@3VHookCallClass@@A DB 018H DUP (?)		; fbh
?cobih@@3VHookJumpClass@@A DB 018H DUP (?)		; cobih
?sdh@@3VHookJumpClass@@A DB 018H DUP (?)		; sdh
?fuh@@3VHookCallClass@@A DB 018H DUP (?)		; fuh
?psp@@3VHookCallClass@@A DB 018H DUP (?)		; psp
?pph@@3VHookCallClass@@A DB 018H DUP (?)		; pph
?pjh@@3VHookJumpClass@@A DB 018H DUP (?)		; pjh
?st@@3VHookCallClass@@A DB 018H DUP (?)			; st
?ook@@3VHookJumpClass@@A DB 018H DUP (?)		; ook
?vfkh@@3VHookJumpClass@@A DB 018H DUP (?)		; vfkh
?tch@@3VHookCallClass@@A DB 018H DUP (?)		; tch
?wph@@3VHookJumpClass@@A DB 018H DUP (?)		; wph
?rh@@3VHookJumpClass@@A DB 018H DUP (?)			; rh
?ssp@@3VPatchByteClass@@A DB 01cH DUP (?)		; ssp
?suicideh@@3VHookCallClass@@A DB 018H DUP (?)		; suicideh
_BSS	ENDS
CRT$XCU	SEGMENT
?m_list$initializer$@gzHookManager@@2P6AXXZA DD FLAT:??__E?m_list@gzHookManager@@2V?$ncDynamicVector@PAVHookBase@@@@A@@YAXXZ ; gzHookManager::m_list$initializer$
_llh$initializer$ DD FLAT:??__Ellh@@YAXXZ
_hgo$initializer$ DD FLAT:??__Ehgo@@YAXXZ
_fuh$initializer$ DD FLAT:??__Efuh@@YAXXZ
_cobih$initializer$ DD FLAT:??__Ecobih@@YAXXZ
_cobpnh$initializer$ DD FLAT:??__Ecobpnh@@YAXXZ
_sdh$initializer$ DD FLAT:??__Esdh@@YAXXZ
_tdh$initializer$ DD FLAT:??__Etdh@@YAXXZ
_tdhb$initializer$ DD FLAT:??__Etdhb@@YAXXZ
_ook$initializer$ DD FLAT:??__Eook@@YAXXZ
_oke$initializer$ DD FLAT:??__Eoke@@YAXXZ
_st$initializer$ DD FLAT:??__Est@@YAXXZ
_js$initializer$ DD FLAT:??__Ejs@@YAXXZ
_jc$initializer$ DD FLAT:??__Ejc@@YAXXZ
_ss$initializer$ DD FLAT:??__Ess@@YAXXZ
_ssp$initializer$ DD FLAT:??__Essp@@YAXXZ
_cd$initializer$ DD FLAT:??__Ecd@@YAXXZ
_cmcl$initializer$ DD FLAT:??__Ecmcl@@YAXXZ
_pg$initializer$ DD FLAT:??__Epg@@YAXXZ
_fbh$initializer$ DD FLAT:??__Efbh@@YAXXZ
_pjh$initializer$ DD FLAT:??__Epjh@@YAXXZ
_plh$initializer$ DD FLAT:??__Eplh@@YAXXZ
_cbr$initializer$ DD FLAT:??__Ecbr@@YAXXZ
_suicideh$initializer$ DD FLAT:??__Esuicideh@@YAXXZ
_cto$initializer$ DD FLAT:??__Ecto@@YAXXZ
_rh$initializer$ DD FLAT:??__Erh@@YAXXZ
_tch$initializer$ DD FLAT:??__Etch@@YAXXZ
_shh$initializer$ DD FLAT:??__Eshh@@YAXXZ
_prdh$initializer$ DD FLAT:??__Eprdh@@YAXXZ
_pph$initializer$ DD FLAT:??__Epph@@YAXXZ
_wph$initializer$ DD FLAT:??__Ewph@@YAXXZ
_ckac$initializer$ DD FLAT:??__Eckac@@YAXXZ
_bus$initializer$ DD FLAT:??__Ebus@@YAXXZ
_crsp$initializer$ DD FLAT:??__Ecrsp@@YAXXZ
_suowl$initializer$ DD FLAT:??__Esuowl@@YAXXZ
_gof$initializer$ DD FLAT:??__Egof@@YAXXZ
_wlsf$initializer$ DD FLAT:??__Ewlsf@@YAXXZ
_wlnle$initializer$ DD FLAT:??__Ewlnle@@YAXXZ
_tbf$initializer$ DD FLAT:??__Etbf@@YAXXZ
_pf$initializer$ DD FLAT:??__Epf@@YAXXZ
_uiafh$initializer$ DD FLAT:??__Euiafh@@YAXXZ
_dch$initializer$ DD FLAT:??__Edch@@YAXXZ
_psp$initializer$ DD FLAT:??__Epsp@@YAXXZ
_sssh$initializer$ DD FLAT:??__Esssh@@YAXXZ
_vfkh$initializer$ DD FLAT:??__Evfkh@@YAXXZ
CRT$XCU	ENDS
END
