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

	TITLE	d:\Source Code\GZGM\gzhooks.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
PUBLIC	?RefineryLastPoolDistribute@@3PAMA		; RefineryLastPoolDistribute
_BSS	SEGMENT
?Speed_Sync_Soldier@@3PAVnc_SoldierGameObj@@A DD 01H DUP (?) ; Speed_Sync_Soldier
?Speed_Sync_Speed@@3MA DD 01H DUP (?)			; Speed_Sync_Speed
?RefineryLastPoolDistribute@@3PAMA DD 02H DUP (?)	; RefineryLastPoolDistribute
_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
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	?GetBuffer@aStringData@@QAEPAXXZ		; aStringData::GetBuffer
; Function compile flags: /Ogtpy
; File d:\source code\alib\include\astring.h
;	COMDAT ?GetBuffer@aStringData@@QAEPAXXZ
_TEXT	SEGMENT
?GetBuffer@aStringData@@QAEPAXXZ PROC			; aStringData::GetBuffer, COMDAT
; _this$ = ecx

; 33   : 	inline void *GetBuffer() { return this->m_ptr; };

	mov	eax, DWORD PTR [ecx]
	ret	0
?GetBuffer@aStringData@@QAEPAXXZ ENDP			; aStringData::GetBuffer
_TEXT	ENDS
PUBLIC	?GetString@aString@@QBEPBDXZ			; aString::GetString
; Function compile flags: /Ogtpy
;	COMDAT ?GetString@aString@@QBEPBDXZ
_TEXT	SEGMENT
?GetString@aString@@QBEPBDXZ PROC			; aString::GetString, COMDAT
; _this$ = ecx

; 142  : 	const char *GetString() const { return (this->m_data) ? (const char*)this->m_data->GetBuffer() : NULL; };

	mov	eax, DWORD PTR [ecx+4]
	test	eax, eax
	je	SHORT $LN3@GetString
	mov	eax, DWORD PTR [eax]
	ret	0
$LN3@GetString:
	xor	eax, eax
	ret	0
?GetString@aString@@QBEPBDXZ ENDP			; aString::GetString
_TEXT	ENDS
PUBLIC	??1aString@@UAE@XZ				; aString::~aString
EXTRN	??1aStringBase@@UAE@XZ:PROC			; aStringBase::~aStringBase
; Function compile flags: /Ogtpy
;	COMDAT ??1aString@@UAE@XZ
_TEXT	SEGMENT
??1aString@@UAE@XZ PROC					; aString::~aString, COMDAT
; _this$ = ecx
	jmp	??1aStringBase@@UAE@XZ			; aStringBase::~aStringBase
??1aString@@UAE@XZ ENDP					; aString::~aString
_TEXT	ENDS
PUBLIC	??8@YA_NABVaString@@0@Z				; operator==
EXTRN	?Compare@aString@@QBE_NABV1@H_N@Z:PROC		; aString::Compare
EXTRN	?GetLength@aStringBase@@QBEIXZ:PROC		; aStringBase::GetLength
; Function compile flags: /Ogtpy
;	COMDAT ??8@YA_NABVaString@@0@Z
_TEXT	SEGMENT
_str1$ = 8						; size = 4
_str2$ = 12						; size = 4
??8@YA_NABVaString@@0@Z PROC				; operator==, COMDAT

; 183  : {

	push	ebx
	push	esi

; 184  : 	return ((str1.GetLength() == str2.GetLength()) && str1.Compare(str2));

	mov	esi, DWORD PTR _str1$[esp+4]
	push	edi
	mov	ecx, esi
	call	?GetLength@aStringBase@@QBEIXZ		; aStringBase::GetLength
	mov	edi, DWORD PTR _str2$[esp+8]
	mov	ecx, edi
	mov	ebx, eax
	call	?GetLength@aStringBase@@QBEIXZ		; aStringBase::GetLength
	cmp	ebx, eax
	jne	SHORT $LN3@operator
	push	0
	push	-1
	push	edi
	mov	ecx, esi
	call	?Compare@aString@@QBE_NABV1@H_N@Z	; aString::Compare
	test	al, al
	je	SHORT $LN3@operator
	pop	edi
	pop	esi
	mov	eax, 1
	pop	ebx

; 185  : }

	ret	0
$LN3@operator:
	pop	edi
	pop	esi

; 184  : 	return ((str1.GetLength() == str2.GetLength()) && str1.Compare(str2));

	xor	eax, eax
	pop	ebx

; 185  : }

	ret	0
??8@YA_NABVaString@@0@Z ENDP				; operator==
_TEXT	ENDS
PUBLIC	?GetString@aWideString@@QBEPB_WXZ		; aWideString::GetString
; Function compile flags: /Ogtpy
;	COMDAT ?GetString@aWideString@@QBEPB_WXZ
_TEXT	SEGMENT
?GetString@aWideString@@QBEPB_WXZ PROC			; aWideString::GetString, COMDAT
; _this$ = ecx

; 218  : 	const wchar_t *GetString() const { return (this->m_data) ? (const wchar_t*)this->m_data->GetBuffer() : NULL; };

	mov	eax, DWORD PTR [ecx+4]
	test	eax, eax
	je	SHORT $LN3@GetString@2
	mov	eax, DWORD PTR [eax]
	ret	0
$LN3@GetString@2:
	xor	eax, eax
	ret	0
?GetString@aWideString@@QBEPB_WXZ ENDP			; aWideString::GetString
_TEXT	ENDS
PUBLIC	??1aWideString@@UAE@XZ				; aWideString::~aWideString
; Function compile flags: /Ogtpy
;	COMDAT ??1aWideString@@UAE@XZ
_TEXT	SEGMENT
??1aWideString@@UAE@XZ PROC				; aWideString::~aWideString, COMDAT
; _this$ = ecx
	jmp	??1aStringBase@@UAE@XZ			; aStringBase::~aStringBase
??1aWideString@@UAE@XZ ENDP				; aWideString::~aWideString
_TEXT	ENDS
PUBLIC	??0aCriticalSection@@QAE@XZ			; aCriticalSection::aCriticalSection
EXTRN	__imp__InitializeCriticalSection@4:PROC
; Function compile flags: /Ogtpy
; File d:\source code\alib\include\acriticalsection.h
;	COMDAT ??0aCriticalSection@@QAE@XZ
_TEXT	SEGMENT
??0aCriticalSection@@QAE@XZ PROC			; aCriticalSection::aCriticalSection, COMDAT
; _this$ = ecx

; 7    : 	aCriticalSection()

	push	esi
	mov	esi, ecx

; 8    : 	{
; 9    : 		InitializeCriticalSection(&this->m_session);

	push	esi
	call	DWORD PTR __imp__InitializeCriticalSection@4

; 10   : 	};

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

; 13   : 		DeleteCriticalSection(&this->m_session);

	push	ecx
	call	DWORD PTR __imp__DeleteCriticalSection@4

; 14   : 	};

	ret	0
??1aCriticalSection@@QAE@XZ ENDP			; aCriticalSection::~aCriticalSection
_TEXT	ENDS
PUBLIC	?Get@aRandom@@AAEKXZ				; aRandom::Get
; Function compile flags: /Ogtpy
; File d:\source code\alib\include\arandom.h
;	COMDAT ?Get@aRandom@@AAEKXZ
_TEXT	SEGMENT
?Get@aRandom@@AAEKXZ PROC				; aRandom::Get, COMDAT
; _this$ = ecx

; 9    : 		if ((this->m_count++) > 64)

	mov	eax, DWORD PTR [ecx]
	cmp	eax, 64					; 00000040H
	lea	edx, DWORD PTR [eax+1]
	mov	DWORD PTR [ecx], edx
	jle	SHORT $LN1@Get

; 10   : 			this->m_count = 1;

	mov	DWORD PTR [ecx], 1
$LN1@Get:

; 11   : 		this->m_seed = (this->m_seed * 0x015a4e33) + this->m_count;

	mov	eax, DWORD PTR [ecx+4]
	imul	eax, 22695475				; 015a4e33H
	add	eax, DWORD PTR [ecx]
	mov	DWORD PTR [ecx+4], eax

; 12   : 		return (this->m_seed >> 16) & 0xFFFF;

	movzx	eax, WORD PTR [ecx+6]

; 13   : 	};

	ret	0
?Get@aRandom@@AAEKXZ ENDP				; aRandom::Get
_TEXT	ENDS
PUBLIC	?Get_Int@aRandom@@QAEJJJ@Z			; aRandom::Get_Int
; Function compile flags: /Ogtpy
;	COMDAT ?Get_Int@aRandom@@QAEJJJ@Z
_TEXT	SEGMENT
_Min$ = 8						; size = 4
_Max$ = 12						; size = 4
?Get_Int@aRandom@@QAEJJJ@Z PROC				; aRandom::Get_Int, COMDAT
; _this$ = ecx

; 46   : 		if (Min == Max)

	mov	eax, DWORD PTR _Min$[esp-4]
	push	esi
	mov	esi, DWORD PTR _Max$[esp]
	cmp	eax, esi

; 47   : 			return Min;

	je	SHORT $LN3@Get_Int
	push	edi

; 48   : 		long Minimum = Min, Maximum = Max;

	mov	edi, eax

; 49   : 		if (Min > Max)

	jle	SHORT $LN1@Get_Int

; 50   : 		{
; 51   : 			Minimum = Max;

	mov	edi, esi

; 52   : 			Maximum = Min;

	mov	esi, eax
$LN1@Get_Int:

; 53   : 		}
; 54   : 		return Minimum + this->Get() % ((Maximum +1) - Minimum);

	mov	eax, DWORD PTR [ecx]
	cmp	eax, 64					; 00000040H
	lea	edx, DWORD PTR [eax+1]
	mov	DWORD PTR [ecx], edx
	jle	SHORT $LN5@Get_Int
	mov	DWORD PTR [ecx], 1
$LN5@Get_Int:
	mov	eax, DWORD PTR [ecx+4]
	imul	eax, 22695475				; 015a4e33H
	add	eax, DWORD PTR [ecx]
	sub	esi, edi
	mov	DWORD PTR [ecx+4], eax
	movzx	eax, WORD PTR [ecx+6]
	add	esi, 1
	xor	edx, edx
	div	esi
	mov	eax, edx
	add	eax, edi
	pop	edi
$LN3@Get_Int:
	pop	esi

; 55   : 	};

	ret	8
?Get_Int@aRandom@@QAEJJJ@Z ENDP				; aRandom::Get_Int
_TEXT	ENDS
PUBLIC	_floorf
EXTRN	__fltused:DWORD
EXTRN	_floor:PROC
; Function compile flags: /Ogtpy
; File c:\program files\microsoft visual studio 8\vc\include\math.h
;	COMDAT _floorf
_TEXT	SEGMENT
__X$ = 8						; size = 4
_floorf	PROC						; COMDAT

; 405  :         {return ((float)floor((double)_X)); }

	fld	DWORD PTR __X$[esp-4]
	sub	esp, 8
	fstp	QWORD PTR [esp]
	call	_floor
	add	esp, 8
	ret	0
_floorf	ENDP
_TEXT	ENDS
PUBLIC	?floor@@YAMM@Z					; floor
; Function compile flags: /Ogtpy
;	COMDAT ?floor@@YAMM@Z
_TEXT	SEGMENT
__X$ = 8						; size = 4
?floor@@YAMM@Z PROC					; floor, COMDAT

; 512  :         {return (floorf(_X)); }

	fld	DWORD PTR __X$[esp-4]
	sub	esp, 8
	fstp	QWORD PTR [esp]
	call	_floor
	add	esp, 8
	ret	0
?floor@@YAMM@Z ENDP					; floor
_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
; 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	??Ync_FloatDataSafeClass@@QAEXM@Z		; nc_FloatDataSafeClass::operator+=
; Function compile flags: /Ogtpy
;	COMDAT ??Ync_FloatDataSafeClass@@QAEXM@Z
_TEXT	SEGMENT
_value$ = 8						; size = 4
??Ync_FloatDataSafeClass@@QAEXM@Z PROC			; nc_FloatDataSafeClass::operator+=, COMDAT
; _this$ = ecx

; 241  : 	void operator+=(float value) {

	push	esi
	mov	esi, ecx

; 242  : 		value = this->Get() + value;

	call	?Get@nc_FloatDataSafeClass@@QAEMXZ	; nc_FloatDataSafeClass::Get
	fadd	DWORD PTR _value$[esp]

; 243  : 		this->Set(value);

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

; 244  : 	}

	ret	4
??Ync_FloatDataSafeClass@@QAEXM@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	??_7gzEventBase@@6B@				; gzEventBase::`vftable'
PUBLIC	__real@0000000000000000
PUBLIC	??0gzEventBase@@QAE@XZ				; gzEventBase::gzEventBase
PUBLIC	??_R4gzEventBase@@6B@				; gzEventBase::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVgzEventBase@@@8				; gzEventBase `RTTI Type Descriptor'
PUBLIC	??_R3gzEventBase@@8				; gzEventBase::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2gzEventBase@@8				; gzEventBase::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@gzEventBase@@8			; gzEventBase::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?CanContinue@gzEventBase@@UAE_NXZ		; gzEventBase::CanContinue
PUBLIC	?Skippable@gzEventBase@@UAE_NXZ			; gzEventBase::Skippable
;	COMDAT ??_R1A@?0A@EA@gzEventBase@@8
; File d:\source code\gzgm\gzeventbase.h
rdata$r	SEGMENT
??_R1A@?0A@EA@gzEventBase@@8 DD FLAT:??_R0?AVgzEventBase@@@8 ; gzEventBase::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	00H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3gzEventBase@@8
rdata$r	ENDS
;	COMDAT ??_R2gzEventBase@@8
rdata$r	SEGMENT
??_R2gzEventBase@@8 DD FLAT:??_R1A@?0A@EA@gzEventBase@@8 ; gzEventBase::`RTTI Base Class Array'
rdata$r	ENDS
;	COMDAT ??_R3gzEventBase@@8
rdata$r	SEGMENT
??_R3gzEventBase@@8 DD 00H				; gzEventBase::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	01H
	DD	FLAT:??_R2gzEventBase@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVgzEventBase@@@8
_DATA	SEGMENT
??_R0?AVgzEventBase@@@8 DD FLAT:??_7type_info@@6B@	; gzEventBase `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVgzEventBase@@', 00H
_DATA	ENDS
;	COMDAT ??_R4gzEventBase@@6B@
rdata$r	SEGMENT
??_R4gzEventBase@@6B@ DD 00H				; gzEventBase::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVgzEventBase@@@8
	DD	FLAT:??_R3gzEventBase@@8
rdata$r	ENDS
;	COMDAT ??_7gzEventBase@@6B@
CONST	SEGMENT
??_7gzEventBase@@6B@ DD FLAT:??_R4gzEventBase@@6B@	; gzEventBase::`vftable'
	DD	FLAT:?CanContinue@gzEventBase@@UAE_NXZ
	DD	FLAT:?Skippable@gzEventBase@@UAE_NXZ
CONST	ENDS
;	COMDAT __real@0000000000000000
CONST	SEGMENT
__real@0000000000000000 DQ 00000000000000000r	; 0
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0gzEventBase@@QAE@XZ
_TEXT	SEGMENT
??0gzEventBase@@QAE@XZ PROC				; gzEventBase::gzEventBase, COMDAT
; _this$ = ecx

; 86   : 	{
; 87   : 		this->m_dataDouble	= 0.0f;

	fldz
	mov	eax, ecx

; 88   : 		this->m_dataInt		= 0;
; 89   : 		this->m_eventType	= -1;

	or	ecx, -1
	fstp	QWORD PTR [eax+8]
	mov	DWORD PTR [eax], OFFSET ??_7gzEventBase@@6B@
	mov	DWORD PTR [eax+16], 0
	mov	DWORD PTR [eax+20], ecx

; 90   : 		this->m_objId		= -1;

	mov	DWORD PTR [eax+24], ecx

; 91   : 	};

	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

; 106  : 		this->m_dataInt = data;

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

; 107  : 	};

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

; 114  : 		this->m_eventType = type;

	mov	eax, DWORD PTR _type$[esp-4]
	mov	DWORD PTR [ecx+20], eax

; 115  : 	};

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

; 126  : 		return true;

	mov	al, 1

; 127  : 	};

	ret	0
?CanContinue@gzEventBase@@UAE_NXZ ENDP			; gzEventBase::CanContinue
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Skippable@gzEventBase@@UAE_NXZ
_TEXT	SEGMENT
?Skippable@gzEventBase@@UAE_NXZ PROC			; gzEventBase::Skippable, COMDAT
; _this$ = ecx

; 130  : 		return false;

	xor	al, al

; 131  : 	};

	ret	0
?Skippable@gzEventBase@@UAE_NXZ ENDP			; gzEventBase::Skippable
_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

; 143  : 		return this->m_player;

	mov	eax, DWORD PTR [ecx+32]

; 144  : 	};

	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

; 147  : 		this->m_player = player;

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

; 148  : 	};

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

; 159  : 	gzEVT_SKIPPABLE();

	mov	eax, ecx
	mov	BYTE PTR [eax], 1
	ret	0
??0gzEventSkippable@gzEventPlayerPurchase@@QAE@XZ ENDP	; gzEventPlayerPurchase::gzEventSkippable::gzEventSkippable
_TEXT	ENDS
PUBLIC	?CanContinue@gzEventSkippable@gzEventPlayerPurchase@@QAE_NXZ ; gzEventPlayerPurchase::gzEventSkippable::CanContinue
; Function compile flags: /Ogtpy
;	COMDAT ?CanContinue@gzEventSkippable@gzEventPlayerPurchase@@QAE_NXZ
_TEXT	SEGMENT
?CanContinue@gzEventSkippable@gzEventPlayerPurchase@@QAE_NXZ PROC ; gzEventPlayerPurchase::gzEventSkippable::CanContinue, COMDAT
; _this$ = ecx

; 159  : 	gzEVT_SKIPPABLE();

	mov	al, BYTE PTR [ecx]
	ret	0
?CanContinue@gzEventSkippable@gzEventPlayerPurchase@@QAE_NXZ ENDP ; gzEventPlayerPurchase::gzEventSkippable::CanContinue
_TEXT	ENDS
PUBLIC	?CanContinue@gzEventPlayerPurchase@@UAE_NXZ	; gzEventPlayerPurchase::CanContinue
; Function compile flags: /Ogtpy
;	COMDAT ?CanContinue@gzEventPlayerPurchase@@UAE_NXZ
_TEXT	SEGMENT
?CanContinue@gzEventPlayerPurchase@@UAE_NXZ PROC	; gzEventPlayerPurchase::CanContinue, COMDAT
; _this$ = ecx

; 159  : 	gzEVT_SKIPPABLE();

	mov	al, BYTE PTR [ecx+60]
	ret	0
?CanContinue@gzEventPlayerPurchase@@UAE_NXZ ENDP	; gzEventPlayerPurchase::CanContinue
_TEXT	ENDS
PUBLIC	??0gzEventSkippable@gzEventPlayerChat@@QAE@XZ	; gzEventPlayerChat::gzEventSkippable::gzEventSkippable
; Function compile flags: /Ogtpy
;	COMDAT ??0gzEventSkippable@gzEventPlayerChat@@QAE@XZ
_TEXT	SEGMENT
??0gzEventSkippable@gzEventPlayerChat@@QAE@XZ PROC	; gzEventPlayerChat::gzEventSkippable::gzEventSkippable, COMDAT
; _this$ = ecx

; 169  : 	gzEVT_SKIPPABLE();

	mov	eax, ecx
	mov	BYTE PTR [eax], 1
	ret	0
??0gzEventSkippable@gzEventPlayerChat@@QAE@XZ ENDP	; gzEventPlayerChat::gzEventSkippable::gzEventSkippable
_TEXT	ENDS
PUBLIC	?CanContinue@gzEventSkippable@gzEventPlayerChat@@QAE_NXZ ; gzEventPlayerChat::gzEventSkippable::CanContinue
; Function compile flags: /Ogtpy
;	COMDAT ?CanContinue@gzEventSkippable@gzEventPlayerChat@@QAE_NXZ
_TEXT	SEGMENT
?CanContinue@gzEventSkippable@gzEventPlayerChat@@QAE_NXZ PROC ; gzEventPlayerChat::gzEventSkippable::CanContinue, COMDAT
; _this$ = ecx

; 169  : 	gzEVT_SKIPPABLE();

	mov	al, BYTE PTR [ecx]
	ret	0
?CanContinue@gzEventSkippable@gzEventPlayerChat@@QAE_NXZ ENDP ; gzEventPlayerChat::gzEventSkippable::CanContinue
_TEXT	ENDS
PUBLIC	?CanContinue@gzEventPlayerChat@@UAE_NXZ		; gzEventPlayerChat::CanContinue
; Function compile flags: /Ogtpy
;	COMDAT ?CanContinue@gzEventPlayerChat@@UAE_NXZ
_TEXT	SEGMENT
?CanContinue@gzEventPlayerChat@@UAE_NXZ PROC		; gzEventPlayerChat::CanContinue, COMDAT
; _this$ = ecx

; 169  : 	gzEVT_SKIPPABLE();

	mov	al, BYTE PTR [ecx+60]
	ret	0
?CanContinue@gzEventPlayerChat@@UAE_NXZ ENDP		; gzEventPlayerChat::CanContinue
_TEXT	ENDS
PUBLIC	??0gzEventSkippable@gzEventPlayerRadio@@QAE@XZ	; gzEventPlayerRadio::gzEventSkippable::gzEventSkippable
; Function compile flags: /Ogtpy
;	COMDAT ??0gzEventSkippable@gzEventPlayerRadio@@QAE@XZ
_TEXT	SEGMENT
??0gzEventSkippable@gzEventPlayerRadio@@QAE@XZ PROC	; gzEventPlayerRadio::gzEventSkippable::gzEventSkippable, COMDAT
; _this$ = ecx

; 180  : 	gzEVT_SKIPPABLE();

	mov	eax, ecx
	mov	BYTE PTR [eax], 1
	ret	0
??0gzEventSkippable@gzEventPlayerRadio@@QAE@XZ ENDP	; gzEventPlayerRadio::gzEventSkippable::gzEventSkippable
_TEXT	ENDS
PUBLIC	?CanContinue@gzEventSkippable@gzEventPlayerRadio@@QAE_NXZ ; gzEventPlayerRadio::gzEventSkippable::CanContinue
; Function compile flags: /Ogtpy
;	COMDAT ?CanContinue@gzEventSkippable@gzEventPlayerRadio@@QAE_NXZ
_TEXT	SEGMENT
?CanContinue@gzEventSkippable@gzEventPlayerRadio@@QAE_NXZ PROC ; gzEventPlayerRadio::gzEventSkippable::CanContinue, COMDAT
; _this$ = ecx

; 180  : 	gzEVT_SKIPPABLE();

	mov	al, BYTE PTR [ecx]
	ret	0
?CanContinue@gzEventSkippable@gzEventPlayerRadio@@QAE_NXZ ENDP ; gzEventPlayerRadio::gzEventSkippable::CanContinue
_TEXT	ENDS
PUBLIC	?CanContinue@gzEventPlayerRadio@@UAE_NXZ	; gzEventPlayerRadio::CanContinue
; Function compile flags: /Ogtpy
;	COMDAT ?CanContinue@gzEventPlayerRadio@@UAE_NXZ
_TEXT	SEGMENT
?CanContinue@gzEventPlayerRadio@@UAE_NXZ PROC		; gzEventPlayerRadio::CanContinue, COMDAT
; _this$ = ecx

; 180  : 	gzEVT_SKIPPABLE();

	mov	al, BYTE PTR [ecx+57]
	ret	0
?CanContinue@gzEventPlayerRadio@@UAE_NXZ ENDP		; gzEventPlayerRadio::CanContinue
_TEXT	ENDS
PUBLIC	??0gzEventSkippable@gzEventPlayerBandwidth@@QAE@XZ ; gzEventPlayerBandwidth::gzEventSkippable::gzEventSkippable
; Function compile flags: /Ogtpy
;	COMDAT ??0gzEventSkippable@gzEventPlayerBandwidth@@QAE@XZ
_TEXT	SEGMENT
??0gzEventSkippable@gzEventPlayerBandwidth@@QAE@XZ PROC	; gzEventPlayerBandwidth::gzEventSkippable::gzEventSkippable, COMDAT
; _this$ = ecx

; 195  : 	gzEVT_SKIPPABLE();

	mov	eax, ecx
	mov	BYTE PTR [eax], 1
	ret	0
??0gzEventSkippable@gzEventPlayerBandwidth@@QAE@XZ ENDP	; gzEventPlayerBandwidth::gzEventSkippable::gzEventSkippable
_TEXT	ENDS
PUBLIC	?CanContinue@gzEventSkippable@gzEventPlayerBandwidth@@QAE_NXZ ; gzEventPlayerBandwidth::gzEventSkippable::CanContinue
; Function compile flags: /Ogtpy
;	COMDAT ?CanContinue@gzEventSkippable@gzEventPlayerBandwidth@@QAE_NXZ
_TEXT	SEGMENT
?CanContinue@gzEventSkippable@gzEventPlayerBandwidth@@QAE_NXZ PROC ; gzEventPlayerBandwidth::gzEventSkippable::CanContinue, COMDAT
; _this$ = ecx

; 195  : 	gzEVT_SKIPPABLE();

	mov	al, BYTE PTR [ecx]
	ret	0
?CanContinue@gzEventSkippable@gzEventPlayerBandwidth@@QAE_NXZ ENDP ; gzEventPlayerBandwidth::gzEventSkippable::CanContinue
_TEXT	ENDS
PUBLIC	?CanContinue@gzEventPlayerBandwidth@@UAE_NXZ	; gzEventPlayerBandwidth::CanContinue
; Function compile flags: /Ogtpy
;	COMDAT ?CanContinue@gzEventPlayerBandwidth@@UAE_NXZ
_TEXT	SEGMENT
?CanContinue@gzEventPlayerBandwidth@@UAE_NXZ PROC	; gzEventPlayerBandwidth::CanContinue, COMDAT
; _this$ = ecx

; 195  : 	gzEVT_SKIPPABLE();

	mov	al, BYTE PTR [ecx+44]
	ret	0
?CanContinue@gzEventPlayerBandwidth@@UAE_NXZ ENDP	; gzEventPlayerBandwidth::CanContinue
_TEXT	ENDS
PUBLIC	??_7gzEventPlayerBase@@6B@			; gzEventPlayerBase::`vftable'
PUBLIC	??0gzEventPlayerBase@@QAE@XZ			; gzEventPlayerBase::gzEventPlayerBase
PUBLIC	??_R4gzEventPlayerBase@@6B@			; gzEventPlayerBase::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVgzEventPlayerBase@@@8			; gzEventPlayerBase `RTTI Type Descriptor'
PUBLIC	??_R3gzEventPlayerBase@@8			; gzEventPlayerBase::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2gzEventPlayerBase@@8			; gzEventPlayerBase::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@gzEventPlayerBase@@8		; gzEventPlayerBase::`RTTI Base Class Descriptor at (0,-1,0,64)'
;	COMDAT ??_R1A@?0A@EA@gzEventPlayerBase@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@gzEventPlayerBase@@8 DD FLAT:??_R0?AVgzEventPlayerBase@@@8 ; gzEventPlayerBase::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3gzEventPlayerBase@@8
rdata$r	ENDS
;	COMDAT ??_R2gzEventPlayerBase@@8
rdata$r	SEGMENT
??_R2gzEventPlayerBase@@8 DD FLAT:??_R1A@?0A@EA@gzEventPlayerBase@@8 ; gzEventPlayerBase::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzEventBase@@8
rdata$r	ENDS
;	COMDAT ??_R3gzEventPlayerBase@@8
rdata$r	SEGMENT
??_R3gzEventPlayerBase@@8 DD 00H			; gzEventPlayerBase::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2gzEventPlayerBase@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVgzEventPlayerBase@@@8
_DATA	SEGMENT
??_R0?AVgzEventPlayerBase@@@8 DD FLAT:??_7type_info@@6B@ ; gzEventPlayerBase `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVgzEventPlayerBase@@', 00H
_DATA	ENDS
;	COMDAT ??_R4gzEventPlayerBase@@6B@
rdata$r	SEGMENT
??_R4gzEventPlayerBase@@6B@ DD 00H			; gzEventPlayerBase::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVgzEventPlayerBase@@@8
	DD	FLAT:??_R3gzEventPlayerBase@@8
rdata$r	ENDS
;	COMDAT ??_7gzEventPlayerBase@@6B@
CONST	SEGMENT
??_7gzEventPlayerBase@@6B@ DD FLAT:??_R4gzEventPlayerBase@@6B@ ; gzEventPlayerBase::`vftable'
	DD	FLAT:?CanContinue@gzEventBase@@UAE_NXZ
	DD	FLAT:?Skippable@gzEventBase@@UAE_NXZ
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0gzEventPlayerBase@@QAE@XZ
_TEXT	SEGMENT
??0gzEventPlayerBase@@QAE@XZ PROC			; gzEventPlayerBase::gzEventPlayerBase, COMDAT
; _this$ = ecx
	fldz
	mov	eax, ecx
	or	ecx, -1
	fstp	QWORD PTR [eax+8]
	mov	DWORD PTR [eax+16], 0
	mov	DWORD PTR [eax+20], ecx
	mov	DWORD PTR [eax+24], ecx
	mov	DWORD PTR [eax], OFFSET ??_7gzEventPlayerBase@@6B@
	ret	0
??0gzEventPlayerBase@@QAE@XZ ENDP			; gzEventPlayerBase::gzEventPlayerBase
_TEXT	ENDS
PUBLIC	??0gzEventSkippable@gzEventObjectDamage@@QAE@XZ	; gzEventObjectDamage::gzEventSkippable::gzEventSkippable
; Function compile flags: /Ogtpy
;	COMDAT ??0gzEventSkippable@gzEventObjectDamage@@QAE@XZ
_TEXT	SEGMENT
??0gzEventSkippable@gzEventObjectDamage@@QAE@XZ PROC	; gzEventObjectDamage::gzEventSkippable::gzEventSkippable, COMDAT
; _this$ = ecx

; 228  : 	gzEVT_SKIPPABLE();

	mov	eax, ecx
	mov	BYTE PTR [eax], 1
	ret	0
??0gzEventSkippable@gzEventObjectDamage@@QAE@XZ ENDP	; gzEventObjectDamage::gzEventSkippable::gzEventSkippable
_TEXT	ENDS
PUBLIC	?CanContinue@gzEventSkippable@gzEventObjectDamage@@QAE_NXZ ; gzEventObjectDamage::gzEventSkippable::CanContinue
; Function compile flags: /Ogtpy
;	COMDAT ?CanContinue@gzEventSkippable@gzEventObjectDamage@@QAE_NXZ
_TEXT	SEGMENT
?CanContinue@gzEventSkippable@gzEventObjectDamage@@QAE_NXZ PROC ; gzEventObjectDamage::gzEventSkippable::CanContinue, COMDAT
; _this$ = ecx

; 228  : 	gzEVT_SKIPPABLE();

	mov	al, BYTE PTR [ecx]
	ret	0
?CanContinue@gzEventSkippable@gzEventObjectDamage@@QAE_NXZ ENDP ; gzEventObjectDamage::gzEventSkippable::CanContinue
_TEXT	ENDS
PUBLIC	?CanContinue@gzEventObjectDamage@@UAE_NXZ	; gzEventObjectDamage::CanContinue
; Function compile flags: /Ogtpy
;	COMDAT ?CanContinue@gzEventObjectDamage@@UAE_NXZ
_TEXT	SEGMENT
?CanContinue@gzEventObjectDamage@@UAE_NXZ PROC		; gzEventObjectDamage::CanContinue, COMDAT
; _this$ = ecx

; 228  : 	gzEVT_SKIPPABLE();

	mov	al, BYTE PTR [ecx+48]
	ret	0
?CanContinue@gzEventObjectDamage@@UAE_NXZ ENDP		; gzEventObjectDamage::CanContinue
_TEXT	ENDS
PUBLIC	??0gzEventSkippable@gzEventObjectKill@@QAE@XZ	; gzEventObjectKill::gzEventSkippable::gzEventSkippable
; Function compile flags: /Ogtpy
;	COMDAT ??0gzEventSkippable@gzEventObjectKill@@QAE@XZ
_TEXT	SEGMENT
??0gzEventSkippable@gzEventObjectKill@@QAE@XZ PROC	; gzEventObjectKill::gzEventSkippable::gzEventSkippable, COMDAT
; _this$ = ecx

; 236  : 	gzEVT_SKIPPABLE();

	mov	eax, ecx
	mov	BYTE PTR [eax], 1
	ret	0
??0gzEventSkippable@gzEventObjectKill@@QAE@XZ ENDP	; gzEventObjectKill::gzEventSkippable::gzEventSkippable
_TEXT	ENDS
PUBLIC	?CanContinue@gzEventSkippable@gzEventObjectKill@@QAE_NXZ ; gzEventObjectKill::gzEventSkippable::CanContinue
; Function compile flags: /Ogtpy
;	COMDAT ?CanContinue@gzEventSkippable@gzEventObjectKill@@QAE_NXZ
_TEXT	SEGMENT
?CanContinue@gzEventSkippable@gzEventObjectKill@@QAE_NXZ PROC ; gzEventObjectKill::gzEventSkippable::CanContinue, COMDAT
; _this$ = ecx

; 236  : 	gzEVT_SKIPPABLE();

	mov	al, BYTE PTR [ecx]
	ret	0
?CanContinue@gzEventSkippable@gzEventObjectKill@@QAE_NXZ ENDP ; gzEventObjectKill::gzEventSkippable::CanContinue
_TEXT	ENDS
PUBLIC	?CanContinue@gzEventObjectKill@@UAE_NXZ		; gzEventObjectKill::CanContinue
; Function compile flags: /Ogtpy
;	COMDAT ?CanContinue@gzEventObjectKill@@UAE_NXZ
_TEXT	SEGMENT
?CanContinue@gzEventObjectKill@@UAE_NXZ PROC		; gzEventObjectKill::CanContinue, COMDAT
; _this$ = ecx

; 236  : 	gzEVT_SKIPPABLE();

	mov	al, BYTE PTR [ecx+40]
	ret	0
?CanContinue@gzEventObjectKill@@UAE_NXZ ENDP		; gzEventObjectKill::CanContinue
_TEXT	ENDS
PUBLIC	??0gzEventSkippable@gzEventObjectFlipKill@@QAE@XZ ; gzEventObjectFlipKill::gzEventSkippable::gzEventSkippable
; Function compile flags: /Ogtpy
;	COMDAT ??0gzEventSkippable@gzEventObjectFlipKill@@QAE@XZ
_TEXT	SEGMENT
??0gzEventSkippable@gzEventObjectFlipKill@@QAE@XZ PROC	; gzEventObjectFlipKill::gzEventSkippable::gzEventSkippable, COMDAT
; _this$ = ecx

; 244  : 	gzEVT_SKIPPABLE();

	mov	eax, ecx
	mov	BYTE PTR [eax], 1
	ret	0
??0gzEventSkippable@gzEventObjectFlipKill@@QAE@XZ ENDP	; gzEventObjectFlipKill::gzEventSkippable::gzEventSkippable
_TEXT	ENDS
PUBLIC	?CanContinue@gzEventSkippable@gzEventObjectFlipKill@@QAE_NXZ ; gzEventObjectFlipKill::gzEventSkippable::CanContinue
; Function compile flags: /Ogtpy
;	COMDAT ?CanContinue@gzEventSkippable@gzEventObjectFlipKill@@QAE_NXZ
_TEXT	SEGMENT
?CanContinue@gzEventSkippable@gzEventObjectFlipKill@@QAE_NXZ PROC ; gzEventObjectFlipKill::gzEventSkippable::CanContinue, COMDAT
; _this$ = ecx

; 244  : 	gzEVT_SKIPPABLE();

	mov	al, BYTE PTR [ecx]
	ret	0
?CanContinue@gzEventSkippable@gzEventObjectFlipKill@@QAE_NXZ ENDP ; gzEventObjectFlipKill::gzEventSkippable::CanContinue
_TEXT	ENDS
PUBLIC	?CanContinue@gzEventObjectFlipKill@@UAE_NXZ	; gzEventObjectFlipKill::CanContinue
; Function compile flags: /Ogtpy
;	COMDAT ?CanContinue@gzEventObjectFlipKill@@UAE_NXZ
_TEXT	SEGMENT
?CanContinue@gzEventObjectFlipKill@@UAE_NXZ PROC	; gzEventObjectFlipKill::CanContinue, COMDAT
; _this$ = ecx

; 244  : 	gzEVT_SKIPPABLE();

	mov	al, BYTE PTR [ecx+37]
	ret	0
?CanContinue@gzEventObjectFlipKill@@UAE_NXZ ENDP	; gzEventObjectFlipKill::CanContinue
_TEXT	ENDS
PUBLIC	??0gzEventSkippable@gzEventObjectTransition@@QAE@XZ ; gzEventObjectTransition::gzEventSkippable::gzEventSkippable
; Function compile flags: /Ogtpy
;	COMDAT ??0gzEventSkippable@gzEventObjectTransition@@QAE@XZ
_TEXT	SEGMENT
??0gzEventSkippable@gzEventObjectTransition@@QAE@XZ PROC ; gzEventObjectTransition::gzEventSkippable::gzEventSkippable, COMDAT
; _this$ = ecx

; 252  : 	gzEVT_SKIPPABLE();

	mov	eax, ecx
	mov	BYTE PTR [eax], 1
	ret	0
??0gzEventSkippable@gzEventObjectTransition@@QAE@XZ ENDP ; gzEventObjectTransition::gzEventSkippable::gzEventSkippable
_TEXT	ENDS
PUBLIC	?CanContinue@gzEventSkippable@gzEventObjectTransition@@QAE_NXZ ; gzEventObjectTransition::gzEventSkippable::CanContinue
; Function compile flags: /Ogtpy
;	COMDAT ?CanContinue@gzEventSkippable@gzEventObjectTransition@@QAE_NXZ
_TEXT	SEGMENT
?CanContinue@gzEventSkippable@gzEventObjectTransition@@QAE_NXZ PROC ; gzEventObjectTransition::gzEventSkippable::CanContinue, COMDAT
; _this$ = ecx

; 252  : 	gzEVT_SKIPPABLE();

	mov	al, BYTE PTR [ecx]
	ret	0
?CanContinue@gzEventSkippable@gzEventObjectTransition@@QAE_NXZ ENDP ; gzEventObjectTransition::gzEventSkippable::CanContinue
_TEXT	ENDS
PUBLIC	?CanContinue@gzEventObjectTransition@@UAE_NXZ	; gzEventObjectTransition::CanContinue
; Function compile flags: /Ogtpy
;	COMDAT ?CanContinue@gzEventObjectTransition@@UAE_NXZ
_TEXT	SEGMENT
?CanContinue@gzEventObjectTransition@@UAE_NXZ PROC	; gzEventObjectTransition::CanContinue, COMDAT
; _this$ = ecx

; 252  : 	gzEVT_SKIPPABLE();

	mov	al, BYTE PTR [ecx+40]
	ret	0
?CanContinue@gzEventObjectTransition@@UAE_NXZ ENDP	; gzEventObjectTransition::CanContinue
_TEXT	ENDS
PUBLIC	??0gzEventSkippable@gzEventObjectC4Detonation@@QAE@XZ ; gzEventObjectC4Detonation::gzEventSkippable::gzEventSkippable
; Function compile flags: /Ogtpy
;	COMDAT ??0gzEventSkippable@gzEventObjectC4Detonation@@QAE@XZ
_TEXT	SEGMENT
??0gzEventSkippable@gzEventObjectC4Detonation@@QAE@XZ PROC ; gzEventObjectC4Detonation::gzEventSkippable::gzEventSkippable, COMDAT
; _this$ = ecx

; 270  : 	gzEVT_SKIPPABLE();

	mov	eax, ecx
	mov	BYTE PTR [eax], 1
	ret	0
??0gzEventSkippable@gzEventObjectC4Detonation@@QAE@XZ ENDP ; gzEventObjectC4Detonation::gzEventSkippable::gzEventSkippable
_TEXT	ENDS
PUBLIC	?CanContinue@gzEventSkippable@gzEventObjectC4Detonation@@QAE_NXZ ; gzEventObjectC4Detonation::gzEventSkippable::CanContinue
; Function compile flags: /Ogtpy
;	COMDAT ?CanContinue@gzEventSkippable@gzEventObjectC4Detonation@@QAE_NXZ
_TEXT	SEGMENT
?CanContinue@gzEventSkippable@gzEventObjectC4Detonation@@QAE_NXZ PROC ; gzEventObjectC4Detonation::gzEventSkippable::CanContinue, COMDAT
; _this$ = ecx

; 270  : 	gzEVT_SKIPPABLE();

	mov	al, BYTE PTR [ecx]
	ret	0
?CanContinue@gzEventSkippable@gzEventObjectC4Detonation@@QAE_NXZ ENDP ; gzEventObjectC4Detonation::gzEventSkippable::CanContinue
_TEXT	ENDS
PUBLIC	?CanContinue@gzEventObjectC4Detonation@@UAE_NXZ	; gzEventObjectC4Detonation::CanContinue
; Function compile flags: /Ogtpy
;	COMDAT ?CanContinue@gzEventObjectC4Detonation@@UAE_NXZ
_TEXT	SEGMENT
?CanContinue@gzEventObjectC4Detonation@@UAE_NXZ PROC	; gzEventObjectC4Detonation::CanContinue, COMDAT
; _this$ = ecx

; 270  : 	gzEVT_SKIPPABLE();

	mov	al, BYTE PTR [ecx+40]
	ret	0
?CanContinue@gzEventObjectC4Detonation@@UAE_NXZ ENDP	; gzEventObjectC4Detonation::CanContinue
_TEXT	ENDS
PUBLIC	??0gzEventSkippable@gzEventObjectPowerupGrant@@QAE@XZ ; gzEventObjectPowerupGrant::gzEventSkippable::gzEventSkippable
; Function compile flags: /Ogtpy
;	COMDAT ??0gzEventSkippable@gzEventObjectPowerupGrant@@QAE@XZ
_TEXT	SEGMENT
??0gzEventSkippable@gzEventObjectPowerupGrant@@QAE@XZ PROC ; gzEventObjectPowerupGrant::gzEventSkippable::gzEventSkippable, COMDAT
; _this$ = ecx

; 278  : 	gzEVT_SKIPPABLE();

	mov	eax, ecx
	mov	BYTE PTR [eax], 1
	ret	0
??0gzEventSkippable@gzEventObjectPowerupGrant@@QAE@XZ ENDP ; gzEventObjectPowerupGrant::gzEventSkippable::gzEventSkippable
_TEXT	ENDS
PUBLIC	?CanContinue@gzEventSkippable@gzEventObjectPowerupGrant@@QAE_NXZ ; gzEventObjectPowerupGrant::gzEventSkippable::CanContinue
; Function compile flags: /Ogtpy
;	COMDAT ?CanContinue@gzEventSkippable@gzEventObjectPowerupGrant@@QAE_NXZ
_TEXT	SEGMENT
?CanContinue@gzEventSkippable@gzEventObjectPowerupGrant@@QAE_NXZ PROC ; gzEventObjectPowerupGrant::gzEventSkippable::CanContinue, COMDAT
; _this$ = ecx

; 278  : 	gzEVT_SKIPPABLE();

	mov	al, BYTE PTR [ecx]
	ret	0
?CanContinue@gzEventSkippable@gzEventObjectPowerupGrant@@QAE_NXZ ENDP ; gzEventObjectPowerupGrant::gzEventSkippable::CanContinue
_TEXT	ENDS
PUBLIC	?CanContinue@gzEventObjectPowerupGrant@@UAE_NXZ	; gzEventObjectPowerupGrant::CanContinue
; Function compile flags: /Ogtpy
;	COMDAT ?CanContinue@gzEventObjectPowerupGrant@@UAE_NXZ
_TEXT	SEGMENT
?CanContinue@gzEventObjectPowerupGrant@@UAE_NXZ PROC	; gzEventObjectPowerupGrant::CanContinue, COMDAT
; _this$ = ecx

; 278  : 	gzEVT_SKIPPABLE();

	mov	al, BYTE PTR [ecx+40]
	ret	0
?CanContinue@gzEventObjectPowerupGrant@@UAE_NXZ ENDP	; gzEventObjectPowerupGrant::CanContinue
_TEXT	ENDS
PUBLIC	??0gzEventSkippable@gzEventNetWolPage@@QAE@XZ	; gzEventNetWolPage::gzEventSkippable::gzEventSkippable
; Function compile flags: /Ogtpy
;	COMDAT ??0gzEventSkippable@gzEventNetWolPage@@QAE@XZ
_TEXT	SEGMENT
??0gzEventSkippable@gzEventNetWolPage@@QAE@XZ PROC	; gzEventNetWolPage::gzEventSkippable::gzEventSkippable, COMDAT
; _this$ = ecx

; 307  : 	gzEVT_SKIPPABLE();

	mov	eax, ecx
	mov	BYTE PTR [eax], 1
	ret	0
??0gzEventSkippable@gzEventNetWolPage@@QAE@XZ ENDP	; gzEventNetWolPage::gzEventSkippable::gzEventSkippable
_TEXT	ENDS
PUBLIC	?CanContinue@gzEventSkippable@gzEventNetWolPage@@QAE_NXZ ; gzEventNetWolPage::gzEventSkippable::CanContinue
; Function compile flags: /Ogtpy
;	COMDAT ?CanContinue@gzEventSkippable@gzEventNetWolPage@@QAE_NXZ
_TEXT	SEGMENT
?CanContinue@gzEventSkippable@gzEventNetWolPage@@QAE_NXZ PROC ; gzEventNetWolPage::gzEventSkippable::CanContinue, COMDAT
; _this$ = ecx

; 307  : 	gzEVT_SKIPPABLE();

	mov	al, BYTE PTR [ecx]
	ret	0
?CanContinue@gzEventSkippable@gzEventNetWolPage@@QAE_NXZ ENDP ; gzEventNetWolPage::gzEventSkippable::CanContinue
_TEXT	ENDS
PUBLIC	?CanContinue@gzEventNetWolPage@@UAE_NXZ		; gzEventNetWolPage::CanContinue
; Function compile flags: /Ogtpy
;	COMDAT ?CanContinue@gzEventNetWolPage@@UAE_NXZ
_TEXT	SEGMENT
?CanContinue@gzEventNetWolPage@@UAE_NXZ PROC		; gzEventNetWolPage::CanContinue, COMDAT
; _this$ = ecx

; 307  : 	gzEVT_SKIPPABLE();

	mov	al, BYTE PTR [ecx+48]
	ret	0
?CanContinue@gzEventNetWolPage@@UAE_NXZ ENDP		; gzEventNetWolPage::CanContinue
_TEXT	ENDS
PUBLIC	?SetPlayer@gzEventBhsBase@@QAEXPAVgzPlayer@@@Z	; gzEventBhsBase::SetPlayer
; Function compile flags: /Ogtpy
;	COMDAT ?SetPlayer@gzEventBhsBase@@QAEXPAVgzPlayer@@@Z
_TEXT	SEGMENT
_gzData$ = 8						; size = 4
?SetPlayer@gzEventBhsBase@@QAEXPAVgzPlayer@@@Z PROC	; gzEventBhsBase::SetPlayer, COMDAT
; _this$ = ecx

; 332  : 		this->m_player = gzData;

	mov	eax, DWORD PTR _gzData$[esp-4]
	mov	DWORD PTR [ecx+32], eax

; 333  : 	};

	ret	4
?SetPlayer@gzEventBhsBase@@QAEXPAVgzPlayer@@@Z ENDP	; gzEventBhsBase::SetPlayer
_TEXT	ENDS
PUBLIC	??_7gzEventBhsBase@@6B@				; gzEventBhsBase::`vftable'
PUBLIC	??0gzEventBhsBase@@QAE@XZ			; gzEventBhsBase::gzEventBhsBase
PUBLIC	??_R4gzEventBhsBase@@6B@			; gzEventBhsBase::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVgzEventBhsBase@@@8			; gzEventBhsBase `RTTI Type Descriptor'
PUBLIC	??_R3gzEventBhsBase@@8				; gzEventBhsBase::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2gzEventBhsBase@@8				; gzEventBhsBase::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@gzEventBhsBase@@8			; gzEventBhsBase::`RTTI Base Class Descriptor at (0,-1,0,64)'
;	COMDAT ??_R1A@?0A@EA@gzEventBhsBase@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@gzEventBhsBase@@8 DD FLAT:??_R0?AVgzEventBhsBase@@@8 ; gzEventBhsBase::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3gzEventBhsBase@@8
rdata$r	ENDS
;	COMDAT ??_R2gzEventBhsBase@@8
rdata$r	SEGMENT
??_R2gzEventBhsBase@@8 DD FLAT:??_R1A@?0A@EA@gzEventBhsBase@@8 ; gzEventBhsBase::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzEventBase@@8
rdata$r	ENDS
;	COMDAT ??_R3gzEventBhsBase@@8
rdata$r	SEGMENT
??_R3gzEventBhsBase@@8 DD 00H				; gzEventBhsBase::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2gzEventBhsBase@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVgzEventBhsBase@@@8
_DATA	SEGMENT
??_R0?AVgzEventBhsBase@@@8 DD FLAT:??_7type_info@@6B@	; gzEventBhsBase `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVgzEventBhsBase@@', 00H
_DATA	ENDS
;	COMDAT ??_R4gzEventBhsBase@@6B@
rdata$r	SEGMENT
??_R4gzEventBhsBase@@6B@ DD 00H				; gzEventBhsBase::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVgzEventBhsBase@@@8
	DD	FLAT:??_R3gzEventBhsBase@@8
rdata$r	ENDS
;	COMDAT ??_7gzEventBhsBase@@6B@
CONST	SEGMENT
??_7gzEventBhsBase@@6B@ DD FLAT:??_R4gzEventBhsBase@@6B@ ; gzEventBhsBase::`vftable'
	DD	FLAT:?CanContinue@gzEventBase@@UAE_NXZ
	DD	FLAT:?Skippable@gzEventBase@@UAE_NXZ
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0gzEventBhsBase@@QAE@XZ
_TEXT	SEGMENT
??0gzEventBhsBase@@QAE@XZ PROC				; gzEventBhsBase::gzEventBhsBase, COMDAT
; _this$ = ecx
	fldz
	mov	eax, ecx
	or	ecx, -1
	fstp	QWORD PTR [eax+8]
	mov	DWORD PTR [eax+16], 0
	mov	DWORD PTR [eax+20], ecx
	mov	DWORD PTR [eax+24], ecx
	mov	DWORD PTR [eax], OFFSET ??_7gzEventBhsBase@@6B@
	ret	0
??0gzEventBhsBase@@QAE@XZ ENDP				; gzEventBhsBase::gzEventBhsBase
_TEXT	ENDS
PUBLIC	??_7gzEventBhsVersion@@6B@			; gzEventBhsVersion::`vftable'
PUBLIC	??0gzEventBhsVersion@@QAE@M@Z			; gzEventBhsVersion::gzEventBhsVersion
PUBLIC	??_R4gzEventBhsVersion@@6B@			; gzEventBhsVersion::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVgzEventBhsVersion@@@8			; gzEventBhsVersion `RTTI Type Descriptor'
PUBLIC	??_R3gzEventBhsVersion@@8			; gzEventBhsVersion::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2gzEventBhsVersion@@8			; gzEventBhsVersion::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@gzEventBhsVersion@@8		; gzEventBhsVersion::`RTTI Base Class Descriptor at (0,-1,0,64)'
;	COMDAT ??_R1A@?0A@EA@gzEventBhsVersion@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@gzEventBhsVersion@@8 DD FLAT:??_R0?AVgzEventBhsVersion@@@8 ; gzEventBhsVersion::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	02H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3gzEventBhsVersion@@8
rdata$r	ENDS
;	COMDAT ??_R2gzEventBhsVersion@@8
rdata$r	SEGMENT
??_R2gzEventBhsVersion@@8 DD FLAT:??_R1A@?0A@EA@gzEventBhsVersion@@8 ; gzEventBhsVersion::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzEventBhsBase@@8
	DD	FLAT:??_R1A@?0A@EA@gzEventBase@@8
rdata$r	ENDS
;	COMDAT ??_R3gzEventBhsVersion@@8
rdata$r	SEGMENT
??_R3gzEventBhsVersion@@8 DD 00H			; gzEventBhsVersion::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	03H
	DD	FLAT:??_R2gzEventBhsVersion@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVgzEventBhsVersion@@@8
_DATA	SEGMENT
??_R0?AVgzEventBhsVersion@@@8 DD FLAT:??_7type_info@@6B@ ; gzEventBhsVersion `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVgzEventBhsVersion@@', 00H
_DATA	ENDS
;	COMDAT ??_R4gzEventBhsVersion@@6B@
rdata$r	SEGMENT
??_R4gzEventBhsVersion@@6B@ DD 00H			; gzEventBhsVersion::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVgzEventBhsVersion@@@8
	DD	FLAT:??_R3gzEventBhsVersion@@8
rdata$r	ENDS
;	COMDAT ??_7gzEventBhsVersion@@6B@
CONST	SEGMENT
??_7gzEventBhsVersion@@6B@ DD FLAT:??_R4gzEventBhsVersion@@6B@ ; gzEventBhsVersion::`vftable'
	DD	FLAT:?CanContinue@gzEventBase@@UAE_NXZ
	DD	FLAT:?Skippable@gzEventBase@@UAE_NXZ
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0gzEventBhsVersion@@QAE@M@Z
_TEXT	SEGMENT
_version$ = 8						; size = 4
??0gzEventBhsVersion@@QAE@M@Z PROC			; gzEventBhsVersion::gzEventBhsVersion, COMDAT
; _this$ = ecx

; 352  : 	gzEventBhsVersion(float version)

	fldz
	mov	eax, ecx
	fstp	QWORD PTR [eax+8]
	or	ecx, -1

; 353  : 	{
; 354  : 		this->m_version = version;

	fld	DWORD PTR _version$[esp-4]
	mov	DWORD PTR [eax+16], 0
	fstp	DWORD PTR [eax+40]
	mov	DWORD PTR [eax+20], ecx
	mov	DWORD PTR [eax+24], ecx
	mov	DWORD PTR [eax], OFFSET ??_7gzEventBhsVersion@@6B@

; 355  : 	};

	ret	4
??0gzEventBhsVersion@@QAE@M@Z ENDP			; gzEventBhsVersion::gzEventBhsVersion
_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\gzhooks.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

; 17   : 	{

	push	esi

; 18   : 		unsigned long PID = GetCurrentProcessId();

	call	DWORD PTR __imp__GetCurrentProcessId@0

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

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

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

; 21   : 		CloseHandle(PHandle);

	push	esi
	call	DWORD PTR __imp__CloseHandle@4
	pop	esi

; 22   : 	}

	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

; 24   : 	{

	push	esi

; 25   : 		unsigned long PID = GetCurrentProcessId();

	call	DWORD PTR __imp__GetCurrentProcessId@0

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

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

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

; 28   : 		CloseHandle(PHandle);

	push	esi
	call	DWORD PTR __imp__CloseHandle@4
	pop	esi

; 29   : 	}

	ret	12					; 0000000cH
?Read@HookBase@@IAEXKHPAX@Z ENDP			; HookBase::Read
_TEXT	ENDS
PUBLIC	??_C@_0O@JLEGKNKC@?4?2gzhooks?4cpp?$AA@		; `string'
PUBLIC	??_C@_00CNPNBAHC@?$AA@				; `string'
PUBLIC	?Hook_LevelLoaded@@YGXXZ			; Hook_LevelLoaded
EXTRN	?ProcessEvent@gzEvtManager@@SAPAVgzEvtHandler@@AAVgzEventBase@@@Z:PROC ; gzEvtManager::ProcessEvent
EXTRN	?gzInit@@3PAVgzInitClass@@A:DWORD		; gzInit
EXTRN	??0gzInitClass@@QAE@XZ:PROC			; gzInitClass::gzInitClass
EXTRN	??2@YAPAXI@Z:PROC				; operator new
EXTRN	?m_setOwner@@YAXPBDI0@Z:PROC			; m_setOwner
EXTRN	?m_initial@gzManagerClass@@2_NA:BYTE		; gzManagerClass::m_initial
EXTRN	___CxxFrameHandler3:PROC
;	COMDAT ??_C@_0O@JLEGKNKC@?4?2gzhooks?4cpp?$AA@
; File d:\source code\gzgm\gzeventbase.h
CONST	SEGMENT
??_C@_0O@JLEGKNKC@?4?2gzhooks?4cpp?$AA@ DB '.\gzhooks.cpp', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_00CNPNBAHC@?$AA@
CONST	SEGMENT
??_C@_00CNPNBAHC@?$AA@ DB 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\gzhooks.cpp
xdata$x	ENDS
;	COMDAT ?Hook_LevelLoaded@@YGXXZ
_TEXT	SEGMENT
$T67519 = -48						; size = 4
_evt$ = -44						; size = 32
__$EHRec$ = -12						; size = 12
?Hook_LevelLoaded@@YGXXZ PROC				; Hook_LevelLoaded, COMDAT

; 15   : void __stdcall Hook_LevelLoaded() {

	mov	eax, DWORD PTR fs:0
	push	-1
	push	__ehhandler$?Hook_LevelLoaded@@YGXXZ
	push	eax
	mov	DWORD PTR fs:0, esp
	sub	esp, 36					; 00000024H

; 16   : 	if (!gzManagerClass::m_initial)

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

; 17   : 	{
; 18   : 		gzInit = new gzInitClass;

	push	OFFSET ??_C@_00CNPNBAHC@?$AA@
	push	18					; 00000012H
	push	OFFSET ??_C@_0O@JLEGKNKC@?4?2gzhooks?4cpp?$AA@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	push	1
	call	??2@YAPAXI@Z				; operator new
	add	esp, 16					; 00000010H
	mov	DWORD PTR $T67519[esp+48], eax
	test	eax, eax
	mov	DWORD PTR __$EHRec$[esp+56], 0
	je	SHORT $LN4@Hook_Level
	mov	ecx, eax
	call	??0gzInitClass@@QAE@XZ			; gzInitClass::gzInitClass
	jmp	SHORT $LN5@Hook_Level
$LN4@Hook_Level:
	xor	eax, eax
$LN5@Hook_Level:
	mov	DWORD PTR __$EHRec$[esp+56], -1
	mov	DWORD PTR ?gzInit@@3PAVgzInitClass@@A, eax ; gzInit

; 19   : 		gzManagerClass::m_initial = true;

	mov	BYTE PTR ?m_initial@gzManagerClass@@2_NA, 1 ; gzManagerClass::m_initial
$LN1@Hook_Level:

; 20   : 	}
; 21   : 
; 22   : 	gzEventBase evt;

	fldz

; 23   : 	evt.SetEventType(gzEVT_GAME_LEVEL_LOADED);
; 24   : 	gzEvtManager::ProcessEvent(evt);

	lea	eax, DWORD PTR _evt$[esp+48]
	push	eax
	fstp	QWORD PTR _evt$[esp+60]
	mov	DWORD PTR _evt$[esp+52], OFFSET ??_7gzEventBase@@6B@
	mov	DWORD PTR _evt$[esp+68], 0
	mov	DWORD PTR _evt$[esp+76], -1
	mov	DWORD PTR _evt$[esp+72], 4096		; 00001000H
	call	?ProcessEvent@gzEvtManager@@SAPAVgzEvtHandler@@AAVgzEventBase@@@Z ; gzEvtManager::ProcessEvent
	add	esp, 4

; 25   : 
; 26   : 	_asm {
; 27   : 		mov eax, [0x81FF84]

	mov	eax, 8519556				; 0081ff84H

; 28   : 		mov eax, [eax]

	mov	eax, DWORD PTR [eax]

; 29   : 	}
; 30   : }

	mov	ecx, DWORD PTR __$EHRec$[esp+48]
	mov	DWORD PTR fs:0, ecx
	add	esp, 48					; 00000030H
	ret	0
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$?Hook_LevelLoaded@@YGXXZ$0:
	mov	eax, DWORD PTR $T67519[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
_evt$ = -32						; size = 32
?Proc_GameOver@@YGXXZ PROC				; Proc_GameOver, COMDAT

; 34   : {

	sub	esp, 32					; 00000020H

; 35   : 	gzEventBase evt;

	fldz

; 36   : 	evt.SetEventType(gzEVT_GAME_LEVEL_ENDED);
; 37   : 	gzEvtManager::ProcessEvent(evt);

	lea	eax, DWORD PTR _evt$[esp+32]
	push	eax
	fstp	QWORD PTR _evt$[esp+44]
	mov	DWORD PTR _evt$[esp+36], OFFSET ??_7gzEventBase@@6B@
	mov	DWORD PTR _evt$[esp+52], 0
	mov	DWORD PTR _evt$[esp+60], -1
	mov	DWORD PTR _evt$[esp+56], 4097		; 00001001H
	call	?ProcessEvent@gzEvtManager@@SAPAVgzEvtHandler@@AAVgzEventBase@@@Z ; gzEvtManager::ProcessEvent

; 38   : }

	add	esp, 36					; 00000024H
	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

; 41   : 	_asm {
; 42   : 		push ecx

	push	ecx

; 43   : 		call Proc_GameOver

	call	?Proc_GameOver@@YGXXZ			; Proc_GameOver

; 44   : 		pop ecx

	pop	ecx

; 45   : 		sub esp, 0x10

	sub	esp, 16					; 00000010H

; 46   : 		push ebx

	push	ebx

; 47   : 		push ebp

	push	ebp

; 48   : 		push esi

	push	esi

; 49   : 		mov esi, 0x4749B6

	mov	esi, 4671926				; 004749b6H

; 50   : 		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
_evt$58545 = -32					; size = 32
?Hook_FrameUpdate@@YGXXZ PROC				; Hook_FrameUpdate, COMDAT

; 56   : 	if (nc_cNetwork::PServerConnection)

	mov	eax, DWORD PTR ?PServerConnection@nc_cNetwork@@2AAPAVnc_cConnection@@A ; nc_cNetwork::PServerConnection
	sub	esp, 32					; 00000020H
	cmp	DWORD PTR [eax], 0
	je	SHORT $LN1@Hook_Frame

; 57   : 	{
; 58   : 		gzEventBase evt;

	fldz

; 59   : 		evt.SetEventType(gzEVT_GAME_THINK);
; 60   : 		gzEvtManager::ProcessEvent(evt);

	lea	ecx, DWORD PTR _evt$58545[esp+32]
	push	ecx
	fstp	QWORD PTR _evt$58545[esp+44]
	mov	DWORD PTR _evt$58545[esp+36], OFFSET ??_7gzEventBase@@6B@
	mov	DWORD PTR _evt$58545[esp+52], 0
	mov	DWORD PTR _evt$58545[esp+60], -1
	mov	DWORD PTR _evt$58545[esp+56], 4098	; 00001002H
	call	?ProcessEvent@gzEvtManager@@SAPAVgzEvtHandler@@AAVgzEventBase@@@Z ; gzEvtManager::ProcessEvent
	add	esp, 4
$LN1@Hook_Frame:

; 63   : }

	add	esp, 32					; 00000020H

; 61   : 	}
; 62   : 	nc_GameModeManager::Think();

	jmp	?Think@nc_GameModeManager@@SAXXZ	; nc_GameModeManager::Think
?Hook_FrameUpdate@@YGXXZ ENDP				; Hook_FrameUpdate
_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	?Format@nc_WideStringClass@@QAAXPB_WZZ:PROC	; nc_WideStringClass::Format
EXTRN	_wcsicmp:PROC
EXTRN	?PlayerList@nc_cPlayerManager@@2PAV?$nc_SList@Vnc_cPlayer@@@@A:DWORD ; nc_cPlayerManager::PlayerList
EXTRN	??0aWideString@@QAE@PB_W@Z:PROC			; aWideString::aWideString
EXTRN	?Resize@nc_WideStringClass@@QAEXH@Z:PROC	; nc_WideStringClass::Resize
EXTRN	?Out@gzConsole@@SAXPBDZZ:PROC			; gzConsole::Out
EXTRN	?Get_Length@nc_WideStringClass@@QAEHXZ:PROC	; nc_WideStringClass::Get_Length
;	COMDAT ??_C@_17CNPHIMPH@?$AA?$CF?$AAl?$AAs?$AA?$AA@
; File d:\source code\alib\include\astring.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'
CONST	ENDS
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$?Proc_PlayerJoin@@YGXPAVnc_cPlayer@@PAVnc_WideStringClass@@@Z DD 0ffffffffH
	DD	FLAT:__unwindfunclet$?Proc_PlayerJoin@@YGXPAVnc_cPlayer@@PAVnc_WideStringClass@@@Z$0
__ehfuncinfo$?Proc_PlayerJoin@@YGXPAVnc_cPlayer@@PAVnc_WideStringClass@@@Z DD 019930522H
	DD	01H
	DD	FLAT:__unwindtable$?Proc_PlayerJoin@@YGXPAVnc_cPlayer@@PAVnc_WideStringClass@@@Z
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	01H
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzhooks.cpp
xdata$x	ENDS
;	COMDAT ?Proc_PlayerJoin@@YGXPAVnc_cPlayer@@PAVnc_WideStringClass@@@Z
_TEXT	SEGMENT
_changedName$ = -60					; size = 8
_evt$ = -52						; size = 40
__$EHRec$ = -12						; size = 12
_pData$ = 8						; size = 4
_pName$ = 12						; size = 4
?Proc_PlayerJoin@@YGXPAVnc_cPlayer@@PAVnc_WideStringClass@@@Z PROC ; Proc_PlayerJoin, COMDAT

; 71   : {

	mov	eax, DWORD PTR fs:0
	push	-1
	push	__ehhandler$?Proc_PlayerJoin@@YGXPAVnc_cPlayer@@PAVnc_WideStringClass@@@Z
	push	eax
	mov	DWORD PTR fs:0, esp
	sub	esp, 48					; 00000030H
	push	ebx
	push	ebp
	push	esi

; 72   : 	if (pName->Get_Length() > 20)

	mov	esi, DWORD PTR _pName$[esp+68]
	push	edi
	mov	ecx, esi
	call	?Get_Length@nc_WideStringClass@@QAEHXZ	; nc_WideStringClass::Get_Length
	cmp	eax, 20					; 00000014H
	jle	SHORT $LN45@Proc_Playe

; 73   : 	{
; 74   : 		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

; 75   : 		pName->Resize(21);

	push	21					; 00000015H
	mov	ecx, esi
	call	?Resize@nc_WideStringClass@@QAEXH@Z	; nc_WideStringClass::Resize

; 76   : 		pName->m_Buffer[20] = '\0';

	mov	ecx, DWORD PTR [esi]

; 77   : 		pData->PlayerName.Resize(21);

	mov	edi, DWORD PTR _pData$[esp+72]
	xor	ebp, ebp
	add	edi, 1880				; 00000758H
	mov	WORD PTR [ecx+40], bp
	push	21					; 00000015H
	mov	ecx, edi
	call	?Resize@nc_WideStringClass@@QAEXH@Z	; nc_WideStringClass::Resize

; 78   : 		pData->PlayerName.m_Buffer[20] = '\0';

	mov	edx, DWORD PTR [edi]
	mov	WORD PTR [edx+40], bp
	jmp	SHORT $LN16@Proc_Playe
$LN45@Proc_Playe:
	xor	ebp, ebp
$LN16@Proc_Playe:

; 79   : 	}
; 80   : 	bool noticeShown = false;
; 81   : 
; 82   : 	// Check for invalid characters in nickname
; 83   : 	wchar_t *pNamePtr = pName->m_Buffer;

	mov	ebx, DWORD PTR [esi]
	xor	cl, cl

; 84   : 	while (*pName->m_Buffer)

	cmp	WORD PTR [ebx], bp
	je	SHORT $LN14@Proc_Playe
$LL15@Proc_Playe:

; 85   : 	{
; 86   : 		switch (*pName->m_Buffer)

	mov	eax, DWORD PTR [esi]
	movzx	eax, WORD PTR [eax]
	add	eax, -32				; ffffffe0H
	cmp	eax, 27					; 0000001bH
	ja	SHORT $LN9@Proc_Playe
	movzx	edx, BYTE PTR $LN44@Proc_Playe[eax]
	jmp	DWORD PTR $LN48@Proc_Playe[edx*4]
$LN11@Proc_Playe:

; 87   : 		{
; 88   : 			case ' ':
; 89   : 			case ';':
; 90   : 			case ':':
; 91   : 			case '"':
; 92   : 				if (!noticeShown)

	test	cl, cl
	jne	SHORT $LN10@Proc_Playe

; 93   : 				{
; 94   : 					gzConsole::Out("[GZ] Notice: Nickname \"%ls\" contains disallowed character(s) and has been replaced with underscore.\n",pNamePtr);

	push	ebx
	push	OFFSET ??_C@_0GF@GDKCHJEB@?$FLGZ?$FN?5Notice?3?5Nickname?5?$CC?$CFls?$CC?5cont@
	call	?Out@gzConsole@@SAXPBDZZ		; gzConsole::Out
	add	esp, 8

; 95   : 					noticeShown = true;

	mov	cl, 1
$LN10@Proc_Playe:

; 96   : 				}
; 97   : 				*pName->m_Buffer = '_';

	mov	eax, DWORD PTR [esi]
	mov	WORD PTR [eax], 95			; 0000005fH
$LN9@Proc_Playe:

; 98   : 				break;
; 99   : 			default:
; 100  : 				break;
; 101  : 		}
; 102  : 		*pName->m_Buffer++;

	add	DWORD PTR [esi], 2
	mov	edx, DWORD PTR [esi]
	cmp	WORD PTR [edx], bp
	jne	SHORT $LL15@Proc_Playe
$LN14@Proc_Playe:

; 103  : 	}
; 104  : 
; 105  : 	// Duplicate nickname check after replaced
; 106  : 	pName->m_Buffer = pNamePtr;
; 107  : 	aWideString changedName = pNamePtr;

	push	ebx
	lea	ecx, DWORD PTR _changedName$[esp+80]
	mov	DWORD PTR [esi], ebx
	call	??0aWideString@@QAE@PB_W@Z		; aWideString::aWideString

; 108  : 	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	DWORD PTR __$EHRec$[esp+84], ebp
	mov	ebp, DWORD PTR [eax+4]
	test	ebp, ebp
	je	SHORT $LN6@Proc_Playe
	npad	1
$LL8@Proc_Playe:

; 109  : 	{
; 110  : 		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 $LN7@Proc_Playe
	cmp	eax, DWORD PTR _pData$[esp+72]
	je	SHORT $LN7@Proc_Playe
	mov	ecx, DWORD PTR [eax+1880]
	push	ecx
	push	ebx
	call	_wcsicmp
	add	esp, 8
	test	eax, eax
	jne	SHORT $LN7@Proc_Playe

; 111  : 		{
; 112  : 			for (int i = 1; i <= 128; i++)

	lea	edi, DWORD PTR [eax+1]
	npad	7
$LL4@Proc_Playe:

; 113  : 			{
; 114  : 				pName->Format(L"%ls%d",changedName.GetString(),i);

	mov	eax, DWORD PTR _changedName$[esp+80]
	test	eax, eax
	je	SHORT $LN22@Proc_Playe
	mov	eax, DWORD PTR [eax]
	jmp	SHORT $LN23@Proc_Playe
$LN22@Proc_Playe:
	xor	eax, eax
$LN23@Proc_Playe:
	push	edi
	push	eax
	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

; 115  : 				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 $LN7@Proc_Playe
	add	edi, 1
	cmp	edi, 128				; 00000080H
	jle	SHORT $LL4@Proc_Playe
$LN7@Proc_Playe:

; 108  : 	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 $LL8@Proc_Playe
$LN6@Proc_Playe:

; 116  : 					break;
; 117  : 			}
; 118  : 		}
; 119  : 	}
; 120  : 	pData->PlayerName.Format(L"%ls",pNamePtr);

	mov	edi, DWORD PTR _pData$[esp+72]
	push	ebx
	lea	edx, DWORD PTR [edi+1880]
	push	OFFSET ??_C@_17CNPHIMPH@?$AA?$CF?$AAl?$AAs?$AA?$AA@
	push	edx
	call	?Format@nc_WideStringClass@@QAAXPB_WZZ	; nc_WideStringClass::Format

; 121  : 
; 122  : 	gzEventPlayerBase evt;

	fldz

; 123  : 	evt.SetPlayer(pData);
; 124  : 	evt.SetEventType(gzEVT_PLAYER_JOIN);
; 125  : 	gzEvtManager::ProcessEvent(evt);

	lea	eax, DWORD PTR _evt$[esp+88]
	fstp	QWORD PTR _evt$[esp+96]
	or	esi, -1
	push	eax
	mov	DWORD PTR _evt$[esp+108], 0
	mov	DWORD PTR _evt$[esp+116], esi
	mov	DWORD PTR _evt$[esp+92], OFFSET ??_7gzEventPlayerBase@@6B@
	mov	DWORD PTR _evt$[esp+124], edi
	mov	DWORD PTR _evt$[esp+112], 8192		; 00002000H
	call	?ProcessEvent@gzEvtManager@@SAPAVgzEvtHandler@@AAVgzEventBase@@@Z ; gzEvtManager::ProcessEvent
	add	esp, 16					; 00000010H

; 126  : }

	lea	ecx, DWORD PTR _changedName$[esp+76]
	mov	DWORD PTR __$EHRec$[esp+84], esi
	call	??1aStringBase@@UAE@XZ			; aStringBase::~aStringBase
	mov	ecx, DWORD PTR __$EHRec$[esp+76]
	pop	edi
	pop	esi
	pop	ebp
	pop	ebx
	mov	DWORD PTR fs:0, ecx
	add	esp, 60					; 0000003cH
	ret	8
$LN48@Proc_Playe:
	DD	$LN11@Proc_Playe
	DD	$LN9@Proc_Playe
$LN44@Proc_Playe:
	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
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$?Proc_PlayerJoin@@YGXPAVnc_cPlayer@@PAVnc_WideStringClass@@@Z$0:
	lea	ecx, DWORD PTR _changedName$[ebp]
	jmp	??1aWideString@@UAE@XZ
__ehhandler$?Proc_PlayerJoin@@YGXPAVnc_cPlayer@@PAVnc_WideStringClass@@@Z:
	mov	eax, OFFSET __ehfuncinfo$?Proc_PlayerJoin@@YGXPAVnc_cPlayer@@PAVnc_WideStringClass@@@Z
	jmp	___CxxFrameHandler3
text$x	ENDS
?Proc_PlayerJoin@@YGXPAVnc_cPlayer@@PAVnc_WideStringClass@@@Z ENDP ; Proc_PlayerJoin
PUBLIC	?Hook_PlayerJoin@@YAXXZ				; Hook_PlayerJoin
; Function compile flags: /Odtpy
;	COMDAT ?Hook_PlayerJoin@@YAXXZ
_TEXT	SEGMENT
?Hook_PlayerJoin@@YAXXZ PROC				; Hook_PlayerJoin, COMDAT

; 129  : 	_asm {
; 130  : 		push [esp+8]

	push	DWORD PTR [esp+8]

; 131  : 		push esi

	push	esi

; 132  : 		call Proc_PlayerJoin

	call	?Proc_PlayerJoin@@YGXPAVnc_cPlayer@@PAVnc_WideStringClass@@@Z ; Proc_PlayerJoin

; 133  : 		mov ecx, 0x81FF84

	mov	ecx, 8519556				; 0081ff84H

; 134  : 		mov ecx, [ecx]

	mov	ecx, DWORD PTR [ecx]

; 135  : 		mov edx, 0x4B4517

	mov	edx, 4932887				; 004b4517H

; 136  : 		jmp edx

	jmp	edx
?Hook_PlayerJoin@@YAXXZ ENDP				; Hook_PlayerJoin
_TEXT	ENDS
PUBLIC	?Proc_PlayerLeft@@YGXHK@Z			; Proc_PlayerLeft
EXTRN	?Find_Player@nc_cPlayerManager@@SAPAVnc_cPlayer@@H@Z:PROC ; nc_cPlayerManager::Find_Player
; Function compile flags: /Ogtpy
;	COMDAT ?Proc_PlayerLeft@@YGXHK@Z
_TEXT	SEGMENT
_evt$58664 = -40					; size = 40
_pID$ = 8						; size = 4
_callFrom$ = 12						; size = 4
?Proc_PlayerLeft@@YGXHK@Z PROC				; Proc_PlayerLeft, COMDAT

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

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

; 144  : 	gzPlayerLeftEnum Type = LEFT_UNKNOWN;
; 145  : 	switch (callFrom)

	mov	edx, DWORD PTR _callFrom$[esp+40]
	add	esp, 4
	or	ecx, -1
	cmp	edx, 4935840				; 004b50a0H
	ja	SHORT $LN11@Proc_Playe@2
	je	SHORT $LN6@Proc_Playe@2
	cmp	edx, 4389364				; 0042f9f4H
	je	SHORT $LN4@Proc_Playe@2
	cmp	edx, 4554698				; 00457fcaH
	jne	SHORT $LN7@Proc_Playe@2

; 150  : 
; 151  : 		case 0x457FCA: // cNetwork::Server_Broken_Connection_Handler(int)
; 152  : 			Type = LEFT_DISCONNECT;

	mov	ecx, 1

; 153  : 			break;

	jmp	SHORT $LN7@Proc_Playe@2
$LN4@Proc_Playe@2:

; 154  : 
; 155  : 		case 0x42F9F4: // WolGameModeClass::Kick_Player(wchar_t *)
; 156  : 			Type = LEFT_WOLKICK;

	mov	ecx, 2

; 157  : 			break;

	jmp	SHORT $LN7@Proc_Playe@2
$LN6@Proc_Playe@2:

; 146  : 	{
; 147  : 		case 0x4B50A0: // cClientGoodbyeEvent::Act(void)
; 148  : 			Type = LEFT_NORMAL;

	xor	ecx, ecx

; 149  : 			break;

	jmp	SHORT $LN7@Proc_Playe@2
$LN11@Proc_Playe@2:

; 144  : 	gzPlayerLeftEnum Type = LEFT_UNKNOWN;
; 145  : 	switch (callFrom)

	cmp	edx, 5128129				; 004e3fc1H
	je	SHORT $LN2@Proc_Playe@2
	cmp	edx, 5129925				; 004e46c5H
	jne	SHORT $LN7@Proc_Playe@2

; 158  : 
; 159  : 		case 0x4E46C5: // cGameSpyBanList::Begin_Player_Kick(int)
; 160  : 			Type = LEFT_GAMESPYKICK;

	mov	ecx, 3

; 161  : 			break;

	jmp	SHORT $LN7@Proc_Playe@2
$LN2@Proc_Playe@2:

; 162  : 
; 163  : 		case 0x4E3FC1: // cGameSpyAuthMgr::Evict_Player(int)
; 164  : 			Type = LEFT_GAMESPYEVICT;

	mov	ecx, 4
$LN7@Proc_Playe@2:

; 165  : 			break;
; 166  : 	}
; 167  : 	if (pData && Type != LEFT_UNKNOWN)

	test	eax, eax
	je	SHORT $LN1@Proc_Playe@2
	cmp	ecx, -1
	je	SHORT $LN1@Proc_Playe@2

; 168  : 	{
; 169  : 		gzEventPlayerBase evt;

	fldz

; 170  : 		evt.SetPlayer(pData);
; 171  : 		evt.SetInt(Type);

	mov	DWORD PTR _evt$58664[esp+56], ecx

; 172  : 		evt.SetEventType(gzEVT_PLAYER_LEFT);
; 173  : 		gzEvtManager::ProcessEvent(evt);

	lea	ecx, DWORD PTR _evt$58664[esp+40]
	fstp	QWORD PTR _evt$58664[esp+48]
	push	ecx
	mov	DWORD PTR _evt$58664[esp+68], -1
	mov	DWORD PTR _evt$58664[esp+44], OFFSET ??_7gzEventPlayerBase@@6B@
	mov	DWORD PTR _evt$58664[esp+76], eax
	mov	DWORD PTR _evt$58664[esp+64], 8193	; 00002001H
	call	?ProcessEvent@gzEvtManager@@SAPAVgzEvtHandler@@AAVgzEventBase@@@Z ; gzEvtManager::ProcessEvent
	add	esp, 4
$LN1@Proc_Playe@2:

; 174  : 	}
; 175  : }

	add	esp, 40					; 00000028H
	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

; 178  : 	_asm {
; 179  : 		push [esp] // Call from

	push	DWORD PTR [esp]

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

	push	DWORD PTR [esp+8]

; 181  : 		call Proc_PlayerLeft

	call	?Proc_PlayerLeft@@YGXHK@Z		; Proc_PlayerLeft

; 182  : 		sub esp, 0x10

	sub	esp, 16					; 00000010H

; 183  : 		push ebx

	push	ebx

; 184  : 		push ebp

	push	ebp

; 185  : 		push esi

	push	esi

; 186  : 		mov esi, 0x461B36

	mov	esi, 4594486				; 00461b36H

; 187  : 		jmp esi

	jmp	esi
?Hook_PlayerLeft@@YAXXZ ENDP				; Hook_PlayerLeft
_TEXT	ENDS
PUBLIC	??_C@_1CO@OGOGKJKA@?$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?$AA@ ; `string'
PUBLIC	__real@00000000
PUBLIC	?Hook_PlayerSuicide@@YGXXZ			; Hook_PlayerSuicide
EXTRN	?Send_Text_Msg@@YAXABVnc_WideStringClass@@H_NHH@Z:PROC ; Send_Text_Msg
EXTRN	?gzGameMgr@@3PAVgzGameManager@@A:DWORD		; gzGameMgr
;	COMDAT ??_C@_1CO@OGOGKJKA@?$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?$AA@
; File d:\source code\fds lib\new\fds_string.h
CONST	SEGMENT
??_C@_1CO@OGOGKJKA@?$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?$AA@ 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, 00H			; `string'
CONST	ENDS
;	COMDAT __real@00000000
CONST	SEGMENT
__real@00000000 DD 000000000r			; 0
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\gzhooks.cpp
xdata$x	ENDS
;	COMDAT ?Hook_PlayerSuicide@@YGXXZ
_TEXT	SEGMENT
_wstr$ = -68						; size = 4
_Suicide$ = -64						; size = 4
_packet$ = -60						; size = 4
$T67647 = -56						; size = 4
_evt$58701 = -52					; size = 40
__$EHRec$ = -12						; size = 12
?Hook_PlayerSuicide@@YGXXZ PROC				; Hook_PlayerSuicide, COMDAT

; 220  : 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, 56					; 00000038H
	push	esi

; 221  : 	nc_cSuicideEvent *Suicide;
; 222  : 	nc_cPacket *packet;
; 223  : 	_asm {
; 224  : 		mov Suicide, esi

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

; 225  : 		mov packet, edi

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

; 226  : 	}
; 227  : 	nc_cPlayer *pData = nc_cPlayerManager::Find_Player(Suicide->ID);

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

; 228  : 	if (!pData)

	test	esi, esi
	jne	SHORT $LN5@Hook_Playe

; 229  : 	{
; 230  : 		Suicide->Set_Delete_Pending();

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

; 253  : }

	mov	ecx, DWORD PTR __$EHRec$[esp+68]
	mov	DWORD PTR fs:0, ecx
	add	esp, 68					; 00000044H
	ret	0
$LN5@Hook_Playe:

; 231  : 		return;
; 232  : 	}
; 233  : 	if (pData->Owner.Reference)

	cmp	DWORD PTR [esi+20], 0
	je	SHORT $LN4@Hook_Playe

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

	mov	ecx, DWORD PTR [esi+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
$LN4@Hook_Playe:

; 235  : 	if (pData)
; 236  : 	{
; 237  : 		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+56]
	cmp	BYTE PTR [edx+37], 0
	jne	SHORT $LN1@Hook_Playe
	lea	ecx, DWORD PTR [esi+8]
	call	?Get@nc_FloatDataSafeClass@@QAEMXZ	; nc_FloatDataSafeClass::Get
	fcomp	DWORD PTR __real@00000000
	fnstsw	ax
	test	ah, 65					; 00000041H
	jne	SHORT $LN2@Hook_Playe
$LN1@Hook_Playe:

; 238  : 		{
; 239  : 			pData->Money = 0.0f;

	fldz
	lea	eax, DWORD PTR $T67647[esp+72]
	push	eax
	fstp	DWORD PTR $T67647[esp+76]
	lea	ecx, DWORD PTR [esi+8]
	push	ecx
	call	?Set@nc_FloatDataSafeClass@@QAG_NAAM@Z	; nc_FloatDataSafeClass::Set

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

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

; 241  : 		}
; 242  : 
; 243  : 		gzEventPlayerBase evt;

	fldz

; 244  : 		evt.SetPlayer(pData);
; 245  : 		evt.SetEventType(gzEVT_PLAYER_SUICIDE);
; 246  : 		gzEvtManager::ProcessEvent(evt);

	lea	ecx, DWORD PTR _evt$58701[esp+72]
	push	ecx
	fstp	QWORD PTR _evt$58701[esp+84]
	mov	DWORD PTR _evt$58701[esp+92], 0
	mov	DWORD PTR _evt$58701[esp+100], -1
	mov	DWORD PTR _evt$58701[esp+76], OFFSET ??_7gzEventPlayerBase@@6B@
	mov	DWORD PTR _evt$58701[esp+108], esi
	mov	DWORD PTR _evt$58701[esp+96], 8197	; 00002005H
	call	?ProcessEvent@gzEvtManager@@SAPAVgzEvtHandler@@AAVgzEventBase@@@Z ; gzEvtManager::ProcessEvent

; 247  : 	}
; 248  : 	nc_WideStringClass wstr;

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

; 249  : 	wstr.Format(L"%ls committed suicide.", pData->PlayerName.m_Buffer);

	mov	ecx, DWORD PTR [esi+1880]
	push	ecx
	lea	edx, DWORD PTR _wstr$[esp+80]
	push	OFFSET ??_C@_1CO@OGOGKJKA@?$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?$AA@
	push	edx
	mov	DWORD PTR __$EHRec$[esp+96], 0
	call	?Format@nc_WideStringClass@@QAAXPB_WZZ	; nc_WideStringClass::Format

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

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

; 251  : 	wstr.Free_String();

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

; 252  : 	Suicide->Set_Delete_Pending();

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

; 253  : }

	lea	ecx, DWORD PTR _wstr$[esp+72]
	mov	DWORD PTR __$EHRec$[esp+80], -1
	call	?Free_String@nc_WideStringClass@@QAEXXZ	; nc_WideStringClass::Free_String
	mov	ecx, DWORD PTR __$EHRec$[esp+72]
	pop	esi
	mov	DWORD PTR fs:0, ecx
	add	esp, 68					; 00000044H
	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	??_7gzEventPlayerChat@@6B@			; gzEventPlayerChat::`vftable'
PUBLIC	??0gzEventPlayerChat@@QAE@XZ			; gzEventPlayerChat::gzEventPlayerChat
PUBLIC	??_R4gzEventPlayerChat@@6B@			; gzEventPlayerChat::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVgzEventPlayerChat@@@8			; gzEventPlayerChat `RTTI Type Descriptor'
PUBLIC	??_R3gzEventPlayerChat@@8			; gzEventPlayerChat::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2gzEventPlayerChat@@8			; gzEventPlayerChat::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@gzEventPlayerChat@@8		; gzEventPlayerChat::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?Skippable@gzEventPlayerChat@@UAE_NXZ		; gzEventPlayerChat::Skippable
EXTRN	??0aWideString@@QAE@XZ:PROC			; aWideString::aWideString
;	COMDAT ??_R1A@?0A@EA@gzEventPlayerChat@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@gzEventPlayerChat@@8 DD FLAT:??_R0?AVgzEventPlayerChat@@@8 ; gzEventPlayerChat::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	02H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3gzEventPlayerChat@@8
rdata$r	ENDS
;	COMDAT ??_R2gzEventPlayerChat@@8
rdata$r	SEGMENT
??_R2gzEventPlayerChat@@8 DD FLAT:??_R1A@?0A@EA@gzEventPlayerChat@@8 ; gzEventPlayerChat::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzEventPlayerBase@@8
	DD	FLAT:??_R1A@?0A@EA@gzEventBase@@8
rdata$r	ENDS
;	COMDAT ??_R3gzEventPlayerChat@@8
rdata$r	SEGMENT
??_R3gzEventPlayerChat@@8 DD 00H			; gzEventPlayerChat::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	03H
	DD	FLAT:??_R2gzEventPlayerChat@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVgzEventPlayerChat@@@8
_DATA	SEGMENT
??_R0?AVgzEventPlayerChat@@@8 DD FLAT:??_7type_info@@6B@ ; gzEventPlayerChat `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVgzEventPlayerChat@@', 00H
_DATA	ENDS
;	COMDAT ??_R4gzEventPlayerChat@@6B@
rdata$r	SEGMENT
??_R4gzEventPlayerChat@@6B@ DD 00H			; gzEventPlayerChat::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVgzEventPlayerChat@@@8
	DD	FLAT:??_R3gzEventPlayerChat@@8
rdata$r	ENDS
;	COMDAT ??_7gzEventPlayerChat@@6B@
CONST	SEGMENT
??_7gzEventPlayerChat@@6B@ DD FLAT:??_R4gzEventPlayerChat@@6B@ ; gzEventPlayerChat::`vftable'
	DD	FLAT:?CanContinue@gzEventPlayerChat@@UAE_NXZ
	DD	FLAT:?Skippable@gzEventPlayerChat@@UAE_NXZ
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0gzEventPlayerChat@@QAE@XZ
_TEXT	SEGMENT
??0gzEventPlayerChat@@QAE@XZ PROC			; gzEventPlayerChat::gzEventPlayerChat, COMDAT
; _this$ = ecx
	fldz
	push	esi
	mov	esi, ecx
	fstp	QWORD PTR [esi+8]
	or	eax, -1
	lea	ecx, DWORD PTR [esi+44]
	mov	DWORD PTR [esi+16], 0
	mov	DWORD PTR [esi+20], eax
	mov	DWORD PTR [esi+24], eax
	mov	DWORD PTR [esi], OFFSET ??_7gzEventPlayerChat@@6B@
	call	??0aWideString@@QAE@XZ			; aWideString::aWideString
	mov	BYTE PTR [esi+60], 1
	mov	eax, esi
	pop	esi
	ret	0
??0gzEventPlayerChat@@QAE@XZ ENDP			; gzEventPlayerChat::gzEventPlayerChat
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzeventbase.h
_TEXT	ENDS
;	COMDAT ?Skippable@gzEventPlayerChat@@UAE_NXZ
_TEXT	SEGMENT
?Skippable@gzEventPlayerChat@@UAE_NXZ PROC		; gzEventPlayerChat::Skippable, COMDAT
; _this$ = ecx

; 169  : 	gzEVT_SKIPPABLE();

	mov	al, 1
	ret	0
?Skippable@gzEventPlayerChat@@UAE_NXZ ENDP		; gzEventPlayerChat::Skippable
_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
	add	ecx, 44					; 0000002cH
	jmp	??1aStringBase@@UAE@XZ			; aStringBase::~aStringBase
??1gzEventPlayerChat@@QAE@XZ ENDP			; gzEventPlayerChat::~gzEventPlayerChat
_TEXT	ENDS
PUBLIC	??_7gzEventPlayerRadio@@6B@			; gzEventPlayerRadio::`vftable'
PUBLIC	??0gzEventPlayerRadio@@QAE@XZ			; gzEventPlayerRadio::gzEventPlayerRadio
PUBLIC	??_R4gzEventPlayerRadio@@6B@			; gzEventPlayerRadio::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVgzEventPlayerRadio@@@8			; gzEventPlayerRadio `RTTI Type Descriptor'
PUBLIC	??_R3gzEventPlayerRadio@@8			; gzEventPlayerRadio::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2gzEventPlayerRadio@@8			; gzEventPlayerRadio::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@gzEventPlayerRadio@@8		; gzEventPlayerRadio::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?Skippable@gzEventPlayerRadio@@UAE_NXZ		; gzEventPlayerRadio::Skippable
;	COMDAT ??_R1A@?0A@EA@gzEventPlayerRadio@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@gzEventPlayerRadio@@8 DD FLAT:??_R0?AVgzEventPlayerRadio@@@8 ; gzEventPlayerRadio::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	02H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3gzEventPlayerRadio@@8
rdata$r	ENDS
;	COMDAT ??_R2gzEventPlayerRadio@@8
rdata$r	SEGMENT
??_R2gzEventPlayerRadio@@8 DD FLAT:??_R1A@?0A@EA@gzEventPlayerRadio@@8 ; gzEventPlayerRadio::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzEventPlayerBase@@8
	DD	FLAT:??_R1A@?0A@EA@gzEventBase@@8
rdata$r	ENDS
;	COMDAT ??_R3gzEventPlayerRadio@@8
rdata$r	SEGMENT
??_R3gzEventPlayerRadio@@8 DD 00H			; gzEventPlayerRadio::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	03H
	DD	FLAT:??_R2gzEventPlayerRadio@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVgzEventPlayerRadio@@@8
_DATA	SEGMENT
??_R0?AVgzEventPlayerRadio@@@8 DD FLAT:??_7type_info@@6B@ ; gzEventPlayerRadio `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVgzEventPlayerRadio@@', 00H
_DATA	ENDS
;	COMDAT ??_R4gzEventPlayerRadio@@6B@
rdata$r	SEGMENT
??_R4gzEventPlayerRadio@@6B@ DD 00H			; gzEventPlayerRadio::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVgzEventPlayerRadio@@@8
	DD	FLAT:??_R3gzEventPlayerRadio@@8
rdata$r	ENDS
;	COMDAT ??_7gzEventPlayerRadio@@6B@
CONST	SEGMENT
??_7gzEventPlayerRadio@@6B@ DD FLAT:??_R4gzEventPlayerRadio@@6B@ ; gzEventPlayerRadio::`vftable'
	DD	FLAT:?CanContinue@gzEventPlayerRadio@@UAE_NXZ
	DD	FLAT:?Skippable@gzEventPlayerRadio@@UAE_NXZ
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0gzEventPlayerRadio@@QAE@XZ
_TEXT	SEGMENT
??0gzEventPlayerRadio@@QAE@XZ PROC			; gzEventPlayerRadio::gzEventPlayerRadio, COMDAT
; _this$ = ecx
	fldz
	mov	eax, ecx
	or	ecx, -1
	fstp	QWORD PTR [eax+8]
	mov	DWORD PTR [eax+16], 0
	mov	DWORD PTR [eax+20], ecx
	mov	DWORD PTR [eax+24], ecx
	mov	DWORD PTR [eax], OFFSET ??_7gzEventPlayerRadio@@6B@
	mov	BYTE PTR [eax+57], 1
	ret	0
??0gzEventPlayerRadio@@QAE@XZ ENDP			; gzEventPlayerRadio::gzEventPlayerRadio
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Skippable@gzEventPlayerRadio@@UAE_NXZ
_TEXT	SEGMENT
?Skippable@gzEventPlayerRadio@@UAE_NXZ PROC		; gzEventPlayerRadio::Skippable, COMDAT
; _this$ = ecx

; 180  : 	gzEVT_SKIPPABLE();

	mov	al, 1
	ret	0
?Skippable@gzEventPlayerRadio@@UAE_NXZ ENDP		; gzEventPlayerRadio::Skippable
_TEXT	ENDS
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_String@nc_WideStringClass@@QAE_WH_N@Z:PROC	; nc_WideStringClass::Get_String
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
EXTRN	?cGame@@3AAPAVnc_cGameData@@A:DWORD		; cGame
;	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\gzhooks.cpp
xdata$x	ENDS
;	COMDAT ?Hook_ChangeTeam@@YGXXZ
_TEXT	SEGMENT
_ChangeTeam$ = -76					; size = 4
_wstr$ = -72						; size = 4
$T67741 = -68						; size = 4
_Type$ = -64						; size = 4
_packet$ = -60						; size = 4
$T67736 = -56						; size = 4
$T67732 = -56						; size = 4
_evt$ = -52						; size = 40
__$EHRec$ = -12						; size = 12
?Hook_ChangeTeam@@YGXXZ PROC				; Hook_ChangeTeam, COMDAT

; 388  : {

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

; 389  : 	nc_cChangeTeamEvent *ChangeTeam;
; 390  : 	nc_cPacket *packet;
; 391  : 	_asm
; 392  : 	{
; 393  : 		mov ChangeTeam, esi

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

; 394  : 		mov packet, edi

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

; 395  : 	}
; 396  : 	nc_cPlayer *pData = nc_cPlayerManager::Find_Player(ChangeTeam->ID);

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

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

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

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

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

; 399  : 		ChangeTeam->Set_Delete_Pending();

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

; 435  : }

	mov	ecx, DWORD PTR __$EHRec$[esp+76]
	mov	DWORD PTR fs:0, ecx
	add	esp, 76					; 0000004cH
	ret	0
$LN10@Hook_Chang:
	push	ebx

; 400  : 		return;
; 401  : 	}
; 402  : 	int Type = (pData->PlayerType.Get() == 1) ? 0 : 1,

	lea	ebx, DWORD PTR [edi+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+92], eax

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

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

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

	lea	ebp, DWORD PTR [edi+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 $LN40@Hook_Chang

; 405  : 		pData->Score = 0.0f;

	lea	ecx, DWORD PTR $T67732[esp+92]
	fstp	DWORD PTR $T67732[esp+92]
	push	ecx
	push	ebp
	call	?Set@nc_FloatDataSafeClass@@QAG_NAAM@Z	; nc_FloatDataSafeClass::Set
	jmp	SHORT $LN16@Hook_Chang
$LN40@Hook_Chang:
	fstp	ST(0)
$LN16@Hook_Chang:

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

	lea	ebp, DWORD PTR [edi+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 $LN46@Hook_Chang
	cmp	esi, 30000				; 00007530H
	jl	SHORT $LN46@Hook_Chang

; 407  : 		pData->Money = 0.0f;

	lea	edx, DWORD PTR $T67736[esp+92]
	fstp	DWORD PTR $T67736[esp+92]
	push	edx
	push	ebp
	call	?Set@nc_FloatDataSafeClass@@QAG_NAAM@Z	; nc_FloatDataSafeClass::Set
	jmp	SHORT $LN18@Hook_Chang
$LN46@Hook_Chang:

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

	fstp	ST(0)

; 407  : 		pData->Money = 0.0f;

$LN18@Hook_Chang:

; 408  : 	pData->Deaths -= 1;

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

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

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

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

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

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

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

; 412  : 	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	esi, DWORD PTR [ecx+4]
	test	esi, esi
	je	$LN5@Hook_Chang
	npad	2
$LL7@Hook_Chang:

; 413  : 	{
; 414  : 		nc_BeaconGameObj *Beacon = As_Beacon((GameObject *)objList->NodeData);

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

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

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

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

	test	ebp, ebp
	mov	ebx, eax
	je	SHORT $LN36@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+92]
	cmp	edx, DWORD PTR [eax+1716]
	jne	SHORT $LN36@Hook_Chang

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

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

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

	test	ebx, ebx
	je	SHORT $LN6@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+92]
	cmp	edx, DWORD PTR [eax+1716]
	jne	SHORT $LN6@Hook_Chang

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

	mov	edx, DWORD PTR [ebx]
	mov	ecx, ebx
$LN48@Hook_Chang:
	mov	eax, DWORD PTR [edx+88]
	push	0
	call	eax
$LN6@Hook_Chang:
	mov	esi, DWORD PTR [esi]
	test	esi, esi
	jne	SHORT $LL7@Hook_Chang
$LN5@Hook_Chang:

; 421  : 	}
; 422  : 	if (pData->Owner.Reference->obj)

	mov	ecx, DWORD PTR [edi+20]
	xor	ebx, ebx
	cmp	DWORD PTR [ecx+4], ebx
	je	SHORT $LN1@Hook_Chang

; 423  : 		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
$LN1@Hook_Chang:

; 424  : 	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+92], ecx

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

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

; 426  : 	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 [edi+1900]
	call	?Get@nc_IntDataSafeClass@@QAEHXZ	; nc_IntDataSafeClass::Get
	test	eax, eax
	mov	eax, OFFSET ??_C@_17OLCMCNJC@?$AAN?$AAo?$AAd?$AA?$AA@
	je	SHORT $LN14@Hook_Chang
	mov	eax, OFFSET ??_C@_17MLFALEKP@?$AAG?$AAD?$AAI?$AA?$AA@
$LN14@Hook_Chang:
	mov	edx, DWORD PTR [edi+1880]
	push	eax
	push	edx
	lea	eax, DWORD PTR _wstr$[esp+100]
	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

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

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

; 428  : 	wstr.Free_String();

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

; 429  : 	ChangeTeam->Set_Delete_Pending();

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

; 430  : 
; 431  : 	gzEventPlayerBase evt;

	fldz

; 432  : 	evt.SetPlayer(pData);
; 433  : 	evt.SetEventType(gzEVT_PLAYER_TEAMCHANGE);
; 434  : 	gzEvtManager::ProcessEvent(evt);

	lea	ecx, DWORD PTR _evt$[esp+92]
	fstp	QWORD PTR _evt$[esp+100]
	push	ecx
	mov	DWORD PTR _evt$[esp+112], ebx
	mov	DWORD PTR _evt$[esp+120], esi
	mov	DWORD PTR _evt$[esp+96], OFFSET ??_7gzEventPlayerBase@@6B@
	mov	DWORD PTR _evt$[esp+128], edi
	mov	DWORD PTR _evt$[esp+116], 8198		; 00002006H
	call	?ProcessEvent@gzEvtManager@@SAPAVgzEvtHandler@@AAVgzEventBase@@@Z ; gzEvtManager::ProcessEvent
	add	esp, 4

; 435  : }

	lea	ecx, DWORD PTR _wstr$[esp+92]
	mov	DWORD PTR __$EHRec$[esp+100], esi
	call	?Free_String@nc_WideStringClass@@QAEXXZ	; nc_WideStringClass::Free_String
	mov	ecx, DWORD PTR __$EHRec$[esp+92]
	pop	ebp
	pop	ebx
	pop	edi
	pop	esi
	mov	DWORD PTR fs:0, ecx
	add	esp, 76					; 0000004cH
	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	??_7gzEventPlayerSerialHash@@6B@		; gzEventPlayerSerialHash::`vftable'
PUBLIC	??0gzEventPlayerSerialHash@@QAE@XZ		; gzEventPlayerSerialHash::gzEventPlayerSerialHash
PUBLIC	??_R4gzEventPlayerSerialHash@@6B@		; gzEventPlayerSerialHash::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVgzEventPlayerSerialHash@@@8		; gzEventPlayerSerialHash `RTTI Type Descriptor'
PUBLIC	??_R3gzEventPlayerSerialHash@@8			; gzEventPlayerSerialHash::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2gzEventPlayerSerialHash@@8			; gzEventPlayerSerialHash::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@gzEventPlayerSerialHash@@8	; gzEventPlayerSerialHash::`RTTI Base Class Descriptor at (0,-1,0,64)'
EXTRN	??0aString@@QAE@XZ:PROC				; aString::aString
;	COMDAT ??_R1A@?0A@EA@gzEventPlayerSerialHash@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@gzEventPlayerSerialHash@@8 DD FLAT:??_R0?AVgzEventPlayerSerialHash@@@8 ; gzEventPlayerSerialHash::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	02H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3gzEventPlayerSerialHash@@8
rdata$r	ENDS
;	COMDAT ??_R2gzEventPlayerSerialHash@@8
rdata$r	SEGMENT
??_R2gzEventPlayerSerialHash@@8 DD FLAT:??_R1A@?0A@EA@gzEventPlayerSerialHash@@8 ; gzEventPlayerSerialHash::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzEventPlayerBase@@8
	DD	FLAT:??_R1A@?0A@EA@gzEventBase@@8
rdata$r	ENDS
;	COMDAT ??_R3gzEventPlayerSerialHash@@8
rdata$r	SEGMENT
??_R3gzEventPlayerSerialHash@@8 DD 00H			; gzEventPlayerSerialHash::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	03H
	DD	FLAT:??_R2gzEventPlayerSerialHash@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVgzEventPlayerSerialHash@@@8
_DATA	SEGMENT
??_R0?AVgzEventPlayerSerialHash@@@8 DD FLAT:??_7type_info@@6B@ ; gzEventPlayerSerialHash `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVgzEventPlayerSerialHash@@', 00H
_DATA	ENDS
;	COMDAT ??_R4gzEventPlayerSerialHash@@6B@
rdata$r	SEGMENT
??_R4gzEventPlayerSerialHash@@6B@ DD 00H		; gzEventPlayerSerialHash::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVgzEventPlayerSerialHash@@@8
	DD	FLAT:??_R3gzEventPlayerSerialHash@@8
rdata$r	ENDS
;	COMDAT ??_7gzEventPlayerSerialHash@@6B@
CONST	SEGMENT
??_7gzEventPlayerSerialHash@@6B@ DD FLAT:??_R4gzEventPlayerSerialHash@@6B@ ; gzEventPlayerSerialHash::`vftable'
	DD	FLAT:?CanContinue@gzEventBase@@UAE_NXZ
	DD	FLAT:?Skippable@gzEventBase@@UAE_NXZ
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0gzEventPlayerSerialHash@@QAE@XZ
_TEXT	SEGMENT
??0gzEventPlayerSerialHash@@QAE@XZ PROC			; gzEventPlayerSerialHash::gzEventPlayerSerialHash, COMDAT
; _this$ = ecx
	fldz
	push	esi
	mov	esi, ecx
	fstp	QWORD PTR [esi+8]
	or	eax, -1
	lea	ecx, DWORD PTR [esi+40]
	mov	DWORD PTR [esi+16], 0
	mov	DWORD PTR [esi+20], eax
	mov	DWORD PTR [esi+24], eax
	mov	DWORD PTR [esi], OFFSET ??_7gzEventPlayerSerialHash@@6B@
	call	??0aString@@QAE@XZ			; aString::aString
	mov	eax, esi
	pop	esi
	ret	0
??0gzEventPlayerSerialHash@@QAE@XZ ENDP			; gzEventPlayerSerialHash::gzEventPlayerSerialHash
_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
	add	ecx, 40					; 00000028H
	jmp	??1aStringBase@@UAE@XZ			; aStringBase::~aStringBase
??1gzEventPlayerSerialHash@@QAE@XZ ENDP			; gzEventPlayerSerialHash::~gzEventPlayerSerialHash
_TEXT	ENDS
PUBLIC	??_7gzEventObjectBase@@6B@			; gzEventObjectBase::`vftable'
PUBLIC	??0gzEventObjectBase@@QAE@XZ			; gzEventObjectBase::gzEventObjectBase
PUBLIC	??_R4gzEventObjectBase@@6B@			; gzEventObjectBase::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVgzEventObjectBase@@@8			; gzEventObjectBase `RTTI Type Descriptor'
PUBLIC	??_R3gzEventObjectBase@@8			; gzEventObjectBase::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2gzEventObjectBase@@8			; gzEventObjectBase::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@gzEventObjectBase@@8		; gzEventObjectBase::`RTTI Base Class Descriptor at (0,-1,0,64)'
;	COMDAT ??_R1A@?0A@EA@gzEventObjectBase@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@gzEventObjectBase@@8 DD FLAT:??_R0?AVgzEventObjectBase@@@8 ; gzEventObjectBase::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3gzEventObjectBase@@8
rdata$r	ENDS
;	COMDAT ??_R2gzEventObjectBase@@8
rdata$r	SEGMENT
??_R2gzEventObjectBase@@8 DD FLAT:??_R1A@?0A@EA@gzEventObjectBase@@8 ; gzEventObjectBase::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzEventBase@@8
rdata$r	ENDS
;	COMDAT ??_R3gzEventObjectBase@@8
rdata$r	SEGMENT
??_R3gzEventObjectBase@@8 DD 00H			; gzEventObjectBase::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2gzEventObjectBase@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVgzEventObjectBase@@@8
_DATA	SEGMENT
??_R0?AVgzEventObjectBase@@@8 DD FLAT:??_7type_info@@6B@ ; gzEventObjectBase `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVgzEventObjectBase@@', 00H
_DATA	ENDS
;	COMDAT ??_R4gzEventObjectBase@@6B@
rdata$r	SEGMENT
??_R4gzEventObjectBase@@6B@ DD 00H			; gzEventObjectBase::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVgzEventObjectBase@@@8
	DD	FLAT:??_R3gzEventObjectBase@@8
rdata$r	ENDS
;	COMDAT ??_7gzEventObjectBase@@6B@
CONST	SEGMENT
??_7gzEventObjectBase@@6B@ DD FLAT:??_R4gzEventObjectBase@@6B@ ; gzEventObjectBase::`vftable'
	DD	FLAT:?CanContinue@gzEventBase@@UAE_NXZ
	DD	FLAT:?Skippable@gzEventBase@@UAE_NXZ
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0gzEventObjectBase@@QAE@XZ
_TEXT	SEGMENT
??0gzEventObjectBase@@QAE@XZ PROC			; gzEventObjectBase::gzEventObjectBase, COMDAT
; _this$ = ecx
	fldz
	mov	eax, ecx
	or	ecx, -1
	fstp	QWORD PTR [eax+8]
	mov	DWORD PTR [eax+16], 0
	mov	DWORD PTR [eax+20], ecx
	mov	DWORD PTR [eax+24], ecx
	mov	DWORD PTR [eax], OFFSET ??_7gzEventObjectBase@@6B@
	ret	0
??0gzEventObjectBase@@QAE@XZ ENDP			; gzEventObjectBase::gzEventObjectBase
_TEXT	ENDS
PUBLIC	??_7gzEventPlayerPurchase@@6B@			; gzEventPlayerPurchase::`vftable'
PUBLIC	??0gzEventPlayerPurchase@@QAE@XZ		; gzEventPlayerPurchase::gzEventPlayerPurchase
PUBLIC	??_R4gzEventPlayerPurchase@@6B@			; gzEventPlayerPurchase::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVgzEventPlayerPurchase@@@8		; gzEventPlayerPurchase `RTTI Type Descriptor'
PUBLIC	??_R3gzEventPlayerPurchase@@8			; gzEventPlayerPurchase::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2gzEventPlayerPurchase@@8			; gzEventPlayerPurchase::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@gzEventPlayerPurchase@@8		; gzEventPlayerPurchase::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?Skippable@gzEventPlayerPurchase@@UAE_NXZ	; gzEventPlayerPurchase::Skippable
;	COMDAT ??_R1A@?0A@EA@gzEventPlayerPurchase@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@gzEventPlayerPurchase@@8 DD FLAT:??_R0?AVgzEventPlayerPurchase@@@8 ; gzEventPlayerPurchase::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	02H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3gzEventPlayerPurchase@@8
rdata$r	ENDS
;	COMDAT ??_R2gzEventPlayerPurchase@@8
rdata$r	SEGMENT
??_R2gzEventPlayerPurchase@@8 DD FLAT:??_R1A@?0A@EA@gzEventPlayerPurchase@@8 ; gzEventPlayerPurchase::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzEventPlayerBase@@8
	DD	FLAT:??_R1A@?0A@EA@gzEventBase@@8
rdata$r	ENDS
;	COMDAT ??_R3gzEventPlayerPurchase@@8
rdata$r	SEGMENT
??_R3gzEventPlayerPurchase@@8 DD 00H			; gzEventPlayerPurchase::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	03H
	DD	FLAT:??_R2gzEventPlayerPurchase@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVgzEventPlayerPurchase@@@8
_DATA	SEGMENT
??_R0?AVgzEventPlayerPurchase@@@8 DD FLAT:??_7type_info@@6B@ ; gzEventPlayerPurchase `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVgzEventPlayerPurchase@@', 00H
_DATA	ENDS
;	COMDAT ??_R4gzEventPlayerPurchase@@6B@
rdata$r	SEGMENT
??_R4gzEventPlayerPurchase@@6B@ DD 00H			; gzEventPlayerPurchase::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVgzEventPlayerPurchase@@@8
	DD	FLAT:??_R3gzEventPlayerPurchase@@8
rdata$r	ENDS
;	COMDAT ??_7gzEventPlayerPurchase@@6B@
CONST	SEGMENT
??_7gzEventPlayerPurchase@@6B@ DD FLAT:??_R4gzEventPlayerPurchase@@6B@ ; gzEventPlayerPurchase::`vftable'
	DD	FLAT:?CanContinue@gzEventPlayerPurchase@@UAE_NXZ
	DD	FLAT:?Skippable@gzEventPlayerPurchase@@UAE_NXZ
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0gzEventPlayerPurchase@@QAE@XZ
_TEXT	SEGMENT
??0gzEventPlayerPurchase@@QAE@XZ PROC			; gzEventPlayerPurchase::gzEventPlayerPurchase, COMDAT
; _this$ = ecx
	fldz
	mov	eax, ecx
	or	ecx, -1
	fstp	QWORD PTR [eax+8]
	mov	DWORD PTR [eax+16], 0
	mov	DWORD PTR [eax+20], ecx
	mov	DWORD PTR [eax+24], ecx
	mov	DWORD PTR [eax], OFFSET ??_7gzEventPlayerPurchase@@6B@
	mov	BYTE PTR [eax+60], 1
	ret	0
??0gzEventPlayerPurchase@@QAE@XZ ENDP			; gzEventPlayerPurchase::gzEventPlayerPurchase
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzeventbase.h
_TEXT	ENDS
;	COMDAT ?Skippable@gzEventPlayerPurchase@@UAE_NXZ
_TEXT	SEGMENT
?Skippable@gzEventPlayerPurchase@@UAE_NXZ PROC		; gzEventPlayerPurchase::Skippable, COMDAT
; _this$ = ecx

; 159  : 	gzEVT_SKIPPABLE();

	mov	al, 1
	ret	0
?Skippable@gzEventPlayerPurchase@@UAE_NXZ ENDP		; gzEventPlayerPurchase::Skippable
_TEXT	ENDS
PUBLIC	??_7gzEventObjectCreate@@6B@			; gzEventObjectCreate::`vftable'
PUBLIC	??0gzEventObjectCreate@@QAE@XZ			; gzEventObjectCreate::gzEventObjectCreate
PUBLIC	??_R4gzEventObjectCreate@@6B@			; gzEventObjectCreate::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVgzEventObjectCreate@@@8			; gzEventObjectCreate `RTTI Type Descriptor'
PUBLIC	??_R3gzEventObjectCreate@@8			; gzEventObjectCreate::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2gzEventObjectCreate@@8			; gzEventObjectCreate::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@gzEventObjectCreate@@8		; gzEventObjectCreate::`RTTI Base Class Descriptor at (0,-1,0,64)'
;	COMDAT ??_R1A@?0A@EA@gzEventObjectCreate@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@gzEventObjectCreate@@8 DD FLAT:??_R0?AVgzEventObjectCreate@@@8 ; gzEventObjectCreate::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	02H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3gzEventObjectCreate@@8
rdata$r	ENDS
;	COMDAT ??_R2gzEventObjectCreate@@8
rdata$r	SEGMENT
??_R2gzEventObjectCreate@@8 DD FLAT:??_R1A@?0A@EA@gzEventObjectCreate@@8 ; gzEventObjectCreate::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzEventObjectBase@@8
	DD	FLAT:??_R1A@?0A@EA@gzEventBase@@8
rdata$r	ENDS
;	COMDAT ??_R3gzEventObjectCreate@@8
rdata$r	SEGMENT
??_R3gzEventObjectCreate@@8 DD 00H			; gzEventObjectCreate::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	03H
	DD	FLAT:??_R2gzEventObjectCreate@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVgzEventObjectCreate@@@8
_DATA	SEGMENT
??_R0?AVgzEventObjectCreate@@@8 DD FLAT:??_7type_info@@6B@ ; gzEventObjectCreate `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVgzEventObjectCreate@@', 00H
_DATA	ENDS
;	COMDAT ??_R4gzEventObjectCreate@@6B@
rdata$r	SEGMENT
??_R4gzEventObjectCreate@@6B@ DD 00H			; gzEventObjectCreate::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVgzEventObjectCreate@@@8
	DD	FLAT:??_R3gzEventObjectCreate@@8
rdata$r	ENDS
;	COMDAT ??_7gzEventObjectCreate@@6B@
CONST	SEGMENT
??_7gzEventObjectCreate@@6B@ DD FLAT:??_R4gzEventObjectCreate@@6B@ ; gzEventObjectCreate::`vftable'
	DD	FLAT:?CanContinue@gzEventBase@@UAE_NXZ
	DD	FLAT:?Skippable@gzEventBase@@UAE_NXZ
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0gzEventObjectCreate@@QAE@XZ
_TEXT	SEGMENT
??0gzEventObjectCreate@@QAE@XZ PROC			; gzEventObjectCreate::gzEventObjectCreate, COMDAT
; _this$ = ecx
	fldz
	mov	eax, ecx
	or	ecx, -1
	fstp	QWORD PTR [eax+8]
	mov	DWORD PTR [eax+16], 0
	mov	DWORD PTR [eax+20], ecx
	mov	DWORD PTR [eax+24], ecx
	mov	DWORD PTR [eax], OFFSET ??_7gzEventObjectCreate@@6B@
	ret	0
??0gzEventObjectCreate@@QAE@XZ ENDP			; gzEventObjectCreate::gzEventObjectCreate
_TEXT	ENDS
PUBLIC	??_C@_0BO@KLBKOCME@Error?5creating?5object?5?$CFs?3?5?$CFs?6?$AA@ ; `string'
PUBLIC	?Proc_CreateObjectByPresetName@@YGPAVnc_PersistClass@@PBD@Z ; Proc_CreateObjectByPresetName
EXTRN	?Get_String@nc_StringClass@@QAEXH_N@Z:PROC	; nc_StringClass::Get_String
EXTRN	?Find_Typed_Definition@nc_DefinitionMgrClass@@SAPAVnc_DefinitionClass@@PBDK_N@Z:PROC ; nc_DefinitionMgrClass::Find_Typed_Definition
;	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_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\gzhooks.cpp
xdata$x	ENDS
;	COMDAT ?Proc_CreateObjectByPresetName@@YGPAVnc_PersistClass@@PBD@Z
_TEXT	SEGMENT
_evt$ = -52						; size = 40
__$EHRec$ = -12						; size = 12
_ErrorMsg$ = 8						; size = 4
_preset$ = 8						; size = 4
?Proc_CreateObjectByPresetName@@YGPAVnc_PersistClass@@PBD@Z PROC ; Proc_CreateObjectByPresetName, COMDAT

; 669  : {

	mov	eax, DWORD PTR fs:0
	push	-1
	push	__ehhandler$?Proc_CreateObjectByPresetName@@YGPAVnc_PersistClass@@PBD@Z
	push	eax
	mov	DWORD PTR fs:0, esp

; 670  : 	nc_DefinitionClass *Definition = nc_DefinitionMgrClass::Find_Typed_Definition(preset,0x3000, true);

	mov	eax, DWORD PTR _preset$[esp+8]
	sub	esp, 40					; 00000028H
	push	esi
	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

; 671  : 	if (!Definition)

	test	esi, esi

; 672  : 		return NULL;

	je	SHORT $LN21@Proc_Creat

; 673  : 	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+52], edx

; 674  : 	ErrorMsg.Get_String(0, false);

	push	0
	push	0
	lea	ecx, DWORD PTR _ErrorMsg$[esp+60]
	mov	DWORD PTR __$EHRec$[esp+72], 0
	call	?Get_String@nc_StringClass@@QAEXH_N@Z	; nc_StringClass::Get_String

; 675  : 	if (!Definition->Is_Valid_Config(ErrorMsg.m_Buffer))

	mov	ecx, DWORD PTR _ErrorMsg$[esp+52]
	mov	eax, DWORD PTR [esi]
	mov	edx, DWORD PTR [eax+56]
	push	ecx
	mov	ecx, esi
	call	edx
	test	al, al
	jne	SHORT $LN1@Proc_Creat

; 676  : 	{
; 677  : 		gzConsole::Out("Error creating object %s: %s\n",Definition->Get_Name(), ErrorMsg.m_Buffer);

	mov	eax, DWORD PTR _ErrorMsg$[esp+52]
	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

; 678  : 		ErrorMsg.Free_String();

	lea	ecx, DWORD PTR _ErrorMsg$[esp+52]
	call	?Free_String@nc_StringClass@@QAEXXZ	; nc_StringClass::Free_String

; 679  : 		return NULL;

	lea	ecx, DWORD PTR _ErrorMsg$[esp+52]
	mov	DWORD PTR __$EHRec$[esp+64], -1
	call	?Free_String@nc_StringClass@@QAEXXZ	; nc_StringClass::Free_String
$LN21@Proc_Creat:
	xor	eax, eax
	pop	esi

; 690  : }

	mov	ecx, DWORD PTR __$EHRec$[esp+52]
	mov	DWORD PTR fs:0, ecx
	add	esp, 52					; 00000034H
	ret	4
$LN1@Proc_Creat:

; 680  : 	}
; 681  : 	ErrorMsg.Free_String();

	lea	ecx, DWORD PTR _ErrorMsg$[esp+52]
	call	?Free_String@nc_StringClass@@QAEXXZ	; nc_StringClass::Free_String

; 682  : 	nc_PersistClass *NewObject = Definition->Create();

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

; 683  : 
; 684  : 	gzEventObjectCreate evt;

	fldz

; 685  : 	evt.m_obj = gzStatic_Cast(nc_ScriptableGameObj, NewObject);
; 686  : 	evt.SetEventType(gzEVT_OBJECT_CREATE);
; 687  : 	gzEvtManager::ProcessEvent(evt);

	lea	ecx, DWORD PTR _evt$[esp+56]
	fstp	QWORD PTR _evt$[esp+64]
	mov	esi, eax
	push	ecx
	mov	DWORD PTR _evt$[esp+76], 0
	mov	DWORD PTR _evt$[esp+84], -1
	mov	DWORD PTR _evt$[esp+60], OFFSET ??_7gzEventObjectCreate@@6B@
	mov	DWORD PTR _evt$[esp+92], esi
	mov	DWORD PTR _evt$[esp+80], 12288		; 00003000H
	call	?ProcessEvent@gzEvtManager@@SAPAVgzEvtHandler@@AAVgzEventBase@@@Z ; gzEvtManager::ProcessEvent
	add	esp, 4

; 688  : 
; 689  : 	return NewObject;

	lea	ecx, DWORD PTR _ErrorMsg$[esp+52]
	mov	DWORD PTR __$EHRec$[esp+64], -1
	call	?Free_String@nc_StringClass@@QAEXXZ	; nc_StringClass::Free_String

; 690  : }

	mov	ecx, DWORD PTR __$EHRec$[esp+56]
	mov	eax, esi
	pop	esi
	mov	DWORD PTR fs:0, ecx
	add	esp, 52					; 00000034H
	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

; 693  : 	_asm {
; 694  : 		push ebp

	push	ebp

; 695  : 		mov ebp, esp

	mov	ebp, esp

; 696  : 		push preset

	push	DWORD PTR _preset$[ebp]

; 697  : 		call Proc_CreateObjectByPresetName

	call	?Proc_CreateObjectByPresetName@@YGPAVnc_PersistClass@@PBD@Z ; Proc_CreateObjectByPresetName

; 698  : 		mov esp, ebp

	mov	esp, ebp

; 699  : 		pop ebp

	pop	ebp

; 700  : 		retn

	ret	0
?Hook_CreateObjectByPresetName@@YAXPBD@Z ENDP		; Hook_CreateObjectByPresetName
_TEXT	ENDS
PUBLIC	??_7gzEventObjectInit@@6B@			; gzEventObjectInit::`vftable'
PUBLIC	??0gzEventObjectInit@@QAE@XZ			; gzEventObjectInit::gzEventObjectInit
PUBLIC	??_R4gzEventObjectInit@@6B@			; gzEventObjectInit::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVgzEventObjectInit@@@8			; gzEventObjectInit `RTTI Type Descriptor'
PUBLIC	??_R3gzEventObjectInit@@8			; gzEventObjectInit::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2gzEventObjectInit@@8			; gzEventObjectInit::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@gzEventObjectInit@@8		; gzEventObjectInit::`RTTI Base Class Descriptor at (0,-1,0,64)'
;	COMDAT ??_R1A@?0A@EA@gzEventObjectInit@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@gzEventObjectInit@@8 DD FLAT:??_R0?AVgzEventObjectInit@@@8 ; gzEventObjectInit::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	02H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3gzEventObjectInit@@8
rdata$r	ENDS
;	COMDAT ??_R2gzEventObjectInit@@8
rdata$r	SEGMENT
??_R2gzEventObjectInit@@8 DD FLAT:??_R1A@?0A@EA@gzEventObjectInit@@8 ; gzEventObjectInit::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzEventObjectBase@@8
	DD	FLAT:??_R1A@?0A@EA@gzEventBase@@8
rdata$r	ENDS
;	COMDAT ??_R3gzEventObjectInit@@8
rdata$r	SEGMENT
??_R3gzEventObjectInit@@8 DD 00H			; gzEventObjectInit::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	03H
	DD	FLAT:??_R2gzEventObjectInit@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVgzEventObjectInit@@@8
_DATA	SEGMENT
??_R0?AVgzEventObjectInit@@@8 DD FLAT:??_7type_info@@6B@ ; gzEventObjectInit `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVgzEventObjectInit@@', 00H
_DATA	ENDS
;	COMDAT ??_R4gzEventObjectInit@@6B@
rdata$r	SEGMENT
??_R4gzEventObjectInit@@6B@ DD 00H			; gzEventObjectInit::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVgzEventObjectInit@@@8
	DD	FLAT:??_R3gzEventObjectInit@@8
rdata$r	ENDS
;	COMDAT ??_7gzEventObjectInit@@6B@
CONST	SEGMENT
??_7gzEventObjectInit@@6B@ DD FLAT:??_R4gzEventObjectInit@@6B@ ; gzEventObjectInit::`vftable'
	DD	FLAT:?CanContinue@gzEventBase@@UAE_NXZ
	DD	FLAT:?Skippable@gzEventBase@@UAE_NXZ
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0gzEventObjectInit@@QAE@XZ
_TEXT	SEGMENT
??0gzEventObjectInit@@QAE@XZ PROC			; gzEventObjectInit::gzEventObjectInit, COMDAT
; _this$ = ecx
	fldz
	mov	eax, ecx
	or	ecx, -1
	fstp	QWORD PTR [eax+8]
	mov	DWORD PTR [eax+16], 0
	mov	DWORD PTR [eax+20], ecx
	mov	DWORD PTR [eax+24], ecx
	mov	DWORD PTR [eax], OFFSET ??_7gzEventObjectInit@@6B@
	ret	0
??0gzEventObjectInit@@QAE@XZ ENDP			; gzEventObjectInit::gzEventObjectInit
_TEXT	ENDS
PUBLIC	??_7gzEventObjectKill@@6B@			; gzEventObjectKill::`vftable'
PUBLIC	??0gzEventObjectKill@@QAE@XZ			; gzEventObjectKill::gzEventObjectKill
PUBLIC	??_R4gzEventObjectKill@@6B@			; gzEventObjectKill::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVgzEventObjectKill@@@8			; gzEventObjectKill `RTTI Type Descriptor'
PUBLIC	??_R3gzEventObjectKill@@8			; gzEventObjectKill::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2gzEventObjectKill@@8			; gzEventObjectKill::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@gzEventObjectKill@@8		; gzEventObjectKill::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?Skippable@gzEventObjectKill@@UAE_NXZ		; gzEventObjectKill::Skippable
;	COMDAT ??_R1A@?0A@EA@gzEventObjectKill@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@gzEventObjectKill@@8 DD FLAT:??_R0?AVgzEventObjectKill@@@8 ; gzEventObjectKill::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	02H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3gzEventObjectKill@@8
rdata$r	ENDS
;	COMDAT ??_R2gzEventObjectKill@@8
rdata$r	SEGMENT
??_R2gzEventObjectKill@@8 DD FLAT:??_R1A@?0A@EA@gzEventObjectKill@@8 ; gzEventObjectKill::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzEventObjectBase@@8
	DD	FLAT:??_R1A@?0A@EA@gzEventBase@@8
rdata$r	ENDS
;	COMDAT ??_R3gzEventObjectKill@@8
rdata$r	SEGMENT
??_R3gzEventObjectKill@@8 DD 00H			; gzEventObjectKill::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	03H
	DD	FLAT:??_R2gzEventObjectKill@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVgzEventObjectKill@@@8
_DATA	SEGMENT
??_R0?AVgzEventObjectKill@@@8 DD FLAT:??_7type_info@@6B@ ; gzEventObjectKill `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVgzEventObjectKill@@', 00H
_DATA	ENDS
;	COMDAT ??_R4gzEventObjectKill@@6B@
rdata$r	SEGMENT
??_R4gzEventObjectKill@@6B@ DD 00H			; gzEventObjectKill::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVgzEventObjectKill@@@8
	DD	FLAT:??_R3gzEventObjectKill@@8
rdata$r	ENDS
;	COMDAT ??_7gzEventObjectKill@@6B@
CONST	SEGMENT
??_7gzEventObjectKill@@6B@ DD FLAT:??_R4gzEventObjectKill@@6B@ ; gzEventObjectKill::`vftable'
	DD	FLAT:?CanContinue@gzEventObjectKill@@UAE_NXZ
	DD	FLAT:?Skippable@gzEventObjectKill@@UAE_NXZ
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0gzEventObjectKill@@QAE@XZ
_TEXT	SEGMENT
??0gzEventObjectKill@@QAE@XZ PROC			; gzEventObjectKill::gzEventObjectKill, COMDAT
; _this$ = ecx
	fldz
	mov	eax, ecx
	or	ecx, -1
	fstp	QWORD PTR [eax+8]
	mov	DWORD PTR [eax+16], 0
	mov	DWORD PTR [eax+20], ecx
	mov	DWORD PTR [eax+24], ecx
	mov	DWORD PTR [eax], OFFSET ??_7gzEventObjectKill@@6B@
	mov	BYTE PTR [eax+40], 1
	ret	0
??0gzEventObjectKill@@QAE@XZ ENDP			; gzEventObjectKill::gzEventObjectKill
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzeventbase.h
_TEXT	ENDS
;	COMDAT ?Skippable@gzEventObjectKill@@UAE_NXZ
_TEXT	SEGMENT
?Skippable@gzEventObjectKill@@UAE_NXZ PROC		; gzEventObjectKill::Skippable, COMDAT
; _this$ = ecx

; 236  : 	gzEVT_SKIPPABLE();

	mov	al, 1
	ret	0
?Skippable@gzEventObjectKill@@UAE_NXZ ENDP		; gzEventObjectKill::Skippable
_TEXT	ENDS
PUBLIC	?Proc_OnObjectKillExpired@@YGXPAVnc_DamageableGameObj@@@Z ; Proc_OnObjectKillExpired
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzhooks.cpp
;	COMDAT ?Proc_OnObjectKillExpired@@YGXPAVnc_DamageableGameObj@@@Z
_TEXT	SEGMENT
_evt$ = -48						; size = 48
_victim$ = 8						; size = 4
?Proc_OnObjectKillExpired@@YGXPAVnc_DamageableGameObj@@@Z PROC ; Proc_OnObjectKillExpired, COMDAT

; 800  : {

	sub	esp, 48					; 00000030H

; 801  : 	gzEventObjectKill evt;

	fldz
	xor	eax, eax
	mov	DWORD PTR _evt$[esp+64], eax
	fstp	QWORD PTR _evt$[esp+56]

; 802  : 	evt.m_attacker = NULL;

	mov	DWORD PTR _evt$[esp+80], eax

; 803  : 	evt.m_defender = victim;

	mov	eax, DWORD PTR _victim$[esp+44]

; 804  : 	evt.SetEventType(gzEVT_OBJECT_KILL);
; 805  : 	gzEvtManager::ProcessEvent(evt);

	lea	ecx, DWORD PTR _evt$[esp+48]
	push	ecx
	mov	DWORD PTR _evt$[esp+76], -1
	mov	DWORD PTR _evt$[esp+52], OFFSET ??_7gzEventObjectKill@@6B@
	mov	BYTE PTR _evt$[esp+92], 1
	mov	DWORD PTR _evt$[esp+88], eax
	mov	DWORD PTR _evt$[esp+72], 12291		; 00003003H
	call	?ProcessEvent@gzEvtManager@@SAPAVgzEvtHandler@@AAVgzEventBase@@@Z ; gzEvtManager::ProcessEvent

; 806  : }

	add	esp, 52					; 00000034H
	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

; 809  : 	_asm {
; 810  : 		push ebx

	push	ebx

; 811  : 		call Proc_OnObjectKillExpired

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

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

	mov	eax, DWORD PTR [edi-116]

; 813  : 		xor esi, esi

	xor	esi, esi

; 814  : 		mov ecx, 0x67C0D0

	mov	ecx, 6799568				; 0067c0d0H

; 815  : 		jmp ecx

	jmp	ecx
?Hook_OnObjectKillExpired@@YAXXZ ENDP			; Hook_OnObjectKillExpired
_TEXT	ENDS
PUBLIC	??_7gzEventObjectTransition@@6B@		; gzEventObjectTransition::`vftable'
PUBLIC	??0gzEventObjectTransition@@QAE@XZ		; gzEventObjectTransition::gzEventObjectTransition
PUBLIC	??_R4gzEventObjectTransition@@6B@		; gzEventObjectTransition::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVgzEventObjectTransition@@@8		; gzEventObjectTransition `RTTI Type Descriptor'
PUBLIC	??_R3gzEventObjectTransition@@8			; gzEventObjectTransition::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2gzEventObjectTransition@@8			; gzEventObjectTransition::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@gzEventObjectTransition@@8	; gzEventObjectTransition::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?Skippable@gzEventObjectTransition@@UAE_NXZ	; gzEventObjectTransition::Skippable
;	COMDAT ??_R1A@?0A@EA@gzEventObjectTransition@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@gzEventObjectTransition@@8 DD FLAT:??_R0?AVgzEventObjectTransition@@@8 ; gzEventObjectTransition::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	02H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3gzEventObjectTransition@@8
rdata$r	ENDS
;	COMDAT ??_R2gzEventObjectTransition@@8
rdata$r	SEGMENT
??_R2gzEventObjectTransition@@8 DD FLAT:??_R1A@?0A@EA@gzEventObjectTransition@@8 ; gzEventObjectTransition::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzEventObjectBase@@8
	DD	FLAT:??_R1A@?0A@EA@gzEventBase@@8
rdata$r	ENDS
;	COMDAT ??_R3gzEventObjectTransition@@8
rdata$r	SEGMENT
??_R3gzEventObjectTransition@@8 DD 00H			; gzEventObjectTransition::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	03H
	DD	FLAT:??_R2gzEventObjectTransition@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVgzEventObjectTransition@@@8
_DATA	SEGMENT
??_R0?AVgzEventObjectTransition@@@8 DD FLAT:??_7type_info@@6B@ ; gzEventObjectTransition `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVgzEventObjectTransition@@', 00H
_DATA	ENDS
;	COMDAT ??_R4gzEventObjectTransition@@6B@
rdata$r	SEGMENT
??_R4gzEventObjectTransition@@6B@ DD 00H		; gzEventObjectTransition::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVgzEventObjectTransition@@@8
	DD	FLAT:??_R3gzEventObjectTransition@@8
rdata$r	ENDS
;	COMDAT ??_7gzEventObjectTransition@@6B@
CONST	SEGMENT
??_7gzEventObjectTransition@@6B@ DD FLAT:??_R4gzEventObjectTransition@@6B@ ; gzEventObjectTransition::`vftable'
	DD	FLAT:?CanContinue@gzEventObjectTransition@@UAE_NXZ
	DD	FLAT:?Skippable@gzEventObjectTransition@@UAE_NXZ
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0gzEventObjectTransition@@QAE@XZ
_TEXT	SEGMENT
??0gzEventObjectTransition@@QAE@XZ PROC			; gzEventObjectTransition::gzEventObjectTransition, COMDAT
; _this$ = ecx
	fldz
	mov	eax, ecx
	or	ecx, -1
	fstp	QWORD PTR [eax+8]
	mov	DWORD PTR [eax+16], 0
	mov	DWORD PTR [eax+20], ecx
	mov	DWORD PTR [eax+24], ecx
	mov	DWORD PTR [eax], OFFSET ??_7gzEventObjectTransition@@6B@
	mov	BYTE PTR [eax+40], 1
	ret	0
??0gzEventObjectTransition@@QAE@XZ ENDP			; gzEventObjectTransition::gzEventObjectTransition
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzeventbase.h
_TEXT	ENDS
;	COMDAT ?Skippable@gzEventObjectTransition@@UAE_NXZ
_TEXT	SEGMENT
?Skippable@gzEventObjectTransition@@UAE_NXZ PROC	; gzEventObjectTransition::Skippable, COMDAT
; _this$ = ecx

; 252  : 	gzEVT_SKIPPABLE();

	mov	al, 1
	ret	0
?Skippable@gzEventObjectTransition@@UAE_NXZ ENDP	; gzEventObjectTransition::Skippable
_TEXT	ENDS
PUBLIC	??_7gzEventObjectJump@@6B@			; gzEventObjectJump::`vftable'
PUBLIC	??0gzEventObjectJump@@QAE@XZ			; gzEventObjectJump::gzEventObjectJump
PUBLIC	??_R4gzEventObjectJump@@6B@			; gzEventObjectJump::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVgzEventObjectJump@@@8			; gzEventObjectJump `RTTI Type Descriptor'
PUBLIC	??_R3gzEventObjectJump@@8			; gzEventObjectJump::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2gzEventObjectJump@@8			; gzEventObjectJump::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@gzEventObjectJump@@8		; gzEventObjectJump::`RTTI Base Class Descriptor at (0,-1,0,64)'
;	COMDAT ??_R1A@?0A@EA@gzEventObjectJump@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@gzEventObjectJump@@8 DD FLAT:??_R0?AVgzEventObjectJump@@@8 ; gzEventObjectJump::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	02H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3gzEventObjectJump@@8
rdata$r	ENDS
;	COMDAT ??_R2gzEventObjectJump@@8
rdata$r	SEGMENT
??_R2gzEventObjectJump@@8 DD FLAT:??_R1A@?0A@EA@gzEventObjectJump@@8 ; gzEventObjectJump::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzEventObjectBase@@8
	DD	FLAT:??_R1A@?0A@EA@gzEventBase@@8
rdata$r	ENDS
;	COMDAT ??_R3gzEventObjectJump@@8
rdata$r	SEGMENT
??_R3gzEventObjectJump@@8 DD 00H			; gzEventObjectJump::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	03H
	DD	FLAT:??_R2gzEventObjectJump@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVgzEventObjectJump@@@8
_DATA	SEGMENT
??_R0?AVgzEventObjectJump@@@8 DD FLAT:??_7type_info@@6B@ ; gzEventObjectJump `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVgzEventObjectJump@@', 00H
_DATA	ENDS
;	COMDAT ??_R4gzEventObjectJump@@6B@
rdata$r	SEGMENT
??_R4gzEventObjectJump@@6B@ DD 00H			; gzEventObjectJump::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVgzEventObjectJump@@@8
	DD	FLAT:??_R3gzEventObjectJump@@8
rdata$r	ENDS
;	COMDAT ??_7gzEventObjectJump@@6B@
CONST	SEGMENT
??_7gzEventObjectJump@@6B@ DD FLAT:??_R4gzEventObjectJump@@6B@ ; gzEventObjectJump::`vftable'
	DD	FLAT:?CanContinue@gzEventBase@@UAE_NXZ
	DD	FLAT:?Skippable@gzEventBase@@UAE_NXZ
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0gzEventObjectJump@@QAE@XZ
_TEXT	SEGMENT
??0gzEventObjectJump@@QAE@XZ PROC			; gzEventObjectJump::gzEventObjectJump, COMDAT
; _this$ = ecx
	fldz
	mov	eax, ecx
	or	ecx, -1
	fstp	QWORD PTR [eax+8]
	mov	DWORD PTR [eax+16], 0
	mov	DWORD PTR [eax+20], ecx
	mov	DWORD PTR [eax+24], ecx
	mov	DWORD PTR [eax], OFFSET ??_7gzEventObjectJump@@6B@
	ret	0
??0gzEventObjectJump@@QAE@XZ ENDP			; gzEventObjectJump::gzEventObjectJump
_TEXT	ENDS
PUBLIC	??_C@_0EK@OEPFOIMF@Complete?5jump?3?5?$CFls?5?9?5From?5height@ ; `string'
PUBLIC	?Proc_JumpComplete@@YGXPAVnc_SoldierGameObj@@@Z	; Proc_JumpComplete
EXTRN	?Get_Transform@nc_PhysicalGameObj@@QAEPAUnc_Matrix3D@@XZ:PROC ; nc_PhysicalGameObj::Get_Transform
;	COMDAT ??_C@_0EK@OEPFOIMF@Complete?5jump?3?5?$CFls?5?9?5From?5height@
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\gzhooks.cpp
CONST	ENDS
;	COMDAT ?Proc_JumpComplete@@YGXPAVnc_SoldierGameObj@@@Z
_TEXT	SEGMENT
_evt$59121 = -40					; size = 40
_soldier$ = 8						; size = 4
?Proc_JumpComplete@@YGXPAVnc_SoldierGameObj@@@Z PROC	; Proc_JumpComplete, COMDAT

; 883  : {

	sub	esp, 40					; 00000028H
	push	esi

; 884  : 	if (soldier && soldier->Player)

	mov	esi, DWORD PTR _soldier$[esp+40]
	test	esi, esi
	je	$LN1@Proc_JumpC
	cmp	DWORD PTR [esi+2400], 0
	je	$LN1@Proc_JumpC

; 885  : 	{
; 886  : 		gzEventObjectJump evt;

	fldz

; 887  : 		evt.m_soldier = soldier;
; 888  : 		evt.SetEventType(gzEVT_OBJECT_JUMP_COMPLETE);
; 889  : 		gzEvtManager::ProcessEvent(evt);

	lea	eax, DWORD PTR _evt$59121[esp+44]
	push	eax
	fstp	QWORD PTR _evt$59121[esp+56]
	mov	DWORD PTR _evt$59121[esp+64], 0
	mov	DWORD PTR _evt$59121[esp+72], -1
	mov	DWORD PTR _evt$59121[esp+48], OFFSET ??_7gzEventObjectJump@@6B@
	mov	DWORD PTR _evt$59121[esp+80], esi
	mov	DWORD PTR _evt$59121[esp+68], 12295	; 00003007H
	call	?ProcessEvent@gzEvtManager@@SAPAVgzEvtHandler@@AAVgzEventBase@@@Z ; gzEvtManager::ProcessEvent
	add	esp, 4

; 890  : #if ISDEV()
; 891  : 		gzConsole::Out("Complete jump: %ls - From height: %f - Current height: %f - Distance: %f\n",
; 892  : 			soldier->Player->PlayerName.m_Buffer,
; 893  : 			soldier->Human.JumpStart.PosZ,
; 894  : 			soldier->Get_Transform()->PosZ,
; 895  : 			soldier->Human.JumpStart.PosZ - soldier->Get_Transform()->PosZ
; 896  : 		);

	mov	ecx, esi
	call	?Get_Transform@nc_PhysicalGameObj@@QAEPAUnc_Matrix3D@@XZ ; nc_PhysicalGameObj::Get_Transform
	fld	DWORD PTR [esi+2552]
	fsub	DWORD PTR [eax+44]
	sub	esp, 8
	mov	ecx, esi
	fstp	QWORD PTR [esp]
	call	?Get_Transform@nc_PhysicalGameObj@@QAEPAUnc_Matrix3D@@XZ ; nc_PhysicalGameObj::Get_Transform
	fld	DWORD PTR [eax+44]
	mov	ecx, DWORD PTR [esi+2400]
	mov	edx, DWORD PTR [ecx+1880]
	sub	esp, 16					; 00000010H
	fstp	QWORD PTR [esp+8]
	fld	DWORD PTR [esi+2552]
	fstp	QWORD PTR [esp]
	push	edx
	push	OFFSET ??_C@_0EK@OEPFOIMF@Complete?5jump?3?5?$CFls?5?9?5From?5height@
	call	?Out@gzConsole@@SAXPBDZZ		; gzConsole::Out
	add	esp, 32					; 00000020H
$LN1@Proc_JumpC:
	pop	esi

; 897  : #endif
; 898  : 	}
; 899  : }

	add	esp, 40					; 00000028H
	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

; 902  : 	_asm {
; 903  : 		push ecx

	push	ecx

; 904  : 		mov eax, [ecx+0x2C]

	mov	eax, DWORD PTR [ecx+44]

; 905  : 		mov eax, [eax+0x4C]

	mov	eax, DWORD PTR [eax+76]

; 906  : 		add eax, 0xFFFFF894

	add	eax, -1900				; fffff894H

; 907  : 		push eax

	push	eax

; 908  : 		call Proc_JumpComplete

	call	?Proc_JumpComplete@@YGXPAVnc_SoldierGameObj@@@Z ; Proc_JumpComplete

; 909  : 		pop ecx

	pop	ecx

; 910  : 		sub esp, 0x88

	sub	esp, 136				; 00000088H

; 911  : 		mov eax, 0x69BF76

	mov	eax, 6930294				; 0069bf76H

; 912  : 		jmp eax

	jmp	eax
?Hook_JumpComplete@@YAXXZ ENDP				; Hook_JumpComplete
_TEXT	ENDS
PUBLIC	??_C@_0CL@DPEPCMMB@?$FL?$CFs?$FN?5Squish?5damage?5refused?5by?5cl@ ; `string'
PUBLIC	??_C@_0BF@MOILEEAF@Hook_SoldierSquished?$AA@	; `string'
PUBLIC	?Hook_SoldierSquished@@YGXABVnc_OffenseObjectClass@@MAAUnc_Vector3@@H@Z ; Hook_SoldierSquished
;	COMDAT ??_C@_0CL@DPEPCMMB@?$FL?$CFs?$FN?5Squish?5damage?5refused?5by?5cl@
; File d:\source code\gzgm\gzeventbase.h
CONST	SEGMENT
??_C@_0CL@DPEPCMMB@?$FL?$CFs?$FN?5Squish?5damage?5refused?5by?5cl@ DB '[%'
	DB	's] Squish damage refused by class "%s".', 0aH, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BF@MOILEEAF@Hook_SoldierSquished?$AA@
CONST	SEGMENT
??_C@_0BF@MOILEEAF@Hook_SoldierSquished?$AA@ DB 'Hook_SoldierSquished', 00H ; `string'
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzhooks.cpp
CONST	ENDS
;	COMDAT ?Hook_SoldierSquished@@YGXABVnc_OffenseObjectClass@@MAAUnc_Vector3@@H@Z
_TEXT	SEGMENT
_killed$ = -52						; size = 4
_evt$ = -48						; size = 48
_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

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

	sub	esp, 52					; 00000034H
	push	esi

; 918  : 	nc_SoldierGameObj *killed;
; 919  : 	_asm mov killed, ecx

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

; 920  : 
; 921  : 	gzEventObjectKill evt;

	fldz

; 922  : 	evt.m_attacker = offense.Damager.Reference->obj->As_DamageableGameObj();

	mov	esi, DWORD PTR _offense$[esp+52]
	fstp	QWORD PTR _evt$[esp+64]
	or	eax, -1
	mov	DWORD PTR _evt$[esp+76], eax
	mov	DWORD PTR _evt$[esp+80], eax
	mov	eax, DWORD PTR [esi+20]
	mov	DWORD PTR _evt$[esp+72], 0
	mov	DWORD PTR _evt$[esp+56], OFFSET ??_7gzEventObjectKill@@6B@
	mov	BYTE PTR _evt$[esp+96], 1
	mov	ecx, DWORD PTR [eax+4]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+60]
	call	eax

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

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

; 924  : 	evt.SetEventType(gzEVT_OBJECT_SQUISH);
; 925  : 	gzEvtHandler *retObj = gzEvtManager::ProcessEvent(evt);

	lea	ecx, DWORD PTR _evt$[esp+56]
	push	ecx
	mov	DWORD PTR _evt$[esp+96], eax
	mov	DWORD PTR _evt$[esp+80], 12292		; 00003004H
	call	?ProcessEvent@gzEvtManager@@SAPAVgzEvtHandler@@AAVgzEventBase@@@Z ; gzEvtManager::ProcessEvent
	add	esp, 4

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

	cmp	BYTE PTR _evt$[esp+96], 0
	jne	SHORT $LN1@Hook_Soldi

; 927  : 	{
; 928  : #if ISDEV()
; 929  : 		gzConsole::Out("[%s] Squish damage refused by class \"%s\".\n",
; 930  : 			__FUNCTION__,
; 931  : 			retObj->GetName()
; 932  : 		);

	mov	edx, DWORD PTR [eax]
	mov	ecx, eax
	mov	eax, DWORD PTR [edx+4]
	call	eax
	push	eax
	push	OFFSET ??_C@_0BF@MOILEEAF@Hook_SoldierSquished?$AA@
	push	OFFSET ??_C@_0CL@DPEPCMMB@?$FL?$CFs?$FN?5Squish?5damage?5refused?5by?5cl@
	call	?Out@gzConsole@@SAXPBDZZ		; gzConsole::Out
	add	esp, 12					; 0000000cH
	pop	esi

; 937  : }

	add	esp, 52					; 00000034H
	ret	16					; 00000010H
$LN1@Hook_Soldi:

; 933  : #endif
; 934  : 		return;
; 935  : 	}
; 936  : 	killed->Apply_Damage_Extended(offense, damage, speed, unk);

	mov	eax, DWORD PTR _unk$[esp+52]
	fld	DWORD PTR _damage$[esp+52]
	mov	ecx, DWORD PTR _killed$[esp+56]
	mov	edx, DWORD PTR [ecx]
	mov	edx, DWORD PTR [edx+128]
	push	eax
	mov	eax, DWORD PTR _speed$[esp+56]
	push	eax
	push	ecx
	fstp	DWORD PTR [esp]
	push	esi
	call	edx
	pop	esi

; 937  : }

	add	esp, 52					; 00000034H
	ret	16					; 00000010H
?Hook_SoldierSquished@@YGXABVnc_OffenseObjectClass@@MAAUnc_Vector3@@H@Z ENDP ; Hook_SoldierSquished
_TEXT	ENDS
PUBLIC	??_7gzEventObjectC4Detonation@@6B@		; gzEventObjectC4Detonation::`vftable'
PUBLIC	??0gzEventObjectC4Detonation@@QAE@XZ		; gzEventObjectC4Detonation::gzEventObjectC4Detonation
PUBLIC	??_R4gzEventObjectC4Detonation@@6B@		; gzEventObjectC4Detonation::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVgzEventObjectC4Detonation@@@8		; gzEventObjectC4Detonation `RTTI Type Descriptor'
PUBLIC	??_R3gzEventObjectC4Detonation@@8		; gzEventObjectC4Detonation::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2gzEventObjectC4Detonation@@8		; gzEventObjectC4Detonation::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@gzEventObjectC4Detonation@@8	; gzEventObjectC4Detonation::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?Skippable@gzEventObjectC4Detonation@@UAE_NXZ	; gzEventObjectC4Detonation::Skippable
;	COMDAT ??_R1A@?0A@EA@gzEventObjectC4Detonation@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@gzEventObjectC4Detonation@@8 DD FLAT:??_R0?AVgzEventObjectC4Detonation@@@8 ; gzEventObjectC4Detonation::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	02H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3gzEventObjectC4Detonation@@8
rdata$r	ENDS
;	COMDAT ??_R2gzEventObjectC4Detonation@@8
rdata$r	SEGMENT
??_R2gzEventObjectC4Detonation@@8 DD FLAT:??_R1A@?0A@EA@gzEventObjectC4Detonation@@8 ; gzEventObjectC4Detonation::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzEventObjectBase@@8
	DD	FLAT:??_R1A@?0A@EA@gzEventBase@@8
rdata$r	ENDS
;	COMDAT ??_R3gzEventObjectC4Detonation@@8
rdata$r	SEGMENT
??_R3gzEventObjectC4Detonation@@8 DD 00H		; gzEventObjectC4Detonation::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	03H
	DD	FLAT:??_R2gzEventObjectC4Detonation@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVgzEventObjectC4Detonation@@@8
_DATA	SEGMENT
??_R0?AVgzEventObjectC4Detonation@@@8 DD FLAT:??_7type_info@@6B@ ; gzEventObjectC4Detonation `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVgzEventObjectC4Detonation@@', 00H
_DATA	ENDS
;	COMDAT ??_R4gzEventObjectC4Detonation@@6B@
rdata$r	SEGMENT
??_R4gzEventObjectC4Detonation@@6B@ DD 00H		; gzEventObjectC4Detonation::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVgzEventObjectC4Detonation@@@8
	DD	FLAT:??_R3gzEventObjectC4Detonation@@8
rdata$r	ENDS
;	COMDAT ??_7gzEventObjectC4Detonation@@6B@
CONST	SEGMENT
??_7gzEventObjectC4Detonation@@6B@ DD FLAT:??_R4gzEventObjectC4Detonation@@6B@ ; gzEventObjectC4Detonation::`vftable'
	DD	FLAT:?CanContinue@gzEventObjectC4Detonation@@UAE_NXZ
	DD	FLAT:?Skippable@gzEventObjectC4Detonation@@UAE_NXZ
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0gzEventObjectC4Detonation@@QAE@XZ
_TEXT	SEGMENT
??0gzEventObjectC4Detonation@@QAE@XZ PROC		; gzEventObjectC4Detonation::gzEventObjectC4Detonation, COMDAT
; _this$ = ecx
	fldz
	mov	eax, ecx
	or	ecx, -1
	fstp	QWORD PTR [eax+8]
	mov	DWORD PTR [eax+16], 0
	mov	DWORD PTR [eax+20], ecx
	mov	DWORD PTR [eax+24], ecx
	mov	DWORD PTR [eax], OFFSET ??_7gzEventObjectC4Detonation@@6B@
	mov	BYTE PTR [eax+40], 1
	ret	0
??0gzEventObjectC4Detonation@@QAE@XZ ENDP		; gzEventObjectC4Detonation::gzEventObjectC4Detonation
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzeventbase.h
_TEXT	ENDS
;	COMDAT ?Skippable@gzEventObjectC4Detonation@@UAE_NXZ
_TEXT	SEGMENT
?Skippable@gzEventObjectC4Detonation@@UAE_NXZ PROC	; gzEventObjectC4Detonation::Skippable, COMDAT
; _this$ = ecx

; 270  : 	gzEVT_SKIPPABLE();

	mov	al, 1
	ret	0
?Skippable@gzEventObjectC4Detonation@@UAE_NXZ ENDP	; gzEventObjectC4Detonation::Skippable
_TEXT	ENDS
PUBLIC	??_7gzEventObjectPowerupGrant@@6B@		; gzEventObjectPowerupGrant::`vftable'
PUBLIC	??0gzEventObjectPowerupGrant@@QAE@XZ		; gzEventObjectPowerupGrant::gzEventObjectPowerupGrant
PUBLIC	??_R4gzEventObjectPowerupGrant@@6B@		; gzEventObjectPowerupGrant::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVgzEventObjectPowerupGrant@@@8		; gzEventObjectPowerupGrant `RTTI Type Descriptor'
PUBLIC	??_R3gzEventObjectPowerupGrant@@8		; gzEventObjectPowerupGrant::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2gzEventObjectPowerupGrant@@8		; gzEventObjectPowerupGrant::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@gzEventObjectPowerupGrant@@8	; gzEventObjectPowerupGrant::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?Skippable@gzEventObjectPowerupGrant@@UAE_NXZ	; gzEventObjectPowerupGrant::Skippable
;	COMDAT ??_R1A@?0A@EA@gzEventObjectPowerupGrant@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@gzEventObjectPowerupGrant@@8 DD FLAT:??_R0?AVgzEventObjectPowerupGrant@@@8 ; gzEventObjectPowerupGrant::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	02H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3gzEventObjectPowerupGrant@@8
rdata$r	ENDS
;	COMDAT ??_R2gzEventObjectPowerupGrant@@8
rdata$r	SEGMENT
??_R2gzEventObjectPowerupGrant@@8 DD FLAT:??_R1A@?0A@EA@gzEventObjectPowerupGrant@@8 ; gzEventObjectPowerupGrant::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzEventObjectBase@@8
	DD	FLAT:??_R1A@?0A@EA@gzEventBase@@8
rdata$r	ENDS
;	COMDAT ??_R3gzEventObjectPowerupGrant@@8
rdata$r	SEGMENT
??_R3gzEventObjectPowerupGrant@@8 DD 00H		; gzEventObjectPowerupGrant::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	03H
	DD	FLAT:??_R2gzEventObjectPowerupGrant@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVgzEventObjectPowerupGrant@@@8
_DATA	SEGMENT
??_R0?AVgzEventObjectPowerupGrant@@@8 DD FLAT:??_7type_info@@6B@ ; gzEventObjectPowerupGrant `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVgzEventObjectPowerupGrant@@', 00H
_DATA	ENDS
;	COMDAT ??_R4gzEventObjectPowerupGrant@@6B@
rdata$r	SEGMENT
??_R4gzEventObjectPowerupGrant@@6B@ DD 00H		; gzEventObjectPowerupGrant::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVgzEventObjectPowerupGrant@@@8
	DD	FLAT:??_R3gzEventObjectPowerupGrant@@8
rdata$r	ENDS
;	COMDAT ??_7gzEventObjectPowerupGrant@@6B@
CONST	SEGMENT
??_7gzEventObjectPowerupGrant@@6B@ DD FLAT:??_R4gzEventObjectPowerupGrant@@6B@ ; gzEventObjectPowerupGrant::`vftable'
	DD	FLAT:?CanContinue@gzEventObjectPowerupGrant@@UAE_NXZ
	DD	FLAT:?Skippable@gzEventObjectPowerupGrant@@UAE_NXZ
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0gzEventObjectPowerupGrant@@QAE@XZ
_TEXT	SEGMENT
??0gzEventObjectPowerupGrant@@QAE@XZ PROC		; gzEventObjectPowerupGrant::gzEventObjectPowerupGrant, COMDAT
; _this$ = ecx
	fldz
	mov	eax, ecx
	or	ecx, -1
	fstp	QWORD PTR [eax+8]
	mov	DWORD PTR [eax+16], 0
	mov	DWORD PTR [eax+20], ecx
	mov	DWORD PTR [eax+24], ecx
	mov	DWORD PTR [eax], OFFSET ??_7gzEventObjectPowerupGrant@@6B@
	mov	BYTE PTR [eax+40], 1
	ret	0
??0gzEventObjectPowerupGrant@@QAE@XZ ENDP		; gzEventObjectPowerupGrant::gzEventObjectPowerupGrant
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Skippable@gzEventObjectPowerupGrant@@UAE_NXZ
_TEXT	SEGMENT
?Skippable@gzEventObjectPowerupGrant@@UAE_NXZ PROC	; gzEventObjectPowerupGrant::Skippable, COMDAT
; _this$ = ecx

; 278  : 	gzEVT_SKIPPABLE();

	mov	al, 1
	ret	0
?Skippable@gzEventObjectPowerupGrant@@UAE_NXZ ENDP	; gzEventObjectPowerupGrant::Skippable
_TEXT	ENDS
PUBLIC	??_7gzEventObjectFire@@6B@			; gzEventObjectFire::`vftable'
PUBLIC	??0gzEventObjectFire@@QAE@XZ			; gzEventObjectFire::gzEventObjectFire
PUBLIC	??_R4gzEventObjectFire@@6B@			; gzEventObjectFire::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVgzEventObjectFire@@@8			; gzEventObjectFire `RTTI Type Descriptor'
PUBLIC	??_R3gzEventObjectFire@@8			; gzEventObjectFire::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2gzEventObjectFire@@8			; gzEventObjectFire::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@gzEventObjectFire@@8		; gzEventObjectFire::`RTTI Base Class Descriptor at (0,-1,0,64)'
;	COMDAT ??_R1A@?0A@EA@gzEventObjectFire@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@gzEventObjectFire@@8 DD FLAT:??_R0?AVgzEventObjectFire@@@8 ; gzEventObjectFire::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	02H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3gzEventObjectFire@@8
rdata$r	ENDS
;	COMDAT ??_R2gzEventObjectFire@@8
rdata$r	SEGMENT
??_R2gzEventObjectFire@@8 DD FLAT:??_R1A@?0A@EA@gzEventObjectFire@@8 ; gzEventObjectFire::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzEventObjectBase@@8
	DD	FLAT:??_R1A@?0A@EA@gzEventBase@@8
rdata$r	ENDS
;	COMDAT ??_R3gzEventObjectFire@@8
rdata$r	SEGMENT
??_R3gzEventObjectFire@@8 DD 00H			; gzEventObjectFire::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	03H
	DD	FLAT:??_R2gzEventObjectFire@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVgzEventObjectFire@@@8
_DATA	SEGMENT
??_R0?AVgzEventObjectFire@@@8 DD FLAT:??_7type_info@@6B@ ; gzEventObjectFire `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVgzEventObjectFire@@', 00H
_DATA	ENDS
;	COMDAT ??_R4gzEventObjectFire@@6B@
rdata$r	SEGMENT
??_R4gzEventObjectFire@@6B@ DD 00H			; gzEventObjectFire::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVgzEventObjectFire@@@8
	DD	FLAT:??_R3gzEventObjectFire@@8
rdata$r	ENDS
;	COMDAT ??_7gzEventObjectFire@@6B@
CONST	SEGMENT
??_7gzEventObjectFire@@6B@ DD FLAT:??_R4gzEventObjectFire@@6B@ ; gzEventObjectFire::`vftable'
	DD	FLAT:?CanContinue@gzEventBase@@UAE_NXZ
	DD	FLAT:?Skippable@gzEventBase@@UAE_NXZ
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0gzEventObjectFire@@QAE@XZ
_TEXT	SEGMENT
??0gzEventObjectFire@@QAE@XZ PROC			; gzEventObjectFire::gzEventObjectFire, COMDAT
; _this$ = ecx
	fldz
	mov	eax, ecx
	or	ecx, -1
	fstp	QWORD PTR [eax+8]
	mov	DWORD PTR [eax+16], 0
	mov	DWORD PTR [eax+20], ecx
	mov	DWORD PTR [eax+24], ecx
	mov	DWORD PTR [eax], OFFSET ??_7gzEventObjectFire@@6B@
	ret	0
??0gzEventObjectFire@@QAE@XZ ENDP			; gzEventObjectFire::gzEventObjectFire
_TEXT	ENDS
PUBLIC	??_7gzEventObjectC4Creation@@6B@		; gzEventObjectC4Creation::`vftable'
PUBLIC	??0gzEventObjectC4Creation@@QAE@XZ		; gzEventObjectC4Creation::gzEventObjectC4Creation
PUBLIC	??_R4gzEventObjectC4Creation@@6B@		; gzEventObjectC4Creation::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVgzEventObjectC4Creation@@@8		; gzEventObjectC4Creation `RTTI Type Descriptor'
PUBLIC	??_R3gzEventObjectC4Creation@@8			; gzEventObjectC4Creation::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2gzEventObjectC4Creation@@8			; gzEventObjectC4Creation::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@gzEventObjectC4Creation@@8	; gzEventObjectC4Creation::`RTTI Base Class Descriptor at (0,-1,0,64)'
;	COMDAT ??_R1A@?0A@EA@gzEventObjectC4Creation@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@gzEventObjectC4Creation@@8 DD FLAT:??_R0?AVgzEventObjectC4Creation@@@8 ; gzEventObjectC4Creation::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	02H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3gzEventObjectC4Creation@@8
rdata$r	ENDS
;	COMDAT ??_R2gzEventObjectC4Creation@@8
rdata$r	SEGMENT
??_R2gzEventObjectC4Creation@@8 DD FLAT:??_R1A@?0A@EA@gzEventObjectC4Creation@@8 ; gzEventObjectC4Creation::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzEventObjectBase@@8
	DD	FLAT:??_R1A@?0A@EA@gzEventBase@@8
rdata$r	ENDS
;	COMDAT ??_R3gzEventObjectC4Creation@@8
rdata$r	SEGMENT
??_R3gzEventObjectC4Creation@@8 DD 00H			; gzEventObjectC4Creation::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	03H
	DD	FLAT:??_R2gzEventObjectC4Creation@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVgzEventObjectC4Creation@@@8
_DATA	SEGMENT
??_R0?AVgzEventObjectC4Creation@@@8 DD FLAT:??_7type_info@@6B@ ; gzEventObjectC4Creation `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVgzEventObjectC4Creation@@', 00H
_DATA	ENDS
;	COMDAT ??_R4gzEventObjectC4Creation@@6B@
rdata$r	SEGMENT
??_R4gzEventObjectC4Creation@@6B@ DD 00H		; gzEventObjectC4Creation::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVgzEventObjectC4Creation@@@8
	DD	FLAT:??_R3gzEventObjectC4Creation@@8
rdata$r	ENDS
;	COMDAT ??_7gzEventObjectC4Creation@@6B@
CONST	SEGMENT
??_7gzEventObjectC4Creation@@6B@ DD FLAT:??_R4gzEventObjectC4Creation@@6B@ ; gzEventObjectC4Creation::`vftable'
	DD	FLAT:?CanContinue@gzEventBase@@UAE_NXZ
	DD	FLAT:?Skippable@gzEventBase@@UAE_NXZ
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0gzEventObjectC4Creation@@QAE@XZ
_TEXT	SEGMENT
??0gzEventObjectC4Creation@@QAE@XZ PROC			; gzEventObjectC4Creation::gzEventObjectC4Creation, COMDAT
; _this$ = ecx
	fldz
	mov	eax, ecx
	or	ecx, -1
	fstp	QWORD PTR [eax+8]
	mov	DWORD PTR [eax+16], 0
	mov	DWORD PTR [eax+20], ecx
	mov	DWORD PTR [eax+24], ecx
	mov	DWORD PTR [eax], OFFSET ??_7gzEventObjectC4Creation@@6B@
	ret	0
??0gzEventObjectC4Creation@@QAE@XZ ENDP			; gzEventObjectC4Creation::gzEventObjectC4Creation
_TEXT	ENDS
PUBLIC	?Hook_BuildingInit@@YGXXZ			; Hook_BuildingInit
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzhooks.cpp
;	COMDAT ?Hook_BuildingInit@@YGXXZ
_TEXT	SEGMENT
_evt$ = -44						; size = 40
_Building$ = -4						; size = 4
?Hook_BuildingInit@@YGXXZ PROC				; Hook_BuildingInit, COMDAT

; 1056 : {

	push	ebp
	mov	ebp, esp
	sub	esp, 44					; 0000002cH

; 1057 : 	nc_BuildingGameObj *Building;
; 1058 : 	_asm {
; 1059 : 		mov Building, ecx

	mov	DWORD PTR _Building$[ebp], ecx

; 1060 : 	}
; 1061 : 	
; 1062 : 	gzEventObjectCreate evt;

	fldz

; 1063 : 	evt.m_obj = Building;

	mov	eax, DWORD PTR _Building$[ebp]
	fstp	QWORD PTR _evt$[ebp+8]

; 1064 : 	evt.SetEventType(gzEVT_OBJECT_CREATE);
; 1065 : 	gzEvtManager::ProcessEvent(evt);

	lea	ecx, DWORD PTR _evt$[ebp]
	push	ecx
	mov	DWORD PTR _evt$[ebp+16], 0
	mov	DWORD PTR _evt$[ebp+24], -1
	mov	DWORD PTR _evt$[ebp], OFFSET ??_7gzEventObjectCreate@@6B@
	mov	DWORD PTR _evt$[ebp+32], eax
	mov	DWORD PTR _evt$[ebp+20], 12288		; 00003000H
	call	?ProcessEvent@gzEvtManager@@SAPAVgzEvtHandler@@AAVgzEventBase@@@Z ; gzEvtManager::ProcessEvent
	add	esp, 4

; 1066 : 
; 1067 : 	_asm {
; 1068 : 		mov ecx, Building

	mov	ecx, DWORD PTR _Building$[ebp]

; 1069 : 		mov eax, 0x683C80

	mov	eax, 6831232				; 00683c80H

; 1070 : 		call eax

	call	eax

; 1071 : 	}
; 1072 : }

	mov	esp, ebp
	pop	ebp
	ret	0
?Hook_BuildingInit@@YGXXZ ENDP				; Hook_BuildingInit
_TEXT	ENDS
PUBLIC	??_7gzEventObjectFlipKill@@6B@			; gzEventObjectFlipKill::`vftable'
PUBLIC	??0gzEventObjectFlipKill@@QAE@XZ		; gzEventObjectFlipKill::gzEventObjectFlipKill
PUBLIC	??_R4gzEventObjectFlipKill@@6B@			; gzEventObjectFlipKill::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVgzEventObjectFlipKill@@@8		; gzEventObjectFlipKill `RTTI Type Descriptor'
PUBLIC	??_R3gzEventObjectFlipKill@@8			; gzEventObjectFlipKill::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2gzEventObjectFlipKill@@8			; gzEventObjectFlipKill::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@gzEventObjectFlipKill@@8		; gzEventObjectFlipKill::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?Skippable@gzEventObjectFlipKill@@UAE_NXZ	; gzEventObjectFlipKill::Skippable
;	COMDAT ??_R1A@?0A@EA@gzEventObjectFlipKill@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@gzEventObjectFlipKill@@8 DD FLAT:??_R0?AVgzEventObjectFlipKill@@@8 ; gzEventObjectFlipKill::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	02H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3gzEventObjectFlipKill@@8
rdata$r	ENDS
;	COMDAT ??_R2gzEventObjectFlipKill@@8
rdata$r	SEGMENT
??_R2gzEventObjectFlipKill@@8 DD FLAT:??_R1A@?0A@EA@gzEventObjectFlipKill@@8 ; gzEventObjectFlipKill::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzEventObjectBase@@8
	DD	FLAT:??_R1A@?0A@EA@gzEventBase@@8
rdata$r	ENDS
;	COMDAT ??_R3gzEventObjectFlipKill@@8
rdata$r	SEGMENT
??_R3gzEventObjectFlipKill@@8 DD 00H			; gzEventObjectFlipKill::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	03H
	DD	FLAT:??_R2gzEventObjectFlipKill@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVgzEventObjectFlipKill@@@8
_DATA	SEGMENT
??_R0?AVgzEventObjectFlipKill@@@8 DD FLAT:??_7type_info@@6B@ ; gzEventObjectFlipKill `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVgzEventObjectFlipKill@@', 00H
_DATA	ENDS
;	COMDAT ??_R4gzEventObjectFlipKill@@6B@
rdata$r	SEGMENT
??_R4gzEventObjectFlipKill@@6B@ DD 00H			; gzEventObjectFlipKill::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVgzEventObjectFlipKill@@@8
	DD	FLAT:??_R3gzEventObjectFlipKill@@8
rdata$r	ENDS
;	COMDAT ??_7gzEventObjectFlipKill@@6B@
CONST	SEGMENT
??_7gzEventObjectFlipKill@@6B@ DD FLAT:??_R4gzEventObjectFlipKill@@6B@ ; gzEventObjectFlipKill::`vftable'
	DD	FLAT:?CanContinue@gzEventObjectFlipKill@@UAE_NXZ
	DD	FLAT:?Skippable@gzEventObjectFlipKill@@UAE_NXZ
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0gzEventObjectFlipKill@@QAE@XZ
_TEXT	SEGMENT
??0gzEventObjectFlipKill@@QAE@XZ PROC			; gzEventObjectFlipKill::gzEventObjectFlipKill, COMDAT
; _this$ = ecx
	fldz
	mov	eax, ecx
	or	ecx, -1
	fstp	QWORD PTR [eax+8]
	mov	DWORD PTR [eax+16], 0
	mov	DWORD PTR [eax+20], ecx
	mov	DWORD PTR [eax+24], ecx
	mov	DWORD PTR [eax], OFFSET ??_7gzEventObjectFlipKill@@6B@
	mov	BYTE PTR [eax+37], 1
	ret	0
??0gzEventObjectFlipKill@@QAE@XZ ENDP			; gzEventObjectFlipKill::gzEventObjectFlipKill
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzeventbase.h
_TEXT	ENDS
;	COMDAT ?Skippable@gzEventObjectFlipKill@@UAE_NXZ
_TEXT	SEGMENT
?Skippable@gzEventObjectFlipKill@@UAE_NXZ PROC		; gzEventObjectFlipKill::Skippable, COMDAT
; _this$ = ecx

; 244  : 	gzEVT_SKIPPABLE();

	mov	al, 1
	ret	0
?Skippable@gzEventObjectFlipKill@@UAE_NXZ ENDP		; gzEventObjectFlipKill::Skippable
_TEXT	ENDS
PUBLIC	??1gzEventNetWolPage@@QAE@XZ			; gzEventNetWolPage::~gzEventNetWolPage
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$??1gzEventNetWolPage@@QAE@XZ DD 0ffffffffH
	DD	FLAT:__unwindfunclet$??1gzEventNetWolPage@@QAE@XZ$0
__ehfuncinfo$??1gzEventNetWolPage@@QAE@XZ DD 019930522H
	DD	01H
	DD	FLAT:__unwindtable$??1gzEventNetWolPage@@QAE@XZ
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	01H
; Function compile flags: /Ogtpy
xdata$x	ENDS
;	COMDAT ??1gzEventNetWolPage@@QAE@XZ
_TEXT	SEGMENT
_this$ = -16						; size = 4
__$EHRec$ = -12						; size = 12
??1gzEventNetWolPage@@QAE@XZ PROC			; gzEventNetWolPage::~gzEventNetWolPage, COMDAT
; _this$ = ecx
	push	-1
	push	__ehhandler$??1gzEventNetWolPage@@QAE@XZ
	mov	eax, DWORD PTR fs:0
	push	eax
	mov	DWORD PTR fs:0, esp
	push	ecx
	push	esi
	mov	esi, ecx
	mov	DWORD PTR _this$[esp+20], esi
	lea	ecx, DWORD PTR [esi+40]
	mov	DWORD PTR __$EHRec$[esp+28], 0
	call	??1aStringBase@@UAE@XZ			; aStringBase::~aStringBase
	lea	ecx, DWORD PTR [esi+32]
	mov	DWORD PTR __$EHRec$[esp+28], -1
	call	??1aStringBase@@UAE@XZ			; aStringBase::~aStringBase
	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$??1gzEventNetWolPage@@QAE@XZ$0:
	mov	ecx, DWORD PTR _this$[ebp]
	add	ecx, 32					; 00000020H
	jmp	??1aString@@UAE@XZ
__ehhandler$??1gzEventNetWolPage@@QAE@XZ:
	mov	eax, OFFSET __ehfuncinfo$??1gzEventNetWolPage@@QAE@XZ
	jmp	___CxxFrameHandler3
text$x	ENDS
??1gzEventNetWolPage@@QAE@XZ ENDP			; gzEventNetWolPage::~gzEventNetWolPage
PUBLIC	??_7gzEventNetBase@@6B@				; gzEventNetBase::`vftable'
PUBLIC	??0gzEventNetBase@@QAE@XZ			; gzEventNetBase::gzEventNetBase
PUBLIC	??_R4gzEventNetBase@@6B@			; gzEventNetBase::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVgzEventNetBase@@@8			; gzEventNetBase `RTTI Type Descriptor'
PUBLIC	??_R3gzEventNetBase@@8				; gzEventNetBase::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2gzEventNetBase@@8				; gzEventNetBase::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@gzEventNetBase@@8			; gzEventNetBase::`RTTI Base Class Descriptor at (0,-1,0,64)'
;	COMDAT ??_R1A@?0A@EA@gzEventNetBase@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@gzEventNetBase@@8 DD FLAT:??_R0?AVgzEventNetBase@@@8 ; gzEventNetBase::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3gzEventNetBase@@8
rdata$r	ENDS
;	COMDAT ??_R2gzEventNetBase@@8
rdata$r	SEGMENT
??_R2gzEventNetBase@@8 DD FLAT:??_R1A@?0A@EA@gzEventNetBase@@8 ; gzEventNetBase::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzEventBase@@8
rdata$r	ENDS
;	COMDAT ??_R3gzEventNetBase@@8
rdata$r	SEGMENT
??_R3gzEventNetBase@@8 DD 00H				; gzEventNetBase::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2gzEventNetBase@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVgzEventNetBase@@@8
_DATA	SEGMENT
??_R0?AVgzEventNetBase@@@8 DD FLAT:??_7type_info@@6B@	; gzEventNetBase `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVgzEventNetBase@@', 00H
_DATA	ENDS
;	COMDAT ??_R4gzEventNetBase@@6B@
rdata$r	SEGMENT
??_R4gzEventNetBase@@6B@ DD 00H				; gzEventNetBase::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVgzEventNetBase@@@8
	DD	FLAT:??_R3gzEventNetBase@@8
rdata$r	ENDS
;	COMDAT ??_7gzEventNetBase@@6B@
CONST	SEGMENT
??_7gzEventNetBase@@6B@ DD FLAT:??_R4gzEventNetBase@@6B@ ; gzEventNetBase::`vftable'
	DD	FLAT:?CanContinue@gzEventBase@@UAE_NXZ
	DD	FLAT:?Skippable@gzEventBase@@UAE_NXZ
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0gzEventNetBase@@QAE@XZ
_TEXT	SEGMENT
??0gzEventNetBase@@QAE@XZ PROC				; gzEventNetBase::gzEventNetBase, COMDAT
; _this$ = ecx
	fldz
	mov	eax, ecx
	or	ecx, -1
	fstp	QWORD PTR [eax+8]
	mov	DWORD PTR [eax+16], 0
	mov	DWORD PTR [eax+20], ecx
	mov	DWORD PTR [eax+24], ecx
	mov	DWORD PTR [eax], OFFSET ??_7gzEventNetBase@@6B@
	ret	0
??0gzEventNetBase@@QAE@XZ ENDP				; gzEventNetBase::gzEventNetBase
_TEXT	ENDS
PUBLIC	??_7gzEventNetSerialAuth@@6B@			; gzEventNetSerialAuth::`vftable'
PUBLIC	??0gzEventNetSerialAuth@@QAE@XZ			; gzEventNetSerialAuth::gzEventNetSerialAuth
PUBLIC	??_R4gzEventNetSerialAuth@@6B@			; gzEventNetSerialAuth::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVgzEventNetSerialAuth@@@8		; gzEventNetSerialAuth `RTTI Type Descriptor'
PUBLIC	??_R3gzEventNetSerialAuth@@8			; gzEventNetSerialAuth::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2gzEventNetSerialAuth@@8			; gzEventNetSerialAuth::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@gzEventNetSerialAuth@@8		; gzEventNetSerialAuth::`RTTI Base Class Descriptor at (0,-1,0,64)'
;	COMDAT ??_R1A@?0A@EA@gzEventNetSerialAuth@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@gzEventNetSerialAuth@@8 DD FLAT:??_R0?AVgzEventNetSerialAuth@@@8 ; gzEventNetSerialAuth::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	02H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3gzEventNetSerialAuth@@8
rdata$r	ENDS
;	COMDAT ??_R2gzEventNetSerialAuth@@8
rdata$r	SEGMENT
??_R2gzEventNetSerialAuth@@8 DD FLAT:??_R1A@?0A@EA@gzEventNetSerialAuth@@8 ; gzEventNetSerialAuth::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzEventPlayerBase@@8
	DD	FLAT:??_R1A@?0A@EA@gzEventBase@@8
rdata$r	ENDS
;	COMDAT ??_R3gzEventNetSerialAuth@@8
rdata$r	SEGMENT
??_R3gzEventNetSerialAuth@@8 DD 00H			; gzEventNetSerialAuth::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	03H
	DD	FLAT:??_R2gzEventNetSerialAuth@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVgzEventNetSerialAuth@@@8
_DATA	SEGMENT
??_R0?AVgzEventNetSerialAuth@@@8 DD FLAT:??_7type_info@@6B@ ; gzEventNetSerialAuth `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVgzEventNetSerialAuth@@', 00H
_DATA	ENDS
;	COMDAT ??_R4gzEventNetSerialAuth@@6B@
rdata$r	SEGMENT
??_R4gzEventNetSerialAuth@@6B@ DD 00H			; gzEventNetSerialAuth::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVgzEventNetSerialAuth@@@8
	DD	FLAT:??_R3gzEventNetSerialAuth@@8
rdata$r	ENDS
;	COMDAT ??_7gzEventNetSerialAuth@@6B@
CONST	SEGMENT
??_7gzEventNetSerialAuth@@6B@ DD FLAT:??_R4gzEventNetSerialAuth@@6B@ ; gzEventNetSerialAuth::`vftable'
	DD	FLAT:?CanContinue@gzEventBase@@UAE_NXZ
	DD	FLAT:?Skippable@gzEventBase@@UAE_NXZ
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0gzEventNetSerialAuth@@QAE@XZ
_TEXT	SEGMENT
??0gzEventNetSerialAuth@@QAE@XZ PROC			; gzEventNetSerialAuth::gzEventNetSerialAuth, COMDAT
; _this$ = ecx
	fldz
	push	esi
	mov	esi, ecx
	fstp	QWORD PTR [esi+8]
	or	eax, -1
	lea	ecx, DWORD PTR [esi+40]
	mov	DWORD PTR [esi+16], 0
	mov	DWORD PTR [esi+20], eax
	mov	DWORD PTR [esi+24], eax
	mov	DWORD PTR [esi], OFFSET ??_7gzEventNetSerialAuth@@6B@
	call	??0aString@@QAE@XZ			; aString::aString
	mov	eax, esi
	pop	esi
	ret	0
??0gzEventNetSerialAuth@@QAE@XZ ENDP			; gzEventNetSerialAuth::gzEventNetSerialAuth
_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
	add	ecx, 40					; 00000028H
	jmp	??1aStringBase@@UAE@XZ			; aStringBase::~aStringBase
??1gzEventNetSerialAuth@@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	?Destroy_Base@nc_BaseControllerClass@@QAEXXZ:PROC ; nc_BaseControllerClass::Destroy_Base
EXTRN	?Set_Beacon_Destroyed_Base@nc_BaseControllerClass@@QAEX_N@Z:PROC ; nc_BaseControllerClass::Set_Beacon_Destroyed_Base
EXTRN	?IsBeaconPedApproved@@YA_NH@Z:PROC		; IsBeaconPedApproved
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
; File d:\source code\gzgm\gzhooks.cpp
CONST	SEGMENT
__real@40a00000 DD 040a00000r			; 5
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?Proc_BeaconUpdateState@@YGXPAVnc_BeaconGameObj@@@Z
_TEXT	SEGMENT
_beaconPos$59346 = -12					; size = 12
_animPos$59330 = -12					; size = 12
_Beacon$ = 8						; size = 4
?Proc_BeaconUpdateState@@YGXPAVnc_BeaconGameObj@@@Z PROC ; Proc_BeaconUpdateState, COMDAT

; 1185 : 	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]

; 1186 : 	nc_BeaconGameObjDef *BeaconDef = (nc_BeaconGameObjDef *)Beacon->definition;
; 1187 : 	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	$LN22@Proc_Beaco

; 1188 : 	{
; 1189 : 		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 $LN17@Proc_Beaco

; 1190 : 			Beacon->Set_State(4);

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

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

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

; 1192 : 		{
; 1193 : 			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]

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

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

; 1195 : 			{
; 1196 : 				Beacon->PreDetonateCinematicDelay = 0.0f;
; 1197 : 				nc_Vector3 animPos;
; 1198 : 				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]

; 1199 : 				animPos.Y = Beacon->Physics->PhysRender->Transform.PosY;
; 1200 : 				animPos.Z = Beacon->Physics->PhysRender->Transform.PosZ;
; 1201 : 				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$59330[esp+24]
	mov	edx, DWORD PTR [eax+60]
	fld	DWORD PTR [edx+56]
	push	1
	fstp	DWORD PTR _animPos$59330[esp+32]
	mov	eax, DWORD PTR [eax+60]
	fld	DWORD PTR [eax+72]
	push	ecx
	fstp	DWORD PTR _animPos$59330[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

; 1202 : 				if (animObj != NULL)

	test	edi, edi
	je	SHORT $LN21@Proc_Beaco

; 1203 : 				{
; 1204 : 					animObj->Set_Position(animPos);

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

; 1205 : 					animObj->Start_Observers();

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

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

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

; 1207 : 				}
; 1208 : 			}
; 1209 : 		}
; 1210 : 	}
; 1211 : 	switch (Beacon->State)

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

; 1216 : 			break;
; 1217 : 		case 2: // Deployed
; 1218 : 			break;
; 1219 : 		case 4: // Detonated, cleanups
; 1220 : 			if (Beacon->ArmTime != 0.0f)

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

; 1221 : 			{
; 1222 : 				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

; 1223 : 				{
; 1224 : 					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

; 1225 : 					if (enemyBase != NULL)

	test	edi, edi
	je	SHORT $LN3@Proc_Beaco

; 1226 : 					{
; 1227 : 						nc_Vector3 beaconPos;
; 1228 : 						Beacon->Get_Position(&beaconPos);

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

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

	lea	eax, DWORD PTR _beaconPos$59346[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

; 1230 : 						{
; 1231 : 							if (IsBeaconPedApproved(enemyBase->team ^ 1))

	mov	edx, DWORD PTR [edi+1720]
	xor	edx, 1
	push	edx
	call	?IsBeaconPedApproved@@YA_NH@Z		; IsBeaconPedApproved
	add	esp, 4
	test	al, al
	je	SHORT $LN3@Proc_Beaco

; 1232 : 							{
; 1233 : 								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

; 1234 : 								enemyBase->Destroy_Base();

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

; 1235 : 							}
; 1236 : 						}
; 1237 : 					}
; 1238 : 				}
; 1239 : 				if (BeaconDef->IsNuke == true)

	cmp	BYTE PTR [ebx+236], 1

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

; 1241 : 				else

	jmp	SHORT $LN39@Proc_Beaco
$LN2@Proc_Beaco:

; 1242 : 				{
; 1243 : 					nc_BackgroundMgrClass::Restore_Clouds(5.0f);

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

; 1244 : 					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
$LN39@Proc_Beaco:

; 1245 : 				}
; 1246 : 				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

; 1247 : 				Beacon->Set_Delete_Pending();

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

; 1248 : 			}
; 1249 : 			break;
; 1250 : 	}
; 1251 : }

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

; 1212 : 	{
; 1213 : 		case 1: // Begin arming
; 1214 : 			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 $LN10@Proc_Beaco

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

; 1248 : 			}
; 1249 : 			break;
; 1250 : 	}
; 1251 : }

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

; 1207 : 				}
; 1208 : 			}
; 1209 : 		}
; 1210 : 	}
; 1211 : 	switch (Beacon->State)

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

; 1248 : 			}
; 1249 : 			break;
; 1250 : 	}
; 1251 : }

	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

; 1254 : 	_asm {
; 1255 : 		push ecx

	push	ecx

; 1256 : 		call Proc_BeaconUpdateState

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

; 1257 : 		retn

	ret	0
?Hook_BeaconUpdateState@@YAXXZ ENDP			; Hook_BeaconUpdateState
_TEXT	ENDS
PUBLIC	?Hook_EnemySeenVehicle@@YG_NPAVnc_DamageableGameObj@@@Z ; Hook_EnemySeenVehicle
EXTRN	?Is_Enemy@nc_DamageableGameObj@@QAE_NPAV1@@Z:PROC ; nc_DamageableGameObj::Is_Enemy
; Function compile flags: /Ogtpy
;	COMDAT ?Hook_EnemySeenVehicle@@YG_NPAVnc_DamageableGameObj@@@Z
_TEXT	SEGMENT
_smart$ = -4						; size = 4
_obj$ = 8						; size = 4
?Hook_EnemySeenVehicle@@YG_NPAVnc_DamageableGameObj@@@Z PROC ; Hook_EnemySeenVehicle, COMDAT

; 1263 : {

	push	ecx

; 1264 : 	nc_SmartGameObj *smart;
; 1265 : 	_asm {
; 1266 : 		mov smart, ecx

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

; 1267 : 	}
; 1268 : 	if (!smart->Is_Enemy(obj))

	mov	eax, DWORD PTR _obj$[esp]
	mov	ecx, DWORD PTR _smart$[esp+4]
	push	eax
	call	?Is_Enemy@nc_DamageableGameObj@@QAE_NPAV1@@Z ; nc_DamageableGameObj::Is_Enemy
	test	al, al
	jne	SHORT $LN2@Hook_Enemy

; 1273 : }

	pop	ecx
	ret	4
$LN2@Hook_Enemy:

; 1269 : 		return false;
; 1270 : 	if (smart->As_VehicleGameObj())

	mov	ecx, DWORD PTR _smart$[esp+4]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+40]
	call	eax
	test	eax, eax
	je	SHORT $LN1@Hook_Enemy

; 1271 : 		return smart->As_VehicleGameObj()->VehicleCanEnemySeen;

	mov	ecx, DWORD PTR _smart$[esp+4]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+40]
	call	eax
	mov	al, BYTE PTR [eax+2453]

; 1273 : }

	pop	ecx
	ret	4
$LN1@Hook_Enemy:

; 1272 : 	return true;

	mov	al, 1

; 1273 : }

	pop	ecx
	ret	4
?Hook_EnemySeenVehicle@@YG_NPAVnc_DamageableGameObj@@@Z ENDP ; Hook_EnemySeenVehicle
_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

; 1281 : 	_asm {
; 1282 : 		mov eax, 127 // Max connections, nc_cRemoteHost array size

	mov	eax, 127				; 0000007fH

; 1283 : #if ISDEV()
; 1284 : 		// Force to bind the IP to 0.0.0.0
; 1285 : 		mov edx, 0

	mov	edx, 0

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

	mov	DWORD PTR [esp+16], edx

; 1287 : #endif
; 1288 : 		sub esp, 0x10

	sub	esp, 16					; 00000010H

; 1289 : 		mov edx, 0x617ED7

	mov	edx, 6389463				; 00617ed7H

; 1290 : 		jmp edx

	jmp	edx
?Patch_cRemoteHostSize@@YAXXZ ENDP			; Patch_cRemoteHostSize
_TEXT	ENDS
PUBLIC	?Patch_WolLadderMapFix@@YGXPAD0@Z		; Patch_WolLadderMapFix
EXTRN	_strncpy:PROC
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

; 1299 : {

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

; 1300 : 	_asm push ecx

	push	ecx

; 1301 : 	char Map[128];
; 1302 : 	memset(Map,0,sizeof(Map));

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

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

; 1304 : 	{
; 1305 : 		for (int i = 0; i < 100; i++)

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

; 1306 : 		{
; 1307 : 			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

; 1308 : 				break;
; 1309 : 			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

; 1310 : 		}
; 1311 : 	}
; 1312 : 	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

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

; 1314 : 	else

	jmp	SHORT $LN15@Patch_WolL
$LN2@Patch_WolL:

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

; 1316 : 	_asm {
; 1317 : 		pop ecx

	pop	ecx

; 1318 : 		mov eax, 0x4BB590

	mov	eax, 4961680				; 004bb590H

; 1319 : 		lea edx, Map

	lea	edx, DWORD PTR _Map$[ebp]

; 1320 : 		push edx

	push	edx

; 1321 : 		push data

	push	DWORD PTR _data$[ebp]

; 1322 : 		call eax

	call	eax

; 1323 : 	}
; 1324 : }

	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

; 1328 : {

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

; 1329 : 	nc_cPlayer *p;
; 1330 : 	_asm {
; 1331 : 		push ecx

	push	ecx

; 1332 : 		mov p, esi

	mov	DWORD PTR _p$[ebp], esi

; 1333 : 	}
; 1334 : 	char Name[65];
; 1335 : 	memset(Name,0,sizeof(Name));

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

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

; 1337 : 	_asm {
; 1338 : 		pop ecx

	pop	ecx

; 1339 : 		mov eax, 0x4BB590

	mov	eax, 4961680				; 004bb590H

; 1340 : 		lea edx, Name

	lea	edx, DWORD PTR _Name$[ebp]

; 1341 : 		push edx

	push	edx

; 1342 : 		push data

	push	DWORD PTR _data$[ebp]

; 1343 : 		call eax

	call	eax

; 1344 : 	}
; 1345 : }

	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

; 1349 : {

	push	esi

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

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

; 1352 : }

	ret	4
$LN3@Proc_Purch:

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

; 1352 : }

	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

; 1355 : 	__asm {
; 1356 : 		mov [esp+4], ecx

	mov	DWORD PTR [esp+4], ecx

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

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

; 1365 : }

	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

; 1368 : 	_asm {
; 1369 : 		push ebp

	push	ebp

; 1370 : 		mov ebp, esp

	mov	ebp, esp

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

	push	DWORD PTR [ebp+80]

; 1372 : 		push ebx // DefenseObject

	push	ebx

; 1373 : 		call GetDamageMultiplier

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

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

	fmul	DWORD PTR [ebp+24]

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

	fadd	DWORD PTR [ebp+20]

; 1376 : 		mov esp, ebp

	mov	esp, ebp

; 1377 : 		pop ebp

	pop	ebp

; 1378 : 		mov ecx, 0x68B2A6

	mov	ecx, 6861478				; 0068b2a6H

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

; 1385 : {

	push	ecx

; 1386 : 	nc_WeaponClass *Weapon;
; 1387 : 	_asm {
; 1388 : 		mov Weapon, ecx

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

; 1389 : 	}
; 1390 : 	int Return = 0;
; 1391 : 	if (Weapon)

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

; 1392 : 	{
; 1393 : 		if (Weapon->InventoryBullets.Get() == -1)

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

; 1394 : 		{
; 1395 : 			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

; 1396 : 				Return = -1;

	or	eax, -1

; 1404 : }

	pop	ecx
	ret	0
$LN3@Patch_Unli:

; 1397 : 			else
; 1398 : 				Return = Weapon->LoadedBullets.Get();

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

; 1404 : }

	add	esp, 4

; 1397 : 			else
; 1398 : 				Return = Weapon->LoadedBullets.Get();

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

; 1399 : 		}
; 1400 : 		else
; 1401 : 			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

; 1402 : 	}
; 1403 : 	return Return;

	mov	eax, esi
	pop	esi
$LN1@Patch_Unli:

; 1404 : }

	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

; 1408 : {

	push	esi

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

; 1410 : 		return false;

	xor	al, al
	pop	esi

; 1412 : }

	ret	8
$LN1@Proc_DoorC:

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

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

; 1412 : }

	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

; 1415 : 	_asm {
; 1416 : 		push ecx

	push	ecx

; 1417 : 		push [esp+0x10]

	push	DWORD PTR [esp+16]

; 1418 : 		call Proc_DoorCheck

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

; 1419 : 		mov ecx, 0x6997E6

	mov	ecx, 6920166				; 006997e6H

; 1420 : 		jmp ecx

	jmp	ecx
?Hook_DoorCheck@@YAXXZ ENDP				; Hook_DoorCheck
_TEXT	ENDS
PUBLIC	?Hook_TiberiumDamage@@YGXABVnc_OffenseObjectClass@@MAAUnc_Vector3@@H@Z ; Hook_TiberiumDamage
EXTRN	?gzCommands@@3PAUnc_ScriptCommands@@A:DWORD	; gzCommands
; Function compile flags: /Ogtpy
;	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

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

	push	ecx

; 1429 : 	nc_SoldierGameObj *victim;
; 1430 : 	_asm mov victim, ecx

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

; 1431 : 	gzCommands->Send_Custom_Event(NULL, victim, 306494, 1, 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	1
	push	306494					; 0004ad3eH
	push	eax
	push	0
	call	edx

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

; 1433 : }

	pop	ecx
	ret	16					; 00000010H
?Hook_TiberiumDamage@@YGXABVnc_OffenseObjectClass@@MAAUnc_Vector3@@H@Z ENDP ; Hook_TiberiumDamage
_TEXT	ENDS
PUBLIC	?Hook_PlayerSpawnPreset@@YAPAVnc_ScriptableGameObj@@PBD@Z ; Hook_PlayerSpawnPreset
; 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

; 1438 : {

	push	ecx

; 1439 : 	int pId = -1;

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

; 1440 : 	_asm
; 1441 : 	{
; 1442 : 		mov ecx, [esp+0x138-4]

	mov	ecx, DWORD PTR [esp+308]

; 1443 : 		mov pId, ecx

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

; 1444 : 	}
; 1445 : 	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

; 1446 : 	if (pData)

	test	eax, eax
	je	SHORT $LN10@Hook_Playe@2

; 1447 : 		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	ecx, DWORD PTR ?gzGameMgr@@3PAVgzGameManager@@A ; gzGameMgr
	mov	edx, DWORD PTR [ecx+56]
	lea	eax, DWORD PTR [edx+eax*8+40]
	mov	eax, DWORD PTR [eax+4]
	test	eax, eax
	je	SHORT $LN6@Hook_Playe@2
	mov	eax, DWORD PTR [eax]

; 1449 : }

	add	esp, 4

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

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

$LN6@Hook_Playe@2:
	xor	eax, eax

; 1449 : }

	add	esp, 4

; 1448 : 	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
$LN10@Hook_Playe@2:

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

	mov	eax, DWORD PTR _preset$[esp]

; 1449 : }

	add	esp, 4

; 1448 : 	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	__real@3f800000
PUBLIC	??_C@_0CH@NHPALKJG@msg?5?$CFs?5is?5going?5to?5harvester?5Tib@ ; `string'
PUBLIC	__real@3dcccccd
PUBLIC	?Proc_RefineryThink@@YGXPAVnc_RefineryGameObj@@@Z ; Proc_RefineryThink
EXTRN	?Think@nc_ScriptableGameObj@@UAEXXZ:PROC	; nc_ScriptableGameObj::Think
EXTRN	?Think@nc_HarvesterClass@@QAEXXZ:PROC		; nc_HarvesterClass::Think
EXTRN	?Find_Static_Object@nc_PhysicsSceneClass@@QAEPAVnc_PhysClass@@H@Z:PROC ; nc_PhysicsSceneClass::Find_Static_Object
EXTRN	?TheScene@nc_PhysicsSceneClass@@2AAPAV1@A:DWORD	; nc_PhysicsSceneClass::TheScene
EXTRN	?Go_Harvest@nc_HarvesterClass@@QAEXXZ:PROC	; nc_HarvesterClass::Go_Harvest
EXTRN	?In@gzConsole@@SAXPBDZZ:PROC			; gzConsole::In
EXTRN	?SmartGameObjList@nc_GameObjManager@@2PAV?$nc_SList@Vnc_SmartGameObj@@@@A:DWORD ; nc_GameObjManager::SmartGameObjList
EXTRN	?Request_Harvester@nc_BaseControllerClass@@QAEXH@Z:PROC ; nc_BaseControllerClass::Request_Harvester
EXTRN	?Get_Definition@nc_RefineryGameObj@@QAEPAVnc_RefineryGameObjDef@@XZ:PROC ; nc_RefineryGameObj::Get_Definition
;	COMDAT __real@3f800000
; File c:\program files\microsoft visual studio 8\vc\include\math.h
CONST	SEGMENT
__real@3f800000 DD 03f800000r			; 1
CONST	ENDS
;	COMDAT ??_C@_0CH@NHPALKJG@msg?5?$CFs?5is?5going?5to?5harvester?5Tib@
CONST	SEGMENT
??_C@_0CH@NHPALKJG@msg?5?$CFs?5is?5going?5to?5harvester?5Tib@ DB 'msg %s '
	DB	'is going to harvester Tiberium.', 00H	; `string'
CONST	ENDS
;	COMDAT __real@3dcccccd
CONST	SEGMENT
__real@3dcccccd DD 03dcccccdr			; 0.1
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzhooks.cpp
CONST	ENDS
;	COMDAT ?Proc_RefineryThink@@YGXPAVnc_RefineryGameObj@@@Z
_TEXT	SEGMENT
_DistributeAmount$59532 = -4				; size = 4
_Refinery$ = 8						; size = 4
?Proc_RefineryThink@@YGXPAVnc_RefineryGameObj@@@Z PROC	; Proc_RefineryThink, COMDAT

; 1454 : {

	push	ebp
	mov	ebp, esp
	and	esp, -64				; ffffffc0H
	sub	esp, 56					; 00000038H
	push	esi

; 1455 : 	if (Refinery->Destroyed == false)

	mov	esi, DWORD PTR _Refinery$[ebp]
	cmp	BYTE PTR [esi+1912], 0
	push	edi
	jne	$LN25@Proc_Refin

; 1456 : 	{
; 1457 : 		if (Refinery->Harvester == NULL)

	cmp	DWORD PTR [esi+2092], 0
	jne	SHORT $LN24@Proc_Refin

; 1458 : 		{
; 1459 : 			if (Refinery->Defense.Health.Get() > 0.0f)

	lea	ecx, DWORD PTR [esi+1840]
	call	?Get@nc_FloatDataSafeClass@@QAEMXZ	; nc_FloatDataSafeClass::Get
	fcomp	DWORD PTR __real@00000000
	fnstsw	ax
	test	ah, 65					; 00000041H
	jne	$LN11@Proc_Refin

; 1460 : 			{
; 1461 : 				if (cGame->Is_Gameplay_Permitted())

	mov	eax, DWORD PTR ?cGame@@3AAPAVnc_cGameData@@A ; cGame
	mov	ecx, DWORD PTR [eax]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+132]
	call	eax
	test	al, al
	je	$LN11@Proc_Refin

; 1462 : 				{
; 1463 : 					if (Refinery->IsHarvesterDocked)

	cmp	BYTE PTR [esi+2156], 0
	je	SHORT $LN21@Proc_Refin

; 1464 : 					{
; 1465 : 						Refinery->IsHarvesterDocked = false;
; 1466 : 						Refinery->Set_Object_Dirty_Bit(nc_DB_RARE, true);

	mov	edx, DWORD PTR [esi+8]
	mov	eax, DWORD PTR [edx+56]
	lea	ecx, DWORD PTR [esi+8]
	push	1
	push	7
	mov	BYTE PTR [esi+2156], 0
	call	eax
$LN21@Proc_Refin:

; 1467 : 					}
; 1468 : 					Refinery->Base->Request_Harvester(Refinery->Get_Definition()->Harvester);

	mov	ecx, esi
	call	?Get_Definition@nc_RefineryGameObj@@QAEPAVnc_RefineryGameObjDef@@XZ ; nc_RefineryGameObj::Get_Definition
	mov	ecx, DWORD PTR [eax+172]
	push	ecx
	mov	ecx, DWORD PTR [esi+1908]
	call	?Request_Harvester@nc_BaseControllerClass@@QAEXH@Z ; nc_BaseControllerClass::Request_Harvester

; 1469 : 				}
; 1470 : 			}
; 1471 : 		}
; 1472 : 		else

	jmp	$LN11@Proc_Refin
$LN24@Proc_Refin:

; 1473 : 		{
; 1474 : 			if (Refinery->IsHarvesterDocked)

	cmp	BYTE PTR [esi+2156], 0
	je	$LN11@Proc_Refin

; 1475 : 			{
; 1476 : 				Refinery->UnloadTimeCounter -= nc_TimeManager::FrameSeconds;

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

; 1477 : 				if ((RefineryLastPoolDistribute[Refinery->Base->team] - Refinery->UnloadTimeCounter) >= 0.1f)

	mov	eax, DWORD PTR [esi+1908]
	fst	DWORD PTR [esi+2160]
	mov	ecx, DWORD PTR [eax+1720]
	fsubr	DWORD PTR ?RefineryLastPoolDistribute@@3PAMA[ecx*4]
	fcomp	DWORD PTR __real@3dcccccd
	fnstsw	ax
	test	ah, 1
	jne	$LN18@Proc_Refin

; 1478 : 				{
; 1479 : 					float DistributeAmount = (Refinery->Get_Definition()->FundsGathered / Refinery->Get_Definition()->UnloadTime) * (RefineryLastPoolDistribute[Refinery->Base->team] - Refinery->UnloadTimeCounter);

	mov	ecx, esi
	call	?Get_Definition@nc_RefineryGameObj@@QAEPAVnc_RefineryGameObjDef@@XZ ; nc_RefineryGameObj::Get_Definition
	mov	ecx, esi
	lea	edi, DWORD PTR [eax+164]
	call	?Get_Definition@nc_RefineryGameObj@@QAEPAVnc_RefineryGameObjDef@@XZ ; nc_RefineryGameObj::Get_Definition
	fld	DWORD PTR [edi]
	fdiv	DWORD PTR [eax+160]
	mov	edx, DWORD PTR [esi+1908]
	mov	eax, DWORD PTR [edx+1720]

; 1480 : 					for (nc_GenericSLNode<nc_SmartGameObj> *Smart = nc_GameObjManager::SmartGameObjList->HeadNode; Smart != NULL; Smart = Smart->NodeNext)

	mov	ecx, DWORD PTR ?SmartGameObjList@nc_GameObjManager@@2PAV?$nc_SList@Vnc_SmartGameObj@@@@A ; nc_GameObjManager::SmartGameObjList
	mov	edi, DWORD PTR [ecx+4]
	test	edi, edi
	fld	DWORD PTR ?RefineryLastPoolDistribute@@3PAMA[eax*4]
	fsub	DWORD PTR [esi+2160]
	fmulp	ST(1), ST(0)
	fstp	DWORD PTR _DistributeAmount$59532[esp+64]
	je	SHORT $LN15@Proc_Refin
$LL17@Proc_Refin:

; 1481 : 					{
; 1482 : 						if (Smart->NodeData->As_SoldierGameObj() && Smart->NodeData->Player && Smart->NodeData->Player->PlayerType.Get() == Refinery->Base->team)

	mov	ecx, DWORD PTR [edi+4]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+68]
	call	eax
	test	eax, eax
	je	SHORT $LN16@Proc_Refin
	mov	ecx, DWORD PTR [edi+4]
	mov	eax, DWORD PTR [ecx+2400]
	test	eax, eax
	je	SHORT $LN16@Proc_Refin
	lea	ecx, DWORD PTR [eax+1900]
	call	?Get@nc_IntDataSafeClass@@QAEHXZ	; nc_IntDataSafeClass::Get
	mov	edx, DWORD PTR [esi+1908]
	cmp	eax, DWORD PTR [edx+1720]
	jne	SHORT $LN16@Proc_Refin

; 1483 : 						{
; 1484 : 							Smart->NodeData->Player->Money += DistributeAmount;

	mov	eax, DWORD PTR [edi+4]
	fld	DWORD PTR _DistributeAmount$59532[esp+64]
	push	ecx
	mov	ecx, DWORD PTR [eax+2400]
	fstp	DWORD PTR [esp]
	add	ecx, 8
	call	??Ync_FloatDataSafeClass@@QAEXM@Z	; nc_FloatDataSafeClass::operator+=

; 1485 : 							Smart->NodeData->Player->Set_Object_Dirty_Bit(nc_DB_OCCASIONAL, true);

	mov	ecx, DWORD PTR [edi+4]
	mov	eax, DWORD PTR [ecx+2400]
	mov	edx, DWORD PTR [eax+160]
	lea	ecx, DWORD PTR [eax+160]
	mov	eax, DWORD PTR [edx+56]
	push	1
	push	3
	call	eax
$LN16@Proc_Refin:
	mov	edi, DWORD PTR [edi]
	test	edi, edi
	jne	SHORT $LL17@Proc_Refin
$LN15@Proc_Refin:

; 1486 : 						}
; 1487 : 					}
; 1488 : 					RefineryLastPoolDistribute[Refinery->Base->team] = Refinery->UnloadTimeCounter;

	mov	ecx, DWORD PTR [esi+1908]
	fld	DWORD PTR [esi+2160]
	mov	edx, DWORD PTR [ecx+1720]
	fstp	DWORD PTR ?RefineryLastPoolDistribute@@3PAMA[edx*4]
$LN18@Proc_Refin:

; 1489 : 				}
; 1490 : 				if (Refinery->UnloadTimeCounter <= 0.0f)

	fldz
	fcomp	DWORD PTR [esi+2160]
	fnstsw	ax
	test	ah, 1
	jne	$LN11@Proc_Refin

; 1491 : 				{
; 1492 : #if ISDEV()
; 1493 : 					gzConsole::In("msg %s is going to harvester Tiberium.",Refinery->Harvester->Vehicle->definition->Get_Name());

	mov	eax, DWORD PTR [esi+2092]
	mov	ecx, DWORD PTR [eax+100]
	mov	ecx, DWORD PTR [ecx+1724]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+48]
	call	eax
	push	eax
	push	OFFSET ??_C@_0CH@NHPALKJG@msg?5?$CFs?5is?5going?5to?5harvester?5Tib@
	call	?In@gzConsole@@SAXPBDZZ			; gzConsole::In

; 1494 : #endif
; 1495 : 					Refinery->IsHarvesterDocked = false;
; 1496 : 					Refinery->PoolMoney = 0.0f;

	fldz

; 1497 : 					Refinery->Harvester->Go_Harvest();

	mov	ecx, DWORD PTR [esi+2092]
	fstp	DWORD PTR [esi+2168]
	add	esp, 8
	mov	BYTE PTR [esi+2156], 0
	call	?Go_Harvest@nc_HarvesterClass@@QAEXXZ	; nc_HarvesterClass::Go_Harvest

; 1498 : 					Refinery->Set_Object_Dirty_Bit(nc_DB_RARE, true);

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

; 1499 : 					nc_PhysClass *UnloadAnimPhys = nc_PhysicsSceneClass::TheScene->Find_Static_Object(Refinery->UnloadAnimId);

	mov	ecx, DWORD PTR [esi+2164]
	mov	edx, DWORD PTR ?TheScene@nc_PhysicsSceneClass@@2AAPAV1@A ; nc_PhysicsSceneClass::TheScene
	push	ecx
	mov	ecx, DWORD PTR [edx]
	call	?Find_Static_Object@nc_PhysicsSceneClass@@QAEPAVnc_PhysClass@@H@Z ; nc_PhysicsSceneClass::Find_Static_Object

; 1500 : 					if (UnloadAnimPhys)

	test	eax, eax
	je	SHORT $LN11@Proc_Refin

; 1501 : 					{
; 1502 : 						nc_StaticAnimPhysClass *UnloadStaticAnim = UnloadAnimPhys->As_StaticAnimPhysClass();

	mov	edx, DWORD PTR [eax]
	mov	ecx, eax
	mov	eax, DWORD PTR [edx+152]
	call	eax

; 1503 : 						if (UnloadStaticAnim)

	test	eax, eax
	je	SHORT $LN11@Proc_Refin

; 1504 : 						{
; 1505 : 							UnloadStaticAnim->AnimCollisionMgr.AnimationMode = 1;
; 1506 : 							UnloadStaticAnim->AnimCollisionMgr.TargetFrame = 0.0f;

	fldz
	mov	DWORD PTR [eax+136], 1
	fstp	DWORD PTR [eax+140]
$LN11@Proc_Refin:

; 1507 : 						}
; 1508 : 					}
; 1509 : 				}
; 1510 : 			}
; 1511 : 		}
; 1512 : 		if (cGame->Is_Gameplay_Permitted())

	mov	ecx, DWORD PTR ?cGame@@3AAPAVnc_cGameData@@A ; cGame
	mov	ecx, DWORD PTR [ecx]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+132]
	call	eax
	test	al, al
	je	$LN8@Proc_Refin

; 1513 : 		{
; 1514 : 			if (Refinery->IsHarvesterDocked == false)

	cmp	BYTE PTR [esi+2156], 0
	jne	$LN8@Proc_Refin

; 1515 : 			{
; 1516 : 				RefineryLastPoolDistribute[Refinery->Base->team] = Refinery->Get_Definition()->UnloadTime;

	mov	ecx, esi
	call	?Get_Definition@nc_RefineryGameObj@@QAEPAVnc_RefineryGameObjDef@@XZ ; nc_RefineryGameObj::Get_Definition
	fld	DWORD PTR [eax+160]
	mov	ecx, DWORD PTR [esi+1908]
	mov	edx, DWORD PTR [ecx+1720]

; 1517 : 				Refinery->TickCounter -= nc_TimeManager::FrameSeconds;

	mov	eax, DWORD PTR ?FrameSeconds@nc_TimeManager@@2AAMA ; nc_TimeManager::FrameSeconds
	fstp	DWORD PTR ?RefineryLastPoolDistribute@@3PAMA[edx*4]
	fld	DWORD PTR [esi+2176]
	fsub	DWORD PTR [eax]
	fst	DWORD PTR [esi+2176]

; 1518 : 				if (Refinery->TickCounter <= 0.0f)

	fldz
	fcompp
	fnstsw	ax
	test	ah, 1
	jne	$LN8@Proc_Refin

; 1519 : 				{
; 1520 : 					for (nc_GenericSLNode<nc_SmartGameObj> *Smart = nc_GameObjManager::SmartGameObjList->HeadNode; Smart != NULL; Smart = Smart->NodeNext)

	mov	ecx, DWORD PTR ?SmartGameObjList@nc_GameObjManager@@2PAV?$nc_SList@Vnc_SmartGameObj@@@@A ; nc_GameObjManager::SmartGameObjList
	mov	edi, DWORD PTR [ecx+4]
	test	edi, edi
	je	$LN5@Proc_Refin
$LL7@Proc_Refin:

; 1521 : 					{
; 1522 : 						if (Smart->NodeData->As_SoldierGameObj() && Smart->NodeData->Player && Smart->NodeData->Player->PlayerType.Get() == Refinery->Base->team)

	mov	ecx, DWORD PTR [edi+4]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+68]
	call	eax
	test	eax, eax
	je	$LN6@Proc_Refin
	mov	ecx, DWORD PTR [edi+4]
	mov	eax, DWORD PTR [ecx+2400]
	test	eax, eax
	je	SHORT $LN6@Proc_Refin
	lea	ecx, DWORD PTR [eax+1900]
	call	?Get@nc_IntDataSafeClass@@QAEHXZ	; nc_IntDataSafeClass::Get
	mov	edx, DWORD PTR [esi+1908]
	cmp	eax, DWORD PTR [edx+1720]
	jne	SHORT $LN6@Proc_Refin

; 1523 : 						{
; 1524 : 							Smart->NodeData->Player->Money += floor(Refinery->Get_Definition()->FundsDistribedPerSec / Refinery->Base->OperationTimeFactor);

	mov	ecx, esi
	call	?Get_Definition@nc_RefineryGameObj@@QAEPAVnc_RefineryGameObjDef@@XZ ; nc_RefineryGameObj::Get_Definition
	fld	DWORD PTR [eax+168]
	mov	ecx, DWORD PTR [esi+1908]
	fdiv	DWORD PTR [ecx+1716]
	sub	esp, 8
	fstp	QWORD PTR [esp]
	call	_floor
	fstp	DWORD PTR [esp+4]
	mov	edx, DWORD PTR [edi+4]
	mov	ecx, DWORD PTR [edx+2400]
	add	esp, 4
	add	ecx, 8
	call	??Ync_FloatDataSafeClass@@QAEXM@Z	; nc_FloatDataSafeClass::operator+=

; 1525 : 							Smart->NodeData->Player->Set_Object_Dirty_Bit(nc_DB_OCCASIONAL, true);

	mov	eax, DWORD PTR [edi+4]
	mov	eax, DWORD PTR [eax+2400]
	mov	edx, DWORD PTR [eax+160]
	lea	ecx, DWORD PTR [eax+160]
	mov	eax, DWORD PTR [edx+56]
	push	1
	push	3
	call	eax
$LN6@Proc_Refin:
	mov	edi, DWORD PTR [edi]
	test	edi, edi
	jne	$LL7@Proc_Refin
$LN5@Proc_Refin:

; 1526 : 						}
; 1527 : 					}
; 1528 : 					Refinery->TickCounter = 1.0f;

	fld1
	fstp	DWORD PTR [esi+2176]
$LN8@Proc_Refin:

; 1529 : 				}
; 1530 : 			}
; 1531 : 		}
; 1532 : 		if (Refinery->Harvester)

	mov	ecx, DWORD PTR [esi+2092]
	test	ecx, ecx
	je	SHORT $LN1@Proc_Refin

; 1533 : 			Refinery->Harvester->Think();

	call	?Think@nc_HarvesterClass@@QAEXXZ	; nc_HarvesterClass::Think

; 1539 : 	}
; 1540 : 	Refinery->nc_ScriptableGameObj::Think();

	mov	ecx, esi
	call	?Think@nc_ScriptableGameObj@@UAEXXZ	; nc_ScriptableGameObj::Think

; 1541 : }

	pop	edi
	pop	esi
	mov	esp, ebp
	pop	ebp
	ret	4
$LN25@Proc_Refin:

; 1534 : 	}
; 1535 : 	else
; 1536 : 	{
; 1537 : 		if (Refinery->Harvester)

	mov	eax, DWORD PTR [esi+2092]
	test	eax, eax
	je	SHORT $LN1@Proc_Refin

; 1538 : 			Refinery->Harvester->Vehicle->Set_Delete_Pending();

	mov	eax, DWORD PTR [eax+100]
	mov	edx, DWORD PTR [eax+8]
	lea	ecx, DWORD PTR [eax+8]
	mov	eax, DWORD PTR [edx+44]
	call	eax
$LN1@Proc_Refin:

; 1539 : 	}
; 1540 : 	Refinery->nc_ScriptableGameObj::Think();

	mov	ecx, esi
	call	?Think@nc_ScriptableGameObj@@UAEXXZ	; nc_ScriptableGameObj::Think

; 1541 : }

	pop	edi
	pop	esi
	mov	esp, ebp
	pop	ebp
	ret	4
?Proc_RefineryThink@@YGXPAVnc_RefineryGameObj@@@Z ENDP	; Proc_RefineryThink
_TEXT	ENDS
PUBLIC	?Hook_RefineryThink@@YAXXZ			; Hook_RefineryThink
; Function compile flags: /Ogtpy
;	COMDAT ?Hook_RefineryThink@@YAXXZ
_TEXT	SEGMENT
?Hook_RefineryThink@@YAXXZ PROC				; Hook_RefineryThink, COMDAT

; 1544 : 	_asm {
; 1545 : 		push ecx

	push	ecx

; 1546 : 		call Proc_RefineryThink

	call	?Proc_RefineryThink@@YGXPAVnc_RefineryGameObj@@@Z ; Proc_RefineryThink

; 1547 : 		retn

	ret	0
?Hook_RefineryThink@@YAXXZ ENDP				; Hook_RefineryThink
_TEXT	ENDS
PUBLIC	?Proc_RefineryHarvesterDestroyed@@YGXPAVnc_RefineryGameObj@@PAVnc_VehicleGameObj@@@Z ; Proc_RefineryHarvesterDestroyed
EXTRN	?On_Vehicle_Destroyed@nc_BaseControllerClass@@QAEXPAVnc_VehicleGameObj@@@Z:PROC ; nc_BaseControllerClass::On_Vehicle_Destroyed
; Function compile flags: /Ogtpy
;	COMDAT ?Proc_RefineryHarvesterDestroyed@@YGXPAVnc_RefineryGameObj@@PAVnc_VehicleGameObj@@@Z
_TEXT	SEGMENT
_Refinery$ = 8						; size = 4
_Vehicle$ = 12						; size = 4
?Proc_RefineryHarvesterDestroyed@@YGXPAVnc_RefineryGameObj@@PAVnc_VehicleGameObj@@@Z PROC ; Proc_RefineryHarvesterDestroyed, COMDAT

; 1553 : {

	push	esi

; 1554 : 	if (Refinery->Harvester)

	mov	esi, DWORD PTR _Refinery$[esp]
	cmp	DWORD PTR [esi+2092], 0
	je	SHORT $LN1@Proc_Refin@2

; 1555 : 	{
; 1556 : 		Refinery->Base->On_Vehicle_Destroyed(Vehicle);

	mov	eax, DWORD PTR _Vehicle$[esp]
	mov	ecx, DWORD PTR [esi+1908]
	push	eax
	call	?On_Vehicle_Destroyed@nc_BaseControllerClass@@QAEXPAVnc_VehicleGameObj@@@Z ; nc_BaseControllerClass::On_Vehicle_Destroyed

; 1557 : 		nc_PhysClass *UnloadAnimPhys = nc_PhysicsSceneClass::TheScene->Find_Static_Object(Refinery->UnloadAnimId);

	mov	ecx, DWORD PTR [esi+2164]
	mov	edx, DWORD PTR ?TheScene@nc_PhysicsSceneClass@@2AAPAV1@A ; nc_PhysicsSceneClass::TheScene
	push	ecx
	mov	ecx, DWORD PTR [edx]
	call	?Find_Static_Object@nc_PhysicsSceneClass@@QAEPAVnc_PhysClass@@H@Z ; nc_PhysicsSceneClass::Find_Static_Object

; 1558 : 		if (UnloadAnimPhys)

	test	eax, eax
	je	SHORT $LN1@Proc_Refin@2

; 1559 : 		{
; 1560 : 			nc_StaticAnimPhysClass *UnloadStaticAnim = UnloadAnimPhys->As_StaticAnimPhysClass();

	mov	edx, DWORD PTR [eax]
	mov	ecx, eax
	mov	eax, DWORD PTR [edx+152]
	call	eax

; 1561 : 			if (UnloadStaticAnim)

	test	eax, eax
	je	SHORT $LN1@Proc_Refin@2

; 1562 : 			{
; 1563 : 				UnloadStaticAnim->AnimCollisionMgr.AnimationMode = 1;
; 1564 : 				UnloadStaticAnim->AnimCollisionMgr.TargetFrame = 0.0f;

	fldz
	mov	DWORD PTR [eax+136], 1
	fstp	DWORD PTR [eax+140]
$LN1@Proc_Refin@2:
	pop	esi

; 1565 : 			}
; 1566 : 		}
; 1567 : 	}
; 1568 : }

	ret	8
?Proc_RefineryHarvesterDestroyed@@YGXPAVnc_RefineryGameObj@@PAVnc_VehicleGameObj@@@Z ENDP ; Proc_RefineryHarvesterDestroyed
_TEXT	ENDS
PUBLIC	?Hook_RefineryHarvesterDestroyed@@YAXXZ		; Hook_RefineryHarvesterDestroyed
; Function compile flags: /Ogtpy
;	COMDAT ?Hook_RefineryHarvesterDestroyed@@YAXXZ
_TEXT	SEGMENT
?Hook_RefineryHarvesterDestroyed@@YAXXZ PROC		; Hook_RefineryHarvesterDestroyed, COMDAT

; 1571 : 	_asm {
; 1572 : 		push [esp+4]

	push	DWORD PTR [esp+4]

; 1573 : 		push ecx

	push	ecx

; 1574 : 		call Proc_RefineryHarvesterDestroyed

	call	?Proc_RefineryHarvesterDestroyed@@YGXPAVnc_RefineryGameObj@@PAVnc_VehicleGameObj@@@Z ; Proc_RefineryHarvesterDestroyed

; 1575 : 		retn 4

	ret	4
?Hook_RefineryHarvesterDestroyed@@YAXXZ ENDP		; Hook_RefineryHarvesterDestroyed
_TEXT	ENDS
PUBLIC	??_C@_08JLPBMOII@NC?6SS?6?$CFf?$AA@		; `string'
PUBLIC	?Proc_SoldierSetSpeed@@YAXPAVnc_SoldierGameObj@@M@Z ; Proc_SoldierSetSpeed
EXTRN	?Convert_From@nc_WideStringClass@@QAEXPBD@Z:PROC ; nc_WideStringClass::Convert_From
EXTRN	_sprintf: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\gzhooks.cpp
xdata$x	ENDS
;	COMDAT ?Proc_SoldierSetSpeed@@YAXPAVnc_SoldierGameObj@@M@Z
_TEXT	SEGMENT
_msg$59709 = -76					; size = 64
__$EHRec$ = -12						; size = 12
_wstr$59711 = 8						; size = 4
_soldier$ = 8						; size = 4
_Speed$ = 12						; size = 4
?Proc_SoldierSetSpeed@@YAXPAVnc_SoldierGameObj@@M@Z PROC ; Proc_SoldierSetSpeed, COMDAT

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

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

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

; 1665 : 		char msg[64];
; 1666 : 		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$59709[esp+88]
	push	OFFSET ??_C@_08JLPBMOII@NC?6SS?6?$CFf?$AA@
	push	eax
	call	_sprintf

; 1667 : 		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$59711[esp+76], edx

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

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

; 1669 : 		wstr.Convert_From(msg);

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

; 1670 : 		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$59711[esp+88]
	push	2
	push	edx
	call	?Send_Text_Msg@@YAXABVnc_WideStringClass@@H_NHH@Z ; Send_Text_Msg
	add	esp, 20					; 00000014H

; 1671 : 		wstr.Free_String();

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

; 1672 : 	}

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

; 1673 : }

	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$59711[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

; 1675 : 	_asm {
; 1676 : 		mov Speed_Sync_Soldier, ecx

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

; 1677 : 		mov eax, [esp+4]

	mov	eax, DWORD PTR [esp+4]

; 1678 : 		mov Speed_Sync_Speed, eax

	mov	DWORD PTR ?Speed_Sync_Speed@@3MA, eax

; 1679 : 	}
; 1680 : 	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

; 1681 : 	_asm {
; 1682 : 		mov ecx, Speed_Sync_Soldier

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

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

	mov	ecx, DWORD PTR [ecx+1908]

; 1684 : 		mov eax, 0x6C8F26

	mov	eax, 7114534				; 006c8f26H

; 1685 : 		jmp eax

	jmp	eax
?Hook_SoldierSetSpeed@@YAXXZ ENDP			; Hook_SoldierSetSpeed
_TEXT	ENDS
PUBLIC	??_C@_0BO@FINHGBNM@msg?5?$CFs?5is?5unloading?5Tiberium?4?$AA@ ; `string'
PUBLIC	?Proc_RefineryOnHarvesterDock@@YGXPAVnc_RefineryGameObj@@@Z ; Proc_RefineryOnHarvesterDock
;	COMDAT ??_C@_0BO@FINHGBNM@msg?5?$CFs?5is?5unloading?5Tiberium?4?$AA@
CONST	SEGMENT
??_C@_0BO@FINHGBNM@msg?5?$CFs?5is?5unloading?5Tiberium?4?$AA@ DB 'msg %s '
	DB	'is unloading Tiberium.', 00H		; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?Proc_RefineryOnHarvesterDock@@YGXPAVnc_RefineryGameObj@@@Z
_TEXT	SEGMENT
_Refinery$ = 8						; size = 4
?Proc_RefineryOnHarvesterDock@@YGXPAVnc_RefineryGameObj@@@Z PROC ; Proc_RefineryOnHarvesterDock, COMDAT

; 1691 : {

	push	esi

; 1692 : 	Refinery->IsHarvesterDocked = true;

	mov	esi, DWORD PTR _Refinery$[esp]

; 1693 : 	Refinery->UnloadTimeCounter = Refinery->Get_Definition()->UnloadTime;

	mov	ecx, esi
	mov	BYTE PTR [esi+2156], 1
	call	?Get_Definition@nc_RefineryGameObj@@QAEPAVnc_RefineryGameObjDef@@XZ ; nc_RefineryGameObj::Get_Definition
	fld	DWORD PTR [eax+160]

; 1694 : 	Refinery->HarvDockDistributePerSec = Refinery->Get_Definition()->FundsGathered / Refinery->UnloadTimeCounter;

	mov	ecx, esi
	fstp	DWORD PTR [esi+2160]
	call	?Get_Definition@nc_RefineryGameObj@@QAEPAVnc_RefineryGameObjDef@@XZ ; nc_RefineryGameObj::Get_Definition
	fld	DWORD PTR [eax+164]
	fdiv	DWORD PTR [esi+2160]

; 1695 : 	Refinery->Set_Object_Dirty_Bit(nc_DB_RARE, true);

	mov	eax, DWORD PTR [esi+8]
	mov	edx, DWORD PTR [eax+56]
	lea	ecx, DWORD PTR [esi+8]
	push	1
	push	7
	fstp	DWORD PTR [esi+2172]
	call	edx

; 1696 : 	gzConsole::In("msg %s is unloading Tiberium.", Refinery->Harvester->Vehicle->definition->Get_Name());

	mov	eax, DWORD PTR [esi+2092]
	mov	ecx, DWORD PTR [eax+100]
	mov	ecx, DWORD PTR [ecx+1724]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+48]
	call	eax
	push	eax
	push	OFFSET ??_C@_0BO@FINHGBNM@msg?5?$CFs?5is?5unloading?5Tiberium?4?$AA@
	call	?In@gzConsole@@SAXPBDZZ			; gzConsole::In
	add	esp, 8
	pop	esi

; 1697 : }

	ret	4
?Proc_RefineryOnHarvesterDock@@YGXPAVnc_RefineryGameObj@@@Z ENDP ; Proc_RefineryOnHarvesterDock
_TEXT	ENDS
PUBLIC	?Hook_RefineryOnHarvesterDock@@YAXXZ		; Hook_RefineryOnHarvesterDock
; Function compile flags: /Ogtpy
;	COMDAT ?Hook_RefineryOnHarvesterDock@@YAXXZ
_TEXT	SEGMENT
?Hook_RefineryOnHarvesterDock@@YAXXZ PROC		; Hook_RefineryOnHarvesterDock, COMDAT

; 1700 : 	_asm {
; 1701 : 		push ecx

	push	ecx

; 1702 : 		call Proc_RefineryOnHarvesterDock

	call	?Proc_RefineryOnHarvesterDock@@YGXPAVnc_RefineryGameObj@@@Z ; Proc_RefineryOnHarvesterDock

; 1703 : 		retn

	ret	0
?Hook_RefineryOnHarvesterDock@@YAXXZ ENDP		; Hook_RefineryOnHarvesterDock
_TEXT	ENDS
PUBLIC	?Hook_ProcessConnectionRequest@@YGXAAVnc_cPacket@@@Z ; Hook_ProcessConnectionRequest
EXTRN	?Process_Connection_Request@nc_cConnection@@QAEXAAVnc_cPacket@@@Z:PROC ; nc_cConnection::Process_Connection_Request
; Function compile flags: /Ogtpy
;	COMDAT ?Hook_ProcessConnectionRequest@@YGXAAVnc_cPacket@@@Z
_TEXT	SEGMENT
_packet$ = 8						; size = 4
?Hook_ProcessConnectionRequest@@YGXAAVnc_cPacket@@@Z PROC ; Hook_ProcessConnectionRequest, COMDAT

; 1788 : 	nc_cNetwork::PServerConnection->Process_Connection_Request(packet);

	mov	ecx, DWORD PTR ?PServerConnection@nc_cNetwork@@2AAPAVnc_cConnection@@A ; nc_cNetwork::PServerConnection
	mov	ecx, DWORD PTR [ecx]
	jmp	?Process_Connection_Request@nc_cConnection@@QAEXAAVnc_cPacket@@@Z ; nc_cConnection::Process_Connection_Request
?Hook_ProcessConnectionRequest@@YGXAAVnc_cPacket@@@Z ENDP ; Hook_ProcessConnectionRequest
_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
$T68317 = -12						; size = 12
_this$ = 8						; size = 4
$T68323 = 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 $T68323[esp+12]
	push	eax
	lea	ecx, DWORD PTR $T68317[esp+20]
	mov	DWORD PTR $T68323[esp+16], 0
	call	??0exception@std@@QAE@ABQBD@Z		; std::exception::exception
	push	OFFSET __TI2?AVbad_alloc@std@@
	lea	ecx, DWORD PTR $T68317[esp+20]
	push	ecx
	mov	DWORD PTR $T68317[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
$T68329 = -12						; size = 12
$T68334 = 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 $T68334[esp+12]
	push	eax
	lea	ecx, DWORD PTR $T68329[esp+20]
	mov	DWORD PTR $T68334[esp+16], 0
	call	??0exception@std@@QAE@ABQBD@Z		; std::exception::exception
	push	OFFSET __TI2?AVbad_alloc@std@@
	lea	ecx, DWORD PTR $T68329[esp+20]
	push	ecx
	mov	DWORD PTR $T68329[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_BuildingGameObj@@@@QAEHXZ ; nc_DynamicVectorClass<nc_BuildingGameObj *>::Count
; Function compile flags: /Ogtpy
; File d:\source code\fds lib\new\fds_vector.h
;	COMDAT ?Count@?$nc_DynamicVectorClass@PAVnc_BuildingGameObj@@@@QAEHXZ
_TEXT	SEGMENT
?Count@?$nc_DynamicVectorClass@PAVnc_BuildingGameObj@@@@QAEHXZ PROC ; nc_DynamicVectorClass<nc_BuildingGameObj *>::Count, COMDAT
; _this$ = ecx

; 375  : 		return ActiveCount;

	mov	eax, DWORD PTR [ecx+16]

; 376  : 	}

	ret	0
?Count@?$nc_DynamicVectorClass@PAVnc_BuildingGameObj@@@@QAEHXZ ENDP ; nc_DynamicVectorClass<nc_BuildingGameObj *>::Count
_TEXT	ENDS
PUBLIC	?Count@?$nc_DynamicVectorClass@PAVnc_WeaponClass@@@@QAEHXZ ; nc_DynamicVectorClass<nc_WeaponClass *>::Count
; Function compile flags: /Ogtpy
;	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	??A?$aVector@PAVgzEvtHandler@@@@QAEAAPAVgzEvtHandler@@I@Z ; aVector<gzEvtHandler *>::operator[]
; Function compile flags: /Ogtpy
; File d:\source code\alib\include\avector.h
;	COMDAT ??A?$aVector@PAVgzEvtHandler@@@@QAEAAPAVgzEvtHandler@@I@Z
_TEXT	SEGMENT
_nPos$ = 8						; size = 4
??A?$aVector@PAVgzEvtHandler@@@@QAEAAPAVgzEvtHandler@@I@Z PROC ; aVector<gzEvtHandler *>::operator[], COMDAT
; _this$ = ecx

; 37   : 	T& operator[](unsigned int nPos) { return this->m_vector[nPos]; };

	mov	eax, DWORD PTR [ecx+4]
	mov	ecx, DWORD PTR _nPos$[esp-4]
	lea	eax, DWORD PTR [eax+ecx*4]
	ret	4
??A?$aVector@PAVgzEvtHandler@@@@QAEAAPAVgzEvtHandler@@I@Z ENDP ; aVector<gzEvtHandler *>::operator[]
_TEXT	ENDS
PUBLIC	?Count@?$aVector@PAVgzEvtHandler@@@@QBEIXZ	; aVector<gzEvtHandler *>::Count
; Function compile flags: /Ogtpy
;	COMDAT ?Count@?$aVector@PAVgzEvtHandler@@@@QBEIXZ
_TEXT	SEGMENT
?Count@?$aVector@PAVgzEvtHandler@@@@QBEIXZ PROC		; aVector<gzEvtHandler *>::Count, COMDAT
; _this$ = ecx

; 38   : 	inline unsigned int Count() const { return this->m_items; };

	mov	eax, DWORD PTR [ecx+12]
	ret	0
?Count@?$aVector@PAVgzEvtHandler@@@@QBEIXZ ENDP		; aVector<gzEvtHandler *>::Count
_TEXT	ENDS
PUBLIC	??_7?$aVector@PAVHookBase@@@@6B@		; aVector<HookBase *>::`vftable'
PUBLIC	??0?$aVector@PAVHookBase@@@@QAE@XZ		; aVector<HookBase *>::aVector<HookBase *>
PUBLIC	??_R4?$aVector@PAVHookBase@@@@6B@		; aVector<HookBase *>::`RTTI Complete Object Locator'
PUBLIC	??_R0?AV?$aVector@PAVHookBase@@@@@8		; aVector<HookBase *> `RTTI Type Descriptor'
PUBLIC	??_R3?$aVector@PAVHookBase@@@@8			; aVector<HookBase *>::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2?$aVector@PAVHookBase@@@@8			; aVector<HookBase *>::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@?$aVector@PAVHookBase@@@@8	; aVector<HookBase *>::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?Clear@?$aVector@PAVHookBase@@@@UAEXXZ		; aVector<HookBase *>::Clear
PUBLIC	?Resize@?$aVector@PAVHookBase@@@@UAE_NI@Z	; aVector<HookBase *>::Resize
PUBLIC	?Add@?$aVector@PAVHookBase@@@@UAEXABQAVHookBase@@@Z ; aVector<HookBase *>::Add
PUBLIC	?Insert@?$aVector@PAVHookBase@@@@UAEXIABQAVHookBase@@@Z ; aVector<HookBase *>::Insert
PUBLIC	?Delete@?$aVector@PAVHookBase@@@@UAEXI@Z	; aVector<HookBase *>::Delete
EXTRN	??_E?$aVector@PAVHookBase@@@@UAEPAXI@Z:PROC	; aVector<HookBase *>::`vector deleting destructor'
;	COMDAT ??_R1A@?0A@EA@?$aVector@PAVHookBase@@@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@?$aVector@PAVHookBase@@@@8 DD FLAT:??_R0?AV?$aVector@PAVHookBase@@@@@8 ; aVector<HookBase *>::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	00H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3?$aVector@PAVHookBase@@@@8
rdata$r	ENDS
;	COMDAT ??_R2?$aVector@PAVHookBase@@@@8
rdata$r	SEGMENT
??_R2?$aVector@PAVHookBase@@@@8 DD FLAT:??_R1A@?0A@EA@?$aVector@PAVHookBase@@@@8 ; aVector<HookBase *>::`RTTI Base Class Array'
rdata$r	ENDS
;	COMDAT ??_R3?$aVector@PAVHookBase@@@@8
rdata$r	SEGMENT
??_R3?$aVector@PAVHookBase@@@@8 DD 00H			; aVector<HookBase *>::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	01H
	DD	FLAT:??_R2?$aVector@PAVHookBase@@@@8
rdata$r	ENDS
;	COMDAT ??_R0?AV?$aVector@PAVHookBase@@@@@8
_DATA	SEGMENT
??_R0?AV?$aVector@PAVHookBase@@@@@8 DD FLAT:??_7type_info@@6B@ ; aVector<HookBase *> `RTTI Type Descriptor'
	DD	00H
	DB	'.?AV?$aVector@PAVHookBase@@@@', 00H
_DATA	ENDS
;	COMDAT ??_R4?$aVector@PAVHookBase@@@@6B@
rdata$r	SEGMENT
??_R4?$aVector@PAVHookBase@@@@6B@ DD 00H		; aVector<HookBase *>::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AV?$aVector@PAVHookBase@@@@@8
	DD	FLAT:??_R3?$aVector@PAVHookBase@@@@8
rdata$r	ENDS
;	COMDAT ??_7?$aVector@PAVHookBase@@@@6B@
CONST	SEGMENT
??_7?$aVector@PAVHookBase@@@@6B@ DD FLAT:??_R4?$aVector@PAVHookBase@@@@6B@ ; aVector<HookBase *>::`vftable'
	DD	FLAT:??_E?$aVector@PAVHookBase@@@@UAEPAXI@Z
	DD	FLAT:?Clear@?$aVector@PAVHookBase@@@@UAEXXZ
	DD	FLAT:?Resize@?$aVector@PAVHookBase@@@@UAE_NI@Z
	DD	FLAT:?Add@?$aVector@PAVHookBase@@@@UAEXABQAVHookBase@@@Z
	DD	FLAT:?Insert@?$aVector@PAVHookBase@@@@UAEXIABQAVHookBase@@@Z
	DD	FLAT:?Delete@?$aVector@PAVHookBase@@@@UAEXI@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0?$aVector@PAVHookBase@@@@QAE@XZ
_TEXT	SEGMENT
??0?$aVector@PAVHookBase@@@@QAE@XZ PROC			; aVector<HookBase *>::aVector<HookBase *>, COMDAT
; _this$ = ecx

; 20   : 	aVector()

	mov	eax, ecx

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

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

; 23   : 		this->m_length = 0;

	mov	DWORD PTR [eax+8], ecx

; 24   : 		this->m_items = 0;

	mov	DWORD PTR [eax+12], ecx

; 25   : 	};

	ret	0
??0?$aVector@PAVHookBase@@@@QAE@XZ ENDP			; aVector<HookBase *>::aVector<HookBase *>
_TEXT	ENDS
PUBLIC	??_C@_0CG@NJHDKABA@d?3?2source?5code?2alib?2include?2aVec@ ; `string'
EXTRN	??_V@YAXPAX@Z:PROC				; operator delete[]
;	COMDAT ??_C@_0CG@NJHDKABA@d?3?2source?5code?2alib?2include?2aVec@
CONST	SEGMENT
??_C@_0CG@NJHDKABA@d?3?2source?5code?2alib?2include?2aVec@ DB 'd:\source '
	DB	'code\alib\include\aVector.h', 00H		; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?Clear@?$aVector@PAVHookBase@@@@UAEXXZ
_TEXT	SEGMENT
?Clear@?$aVector@PAVHookBase@@@@UAEXXZ PROC		; aVector<HookBase *>::Clear, COMDAT
; _this$ = ecx

; 40   : 	{

	push	esi
	push	edi
	mov	esi, ecx

; 41   : 		if (this->m_vector != NULL)

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

; 42   : 		{
; 43   : 			delete[] this->m_vector;

	push	OFFSET ??_C@_00CNPNBAHC@?$AA@
	push	43					; 0000002bH
	push	OFFSET ??_C@_0CG@NJHDKABA@d?3?2source?5code?2alib?2include?2aVec@
	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

; 44   : 			this->m_vector = NULL;

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

; 45   : 		}
; 46   : 		this->m_length = 0;
; 47   : 		this->m_items = 0;

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

; 48   : 	};

	ret	0
?Clear@?$aVector@PAVHookBase@@@@UAEXXZ ENDP		; aVector<HookBase *>::Clear
_TEXT	ENDS
EXTRN	??_U@YAPAXI@Z:PROC				; operator new[]
EXTRN	_memcpy:PROC
; Function compile flags: /Ogtpy
;	COMDAT ?Resize@?$aVector@PAVHookBase@@@@UAE_NI@Z
_TEXT	SEGMENT
_nSize$ = 8						; size = 4
?Resize@?$aVector@PAVHookBase@@@@UAE_NI@Z PROC		; aVector<HookBase *>::Resize, COMDAT
; _this$ = ecx

; 50   : 	{

	push	esi
	push	edi

; 51   : 		if (nSize > 0)

	mov	edi, DWORD PTR _nSize$[esp+4]
	test	edi, edi
	mov	esi, ecx
	jbe	SHORT $LN3@Resize
	push	ebx

; 52   : 		{
; 53   : 			T *nVec = new T[nSize];

	push	OFFSET ??_C@_00CNPNBAHC@?$AA@
	push	53					; 00000035H
	push	OFFSET ??_C@_0CG@NJHDKABA@d?3?2source?5code?2alib?2include?2aVec@
	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

; 54   : 			if (this->m_vector != NULL)

	mov	eax, DWORD PTR [esi+4]
	add	esp, 16					; 00000010H
	test	eax, eax
	je	SHORT $LN11@Resize

; 55   : 			{
; 56   : 				int allocCount = (this->m_length > nSize) ? nSize : this->m_length;

	mov	ecx, DWORD PTR [esi+8]
	cmp	ecx, edi
	jbe	SHORT $LN8@Resize
	mov	ecx, edi
$LN8@Resize:

; 57   : 				memcpy(nVec, this->m_vector, allocCount * sizeof(T));

	add	ecx, ecx
	add	ecx, ecx
	push	ecx
	push	eax
	push	ebx
	call	_memcpy

; 58   : 				delete[] this->m_vector;

	push	OFFSET ??_C@_00CNPNBAHC@?$AA@
	push	58					; 0000003aH
	push	OFFSET ??_C@_0CG@NJHDKABA@d?3?2source?5code?2alib?2include?2aVec@
	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:

; 59   : 			}
; 60   : 			if (this->m_items > nSize)

	cmp	DWORD PTR [esi+12], edi
	jbe	SHORT $LN1@Resize

; 61   : 				this->m_items = nSize;

	mov	DWORD PTR [esi+12], edi
$LN1@Resize:

; 62   : 			this->m_length = nSize;
; 63   : 			this->m_vector = nVec;

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

; 64   : 			return true;

	mov	al, 1
	pop	esi

; 67   : 	}

	ret	4
$LN3@Resize:
	pop	edi

; 65   : 		}
; 66   : 		return false;

	xor	al, al
	pop	esi

; 67   : 	}

	ret	4
?Resize@?$aVector@PAVHookBase@@@@UAE_NI@Z ENDP		; aVector<HookBase *>::Resize
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Add@?$aVector@PAVHookBase@@@@UAEXABQAVHookBase@@@Z
_TEXT	SEGMENT
_obj$ = 8						; size = 4
?Add@?$aVector@PAVHookBase@@@@UAEXABQAVHookBase@@@Z PROC ; aVector<HookBase *>::Add, COMDAT
; _this$ = ecx

; 69   : 	{

	push	esi
	mov	esi, ecx

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

; 71   : 		{
; 72   : 			this->m_vector[this->m_length -1] = obj;

	mov	edx, DWORD PTR _obj$[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

; 73   : 			this->m_items++;

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

; 74   : 		}
; 75   : 	}

	ret	4
?Add@?$aVector@PAVHookBase@@@@UAEXABQAVHookBase@@@Z ENDP ; aVector<HookBase *>::Add
_TEXT	ENDS
EXTRN	_memmove:PROC
; Function compile flags: /Ogtpy
;	COMDAT ?Insert@?$aVector@PAVHookBase@@@@UAEXIABQAVHookBase@@@Z
_TEXT	SEGMENT
_index$ = 8						; size = 4
_obj$ = 12						; size = 4
?Insert@?$aVector@PAVHookBase@@@@UAEXIABQAVHookBase@@@Z PROC ; aVector<HookBase *>::Insert, COMDAT
; _this$ = ecx

; 77   : 	{

	push	esi
	mov	esi, ecx

; 78   : 		if (index > this->m_length)

	mov	eax, DWORD PTR [esi+8]
	push	edi
	mov	edi, DWORD PTR _index$[esp+4]
	cmp	edi, eax
	jbe	SHORT $LN3@Insert

; 79   : 			this->Add(obj);

	mov	ecx, DWORD PTR _obj$[esp+4]
	mov	eax, DWORD PTR [esi]
	mov	edx, DWORD PTR [eax+12]
	push	ecx
	mov	ecx, esi
	call	edx
	pop	edi
	pop	esi

; 85   : 		}
; 86   : 	}

	ret	8
$LN3@Insert:

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

; 81   : 		{
; 82   : 			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

; 83   : 			this->m_vector[index] = obj;

	mov	eax, DWORD PTR _obj$[esp+16]
	mov	ecx, DWORD PTR [eax]
	mov	edx, DWORD PTR [esi+4]
	add	esp, 12					; 0000000cH
	mov	DWORD PTR [edx+edi*4], ecx

; 84   : 			this->m_items++;

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

; 85   : 		}
; 86   : 	}

	ret	8
?Insert@?$aVector@PAVHookBase@@@@UAEXIABQAVHookBase@@@Z ENDP ; aVector<HookBase *>::Insert
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Delete@?$aVector@PAVHookBase@@@@UAEXI@Z
_TEXT	SEGMENT
_index$ = 8						; size = 4
?Delete@?$aVector@PAVHookBase@@@@UAEXI@Z PROC		; aVector<HookBase *>::Delete, COMDAT
; _this$ = ecx

; 89   : 		if (index >= this->m_length)

	mov	edx, DWORD PTR _index$[esp-4]
	push	esi
	mov	esi, ecx
	mov	eax, DWORD PTR [esi+8]
	cmp	edx, eax
	jae	SHORT $LN2@Delete

; 90   : 			return;
; 91   : 		this->m_items--;

	add	DWORD PTR [esi+12], -1

; 92   : 		if (this->m_items == 0)

	jne	SHORT $LN3@Delete

; 93   : 			this->Clear();

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

; 99   : 		}
; 100  : 	}

	ret	4
$LN3@Delete:

; 94   : 		else
; 95   : 		{
; 96   : 			if (index < this->m_length)
; 97   : 				memmove(&this->m_vector[index], &this->m_vector[index +1], (this->m_length - index -1) * sizeof(T));

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

; 98   : 			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
$LN2@Delete:
	pop	esi

; 99   : 		}
; 100  : 	}

	ret	4
?Delete@?$aVector@PAVHookBase@@@@UAEXI@Z ENDP		; aVector<HookBase *>::Delete
_TEXT	ENDS
PUBLIC	?Index@?$aVector@PAVHookBase@@@@QAEHABQAVHookBase@@@Z ; aVector<HookBase *>::Index
; Function compile flags: /Ogtpy
;	COMDAT ?Index@?$aVector@PAVHookBase@@@@QAEHABQAVHookBase@@@Z
_TEXT	SEGMENT
_obj$ = 8						; size = 4
?Index@?$aVector@PAVHookBase@@@@QAEHABQAVHookBase@@@Z PROC ; aVector<HookBase *>::Index, COMDAT
; _this$ = ecx

; 102  : 	{

	mov	edx, DWORD PTR [ecx+12]

; 103  : 		for (unsigned int i = 0; i < this->m_items; i++)

	xor	eax, eax
	test	edx, edx
	push	esi
	jbe	SHORT $LN2@Index
	mov	esi, DWORD PTR _obj$[esp]
	mov	esi, DWORD PTR [esi]
	mov	ecx, DWORD PTR [ecx+4]
$LL4@Index:

; 104  : 		{
; 105  : 			if (this->m_vector[i] == obj)

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

; 106  : 				return i;
; 107  : 		}
; 108  : 		return -1;

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

; 109  : 	};

	ret	4
?Index@?$aVector@PAVHookBase@@@@QAEHABQAVHookBase@@@Z ENDP ; aVector<HookBase *>::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	??0?$allocator@D@std@@QAE@ABV01@@Z		; std::allocator<char>::allocator<char>
; Function compile flags: /Ogtpy
;	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	?GetInt@aRandom@@QAEJJJ@Z			; aRandom::GetInt
; Function compile flags: /Ogtpy
; File d:\source code\alib\include\arandom.h
;	COMDAT ?GetInt@aRandom@@QAEJJJ@Z
_TEXT	SEGMENT
_min$ = 8						; size = 4
_max$ = 12						; size = 4
?GetInt@aRandom@@QAEJJJ@Z PROC				; aRandom::GetInt, COMDAT
; _this$ = ecx

; 42   : 		return this->Get_Int(min, max);

	mov	eax, DWORD PTR _min$[esp-4]
	push	esi
	mov	esi, DWORD PTR _max$[esp]
	cmp	eax, esi
	je	SHORT $LN5@GetInt
	push	edi
	mov	edi, eax
	jle	SHORT $LN3@GetInt
	mov	edi, esi
	mov	esi, eax
$LN3@GetInt:
	mov	eax, DWORD PTR [ecx]
	cmp	eax, 64					; 00000040H
	lea	edx, DWORD PTR [eax+1]
	mov	DWORD PTR [ecx], edx
	jle	SHORT $LN7@GetInt
	mov	DWORD PTR [ecx], 1
$LN7@GetInt:
	mov	eax, DWORD PTR [ecx+4]
	imul	eax, 22695475				; 015a4e33H
	add	eax, DWORD PTR [ecx]
	sub	esi, edi
	mov	DWORD PTR [ecx+4], eax
	movzx	eax, WORD PTR [ecx+6]
	add	esi, 1
	xor	edx, edx
	div	esi
	mov	eax, edx
	add	eax, edi
	pop	edi
$LN5@GetInt:
	pop	esi

; 43   : 	};

	ret	8
?GetInt@aRandom@@QAEJJJ@Z ENDP				; aRandom::GetInt
_TEXT	ENDS
PUBLIC	??_7gzEventPlayerBandwidth@@6B@			; gzEventPlayerBandwidth::`vftable'
PUBLIC	??0gzEventPlayerBandwidth@@QAE@H@Z		; gzEventPlayerBandwidth::gzEventPlayerBandwidth
PUBLIC	??_R4gzEventPlayerBandwidth@@6B@		; gzEventPlayerBandwidth::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVgzEventPlayerBandwidth@@@8		; gzEventPlayerBandwidth `RTTI Type Descriptor'
PUBLIC	??_R3gzEventPlayerBandwidth@@8			; gzEventPlayerBandwidth::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2gzEventPlayerBandwidth@@8			; gzEventPlayerBandwidth::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@gzEventPlayerBandwidth@@8		; gzEventPlayerBandwidth::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?Skippable@gzEventPlayerBandwidth@@UAE_NXZ	; gzEventPlayerBandwidth::Skippable
;	COMDAT ??_R1A@?0A@EA@gzEventPlayerBandwidth@@8
; File d:\source code\gzgm\gzeventbase.h
rdata$r	SEGMENT
??_R1A@?0A@EA@gzEventPlayerBandwidth@@8 DD FLAT:??_R0?AVgzEventPlayerBandwidth@@@8 ; gzEventPlayerBandwidth::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	02H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3gzEventPlayerBandwidth@@8
rdata$r	ENDS
;	COMDAT ??_R2gzEventPlayerBandwidth@@8
rdata$r	SEGMENT
??_R2gzEventPlayerBandwidth@@8 DD FLAT:??_R1A@?0A@EA@gzEventPlayerBandwidth@@8 ; gzEventPlayerBandwidth::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzEventPlayerBase@@8
	DD	FLAT:??_R1A@?0A@EA@gzEventBase@@8
rdata$r	ENDS
;	COMDAT ??_R3gzEventPlayerBandwidth@@8
rdata$r	SEGMENT
??_R3gzEventPlayerBandwidth@@8 DD 00H			; gzEventPlayerBandwidth::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	03H
	DD	FLAT:??_R2gzEventPlayerBandwidth@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVgzEventPlayerBandwidth@@@8
_DATA	SEGMENT
??_R0?AVgzEventPlayerBandwidth@@@8 DD FLAT:??_7type_info@@6B@ ; gzEventPlayerBandwidth `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVgzEventPlayerBandwidth@@', 00H
_DATA	ENDS
;	COMDAT ??_R4gzEventPlayerBandwidth@@6B@
rdata$r	SEGMENT
??_R4gzEventPlayerBandwidth@@6B@ DD 00H			; gzEventPlayerBandwidth::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVgzEventPlayerBandwidth@@@8
	DD	FLAT:??_R3gzEventPlayerBandwidth@@8
rdata$r	ENDS
;	COMDAT ??_7gzEventPlayerBandwidth@@6B@
CONST	SEGMENT
??_7gzEventPlayerBandwidth@@6B@ DD FLAT:??_R4gzEventPlayerBandwidth@@6B@ ; gzEventPlayerBandwidth::`vftable'
	DD	FLAT:?CanContinue@gzEventPlayerBandwidth@@UAE_NXZ
	DD	FLAT:?Skippable@gzEventPlayerBandwidth@@UAE_NXZ
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0gzEventPlayerBandwidth@@QAE@H@Z
_TEXT	SEGMENT
_bandwidth$ = 8						; size = 4
??0gzEventPlayerBandwidth@@QAE@H@Z PROC			; gzEventPlayerBandwidth::gzEventPlayerBandwidth, COMDAT
; _this$ = ecx

; 186  : 	gzEventPlayerBandwidth(int bandwidth)

	fldz
	mov	eax, ecx
	or	ecx, -1
	fstp	QWORD PTR [eax+8]
	mov	DWORD PTR [eax+20], ecx
	mov	DWORD PTR [eax+24], ecx

; 187  : 	{
; 188  : 		this->m_bandwidth = bandwidth;

	mov	ecx, DWORD PTR _bandwidth$[esp-4]
	mov	DWORD PTR [eax+16], 0
	mov	DWORD PTR [eax], OFFSET ??_7gzEventPlayerBandwidth@@6B@
	mov	BYTE PTR [eax+44], 1
	mov	DWORD PTR [eax+40], ecx

; 189  : 	};

	ret	4
??0gzEventPlayerBandwidth@@QAE@H@Z ENDP			; gzEventPlayerBandwidth::gzEventPlayerBandwidth
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Skippable@gzEventPlayerBandwidth@@UAE_NXZ
_TEXT	SEGMENT
?Skippable@gzEventPlayerBandwidth@@UAE_NXZ PROC		; gzEventPlayerBandwidth::Skippable, COMDAT
; _this$ = ecx

; 195  : 	gzEVT_SKIPPABLE();

	mov	al, 1
	ret	0
?Skippable@gzEventPlayerBandwidth@@UAE_NXZ ENDP		; gzEventPlayerBandwidth::Skippable
_TEXT	ENDS
PUBLIC	??_7gzEventBhsPoke@@6B@				; gzEventBhsPoke::`vftable'
PUBLIC	??0gzEventBhsPoke@@QAE@PAVnc_PhysicalGameObj@@@Z ; gzEventBhsPoke::gzEventBhsPoke
PUBLIC	??_R4gzEventBhsPoke@@6B@			; gzEventBhsPoke::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVgzEventBhsPoke@@@8			; gzEventBhsPoke `RTTI Type Descriptor'
PUBLIC	??_R3gzEventBhsPoke@@8				; gzEventBhsPoke::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2gzEventBhsPoke@@8				; gzEventBhsPoke::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@gzEventBhsPoke@@8			; gzEventBhsPoke::`RTTI Base Class Descriptor at (0,-1,0,64)'
;	COMDAT ??_R1A@?0A@EA@gzEventBhsPoke@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@gzEventBhsPoke@@8 DD FLAT:??_R0?AVgzEventBhsPoke@@@8 ; gzEventBhsPoke::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	02H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3gzEventBhsPoke@@8
rdata$r	ENDS
;	COMDAT ??_R2gzEventBhsPoke@@8
rdata$r	SEGMENT
??_R2gzEventBhsPoke@@8 DD FLAT:??_R1A@?0A@EA@gzEventBhsPoke@@8 ; gzEventBhsPoke::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzEventBhsBase@@8
	DD	FLAT:??_R1A@?0A@EA@gzEventBase@@8
rdata$r	ENDS
;	COMDAT ??_R3gzEventBhsPoke@@8
rdata$r	SEGMENT
??_R3gzEventBhsPoke@@8 DD 00H				; gzEventBhsPoke::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	03H
	DD	FLAT:??_R2gzEventBhsPoke@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVgzEventBhsPoke@@@8
_DATA	SEGMENT
??_R0?AVgzEventBhsPoke@@@8 DD FLAT:??_7type_info@@6B@	; gzEventBhsPoke `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVgzEventBhsPoke@@', 00H
_DATA	ENDS
;	COMDAT ??_R4gzEventBhsPoke@@6B@
rdata$r	SEGMENT
??_R4gzEventBhsPoke@@6B@ DD 00H				; gzEventBhsPoke::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVgzEventBhsPoke@@@8
	DD	FLAT:??_R3gzEventBhsPoke@@8
rdata$r	ENDS
;	COMDAT ??_7gzEventBhsPoke@@6B@
CONST	SEGMENT
??_7gzEventBhsPoke@@6B@ DD FLAT:??_R4gzEventBhsPoke@@6B@ ; gzEventBhsPoke::`vftable'
	DD	FLAT:?CanContinue@gzEventBase@@UAE_NXZ
	DD	FLAT:?Skippable@gzEventBase@@UAE_NXZ
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0gzEventBhsPoke@@QAE@PAVnc_PhysicalGameObj@@@Z
_TEXT	SEGMENT
_pokedObj$ = 8						; size = 4
??0gzEventBhsPoke@@QAE@PAVnc_PhysicalGameObj@@@Z PROC	; gzEventBhsPoke::gzEventBhsPoke, COMDAT
; _this$ = ecx

; 339  : 	gzEventBhsPoke(nc_PhysicalGameObj *pokedObj)

	fldz
	mov	eax, ecx
	or	ecx, -1
	fstp	QWORD PTR [eax+8]
	mov	DWORD PTR [eax+20], ecx
	mov	DWORD PTR [eax+24], ecx

; 340  : 	{
; 341  : 		this->m_pokedObj = pokedObj;

	mov	ecx, DWORD PTR _pokedObj$[esp-4]
	mov	DWORD PTR [eax+16], 0
	mov	DWORD PTR [eax], OFFSET ??_7gzEventBhsPoke@@6B@
	mov	DWORD PTR [eax+40], ecx

; 342  : 	};

	ret	4
??0gzEventBhsPoke@@QAE@PAVnc_PhysicalGameObj@@@Z ENDP	; gzEventBhsPoke::gzEventBhsPoke
_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\alib\include\avector.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\gzhooks.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

; 36   : 	{
; 37   : 		this->m_name = name;

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

; 38   : 		this->m_address = Address;
; 39   : 		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

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

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

; 41   : 	};

	mov	eax, esi
	je	SHORT $LN3@HookBase
	mov	ecx, DWORD PTR ?m_list@gzHookManager@@2V?$aVector@PAVHookBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzHookManager@@2V?$aVector@PAVHookBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], esi
	add	DWORD PTR ?m_list@gzHookManager@@2V?$aVector@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

; 49   : 		return NULL;

	xor	eax, eax

; 50   : 	}

	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

; 53   : 		return NULL;

	xor	eax, eax

; 54   : 	}

	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

; 57   : 		return NULL;

	xor	eax, eax

; 58   : 	};

	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

; 43   : 	{

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

; 44   : 		if (gzHookManager::m_list.Index(this))

	mov	edx, DWORD PTR ?m_list@gzHookManager@@2V?$aVector@PAVHookBase@@@@A+12
	xor	eax, eax
	test	edx, edx
	push	esi
	mov	esi, DWORD PTR ?m_list@gzHookManager@@2V?$aVector@PAVHookBase@@@@A+4
	jbe	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
	jb	SHORT $LL7@HookBase@2

; 45   : 			gzHookManager::m_list.Delete(gzHookManager::m_list.Index(this));

	jmp	SHORT $LN22@HookBase@2

; 44   : 		if (gzHookManager::m_list.Index(this))

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

; 45   : 			gzHookManager::m_list.Delete(gzHookManager::m_list.Index(this));

	xor	eax, eax
	test	edx, edx
	jbe	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
	jb	SHORT $LL13@HookBase@2
$LN11@HookBase@2:
	or	eax, -1
$LN14@HookBase@2:
	push	eax
	mov	ecx, OFFSET ?m_list@gzHookManager@@2V?$aVector@PAVHookBase@@@@A ; gzHookManager::m_list
	call	?Delete@?$aVector@PAVHookBase@@@@UAEXI@Z ; aVector<HookBase *>::Delete
$LN1@HookBase@2:
	pop	esi

; 46   : 	};

	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$68515 = 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

; 65   : 	{

	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

; 66   : 		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$68515[esp+32], eax
	call	DWORD PTR __imp__ReadProcessMemory@20
	mov	edx, DWORD PTR _PHandle$68515[esp+12]
	push	edx
	call	DWORD PTR __imp__CloseHandle@4

; 67   : 		unsigned char call = 0xE8;
; 68   : 		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

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

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

; 71   : 	}

	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

; 73   : 	{

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

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

	xor	edi, edi
	push	ebx
	npad	1
$LL39@HookCallCl:

; 75   : 			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 $LL39@HookCallCl

; 76   : 	}

	mov	DWORD PTR [ebp], OFFSET ??_7HookBase@@6B@
	mov	edx, DWORD PTR ?m_list@gzHookManager@@2V?$aVector@PAVHookBase@@@@A+12
	mov	esi, DWORD PTR ?m_list@gzHookManager@@2V?$aVector@PAVHookBase@@@@A+4
	xor	eax, eax
	test	edx, edx
	pop	ebx
	jbe	SHORT $LN38@HookCallCl
$LL15@HookCallCl:
	cmp	DWORD PTR [esi+eax*4], ebp
	je	SHORT $LN16@HookCallCl
	add	eax, 1
	cmp	eax, edx
	jb	SHORT $LL15@HookCallCl
	jmp	SHORT $LN38@HookCallCl
$LN16@HookCallCl:
	test	eax, eax
	je	SHORT $LN25@HookCallCl
$LN38@HookCallCl:
	xor	eax, eax
	test	edx, edx
	jbe	SHORT $LN19@HookCallCl
	npad	3
$LL21@HookCallCl:
	cmp	DWORD PTR [esi+eax*4], ebp
	je	SHORT $LN22@HookCallCl
	add	eax, 1
	cmp	eax, edx
	jb	SHORT $LL21@HookCallCl
$LN19@HookCallCl:
	or	eax, -1
$LN22@HookCallCl:
	mov	ecx, DWORD PTR ?m_list@gzHookManager@@2V?$aVector@PAVHookBase@@@@A+8
	cmp	eax, ecx
	jae	SHORT $LN25@HookCallCl
	sub	edx, 1
	mov	DWORD PTR ?m_list@gzHookManager@@2V?$aVector@PAVHookBase@@@@A+12, edx
	jne	SHORT $LN26@HookCallCl
	mov	edx, DWORD PTR ?m_list@gzHookManager@@2V?$aVector@PAVHookBase@@@@A
	mov	eax, DWORD PTR [edx+4]
	pop	edi
	pop	esi
	mov	ecx, OFFSET ?m_list@gzHookManager@@2V?$aVector@PAVHookBase@@@@A ; gzHookManager::m_list
	pop	ebp
	jmp	eax
$LN26@HookCallCl:
	sub	ecx, eax
	lea	edx, DWORD PTR [esi+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?$aVector@PAVHookBase@@@@A+12
	mov	edx, DWORD PTR ?m_list@gzHookManager@@2V?$aVector@PAVHookBase@@@@A
	mov	eax, DWORD PTR [edx+8]
	add	esp, 12					; 0000000cH
	push	ecx
	mov	ecx, OFFSET ?m_list@gzHookManager@@2V?$aVector@PAVHookBase@@@@A ; gzHookManager::m_list
	call	eax
$LN25@HookCallCl:
	pop	edi
	pop	esi
	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$68613 = 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

; 88   : 	{

	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

; 89   : 		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$68613[esp+32], eax
	call	DWORD PTR __imp__ReadProcessMemory@20
	mov	edx, DWORD PTR _PHandle$68613[esp+12]
	push	edx
	call	DWORD PTR __imp__CloseHandle@4

; 90   : 		unsigned char jmp = 0xE9;
; 91   : 		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

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

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

; 94   : 	}

	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

; 96   : 	{

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

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

	xor	edi, edi
	push	ebx
	npad	1
$LL39@HookJumpCl:

; 98   : 			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 $LL39@HookJumpCl

; 99   : 	}

	mov	DWORD PTR [ebp], OFFSET ??_7HookBase@@6B@
	mov	edx, DWORD PTR ?m_list@gzHookManager@@2V?$aVector@PAVHookBase@@@@A+12
	mov	esi, DWORD PTR ?m_list@gzHookManager@@2V?$aVector@PAVHookBase@@@@A+4
	xor	eax, eax
	test	edx, edx
	pop	ebx
	jbe	SHORT $LN38@HookJumpCl
$LL15@HookJumpCl:
	cmp	DWORD PTR [esi+eax*4], ebp
	je	SHORT $LN16@HookJumpCl
	add	eax, 1
	cmp	eax, edx
	jb	SHORT $LL15@HookJumpCl
	jmp	SHORT $LN38@HookJumpCl
$LN16@HookJumpCl:
	test	eax, eax
	je	SHORT $LN25@HookJumpCl
$LN38@HookJumpCl:
	xor	eax, eax
	test	edx, edx
	jbe	SHORT $LN19@HookJumpCl
	npad	3
$LL21@HookJumpCl:
	cmp	DWORD PTR [esi+eax*4], ebp
	je	SHORT $LN22@HookJumpCl
	add	eax, 1
	cmp	eax, edx
	jb	SHORT $LL21@HookJumpCl
$LN19@HookJumpCl:
	or	eax, -1
$LN22@HookJumpCl:
	mov	ecx, DWORD PTR ?m_list@gzHookManager@@2V?$aVector@PAVHookBase@@@@A+8
	cmp	eax, ecx
	jae	SHORT $LN25@HookJumpCl
	sub	edx, 1
	mov	DWORD PTR ?m_list@gzHookManager@@2V?$aVector@PAVHookBase@@@@A+12, edx
	jne	SHORT $LN26@HookJumpCl
	mov	edx, DWORD PTR ?m_list@gzHookManager@@2V?$aVector@PAVHookBase@@@@A
	mov	eax, DWORD PTR [edx+4]
	pop	edi
	pop	esi
	mov	ecx, OFFSET ?m_list@gzHookManager@@2V?$aVector@PAVHookBase@@@@A ; gzHookManager::m_list
	pop	ebp
	jmp	eax
$LN26@HookJumpCl:
	sub	ecx, eax
	lea	edx, DWORD PTR [esi+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?$aVector@PAVHookBase@@@@A+12
	mov	edx, DWORD PTR ?m_list@gzHookManager@@2V?$aVector@PAVHookBase@@@@A
	mov	eax, DWORD PTR [edx+8]
	add	esp, 12					; 0000000cH
	push	ecx
	mov	ecx, OFFSET ?m_list@gzHookManager@@2V?$aVector@PAVHookBase@@@@A ; gzHookManager::m_list
	call	eax
$LN25@HookJumpCl:
	pop	edi
	pop	esi
	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

; 111  : 	{

	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

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

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

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

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

; 118  : 	}

	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

; 131  : 	{

	mov	eax, ecx

; 132  : 		return this;
; 133  : 	}

	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

; 126  : 	{

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

; 127  : 		//if (this->origBytes)
; 128  : 		//	delete this->origBytes;
; 129  : 	}

	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@_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\gzgm\gzeventbase.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\gzhooks.cpp
CONST	ENDS
;	COMDAT ?Hook_PlayerBandwidthChange@@YGXXZ
_TEXT	SEGMENT
_Bbo$ = -52						; size = 4
_evt$ = -48						; size = 48
?Hook_PlayerBandwidthChange@@YGXXZ PROC			; Hook_PlayerBandwidthChange, COMDAT

; 192  : void __stdcall Hook_PlayerBandwidthChange() {

	sub	esp, 52					; 00000034H

; 193  : 	nc_cClientBboEvent *Bbo;
; 194  : 	_asm {
; 195  : 		mov Bbo, ecx

	mov	DWORD PTR _Bbo$[esp+52], ecx

; 196  : 	}
; 197  : 	nc_cPlayer *pData = nc_cPlayerManager::Find_Player(Bbo->ID);

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

; 198  : 	if (!pData)
; 199  : 	{
; 200  : 		Bbo->Set_Delete_Pending();

	mov	ecx, DWORD PTR _Bbo$[esp+56]
	add	esp, 4
	test	eax, eax

; 201  : 		return;

	je	SHORT $LN22@Hook_Playe@3

; 202  : 	}
; 203  : 
; 204  : 	gzEventPlayerBandwidth evt(Bbo->Bandwidth);

	mov	ecx, DWORD PTR [ecx+1720]
	fldz

; 205  : 	evt.SetPlayer(pData);
; 206  : 	evt.SetEventType(gzEVT_PLAYER_BANDWIDTH);
; 207  : 	gzEvtHandler *retObj = gzEvtManager::ProcessEvent(evt);

	lea	edx, DWORD PTR _evt$[esp+52]
	fstp	QWORD PTR _evt$[esp+60]
	push	edx
	mov	DWORD PTR _evt$[esp+72], 0
	mov	DWORD PTR _evt$[esp+80], -1
	mov	DWORD PTR _evt$[esp+56], OFFSET ??_7gzEventPlayerBandwidth@@6B@
	mov	BYTE PTR _evt$[esp+100], 1
	mov	DWORD PTR _evt$[esp+96], ecx
	mov	DWORD PTR _evt$[esp+88], eax
	mov	DWORD PTR _evt$[esp+76], 8194		; 00002002H
	call	?ProcessEvent@gzEvtManager@@SAPAVgzEvtHandler@@AAVgzEventBase@@@Z ; gzEvtManager::ProcessEvent
	add	esp, 4

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

	cmp	BYTE PTR _evt$[esp+96], 0
	jne	SHORT $LN1@Hook_Playe@3

; 209  : 	{
; 210  : #if ISDEV()
; 211  : 		gzConsole::Out("[%s] BBO request refused by class \"%s\".\n", __FUNCTION__, retObj->GetName());

	mov	edx, DWORD PTR [eax]
	mov	ecx, eax
	mov	eax, DWORD PTR [edx+4]
	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

; 212  : #endif
; 213  : 		Bbo->Set_Delete_Pending();

	mov	ecx, DWORD PTR _Bbo$[esp+64]
	add	esp, 12					; 0000000cH
$LN22@Hook_Playe@3:
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+44]

; 214  : 		return;
; 215  : 	}
; 216  : 	Bbo->Act();

	call	eax

; 217  : }

	add	esp, 52					; 00000034H
	ret	0
$LN1@Hook_Playe@3:

; 214  : 		return;
; 215  : 	}
; 216  : 	Bbo->Act();

	mov	ecx, DWORD PTR _Bbo$[esp+52]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+104]
	call	eax

; 217  : }

	add	esp, 52					; 00000034H
	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	??_C@_01CBDEGOCN@j?$AA@				; `string'
PUBLIC	?Proc_cCsTextObj@@YG_NPAVnc_cCsTextObj@@@Z	; Proc_cCsTextObj
EXTRN	??4aWideString@@QAEAAV0@ABV0@@Z:PROC		; aWideString::operator=
EXTRN	?ToDouble@aToken@@QAENXZ:PROC			; aToken::ToDouble
EXTRN	?GetData@aToken@@QAEABVaString@@XZ:PROC		; aToken::GetData
EXTRN	??0aString@@QAE@PBD@Z:PROC			; aString::aString
EXTRN	?Find@gzPlayerManager@@SAPAVgzPlayer@@H@Z:PROC	; gzPlayerManager::Find
EXTRN	??1aToken@@QAE@XZ:PROC				; aToken::~aToken
EXTRN	?Find_PhysicalGameObj@nc_GameObjManager@@SAPAVnc_PhysicalGameObj@@H@Z:PROC ; nc_GameObjManager::Find_PhysicalGameObj
EXTRN	?ToLong@aToken@@QAEJXZ:PROC			; aToken::ToLong
EXTRN	?gettok@aToken@@QAE?AV1@HE@Z:PROC		; aToken::gettok
EXTRN	??0aToken@@QAE@ABVaString@@@Z:PROC		; aToken::aToken
EXTRN	??0aString@@QAE@PB_W@Z:PROC			; aString::aString
;	COMDAT ??_C@_0DD@FIPLDCGK@?$FL?$CFs?$FN?5Chat?5message?5from?5?$CFls?5refus@
; File d:\source code\alib\include\astring.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 ??_C@_01CBDEGOCN@j?$AA@
CONST	SEGMENT
??_C@_01CBDEGOCN@j?$AA@ DB 'j', 00H			; `string'
CONST	ENDS
;	COMDAT xdata$x
xdata$x	SEGMENT
__ehfuncinfo$?Proc_cCsTextObj@@YG_NPAVnc_cCsTextObj@@@Z DD 019930522H
	DD	0dH
	DD	FLAT:__unwindtable$?Proc_cCsTextObj@@YG_NPAVnc_cCsTextObj@@@Z
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	01H
__unwindtable$?Proc_cCsTextObj@@YG_NPAVnc_cCsTextObj@@@Z DD 0ffffffffH
	DD	FLAT:__unwindfunclet$?Proc_cCsTextObj@@YG_NPAVnc_cCsTextObj@@@Z$0
	DD	00H
	DD	FLAT:__unwindfunclet$?Proc_cCsTextObj@@YG_NPAVnc_cCsTextObj@@@Z$1
	DD	0ffffffffH
	DD	FLAT:__unwindfunclet$?Proc_cCsTextObj@@YG_NPAVnc_cCsTextObj@@@Z$1
	DD	02H
	DD	FLAT:__unwindfunclet$?Proc_cCsTextObj@@YG_NPAVnc_cCsTextObj@@@Z$2
	DD	0ffffffffH
	DD	FLAT:__unwindfunclet$?Proc_cCsTextObj@@YG_NPAVnc_cCsTextObj@@@Z$3
	DD	04H
	DD	FLAT:__unwindfunclet$?Proc_cCsTextObj@@YG_NPAVnc_cCsTextObj@@@Z$4
	DD	0ffffffffH
	DD	FLAT:__unwindfunclet$?Proc_cCsTextObj@@YG_NPAVnc_cCsTextObj@@@Z$4
	DD	06H
	DD	FLAT:__unwindfunclet$?Proc_cCsTextObj@@YG_NPAVnc_cCsTextObj@@@Z$5
	DD	07H
	DD	FLAT:__unwindfunclet$?Proc_cCsTextObj@@YG_NPAVnc_cCsTextObj@@@Z$6
	DD	06H
	DD	FLAT:__unwindfunclet$?Proc_cCsTextObj@@YG_NPAVnc_cCsTextObj@@@Z$7
	DD	06H
	DD	FLAT:__unwindfunclet$?Proc_cCsTextObj@@YG_NPAVnc_cCsTextObj@@@Z$8
	DD	0ffffffffH
	DD	FLAT:__unwindfunclet$?Proc_cCsTextObj@@YG_NPAVnc_cCsTextObj@@@Z$9
	DD	0bH
	DD	FLAT:__unwindfunclet$?Proc_cCsTextObj@@YG_NPAVnc_cCsTextObj@@@Z$10
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzhooks.cpp
xdata$x	ENDS
;	COMDAT ?Proc_cCsTextObj@@YG_NPAVnc_cCsTextObj@@@Z
_TEXT	SEGMENT
_verMsg$58726 = -152					; size = 4
_pokeMsg$58716 = -152					; size = 4
$T68784 = -148						; size = 4
$T68783 = -148						; size = 4
$T68782 = -148						; size = 4
$T68777 = -148						; size = 4
$T68779 = -144						; size = 8
$T68776 = -144						; size = 8
$T68786 = -136						; size = 8
$T68781 = -136						; size = 8
_evt$58735 = -128					; size = 48
_evt$58722 = -128					; size = 48
_evt$ = -80						; size = 64
__$EHRec$ = -12						; size = 12
_TextObj$ = 8						; size = 4
?Proc_cCsTextObj@@YG_NPAVnc_cCsTextObj@@@Z PROC		; Proc_cCsTextObj, COMDAT

; 257  : {

	push	ebp
	mov	ebp, esp
	and	esp, -8					; fffffff8H
	mov	eax, DWORD PTR fs:0
	push	-1
	push	__ehhandler$?Proc_cCsTextObj@@YG_NPAVnc_cCsTextObj@@@Z
	push	eax
	mov	DWORD PTR fs:0, esp
	sub	esp, 144				; 00000090H
	push	ebx
	push	esi

; 258  : 	if (TextObj->Type == 2)

	mov	esi, DWORD PTR _TextObj$[ebp]
	cmp	DWORD PTR [esi+1720], 2
	push	edi
	jne	$LN3@Proc_cCsTe

; 259  : 	{
; 260  : 		// Poke
; 261  : 		if (TextObj->Receiver == -2)

	mov	eax, DWORD PTR [esi+1728]
	cmp	eax, -2					; fffffffeH
	jne	$LN6@Proc_cCsTe

; 262  : 		{
; 263  : 			aToken pokeMsg(TextObj->Message.m_Buffer);

	mov	eax, DWORD PTR [esi+1724]
	push	eax
	lea	ecx, DWORD PTR $T68776[esp+172]
	call	??0aString@@QAE@PB_W@Z			; aString::aString
	lea	ecx, DWORD PTR $T68776[esp+168]
	push	ecx
	xor	ebx, ebx
	lea	ecx, DWORD PTR _pokeMsg$58716[esp+172]
	mov	DWORD PTR __$EHRec$[esp+180], ebx
	call	??0aToken@@QAE@ABVaString@@@Z		; aToken::aToken
	lea	ecx, DWORD PTR $T68776[esp+168]
	mov	BYTE PTR __$EHRec$[esp+176], 2
	call	??1aStringBase@@UAE@XZ			; aStringBase::~aStringBase

; 264  : 			nc_PhysicalGameObj *pokedObj = nc_GameObjManager::Find_PhysicalGameObj(pokeMsg.gettok(2, '\n').ToLong());

	push	10					; 0000000aH
	push	2
	lea	edx, DWORD PTR $T68777[esp+176]
	push	edx
	lea	ecx, DWORD PTR _pokeMsg$58716[esp+180]
	call	?gettok@aToken@@QAE?AV1@HE@Z		; aToken::gettok
	mov	ecx, eax
	mov	BYTE PTR __$EHRec$[esp+176], 3
	call	?ToLong@aToken@@QAEJXZ			; aToken::ToLong
	push	eax
	call	?Find_PhysicalGameObj@nc_GameObjManager@@SAPAVnc_PhysicalGameObj@@H@Z ; nc_GameObjManager::Find_PhysicalGameObj
	add	esp, 4
	lea	ecx, DWORD PTR $T68777[esp+168]
	mov	edi, eax
	mov	BYTE PTR __$EHRec$[esp+176], 2
	call	??1aToken@@QAE@XZ			; aToken::~aToken

; 265  : 			gzPlayer *gzData = gzPlayerManager::Find(TextObj->Sender);

	mov	eax, DWORD PTR [esi+1716]
	push	eax
	call	?Find@gzPlayerManager@@SAPAVgzPlayer@@H@Z ; gzPlayerManager::Find
	add	esp, 4

; 266  : 			if (pokedObj && gzData)

	cmp	edi, ebx
	je	$LN2@Proc_cCsTe
	cmp	eax, ebx
	je	$LN2@Proc_cCsTe

; 267  : 			{
; 268  : 				gzEventBhsPoke evt(pokedObj);

	fldz

; 269  : 				evt.SetEventType(gzEVT_BHS_POKE);
; 270  : 				evt.SetPlayer(gzData);
; 271  : 				gzEvtManager::ProcessEvent(evt);

	lea	ecx, DWORD PTR _evt$58722[esp+168]
	or	esi, -1
	fstp	QWORD PTR _evt$58722[esp+176]
	push	ecx
	mov	DWORD PTR _evt$58722[esp+188], ebx
	mov	DWORD PTR _evt$58722[esp+196], esi
	mov	DWORD PTR _evt$58722[esp+172], OFFSET ??_7gzEventBhsPoke@@6B@
	mov	DWORD PTR _evt$58722[esp+212], edi
	mov	DWORD PTR _evt$58722[esp+192], 20480	; 00005000H
	mov	DWORD PTR _evt$58722[esp+204], eax
	call	?ProcessEvent@gzEvtManager@@SAPAVgzEvtHandler@@AAVgzEventBase@@@Z ; gzEvtManager::ProcessEvent
	add	esp, 4

; 272  : 				return true;

	lea	ecx, DWORD PTR _pokeMsg$58716[esp+168]
	mov	DWORD PTR __$EHRec$[esp+176], esi
	call	??1aToken@@QAE@XZ			; aToken::~aToken
	jmp	$LN88@Proc_cCsTe
$LN6@Proc_cCsTe:

; 273  : 			}
; 274  : 		}
; 275  : 		else if (TextObj->Receiver == -3)

	cmp	eax, -3					; fffffffdH
	jne	$LN3@Proc_cCsTe

; 276  : 		{
; 277  : 			aToken verMsg(TextObj->Message.m_Buffer);

	mov	edx, DWORD PTR [esi+1724]
	push	edx
	lea	ecx, DWORD PTR $T68779[esp+172]
	call	??0aString@@QAE@PB_W@Z			; aString::aString
	lea	eax, DWORD PTR $T68779[esp+168]
	push	eax
	lea	ecx, DWORD PTR _verMsg$58726[esp+172]
	mov	DWORD PTR __$EHRec$[esp+180], 4
	call	??0aToken@@QAE@ABVaString@@@Z		; aToken::aToken
	lea	ecx, DWORD PTR $T68779[esp+168]
	mov	BYTE PTR __$EHRec$[esp+176], 6
	call	??1aStringBase@@UAE@XZ			; aStringBase::~aStringBase

; 278  : 
; 279  : 			// Client bhs.dll version
; 280  : 			if (verMsg.gettok(1, '\n').GetData() == "j")

	push	OFFSET ??_C@_01CBDEGOCN@j?$AA@
	lea	ecx, DWORD PTR $T68781[esp+172]
	call	??0aString@@QAE@PBD@Z			; aString::aString
	push	10					; 0000000aH
	push	1
	lea	ecx, DWORD PTR $T68782[esp+176]
	push	ecx
	lea	ecx, DWORD PTR _verMsg$58726[esp+180]
	mov	BYTE PTR __$EHRec$[esp+188], 7
	call	?gettok@aToken@@QAE?AV1@HE@Z		; aToken::gettok
	lea	edx, DWORD PTR $T68781[esp+168]
	push	edx
	mov	ecx, eax
	mov	BYTE PTR __$EHRec$[esp+180], 8
	call	?GetData@aToken@@QAEABVaString@@XZ	; aToken::GetData
	push	eax
	call	??8@YA_NABVaString@@0@Z			; operator==
	add	esp, 8
	lea	ecx, DWORD PTR $T68782[esp+168]
	mov	bl, al
	mov	BYTE PTR __$EHRec$[esp+176], 7
	call	??1aToken@@QAE@XZ			; aToken::~aToken
	lea	ecx, DWORD PTR $T68781[esp+168]
	mov	BYTE PTR __$EHRec$[esp+176], 6
	call	??1aStringBase@@UAE@XZ			; aStringBase::~aStringBase
	test	bl, bl
	je	$LN2@Proc_cCsTe

; 281  : 			{
; 282  : 				gzEventBhsVersion evt((float)verMsg.gettok(3, '\n').ToDouble());

	push	10					; 0000000aH
	push	3
	lea	eax, DWORD PTR $T68783[esp+176]
	push	eax
	lea	ecx, DWORD PTR _verMsg$58726[esp+180]
	call	?gettok@aToken@@QAE?AV1@HE@Z		; aToken::gettok
	mov	ecx, eax
	mov	BYTE PTR __$EHRec$[esp+176], 9
	call	?ToDouble@aToken@@QAENXZ		; aToken::ToDouble
	fldz
	fstp	QWORD PTR _evt$58735[esp+176]
	or	esi, -1
	lea	ecx, DWORD PTR $T68783[esp+168]
	mov	DWORD PTR _evt$58735[esp+184], 0
	fstp	DWORD PTR _evt$58735[esp+208]
	mov	DWORD PTR _evt$58735[esp+188], esi
	mov	DWORD PTR _evt$58735[esp+192], esi
	mov	DWORD PTR _evt$58735[esp+168], OFFSET ??_7gzEventBhsVersion@@6B@
	mov	BYTE PTR __$EHRec$[esp+176], 6
	call	??1aToken@@QAE@XZ			; aToken::~aToken

; 283  : 				evt.SetEventType(gzEVT_BHS_VERSION);
; 284  : 				evt.SetInt(verMsg.gettok(2, '\n').ToLong());

	push	10					; 0000000aH
	push	2
	lea	ecx, DWORD PTR $T68784[esp+176]
	push	ecx
	lea	ecx, DWORD PTR _verMsg$58726[esp+180]
	mov	DWORD PTR _evt$58735[esp+200], 20481	; 00005001H
	call	?gettok@aToken@@QAE?AV1@HE@Z		; aToken::gettok
	mov	ecx, eax
	mov	BYTE PTR __$EHRec$[esp+176], 10		; 0000000aH
	call	?ToLong@aToken@@QAEJXZ			; aToken::ToLong
	lea	ecx, DWORD PTR $T68784[esp+168]
	mov	DWORD PTR _evt$58735[esp+184], eax
	mov	BYTE PTR __$EHRec$[esp+176], 6
	call	??1aToken@@QAE@XZ			; aToken::~aToken

; 285  : 				gzEvtManager::ProcessEvent(evt);

	lea	edx, DWORD PTR _evt$58735[esp+168]
	push	edx
	call	?ProcessEvent@gzEvtManager@@SAPAVgzEvtHandler@@AAVgzEventBase@@@Z ; gzEvtManager::ProcessEvent
	add	esp, 4

; 286  : 				return true;

	lea	ecx, DWORD PTR _verMsg$58726[esp+168]
	mov	DWORD PTR __$EHRec$[esp+176], esi
	call	??1aToken@@QAE@XZ			; aToken::~aToken
	jmp	$LN88@Proc_cCsTe
$LN2@Proc_cCsTe:

; 287  : 			}
; 288  : 		}

	lea	ecx, DWORD PTR _verMsg$58726[esp+168]
	mov	DWORD PTR __$EHRec$[esp+176], -1
	call	??1aToken@@QAE@XZ			; aToken::~aToken
$LN3@Proc_cCsTe:

; 289  : 	}
; 290  : 	gzEventPlayerChat evt;

	fldz
	or	eax, -1
	lea	ecx, DWORD PTR _evt$[esp+212]
	fstp	QWORD PTR _evt$[esp+176]
	mov	DWORD PTR _evt$[esp+184], 0
	mov	DWORD PTR _evt$[esp+188], eax
	mov	DWORD PTR _evt$[esp+192], eax
	mov	DWORD PTR _evt$[esp+168], OFFSET ??_7gzEventPlayerChat@@6B@
	call	??0aWideString@@QAE@XZ			; aWideString::aWideString
	mov	BYTE PTR _evt$[esp+228], 1

; 291  : 	evt.m_sender = TextObj->Sender;

	mov	eax, DWORD PTR [esi+1716]

; 292  : 	evt.m_receiver = TextObj->Receiver;

	mov	ecx, DWORD PTR [esi+1728]

; 293  : 	evt.m_type = TextObj->Type;

	mov	edx, DWORD PTR [esi+1720]
	mov	DWORD PTR _evt$[esp+220], eax

; 294  : 	evt.m_message = TextObj->Message.m_Buffer;

	mov	eax, DWORD PTR [esi+1724]
	lea	edi, DWORD PTR [esi+1724]
	mov	DWORD PTR _evt$[esp+224], ecx
	mov	ebx, 11					; 0000000bH
	push	eax
	lea	ecx, DWORD PTR $T68786[esp+172]
	mov	DWORD PTR __$EHRec$[esp+180], ebx
	mov	DWORD PTR _evt$[esp+212], edx
	call	??0aWideString@@QAE@PB_W@Z		; aWideString::aWideString
	lea	ecx, DWORD PTR $T68786[esp+168]
	push	ecx
	lea	ecx, DWORD PTR _evt$[esp+216]
	mov	BYTE PTR __$EHRec$[esp+180], 12		; 0000000cH
	call	??4aWideString@@QAEAAV0@ABV0@@Z		; aWideString::operator=
	lea	ecx, DWORD PTR $T68786[esp+168]
	mov	BYTE PTR __$EHRec$[esp+176], bl
	call	??1aStringBase@@UAE@XZ			; aStringBase::~aStringBase

; 295  : 	evt.SetEventType(gzEVT_PLAYER_CHAT);
; 296  : 	gzEvtHandler *retObj = gzEvtManager::ProcessEvent(evt);

	lea	edx, DWORD PTR _evt$[esp+168]
	push	edx
	mov	DWORD PTR _evt$[esp+192], 8195		; 00002003H
	call	?ProcessEvent@gzEvtManager@@SAPAVgzEvtHandler@@AAVgzEventBase@@@Z ; gzEvtManager::ProcessEvent
	add	esp, 4

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

	cmp	BYTE PTR _evt$[esp+228], 0
	jne	SHORT $LN1@Proc_cCsTe

; 298  : 	{
; 299  : #if ISDEV()
; 300  : 		gzConsole::Out("[%s] Chat message from %ls refused by class \"%s\".\n",
; 301  : 			__FUNCTION__,
; 302  : 			nc_cPlayerManager::Find_Player(TextObj->Sender)->PlayerName.m_Buffer,
; 303  : 			retObj->GetName()
; 304  : 		);

	mov	edx, DWORD PTR [eax]
	mov	ecx, eax
	mov	eax, DWORD PTR [edx+4]
	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

; 305  : #endif
; 306  : 		TextObj->Set_Delete_Pending();

	mov	eax, DWORD PTR [esi]
	mov	edx, DWORD PTR [eax+44]
	add	esp, 16					; 00000010H
	mov	ecx, esi
	call	edx

; 307  : 		return false;

	lea	ecx, DWORD PTR _evt$[esp+212]
	mov	DWORD PTR __$EHRec$[esp+176], -1
	call	??1aStringBase@@UAE@XZ			; aStringBase::~aStringBase
	xor	al, al

; 317  : }

	mov	ecx, DWORD PTR __$EHRec$[esp+168]
	mov	DWORD PTR fs:0, ecx
	pop	edi
	pop	esi
	pop	ebx
	mov	esp, ebp
	pop	ebp
	ret	4
$LN1@Proc_cCsTe:

; 308  : 	}
; 309  : 
; 310  : 	TextObj->Sender		= evt.m_sender;
; 311  : 	TextObj->Receiver	= evt.m_receiver;

	mov	ecx, DWORD PTR _evt$[esp+224]
	mov	eax, DWORD PTR _evt$[esp+220]

; 312  : 	TextObj->Type		= evt.m_type;

	mov	edx, DWORD PTR _evt$[esp+208]
	mov	DWORD PTR [esi+1728], ecx

; 313  : 	TextObj->Message.Resize(evt.m_message.GetLength() + 1);

	lea	ecx, DWORD PTR _evt$[esp+212]
	mov	DWORD PTR [esi+1716], eax
	mov	DWORD PTR [esi+1720], edx
	call	?GetLength@aStringBase@@QBEIXZ		; aStringBase::GetLength
	add	eax, 1
	push	eax
	mov	ecx, edi
	call	?Resize@nc_WideStringClass@@QAEXH@Z	; nc_WideStringClass::Resize

; 314  : 	TextObj->Message.Format(L"%ls", evt.m_message.GetString());

	mov	eax, DWORD PTR _evt$[esp+216]
	test	eax, eax
	je	SHORT $LN76@Proc_cCsTe
	mov	eax, DWORD PTR [eax]
	jmp	SHORT $LN77@Proc_cCsTe
$LN76@Proc_cCsTe:
	xor	eax, eax
$LN77@Proc_cCsTe:
	push	eax
	push	OFFSET ??_C@_17CNPHIMPH@?$AA?$CF?$AAl?$AAs?$AA?$AA@
	push	edi
	call	?Format@nc_WideStringClass@@QAAXPB_WZZ	; nc_WideStringClass::Format
	add	esp, 12					; 0000000cH

; 315  : 
; 316  : 	return true;

	lea	ecx, DWORD PTR _evt$[esp+212]
	mov	DWORD PTR __$EHRec$[esp+176], -1
	call	??1aStringBase@@UAE@XZ			; aStringBase::~aStringBase
$LN88@Proc_cCsTe:

; 317  : }

	mov	ecx, DWORD PTR __$EHRec$[esp+168]
	pop	edi
	pop	esi
	mov	al, 1
	mov	DWORD PTR fs:0, ecx
	pop	ebx
	mov	esp, ebp
	pop	ebp
	ret	4
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$?Proc_cCsTextObj@@YG_NPAVnc_cCsTextObj@@@Z$0:
	lea	ecx, DWORD PTR $T68776[ebp]
	jmp	??1aString@@UAE@XZ
__unwindfunclet$?Proc_cCsTextObj@@YG_NPAVnc_cCsTextObj@@@Z$1:
	lea	ecx, DWORD PTR _pokeMsg$58716[ebp]
	jmp	??1aToken@@QAE@XZ			; aToken::~aToken
__unwindfunclet$?Proc_cCsTextObj@@YG_NPAVnc_cCsTextObj@@@Z$2:
	lea	ecx, DWORD PTR $T68777[ebp]
	jmp	??1aToken@@QAE@XZ			; aToken::~aToken
__unwindfunclet$?Proc_cCsTextObj@@YG_NPAVnc_cCsTextObj@@@Z$3:
	lea	ecx, DWORD PTR $T68779[ebp]
	jmp	??1aString@@UAE@XZ
__unwindfunclet$?Proc_cCsTextObj@@YG_NPAVnc_cCsTextObj@@@Z$4:
	lea	ecx, DWORD PTR _verMsg$58726[ebp]
	jmp	??1aToken@@QAE@XZ			; aToken::~aToken
__unwindfunclet$?Proc_cCsTextObj@@YG_NPAVnc_cCsTextObj@@@Z$5:
	lea	ecx, DWORD PTR $T68781[ebp]
	jmp	??1aString@@UAE@XZ
__unwindfunclet$?Proc_cCsTextObj@@YG_NPAVnc_cCsTextObj@@@Z$6:
	lea	ecx, DWORD PTR $T68782[ebp]
	jmp	??1aToken@@QAE@XZ			; aToken::~aToken
__unwindfunclet$?Proc_cCsTextObj@@YG_NPAVnc_cCsTextObj@@@Z$7:
	lea	ecx, DWORD PTR $T68783[ebp]
	jmp	??1aToken@@QAE@XZ			; aToken::~aToken
__unwindfunclet$?Proc_cCsTextObj@@YG_NPAVnc_cCsTextObj@@@Z$8:
	lea	ecx, DWORD PTR $T68784[ebp]
	jmp	??1aToken@@QAE@XZ			; aToken::~aToken
__unwindfunclet$?Proc_cCsTextObj@@YG_NPAVnc_cCsTextObj@@@Z$9:
	lea	ecx, DWORD PTR _evt$[ebp]
	jmp	??1gzEventPlayerChat@@QAE@XZ
__unwindfunclet$?Proc_cCsTextObj@@YG_NPAVnc_cCsTextObj@@@Z$10:
	lea	ecx, DWORD PTR $T68786[ebp]
	jmp	??1aWideString@@UAE@XZ
__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

; 320  : 	_asm {
; 321  : 		push esi

	push	esi

; 322  : 		push esi

	push	esi

; 323  : 		call Proc_cCsTextObj

	call	?Proc_cCsTextObj@@YG_NPAVnc_cCsTextObj@@@Z ; Proc_cCsTextObj

; 324  : 		pop esi

	pop	esi

; 325  : 		test al, al

	test	al, al

; 326  : 		jz no_chat

	je	SHORT $no_chat$58752

; 327  : 		mov ecx, esi

	mov	ecx, esi

; 328  : 		mov edx, [esi]

	mov	edx, DWORD PTR [esi]

; 329  : 		call [edx+0x68]

	call	DWORD PTR [edx+104]
$no_chat$58752:

; 330  : no_chat:
; 331  : 		mov edi, 0x4B5D96

	mov	edi, 4939158				; 004b5d96H

; 332  : 		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\gzgm\gzeventbase.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\gzhooks.cpp
CONST	ENDS
;	COMDAT ?Proc_Radio@@YG_NPAVnc_CSAnnouncement@@@Z
_TEXT	SEGMENT
_evt$ = -64						; size = 64
_Radio$ = 8						; size = 4
?Proc_Radio@@YG_NPAVnc_CSAnnouncement@@@Z PROC		; Proc_Radio, COMDAT

; 338  : {

	sub	esp, 64					; 00000040H

; 339  : 	gzEventPlayerRadio evt;

	fldz
	push	esi

; 340  : 	evt.m_team = Radio->Team;

	mov	esi, DWORD PTR _Radio$[esp+64]
	fstp	QWORD PTR _evt$[esp+76]

; 341  : 	evt.m_sender = Radio->Sender;
; 342  : 	evt.m_key = Radio->Key;

	mov	edx, DWORD PTR [esi+1728]
	mov	eax, DWORD PTR [esi+1716]
	mov	ecx, DWORD PTR [esi+1720]
	mov	DWORD PTR _evt$[esp+120], edx
	mov	DWORD PTR _evt$[esp+108], eax

; 343  : 	evt.m_radioID = Radio->RadioID;

	mov	eax, DWORD PTR [esi+1724]
	mov	DWORD PTR _evt$[esp+112], ecx

; 344  : 	evt.m_toTeamOnly = Radio->SendToTeamOnly;

	mov	cl, BYTE PTR [esi+1732]

; 345  : 	evt.SetEventType(gzEVT_PLAYER_RADIO);
; 346  : 	gzEvtHandler *retObj = gzEvtManager::ProcessEvent(evt);

	lea	edx, DWORD PTR _evt$[esp+68]
	push	edx
	mov	DWORD PTR _evt$[esp+88], 0
	mov	DWORD PTR _evt$[esp+96], -1
	mov	DWORD PTR _evt$[esp+72], OFFSET ??_7gzEventPlayerRadio@@6B@
	mov	BYTE PTR _evt$[esp+129], 1
	mov	DWORD PTR _evt$[esp+120], eax
	mov	BYTE PTR _evt$[esp+128], cl
	mov	DWORD PTR _evt$[esp+92], 8196		; 00002004H
	call	?ProcessEvent@gzEvtManager@@SAPAVgzEvtHandler@@AAVgzEventBase@@@Z ; gzEvtManager::ProcessEvent
	add	esp, 4

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

	cmp	BYTE PTR _evt$[esp+125], 0
	jne	SHORT $LN1@Proc_Radio

; 348  : 	{
; 349  : #if ISDEV()
; 350  : 		gzConsole::Out("[%s] Radio from %ls refused by class \"%s\".\n",
; 351  : 			__FUNCTION__,
; 352  : 			nc_cPlayerManager::Find_Player(Radio->Sender)->PlayerName.m_Buffer,
; 353  : 			retObj->GetName()
; 354  : 		);

	mov	edx, DWORD PTR [eax]
	mov	ecx, eax
	mov	eax, DWORD PTR [edx+4]
	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

; 355  : #endif
; 356  : 		Radio->Set_Delete_Pending();

	mov	eax, DWORD PTR [esi]
	mov	edx, DWORD PTR [eax+44]
	add	esp, 16					; 00000010H
	mov	ecx, esi
	call	edx

; 357  : 		return false;

	xor	al, al
	pop	esi

; 367  : }

	add	esp, 64					; 00000040H
	ret	4
$LN1@Proc_Radio:

; 358  : 	}
; 359  : 
; 360  : 	Radio->Team				= evt.m_team;

	mov	eax, DWORD PTR _evt$[esp+108]

; 361  : 	Radio->Sender			= evt.m_sender;

	mov	ecx, DWORD PTR _evt$[esp+112]

; 362  : 	Radio->Key				= evt.m_key;

	mov	edx, DWORD PTR _evt$[esp+120]
	mov	DWORD PTR [esi+1716], eax

; 363  : 	Radio->RadioID			= evt.m_radioID;

	mov	eax, DWORD PTR _evt$[esp+116]
	mov	DWORD PTR [esi+1720], ecx

; 364  : 	Radio->SendToTeamOnly	= evt.m_toTeamOnly;

	mov	cl, BYTE PTR _evt$[esp+124]
	mov	DWORD PTR [esi+1724], eax
	mov	DWORD PTR [esi+1728], edx
	mov	BYTE PTR [esi+1732], cl

; 365  : 
; 366  : 	return true;

	mov	al, 1
	pop	esi

; 367  : }

	add	esp, 64					; 00000040H
	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

; 370  : 	_asm {
; 371  : 		push ecx

	push	ecx

; 372  : 		push esi

	push	esi

; 373  : 		call Proc_Radio

	call	?Proc_Radio@@YG_NPAVnc_CSAnnouncement@@@Z ; Proc_Radio

; 374  : 		test al, al

	test	al, al

; 375  : 		pop ecx

	pop	ecx

; 376  : 		jz no_radio

	je	SHORT $no_radio$58772

; 377  : 		mov edx, [esi]

	mov	edx, DWORD PTR [esi]

; 378  : 		call [edx+0x68]

	call	DWORD PTR [edx+104]
$no_radio$58772:

; 379  : no_radio:
; 380  : 		pop edi

	pop	edi

; 381  : 		pop esi

	pop	esi

; 382  : 		retn 4

	ret	4
?Hook_Radio@@YAXXZ ENDP					; Hook_Radio
_TEXT	ENDS
PUBLIC	?Hook_SerialHash@@YGXXZ				; Hook_SerialHash
EXTRN	??4aString@@QAEAAV0@ABV0@@Z:PROC		; aString::operator=
;	COMDAT xdata$x
; File d:\source code\alib\include\astring.h
xdata$x	SEGMENT
__unwindtable$?Hook_SerialHash@@YGXXZ DD 0ffffffffH
	DD	FLAT:__unwindfunclet$?Hook_SerialHash@@YGXXZ$0
	DD	00H
	DD	FLAT:__unwindfunclet$?Hook_SerialHash@@YGXXZ$1
__ehfuncinfo$?Hook_SerialHash@@YGXXZ DD 019930522H
	DD	02H
	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\gzhooks.cpp
xdata$x	ENDS
;	COMDAT ?Hook_SerialHash@@YGXXZ
_TEXT	SEGMENT
_GameSpy$ = -76						; size = 4
_packet$ = -72						; size = 4
$T68980 = -68						; size = 8
_evt$58875 = -60					; size = 48
__$EHRec$ = -12						; size = 12
?Hook_SerialHash@@YGXXZ PROC				; Hook_SerialHash, COMDAT

; 439  : {

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

; 440  : 	nc_cPacket *packet;
; 441  : 	nc_cGameSpyCsChallengeResponseEvent *GameSpy;
; 442  : 	_asm
; 443  : 	{
; 444  : 		mov GameSpy, esi

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

; 445  : 		mov packet, edi

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

; 446  : 	}
; 447  : 	nc_cPlayer *pData = nc_cPlayerManager::Find_Player(GameSpy->ID);

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

; 448  : 	if (pData)

	test	esi, esi
	je	$LN1@Hook_Seria

; 449  : 	{
; 450  : 		gzEventPlayerSerialHash evt;

	fldz
	lea	ecx, DWORD PTR _evt$58875[esp+120]
	fstp	QWORD PTR _evt$58875[esp+88]
	mov	DWORD PTR _evt$58875[esp+96], 0
	mov	DWORD PTR _evt$58875[esp+100], -1
	mov	DWORD PTR _evt$58875[esp+104], -1
	mov	DWORD PTR _evt$58875[esp+80], OFFSET ??_7gzEventPlayerSerialHash@@6B@
	call	??0aString@@QAE@XZ			; aString::aString

; 451  : 		evt.SetPlayer(pData);
; 452  : 		evt.m_hash = GameSpy->Hash.m_Buffer;

	mov	edx, DWORD PTR _GameSpy$[esp+80]
	mov	DWORD PTR _evt$58875[esp+112], esi
	mov	eax, DWORD PTR [edx+1720]
	push	eax
	lea	ecx, DWORD PTR $T68980[esp+84]
	mov	DWORD PTR __$EHRec$[esp+92], 0
	call	??0aString@@QAE@PBD@Z			; aString::aString
	lea	ecx, DWORD PTR $T68980[esp+80]
	push	ecx
	lea	ecx, DWORD PTR _evt$58875[esp+124]
	mov	BYTE PTR __$EHRec$[esp+92], 1
	call	??4aString@@QAEAAV0@ABV0@@Z		; aString::operator=
	lea	ecx, DWORD PTR $T68980[esp+80]
	mov	BYTE PTR __$EHRec$[esp+88], 0
	call	??1aStringBase@@UAE@XZ			; aStringBase::~aStringBase

; 453  : 		evt.SetEventType(gzEVT_PLAYER_SERIALHASH);
; 454  : 		gzEvtManager::ProcessEvent(evt);

	lea	edx, DWORD PTR _evt$58875[esp+80]
	push	edx
	mov	DWORD PTR _evt$58875[esp+104], 8199	; 00002007H
	call	?ProcessEvent@gzEvtManager@@SAPAVgzEvtHandler@@AAVgzEventBase@@@Z ; gzEvtManager::ProcessEvent
	add	esp, 4

; 455  : 	}

	lea	ecx, DWORD PTR _evt$58875[esp+120]
	mov	DWORD PTR __$EHRec$[esp+88], -1
	call	??1aStringBase@@UAE@XZ			; aStringBase::~aStringBase
$LN1@Hook_Seria:

; 456  : 	GameSpy->Act();

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

; 457  : }

	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$?Hook_SerialHash@@YGXXZ$0:
	lea	ecx, DWORD PTR _evt$58875[ebp]
	jmp	??1gzEventPlayerSerialHash@@QAE@XZ
__unwindfunclet$?Hook_SerialHash@@YGXXZ$1:
	lea	ecx, DWORD PTR $T68980[ebp]
	jmp	??1aString@@UAE@XZ
__ehhandler$?Hook_SerialHash@@YGXXZ:
	mov	eax, OFFSET __ehfuncinfo$?Hook_SerialHash@@YGXXZ
	jmp	___CxxFrameHandler3
text$x	ENDS
?Hook_SerialHash@@YGXXZ ENDP				; Hook_SerialHash
PUBLIC	??_7gzEventObjectDamage@@6B@			; gzEventObjectDamage::`vftable'
PUBLIC	??0gzEventObjectDamage@@QAE@XZ			; gzEventObjectDamage::gzEventObjectDamage
PUBLIC	??_R4gzEventObjectDamage@@6B@			; gzEventObjectDamage::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVgzEventObjectDamage@@@8			; gzEventObjectDamage `RTTI Type Descriptor'
PUBLIC	??_R3gzEventObjectDamage@@8			; gzEventObjectDamage::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2gzEventObjectDamage@@8			; gzEventObjectDamage::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@gzEventObjectDamage@@8		; gzEventObjectDamage::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?Skippable@gzEventObjectDamage@@UAE_NXZ		; gzEventObjectDamage::Skippable
;	COMDAT ??_R1A@?0A@EA@gzEventObjectDamage@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@gzEventObjectDamage@@8 DD FLAT:??_R0?AVgzEventObjectDamage@@@8 ; gzEventObjectDamage::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	02H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3gzEventObjectDamage@@8
rdata$r	ENDS
;	COMDAT ??_R2gzEventObjectDamage@@8
rdata$r	SEGMENT
??_R2gzEventObjectDamage@@8 DD FLAT:??_R1A@?0A@EA@gzEventObjectDamage@@8 ; gzEventObjectDamage::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzEventObjectBase@@8
	DD	FLAT:??_R1A@?0A@EA@gzEventBase@@8
rdata$r	ENDS
;	COMDAT ??_R3gzEventObjectDamage@@8
rdata$r	SEGMENT
??_R3gzEventObjectDamage@@8 DD 00H			; gzEventObjectDamage::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	03H
	DD	FLAT:??_R2gzEventObjectDamage@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVgzEventObjectDamage@@@8
_DATA	SEGMENT
??_R0?AVgzEventObjectDamage@@@8 DD FLAT:??_7type_info@@6B@ ; gzEventObjectDamage `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVgzEventObjectDamage@@', 00H
_DATA	ENDS
;	COMDAT ??_R4gzEventObjectDamage@@6B@
rdata$r	SEGMENT
??_R4gzEventObjectDamage@@6B@ DD 00H			; gzEventObjectDamage::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVgzEventObjectDamage@@@8
	DD	FLAT:??_R3gzEventObjectDamage@@8
rdata$r	ENDS
;	COMDAT ??_7gzEventObjectDamage@@6B@
CONST	SEGMENT
??_7gzEventObjectDamage@@6B@ DD FLAT:??_R4gzEventObjectDamage@@6B@ ; gzEventObjectDamage::`vftable'
	DD	FLAT:?CanContinue@gzEventObjectDamage@@UAE_NXZ
	DD	FLAT:?Skippable@gzEventObjectDamage@@UAE_NXZ
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0gzEventObjectDamage@@QAE@XZ
_TEXT	SEGMENT
??0gzEventObjectDamage@@QAE@XZ PROC			; gzEventObjectDamage::gzEventObjectDamage, COMDAT
; _this$ = ecx
	fldz
	mov	eax, ecx
	or	ecx, -1
	fstp	QWORD PTR [eax+8]
	mov	DWORD PTR [eax+16], 0
	mov	DWORD PTR [eax+20], ecx
	mov	DWORD PTR [eax+24], ecx
	mov	DWORD PTR [eax], OFFSET ??_7gzEventObjectDamage@@6B@
	mov	BYTE PTR [eax+48], 1
	ret	0
??0gzEventObjectDamage@@QAE@XZ ENDP			; gzEventObjectDamage::gzEventObjectDamage
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzeventbase.h
_TEXT	ENDS
;	COMDAT ?Skippable@gzEventObjectDamage@@UAE_NXZ
_TEXT	SEGMENT
?Skippable@gzEventObjectDamage@@UAE_NXZ PROC		; gzEventObjectDamage::Skippable, COMDAT
; _this$ = ecx

; 228  : 	gzEVT_SKIPPABLE();

	mov	al, 1
	ret	0
?Skippable@gzEventObjectDamage@@UAE_NXZ ENDP		; gzEventObjectDamage::Skippable
_TEXT	ENDS
PUBLIC	__real@4f800000
PUBLIC	??_C@_0EC@OCMBFMIK@?$FLPurchaseHook?$FN?5Purchase?5refused?5@ ; `string'
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 __real@4f800000
; File d:\source code\fds lib\new\fds_def.h
CONST	SEGMENT
__real@4f800000 DD 04f800000r			; 4.29497e+009
CONST	ENDS
;	COMDAT ??_C@_0EC@OCMBFMIK@?$FLPurchaseHook?$FN?5Purchase?5refused?5@
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'
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzhooks.cpp
CONST	ENDS
;	COMDAT ?Hook_PlayerPurchase@@YGXXZ
_TEXT	SEGMENT
tv665 = -88						; size = 2
_ResponseType$ = -88					; size = 4
_Request$ = -84						; size = 4
_packet$ = -80						; size = 4
tv662 = -76						; size = 4
$T69119 = -76						; size = 4
tv660 = -72						; size = 8
tv649 = -72						; size = 4
tv623 = -72						; size = 4
$T69132 = -72						; size = 4
_evt$ = -64						; size = 64
?Hook_PlayerPurchase@@YGXXZ PROC			; Hook_PlayerPurchase, COMDAT

; 496  : void __stdcall Hook_PlayerPurchase() {

	sub	esp, 88					; 00000058H
	push	ebx
	push	ebp
	push	esi
	push	edi

; 497  : 	nc_cPacket *packet;
; 498  : 	nc_cPurchaseRequestEvent *Request;
; 499  : 	_asm {
; 500  : 		mov Request, esi

	mov	DWORD PTR _Request$[esp+104], esi

; 501  : 		mov packet, edi

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

; 502  : 	}
; 503  : 	nc_cPlayer *pData = nc_cPlayerManager::Find_Player(Request->ID);

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

; 504  : 	if (!pData || !pData->Owner.Reference)

	xor	ebp, ebp
	add	esp, 4
	cmp	ebx, ebp
	je	$LN27@Hook_Playe@4
	cmp	DWORD PTR [ebx+20], ebp
	je	$LN27@Hook_Playe@4

; 507  : 		return;
; 508  : 	}
; 509  : 
; 510  : 	gzEventPlayerPurchase evt;

	fldz

; 511  : 	evt.SetPlayer(pData);
; 512  : 	evt.SetInt(Request->Type);

	mov	edx, DWORD PTR _Request$[esp+104]
	or	esi, -1
	fstp	QWORD PTR _evt$[esp+112]
	mov	DWORD PTR _evt$[esp+120], ebp
	mov	DWORD PTR _evt$[esp+124], esi
	mov	DWORD PTR _evt$[esp+128], esi
	mov	DWORD PTR _evt$[esp+104], OFFSET ??_7gzEventPlayerPurchase@@6B@
	mov	BYTE PTR _evt$[esp+164], 1
	mov	DWORD PTR _evt$[esp+136], ebx
	mov	eax, DWORD PTR [edx+1720]

; 513  : 	evt.m_base			= nc_BaseControllerClass::Find_Base(pData->PlayerType.Get());

	lea	ecx, DWORD PTR [ebx+1900]
	mov	DWORD PTR _evt$[esp+120], eax
	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+148], eax
	add	esp, 4

; 514  : 	evt.m_originalCost	= 0;
; 515  : 	evt.m_cost			= 0;
; 516  : 	evt.m_presetId		= 0;
; 517  : 	nc_VendorClass::Get_Merchandise_Information(pData->Owner.Reference->obj->As_SoldierGameObj(), Request->Type, Request->Item, Request->Alt_Id, evt.m_originalCost, evt.m_presetId);

	lea	edx, DWORD PTR _evt$[esp+156]
	push	edx
	mov	DWORD PTR _evt$[esp+152], ebp
	mov	DWORD PTR _evt$[esp+156], ebp
	mov	DWORD PTR _evt$[esp+160], ebp
	mov	ecx, DWORD PTR [ebx+20]
	mov	ecx, DWORD PTR [ecx+4]
	lea	eax, DWORD PTR _evt$[esp+152]
	push	eax
	mov	eax, DWORD PTR _Request$[esp+112]
	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

; 518  : 
; 519  : 	// Powerups doesn't need to duplicate the price if Power Plant is down
; 520  : 	if (Request->Type != PURCHASE_POWERUP)

	mov	ecx, DWORD PTR _Request$[esp+128]
	add	esp, 24					; 00000018H
	cmp	DWORD PTR [ecx+1720], 3
	je	SHORT $LN75@Hook_Playe@4

; 521  : 		evt.m_originalCost	*= (int)evt.m_base->OperationTimeFactor;

	mov	edx, DWORD PTR _evt$[esp+144]
	fnstcw	WORD PTR tv665[esp+104]
	movzx	eax, WORD PTR tv665[esp+104]
	fld	DWORD PTR [edx+1716]
	or	eax, 3072				; 00000c00H
	mov	DWORD PTR tv662[esp+104], eax
	fldcw	WORD PTR tv662[esp+104]
	fistp	QWORD PTR tv660[esp+104]
	mov	eax, DWORD PTR tv660[esp+104]
	imul	eax, DWORD PTR _evt$[esp+148]
	fldcw	WORD PTR tv665[esp+104]
	mov	DWORD PTR _evt$[esp+148], eax
	jmp	SHORT $LN26@Hook_Playe@4
$LN75@Hook_Playe@4:
	mov	eax, DWORD PTR _evt$[esp+148]
$LN26@Hook_Playe@4:

; 522  : 
; 523  : 	evt.m_cost			= evt.m_originalCost;

	mov	DWORD PTR _evt$[esp+152], eax

; 524  : 	evt.m_retCode		= -1;
; 525  : 	evt.SetEventType(gzEVT_PLAYER_PURCHASE);
; 526  : 	gzEvtHandler *retObj = gzEvtManager::ProcessEvent(evt);

	lea	eax, DWORD PTR _evt$[esp+104]
	push	eax
	mov	DWORD PTR _evt$[esp+164], esi
	mov	DWORD PTR _evt$[esp+128], 8201		; 00002009H
	call	?ProcessEvent@gzEvtManager@@SAPAVgzEvtHandler@@AAVgzEventBase@@@Z ; gzEvtManager::ProcessEvent
	add	esp, 4

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

	cmp	BYTE PTR _evt$[esp+164], 0
	jne	SHORT $LN24@Hook_Playe@4

; 528  : 	{
; 529  : 		if (!evt.CanContinue())
; 530  : 		{
; 531  : #ifdef DEVMSG
; 532  : 			gzConsole::Out("[PurchaseHook] Purchase refused in \"%s\". Code: %d; Purchaser %ls\n",
; 533  : 				retObj->GetName(),
; 534  : 				evt.m_retCode,
; 535  : 				pData->PlayerName.m_Buffer
; 536  : 			);

	mov	ecx, DWORD PTR [ebx+1880]
	mov	edx, DWORD PTR _evt$[esp+160]
	push	ecx
	push	edx
	mov	edx, DWORD PTR [eax]
	mov	ecx, eax
	mov	eax, DWORD PTR [edx+4]
	call	eax
	push	eax
	push	OFFSET ??_C@_0EC@OCMBFMIK@?$FLPurchaseHook?$FN?5Purchase?5refused?5@
	call	?Out@gzConsole@@SAXPBDZZ		; gzConsole::Out

; 537  : #endif
; 538  : 			Send_Purchase_Response(pData->PlayerId, evt.m_retCode);

	mov	ecx, DWORD PTR _evt$[esp+176]
	mov	edx, DWORD PTR [ebx+1884]
	push	ecx
	push	edx
	call	?Send_Purchase_Response@@YAXHH@Z	; Send_Purchase_Response
	add	esp, 24					; 00000018H
	pop	edi
	pop	esi
	pop	ebp
	pop	ebx

; 620  : }

	add	esp, 88					; 00000058H
	ret	0
$LN24@Hook_Playe@4:

; 539  : 			return;
; 540  : 		}
; 541  : 	}
; 542  : 
; 543  : 	int ResponseType = 0;
; 544  : 
; 545  : 	// Not enough credits
; 546  : 	if (evt.m_cost > 0 && pData->Money.Get() < evt.m_cost)

	cmp	DWORD PTR _evt$[esp+152], ebp
	mov	DWORD PTR _ResponseType$[esp+104], ebp
	jbe	SHORT $LN23@Hook_Playe@4
	lea	ecx, DWORD PTR [ebx+8]
	call	?Get@nc_FloatDataSafeClass@@QAEMXZ	; nc_FloatDataSafeClass::Get
	fild	DWORD PTR _evt$[esp+152]
	mov	eax, DWORD PTR _evt$[esp+152]
	test	eax, eax
	jge	SHORT $LN80@Hook_Playe@4
	fadd	DWORD PTR __real@4f800000
$LN80@Hook_Playe@4:
	fcompp
	fnstsw	ax
	test	ah, 65					; 00000041H
	jne	SHORT $LN23@Hook_Playe@4

; 547  : 		ResponseType = 2;

	mov	DWORD PTR _ResponseType$[esp+104], 2
	jmp	$LN1@Hook_Playe@4
$LN23@Hook_Playe@4:

; 548  : 
; 549  : 	// Preset does not exist
; 550  : 	else if (evt.m_presetId != 0 && !nc_DefinitionMgrClass::Find_Definition(evt.m_presetId, true))

	mov	eax, DWORD PTR _evt$[esp+156]
	cmp	eax, ebp
	je	SHORT $LN78@Hook_Playe@4
	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 $LN78@Hook_Playe@4
$LN82@Hook_Playe@4:

; 551  : 		ResponseType = 4;

	mov	DWORD PTR _ResponseType$[esp+104], 4

; 552  : 
; 553  : 	else

	jmp	$LN1@Hook_Playe@4
$LN78@Hook_Playe@4:

; 554  : 	{
; 555  : 		nc_SoldierGameObj *Soldier = evt.GetPlayer()->Owner.Reference->obj->As_SoldierGameObj();

	mov	ecx, DWORD PTR _evt$[esp+136]
	mov	edx, DWORD PTR [ecx+20]
	mov	ecx, DWORD PTR [edx+4]
	mov	eax, DWORD PTR [ecx]
	mov	edx, DWORD PTR [eax+68]
	call	edx

; 556  : 		nc_BuildingGameObj *vehFactory = evt.m_base->Find_Building(nc_VEHICLE_FACTORY);

	mov	ecx, DWORD PTR _evt$[esp+144]
	push	2
	mov	esi, eax
	call	?Find_Building@nc_BaseControllerClass@@QAEPAVnc_BuildingGameObj@@W4BuildingType@@@Z ; nc_BaseControllerClass::Find_Building
	mov	edi, eax

; 557  : 		switch (Request->Type)

	mov	eax, DWORD PTR _Request$[esp+104]
	mov	eax, DWORD PTR [eax+1720]
	cmp	eax, 6
	ja	$LN74@Hook_Playe@4
	jmp	DWORD PTR $LN83@Hook_Playe@4[eax*4]
$LN17@Hook_Playe@4:

; 558  : 		{
; 559  : 			case PURCHASE_INFANTRY:
; 560  : 			case PURCHASE_SECRET_INFANTRY:
; 561  : 				if (evt.m_base->Find_Building(nc_SOLDIER_FACTORY)->Destroyed)

	mov	ecx, DWORD PTR _evt$[esp+144]
	push	1
	call	?Find_Building@nc_BaseControllerClass@@QAEPAVnc_BuildingGameObj@@W4BuildingType@@@Z ; nc_BaseControllerClass::Find_Building
	cmp	BYTE PTR [eax+1912], 0
	je	SHORT $LN16@Hook_Playe@4
$LN77@Hook_Playe@4:

; 562  : 				{
; 563  : 					ResponseType = 3;

	mov	DWORD PTR _ResponseType$[esp+104], 3

; 564  : 					break;

	jmp	$LN1@Hook_Playe@4
$LN16@Hook_Playe@4:

; 565  : 				}
; 566  : 
; 567  : 				// Block secret-characters purchase
; 568  : 				if (Request->Type == PURCHASE_SECRET_INFANTRY && cGame->IsLaddered)

	mov	ecx, DWORD PTR _Request$[esp+104]
	cmp	DWORD PTR [ecx+1720], 5
	jne	SHORT $LN79@Hook_Playe@4
	mov	edx, DWORD PTR ?cGame@@3AAPAVnc_cGameData@@A ; cGame
	mov	eax, DWORD PTR [edx]
	cmp	BYTE PTR [eax+15], 0

; 569  : 				{
; 570  : 					ResponseType = 4;
; 571  : 					break;

	jne	$LN82@Hook_Playe@4
$LN79@Hook_Playe@4:

; 572  : 				}
; 573  : 			case PURCHASE_FREE_INFANTRY:
; 574  : 				Soldier->Re_Init(*(nc_SoldierGameObjDef *)nc_DefinitionMgrClass::Find_Definition(evt.m_presetId, true));

	mov	ecx, DWORD PTR _evt$[esp+156]
	push	1
	push	ecx
	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

; 575  : 				Soldier->Post_Re_Init();

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

; 576  : 				break;

	jmp	$LN74@Hook_Playe@4
$LN13@Hook_Playe@4:

; 577  : 
; 578  : 			case PURCHASE_SECRET_VEHICLE:
; 579  : 				if (!vehFactory->As_VehicleFactoryGameObj())

	mov	edx, DWORD PTR [edi]
	mov	eax, DWORD PTR [edx+120]
	mov	ecx, edi
	call	eax
	test	eax, eax

; 580  : 				{
; 581  : 					ResponseType = 4;
; 582  : 					break;

	je	$LN82@Hook_Playe@4

; 583  : 				}
; 584  : 				if (cGame->IsLaddered)

	mov	ecx, DWORD PTR ?cGame@@3AAPAVnc_cGameData@@A ; cGame
	mov	edx, DWORD PTR [ecx]
	cmp	BYTE PTR [edx+15], 0

; 585  : 				{
; 586  : 					ResponseType = 4;
; 587  : 					break;

	jne	$LN82@Hook_Playe@4
$LN76@Hook_Playe@4:

; 588  : 				}
; 589  : 			case PURCHASE_VEHICLE:
; 590  : 				if (!vehFactory || vehFactory->Destroyed || vehFactory->As_VehicleFactoryGameObj()->IsGenerating)

	cmp	edi, ebp
	je	SHORT $LN77@Hook_Playe@4
	cmp	BYTE PTR [edi+1912], 0
	jne	$LN77@Hook_Playe@4
	mov	eax, DWORD PTR [edi]
	mov	edx, DWORD PTR [eax+120]
	mov	ecx, edi
	call	edx
	cmp	BYTE PTR [eax+2224], 0
	jne	$LN77@Hook_Playe@4

; 591  : 				{
; 592  : 					ResponseType = 3;
; 593  : 					break;
; 594  : 				}
; 595  : 				vehFactory->As_VehicleFactoryGameObj()->Request_Vehicle(evt.m_presetId, 5.0f, Soldier);

	mov	eax, DWORD PTR _evt$[esp+156]
	fld	DWORD PTR __real@40a00000
	mov	edx, DWORD PTR [edi]
	push	esi
	push	ecx
	fstp	DWORD PTR [esp]
	push	eax
	mov	eax, DWORD PTR [edx+120]
	mov	ecx, edi
	call	eax
	mov	ecx, eax
	call	?Request_Vehicle@nc_VehicleFactoryGameObj@@QAEXHMPAVnc_SoldierGameObj@@@Z ; nc_VehicleFactoryGameObj::Request_Vehicle

; 596  : 				break;

	jmp	$LN74@Hook_Playe@4
$LN7@Hook_Playe@4:

; 597  : 
; 598  : 			case PURCHASE_POWERUP:
; 599  : 				((nc_PowerUpGameObjDef *)nc_DefinitionMgrClass::Find_Definition(evt.m_presetId, true))->Grant(Soldier, NULL, true);

	mov	ecx, DWORD PTR _evt$[esp+156]
	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

; 600  : 				break;

	jmp	$LN74@Hook_Playe@4
$LN6@Hook_Playe@4:

; 601  : 
; 602  : 			case PURCHASE_REFILL:
; 603  : 				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	$LN3@Hook_Playe@4
	npad	1
$LL5@Hook_Playe@4:

; 604  : 				{
; 605  : 					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@4
	mov	edx, DWORD PTR [esi+1968]
	mov	eax, DWORD PTR [edx+8]

; 606  : 					{
; 607  : 						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 $T69119[esp+104], eax
	mov	eax, DWORD PTR [ebp]
	lea	edx, DWORD PTR $T69119[esp+104]
	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]

; 608  : 						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 $T69132[esp+104]
	push	ecx
	add	edx, 36					; 00000024H
	push	edx
	mov	DWORD PTR $T69132[esp+112], eax
	call	?Set@nc_IntDataSafeClass@@QAG_NAAH@Z	; nc_IntDataSafeClass::Set
	xor	ebp, ebp
$LN4@Hook_Playe@4:
	mov	eax, DWORD PTR [esi+1968]
	add	edi, 1
	cmp	edi, DWORD PTR [eax+20]
	jl	SHORT $LL5@Hook_Playe@4
$LN3@Hook_Playe@4:

; 609  : 					}
; 610  : 				}
; 611  : 				Soldier->Defense.Health = Soldier->Defense.HealthMax;

	lea	eax, DWORD PTR [esi+1844]
	push	eax
	lea	ecx, DWORD PTR [esi+1840]
	call	??4nc_FloatDataSafeClass@@QAEXAAV0@@Z	; nc_FloatDataSafeClass::operator=

; 612  : 				Soldier->Defense.ShieldStrength = Soldier->Defense.ShieldStrengthMax;

	lea	ecx, DWORD PTR [esi+1856]
	push	ecx
	lea	ecx, DWORD PTR [esi+1852]
	call	??4nc_FloatDataSafeClass@@QAEXAAV0@@Z	; nc_FloatDataSafeClass::operator=

; 613  : 				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
$LN74@Hook_Playe@4:

; 614  : 				break;
; 615  : 		}
; 616  : 		if (ResponseType == 0 && evt.m_cost > 0)

	mov	eax, DWORD PTR _evt$[esp+152]
	cmp	eax, ebp
	jbe	SHORT $LN1@Hook_Playe@4

; 617  : 			pData->Increment_Money(-(float)evt.m_cost);

	test	eax, eax
	mov	edx, DWORD PTR [ebx]
	mov	DWORD PTR tv623[esp+104], eax
	fild	DWORD PTR tv623[esp+104]
	jge	SHORT $LN81@Hook_Playe@4
	fadd	DWORD PTR __real@4f800000
$LN81@Hook_Playe@4:
	mov	eax, DWORD PTR [edx+16]
	fchs
	push	ecx
	mov	ecx, ebx
	fstp	DWORD PTR [esp]
	call	eax
$LN1@Hook_Playe@4:

; 618  : 	}
; 619  : 	Send_Purchase_Response(Request->ID, ResponseType);

	mov	ecx, DWORD PTR _ResponseType$[esp+104]
	mov	edx, DWORD PTR _Request$[esp+104]
	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

; 620  : }

	add	esp, 88					; 00000058H
	ret	0
$LN27@Hook_Playe@4:

; 505  : 	{
; 506  : 		Request->Set_Delete_Pending();

	mov	ecx, DWORD PTR _Request$[esp+104]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+44]
	call	eax
	pop	edi
	pop	esi
	pop	ebp
	pop	ebx

; 620  : }

	add	esp, 88					; 00000058H
	ret	0
$LN83@Hook_Playe@4:
	DD	$LN17@Hook_Playe@4
	DD	$LN76@Hook_Playe@4
	DD	$LN79@Hook_Playe@4
	DD	$LN7@Hook_Playe@4
	DD	$LN6@Hook_Playe@4
	DD	$LN17@Hook_Playe@4
	DD	$LN13@Hook_Playe@4
?Hook_PlayerPurchase@@YGXXZ ENDP			; Hook_PlayerPurchase
_TEXT	ENDS
PUBLIC	?Proc_CreateObjectByID@@YGPAVnc_PersistClass@@K@Z ; Proc_CreateObjectByID
;	COMDAT xdata$x
; File d:\source code\fds lib\new\fds_string.h
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\gzhooks.cpp
xdata$x	ENDS
;	COMDAT ?Proc_CreateObjectByID@@YGPAVnc_PersistClass@@K@Z
_TEXT	SEGMENT
_evt$ = -52						; size = 40
__$EHRec$ = -12						; size = 12
_ErrorMsg$ = 8						; size = 4
_ID$ = 8						; size = 4
?Proc_CreateObjectByID@@YGPAVnc_PersistClass@@K@Z PROC	; Proc_CreateObjectByID, COMDAT

; 628  : {

	mov	eax, DWORD PTR fs:0
	push	-1
	push	__ehhandler$?Proc_CreateObjectByID@@YGPAVnc_PersistClass@@K@Z
	push	eax
	mov	DWORD PTR fs:0, esp

; 629  : 	nc_DefinitionClass *Definition = nc_DefinitionMgrClass::Find_Definition(ID, true);

	mov	eax, DWORD PTR _ID$[esp+8]
	sub	esp, 40					; 00000028H
	push	esi
	push	1
	push	eax
	call	?Find_Definition@nc_DefinitionMgrClass@@SAPAVnc_DefinitionClass@@K_N@Z ; nc_DefinitionMgrClass::Find_Definition
	mov	esi, eax
	add	esp, 8

; 630  : 	if (!Definition)

	test	esi, esi

; 631  : 		return 0;

	je	$LN22@Proc_Creat@2

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

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

; 634  : 	if (VerifyID != 0x3000)

	cmp	ecx, 12288				; 00003000H

; 635  : 		return NULL;

	jne	SHORT $LN22@Proc_Creat@2

; 636  : 	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+52], edx

; 637  : 	ErrorMsg.Get_String(0, false);

	push	0
	push	0
	lea	ecx, DWORD PTR _ErrorMsg$[esp+60]
	mov	DWORD PTR __$EHRec$[esp+72], 0
	call	?Get_String@nc_StringClass@@QAEXH_N@Z	; nc_StringClass::Get_String

; 638  : 	if (!Definition->Is_Valid_Config(ErrorMsg.m_Buffer))

	mov	ecx, DWORD PTR _ErrorMsg$[esp+52]
	mov	eax, DWORD PTR [esi]
	mov	edx, DWORD PTR [eax+56]
	push	ecx
	mov	ecx, esi
	call	edx
	test	al, al
	jne	SHORT $LN1@Proc_Creat@2

; 639  : 	{
; 640  : 		gzConsole::Out("Error creating object %s: %s\n",Definition->Get_Name(), ErrorMsg.m_Buffer);

	mov	eax, DWORD PTR _ErrorMsg$[esp+52]
	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

; 641  : 		ErrorMsg.Free_String();

	lea	ecx, DWORD PTR _ErrorMsg$[esp+52]
	call	?Free_String@nc_StringClass@@QAEXXZ	; nc_StringClass::Free_String

; 642  : 		return NULL;

	lea	ecx, DWORD PTR _ErrorMsg$[esp+52]
	mov	DWORD PTR __$EHRec$[esp+64], -1
	call	?Free_String@nc_StringClass@@QAEXXZ	; nc_StringClass::Free_String
$LN22@Proc_Creat@2:
	xor	eax, eax
	pop	esi

; 653  : }

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

; 643  : 	}
; 644  : 	ErrorMsg.Free_String();

	lea	ecx, DWORD PTR _ErrorMsg$[esp+52]
	call	?Free_String@nc_StringClass@@QAEXXZ	; nc_StringClass::Free_String

; 645  : 	nc_PersistClass *NewObject = Definition->Create();

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

; 646  : 
; 647  : 	gzEventObjectCreate evt;

	fldz

; 648  : 	evt.m_obj = gzStatic_Cast(nc_ScriptableGameObj, NewObject);
; 649  : 	evt.SetEventType(gzEVT_OBJECT_CREATE);
; 650  : 	gzEvtManager::ProcessEvent(evt);

	lea	ecx, DWORD PTR _evt$[esp+56]
	fstp	QWORD PTR _evt$[esp+64]
	mov	esi, eax
	push	ecx
	mov	DWORD PTR _evt$[esp+76], 0
	mov	DWORD PTR _evt$[esp+84], -1
	mov	DWORD PTR _evt$[esp+60], OFFSET ??_7gzEventObjectCreate@@6B@
	mov	DWORD PTR _evt$[esp+92], esi
	mov	DWORD PTR _evt$[esp+80], 12288		; 00003000H
	call	?ProcessEvent@gzEvtManager@@SAPAVgzEvtHandler@@AAVgzEventBase@@@Z ; gzEvtManager::ProcessEvent
	add	esp, 4

; 651  : 
; 652  : 	return NewObject;

	lea	ecx, DWORD PTR _ErrorMsg$[esp+52]
	mov	DWORD PTR __$EHRec$[esp+64], -1
	call	?Free_String@nc_StringClass@@QAEXXZ	; nc_StringClass::Free_String

; 653  : }

	mov	ecx, DWORD PTR __$EHRec$[esp+56]
	mov	eax, esi
	pop	esi
	mov	DWORD PTR fs:0, ecx
	add	esp, 52					; 00000034H
	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

; 656  : 	_asm {
; 657  : 		push ebp

	push	ebp

; 658  : 		mov ebp, esp

	mov	ebp, esp

; 659  : 		push ID

	push	DWORD PTR _ID$[ebp]

; 660  : 		call Proc_CreateObjectByID

	call	?Proc_CreateObjectByID@@YGPAVnc_PersistClass@@K@Z ; Proc_CreateObjectByID

; 661  : 		mov esp, ebp

	mov	esp, ebp

; 662  : 		pop ebp

	pop	ebp

; 663  : 		retn

	ret	0
?Hook_CreateObjectByID@@YAXK@Z ENDP			; Hook_CreateObjectByID
_TEXT	ENDS
PUBLIC	?Proc_ObjReInit@@YGXPAVnc_ScriptableGameObj@@@Z	; Proc_ObjReInit
; Function compile flags: /Ogtpy
;	COMDAT ?Proc_ObjReInit@@YGXPAVnc_ScriptableGameObj@@@Z
_TEXT	SEGMENT
_evt$ = -40						; size = 40
_obj$ = 8						; size = 4
?Proc_ObjReInit@@YGXPAVnc_ScriptableGameObj@@@Z PROC	; Proc_ObjReInit, COMDAT

; 706  : {

	sub	esp, 40					; 00000028H

; 707  : 	gzEventObjectInit evt;

	fldz

; 708  : 	evt.m_obj = obj;

	mov	eax, DWORD PTR _obj$[esp+36]

; 709  : 	evt.SetEventType(gzEVT_OBJECT_INIT);
; 710  : 	gzEvtManager::ProcessEvent(evt);

	lea	ecx, DWORD PTR _evt$[esp+40]
	fstp	QWORD PTR _evt$[esp+48]
	push	ecx
	mov	DWORD PTR _evt$[esp+60], 0
	mov	DWORD PTR _evt$[esp+68], -1
	mov	DWORD PTR _evt$[esp+44], OFFSET ??_7gzEventObjectInit@@6B@
	mov	DWORD PTR _evt$[esp+76], eax
	mov	DWORD PTR _evt$[esp+64], 12289		; 00003001H
	call	?ProcessEvent@gzEvtManager@@SAPAVgzEvtHandler@@AAVgzEventBase@@@Z ; gzEvtManager::ProcessEvent

; 711  : }

	add	esp, 44					; 0000002cH
	ret	4
?Proc_ObjReInit@@YGXPAVnc_ScriptableGameObj@@@Z ENDP	; Proc_ObjReInit
_TEXT	ENDS
PUBLIC	?Hook_ObjReInit@@YAXXZ				; Hook_ObjReInit
; Function compile flags: /Ogtpy
;	COMDAT ?Hook_ObjReInit@@YAXXZ
_TEXT	SEGMENT
?Hook_ObjReInit@@YAXXZ PROC				; Hook_ObjReInit, COMDAT

; 714  : 	_asm
; 715  : 	{
; 716  : 		push ecx

	push	ecx

; 717  : 		call Proc_ObjReInit

	call	?Proc_ObjReInit@@YGXPAVnc_ScriptableGameObj@@@Z ; Proc_ObjReInit

; 718  : 		pop ebx

	pop	ebx

; 719  : 		pop ecx

	pop	ecx

; 720  : 		retn 4

	ret	4
?Hook_ObjReInit@@YAXXZ ENDP				; Hook_ObjReInit
_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\gzgm\gzeventbase.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\gzhooks.cpp
CONST	ENDS
;	COMDAT ?Proc_ServerDamage@@YG_NPAVnc_DamageableGameObj@@PBVnc_OffenseObjectClass@@MH@Z
_TEXT	SEGMENT
_evt$ = -56						; size = 56
_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

; 726  : {

	sub	esp, 56					; 00000038H
	push	edi

; 727  : 	if (Object->Defense.Health.Get() == 0.0f)

	mov	edi, DWORD PTR _Object$[esp+56]
	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

; 728  : 		return false;

	jnp	$LN21@Proc_Serve

; 729  : 
; 730  : 	gzEventObjectDamage evt;

	fldz
	push	esi

; 731  : 	evt.m_attacker = (Offense->Damager.Reference) ? Offense->Damager.Reference->obj->As_DamageableGameObj() : NULL;

	mov	esi, DWORD PTR _Offense$[esp+60]
	fstp	QWORD PTR _evt$[esp+72]
	or	eax, -1
	cmp	DWORD PTR [esi+20], 0
	mov	DWORD PTR _evt$[esp+80], 0
	mov	DWORD PTR _evt$[esp+84], eax
	mov	DWORD PTR _evt$[esp+88], eax
	mov	DWORD PTR _evt$[esp+64], OFFSET ??_7gzEventObjectDamage@@6B@
	mov	BYTE PTR _evt$[esp+112], 1
	je	SHORT $LN5@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+96], eax
	jmp	SHORT $LN6@Proc_Serve
$LN5@Proc_Serve:
	mov	DWORD PTR _evt$[esp+96], 0
$LN6@Proc_Serve:

; 732  : 	evt.m_defender = Object;
; 733  : 	evt.m_damage = Offense->Damage;

	fld	DWORD PTR [esi+4]

; 734  : 	evt.m_warhead = Offense->Warhead;

	mov	ecx, DWORD PTR [esi+8]

; 735  : 	evt.SetEventType(gzEVT_OBJECT_DAMAGE);
; 736  : 	gzEvtHandler *retObj = gzEvtManager::ProcessEvent(evt);

	lea	edx, DWORD PTR _evt$[esp+64]
	fstp	DWORD PTR _evt$[esp+104]
	push	edx
	mov	DWORD PTR _evt$[esp+104], edi
	mov	DWORD PTR _evt$[esp+112], ecx
	mov	DWORD PTR _evt$[esp+88], 12290		; 00003002H
	call	?ProcessEvent@gzEvtManager@@SAPAVgzEvtHandler@@AAVgzEventBase@@@Z ; gzEvtManager::ProcessEvent
	add	esp, 4

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

	cmp	BYTE PTR _evt$[esp+112], 0
	pop	esi
	jne	SHORT $LN1@Proc_Serve

; 738  : 	{
; 739  : #if ISDEV()
; 740  : 		gzConsole::Out("[%s] Damage refused by class \"%s\".\n", __FUNCTION__, retObj->GetName());

	mov	edx, DWORD PTR [eax]
	mov	ecx, eax
	mov	eax, DWORD PTR [edx+4]
	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
$LN21@Proc_Serve:

; 741  : #endif
; 742  : 		return false;

	xor	al, al
	pop	edi

; 745  : }

	add	esp, 56					; 00000038H
	ret	16					; 00000010H
$LN1@Proc_Serve:

; 743  : 	}
; 744  : 	return true;

	mov	al, 1
	pop	edi

; 745  : }

	add	esp, 56					; 00000038H
	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

; 748  : 	_asm {
; 749  : 		push ebp

	push	ebp

; 750  : 		mov ebp, esp

	mov	ebp, esp

; 751  : 		push ecx

	push	ecx

; 752  : 		push [ebp+0x10]

	push	DWORD PTR [ebp+16]

; 753  : 		push [ebp+0xC]

	push	DWORD PTR [ebp+12]

; 754  : 		push [ebp+8]

	push	DWORD PTR [ebp+8]

; 755  : 		push ecx

	push	ecx

; 756  : 		call Proc_ServerDamage

	call	?Proc_ServerDamage@@YG_NPAVnc_DamageableGameObj@@PBVnc_OffenseObjectClass@@MH@Z ; Proc_ServerDamage

; 757  : 		test al, al

	test	al, al

; 758  : 		pop ecx

	pop	ecx

; 759  : 		mov esp, ebp

	mov	esp, ebp

; 760  : 		pop ebp

	pop	ebp

; 761  : 		jz no_damage

	je	SHORT $no_damage$59043

; 762  : 		sub esp, 8

	sub	esp, 8

; 763  : 		push ebx

	push	ebx

; 764  : 		push ebp

	push	ebp

; 765  : 		push esi

	push	esi

; 766  : 		mov ebx, 0x6D8DC6

	mov	ebx, 7179718				; 006d8dc6H

; 767  : 		jmp ebx

	jmp	ebx
$no_damage$59043:

; 768  : no_damage:
; 769  : 		retn 0xC

	ret	12					; 0000000cH
?Hook_ServerDamage@@YAXXZ ENDP				; Hook_ServerDamage
_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$ = -48						; size = 48
_Offense$ = 8						; size = 4
_victim$ = 12						; size = 4
?Proc_OnObjectKill@@YGXPAVnc_OffenseObjectClass@@PAVnc_DamageableGameObj@@@Z PROC ; Proc_OnObjectKill, COMDAT

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

	mov	eax, DWORD PTR _Offense$[esp-4]
	mov	eax, DWORD PTR [eax+20]
	xor	edx, edx
	sub	esp, 48					; 00000030H
	xor	ecx, ecx
	cmp	eax, edx
	je	SHORT $LN1@Proc_OnObj

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

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

; 779  : 
; 780  : 	gzEventObjectKill evt;

	fldz
	or	eax, -1

; 781  : 	evt.m_attacker = (killer ? killer->As_DamageableGameObj() : NULL);

	cmp	ecx, edx
	fstp	QWORD PTR _evt$[esp+56]
	mov	DWORD PTR _evt$[esp+64], edx
	mov	DWORD PTR _evt$[esp+68], eax
	mov	DWORD PTR _evt$[esp+72], eax
	mov	DWORD PTR _evt$[esp+48], OFFSET ??_7gzEventObjectKill@@6B@
	mov	BYTE PTR _evt$[esp+88], 1
	je	SHORT $LN4@Proc_OnObj
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+60]
	call	eax
	mov	DWORD PTR _evt$[esp+80], eax
	jmp	SHORT $LN5@Proc_OnObj
$LN4@Proc_OnObj:
	mov	DWORD PTR _evt$[esp+80], edx
$LN5@Proc_OnObj:

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

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

; 783  : 	evt.SetEventType(gzEVT_OBJECT_KILL);
; 784  : 	gzEvtManager::ProcessEvent(evt);

	lea	ecx, DWORD PTR _evt$[esp+48]
	push	ecx
	mov	DWORD PTR _evt$[esp+88], eax
	mov	DWORD PTR _evt$[esp+72], 12291		; 00003003H
	call	?ProcessEvent@gzEvtManager@@SAPAVgzEvtHandler@@AAVgzEventBase@@@Z ; gzEvtManager::ProcessEvent

; 785  : }

	add	esp, 52					; 00000034H
	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

; 788  : 	_asm {
; 789  : 		push esi

	push	esi

; 790  : 		push ebp

	push	ebp

; 791  : 		call Proc_OnObjectKill

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

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

	mov	eax, DWORD PTR [esi+1784]

; 793  : 		mov edi, 0x6D8E9C

	mov	edi, 7179932				; 006d8e9cH

; 794  : 		jmp edi

	jmp	edi
?Hook_OnObjectKill@@YAXXZ ENDP				; Hook_OnObjectKill
_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\gzgm\gzeventbase.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\gzhooks.cpp
CONST	ENDS
;	COMDAT ?Hook_SoldierTransition@@YGXPAVnc_SoldierGameObj@@@Z
_TEXT	SEGMENT
_Instance$ = -52					; size = 4
_evt$ = -48						; size = 48
_soldier$ = 8						; size = 4
?Hook_SoldierTransition@@YGXPAVnc_SoldierGameObj@@@Z PROC ; Hook_SoldierTransition, COMDAT

; 820  : void __stdcall Hook_SoldierTransition(nc_SoldierGameObj *soldier) {

	sub	esp, 52					; 00000034H
	push	edi

; 821  : 	nc_TransitionInstanceClass *Instance;
; 822  : 	_asm {
; 823  : 		mov Instance, ecx

	mov	DWORD PTR _Instance$[esp+56], ecx

; 824  : 	}
; 825  : 
; 826  : 	gzEventObjectTransition evt;

	fldz

; 827  : 	evt.m_soldier = soldier;
; 828  : 	evt.m_instance = Instance;

	mov	eax, DWORD PTR _Instance$[esp+56]
	fstp	QWORD PTR _evt$[esp+64]
	mov	edi, DWORD PTR _soldier$[esp+52]

; 829  : 	evt.SetEventType(gzEVT_OBJECT_TRANSITION);
; 830  : 	gzEvtHandler *retObj = gzEvtManager::ProcessEvent(evt);

	lea	ecx, DWORD PTR _evt$[esp+56]
	push	ecx
	mov	DWORD PTR _evt$[esp+76], 0
	mov	DWORD PTR _evt$[esp+84], -1
	mov	DWORD PTR _evt$[esp+60], OFFSET ??_7gzEventObjectTransition@@6B@
	mov	BYTE PTR _evt$[esp+100], 1
	mov	DWORD PTR _evt$[esp+92], edi
	mov	DWORD PTR _evt$[esp+96], eax
	mov	DWORD PTR _evt$[esp+80], 12293		; 00003005H
	call	?ProcessEvent@gzEvtManager@@SAPAVgzEvtHandler@@AAVgzEventBase@@@Z ; gzEvtManager::ProcessEvent
	add	esp, 4

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

	cmp	BYTE PTR _evt$[esp+96], 0
	jne	SHORT $LN1@Hook_Soldi@2

; 832  : 	{
; 833  : #ifdef DEVMSG
; 834  : 		gzConsole::Out("[%s] Transition request from %ls to %s refused by class \"%s\".\n",
; 835  : 			__FUNCTION__,
; 836  : 			soldier->Player->PlayerName.m_Buffer,
; 837  : 			Instance->Target.Reference->obj->definition->Get_Name(),
; 838  : 			retObj->GetName()
; 839  : 		);

	mov	edx, DWORD PTR _Instance$[esp+56]
	mov	ecx, DWORD PTR [edx+116]
	mov	edx, DWORD PTR [ecx+4]
	push	esi
	mov	esi, DWORD PTR [edx+1724]
	mov	edx, DWORD PTR [eax]
	mov	ecx, eax
	mov	eax, DWORD PTR [edx+4]
	call	eax
	mov	edx, DWORD PTR [esi]
	push	eax
	mov	eax, DWORD PTR [edx+48]
	mov	ecx, esi
	call	eax
	mov	ecx, DWORD PTR [edi+2400]
	mov	edx, DWORD PTR [ecx+1880]
	push	eax
	push	edx
	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	esi
	pop	edi

; 844  : }

	add	esp, 52					; 00000034H
	ret	4
$LN1@Hook_Soldi@2:

; 840  : #endif
; 841  : 		return;
; 842  : 	}
; 843  : 	Instance->Start(soldier);

	mov	ecx, DWORD PTR _Instance$[esp+56]
	push	edi
	call	?Start@nc_TransitionInstanceClass@@QAEXPAVnc_SoldierGameObj@@@Z ; nc_TransitionInstanceClass::Start
	pop	edi

; 844  : }

	add	esp, 52					; 00000034H
	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
;	COMDAT ??_C@_0BO@PHIBDFDB@Start?5jump?3?5?$CFls?5?9?5Height?3?5?$CFf?6?$AA@
; File d:\source code\gzgm\gzeventbase.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\gzhooks.cpp
CONST	ENDS
;	COMDAT ?Proc_JumpStart@@YGXPAVnc_SoldierGameObj@@@Z
_TEXT	SEGMENT
_evt$59105 = -40					; size = 40
_soldier$ = 8						; size = 4
?Proc_JumpStart@@YGXPAVnc_SoldierGameObj@@@Z PROC	; Proc_JumpStart, COMDAT

; 848  : {

	sub	esp, 40					; 00000028H
	push	esi

; 849  : 	if (soldier->Player) {

	mov	esi, DWORD PTR _soldier$[esp+40]
	cmp	DWORD PTR [esi+2400], 0
	je	SHORT $LN1@Proc_JumpS

; 850  : #if ISDEV()
; 851  : 		gzConsole::Out("Start jump: %ls - Height: %f\n",
; 852  : 			soldier->Player->PlayerName.m_Buffer,
; 853  : 			soldier->Get_Transform()->PosZ
; 854  : 		);

	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

; 855  : #endif
; 856  : 
; 857  : 		gzEventObjectJump evt;

	fldz

; 858  : 		evt.m_soldier = soldier;
; 859  : 		evt.SetEventType(gzEVT_OBJECT_JUMP_START);
; 860  : 		gzEvtManager::ProcessEvent(evt);

	lea	edx, DWORD PTR _evt$59105[esp+60]
	fstp	QWORD PTR _evt$59105[esp+68]
	push	edx
	mov	DWORD PTR _evt$59105[esp+80], 0
	mov	DWORD PTR _evt$59105[esp+88], -1
	mov	DWORD PTR _evt$59105[esp+64], OFFSET ??_7gzEventObjectJump@@6B@
	mov	DWORD PTR _evt$59105[esp+96], esi
	mov	DWORD PTR _evt$59105[esp+84], 12294	; 00003006H
	call	?ProcessEvent@gzEvtManager@@SAPAVgzEvtHandler@@AAVgzEventBase@@@Z ; gzEvtManager::ProcessEvent
	add	esp, 20					; 00000014H
$LN1@Proc_JumpS:
	pop	esi

; 861  : 	}
; 862  : }

	add	esp, 40					; 00000028H
	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

; 865  : 	_asm {
; 866  : 		push ecx

	push	ecx

; 867  : 		mov eax, [ecx+0x2C]

	mov	eax, DWORD PTR [ecx+44]

; 868  : 		mov eax, [eax+0x4C]

	mov	eax, DWORD PTR [eax+76]

; 869  : 		add eax, 0xFFFFF894

	add	eax, -1900				; fffff894H

; 870  : 		push eax

	push	eax

; 871  : 		call Proc_JumpStart

	call	?Proc_JumpStart@@YGXPAVnc_SoldierGameObj@@@Z ; Proc_JumpStart

; 872  : 		pop ecx

	pop	ecx

; 873  : 		sub esp, 0x48

	sub	esp, 72					; 00000048H

; 874  : 		push esi

	push	esi

; 875  : 		mov esi, ecx

	mov	esi, ecx

; 876  : 		mov ecx, 0x69BDF6

	mov	ecx, 6929910				; 0069bdf6H

; 877  : 		jmp ecx

	jmp	ecx
?Hook_JumpStart@@YAXXZ ENDP				; Hook_JumpStart
_TEXT	ENDS
PUBLIC	??_C@_0CL@DCBCDPCA@?$FL?$CFs?$FN?5C4?5detonation?5refused?5by?5cl@ ; `string'
PUBLIC	??_C@_0BA@GIPALBCK@Proc_C4Detonate?$AA@		; `string'
PUBLIC	?Proc_C4Detonate@@YG_NPAVnc_C4GameObj@@PAVnc_SmartGameObj@@@Z ; Proc_C4Detonate
;	COMDAT ??_C@_0CL@DCBCDPCA@?$FL?$CFs?$FN?5C4?5detonation?5refused?5by?5cl@
; File d:\source code\gzgm\gzeventbase.h
CONST	SEGMENT
??_C@_0CL@DCBCDPCA@?$FL?$CFs?$FN?5C4?5detonation?5refused?5by?5cl@ DB '[%'
	DB	's] C4 detonation refused by class "%s".', 0aH, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BA@GIPALBCK@Proc_C4Detonate?$AA@
CONST	SEGMENT
??_C@_0BA@GIPALBCK@Proc_C4Detonate?$AA@ DB 'Proc_C4Detonate', 00H ; `string'
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzhooks.cpp
CONST	ENDS
;	COMDAT ?Proc_C4Detonate@@YG_NPAVnc_C4GameObj@@PAVnc_SmartGameObj@@@Z
_TEXT	SEGMENT
_evt$ = -48						; size = 48
_C4$ = 8						; size = 4
_Enemy$ = 12						; size = 4
?Proc_C4Detonate@@YG_NPAVnc_C4GameObj@@PAVnc_SmartGameObj@@@Z PROC ; Proc_C4Detonate, COMDAT

; 942  : {

	sub	esp, 48					; 00000030H
	push	esi

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

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

; 944  : 		Enemy = NULL;

	xor	eax, eax
	jmp	SHORT $LN2@Proc_C4Det
$LN19@Proc_C4Det:
	mov	eax, DWORD PTR _Enemy$[esp+48]
$LN2@Proc_C4Det:

; 945  : 
; 946  : 	gzEventObjectC4Detonation evt;

	fldz

; 947  : 	evt.m_C4 = C4;
; 948  : 	evt.m_explodeBy = Enemy;

	mov	DWORD PTR _evt$[esp+88], eax

; 949  : 	evt.SetEventType(gzEVT_OBJECT_C4_DETONATE);
; 950  : 	gzEvtHandler *retObj = gzEvtManager::ProcessEvent(evt);

	lea	eax, DWORD PTR _evt$[esp+52]
	fstp	QWORD PTR _evt$[esp+60]
	push	eax
	mov	DWORD PTR _evt$[esp+72], 0
	mov	DWORD PTR _evt$[esp+80], -1
	mov	DWORD PTR _evt$[esp+56], OFFSET ??_7gzEventObjectC4Detonation@@6B@
	mov	BYTE PTR _evt$[esp+96], 1
	mov	DWORD PTR _evt$[esp+88], esi
	mov	DWORD PTR _evt$[esp+76], 12297		; 00003009H
	call	?ProcessEvent@gzEvtManager@@SAPAVgzEvtHandler@@AAVgzEventBase@@@Z ; gzEvtManager::ProcessEvent
	add	esp, 4

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

	cmp	BYTE PTR _evt$[esp+92], 0
	pop	esi
	jne	SHORT $LN1@Proc_C4Det

; 952  : 	{
; 953  : #if ISDEV()
; 954  : 		gzConsole::Out("[%s] C4 detonation refused by class \"%s\".\n",
; 955  : 			__FUNCTION__,
; 956  : 			retObj->GetName()
; 957  : 		);

	mov	edx, DWORD PTR [eax]
	mov	ecx, eax
	mov	eax, DWORD PTR [edx+4]
	call	eax
	push	eax
	push	OFFSET ??_C@_0BA@GIPALBCK@Proc_C4Detonate?$AA@
	push	OFFSET ??_C@_0CL@DCBCDPCA@?$FL?$CFs?$FN?5C4?5detonation?5refused?5by?5cl@
	call	?Out@gzConsole@@SAXPBDZZ		; gzConsole::Out
	add	esp, 12					; 0000000cH

; 958  : #endif
; 959  : 		return false;

	xor	al, al

; 962  : }

	add	esp, 48					; 00000030H
	ret	8
$LN1@Proc_C4Det:

; 960  : 	}
; 961  : 	return true;

	mov	al, 1

; 962  : }

	add	esp, 48					; 00000030H
	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

; 965  : 	_asm {
; 966  : 		push ecx

	push	ecx

; 967  : 		push ebx

	push	ebx

; 968  : 		push ecx

	push	ecx

; 969  : 		call Proc_C4Detonate

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

; 970  : 		pop ecx

	pop	ecx

; 971  : 		test al, al

	test	al, al

; 972  : 		jz no_detonate

	je	SHORT $no_detonate$59172

; 973  : 		sub esp, 0xC

	sub	esp, 12					; 0000000cH

; 974  : 		push esi

	push	esi

; 975  : 		mov esi, ecx

	mov	esi, ecx

; 976  : 		mov eax, 0x70BEA3

	mov	eax, 7388835				; 0070bea3H

; 977  : 		jmp eax

	jmp	eax
$no_detonate$59172:

; 978  : no_detonate:
; 979  : 		retn

	ret	0
?Hook_C4Detonate@@YAXXZ ENDP				; Hook_C4Detonate
_TEXT	ENDS
PUBLIC	??_C@_0DH@PBGFPFPD@?$FL?$CFs?$FN?5Powerup?$CI?$CFs?$CJ?5grant?5for?5?$CFls?5r@ ; `string'
PUBLIC	??_C@_0BC@KEHIFHML@Hook_PowerupGrant?$AA@	; `string'
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@_0DH@PBGFPFPD@?$FL?$CFs?$FN?5Powerup?$CI?$CFs?$CJ?5grant?5for?5?$CFls?5r@
; File d:\source code\gzgm\gzeventbase.h
CONST	SEGMENT
??_C@_0DH@PBGFPFPD@?$FL?$CFs?$FN?5Powerup?$CI?$CFs?$CJ?5grant?5for?5?$CFls?5r@ DB '['
	DB	'%s] Powerup(%s) grant for %ls refused by class "%s".', 0aH, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BC@KEHIFHML@Hook_PowerupGrant?$AA@
CONST	SEGMENT
??_C@_0BC@KEHIFHML@Hook_PowerupGrant?$AA@ DB 'Hook_PowerupGrant', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_04MLLLIHIP@null?$AA@
CONST	SEGMENT
??_C@_04MLLLIHIP@null?$AA@ DB 'null', 00H		; `string'
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzhooks.cpp
CONST	ENDS
;	COMDAT ?Hook_PowerupGrant@@YGXPAVnc_SoldierGameObj@@@Z
_TEXT	SEGMENT
_Powerup$ = -52						; size = 4
_evt$59195 = -48					; size = 48
_Soldier$ = 8						; size = 4
?Hook_PowerupGrant@@YGXPAVnc_SoldierGameObj@@@Z PROC	; Hook_PowerupGrant, COMDAT

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

	sub	esp, 52					; 00000034H
	push	esi

; 986  : 	nc_PowerUpGameObj *Powerup;
; 987  : 	_asm {
; 988  : 		mov Powerup, ecx

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

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

	mov	esi, DWORD PTR _Soldier$[esp+52]
	mov	eax, DWORD PTR [esi+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	$LN3@Hook_Power
	lea	ecx, DWORD PTR [esi+1840]
	call	?Get@nc_FloatDataSafeClass@@QAEMXZ	; nc_FloatDataSafeClass::Get
	fcomp	DWORD PTR __real@00000000
	fnstsw	ax
	test	ah, 68					; 00000044H
	jnp	$LN3@Hook_Power

; 991  : 		return;
; 992  : 	if (Soldier->Player)

	cmp	DWORD PTR [esi+2400], 0
	je	$LN1@Hook_Power

; 993  : 	{
; 994  : 		gzEventObjectPowerupGrant evt;

	fldz

; 995  : 		evt.m_powerup = Powerup;

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

; 996  : 		evt.m_soldier = Soldier;
; 997  : 		evt.SetEventType(gzEVT_OBJECT_POWERUP_GRANT);
; 998  : 		gzEvtHandler *retObj = gzEvtManager::ProcessEvent(evt);

	lea	edx, DWORD PTR _evt$59195[esp+56]
	fstp	QWORD PTR _evt$59195[esp+64]
	push	edx
	mov	DWORD PTR _evt$59195[esp+76], 0
	mov	DWORD PTR _evt$59195[esp+84], -1
	mov	DWORD PTR _evt$59195[esp+60], OFFSET ??_7gzEventObjectPowerupGrant@@6B@
	mov	BYTE PTR _evt$59195[esp+100], 1
	mov	DWORD PTR _evt$59195[esp+92], ecx
	mov	DWORD PTR _evt$59195[esp+96], esi
	mov	DWORD PTR _evt$59195[esp+80], 12304	; 00003010H
	call	?ProcessEvent@gzEvtManager@@SAPAVgzEvtHandler@@AAVgzEventBase@@@Z ; gzEvtManager::ProcessEvent
	add	esp, 4

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

	cmp	BYTE PTR _evt$59195[esp+96], 0
	jne	SHORT $LN1@Hook_Power

; 1000 : 		{
; 1001 : #if ISDEV()
; 1002 : 			gzConsole::Out("[%s] Powerup(%s) grant for %ls refused by class \"%s\".\n",
; 1003 : 				__FUNCTION__,
; 1004 : 				Powerup->definition->Get_Name(),
; 1005 : 				Soldier->Player->PlayerName.m_Buffer,
; 1006 : 				retObj->GetName()
; 1007 : 			);

	mov	ecx, DWORD PTR _Powerup$[esp+56]
	mov	edx, DWORD PTR [eax]
	push	edi
	mov	edi, DWORD PTR [ecx+1724]
	mov	ecx, eax
	mov	eax, DWORD PTR [edx+4]
	call	eax
	mov	ecx, DWORD PTR [esi+2400]
	mov	edx, DWORD PTR [ecx+1880]
	push	eax
	mov	eax, DWORD PTR [edi]
	push	edx
	mov	edx, DWORD PTR [eax+48]
	mov	ecx, edi
	call	edx
	push	eax
	push	OFFSET ??_C@_0BC@KEHIFHML@Hook_PowerupGrant?$AA@
	push	OFFSET ??_C@_0DH@PBGFPFPD@?$FL?$CFs?$FN?5Powerup?$CI?$CFs?$CJ?5grant?5for?5?$CFls?5r@
	call	?Out@gzConsole@@SAXPBDZZ		; gzConsole::Out
	add	esp, 20					; 00000014H
	pop	edi
	pop	esi

; 1013 : }

	add	esp, 52					; 00000034H
	ret	4
$LN1@Hook_Power:

; 1008 : #endif
; 1009 : 			return;
; 1010 : 		}
; 1011 : 	}
; 1012 : 	Powerup->Grant(Soldier);

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

; 1013 : }

	add	esp, 52					; 00000034H
	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$59214 = -52					; size = 48
_Weapon$ = -4						; size = 4
_isPrimary$ = 8						; size = 1
?Hook_FireBullet@@YGX_N@Z PROC				; Hook_FireBullet, COMDAT

; 1016 : void __stdcall Hook_FireBullet(bool isPrimary) {

	push	ebp
	mov	ebp, esp
	sub	esp, 52					; 00000034H

; 1017 : 	nc_WeaponClass *Weapon;
; 1018 : 	_asm
; 1019 : 	{
; 1020 : 		mov Weapon, ecx

	mov	DWORD PTR _Weapon$[ebp], ecx

; 1021 : 	}
; 1022 : 	if (Weapon->Owner.Reference)

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

; 1023 : 	{
; 1024 : 		gzEventObjectFire evt;

	fldz
	or	ecx, -1
	mov	DWORD PTR _evt$59214[ebp+20], ecx
	fstp	QWORD PTR _evt$59214[ebp+8]
	mov	DWORD PTR _evt$59214[ebp+24], ecx

; 1025 : 		evt.m_primaryFire = isPrimary;

	mov	cl, BYTE PTR _isPrimary$[ebp]
	mov	DWORD PTR _evt$59214[ebp+16], 0
	mov	DWORD PTR _evt$59214[ebp], OFFSET ??_7gzEventObjectFire@@6B@
	mov	BYTE PTR _evt$59214[ebp+32], cl

; 1026 : 		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$59214[ebp+36], eax

; 1027 : 		evt.m_weapon = Weapon;

	mov	eax, DWORD PTR _Weapon$[ebp]

; 1028 : 		evt.SetEventType(gzEVT_OBJECT_FIRE);
; 1029 : 		gzEvtManager::ProcessEvent(evt);

	lea	ecx, DWORD PTR _evt$59214[ebp]
	push	ecx
	mov	DWORD PTR _evt$59214[ebp+40], eax
	mov	DWORD PTR _evt$59214[ebp+20], 12305	; 00003011H
	call	?ProcessEvent@gzEvtManager@@SAPAVgzEvtHandler@@AAVgzEventBase@@@Z ; gzEvtManager::ProcessEvent
	add	esp, 4
$LN1@Hook_FireB:

; 1030 : 	}
; 1031 : 	_asm {
; 1032 : 		mov eax, 0x6FDA60

	mov	eax, 7330400				; 006fda60H

; 1033 : 		mov ecx, Weapon

	mov	ecx, DWORD PTR _Weapon$[ebp]

; 1034 : 		push dword ptr isPrimary

	push	DWORD PTR _isPrimary$[ebp]

; 1035 : 		call eax

	call	eax

; 1036 : 	}
; 1037 : }

	mov	esp, ebp
	pop	ebp
	ret	4
?Hook_FireBullet@@YGX_N@Z ENDP				; Hook_FireBullet
_TEXT	ENDS
PUBLIC	?Hook_C4Creation@@YAHH@Z			; Hook_C4Creation
; Function compile flags: /Ogtpy
;	COMDAT ?Hook_C4Creation@@YAHH@Z
_TEXT	SEGMENT
_c4$ = -44						; size = 4
_evt$ = -40						; size = 40
_Team$ = 8						; size = 4
?Hook_C4Creation@@YAHH@Z PROC				; Hook_C4Creation, COMDAT

; 1041 : {

	sub	esp, 44					; 0000002cH

; 1042 : 	nc_C4GameObj *c4;
; 1043 : 	_asm
; 1044 : 	{
; 1045 : 		mov c4, ecx

	mov	DWORD PTR _c4$[esp+44], ecx

; 1046 : 	}
; 1047 : 	gzEventObjectC4Creation evt;

	fldz

; 1048 : 	evt.m_C4 = c4;

	mov	eax, DWORD PTR _c4$[esp+44]
	fstp	QWORD PTR _evt$[esp+52]

; 1049 : 	evt.SetEventType(gzEVT_OBJECT_C4_CREATE);
; 1050 : 	gzEvtManager::ProcessEvent(evt);

	lea	ecx, DWORD PTR _evt$[esp+44]
	push	ecx
	mov	DWORD PTR _evt$[esp+64], 0
	mov	DWORD PTR _evt$[esp+72], -1
	mov	DWORD PTR _evt$[esp+48], OFFSET ??_7gzEventObjectC4Creation@@6B@
	mov	DWORD PTR _evt$[esp+80], eax
	mov	DWORD PTR _evt$[esp+68], 12296		; 00003008H
	call	?ProcessEvent@gzEvtManager@@SAPAVgzEvtHandler@@AAVgzEventBase@@@Z ; gzEvtManager::ProcessEvent

; 1051 : 	return Team;

	mov	eax, DWORD PTR _Team$[esp+44]

; 1052 : }

	add	esp, 48					; 00000030H
	ret	0
?Hook_C4Creation@@YAHH@Z ENDP				; Hook_C4Creation
_TEXT	ENDS
PUBLIC	?Proc_VehicleFlipKill@@YG_NPAVnc_VehicleGameObj@@@Z ; Proc_VehicleFlipKill
EXTRN	?m_list@gzEvtManager@@2V?$aVector@PAVgzEvtHandler@@@@A:BYTE ; gzEvtManager::m_list
; Function compile flags: /Ogtpy
;	COMDAT ?Proc_VehicleFlipKill@@YG_NPAVnc_VehicleGameObj@@@Z
_TEXT	SEGMENT
_evt$ = -40						; size = 40
_vehicle$ = 8						; size = 4
?Proc_VehicleFlipKill@@YG_NPAVnc_VehicleGameObj@@@Z PROC ; Proc_VehicleFlipKill, COMDAT

; 1076 : {

	sub	esp, 40					; 00000028H

; 1077 : 	gzEventObjectFlipKill evt;

	fldz
	or	eax, -1
	push	esi
	fstp	QWORD PTR _evt$[esp+52]
	xor	esi, esi

; 1078 : 	evt.m_vehicle = vehicle;
; 1079 : 	evt.m_allowFlipKill = true;
; 1080 : 	for (unsigned int i = 0; i < gzEvtManager::m_list.Count(); i++)

	cmp	DWORD PTR ?m_list@gzEvtManager@@2V?$aVector@PAVgzEvtHandler@@@@A+12, esi
	mov	DWORD PTR _evt$[esp+64], eax
	mov	DWORD PTR _evt$[esp+68], eax
	mov	eax, DWORD PTR _vehicle$[esp+40]
	mov	DWORD PTR _evt$[esp+60], esi
	mov	DWORD PTR _evt$[esp+44], OFFSET ??_7gzEventObjectFlipKill@@6B@
	mov	BYTE PTR _evt$[esp+81], 1
	mov	DWORD PTR _evt$[esp+76], eax
	mov	BYTE PTR _evt$[esp+80], 1
	jbe	SHORT $LN26@Proc_Vehic
	npad	3
$LL5@Proc_Vehic:

; 1081 : 	{
; 1082 : 		gzEvtManager::m_list[i]->Object_FlipKill(evt);

	mov	ecx, DWORD PTR ?m_list@gzEvtManager@@2V?$aVector@PAVgzEvtHandler@@@@A+4
	mov	ecx, DWORD PTR [ecx+esi*4]
	mov	edx, DWORD PTR [ecx]
	mov	edx, DWORD PTR [edx+116]
	lea	eax, DWORD PTR _evt$[esp+44]
	push	eax
	call	edx

; 1083 : 		if (!evt.m_allowFlipKill)

	cmp	BYTE PTR _evt$[esp+80], 0
	je	SHORT $LN25@Proc_Vehic

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

	cmp	BYTE PTR _evt$[esp+81], 0
	je	SHORT $LN26@Proc_Vehic
	add	esi, 1
	cmp	esi, DWORD PTR ?m_list@gzEvtManager@@2V?$aVector@PAVgzEvtHandler@@@@A+12
	jb	SHORT $LL5@Proc_Vehic
$LN26@Proc_Vehic:

; 1086 : 			break;
; 1087 : 	}
; 1088 : 	return true;

	mov	al, 1
	pop	esi

; 1089 : }

	add	esp, 40					; 00000028H
	ret	4
$LN25@Proc_Vehic:

; 1084 : 			return false;

	xor	al, al
	pop	esi

; 1089 : }

	add	esp, 40					; 00000028H
	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

; 1092 : 	_asm {
; 1093 : 		push ecx

	push	ecx

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

	lea	ebx, DWORD PTR [ecx-1900]

; 1095 : 		push ebx

	push	ebx

; 1096 : 		call Proc_VehicleFlipKill

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

; 1097 : 		pop ecx

	pop	ecx

; 1098 : 		mov ebx, 0x67C065

	mov	ebx, 6799461				; 0067c065H

; 1099 : 		jmp ebx

	jmp	ebx
?Hook_VehicleFlipKill@@YAXXZ ENDP			; Hook_VehicleFlipKill
_TEXT	ENDS
PUBLIC	??_7gzEventNetWolPage@@6B@			; gzEventNetWolPage::`vftable'
PUBLIC	??0gzEventNetWolPage@@QAE@XZ			; gzEventNetWolPage::gzEventNetWolPage
PUBLIC	??_R4gzEventNetWolPage@@6B@			; gzEventNetWolPage::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVgzEventNetWolPage@@@8			; gzEventNetWolPage `RTTI Type Descriptor'
PUBLIC	??_R3gzEventNetWolPage@@8			; gzEventNetWolPage::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2gzEventNetWolPage@@8			; gzEventNetWolPage::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@gzEventNetWolPage@@8		; gzEventNetWolPage::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?Skippable@gzEventNetWolPage@@UAE_NXZ		; gzEventNetWolPage::Skippable
;	COMDAT ??_R1A@?0A@EA@gzEventNetWolPage@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@gzEventNetWolPage@@8 DD FLAT:??_R0?AVgzEventNetWolPage@@@8 ; gzEventNetWolPage::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	02H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3gzEventNetWolPage@@8
rdata$r	ENDS
;	COMDAT ??_R2gzEventNetWolPage@@8
rdata$r	SEGMENT
??_R2gzEventNetWolPage@@8 DD FLAT:??_R1A@?0A@EA@gzEventNetWolPage@@8 ; gzEventNetWolPage::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzEventNetBase@@8
	DD	FLAT:??_R1A@?0A@EA@gzEventBase@@8
rdata$r	ENDS
;	COMDAT ??_R3gzEventNetWolPage@@8
rdata$r	SEGMENT
??_R3gzEventNetWolPage@@8 DD 00H			; gzEventNetWolPage::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	03H
	DD	FLAT:??_R2gzEventNetWolPage@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVgzEventNetWolPage@@@8
_DATA	SEGMENT
??_R0?AVgzEventNetWolPage@@@8 DD FLAT:??_7type_info@@6B@ ; gzEventNetWolPage `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVgzEventNetWolPage@@', 00H
_DATA	ENDS
;	COMDAT ??_R4gzEventNetWolPage@@6B@
rdata$r	SEGMENT
??_R4gzEventNetWolPage@@6B@ DD 00H			; gzEventNetWolPage::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVgzEventNetWolPage@@@8
	DD	FLAT:??_R3gzEventNetWolPage@@8
rdata$r	ENDS
;	COMDAT ??_7gzEventNetWolPage@@6B@
CONST	SEGMENT
??_7gzEventNetWolPage@@6B@ DD FLAT:??_R4gzEventNetWolPage@@6B@ ; gzEventNetWolPage::`vftable'
	DD	FLAT:?CanContinue@gzEventNetWolPage@@UAE_NXZ
	DD	FLAT:?Skippable@gzEventNetWolPage@@UAE_NXZ
CONST	ENDS
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$??0gzEventNetWolPage@@QAE@XZ DD 0ffffffffH
	DD	FLAT:__unwindfunclet$??0gzEventNetWolPage@@QAE@XZ$0
__ehfuncinfo$??0gzEventNetWolPage@@QAE@XZ DD 019930522H
	DD	01H
	DD	FLAT:__unwindtable$??0gzEventNetWolPage@@QAE@XZ
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	01H
; Function compile flags: /Ogtpy
xdata$x	ENDS
;	COMDAT ??0gzEventNetWolPage@@QAE@XZ
_TEXT	SEGMENT
_this$ = -16						; size = 4
__$EHRec$ = -12						; size = 12
??0gzEventNetWolPage@@QAE@XZ PROC			; gzEventNetWolPage::gzEventNetWolPage, COMDAT
; _this$ = ecx
	push	-1
	push	__ehhandler$??0gzEventNetWolPage@@QAE@XZ
	mov	eax, DWORD PTR fs:0
	push	eax
	mov	DWORD PTR fs:0, esp
	push	ecx
	fldz
	push	esi
	mov	esi, ecx
	fstp	QWORD PTR [esi+8]
	or	eax, -1
	lea	ecx, DWORD PTR [esi+32]
	mov	DWORD PTR _this$[esp+20], esi
	mov	DWORD PTR [esi+16], 0
	mov	DWORD PTR [esi+20], eax
	mov	DWORD PTR [esi+24], eax
	mov	DWORD PTR [esi], OFFSET ??_7gzEventNetWolPage@@6B@
	call	??0aString@@QAE@XZ			; aString::aString
	lea	ecx, DWORD PTR [esi+40]
	mov	DWORD PTR __$EHRec$[esp+28], 0
	call	??0aString@@QAE@XZ			; aString::aString
	mov	ecx, DWORD PTR __$EHRec$[esp+20]
	mov	BYTE PTR [esi+48], 1
	mov	eax, esi
	pop	esi
	mov	DWORD PTR fs:0, ecx
	add	esp, 16					; 00000010H
	ret	0
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$??0gzEventNetWolPage@@QAE@XZ$0:
	mov	ecx, DWORD PTR _this$[ebp]
	add	ecx, 32					; 00000020H
	jmp	??1aString@@UAE@XZ
__ehhandler$??0gzEventNetWolPage@@QAE@XZ:
	mov	eax, OFFSET __ehfuncinfo$??0gzEventNetWolPage@@QAE@XZ
	jmp	___CxxFrameHandler3
text$x	ENDS
??0gzEventNetWolPage@@QAE@XZ ENDP			; gzEventNetWolPage::gzEventNetWolPage
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzeventbase.h
;	COMDAT ?Skippable@gzEventNetWolPage@@UAE_NXZ
_TEXT	SEGMENT
?Skippable@gzEventNetWolPage@@UAE_NXZ PROC		; gzEventNetWolPage::Skippable, COMDAT
; _this$ = ecx

; 307  : 	gzEVT_SKIPPABLE();

	mov	al, 1
	ret	0
?Skippable@gzEventNetWolPage@@UAE_NXZ ENDP		; gzEventNetWolPage::Skippable
_TEXT	ENDS
PUBLIC	?Proc_CDKeyAuthCallback@@YGXHHPBD@Z		; Proc_CDKeyAuthCallback
;	COMDAT xdata$x
; File d:\source code\alib\include\astring.h
xdata$x	SEGMENT
__unwindtable$?Proc_CDKeyAuthCallback@@YGXHHPBD@Z DD 0ffffffffH
	DD	FLAT:__unwindfunclet$?Proc_CDKeyAuthCallback@@YGXHHPBD@Z$0
	DD	00H
	DD	FLAT:__unwindfunclet$?Proc_CDKeyAuthCallback@@YGXHHPBD@Z$1
__ehfuncinfo$?Proc_CDKeyAuthCallback@@YGXHHPBD@Z DD 019930522H
	DD	02H
	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\gzhooks.cpp
xdata$x	ENDS
;	COMDAT ?Proc_CDKeyAuthCallback@@YGXHHPBD@Z
_TEXT	SEGMENT
$T69535 = -68						; size = 8
_evt$59306 = -60					; size = 48
__$EHRec$ = -12						; size = 12
_ID$ = 8						; size = 4
_Type$ = 12						; size = 4
_msg$ = 16						; size = 4
?Proc_CDKeyAuthCallback@@YGXHHPBD@Z PROC		; Proc_CDKeyAuthCallback, COMDAT

; 1151 : {

	mov	eax, DWORD PTR fs:0
	push	-1
	push	__ehhandler$?Proc_CDKeyAuthCallback@@YGXHHPBD@Z
	push	eax

; 1152 : 	nc_cPlayer *pData = nc_cPlayerManager::Find_Player(ID);

	mov	eax, DWORD PTR _ID$[esp+8]
	mov	DWORD PTR fs:0, esp
	sub	esp, 56					; 00000038H
	push	esi
	push	eax
	call	?Find_Player@nc_cPlayerManager@@SAPAVnc_cPlayer@@H@Z ; nc_cPlayerManager::Find_Player
	mov	esi, eax
	add	esp, 4

; 1153 : 	if (pData && pData->IsActive)

	test	esi, esi
	je	$LN1@Proc_CDKey
	cmp	BYTE PTR [esi+1981], 0
	je	$LN1@Proc_CDKey

; 1154 : 	{
; 1155 : 		gzEventNetSerialAuth evt;

	fldz
	lea	ecx, DWORD PTR _evt$59306[esp+112]
	fstp	QWORD PTR _evt$59306[esp+80]
	mov	DWORD PTR _evt$59306[esp+88], 0
	mov	DWORD PTR _evt$59306[esp+92], -1
	mov	DWORD PTR _evt$59306[esp+96], -1
	mov	DWORD PTR _evt$59306[esp+72], OFFSET ??_7gzEventNetSerialAuth@@6B@
	call	??0aString@@QAE@XZ			; aString::aString

; 1156 : 		evt.SetPlayer(pData);
; 1157 : 		evt.SetInt(Type);

	mov	ecx, DWORD PTR _Type$[esp+68]

; 1158 : 		evt.m_message = msg;

	mov	edx, DWORD PTR _msg$[esp+68]
	mov	DWORD PTR _evt$59306[esp+88], ecx
	push	edx
	lea	ecx, DWORD PTR $T69535[esp+76]
	mov	DWORD PTR __$EHRec$[esp+84], 0
	mov	DWORD PTR _evt$59306[esp+108], esi
	call	??0aString@@QAE@PBD@Z			; aString::aString
	lea	eax, DWORD PTR $T69535[esp+72]
	push	eax
	lea	ecx, DWORD PTR _evt$59306[esp+116]
	mov	BYTE PTR __$EHRec$[esp+84], 1
	call	??4aString@@QAEAAV0@ABV0@@Z		; aString::operator=
	lea	ecx, DWORD PTR $T69535[esp+72]
	mov	BYTE PTR __$EHRec$[esp+80], 0
	call	??1aStringBase@@UAE@XZ			; aStringBase::~aStringBase

; 1159 : 		evt.SetEventType(gzEVT_NET_SERIAL_AUTH);
; 1160 : 		gzEvtManager::ProcessEvent(evt);

	lea	ecx, DWORD PTR _evt$59306[esp+72]
	push	ecx
	mov	DWORD PTR _evt$59306[esp+96], 16385	; 00004001H
	call	?ProcessEvent@gzEvtManager@@SAPAVgzEvtHandler@@AAVgzEventBase@@@Z ; gzEvtManager::ProcessEvent
	add	esp, 4

; 1161 : 	}

	lea	ecx, DWORD PTR _evt$59306[esp+112]
	mov	DWORD PTR __$EHRec$[esp+80], -1
	call	??1aStringBase@@UAE@XZ			; aStringBase::~aStringBase
$LN1@Proc_CDKey:

; 1162 : }

	mov	ecx, DWORD PTR __$EHRec$[esp+72]
	pop	esi
	mov	DWORD PTR fs:0, ecx
	add	esp, 68					; 00000044H
	ret	12					; 0000000cH
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$?Proc_CDKeyAuthCallback@@YGXHHPBD@Z$0:
	lea	ecx, DWORD PTR _evt$59306[ebp]
	jmp	??1gzEventNetSerialAuth@@QAE@XZ
__unwindfunclet$?Proc_CDKeyAuthCallback@@YGXHHPBD@Z$1:
	lea	ecx, DWORD PTR $T69535[ebp]
	jmp	??1aString@@UAE@XZ
__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

; 1165 : 	_asm {
; 1166 : 		push ebp

	push	ebp

; 1167 : 		mov ebp, esp

	mov	ebp, esp

; 1168 : 		push [ebp+10h] // Message

	push	DWORD PTR [ebp+16]

; 1169 : 		push [ebp+0Ch] // Type

	push	DWORD PTR [ebp+12]

; 1170 : 		push [ebp+8] // Player ID

	push	DWORD PTR [ebp+8]

; 1171 : 		call Proc_CDKeyAuthCallback

	call	?Proc_CDKeyAuthCallback@@YGXHHPBD@Z	; Proc_CDKeyAuthCallback

; 1172 : 		mov esp, ebp

	mov	esp, ebp

; 1173 : 		pop ebp

	pop	ebp

; 1174 : 		retn

	ret	0
?Hook_CDKeyAuthCallback@@YAXXZ ENDP			; Hook_CDKeyAuthCallback
_TEXT	ENDS
PUBLIC	??_C@_0BP@NFGHDAJB@msg?5?$CFs?5has?5been?5assigned?5to?5?$CFs?$AA@ ; `string'
PUBLIC	?Proc_VehicleGenerationComplete@@YGXPAVnc_BaseControllerClass@@PAVnc_VehicleGameObj@@@Z ; Proc_VehicleGenerationComplete
EXTRN	?Set_Harvester_Vehicle@nc_RefineryGameObj@@QAEXPAVnc_VehicleGameObj@@@Z:PROC ; nc_RefineryGameObj::Set_Harvester_Vehicle
;	COMDAT ??_C@_0BP@NFGHDAJB@msg?5?$CFs?5has?5been?5assigned?5to?5?$CFs?$AA@
; File d:\source code\fds lib\new\fds_vector.h
CONST	SEGMENT
??_C@_0BP@NFGHDAJB@msg?5?$CFs?5has?5been?5assigned?5to?5?$CFs?$AA@ DB 'ms'
	DB	'g %s has been assigned to %s', 00H		; `string'
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzhooks.cpp
CONST	ENDS
;	COMDAT ?Proc_VehicleGenerationComplete@@YGXPAVnc_BaseControllerClass@@PAVnc_VehicleGameObj@@@Z
_TEXT	SEGMENT
_base$ = 8						; size = 4
_vehicle$ = 12						; size = 4
?Proc_VehicleGenerationComplete@@YGXPAVnc_BaseControllerClass@@PAVnc_VehicleGameObj@@@Z PROC ; Proc_VehicleGenerationComplete, COMDAT

; 1582 : 	if (base->BuildingList.Count() > 0)

	mov	ecx, DWORD PTR _base$[esp-4]
	cmp	DWORD PTR [ecx+1740], 0
	jle	$LN1@Proc_Vehic@2
	push	esi

; 1583 : 	{
; 1584 : 		nc_BuildingGameObj *Refinery = base->Find_Building(nc_REFINERY);

	push	3
	call	?Find_Building@nc_BaseControllerClass@@QAEPAVnc_BuildingGameObj@@W4BuildingType@@@Z ; nc_BaseControllerClass::Find_Building
	mov	esi, eax

; 1585 : 		if (Refinery && !Refinery->As_RefineryGameObj()->Harvester)

	test	esi, esi
	je	$LN8@Proc_Vehic@2
	mov	eax, DWORD PTR [esi]
	mov	edx, DWORD PTR [eax+132]
	mov	ecx, esi
	call	edx
	cmp	DWORD PTR [eax+2092], 0
	jne	SHORT $LN8@Proc_Vehic@2

; 1586 : 		{
; 1587 : 			if (((nc_RefineryGameObjDef *)Refinery->As_RefineryGameObj()->definition)->Harvester == vehicle->definition->Get_ID())

	mov	eax, DWORD PTR [esi]
	mov	edx, DWORD PTR [eax+132]
	push	ebx
	push	ebp
	push	edi
	mov	edi, DWORD PTR _vehicle$[esp+12]
	mov	ebx, DWORD PTR [edi+1724]
	mov	ecx, esi
	call	edx
	mov	ebp, DWORD PTR [eax+1724]
	mov	eax, DWORD PTR [ebx]
	mov	edx, DWORD PTR [eax+36]
	mov	ecx, ebx
	call	edx
	cmp	DWORD PTR [ebp+172], eax
	jne	SHORT $LN9@Proc_Vehic@2

; 1588 : 			{
; 1589 : 				Refinery->As_RefineryGameObj()->Set_Harvester_Vehicle(vehicle);

	mov	eax, DWORD PTR [esi]
	mov	edx, DWORD PTR [eax+132]
	push	edi
	mov	ecx, esi
	call	edx
	mov	ecx, eax
	call	?Set_Harvester_Vehicle@nc_RefineryGameObj@@QAEXPAVnc_VehicleGameObj@@@Z ; nc_RefineryGameObj::Set_Harvester_Vehicle

; 1590 : 				vehicle->VehicleCanEnemySeen = false;

	mov	BYTE PTR [edi+2453], 0

; 1591 : #if ISDEV()
; 1592 : 				gzConsole::In("msg %s has been assigned to %s",vehicle->definition->Get_Name(),Refinery->definition->Get_Name());

	mov	ecx, DWORD PTR [esi+1724]
	mov	eax, DWORD PTR [ecx]
	mov	edx, DWORD PTR [eax+48]
	mov	edi, DWORD PTR [edi+1724]
	call	edx
	push	eax
	mov	eax, DWORD PTR [edi]
	mov	edx, DWORD PTR [eax+48]
	mov	ecx, edi
	call	edx
	push	eax
	push	OFFSET ??_C@_0BP@NFGHDAJB@msg?5?$CFs?5has?5been?5assigned?5to?5?$CFs?$AA@
	call	?In@gzConsole@@SAXPBDZZ			; gzConsole::In
	add	esp, 12					; 0000000cH
$LN9@Proc_Vehic@2:
	pop	edi
	pop	ebp
	pop	ebx
$LN8@Proc_Vehic@2:
	pop	esi
$LN1@Proc_Vehic@2:

; 1593 : #endif
; 1594 : 			}
; 1595 : 		}
; 1596 : 	}
; 1597 : }

	ret	8
?Proc_VehicleGenerationComplete@@YGXPAVnc_BaseControllerClass@@PAVnc_VehicleGameObj@@@Z ENDP ; Proc_VehicleGenerationComplete
_TEXT	ENDS
PUBLIC	?Hook_VehicleGenerationComplete@@YAXPAVnc_VehicleGameObj@@@Z ; Hook_VehicleGenerationComplete
; Function compile flags: /Ogtp
;	COMDAT ?Hook_VehicleGenerationComplete@@YAXPAVnc_VehicleGameObj@@@Z
_TEXT	SEGMENT
_vehicle$ = 8						; size = 4
?Hook_VehicleGenerationComplete@@YAXPAVnc_VehicleGameObj@@@Z PROC ; Hook_VehicleGenerationComplete, COMDAT

; 1600 : 	_asm {
; 1601 : 		push ebp

	push	ebp

; 1602 : 		mov ebp, esp

	mov	ebp, esp

; 1603 : 		push vehicle

	push	DWORD PTR _vehicle$[ebp]

; 1604 : 		push ecx

	push	ecx

; 1605 : 		call Proc_VehicleGenerationComplete

	call	?Proc_VehicleGenerationComplete@@YGXPAVnc_BaseControllerClass@@PAVnc_VehicleGameObj@@@Z ; Proc_VehicleGenerationComplete

; 1606 : 		mov esp, ebp

	mov	esp, ebp

; 1607 : 		pop ebp

	pop	ebp

; 1608 : 		retn 4

	ret	4
?Hook_VehicleGenerationComplete@@YAXPAVnc_VehicleGameObj@@@Z ENDP ; Hook_VehicleGenerationComplete
_TEXT	ENDS
PUBLIC	??_C@_0BM@GKPJCEKF@Teams?5have?5been?5rebalanced?4?$AA@ ; `string'
PUBLIC	??_C@_0BJ@LIDJFGKJ@Teams?5have?5been?5remixed?4?$AA@ ; `string'
PUBLIC	??_C@_0DP@CIJDDOPC@?$FLRemix?$FN?5?$CFls?5has?5been?5assigned?5to@ ; `string'
PUBLIC	?Hook_NewTeamRebalance@@YGXXZ			; Hook_NewTeamRebalance
EXTRN	?Reset_Players@nc_cPlayerManager@@SAXXZ:PROC	; nc_cPlayerManager::Reset_Players
EXTRN	?Player_Array@nc_cPlayerManager@@2PAPAVnc_cPlayer@@A:DWORD ; nc_cPlayerManager::Player_Array
EXTRN	?gzRandom@@3VaRandom@@A:QWORD			; gzRandom
EXTRN	?Sort_Players@nc_cPlayerManager@@SAX_N@Z:PROC	; nc_cPlayerManager::Sort_Players
EXTRN	?Count@nc_cPlayerManager@@SAIXZ:PROC		; nc_cPlayerManager::Count
;	COMDAT ??_C@_0BM@GKPJCEKF@Teams?5have?5been?5rebalanced?4?$AA@
; File d:\source code\fds lib\new\fds_string.h
CONST	SEGMENT
??_C@_0BM@GKPJCEKF@Teams?5have?5been?5rebalanced?4?$AA@ DB 'Teams have be'
	DB	'en rebalanced.', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_0BJ@LIDJFGKJ@Teams?5have?5been?5remixed?4?$AA@
CONST	SEGMENT
??_C@_0BJ@LIDJFGKJ@Teams?5have?5been?5remixed?4?$AA@ DB 'Teams have been '
	DB	'remixed.', 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_0DP@CIJDDOPC@?$FLRemix?$FN?5?$CFls?5has?5been?5assigned?5to@
CONST	SEGMENT
??_C@_0DP@CIJDDOPC@?$FLRemix?$FN?5?$CFls?5has?5been?5assigned?5to@ DB '[R'
	DB	'emix] %ls has been assigned to team %d (Previous score: %f)', 0aH
	DB	00H						; `string'
CONST	ENDS
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$?Hook_NewTeamRebalance@@YGXXZ DD 0ffffffffH
	DD	FLAT:__unwindfunclet$?Hook_NewTeamRebalance@@YGXXZ$0
__ehfuncinfo$?Hook_NewTeamRebalance@@YGXXZ DD 019930522H
	DD	01H
	DD	FLAT:__unwindtable$?Hook_NewTeamRebalance@@YGXXZ
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	01H
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzhooks.cpp
xdata$x	ENDS
;	COMDAT ?Hook_NewTeamRebalance@@YGXXZ
_TEXT	SEGMENT
_msg$59671 = -76					; size = 4
tv264 = -72						; size = 4
$T69631 = -68						; size = 4
__$EHRec$ = -12						; size = 12
?Hook_NewTeamRebalance@@YGXXZ PROC			; Hook_NewTeamRebalance, COMDAT

; 1613 : void __stdcall Hook_NewTeamRebalance() {

	push	ebp
	mov	ebp, esp
	and	esp, -64				; ffffffc0H
	mov	eax, DWORD PTR fs:0
	push	-1
	push	__ehhandler$?Hook_NewTeamRebalance@@YGXXZ
	push	eax
	mov	DWORD PTR fs:0, esp
	sub	esp, 100				; 00000064H
	push	ebx
	push	ebp
	push	esi
	push	edi

; 1614 : 	if (nc_cPlayerManager::Count() > 0)

	call	?Count@nc_cPlayerManager@@SAIXZ		; nc_cPlayerManager::Count
	test	eax, eax
	jbe	$LN24@Hook_NewTe

; 1615 : 	{
; 1616 : 		nc_cPlayerManager::Sort_Players(true);

	push	1
	call	?Sort_Players@nc_cPlayerManager@@SAX_N@Z ; nc_cPlayerManager::Sort_Players

; 1617 : 		int rnd = gzRandom.GetInt(2, (INT_MAX - 1024)), activeCount = 0;

	mov	ecx, DWORD PTR ?gzRandom@@3VaRandom@@A
	mov	eax, ecx
	add	ecx, 1
	add	esp, 4
	cmp	eax, 64					; 00000040H
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A, ecx
	jle	SHORT $LN17@Hook_NewTe
	mov	ecx, 1
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A, ecx
$LN17@Hook_NewTe:
	mov	eax, DWORD PTR ?gzRandom@@3VaRandom@@A+4
	imul	eax, 22695475				; 015a4e33H
	add	eax, ecx
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A+4, eax
	shr	eax, 16					; 00000010H
	xor	edx, edx
	mov	ecx, 2147482622				; 7ffffbfeH
	div	ecx
	mov	ebx, edx
	add	ebx, 2
	xor	ebp, ebp
	mov	DWORD PTR tv264[esp+128], ebp
$LN6@Hook_NewTe:

; 1619 : 		{
; 1620 : 			nc_cPlayer *pData = nc_cPlayerManager::Player_Array[i];

	mov	edx, DWORD PTR ?Player_Array@nc_cPlayerManager@@2PAPAVnc_cPlayer@@A ; nc_cPlayerManager::Player_Array
	mov	eax, DWORD PTR tv264[esp+128]
	mov	edi, DWORD PTR [eax+edx]

; 1621 : 
; 1622 : 			if (pData == NULL)

	test	edi, edi
	je	$LN27@Hook_NewTe

; 1623 : 				break;
; 1624 : 
; 1625 : 			if (pData->IsActive)

	cmp	BYTE PTR [edi+1981], 0
	je	SHORT $LN5@Hook_NewTe

; 1626 : 			{
; 1627 : 				if ((activeCount % 2) == 1)

	mov	ecx, ebp
	and	ecx, -2147483647			; 80000001H
	jns	SHORT $LN31@Hook_NewTe
	dec	ecx
	or	ecx, -2					; fffffffeH
	inc	ecx
$LN31@Hook_NewTe:
	cmp	ecx, 1
	jne	SHORT $LN1@Hook_NewTe

; 1628 : 					rnd++;

	add	ebx, ecx
$LN1@Hook_NewTe:

; 1629 : 				int team = (rnd % 2);

	mov	esi, ebx
	and	esi, -2147483647			; 80000001H
	jns	SHORT $LN32@Hook_NewTe
	dec	esi
	or	esi, -2					; fffffffeH
	inc	esi
$LN32@Hook_NewTe:

; 1630 : 				pData->PlayerType = team;

	lea	edx, DWORD PTR $T69631[esp+128]
	push	edx
	lea	eax, DWORD PTR [edi+1900]
	push	eax
	mov	DWORD PTR $T69631[esp+136], esi
	call	?Set@nc_IntDataSafeClass@@QAG_NAAH@Z	; nc_IntDataSafeClass::Set

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

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

; 1632 : #ifdef DEVMSG
; 1633 : 				gzConsole::Out("[Remix] %ls has been assigned to team %d (Previous score: %f)\n", pData->PlayerName.m_Buffer, team, pData->Score.Get());

	lea	ecx, DWORD PTR [edi+4]
	call	?Get@nc_FloatDataSafeClass@@QAEMXZ	; nc_FloatDataSafeClass::Get
	mov	ecx, DWORD PTR [edi+1880]
	sub	esp, 8
	fstp	QWORD PTR [esp]
	push	esi
	push	ecx
	push	OFFSET ??_C@_0DP@CIJDDOPC@?$FLRemix?$FN?5?$CFls?5has?5been?5assigned?5to@
	call	?Out@gzConsole@@SAXPBDZZ		; gzConsole::Out
	add	esp, 20					; 00000014H

; 1634 : #endif
; 1635 : 				activeCount++;

	add	ebp, 1
$LN5@Hook_NewTe:

; 1618 : 		for (int i = 0; i >= 0; i++)

	add	DWORD PTR tv264[esp+128], 4
	jns	$LN6@Hook_NewTe
$LN27@Hook_NewTe:

; 1636 : 			}
; 1637 : 		}
; 1638 : 		nc_cPlayerManager::Reset_Players();

	call	?Reset_Players@nc_cPlayerManager@@SAXXZ	; nc_cPlayerManager::Reset_Players

; 1639 : 		nc_WideStringClass msg;

	mov	edx, DWORD PTR ?m_EmptyString@nc_WideStringClass@@2PAPA_WA ; nc_WideStringClass::m_EmptyString
	mov	eax, DWORD PTR [edx]
	mov	DWORD PTR _msg$59671[esp+128], eax

; 1640 : 
; 1641 : 		msg.Convert_From("Teams have been remixed.");

	push	OFFSET ??_C@_0BJ@LIDJFGKJ@Teams?5have?5been?5remixed?4?$AA@
	lea	ecx, DWORD PTR _msg$59671[esp+132]
	mov	DWORD PTR __$EHRec$[esp+140], 0
	call	?Convert_From@nc_WideStringClass@@QAEXPBD@Z ; nc_WideStringClass::Convert_From

; 1642 : 		Send_Text_Msg(msg, 0, false, -1, -1);

	push	-1
	push	-1
	push	0
	lea	ecx, DWORD PTR _msg$59671[esp+140]
	push	0
	push	ecx
	call	?Send_Text_Msg@@YAXABVnc_WideStringClass@@H_NHH@Z ; Send_Text_Msg
	add	esp, 20					; 00000014H

; 1643 : 
; 1644 : 		msg.Convert_From("Teams have been rebalanced.");

	push	OFFSET ??_C@_0BM@GKPJCEKF@Teams?5have?5been?5rebalanced?4?$AA@
	lea	ecx, DWORD PTR _msg$59671[esp+132]
	call	?Convert_From@nc_WideStringClass@@QAEXPBD@Z ; nc_WideStringClass::Convert_From

; 1645 : 		Send_Text_Msg(msg, 0, false, -1, -1);

	push	-1
	push	-1
	push	0
	lea	edx, DWORD PTR _msg$59671[esp+140]
	push	0
	push	edx
	call	?Send_Text_Msg@@YAXABVnc_WideStringClass@@H_NHH@Z ; Send_Text_Msg
	add	esp, 20					; 00000014H

; 1646 : 
; 1647 : 		msg.Free_String();

	lea	ecx, DWORD PTR _msg$59671[esp+128]
	call	?Free_String@nc_WideStringClass@@QAEXXZ	; nc_WideStringClass::Free_String

; 1648 : 	}

	lea	ecx, DWORD PTR _msg$59671[esp+128]
	mov	DWORD PTR __$EHRec$[esp+136], -1
	call	?Free_String@nc_WideStringClass@@QAEXXZ	; nc_WideStringClass::Free_String
$LN24@Hook_NewTe:

; 1649 : }

	mov	ecx, DWORD PTR __$EHRec$[esp+128]
	pop	edi
	mov	DWORD PTR fs:0, ecx
	pop	esi
	pop	ebp
	pop	ebx
	mov	esp, ebp
	pop	ebp
	ret	0
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$?Hook_NewTeamRebalance@@YGXXZ$0:
	lea	ecx, DWORD PTR _msg$59671[ebp]
	jmp	??1nc_WideStringClass@@QAE@XZ		; nc_WideStringClass::~nc_WideStringClass
__ehhandler$?Hook_NewTeamRebalance@@YGXXZ:
	mov	eax, OFFSET __ehfuncinfo$?Hook_NewTeamRebalance@@YGXXZ
	jmp	___CxxFrameHandler3
text$x	ENDS
?Hook_NewTeamRebalance@@YGXXZ ENDP			; Hook_NewTeamRebalance
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?$aVector@PAVHookBase@@@@UAE@XZ		; aVector<HookBase *>::~aVector<HookBase *>
; Function compile flags: /Ogtpy
; File d:\source code\alib\include\avector.h
;	COMDAT ??1?$aVector@PAVHookBase@@@@UAE@XZ
_TEXT	SEGMENT
??1?$aVector@PAVHookBase@@@@UAE@XZ PROC			; aVector<HookBase *>::~aVector<HookBase *>, COMDAT
; _this$ = ecx

; 34   : 	{

	push	esi
	push	edi
	mov	esi, ecx

; 35   : 		this->Clear();

	xor	edi, edi
	cmp	DWORD PTR [esi+4], edi
	mov	DWORD PTR [esi], OFFSET ??_7?$aVector@PAVHookBase@@@@6B@
	je	SHORT $LN8@aVector
	push	OFFSET ??_C@_00CNPNBAHC@?$AA@
	push	43					; 0000002bH
	push	OFFSET ??_C@_0CG@NJHDKABA@d?3?2source?5code?2alib?2include?2aVec@
	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@aVector:
	mov	DWORD PTR [esi+12], edi
	mov	DWORD PTR [esi+8], edi
	pop	edi
	pop	esi

; 36   : 	};

	ret	0
??1?$aVector@PAVHookBase@@@@UAE@XZ ENDP			; aVector<HookBase *>::~aVector<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?$aVector@PAVHookBase@@@@UAEPAXI@Z
_TEXT	SEGMENT
___flags$ = 8						; size = 4
??_G?$aVector@PAVHookBase@@@@UAEPAXI@Z PROC		; aVector<HookBase *>::`scalar deleting destructor', COMDAT
; _this$ = ecx
	push	esi
	mov	esi, ecx
	cmp	DWORD PTR [esi+4], 0
	mov	DWORD PTR [esi], OFFSET ??_7?$aVector@PAVHookBase@@@@6B@
	je	SHORT $LN6@scalar@6
	push	OFFSET ??_C@_00CNPNBAHC@?$AA@
	push	43					; 0000002bH
	push	OFFSET ??_C@_0CG@NJHDKABA@d?3?2source?5code?2alib?2include?2aVec@
	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
	mov	DWORD PTR [esi+12], 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?$aVector@PAVHookBase@@@@UAEPAXI@Z ENDP		; aVector<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	?Hook_PlayerRawDamage@@YGXXZ			; Hook_PlayerRawDamage
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzhooks.cpp
;	COMDAT ?Hook_PlayerRawDamage@@YGXXZ
_TEXT	SEGMENT
_CsDamage$ = -64					; size = 4
tv197 = -60						; size = 4
_evt$58893 = -56					; size = 56
?Hook_PlayerRawDamage@@YGXXZ PROC			; Hook_PlayerRawDamage, COMDAT

; 460  : void __stdcall Hook_PlayerRawDamage() {

	sub	esp, 64					; 00000040H

; 461  : 	nc_cCsDamageEvent *CsDamage;
; 462  : 	_asm
; 463  : 	{
; 464  : 		mov CsDamage, esi

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

; 465  : 	}
; 466  : 
; 467  : 	nc_cPlayer *pData = nc_cPlayerManager::Find_Player(CsDamage->Damager);

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

; 468  : 	if (pData)

	test	eax, eax
	je	$LN6@Hook_Playe@5

; 469  : 	{
; 470  : 		gzEventObjectDamage evt;

	fldz
	or	ecx, -1

; 471  : 		evt.m_attacker = (pData->Owner.Reference) ? pData->Owner.Reference->obj->As_DamageableGameObj() : NULL;

	cmp	DWORD PTR [eax+20], 0
	fstp	QWORD PTR _evt$58893[esp+72]
	mov	DWORD PTR _evt$58893[esp+80], 0
	mov	DWORD PTR _evt$58893[esp+84], ecx
	mov	DWORD PTR _evt$58893[esp+88], ecx
	mov	DWORD PTR _evt$58893[esp+64], OFFSET ??_7gzEventObjectDamage@@6B@
	mov	BYTE PTR _evt$58893[esp+112], 1
	je	SHORT $LN9@Hook_Playe@5
	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$58893[esp+96], eax
	jmp	SHORT $LN10@Hook_Playe@5
$LN9@Hook_Playe@5:
	mov	DWORD PTR _evt$58893[esp+96], 0
$LN10@Hook_Playe@5:

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

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

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

	mov	eax, DWORD PTR _CsDamage$[esp+68]
	fld	DWORD PTR [eax+1728]
	fstp	DWORD PTR _evt$58893[esp+108]

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

	mov	edx, DWORD PTR [eax+1732]

; 475  : 		evt.SetEventType(gzEVT_PLAYER_RAWDAMAGE);
; 476  : 		gzEvtManager::ProcessEvent(evt);

	lea	eax, DWORD PTR _evt$58893[esp+68]
	push	eax
	mov	DWORD PTR _evt$58893[esp+116], edx
	mov	DWORD PTR _evt$58893[esp+92], 8200	; 00002008H
	call	?ProcessEvent@gzEvtManager@@SAPAVgzEvtHandler@@AAVgzEventBase@@@Z ; gzEvtManager::ProcessEvent

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

	mov	eax, DWORD PTR _evt$58893[esp+108]
	add	esp, 8
	test	eax, eax
	je	SHORT $LN6@Hook_Playe@5
	lea	ecx, DWORD PTR [eax+1852]
	call	?Get@nc_FloatDataSafeClass@@QAEMXZ	; nc_FloatDataSafeClass::Get
	fstp	DWORD PTR tv197[esp+64]
	mov	ecx, DWORD PTR _evt$58893[esp+100]
	add	ecx, 1840				; 00000730H
	call	?Get@nc_FloatDataSafeClass@@QAEMXZ	; nc_FloatDataSafeClass::Get
	fadd	DWORD PTR tv197[esp+64]
	fcomp	DWORD PTR __real@00000000
	fnstsw	ax
	test	ah, 65					; 00000041H
	jne	SHORT $LN6@Hook_Playe@5

; 479  : 		{
; 480  : 			if (!evt.CanContinue())

	cmp	BYTE PTR _evt$58893[esp+112], 0

; 481  : 			{
; 482  : 				CsDamage->Set_Delete_Pending();

	mov	ecx, DWORD PTR _CsDamage$[esp+64]
	mov	edx, DWORD PTR [ecx]

; 483  : 				return;

	je	SHORT $LN25@Hook_Playe@5

; 484  : 			}
; 485  : 			else
; 486  : 				CsDamage->Act();

	mov	eax, DWORD PTR [edx+104]

; 487  : 		}
; 488  : 		else
; 489  : 			CsDamage->Set_Delete_Pending();
; 490  : 	}
; 491  : 	else
; 492  : 		CsDamage->Set_Delete_Pending();

	call	eax

; 493  : }

	add	esp, 64					; 00000040H
	ret	0
$LN6@Hook_Playe@5:

; 487  : 		}
; 488  : 		else
; 489  : 			CsDamage->Set_Delete_Pending();
; 490  : 	}
; 491  : 	else
; 492  : 		CsDamage->Set_Delete_Pending();

	mov	ecx, DWORD PTR _CsDamage$[esp+64]
	mov	edx, DWORD PTR [ecx]
$LN25@Hook_Playe@5:
	mov	eax, DWORD PTR [edx+44]
	call	eax

; 493  : }

	add	esp, 64					; 00000040H
	ret	0
?Hook_PlayerRawDamage@@YGXXZ ENDP			; Hook_PlayerRawDamage
_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\gzgm\gzeventbase.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
	DD	00H
	DD	FLAT:__unwindfunclet$?Proc_WOLPage@@YG_NPBD0@Z$1
	DD	00H
	DD	FLAT:__unwindfunclet$?Proc_WOLPage@@YG_NPBD0@Z$2
__ehfuncinfo$?Proc_WOLPage@@YG_NPBD0@Z DD 019930522H
	DD	03H
	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\gzhooks.cpp
xdata$x	ENDS
;	COMDAT ?Proc_WOLPage@@YG_NPBD0@Z
_TEXT	SEGMENT
$T69749 = -76						; size = 8
$T69748 = -76						; size = 8
_evt$ = -68						; size = 56
__$EHRec$ = -12						; size = 12
_sender$ = 8						; size = 4
_message$ = 12						; size = 4
?Proc_WOLPage@@YG_NPBD0@Z PROC				; Proc_WOLPage, COMDAT

; 1109 : {

	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, 64					; 00000040H
	push	esi

; 1110 : 	gzEventNetWolPage evt;

	lea	ecx, DWORD PTR _evt$[esp+80]
	call	??0gzEventNetWolPage@@QAE@XZ

; 1111 : 	evt.m_sender = sender;

	mov	esi, DWORD PTR _sender$[esp+76]
	push	esi
	lea	ecx, DWORD PTR $T69748[esp+84]
	mov	DWORD PTR __$EHRec$[esp+92], 0
	call	??0aString@@QAE@PBD@Z			; aString::aString
	lea	eax, DWORD PTR $T69748[esp+80]
	push	eax
	lea	ecx, DWORD PTR _evt$[esp+116]
	mov	BYTE PTR __$EHRec$[esp+92], 1
	call	??4aString@@QAEAAV0@ABV0@@Z		; aString::operator=
	lea	ecx, DWORD PTR $T69748[esp+80]
	mov	BYTE PTR __$EHRec$[esp+88], 0
	call	??1aStringBase@@UAE@XZ			; aStringBase::~aStringBase

; 1112 : 	evt.m_message = message;

	mov	ecx, DWORD PTR _message$[esp+76]
	push	ecx
	lea	ecx, DWORD PTR $T69749[esp+84]
	call	??0aString@@QAE@PBD@Z			; aString::aString
	lea	edx, DWORD PTR $T69749[esp+80]
	push	edx
	lea	ecx, DWORD PTR _evt$[esp+124]
	mov	BYTE PTR __$EHRec$[esp+92], 2
	call	??4aString@@QAEAAV0@ABV0@@Z		; aString::operator=
	lea	ecx, DWORD PTR $T69749[esp+80]
	mov	BYTE PTR __$EHRec$[esp+88], 0
	call	??1aStringBase@@UAE@XZ			; aStringBase::~aStringBase

; 1113 : 	evt.SetEventType(gzEVT_NET_WOLPAGE);
; 1114 : 	gzEvtHandler *retObj = gzEvtManager::ProcessEvent(evt);

	lea	eax, DWORD PTR _evt$[esp+80]
	push	eax
	mov	DWORD PTR _evt$[esp+104], 16384		; 00004000H
	call	?ProcessEvent@gzEvtManager@@SAPAVgzEvtHandler@@AAVgzEventBase@@@Z ; gzEvtManager::ProcessEvent
	add	esp, 4

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

	cmp	BYTE PTR _evt$[esp+128], 0
	jne	SHORT $LN1@Proc_WOLPa

; 1116 : 	{
; 1117 : #if ISDEV()
; 1118 : 		gzConsole::Out("[%s] WOL Page from %s refused by class \"%s\".\n",
; 1119 : 			__FUNCTION__,
; 1120 : 			sender,
; 1121 : 			retObj->GetName()
; 1122 : 		);

	mov	edx, DWORD PTR [eax]
	mov	ecx, eax
	mov	eax, DWORD PTR [edx+4]
	call	eax
	push	eax
	push	esi
	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

; 1123 : #endif
; 1124 : 		return false;

	lea	ecx, DWORD PTR _evt$[esp+80]
	mov	DWORD PTR __$EHRec$[esp+88], -1
	call	??1gzEventNetWolPage@@QAE@XZ
	xor	al, al
	pop	esi

; 1127 : }

	mov	ecx, DWORD PTR __$EHRec$[esp+76]
	mov	DWORD PTR fs:0, ecx
	add	esp, 76					; 0000004cH
	ret	8
$LN1@Proc_WOLPa:

; 1125 : 	}
; 1126 : 	return true;

	lea	ecx, DWORD PTR _evt$[esp+80]
	mov	DWORD PTR __$EHRec$[esp+88], -1
	call	??1gzEventNetWolPage@@QAE@XZ

; 1127 : }

	mov	ecx, DWORD PTR __$EHRec$[esp+80]
	mov	al, 1
	pop	esi
	mov	DWORD PTR fs:0, ecx
	add	esp, 76					; 0000004cH
	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
__unwindfunclet$?Proc_WOLPage@@YG_NPBD0@Z$1:
	lea	ecx, DWORD PTR $T69748[ebp]
	jmp	??1aString@@UAE@XZ
__unwindfunclet$?Proc_WOLPage@@YG_NPBD0@Z$2:
	lea	ecx, DWORD PTR $T69749[ebp]
	jmp	??1aString@@UAE@XZ
__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

; 1130 : 	_asm {
; 1131 : 		mov eax, [esp+0xC]

	mov	eax, DWORD PTR [esp+12]

; 1132 : 		add eax, 0x24

	add	eax, 36					; 00000024H

; 1133 : 		push [esp+0x10]

	push	DWORD PTR [esp+16]

; 1134 : 		push eax

	push	eax

; 1135 : 		call Proc_WOLPage

	call	?Proc_WOLPage@@YG_NPBD0@Z		; Proc_WOLPage

; 1136 : 		test al, al

	test	al, al

; 1137 : 		jz block_page

	je	SHORT $block_page$59291

; 1138 : 		sub esp, 0xC

	sub	esp, 12					; 0000000cH

; 1139 : 		push esi

	push	esi

; 1140 : 		mov esi, [esp+0x14]

	mov	esi, DWORD PTR [esp+20]

; 1141 : 		mov eax, 0x4C1E54

	mov	eax, 4988500				; 004c1e54H

; 1142 : 		jmp eax

	jmp	eax
$block_page$59291:

; 1143 : block_page:
; 1144 : 		xor eax, eax

	xor	eax, eax

; 1145 : 		retn 0x10

	ret	16					; 00000010H
?Hook_WOLPage@@YAXXZ ENDP				; Hook_WOLPage
_TEXT	ENDS
EXTRN	_atexit:PROC
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzinc.h
;	COMDAT ??__EgzCritical@@YAXXZ
text$yc	SEGMENT
??__EgzCritical@@YAXXZ PROC				; `dynamic initializer for 'gzCritical'', COMDAT

; 53   : static aCriticalSection gzCritical;

	push	OFFSET _gzCritical
	call	DWORD PTR __imp__InitializeCriticalSection@4
	push	OFFSET ??__FgzCritical@@YAXXZ		; `dynamic atexit destructor for 'gzCritical''
	call	_atexit
	pop	ecx
	ret	0
??__EgzCritical@@YAXXZ ENDP				; `dynamic initializer for 'gzCritical''
text$yc	ENDS
PUBLIC	?m_list@gzHookManager@@2V?$aVector@PAVHookBase@@@@A ; gzHookManager::m_list
_DATA	SEGMENT
?m_list@gzHookManager@@2V?$aVector@PAVHookBase@@@@A DD FLAT:??_7?$aVector@PAVHookBase@@@@6B@ ; gzHookManager::m_list
	DD	00H
	DD	00H
	DD	00H
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzhooks.cpp
_DATA	ENDS
;	COMDAT ??__E?m_list@gzHookManager@@2V?$aVector@PAVHookBase@@@@A@@YAXXZ
text$yc	SEGMENT
??__E?m_list@gzHookManager@@2V?$aVector@PAVHookBase@@@@A@@YAXXZ PROC ; `dynamic initializer for 'gzHookManager::m_list'', COMDAT

; 10   : aVector<HookBase *> gzHookManager::m_list;

	push	OFFSET ??__F?m_list@gzHookManager@@2V?$aVector@PAVHookBase@@@@A@@YAXXZ ; `dynamic atexit destructor for 'gzHookManager::m_list''
	call	_atexit
	pop	ecx
	ret	0
??__E?m_list@gzHookManager@@2V?$aVector@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

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

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

; 64   : 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@_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

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

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

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

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

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

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

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

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

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

; 621  : 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@_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

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

; 703  : 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@_0BE@MEBFKKAK@Object?5re?9init?5hook?$AA@	; `string'
;	COMDAT ??_C@_0BE@MEBFKKAK@Object?5re?9init?5hook?$AA@
CONST	SEGMENT
??_C@_0BE@MEBFKKAK@Object?5re?9init?5hook?$AA@ DB 'Object re-init hook', 00H ; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Eori@@YAXXZ
text$yc	SEGMENT
??__Eori@@YAXXZ PROC					; `dynamic initializer for 'ori'', COMDAT

; 723  : HookJumpClass ori("Object re-init hook", 0x6B5E75, &Hook_ObjReInit);

	push	OFFSET ?Hook_ObjReInit@@YAXXZ		; Hook_ObjReInit
	push	7036533					; 006b5e75H
	push	OFFSET ??_C@_0BE@MEBFKKAK@Object?5re?9init?5hook?$AA@
	mov	ecx, OFFSET ?ori@@3VHookJumpClass@@A	; ori
	call	??0HookJumpClass@@QAE@PBDKPAX@Z		; HookJumpClass::HookJumpClass
	push	OFFSET ??__Fori@@YAXXZ			; `dynamic atexit destructor for 'ori''
	call	_atexit
	pop	ecx
	ret	0
??__Eori@@YAXXZ ENDP					; `dynamic initializer for 'ori''
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

; 772  : 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@_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

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

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

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

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

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

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

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

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

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

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

; 1038 : 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@ELJGEBDJ@C4?5creation?5hook?$AA@	; `string'
;	COMDAT ??_C@_0BB@ELJGEBDJ@C4?5creation?5hook?$AA@
CONST	SEGMENT
??_C@_0BB@ELJGEBDJ@C4?5creation?5hook?$AA@ DB 'C4 creation hook', 00H ; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Ec4ch@@YAXXZ
text$yc	SEGMENT
??__Ec4ch@@YAXXZ PROC					; `dynamic initializer for 'c4ch'', COMDAT

; 1053 : HookCallClass c4ch("C4 creation hook", 0x70AD79, &Hook_C4Creation);

	push	OFFSET ?Hook_C4Creation@@YAHH@Z		; Hook_C4Creation
	push	7384441					; 0070ad79H
	push	OFFSET ??_C@_0BB@ELJGEBDJ@C4?5creation?5hook?$AA@
	mov	ecx, OFFSET ?c4ch@@3VHookCallClass@@A	; c4ch
	call	??0HookCallClass@@QAE@PBDKPAX@Z		; HookCallClass::HookCallClass
	push	OFFSET ??__Fc4ch@@YAXXZ			; `dynamic atexit destructor for 'c4ch''
	call	_atexit
	pop	ecx
	ret	0
??__Ec4ch@@YAXXZ ENDP					; `dynamic initializer for 'c4ch''
text$yc	ENDS
PUBLIC	??_C@_0BH@NNLJNHLG@Building?5creation?5hook?$AA@ ; `string'
;	COMDAT ??_C@_0BH@NNLJNHLG@Building?5creation?5hook?$AA@
CONST	SEGMENT
??_C@_0BH@NNLJNHLG@Building?5creation?5hook?$AA@ DB 'Building creation ho'
	DB	'ok', 00H					; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Ebih@@YAXXZ
text$yc	SEGMENT
??__Ebih@@YAXXZ PROC					; `dynamic initializer for 'bih'', COMDAT

; 1073 : HookCallClass bih("Building creation hook", 0x67FB99, &Hook_BuildingInit);

	push	OFFSET ?Hook_BuildingInit@@YGXXZ	; Hook_BuildingInit
	push	6814617					; 0067fb99H
	push	OFFSET ??_C@_0BH@NNLJNHLG@Building?5creation?5hook?$AA@
	mov	ecx, OFFSET ?bih@@3VHookCallClass@@A	; bih
	call	??0HookCallClass@@QAE@PBDKPAX@Z		; HookCallClass::HookCallClass
	push	OFFSET ??__Fbih@@YAXXZ			; `dynamic atexit destructor for 'bih''
	call	_atexit
	pop	ecx
	ret	0
??__Ebih@@YAXXZ ENDP					; `dynamic initializer for 'bih''
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

; 1102 : 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''
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

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

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

; 1260 : 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@_0BI@HAFLJMDI@Enemy?5seen?5vehicle?5hook?$AA@ ; `string'
;	COMDAT ??_C@_0BI@HAFLJMDI@Enemy?5seen?5vehicle?5hook?$AA@
CONST	SEGMENT
??_C@_0BI@HAFLJMDI@Enemy?5seen?5vehicle?5hook?$AA@ DB 'Enemy seen vehicle'
	DB	' hook', 00H					; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Eesvh@@YAXXZ
text$yc	SEGMENT
??__Eesvh@@YAXXZ PROC					; `dynamic initializer for 'esvh'', COMDAT

; 1274 : HookCallClass esvh("Enemy seen vehicle hook", 0x69EB89, &Hook_EnemySeenVehicle);

	push	OFFSET ?Hook_EnemySeenVehicle@@YG_NPAVnc_DamageableGameObj@@@Z ; Hook_EnemySeenVehicle
	push	6941577					; 0069eb89H
	push	OFFSET ??_C@_0BI@HAFLJMDI@Enemy?5seen?5vehicle?5hook?$AA@
	mov	ecx, OFFSET ?esvh@@3VHookCallClass@@A	; esvh
	call	??0HookCallClass@@QAE@PBDKPAX@Z		; HookCallClass::HookCallClass
	push	OFFSET ??__Fesvh@@YAXXZ			; `dynamic atexit destructor for 'esvh''
	call	_atexit
	pop	ecx
	ret	0
??__Eesvh@@YAXXZ ENDP					; `dynamic initializer for 'esvh''
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

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

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

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

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

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

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

; 1382 : 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@_0BP@NLENNOJF@Infinity?5Inventory?5startup?5fix?$AA@ ; `string'
;	COMDAT ??_C@_0BP@NLENNOJF@Infinity?5Inventory?5startup?5fix?$AA@
CONST	SEGMENT
??_C@_0BP@NLENNOJF@Infinity?5Inventory?5startup?5fix?$AA@ DB 'Infinity In'
	DB	'ventory startup fix', 00H			; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Euiafh@@YAXXZ
text$yc	SEGMENT
??__Euiafh@@YAXXZ PROC					; `dynamic initializer for 'uiafh'', COMDAT

; 1405 : HookCallClass uiafh("Infinity Inventory startup fix", 0x6F38A2, &Patch_UnlimitedInventoryAmmoFix);

	push	OFFSET ?Patch_UnlimitedInventoryAmmoFix@@YAHXZ ; Patch_UnlimitedInventoryAmmoFix
	push	7288994					; 006f38a2H
	push	OFFSET ??_C@_0BP@NLENNOJF@Infinity?5Inventory?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

; 1423 : 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@_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

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

; 1435 : 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@_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

; 1450 : 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@_0BM@ONBBBPP@RefineryGameObj?3?3Think?5hook?$AA@ ; `string'
;	COMDAT ??_C@_0BM@ONBBBPP@RefineryGameObj?3?3Think?5hook?$AA@
CONST	SEGMENT
??_C@_0BM@ONBBBPP@RefineryGameObj?3?3Think?5hook?$AA@ DB 'RefineryGameObj'
	DB	'::Think hook', 00H				; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Erth@@YAXXZ
text$yc	SEGMENT
??__Erth@@YAXXZ PROC					; `dynamic initializer for 'rth'', COMDAT

; 1550 : HookJumpClass rth("RefineryGameObj::Think hook", 0x742D40, Hook_RefineryThink);

	push	OFFSET ?Hook_RefineryThink@@YAXXZ	; Hook_RefineryThink
	push	7613760					; 00742d40H
	push	OFFSET ??_C@_0BM@ONBBBPP@RefineryGameObj?3?3Think?5hook?$AA@
	mov	ecx, OFFSET ?rth@@3VHookJumpClass@@A	; rth
	call	??0HookJumpClass@@QAE@PBDKPAX@Z		; HookJumpClass::HookJumpClass
	push	OFFSET ??__Frth@@YAXXZ			; `dynamic atexit destructor for 'rth''
	call	_atexit
	pop	ecx
	ret	0
??__Erth@@YAXXZ ENDP					; `dynamic initializer for 'rth''
text$yc	ENDS
PUBLIC	??_C@_0CE@CEDKCMJF@Harvester?5destroy?5hook?5for?5Refin@ ; `string'
;	COMDAT ??_C@_0CE@CEDKCMJF@Harvester?5destroy?5hook?5for?5Refin@
CONST	SEGMENT
??_C@_0CE@CEDKCMJF@Harvester?5destroy?5hook?5for?5Refin@ DB 'Harvester de'
	DB	'stroy hook for Refinery', 00H		; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Erhdh@@YAXXZ
text$yc	SEGMENT
??__Erhdh@@YAXXZ PROC					; `dynamic initializer for 'rhdh'', COMDAT

; 1578 : HookJumpClass rhdh("Harvester destroy hook for Refinery", 0x743380, &Hook_RefineryHarvesterDestroyed);

	push	OFFSET ?Hook_RefineryHarvesterDestroyed@@YAXXZ ; Hook_RefineryHarvesterDestroyed
	push	7615360					; 00743380H
	push	OFFSET ??_C@_0CE@CEDKCMJF@Harvester?5destroy?5hook?5for?5Refin@
	mov	ecx, OFFSET ?rhdh@@3VHookJumpClass@@A	; rhdh
	call	??0HookJumpClass@@QAE@PBDKPAX@Z		; HookJumpClass::HookJumpClass
	push	OFFSET ??__Frhdh@@YAXXZ			; `dynamic atexit destructor for 'rhdh''
	call	_atexit
	pop	ecx
	ret	0
??__Erhdh@@YAXXZ ENDP					; `dynamic initializer for 'rhdh''
text$yc	ENDS
PUBLIC	??_C@_0CB@DCFALNHJ@Vehicle?5generation?5complete?5hook@ ; `string'
;	COMDAT ??_C@_0CB@DCFALNHJ@Vehicle?5generation?5complete?5hook@
CONST	SEGMENT
??_C@_0CB@DCFALNHJ@Vehicle?5generation?5complete?5hook@ DB 'Vehicle gener'
	DB	'ation complete hook', 00H			; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Evgch@@YAXXZ
text$yc	SEGMENT
??__Evgch@@YAXXZ PROC					; `dynamic initializer for 'vgch'', COMDAT

; 1611 : HookJumpClass vgch("Vehicle generation complete hook", 0x6EE4C0, &Hook_VehicleGenerationComplete);

	push	OFFSET ?Hook_VehicleGenerationComplete@@YAXPAVnc_VehicleGameObj@@@Z ; Hook_VehicleGenerationComplete
	push	7267520					; 006ee4c0H
	push	OFFSET ??_C@_0CB@DCFALNHJ@Vehicle?5generation?5complete?5hook@
	mov	ecx, OFFSET ?vgch@@3VHookJumpClass@@A	; vgch
	call	??0HookJumpClass@@QAE@PBDKPAX@Z		; HookJumpClass::HookJumpClass
	push	OFFSET ??__Fvgch@@YAXXZ			; `dynamic atexit destructor for 'vgch''
	call	_atexit
	pop	ecx
	ret	0
??__Evgch@@YAXXZ ENDP					; `dynamic initializer for 'vgch''
text$yc	ENDS
PUBLIC	??_C@_0BE@INGJPJJ@New?5Team?5Rebalancer?$AA@	; `string'
;	COMDAT ??_C@_0BE@INGJPJJ@New?5Team?5Rebalancer?$AA@
CONST	SEGMENT
??_C@_0BE@INGJPJJ@New?5Team?5Rebalancer?$AA@ DB 'New Team Rebalancer', 00H ; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Entr@@YAXXZ
text$yc	SEGMENT
??__Entr@@YAXXZ PROC					; `dynamic initializer for 'ntr'', COMDAT

; 1650 : HookCallClass ntr("New Team Rebalancer", 0x475AB3, &Hook_NewTeamRebalance);

	push	OFFSET ?Hook_NewTeamRebalance@@YGXXZ	; Hook_NewTeamRebalance
	push	4676275					; 00475ab3H
	push	OFFSET ??_C@_0BE@INGJPJJ@New?5Team?5Rebalancer?$AA@
	mov	ecx, OFFSET ?ntr@@3VHookCallClass@@A	; ntr
	call	??0HookCallClass@@QAE@PBDKPAX@Z		; HookCallClass::HookCallClass
	push	OFFSET ??__Fntr@@YAXXZ			; `dynamic atexit destructor for 'ntr''
	call	_atexit
	pop	ecx
	ret	0
??__Entr@@YAXXZ ENDP					; `dynamic initializer for 'ntr''
text$yc	ENDS
PUBLIC	??_C@_0CA@MFFAPAIP@New?5Team?5Rebalancer?5hook?5byte?51?$AA@ ; `string'
;	COMDAT ??_C@_0CA@MFFAPAIP@New?5Team?5Rebalancer?5hook?5byte?51?$AA@
CONST	SEGMENT
??_C@_0CA@MFFAPAIP@New?5Team?5Rebalancer?5hook?5byte?51?$AA@ DB 'New Team'
	DB	' Rebalancer hook byte 1', 00H		; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Entrhb1@@YAXXZ
text$yc	SEGMENT
??__Entrhb1@@YAXXZ PROC					; `dynamic initializer for 'ntrhb1'', COMDAT

; 1651 : PatchByteClass ntrhb1("New Team Rebalancer hook byte 1", 0x471997, 0x90, 5);

	push	5
	push	144					; 00000090H
	push	4659607					; 00471997H
	push	OFFSET ??_C@_0CA@MFFAPAIP@New?5Team?5Rebalancer?5hook?5byte?51?$AA@
	mov	ecx, OFFSET ?ntrhb1@@3VPatchByteClass@@A ; ntrhb1
	call	??0PatchByteClass@@QAE@PBDKEH@Z		; PatchByteClass::PatchByteClass
	push	OFFSET ??__Fntrhb1@@YAXXZ		; `dynamic atexit destructor for 'ntrhb1''
	call	_atexit
	pop	ecx
	ret	0
??__Entrhb1@@YAXXZ ENDP					; `dynamic initializer for 'ntrhb1''
text$yc	ENDS
PUBLIC	??_C@_0CA@OOHNKDEM@New?5Team?5Rebalancer?5hook?5byte?52?$AA@ ; `string'
;	COMDAT ??_C@_0CA@OOHNKDEM@New?5Team?5Rebalancer?5hook?5byte?52?$AA@
CONST	SEGMENT
??_C@_0CA@OOHNKDEM@New?5Team?5Rebalancer?5hook?5byte?52?$AA@ DB 'New Team'
	DB	' Rebalancer hook byte 2', 00H		; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Entrb2@@YAXXZ
text$yc	SEGMENT
??__Entrb2@@YAXXZ PROC					; `dynamic initializer for 'ntrb2'', COMDAT

; 1652 : PatchByteClass ntrb2("New Team Rebalancer hook byte 2", 0x475A70, 0x90, 5);

	push	5
	push	144					; 00000090H
	push	4676208					; 00475a70H
	push	OFFSET ??_C@_0CA@OOHNKDEM@New?5Team?5Rebalancer?5hook?5byte?52?$AA@
	mov	ecx, OFFSET ?ntrb2@@3VPatchByteClass@@A	; ntrb2
	call	??0PatchByteClass@@QAE@PBDKEH@Z		; PatchByteClass::PatchByteClass
	push	OFFSET ??__Fntrb2@@YAXXZ		; `dynamic atexit destructor for 'ntrb2''
	call	_atexit
	pop	ecx
	ret	0
??__Entrb2@@YAXXZ ENDP					; `dynamic initializer for 'ntrb2''
text$yc	ENDS
PUBLIC	??_C@_0CD@HACILNBK@GameSpy?5Query?5and?5Response?5block@ ; `string'
;	COMDAT ??_C@_0CD@HACILNBK@GameSpy?5Query?5and?5Response?5block@
CONST	SEGMENT
??_C@_0CD@HACILNBK@GameSpy?5Query?5and?5Response?5block@ DB 'GameSpy Quer'
	DB	'y and Response blocker', 00H		; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Egqrb@@YAXXZ
text$yc	SEGMENT
??__Egqrb@@YAXXZ PROC					; `dynamic initializer for 'gqrb'', COMDAT

; 1654 : PatchByteClass gqrb("GameSpy Query and Response blocker", 0x774BD0, 0xC3, 1);

	push	1
	push	195					; 000000c3H
	push	7818192					; 00774bd0H
	push	OFFSET ??_C@_0CD@HACILNBK@GameSpy?5Query?5and?5Response?5block@
	mov	ecx, OFFSET ?gqrb@@3VPatchByteClass@@A	; gqrb
	call	??0PatchByteClass@@QAE@PBDKEH@Z		; PatchByteClass::PatchByteClass
	push	OFFSET ??__Fgqrb@@YAXXZ			; `dynamic atexit destructor for 'gqrb''
	call	_atexit
	pop	ecx
	ret	0
??__Egqrb@@YAXXZ ENDP					; `dynamic initializer for 'gqrb''
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

; 1688 : 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@_0BE@JFLKBOEP@Harvester?5dock?5hook?$AA@	; `string'
;	COMDAT ??_C@_0BE@JFLKBOEP@Harvester?5dock?5hook?$AA@
CONST	SEGMENT
??_C@_0BE@JFLKBOEP@Harvester?5dock?5hook?$AA@ DB 'Harvester dock hook', 00H ; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Erohdh@@YAXXZ
text$yc	SEGMENT
??__Erohdh@@YAXXZ PROC					; `dynamic initializer for 'rohdh'', COMDAT

; 1706 : HookJumpClass rohdh("Harvester dock hook", 0x7433A0, &Hook_RefineryOnHarvesterDock);

	push	OFFSET ?Hook_RefineryOnHarvesterDock@@YAXXZ ; Hook_RefineryOnHarvesterDock
	push	7615392					; 007433a0H
	push	OFFSET ??_C@_0BE@JFLKBOEP@Harvester?5dock?5hook?$AA@
	mov	ecx, OFFSET ?rohdh@@3VHookJumpClass@@A	; rohdh
	call	??0HookJumpClass@@QAE@PBDKPAX@Z		; HookJumpClass::HookJumpClass
	push	OFFSET ??__Frohdh@@YAXXZ		; `dynamic atexit destructor for 'rohdh''
	call	_atexit
	pop	ecx
	ret	0
??__Erohdh@@YAXXZ ENDP					; `dynamic initializer for 'rohdh''
text$yc	ENDS
PUBLIC	??_C@_0CA@CFDHIFEO@Process?5Connection?5Request?5hook?$AA@ ; `string'
;	COMDAT ??_C@_0CA@CFDHIFEO@Process?5Connection?5Request?5hook?$AA@
CONST	SEGMENT
??_C@_0CA@CFDHIFEO@Process?5Connection?5Request?5hook?$AA@ DB 'Process Co'
	DB	'nnection Request hook', 00H			; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??__Epcr@@YAXXZ
text$yc	SEGMENT
??__Epcr@@YAXXZ PROC					; `dynamic initializer for 'pcr'', COMDAT

; 1790 : HookCallClass pcr("Process Connection Request hook", 0x6185E8, &Hook_ProcessConnectionRequest);

	push	OFFSET ?Hook_ProcessConnectionRequest@@YGXAAVnc_cPacket@@@Z ; Hook_ProcessConnectionRequest
	push	6391272					; 006185e8H
	push	OFFSET ??_C@_0CA@CFDHIFEO@Process?5Connection?5Request?5hook?$AA@
	mov	ecx, OFFSET ?pcr@@3VHookCallClass@@A	; pcr
	call	??0HookCallClass@@QAE@PBDKPAX@Z		; HookCallClass::HookCallClass
	push	OFFSET ??__Fpcr@@YAXXZ			; `dynamic atexit destructor for 'pcr''
	call	_atexit
	pop	ecx
	ret	0
??__Epcr@@YAXXZ ENDP					; `dynamic initializer for 'pcr''
; Function compile flags: /Ogtpy
text$yc	ENDS
;	COMDAT ??__FgzCritical@@YAXXZ
text$yd	SEGMENT
??__FgzCritical@@YAXXZ PROC				; `dynamic atexit destructor for 'gzCritical'', COMDAT
	push	OFFSET _gzCritical
	call	DWORD PTR __imp__DeleteCriticalSection@4
	ret	0
??__FgzCritical@@YAXXZ ENDP				; `dynamic atexit destructor for 'gzCritical''
; Function compile flags: /Ogtpy
text$yd	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 ??__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 ??__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 ??__Fori@@YAXXZ
text$yd	SEGMENT
??__Fori@@YAXXZ PROC					; `dynamic atexit destructor for 'ori'', COMDAT
	mov	ecx, OFFSET ?ori@@3VHookJumpClass@@A	; ori
	jmp	??1HookJumpClass@@UAE@XZ		; HookJumpClass::~HookJumpClass
??__Fori@@YAXXZ ENDP					; `dynamic atexit destructor for 'ori''
; 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 ??__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 ??__Fc4ch@@YAXXZ
text$yd	SEGMENT
??__Fc4ch@@YAXXZ PROC					; `dynamic atexit destructor for 'c4ch'', COMDAT
	mov	ecx, OFFSET ?c4ch@@3VHookCallClass@@A	; c4ch
	jmp	??1HookCallClass@@UAE@XZ		; HookCallClass::~HookCallClass
??__Fc4ch@@YAXXZ ENDP					; `dynamic atexit destructor for 'c4ch''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Fbih@@YAXXZ
text$yd	SEGMENT
??__Fbih@@YAXXZ PROC					; `dynamic atexit destructor for 'bih'', COMDAT
	mov	ecx, OFFSET ?bih@@3VHookCallClass@@A	; bih
	jmp	??1HookCallClass@@UAE@XZ		; HookCallClass::~HookCallClass
??__Fbih@@YAXXZ ENDP					; `dynamic atexit destructor for 'bih''
; 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 ??__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 ??__Fesvh@@YAXXZ
text$yd	SEGMENT
??__Fesvh@@YAXXZ PROC					; `dynamic atexit destructor for 'esvh'', COMDAT
	mov	ecx, OFFSET ?esvh@@3VHookCallClass@@A	; esvh
	jmp	??1HookCallClass@@UAE@XZ		; HookCallClass::~HookCallClass
??__Fesvh@@YAXXZ ENDP					; `dynamic atexit destructor for 'esvh''
; 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 ??__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 ??__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 ??__Frth@@YAXXZ
text$yd	SEGMENT
??__Frth@@YAXXZ PROC					; `dynamic atexit destructor for 'rth'', COMDAT
	mov	ecx, OFFSET ?rth@@3VHookJumpClass@@A	; rth
	jmp	??1HookJumpClass@@UAE@XZ		; HookJumpClass::~HookJumpClass
??__Frth@@YAXXZ ENDP					; `dynamic atexit destructor for 'rth''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Frhdh@@YAXXZ
text$yd	SEGMENT
??__Frhdh@@YAXXZ PROC					; `dynamic atexit destructor for 'rhdh'', COMDAT
	mov	ecx, OFFSET ?rhdh@@3VHookJumpClass@@A	; rhdh
	jmp	??1HookJumpClass@@UAE@XZ		; HookJumpClass::~HookJumpClass
??__Frhdh@@YAXXZ ENDP					; `dynamic atexit destructor for 'rhdh''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Fvgch@@YAXXZ
text$yd	SEGMENT
??__Fvgch@@YAXXZ PROC					; `dynamic atexit destructor for 'vgch'', COMDAT
	mov	ecx, OFFSET ?vgch@@3VHookJumpClass@@A	; vgch
	jmp	??1HookJumpClass@@UAE@XZ		; HookJumpClass::~HookJumpClass
??__Fvgch@@YAXXZ ENDP					; `dynamic atexit destructor for 'vgch''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Fntr@@YAXXZ
text$yd	SEGMENT
??__Fntr@@YAXXZ PROC					; `dynamic atexit destructor for 'ntr'', COMDAT
	mov	ecx, OFFSET ?ntr@@3VHookCallClass@@A	; ntr
	jmp	??1HookCallClass@@UAE@XZ		; HookCallClass::~HookCallClass
??__Fntr@@YAXXZ ENDP					; `dynamic atexit destructor for 'ntr''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Fntrhb1@@YAXXZ
text$yd	SEGMENT
??__Fntrhb1@@YAXXZ PROC					; `dynamic atexit destructor for 'ntrhb1'', COMDAT
	mov	DWORD PTR ?ntrhb1@@3VPatchByteClass@@A, OFFSET ??_7PatchByteClass@@6B@
	mov	ecx, OFFSET ?ntrhb1@@3VPatchByteClass@@A ; ntrhb1
	jmp	??1HookBase@@UAE@XZ			; HookBase::~HookBase
??__Fntrhb1@@YAXXZ ENDP					; `dynamic atexit destructor for 'ntrhb1''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Fntrb2@@YAXXZ
text$yd	SEGMENT
??__Fntrb2@@YAXXZ PROC					; `dynamic atexit destructor for 'ntrb2'', COMDAT
	mov	DWORD PTR ?ntrb2@@3VPatchByteClass@@A, OFFSET ??_7PatchByteClass@@6B@
	mov	ecx, OFFSET ?ntrb2@@3VPatchByteClass@@A	; ntrb2
	jmp	??1HookBase@@UAE@XZ			; HookBase::~HookBase
??__Fntrb2@@YAXXZ ENDP					; `dynamic atexit destructor for 'ntrb2''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Fgqrb@@YAXXZ
text$yd	SEGMENT
??__Fgqrb@@YAXXZ PROC					; `dynamic atexit destructor for 'gqrb'', COMDAT
	mov	DWORD PTR ?gqrb@@3VPatchByteClass@@A, OFFSET ??_7PatchByteClass@@6B@
	mov	ecx, OFFSET ?gqrb@@3VPatchByteClass@@A	; gqrb
	jmp	??1HookBase@@UAE@XZ			; HookBase::~HookBase
??__Fgqrb@@YAXXZ ENDP					; `dynamic atexit destructor for 'gqrb''
; 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 ??__Frohdh@@YAXXZ
text$yd	SEGMENT
??__Frohdh@@YAXXZ PROC					; `dynamic atexit destructor for 'rohdh'', COMDAT
	mov	ecx, OFFSET ?rohdh@@3VHookJumpClass@@A	; rohdh
	jmp	??1HookJumpClass@@UAE@XZ		; HookJumpClass::~HookJumpClass
??__Frohdh@@YAXXZ ENDP					; `dynamic atexit destructor for 'rohdh''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__Fpcr@@YAXXZ
text$yd	SEGMENT
??__Fpcr@@YAXXZ PROC					; `dynamic atexit destructor for 'pcr'', COMDAT
	mov	ecx, OFFSET ?pcr@@3VHookCallClass@@A	; pcr
	jmp	??1HookCallClass@@UAE@XZ		; HookCallClass::~HookCallClass
??__Fpcr@@YAXXZ ENDP					; `dynamic atexit destructor for 'pcr''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__F?m_list@gzHookManager@@2V?$aVector@PAVHookBase@@@@A@@YAXXZ
text$yd	SEGMENT
??__F?m_list@gzHookManager@@2V?$aVector@PAVHookBase@@@@A@@YAXXZ PROC ; `dynamic atexit destructor for 'gzHookManager::m_list'', COMDAT
	push	esi
	xor	esi, esi
	cmp	DWORD PTR ?m_list@gzHookManager@@2V?$aVector@PAVHookBase@@@@A+4, esi
	mov	DWORD PTR ?m_list@gzHookManager@@2V?$aVector@PAVHookBase@@@@A, OFFSET ??_7?$aVector@PAVHookBase@@@@6B@
	je	SHORT $LN10@m_list
	push	OFFSET ??_C@_00CNPNBAHC@?$AA@
	push	43					; 0000002bH
	push	OFFSET ??_C@_0CG@NJHDKABA@d?3?2source?5code?2alib?2include?2aVec@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	eax, DWORD PTR ?m_list@gzHookManager@@2V?$aVector@PAVHookBase@@@@A+4
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
	mov	DWORD PTR ?m_list@gzHookManager@@2V?$aVector@PAVHookBase@@@@A+4, esi
$LN10@m_list:
	mov	DWORD PTR ?m_list@gzHookManager@@2V?$aVector@PAVHookBase@@@@A+12, esi
	mov	DWORD PTR ?m_list@gzHookManager@@2V?$aVector@PAVHookBase@@@@A+8, esi
	pop	esi
	ret	0
??__F?m_list@gzHookManager@@2V?$aVector@PAVHookBase@@@@A@@YAXXZ ENDP ; `dynamic atexit destructor for 'gzHookManager::m_list''
text$yd	ENDS
PUBLIC	?ntrb2@@3VPatchByteClass@@A			; ntrb2
PUBLIC	?ntrhb1@@3VPatchByteClass@@A			; ntrhb1
PUBLIC	?rhdh@@3VHookJumpClass@@A			; rhdh
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	?ntr@@3VHookCallClass@@A			; ntr
PUBLIC	?c4ch@@3VHookCallClass@@A			; c4ch
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	?ori@@3VHookJumpClass@@A			; ori
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	?bih@@3VHookCallClass@@A			; bih
PUBLIC	?sssh@@3VHookJumpClass@@A			; sssh
PUBLIC	?rohdh@@3VHookJumpClass@@A			; rohdh
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	?pcr@@3VHookCallClass@@A			; pcr
PUBLIC	?cobih@@3VHookJumpClass@@A			; cobih
PUBLIC	?sdh@@3VHookJumpClass@@A			; sdh
PUBLIC	?fuh@@3VHookCallClass@@A			; fuh
PUBLIC	?rth@@3VHookJumpClass@@A			; rth
PUBLIC	?psp@@3VHookCallClass@@A			; psp
PUBLIC	?pph@@3VHookCallClass@@A			; pph
PUBLIC	?gqrb@@3VPatchByteClass@@A			; gqrb
PUBLIC	?pjh@@3VHookJumpClass@@A			; pjh
PUBLIC	?vgch@@3VHookJumpClass@@A			; vgch
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	?esvh@@3VHookCallClass@@A			; esvh
PUBLIC	?rh@@3VHookJumpClass@@A				; rh
PUBLIC	?ssp@@3VPatchByteClass@@A			; ssp
PUBLIC	?suicideh@@3VHookCallClass@@A			; suicideh
_BSS	SEGMENT
?ntrb2@@3VPatchByteClass@@A DB 01cH DUP (?)		; ntrb2
?ntrhb1@@3VPatchByteClass@@A DB 01cH DUP (?)		; ntrhb1
?rhdh@@3VHookJumpClass@@A DB 018H DUP (?)		; rhdh
?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
?ntr@@3VHookCallClass@@A DB 018H DUP (?)		; ntr
?c4ch@@3VHookCallClass@@A DB 018H DUP (?)		; c4ch
?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
?ori@@3VHookJumpClass@@A DB 018H DUP (?)		; ori
?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
?bih@@3VHookCallClass@@A DB 018H DUP (?)		; bih
?sssh@@3VHookJumpClass@@A DB 018H DUP (?)		; sssh
?rohdh@@3VHookJumpClass@@A DB 018H DUP (?)		; rohdh
?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
?pcr@@3VHookCallClass@@A DB 018H DUP (?)		; pcr
?cobih@@3VHookJumpClass@@A DB 018H DUP (?)		; cobih
?sdh@@3VHookJumpClass@@A DB 018H DUP (?)		; sdh
?fuh@@3VHookCallClass@@A DB 018H DUP (?)		; fuh
?rth@@3VHookJumpClass@@A DB 018H DUP (?)		; rth
?psp@@3VHookCallClass@@A DB 018H DUP (?)		; psp
?pph@@3VHookCallClass@@A DB 018H DUP (?)		; pph
?gqrb@@3VPatchByteClass@@A DB 01cH DUP (?)		; gqrb
?pjh@@3VHookJumpClass@@A DB 018H DUP (?)		; pjh
?vgch@@3VHookJumpClass@@A DB 018H DUP (?)		; vgch
?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
?esvh@@3VHookCallClass@@A DB 018H DUP (?)		; esvh
?rh@@3VHookJumpClass@@A DB 018H DUP (?)			; rh
_gzCritical DB	018H DUP (?)
?ssp@@3VPatchByteClass@@A DB 01cH DUP (?)		; ssp
?suicideh@@3VHookCallClass@@A DB 018H DUP (?)		; suicideh
_BSS	ENDS
CRT$XCU	SEGMENT
_gzCritical$initializer$ DD FLAT:??__EgzCritical@@YAXXZ
?m_list$initializer$@gzHookManager@@2P6AXXZA DD FLAT:??__E?m_list@gzHookManager@@2V?$aVector@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
_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
_cobih$initializer$ DD FLAT:??__Ecobih@@YAXXZ
_cobpnh$initializer$ DD FLAT:??__Ecobpnh@@YAXXZ
_ori$initializer$ DD FLAT:??__Eori@@YAXXZ
_sdh$initializer$ DD FLAT:??__Esdh@@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
_c4ch$initializer$ DD FLAT:??__Ec4ch@@YAXXZ
_bih$initializer$ DD FLAT:??__Ebih@@YAXXZ
_vfkh$initializer$ DD FLAT:??__Evfkh@@YAXXZ
_wph$initializer$ DD FLAT:??__Ewph@@YAXXZ
_ckac$initializer$ DD FLAT:??__Eckac@@YAXXZ
_bus$initializer$ DD FLAT:??__Ebus@@YAXXZ
_esvh$initializer$ DD FLAT:??__Eesvh@@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
_tdh$initializer$ DD FLAT:??__Etdh@@YAXXZ
_tdhb$initializer$ DD FLAT:??__Etdhb@@YAXXZ
_psp$initializer$ DD FLAT:??__Epsp@@YAXXZ
_rth$initializer$ DD FLAT:??__Erth@@YAXXZ
_rhdh$initializer$ DD FLAT:??__Erhdh@@YAXXZ
_vgch$initializer$ DD FLAT:??__Evgch@@YAXXZ
_ntr$initializer$ DD FLAT:??__Entr@@YAXXZ
_ntrhb1$initializer$ DD FLAT:??__Entrhb1@@YAXXZ
_ntrb2$initializer$ DD FLAT:??__Entrb2@@YAXXZ
_gqrb$initializer$ DD FLAT:??__Egqrb@@YAXXZ
_sssh$initializer$ DD FLAT:??__Esssh@@YAXXZ
_rohdh$initializer$ DD FLAT:??__Erohdh@@YAXXZ
_pcr$initializer$ DD FLAT:??__Epcr@@YAXXZ
CRT$XCU	ENDS
END
