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

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

INCLUDELIB LIBCMTD
INCLUDELIB OLDNAMES

PUBLIC	??_C@_0P@GHFPNOJB@bad?5allocation?$AA@		; `string'
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	?gzCrateMgr@@3PAVgzManagerCrateClass@@A		; gzCrateMgr
PUBLIC	?m_percent@gzCrateBase@@1PBUgzCratePercentStruct@@B ; gzCrateBase::m_percent
_BSS	SEGMENT
?gzCrateMgr@@3PAVgzManagerCrateClass@@A DD 01H DUP (?)	; gzCrateMgr
?m_percent@gzCrateBase@@1PBUgzCratePercentStruct@@B DD 01H DUP (?) ; gzCrateBase::m_percent
_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	?strstr@@YAPADPADPBD@Z				; strstr
EXTRN	_strstr:PROC
; Function compile flags: /Ogtpy
; File c:\program files\microsoft visual studio 8\vc\include\string.h
;	COMDAT ?strstr@@YAPADPADPBD@Z
_TEXT	SEGMENT
__Str$ = 8						; size = 4
__SubStr$ = 12						; size = 4
?strstr@@YAPADPADPBD@Z PROC				; strstr, COMDAT

; 190  : 	{ return (char*)strstr((const char*)_Str, _SubStr); }

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

; 371  : 		{	// construct from message string

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

; 372  : 		}

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

; 380  : 		{	// destroy the object

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

; 381  : 		}

	jmp	??1exception@std@@UAE@XZ		; std::exception::~exception
??1bad_alloc@std@@UAE@XZ ENDP				; std::bad_alloc::~bad_alloc
_TEXT	ENDS
EXTRN	??3@YAXPAX@Z:PROC				; operator delete
; Function compile flags: /Ogtpy
;	COMDAT ??_Gbad_alloc@std@@UAEPAXI@Z
_TEXT	SEGMENT
___flags$ = 8						; size = 4
??_Gbad_alloc@std@@UAEPAXI@Z PROC			; std::bad_alloc::`scalar deleting destructor', COMDAT
; _this$ = ecx
	push	esi
	mov	esi, ecx
	mov	DWORD PTR [esi], OFFSET ??_7bad_alloc@std@@6B@
	call	??1exception@std@@UAE@XZ		; std::exception::~exception
	test	BYTE PTR ___flags$[esp], 1
	je	SHORT $LN6@scalar
	push	esi
	call	??3@YAXPAX@Z				; operator delete
	add	esp, 4
$LN6@scalar:
	mov	eax, esi
	pop	esi
	ret	4
??_Gbad_alloc@std@@UAEPAXI@Z ENDP			; std::bad_alloc::`scalar deleting destructor'
_TEXT	ENDS
PUBLIC	?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	??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	?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
	mov	eax, DWORD PTR [eax]
	ret	0
$LN3@GetString:
	xor	eax, eax
	ret	0
?GetString@aWideString@@QBEPB_WXZ ENDP			; aWideString::GetString
_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	_fabsf
EXTRN	__fltused:DWORD
; Function compile flags: /Ogtpy
; File c:\program files\microsoft visual studio 8\vc\include\math.h
;	COMDAT _fabsf
_TEXT	SEGMENT
__X$ = 8						; size = 4
_fabsf	PROC						; COMDAT

; 384  :         {return ((float)fabs((double)_X)); }

	fld	DWORD PTR __X$[esp-4]
	fabs
	ret	0
_fabsf	ENDP
_TEXT	ENDS
PUBLIC	?abs@@YAMM@Z					; abs
; Function compile flags: /Ogtpy
;	COMDAT ?abs@@YAMM@Z
_TEXT	SEGMENT
__X$ = 8						; size = 4
?abs@@YAMM@Z PROC					; abs, COMDAT

; 492  :         {return (fabsf(_X)); }

	fld	DWORD PTR __X$[esp-4]
	fabs
	ret	0
?abs@@YAMM@Z ENDP					; abs
_TEXT	ENDS
PUBLIC	?GetInt@gzEventBase@@QAEHXZ			; gzEventBase::GetInt
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzeventbase.h
;	COMDAT ?GetInt@gzEventBase@@QAEHXZ
_TEXT	SEGMENT
?GetInt@gzEventBase@@QAEHXZ PROC			; gzEventBase::GetInt, COMDAT
; _this$ = ecx

; 102  : 		return this->m_dataInt;

	mov	eax, DWORD PTR [ecx+16]

; 103  : 	};

	ret	0
?GetInt@gzEventBase@@QAEHXZ ENDP			; gzEventBase::GetInt
_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	?Skip@gzEventSkippable@gzEventPlayerPurchase@@QAEXXZ ; gzEventPlayerPurchase::gzEventSkippable::Skip
; Function compile flags: /Ogtpy
;	COMDAT ?Skip@gzEventSkippable@gzEventPlayerPurchase@@QAEXXZ
_TEXT	SEGMENT
?Skip@gzEventSkippable@gzEventPlayerPurchase@@QAEXXZ PROC ; gzEventPlayerPurchase::gzEventSkippable::Skip, COMDAT
; _this$ = ecx

; 159  : 	gzEVT_SKIPPABLE();

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

; 159  : 	gzEVT_SKIPPABLE();

	mov	BYTE PTR [ecx+60], 0
	ret	0
?Skip@gzEventPlayerPurchase@@QAEXXZ ENDP		; gzEventPlayerPurchase::Skip
_TEXT	ENDS
PUBLIC	?Skip@gzEventSkippable@gzEventObjectDamage@@QAEXXZ ; gzEventObjectDamage::gzEventSkippable::Skip
; Function compile flags: /Ogtpy
;	COMDAT ?Skip@gzEventSkippable@gzEventObjectDamage@@QAEXXZ
_TEXT	SEGMENT
?Skip@gzEventSkippable@gzEventObjectDamage@@QAEXXZ PROC	; gzEventObjectDamage::gzEventSkippable::Skip, COMDAT
; _this$ = ecx

; 228  : 	gzEVT_SKIPPABLE();

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

; 228  : 	gzEVT_SKIPPABLE();

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

; 236  : 	gzEVT_SKIPPABLE();

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

; 236  : 	gzEVT_SKIPPABLE();

	mov	BYTE PTR [ecx+40], 0
	ret	0
?Skip@gzEventObjectKill@@QAEXXZ ENDP			; gzEventObjectKill::Skip
_TEXT	ENDS
PUBLIC	?Skip@gzEventSkippable@gzEventObjectTransition@@QAEXXZ ; gzEventObjectTransition::gzEventSkippable::Skip
; Function compile flags: /Ogtpy
;	COMDAT ?Skip@gzEventSkippable@gzEventObjectTransition@@QAEXXZ
_TEXT	SEGMENT
?Skip@gzEventSkippable@gzEventObjectTransition@@QAEXXZ PROC ; gzEventObjectTransition::gzEventSkippable::Skip, COMDAT
; _this$ = ecx

; 252  : 	gzEVT_SKIPPABLE();

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

; 252  : 	gzEVT_SKIPPABLE();

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

; 270  : 	gzEVT_SKIPPABLE();

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

; 270  : 	gzEVT_SKIPPABLE();

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

; 278  : 	gzEVT_SKIPPABLE();

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

; 278  : 	gzEVT_SKIPPABLE();

	mov	BYTE PTR [ecx+40], 0
	ret	0
?Skip@gzEventObjectPowerupGrant@@QAEXXZ ENDP		; gzEventObjectPowerupGrant::Skip
_TEXT	ENDS
PUBLIC	??_C@_07PAMFCGLO@?$CC?$CFs?$CC?4?$CFs?$AA@	; `string'
PUBLIC	?Load_Bool@stSettingsBase@@IAE_NPBD0_N@Z	; stSettingsBase::Load_Bool
EXTRN	?ToLong@aString@@QAEJXZ:PROC			; aString::ToLong
EXTRN	?Format@aString@@SA?AV1@PBDZZ:PROC		; aString::Format
EXTRN	??0aString@@QAE@H@Z:PROC			; aString::aString
EXTRN	___CxxFrameHandler3:PROC
;	COMDAT ??_C@_07PAMFCGLO@?$CC?$CFs?$CC?4?$CFs?$AA@
; File d:\source code\alib\include\astring.h
CONST	SEGMENT
??_C@_07PAMFCGLO@?$CC?$CFs?$CC?4?$CFs?$AA@ DB '"%s".%s', 00H ; `string'
CONST	ENDS
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$?Load_Bool@stSettingsBase@@IAE_NPBD0_N@Z DD 0ffffffffH
	DD	FLAT:__unwindfunclet$?Load_Bool@stSettingsBase@@IAE_NPBD0_N@Z$0
	DD	00H
	DD	FLAT:__unwindfunclet$?Load_Bool@stSettingsBase@@IAE_NPBD0_N@Z$1
	DD	01H
	DD	FLAT:__unwindfunclet$?Load_Bool@stSettingsBase@@IAE_NPBD0_N@Z$2
__ehfuncinfo$?Load_Bool@stSettingsBase@@IAE_NPBD0_N@Z DD 019930522H
	DD	03H
	DD	FLAT:__unwindtable$?Load_Bool@stSettingsBase@@IAE_NPBD0_N@Z
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	01H
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzsetting.h
xdata$x	ENDS
;	COMDAT ?Load_Bool@stSettingsBase@@IAE_NPBD0_N@Z
_TEXT	SEGMENT
$T70792 = -36						; size = 8
$T70794 = -28						; size = 8
$T70793 = -20						; size = 8
__$EHRec$ = -12						; size = 12
_section$ = 8						; size = 4
_item$ = 12						; size = 4
_default$ = 16						; size = 1
?Load_Bool@stSettingsBase@@IAE_NPBD0_N@Z PROC		; stSettingsBase::Load_Bool, COMDAT
; _this$ = ecx

; 38   : 	{

	mov	eax, DWORD PTR fs:0
	push	-1
	push	__ehhandler$?Load_Bool@stSettingsBase@@IAE_NPBD0_N@Z
	push	eax
	mov	DWORD PTR fs:0, esp
	sub	esp, 24					; 00000018H
	push	esi
	mov	esi, ecx

; 39   : 		if (this->m_cfg != NULL)

	cmp	DWORD PTR [esi+12], 0
	je	$LN1@Load_Bool

; 40   : 			return (this->m_cfg->GetData(aString::Format("\"%s\".%s", section, item), default).ToLong() == 0) ? false : true;

	movzx	eax, BYTE PTR _default$[esp+36]
	push	ebx
	push	eax
	lea	ecx, DWORD PTR $T70792[esp+48]
	call	??0aString@@QAE@H@Z			; aString::aString
	mov	ecx, DWORD PTR _item$[esp+40]
	mov	edx, DWORD PTR _section$[esp+40]
	push	ecx
	push	edx
	lea	eax, DWORD PTR $T70793[esp+52]
	push	OFFSET ??_C@_07PAMFCGLO@?$CC?$CFs?$CC?4?$CFs?$AA@
	push	eax
	mov	DWORD PTR __$EHRec$[esp+68], 0
	call	?Format@aString@@SA?AV1@PBDZZ		; aString::Format
	add	esp, 16					; 00000010H
	mov	ecx, DWORD PTR [esi+12]
	mov	edx, DWORD PTR [ecx]
	mov	edx, DWORD PTR [edx+20]
	lea	esi, DWORD PTR $T70792[esp+44]
	push	esi
	push	eax
	lea	eax, DWORD PTR $T70794[esp+52]
	push	eax
	mov	BYTE PTR __$EHRec$[esp+64], 1
	call	edx
	mov	ecx, eax
	mov	BYTE PTR __$EHRec$[esp+52], 2
	call	?ToLong@aString@@QAEJXZ			; aString::ToLong
	test	eax, eax
	lea	ecx, DWORD PTR $T70794[esp+44]
	setne	bl
	mov	BYTE PTR __$EHRec$[esp+52], 1
	call	??1aStringBase@@UAE@XZ			; aStringBase::~aStringBase
	lea	ecx, DWORD PTR $T70793[esp+44]
	mov	BYTE PTR __$EHRec$[esp+52], 0
	call	??1aStringBase@@UAE@XZ			; aStringBase::~aStringBase
	mov	ecx, esi
	mov	DWORD PTR __$EHRec$[esp+52], -1
	call	??1aStringBase@@UAE@XZ			; aStringBase::~aStringBase
	mov	al, bl
	pop	ebx
	pop	esi

; 41   : 		return default;
; 42   : 	};

	mov	ecx, DWORD PTR __$EHRec$[esp+36]
	mov	DWORD PTR fs:0, ecx
	add	esp, 36					; 00000024H
	ret	12					; 0000000cH
$LN1@Load_Bool:
	mov	ecx, DWORD PTR __$EHRec$[esp+40]
	mov	al, BYTE PTR _default$[esp+36]
	pop	esi
	mov	DWORD PTR fs:0, ecx
	add	esp, 36					; 00000024H
	ret	12					; 0000000cH
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$?Load_Bool@stSettingsBase@@IAE_NPBD0_N@Z$0:
	lea	ecx, DWORD PTR $T70792[ebp]
	jmp	??1aString@@UAE@XZ
__unwindfunclet$?Load_Bool@stSettingsBase@@IAE_NPBD0_N@Z$1:
	lea	ecx, DWORD PTR $T70793[ebp]
	jmp	??1aString@@UAE@XZ
__unwindfunclet$?Load_Bool@stSettingsBase@@IAE_NPBD0_N@Z$2:
	lea	ecx, DWORD PTR $T70794[ebp]
	jmp	??1aString@@UAE@XZ
__ehhandler$?Load_Bool@stSettingsBase@@IAE_NPBD0_N@Z:
	mov	eax, OFFSET __ehfuncinfo$?Load_Bool@stSettingsBase@@IAE_NPBD0_N@Z
	jmp	___CxxFrameHandler3
text$x	ENDS
?Load_Bool@stSettingsBase@@IAE_NPBD0_N@Z ENDP		; stSettingsBase::Load_Bool
PUBLIC	?Load_Float@stSettingsBase@@IAEMPBD0M@Z		; stSettingsBase::Load_Float
EXTRN	?ToDouble@aString@@QAENXZ:PROC			; aString::ToDouble
EXTRN	??0aString@@QAE@N@Z:PROC			; aString::aString
;	COMDAT xdata$x
; File d:\source code\alib\include\astring.h
xdata$x	SEGMENT
__unwindtable$?Load_Float@stSettingsBase@@IAEMPBD0M@Z DD 0ffffffffH
	DD	FLAT:__unwindfunclet$?Load_Float@stSettingsBase@@IAEMPBD0M@Z$0
	DD	00H
	DD	FLAT:__unwindfunclet$?Load_Float@stSettingsBase@@IAEMPBD0M@Z$1
	DD	01H
	DD	FLAT:__unwindfunclet$?Load_Float@stSettingsBase@@IAEMPBD0M@Z$2
__ehfuncinfo$?Load_Float@stSettingsBase@@IAEMPBD0M@Z DD 019930522H
	DD	03H
	DD	FLAT:__unwindtable$?Load_Float@stSettingsBase@@IAEMPBD0M@Z
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	01H
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzsetting.h
xdata$x	ENDS
;	COMDAT ?Load_Float@stSettingsBase@@IAEMPBD0M@Z
_TEXT	SEGMENT
$T70823 = -36						; size = 8
$T70825 = -28						; size = 8
$T70824 = -20						; size = 8
__$EHRec$ = -12						; size = 12
_section$ = 8						; size = 4
_item$ = 12						; size = 4
$T70822 = 16						; size = 4
_default$ = 16						; size = 4
?Load_Float@stSettingsBase@@IAEMPBD0M@Z PROC		; stSettingsBase::Load_Float, COMDAT
; _this$ = ecx

; 56   : 	{

	mov	eax, DWORD PTR fs:0
	push	-1
	push	__ehhandler$?Load_Float@stSettingsBase@@IAEMPBD0M@Z
	push	eax
	mov	DWORD PTR fs:0, esp
	sub	esp, 24					; 00000018H
	push	esi
	mov	esi, ecx

; 57   : 		if (this->m_cfg != NULL)

	cmp	DWORD PTR [esi+12], 0
	je	$LN1@Load_Float

; 58   : 			return (float)this->m_cfg->GetData(aString::Format("\"%s\".%s", section, item), default).ToDouble();

	fld	DWORD PTR _default$[esp+36]
	sub	esp, 8
	lea	ecx, DWORD PTR $T70823[esp+48]
	fstp	QWORD PTR [esp]
	call	??0aString@@QAE@N@Z			; aString::aString
	mov	eax, DWORD PTR _item$[esp+36]
	mov	ecx, DWORD PTR _section$[esp+36]
	push	eax
	push	ecx
	lea	edx, DWORD PTR $T70824[esp+48]
	push	OFFSET ??_C@_07PAMFCGLO@?$CC?$CFs?$CC?4?$CFs?$AA@
	push	edx
	mov	DWORD PTR __$EHRec$[esp+64], 0
	call	?Format@aString@@SA?AV1@PBDZZ		; aString::Format
	add	esp, 16					; 00000010H
	mov	ecx, DWORD PTR [esi+12]
	mov	edx, DWORD PTR [ecx]
	mov	edx, DWORD PTR [edx+20]
	lea	esi, DWORD PTR $T70823[esp+40]
	push	esi
	push	eax
	lea	eax, DWORD PTR $T70825[esp+48]
	push	eax
	mov	BYTE PTR __$EHRec$[esp+60], 1
	call	edx
	mov	ecx, eax
	mov	BYTE PTR __$EHRec$[esp+48], 2
	call	?ToDouble@aString@@QAENXZ		; aString::ToDouble
	fstp	DWORD PTR $T70822[esp+36]
	lea	ecx, DWORD PTR $T70825[esp+40]
	mov	BYTE PTR __$EHRec$[esp+48], 1
	call	??1aStringBase@@UAE@XZ			; aStringBase::~aStringBase
	lea	ecx, DWORD PTR $T70824[esp+40]
	mov	BYTE PTR __$EHRec$[esp+48], 0
	call	??1aStringBase@@UAE@XZ			; aStringBase::~aStringBase
	mov	ecx, esi
	mov	DWORD PTR __$EHRec$[esp+48], -1
	call	??1aStringBase@@UAE@XZ			; aStringBase::~aStringBase
$LN1@Load_Float:

; 59   : 		return default;
; 60   : 	};

	mov	ecx, DWORD PTR __$EHRec$[esp+40]
	fld	DWORD PTR _default$[esp+36]
	pop	esi
	mov	DWORD PTR fs:0, ecx
	add	esp, 36					; 00000024H
	ret	12					; 0000000cH
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$?Load_Float@stSettingsBase@@IAEMPBD0M@Z$0:
	lea	ecx, DWORD PTR $T70823[ebp]
	jmp	??1aString@@UAE@XZ
__unwindfunclet$?Load_Float@stSettingsBase@@IAEMPBD0M@Z$1:
	lea	ecx, DWORD PTR $T70824[ebp]
	jmp	??1aString@@UAE@XZ
__unwindfunclet$?Load_Float@stSettingsBase@@IAEMPBD0M@Z$2:
	lea	ecx, DWORD PTR $T70825[ebp]
	jmp	??1aString@@UAE@XZ
__ehhandler$?Load_Float@stSettingsBase@@IAEMPBD0M@Z:
	mov	eax, OFFSET __ehfuncinfo$?Load_Float@stSettingsBase@@IAEMPBD0M@Z
	jmp	___CxxFrameHandler3
text$x	ENDS
?Load_Float@stSettingsBase@@IAEMPBD0M@Z ENDP		; stSettingsBase::Load_Float
PUBLIC	?Load_Int@stSettingsBase@@IAEHPBD0H@Z		; stSettingsBase::Load_Int
;	COMDAT xdata$x
; File d:\source code\alib\include\astring.h
xdata$x	SEGMENT
__unwindtable$?Load_Int@stSettingsBase@@IAEHPBD0H@Z DD 0ffffffffH
	DD	FLAT:__unwindfunclet$?Load_Int@stSettingsBase@@IAEHPBD0H@Z$0
	DD	00H
	DD	FLAT:__unwindfunclet$?Load_Int@stSettingsBase@@IAEHPBD0H@Z$1
	DD	01H
	DD	FLAT:__unwindfunclet$?Load_Int@stSettingsBase@@IAEHPBD0H@Z$2
__ehfuncinfo$?Load_Int@stSettingsBase@@IAEHPBD0H@Z DD 019930522H
	DD	03H
	DD	FLAT:__unwindtable$?Load_Int@stSettingsBase@@IAEHPBD0H@Z
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	01H
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzsetting.h
xdata$x	ENDS
;	COMDAT ?Load_Int@stSettingsBase@@IAEHPBD0H@Z
_TEXT	SEGMENT
$T70851 = -36						; size = 8
$T70853 = -28						; size = 8
$T70852 = -20						; size = 8
__$EHRec$ = -12						; size = 12
_section$ = 8						; size = 4
_item$ = 12						; size = 4
_default$ = 16						; size = 4
?Load_Int@stSettingsBase@@IAEHPBD0H@Z PROC		; stSettingsBase::Load_Int, COMDAT
; _this$ = ecx

; 74   : 	{

	mov	eax, DWORD PTR fs:0
	push	-1
	push	__ehhandler$?Load_Int@stSettingsBase@@IAEHPBD0H@Z
	push	eax

; 75   : 		if (this->m_cfg != NULL)
; 76   : 			return this->m_cfg->GetData(aString::Format("\"%s\".%s", section, item), default).ToLong();

	mov	eax, DWORD PTR _default$[esp+8]
	mov	DWORD PTR fs:0, esp
	sub	esp, 24					; 00000018H
	push	esi
	mov	esi, ecx
	cmp	DWORD PTR [esi+12], 0
	je	$LN2@Load_Int
	push	eax
	lea	ecx, DWORD PTR $T70851[esp+44]
	call	??0aString@@QAE@H@Z			; aString::aString
	mov	ecx, DWORD PTR _item$[esp+36]
	mov	edx, DWORD PTR _section$[esp+36]
	push	ecx
	push	edx
	lea	eax, DWORD PTR $T70852[esp+48]
	push	OFFSET ??_C@_07PAMFCGLO@?$CC?$CFs?$CC?4?$CFs?$AA@
	push	eax
	mov	DWORD PTR __$EHRec$[esp+64], 0
	call	?Format@aString@@SA?AV1@PBDZZ		; aString::Format
	add	esp, 16					; 00000010H
	mov	ecx, DWORD PTR [esi+12]
	mov	edx, DWORD PTR [ecx]
	mov	edx, DWORD PTR [edx+20]
	lea	esi, DWORD PTR $T70851[esp+40]
	push	esi
	push	eax
	lea	eax, DWORD PTR $T70853[esp+48]
	push	eax
	mov	BYTE PTR __$EHRec$[esp+60], 1
	call	edx
	mov	ecx, eax
	mov	BYTE PTR __$EHRec$[esp+48], 2
	call	?ToLong@aString@@QAEJXZ			; aString::ToLong
	lea	ecx, DWORD PTR $T70853[esp+40]
	mov	esi, eax
	mov	BYTE PTR __$EHRec$[esp+48], 1
	call	??1aStringBase@@UAE@XZ			; aStringBase::~aStringBase
	lea	ecx, DWORD PTR $T70852[esp+40]
	mov	BYTE PTR __$EHRec$[esp+48], 0
	call	??1aStringBase@@UAE@XZ			; aStringBase::~aStringBase
	lea	ecx, DWORD PTR $T70851[esp+40]
	mov	DWORD PTR __$EHRec$[esp+48], -1
	call	??1aStringBase@@UAE@XZ			; aStringBase::~aStringBase
	mov	eax, esi
$LN2@Load_Int:

; 77   : 		return default;
; 78   : 	};

	mov	ecx, DWORD PTR __$EHRec$[esp+40]
	pop	esi
	mov	DWORD PTR fs:0, ecx
	add	esp, 36					; 00000024H
	ret	12					; 0000000cH
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$?Load_Int@stSettingsBase@@IAEHPBD0H@Z$0:
	lea	ecx, DWORD PTR $T70851[ebp]
	jmp	??1aString@@UAE@XZ
__unwindfunclet$?Load_Int@stSettingsBase@@IAEHPBD0H@Z$1:
	lea	ecx, DWORD PTR $T70852[ebp]
	jmp	??1aString@@UAE@XZ
__unwindfunclet$?Load_Int@stSettingsBase@@IAEHPBD0H@Z$2:
	lea	ecx, DWORD PTR $T70853[ebp]
	jmp	??1aString@@UAE@XZ
__ehhandler$?Load_Int@stSettingsBase@@IAEHPBD0H@Z:
	mov	eax, OFFSET __ehfuncinfo$?Load_Int@stSettingsBase@@IAEHPBD0H@Z
	jmp	___CxxFrameHandler3
text$x	ENDS
?Load_Int@stSettingsBase@@IAEHPBD0H@Z ENDP		; stSettingsBase::Load_Int
PUBLIC	??_7stSettingsBase@@6B@				; stSettingsBase::`vftable'
PUBLIC	??0stSettingsBase@@QAE@XZ			; stSettingsBase::stSettingsBase
PUBLIC	??_R4stSettingsBase@@6B@			; stSettingsBase::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVstSettingsBase@@@8			; stSettingsBase `RTTI Type Descriptor'
PUBLIC	??_R3stSettingsBase@@8				; stSettingsBase::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2stSettingsBase@@8				; stSettingsBase::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@stSettingsBase@@8			; stSettingsBase::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?Delete@stSettingsBase@@UAEXXZ			; stSettingsBase::Delete
EXTRN	?gzSettingsMgr@@3PAVgzSettingsManager@@A:DWORD	; gzSettingsMgr
EXTRN	__purecall:PROC
;	COMDAT ??_R1A@?0A@EA@stSettingsBase@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@stSettingsBase@@8 DD FLAT:??_R0?AVstSettingsBase@@@8 ; stSettingsBase::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	00H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3stSettingsBase@@8
rdata$r	ENDS
;	COMDAT ??_R2stSettingsBase@@8
rdata$r	SEGMENT
??_R2stSettingsBase@@8 DD FLAT:??_R1A@?0A@EA@stSettingsBase@@8 ; stSettingsBase::`RTTI Base Class Array'
rdata$r	ENDS
;	COMDAT ??_R3stSettingsBase@@8
rdata$r	SEGMENT
??_R3stSettingsBase@@8 DD 00H				; stSettingsBase::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	01H
	DD	FLAT:??_R2stSettingsBase@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVstSettingsBase@@@8
_DATA	SEGMENT
??_R0?AVstSettingsBase@@@8 DD FLAT:??_7type_info@@6B@	; stSettingsBase `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVstSettingsBase@@', 00H
_DATA	ENDS
;	COMDAT ??_R4stSettingsBase@@6B@
rdata$r	SEGMENT
??_R4stSettingsBase@@6B@ DD 00H				; stSettingsBase::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVstSettingsBase@@@8
	DD	FLAT:??_R3stSettingsBase@@8
rdata$r	ENDS
;	COMDAT ??_7stSettingsBase@@6B@
CONST	SEGMENT
??_7stSettingsBase@@6B@ DD FLAT:??_R4stSettingsBase@@6B@ ; stSettingsBase::`vftable'
	DD	FLAT:?Delete@stSettingsBase@@UAEXXZ
	DD	FLAT:__purecall
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0stSettingsBase@@QAE@XZ
_TEXT	SEGMENT
$T70878 = -4						; size = 4
??0stSettingsBase@@QAE@XZ PROC				; stSettingsBase::stSettingsBase, COMDAT
; _this$ = ecx

; 101  : 	stSettingsBase()

	push	ecx

; 102  : 	{
; 103  : 		this->m_cfg = NULL;

	xor	eax, eax
	push	esi
	mov	esi, ecx
	mov	DWORD PTR [esi+12], eax

; 104  : 		this->m_confModTime = 0;

	mov	DWORD PTR [esi+16], eax
	mov	DWORD PTR [esi+20], eax

; 105  : 		this->m_owner = NULL;

	mov	DWORD PTR [esi+8], eax
	mov	DWORD PTR [esi], OFFSET ??_7stSettingsBase@@6B@

; 106  : 		gzSettingsMgr->m_list.Add(this);

	mov	ecx, DWORD PTR ?gzSettingsMgr@@3PAVgzSettingsManager@@A ; gzSettingsMgr
	add	ecx, 36					; 00000024H
	mov	DWORD PTR $T70878[esp+8], esi
	mov	eax, DWORD PTR [ecx]
	mov	eax, DWORD PTR [eax+12]
	lea	edx, DWORD PTR $T70878[esp+8]
	push	edx
	call	eax

; 107  : 	};

	mov	eax, esi
	pop	esi
	pop	ecx
	ret	0
??0stSettingsBase@@QAE@XZ ENDP				; stSettingsBase::stSettingsBase
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Delete@stSettingsBase@@UAEXXZ
_TEXT	SEGMENT
?Delete@stSettingsBase@@UAEXXZ PROC			; stSettingsBase::Delete, COMDAT
; _this$ = ecx

; 108  : 	virtual void Delete() { };

	ret	0
?Delete@stSettingsBase@@UAEXXZ ENDP			; stSettingsBase::Delete
_TEXT	ENDS
PUBLIC	?SetOwner@stSettingsBase@@QAEXPAVgzSettingsEvent@@@Z ; stSettingsBase::SetOwner
; Function compile flags: /Ogtpy
;	COMDAT ?SetOwner@stSettingsBase@@QAEXPAVgzSettingsEvent@@@Z
_TEXT	SEGMENT
_owner$ = 8						; size = 4
?SetOwner@stSettingsBase@@QAEXPAVgzSettingsEvent@@@Z PROC ; stSettingsBase::SetOwner, COMDAT
; _this$ = ecx

; 111  : 	void SetOwner(gzSettingsEvent *owner) { this->m_owner = owner; };

	mov	eax, DWORD PTR _owner$[esp-4]
	mov	DWORD PTR [ecx+8], eax
	ret	4
?SetOwner@stSettingsBase@@QAEXPAVgzSettingsEvent@@@Z ENDP ; stSettingsBase::SetOwner
_TEXT	ENDS
PUBLIC	?GetTibCrystal@gzPlayer@@QAEPAVgzTiberiumCrystal@@XZ ; gzPlayer::GetTibCrystal
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzplayer.h
;	COMDAT ?GetTibCrystal@gzPlayer@@QAEPAVgzTiberiumCrystal@@XZ
_TEXT	SEGMENT
?GetTibCrystal@gzPlayer@@QAEPAVgzTiberiumCrystal@@XZ PROC ; gzPlayer::GetTibCrystal, COMDAT
; _this$ = ecx

; 78   : 	inline gzTiberiumCrystal *GetTibCrystal() { return this->m_tibCrystal; };

	mov	eax, DWORD PTR [ecx+68]
	ret	0
?GetTibCrystal@gzPlayer@@QAEPAVgzTiberiumCrystal@@XZ ENDP ; gzPlayer::GetTibCrystal
_TEXT	ENDS
PUBLIC	?GetPlayerData@gzPlayer@@QAEPAVnc_cPlayer@@XZ	; gzPlayer::GetPlayerData
; Function compile flags: /Ogtpy
;	COMDAT ?GetPlayerData@gzPlayer@@QAEPAVnc_cPlayer@@XZ
_TEXT	SEGMENT
?GetPlayerData@gzPlayer@@QAEPAVnc_cPlayer@@XZ PROC	; gzPlayer::GetPlayerData, COMDAT
; _this$ = ecx

; 80   : 	inline nc_cPlayer *GetPlayerData() { return this->m_gameData; };

	mov	eax, DWORD PTR [ecx+72]
	ret	0
?GetPlayerData@gzPlayer@@QAEPAVnc_cPlayer@@XZ ENDP	; gzPlayer::GetPlayerData
_TEXT	ENDS
PUBLIC	?SetPickupBlock@gzTiberiumCrystal@@QAEXHM@Z	; gzTiberiumCrystal::SetPickupBlock
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gztibcrystal.h
;	COMDAT ?SetPickupBlock@gzTiberiumCrystal@@QAEXHM@Z
_TEXT	SEGMENT
_pId$ = 8						; size = 4
_secs$ = 12						; size = 4
?SetPickupBlock@gzTiberiumCrystal@@QAEXHM@Z PROC	; gzTiberiumCrystal::SetPickupBlock, COMDAT
; _this$ = ecx

; 105  : 	void SetPickupBlock(int pId, float secs) { this->m_pickupBlockCounter[pId] = secs; };

	fld	DWORD PTR _secs$[esp-4]
	mov	eax, DWORD PTR _pId$[esp-4]
	fstp	DWORD PTR [ecx+eax*4+104]
	ret	8
?SetPickupBlock@gzTiberiumCrystal@@QAEXHM@Z ENDP	; gzTiberiumCrystal::SetPickupBlock
_TEXT	ENDS
PUBLIC	__real@00000000
PUBLIC	??0gzCrateBasePowerStruct@@QAE@XZ		; gzCrateBasePowerStruct::gzCrateBasePowerStruct
;	COMDAT __real@00000000
; File d:\source code\gzgm\gzcrate.h
CONST	SEGMENT
__real@00000000 DD 000000000r			; 0
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0gzCrateBasePowerStruct@@QAE@XZ
_TEXT	SEGMENT
??0gzCrateBasePowerStruct@@QAE@XZ PROC			; gzCrateBasePowerStruct::gzCrateBasePowerStruct, COMDAT
; _this$ = ecx

; 75   : 	{
; 76   : 		this->enable   = false;
; 77   : 		this->team     = -1;
; 78   : 		this->counter  = 0.0f;

	fldz
	mov	eax, ecx
	fstp	DWORD PTR [eax+8]
	mov	BYTE PTR [eax], 0
	mov	DWORD PTR [eax+4], -1

; 79   : 		this->building = NULL;

	mov	DWORD PTR [eax+12], 0

; 80   : 		this->powered  = true;

	mov	BYTE PTR [eax+16], 1

; 81   : 	};

	ret	0
??0gzCrateBasePowerStruct@@QAE@XZ ENDP			; gzCrateBasePowerStruct::gzCrateBasePowerStruct
_TEXT	ENDS
PUBLIC	?Reset@gzCratePercentStruct@@QAEXH@Z		; gzCratePercentStruct::Reset
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
;	COMDAT ?Reset@gzCratePercentStruct@@QAEXH@Z
_TEXT	SEGMENT
_Type$ = 8						; size = 4
?Reset@gzCratePercentStruct@@QAEXH@Z PROC		; gzCratePercentStruct::Reset, COMDAT
; _this$ = ecx

; 27   : 	if ((Type & CRATE_SOLDIER) == CRATE_SOLDIER)

	xor	eax, eax
	test	BYTE PTR _Type$[esp-4], 1
	push	edi
	mov	edi, 100				; 00000064H
	je	SHORT $LN2@Reset
	push	esi

; 28   : 	{
; 29   : 		this->Weapon = 150;
; 30   : 		this->Money = 120;
; 31   : 		this->Points = 100;
; 32   : 		this->Vehicle = 80;

	mov	esi, 80					; 00000050H
	mov	DWORD PTR [ecx+12], esi

; 33   : 		this->Death = 80;

	mov	DWORD PTR [ecx+16], esi

; 34   : 		this->Ammo = 50;
; 35   : 		this->Armor = 60;
; 36   : 		this->Health = 60;
; 37   : 		this->Character = 80;

	mov	DWORD PTR [ecx+32], esi

; 38   : 		this->ButterFingers = 40;

	mov	esi, 40					; 00000028H
	mov	edx, 60					; 0000003cH
	mov	DWORD PTR [ecx+36], esi

; 39   : 		this->Spy = 30;
; 40   : 		this->Refill = 60;
; 41   : 		this->Beacon = 40;

	mov	DWORD PTR [ecx+44], esi
	mov	DWORD PTR [ecx], 150			; 00000096H
	mov	DWORD PTR [ecx+4], 120			; 00000078H
	mov	DWORD PTR [ecx+8], edi
	mov	DWORD PTR [ecx+20], 50			; 00000032H
	mov	DWORD PTR [ecx+24], edx
	mov	DWORD PTR [ecx+28], edx
	mov	DWORD PTR [ecx+48], 30			; 0000001eH
	mov	DWORD PTR [ecx+40], edx

; 42   : 		this->Thief = 50;

	mov	DWORD PTR [ecx+52], 50			; 00000032H

; 43   : 		this->WeaponPack = 0;

	mov	DWORD PTR [ecx+56], eax

; 44   : 		this->Donation = 0;

	mov	DWORD PTR [ecx+60], eax

; 45   : 		this->ChemSuit = 0;

	mov	DWORD PTR [ecx+64], eax

; 46   : 		this->ExplosiveSuit = 0;

	mov	DWORD PTR [ecx+68], eax

; 47   : 		this->Medic = 0;

	mov	DWORD PTR [ecx+72], eax

; 48   : 		this->MetalGear = 0;

	mov	DWORD PTR [ecx+80], eax

; 49   : 		this->EnemyThief = 0;

	mov	DWORD PTR [ecx+76], eax

; 50   : 		this->Hover = 0;

	mov	DWORD PTR [ecx+88], eax

; 51   : 		this->StealthMine = 0;

	mov	DWORD PTR [ecx+92], eax

; 52   : 		this->Veteran = 0;

	mov	DWORD PTR [ecx+84], eax
	pop	esi
$LN2@Reset:

; 53   : 	}
; 54   : 	if ((Type & CRATE_VEHICLE) == CRATE_VEHICLE)

	test	BYTE PTR _Type$[esp], 2
	je	SHORT $LN1@Reset

; 55   : 	{
; 56   : 		this->vAntiEnemy = 100;
; 57   : 		this->vMaxArmor = 200;

	mov	edx, 200				; 000000c8H
	mov	DWORD PTR [ecx+116], edi
	mov	DWORD PTR [ecx+104], edx

; 58   : 		this->vMaxHealth = 200;

	mov	DWORD PTR [ecx+108], edx

; 59   : 		this->vAutoRepair = 150;

	mov	DWORD PTR [ecx+112], 150		; 00000096H

; 60   : 		this->vRepair = 150;

	mov	DWORD PTR [ecx+120], 150		; 00000096H

; 61   : 		this->vSpy = 100;

	mov	DWORD PTR [ecx+124], edi

; 62   : 		this->vDemoTruck = 100;

	mov	DWORD PTR [ecx+128], edi

; 63   : 		this->vSteal = 0;

	mov	DWORD PTR [ecx+132], eax
$LN1@Reset:
	pop	edi

; 64   : 	}
; 65   : }

	ret	4
?Reset@gzCratePercentStruct@@QAEXH@Z ENDP		; gzCratePercentStruct::Reset
_TEXT	ENDS
PUBLIC	??_C@_0O@GPLKOMOA@?4?2gzcrate?4cpp?$AA@		; `string'
PUBLIC	??_C@_00CNPNBAHC@?$AA@				; `string'
PUBLIC	?Delete@gzSettingsCrateClass@@UAEXXZ		; gzSettingsCrateClass::Delete
EXTRN	?m_setOwner@@YAXPBDI0@Z:PROC			; m_setOwner
;	COMDAT ??_C@_0O@GPLKOMOA@?4?2gzcrate?4cpp?$AA@
CONST	SEGMENT
??_C@_0O@GPLKOMOA@?4?2gzcrate?4cpp?$AA@ DB '.\gzcrate.cpp', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_00CNPNBAHC@?$AA@
CONST	SEGMENT
??_C@_00CNPNBAHC@?$AA@ DB 00H				; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?Delete@gzSettingsCrateClass@@UAEXXZ
_TEXT	SEGMENT
?Delete@gzSettingsCrateClass@@UAEXXZ PROC		; gzSettingsCrateClass::Delete, COMDAT
; _this$ = ecx

; 76   : {

	push	esi

; 77   : 	delete this->m_percent;

	push	OFFSET ??_C@_00CNPNBAHC@?$AA@
	push	77					; 0000004dH
	push	OFFSET ??_C@_0O@GPLKOMOA@?4?2gzcrate?4cpp?$AA@
	mov	esi, ecx
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	eax, DWORD PTR [esi+108]
	push	eax
	call	??3@YAXPAX@Z				; operator delete

; 78   : 	this->m_percent = NULL;
; 79   : 	this->m_posList.Clear();

	mov	edx, DWORD PTR [esi+112]
	mov	eax, DWORD PTR [edx+4]
	lea	ecx, DWORD PTR [esi+112]
	add	esp, 16					; 00000010H
	mov	DWORD PTR [esi+108], 0
	pop	esi
	jmp	eax
?Delete@gzSettingsCrateClass@@UAEXXZ ENDP		; gzSettingsCrateClass::Delete
_TEXT	ENDS
PUBLIC	??_7gzSettingsEvent@@6B@			; gzSettingsEvent::`vftable'
PUBLIC	??0gzSettingsEvent@@QAE@XZ			; gzSettingsEvent::gzSettingsEvent
PUBLIC	??_R4gzSettingsEvent@@6B@			; gzSettingsEvent::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVgzSettingsEvent@@@8			; gzSettingsEvent `RTTI Type Descriptor'
PUBLIC	??_R3gzSettingsEvent@@8				; gzSettingsEvent::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2gzSettingsEvent@@8				; gzSettingsEvent::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@gzSettingsEvent@@8		; gzSettingsEvent::`RTTI Base Class Descriptor at (0,-1,0,64)'
;	COMDAT ??_R1A@?0A@EA@gzSettingsEvent@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@gzSettingsEvent@@8 DD FLAT:??_R0?AVgzSettingsEvent@@@8 ; gzSettingsEvent::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	00H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3gzSettingsEvent@@8
rdata$r	ENDS
;	COMDAT ??_R2gzSettingsEvent@@8
rdata$r	SEGMENT
??_R2gzSettingsEvent@@8 DD FLAT:??_R1A@?0A@EA@gzSettingsEvent@@8 ; gzSettingsEvent::`RTTI Base Class Array'
rdata$r	ENDS
;	COMDAT ??_R3gzSettingsEvent@@8
rdata$r	SEGMENT
??_R3gzSettingsEvent@@8 DD 00H				; gzSettingsEvent::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	01H
	DD	FLAT:??_R2gzSettingsEvent@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVgzSettingsEvent@@@8
_DATA	SEGMENT
??_R0?AVgzSettingsEvent@@@8 DD FLAT:??_7type_info@@6B@	; gzSettingsEvent `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVgzSettingsEvent@@', 00H
_DATA	ENDS
;	COMDAT ??_R4gzSettingsEvent@@6B@
rdata$r	SEGMENT
??_R4gzSettingsEvent@@6B@ DD 00H			; gzSettingsEvent::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVgzSettingsEvent@@@8
	DD	FLAT:??_R3gzSettingsEvent@@8
rdata$r	ENDS
;	COMDAT ??_7gzSettingsEvent@@6B@
CONST	SEGMENT
??_7gzSettingsEvent@@6B@ DD FLAT:??_R4gzSettingsEvent@@6B@ ; gzSettingsEvent::`vftable'
	DD	FLAT:__purecall
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0gzSettingsEvent@@QAE@XZ
_TEXT	SEGMENT
??0gzSettingsEvent@@QAE@XZ PROC				; gzSettingsEvent::gzSettingsEvent, COMDAT
; _this$ = ecx
	mov	eax, ecx
	mov	DWORD PTR [eax], OFFSET ??_7gzSettingsEvent@@6B@
	ret	0
??0gzSettingsEvent@@QAE@XZ ENDP				; gzSettingsEvent::gzSettingsEvent
_TEXT	ENDS
PUBLIC	??_C@_0O@GJIAFLPK@CnC_Visceroid?$AA@		; `string'
PUBLIC	?Player_Purchase@gzManagerCrateClass@@UAEXAAVgzEventPlayerPurchase@@@Z ; gzManagerCrateClass::Player_Purchase
;	COMDAT ??_C@_0O@GJIAFLPK@CnC_Visceroid?$AA@
; File d:\source code\gzgm\gzeventbase.h
CONST	SEGMENT
??_C@_0O@GJIAFLPK@CnC_Visceroid?$AA@ DB 'CnC_Visceroid', 00H ; `string'
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
CONST	ENDS
;	COMDAT ?Player_Purchase@gzManagerCrateClass@@UAEXAAVgzEventPlayerPurchase@@@Z
_TEXT	SEGMENT
_evt$ = 8						; size = 4
?Player_Purchase@gzManagerCrateClass@@UAEXAAVgzEventPlayerPurchase@@@Z PROC ; gzManagerCrateClass::Player_Purchase, COMDAT
; _this$ = ecx

; 432  : {

	push	esi

; 433  : 	if (evt.GetPlayer()->Owner.Reference)

	mov	esi, DWORD PTR _evt$[esp]
	mov	eax, DWORD PTR [esi+32]
	mov	eax, DWORD PTR [eax+20]
	test	eax, eax
	je	SHORT $LN2@Player_Pur

; 434  : 	{
; 435  : 		if (strstr(evt.GetPlayer()->Owner.Reference->obj->definition->Get_Name(), "CnC_Visceroid"))

	mov	ecx, DWORD PTR [eax+4]
	mov	ecx, DWORD PTR [ecx+1724]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+48]
	call	eax
	push	OFFSET ??_C@_0O@GJIAFLPK@CnC_Visceroid?$AA@
	push	eax
	call	_strstr
	add	esp, 8
	test	eax, eax
	je	SHORT $LN2@Player_Pur

; 436  : 		{
; 437  : 			switch (evt.GetInt())

	mov	eax, DWORD PTR [esi+16]
	sub	eax, 0
	je	SHORT $LN1@Player_Pur
	sub	eax, 2
	je	SHORT $LN1@Player_Pur
	sub	eax, 3
	jne	SHORT $LN2@Player_Pur
$LN1@Player_Pur:

; 438  : 			{
; 439  : 				case PURCHASE_INFANTRY:
; 440  : 				case PURCHASE_FREE_INFANTRY:
; 441  : 				case PURCHASE_SECRET_INFANTRY:
; 442  : 					evt.m_retCode = 1;

	mov	DWORD PTR [esi+56], 1

; 443  : 					evt.Skip();

	mov	BYTE PTR [esi+60], 0
$LN2@Player_Pur:
	pop	esi

; 444  : 					return;
; 445  : 			}
; 446  : 		}
; 447  : 	}
; 448  : }

	ret	4
?Player_Purchase@gzManagerCrateClass@@UAEXAAVgzEventPlayerPurchase@@@Z ENDP ; gzManagerCrateClass::Player_Purchase
_TEXT	ENDS
PUBLIC	__real@42c80000
PUBLIC	__real@43480000
PUBLIC	??_C@_0BF@DPHCPFOB@CnC_POW_Ammo_ClipMax?$AA@	; `string'
PUBLIC	?Custom@M00_CNC_Crate@@UAEXPAVnc_ScriptableGameObj@@HH0@Z ; M00_CNC_Crate::Custom
EXTRN	?gzCommands@@3PAUnc_ScriptCommands@@A:DWORD	; gzCommands
EXTRN	?gzRandom@@3VaRandom@@A:QWORD			; gzRandom
;	COMDAT __real@42c80000
; File d:\source code\alib\include\arandom.h
CONST	SEGMENT
__real@42c80000 DD 042c80000r			; 100
CONST	ENDS
;	COMDAT __real@43480000
CONST	SEGMENT
__real@43480000 DD 043480000r			; 200
CONST	ENDS
;	COMDAT ??_C@_0BF@DPHCPFOB@CnC_POW_Ammo_ClipMax?$AA@
CONST	SEGMENT
??_C@_0BF@DPHCPFOB@CnC_POW_Ammo_ClipMax?$AA@ DB 'CnC_POW_Ammo_ClipMax', 00H ; `string'
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
CONST	ENDS
;	COMDAT ?Custom@M00_CNC_Crate@@UAEXPAVnc_ScriptableGameObj@@HH0@Z
_TEXT	SEGMENT
_obj$ = 8						; size = 4
_message$ = 12						; size = 4
_param$ = 16						; size = 4
_sender$ = 20						; size = 4
?Custom@M00_CNC_Crate@@UAEXPAVnc_ScriptableGameObj@@HH0@Z PROC ; M00_CNC_Crate::Custom, COMDAT
; _this$ = ecx

; 2191 : 	if (message == CUSTOM_EVENT_POWERUP)

	cmp	DWORD PTR _message$[esp-4], 1000000025	; 3b9aca19H
	jne	$LN4@Custom

; 2192 : 	{
; 2193 : 		switch (gzRandom.Get_Int(1, 3))

	mov	ecx, DWORD PTR ?gzRandom@@3VaRandom@@A
	mov	eax, ecx
	add	ecx, 1
	cmp	eax, 64					; 00000040H
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A, ecx
	jle	SHORT $LN15@Custom
	mov	ecx, 1
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A, ecx
$LN15@Custom:
	mov	eax, DWORD PTR ?gzRandom@@3VaRandom@@A+4
	imul	eax, 22695475				; 015a4e33H
	add	eax, ecx
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A+4, eax
	xor	edx, edx
	shr	eax, 16					; 00000010H
	mov	ecx, 3
	div	ecx
	push	esi
	add	edx, 1
	sub	edx, 1
	je	SHORT $LN5@Custom
	sub	edx, 1
	je	SHORT $LN3@Custom
	sub	edx, 1
	jne	$LN18@Custom

; 2203 : 			case 3:
; 2204 : 				gzCommands->Give_Powerup(sender, "CnC_POW_Ammo_ClipMax", false);

	mov	eax, DWORD PTR ?gzCommands@@3PAUnc_ScriptCommands@@A ; gzCommands
	mov	ecx, DWORD PTR [eax+432]
	push	edx
	mov	edx, DWORD PTR _sender$[esp+4]
	push	OFFSET ??_C@_0BF@DPHCPFOB@CnC_POW_Ammo_ClipMax?$AA@
	push	edx
	call	ecx
	add	esp, 12					; 0000000cH
	pop	esi

; 2205 : 				break;
; 2206 : 		}
; 2207 : 	}
; 2208 : }

	ret	16					; 00000010H
$LN3@Custom:

; 2198 : 				break;
; 2199 : 			case 2:
; 2200 : 				if (sender && sender->As_SmartGameObj() && sender->As_SmartGameObj()->Player)

	mov	esi, DWORD PTR _sender$[esp]
	test	esi, esi
	je	SHORT $LN18@Custom
	mov	edx, DWORD PTR [esi]
	mov	eax, DWORD PTR [edx+44]
	mov	ecx, esi
	call	eax
	test	eax, eax
	je	SHORT $LN18@Custom
	mov	edx, DWORD PTR [esi]
	mov	eax, DWORD PTR [edx+44]
	mov	ecx, esi
	call	eax
	cmp	DWORD PTR [eax+2400], 0
	je	SHORT $LN18@Custom

; 2201 : 					sender->As_SmartGameObj()->Player->Increment_Money(200.0f);

	mov	edx, DWORD PTR [esi]
	mov	eax, DWORD PTR [edx+44]
	mov	ecx, esi
	call	eax
	fld	DWORD PTR __real@43480000

; 2202 : 				break;

	jmp	SHORT $LN19@Custom
$LN5@Custom:

; 2194 : 		{
; 2195 : 			case 1:
; 2196 : 				if (sender && sender->As_SmartGameObj() && sender->As_SmartGameObj()->Player)

	mov	esi, DWORD PTR _sender$[esp]
	test	esi, esi
	je	SHORT $LN18@Custom
	mov	edx, DWORD PTR [esi]
	mov	eax, DWORD PTR [edx+44]
	mov	ecx, esi
	call	eax
	test	eax, eax
	je	SHORT $LN18@Custom
	mov	edx, DWORD PTR [esi]
	mov	eax, DWORD PTR [edx+44]
	mov	ecx, esi
	call	eax
	cmp	DWORD PTR [eax+2400], 0
	je	SHORT $LN18@Custom

; 2197 : 					sender->As_SmartGameObj()->Player->Increment_Money(100.0f);

	mov	edx, DWORD PTR [esi]
	mov	eax, DWORD PTR [edx+44]
	mov	ecx, esi
	call	eax
	fld	DWORD PTR __real@42c80000
$LN19@Custom:
	mov	eax, DWORD PTR [eax+2400]
	mov	edx, DWORD PTR [eax]
	push	ecx
	mov	ecx, eax
	fstp	DWORD PTR [esp]
	mov	eax, DWORD PTR [edx+16]
	call	eax
$LN18@Custom:
	pop	esi
$LN4@Custom:

; 2205 : 				break;
; 2206 : 		}
; 2207 : 	}
; 2208 : }

	ret	16					; 00000010H
?Custom@M00_CNC_Crate@@UAEXPAVnc_ScriptableGameObj@@HH0@Z ENDP ; M00_CNC_Crate::Custom
_TEXT	ENDS
PUBLIC	??1?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@UAE@XZ ; nc_ScriptRegistrant<M00_CNC_Crate>::~nc_ScriptRegistrant<M00_CNC_Crate>
EXTRN	??1nc_ScriptFactory@@UAE@XZ:PROC		; nc_ScriptFactory::~nc_ScriptFactory
; Function compile flags: /Ogtpy
;	COMDAT ??1?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@UAE@XZ
_TEXT	SEGMENT
??1?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@UAE@XZ PROC	; nc_ScriptRegistrant<M00_CNC_Crate>::~nc_ScriptRegistrant<M00_CNC_Crate>, COMDAT
; _this$ = ecx
	jmp	??1nc_ScriptFactory@@UAE@XZ		; nc_ScriptFactory::~nc_ScriptFactory
??1?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@UAE@XZ ENDP	; nc_ScriptRegistrant<M00_CNC_Crate>::~nc_ScriptRegistrant<M00_CNC_Crate>
_TEXT	ENDS
PUBLIC	??_7GiveCrateConsoleFunction@@6B@		; GiveCrateConsoleFunction::`vftable'
PUBLIC	??0GiveCrateConsoleFunction@@QAE@XZ		; GiveCrateConsoleFunction::GiveCrateConsoleFunction
PUBLIC	??_R4GiveCrateConsoleFunction@@6B@		; GiveCrateConsoleFunction::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVGiveCrateConsoleFunction@@@8		; GiveCrateConsoleFunction `RTTI Type Descriptor'
PUBLIC	??_R3GiveCrateConsoleFunction@@8		; GiveCrateConsoleFunction::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2GiveCrateConsoleFunction@@8		; GiveCrateConsoleFunction::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@GiveCrateConsoleFunction@@8	; GiveCrateConsoleFunction::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	??_R1A@?0A@EA@gzConsoleCommand@@8		; gzConsoleCommand::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	??_R0?AVgzConsoleCommand@@@8			; gzConsoleCommand `RTTI Type Descriptor'
PUBLIC	??_R3gzConsoleCommand@@8			; gzConsoleCommand::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2gzConsoleCommand@@8			; gzConsoleCommand::`RTTI Base Class Array'
PUBLIC	?Get_Name@GiveCrateConsoleFunction@@UAEPADXZ	; GiveCrateConsoleFunction::Get_Name
PUBLIC	?Get_Alias@GiveCrateConsoleFunction@@UAEPADXZ	; GiveCrateConsoleFunction::Get_Alias
PUBLIC	?Get_Help@GiveCrateConsoleFunction@@UAEPADXZ	; GiveCrateConsoleFunction::Get_Help
PUBLIC	?Activate@GiveCrateConsoleFunction@@UAEXPAD@Z	; GiveCrateConsoleFunction::Activate
EXTRN	??0gzConsoleCommand@@QAE@XZ:PROC		; gzConsoleCommand::gzConsoleCommand
;	COMDAT ??_R2gzConsoleCommand@@8
rdata$r	SEGMENT
??_R2gzConsoleCommand@@8 DD FLAT:??_R1A@?0A@EA@gzConsoleCommand@@8 ; gzConsoleCommand::`RTTI Base Class Array'
rdata$r	ENDS
;	COMDAT ??_R3gzConsoleCommand@@8
rdata$r	SEGMENT
??_R3gzConsoleCommand@@8 DD 00H				; gzConsoleCommand::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	01H
	DD	FLAT:??_R2gzConsoleCommand@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVgzConsoleCommand@@@8
_DATA	SEGMENT
??_R0?AVgzConsoleCommand@@@8 DD FLAT:??_7type_info@@6B@	; gzConsoleCommand `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVgzConsoleCommand@@', 00H
_DATA	ENDS
;	COMDAT ??_R1A@?0A@EA@gzConsoleCommand@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@gzConsoleCommand@@8 DD FLAT:??_R0?AVgzConsoleCommand@@@8 ; gzConsoleCommand::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	00H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3gzConsoleCommand@@8
rdata$r	ENDS
;	COMDAT ??_R1A@?0A@EA@GiveCrateConsoleFunction@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@GiveCrateConsoleFunction@@8 DD FLAT:??_R0?AVGiveCrateConsoleFunction@@@8 ; GiveCrateConsoleFunction::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3GiveCrateConsoleFunction@@8
rdata$r	ENDS
;	COMDAT ??_R2GiveCrateConsoleFunction@@8
rdata$r	SEGMENT
??_R2GiveCrateConsoleFunction@@8 DD FLAT:??_R1A@?0A@EA@GiveCrateConsoleFunction@@8 ; GiveCrateConsoleFunction::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzConsoleCommand@@8
rdata$r	ENDS
;	COMDAT ??_R3GiveCrateConsoleFunction@@8
rdata$r	SEGMENT
??_R3GiveCrateConsoleFunction@@8 DD 00H			; GiveCrateConsoleFunction::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2GiveCrateConsoleFunction@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVGiveCrateConsoleFunction@@@8
_DATA	SEGMENT
??_R0?AVGiveCrateConsoleFunction@@@8 DD FLAT:??_7type_info@@6B@ ; GiveCrateConsoleFunction `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVGiveCrateConsoleFunction@@', 00H
_DATA	ENDS
;	COMDAT ??_R4GiveCrateConsoleFunction@@6B@
rdata$r	SEGMENT
??_R4GiveCrateConsoleFunction@@6B@ DD 00H		; GiveCrateConsoleFunction::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVGiveCrateConsoleFunction@@@8
	DD	FLAT:??_R3GiveCrateConsoleFunction@@8
rdata$r	ENDS
;	COMDAT ??_7GiveCrateConsoleFunction@@6B@
CONST	SEGMENT
??_7GiveCrateConsoleFunction@@6B@ DD FLAT:??_R4GiveCrateConsoleFunction@@6B@ ; GiveCrateConsoleFunction::`vftable'
	DD	FLAT:?Get_Name@GiveCrateConsoleFunction@@UAEPADXZ
	DD	FLAT:?Get_Alias@GiveCrateConsoleFunction@@UAEPADXZ
	DD	FLAT:?Get_Help@GiveCrateConsoleFunction@@UAEPADXZ
	DD	FLAT:?Activate@GiveCrateConsoleFunction@@UAEXPAD@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0GiveCrateConsoleFunction@@QAE@XZ
_TEXT	SEGMENT
??0GiveCrateConsoleFunction@@QAE@XZ PROC		; GiveCrateConsoleFunction::GiveCrateConsoleFunction, COMDAT
; _this$ = ecx
	push	esi
	mov	esi, ecx
	call	??0gzConsoleCommand@@QAE@XZ		; gzConsoleCommand::gzConsoleCommand
	mov	DWORD PTR [esi], OFFSET ??_7GiveCrateConsoleFunction@@6B@
	mov	eax, esi
	pop	esi
	ret	0
??0GiveCrateConsoleFunction@@QAE@XZ ENDP		; GiveCrateConsoleFunction::GiveCrateConsoleFunction
_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
; 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	??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	??_C@_09KJKFEFHJ@givecrate?$AA@			; `string'
;	COMDAT ??_C@_09KJKFEFHJ@givecrate?$AA@
; File d:\source code\gzgm\gzcrate.cpp
CONST	SEGMENT
??_C@_09KJKFEFHJ@givecrate?$AA@ DB 'givecrate', 00H	; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?Get_Name@GiveCrateConsoleFunction@@UAEPADXZ
_TEXT	SEGMENT
?Get_Name@GiveCrateConsoleFunction@@UAEPADXZ PROC	; GiveCrateConsoleFunction::Get_Name, COMDAT
; _this$ = ecx

; 2219 : 		return "givecrate";

	mov	eax, OFFSET ??_C@_09KJKFEFHJ@givecrate?$AA@

; 2220 : 	}

	ret	0
?Get_Name@GiveCrateConsoleFunction@@UAEPADXZ ENDP	; GiveCrateConsoleFunction::Get_Name
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Get_Help@GiveCrateConsoleFunction@@UAEPADXZ
_TEXT	SEGMENT
?Get_Help@GiveCrateConsoleFunction@@UAEPADXZ PROC	; GiveCrateConsoleFunction::Get_Help, COMDAT
; _this$ = ecx

; 2223 : 		return "";

	mov	eax, OFFSET ??_C@_00CNPNBAHC@?$AA@

; 2224 : 	}

	ret	0
?Get_Help@GiveCrateConsoleFunction@@UAEPADXZ ENDP	; GiveCrateConsoleFunction::Get_Help
_TEXT	ENDS
PUBLIC	??_C@_02DPGMDCM@gc?$AA@				; `string'
;	COMDAT ??_C@_02DPGMDCM@gc?$AA@
CONST	SEGMENT
??_C@_02DPGMDCM@gc?$AA@ DB 'gc', 00H			; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?Get_Alias@GiveCrateConsoleFunction@@UAEPADXZ
_TEXT	SEGMENT
?Get_Alias@GiveCrateConsoleFunction@@UAEPADXZ PROC	; GiveCrateConsoleFunction::Get_Alias, COMDAT
; _this$ = ecx

; 2227 : 		return "gc";

	mov	eax, OFFSET ??_C@_02DPGMDCM@gc?$AA@

; 2228 : 	}

	ret	0
?Get_Alias@GiveCrateConsoleFunction@@UAEPADXZ ENDP	; GiveCrateConsoleFunction::Get_Alias
_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	__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
$T71003 = -12						; size = 12
_this$ = 8						; size = 4
$T71009 = 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 $T71009[esp+12]
	push	eax
	lea	ecx, DWORD PTR $T71003[esp+20]
	mov	DWORD PTR $T71009[esp+16], 0
	call	??0exception@std@@QAE@ABQBD@Z		; std::exception::exception
	push	OFFSET __TI2?AVbad_alloc@std@@
	lea	ecx, DWORD PTR $T71003[esp+20]
	push	ecx
	mov	DWORD PTR $T71003[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
$T71015 = -12						; size = 12
$T71020 = 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 $T71020[esp+12]
	push	eax
	lea	ecx, DWORD PTR $T71015[esp+20]
	mov	DWORD PTR $T71020[esp+16], 0
	call	??0exception@std@@QAE@ABQBD@Z		; std::exception::exception
	push	OFFSET __TI2?AVbad_alloc@std@@
	lea	ecx, DWORD PTR $T71015[esp+20]
	push	ecx
	mov	DWORD PTR $T71015[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_SimpleDynVecClass@PAVnc_GameObjObserverClass@@@@QAEHXZ ; nc_SimpleDynVecClass<nc_GameObjObserverClass *>::Count
; Function compile flags: /Ogtpy
; File d:\source code\fds lib\new\fds_vector.h
;	COMDAT ?Count@?$nc_SimpleDynVecClass@PAVnc_GameObjObserverClass@@@@QAEHXZ
_TEXT	SEGMENT
?Count@?$nc_SimpleDynVecClass@PAVnc_GameObjObserverClass@@@@QAEHXZ PROC ; nc_SimpleDynVecClass<nc_GameObjObserverClass *>::Count, COMDAT
; _this$ = ecx

; 252  : 		return ActiveCount;

	mov	eax, DWORD PTR [ecx+12]

; 253  : 	}

	ret	0
?Count@?$nc_SimpleDynVecClass@PAVnc_GameObjObserverClass@@@@QAEHXZ ENDP ; nc_SimpleDynVecClass<nc_GameObjObserverClass *>::Count
_TEXT	ENDS
PUBLIC	??A?$nc_SimpleVecClass@PAVnc_GameObjObserverClass@@@@QAEAAPAVnc_GameObjObserverClass@@H@Z ; nc_SimpleVecClass<nc_GameObjObserverClass *>::operator[]
; Function compile flags: /Ogtpy
;	COMDAT ??A?$nc_SimpleVecClass@PAVnc_GameObjObserverClass@@@@QAEAAPAVnc_GameObjObserverClass@@H@Z
_TEXT	SEGMENT
_index$ = 8						; size = 4
??A?$nc_SimpleVecClass@PAVnc_GameObjObserverClass@@@@QAEAAPAVnc_GameObjObserverClass@@H@Z PROC ; nc_SimpleVecClass<nc_GameObjObserverClass *>::operator[], COMDAT
; _this$ = ecx

; 174  : 		return Vector[index];

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

; 175  : 	}

	ret	4
??A?$nc_SimpleVecClass@PAVnc_GameObjObserverClass@@@@QAEAAPAVnc_GameObjObserverClass@@H@Z ENDP ; nc_SimpleVecClass<nc_GameObjObserverClass *>::operator[]
_TEXT	ENDS
PUBLIC	??A?$nc_VectorClass@PAVnc_SoldierGameObj@@@@QAEAAPAVnc_SoldierGameObj@@H@Z ; nc_VectorClass<nc_SoldierGameObj *>::operator[]
; Function compile flags: /Ogtpy
;	COMDAT ??A?$nc_VectorClass@PAVnc_SoldierGameObj@@@@QAEAAPAVnc_SoldierGameObj@@H@Z
_TEXT	SEGMENT
_index$ = 8						; size = 4
??A?$nc_VectorClass@PAVnc_SoldierGameObj@@@@QAEAAPAVnc_SoldierGameObj@@H@Z PROC ; nc_VectorClass<nc_SoldierGameObj *>::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_SoldierGameObj@@@@QAEAAPAVnc_SoldierGameObj@@H@Z ENDP ; nc_VectorClass<nc_SoldierGameObj *>::operator[]
_TEXT	ENDS
PUBLIC	??_7?$aVector@I@@6B@				; aVector<unsigned int>::`vftable'
PUBLIC	??0?$aVector@I@@QAE@XZ				; aVector<unsigned int>::aVector<unsigned int>
PUBLIC	??_R4?$aVector@I@@6B@				; aVector<unsigned int>::`RTTI Complete Object Locator'
PUBLIC	??_R0?AV?$aVector@I@@@8				; aVector<unsigned int> `RTTI Type Descriptor'
PUBLIC	??_R3?$aVector@I@@8				; aVector<unsigned int>::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2?$aVector@I@@8				; aVector<unsigned int>::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@?$aVector@I@@8			; aVector<unsigned int>::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?Clear@?$aVector@I@@UAEXXZ			; aVector<unsigned int>::Clear
PUBLIC	?Resize@?$aVector@I@@UAE_NI@Z			; aVector<unsigned int>::Resize
PUBLIC	?Add@?$aVector@I@@UAEXABI@Z			; aVector<unsigned int>::Add
PUBLIC	?Insert@?$aVector@I@@UAEXIABI@Z			; aVector<unsigned int>::Insert
PUBLIC	?Delete@?$aVector@I@@UAEXI@Z			; aVector<unsigned int>::Delete
EXTRN	??_E?$aVector@I@@UAEPAXI@Z:PROC			; aVector<unsigned int>::`vector deleting destructor'
;	COMDAT ??_R1A@?0A@EA@?$aVector@I@@8
; File d:\source code\alib\include\avector.h
rdata$r	SEGMENT
??_R1A@?0A@EA@?$aVector@I@@8 DD FLAT:??_R0?AV?$aVector@I@@@8 ; aVector<unsigned int>::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	00H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3?$aVector@I@@8
rdata$r	ENDS
;	COMDAT ??_R2?$aVector@I@@8
rdata$r	SEGMENT
??_R2?$aVector@I@@8 DD FLAT:??_R1A@?0A@EA@?$aVector@I@@8 ; aVector<unsigned int>::`RTTI Base Class Array'
rdata$r	ENDS
;	COMDAT ??_R3?$aVector@I@@8
rdata$r	SEGMENT
??_R3?$aVector@I@@8 DD 00H				; aVector<unsigned int>::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	01H
	DD	FLAT:??_R2?$aVector@I@@8
rdata$r	ENDS
;	COMDAT ??_R0?AV?$aVector@I@@@8
_DATA	SEGMENT
??_R0?AV?$aVector@I@@@8 DD FLAT:??_7type_info@@6B@	; aVector<unsigned int> `RTTI Type Descriptor'
	DD	00H
	DB	'.?AV?$aVector@I@@', 00H
_DATA	ENDS
;	COMDAT ??_R4?$aVector@I@@6B@
rdata$r	SEGMENT
??_R4?$aVector@I@@6B@ DD 00H				; aVector<unsigned int>::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AV?$aVector@I@@@8
	DD	FLAT:??_R3?$aVector@I@@8
rdata$r	ENDS
;	COMDAT ??_7?$aVector@I@@6B@
CONST	SEGMENT
??_7?$aVector@I@@6B@ DD FLAT:??_R4?$aVector@I@@6B@	; aVector<unsigned int>::`vftable'
	DD	FLAT:??_E?$aVector@I@@UAEPAXI@Z
	DD	FLAT:?Clear@?$aVector@I@@UAEXXZ
	DD	FLAT:?Resize@?$aVector@I@@UAE_NI@Z
	DD	FLAT:?Add@?$aVector@I@@UAEXABI@Z
	DD	FLAT:?Insert@?$aVector@I@@UAEXIABI@Z
	DD	FLAT:?Delete@?$aVector@I@@UAEXI@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0?$aVector@I@@QAE@XZ
_TEXT	SEGMENT
??0?$aVector@I@@QAE@XZ PROC				; aVector<unsigned int>::aVector<unsigned int>, COMDAT
; _this$ = ecx

; 20   : 	aVector()

	mov	eax, ecx

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

	xor	ecx, ecx
	mov	DWORD PTR [eax], OFFSET ??_7?$aVector@I@@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@I@@QAE@XZ ENDP				; aVector<unsigned int>::aVector<unsigned int>
_TEXT	ENDS
PUBLIC	??A?$aVector@I@@QAEAAII@Z			; aVector<unsigned int>::operator[]
; Function compile flags: /Ogtpy
;	COMDAT ??A?$aVector@I@@QAEAAII@Z
_TEXT	SEGMENT
_nPos$ = 8						; size = 4
??A?$aVector@I@@QAEAAII@Z PROC				; aVector<unsigned int>::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@I@@QAEAAII@Z ENDP				; aVector<unsigned int>::operator[]
_TEXT	ENDS
PUBLIC	?Count@?$aVector@I@@QBEIXZ			; aVector<unsigned int>::Count
; Function compile flags: /Ogtpy
;	COMDAT ?Count@?$aVector@I@@QBEIXZ
_TEXT	SEGMENT
?Count@?$aVector@I@@QBEIXZ PROC				; aVector<unsigned int>::Count, COMDAT
; _this$ = ecx

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

	mov	eax, DWORD PTR [ecx+12]
	ret	0
?Count@?$aVector@I@@QBEIXZ ENDP				; aVector<unsigned int>::Count
_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@I@@UAEXXZ
_TEXT	SEGMENT
?Clear@?$aVector@I@@UAEXXZ PROC				; aVector<unsigned int>::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@I@@UAEXXZ ENDP				; aVector<unsigned int>::Clear
_TEXT	ENDS
EXTRN	??_U@YAPAXI@Z:PROC				; operator new[]
EXTRN	_memcpy:PROC
; Function compile flags: /Ogtpy
;	COMDAT ?Resize@?$aVector@I@@UAE_NI@Z
_TEXT	SEGMENT
_nSize$ = 8						; size = 4
?Resize@?$aVector@I@@UAE_NI@Z PROC			; aVector<unsigned int>::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@I@@UAE_NI@Z ENDP			; aVector<unsigned int>::Resize
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Add@?$aVector@I@@UAEXABI@Z
_TEXT	SEGMENT
_obj$ = 8						; size = 4
?Add@?$aVector@I@@UAEXABI@Z PROC			; aVector<unsigned int>::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@I@@UAEXABI@Z ENDP			; aVector<unsigned int>::Add
_TEXT	ENDS
EXTRN	_memmove:PROC
; Function compile flags: /Ogtpy
;	COMDAT ?Insert@?$aVector@I@@UAEXIABI@Z
_TEXT	SEGMENT
_index$ = 8						; size = 4
_obj$ = 12						; size = 4
?Insert@?$aVector@I@@UAEXIABI@Z PROC			; aVector<unsigned int>::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@I@@UAEXIABI@Z ENDP			; aVector<unsigned int>::Insert
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Delete@?$aVector@I@@UAEXI@Z
_TEXT	SEGMENT
_index$ = 8						; size = 4
?Delete@?$aVector@I@@UAEXI@Z PROC			; aVector<unsigned int>::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@I@@UAEXI@Z ENDP			; aVector<unsigned int>::Delete
_TEXT	ENDS
PUBLIC	??_7?$aVector@Unc_Vector3@@@@6B@		; aVector<nc_Vector3>::`vftable'
PUBLIC	??0?$aVector@Unc_Vector3@@@@QAE@XZ		; aVector<nc_Vector3>::aVector<nc_Vector3>
PUBLIC	??_R4?$aVector@Unc_Vector3@@@@6B@		; aVector<nc_Vector3>::`RTTI Complete Object Locator'
PUBLIC	??_R0?AV?$aVector@Unc_Vector3@@@@@8		; aVector<nc_Vector3> `RTTI Type Descriptor'
PUBLIC	??_R3?$aVector@Unc_Vector3@@@@8			; aVector<nc_Vector3>::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2?$aVector@Unc_Vector3@@@@8			; aVector<nc_Vector3>::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@?$aVector@Unc_Vector3@@@@8	; aVector<nc_Vector3>::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?Clear@?$aVector@Unc_Vector3@@@@UAEXXZ		; aVector<nc_Vector3>::Clear
PUBLIC	?Resize@?$aVector@Unc_Vector3@@@@UAE_NI@Z	; aVector<nc_Vector3>::Resize
PUBLIC	?Add@?$aVector@Unc_Vector3@@@@UAEXABUnc_Vector3@@@Z ; aVector<nc_Vector3>::Add
PUBLIC	?Insert@?$aVector@Unc_Vector3@@@@UAEXIABUnc_Vector3@@@Z ; aVector<nc_Vector3>::Insert
PUBLIC	?Delete@?$aVector@Unc_Vector3@@@@UAEXI@Z	; aVector<nc_Vector3>::Delete
EXTRN	??_E?$aVector@Unc_Vector3@@@@UAEPAXI@Z:PROC	; aVector<nc_Vector3>::`vector deleting destructor'
;	COMDAT ??_R1A@?0A@EA@?$aVector@Unc_Vector3@@@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@?$aVector@Unc_Vector3@@@@8 DD FLAT:??_R0?AV?$aVector@Unc_Vector3@@@@@8 ; aVector<nc_Vector3>::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	00H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3?$aVector@Unc_Vector3@@@@8
rdata$r	ENDS
;	COMDAT ??_R2?$aVector@Unc_Vector3@@@@8
rdata$r	SEGMENT
??_R2?$aVector@Unc_Vector3@@@@8 DD FLAT:??_R1A@?0A@EA@?$aVector@Unc_Vector3@@@@8 ; aVector<nc_Vector3>::`RTTI Base Class Array'
rdata$r	ENDS
;	COMDAT ??_R3?$aVector@Unc_Vector3@@@@8
rdata$r	SEGMENT
??_R3?$aVector@Unc_Vector3@@@@8 DD 00H			; aVector<nc_Vector3>::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	01H
	DD	FLAT:??_R2?$aVector@Unc_Vector3@@@@8
rdata$r	ENDS
;	COMDAT ??_R0?AV?$aVector@Unc_Vector3@@@@@8
_DATA	SEGMENT
??_R0?AV?$aVector@Unc_Vector3@@@@@8 DD FLAT:??_7type_info@@6B@ ; aVector<nc_Vector3> `RTTI Type Descriptor'
	DD	00H
	DB	'.?AV?$aVector@Unc_Vector3@@@@', 00H
_DATA	ENDS
;	COMDAT ??_R4?$aVector@Unc_Vector3@@@@6B@
rdata$r	SEGMENT
??_R4?$aVector@Unc_Vector3@@@@6B@ DD 00H		; aVector<nc_Vector3>::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AV?$aVector@Unc_Vector3@@@@@8
	DD	FLAT:??_R3?$aVector@Unc_Vector3@@@@8
rdata$r	ENDS
;	COMDAT ??_7?$aVector@Unc_Vector3@@@@6B@
CONST	SEGMENT
??_7?$aVector@Unc_Vector3@@@@6B@ DD FLAT:??_R4?$aVector@Unc_Vector3@@@@6B@ ; aVector<nc_Vector3>::`vftable'
	DD	FLAT:??_E?$aVector@Unc_Vector3@@@@UAEPAXI@Z
	DD	FLAT:?Clear@?$aVector@Unc_Vector3@@@@UAEXXZ
	DD	FLAT:?Resize@?$aVector@Unc_Vector3@@@@UAE_NI@Z
	DD	FLAT:?Add@?$aVector@Unc_Vector3@@@@UAEXABUnc_Vector3@@@Z
	DD	FLAT:?Insert@?$aVector@Unc_Vector3@@@@UAEXIABUnc_Vector3@@@Z
	DD	FLAT:?Delete@?$aVector@Unc_Vector3@@@@UAEXI@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0?$aVector@Unc_Vector3@@@@QAE@XZ
_TEXT	SEGMENT
??0?$aVector@Unc_Vector3@@@@QAE@XZ PROC			; aVector<nc_Vector3>::aVector<nc_Vector3>, COMDAT
; _this$ = ecx

; 20   : 	aVector()

	mov	eax, ecx

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

	xor	ecx, ecx
	mov	DWORD PTR [eax], OFFSET ??_7?$aVector@Unc_Vector3@@@@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@Unc_Vector3@@@@QAE@XZ ENDP			; aVector<nc_Vector3>::aVector<nc_Vector3>
_TEXT	ENDS
PUBLIC	??A?$aVector@Unc_Vector3@@@@QAEAAUnc_Vector3@@I@Z ; aVector<nc_Vector3>::operator[]
; Function compile flags: /Ogtpy
;	COMDAT ??A?$aVector@Unc_Vector3@@@@QAEAAUnc_Vector3@@I@Z
_TEXT	SEGMENT
_nPos$ = 8						; size = 4
??A?$aVector@Unc_Vector3@@@@QAEAAUnc_Vector3@@I@Z PROC	; aVector<nc_Vector3>::operator[], COMDAT
; _this$ = ecx

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

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

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

	mov	eax, DWORD PTR [ecx+12]
	ret	0
?Count@?$aVector@Unc_Vector3@@@@QBEIXZ ENDP		; aVector<nc_Vector3>::Count
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Clear@?$aVector@Unc_Vector3@@@@UAEXXZ
_TEXT	SEGMENT
?Clear@?$aVector@Unc_Vector3@@@@UAEXXZ PROC		; aVector<nc_Vector3>::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@2

; 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@2:

; 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@Unc_Vector3@@@@UAEXXZ ENDP		; aVector<nc_Vector3>::Clear
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Resize@?$aVector@Unc_Vector3@@@@UAE_NI@Z
_TEXT	SEGMENT
_nSize$ = 8						; size = 4
?Resize@?$aVector@Unc_Vector3@@@@UAE_NI@Z PROC		; aVector<nc_Vector3>::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	$LN3@Resize@2
	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, 12					; 0000000cH
	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@2

; 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@2
	mov	ecx, edi
$LN8@Resize@2:

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

	lea	ecx, DWORD PTR [ecx+ecx*2]
	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@2:

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

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

; 61   : 				this->m_items = nSize;

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

; 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@2:
	pop	edi

; 65   : 		}
; 66   : 		return false;

	xor	al, al
	pop	esi

; 67   : 	}

	ret	4
?Resize@?$aVector@Unc_Vector3@@@@UAE_NI@Z ENDP		; aVector<nc_Vector3>::Resize
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Add@?$aVector@Unc_Vector3@@@@UAEXABUnc_Vector3@@@Z
_TEXT	SEGMENT
_obj$ = 8						; size = 4
?Add@?$aVector@Unc_Vector3@@@@UAEXABUnc_Vector3@@@Z PROC ; aVector<nc_Vector3>::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@2

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

	mov	eax, DWORD PTR [esi+8]
	mov	ecx, DWORD PTR [esi+4]
	lea	eax, DWORD PTR [eax+eax*2]
	lea	eax, DWORD PTR [ecx+eax*4-12]
	mov	ecx, DWORD PTR _obj$[esp]
	mov	edx, DWORD PTR [ecx]
	mov	DWORD PTR [eax], edx
	mov	edx, DWORD PTR [ecx+4]
	mov	DWORD PTR [eax+4], edx
	mov	ecx, DWORD PTR [ecx+8]
	mov	DWORD PTR [eax+8], ecx

; 73   : 			this->m_items++;

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

; 74   : 		}
; 75   : 	}

	ret	4
?Add@?$aVector@Unc_Vector3@@@@UAEXABUnc_Vector3@@@Z ENDP ; aVector<nc_Vector3>::Add
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Insert@?$aVector@Unc_Vector3@@@@UAEXIABUnc_Vector3@@@Z
_TEXT	SEGMENT
_index$ = 8						; size = 4
_obj$ = 12						; size = 4
?Insert@?$aVector@Unc_Vector3@@@@UAEXIABUnc_Vector3@@@Z PROC ; aVector<nc_Vector3>::Insert, COMDAT
; _this$ = ecx

; 77   : 	{

	push	ebx

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

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

; 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	esi
	pop	ebx

; 85   : 		}
; 86   : 	}

	ret	8
$LN3@Insert@2:

; 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@2

; 81   : 		{
; 82   : 			memmove(&this->m_vector[index + 1], &this->m_vector[index], (this->m_length - index -1) * sizeof(T));

	mov	eax, DWORD PTR [esi+8]
	mov	ecx, DWORD PTR [esi+4]
	push	edi
	sub	eax, ebx
	sub	eax, 1
	lea	edx, DWORD PTR [eax+eax*2]
	lea	edi, DWORD PTR [ebx+ebx*2]
	add	edx, edx
	add	edi, edi
	add	edx, edx
	add	edi, edi
	add	ecx, edi
	push	edx
	push	ecx
	add	ecx, 12					; 0000000cH
	push	ecx
	call	_memmove

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

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

; 84   : 			this->m_items++;

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

; 85   : 		}
; 86   : 	}

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

; 88   : 	{

	push	esi
	mov	esi, ecx

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

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

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

	add	DWORD PTR [esi+12], -1

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

	jne	SHORT $LN3@Delete@2

; 93   : 			this->Clear();

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

; 99   : 		}
; 100  : 	}

	ret	4
$LN3@Delete@2:

; 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));

	sub	eax, ecx
	sub	eax, 1
	push	edi
	mov	edi, DWORD PTR [esi+4]
	lea	eax, DWORD PTR [eax+eax*2]
	lea	edx, DWORD PTR [ecx+ecx*2]
	add	eax, eax
	lea	edx, DWORD PTR [edi+edx*4]
	add	eax, eax
	push	eax
	lea	ecx, DWORD PTR [edx+12]
	push	ecx
	push	edx
	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
	pop	edi
$LN2@Delete@2:
	pop	esi

; 99   : 		}
; 100  : 	}

	ret	4
?Delete@?$aVector@Unc_Vector3@@@@UAEXI@Z ENDP		; aVector<nc_Vector3>::Delete
_TEXT	ENDS
PUBLIC	??_7?$aVector@PAUgzCrateStealthMineStruct@@@@6B@ ; aVector<gzCrateStealthMineStruct *>::`vftable'
PUBLIC	??0?$aVector@PAUgzCrateStealthMineStruct@@@@QAE@XZ ; aVector<gzCrateStealthMineStruct *>::aVector<gzCrateStealthMineStruct *>
PUBLIC	??_R4?$aVector@PAUgzCrateStealthMineStruct@@@@6B@ ; aVector<gzCrateStealthMineStruct *>::`RTTI Complete Object Locator'
PUBLIC	??_R0?AV?$aVector@PAUgzCrateStealthMineStruct@@@@@8 ; aVector<gzCrateStealthMineStruct *> `RTTI Type Descriptor'
PUBLIC	??_R3?$aVector@PAUgzCrateStealthMineStruct@@@@8	; aVector<gzCrateStealthMineStruct *>::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2?$aVector@PAUgzCrateStealthMineStruct@@@@8	; aVector<gzCrateStealthMineStruct *>::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@?$aVector@PAUgzCrateStealthMineStruct@@@@8 ; aVector<gzCrateStealthMineStruct *>::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?Clear@?$aVector@PAUgzCrateStealthMineStruct@@@@UAEXXZ ; aVector<gzCrateStealthMineStruct *>::Clear
PUBLIC	?Resize@?$aVector@PAUgzCrateStealthMineStruct@@@@UAE_NI@Z ; aVector<gzCrateStealthMineStruct *>::Resize
PUBLIC	?Add@?$aVector@PAUgzCrateStealthMineStruct@@@@UAEXABQAUgzCrateStealthMineStruct@@@Z ; aVector<gzCrateStealthMineStruct *>::Add
PUBLIC	?Insert@?$aVector@PAUgzCrateStealthMineStruct@@@@UAEXIABQAUgzCrateStealthMineStruct@@@Z ; aVector<gzCrateStealthMineStruct *>::Insert
PUBLIC	?Delete@?$aVector@PAUgzCrateStealthMineStruct@@@@UAEXI@Z ; aVector<gzCrateStealthMineStruct *>::Delete
EXTRN	??_E?$aVector@PAUgzCrateStealthMineStruct@@@@UAEPAXI@Z:PROC ; aVector<gzCrateStealthMineStruct *>::`vector deleting destructor'
;	COMDAT ??_R1A@?0A@EA@?$aVector@PAUgzCrateStealthMineStruct@@@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@?$aVector@PAUgzCrateStealthMineStruct@@@@8 DD FLAT:??_R0?AV?$aVector@PAUgzCrateStealthMineStruct@@@@@8 ; aVector<gzCrateStealthMineStruct *>::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	00H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3?$aVector@PAUgzCrateStealthMineStruct@@@@8
rdata$r	ENDS
;	COMDAT ??_R2?$aVector@PAUgzCrateStealthMineStruct@@@@8
rdata$r	SEGMENT
??_R2?$aVector@PAUgzCrateStealthMineStruct@@@@8 DD FLAT:??_R1A@?0A@EA@?$aVector@PAUgzCrateStealthMineStruct@@@@8 ; aVector<gzCrateStealthMineStruct *>::`RTTI Base Class Array'
rdata$r	ENDS
;	COMDAT ??_R3?$aVector@PAUgzCrateStealthMineStruct@@@@8
rdata$r	SEGMENT
??_R3?$aVector@PAUgzCrateStealthMineStruct@@@@8 DD 00H	; aVector<gzCrateStealthMineStruct *>::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	01H
	DD	FLAT:??_R2?$aVector@PAUgzCrateStealthMineStruct@@@@8
rdata$r	ENDS
;	COMDAT ??_R0?AV?$aVector@PAUgzCrateStealthMineStruct@@@@@8
_DATA	SEGMENT
??_R0?AV?$aVector@PAUgzCrateStealthMineStruct@@@@@8 DD FLAT:??_7type_info@@6B@ ; aVector<gzCrateStealthMineStruct *> `RTTI Type Descriptor'
	DD	00H
	DB	'.?AV?$aVector@PAUgzCrateStealthMineStruct@@@@', 00H
_DATA	ENDS
;	COMDAT ??_R4?$aVector@PAUgzCrateStealthMineStruct@@@@6B@
rdata$r	SEGMENT
??_R4?$aVector@PAUgzCrateStealthMineStruct@@@@6B@ DD 00H ; aVector<gzCrateStealthMineStruct *>::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AV?$aVector@PAUgzCrateStealthMineStruct@@@@@8
	DD	FLAT:??_R3?$aVector@PAUgzCrateStealthMineStruct@@@@8
rdata$r	ENDS
;	COMDAT ??_7?$aVector@PAUgzCrateStealthMineStruct@@@@6B@
CONST	SEGMENT
??_7?$aVector@PAUgzCrateStealthMineStruct@@@@6B@ DD FLAT:??_R4?$aVector@PAUgzCrateStealthMineStruct@@@@6B@ ; aVector<gzCrateStealthMineStruct *>::`vftable'
	DD	FLAT:??_E?$aVector@PAUgzCrateStealthMineStruct@@@@UAEPAXI@Z
	DD	FLAT:?Clear@?$aVector@PAUgzCrateStealthMineStruct@@@@UAEXXZ
	DD	FLAT:?Resize@?$aVector@PAUgzCrateStealthMineStruct@@@@UAE_NI@Z
	DD	FLAT:?Add@?$aVector@PAUgzCrateStealthMineStruct@@@@UAEXABQAUgzCrateStealthMineStruct@@@Z
	DD	FLAT:?Insert@?$aVector@PAUgzCrateStealthMineStruct@@@@UAEXIABQAUgzCrateStealthMineStruct@@@Z
	DD	FLAT:?Delete@?$aVector@PAUgzCrateStealthMineStruct@@@@UAEXI@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0?$aVector@PAUgzCrateStealthMineStruct@@@@QAE@XZ
_TEXT	SEGMENT
??0?$aVector@PAUgzCrateStealthMineStruct@@@@QAE@XZ PROC	; aVector<gzCrateStealthMineStruct *>::aVector<gzCrateStealthMineStruct *>, COMDAT
; _this$ = ecx

; 20   : 	aVector()

	mov	eax, ecx

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

	xor	ecx, ecx
	mov	DWORD PTR [eax], OFFSET ??_7?$aVector@PAUgzCrateStealthMineStruct@@@@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@PAUgzCrateStealthMineStruct@@@@QAE@XZ ENDP	; aVector<gzCrateStealthMineStruct *>::aVector<gzCrateStealthMineStruct *>
_TEXT	ENDS
PUBLIC	??A?$aVector@PAUgzCrateStealthMineStruct@@@@QAEAAPAUgzCrateStealthMineStruct@@I@Z ; aVector<gzCrateStealthMineStruct *>::operator[]
; Function compile flags: /Ogtpy
;	COMDAT ??A?$aVector@PAUgzCrateStealthMineStruct@@@@QAEAAPAUgzCrateStealthMineStruct@@I@Z
_TEXT	SEGMENT
_nPos$ = 8						; size = 4
??A?$aVector@PAUgzCrateStealthMineStruct@@@@QAEAAPAUgzCrateStealthMineStruct@@I@Z PROC ; aVector<gzCrateStealthMineStruct *>::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@PAUgzCrateStealthMineStruct@@@@QAEAAPAUgzCrateStealthMineStruct@@I@Z ENDP ; aVector<gzCrateStealthMineStruct *>::operator[]
_TEXT	ENDS
PUBLIC	?Count@?$aVector@PAUgzCrateStealthMineStruct@@@@QBEIXZ ; aVector<gzCrateStealthMineStruct *>::Count
; Function compile flags: /Ogtpy
;	COMDAT ?Count@?$aVector@PAUgzCrateStealthMineStruct@@@@QBEIXZ
_TEXT	SEGMENT
?Count@?$aVector@PAUgzCrateStealthMineStruct@@@@QBEIXZ PROC ; aVector<gzCrateStealthMineStruct *>::Count, COMDAT
; _this$ = ecx

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

	mov	eax, DWORD PTR [ecx+12]
	ret	0
?Count@?$aVector@PAUgzCrateStealthMineStruct@@@@QBEIXZ ENDP ; aVector<gzCrateStealthMineStruct *>::Count
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Clear@?$aVector@PAUgzCrateStealthMineStruct@@@@UAEXXZ
_TEXT	SEGMENT
?Clear@?$aVector@PAUgzCrateStealthMineStruct@@@@UAEXXZ PROC ; aVector<gzCrateStealthMineStruct *>::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@3

; 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@3:

; 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@PAUgzCrateStealthMineStruct@@@@UAEXXZ ENDP ; aVector<gzCrateStealthMineStruct *>::Clear
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Resize@?$aVector@PAUgzCrateStealthMineStruct@@@@UAE_NI@Z
_TEXT	SEGMENT
_nSize$ = 8						; size = 4
?Resize@?$aVector@PAUgzCrateStealthMineStruct@@@@UAE_NI@Z PROC ; aVector<gzCrateStealthMineStruct *>::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@3
	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@3

; 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@3
	mov	ecx, edi
$LN8@Resize@3:

; 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@3:

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

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

; 61   : 				this->m_items = nSize;

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

; 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@3:
	pop	edi

; 65   : 		}
; 66   : 		return false;

	xor	al, al
	pop	esi

; 67   : 	}

	ret	4
?Resize@?$aVector@PAUgzCrateStealthMineStruct@@@@UAE_NI@Z ENDP ; aVector<gzCrateStealthMineStruct *>::Resize
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Add@?$aVector@PAUgzCrateStealthMineStruct@@@@UAEXABQAUgzCrateStealthMineStruct@@@Z
_TEXT	SEGMENT
_obj$ = 8						; size = 4
?Add@?$aVector@PAUgzCrateStealthMineStruct@@@@UAEXABQAUgzCrateStealthMineStruct@@@Z PROC ; aVector<gzCrateStealthMineStruct *>::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@3

; 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@3:
	pop	esi

; 74   : 		}
; 75   : 	}

	ret	4
?Add@?$aVector@PAUgzCrateStealthMineStruct@@@@UAEXABQAUgzCrateStealthMineStruct@@@Z ENDP ; aVector<gzCrateStealthMineStruct *>::Add
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Insert@?$aVector@PAUgzCrateStealthMineStruct@@@@UAEXIABQAUgzCrateStealthMineStruct@@@Z
_TEXT	SEGMENT
_index$ = 8						; size = 4
_obj$ = 12						; size = 4
?Insert@?$aVector@PAUgzCrateStealthMineStruct@@@@UAEXIABQAUgzCrateStealthMineStruct@@@Z PROC ; aVector<gzCrateStealthMineStruct *>::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@3

; 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@3:

; 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@3

; 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@3:
	pop	edi
	pop	esi

; 85   : 		}
; 86   : 	}

	ret	8
?Insert@?$aVector@PAUgzCrateStealthMineStruct@@@@UAEXIABQAUgzCrateStealthMineStruct@@@Z ENDP ; aVector<gzCrateStealthMineStruct *>::Insert
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Delete@?$aVector@PAUgzCrateStealthMineStruct@@@@UAEXI@Z
_TEXT	SEGMENT
_index$ = 8						; size = 4
?Delete@?$aVector@PAUgzCrateStealthMineStruct@@@@UAEXI@Z PROC ; aVector<gzCrateStealthMineStruct *>::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@3

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

	add	DWORD PTR [esi+12], -1

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

	jne	SHORT $LN3@Delete@3

; 93   : 			this->Clear();

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

; 99   : 		}
; 100  : 	}

	ret	4
$LN3@Delete@3:

; 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@3:
	pop	esi

; 99   : 		}
; 100  : 	}

	ret	4
?Delete@?$aVector@PAUgzCrateStealthMineStruct@@@@UAEXI@Z ENDP ; aVector<gzCrateStealthMineStruct *>::Delete
_TEXT	ENDS
PUBLIC	??_7?$aVector@UgzCrateVehicleAutoRepairStruct@@@@6B@ ; aVector<gzCrateVehicleAutoRepairStruct>::`vftable'
PUBLIC	??0?$aVector@UgzCrateVehicleAutoRepairStruct@@@@QAE@XZ ; aVector<gzCrateVehicleAutoRepairStruct>::aVector<gzCrateVehicleAutoRepairStruct>
PUBLIC	??_R4?$aVector@UgzCrateVehicleAutoRepairStruct@@@@6B@ ; aVector<gzCrateVehicleAutoRepairStruct>::`RTTI Complete Object Locator'
PUBLIC	??_R0?AV?$aVector@UgzCrateVehicleAutoRepairStruct@@@@@8 ; aVector<gzCrateVehicleAutoRepairStruct> `RTTI Type Descriptor'
PUBLIC	??_R3?$aVector@UgzCrateVehicleAutoRepairStruct@@@@8 ; aVector<gzCrateVehicleAutoRepairStruct>::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2?$aVector@UgzCrateVehicleAutoRepairStruct@@@@8 ; aVector<gzCrateVehicleAutoRepairStruct>::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@?$aVector@UgzCrateVehicleAutoRepairStruct@@@@8 ; aVector<gzCrateVehicleAutoRepairStruct>::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?Clear@?$aVector@UgzCrateVehicleAutoRepairStruct@@@@UAEXXZ ; aVector<gzCrateVehicleAutoRepairStruct>::Clear
PUBLIC	?Resize@?$aVector@UgzCrateVehicleAutoRepairStruct@@@@UAE_NI@Z ; aVector<gzCrateVehicleAutoRepairStruct>::Resize
PUBLIC	?Add@?$aVector@UgzCrateVehicleAutoRepairStruct@@@@UAEXABUgzCrateVehicleAutoRepairStruct@@@Z ; aVector<gzCrateVehicleAutoRepairStruct>::Add
PUBLIC	?Insert@?$aVector@UgzCrateVehicleAutoRepairStruct@@@@UAEXIABUgzCrateVehicleAutoRepairStruct@@@Z ; aVector<gzCrateVehicleAutoRepairStruct>::Insert
PUBLIC	?Delete@?$aVector@UgzCrateVehicleAutoRepairStruct@@@@UAEXI@Z ; aVector<gzCrateVehicleAutoRepairStruct>::Delete
EXTRN	??_E?$aVector@UgzCrateVehicleAutoRepairStruct@@@@UAEPAXI@Z:PROC ; aVector<gzCrateVehicleAutoRepairStruct>::`vector deleting destructor'
;	COMDAT ??_R1A@?0A@EA@?$aVector@UgzCrateVehicleAutoRepairStruct@@@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@?$aVector@UgzCrateVehicleAutoRepairStruct@@@@8 DD FLAT:??_R0?AV?$aVector@UgzCrateVehicleAutoRepairStruct@@@@@8 ; aVector<gzCrateVehicleAutoRepairStruct>::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	00H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3?$aVector@UgzCrateVehicleAutoRepairStruct@@@@8
rdata$r	ENDS
;	COMDAT ??_R2?$aVector@UgzCrateVehicleAutoRepairStruct@@@@8
rdata$r	SEGMENT
??_R2?$aVector@UgzCrateVehicleAutoRepairStruct@@@@8 DD FLAT:??_R1A@?0A@EA@?$aVector@UgzCrateVehicleAutoRepairStruct@@@@8 ; aVector<gzCrateVehicleAutoRepairStruct>::`RTTI Base Class Array'
rdata$r	ENDS
;	COMDAT ??_R3?$aVector@UgzCrateVehicleAutoRepairStruct@@@@8
rdata$r	SEGMENT
??_R3?$aVector@UgzCrateVehicleAutoRepairStruct@@@@8 DD 00H ; aVector<gzCrateVehicleAutoRepairStruct>::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	01H
	DD	FLAT:??_R2?$aVector@UgzCrateVehicleAutoRepairStruct@@@@8
rdata$r	ENDS
;	COMDAT ??_R0?AV?$aVector@UgzCrateVehicleAutoRepairStruct@@@@@8
_DATA	SEGMENT
??_R0?AV?$aVector@UgzCrateVehicleAutoRepairStruct@@@@@8 DD FLAT:??_7type_info@@6B@ ; aVector<gzCrateVehicleAutoRepairStruct> `RTTI Type Descriptor'
	DD	00H
	DB	'.?AV?$aVector@UgzCrateVehicleAutoRepairStruct@@@@', 00H
_DATA	ENDS
;	COMDAT ??_R4?$aVector@UgzCrateVehicleAutoRepairStruct@@@@6B@
rdata$r	SEGMENT
??_R4?$aVector@UgzCrateVehicleAutoRepairStruct@@@@6B@ DD 00H ; aVector<gzCrateVehicleAutoRepairStruct>::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AV?$aVector@UgzCrateVehicleAutoRepairStruct@@@@@8
	DD	FLAT:??_R3?$aVector@UgzCrateVehicleAutoRepairStruct@@@@8
rdata$r	ENDS
;	COMDAT ??_7?$aVector@UgzCrateVehicleAutoRepairStruct@@@@6B@
CONST	SEGMENT
??_7?$aVector@UgzCrateVehicleAutoRepairStruct@@@@6B@ DD FLAT:??_R4?$aVector@UgzCrateVehicleAutoRepairStruct@@@@6B@ ; aVector<gzCrateVehicleAutoRepairStruct>::`vftable'
	DD	FLAT:??_E?$aVector@UgzCrateVehicleAutoRepairStruct@@@@UAEPAXI@Z
	DD	FLAT:?Clear@?$aVector@UgzCrateVehicleAutoRepairStruct@@@@UAEXXZ
	DD	FLAT:?Resize@?$aVector@UgzCrateVehicleAutoRepairStruct@@@@UAE_NI@Z
	DD	FLAT:?Add@?$aVector@UgzCrateVehicleAutoRepairStruct@@@@UAEXABUgzCrateVehicleAutoRepairStruct@@@Z
	DD	FLAT:?Insert@?$aVector@UgzCrateVehicleAutoRepairStruct@@@@UAEXIABUgzCrateVehicleAutoRepairStruct@@@Z
	DD	FLAT:?Delete@?$aVector@UgzCrateVehicleAutoRepairStruct@@@@UAEXI@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0?$aVector@UgzCrateVehicleAutoRepairStruct@@@@QAE@XZ
_TEXT	SEGMENT
??0?$aVector@UgzCrateVehicleAutoRepairStruct@@@@QAE@XZ PROC ; aVector<gzCrateVehicleAutoRepairStruct>::aVector<gzCrateVehicleAutoRepairStruct>, COMDAT
; _this$ = ecx

; 20   : 	aVector()

	mov	eax, ecx

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

	xor	ecx, ecx
	mov	DWORD PTR [eax], OFFSET ??_7?$aVector@UgzCrateVehicleAutoRepairStruct@@@@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@UgzCrateVehicleAutoRepairStruct@@@@QAE@XZ ENDP ; aVector<gzCrateVehicleAutoRepairStruct>::aVector<gzCrateVehicleAutoRepairStruct>
_TEXT	ENDS
PUBLIC	??A?$aVector@UgzCrateVehicleAutoRepairStruct@@@@QAEAAUgzCrateVehicleAutoRepairStruct@@I@Z ; aVector<gzCrateVehicleAutoRepairStruct>::operator[]
; Function compile flags: /Ogtpy
;	COMDAT ??A?$aVector@UgzCrateVehicleAutoRepairStruct@@@@QAEAAUgzCrateVehicleAutoRepairStruct@@I@Z
_TEXT	SEGMENT
_nPos$ = 8						; size = 4
??A?$aVector@UgzCrateVehicleAutoRepairStruct@@@@QAEAAUgzCrateVehicleAutoRepairStruct@@I@Z PROC ; aVector<gzCrateVehicleAutoRepairStruct>::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*8]
	ret	4
??A?$aVector@UgzCrateVehicleAutoRepairStruct@@@@QAEAAUgzCrateVehicleAutoRepairStruct@@I@Z ENDP ; aVector<gzCrateVehicleAutoRepairStruct>::operator[]
_TEXT	ENDS
PUBLIC	?Count@?$aVector@UgzCrateVehicleAutoRepairStruct@@@@QBEIXZ ; aVector<gzCrateVehicleAutoRepairStruct>::Count
; Function compile flags: /Ogtpy
;	COMDAT ?Count@?$aVector@UgzCrateVehicleAutoRepairStruct@@@@QBEIXZ
_TEXT	SEGMENT
?Count@?$aVector@UgzCrateVehicleAutoRepairStruct@@@@QBEIXZ PROC ; aVector<gzCrateVehicleAutoRepairStruct>::Count, COMDAT
; _this$ = ecx

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

	mov	eax, DWORD PTR [ecx+12]
	ret	0
?Count@?$aVector@UgzCrateVehicleAutoRepairStruct@@@@QBEIXZ ENDP ; aVector<gzCrateVehicleAutoRepairStruct>::Count
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Clear@?$aVector@UgzCrateVehicleAutoRepairStruct@@@@UAEXXZ
_TEXT	SEGMENT
?Clear@?$aVector@UgzCrateVehicleAutoRepairStruct@@@@UAEXXZ PROC ; aVector<gzCrateVehicleAutoRepairStruct>::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@4

; 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@4:

; 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@UgzCrateVehicleAutoRepairStruct@@@@UAEXXZ ENDP ; aVector<gzCrateVehicleAutoRepairStruct>::Clear
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Resize@?$aVector@UgzCrateVehicleAutoRepairStruct@@@@UAE_NI@Z
_TEXT	SEGMENT
_nSize$ = 8						; size = 4
?Resize@?$aVector@UgzCrateVehicleAutoRepairStruct@@@@UAE_NI@Z PROC ; aVector<gzCrateVehicleAutoRepairStruct>::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	$LN3@Resize@4
	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, 8
	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@4

; 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@4
	mov	ecx, edi
$LN8@Resize@4:

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

	add	ecx, ecx
	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@4:

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

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

; 61   : 				this->m_items = nSize;

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

; 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@4:
	pop	edi

; 65   : 		}
; 66   : 		return false;

	xor	al, al
	pop	esi

; 67   : 	}

	ret	4
?Resize@?$aVector@UgzCrateVehicleAutoRepairStruct@@@@UAE_NI@Z ENDP ; aVector<gzCrateVehicleAutoRepairStruct>::Resize
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Add@?$aVector@UgzCrateVehicleAutoRepairStruct@@@@UAEXABUgzCrateVehicleAutoRepairStruct@@@Z
_TEXT	SEGMENT
_obj$ = 8						; size = 4
?Add@?$aVector@UgzCrateVehicleAutoRepairStruct@@@@UAEXABUgzCrateVehicleAutoRepairStruct@@@Z PROC ; aVector<gzCrateVehicleAutoRepairStruct>::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@4

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

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

; 73   : 			this->m_items++;

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

; 74   : 		}
; 75   : 	}

	ret	4
?Add@?$aVector@UgzCrateVehicleAutoRepairStruct@@@@UAEXABUgzCrateVehicleAutoRepairStruct@@@Z ENDP ; aVector<gzCrateVehicleAutoRepairStruct>::Add
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Insert@?$aVector@UgzCrateVehicleAutoRepairStruct@@@@UAEXIABUgzCrateVehicleAutoRepairStruct@@@Z
_TEXT	SEGMENT
_index$ = 8						; size = 4
_obj$ = 12						; size = 4
?Insert@?$aVector@UgzCrateVehicleAutoRepairStruct@@@@UAEXIABUgzCrateVehicleAutoRepairStruct@@@Z PROC ; aVector<gzCrateVehicleAutoRepairStruct>::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@4

; 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@4:

; 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@4

; 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*8]
	sub	edx, edi
	lea	ecx, DWORD PTR [edx*8-8]
	push	ecx
	push	eax
	add	eax, 8
	push	eax
	call	_memmove

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

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

; 84   : 			this->m_items++;

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

; 85   : 		}
; 86   : 	}

	ret	8
?Insert@?$aVector@UgzCrateVehicleAutoRepairStruct@@@@UAEXIABUgzCrateVehicleAutoRepairStruct@@@Z ENDP ; aVector<gzCrateVehicleAutoRepairStruct>::Insert
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Delete@?$aVector@UgzCrateVehicleAutoRepairStruct@@@@UAEXI@Z
_TEXT	SEGMENT
_index$ = 8						; size = 4
?Delete@?$aVector@UgzCrateVehicleAutoRepairStruct@@@@UAEXI@Z PROC ; aVector<gzCrateVehicleAutoRepairStruct>::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@4

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

	add	DWORD PTR [esi+12], -1

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

	jne	SHORT $LN3@Delete@4

; 93   : 			this->Clear();

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

; 99   : 		}
; 100  : 	}

	ret	4
$LN3@Delete@4:

; 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*8]
	sub	eax, edx
	lea	edx, DWORD PTR [eax*8-8]
	push	edx
	lea	eax, DWORD PTR [ecx+8]
	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@4:
	pop	esi

; 99   : 		}
; 100  : 	}

	ret	4
?Delete@?$aVector@UgzCrateVehicleAutoRepairStruct@@@@UAEXI@Z ENDP ; aVector<gzCrateVehicleAutoRepairStruct>::Delete
_TEXT	ENDS
PUBLIC	??_7?$aVector@PAVgzCrateBase@@@@6B@		; aVector<gzCrateBase *>::`vftable'
PUBLIC	??0?$aVector@PAVgzCrateBase@@@@QAE@XZ		; aVector<gzCrateBase *>::aVector<gzCrateBase *>
PUBLIC	??_R4?$aVector@PAVgzCrateBase@@@@6B@		; aVector<gzCrateBase *>::`RTTI Complete Object Locator'
PUBLIC	??_R0?AV?$aVector@PAVgzCrateBase@@@@@8		; aVector<gzCrateBase *> `RTTI Type Descriptor'
PUBLIC	??_R3?$aVector@PAVgzCrateBase@@@@8		; aVector<gzCrateBase *>::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2?$aVector@PAVgzCrateBase@@@@8		; aVector<gzCrateBase *>::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@?$aVector@PAVgzCrateBase@@@@8	; aVector<gzCrateBase *>::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?Clear@?$aVector@PAVgzCrateBase@@@@UAEXXZ	; aVector<gzCrateBase *>::Clear
PUBLIC	?Resize@?$aVector@PAVgzCrateBase@@@@UAE_NI@Z	; aVector<gzCrateBase *>::Resize
PUBLIC	?Add@?$aVector@PAVgzCrateBase@@@@UAEXABQAVgzCrateBase@@@Z ; aVector<gzCrateBase *>::Add
PUBLIC	?Insert@?$aVector@PAVgzCrateBase@@@@UAEXIABQAVgzCrateBase@@@Z ; aVector<gzCrateBase *>::Insert
PUBLIC	?Delete@?$aVector@PAVgzCrateBase@@@@UAEXI@Z	; aVector<gzCrateBase *>::Delete
EXTRN	??_E?$aVector@PAVgzCrateBase@@@@UAEPAXI@Z:PROC	; aVector<gzCrateBase *>::`vector deleting destructor'
;	COMDAT ??_R1A@?0A@EA@?$aVector@PAVgzCrateBase@@@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@?$aVector@PAVgzCrateBase@@@@8 DD FLAT:??_R0?AV?$aVector@PAVgzCrateBase@@@@@8 ; aVector<gzCrateBase *>::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	00H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3?$aVector@PAVgzCrateBase@@@@8
rdata$r	ENDS
;	COMDAT ??_R2?$aVector@PAVgzCrateBase@@@@8
rdata$r	SEGMENT
??_R2?$aVector@PAVgzCrateBase@@@@8 DD FLAT:??_R1A@?0A@EA@?$aVector@PAVgzCrateBase@@@@8 ; aVector<gzCrateBase *>::`RTTI Base Class Array'
rdata$r	ENDS
;	COMDAT ??_R3?$aVector@PAVgzCrateBase@@@@8
rdata$r	SEGMENT
??_R3?$aVector@PAVgzCrateBase@@@@8 DD 00H		; aVector<gzCrateBase *>::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	01H
	DD	FLAT:??_R2?$aVector@PAVgzCrateBase@@@@8
rdata$r	ENDS
;	COMDAT ??_R0?AV?$aVector@PAVgzCrateBase@@@@@8
_DATA	SEGMENT
??_R0?AV?$aVector@PAVgzCrateBase@@@@@8 DD FLAT:??_7type_info@@6B@ ; aVector<gzCrateBase *> `RTTI Type Descriptor'
	DD	00H
	DB	'.?AV?$aVector@PAVgzCrateBase@@@@', 00H
_DATA	ENDS
;	COMDAT ??_R4?$aVector@PAVgzCrateBase@@@@6B@
rdata$r	SEGMENT
??_R4?$aVector@PAVgzCrateBase@@@@6B@ DD 00H		; aVector<gzCrateBase *>::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AV?$aVector@PAVgzCrateBase@@@@@8
	DD	FLAT:??_R3?$aVector@PAVgzCrateBase@@@@8
rdata$r	ENDS
;	COMDAT ??_7?$aVector@PAVgzCrateBase@@@@6B@
CONST	SEGMENT
??_7?$aVector@PAVgzCrateBase@@@@6B@ DD FLAT:??_R4?$aVector@PAVgzCrateBase@@@@6B@ ; aVector<gzCrateBase *>::`vftable'
	DD	FLAT:??_E?$aVector@PAVgzCrateBase@@@@UAEPAXI@Z
	DD	FLAT:?Clear@?$aVector@PAVgzCrateBase@@@@UAEXXZ
	DD	FLAT:?Resize@?$aVector@PAVgzCrateBase@@@@UAE_NI@Z
	DD	FLAT:?Add@?$aVector@PAVgzCrateBase@@@@UAEXABQAVgzCrateBase@@@Z
	DD	FLAT:?Insert@?$aVector@PAVgzCrateBase@@@@UAEXIABQAVgzCrateBase@@@Z
	DD	FLAT:?Delete@?$aVector@PAVgzCrateBase@@@@UAEXI@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0?$aVector@PAVgzCrateBase@@@@QAE@XZ
_TEXT	SEGMENT
??0?$aVector@PAVgzCrateBase@@@@QAE@XZ PROC		; aVector<gzCrateBase *>::aVector<gzCrateBase *>, COMDAT
; _this$ = ecx

; 20   : 	aVector()

	mov	eax, ecx

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

	xor	ecx, ecx
	mov	DWORD PTR [eax], OFFSET ??_7?$aVector@PAVgzCrateBase@@@@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@PAVgzCrateBase@@@@QAE@XZ ENDP		; aVector<gzCrateBase *>::aVector<gzCrateBase *>
_TEXT	ENDS
PUBLIC	??A?$aVector@PAVgzCrateBase@@@@QAEAAPAVgzCrateBase@@I@Z ; aVector<gzCrateBase *>::operator[]
; Function compile flags: /Ogtpy
;	COMDAT ??A?$aVector@PAVgzCrateBase@@@@QAEAAPAVgzCrateBase@@I@Z
_TEXT	SEGMENT
_nPos$ = 8						; size = 4
??A?$aVector@PAVgzCrateBase@@@@QAEAAPAVgzCrateBase@@I@Z PROC ; aVector<gzCrateBase *>::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@PAVgzCrateBase@@@@QAEAAPAVgzCrateBase@@I@Z ENDP ; aVector<gzCrateBase *>::operator[]
_TEXT	ENDS
PUBLIC	?Count@?$aVector@PAVgzCrateBase@@@@QBEIXZ	; aVector<gzCrateBase *>::Count
; Function compile flags: /Ogtpy
;	COMDAT ?Count@?$aVector@PAVgzCrateBase@@@@QBEIXZ
_TEXT	SEGMENT
?Count@?$aVector@PAVgzCrateBase@@@@QBEIXZ PROC		; aVector<gzCrateBase *>::Count, COMDAT
; _this$ = ecx

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

	mov	eax, DWORD PTR [ecx+12]
	ret	0
?Count@?$aVector@PAVgzCrateBase@@@@QBEIXZ ENDP		; aVector<gzCrateBase *>::Count
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Clear@?$aVector@PAVgzCrateBase@@@@UAEXXZ
_TEXT	SEGMENT
?Clear@?$aVector@PAVgzCrateBase@@@@UAEXXZ PROC		; aVector<gzCrateBase *>::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@5

; 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@5:

; 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@PAVgzCrateBase@@@@UAEXXZ ENDP		; aVector<gzCrateBase *>::Clear
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Resize@?$aVector@PAVgzCrateBase@@@@UAE_NI@Z
_TEXT	SEGMENT
_nSize$ = 8						; size = 4
?Resize@?$aVector@PAVgzCrateBase@@@@UAE_NI@Z PROC	; aVector<gzCrateBase *>::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@5
	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@5

; 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@5
	mov	ecx, edi
$LN8@Resize@5:

; 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@5:

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

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

; 61   : 				this->m_items = nSize;

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

; 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@5:
	pop	edi

; 65   : 		}
; 66   : 		return false;

	xor	al, al
	pop	esi

; 67   : 	}

	ret	4
?Resize@?$aVector@PAVgzCrateBase@@@@UAE_NI@Z ENDP	; aVector<gzCrateBase *>::Resize
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Add@?$aVector@PAVgzCrateBase@@@@UAEXABQAVgzCrateBase@@@Z
_TEXT	SEGMENT
_obj$ = 8						; size = 4
?Add@?$aVector@PAVgzCrateBase@@@@UAEXABQAVgzCrateBase@@@Z PROC ; aVector<gzCrateBase *>::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@5

; 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@5:
	pop	esi

; 74   : 		}
; 75   : 	}

	ret	4
?Add@?$aVector@PAVgzCrateBase@@@@UAEXABQAVgzCrateBase@@@Z ENDP ; aVector<gzCrateBase *>::Add
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Insert@?$aVector@PAVgzCrateBase@@@@UAEXIABQAVgzCrateBase@@@Z
_TEXT	SEGMENT
_index$ = 8						; size = 4
_obj$ = 12						; size = 4
?Insert@?$aVector@PAVgzCrateBase@@@@UAEXIABQAVgzCrateBase@@@Z PROC ; aVector<gzCrateBase *>::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@5

; 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@5:

; 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@5

; 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@5:
	pop	edi
	pop	esi

; 85   : 		}
; 86   : 	}

	ret	8
?Insert@?$aVector@PAVgzCrateBase@@@@UAEXIABQAVgzCrateBase@@@Z ENDP ; aVector<gzCrateBase *>::Insert
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Delete@?$aVector@PAVgzCrateBase@@@@UAEXI@Z
_TEXT	SEGMENT
_index$ = 8						; size = 4
?Delete@?$aVector@PAVgzCrateBase@@@@UAEXI@Z PROC	; aVector<gzCrateBase *>::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@5

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

	add	DWORD PTR [esi+12], -1

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

	jne	SHORT $LN3@Delete@5

; 93   : 			this->Clear();

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

; 99   : 		}
; 100  : 	}

	ret	4
$LN3@Delete@5:

; 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@5:
	pop	esi

; 99   : 		}
; 100  : 	}

	ret	4
?Delete@?$aVector@PAVgzCrateBase@@@@UAEXI@Z ENDP	; aVector<gzCrateBase *>::Delete
_TEXT	ENDS
PUBLIC	?Count@?$nc_DynamicVectorClass@PAVnc_SpawnerClass@@@@QAEHXZ ; nc_DynamicVectorClass<nc_SpawnerClass *>::Count
; Function compile flags: /Ogtpy
; File d:\source code\fds lib\new\fds_vector.h
;	COMDAT ?Count@?$nc_DynamicVectorClass@PAVnc_SpawnerClass@@@@QAEHXZ
_TEXT	SEGMENT
?Count@?$nc_DynamicVectorClass@PAVnc_SpawnerClass@@@@QAEHXZ PROC ; nc_DynamicVectorClass<nc_SpawnerClass *>::Count, COMDAT
; _this$ = ecx

; 375  : 		return ActiveCount;

	mov	eax, DWORD PTR [ecx+16]

; 376  : 	}

	ret	0
?Count@?$nc_DynamicVectorClass@PAVnc_SpawnerClass@@@@QAEHXZ ENDP ; nc_DynamicVectorClass<nc_SpawnerClass *>::Count
_TEXT	ENDS
PUBLIC	??A?$nc_VectorClass@PAVnc_SpawnerClass@@@@QAEAAPAVnc_SpawnerClass@@H@Z ; nc_VectorClass<nc_SpawnerClass *>::operator[]
; Function compile flags: /Ogtpy
;	COMDAT ??A?$nc_VectorClass@PAVnc_SpawnerClass@@@@QAEAAPAVnc_SpawnerClass@@H@Z
_TEXT	SEGMENT
_index$ = 8						; size = 4
??A?$nc_VectorClass@PAVnc_SpawnerClass@@@@QAEAAPAVnc_SpawnerClass@@H@Z PROC ; nc_VectorClass<nc_SpawnerClass *>::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_SpawnerClass@@@@QAEAAPAVnc_SpawnerClass@@H@Z ENDP ; nc_VectorClass<nc_SpawnerClass *>::operator[]
_TEXT	ENDS
PUBLIC	??_7?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@6B@	; nc_ScriptRegistrant<M00_CNC_Crate>::`vftable'
PUBLIC	??0?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@QAE@PAD0@Z ; nc_ScriptRegistrant<M00_CNC_Crate>::nc_ScriptRegistrant<M00_CNC_Crate>
PUBLIC	??_R4?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@6B@ ; nc_ScriptRegistrant<M00_CNC_Crate>::`RTTI Complete Object Locator'
PUBLIC	??_R0?AV?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@@8 ; nc_ScriptRegistrant<M00_CNC_Crate> `RTTI Type Descriptor'
PUBLIC	??_R3?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@8	; nc_ScriptRegistrant<M00_CNC_Crate>::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@8	; nc_ScriptRegistrant<M00_CNC_Crate>::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@8 ; nc_ScriptRegistrant<M00_CNC_Crate>::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	??_R1A@?0A@EA@nc_ScriptFactory@@8		; nc_ScriptFactory::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	??_R0?AVnc_ScriptFactory@@@8			; nc_ScriptFactory `RTTI Type Descriptor'
PUBLIC	??_R3nc_ScriptFactory@@8			; nc_ScriptFactory::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2nc_ScriptFactory@@8			; nc_ScriptFactory::`RTTI Base Class Array'
PUBLIC	?Create@?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@UAEPAVnc_ScriptImpClass@@XZ ; nc_ScriptRegistrant<M00_CNC_Crate>::Create
EXTRN	??0nc_ScriptFactory@@QAE@PAD0@Z:PROC		; nc_ScriptFactory::nc_ScriptFactory
EXTRN	??_E?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@UAEPAXI@Z:PROC ; nc_ScriptRegistrant<M00_CNC_Crate>::`vector deleting destructor'
;	COMDAT ??_R2nc_ScriptFactory@@8
; File d:\source code\fds lib\new\fds_scripts.h
rdata$r	SEGMENT
??_R2nc_ScriptFactory@@8 DD FLAT:??_R1A@?0A@EA@nc_ScriptFactory@@8 ; nc_ScriptFactory::`RTTI Base Class Array'
rdata$r	ENDS
;	COMDAT ??_R3nc_ScriptFactory@@8
rdata$r	SEGMENT
??_R3nc_ScriptFactory@@8 DD 00H				; nc_ScriptFactory::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	01H
	DD	FLAT:??_R2nc_ScriptFactory@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVnc_ScriptFactory@@@8
_DATA	SEGMENT
??_R0?AVnc_ScriptFactory@@@8 DD FLAT:??_7type_info@@6B@	; nc_ScriptFactory `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVnc_ScriptFactory@@', 00H
_DATA	ENDS
;	COMDAT ??_R1A@?0A@EA@nc_ScriptFactory@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@nc_ScriptFactory@@8 DD FLAT:??_R0?AVnc_ScriptFactory@@@8 ; nc_ScriptFactory::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	00H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3nc_ScriptFactory@@8
rdata$r	ENDS
;	COMDAT ??_R1A@?0A@EA@?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@8 DD FLAT:??_R0?AV?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@@8 ; nc_ScriptRegistrant<M00_CNC_Crate>::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@8
rdata$r	ENDS
;	COMDAT ??_R2?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@8
rdata$r	SEGMENT
??_R2?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@8 DD FLAT:??_R1A@?0A@EA@?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@8 ; nc_ScriptRegistrant<M00_CNC_Crate>::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@nc_ScriptFactory@@8
rdata$r	ENDS
;	COMDAT ??_R3?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@8
rdata$r	SEGMENT
??_R3?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@8 DD 00H	; nc_ScriptRegistrant<M00_CNC_Crate>::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@8
rdata$r	ENDS
;	COMDAT ??_R0?AV?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@@8
_DATA	SEGMENT
??_R0?AV?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@@8 DD FLAT:??_7type_info@@6B@ ; nc_ScriptRegistrant<M00_CNC_Crate> `RTTI Type Descriptor'
	DD	00H
	DB	'.?AV?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@', 00H
_DATA	ENDS
;	COMDAT ??_R4?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@6B@
rdata$r	SEGMENT
??_R4?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@6B@ DD 00H	; nc_ScriptRegistrant<M00_CNC_Crate>::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AV?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@@8
	DD	FLAT:??_R3?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@8
rdata$r	ENDS
;	COMDAT ??_7?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@6B@
CONST	SEGMENT
??_7?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@6B@ DD FLAT:??_R4?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@6B@ ; nc_ScriptRegistrant<M00_CNC_Crate>::`vftable'
	DD	FLAT:??_E?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@UAEPAXI@Z
	DD	FLAT:?Create@?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@UAEPAVnc_ScriptImpClass@@XZ
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@QAE@PAD0@Z
_TEXT	SEGMENT
_n$ = 8							; size = 4
_p$ = 12						; size = 4
??0?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@QAE@PAD0@Z PROC ; nc_ScriptRegistrant<M00_CNC_Crate>::nc_ScriptRegistrant<M00_CNC_Crate>, COMDAT
; _this$ = ecx

; 465  : 	{

	mov	eax, DWORD PTR _p$[esp-4]
	push	esi
	mov	esi, ecx
	mov	ecx, DWORD PTR _n$[esp]
	push	eax
	push	ecx
	mov	ecx, esi
	call	??0nc_ScriptFactory@@QAE@PAD0@Z		; nc_ScriptFactory::nc_ScriptFactory
	mov	DWORD PTR [esi], OFFSET ??_7?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@6B@

; 466  : 	}

	mov	eax, esi
	pop	esi
	ret	8
??0?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@QAE@PAD0@Z ENDP ; nc_ScriptRegistrant<M00_CNC_Crate>::nc_ScriptRegistrant<M00_CNC_Crate>
_TEXT	ENDS
PUBLIC	?SetFactory@nc_ScriptImpClass@@QAEXPAVnc_ScriptFactory@@@Z ; nc_ScriptImpClass::SetFactory
; Function compile flags: /Ogtpy
;	COMDAT ?SetFactory@nc_ScriptImpClass@@QAEXPAVnc_ScriptFactory@@@Z
_TEXT	SEGMENT
_ptr$ = 8						; size = 4
?SetFactory@nc_ScriptImpClass@@QAEXPAVnc_ScriptFactory@@@Z PROC ; nc_ScriptImpClass::SetFactory, COMDAT
; _this$ = ecx

; 99   : 		Factory = ptr;

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

; 100  : 	}

	ret	4
?SetFactory@nc_ScriptImpClass@@QAEXPAVnc_ScriptFactory@@@Z ENDP ; nc_ScriptImpClass::SetFactory
; 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'
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ??_G?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@UAEPAXI@Z
_TEXT	SEGMENT
___flags$ = 8						; size = 4
??_G?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@UAEPAXI@Z PROC ; nc_ScriptRegistrant<M00_CNC_Crate>::`scalar deleting destructor', COMDAT
; _this$ = ecx
	push	esi
	mov	esi, ecx
	call	??1nc_ScriptFactory@@UAE@XZ		; nc_ScriptFactory::~nc_ScriptFactory
	test	BYTE PTR ___flags$[esp], 1
	je	SHORT $LN7@scalar@2
	push	esi
	call	??3@YAXPAX@Z				; operator delete
	add	esp, 4
$LN7@scalar@2:
	mov	eax, esi
	pop	esi
	ret	4
??_G?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@UAEPAXI@Z ENDP ; nc_ScriptRegistrant<M00_CNC_Crate>::`scalar deleting destructor'
_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	??_7M00_CNC_Crate@@6B@				; M00_CNC_Crate::`vftable'
PUBLIC	??0M00_CNC_Crate@@QAE@XZ			; M00_CNC_Crate::M00_CNC_Crate
PUBLIC	??_R4M00_CNC_Crate@@6B@				; M00_CNC_Crate::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVM00_CNC_Crate@@@8			; M00_CNC_Crate `RTTI Type Descriptor'
PUBLIC	??_R3M00_CNC_Crate@@8				; M00_CNC_Crate::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2M00_CNC_Crate@@8				; M00_CNC_Crate::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@M00_CNC_Crate@@8			; M00_CNC_Crate::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	??_R1A@?0A@EA@nc_ScriptImpClass@@8		; nc_ScriptImpClass::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	??_R0?AVnc_ScriptImpClass@@@8			; nc_ScriptImpClass `RTTI Type Descriptor'
PUBLIC	??_R3nc_ScriptImpClass@@8			; nc_ScriptImpClass::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2nc_ScriptImpClass@@8			; nc_ScriptImpClass::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@nc_ScriptClass@@8			; nc_ScriptClass::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	??_R0?AVnc_ScriptClass@@@8			; nc_ScriptClass `RTTI Type Descriptor'
PUBLIC	??_R3nc_ScriptClass@@8				; nc_ScriptClass::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2nc_ScriptClass@@8				; nc_ScriptClass::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@nc_GameObjObserverClass@@8	; nc_GameObjObserverClass::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	??_R0?AVnc_GameObjObserverClass@@@8		; nc_GameObjObserverClass `RTTI Type Descriptor'
PUBLIC	??_R3nc_GameObjObserverClass@@8			; nc_GameObjObserverClass::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2nc_GameObjObserverClass@@8			; nc_GameObjObserverClass::`RTTI Base Class Array'
EXTRN	??0nc_ScriptImpClass@@QAE@XZ:PROC		; nc_ScriptImpClass::nc_ScriptImpClass
EXTRN	??_EM00_CNC_Crate@@UAEPAXI@Z:PROC		; M00_CNC_Crate::`vector deleting destructor'
EXTRN	?Get_Name@nc_ScriptImpClass@@UAEPADXZ:PROC	; nc_ScriptImpClass::Get_Name
EXTRN	?Attach@nc_ScriptImpClass@@UAEXPAVnc_ScriptableGameObj@@@Z:PROC ; nc_ScriptImpClass::Attach
EXTRN	?Detach@nc_ScriptImpClass@@UAEXPAVnc_ScriptableGameObj@@@Z:PROC ; nc_ScriptImpClass::Detach
EXTRN	?Created@nc_ScriptImpClass@@UAEXPAVnc_ScriptableGameObj@@@Z:PROC ; nc_ScriptImpClass::Created
EXTRN	?Destroyed@nc_ScriptImpClass@@UAEXPAVnc_ScriptableGameObj@@@Z:PROC ; nc_ScriptImpClass::Destroyed
EXTRN	?Killed@nc_ScriptImpClass@@UAEXPAVnc_ScriptableGameObj@@0@Z:PROC ; nc_ScriptImpClass::Killed
EXTRN	?Damaged@nc_ScriptImpClass@@UAEXPAVnc_ScriptableGameObj@@0M@Z:PROC ; nc_ScriptImpClass::Damaged
EXTRN	?Sound_Heard@nc_ScriptImpClass@@UAEXPAVnc_ScriptableGameObj@@ABUnc_CombatSound@@@Z:PROC ; nc_ScriptImpClass::Sound_Heard
EXTRN	?Enemy_Seen@nc_ScriptImpClass@@UAEXPAVnc_ScriptableGameObj@@0@Z:PROC ; nc_ScriptImpClass::Enemy_Seen
EXTRN	?Action_Complete@nc_ScriptImpClass@@UAEXPAVnc_ScriptableGameObj@@HW4nc_ActionCompleteReason@@@Z:PROC ; nc_ScriptImpClass::Action_Complete
EXTRN	?Timer_Expired@nc_ScriptImpClass@@UAEXPAVnc_ScriptableGameObj@@H@Z:PROC ; nc_ScriptImpClass::Timer_Expired
EXTRN	?Animation_Complete@nc_ScriptImpClass@@UAEXPAVnc_ScriptableGameObj@@PBD@Z:PROC ; nc_ScriptImpClass::Animation_Complete
EXTRN	?Poked@nc_ScriptImpClass@@UAEXPAVnc_ScriptableGameObj@@0@Z:PROC ; nc_ScriptImpClass::Poked
EXTRN	?Entered@nc_ScriptImpClass@@UAEXPAVnc_ScriptableGameObj@@0@Z:PROC ; nc_ScriptImpClass::Entered
EXTRN	?Exited@nc_ScriptImpClass@@UAEXPAVnc_ScriptableGameObj@@0@Z:PROC ; nc_ScriptImpClass::Exited
EXTRN	?Owner@nc_ScriptImpClass@@UAEPAVnc_ScriptableGameObj@@XZ:PROC ; nc_ScriptImpClass::Owner
EXTRN	?Get_Owner_Ptr@nc_ScriptImpClass@@UAEPAPAVnc_ScriptableGameObj@@XZ:PROC ; nc_ScriptImpClass::Get_Owner_Ptr
EXTRN	?Set_Parameters_String@nc_ScriptImpClass@@UAEXPBD@Z:PROC ; nc_ScriptImpClass::Set_Parameters_String
EXTRN	?Get_Parameters_String@nc_ScriptImpClass@@UAEXPADI@Z:PROC ; nc_ScriptImpClass::Get_Parameters_String
EXTRN	?Save@nc_ScriptImpClass@@UAEXAAE@Z:PROC		; nc_ScriptImpClass::Save
EXTRN	?Load@nc_ScriptImpClass@@UAEXAAE@Z:PROC		; nc_ScriptImpClass::Load
EXTRN	?Save_Data@nc_ScriptImpClass@@UAEXAAE@Z:PROC	; nc_ScriptImpClass::Save_Data
EXTRN	?Load_Data@nc_ScriptImpClass@@UAEXAAE@Z:PROC	; nc_ScriptImpClass::Load_Data
EXTRN	?Register_Auto_Save_Variables@nc_ScriptImpClass@@UAEXXZ:PROC ; nc_ScriptImpClass::Register_Auto_Save_Variables
;	COMDAT ??_R2nc_GameObjObserverClass@@8
rdata$r	SEGMENT
??_R2nc_GameObjObserverClass@@8 DD FLAT:??_R1A@?0A@EA@nc_GameObjObserverClass@@8 ; nc_GameObjObserverClass::`RTTI Base Class Array'
rdata$r	ENDS
;	COMDAT ??_R3nc_GameObjObserverClass@@8
rdata$r	SEGMENT
??_R3nc_GameObjObserverClass@@8 DD 00H			; nc_GameObjObserverClass::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	01H
	DD	FLAT:??_R2nc_GameObjObserverClass@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVnc_GameObjObserverClass@@@8
_DATA	SEGMENT
??_R0?AVnc_GameObjObserverClass@@@8 DD FLAT:??_7type_info@@6B@ ; nc_GameObjObserverClass `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVnc_GameObjObserverClass@@', 00H
_DATA	ENDS
;	COMDAT ??_R1A@?0A@EA@nc_GameObjObserverClass@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@nc_GameObjObserverClass@@8 DD FLAT:??_R0?AVnc_GameObjObserverClass@@@8 ; nc_GameObjObserverClass::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	00H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3nc_GameObjObserverClass@@8
rdata$r	ENDS
;	COMDAT ??_R2nc_ScriptClass@@8
rdata$r	SEGMENT
??_R2nc_ScriptClass@@8 DD FLAT:??_R1A@?0A@EA@nc_ScriptClass@@8 ; nc_ScriptClass::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@nc_GameObjObserverClass@@8
rdata$r	ENDS
;	COMDAT ??_R3nc_ScriptClass@@8
rdata$r	SEGMENT
??_R3nc_ScriptClass@@8 DD 00H				; nc_ScriptClass::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2nc_ScriptClass@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVnc_ScriptClass@@@8
_DATA	SEGMENT
??_R0?AVnc_ScriptClass@@@8 DD FLAT:??_7type_info@@6B@	; nc_ScriptClass `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVnc_ScriptClass@@', 00H
_DATA	ENDS
;	COMDAT ??_R1A@?0A@EA@nc_ScriptClass@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@nc_ScriptClass@@8 DD FLAT:??_R0?AVnc_ScriptClass@@@8 ; nc_ScriptClass::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3nc_ScriptClass@@8
rdata$r	ENDS
;	COMDAT ??_R2nc_ScriptImpClass@@8
rdata$r	SEGMENT
??_R2nc_ScriptImpClass@@8 DD FLAT:??_R1A@?0A@EA@nc_ScriptImpClass@@8 ; nc_ScriptImpClass::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@nc_ScriptClass@@8
	DD	FLAT:??_R1A@?0A@EA@nc_GameObjObserverClass@@8
rdata$r	ENDS
;	COMDAT ??_R3nc_ScriptImpClass@@8
rdata$r	SEGMENT
??_R3nc_ScriptImpClass@@8 DD 00H			; nc_ScriptImpClass::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	03H
	DD	FLAT:??_R2nc_ScriptImpClass@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVnc_ScriptImpClass@@@8
_DATA	SEGMENT
??_R0?AVnc_ScriptImpClass@@@8 DD FLAT:??_7type_info@@6B@ ; nc_ScriptImpClass `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVnc_ScriptImpClass@@', 00H
_DATA	ENDS
;	COMDAT ??_R1A@?0A@EA@nc_ScriptImpClass@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@nc_ScriptImpClass@@8 DD FLAT:??_R0?AVnc_ScriptImpClass@@@8 ; nc_ScriptImpClass::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	02H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3nc_ScriptImpClass@@8
rdata$r	ENDS
;	COMDAT ??_R1A@?0A@EA@M00_CNC_Crate@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@M00_CNC_Crate@@8 DD FLAT:??_R0?AVM00_CNC_Crate@@@8 ; M00_CNC_Crate::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	03H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3M00_CNC_Crate@@8
rdata$r	ENDS
;	COMDAT ??_R2M00_CNC_Crate@@8
rdata$r	SEGMENT
??_R2M00_CNC_Crate@@8 DD FLAT:??_R1A@?0A@EA@M00_CNC_Crate@@8 ; M00_CNC_Crate::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@nc_ScriptImpClass@@8
	DD	FLAT:??_R1A@?0A@EA@nc_ScriptClass@@8
	DD	FLAT:??_R1A@?0A@EA@nc_GameObjObserverClass@@8
rdata$r	ENDS
;	COMDAT ??_R3M00_CNC_Crate@@8
rdata$r	SEGMENT
??_R3M00_CNC_Crate@@8 DD 00H				; M00_CNC_Crate::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	04H
	DD	FLAT:??_R2M00_CNC_Crate@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVM00_CNC_Crate@@@8
_DATA	SEGMENT
??_R0?AVM00_CNC_Crate@@@8 DD FLAT:??_7type_info@@6B@	; M00_CNC_Crate `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVM00_CNC_Crate@@', 00H
_DATA	ENDS
;	COMDAT ??_R4M00_CNC_Crate@@6B@
rdata$r	SEGMENT
??_R4M00_CNC_Crate@@6B@ DD 00H				; M00_CNC_Crate::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVM00_CNC_Crate@@@8
	DD	FLAT:??_R3M00_CNC_Crate@@8
rdata$r	ENDS
;	COMDAT ??_7M00_CNC_Crate@@6B@
CONST	SEGMENT
??_7M00_CNC_Crate@@6B@ DD FLAT:??_R4M00_CNC_Crate@@6B@	; M00_CNC_Crate::`vftable'
	DD	FLAT:??_EM00_CNC_Crate@@UAEPAXI@Z
	DD	FLAT:?Get_Name@nc_ScriptImpClass@@UAEPADXZ
	DD	FLAT:?Attach@nc_ScriptImpClass@@UAEXPAVnc_ScriptableGameObj@@@Z
	DD	FLAT:?Detach@nc_ScriptImpClass@@UAEXPAVnc_ScriptableGameObj@@@Z
	DD	FLAT:?Created@nc_ScriptImpClass@@UAEXPAVnc_ScriptableGameObj@@@Z
	DD	FLAT:?Destroyed@nc_ScriptImpClass@@UAEXPAVnc_ScriptableGameObj@@@Z
	DD	FLAT:?Killed@nc_ScriptImpClass@@UAEXPAVnc_ScriptableGameObj@@0@Z
	DD	FLAT:?Damaged@nc_ScriptImpClass@@UAEXPAVnc_ScriptableGameObj@@0M@Z
	DD	FLAT:?Custom@M00_CNC_Crate@@UAEXPAVnc_ScriptableGameObj@@HH0@Z
	DD	FLAT:?Sound_Heard@nc_ScriptImpClass@@UAEXPAVnc_ScriptableGameObj@@ABUnc_CombatSound@@@Z
	DD	FLAT:?Enemy_Seen@nc_ScriptImpClass@@UAEXPAVnc_ScriptableGameObj@@0@Z
	DD	FLAT:?Action_Complete@nc_ScriptImpClass@@UAEXPAVnc_ScriptableGameObj@@HW4nc_ActionCompleteReason@@@Z
	DD	FLAT:?Timer_Expired@nc_ScriptImpClass@@UAEXPAVnc_ScriptableGameObj@@H@Z
	DD	FLAT:?Animation_Complete@nc_ScriptImpClass@@UAEXPAVnc_ScriptableGameObj@@PBD@Z
	DD	FLAT:?Poked@nc_ScriptImpClass@@UAEXPAVnc_ScriptableGameObj@@0@Z
	DD	FLAT:?Entered@nc_ScriptImpClass@@UAEXPAVnc_ScriptableGameObj@@0@Z
	DD	FLAT:?Exited@nc_ScriptImpClass@@UAEXPAVnc_ScriptableGameObj@@0@Z
	DD	FLAT:?Owner@nc_ScriptImpClass@@UAEPAVnc_ScriptableGameObj@@XZ
	DD	FLAT:?Get_Owner_Ptr@nc_ScriptImpClass@@UAEPAPAVnc_ScriptableGameObj@@XZ
	DD	FLAT:?Set_Parameters_String@nc_ScriptImpClass@@UAEXPBD@Z
	DD	FLAT:?Get_Parameters_String@nc_ScriptImpClass@@UAEXPADI@Z
	DD	FLAT:?Save@nc_ScriptImpClass@@UAEXAAE@Z
	DD	FLAT:?Load@nc_ScriptImpClass@@UAEXAAE@Z
	DD	FLAT:?Save_Data@nc_ScriptImpClass@@UAEXAAE@Z
	DD	FLAT:?Load_Data@nc_ScriptImpClass@@UAEXAAE@Z
	DD	FLAT:?Register_Auto_Save_Variables@nc_ScriptImpClass@@UAEXXZ
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0M00_CNC_Crate@@QAE@XZ
_TEXT	SEGMENT
??0M00_CNC_Crate@@QAE@XZ PROC				; M00_CNC_Crate::M00_CNC_Crate, COMDAT
; _this$ = ecx
	push	esi
	mov	esi, ecx
	call	??0nc_ScriptImpClass@@QAE@XZ		; nc_ScriptImpClass::nc_ScriptImpClass
	mov	DWORD PTR [esi], OFFSET ??_7M00_CNC_Crate@@6B@
	mov	eax, esi
	pop	esi
	ret	0
??0M00_CNC_Crate@@QAE@XZ ENDP				; M00_CNC_Crate::M00_CNC_Crate
_TEXT	ENDS
PUBLIC	??1M00_CNC_Crate@@UAE@XZ			; M00_CNC_Crate::~M00_CNC_Crate
EXTRN	??1nc_ScriptImpClass@@UAE@XZ:PROC		; nc_ScriptImpClass::~nc_ScriptImpClass
; Function compile flags: /Ogtpy
;	COMDAT ??1M00_CNC_Crate@@UAE@XZ
_TEXT	SEGMENT
??1M00_CNC_Crate@@UAE@XZ PROC				; M00_CNC_Crate::~M00_CNC_Crate, COMDAT
; _this$ = ecx
	jmp	??1nc_ScriptImpClass@@UAE@XZ		; nc_ScriptImpClass::~nc_ScriptImpClass
??1M00_CNC_Crate@@UAE@XZ ENDP				; M00_CNC_Crate::~M00_CNC_Crate
_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	??_7gzCrateBase@@6B@				; gzCrateBase::`vftable'
PUBLIC	??0gzCrateBase@@QAE@XZ				; gzCrateBase::gzCrateBase
PUBLIC	??_R4gzCrateBase@@6B@				; gzCrateBase::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVgzCrateBase@@@8				; gzCrateBase `RTTI Type Descriptor'
PUBLIC	??_R3gzCrateBase@@8				; gzCrateBase::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2gzCrateBase@@8				; gzCrateBase::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@gzCrateBase@@8			; gzCrateBase::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?SkipDefaultOutput@gzCrateBase@@UAE_NXZ		; gzCrateBase::SkipDefaultOutput
;	COMDAT ??_R1A@?0A@EA@gzCrateBase@@8
; File d:\source code\alib\include\avector.h
rdata$r	SEGMENT
??_R1A@?0A@EA@gzCrateBase@@8 DD FLAT:??_R0?AVgzCrateBase@@@8 ; gzCrateBase::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	00H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3gzCrateBase@@8
rdata$r	ENDS
;	COMDAT ??_R2gzCrateBase@@8
rdata$r	SEGMENT
??_R2gzCrateBase@@8 DD FLAT:??_R1A@?0A@EA@gzCrateBase@@8 ; gzCrateBase::`RTTI Base Class Array'
rdata$r	ENDS
;	COMDAT ??_R3gzCrateBase@@8
rdata$r	SEGMENT
??_R3gzCrateBase@@8 DD 00H				; gzCrateBase::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	01H
	DD	FLAT:??_R2gzCrateBase@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVgzCrateBase@@@8
_DATA	SEGMENT
??_R0?AVgzCrateBase@@@8 DD FLAT:??_7type_info@@6B@	; gzCrateBase `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVgzCrateBase@@', 00H
_DATA	ENDS
;	COMDAT ??_R4gzCrateBase@@6B@
rdata$r	SEGMENT
??_R4gzCrateBase@@6B@ DD 00H				; gzCrateBase::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVgzCrateBase@@@8
	DD	FLAT:??_R3gzCrateBase@@8
rdata$r	ENDS
;	COMDAT ??_7gzCrateBase@@6B@
CONST	SEGMENT
??_7gzCrateBase@@6B@ DD FLAT:??_R4gzCrateBase@@6B@	; gzCrateBase::`vftable'
	DD	FLAT:__purecall
	DD	FLAT:__purecall
	DD	FLAT:__purecall
	DD	FLAT:?SkipDefaultOutput@gzCrateBase@@UAE_NXZ
	DD	FLAT:__purecall
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.h
CONST	ENDS
;	COMDAT ??0gzCrateBase@@QAE@XZ
_TEXT	SEGMENT
??0gzCrateBase@@QAE@XZ PROC				; gzCrateBase::gzCrateBase, COMDAT
; _this$ = ecx

; 168  : 	{
; 169  : 		this->m_hitCount	= 0;

	xor	eax, eax
	push	esi
	mov	esi, ecx
	mov	DWORD PTR [esi+4], eax

; 170  : 		this->m_selected	= false;

	mov	BYTE PTR [esi+8], al
	mov	DWORD PTR [esi], OFFSET ??_7gzCrateBase@@6B@

; 171  : 		gzManagerCrateClass::m_list.Add(this);

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

; 172  : 	};

	mov	eax, esi
	je	SHORT $LN3@gzCrateBas
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], esi
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN3@gzCrateBas:
	pop	esi
	ret	0
??0gzCrateBase@@QAE@XZ ENDP				; gzCrateBase::gzCrateBase
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?SkipDefaultOutput@gzCrateBase@@UAE_NXZ
_TEXT	SEGMENT
?SkipDefaultOutput@gzCrateBase@@UAE_NXZ PROC		; gzCrateBase::SkipDefaultOutput, COMDAT
; _this$ = ecx

; 178  : 		return true;

	mov	al, 1

; 179  : 	};

	ret	0
?SkipDefaultOutput@gzCrateBase@@UAE_NXZ ENDP		; gzCrateBase::SkipDefaultOutput
_TEXT	ENDS
PUBLIC	??0gzCratePercentStruct@@QAE@XZ			; gzCratePercentStruct::gzCratePercentStruct
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
;	COMDAT ??0gzCratePercentStruct@@QAE@XZ
_TEXT	SEGMENT
??0gzCratePercentStruct@@QAE@XZ PROC			; gzCratePercentStruct::gzCratePercentStruct, COMDAT
; _this$ = ecx

; 23   : 	this->Reset(CRATE_SOLDIER | CRATE_VEHICLE);

	push	3
	call	?Reset@gzCratePercentStruct@@QAEXH@Z	; gzCratePercentStruct::Reset

; 24   : }

	mov	eax, ecx
	ret	0
??0gzCratePercentStruct@@QAE@XZ ENDP			; gzCratePercentStruct::gzCratePercentStruct
_TEXT	ENDS
PUBLIC	??_C@_0DL@BLHBMANI@?$FLCrate?$FN?5Error?5?9?5Crate?5can?5not?5be@ ; `string'
PUBLIC	??_C@_09HBCDBGPO@Crate?$CFd_Z?$AA@		; `string'
PUBLIC	??_C@_09FKAOEFDN@Crate?$CFd_Y?$AA@		; `string'
PUBLIC	??_C@_09EDBFHEHM@Crate?$CFd_X?$AA@		; `string'
PUBLIC	??_C@_09NGAKKCLC@NodRVCP_Z?$AA@			; `string'
PUBLIC	??_C@_09PNCHPBHB@NodRVCP_Y?$AA@			; `string'
PUBLIC	??_C@_09OEDMMADA@NodRVCP_X?$AA@			; `string'
PUBLIC	??_C@_0N@MOKPBNKD@NodRVCP_Face?$AA@		; `string'
PUBLIC	??_C@_08CBJEFBDC@NodRVC_Z?$AA@			; `string'
PUBLIC	??_C@_08KLJACPB@NodRVC_Y?$AA@			; `string'
PUBLIC	??_C@_08BDKCDDLA@NodRVC_X?$AA@			; `string'
PUBLIC	??_C@_0M@HLMAKOJ@NodRVC_Face?$AA@		; `string'
PUBLIC	??_C@_09EIMIOCIB@GDIRVCP_Z?$AA@			; `string'
PUBLIC	??_C@_09GDOFLBEC@GDIRVCP_Y?$AA@			; `string'
PUBLIC	??_C@_09HKPOIAAD@GDIRVCP_X?$AA@			; `string'
PUBLIC	??_C@_0N@GNJBKKGN@GDIRVCP_Face?$AA@		; `string'
PUBLIC	??_C@_08IHEBMBDF@GDIRVC_Z?$AA@			; `string'
PUBLIC	__real@c479c000
PUBLIC	??_C@_08KMGMJCPG@GDIRVC_Y?$AA@			; `string'
PUBLIC	??_C@_08LFHHKDLH@GDIRVC_X?$AA@			; `string'
PUBLIC	??_C@_0M@IFALLAIL@GDIRVC_Face?$AA@		; `string'
PUBLIC	__real@c3350000
PUBLIC	??_C@_0GC@IOONMHOF@Total?5percentage?5for?5vehicle?5cra@ ; `string'
PUBLIC	??_C@_05EENAOAIH@Steal?$AA@			; `string'
PUBLIC	??_C@_09CPLEBDCL@DemoTruck?$AA@			; `string'
PUBLIC	??_C@_06KOKHNNIE@Repair?$AA@			; `string'
PUBLIC	??_C@_0L@PLGOBLCL@AutoRepair?$AA@		; `string'
PUBLIC	??_C@_09EHDPJGMJ@MaxHealth?$AA@			; `string'
PUBLIC	??_C@_08CFDFODLJ@MaxArmor?$AA@			; `string'
PUBLIC	??_C@_0BD@IOJEAOBL@Percentage_Vehicle?$AA@	; `string'
PUBLIC	??_C@_09EAFPIHD@AntiEnemy?$AA@			; `string'
PUBLIC	??_C@_0GC@NAKKCAEK@Total?5percentage?5for?5soldier?5cra@ ; `string'
PUBLIC	??_C@_0BB@KIJHAIGK@BaseDefensePower?$AA@	; `string'
PUBLIC	??_C@_09DOMHACGN@Visceroid?$AA@			; `string'
PUBLIC	??_C@_07GCCGIBFG@Veteran?$AA@			; `string'
PUBLIC	??_C@_0M@DKKIFLIM@StealthMine?$AA@		; `string'
PUBLIC	??_C@_05KLBFNLDO@Hover?$AA@			; `string'
PUBLIC	??_C@_0L@NNGLCAAK@EnemyThief?$AA@		; `string'
PUBLIC	??_C@_09KJBPPBGD@MetalGear?$AA@			; `string'
PUBLIC	??_C@_05BBLLBHEM@Medic?$AA@			; `string'
PUBLIC	??_C@_0O@KLMNPMCL@ExplosiveSuit?$AA@		; `string'
PUBLIC	??_C@_08LPAELJLD@ChemSuit?$AA@			; `string'
PUBLIC	??_C@_08HJOLNELI@Donation?$AA@			; `string'
PUBLIC	??_C@_0L@CNGKIHGJ@WeaponPack?$AA@		; `string'
PUBLIC	??_C@_05ELPFFFFC@Thief?$AA@			; `string'
PUBLIC	??_C@_03KNAPCKEA@Spy?$AA@			; `string'
PUBLIC	??_C@_06NMAKBGBM@Beacon?$AA@			; `string'
PUBLIC	??_C@_06FGDJGKHN@Refill?$AA@			; `string'
PUBLIC	??_C@_0O@BOMLFDHP@ButterFingers?$AA@		; `string'
PUBLIC	??_C@_09EDIHJNKH@Character?$AA@			; `string'
PUBLIC	??_C@_06GGDALCBD@Health?$AA@			; `string'
PUBLIC	??_C@_05JOOFIMIN@Armor?$AA@			; `string'
PUBLIC	??_C@_04DHGIHJNO@Ammo?$AA@			; `string'
PUBLIC	??_C@_05PGGAFPFO@Death?$AA@			; `string'
PUBLIC	??_C@_07NAELNENF@Vehicle?$AA@			; `string'
PUBLIC	??_C@_06KANFALAM@Points?$AA@			; `string'
PUBLIC	??_C@_05INIBOMDG@Money?$AA@			; `string'
PUBLIC	??_C@_0BD@GEOKIGOL@Percentage_Soldier?$AA@	; `string'
PUBLIC	??_C@_06KLEAFNAE@Weapon?$AA@			; `string'
PUBLIC	??_C@_09HICJIMEM@CrateLive?$AA@			; `string'
PUBLIC	__real@44610000
PUBLIC	??_C@_0BH@PBLJFCCM@CrateCheckVariationMax?$AA@	; `string'
PUBLIC	??_C@_0BH@ODDCLGED@CrateCheckVariationMin?$AA@	; `string'
PUBLIC	??_C@_0L@HDAMIJPN@CrateCheck?$AA@		; `string'
PUBLIC	__real@41f00000
PUBLIC	??_C@_0BC@CPNIIFPO@EnableYellowCrate?$AA@	; `string'
PUBLIC	??_C@_07ECEMPDJM@General?$AA@			; `string'
PUBLIC	??_C@_06CKGENIKG@Enable?$AA@			; `string'
PUBLIC	??_C@_09CFFLBFKF@Crate?4ini?$AA@		; `string'
PUBLIC	?Load@gzSettingsCrateClass@@UAEXXZ		; gzSettingsCrateClass::Load
EXTRN	?GetGame@gzGameManager@@QAEPAVgzGameModeBase@@XZ:PROC ; gzGameManager::GetGame
EXTRN	?gzGameMgr@@3PAVgzGameManager@@A:DWORD		; gzGameMgr
EXTRN	_sprintf:PROC
EXTRN	?cGame@@3AAPAVnc_cGameData@@A:DWORD		; cGame
EXTRN	?Out@gzConsole@@SAXPBDZZ:PROC			; gzConsole::Out
EXTRN	??0aTextConfig@@QAE@ABVaString@@_N@Z:PROC	; aTextConfig::aTextConfig
EXTRN	??0aString@@QAE@PBD@Z:PROC			; aString::aString
EXTRN	??2@YAPAXI@Z:PROC				; operator new
;	COMDAT ??_C@_0DL@BLHBMANI@?$FLCrate?$FN?5Error?5?9?5Crate?5can?5not?5be@
; File d:\source code\alib\include\avector.h
CONST	SEGMENT
??_C@_0DL@BLHBMANI@?$FLCrate?$FN?5Error?5?9?5Crate?5can?5not?5be@ DB '[Cr'
	DB	'ate] Error - Crate can not be enabled in %s game mode.', 0aH, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_09HBCDBGPO@Crate?$CFd_Z?$AA@
CONST	SEGMENT
??_C@_09HBCDBGPO@Crate?$CFd_Z?$AA@ DB 'Crate%d_Z', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_09FKAOEFDN@Crate?$CFd_Y?$AA@
CONST	SEGMENT
??_C@_09FKAOEFDN@Crate?$CFd_Y?$AA@ DB 'Crate%d_Y', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_09EDBFHEHM@Crate?$CFd_X?$AA@
CONST	SEGMENT
??_C@_09EDBFHEHM@Crate?$CFd_X?$AA@ DB 'Crate%d_X', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_09NGAKKCLC@NodRVCP_Z?$AA@
CONST	SEGMENT
??_C@_09NGAKKCLC@NodRVCP_Z?$AA@ DB 'NodRVCP_Z', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_09PNCHPBHB@NodRVCP_Y?$AA@
CONST	SEGMENT
??_C@_09PNCHPBHB@NodRVCP_Y?$AA@ DB 'NodRVCP_Y', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_09OEDMMADA@NodRVCP_X?$AA@
CONST	SEGMENT
??_C@_09OEDMMADA@NodRVCP_X?$AA@ DB 'NodRVCP_X', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_0N@MOKPBNKD@NodRVCP_Face?$AA@
CONST	SEGMENT
??_C@_0N@MOKPBNKD@NodRVCP_Face?$AA@ DB 'NodRVCP_Face', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_08CBJEFBDC@NodRVC_Z?$AA@
CONST	SEGMENT
??_C@_08CBJEFBDC@NodRVC_Z?$AA@ DB 'NodRVC_Z', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_08KLJACPB@NodRVC_Y?$AA@
CONST	SEGMENT
??_C@_08KLJACPB@NodRVC_Y?$AA@ DB 'NodRVC_Y', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_08BDKCDDLA@NodRVC_X?$AA@
CONST	SEGMENT
??_C@_08BDKCDDLA@NodRVC_X?$AA@ DB 'NodRVC_X', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_0M@HLMAKOJ@NodRVC_Face?$AA@
CONST	SEGMENT
??_C@_0M@HLMAKOJ@NodRVC_Face?$AA@ DB 'NodRVC_Face', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_09EIMIOCIB@GDIRVCP_Z?$AA@
CONST	SEGMENT
??_C@_09EIMIOCIB@GDIRVCP_Z?$AA@ DB 'GDIRVCP_Z', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_09GDOFLBEC@GDIRVCP_Y?$AA@
CONST	SEGMENT
??_C@_09GDOFLBEC@GDIRVCP_Y?$AA@ DB 'GDIRVCP_Y', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_09HKPOIAAD@GDIRVCP_X?$AA@
CONST	SEGMENT
??_C@_09HKPOIAAD@GDIRVCP_X?$AA@ DB 'GDIRVCP_X', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_0N@GNJBKKGN@GDIRVCP_Face?$AA@
CONST	SEGMENT
??_C@_0N@GNJBKKGN@GDIRVCP_Face?$AA@ DB 'GDIRVCP_Face', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_08IHEBMBDF@GDIRVC_Z?$AA@
CONST	SEGMENT
??_C@_08IHEBMBDF@GDIRVC_Z?$AA@ DB 'GDIRVC_Z', 00H	; `string'
CONST	ENDS
;	COMDAT __real@c479c000
CONST	SEGMENT
__real@c479c000 DD 0c479c000r			; -999
CONST	ENDS
;	COMDAT ??_C@_08KMGMJCPG@GDIRVC_Y?$AA@
CONST	SEGMENT
??_C@_08KMGMJCPG@GDIRVC_Y?$AA@ DB 'GDIRVC_Y', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_08LFHHKDLH@GDIRVC_X?$AA@
CONST	SEGMENT
??_C@_08LFHHKDLH@GDIRVC_X?$AA@ DB 'GDIRVC_X', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_0M@IFALLAIL@GDIRVC_Face?$AA@
CONST	SEGMENT
??_C@_0M@IFALLAIL@GDIRVC_Face?$AA@ DB 'GDIRVC_Face', 00H ; `string'
CONST	ENDS
;	COMDAT __real@c3350000
CONST	SEGMENT
__real@c3350000 DD 0c3350000r			; -181
CONST	ENDS
;	COMDAT ??_C@_0GC@IOONMHOF@Total?5percentage?5for?5vehicle?5cra@
CONST	SEGMENT
??_C@_0GC@IOONMHOF@Total?5percentage?5for?5vehicle?5cra@ DB 'Total percen'
	DB	'tage for vehicle crates is %d instead of 1000 and values have'
	DB	' been reset to default.', 0aH, 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_05EENAOAIH@Steal?$AA@
CONST	SEGMENT
??_C@_05EENAOAIH@Steal?$AA@ DB 'Steal', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_09CPLEBDCL@DemoTruck?$AA@
CONST	SEGMENT
??_C@_09CPLEBDCL@DemoTruck?$AA@ DB 'DemoTruck', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_06KOKHNNIE@Repair?$AA@
CONST	SEGMENT
??_C@_06KOKHNNIE@Repair?$AA@ DB 'Repair', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_0L@PLGOBLCL@AutoRepair?$AA@
CONST	SEGMENT
??_C@_0L@PLGOBLCL@AutoRepair?$AA@ DB 'AutoRepair', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_09EHDPJGMJ@MaxHealth?$AA@
CONST	SEGMENT
??_C@_09EHDPJGMJ@MaxHealth?$AA@ DB 'MaxHealth', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_08CFDFODLJ@MaxArmor?$AA@
CONST	SEGMENT
??_C@_08CFDFODLJ@MaxArmor?$AA@ DB 'MaxArmor', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_0BD@IOJEAOBL@Percentage_Vehicle?$AA@
CONST	SEGMENT
??_C@_0BD@IOJEAOBL@Percentage_Vehicle?$AA@ DB 'Percentage_Vehicle', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_09EAFPIHD@AntiEnemy?$AA@
CONST	SEGMENT
??_C@_09EAFPIHD@AntiEnemy?$AA@ DB 'AntiEnemy', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_0GC@NAKKCAEK@Total?5percentage?5for?5soldier?5cra@
CONST	SEGMENT
??_C@_0GC@NAKKCAEK@Total?5percentage?5for?5soldier?5cra@ DB 'Total percen'
	DB	'tage for soldier crates is %d instead of 1000 and values have'
	DB	' been reset to default.', 0aH, 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_0BB@KIJHAIGK@BaseDefensePower?$AA@
CONST	SEGMENT
??_C@_0BB@KIJHAIGK@BaseDefensePower?$AA@ DB 'BaseDefensePower', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_09DOMHACGN@Visceroid?$AA@
CONST	SEGMENT
??_C@_09DOMHACGN@Visceroid?$AA@ DB 'Visceroid', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_07GCCGIBFG@Veteran?$AA@
CONST	SEGMENT
??_C@_07GCCGIBFG@Veteran?$AA@ DB 'Veteran', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_0M@DKKIFLIM@StealthMine?$AA@
CONST	SEGMENT
??_C@_0M@DKKIFLIM@StealthMine?$AA@ DB 'StealthMine', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_05KLBFNLDO@Hover?$AA@
CONST	SEGMENT
??_C@_05KLBFNLDO@Hover?$AA@ DB 'Hover', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_0L@NNGLCAAK@EnemyThief?$AA@
CONST	SEGMENT
??_C@_0L@NNGLCAAK@EnemyThief?$AA@ DB 'EnemyThief', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_09KJBPPBGD@MetalGear?$AA@
CONST	SEGMENT
??_C@_09KJBPPBGD@MetalGear?$AA@ DB 'MetalGear', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_05BBLLBHEM@Medic?$AA@
CONST	SEGMENT
??_C@_05BBLLBHEM@Medic?$AA@ DB 'Medic', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_0O@KLMNPMCL@ExplosiveSuit?$AA@
CONST	SEGMENT
??_C@_0O@KLMNPMCL@ExplosiveSuit?$AA@ DB 'ExplosiveSuit', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_08LPAELJLD@ChemSuit?$AA@
CONST	SEGMENT
??_C@_08LPAELJLD@ChemSuit?$AA@ DB 'ChemSuit', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_08HJOLNELI@Donation?$AA@
CONST	SEGMENT
??_C@_08HJOLNELI@Donation?$AA@ DB 'Donation', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_0L@CNGKIHGJ@WeaponPack?$AA@
CONST	SEGMENT
??_C@_0L@CNGKIHGJ@WeaponPack?$AA@ DB 'WeaponPack', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_05ELPFFFFC@Thief?$AA@
CONST	SEGMENT
??_C@_05ELPFFFFC@Thief?$AA@ DB 'Thief', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_03KNAPCKEA@Spy?$AA@
CONST	SEGMENT
??_C@_03KNAPCKEA@Spy?$AA@ DB 'Spy', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_06NMAKBGBM@Beacon?$AA@
CONST	SEGMENT
??_C@_06NMAKBGBM@Beacon?$AA@ DB 'Beacon', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_06FGDJGKHN@Refill?$AA@
CONST	SEGMENT
??_C@_06FGDJGKHN@Refill?$AA@ DB 'Refill', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_0O@BOMLFDHP@ButterFingers?$AA@
CONST	SEGMENT
??_C@_0O@BOMLFDHP@ButterFingers?$AA@ DB 'ButterFingers', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_09EDIHJNKH@Character?$AA@
CONST	SEGMENT
??_C@_09EDIHJNKH@Character?$AA@ DB 'Character', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_06GGDALCBD@Health?$AA@
CONST	SEGMENT
??_C@_06GGDALCBD@Health?$AA@ DB 'Health', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_05JOOFIMIN@Armor?$AA@
CONST	SEGMENT
??_C@_05JOOFIMIN@Armor?$AA@ DB 'Armor', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_04DHGIHJNO@Ammo?$AA@
CONST	SEGMENT
??_C@_04DHGIHJNO@Ammo?$AA@ DB 'Ammo', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_05PGGAFPFO@Death?$AA@
CONST	SEGMENT
??_C@_05PGGAFPFO@Death?$AA@ DB 'Death', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_07NAELNENF@Vehicle?$AA@
CONST	SEGMENT
??_C@_07NAELNENF@Vehicle?$AA@ DB 'Vehicle', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_06KANFALAM@Points?$AA@
CONST	SEGMENT
??_C@_06KANFALAM@Points?$AA@ DB 'Points', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_05INIBOMDG@Money?$AA@
CONST	SEGMENT
??_C@_05INIBOMDG@Money?$AA@ DB 'Money', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_0BD@GEOKIGOL@Percentage_Soldier?$AA@
CONST	SEGMENT
??_C@_0BD@GEOKIGOL@Percentage_Soldier?$AA@ DB 'Percentage_Soldier', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_06KLEAFNAE@Weapon?$AA@
CONST	SEGMENT
??_C@_06KLEAFNAE@Weapon?$AA@ DB 'Weapon', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_09HICJIMEM@CrateLive?$AA@
CONST	SEGMENT
??_C@_09HICJIMEM@CrateLive?$AA@ DB 'CrateLive', 00H	; `string'
CONST	ENDS
;	COMDAT __real@44610000
CONST	SEGMENT
__real@44610000 DD 044610000r			; 900
CONST	ENDS
;	COMDAT ??_C@_0BH@PBLJFCCM@CrateCheckVariationMax?$AA@
CONST	SEGMENT
??_C@_0BH@PBLJFCCM@CrateCheckVariationMax?$AA@ DB 'CrateCheckVariationMax'
	DB	00H						; `string'
CONST	ENDS
;	COMDAT ??_C@_0BH@ODDCLGED@CrateCheckVariationMin?$AA@
CONST	SEGMENT
??_C@_0BH@ODDCLGED@CrateCheckVariationMin?$AA@ DB 'CrateCheckVariationMin'
	DB	00H						; `string'
CONST	ENDS
;	COMDAT ??_C@_0L@HDAMIJPN@CrateCheck?$AA@
CONST	SEGMENT
??_C@_0L@HDAMIJPN@CrateCheck?$AA@ DB 'CrateCheck', 00H	; `string'
CONST	ENDS
;	COMDAT __real@41f00000
CONST	SEGMENT
__real@41f00000 DD 041f00000r			; 30
CONST	ENDS
;	COMDAT ??_C@_0BC@CPNIIFPO@EnableYellowCrate?$AA@
CONST	SEGMENT
??_C@_0BC@CPNIIFPO@EnableYellowCrate?$AA@ DB 'EnableYellowCrate', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_07ECEMPDJM@General?$AA@
CONST	SEGMENT
??_C@_07ECEMPDJM@General?$AA@ DB 'General', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_06CKGENIKG@Enable?$AA@
CONST	SEGMENT
??_C@_06CKGENIKG@Enable?$AA@ DB 'Enable', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_09CFFLBFKF@Crate?4ini?$AA@
CONST	SEGMENT
??_C@_09CFFLBFKF@Crate?4ini?$AA@ DB 'Crate.ini', 00H	; `string'
CONST	ENDS
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$?Load@gzSettingsCrateClass@@UAEXXZ DD 0ffffffffH
	DD	FLAT:__unwindfunclet$?Load@gzSettingsCrateClass@@UAEXXZ$0
	DD	00H
	DD	FLAT:__unwindfunclet$?Load@gzSettingsCrateClass@@UAEXXZ$1
	DD	0ffffffffH
	DD	FLAT:__unwindfunclet$?Load@gzSettingsCrateClass@@UAEXXZ$1
__ehfuncinfo$?Load@gzSettingsCrateClass@@UAEXXZ DD 019930522H
	DD	03H
	DD	FLAT:__unwindtable$?Load@gzSettingsCrateClass@@UAEXXZ
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	01H
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
xdata$x	ENDS
;	COMDAT ?Load@gzSettingsCrateClass@@UAEXXZ
_TEXT	SEGMENT
$T71312 = -76						; size = 4
$T71299 = -72						; size = 4
$T71300 = -68						; size = 8
_CratePos$59574 = -60					; size = 12
_CX$59568 = -48						; size = 12
_CY$59569 = -36						; size = 12
_CZ$59570 = -24						; size = 12
__$EHRec$ = -12						; size = 12
?Load@gzSettingsCrateClass@@UAEXXZ PROC			; gzSettingsCrateClass::Load, COMDAT
; _this$ = ecx

; 82   : {

	push	-1
	push	__ehhandler$?Load@gzSettingsCrateClass@@UAEXXZ
	mov	eax, DWORD PTR fs:0
	push	eax
	mov	DWORD PTR fs:0, esp
	sub	esp, 64					; 00000040H
	push	ebx
	push	esi
	push	edi

; 83   : 	this->m_cfg = new aTextConfig("Crate.ini");

	push	OFFSET ??_C@_00CNPNBAHC@?$AA@
	push	83					; 00000053H
	xor	ebx, ebx
	push	OFFSET ??_C@_0O@GPLKOMOA@?4?2gzcrate?4cpp?$AA@
	mov	esi, ecx
	mov	DWORD PTR $T71312[esp+100], ebx
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	push	52					; 00000034H
	call	??2@YAPAXI@Z				; operator new
	mov	edi, eax
	add	esp, 16					; 00000010H
	mov	DWORD PTR $T71299[esp+88], edi
	test	edi, edi
	mov	DWORD PTR __$EHRec$[esp+96], ebx
	je	SHORT $LN17@Load
	push	OFFSET ??_C@_09CFFLBFKF@Crate?4ini?$AA@
	lea	ecx, DWORD PTR $T71300[esp+92]
	call	??0aString@@QAE@PBD@Z			; aString::aString
	push	0
	lea	eax, DWORD PTR $T71300[esp+92]
	mov	ebx, 1
	push	eax
	mov	ecx, edi
	mov	BYTE PTR __$EHRec$[esp+104], 1
	mov	DWORD PTR $T71312[esp+96], ebx
	call	??0aTextConfig@@QAE@ABVaString@@_N@Z	; aTextConfig::aTextConfig
	jmp	SHORT $LN18@Load
$LN17@Load:
	xor	eax, eax
$LN18@Load:
	test	bl, 1
	mov	DWORD PTR [esi+12], eax
	mov	DWORD PTR __$EHRec$[esp+96], -1
	je	SHORT $LN28@Load
	lea	ecx, DWORD PTR $T71300[esp+88]
	call	??1aStringBase@@UAE@XZ			; aStringBase::~aStringBase
$LN28@Load:

; 84   : 	if (this->m_cfg->IsLoaded())

	mov	ecx, DWORD PTR [esi+12]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+8]
	call	eax
	test	al, al
	je	$LN36@Load

; 85   : 	{
; 86   : 		// Cleanups
; 87   : 		this->m_percent->Reset(CRATE_SOLDIER | CRATE_VEHICLE);

	mov	ecx, DWORD PTR [esi+108]
	push	3
	call	?Reset@gzCratePercentStruct@@QAEXH@Z	; gzCratePercentStruct::Reset

; 88   : 
; 89   : 		// General settings
; 90   : 		this->m_enable					= this->Load_Bool("General", "Enable", false);

	push	0
	push	OFFSET ??_C@_06CKGENIKG@Enable?$AA@
	push	OFFSET ??_C@_07ECEMPDJM@General?$AA@
	mov	ecx, esi
	call	?Load_Bool@stSettingsBase@@IAE_NPBD0_N@Z ; stSettingsBase::Load_Bool

; 91   : 		this->m_enableYellowCrate		= this->Load_Bool("General", "EnableYellowCrate", true);

	push	1
	push	OFFSET ??_C@_0BC@CPNIIFPO@EnableYellowCrate?$AA@
	push	OFFSET ??_C@_07ECEMPDJM@General?$AA@
	mov	ecx, esi
	mov	BYTE PTR [esi+24], al
	call	?Load_Bool@stSettingsBase@@IAE_NPBD0_N@Z ; stSettingsBase::Load_Bool

; 92   : 		this->m_existCheckTime			= this->Load_Float("General", "CrateCheck", 30.0f);

	fld	DWORD PTR __real@41f00000
	push	ecx
	fstp	DWORD PTR [esp]
	push	OFFSET ??_C@_0L@HDAMIJPN@CrateCheck?$AA@
	push	OFFSET ??_C@_07ECEMPDJM@General?$AA@
	mov	ecx, esi
	mov	BYTE PTR [esi+25], al
	call	?Load_Float@stSettingsBase@@IAEMPBD0M@Z	; stSettingsBase::Load_Float
	fstp	DWORD PTR [esi+28]

; 93   : 		this->m_existCheckVariationMin	= this->Load_Int("General", "CrateCheckVariationMin", 5);

	push	5
	push	OFFSET ??_C@_0BH@ODDCLGED@CrateCheckVariationMin?$AA@
	push	OFFSET ??_C@_07ECEMPDJM@General?$AA@
	mov	ecx, esi
	call	?Load_Int@stSettingsBase@@IAEHPBD0H@Z	; stSettingsBase::Load_Int

; 94   : 		this->m_existCheckVariationMax	= this->Load_Int("General", "CrateCheckVariationMax", 30);

	push	30					; 0000001eH
	push	OFFSET ??_C@_0BH@PBLJFCCM@CrateCheckVariationMax?$AA@
	push	OFFSET ??_C@_07ECEMPDJM@General?$AA@
	mov	ecx, esi
	mov	DWORD PTR [esi+32], eax
	call	?Load_Int@stSettingsBase@@IAEHPBD0H@Z	; stSettingsBase::Load_Int

; 95   : 		this->m_liveTime				= this->Load_Float("General", "CrateLive", 900.0f);

	fld	DWORD PTR __real@44610000
	push	ecx
	fstp	DWORD PTR [esp]
	push	OFFSET ??_C@_09HICJIMEM@CrateLive?$AA@
	push	OFFSET ??_C@_07ECEMPDJM@General?$AA@
	mov	ecx, esi
	mov	DWORD PTR [esi+36], eax
	call	?Load_Float@stSettingsBase@@IAEMPBD0M@Z	; stSettingsBase::Load_Float
	fstp	DWORD PTR [esi+40]

; 96   : 
; 97   : 		if (this->m_enable)

	cmp	BYTE PTR [esi+24], 0
	je	SHORT $LN13@Load

; 98   : 			this->m_enableYellowCrate = false;

	mov	BYTE PTR [esi+25], 0
$LN13@Load:

; 99   : 
; 100  : 		// Percentage
; 101  : 		int totalPercent = 0;
; 102  : 		totalPercent += this->m_percent->Weapon			= this->Load_Int("Percentage_Soldier", "Weapon", 0);

	push	0
	push	OFFSET ??_C@_06KLEAFNAE@Weapon?$AA@
	push	OFFSET ??_C@_0BD@GEOKIGOL@Percentage_Soldier?$AA@
	mov	ecx, esi
	call	?Load_Int@stSettingsBase@@IAEHPBD0H@Z	; stSettingsBase::Load_Int
	mov	ecx, DWORD PTR [esi+108]

; 103  : 		totalPercent += this->m_percent->Money			= this->Load_Int("Percentage_Soldier", "Money", 0);

	push	0
	mov	DWORD PTR [ecx], eax
	mov	edx, DWORD PTR [esi+108]
	mov	edi, DWORD PTR [edx]
	push	OFFSET ??_C@_05INIBOMDG@Money?$AA@
	push	OFFSET ??_C@_0BD@GEOKIGOL@Percentage_Soldier?$AA@
	mov	ecx, esi
	call	?Load_Int@stSettingsBase@@IAEHPBD0H@Z	; stSettingsBase::Load_Int
	mov	ecx, DWORD PTR [esi+108]

; 104  : 		totalPercent += this->m_percent->Points			= this->Load_Int("Percentage_Soldier", "Points", 0);

	push	0
	mov	DWORD PTR [ecx+4], eax
	mov	edx, DWORD PTR [esi+108]
	add	edi, DWORD PTR [edx+4]
	push	OFFSET ??_C@_06KANFALAM@Points?$AA@
	push	OFFSET ??_C@_0BD@GEOKIGOL@Percentage_Soldier?$AA@
	mov	ecx, esi
	call	?Load_Int@stSettingsBase@@IAEHPBD0H@Z	; stSettingsBase::Load_Int
	mov	ecx, DWORD PTR [esi+108]

; 105  : 		totalPercent += this->m_percent->Vehicle		= this->Load_Int("Percentage_Soldier", "Vehicle", 0);

	push	0
	mov	DWORD PTR [ecx+8], eax
	mov	edx, DWORD PTR [esi+108]
	add	edi, DWORD PTR [edx+8]
	push	OFFSET ??_C@_07NAELNENF@Vehicle?$AA@
	push	OFFSET ??_C@_0BD@GEOKIGOL@Percentage_Soldier?$AA@
	mov	ecx, esi
	call	?Load_Int@stSettingsBase@@IAEHPBD0H@Z	; stSettingsBase::Load_Int
	mov	ecx, DWORD PTR [esi+108]

; 106  : 		totalPercent += this->m_percent->Death			= this->Load_Int("Percentage_Soldier", "Death", 0);

	push	0
	mov	DWORD PTR [ecx+12], eax
	mov	edx, DWORD PTR [esi+108]
	add	edi, DWORD PTR [edx+12]
	push	OFFSET ??_C@_05PGGAFPFO@Death?$AA@
	push	OFFSET ??_C@_0BD@GEOKIGOL@Percentage_Soldier?$AA@
	mov	ecx, esi
	call	?Load_Int@stSettingsBase@@IAEHPBD0H@Z	; stSettingsBase::Load_Int
	mov	ecx, DWORD PTR [esi+108]

; 107  : 		totalPercent += this->m_percent->Ammo			= this->Load_Int("Percentage_Soldier", "Ammo", 0);

	push	0
	mov	DWORD PTR [ecx+16], eax
	mov	edx, DWORD PTR [esi+108]
	add	edi, DWORD PTR [edx+16]
	push	OFFSET ??_C@_04DHGIHJNO@Ammo?$AA@
	push	OFFSET ??_C@_0BD@GEOKIGOL@Percentage_Soldier?$AA@
	mov	ecx, esi
	call	?Load_Int@stSettingsBase@@IAEHPBD0H@Z	; stSettingsBase::Load_Int
	mov	ecx, DWORD PTR [esi+108]

; 108  : 		totalPercent += this->m_percent->Armor			= this->Load_Int("Percentage_Soldier", "Armor", 0);

	push	0
	mov	DWORD PTR [ecx+20], eax
	mov	edx, DWORD PTR [esi+108]
	add	edi, DWORD PTR [edx+20]
	push	OFFSET ??_C@_05JOOFIMIN@Armor?$AA@
	push	OFFSET ??_C@_0BD@GEOKIGOL@Percentage_Soldier?$AA@
	mov	ecx, esi
	call	?Load_Int@stSettingsBase@@IAEHPBD0H@Z	; stSettingsBase::Load_Int
	mov	ecx, DWORD PTR [esi+108]

; 109  : 		totalPercent += this->m_percent->Health			= this->Load_Int("Percentage_Soldier", "Health", 0);

	push	0
	mov	DWORD PTR [ecx+24], eax
	mov	edx, DWORD PTR [esi+108]
	add	edi, DWORD PTR [edx+24]
	push	OFFSET ??_C@_06GGDALCBD@Health?$AA@
	push	OFFSET ??_C@_0BD@GEOKIGOL@Percentage_Soldier?$AA@
	mov	ecx, esi
	call	?Load_Int@stSettingsBase@@IAEHPBD0H@Z	; stSettingsBase::Load_Int
	mov	ecx, DWORD PTR [esi+108]

; 110  : 		totalPercent += this->m_percent->Character		= this->Load_Int("Percentage_Soldier", "Character", 0);

	push	0
	mov	DWORD PTR [ecx+28], eax
	mov	edx, DWORD PTR [esi+108]
	add	edi, DWORD PTR [edx+28]
	push	OFFSET ??_C@_09EDIHJNKH@Character?$AA@
	push	OFFSET ??_C@_0BD@GEOKIGOL@Percentage_Soldier?$AA@
	mov	ecx, esi
	call	?Load_Int@stSettingsBase@@IAEHPBD0H@Z	; stSettingsBase::Load_Int
	mov	ecx, DWORD PTR [esi+108]
	mov	DWORD PTR [ecx+32], eax
	mov	edx, DWORD PTR [esi+108]
	add	edi, DWORD PTR [edx+32]

; 111  : 		totalPercent += this->m_percent->ButterFingers	= this->Load_Int("Percentage_Soldier", "ButterFingers", 0);

	push	0
	push	OFFSET ??_C@_0O@BOMLFDHP@ButterFingers?$AA@
	push	OFFSET ??_C@_0BD@GEOKIGOL@Percentage_Soldier?$AA@
	mov	ecx, esi
	call	?Load_Int@stSettingsBase@@IAEHPBD0H@Z	; stSettingsBase::Load_Int
	mov	ecx, DWORD PTR [esi+108]

; 112  : 		totalPercent += this->m_percent->Refill			= this->Load_Int("Percentage_Soldier", "Refill", 0);

	push	0
	mov	DWORD PTR [ecx+36], eax
	mov	edx, DWORD PTR [esi+108]
	add	edi, DWORD PTR [edx+36]
	push	OFFSET ??_C@_06FGDJGKHN@Refill?$AA@
	push	OFFSET ??_C@_0BD@GEOKIGOL@Percentage_Soldier?$AA@
	mov	ecx, esi
	call	?Load_Int@stSettingsBase@@IAEHPBD0H@Z	; stSettingsBase::Load_Int
	mov	ecx, DWORD PTR [esi+108]

; 113  : 		totalPercent += this->m_percent->Beacon			= this->Load_Int("Percentage_Soldier", "Beacon", 0);

	push	0
	mov	DWORD PTR [ecx+40], eax
	mov	edx, DWORD PTR [esi+108]
	add	edi, DWORD PTR [edx+40]
	push	OFFSET ??_C@_06NMAKBGBM@Beacon?$AA@
	push	OFFSET ??_C@_0BD@GEOKIGOL@Percentage_Soldier?$AA@
	mov	ecx, esi
	call	?Load_Int@stSettingsBase@@IAEHPBD0H@Z	; stSettingsBase::Load_Int
	mov	ecx, DWORD PTR [esi+108]

; 114  : 		totalPercent += this->m_percent->Spy			= this->Load_Int("Percentage_Soldier", "Spy", 0);

	push	0
	mov	DWORD PTR [ecx+44], eax
	mov	edx, DWORD PTR [esi+108]
	add	edi, DWORD PTR [edx+44]
	push	OFFSET ??_C@_03KNAPCKEA@Spy?$AA@
	push	OFFSET ??_C@_0BD@GEOKIGOL@Percentage_Soldier?$AA@
	mov	ecx, esi
	call	?Load_Int@stSettingsBase@@IAEHPBD0H@Z	; stSettingsBase::Load_Int
	mov	ecx, DWORD PTR [esi+108]

; 115  : 		totalPercent += this->m_percent->Thief			= this->Load_Int("Percentage_Soldier", "Thief", 0);

	push	0
	mov	DWORD PTR [ecx+48], eax
	mov	edx, DWORD PTR [esi+108]
	add	edi, DWORD PTR [edx+48]
	push	OFFSET ??_C@_05ELPFFFFC@Thief?$AA@
	push	OFFSET ??_C@_0BD@GEOKIGOL@Percentage_Soldier?$AA@
	mov	ecx, esi
	call	?Load_Int@stSettingsBase@@IAEHPBD0H@Z	; stSettingsBase::Load_Int
	mov	ecx, DWORD PTR [esi+108]

; 116  : 		totalPercent += this->m_percent->WeaponPack		= this->Load_Int("Percentage_Soldier", "WeaponPack", 0);

	push	0
	mov	DWORD PTR [ecx+52], eax
	mov	edx, DWORD PTR [esi+108]
	add	edi, DWORD PTR [edx+52]
	push	OFFSET ??_C@_0L@CNGKIHGJ@WeaponPack?$AA@
	push	OFFSET ??_C@_0BD@GEOKIGOL@Percentage_Soldier?$AA@
	mov	ecx, esi
	call	?Load_Int@stSettingsBase@@IAEHPBD0H@Z	; stSettingsBase::Load_Int
	mov	ecx, DWORD PTR [esi+108]

; 117  : 		totalPercent += this->m_percent->Donation		= this->Load_Int("Percentage_Soldier", "Donation", 0);

	push	0
	mov	DWORD PTR [ecx+56], eax
	mov	edx, DWORD PTR [esi+108]
	add	edi, DWORD PTR [edx+56]
	push	OFFSET ??_C@_08HJOLNELI@Donation?$AA@
	push	OFFSET ??_C@_0BD@GEOKIGOL@Percentage_Soldier?$AA@
	mov	ecx, esi
	call	?Load_Int@stSettingsBase@@IAEHPBD0H@Z	; stSettingsBase::Load_Int
	mov	ecx, DWORD PTR [esi+108]

; 118  : 		totalPercent += this->m_percent->ChemSuit		= this->Load_Int("Percentage_Soldier", "ChemSuit", 0);

	push	0
	mov	DWORD PTR [ecx+60], eax
	mov	edx, DWORD PTR [esi+108]
	add	edi, DWORD PTR [edx+60]
	push	OFFSET ??_C@_08LPAELJLD@ChemSuit?$AA@
	push	OFFSET ??_C@_0BD@GEOKIGOL@Percentage_Soldier?$AA@
	mov	ecx, esi
	call	?Load_Int@stSettingsBase@@IAEHPBD0H@Z	; stSettingsBase::Load_Int
	mov	ecx, DWORD PTR [esi+108]

; 119  : 		totalPercent += this->m_percent->ExplosiveSuit	= this->Load_Int("Percentage_Soldier", "ExplosiveSuit", 0);

	push	0
	mov	DWORD PTR [ecx+64], eax
	mov	edx, DWORD PTR [esi+108]
	add	edi, DWORD PTR [edx+64]
	push	OFFSET ??_C@_0O@KLMNPMCL@ExplosiveSuit?$AA@
	push	OFFSET ??_C@_0BD@GEOKIGOL@Percentage_Soldier?$AA@
	mov	ecx, esi
	call	?Load_Int@stSettingsBase@@IAEHPBD0H@Z	; stSettingsBase::Load_Int
	mov	ecx, DWORD PTR [esi+108]
	mov	DWORD PTR [ecx+68], eax
	mov	edx, DWORD PTR [esi+108]
	add	edi, DWORD PTR [edx+68]

; 120  : 		totalPercent += this->m_percent->Medic			= this->Load_Int("Percentage_Soldier", "Medic", 0);

	push	0
	push	OFFSET ??_C@_05BBLLBHEM@Medic?$AA@
	push	OFFSET ??_C@_0BD@GEOKIGOL@Percentage_Soldier?$AA@
	mov	ecx, esi
	call	?Load_Int@stSettingsBase@@IAEHPBD0H@Z	; stSettingsBase::Load_Int
	mov	ecx, DWORD PTR [esi+108]

; 121  : 		totalPercent += this->m_percent->MetalGear		= this->Load_Int("Percentage_Soldier", "MetalGear", 0);

	push	0
	mov	DWORD PTR [ecx+72], eax
	mov	edx, DWORD PTR [esi+108]
	add	edi, DWORD PTR [edx+72]
	push	OFFSET ??_C@_09KJBPPBGD@MetalGear?$AA@
	push	OFFSET ??_C@_0BD@GEOKIGOL@Percentage_Soldier?$AA@
	mov	ecx, esi
	call	?Load_Int@stSettingsBase@@IAEHPBD0H@Z	; stSettingsBase::Load_Int
	mov	ecx, DWORD PTR [esi+108]

; 122  : 		totalPercent += this->m_percent->EnemyThief		= this->Load_Int("Percentage_Soldier", "EnemyThief", 0);

	push	0
	mov	DWORD PTR [ecx+80], eax
	mov	edx, DWORD PTR [esi+108]
	add	edi, DWORD PTR [edx+80]
	push	OFFSET ??_C@_0L@NNGLCAAK@EnemyThief?$AA@
	push	OFFSET ??_C@_0BD@GEOKIGOL@Percentage_Soldier?$AA@
	mov	ecx, esi
	call	?Load_Int@stSettingsBase@@IAEHPBD0H@Z	; stSettingsBase::Load_Int
	mov	ecx, DWORD PTR [esi+108]

; 123  : 		totalPercent += this->m_percent->Hover			= this->Load_Int("Percentage_Soldier", "Hover", 0);

	push	0
	mov	DWORD PTR [ecx+76], eax
	mov	edx, DWORD PTR [esi+108]
	add	edi, DWORD PTR [edx+76]
	push	OFFSET ??_C@_05KLBFNLDO@Hover?$AA@
	push	OFFSET ??_C@_0BD@GEOKIGOL@Percentage_Soldier?$AA@
	mov	ecx, esi
	call	?Load_Int@stSettingsBase@@IAEHPBD0H@Z	; stSettingsBase::Load_Int
	mov	ecx, DWORD PTR [esi+108]

; 124  : 		totalPercent += this->m_percent->StealthMine	= this->Load_Int("Percentage_Soldier", "StealthMine", 0);

	push	0
	mov	DWORD PTR [ecx+88], eax
	mov	edx, DWORD PTR [esi+108]
	add	edi, DWORD PTR [edx+88]
	push	OFFSET ??_C@_0M@DKKIFLIM@StealthMine?$AA@
	push	OFFSET ??_C@_0BD@GEOKIGOL@Percentage_Soldier?$AA@
	mov	ecx, esi
	call	?Load_Int@stSettingsBase@@IAEHPBD0H@Z	; stSettingsBase::Load_Int
	mov	ecx, DWORD PTR [esi+108]

; 125  : 		totalPercent += this->m_percent->Veteran		= this->Load_Int("Percentage_Soldier", "Veteran", 0);

	push	0
	mov	DWORD PTR [ecx+92], eax
	mov	edx, DWORD PTR [esi+108]
	add	edi, DWORD PTR [edx+92]
	push	OFFSET ??_C@_07GCCGIBFG@Veteran?$AA@
	push	OFFSET ??_C@_0BD@GEOKIGOL@Percentage_Soldier?$AA@
	mov	ecx, esi
	call	?Load_Int@stSettingsBase@@IAEHPBD0H@Z	; stSettingsBase::Load_Int
	mov	ecx, DWORD PTR [esi+108]

; 126  : 		totalPercent += this->m_percent->Visceroid		= this->Load_Int("Percentage_Soldier", "Visceroid", 0);

	push	0
	mov	DWORD PTR [ecx+84], eax
	mov	edx, DWORD PTR [esi+108]
	add	edi, DWORD PTR [edx+84]
	push	OFFSET ??_C@_09DOMHACGN@Visceroid?$AA@
	push	OFFSET ??_C@_0BD@GEOKIGOL@Percentage_Soldier?$AA@
	mov	ecx, esi
	call	?Load_Int@stSettingsBase@@IAEHPBD0H@Z	; stSettingsBase::Load_Int
	mov	ecx, DWORD PTR [esi+108]

; 127  : 		totalPercent += this->m_percent->BaseDefensePower = this->Load_Int("Percentage_Soldier", "BaseDefensePower", 0);

	push	0
	mov	DWORD PTR [ecx+96], eax
	mov	edx, DWORD PTR [esi+108]
	add	edi, DWORD PTR [edx+96]
	push	OFFSET ??_C@_0BB@KIJHAIGK@BaseDefensePower?$AA@
	push	OFFSET ??_C@_0BD@GEOKIGOL@Percentage_Soldier?$AA@
	mov	ecx, esi
	call	?Load_Int@stSettingsBase@@IAEHPBD0H@Z	; stSettingsBase::Load_Int
	mov	ecx, DWORD PTR [esi+108]
	mov	DWORD PTR [ecx+100], eax
	mov	ecx, DWORD PTR [esi+108]
	add	edi, DWORD PTR [ecx+100]

; 128  : 
; 129  : 		if (totalPercent != 1000)

	cmp	edi, 1000				; 000003e8H
	je	SHORT $LN12@Load

; 130  : 		{
; 131  : 			this->m_percent->Reset(CRATE_SOLDIER);

	push	1
	call	?Reset@gzCratePercentStruct@@QAEXH@Z	; gzCratePercentStruct::Reset

; 132  : 			gzConsole::Out("Total percentage for soldier crates is %d instead of 1000 and values have been reset to default.\n",totalPercent);

	push	edi
	push	OFFSET ??_C@_0GC@NAKKCAEK@Total?5percentage?5for?5soldier?5cra@
	call	?Out@gzConsole@@SAXPBDZZ		; gzConsole::Out
	add	esp, 8
$LN12@Load:

; 133  : 		}
; 134  : 
; 135  : 		totalPercent = 0;
; 136  : 		totalPercent += this->m_percent->vAntiEnemy = this->Load_Int("Percentage_Vehicle", "AntiEnemy", 0);

	push	0
	push	OFFSET ??_C@_09EAFPIHD@AntiEnemy?$AA@
	push	OFFSET ??_C@_0BD@IOJEAOBL@Percentage_Vehicle?$AA@
	mov	ecx, esi
	call	?Load_Int@stSettingsBase@@IAEHPBD0H@Z	; stSettingsBase::Load_Int
	mov	edx, DWORD PTR [esi+108]

; 137  : 		totalPercent += this->m_percent->vMaxArmor = this->Load_Int("Percentage_Vehicle", "MaxArmor", 0);

	push	0
	mov	DWORD PTR [edx+116], eax
	mov	eax, DWORD PTR [esi+108]
	mov	edi, DWORD PTR [eax+116]
	push	OFFSET ??_C@_08CFDFODLJ@MaxArmor?$AA@
	push	OFFSET ??_C@_0BD@IOJEAOBL@Percentage_Vehicle?$AA@
	mov	ecx, esi
	call	?Load_Int@stSettingsBase@@IAEHPBD0H@Z	; stSettingsBase::Load_Int
	mov	ecx, DWORD PTR [esi+108]

; 138  : 		totalPercent += this->m_percent->vMaxHealth = this->Load_Int("Percentage_Vehicle", "MaxHealth", 0);

	push	0
	mov	DWORD PTR [ecx+104], eax
	mov	edx, DWORD PTR [esi+108]
	add	edi, DWORD PTR [edx+104]
	push	OFFSET ??_C@_09EHDPJGMJ@MaxHealth?$AA@
	push	OFFSET ??_C@_0BD@IOJEAOBL@Percentage_Vehicle?$AA@
	mov	ecx, esi
	call	?Load_Int@stSettingsBase@@IAEHPBD0H@Z	; stSettingsBase::Load_Int
	mov	ecx, DWORD PTR [esi+108]

; 139  : 		totalPercent += this->m_percent->vAutoRepair = this->Load_Int("Percentage_Vehicle", "AutoRepair", 0);

	push	0
	mov	DWORD PTR [ecx+108], eax
	mov	edx, DWORD PTR [esi+108]
	add	edi, DWORD PTR [edx+108]
	push	OFFSET ??_C@_0L@PLGOBLCL@AutoRepair?$AA@
	push	OFFSET ??_C@_0BD@IOJEAOBL@Percentage_Vehicle?$AA@
	mov	ecx, esi
	call	?Load_Int@stSettingsBase@@IAEHPBD0H@Z	; stSettingsBase::Load_Int
	mov	ecx, DWORD PTR [esi+108]

; 140  : 		totalPercent += this->m_percent->vRepair = this->Load_Int("Percentage_Vehicle", "Repair", 0);

	push	0
	mov	DWORD PTR [ecx+112], eax
	mov	edx, DWORD PTR [esi+108]
	add	edi, DWORD PTR [edx+112]
	push	OFFSET ??_C@_06KOKHNNIE@Repair?$AA@
	push	OFFSET ??_C@_0BD@IOJEAOBL@Percentage_Vehicle?$AA@
	mov	ecx, esi
	call	?Load_Int@stSettingsBase@@IAEHPBD0H@Z	; stSettingsBase::Load_Int
	mov	ecx, DWORD PTR [esi+108]

; 141  : 		totalPercent += this->m_percent->vSpy = this->Load_Int("Percentage_Vehicle", "Spy", 0);

	push	0
	mov	DWORD PTR [ecx+120], eax
	mov	edx, DWORD PTR [esi+108]
	add	edi, DWORD PTR [edx+120]
	push	OFFSET ??_C@_03KNAPCKEA@Spy?$AA@
	push	OFFSET ??_C@_0BD@IOJEAOBL@Percentage_Vehicle?$AA@
	mov	ecx, esi
	call	?Load_Int@stSettingsBase@@IAEHPBD0H@Z	; stSettingsBase::Load_Int
	mov	ecx, DWORD PTR [esi+108]

; 142  : 		totalPercent += this->m_percent->vDemoTruck = this->Load_Int("Percentage_Vehicle", "DemoTruck", 0);

	push	0
	mov	DWORD PTR [ecx+124], eax
	mov	edx, DWORD PTR [esi+108]
	add	edi, DWORD PTR [edx+124]
	push	OFFSET ??_C@_09CPLEBDCL@DemoTruck?$AA@
	push	OFFSET ??_C@_0BD@IOJEAOBL@Percentage_Vehicle?$AA@
	mov	ecx, esi
	call	?Load_Int@stSettingsBase@@IAEHPBD0H@Z	; stSettingsBase::Load_Int
	mov	ecx, DWORD PTR [esi+108]

; 143  : 		totalPercent += this->m_percent->vSteal = this->Load_Int("Percentage_Vehicle", "Steal", 0);

	push	0
	mov	DWORD PTR [ecx+128], eax
	mov	edx, DWORD PTR [esi+108]
	add	edi, DWORD PTR [edx+128]
	push	OFFSET ??_C@_05EENAOAIH@Steal?$AA@
	push	OFFSET ??_C@_0BD@IOJEAOBL@Percentage_Vehicle?$AA@
	mov	ecx, esi
	call	?Load_Int@stSettingsBase@@IAEHPBD0H@Z	; stSettingsBase::Load_Int
	mov	ecx, DWORD PTR [esi+108]
	mov	DWORD PTR [ecx+132], eax
	mov	ecx, DWORD PTR [esi+108]
	add	edi, DWORD PTR [ecx+132]

; 144  : 		if (totalPercent != 1000)

	cmp	edi, 1000				; 000003e8H
	je	SHORT $LN11@Load

; 145  : 		{
; 146  : 			this->m_percent->Reset(CRATE_VEHICLE);

	push	2
	call	?Reset@gzCratePercentStruct@@QAEXH@Z	; gzCratePercentStruct::Reset

; 147  : 			gzConsole::Out("Total percentage for vehicle crates is %d instead of 1000 and values have been reset to default.\n",totalPercent);

	push	edi
	push	OFFSET ??_C@_0GC@IOONMHOF@Total?5percentage?5for?5vehicle?5cra@
	call	?Out@gzConsole@@SAXPBDZZ		; gzConsole::Out
	add	esp, 8
$LN11@Load:

; 148  : 		}
; 149  : 
; 150  : 		// Vehicle crate drop data
; 151  : 		this->m_vehFacing[1] = this->Load_Float(cGame->MapName.m_Buffer, "GDIRVC_Face", -181.0f);

	mov	edx, DWORD PTR ?cGame@@3AAPAVnc_cGameData@@A ; cGame
	fld	DWORD PTR __real@c3350000
	mov	eax, DWORD PTR [edx]
	push	ebp
	push	ecx
	mov	ecx, DWORD PTR [eax+40]
	fstp	DWORD PTR [esp]
	push	OFFSET ??_C@_0M@IFALLAIL@GDIRVC_Face?$AA@
	push	ecx
	mov	ecx, esi
	call	?Load_Float@stSettingsBase@@IAEMPBD0M@Z	; stSettingsBase::Load_Float
	fstp	DWORD PTR [esi+48]

; 152  : 		this->m_vehSpawn[1].X = this->Load_Float(cGame->MapName.m_Buffer, "GDIRVC_X", 0.0f);

	mov	edx, DWORD PTR ?cGame@@3AAPAVnc_cGameData@@A ; cGame
	fldz
	mov	eax, DWORD PTR [edx]
	push	ecx
	mov	ecx, DWORD PTR [eax+40]
	fstp	DWORD PTR [esp]
	push	OFFSET ??_C@_08LFHHKDLH@GDIRVC_X?$AA@
	push	ecx
	mov	ecx, esi
	call	?Load_Float@stSettingsBase@@IAEMPBD0M@Z	; stSettingsBase::Load_Float
	fstp	DWORD PTR [esi+72]

; 153  : 		this->m_vehSpawn[1].Y = this->Load_Float(cGame->MapName.m_Buffer, "GDIRVC_Y", 0.0f);

	mov	edx, DWORD PTR ?cGame@@3AAPAVnc_cGameData@@A ; cGame
	fldz
	mov	eax, DWORD PTR [edx]
	push	ecx
	mov	ecx, DWORD PTR [eax+40]
	fstp	DWORD PTR [esp]
	push	OFFSET ??_C@_08KMGMJCPG@GDIRVC_Y?$AA@
	push	ecx
	mov	ecx, esi
	call	?Load_Float@stSettingsBase@@IAEMPBD0M@Z	; stSettingsBase::Load_Float
	fstp	DWORD PTR [esi+76]

; 154  : 		this->m_vehSpawn[1].Z = this->Load_Float(cGame->MapName.m_Buffer, "GDIRVC_Z", -999.0f);

	mov	edx, DWORD PTR ?cGame@@3AAPAVnc_cGameData@@A ; cGame
	fld	DWORD PTR __real@c479c000
	mov	eax, DWORD PTR [edx]
	push	ecx
	mov	ecx, DWORD PTR [eax+40]
	fstp	DWORD PTR [esp]
	push	OFFSET ??_C@_08IHEBMBDF@GDIRVC_Z?$AA@
	push	ecx
	mov	ecx, esi
	call	?Load_Float@stSettingsBase@@IAEMPBD0M@Z	; stSettingsBase::Load_Float
	fstp	DWORD PTR [esi+80]

; 155  : 		this->m_vehPFacing[1] = this->Load_Float(cGame->MapName.m_Buffer, "GDIRVCP_Face", -181.0f);

	mov	edx, DWORD PTR ?cGame@@3AAPAVnc_cGameData@@A ; cGame
	fld	DWORD PTR __real@c3350000
	mov	eax, DWORD PTR [edx]
	push	ecx
	mov	ecx, DWORD PTR [eax+40]
	fstp	DWORD PTR [esp]
	push	OFFSET ??_C@_0N@GNJBKKGN@GDIRVCP_Face?$AA@
	push	ecx
	mov	ecx, esi
	call	?Load_Float@stSettingsBase@@IAEMPBD0M@Z	; stSettingsBase::Load_Float
	fstp	DWORD PTR [esi+56]

; 156  : 		this->m_vehPSpawn[1].X = this->Load_Float(cGame->MapName.m_Buffer, "GDIRVCP_X", 0.0f);

	mov	edx, DWORD PTR ?cGame@@3AAPAVnc_cGameData@@A ; cGame
	fldz
	mov	eax, DWORD PTR [edx]
	push	ecx
	mov	ecx, DWORD PTR [eax+40]
	fstp	DWORD PTR [esp]
	push	OFFSET ??_C@_09HKPOIAAD@GDIRVCP_X?$AA@
	push	ecx
	mov	ecx, esi
	call	?Load_Float@stSettingsBase@@IAEMPBD0M@Z	; stSettingsBase::Load_Float
	fstp	DWORD PTR [esi+96]

; 157  : 		this->m_vehPSpawn[1].Y = this->Load_Float(cGame->MapName.m_Buffer, "GDIRVCP_Y", 0.0f);

	mov	edx, DWORD PTR ?cGame@@3AAPAVnc_cGameData@@A ; cGame
	fldz
	mov	eax, DWORD PTR [edx]
	push	ecx
	mov	ecx, DWORD PTR [eax+40]
	fstp	DWORD PTR [esp]
	push	OFFSET ??_C@_09GDOFLBEC@GDIRVCP_Y?$AA@
	push	ecx
	mov	ecx, esi
	call	?Load_Float@stSettingsBase@@IAEMPBD0M@Z	; stSettingsBase::Load_Float
	fstp	DWORD PTR [esi+100]

; 158  : 		this->m_vehPSpawn[1].Z = this->Load_Float(cGame->MapName.m_Buffer, "GDIRVCP_Z", -999.0f);

	fld	DWORD PTR __real@c479c000
	push	ecx
	fstp	DWORD PTR [esp]
	mov	edx, DWORD PTR ?cGame@@3AAPAVnc_cGameData@@A ; cGame
	mov	eax, DWORD PTR [edx]
	mov	ecx, DWORD PTR [eax+40]
	push	OFFSET ??_C@_09EIMIOCIB@GDIRVCP_Z?$AA@
	push	ecx
	mov	ecx, esi
	call	?Load_Float@stSettingsBase@@IAEMPBD0M@Z	; stSettingsBase::Load_Float
	fstp	DWORD PTR [esi+104]

; 159  : 
; 160  : 		this->m_vehFacing[0] = this->Load_Float(cGame->MapName.m_Buffer, "NodRVC_Face", -181.0f);

	mov	edx, DWORD PTR ?cGame@@3AAPAVnc_cGameData@@A ; cGame
	fld	DWORD PTR __real@c3350000
	mov	eax, DWORD PTR [edx]
	push	ecx
	mov	ecx, DWORD PTR [eax+40]
	fstp	DWORD PTR [esp]
	push	OFFSET ??_C@_0M@HLMAKOJ@NodRVC_Face?$AA@
	push	ecx
	mov	ecx, esi
	call	?Load_Float@stSettingsBase@@IAEMPBD0M@Z	; stSettingsBase::Load_Float
	fstp	DWORD PTR [esi+44]

; 161  : 		this->m_vehSpawn[0].X = this->Load_Float(cGame->MapName.m_Buffer, "NodRVC_X", 0.0f);

	mov	edx, DWORD PTR ?cGame@@3AAPAVnc_cGameData@@A ; cGame
	fldz
	mov	eax, DWORD PTR [edx]
	push	ecx
	mov	ecx, DWORD PTR [eax+40]
	fstp	DWORD PTR [esp]
	push	OFFSET ??_C@_08BDKCDDLA@NodRVC_X?$AA@
	push	ecx
	mov	ecx, esi
	call	?Load_Float@stSettingsBase@@IAEMPBD0M@Z	; stSettingsBase::Load_Float
	fstp	DWORD PTR [esi+60]

; 162  : 		this->m_vehSpawn[0].Y = this->Load_Float(cGame->MapName.m_Buffer, "NodRVC_Y", 0.0f);

	mov	edx, DWORD PTR ?cGame@@3AAPAVnc_cGameData@@A ; cGame
	fldz
	mov	eax, DWORD PTR [edx]
	push	ecx
	mov	ecx, DWORD PTR [eax+40]
	fstp	DWORD PTR [esp]
	push	OFFSET ??_C@_08KLJACPB@NodRVC_Y?$AA@
	push	ecx
	mov	ecx, esi
	call	?Load_Float@stSettingsBase@@IAEMPBD0M@Z	; stSettingsBase::Load_Float
	fstp	DWORD PTR [esi+64]

; 163  : 		this->m_vehSpawn[0].Z = this->Load_Float(cGame->MapName.m_Buffer, "NodRVC_Z", -999.0f);

	mov	edx, DWORD PTR ?cGame@@3AAPAVnc_cGameData@@A ; cGame
	fld	DWORD PTR __real@c479c000
	mov	eax, DWORD PTR [edx]
	push	ecx
	mov	ecx, DWORD PTR [eax+40]
	fstp	DWORD PTR [esp]
	push	OFFSET ??_C@_08CBJEFBDC@NodRVC_Z?$AA@
	push	ecx
	mov	ecx, esi
	call	?Load_Float@stSettingsBase@@IAEMPBD0M@Z	; stSettingsBase::Load_Float
	fstp	DWORD PTR [esi+68]

; 164  : 		this->m_vehPFacing[0] = this->Load_Float(cGame->MapName.m_Buffer, "NodRVCP_Face", -181.0f);

	mov	edx, DWORD PTR ?cGame@@3AAPAVnc_cGameData@@A ; cGame
	fld	DWORD PTR __real@c3350000
	mov	eax, DWORD PTR [edx]
	push	ecx
	mov	ecx, DWORD PTR [eax+40]
	fstp	DWORD PTR [esp]
	push	OFFSET ??_C@_0N@MOKPBNKD@NodRVCP_Face?$AA@
	push	ecx
	mov	ecx, esi
	call	?Load_Float@stSettingsBase@@IAEMPBD0M@Z	; stSettingsBase::Load_Float
	fstp	DWORD PTR [esi+52]

; 165  : 		this->m_vehPSpawn[0].X = this->Load_Float(cGame->MapName.m_Buffer, "NodRVCP_X", 0.0f);

	mov	edx, DWORD PTR ?cGame@@3AAPAVnc_cGameData@@A ; cGame
	fldz
	mov	eax, DWORD PTR [edx]
	push	ecx
	mov	ecx, DWORD PTR [eax+40]
	fstp	DWORD PTR [esp]
	push	OFFSET ??_C@_09OEDMMADA@NodRVCP_X?$AA@
	push	ecx
	mov	ecx, esi
	call	?Load_Float@stSettingsBase@@IAEMPBD0M@Z	; stSettingsBase::Load_Float
	fstp	DWORD PTR [esi+84]

; 166  : 		this->m_vehPSpawn[0].Y = this->Load_Float(cGame->MapName.m_Buffer, "NodRVCP_Y", 0.0f);

	fldz
	mov	edx, DWORD PTR ?cGame@@3AAPAVnc_cGameData@@A ; cGame
	mov	eax, DWORD PTR [edx]
	push	ecx
	mov	ecx, DWORD PTR [eax+40]
	fstp	DWORD PTR [esp]
	push	OFFSET ??_C@_09PNCHPBHB@NodRVCP_Y?$AA@
	push	ecx
	mov	ecx, esi
	call	?Load_Float@stSettingsBase@@IAEMPBD0M@Z	; stSettingsBase::Load_Float
	fstp	DWORD PTR [esi+88]

; 167  : 		this->m_vehPSpawn[0].Z = this->Load_Float(cGame->MapName.m_Buffer, "NodRVCP_Z", -999.0f);

	mov	edx, DWORD PTR ?cGame@@3AAPAVnc_cGameData@@A ; cGame
	fld	DWORD PTR __real@c479c000
	mov	eax, DWORD PTR [edx]
	push	ecx
	mov	ecx, DWORD PTR [eax+40]
	fstp	DWORD PTR [esp]
	push	OFFSET ??_C@_09NGAKKCLC@NodRVCP_Z?$AA@
	push	ecx
	mov	ecx, esi
	call	?Load_Float@stSettingsBase@@IAEMPBD0M@Z	; stSettingsBase::Load_Float
	fstp	DWORD PTR [esi+92]

; 168  : 
; 169  : 		// Spawn positions
; 170  : 		this->m_posList.Clear();

	mov	edx, DWORD PTR [esi+112]
	mov	eax, DWORD PTR [edx+4]
	lea	ebp, DWORD PTR [esi+112]
	mov	ecx, ebp
	call	eax

; 171  : 		for (int i = 1; i; i++)

	mov	edi, 1
$LL10@Load:

; 172  : 		{
; 173  : 			char CX[12], CY[12], CZ[12];
; 174  : 			sprintf(CX, "Crate%d_X", i);

	push	edi
	lea	ecx, DWORD PTR _CX$59568[esp+96]
	push	OFFSET ??_C@_09EDBFHEHM@Crate?$CFd_X?$AA@
	push	ecx
	call	_sprintf

; 175  : 			sprintf(CY, "Crate%d_Y", i);

	push	edi
	lea	edx, DWORD PTR _CY$59569[esp+108]
	push	OFFSET ??_C@_09FKAOEFDN@Crate?$CFd_Y?$AA@
	push	edx
	call	_sprintf

; 176  : 			sprintf(CZ, "Crate%d_Z", i);

	push	edi
	lea	eax, DWORD PTR _CZ$59570[esp+120]
	push	OFFSET ??_C@_09HBCDBGPO@Crate?$CFd_Z?$AA@
	push	eax
	call	_sprintf

; 177  : 			nc_Vector3 CratePos;
; 178  : 			CratePos.X = this->Load_Float(cGame->MapName.m_Buffer, CX, 0.0f);

	fldz
	mov	edx, DWORD PTR ?cGame@@3AAPAVnc_cGameData@@A ; cGame
	fstp	DWORD PTR [esp+32]
	mov	eax, DWORD PTR [edx]
	add	esp, 32					; 00000020H
	lea	ecx, DWORD PTR _CX$59568[esp+96]
	push	ecx
	mov	ecx, DWORD PTR [eax+40]
	push	ecx
	mov	ecx, esi
	call	?Load_Float@stSettingsBase@@IAEMPBD0M@Z	; stSettingsBase::Load_Float
	fstp	DWORD PTR _CratePos$59574[esp+92]

; 179  : 			CratePos.Y = this->Load_Float(cGame->MapName.m_Buffer, CY, 0.0f);

	fldz
	mov	eax, DWORD PTR ?cGame@@3AAPAVnc_cGameData@@A ; cGame
	push	ecx
	fstp	DWORD PTR [esp]
	mov	ecx, DWORD PTR [eax]
	lea	edx, DWORD PTR _CY$59569[esp+96]
	push	edx
	mov	edx, DWORD PTR [ecx+40]
	push	edx
	mov	ecx, esi
	call	?Load_Float@stSettingsBase@@IAEMPBD0M@Z	; stSettingsBase::Load_Float
	fstp	DWORD PTR _CratePos$59574[esp+96]

; 180  : 			CratePos.Z = this->Load_Float(cGame->MapName.m_Buffer, CZ, -999.0f);

	fld	DWORD PTR __real@c479c000
	push	ecx
	mov	ecx, DWORD PTR ?cGame@@3AAPAVnc_cGameData@@A ; cGame
	fstp	DWORD PTR [esp]
	mov	edx, DWORD PTR [ecx]
	lea	eax, DWORD PTR _CZ$59570[esp+96]
	push	eax
	mov	eax, DWORD PTR [edx+40]
	push	eax
	mov	ecx, esi
	call	?Load_Float@stSettingsBase@@IAEMPBD0M@Z	; stSettingsBase::Load_Float
	fst	DWORD PTR _CratePos$59574[esp+100]

; 181  : 			if (CratePos.X != 0.0f && CratePos.Y != 0.0f &&	CratePos.Z != -999.0f)

	fldz
	fcom	DWORD PTR _CratePos$59574[esp+92]
	fnstsw	ax
	test	ah, 68					; 00000044H
	jnp	SHORT $LN39@Load
	fcomp	DWORD PTR _CratePos$59574[esp+96]
	fnstsw	ax
	test	ah, 68					; 00000044H
	jnp	SHORT $LN42@Load
	fld	DWORD PTR __real@c479c000
	fucompp
	fnstsw	ax
	test	ah, 68					; 00000044H
	jnp	SHORT $LN7@Load

; 182  : 				this->m_posList.Add(CratePos);

	mov	edx, DWORD PTR [ebp]
	mov	edx, DWORD PTR [edx+12]
	lea	eax, DWORD PTR _CratePos$59574[esp+92]
	push	eax
	mov	ecx, ebp
	call	edx
	add	edi, 1
	jne	$LL10@Load

; 171  : 		for (int i = 1; i; i++)

	jmp	SHORT $LN7@Load
$LN39@Load:
	fstp	ST(0)
$LN42@Load:

; 181  : 			if (CratePos.X != 0.0f && CratePos.Y != 0.0f &&	CratePos.Z != -999.0f)

	fstp	ST(0)
$LN7@Load:

; 183  : 			else
; 184  : 				break;
; 185  : 		}
; 186  : 		if (this->m_posList.Count() == 0)

	cmp	DWORD PTR [esi+124], 0
	pop	ebp
	jne	SHORT $LN36@Load

; 187  : 			this->m_enable = false;

	mov	BYTE PTR [esi+24], 0
$LN36@Load:

; 188  : 	}
; 189  : 	delete this->m_cfg;

	push	OFFSET ??_C@_00CNPNBAHC@?$AA@
	push	189					; 000000bdH
	push	OFFSET ??_C@_0O@GPLKOMOA@?4?2gzcrate?4cpp?$AA@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	ecx, DWORD PTR [esi+12]
	add	esp, 12					; 0000000cH
	test	ecx, ecx
	je	SHORT $LN21@Load
	mov	eax, DWORD PTR [ecx]
	mov	edx, DWORD PTR [eax]
	push	1
	call	edx
$LN21@Load:

; 190  : 	this->m_cfg = NULL;

	mov	DWORD PTR [esi+12], 0

; 191  : 
; 192  : 	// Game mode settings
; 193  : 	switch (gzGameMgr->m_settings->m_GameMode)

	mov	ecx, DWORD PTR ?gzGameMgr@@3PAVgzGameManager@@A ; gzGameMgr
	mov	eax, DWORD PTR [ecx+56]
	mov	eax, DWORD PTR [eax+24]
	add	eax, -4					; fffffffcH
	cmp	eax, 2
	ja	SHORT $LN1@Load

; 194  : 	{
; 195  : 		case GAMEMODE_SNIPER:
; 196  : 		case GAMEMODE_500SNIP:
; 197  : 		case GAMEMODE_DM:
; 198  : 			if (this->m_enable)

	cmp	BYTE PTR [esi+24], 0
	je	SHORT $LN1@Load

; 199  : 			{
; 200  : 				gzConsole::Out("[Crate] Error - Crate can not be enabled in %s game mode.\n", gzGameMgr->GetGame()->ModeName());

	call	?GetGame@gzGameManager@@QAEPAVgzGameModeBase@@XZ ; gzGameManager::GetGame
	mov	edx, DWORD PTR [eax]
	mov	ecx, eax
	mov	eax, DWORD PTR [edx+136]
	call	eax
	push	eax
	push	OFFSET ??_C@_0DL@BLHBMANI@?$FLCrate?$FN?5Error?5?9?5Crate?5can?5not?5be@
	call	?Out@gzConsole@@SAXPBDZZ		; gzConsole::Out
	add	esp, 8

; 201  : 				this->m_enable = false;

	mov	BYTE PTR [esi+24], 0
$LN1@Load:

; 202  : 			}
; 203  : 	}
; 204  : }

	mov	ecx, DWORD PTR __$EHRec$[esp+88]
	pop	edi
	pop	esi
	pop	ebx
	mov	DWORD PTR fs:0, ecx
	add	esp, 76					; 0000004cH
	ret	0
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$?Load@gzSettingsCrateClass@@UAEXXZ$0:
	mov	eax, DWORD PTR $T71299[ebp]
	push	eax
	call	??3@YAXPAX@Z				; operator delete
	pop	ecx
	ret	0
__unwindfunclet$?Load@gzSettingsCrateClass@@UAEXXZ$1:
	mov	eax, DWORD PTR $T71312[ebp]
	and	eax, 1
	je	$LN27@Load
	and	DWORD PTR $T71312[ebp], -2		; fffffffeH
	lea	ecx, DWORD PTR $T71300[ebp]
	jmp	??1aString@@UAE@XZ
$LN27@Load:
	ret	0
__ehhandler$?Load@gzSettingsCrateClass@@UAEXXZ:
	mov	eax, OFFSET __ehfuncinfo$?Load@gzSettingsCrateClass@@UAEXXZ
	jmp	___CxxFrameHandler3
text$x	ENDS
?Load@gzSettingsCrateClass@@UAEXXZ ENDP			; gzSettingsCrateClass::Load
PUBLIC	__real@3f800000
PUBLIC	__real@c0000000
PUBLIC	??_C@_0GK@DILAJEMK@msg?5?$FLCrate?$FN?3?5?$CFs?5fixed?5their?5powe@ ; `string'
PUBLIC	??_C@_0FN@EIENCKHJ@msg?5?$FLCrate?$FN?3?5?$CFs?8s?5extra?5power?5ce@ ; `string'
PUBLIC	??_C@_03OHGKCNFD@Nod?$AA@			; `string'
PUBLIC	??_C@_03IOFAJBDH@GDI?$AA@			; `string'
PUBLIC	??_C@_08KJFDAMJE@vehcol2m?$AA@			; `string'
PUBLIC	??_C@_0P@PDHEJNHK@POW_Neuro_Link?$AA@		; `string'
PUBLIC	__real@40000000
PUBLIC	__real@bf800000
PUBLIC	?Think@gzManagerCrateClass@@UAEXXZ		; gzManagerCrateClass::Think
EXTRN	?Find_SmartGameObj@nc_GameObjManager@@SAPAVnc_SmartGameObj@@H@Z:PROC ; nc_GameObjManager::Find_SmartGameObj
EXTRN	?In@gzConsole@@SAXPBDZZ:PROC			; gzConsole::In
EXTRN	?Set_Model_By_Name@nc_PhysClass@@QAEXPBD@Z:PROC	; nc_PhysClass::Set_Model_By_Name
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_PhysicalGameObj@nc_GameObjManager@@SAPAVnc_PhysicalGameObj@@H@Z:PROC ; nc_GameObjManager::Find_PhysicalGameObj
EXTRN	?SubFrameTime@@YAXAAM_N@Z:PROC			; SubFrameTime
;	COMDAT __real@3f800000
; File d:\source code\alib\include\avector.h
CONST	SEGMENT
__real@3f800000 DD 03f800000r			; 1
CONST	ENDS
;	COMDAT __real@c0000000
CONST	SEGMENT
__real@c0000000 DD 0c0000000r			; -2
CONST	ENDS
;	COMDAT ??_C@_0GK@DILAJEMK@msg?5?$FLCrate?$FN?3?5?$CFs?5fixed?5their?5powe@
CONST	SEGMENT
??_C@_0GK@DILAJEMK@msg?5?$FLCrate?$FN?3?5?$CFs?5fixed?5their?5powe@ DB 'm'
	DB	'sg [Crate]: %s fixed their power problems. The power will now'
	DB	' continue to flow to the main base defense.', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0FN@EIENCKHJ@msg?5?$FLCrate?$FN?3?5?$CFs?8s?5extra?5power?5ce@
CONST	SEGMENT
??_C@_0FN@EIENCKHJ@msg?5?$FLCrate?$FN?3?5?$CFs?8s?5extra?5power?5ce@ DB 'm'
	DB	'sg [Crate]: %s''s extra power cell has run out. Their main ba'
	DB	'se defense is now back offline.', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_03OHGKCNFD@Nod?$AA@
CONST	SEGMENT
??_C@_03OHGKCNFD@Nod?$AA@ DB 'Nod', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_03IOFAJBDH@GDI?$AA@
CONST	SEGMENT
??_C@_03IOFAJBDH@GDI?$AA@ DB 'GDI', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_08KJFDAMJE@vehcol2m?$AA@
CONST	SEGMENT
??_C@_08KJFDAMJE@vehcol2m?$AA@ DB 'vehcol2m', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_0P@PDHEJNHK@POW_Neuro_Link?$AA@
CONST	SEGMENT
??_C@_0P@PDHEJNHK@POW_Neuro_Link?$AA@ DB 'POW_Neuro_Link', 00H ; `string'
CONST	ENDS
;	COMDAT __real@40000000
CONST	SEGMENT
__real@40000000 DD 040000000r			; 2
CONST	ENDS
;	COMDAT __real@bf800000
CONST	SEGMENT
__real@bf800000 DD 0bf800000r			; -1
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
CONST	ENDS
;	COMDAT ?Think@gzManagerCrateClass@@UAEXXZ
_TEXT	SEGMENT
tv668 = -4						; size = 4
tv496 = -4						; size = 4
?Think@gzManagerCrateClass@@UAEXXZ PROC			; gzManagerCrateClass::Think, COMDAT
; _this$ = ecx

; 249  : {

	push	ecx
	push	ebp
	push	esi
	mov	esi, ecx

; 250  : 	// Crate checks
; 251  : 	if (this->m_settings->m_enable && cGame->Is_Gameplay_Permitted() && this->m_settings->m_posList.Count() > 0 && this->m_list.Count() > 0)

	mov	eax, DWORD PTR [esi+56]
	cmp	BYTE PTR [eax+24], 0
	push	edi
	je	$LN62@Think
	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	$LN62@Think
	mov	ecx, DWORD PTR [esi+56]
	cmp	DWORD PTR [ecx+124], 0
	jbe	$LN62@Think
	cmp	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 0
	jbe	$LN62@Think

; 252  : 	{
; 253  : 		SubFrameTime(this->m_nextCheckCounter, true);

	lea	edi, DWORD PTR [esi+40]
	push	1
	push	edi
	call	?SubFrameTime@@YAXAAM_N@Z		; SubFrameTime

; 254  : 		SubFrameTime(this->m_liveCounter, true);

	lea	ebp, DWORD PTR [esi+44]
	push	1
	push	ebp
	call	?SubFrameTime@@YAXAAM_N@Z		; SubFrameTime

; 255  : 
; 256  : 		if (this->m_crateId == 0)

	mov	ecx, DWORD PTR [esi+52]
	add	esp, 16					; 00000010H
	test	ecx, ecx
	jne	SHORT $LN60@Think

; 257  : 			this->m_liveCounter = 0.0f;

	fldz
	fstp	DWORD PTR [ebp]
$LN60@Think:

; 258  : 
; 259  : 		if (this->m_settings->m_liveTime > -1.0f && this->m_liveCounter <= 0.0f)

	mov	edx, DWORD PTR [esi+56]
	fld	DWORD PTR __real@bf800000
	fcomp	DWORD PTR [edx+40]
	fnstsw	ax
	test	ah, 5
	jp	SHORT $LN61@Think
	fldz
	fcomp	DWORD PTR [ebp]
	fnstsw	ax
	test	ah, 1
	jne	SHORT $LN61@Think

; 260  : 		{
; 261  : 			if (nc_GameObjManager::Find_PhysicalGameObj(this->m_crateId))

	push	ecx
	call	?Find_PhysicalGameObj@nc_GameObjManager@@SAPAVnc_PhysicalGameObj@@H@Z ; nc_GameObjManager::Find_PhysicalGameObj
	add	esp, 4
	test	eax, eax
	je	SHORT $LN61@Think

; 262  : 			{
; 263  : #ifdef CRATEMSG
; 264  : 				gzConsole::Out("[Crate] Expired.\n");
; 265  : #endif
; 266  : 				nc_GameObjManager::Find_PhysicalGameObj(this->m_crateId)->Set_Delete_Pending();

	mov	eax, DWORD PTR [esi+52]
	push	eax
	call	?Find_PhysicalGameObj@nc_GameObjManager@@SAPAVnc_PhysicalGameObj@@H@Z ; nc_GameObjManager::Find_PhysicalGameObj
	mov	edx, DWORD PTR [eax+8]
	lea	ecx, DWORD PTR [eax+8]
	mov	eax, DWORD PTR [edx+44]
	add	esp, 4
	call	eax

; 267  : 				this->m_crateId = 0;

	mov	DWORD PTR [esi+52], 0
$LN61@Think:

; 268  : 			}
; 269  : 		}
; 270  : 
; 271  : 		if (this->m_nextCheckCounter < 0.0f)

	fldz
	fcomp	DWORD PTR [edi]
	fnstsw	ax
	test	ah, 65					; 00000041H
	jne	$LN62@Think

; 272  : 		{
; 273  : 			this->m_nextCheckCounter = this->m_settings->m_existCheckTime;

	mov	ecx, DWORD PTR [esi+56]
	fld	DWORD PTR [ecx+28]
	fstp	DWORD PTR [edi]

; 274  : 			if (this->m_settings->m_existCheckVariationMin >= 2.0f)

	mov	edx, DWORD PTR [ecx+32]
	mov	DWORD PTR tv496[esp+16], edx
	fild	DWORD PTR tv496[esp+16]
	fcomp	DWORD PTR __real@40000000
	fnstsw	ax
	test	ah, 1
	jne	SHORT $LN18@Think

; 275  : 				this->m_nextCheckCounter += (float)gzRandom.GetInt(this->m_settings->m_existCheckVariationMin, this->m_settings->m_existCheckVariationMax);

	mov	ecx, DWORD PTR [ecx+36]
	push	ecx
	push	edx
	mov	ecx, OFFSET ?gzRandom@@3VaRandom@@A	; gzRandom
	call	?GetInt@aRandom@@QAEJJJ@Z		; aRandom::GetInt
	mov	DWORD PTR tv668[esp+16], eax
	fild	DWORD PTR tv668[esp+16]
	fadd	DWORD PTR [edi]
	fstp	DWORD PTR [edi]
$LN18@Think:

; 276  : 
; 277  : #ifdef CRATEMSG
; 278  : 			gzConsole::Out("[Crate] Next spawn check will be in %.0f seconds.\n", this->m_nextCheckCounter);
; 279  : #endif
; 280  : 
; 281  : 			if (this->m_crateId == 0)

	cmp	DWORD PTR [esi+52], 0
	jne	$LN62@Think

; 282  : 			{
; 283  : 				nc_PhysicalGameObj *CrateObj = nc_ObjectLibraryManager::Create_Object("POW_Neuro_Link")->As_PhysicalGameObj();

	push	OFFSET ??_C@_0P@PDHEJNHK@POW_Neuro_Link?$AA@
	call	?Create_Object@nc_ObjectLibraryManager@@SAPAVnc_ScriptableGameObj@@PBD@Z ; nc_ObjectLibraryManager::Create_Object
	mov	edx, DWORD PTR [eax]
	mov	ecx, eax
	mov	eax, DWORD PTR [edx+36]
	add	esp, 4
	call	eax
	mov	edi, eax

; 284  : 				if (CrateObj)

	test	edi, edi
	je	SHORT $LN16@Think

; 285  : 				{
; 286  : 					this->m_crateId = CrateObj->NetworkID;

	mov	ecx, DWORD PTR [edi+12]

; 287  : 					int spawnIndex = 0;
; 288  : 					if (this->m_settings->m_posList.Count() > 1)

	mov	edx, DWORD PTR [esi+56]
	mov	DWORD PTR [esi+52], ecx
	mov	ecx, DWORD PTR [edx+124]
	xor	eax, eax
	cmp	ecx, 1
	jbe	SHORT $LN13@Think

; 289  : 					{
; 290  : 						spawnIndex = gzRandom.Get_Int(0, this->m_settings->m_posList.Count() -1);

	add	ecx, -1
	push	ecx
	push	eax
	mov	ecx, OFFSET ?gzRandom@@3VaRandom@@A	; gzRandom
	call	?Get_Int@aRandom@@QAEJJJ@Z		; aRandom::Get_Int

; 291  : 						while (spawnIndex == this->m_lastSpawnIndex)

	cmp	eax, DWORD PTR [esi+48]
	jne	SHORT $LN13@Think
	npad	3
$LL14@Think:

; 292  : 							spawnIndex = gzRandom.Get_Int(0, this->m_settings->m_posList.Count() -1);

	mov	eax, DWORD PTR [esi+56]
	mov	eax, DWORD PTR [eax+124]
	add	eax, -1
	push	eax
	push	0
	mov	ecx, OFFSET ?gzRandom@@3VaRandom@@A	; gzRandom
	call	?Get_Int@aRandom@@QAEJJJ@Z		; aRandom::Get_Int
	cmp	eax, DWORD PTR [esi+48]
	je	SHORT $LL14@Think
$LN13@Think:

; 293  : 					}
; 294  : 					this->m_lastSpawnIndex = spawnIndex;
; 295  : 					CrateObj->Set_Position(this->m_settings->m_posList[spawnIndex]);

	mov	ecx, DWORD PTR [esi+56]
	lea	edx, DWORD PTR [eax+eax*2]
	mov	DWORD PTR [esi+48], eax
	mov	eax, DWORD PTR [ecx+116]
	lea	ecx, DWORD PTR [eax+edx*4]
	push	ecx
	mov	ecx, edi
	call	?Set_Position@nc_PhysicalGameObj@@QAEXABUnc_Vector3@@@Z ; nc_PhysicalGameObj::Set_Position

; 296  : 					CrateObj->Physics->Set_Model_By_Name("vehcol2m");

	mov	ecx, DWORD PTR [edi+1908]
	push	OFFSET ??_C@_08KJFDAMJE@vehcol2m?$AA@
	call	?Set_Model_By_Name@nc_PhysClass@@QAEXPBD@Z ; nc_PhysClass::Set_Model_By_Name
$LN16@Think:

; 297  : #ifdef CRATEMSG
; 298  : 					gzConsole::Out("[Crate] Spawn at position #%d: %f %f %f\n",
; 299  : 						spawnIndex + 1,
; 300  : 						this->m_settings->m_posList[spawnIndex].X,
; 301  : 						this->m_settings->m_posList[spawnIndex].Y,
; 302  : 						this->m_settings->m_posList[spawnIndex].Z);
; 303  : #endif
; 304  : 				}
; 305  : 
; 306  : 				// Crate live counter
; 307  : 				this->m_liveCounter = this->m_settings->m_liveTime;

	mov	edx, DWORD PTR [esi+56]
	fld	DWORD PTR [edx+40]
	fstp	DWORD PTR [ebp]
$LN62@Think:

; 308  : #ifdef CRATEMSG
; 309  : 				gzConsole::Out("[Crate] Crate live time is %f seconds.\n", this->m_settings->m_liveTime);
; 310  : #endif
; 311  : 			}
; 312  : 		}
; 313  : 	}
; 314  : 
; 315  : 	// Base Defense Power crate
; 316  : 	if (this->m_data->BasePower.enable)

	mov	eax, DWORD PTR [esi+60]
	cmp	BYTE PTR [eax+96], 0
	je	$LN64@Think

; 317  : 	{
; 318  : 		SubFrameTime(this->m_data->BasePower.counter, (this->m_data->BasePower.counter >= 0.0f));

	fldz
	lea	ecx, DWORD PTR [eax+104]
	fcomp	DWORD PTR [ecx]
	fnstsw	ax
	test	ah, 65					; 00000041H
	jp	SHORT $LN26@Think
	mov	al, 1
	jmp	SHORT $LN27@Think
$LN26@Think:
	xor	al, al
$LN27@Think:
	push	eax
	push	ecx
	call	?SubFrameTime@@YAXAAM_N@Z		; SubFrameTime

; 319  : 		if (this->m_data->BasePower.counter < 0.0f)

	fldz
	mov	ecx, DWORD PTR [esi+60]
	fcomp	DWORD PTR [ecx+104]
	add	esp, 8
	fnstsw	ax
	test	ah, 65					; 00000041H
	jne	$LN64@Think

; 320  : 		{
; 321  : 			if (!this->m_data->BasePower.building->Destroyed && this->m_data->BasePower.building->Base->IsPowered != this->m_data->BasePower.building->IsPowered)

	mov	eax, DWORD PTR [ecx+108]
	cmp	BYTE PTR [eax+1912], 0
	jne	SHORT $LN63@Think
	mov	edx, DWORD PTR [eax+1908]
	mov	dl, BYTE PTR [edx+1748]
	cmp	dl, BYTE PTR [eax+1928]
	je	SHORT $LN63@Think

; 322  : 			{
; 323  : 				this->m_data->BasePower.building->IsPowered ^= 1;

	xor	BYTE PTR [eax+1928], 1

; 324  : 				this->m_data->BasePower.building->Set_Object_Dirty_Bit(nc_DB_RARE, true);

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

; 325  : 				if (this->m_data->BasePower.powered == 0)

	mov	eax, DWORD PTR [esi+60]
	cmp	BYTE PTR [eax+112], 0
	jne	SHORT $LN9@Think

; 326  : 					gzConsole::In("msg [Crate]: %s's extra power cell has run out. Their main base defense is now back offline.", (this->m_data->BasePower.building->PlayerType == 1 ? "GDI" : "Nod"));

	mov	ecx, DWORD PTR [eax+108]
	cmp	DWORD PTR [ecx+1892], edi
	mov	eax, OFFSET ??_C@_03IOFAJBDH@GDI?$AA@
	je	SHORT $LN29@Think
	mov	eax, OFFSET ??_C@_03OHGKCNFD@Nod?$AA@
$LN29@Think:
	push	eax
	push	OFFSET ??_C@_0FN@EIENCKHJ@msg?5?$FLCrate?$FN?3?5?$CFs?8s?5extra?5power?5ce@

; 327  : 				else

	jmp	SHORT $LN65@Think
$LN9@Think:

; 328  : 					gzConsole::In("msg [Crate]: %s fixed their power problems. The power will now continue to flow to the main base defense.", (this->m_data->BasePower.building->PlayerType == 1 ? "GDI" : "Nod"));

	mov	edx, DWORD PTR [eax+108]
	cmp	DWORD PTR [edx+1892], edi
	mov	eax, OFFSET ??_C@_03IOFAJBDH@GDI?$AA@
	je	SHORT $LN31@Think
	mov	eax, OFFSET ??_C@_03OHGKCNFD@Nod?$AA@
$LN31@Think:
	push	eax
	push	OFFSET ??_C@_0GK@DILAJEMK@msg?5?$FLCrate?$FN?3?5?$CFs?5fixed?5their?5powe@
$LN65@Think:
	call	?In@gzConsole@@SAXPBDZZ			; gzConsole::In
	add	esp, 8
$LN63@Think:

; 329  : 			}
; 330  : 			this->m_data->BasePower.enable   = false;

	mov	eax, DWORD PTR [esi+60]

; 331  : 			this->m_data->BasePower.building = NULL;
; 332  : 			this->m_data->BasePower.counter  = 0.0f;

	fldz
	mov	BYTE PTR [eax+96], 0
	mov	ecx, DWORD PTR [esi+60]
	mov	DWORD PTR [ecx+108], 0
	mov	edx, DWORD PTR [esi+60]
	fstp	DWORD PTR [edx+104]

; 333  : 			this->m_data->BasePower.powered  = true;

	mov	eax, DWORD PTR [esi+60]
	mov	BYTE PTR [eax+112], 1

; 334  : 			this->m_data->BasePower.team     = -1;

	mov	ecx, DWORD PTR [esi+60]
	mov	DWORD PTR [ecx+100], -1
$LN64@Think:

; 335  : 		}
; 336  : 	}
; 337  : 
; 338  : 	// Vehicle Auto Repair Crate
; 339  : 	for (unsigned int i = 0; i < this->m_data->VehicleAutoRepair.Count(); i++)

	mov	edx, DWORD PTR [esi+60]
	xor	edi, edi
	cmp	DWORD PTR [edx+128], edi
	jbe	$LN5@Think
	npad	3
$LL7@Think:

; 340  : 	{
; 341  : 		SubFrameTime(this->m_data->VehicleAutoRepair[i].counter, true);

	mov	eax, DWORD PTR [esi+60]
	mov	ecx, DWORD PTR [eax+120]
	lea	edx, DWORD PTR [ecx+edi*8+4]
	push	1
	push	edx
	call	?SubFrameTime@@YAXAAM_N@Z		; SubFrameTime

; 342  : 		if (this->m_data->VehicleAutoRepair[i].counter < 0.0f)

	fldz
	mov	eax, DWORD PTR [esi+60]
	mov	ecx, DWORD PTR [eax+120]
	fcomp	DWORD PTR [ecx+edi*8+4]
	lea	ecx, DWORD PTR [ecx+edi*8]
	add	esp, 8
	fnstsw	ax
	test	ah, 65					; 00000041H
	jne	SHORT $LN6@Think

; 343  : 		{
; 344  : 			nc_SmartGameObj *veh = nc_GameObjManager::Find_SmartGameObj(this->m_data->VehicleAutoRepair[i].vehId);

	mov	edx, DWORD PTR [ecx]
	push	edx
	call	?Find_SmartGameObj@nc_GameObjManager@@SAPAVnc_SmartGameObj@@H@Z ; nc_GameObjManager::Find_SmartGameObj
	mov	ebp, eax
	add	esp, 4

; 345  : 			if (veh)

	test	ebp, ebp
	je	SHORT $LN3@Think

; 346  : 			{
; 347  : 				float healAmount = 2.0f;
; 348  : 
; 349  : 				// Only heal if player is in driver seat
; 350  : 				if (veh->As_VehicleGameObj()->SeatsList[0])

	mov	eax, DWORD PTR [ebp]
	mov	edx, DWORD PTR [eax+40]
	mov	ecx, ebp
	call	edx
	add	eax, 2476				; 000009acH
	mov	eax, DWORD PTR [eax+4]
	cmp	DWORD PTR [eax], 0
	je	SHORT $LN2@Think

; 351  : 					gzCommands->Apply_Damage(veh, healAmount * -1.0f, "Repair", NULL);

	fld	DWORD PTR __real@c0000000
	push	0
	push	OFFSET ??_C@_06KOKHNNIE@Repair?$AA@
	push	ecx
	mov	ecx, DWORD PTR ?gzCommands@@3PAUnc_ScriptCommands@@A ; gzCommands
	fstp	DWORD PTR [esp]
	mov	edx, DWORD PTR [ecx+616]
	push	ebp
	call	edx
	add	esp, 16					; 00000010H
$LN2@Think:

; 352  : 
; 353  : 				// Reset counter
; 354  : 				this->m_data->VehicleAutoRepair[i].counter = 1.0f;

	mov	eax, DWORD PTR [esi+60]
	fld1
	mov	ecx, DWORD PTR [eax+120]
	fstp	DWORD PTR [ecx+edi*8+4]

; 355  : 			}
; 356  : 			else

	jmp	SHORT $LN6@Think
$LN3@Think:

; 357  : 			{
; 358  : 				this->m_data->VehicleAutoRepair.Delete(i);

	mov	eax, DWORD PTR [esi+60]
	mov	edx, DWORD PTR [eax+116]
	lea	ecx, DWORD PTR [eax+116]
	mov	eax, DWORD PTR [edx+20]
	push	edi
	call	eax

; 359  : 				i--;

	sub	edi, 1
$LN6@Think:
	mov	ecx, DWORD PTR [esi+60]
	add	edi, 1
	cmp	edi, DWORD PTR [ecx+128]
	jb	$LL7@Think
$LN5@Think:
	pop	edi
	pop	esi
	pop	ebp

; 360  : 			}
; 361  : 		}
; 362  : 	}
; 363  : }

	pop	ecx
	ret	0
?Think@gzManagerCrateClass@@UAEXXZ ENDP			; gzManagerCrateClass::Think
_TEXT	ENDS
PUBLIC	?Player_Joined@gzManagerCrateClass@@UAEXAAVgzEventPlayerBase@@@Z ; gzManagerCrateClass::Player_Joined
EXTRN	?Get@nc_IntDataSafeClass@@QAEHXZ:PROC		; nc_IntDataSafeClass::Get
EXTRN	?GameObjList@nc_GameObjManager@@2PAV?$nc_SList@Vnc_BaseGameObj@@@@A:DWORD ; nc_GameObjManager::GameObjList
; Function compile flags: /Ogtpy
;	COMDAT ?Player_Joined@gzManagerCrateClass@@UAEXAAVgzEventPlayerBase@@@Z
_TEXT	SEGMENT
_c4List$59675 = -12					; size = 4
_this$ = -8						; size = 4
$T71457 = -4						; size = 4
_evt$ = 8						; size = 4
?Player_Joined@gzManagerCrateClass@@UAEXAAVgzEventPlayerBase@@@Z PROC ; gzManagerCrateClass::Player_Joined, COMDAT
; _this$ = ecx

; 365  : {

	sub	esp, 12					; 0000000cH

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

	mov	eax, DWORD PTR ?GameObjList@nc_GameObjManager@@2PAV?$nc_SList@Vnc_BaseGameObj@@@@A ; nc_GameObjManager::GameObjList
	mov	eax, DWORD PTR [eax+4]
	test	eax, eax
	mov	DWORD PTR _this$[esp+12], ecx
	mov	DWORD PTR _c4List$59675[esp+12], eax
	je	$LN13@Player_Joi
	push	ebx
	push	ebp
	push	esi
	push	edi
	npad	2
$LL42@Player_Joi:

; 367  : 	{
; 368  : 		// C4
; 369  : 		if (c4List->NodeData->definition->Get_Class_ID() == 0x3006)

	mov	esi, DWORD PTR _c4List$59675[esp+28]
	mov	ecx, DWORD PTR [esi+4]
	mov	ecx, DWORD PTR [ecx+1724]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+32]
	call	eax
	cmp	eax, 12294				; 00003006H
	jne	$LN14@Player_Joi

; 370  : 		{
; 371  : 			nc_C4GameObj *c4 = gzStatic_Cast(nc_C4GameObj, c4List->NodeData);

	mov	ebx, DWORD PTR [esi+4]

; 372  : 
; 373  : 			// Proximity
; 374  : 			if (c4->AmmoDef->AmmoType.Get() == 3)

	mov	ecx, DWORD PTR [ebx+1992]
	add	ecx, 140				; 0000008cH
	call	?Get@nc_IntDataSafeClass@@QAEHXZ	; nc_IntDataSafeClass::Get
	cmp	eax, 3
	jne	SHORT $LN14@Player_Joi

; 375  : 			{
; 376  : 				bool found = false;
; 377  : 				for (unsigned int i = 0; i < this->m_data->StealthMine.Count(); i++)

	mov	ecx, DWORD PTR _this$[esp+28]
	mov	eax, DWORD PTR [ecx+60]
	mov	esi, DWORD PTR [eax+92]
	xor	ebp, ebp
	test	esi, esi
	mov	DWORD PTR $T71457[esp+28], esi
	jbe	SHORT $LN43@Player_Joi
	mov	edi, DWORD PTR [eax+84]
	npad	1
$LL10@Player_Joi:

; 378  : 				{
; 379  : 					for (unsigned int j = 0; j < this->m_data->StealthMine[i]->activeList.Count(); j++)

	mov	ecx, DWORD PTR [edi]
	mov	edx, DWORD PTR [ecx+20]
	xor	eax, eax
	test	edx, edx
	jbe	SHORT $LN9@Player_Joi
	mov	esi, DWORD PTR [ebx+12]
	mov	ecx, DWORD PTR [ecx+12]
$LL7@Player_Joi:

; 380  : 					{
; 381  : 						if (c4->NetworkID == this->m_data->StealthMine[i]->activeList[j])

	cmp	esi, DWORD PTR [ecx]
	je	SHORT $LN37@Player_Joi
	add	eax, 1
	add	ecx, 4
	cmp	eax, edx
	jb	SHORT $LL7@Player_Joi

; 378  : 				{
; 379  : 					for (unsigned int j = 0; j < this->m_data->StealthMine[i]->activeList.Count(); j++)

	mov	esi, DWORD PTR $T71457[esp+28]
$LN9@Player_Joi:

; 375  : 			{
; 376  : 				bool found = false;
; 377  : 				for (unsigned int i = 0; i < this->m_data->StealthMine.Count(); i++)

	add	ebp, 1
	add	edi, 4
	cmp	ebp, esi
	jb	SHORT $LL10@Player_Joi
$LN43@Player_Joi:

; 392  : 					c4->Set_Object_Dirty_Bit(evt.GetPlayer()->PlayerId, nc_DB_CREATION, true);

	mov	edx, DWORD PTR _evt$[esp+24]
	mov	edx, DWORD PTR [edx+32]
	mov	eax, DWORD PTR [ebx+8]
	mov	edx, DWORD PTR [edx+1884]
	mov	eax, DWORD PTR [eax+52]
	push	1
	lea	ecx, DWORD PTR [ebx+8]
	push	15					; 0000000fH
	push	edx
	call	eax
$LN14@Player_Joi:
	mov	ecx, DWORD PTR _c4List$59675[esp+28]
	mov	eax, DWORD PTR [ecx]
	test	eax, eax
	mov	DWORD PTR _c4List$59675[esp+28], eax
	jne	$LL42@Player_Joi
	pop	edi
	pop	esi
	pop	ebp
	pop	ebx
$LN13@Player_Joi:

; 393  : 			}
; 394  : 		}
; 395  : 	}
; 396  : }

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

; 382  : 						{
; 383  : 							found = true;
; 384  : 							goto c4Proc;
; 385  : 						}
; 386  : 					}
; 387  : 				}
; 388  : c4Proc:
; 389  : 				if (found && c4->PlayerType != evt.GetPlayer()->PlayerType.Get())

	mov	esi, DWORD PTR _evt$[esp+24]
	mov	eax, DWORD PTR [esi+32]
	lea	ecx, DWORD PTR [eax+1900]
	call	?Get@nc_IntDataSafeClass@@QAEHXZ	; nc_IntDataSafeClass::Get
	cmp	DWORD PTR [ebx+1892], eax
	je	SHORT $LN43@Player_Joi

; 390  : 					c4->Set_Object_Dirty_Bit(evt.GetPlayer()->PlayerId, nc_DB_CREATION, false);

	mov	eax, DWORD PTR [esi+32]
	mov	edx, DWORD PTR [ebx+8]
	mov	eax, DWORD PTR [eax+1884]
	mov	edx, DWORD PTR [edx+52]
	push	0
	lea	ecx, DWORD PTR [ebx+8]
	push	15					; 0000000fH
	push	eax
	call	edx

; 391  : 				else

	jmp	SHORT $LN14@Player_Joi
?Player_Joined@gzManagerCrateClass@@UAEXAAVgzEventPlayerBase@@@Z ENDP ; gzManagerCrateClass::Player_Joined
_TEXT	ENDS
PUBLIC	??_C@_15GANGMFKL@?$AA?$CF?$AAs?$AA?$AA@		; `string'
PUBLIC	?Player_Chat@gzManagerCrateClass@@UAEXAAVgzEventPlayerChat@@@Z ; gzManagerCrateClass::Player_Chat
EXTRN	?Send_Object_Update@nc_cNetwork@@SAXPAVnc_NetworkObjectClass@@H@Z:PROC ; nc_cNetwork::Send_Object_Update
EXTRN	?Format@nc_WideStringClass@@QAAXPB_WZZ:PROC	; nc_WideStringClass::Format
EXTRN	?Create@nc_cScTextObj@@SAPAV1@XZ:PROC		; nc_cScTextObj::Create
EXTRN	?Find@gzPlayerManager@@SAPAVgzPlayer@@H@Z:PROC	; gzPlayerManager::Find
;	COMDAT ??_C@_15GANGMFKL@?$AA?$CF?$AAs?$AA?$AA@
; File d:\source code\gzgm\gzplayer.h
CONST	SEGMENT
??_C@_15GANGMFKL@?$AA?$CF?$AAs?$AA?$AA@ DB '%', 00H, 's', 00H, 00H, 00H ; `string'
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
CONST	ENDS
;	COMDAT ?Player_Chat@gzManagerCrateClass@@UAEXAAVgzEventPlayerChat@@@Z
_TEXT	SEGMENT
_this$ = -8						; size = 4
tv307 = -4						; size = 4
_gzData$59753 = 8					; size = 4
_evt$ = 8						; size = 4
?Player_Chat@gzManagerCrateClass@@UAEXAAVgzEventPlayerChat@@@Z PROC ; gzManagerCrateClass::Player_Chat, COMDAT
; _this$ = ecx

; 398  : {

	sub	esp, 8
	push	ebp
	push	esi

; 399  : 	if (evt.m_type == 1)

	mov	esi, DWORD PTR _evt$[esp+12]
	cmp	DWORD PTR [esi+40], 1
	mov	ebp, ecx
	mov	DWORD PTR _this$[esp+16], ebp
	jne	$LN7@Player_Cha

; 400  : 	{
; 401  : 		gzPlayer *gzData = gzPlayerManager::Find(evt.m_sender);

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

; 402  : 		if (gzData)

	test	eax, eax
	mov	DWORD PTR _gzData$59753[esp+12], eax
	je	$LN7@Player_Cha
	push	ebx
	push	edi

; 403  : 		{
; 404  : 			nc_cScTextObj *TextObj = nc_cScTextObj::Create();

	call	?Create@nc_cScTextObj@@SAPAV1@XZ	; nc_cScTextObj::Create

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

	mov	ecx, DWORD PTR [esi+40]
	mov	ebx, eax
	mov	DWORD PTR [ebx+1724], ecx

; 406  : 			TextObj->IsPopup = false;

	mov	BYTE PTR [ebx+1732], 0

; 407  : 			TextObj->SenderId = evt.m_sender;

	mov	edx, DWORD PTR [esi+52]
	mov	DWORD PTR [ebx+1716], edx

; 408  : 			TextObj->ReceiverId = evt.m_receiver;

	mov	eax, DWORD PTR [esi+56]
	mov	DWORD PTR [ebx+1720], eax

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

	mov	esi, DWORD PTR [esi+48]
	test	esi, esi
	je	SHORT $LN13@Player_Cha
	mov	eax, DWORD PTR [esi]
	jmp	SHORT $LN14@Player_Cha
$LN13@Player_Cha:
	xor	eax, eax
$LN14@Player_Cha:
	push	eax
	lea	ecx, DWORD PTR [ebx+1728]
	push	OFFSET ??_C@_15GANGMFKL@?$AA?$CF?$AAs?$AA?$AA@
	push	ecx
	call	?Format@nc_WideStringClass@@QAAXPB_WZZ	; nc_WideStringClass::Format

; 410  : 			for (unsigned int i = 0; i < this->m_data->Spy.Count(); i++)

	mov	eax, DWORD PTR [ebp+60]
	xor	edi, edi
	add	esp, 12					; 0000000cH
	cmp	DWORD PTR [eax+12], edi
	jbe	$LN4@Player_Cha
	npad	4
$LL6@Player_Cha:
	mov	edx, DWORD PTR [eax+4]
	lea	eax, DWORD PTR [edx+edi*4]

; 411  : 			{
; 412  : 				nc_SmartGameObj *soldier = nc_GameObjManager::Find_SmartGameObj(this->m_data->Spy[i]);

	mov	eax, DWORD PTR [eax]
	push	eax
	call	?Find_SmartGameObj@nc_GameObjManager@@SAPAVnc_SmartGameObj@@H@Z ; nc_GameObjManager::Find_SmartGameObj
	mov	esi, eax
	add	esp, 4

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

	test	esi, esi
	je	$LN3@Player_Cha
	mov	eax, DWORD PTR [esi+2400]
	test	eax, eax
	je	SHORT $LN3@Player_Cha

; 414  : 				{
; 415  : 					if (soldier->Player->PlayerType.Get() != gzData->GetPlayerData()->PlayerType.Get())

	mov	ecx, DWORD PTR _gzData$59753[esp+20]
	mov	ebp, DWORD PTR [ecx+72]
	lea	ecx, DWORD PTR [eax+1900]
	call	?Get@nc_IntDataSafeClass@@QAEHXZ	; nc_IntDataSafeClass::Get
	lea	ecx, DWORD PTR [ebp+1900]
	mov	DWORD PTR tv307[esp+24], eax
	call	?Get@nc_IntDataSafeClass@@QAEHXZ	; nc_IntDataSafeClass::Get
	mov	ecx, DWORD PTR tv307[esp+24]
	cmp	ecx, eax
	je	SHORT $LN25@Player_Cha

; 416  : 					{
; 417  : 						TextObj->Set_Object_Dirty_Bit(soldier->Player->PlayerId, nc_DB_CREATION, true);

	mov	eax, DWORD PTR [esi+2400]
	mov	ecx, DWORD PTR [eax+1884]
	mov	edx, DWORD PTR [ebx]
	mov	edx, DWORD PTR [edx+52]
	push	1
	push	15					; 0000000fH
	push	ecx
	mov	ecx, ebx
	call	edx

; 418  : 						nc_cNetwork::Send_Object_Update(TextObj, soldier->Player->PlayerId);

	mov	eax, DWORD PTR [esi+2400]
	mov	ecx, DWORD PTR [eax+1884]
	push	ecx
	push	ebx
	call	?Send_Object_Update@nc_cNetwork@@SAXPAVnc_NetworkObjectClass@@H@Z ; nc_cNetwork::Send_Object_Update
	add	esp, 8
$LN25@Player_Cha:

; 419  : 					}
; 420  : 				}
; 421  : 				else

	mov	ebp, DWORD PTR _this$[esp+24]
$LN5@Player_Cha:

; 410  : 			for (unsigned int i = 0; i < this->m_data->Spy.Count(); i++)

	mov	eax, DWORD PTR [ebp+60]
	add	edi, 1
	cmp	edi, DWORD PTR [eax+12]
	jb	$LL6@Player_Cha
$LN4@Player_Cha:

; 425  : 				}
; 426  : 			}
; 427  : 			TextObj->Set_Delete_Pending();

	mov	edx, DWORD PTR [ebx]
	mov	eax, DWORD PTR [edx+44]
	mov	ecx, ebx
	call	eax
	pop	edi
	pop	ebx
$LN7@Player_Cha:
	pop	esi
	pop	ebp

; 428  : 		}
; 429  : 	}
; 430  : }

	add	esp, 8
	ret	4
$LN3@Player_Cha:

; 422  : 				{
; 423  : 					this->m_data->Spy.Delete(i);

	mov	ecx, DWORD PTR [ebp+60]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+20]
	push	edi
	call	eax

; 424  : 					i--;

	sub	edi, 1
	jmp	SHORT $LN5@Player_Cha
?Player_Chat@gzManagerCrateClass@@UAEXAAVgzEventPlayerChat@@@Z ENDP ; gzManagerCrateClass::Player_Chat
_TEXT	ENDS
PUBLIC	?Object_Damaged@gzManagerCrateClass@@UAEXAAVgzEventObjectDamage@@@Z ; gzManagerCrateClass::Object_Damaged
; Function compile flags: /Ogtpy
;	COMDAT ?Object_Damaged@gzManagerCrateClass@@UAEXAAVgzEventObjectDamage@@@Z
_TEXT	SEGMENT
_evt$ = 8						; size = 4
?Object_Damaged@gzManagerCrateClass@@UAEXAAVgzEventObjectDamage@@@Z PROC ; gzManagerCrateClass::Object_Damaged, COMDAT
; _this$ = ecx

; 451  : 	if (evt.m_damage > 0.0f)

	fldz
	push	esi
	push	edi
	mov	edi, DWORD PTR _evt$[esp+4]
	fcomp	DWORD PTR [edi+40]
	mov	esi, ecx
	fnstsw	ax
	test	ah, 5
	jp	SHORT $LN2@Object_Dam

; 452  : 	{
; 453  : 		// ChemSuit crate
; 454  : 		if (!strstr(evt.m_defender->definition->Get_Name(), "CnC_Visceroid"))

	mov	eax, DWORD PTR [edi+36]
	mov	ecx, DWORD PTR [eax+1724]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+48]
	call	eax
	push	OFFSET ??_C@_0O@GJIAFLPK@CnC_Visceroid?$AA@
	push	eax
	call	_strstr
	add	esp, 8
	test	eax, eax
	jne	SHORT $LN2@Object_Dam

; 455  : 		{
; 456  : 			switch (evt.m_warhead)

	mov	eax, DWORD PTR [edi+44]
	add	eax, -9					; fffffff7H
	cmp	eax, 2
	ja	SHORT $LN2@Object_Dam

; 457  : 			{
; 458  : 				case 9:
; 459  : 				case 10:
; 460  : 				case 11:
; 461  : 					for (unsigned int i = 0; i < this->m_data->ChemSuit.Count(); i++)

	mov	ecx, DWORD PTR [esi+60]
	mov	edx, DWORD PTR [ecx+60]
	xor	eax, eax
	test	edx, edx
	jbe	SHORT $LN2@Object_Dam
	mov	esi, DWORD PTR [edi+36]
	mov	esi, DWORD PTR [esi+12]
	mov	ecx, DWORD PTR [ecx+52]
$LL4@Object_Dam:

; 462  : 					{
; 463  : 						if (this->m_data->ChemSuit[i] == evt.m_defender->NetworkID)

	cmp	DWORD PTR [ecx], esi
	je	SHORT $LN23@Object_Dam
	add	eax, 1
	add	ecx, 4
	cmp	eax, edx
	jb	SHORT $LL4@Object_Dam
	pop	edi
	pop	esi

; 466  : 							return;
; 467  : 						}
; 468  : 					}
; 469  : 			}
; 470  : 		}
; 471  : 	}
; 472  : }

	ret	4
$LN23@Object_Dam:

; 464  : 						{
; 465  : 							evt.Skip();

	mov	BYTE PTR [edi+48], 0
$LN2@Object_Dam:
	pop	edi
	pop	esi

; 466  : 							return;
; 467  : 						}
; 468  : 					}
; 469  : 			}
; 470  : 		}
; 471  : 	}
; 472  : }

	ret	4
?Object_Damaged@gzManagerCrateClass@@UAEXAAVgzEventObjectDamage@@@Z ENDP ; gzManagerCrateClass::Object_Damaged
_TEXT	ENDS
PUBLIC	__real@3ca3d70a
PUBLIC	__real@42480000
PUBLIC	??_C@_09ELEIFAID@msg?5BOOM?$CB?$AA@		; `string'
PUBLIC	__real@3d23d70a
PUBLIC	??_C@_0BB@HBAICPOK@Laser_NoBuilding?$AA@	; `string'
PUBLIC	__real@41c80000
PUBLIC	??_C@_0BF@GNBAIPLI@Explosion_NukeBeacon?$AA@	; `string'
PUBLIC	??_C@_0BN@CJLAAJHK@Beacon_Nuke_Strike_Anim_Post?$AA@ ; `string'
PUBLIC	??_C@_0BK@OCFPJECF@Explosion_IonCannonBeacon?$AA@ ; `string'
PUBLIC	??_C@_0BM@HFFMNHJD@Beacon_Ion_Cannon_Anim_Post?$AA@ ; `string'
PUBLIC	?Object_Killed@gzManagerCrateClass@@UAEXAAVgzEventObjectKill@@@Z ; gzManagerCrateClass::Object_Killed
EXTRN	?SmartGameObjList@nc_GameObjManager@@2PAV?$nc_SList@Vnc_SmartGameObj@@@@A:DWORD ; nc_GameObjManager::SmartGameObjList
EXTRN	?Server_Explode@nc_ExplosionManager@@SAXHABUnc_Vector3@@HPAVnc_DamageableGameObj@@@Z:PROC ; nc_ExplosionManager::Server_Explode
EXTRN	?Find_Named_Definition@nc_DefinitionMgrClass@@SAPAVnc_DefinitionClass@@PBD_N@Z:PROC ; nc_DefinitionMgrClass::Find_Named_Definition
;	COMDAT __real@3ca3d70a
; File c:\program files\microsoft visual studio 8\vc\include\math.h
CONST	SEGMENT
__real@3ca3d70a DD 03ca3d70ar			; 0.02
CONST	ENDS
;	COMDAT __real@42480000
CONST	SEGMENT
__real@42480000 DD 042480000r			; 50
CONST	ENDS
;	COMDAT ??_C@_09ELEIFAID@msg?5BOOM?$CB?$AA@
CONST	SEGMENT
??_C@_09ELEIFAID@msg?5BOOM?$CB?$AA@ DB 'msg BOOM!', 00H	; `string'
CONST	ENDS
;	COMDAT __real@3d23d70a
CONST	SEGMENT
__real@3d23d70a DD 03d23d70ar			; 0.04
CONST	ENDS
;	COMDAT ??_C@_0BB@HBAICPOK@Laser_NoBuilding?$AA@
CONST	SEGMENT
??_C@_0BB@HBAICPOK@Laser_NoBuilding?$AA@ DB 'Laser_NoBuilding', 00H ; `string'
CONST	ENDS
;	COMDAT __real@41c80000
CONST	SEGMENT
__real@41c80000 DD 041c80000r			; 25
CONST	ENDS
;	COMDAT ??_C@_0BF@GNBAIPLI@Explosion_NukeBeacon?$AA@
CONST	SEGMENT
??_C@_0BF@GNBAIPLI@Explosion_NukeBeacon?$AA@ DB 'Explosion_NukeBeacon', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BN@CJLAAJHK@Beacon_Nuke_Strike_Anim_Post?$AA@
CONST	SEGMENT
??_C@_0BN@CJLAAJHK@Beacon_Nuke_Strike_Anim_Post?$AA@ DB 'Beacon_Nuke_Stri'
	DB	'ke_Anim_Post', 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_0BK@OCFPJECF@Explosion_IonCannonBeacon?$AA@
CONST	SEGMENT
??_C@_0BK@OCFPJECF@Explosion_IonCannonBeacon?$AA@ DB 'Explosion_IonCannon'
	DB	'Beacon', 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_0BM@HFFMNHJD@Beacon_Ion_Cannon_Anim_Post?$AA@
CONST	SEGMENT
??_C@_0BM@HFFMNHJD@Beacon_Ion_Cannon_Anim_Post?$AA@ DB 'Beacon_Ion_Cannon'
	DB	'_Anim_Post', 00H				; `string'
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
CONST	ENDS
;	COMDAT ?Object_Killed@gzManagerCrateClass@@UAEXAAVgzEventObjectKill@@@Z
_TEXT	SEGMENT
_damage$59803 = -28					; size = 4
_explodePos$59882 = -24					; size = 12
_explodePos$59802 = -24					; size = 12
_objPos$59896 = -12					; size = 12
_objPos$59872 = -12					; size = 12
_damage$59883 = 8					; size = 4
_evt$ = 8						; size = 4
?Object_Killed@gzManagerCrateClass@@UAEXAAVgzEventObjectKill@@@Z PROC ; gzManagerCrateClass::Object_Killed, COMDAT
; _this$ = ecx

; 474  : {

	sub	esp, 28					; 0000001cH
	push	ebx
	push	ebp
	mov	ebx, ecx

; 475  : 	// Explosive Suit Crate
; 476  : 	for (unsigned int i = 0; i < this->m_data->ExplosiveSuit.Count(); i++)

	mov	ecx, DWORD PTR [ebx+60]
	mov	eax, DWORD PTR [ecx+44]
	push	esi
	mov	esi, DWORD PTR _evt$[esp+36]
	push	edi
	xor	edi, edi
	test	eax, eax
	jbe	$LN20@Object_Kil
	mov	edx, DWORD PTR [esi+36]
	mov	edx, DWORD PTR [edx+12]
	mov	ecx, DWORD PTR [ecx+36]
$LL22@Object_Kil:

; 477  : 	{
; 478  : 		if (this->m_data->ExplosiveSuit[i] == evt.m_defender->NetworkID)

	cmp	DWORD PTR [ecx], edx
	je	SHORT $LN81@Object_Kil
	add	edi, 1
	add	ecx, 4
	cmp	edi, eax
	jb	SHORT $LL22@Object_Kil

; 520  : 	{
; 521  : 		if (this->m_data->DemoTruck[i] == evt.m_defender->NetworkID)

	jmp	$LN20@Object_Kil
$LN81@Object_Kil:

; 479  : 		{
; 480  : 			nc_Vector3 explodePos;
; 481  : 			evt.m_defender->Get_Position(&explodePos);

	mov	ecx, DWORD PTR [esi+36]
	mov	eax, DWORD PTR [ecx]
	mov	eax, DWORD PTR [eax+56]
	lea	edx, DWORD PTR _explodePos$59802[esp+44]
	push	edx
	call	eax

; 482  : 			int damage = gzRandom.Get_Int(250, 1000);

	mov	esi, DWORD PTR ?gzRandom@@3VaRandom@@A
	mov	ecx, esi
	add	esi, 1
	cmp	ecx, 64					; 00000040H
	jle	SHORT $LN33@Object_Kil
	mov	esi, 1
$LN33@Object_Kil:
	mov	ecx, DWORD PTR ?gzRandom@@3VaRandom@@A+4
	imul	ecx, 22695475				; 015a4e33H
	add	ecx, esi
	xor	edx, edx
	mov	eax, ecx
	shr	eax, 16					; 00000010H
	mov	ebp, 751				; 000002efH
	div	ebp
	add	edx, 250				; 000000faH
	mov	DWORD PTR _damage$59803[esp+44], edx

; 483  : 
; 484  : 			// Explosion effects
; 485  : 			const char *explodeAnim = NULL, *animPreset = NULL;
; 486  : 			if (gzRandom.Get_Int(1, 2) == 1)

	mov	edx, esi
	add	esi, 1
	cmp	edx, 64					; 00000040H
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A, esi
	jle	SHORT $LN40@Object_Kil
	mov	esi, 1
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A, esi
$LN40@Object_Kil:
	imul	ecx, 22695475				; 015a4e33H
	add	ecx, esi
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A+4, ecx
	shr	ecx, 16					; 00000010H
	and	ecx, 1
	add	ecx, 1
	cmp	ecx, 1
	jne	SHORT $LN18@Object_Kil

; 487  : 			{
; 488  : 				animPreset	= "Beacon_Ion_Cannon_Anim_Post";

	mov	eax, OFFSET ??_C@_0BM@HFFMNHJD@Beacon_Ion_Cannon_Anim_Post?$AA@

; 489  : 				explodeAnim	= "Explosion_IonCannonBeacon";

	mov	esi, OFFSET ??_C@_0BK@OCFPJECF@Explosion_IonCannonBeacon?$AA@

; 490  : 			}
; 491  : 			else

	jmp	SHORT $LN88@Object_Kil
$LN18@Object_Kil:

; 492  : 			{
; 493  : 				animPreset	= "Beacon_Nuke_Strike_Anim_Post";

	mov	eax, OFFSET ??_C@_0BN@CJLAAJHK@Beacon_Nuke_Strike_Anim_Post?$AA@

; 494  : 				explodeAnim	= "Explosion_NukeBeacon";

	mov	esi, OFFSET ??_C@_0BF@GNBAIPLI@Explosion_NukeBeacon?$AA@
$LN88@Object_Kil:

; 495  : 			}
; 496  : 			if (explodeAnim && animPreset)
; 497  : 			{
; 498  : 				nc_PhysicalGameObj *anim = nc_ObjectLibraryManager::Create_Object(animPreset)->As_PhysicalGameObj();

	push	eax
	call	?Create_Object@nc_ObjectLibraryManager@@SAPAVnc_ScriptableGameObj@@PBD@Z ; nc_ObjectLibraryManager::Create_Object
	mov	edx, DWORD PTR [eax]
	mov	ecx, eax
	mov	eax, DWORD PTR [edx+36]
	add	esp, 4
	call	eax

; 499  : 				anim->Set_Position(explodePos);

	lea	ecx, DWORD PTR _explodePos$59802[esp+44]
	push	ecx
	mov	ecx, eax
	call	?Set_Position@nc_PhysicalGameObj@@QAEXABUnc_Vector3@@@Z ; nc_PhysicalGameObj::Set_Position

; 500  : 				nc_ExplosionManager::Server_Explode(nc_DefinitionMgrClass::Find_Named_Definition(explodeAnim, true)->Get_ID(), explodePos, 0, NULL);

	push	1
	push	esi
	call	?Find_Named_Definition@nc_DefinitionMgrClass@@SAPAVnc_DefinitionClass@@PBD_N@Z ; nc_DefinitionMgrClass::Find_Named_Definition
	add	esp, 8
	push	0
	push	0
	lea	edx, DWORD PTR _explodePos$59802[esp+52]
	push	edx
	mov	edx, DWORD PTR [eax]
	mov	ecx, eax
	mov	eax, DWORD PTR [edx+36]
	call	eax
	push	eax
	call	?Server_Explode@nc_ExplosionManager@@SAXHABUnc_Vector3@@HPAVnc_DamageableGameObj@@@Z ; nc_ExplosionManager::Server_Explode

; 501  : 			}
; 502  : 
; 503  : 			const float affectDistance = 25.0f;
; 504  : 			for (nc_GenericSLNode<nc_SmartGameObj> *objList = nc_GameObjManager::SmartGameObjList->HeadNode; objList != NULL; objList = objList->NodeNext)

	mov	ecx, DWORD PTR ?SmartGameObjList@nc_GameObjManager@@2PAV?$nc_SList@Vnc_SmartGameObj@@@@A ; nc_GameObjManager::SmartGameObjList
	mov	esi, DWORD PTR [ecx+4]
	add	esp, 16					; 00000010H
	test	esi, esi
	je	SHORT $LN13@Object_Kil
$LL15@Object_Kil:

; 505  : 			{
; 506  : 				nc_Vector3 objPos;
; 507  : 				objList->NodeData->As_PhysicalGameObj()->Get_Position(&objPos);

	mov	ecx, DWORD PTR [esi+4]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+36]
	call	eax
	mov	edx, DWORD PTR [eax]
	mov	edx, DWORD PTR [edx+56]
	lea	ecx, DWORD PTR _objPos$59872[esp+44]
	push	ecx
	mov	ecx, eax
	call	edx

; 508  : 				float Distance = abs(objPos.X - explodePos.X) + abs(objPos.Y - explodePos.Y);

	fld	DWORD PTR _objPos$59872[esp+44]
	fsub	DWORD PTR _explodePos$59802[esp+44]
	fabs
	fld	DWORD PTR _objPos$59872[esp+48]
	fsub	DWORD PTR _explodePos$59802[esp+48]
	fabs
	faddp	ST(1), ST(0)

; 509  : 				if (Distance <= affectDistance)

	fld	DWORD PTR __real@41c80000
	fcom	ST(1)
	fnstsw	ax
	test	ah, 1
	jne	SHORT $LN92@Object_Kil

; 510  : 					gzCommands->Apply_Damage(objList->NodeData, damage * ((affectDistance - Distance) / affectDistance), "Laser_NoBuilding", NULL);

	mov	eax, DWORD PTR [esi+4]
	fsubrp	ST(1), ST(0)
	push	0
	push	OFFSET ??_C@_0BB@HBAICPOK@Laser_NoBuilding?$AA@
	fmul	DWORD PTR __real@3d23d70a
	push	ecx
	mov	ecx, DWORD PTR ?gzCommands@@3PAUnc_ScriptCommands@@A ; gzCommands
	mov	edx, DWORD PTR [ecx+616]
	fimul	DWORD PTR _damage$59803[esp+56]
	fstp	DWORD PTR [esp]
	push	eax
	call	edx
	add	esp, 16					; 00000010H
	jmp	SHORT $LN14@Object_Kil
$LN92@Object_Kil:
	fstp	ST(1)
	fstp	ST(0)
$LN14@Object_Kil:
	mov	esi, DWORD PTR [esi]
	test	esi, esi
	jne	SHORT $LL15@Object_Kil
$LN13@Object_Kil:

; 511  : 			}
; 512  : 			gzConsole::In("msg BOOM!");

	push	OFFSET ??_C@_09ELEIFAID@msg?5BOOM?$CB?$AA@
	call	?In@gzConsole@@SAXPBDZZ			; gzConsole::In

; 513  : 			this->m_data->ExplosiveSuit.Delete(i);

	mov	eax, DWORD PTR [ebx+60]
	lea	ecx, DWORD PTR [eax+32]
	mov	eax, DWORD PTR [ecx]
	mov	edx, DWORD PTR [eax+20]
	add	esp, 4
	push	edi
	call	edx
	mov	esi, DWORD PTR _evt$[esp+40]
$LN20@Object_Kil:

; 514  : 			break;
; 515  : 		}
; 516  : 	}
; 517  : 
; 518  : 	// Demo Truck Crate
; 519  : 	for (unsigned int i = 0; i < this->m_data->DemoTruck.Count(); i++)

	mov	eax, DWORD PTR [ebx+60]
	mov	ecx, DWORD PTR [eax+144]
	xor	edi, edi
	test	ecx, ecx
	jbe	$LN9@Object_Kil
	mov	edx, DWORD PTR [esi+36]
	mov	edx, DWORD PTR [edx+12]
	mov	eax, DWORD PTR [eax+136]
$LL11@Object_Kil:

; 520  : 	{
; 521  : 		if (this->m_data->DemoTruck[i] == evt.m_defender->NetworkID)

	cmp	DWORD PTR [eax], edx
	je	SHORT $LN82@Object_Kil
	add	edi, 1
	add	eax, 4
	cmp	edi, ecx
	jb	SHORT $LL11@Object_Kil
	pop	edi
	pop	esi
	pop	ebp
	pop	ebx

; 557  : 			break;
; 558  : 		}
; 559  : 	}
; 560  : }

	add	esp, 28					; 0000001cH
	ret	4
$LN82@Object_Kil:

; 522  : 		{
; 523  : 			nc_Vector3 explodePos;
; 524  : 			evt.m_defender->Get_Position(&explodePos);

	mov	ecx, DWORD PTR [esi+36]
	mov	eax, DWORD PTR [ecx]
	mov	eax, DWORD PTR [eax+56]
	lea	edx, DWORD PTR _explodePos$59882[esp+44]
	push	edx
	call	eax

; 525  : 			int damage = gzRandom.Get_Int(500, 2000);

	mov	esi, DWORD PTR ?gzRandom@@3VaRandom@@A
	mov	ecx, esi
	add	esi, 1
	cmp	ecx, 64					; 00000040H
	jle	SHORT $LN59@Object_Kil
	mov	esi, 1
$LN59@Object_Kil:
	mov	ecx, DWORD PTR ?gzRandom@@3VaRandom@@A+4
	imul	ecx, 22695475				; 015a4e33H
	add	ecx, esi
	xor	edx, edx
	mov	eax, ecx
	shr	eax, 16					; 00000010H
	mov	ebp, 1501				; 000005ddH
	div	ebp
	add	edx, 500				; 000001f4H
	mov	DWORD PTR _damage$59883[esp+40], edx

; 526  : 
; 527  : 			// Explosion effects
; 528  : 			const char *explodeAnim = NULL, *animPreset = NULL;
; 529  : 			if (gzRandom.Get_Int(1, 2) == 1)

	mov	edx, esi
	add	esi, 1
	cmp	edx, 64					; 00000040H
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A, esi
	jle	SHORT $LN66@Object_Kil
	mov	esi, 1
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A, esi
$LN66@Object_Kil:
	imul	ecx, 22695475				; 015a4e33H
	add	ecx, esi
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A+4, ecx
	shr	ecx, 16					; 00000010H
	and	ecx, 1
	add	ecx, 1
	cmp	ecx, 1
	jne	SHORT $LN7@Object_Kil

; 530  : 			{
; 531  : 				animPreset	= "Beacon_Ion_Cannon_Anim_Post";

	mov	eax, OFFSET ??_C@_0BM@HFFMNHJD@Beacon_Ion_Cannon_Anim_Post?$AA@

; 532  : 				explodeAnim	= "Explosion_IonCannonBeacon";

	mov	esi, OFFSET ??_C@_0BK@OCFPJECF@Explosion_IonCannonBeacon?$AA@

; 533  : 			}
; 534  : 			else

	jmp	SHORT $LN90@Object_Kil
$LN7@Object_Kil:

; 535  : 			{
; 536  : 				animPreset	= "Beacon_Nuke_Strike_Anim_Post";

	mov	eax, OFFSET ??_C@_0BN@CJLAAJHK@Beacon_Nuke_Strike_Anim_Post?$AA@

; 537  : 				explodeAnim	= "Explosion_NukeBeacon";

	mov	esi, OFFSET ??_C@_0BF@GNBAIPLI@Explosion_NukeBeacon?$AA@
$LN90@Object_Kil:

; 538  : 			}
; 539  : 			if (explodeAnim && animPreset)
; 540  : 			{
; 541  : 				nc_PhysicalGameObj *anim = nc_ObjectLibraryManager::Create_Object(animPreset)->As_PhysicalGameObj();

	push	eax
	call	?Create_Object@nc_ObjectLibraryManager@@SAPAVnc_ScriptableGameObj@@PBD@Z ; nc_ObjectLibraryManager::Create_Object
	mov	edx, DWORD PTR [eax]
	mov	ecx, eax
	mov	eax, DWORD PTR [edx+36]
	add	esp, 4
	call	eax

; 542  : 				anim->Set_Position(explodePos);

	lea	ecx, DWORD PTR _explodePos$59882[esp+44]
	push	ecx
	mov	ecx, eax
	call	?Set_Position@nc_PhysicalGameObj@@QAEXABUnc_Vector3@@@Z ; nc_PhysicalGameObj::Set_Position

; 543  : 				nc_ExplosionManager::Server_Explode(nc_DefinitionMgrClass::Find_Named_Definition(explodeAnim, true)->Get_ID(), explodePos, 0, NULL);

	push	1
	push	esi
	call	?Find_Named_Definition@nc_DefinitionMgrClass@@SAPAVnc_DefinitionClass@@PBD_N@Z ; nc_DefinitionMgrClass::Find_Named_Definition
	add	esp, 8
	push	0
	push	0
	lea	edx, DWORD PTR _explodePos$59882[esp+52]
	push	edx
	mov	edx, DWORD PTR [eax]
	mov	ecx, eax
	mov	eax, DWORD PTR [edx+36]
	call	eax
	push	eax
	call	?Server_Explode@nc_ExplosionManager@@SAXHABUnc_Vector3@@HPAVnc_DamageableGameObj@@@Z ; nc_ExplosionManager::Server_Explode

; 544  : 			}
; 545  : 
; 546  : 			const float affectDistance = 50.0f;
; 547  : 			for (nc_GenericSLNode<nc_SmartGameObj> *objList = nc_GameObjManager::SmartGameObjList->HeadNode; objList != NULL; objList = objList->NodeNext)

	mov	ecx, DWORD PTR ?SmartGameObjList@nc_GameObjManager@@2PAV?$nc_SList@Vnc_SmartGameObj@@@@A ; nc_GameObjManager::SmartGameObjList
	mov	esi, DWORD PTR [ecx+4]
	add	esp, 16					; 00000010H
	test	esi, esi
	je	SHORT $LN2@Object_Kil
$LL4@Object_Kil:

; 548  : 			{
; 549  : 				nc_Vector3 objPos;
; 550  : 				objList->NodeData->As_PhysicalGameObj()->Get_Position(&objPos);

	mov	ecx, DWORD PTR [esi+4]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+36]
	call	eax
	mov	edx, DWORD PTR [eax]
	mov	edx, DWORD PTR [edx+56]
	lea	ecx, DWORD PTR _objPos$59896[esp+44]
	push	ecx
	mov	ecx, eax
	call	edx

; 551  : 				float Distance = abs(objPos.X - explodePos.X) + abs(objPos.Y - explodePos.Y);

	fld	DWORD PTR _objPos$59896[esp+44]
	fsub	DWORD PTR _explodePos$59882[esp+44]
	fabs
	fld	DWORD PTR _objPos$59896[esp+48]
	fsub	DWORD PTR _explodePos$59882[esp+48]
	fabs
	faddp	ST(1), ST(0)

; 552  : 				if (Distance <= affectDistance)

	fld	DWORD PTR __real@42480000
	fcom	ST(1)
	fnstsw	ax
	test	ah, 1
	jne	SHORT $LN95@Object_Kil

; 553  : 					gzCommands->Apply_Damage(objList->NodeData, damage * ((affectDistance - Distance) / affectDistance), "Laser_NoBuilding", NULL);

	mov	eax, DWORD PTR [esi+4]
	fsubrp	ST(1), ST(0)
	push	0
	push	OFFSET ??_C@_0BB@HBAICPOK@Laser_NoBuilding?$AA@
	fmul	DWORD PTR __real@3ca3d70a
	push	ecx
	mov	ecx, DWORD PTR ?gzCommands@@3PAUnc_ScriptCommands@@A ; gzCommands
	mov	edx, DWORD PTR [ecx+616]
	fimul	DWORD PTR _damage$59883[esp+52]
	fstp	DWORD PTR [esp]
	push	eax
	call	edx
	add	esp, 16					; 00000010H
	jmp	SHORT $LN3@Object_Kil
$LN95@Object_Kil:
	fstp	ST(1)
	fstp	ST(0)
$LN3@Object_Kil:
	mov	esi, DWORD PTR [esi]
	test	esi, esi
	jne	SHORT $LL4@Object_Kil
$LN2@Object_Kil:

; 554  : 			}
; 555  : 			gzConsole::In("msg BOOM!");

	push	OFFSET ??_C@_09ELEIFAID@msg?5BOOM?$CB?$AA@
	call	?In@gzConsole@@SAXPBDZZ			; gzConsole::In

; 556  : 			this->m_data->DemoTruck.Delete(i);

	mov	eax, DWORD PTR [ebx+60]
	lea	ecx, DWORD PTR [eax+132]
	mov	eax, DWORD PTR [ecx]
	mov	edx, DWORD PTR [eax+20]
	add	esp, 4
	push	edi
	call	edx
$LN9@Object_Kil:
	pop	edi
	pop	esi
	pop	ebp
	pop	ebx

; 557  : 			break;
; 558  : 		}
; 559  : 	}
; 560  : }

	add	esp, 28					; 0000001cH
	ret	4
?Object_Killed@gzManagerCrateClass@@UAEXAAVgzEventObjectKill@@@Z ENDP ; gzManagerCrateClass::Object_Killed
_TEXT	ENDS
PUBLIC	??_C@_0FP@JLBEOFLJ@?$FLCrate?$FN?3?5You?5were?5discovered?5by?5@ ; `string'
PUBLIC	__real@47c34f80
PUBLIC	?Object_Transition@gzManagerCrateClass@@UAEXAAVgzEventObjectTransition@@@Z ; gzManagerCrateClass::Object_Transition
EXTRN	?PagePlayer@@YAXHPBDZZ:PROC			; PagePlayer
;	COMDAT ??_C@_0FP@JLBEOFLJ@?$FLCrate?$FN?3?5You?5were?5discovered?5by?5@
; File d:\source code\gzgm\gzeventbase.h
CONST	SEGMENT
??_C@_0FP@JLBEOFLJ@?$FLCrate?$FN?3?5You?5were?5discovered?5by?5@ DB '[Cra'
	DB	'te]: You were discovered by Anti-Enemy system installed on th'
	DB	'e vehicle you tried to enter.', 00H		; `string'
CONST	ENDS
;	COMDAT __real@47c34f80
CONST	SEGMENT
__real@47c34f80 DD 047c34f80r			; 99999
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
CONST	ENDS
;	COMDAT ?Object_Transition@gzManagerCrateClass@@UAEXAAVgzEventObjectTransition@@@Z
_TEXT	SEGMENT
_evt$ = 8						; size = 4
?Object_Transition@gzManagerCrateClass@@UAEXAAVgzEventObjectTransition@@@Z PROC ; gzManagerCrateClass::Object_Transition, COMDAT
; _this$ = ecx

; 562  : {

	push	esi

; 563  : 	if (evt.m_instance->Target.Reference && evt.m_soldier->Player)

	mov	esi, DWORD PTR _evt$[esp]
	mov	eax, DWORD PTR [esi+36]
	cmp	DWORD PTR [eax+116], 0
	push	edi
	mov	edi, ecx
	je	$LN3@Object_Tra
	mov	eax, DWORD PTR [esi+32]
	cmp	DWORD PTR [eax+2400], 0
	je	$LN3@Object_Tra

; 564  : 	{
; 565  : 		// Visceroid crate
; 566  : 		if (strstr(evt.m_soldier->definition->Get_Name(), "CnC_Visceroid"))

	mov	ecx, DWORD PTR [eax+1724]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+48]
	call	eax
	push	OFFSET ??_C@_0O@GJIAFLPK@CnC_Visceroid?$AA@
	push	eax
	call	_strstr
	add	esp, 8
	test	eax, eax
	je	SHORT $LN6@Object_Tra
	pop	edi

; 567  : 		{
; 568  : 			evt.Skip();

	mov	BYTE PTR [esi+40], 0
	pop	esi

; 583  : 					return;
; 584  : 				}
; 585  : 			}
; 586  : 		}
; 587  : 	}
; 588  : }

	ret	4
$LN6@Object_Tra:

; 569  : 			return;
; 570  : 		}
; 571  : 
; 572  : 		// Vehicle Anti-Enemy crate
; 573  : 		for (unsigned int i = 0; i < this->m_data->VehicleAntiEnemy.Count(); i++)

	mov	ecx, DWORD PTR [edi+60]
	mov	edx, DWORD PTR [ecx+160]
	xor	eax, eax
	test	edx, edx
	jbe	$LN3@Object_Tra
	mov	edi, DWORD PTR [esi+36]
	mov	edi, DWORD PTR [edi+116]
	mov	edi, DWORD PTR [edi+4]
	mov	ecx, DWORD PTR [ecx+152]
	push	ebx
	push	ebp
$LL5@Object_Tra:

; 574  : 		{
; 575  : 			if (this->m_data->VehicleAntiEnemy[i] == evt.m_instance->Target.Reference->obj->NetworkID)

	mov	ebx, DWORD PTR [edi+12]
	cmp	DWORD PTR [ecx], ebx
	jne	SHORT $LN4@Object_Tra

; 576  : 			{
; 577  : 				nc_VehicleGameObjDef *vehDef = gzStatic_Cast(nc_VehicleGameObjDef, evt.m_instance->Target.Reference->obj->definition);
; 578  : 				if (evt.m_soldier->PlayerType != vehDef->PlayerType)

	mov	ebp, DWORD PTR [esi+32]
	mov	ebx, DWORD PTR [edi+1724]
	mov	ebp, DWORD PTR [ebp+1892]
	cmp	ebp, DWORD PTR [ebx+128]
	jne	SHORT $LN25@Object_Tra
$LN4@Object_Tra:

; 569  : 			return;
; 570  : 		}
; 571  : 
; 572  : 		// Vehicle Anti-Enemy crate
; 573  : 		for (unsigned int i = 0; i < this->m_data->VehicleAntiEnemy.Count(); i++)

	add	eax, 1
	add	ecx, 4
	cmp	eax, edx
	jb	SHORT $LL5@Object_Tra
	pop	ebp
	pop	ebx
	pop	edi
	pop	esi

; 583  : 					return;
; 584  : 				}
; 585  : 			}
; 586  : 		}
; 587  : 	}
; 588  : }

	ret	4
$LN25@Object_Tra:

; 579  : 				{
; 580  : 					gzCommands->Apply_Damage(evt.m_soldier, 99999.0f, "Death", NULL);

	fld	DWORD PTR __real@47c34f80
	mov	edx, DWORD PTR ?gzCommands@@3PAUnc_ScriptCommands@@A ; gzCommands
	mov	eax, DWORD PTR [edx+616]
	push	0
	push	OFFSET ??_C@_05PGGAFPFO@Death?$AA@
	push	ecx
	mov	ecx, DWORD PTR [esi+32]
	fstp	DWORD PTR [esp]
	push	ecx
	call	eax

; 581  : 					PagePlayer(evt.m_soldier->Player->PlayerId, "[Crate]: You were discovered by Anti-Enemy system installed on the vehicle you tried to enter.");

	mov	ecx, DWORD PTR [esi+32]
	mov	edx, DWORD PTR [ecx+2400]
	mov	eax, DWORD PTR [edx+1884]
	push	OFFSET ??_C@_0FP@JLBEOFLJ@?$FLCrate?$FN?3?5You?5were?5discovered?5by?5@
	push	eax
	call	?PagePlayer@@YAXHPBDZZ			; PagePlayer
	add	esp, 24					; 00000018H
	pop	ebp

; 582  : 					evt.Skip();

	mov	BYTE PTR [esi+40], 0
	pop	ebx
$LN3@Object_Tra:
	pop	edi
	pop	esi

; 583  : 					return;
; 584  : 				}
; 585  : 			}
; 586  : 		}
; 587  : 	}
; 588  : }

	ret	4
?Object_Transition@gzManagerCrateClass@@UAEXAAVgzEventObjectTransition@@@Z ENDP ; gzManagerCrateClass::Object_Transition
_TEXT	ENDS
PUBLIC	?Object_SoldierSquished@gzManagerCrateClass@@UAEXAAVgzEventObjectKill@@@Z ; gzManagerCrateClass::Object_SoldierSquished
; Function compile flags: /Ogtpy
;	COMDAT ?Object_SoldierSquished@gzManagerCrateClass@@UAEXAAVgzEventObjectKill@@@Z
_TEXT	SEGMENT
_evt$ = 8						; size = 4
?Object_SoldierSquished@gzManagerCrateClass@@UAEXAAVgzEventObjectKill@@@Z PROC ; gzManagerCrateClass::Object_SoldierSquished, COMDAT
; _this$ = ecx

; 590  : {

	push	ebx
	mov	ebx, ecx

; 591  : 	for (unsigned int i = 0; i < this->m_data->MetalGear.Count(); i++)

	mov	eax, DWORD PTR [ebx+60]
	push	ebp
	xor	ebp, ebp
	cmp	DWORD PTR [eax+28], ebp
	jbe	$LN7@Object_Sol
	push	esi
	push	edi
	mov	edi, DWORD PTR _evt$[esp+12]
	npad	8
$LL9@Object_Sol:
	mov	eax, DWORD PTR [eax+20]
	lea	esi, DWORD PTR [ebp*4]
	add	eax, esi

; 592  : 	{
; 593  : 		nc_PhysicalGameObj *soldier = nc_GameObjManager::Find_PhysicalGameObj(this->m_data->MetalGear[i]);

	mov	eax, DWORD PTR [eax]
	push	eax
	call	?Find_PhysicalGameObj@nc_GameObjManager@@SAPAVnc_PhysicalGameObj@@H@Z ; nc_GameObjManager::Find_PhysicalGameObj
	add	esp, 4

; 594  : 		if (!soldier)

	test	eax, eax
	jne	SHORT $LN6@Object_Sol

; 595  : 		{
; 596  : 			this->m_data->MetalGear.Delete(i);

	mov	eax, DWORD PTR [ebx+60]
	mov	edx, DWORD PTR [eax+16]
	lea	ecx, DWORD PTR [eax+16]
	mov	eax, DWORD PTR [edx+20]
	push	ebp
	call	eax

; 597  : 			i--;

	sub	ebp, 1

; 598  : 			continue;

	jmp	SHORT $LN8@Object_Sol
$LN6@Object_Sol:

; 599  : 		}
; 600  : 		if (evt.m_defender->NetworkID == this->m_data->MetalGear[i])

	mov	ecx, DWORD PTR [ebx+60]
	mov	eax, DWORD PTR [edi+36]
	mov	edx, DWORD PTR [ecx+20]
	mov	ecx, DWORD PTR [eax+12]
	cmp	ecx, DWORD PTR [esi+edx]
	jne	SHORT $LN8@Object_Sol

; 601  : 		{
; 602  : 			for (int j = 0; j < evt.m_defender->Observers.Count(); j++)

	xor	esi, esi
	cmp	DWORD PTR [eax+1784], esi
	jle	SHORT $LN2@Object_Sol
	npad	6
$LL33@Object_Sol:

; 603  : 			{
; 604  : 				if (evt.m_defender->Observers[j])

	mov	eax, DWORD PTR [edi+36]
	mov	edx, DWORD PTR [eax+1776]
	cmp	DWORD PTR [edx+esi*4], 0
	lea	ecx, DWORD PTR [edx+esi*4]
	je	SHORT $LN3@Object_Sol

; 605  : 					evt.m_defender->Observers[j]->Custom(evt.m_defender, 306492, 0, NULL);

	mov	ecx, DWORD PTR [ecx]
	mov	edx, DWORD PTR [ecx]
	push	0
	push	0
	push	306492					; 0004ad3cH
	push	eax
	mov	eax, DWORD PTR [edx+32]
	call	eax
$LN3@Object_Sol:
	mov	ecx, DWORD PTR [edi+36]
	add	esi, 1
	cmp	esi, DWORD PTR [ecx+1784]
	jl	SHORT $LL33@Object_Sol
$LN2@Object_Sol:

; 606  : 			}
; 607  : 			evt.Skip();

	mov	BYTE PTR [edi+40], 0
$LN8@Object_Sol:

; 591  : 	for (unsigned int i = 0; i < this->m_data->MetalGear.Count(); i++)

	mov	eax, DWORD PTR [ebx+60]
	add	ebp, 1
	cmp	ebp, DWORD PTR [eax+28]
	jb	$LL9@Object_Sol
	pop	edi
	pop	esi
$LN7@Object_Sol:
	pop	ebp
	pop	ebx

; 608  : 		}
; 609  : 	}
; 610  : }

	ret	4
?Object_SoldierSquished@gzManagerCrateClass@@UAEXAAVgzEventObjectKill@@@Z ENDP ; gzManagerCrateClass::Object_SoldierSquished
_TEXT	ENDS
PUBLIC	??_C@_0DC@FHFMKKOD@All?5of?5your?5Stealth?5Proximity?5Mi@ ; `string'
PUBLIC	??_C@_0CM@ELHABFBH@You?5have?5?$CFd?5Stealth?5Proximity?5Mi@ ; `string'
PUBLIC	?Object_C4Creation@gzManagerCrateClass@@UAEXAAVgzEventObjectC4Creation@@@Z ; gzManagerCrateClass::Object_C4Creation
EXTRN	?PlayerList@nc_cPlayerManager@@2PAV?$nc_SList@Vnc_cPlayer@@@@A:DWORD ; nc_cPlayerManager::PlayerList
;	COMDAT ??_C@_0DC@FHFMKKOD@All?5of?5your?5Stealth?5Proximity?5Mi@
; File d:\source code\alib\include\avector.h
CONST	SEGMENT
??_C@_0DC@FHFMKKOD@All?5of?5your?5Stealth?5Proximity?5Mi@ DB 'All of your'
	DB	' Stealth Proximity Mine has been used.', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0CM@ELHABFBH@You?5have?5?$CFd?5Stealth?5Proximity?5Mi@
CONST	SEGMENT
??_C@_0CM@ELHABFBH@You?5have?5?$CFd?5Stealth?5Proximity?5Mi@ DB 'You have'
	DB	' %d Stealth Proximity Mine(s) left.', 00H	; `string'
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
CONST	ENDS
;	COMDAT ?Object_C4Creation@gzManagerCrateClass@@UAEXAAVgzEventObjectC4Creation@@@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
tv404 = 8						; size = 4
_pData$59935 = 8					; size = 4
_evt$ = 8						; size = 4
?Object_C4Creation@gzManagerCrateClass@@UAEXAAVgzEventObjectC4Creation@@@Z PROC ; gzManagerCrateClass::Object_C4Creation, COMDAT
; _this$ = ecx

; 612  : {

	push	ecx
	push	ebx

; 613  : 	if (evt.m_C4->Owner.Reference && evt.m_C4->Owner.Reference->obj->As_SmartGameObj()->Player)

	mov	ebx, DWORD PTR _evt$[esp+4]
	mov	eax, DWORD PTR [ebx+32]
	cmp	DWORD PTR [eax+1980], 0
	push	ebp
	mov	ebp, ecx
	mov	DWORD PTR _this$[esp+12], ebp
	je	$LN1@Object_C4C
	mov	ecx, eax
	mov	edx, DWORD PTR [ecx+1980]
	mov	ecx, DWORD PTR [edx+4]
	mov	eax, DWORD PTR [ecx]
	mov	edx, DWORD PTR [eax+44]
	call	edx
	cmp	DWORD PTR [eax+2400], 0
	je	$LN1@Object_C4C

; 614  : 	{
; 615  : 		nc_cPlayer *pData = evt.m_C4->Owner.Reference->obj->As_SmartGameObj()->Player;

	mov	eax, DWORD PTR [ebx+32]
	mov	ecx, DWORD PTR [eax+1980]
	mov	ecx, DWORD PTR [ecx+4]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+44]
	push	esi
	call	eax

; 616  : 		if (evt.m_C4->AmmoDef->AmmoType.Get() == 3)

	mov	ecx, DWORD PTR [ebx+32]
	mov	ecx, DWORD PTR [ecx+1992]
	mov	esi, DWORD PTR [eax+2400]
	add	ecx, 140				; 0000008cH
	mov	DWORD PTR _pData$59935[esp+12], esi
	call	?Get@nc_IntDataSafeClass@@QAEHXZ	; nc_IntDataSafeClass::Get
	cmp	eax, 3
	jne	$LN36@Object_C4C

; 617  : 		{
; 618  : 			for (unsigned int i = 0; i < this->m_data->StealthMine.Count(); i++)

	mov	eax, DWORD PTR [ebp+60]
	mov	edx, DWORD PTR [eax+92]
	push	edi
	xor	edi, edi
	test	edx, edx
	jbe	$LN37@Object_C4C
	mov	ecx, DWORD PTR [eax+84]
	npad	5
$LL11@Object_C4C:

; 619  : 			{
; 620  : 				if (this->m_data->StealthMine[i]->owner == pData)

	mov	eax, DWORD PTR [ecx]
	cmp	DWORD PTR [eax], esi
	jne	SHORT $LN10@Object_C4C

; 621  : 				{
; 622  : 					if (this->m_data->StealthMine[i]->count > 0)

	cmp	DWORD PTR [eax+4], 0
	jg	SHORT $LN32@Object_C4C
$LN10@Object_C4C:

; 617  : 		{
; 618  : 			for (unsigned int i = 0; i < this->m_data->StealthMine.Count(); i++)

	add	edi, 1
	add	ecx, 4
	cmp	edi, edx
	jb	SHORT $LL11@Object_C4C
	pop	edi
	pop	esi
	pop	ebp
	pop	ebx

; 636  : 						break;
; 637  : 					}
; 638  : 				}
; 639  : 			}
; 640  : 		}
; 641  : 	}
; 642  : }

	pop	ecx
	ret	4
$LN32@Object_C4C:

; 623  : 					{
; 624  : 						evt.m_C4->Set_Object_Dirty_Bit(nc_DB_CREATION, false);

	mov	ecx, DWORD PTR [ebx+32]
	mov	edx, DWORD PTR [ecx+8]
	mov	eax, DWORD PTR [edx+56]
	add	ecx, 8
	push	0
	push	15					; 0000000fH
	call	eax

; 625  : 						for (nc_GenericSLNode<nc_cPlayer> *pList = nc_cPlayerManager::PlayerList->HeadNode; pList != NULL; pList = pList->NodeNext)

	mov	ecx, DWORD PTR ?PlayerList@nc_cPlayerManager@@2PAV?$nc_SList@Vnc_cPlayer@@@@A ; nc_cPlayerManager::PlayerList
	mov	esi, DWORD PTR [ecx+4]
	test	esi, esi
	je	SHORT $LN4@Object_C4C
	mov	edx, DWORD PTR _pData$59935[esp+16]

; 626  : 						{
; 627  : 							if (pData->PlayerType.Get() == pList->NodeData->PlayerType.Get())

	add	edx, 1900				; 0000076cH
	mov	DWORD PTR tv404[esp+16], edx
	npad	5
$LL35@Object_C4C:
	mov	ecx, DWORD PTR [esi+4]
	add	ecx, 1900				; 0000076cH
	call	?Get@nc_IntDataSafeClass@@QAEHXZ	; nc_IntDataSafeClass::Get
	mov	ecx, DWORD PTR tv404[esp+16]
	mov	ebp, eax
	call	?Get@nc_IntDataSafeClass@@QAEHXZ	; nc_IntDataSafeClass::Get
	cmp	eax, ebp
	jne	SHORT $LN5@Object_C4C

; 628  : 								evt.m_C4->Set_Object_Dirty_Bit(pList->NodeData->PlayerId, nc_DB_CREATION, true);

	mov	eax, DWORD PTR [ebx+32]
	mov	edx, DWORD PTR [esi+4]
	mov	edx, DWORD PTR [edx+1884]
	lea	ecx, DWORD PTR [eax+8]
	mov	eax, DWORD PTR [ecx]
	mov	eax, DWORD PTR [eax+52]
	push	1
	push	15					; 0000000fH
	push	edx
	call	eax
$LN5@Object_C4C:
	mov	esi, DWORD PTR [esi]
	test	esi, esi
	jne	SHORT $LL35@Object_C4C

; 625  : 						for (nc_GenericSLNode<nc_cPlayer> *pList = nc_cPlayerManager::PlayerList->HeadNode; pList != NULL; pList = pList->NodeNext)

	mov	ebp, DWORD PTR _this$[esp+20]
$LN4@Object_C4C:

; 629  : 						}
; 630  : 						this->m_data->StealthMine[i]->activeList.Add(evt.m_C4->NetworkID);

	mov	ecx, DWORD PTR [ebp+60]
	mov	edx, DWORD PTR [ecx+84]
	mov	ecx, DWORD PTR [edx+edi*4]
	mov	edx, DWORD PTR [ebx+32]
	mov	eax, DWORD PTR [ecx+8]
	mov	eax, DWORD PTR [eax+12]
	add	ecx, 8
	add	edx, 12					; 0000000cH
	push	edx
	call	eax

; 631  : 						this->m_data->StealthMine[i]->count--;

	mov	ecx, DWORD PTR [ebp+60]
	mov	edx, DWORD PTR [ecx+84]
	mov	eax, DWORD PTR [edx+edi*4]
	add	DWORD PTR [eax+4], -1

; 632  : 						if (this->m_data->StealthMine[i]->count > 0)

	mov	eax, DWORD PTR [ebp+60]
	mov	ecx, DWORD PTR [eax+84]
	mov	edx, DWORD PTR [ecx+edi*4]
	cmp	DWORD PTR [edx+4], 0
	jle	SHORT $LN2@Object_C4C

; 633  : 							PagePlayer(evt.m_C4->Player->PlayerId, "You have %d Stealth Proximity Mine(s) left.", this->m_data->StealthMine[i]->count);

	mov	ecx, DWORD PTR [eax+84]
	mov	edx, DWORD PTR [ecx+edi*4]
	mov	eax, DWORD PTR [edx+4]
	mov	ecx, DWORD PTR [ebx+32]
	mov	edx, DWORD PTR [ecx+1988]
	push	eax
	mov	eax, DWORD PTR [edx+1884]
	push	OFFSET ??_C@_0CM@ELHABFBH@You?5have?5?$CFd?5Stealth?5Proximity?5Mi@
	push	eax
	call	?PagePlayer@@YAXHPBDZZ			; PagePlayer
	add	esp, 12					; 0000000cH
	pop	edi
	pop	esi
	pop	ebp
	pop	ebx

; 636  : 						break;
; 637  : 					}
; 638  : 				}
; 639  : 			}
; 640  : 		}
; 641  : 	}
; 642  : }

	pop	ecx
	ret	4
$LN2@Object_C4C:

; 634  : 						else
; 635  : 							PagePlayer(evt.m_C4->Player->PlayerId, "All of your Stealth Proximity Mine has been used.");

	mov	ecx, DWORD PTR [ebx+32]
	mov	edx, DWORD PTR [ecx+1988]
	mov	eax, DWORD PTR [edx+1884]
	push	OFFSET ??_C@_0DC@FHFMKKOD@All?5of?5your?5Stealth?5Proximity?5Mi@
	push	eax
	call	?PagePlayer@@YAXHPBDZZ			; PagePlayer
	add	esp, 8
$LN37@Object_C4C:
	pop	edi
$LN36@Object_C4C:
	pop	esi
$LN1@Object_C4C:
	pop	ebp
	pop	ebx

; 636  : 						break;
; 637  : 					}
; 638  : 				}
; 639  : 			}
; 640  : 		}
; 641  : 	}
; 642  : }

	pop	ecx
	ret	4
?Object_C4Creation@gzManagerCrateClass@@UAEXAAVgzEventObjectC4Creation@@@Z ENDP ; gzManagerCrateClass::Object_C4Creation
_TEXT	ENDS
PUBLIC	?Object_C4Detonate@gzManagerCrateClass@@UAEXAAVgzEventObjectC4Detonation@@@Z ; gzManagerCrateClass::Object_C4Detonate
; Function compile flags: /Ogtpy
;	COMDAT ?Object_C4Detonate@gzManagerCrateClass@@UAEXAAVgzEventObjectC4Detonation@@@Z
_TEXT	SEGMENT
_evt$ = 8						; size = 4
?Object_C4Detonate@gzManagerCrateClass@@UAEXAAVgzEventObjectC4Detonation@@@Z PROC ; gzManagerCrateClass::Object_C4Detonate, COMDAT
; _this$ = ecx

; 644  : {

	push	ebx
	push	ebp

; 645  : 	if (evt.m_explodeBy)

	mov	ebp, DWORD PTR _evt$[esp+4]
	mov	edx, DWORD PTR [ebp+36]
	test	edx, edx
	mov	ebx, ecx
	je	$LN6@Object_C4D

; 646  : 	{
; 647  : 		for (unsigned int i = 0; i < this->m_data->Hover.Count(); i++)

	mov	eax, DWORD PTR [ebx+60]
	push	esi
	mov	esi, DWORD PTR [eax+76]
	xor	ecx, ecx
	test	esi, esi
	push	edi
	jbe	SHORT $LN10@Object_C4D
	mov	edi, DWORD PTR [edx+12]
	mov	edx, DWORD PTR [eax+68]
$LL12@Object_C4D:

; 648  : 		{
; 649  : 			if (this->m_data->Hover[i] == evt.m_explodeBy->NetworkID)

	cmp	DWORD PTR [edx], edi
	je	$LN43@Object_C4D
	add	ecx, 1
	add	edx, 4
	cmp	ecx, esi
	jb	SHORT $LL12@Object_C4D
$LN10@Object_C4D:

; 652  : 				return;
; 653  : 			}
; 654  : 		}
; 655  : 
; 656  : 		// Stealth mine existence check
; 657  : 		for (unsigned int i = 0; i < this->m_data->StealthMine.Count(); i++)

	xor	edi, edi
	cmp	DWORD PTR [eax+92], edi
	jbe	$LN49@Object_C4D
$LL48@Object_C4D:

; 658  : 		{
; 659  : 			for (unsigned int j = 0; j < this->m_data->StealthMine[i]->activeList.Count(); j++)

	mov	eax, DWORD PTR [eax+84]
	mov	eax, DWORD PTR [eax+edi*4]
	xor	esi, esi
	cmp	DWORD PTR [eax+20], esi
	jbe	SHORT $LN7@Object_C4D
$LL5@Object_C4D:
	mov	eax, DWORD PTR [eax+12]
	lea	ebp, DWORD PTR [esi*4]

; 660  : 			{
; 661  : 				nc_PhysicalGameObj *c4 = nc_GameObjManager::Find_PhysicalGameObj(this->m_data->StealthMine[i]->activeList[j]);

	mov	ecx, DWORD PTR [eax+ebp]
	add	eax, ebp
	push	ecx
	call	?Find_PhysicalGameObj@nc_GameObjManager@@SAPAVnc_PhysicalGameObj@@H@Z ; nc_GameObjManager::Find_PhysicalGameObj
	add	esp, 4

; 662  : 				if (!c4 || this->m_data->StealthMine[i]->activeList[j] == evt.m_C4->NetworkID)

	test	eax, eax
	je	SHORT $LN1@Object_C4D
	mov	edx, DWORD PTR [ebx+60]
	mov	eax, DWORD PTR [edx+84]
	mov	ecx, DWORD PTR [eax+edi*4]
	mov	edx, DWORD PTR [ecx+12]
	mov	eax, DWORD PTR _evt$[esp+12]
	mov	ecx, DWORD PTR [eax+32]
	mov	edx, DWORD PTR [edx+ebp]
	cmp	edx, DWORD PTR [ecx+12]
	jne	SHORT $LN4@Object_C4D
$LN1@Object_C4D:

; 663  : 				{
; 664  : 					this->m_data->StealthMine[i]->activeList.Delete(j);

	mov	eax, DWORD PTR [ebx+60]
	mov	ecx, DWORD PTR [eax+84]
	mov	ecx, DWORD PTR [ecx+edi*4]
	mov	edx, DWORD PTR [ecx+8]
	mov	eax, DWORD PTR [edx+20]
	add	ecx, 8
	push	esi
	call	eax

; 665  : 					j--;

	sub	esi, 1
$LN4@Object_C4D:
	mov	ecx, DWORD PTR [ebx+60]
	mov	edx, DWORD PTR [ecx+84]
	mov	eax, DWORD PTR [edx+edi*4]
	add	esi, 1
	cmp	esi, DWORD PTR [eax+20]
	jb	SHORT $LL5@Object_C4D
$LN7@Object_C4D:

; 652  : 				return;
; 653  : 			}
; 654  : 		}
; 655  : 
; 656  : 		// Stealth mine existence check
; 657  : 		for (unsigned int i = 0; i < this->m_data->StealthMine.Count(); i++)

	mov	eax, DWORD PTR [ebx+60]
	add	edi, 1
	cmp	edi, DWORD PTR [eax+92]
	jb	SHORT $LL48@Object_C4D
$LN49@Object_C4D:
	pop	edi
	pop	esi
$LN6@Object_C4D:
	pop	ebp
	pop	ebx

; 666  : 				}
; 667  : 			}
; 668  : 		}
; 669  : 	}
; 670  : }

	ret	4
$LN43@Object_C4D:
	pop	edi
	pop	esi

; 650  : 			{
; 651  : 				evt.Skip();

	mov	BYTE PTR [ebp+40], 0
	pop	ebp
	pop	ebx

; 666  : 				}
; 667  : 			}
; 668  : 		}
; 669  : 	}
; 670  : }

	ret	4
?Object_C4Detonate@gzManagerCrateClass@@UAEXAAVgzEventObjectC4Detonation@@@Z ENDP ; gzManagerCrateClass::Object_C4Detonate
_TEXT	ENDS
PUBLIC	??_C@_0BC@ICPNFJKE@CnC_Spawner_Crate?$AA@	; `string'
PUBLIC	?Settings_Loaded@gzManagerCrateClass@@UAEXXZ	; gzManagerCrateClass::Settings_Loaded
EXTRN	_stricmp:PROC
EXTRN	?SpawnerList@nc_SpawnManager@@2AAV?$nc_DynamicVectorClass@PAVnc_SpawnerClass@@@@A:DWORD ; nc_SpawnManager::SpawnerList
;	COMDAT ??_C@_0BC@ICPNFJKE@CnC_Spawner_Crate?$AA@
; File d:\source code\fds lib\new\fds_vector.h
CONST	SEGMENT
??_C@_0BC@ICPNFJKE@CnC_Spawner_Crate?$AA@ DB 'CnC_Spawner_Crate', 00H ; `string'
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
CONST	ENDS
;	COMDAT ?Settings_Loaded@gzManagerCrateClass@@UAEXXZ
_TEXT	SEGMENT
?Settings_Loaded@gzManagerCrateClass@@UAEXXZ PROC	; gzManagerCrateClass::Settings_Loaded, COMDAT
; _this$ = ecx

; 791  : 	if (!this->m_settings->m_enableYellowCrate)

	mov	eax, DWORD PTR [ecx+20]
	cmp	BYTE PTR [eax+25], 0
	jne	SHORT $LN2@Settings_L

; 792  : 	{
; 793  : 		for (int i = 0; i < nc_SpawnManager::SpawnerList.Count(); i++)

	mov	eax, DWORD PTR ?SpawnerList@nc_SpawnManager@@2AAV?$nc_DynamicVectorClass@PAVnc_SpawnerClass@@@@A ; nc_SpawnManager::SpawnerList
	push	esi
	xor	esi, esi
	cmp	DWORD PTR [eax+16], esi
	jle	SHORT $LN16@Settings_L
$LL4@Settings_L:

; 794  : 		{
; 795  : 			if (!stricmp(nc_SpawnManager::SpawnerList[i]->Definition->Get_Name(), "CnC_Spawner_Crate"))

	mov	ecx, DWORD PTR [eax+4]
	mov	edx, DWORD PTR [ecx+esi*4]
	mov	ecx, DWORD PTR [edx+108]
	mov	eax, DWORD PTR [ecx]
	mov	edx, DWORD PTR [eax+48]
	push	OFFSET ??_C@_0BC@ICPNFJKE@CnC_Spawner_Crate?$AA@
	call	edx
	push	eax
	call	_stricmp
	add	esp, 8
	test	eax, eax
	jne	SHORT $LN3@Settings_L

; 796  : 				nc_SpawnManager::SpawnerList[i]->Enable = false;

	mov	eax, DWORD PTR ?SpawnerList@nc_SpawnManager@@2AAV?$nc_DynamicVectorClass@PAVnc_SpawnerClass@@@@A ; nc_SpawnManager::SpawnerList
	mov	ecx, DWORD PTR [eax+4]
	mov	edx, DWORD PTR [ecx+esi*4]
	mov	BYTE PTR [edx+128], 0
$LN3@Settings_L:
	mov	eax, DWORD PTR ?SpawnerList@nc_SpawnManager@@2AAV?$nc_DynamicVectorClass@PAVnc_SpawnerClass@@@@A ; nc_SpawnManager::SpawnerList
	add	esi, 1
	cmp	esi, DWORD PTR [eax+16]
	jl	SHORT $LL4@Settings_L
$LN16@Settings_L:
	pop	esi
$LN2@Settings_L:

; 797  : 		}
; 798  : 	}
; 799  : }

	ret	0
?Settings_Loaded@gzManagerCrateClass@@UAEXXZ ENDP	; gzManagerCrateClass::Settings_Loaded
_TEXT	ENDS
PUBLIC	??_7Crate_RandomWeapon@@6B@			; Crate_RandomWeapon::`vftable'
PUBLIC	??0Crate_RandomWeapon@@QAE@XZ			; Crate_RandomWeapon::Crate_RandomWeapon
PUBLIC	??_R4Crate_RandomWeapon@@6B@			; Crate_RandomWeapon::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVCrate_RandomWeapon@@@8			; Crate_RandomWeapon `RTTI Type Descriptor'
PUBLIC	??_R3Crate_RandomWeapon@@8			; Crate_RandomWeapon::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2Crate_RandomWeapon@@8			; Crate_RandomWeapon::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@Crate_RandomWeapon@@8		; Crate_RandomWeapon::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?GetName@Crate_RandomWeapon@@EAEPBDXZ		; Crate_RandomWeapon::GetName
PUBLIC	?GetType@Crate_RandomWeapon@@EAEHXZ		; Crate_RandomWeapon::GetType
PUBLIC	?GetPercent@Crate_RandomWeapon@@EAEIXZ		; Crate_RandomWeapon::GetPercent
PUBLIC	?Pick@Crate_RandomWeapon@@EAE_NPAVnc_SmartGameObj@@@Z ; Crate_RandomWeapon::Pick
;	COMDAT ??_R1A@?0A@EA@Crate_RandomWeapon@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@Crate_RandomWeapon@@8 DD FLAT:??_R0?AVCrate_RandomWeapon@@@8 ; Crate_RandomWeapon::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3Crate_RandomWeapon@@8
rdata$r	ENDS
;	COMDAT ??_R2Crate_RandomWeapon@@8
rdata$r	SEGMENT
??_R2Crate_RandomWeapon@@8 DD FLAT:??_R1A@?0A@EA@Crate_RandomWeapon@@8 ; Crate_RandomWeapon::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzCrateBase@@8
rdata$r	ENDS
;	COMDAT ??_R3Crate_RandomWeapon@@8
rdata$r	SEGMENT
??_R3Crate_RandomWeapon@@8 DD 00H			; Crate_RandomWeapon::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2Crate_RandomWeapon@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVCrate_RandomWeapon@@@8
_DATA	SEGMENT
??_R0?AVCrate_RandomWeapon@@@8 DD FLAT:??_7type_info@@6B@ ; Crate_RandomWeapon `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVCrate_RandomWeapon@@', 00H
_DATA	ENDS
;	COMDAT ??_R4Crate_RandomWeapon@@6B@
rdata$r	SEGMENT
??_R4Crate_RandomWeapon@@6B@ DD 00H			; Crate_RandomWeapon::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVCrate_RandomWeapon@@@8
	DD	FLAT:??_R3Crate_RandomWeapon@@8
rdata$r	ENDS
;	COMDAT ??_7Crate_RandomWeapon@@6B@
CONST	SEGMENT
??_7Crate_RandomWeapon@@6B@ DD FLAT:??_R4Crate_RandomWeapon@@6B@ ; Crate_RandomWeapon::`vftable'
	DD	FLAT:?GetName@Crate_RandomWeapon@@EAEPBDXZ
	DD	FLAT:?GetType@Crate_RandomWeapon@@EAEHXZ
	DD	FLAT:?GetPercent@Crate_RandomWeapon@@EAEIXZ
	DD	FLAT:?SkipDefaultOutput@gzCrateBase@@UAE_NXZ
	DD	FLAT:?Pick@Crate_RandomWeapon@@EAE_NPAVnc_SmartGameObj@@@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0Crate_RandomWeapon@@QAE@XZ
_TEXT	SEGMENT
??0Crate_RandomWeapon@@QAE@XZ PROC			; Crate_RandomWeapon::Crate_RandomWeapon, COMDAT
; _this$ = ecx
	xor	eax, eax
	push	esi
	mov	esi, ecx
	mov	DWORD PTR [esi+4], eax
	mov	BYTE PTR [esi+8], al
	mov	DWORD PTR [esi], OFFSET ??_7gzCrateBase@@6B@
	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	mov	eax, esi
	je	SHORT $LN8@Crate_Rand
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], esi
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN8@Crate_Rand:
	mov	DWORD PTR [esi], OFFSET ??_7Crate_RandomWeapon@@6B@
	pop	esi
	ret	0
??0Crate_RandomWeapon@@QAE@XZ ENDP			; Crate_RandomWeapon::Crate_RandomWeapon
_TEXT	ENDS
PUBLIC	??_7aString@@6B@				; aString::`vftable'
PUBLIC	??0aString@@QAE@ABV0@@Z				; aString::aString
PUBLIC	??_R4aString@@6B@				; aString::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVaString@@@8				; aString `RTTI Type Descriptor'
PUBLIC	??_R3aString@@8					; aString::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2aString@@8					; aString::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@aString@@8			; aString::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	??_R1A@?0A@EA@aStringBase@@8			; aStringBase::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	??_R0?AVaStringBase@@@8				; aStringBase `RTTI Type Descriptor'
PUBLIC	??_R3aStringBase@@8				; aStringBase::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2aStringBase@@8				; aStringBase::`RTTI Base Class Array'
PUBLIC	?CharSize@aString@@UBEIXZ			; aString::CharSize
EXTRN	??0aStringBase@@QAE@ABV0@@Z:PROC		; aStringBase::aStringBase
EXTRN	??_EaString@@UAEPAXI@Z:PROC			; aString::`vector deleting destructor'
;	COMDAT ??_R2aStringBase@@8
; File d:\source code\alib\include\astring.h
rdata$r	SEGMENT
??_R2aStringBase@@8 DD FLAT:??_R1A@?0A@EA@aStringBase@@8 ; aStringBase::`RTTI Base Class Array'
rdata$r	ENDS
;	COMDAT ??_R3aStringBase@@8
rdata$r	SEGMENT
??_R3aStringBase@@8 DD 00H				; aStringBase::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	01H
	DD	FLAT:??_R2aStringBase@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVaStringBase@@@8
_DATA	SEGMENT
??_R0?AVaStringBase@@@8 DD FLAT:??_7type_info@@6B@	; aStringBase `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVaStringBase@@', 00H
_DATA	ENDS
;	COMDAT ??_R1A@?0A@EA@aStringBase@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@aStringBase@@8 DD FLAT:??_R0?AVaStringBase@@@8 ; aStringBase::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	00H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3aStringBase@@8
rdata$r	ENDS
;	COMDAT ??_R1A@?0A@EA@aString@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@aString@@8 DD FLAT:??_R0?AVaString@@@8	; aString::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3aString@@8
rdata$r	ENDS
;	COMDAT ??_R2aString@@8
rdata$r	SEGMENT
??_R2aString@@8 DD FLAT:??_R1A@?0A@EA@aString@@8	; aString::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@aStringBase@@8
rdata$r	ENDS
;	COMDAT ??_R3aString@@8
rdata$r	SEGMENT
??_R3aString@@8 DD 00H					; aString::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2aString@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVaString@@@8
_DATA	SEGMENT
??_R0?AVaString@@@8 DD FLAT:??_7type_info@@6B@		; aString `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVaString@@', 00H
_DATA	ENDS
;	COMDAT ??_R4aString@@6B@
rdata$r	SEGMENT
??_R4aString@@6B@ DD 00H				; aString::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVaString@@@8
	DD	FLAT:??_R3aString@@8
rdata$r	ENDS
;	COMDAT ??_7aString@@6B@
CONST	SEGMENT
??_7aString@@6B@ DD FLAT:??_R4aString@@6B@		; aString::`vftable'
	DD	FLAT:??_EaString@@UAEPAXI@Z
	DD	FLAT:?CharSize@aString@@UBEIXZ
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0aString@@QAE@ABV0@@Z
_TEXT	SEGMENT
_str$ = 8						; size = 4
??0aString@@QAE@ABV0@@Z PROC				; aString::aString, COMDAT
; _this$ = ecx

; 134  : 	aString(const aString& str) : aStringBase(str) { };

	mov	eax, DWORD PTR _str$[esp-4]
	push	esi
	push	eax
	mov	esi, ecx
	call	??0aStringBase@@QAE@ABV0@@Z		; aStringBase::aStringBase
	mov	DWORD PTR [esi], OFFSET ??_7aString@@6B@
	mov	eax, esi
	pop	esi
	ret	4
??0aString@@QAE@ABV0@@Z ENDP				; aString::aString
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?CharSize@aString@@UBEIXZ
_TEXT	SEGMENT
?CharSize@aString@@UBEIXZ PROC				; aString::CharSize, COMDAT
; _this$ = ecx

; 141  : 	unsigned int CharSize() const { return 1; };

	mov	eax, 1
	ret	0
?CharSize@aString@@UBEIXZ ENDP				; aString::CharSize
_TEXT	ENDS
PUBLIC	?GetWeaponPack@gzPlayer@@QAEPAVgzWeaponPackClass@@XZ ; gzPlayer::GetWeaponPack
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzplayer.h
;	COMDAT ?GetWeaponPack@gzPlayer@@QAEPAVgzWeaponPackClass@@XZ
_TEXT	SEGMENT
?GetWeaponPack@gzPlayer@@QAEPAVgzWeaponPackClass@@XZ PROC ; gzPlayer::GetWeaponPack, COMDAT
; _this$ = ecx

; 76   : 	inline gzWeaponPackClass *GetWeaponPack() { return this->m_weaponPack; };

	mov	eax, DWORD PTR [ecx+60]
	ret	0
?GetWeaponPack@gzPlayer@@QAEPAVgzWeaponPackClass@@XZ ENDP ; gzPlayer::GetWeaponPack
_TEXT	ENDS
PUBLIC	??_C@_0O@KHEPPGKC@Random?5Weapon?$AA@		; `string'
;	COMDAT ??_C@_0O@KHEPPGKC@Random?5Weapon?$AA@
; File d:\source code\gzgm\gzcrate.cpp
CONST	SEGMENT
??_C@_0O@KHEPPGKC@Random?5Weapon?$AA@ DB 'Random Weapon', 00H ; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?GetName@Crate_RandomWeapon@@EAEPBDXZ
_TEXT	SEGMENT
?GetName@Crate_RandomWeapon@@EAEPBDXZ PROC		; Crate_RandomWeapon::GetName, COMDAT
; _this$ = ecx

; 814  : 		return "Random Weapon";

	mov	eax, OFFSET ??_C@_0O@KHEPPGKC@Random?5Weapon?$AA@

; 815  : 	}

	ret	0
?GetName@Crate_RandomWeapon@@EAEPBDXZ ENDP		; Crate_RandomWeapon::GetName
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetType@Crate_RandomWeapon@@EAEHXZ
_TEXT	SEGMENT
?GetType@Crate_RandomWeapon@@EAEHXZ PROC		; Crate_RandomWeapon::GetType, COMDAT
; _this$ = ecx

; 818  : 		return CRATE_SOLDIER;

	mov	eax, 1

; 819  : 	}

	ret	0
?GetType@Crate_RandomWeapon@@EAEHXZ ENDP		; Crate_RandomWeapon::GetType
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetPercent@Crate_RandomWeapon@@EAEIXZ
_TEXT	SEGMENT
?GetPercent@Crate_RandomWeapon@@EAEIXZ PROC		; Crate_RandomWeapon::GetPercent, COMDAT
; _this$ = ecx

; 822  : 		return this->m_percent->Weapon;

	mov	eax, DWORD PTR ?m_percent@gzCrateBase@@1PBUgzCratePercentStruct@@B ; gzCrateBase::m_percent
	mov	eax, DWORD PTR [eax]

; 823  : 	}

	ret	0
?GetPercent@Crate_RandomWeapon@@EAEIXZ ENDP		; Crate_RandomWeapon::GetPercent
_TEXT	ENDS
PUBLIC	?Count@?$aVector@PAVaStringData@@@@QBEIXZ	; aVector<aStringData *>::Count
; Function compile flags: /Ogtpy
; File d:\source code\alib\include\avector.h
;	COMDAT ?Count@?$aVector@PAVaStringData@@@@QBEIXZ
_TEXT	SEGMENT
?Count@?$aVector@PAVaStringData@@@@QBEIXZ PROC		; aVector<aStringData *>::Count, COMDAT
; _this$ = ecx

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

	mov	eax, DWORD PTR [ecx+12]
	ret	0
?Count@?$aVector@PAVaStringData@@@@QBEIXZ ENDP		; aVector<aStringData *>::Count
_TEXT	ENDS
PUBLIC	??A?$aStringArrayBase@VaString@@@@QAE?AVaString@@I@Z ; aStringArrayBase<aString>::operator[]
EXTRN	?SetData@aStringBase@@QAEXPAVaStringData@@@Z:PROC ; aStringBase::SetData
EXTRN	??0aString@@QAE@XZ:PROC				; aString::aString
;	COMDAT xdata$x
; File d:\source code\alib\include\astring.h
xdata$x	SEGMENT
__unwindtable$??A?$aStringArrayBase@VaString@@@@QAE?AVaString@@I@Z DD 0ffffffffH
	DD	FLAT:__unwindfunclet$??A?$aStringArrayBase@VaString@@@@QAE?AVaString@@I@Z$0
__ehfuncinfo$??A?$aStringArrayBase@VaString@@@@QAE?AVaString@@I@Z DD 019930522H
	DD	01H
	DD	FLAT:__unwindtable$??A?$aStringArrayBase@VaString@@@@QAE?AVaString@@I@Z
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	01H
; Function compile flags: /Ogtpy
xdata$x	ENDS
;	COMDAT ??A?$aStringArrayBase@VaString@@@@QAE?AVaString@@I@Z
_TEXT	SEGMENT
$T71891 = -16						; size = 4
__$EHRec$ = -12						; size = 12
___$ReturnUdt$ = 8					; size = 4
_pos$ = 12						; size = 4
??A?$aStringArrayBase@VaString@@@@QAE?AVaString@@I@Z PROC ; aStringArrayBase<aString>::operator[], COMDAT
; _this$ = ecx

; 86   : 	{

	push	-1
	push	__ehhandler$??A?$aStringArrayBase@VaString@@@@QAE?AVaString@@I@Z
	mov	eax, DWORD PTR fs:0
	push	eax
	mov	DWORD PTR fs:0, esp
	push	ecx
	push	esi
	mov	DWORD PTR $T71891[esp+20], 0

; 87   : 		T ret;

	mov	esi, DWORD PTR ___$ReturnUdt$[esp+16]
	push	edi
	mov	edi, ecx
	mov	ecx, esi
	mov	DWORD PTR __$EHRec$[esp+32], 0
	call	??0aString@@QAE@XZ			; aString::aString

; 88   : 		ret.SetData(this->m_vector[pos]);
; 89   : 		return ret;

	mov	eax, DWORD PTR [edi+4]
	mov	ecx, DWORD PTR _pos$[esp+20]
	mov	edx, DWORD PTR [eax+ecx*4]
	push	edx
	mov	ecx, esi
	mov	DWORD PTR __$EHRec$[esp+36], 0
	mov	DWORD PTR $T71891[esp+28], 1
	call	?SetData@aStringBase@@QAEXPAVaStringData@@@Z ; aStringBase::SetData

; 90   : 	};

	mov	ecx, DWORD PTR __$EHRec$[esp+24]
	pop	edi
	mov	eax, esi
	pop	esi
	mov	DWORD PTR fs:0, ecx
	add	esp, 16					; 00000010H
	ret	8
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$??A?$aStringArrayBase@VaString@@@@QAE?AVaString@@I@Z$0:
	mov	eax, DWORD PTR $T71891[ebp]
	and	eax, 1
	je	$LN4@operator
	and	DWORD PTR $T71891[ebp], -2		; fffffffeH
	mov	ecx, DWORD PTR ___$ReturnUdt$[ebp-4]
	jmp	??1aString@@UAE@XZ
$LN4@operator:
	ret	0
__ehhandler$??A?$aStringArrayBase@VaString@@@@QAE?AVaString@@I@Z:
	mov	eax, OFFSET __ehfuncinfo$??A?$aStringArrayBase@VaString@@@@QAE?AVaString@@I@Z
	jmp	___CxxFrameHandler3
text$x	ENDS
??A?$aStringArrayBase@VaString@@@@QAE?AVaString@@I@Z ENDP ; aStringArrayBase<aString>::operator[]
PUBLIC	??A?$aVector@PAUgzWeaponBan@@@@QAEAAPAUgzWeaponBan@@I@Z ; aVector<gzWeaponBan *>::operator[]
; Function compile flags: /Ogtpy
; File d:\source code\alib\include\avector.h
;	COMDAT ??A?$aVector@PAUgzWeaponBan@@@@QAEAAPAUgzWeaponBan@@I@Z
_TEXT	SEGMENT
_nPos$ = 8						; size = 4
??A?$aVector@PAUgzWeaponBan@@@@QAEAAPAUgzWeaponBan@@I@Z PROC ; aVector<gzWeaponBan *>::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@PAUgzWeaponBan@@@@QAEAAPAUgzWeaponBan@@I@Z ENDP ; aVector<gzWeaponBan *>::operator[]
_TEXT	ENDS
PUBLIC	?Count@?$aVector@PAUgzWeaponBan@@@@QBEIXZ	; aVector<gzWeaponBan *>::Count
; Function compile flags: /Ogtpy
;	COMDAT ?Count@?$aVector@PAUgzWeaponBan@@@@QBEIXZ
_TEXT	SEGMENT
?Count@?$aVector@PAUgzWeaponBan@@@@QBEIXZ PROC		; aVector<gzWeaponBan *>::Count, COMDAT
; _this$ = ecx

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

	mov	eax, DWORD PTR [ecx+12]
	ret	0
?Count@?$aVector@PAUgzWeaponBan@@@@QBEIXZ ENDP		; aVector<gzWeaponBan *>::Count
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ??_GaString@@UAEPAXI@Z
_TEXT	SEGMENT
___flags$ = 8						; size = 4
??_GaString@@UAEPAXI@Z PROC				; aString::`scalar deleting destructor', COMDAT
; _this$ = ecx
	push	esi
	mov	esi, ecx
	call	??1aStringBase@@UAE@XZ			; aStringBase::~aStringBase
	test	BYTE PTR ___flags$[esp], 1
	je	SHORT $LN7@scalar@3
	push	esi
	call	??3@YAXPAX@Z				; operator delete
	add	esp, 4
$LN7@scalar@3:
	mov	eax, esi
	pop	esi
	ret	4
??_GaString@@UAEPAXI@Z ENDP				; aString::`scalar deleting destructor'
_TEXT	ENDS
PUBLIC	??_C@_0DI@NEMNEPOI@?$FLCrate?$FN?5You?5just?5got?5a?5?$CFs?5from?5t@ ; `string'
PUBLIC	??_C@_06LJACFPMC@_CRATE?$AA@			; `string'
PUBLIC	??_C@_0DF@GDKEOHJM@?$CFls?5picked?5up?5a?5Random?5Weapon?5Cr@ ; `string'
PUBLIC	??_C@_0CA@IDENJGFF@Weapon_VoltAutoRifle_Player_Nod?$AA@ ; `string'
PUBLIC	??_C@_0BE@IBCCHCFF@Nod?5Volt?5Auto?5Rifle?$AA@	; `string'
PUBLIC	??_C@_0BM@HPCBCCCL@Weapon_VoltAutoRifle_Player?$AA@ ; `string'
PUBLIC	??_C@_0BP@JPKMHDLC@m00pwvr_aqob0004i1evag_snd?4wav?$AA@ ; `string'
PUBLIC	??_C@_0BE@FLAAAFEC@GDI?5Volt?5Auto?5Rifle?$AA@	; `string'
PUBLIC	??_C@_0BP@MBCEFBLF@m00pwrj_aqob0004i1evag_snd?4wav?$AA@ ; `string'
PUBLIC	??_C@_0BK@OPFBCKCF@Weapon_RamjetRifle_Player?$AA@ ; `string'
PUBLIC	??_C@_0N@BEBCIPAC@Ramjet?5Rifle?$AA@		; `string'
PUBLIC	??_C@_0BP@LDBJBIPH@m00pwrg_aqob0004i1evag_snd?4wav?$AA@ ; `string'
PUBLIC	??_C@_0BG@LHJPMJHM@Weapon_Railgun_Player?$AA@	; `string'
PUBLIC	??_C@_07NMJDHEIK@Railgun?$AA@			; `string'
PUBLIC	??_C@_0BP@OBIDKMIJ@m00pwpi_aqob0004i1evag_snd?4wav?$AA@ ; `string'
PUBLIC	??_C@_0CA@BGNGFNL@Weapon_PersonalIonCannon_Player?$AA@ ; `string'
PUBLIC	??_C@_0BE@BNLHADBG@Personal?5Ion?5Cannon?$AA@	; `string'
PUBLIC	??_C@_0BP@CJEMFFEI@m00pwtf_aqob0004i1evag_snd?4wav?$AA@ ; `string'
PUBLIC	??_C@_0CD@EKPMIGEF@Weapon_TiberiumFlechetteGun_Play@ ; `string'
PUBLIC	??_C@_0BH@FLHHBJAG@Tiberium?5Flechette?5Gun?$AA@ ; `string'
PUBLIC	??_C@_0BP@HFJNEOBJ@m00pwlr_aqob0004i1evag_snd?4wav?$AA@ ; `string'
PUBLIC	??_C@_0BJ@COMLIFHJ@Weapon_LaserRifle_Player?$AA@ ; `string'
PUBLIC	??_C@_0M@JIDFGGKB@Laser?5Rifle?$AA@		; `string'
PUBLIC	??_C@_0BP@IIABPJHJ@m00pwlc_aqob0004i1evag_snd?4wav?$AA@ ; `string'
PUBLIC	??_C@_0BM@HDICNLIF@Weapon_LaserChaingun_Player?$AA@ ; `string'
PUBLIC	??_C@_0P@CHLANEGF@Laser?5Chaingun?$AA@		; `string'
PUBLIC	??_C@_0BO@FOAOBLNN@Weapon_SniperRifle_Player_Nod?$AA@ ; `string'
PUBLIC	??_C@_0BB@JFFODKGK@Nod?5Sniper?5Rifle?$AA@	; `string'
PUBLIC	??_C@_0BK@FHJCOGNO@Weapon_SniperRifle_Player?$AA@ ; `string'
PUBLIC	??_C@_0BB@MNMHKCOF@GDI?5Sniper?5Rifle?$AA@	; `string'
PUBLIC	??_C@_0BP@IKOGDINN@m00pwtr_aqob0004i1evag_snd?4wav?$AA@ ; `string'
PUBLIC	??_C@_0CA@KBFEMNBM@Weapon_TiberiumAutoRifle_Player?$AA@ ; `string'
PUBLIC	??_C@_0BE@BGDLMLLG@Tiberium?5Auto?5Rifle?$AA@	; `string'
PUBLIC	??_C@_0BP@FNPMIIIN@m00pwcs_aqob0004i1evag_snd?4wav?$AA@ ; `string'
PUBLIC	??_C@_0BO@LKIHGFCM@CNC_Weapon_ChemSprayer_Player?$AA@ ; `string'
PUBLIC	??_C@_0BB@KGIBEMJL@Chemical?5Sprayer?$AA@	; `string'
PUBLIC	??_C@_0CB@EPHIGEJG@CnC_Weapon_RocketLauncher_Player@ ; `string'
PUBLIC	??_C@_0BI@DFCFLLGM@Rocket?5Launcher?$CIStrong?$CJ?$AA@ ; `string'
PUBLIC	??_C@_0BN@KIEMBBLM@Weapon_RocketLauncher_Player?$AA@ ; `string'
PUBLIC	??_C@_0BG@EDNBDIJG@Rocket?5Launcher?$CIWeak?$CJ?$AA@ ; `string'
PUBLIC	??_C@_0BL@OOFMGFNC@Weapon_Chaingun_Player_Nod?$AA@ ; `string'
PUBLIC	??_C@_0O@OMMMAILG@Nod?5Chain?5Gun?$AA@		; `string'
PUBLIC	??_C@_0BH@IADKAKDP@Weapon_Chaingun_Player?$AA@	; `string'
PUBLIC	??_C@_0O@JALDNJLG@GDI?5Chain?5Gun?$AA@		; `string'
PUBLIC	??_C@_0BP@IKDMMIEM@m00pacp_aqob0004i1evag_snd?4wav?$AA@ ; `string'
PUBLIC	??_C@_0BM@KBGLCCJF@Weapon_MineProximity_Player?$AA@ ; `string'
PUBLIC	??_C@_0N@LPHHBPGP@Proximity?5C4?$AA@		; `string'
PUBLIC	??_C@_0BP@HBIBICLH@m00pact_aqob0004i1evag_snd?4wav?$AA@ ; `string'
PUBLIC	??_C@_0CB@OCIAMJK@CnC_Weapon_MineTimed_Player_2Max@ ; `string'
PUBLIC	??_C@_0L@PMBHBJOF@2?5Timed?5C4?$AA@		; `string'
PUBLIC	??_C@_0BP@MKKMBJEO@m00pac4_aqob0004i1evag_snd?4wav?$AA@ ; `string'
PUBLIC	??_C@_0CC@NCICHILO@CnC_Weapon_MineRemote_Player_2Ma@ ; `string'
PUBLIC	??_C@_0M@MPAENNJO@2?5Remote?5C4?$AA@		; `string'
PUBLIC	??_C@_0CE@KGBDMOEC@CnC_Weapon_RepairGun_Player_Spec@ ; `string'
PUBLIC	??_C@_0BD@CDOMIID@Repair?5Gun?$CIStrong?$CJ?$AA@ ; `string'
PUBLIC	??_C@_0BI@NKBDMJJH@Weapon_RepairGun_Player?$AA@	; `string'
PUBLIC	??_C@_0BB@HEAHCGL@Repair?5Gun?$CIWeak?$CJ?$AA@	; `string'
PUBLIC	??_C@_0BP@MNCEFGCC@m00pwgl_aqob0004i1evag_snd?4wav?$AA@ ; `string'
PUBLIC	??_C@_0BO@KADDDBBC@Weapon_GrenadeLauncher_Player?$AA@ ; `string'
PUBLIC	??_C@_0BB@GIEOMMBO@Grenade?5Launcher?$AA@	; `string'
PUBLIC	??_C@_0BP@CEHMJJHK@m00pwft_aqob0001i1evag_snd?4wav?$AA@ ; `string'
PUBLIC	??_C@_0BP@IJKEBKDI@CNC_Weapon_Flamethrower_Player?$AA@ ; `string'
PUBLIC	??_C@_0N@LDKIPHF@Flamethrower?$AA@		; `string'
PUBLIC	??_C@_0BP@FPJDOAN@m00pwps_aqob0004i1evag_snd?4wav?$AA@ ; `string'
PUBLIC	??_C@_0BG@KMDKJAL@Weapon_Shotgun_Player?$AA@	; `string'
PUBLIC	??_C@_07DGIAOJJ@Shotgun?$AA@			; `string'
PUBLIC	??_C@_0BM@DEHMEMCG@Weapon_AutoRifle_Player_Nod?$AA@ ; `string'
PUBLIC	??_C@_0P@PNGHOHOH@Nod?5Auto?5Rifle?$AA@		; `string'
PUBLIC	??_C@_0BI@LKNOHKIF@Weapon_AutoRifle_Player?$AA@	; `string'
PUBLIC	??_C@_0P@PNBLJIDG@GDI?5Auto?5Rifle?$AA@		; `string'
PUBLIC	??_C@_0BP@FCCFEDPL@m00pwsr_aqob0004i1evag_snd?4wav?$AA@ ; `string'
PUBLIC	??_C@_0BP@KKPPDNBD@m00pwrl_aqob0004i1evag_snd?4wav?$AA@ ; `string'
PUBLIC	??_C@_0BP@POFGOFBI@m00pwcg_aqob0004i1evag_snd?4wav?$AA@ ; `string'
PUBLIC	??_C@_0BP@FPAHBOCH@m00pwrp_aqob0001i1evag_snd?4wav?$AA@ ; `string'
PUBLIC	??_C@_0BP@ONDNFDOM@m00pwar_aqob0004i1evag_snd?4wav?$AA@ ; `string'
EXTRN	?gzCreate_2D_WAV_Sound_Player@@3P6AHPAVnc_ScriptableGameObj@@PBD@ZA:DWORD ; gzCreate_2D_WAV_Sound_Player
EXTRN	?Get@gzTranslateManager@@QAEPBDPBD@Z:PROC	; gzTranslateManager::Get
EXTRN	?gzTranslator@@3PAVgzTranslateManager@@A:DWORD	; gzTranslator
EXTRN	?gzLogger@@YAXPBD0ZZ:PROC			; gzLogger
EXTRN	?Add_Weapon@gzWeaponPackClass@@QAEXPAVnc_DefinitionClass@@@Z:PROC ; gzWeaponPackClass::Add_Weapon
EXTRN	?Find@gzPlayerManager@@SAPAVgzPlayer@@PAVnc_cPlayer@@@Z:PROC ; gzPlayerManager::Find
EXTRN	?Add_Weapon@nc_WeaponBagClass@@QAEXPBVnc_WeaponDefinitionClass@@H_N@Z:PROC ; nc_WeaponBagClass::Add_Weapon
EXTRN	??8aString@@QAE_NPBD@Z:PROC			; aString::operator==
EXTRN	?gzWeaponMgr@@3PAVgzWeaponManager@@A:DWORD	; gzWeaponMgr
EXTRN	?IsPresetDisabled@gzGameModeBase@@QAE_NPBD@Z:PROC ; gzGameModeBase::IsPresetDisabled
;	COMDAT ??_C@_0DI@NEMNEPOI@?$FLCrate?$FN?5You?5just?5got?5a?5?$CFs?5from?5t@
; File d:\source code\gzgm\gzplayer.h
CONST	SEGMENT
??_C@_0DI@NEMNEPOI@?$FLCrate?$FN?5You?5just?5got?5a?5?$CFs?5from?5t@ DB '['
	DB	'Crate] You just got a %s from the Random Weapon Crate.', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_06LJACFPMC@_CRATE?$AA@
CONST	SEGMENT
??_C@_06LJACFPMC@_CRATE?$AA@ DB '_CRATE', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_0DF@GDKEOHJM@?$CFls?5picked?5up?5a?5Random?5Weapon?5Cr@
CONST	SEGMENT
??_C@_0DF@GDKEOHJM@?$CFls?5picked?5up?5a?5Random?5Weapon?5Cr@ DB '%ls pic'
	DB	'ked up a Random Weapon Crate and received %s.', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0CA@IDENJGFF@Weapon_VoltAutoRifle_Player_Nod?$AA@
CONST	SEGMENT
??_C@_0CA@IDENJGFF@Weapon_VoltAutoRifle_Player_Nod?$AA@ DB 'Weapon_VoltAu'
	DB	'toRifle_Player_Nod', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_0BE@IBCCHCFF@Nod?5Volt?5Auto?5Rifle?$AA@
CONST	SEGMENT
??_C@_0BE@IBCCHCFF@Nod?5Volt?5Auto?5Rifle?$AA@ DB 'Nod Volt Auto Rifle', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BM@HPCBCCCL@Weapon_VoltAutoRifle_Player?$AA@
CONST	SEGMENT
??_C@_0BM@HPCBCCCL@Weapon_VoltAutoRifle_Player?$AA@ DB 'Weapon_VoltAutoRi'
	DB	'fle_Player', 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_0BP@JPKMHDLC@m00pwvr_aqob0004i1evag_snd?4wav?$AA@
CONST	SEGMENT
??_C@_0BP@JPKMHDLC@m00pwvr_aqob0004i1evag_snd?4wav?$AA@ DB 'm00pwvr_aqob0'
	DB	'004i1evag_snd.wav', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_0BE@FLAAAFEC@GDI?5Volt?5Auto?5Rifle?$AA@
CONST	SEGMENT
??_C@_0BE@FLAAAFEC@GDI?5Volt?5Auto?5Rifle?$AA@ DB 'GDI Volt Auto Rifle', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BP@MBCEFBLF@m00pwrj_aqob0004i1evag_snd?4wav?$AA@
CONST	SEGMENT
??_C@_0BP@MBCEFBLF@m00pwrj_aqob0004i1evag_snd?4wav?$AA@ DB 'm00pwrj_aqob0'
	DB	'004i1evag_snd.wav', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_0BK@OPFBCKCF@Weapon_RamjetRifle_Player?$AA@
CONST	SEGMENT
??_C@_0BK@OPFBCKCF@Weapon_RamjetRifle_Player?$AA@ DB 'Weapon_RamjetRifle_'
	DB	'Player', 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_0N@BEBCIPAC@Ramjet?5Rifle?$AA@
CONST	SEGMENT
??_C@_0N@BEBCIPAC@Ramjet?5Rifle?$AA@ DB 'Ramjet Rifle', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BP@LDBJBIPH@m00pwrg_aqob0004i1evag_snd?4wav?$AA@
CONST	SEGMENT
??_C@_0BP@LDBJBIPH@m00pwrg_aqob0004i1evag_snd?4wav?$AA@ DB 'm00pwrg_aqob0'
	DB	'004i1evag_snd.wav', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_0BG@LHJPMJHM@Weapon_Railgun_Player?$AA@
CONST	SEGMENT
??_C@_0BG@LHJPMJHM@Weapon_Railgun_Player?$AA@ DB 'Weapon_Railgun_Player', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_07NMJDHEIK@Railgun?$AA@
CONST	SEGMENT
??_C@_07NMJDHEIK@Railgun?$AA@ DB 'Railgun', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_0BP@OBIDKMIJ@m00pwpi_aqob0004i1evag_snd?4wav?$AA@
CONST	SEGMENT
??_C@_0BP@OBIDKMIJ@m00pwpi_aqob0004i1evag_snd?4wav?$AA@ DB 'm00pwpi_aqob0'
	DB	'004i1evag_snd.wav', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_0CA@BGNGFNL@Weapon_PersonalIonCannon_Player?$AA@
CONST	SEGMENT
??_C@_0CA@BGNGFNL@Weapon_PersonalIonCannon_Player?$AA@ DB 'Weapon_Persona'
	DB	'lIonCannon_Player', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_0BE@BNLHADBG@Personal?5Ion?5Cannon?$AA@
CONST	SEGMENT
??_C@_0BE@BNLHADBG@Personal?5Ion?5Cannon?$AA@ DB 'Personal Ion Cannon', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BP@CJEMFFEI@m00pwtf_aqob0004i1evag_snd?4wav?$AA@
CONST	SEGMENT
??_C@_0BP@CJEMFFEI@m00pwtf_aqob0004i1evag_snd?4wav?$AA@ DB 'm00pwtf_aqob0'
	DB	'004i1evag_snd.wav', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_0CD@EKPMIGEF@Weapon_TiberiumFlechetteGun_Play@
CONST	SEGMENT
??_C@_0CD@EKPMIGEF@Weapon_TiberiumFlechetteGun_Play@ DB 'Weapon_TiberiumF'
	DB	'lechetteGun_Player', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_0BH@FLHHBJAG@Tiberium?5Flechette?5Gun?$AA@
CONST	SEGMENT
??_C@_0BH@FLHHBJAG@Tiberium?5Flechette?5Gun?$AA@ DB 'Tiberium Flechette G'
	DB	'un', 00H					; `string'
CONST	ENDS
;	COMDAT ??_C@_0BP@HFJNEOBJ@m00pwlr_aqob0004i1evag_snd?4wav?$AA@
CONST	SEGMENT
??_C@_0BP@HFJNEOBJ@m00pwlr_aqob0004i1evag_snd?4wav?$AA@ DB 'm00pwlr_aqob0'
	DB	'004i1evag_snd.wav', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_0BJ@COMLIFHJ@Weapon_LaserRifle_Player?$AA@
CONST	SEGMENT
??_C@_0BJ@COMLIFHJ@Weapon_LaserRifle_Player?$AA@ DB 'Weapon_LaserRifle_Pl'
	DB	'ayer', 00H					; `string'
CONST	ENDS
;	COMDAT ??_C@_0M@JIDFGGKB@Laser?5Rifle?$AA@
CONST	SEGMENT
??_C@_0M@JIDFGGKB@Laser?5Rifle?$AA@ DB 'Laser Rifle', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BP@IIABPJHJ@m00pwlc_aqob0004i1evag_snd?4wav?$AA@
CONST	SEGMENT
??_C@_0BP@IIABPJHJ@m00pwlc_aqob0004i1evag_snd?4wav?$AA@ DB 'm00pwlc_aqob0'
	DB	'004i1evag_snd.wav', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_0BM@HDICNLIF@Weapon_LaserChaingun_Player?$AA@
CONST	SEGMENT
??_C@_0BM@HDICNLIF@Weapon_LaserChaingun_Player?$AA@ DB 'Weapon_LaserChain'
	DB	'gun_Player', 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_0P@CHLANEGF@Laser?5Chaingun?$AA@
CONST	SEGMENT
??_C@_0P@CHLANEGF@Laser?5Chaingun?$AA@ DB 'Laser Chaingun', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BO@FOAOBLNN@Weapon_SniperRifle_Player_Nod?$AA@
CONST	SEGMENT
??_C@_0BO@FOAOBLNN@Weapon_SniperRifle_Player_Nod?$AA@ DB 'Weapon_SniperRi'
	DB	'fle_Player_Nod', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_0BB@JFFODKGK@Nod?5Sniper?5Rifle?$AA@
CONST	SEGMENT
??_C@_0BB@JFFODKGK@Nod?5Sniper?5Rifle?$AA@ DB 'Nod Sniper Rifle', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BK@FHJCOGNO@Weapon_SniperRifle_Player?$AA@
CONST	SEGMENT
??_C@_0BK@FHJCOGNO@Weapon_SniperRifle_Player?$AA@ DB 'Weapon_SniperRifle_'
	DB	'Player', 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_0BB@MNMHKCOF@GDI?5Sniper?5Rifle?$AA@
CONST	SEGMENT
??_C@_0BB@MNMHKCOF@GDI?5Sniper?5Rifle?$AA@ DB 'GDI Sniper Rifle', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BP@IKOGDINN@m00pwtr_aqob0004i1evag_snd?4wav?$AA@
CONST	SEGMENT
??_C@_0BP@IKOGDINN@m00pwtr_aqob0004i1evag_snd?4wav?$AA@ DB 'm00pwtr_aqob0'
	DB	'004i1evag_snd.wav', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_0CA@KBFEMNBM@Weapon_TiberiumAutoRifle_Player?$AA@
CONST	SEGMENT
??_C@_0CA@KBFEMNBM@Weapon_TiberiumAutoRifle_Player?$AA@ DB 'Weapon_Tiberi'
	DB	'umAutoRifle_Player', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_0BE@BGDLMLLG@Tiberium?5Auto?5Rifle?$AA@
CONST	SEGMENT
??_C@_0BE@BGDLMLLG@Tiberium?5Auto?5Rifle?$AA@ DB 'Tiberium Auto Rifle', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BP@FNPMIIIN@m00pwcs_aqob0004i1evag_snd?4wav?$AA@
CONST	SEGMENT
??_C@_0BP@FNPMIIIN@m00pwcs_aqob0004i1evag_snd?4wav?$AA@ DB 'm00pwcs_aqob0'
	DB	'004i1evag_snd.wav', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_0BO@LKIHGFCM@CNC_Weapon_ChemSprayer_Player?$AA@
CONST	SEGMENT
??_C@_0BO@LKIHGFCM@CNC_Weapon_ChemSprayer_Player?$AA@ DB 'CNC_Weapon_Chem'
	DB	'Sprayer_Player', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_0BB@KGIBEMJL@Chemical?5Sprayer?$AA@
CONST	SEGMENT
??_C@_0BB@KGIBEMJL@Chemical?5Sprayer?$AA@ DB 'Chemical Sprayer', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0CB@EPHIGEJG@CnC_Weapon_RocketLauncher_Player@
CONST	SEGMENT
??_C@_0CB@EPHIGEJG@CnC_Weapon_RocketLauncher_Player@ DB 'CnC_Weapon_Rocke'
	DB	'tLauncher_Player', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_0BI@DFCFLLGM@Rocket?5Launcher?$CIStrong?$CJ?$AA@
CONST	SEGMENT
??_C@_0BI@DFCFLLGM@Rocket?5Launcher?$CIStrong?$CJ?$AA@ DB 'Rocket Launche'
	DB	'r(Strong)', 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_0BN@KIEMBBLM@Weapon_RocketLauncher_Player?$AA@
CONST	SEGMENT
??_C@_0BN@KIEMBBLM@Weapon_RocketLauncher_Player?$AA@ DB 'Weapon_RocketLau'
	DB	'ncher_Player', 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_0BG@EDNBDIJG@Rocket?5Launcher?$CIWeak?$CJ?$AA@
CONST	SEGMENT
??_C@_0BG@EDNBDIJG@Rocket?5Launcher?$CIWeak?$CJ?$AA@ DB 'Rocket Launcher('
	DB	'Weak)', 00H					; `string'
CONST	ENDS
;	COMDAT ??_C@_0BL@OOFMGFNC@Weapon_Chaingun_Player_Nod?$AA@
CONST	SEGMENT
??_C@_0BL@OOFMGFNC@Weapon_Chaingun_Player_Nod?$AA@ DB 'Weapon_Chaingun_Pl'
	DB	'ayer_Nod', 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_0O@OMMMAILG@Nod?5Chain?5Gun?$AA@
CONST	SEGMENT
??_C@_0O@OMMMAILG@Nod?5Chain?5Gun?$AA@ DB 'Nod Chain Gun', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BH@IADKAKDP@Weapon_Chaingun_Player?$AA@
CONST	SEGMENT
??_C@_0BH@IADKAKDP@Weapon_Chaingun_Player?$AA@ DB 'Weapon_Chaingun_Player'
	DB	00H						; `string'
CONST	ENDS
;	COMDAT ??_C@_0O@JALDNJLG@GDI?5Chain?5Gun?$AA@
CONST	SEGMENT
??_C@_0O@JALDNJLG@GDI?5Chain?5Gun?$AA@ DB 'GDI Chain Gun', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BP@IKDMMIEM@m00pacp_aqob0004i1evag_snd?4wav?$AA@
CONST	SEGMENT
??_C@_0BP@IKDMMIEM@m00pacp_aqob0004i1evag_snd?4wav?$AA@ DB 'm00pacp_aqob0'
	DB	'004i1evag_snd.wav', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_0BM@KBGLCCJF@Weapon_MineProximity_Player?$AA@
CONST	SEGMENT
??_C@_0BM@KBGLCCJF@Weapon_MineProximity_Player?$AA@ DB 'Weapon_MineProxim'
	DB	'ity_Player', 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_0N@LPHHBPGP@Proximity?5C4?$AA@
CONST	SEGMENT
??_C@_0N@LPHHBPGP@Proximity?5C4?$AA@ DB 'Proximity C4', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BP@HBIBICLH@m00pact_aqob0004i1evag_snd?4wav?$AA@
CONST	SEGMENT
??_C@_0BP@HBIBICLH@m00pact_aqob0004i1evag_snd?4wav?$AA@ DB 'm00pact_aqob0'
	DB	'004i1evag_snd.wav', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_0CB@OCIAMJK@CnC_Weapon_MineTimed_Player_2Max@
CONST	SEGMENT
??_C@_0CB@OCIAMJK@CnC_Weapon_MineTimed_Player_2Max@ DB 'CnC_Weapon_MineTi'
	DB	'med_Player_2Max', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_0L@PMBHBJOF@2?5Timed?5C4?$AA@
CONST	SEGMENT
??_C@_0L@PMBHBJOF@2?5Timed?5C4?$AA@ DB '2 Timed C4', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BP@MKKMBJEO@m00pac4_aqob0004i1evag_snd?4wav?$AA@
CONST	SEGMENT
??_C@_0BP@MKKMBJEO@m00pac4_aqob0004i1evag_snd?4wav?$AA@ DB 'm00pac4_aqob0'
	DB	'004i1evag_snd.wav', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_0CC@NCICHILO@CnC_Weapon_MineRemote_Player_2Ma@
CONST	SEGMENT
??_C@_0CC@NCICHILO@CnC_Weapon_MineRemote_Player_2Ma@ DB 'CnC_Weapon_MineR'
	DB	'emote_Player_2Max', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_0M@MPAENNJO@2?5Remote?5C4?$AA@
CONST	SEGMENT
??_C@_0M@MPAENNJO@2?5Remote?5C4?$AA@ DB '2 Remote C4', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0CE@KGBDMOEC@CnC_Weapon_RepairGun_Player_Spec@
CONST	SEGMENT
??_C@_0CE@KGBDMOEC@CnC_Weapon_RepairGun_Player_Spec@ DB 'CnC_Weapon_Repai'
	DB	'rGun_Player_Special', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_0BD@CDOMIID@Repair?5Gun?$CIStrong?$CJ?$AA@
CONST	SEGMENT
??_C@_0BD@CDOMIID@Repair?5Gun?$CIStrong?$CJ?$AA@ DB 'Repair Gun(Strong)', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BI@NKBDMJJH@Weapon_RepairGun_Player?$AA@
CONST	SEGMENT
??_C@_0BI@NKBDMJJH@Weapon_RepairGun_Player?$AA@ DB 'Weapon_RepairGun_Play'
	DB	'er', 00H					; `string'
CONST	ENDS
;	COMDAT ??_C@_0BB@HEAHCGL@Repair?5Gun?$CIWeak?$CJ?$AA@
CONST	SEGMENT
??_C@_0BB@HEAHCGL@Repair?5Gun?$CIWeak?$CJ?$AA@ DB 'Repair Gun(Weak)', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BP@MNCEFGCC@m00pwgl_aqob0004i1evag_snd?4wav?$AA@
CONST	SEGMENT
??_C@_0BP@MNCEFGCC@m00pwgl_aqob0004i1evag_snd?4wav?$AA@ DB 'm00pwgl_aqob0'
	DB	'004i1evag_snd.wav', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_0BO@KADDDBBC@Weapon_GrenadeLauncher_Player?$AA@
CONST	SEGMENT
??_C@_0BO@KADDDBBC@Weapon_GrenadeLauncher_Player?$AA@ DB 'Weapon_GrenadeL'
	DB	'auncher_Player', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_0BB@GIEOMMBO@Grenade?5Launcher?$AA@
CONST	SEGMENT
??_C@_0BB@GIEOMMBO@Grenade?5Launcher?$AA@ DB 'Grenade Launcher', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BP@CEHMJJHK@m00pwft_aqob0001i1evag_snd?4wav?$AA@
CONST	SEGMENT
??_C@_0BP@CEHMJJHK@m00pwft_aqob0001i1evag_snd?4wav?$AA@ DB 'm00pwft_aqob0'
	DB	'001i1evag_snd.wav', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_0BP@IJKEBKDI@CNC_Weapon_Flamethrower_Player?$AA@
CONST	SEGMENT
??_C@_0BP@IJKEBKDI@CNC_Weapon_Flamethrower_Player?$AA@ DB 'CNC_Weapon_Fla'
	DB	'methrower_Player', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_0N@LDKIPHF@Flamethrower?$AA@
CONST	SEGMENT
??_C@_0N@LDKIPHF@Flamethrower?$AA@ DB 'Flamethrower', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BP@FPJDOAN@m00pwps_aqob0004i1evag_snd?4wav?$AA@
CONST	SEGMENT
??_C@_0BP@FPJDOAN@m00pwps_aqob0004i1evag_snd?4wav?$AA@ DB 'm00pwps_aqob00'
	DB	'04i1evag_snd.wav', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_0BG@KMDKJAL@Weapon_Shotgun_Player?$AA@
CONST	SEGMENT
??_C@_0BG@KMDKJAL@Weapon_Shotgun_Player?$AA@ DB 'Weapon_Shotgun_Player', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_07DGIAOJJ@Shotgun?$AA@
CONST	SEGMENT
??_C@_07DGIAOJJ@Shotgun?$AA@ DB 'Shotgun', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_0BM@DEHMEMCG@Weapon_AutoRifle_Player_Nod?$AA@
CONST	SEGMENT
??_C@_0BM@DEHMEMCG@Weapon_AutoRifle_Player_Nod?$AA@ DB 'Weapon_AutoRifle_'
	DB	'Player_Nod', 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_0P@PNGHOHOH@Nod?5Auto?5Rifle?$AA@
CONST	SEGMENT
??_C@_0P@PNGHOHOH@Nod?5Auto?5Rifle?$AA@ DB 'Nod Auto Rifle', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BI@LKNOHKIF@Weapon_AutoRifle_Player?$AA@
CONST	SEGMENT
??_C@_0BI@LKNOHKIF@Weapon_AutoRifle_Player?$AA@ DB 'Weapon_AutoRifle_Play'
	DB	'er', 00H					; `string'
CONST	ENDS
;	COMDAT ??_C@_0P@PNBLJIDG@GDI?5Auto?5Rifle?$AA@
CONST	SEGMENT
??_C@_0P@PNBLJIDG@GDI?5Auto?5Rifle?$AA@ DB 'GDI Auto Rifle', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BP@FCCFEDPL@m00pwsr_aqob0004i1evag_snd?4wav?$AA@
CONST	SEGMENT
??_C@_0BP@FCCFEDPL@m00pwsr_aqob0004i1evag_snd?4wav?$AA@ DB 'm00pwsr_aqob0'
	DB	'004i1evag_snd.wav', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_0BP@KKPPDNBD@m00pwrl_aqob0004i1evag_snd?4wav?$AA@
CONST	SEGMENT
??_C@_0BP@KKPPDNBD@m00pwrl_aqob0004i1evag_snd?4wav?$AA@ DB 'm00pwrl_aqob0'
	DB	'004i1evag_snd.wav', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_0BP@POFGOFBI@m00pwcg_aqob0004i1evag_snd?4wav?$AA@
CONST	SEGMENT
??_C@_0BP@POFGOFBI@m00pwcg_aqob0004i1evag_snd?4wav?$AA@ DB 'm00pwcg_aqob0'
	DB	'004i1evag_snd.wav', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_0BP@FPAHBOCH@m00pwrp_aqob0001i1evag_snd?4wav?$AA@
CONST	SEGMENT
??_C@_0BP@FPAHBOCH@m00pwrp_aqob0001i1evag_snd?4wav?$AA@ DB 'm00pwrp_aqob0'
	DB	'001i1evag_snd.wav', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_0BP@ONDNFDOM@m00pwar_aqob0004i1evag_snd?4wav?$AA@
CONST	SEGMENT
??_C@_0BP@ONDNFDOM@m00pwar_aqob0004i1evag_snd?4wav?$AA@ DB 'm00pwar_aqob0'
	DB	'004i1evag_snd.wav', 00H			; `string'
CONST	ENDS
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$?Pick@Crate_RandomWeapon@@EAE_NPAVnc_SmartGameObj@@@Z DD 0ffffffffH
	DD	FLAT:__unwindfunclet$?Pick@Crate_RandomWeapon@@EAE_NPAVnc_SmartGameObj@@@Z$0
__ehfuncinfo$?Pick@Crate_RandomWeapon@@EAE_NPAVnc_SmartGameObj@@@Z DD 019930522H
	DD	01H
	DD	FLAT:__unwindtable$?Pick@Crate_RandomWeapon@@EAE_NPAVnc_SmartGameObj@@@Z
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	01H
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
xdata$x	ENDS
;	COMDAT ?Pick@Crate_RandomWeapon@@EAE_NPAVnc_SmartGameObj@@@Z
_TEXT	SEGMENT
$T71916 = -353						; size = 1
_i$60273 = -352						; size = 4
_count$60264 = -348					; size = 4
tv452 = -344						; size = 4
_rand$ = -340						; size = 4
_weapons$ = -336					; size = 312
$T71917 = -24						; size = 8
__$EHRec$ = -12						; size = 12
_Picker$ = 8						; size = 4
?Pick@Crate_RandomWeapon@@EAE_NPAVnc_SmartGameObj@@@Z PROC ; Crate_RandomWeapon::Pick, COMDAT
; _this$ = ecx

; 825  : 	{

	push	ebp
	mov	ebp, esp
	and	esp, -8					; fffffff8H
	push	-1
	push	__ehhandler$?Pick@Crate_RandomWeapon@@EAE_NPAVnc_SmartGameObj@@@Z
	mov	eax, DWORD PTR fs:0
	push	eax
	mov	DWORD PTR fs:0, esp
	sub	esp, 344				; 00000158H

; 826  : 		const char *weapons[][3] = {
; 827  : 			{ "GDI Auto Rifle", "Weapon_AutoRifle_Player", "m00pwar_aqob0004i1evag_snd.wav" },

	mov	eax, OFFSET ??_C@_0BP@ONDNFDOM@m00pwar_aqob0004i1evag_snd?4wav?$AA@
	mov	DWORD PTR _weapons$[esp+364], eax

; 828  : 			{ "Nod Auto Rifle", "Weapon_AutoRifle_Player_Nod", "m00pwar_aqob0004i1evag_snd.wav" },

	mov	DWORD PTR _weapons$[esp+376], eax

; 829  : 			{ "Shotgun", "Weapon_Shotgun_Player", "m00pwps_aqob0004i1evag_snd.wav" },
; 830  : 			{ "Flamethrower", "CNC_Weapon_Flamethrower_Player", "m00pwft_aqob0001i1evag_snd.wav" },
; 831  : 			{ "Grenade Launcher", "Weapon_GrenadeLauncher_Player", "m00pwgl_aqob0004i1evag_snd.wav" },
; 832  : 			{ "Repair Gun(Weak)", "Weapon_RepairGun_Player", "m00pwrp_aqob0001i1evag_snd.wav" },

	mov	eax, OFFSET ??_C@_0BP@FPAHBOCH@m00pwrp_aqob0001i1evag_snd?4wav?$AA@
	mov	DWORD PTR _weapons$[esp+424], eax

; 833  : 			{ "Repair Gun(Strong)", "CnC_Weapon_RepairGun_Player_Special", "m00pwrp_aqob0001i1evag_snd.wav" },

	mov	DWORD PTR _weapons$[esp+436], eax

; 834  : 			{ "2 Remote C4", "CnC_Weapon_MineRemote_Player_2Max", "m00pac4_aqob0004i1evag_snd.wav" },
; 835  : 			{ "2 Timed C4", "CnC_Weapon_MineTimed_Player_2Max", "m00pact_aqob0004i1evag_snd.wav" },
; 836  : 			{ "Proximity C4", "Weapon_MineProximity_Player", "m00pacp_aqob0004i1evag_snd.wav" },
; 837  : 			{ "GDI Chain Gun", "Weapon_Chaingun_Player", "m00pwcg_aqob0004i1evag_snd.wav" },

	mov	eax, OFFSET ??_C@_0BP@POFGOFBI@m00pwcg_aqob0004i1evag_snd?4wav?$AA@
	mov	DWORD PTR _weapons$[esp+484], eax

; 838  : 			{ "Nod Chain Gun", "Weapon_Chaingun_Player_Nod", "m00pwcg_aqob0004i1evag_snd.wav" },

	mov	DWORD PTR _weapons$[esp+496], eax

; 839  : 			{ "Rocket Launcher(Weak)", "Weapon_RocketLauncher_Player", "m00pwrl_aqob0004i1evag_snd.wav" },

	mov	eax, OFFSET ??_C@_0BP@KKPPDNBD@m00pwrl_aqob0004i1evag_snd?4wav?$AA@
	push	ebx
	mov	DWORD PTR _weapons$[esp+512], eax

; 840  : 			{ "Rocket Launcher(Strong)", "CnC_Weapon_RocketLauncher_Player", "m00pwrl_aqob0004i1evag_snd.wav" },

	mov	DWORD PTR _weapons$[esp+524], eax

; 841  : 			{ "Chemical Sprayer", "CNC_Weapon_ChemSprayer_Player", "m00pwcs_aqob0004i1evag_snd.wav" },
; 842  : 			{ "Tiberium Auto Rifle", "Weapon_TiberiumAutoRifle_Player", "m00pwtr_aqob0004i1evag_snd.wav" },
; 843  : 			{ "GDI Sniper Rifle", "Weapon_SniperRifle_Player", "m00pwsr_aqob0004i1evag_snd.wav" },

	mov	eax, OFFSET ??_C@_0BP@FCCFEDPL@m00pwsr_aqob0004i1evag_snd?4wav?$AA@
	push	esi
	push	edi
	mov	DWORD PTR _weapons$[esp+368], OFFSET ??_C@_0P@PNBLJIDG@GDI?5Auto?5Rifle?$AA@
	mov	DWORD PTR _weapons$[esp+372], OFFSET ??_C@_0BI@LKNOHKIF@Weapon_AutoRifle_Player?$AA@
	mov	DWORD PTR _weapons$[esp+380], OFFSET ??_C@_0P@PNGHOHOH@Nod?5Auto?5Rifle?$AA@
	mov	DWORD PTR _weapons$[esp+384], OFFSET ??_C@_0BM@DEHMEMCG@Weapon_AutoRifle_Player_Nod?$AA@
	mov	DWORD PTR _weapons$[esp+392], OFFSET ??_C@_07DGIAOJJ@Shotgun?$AA@
	mov	DWORD PTR _weapons$[esp+396], OFFSET ??_C@_0BG@KMDKJAL@Weapon_Shotgun_Player?$AA@
	mov	DWORD PTR _weapons$[esp+400], OFFSET ??_C@_0BP@FPJDOAN@m00pwps_aqob0004i1evag_snd?4wav?$AA@
	mov	DWORD PTR _weapons$[esp+404], OFFSET ??_C@_0N@LDKIPHF@Flamethrower?$AA@
	mov	DWORD PTR _weapons$[esp+408], OFFSET ??_C@_0BP@IJKEBKDI@CNC_Weapon_Flamethrower_Player?$AA@
	mov	DWORD PTR _weapons$[esp+412], OFFSET ??_C@_0BP@CEHMJJHK@m00pwft_aqob0001i1evag_snd?4wav?$AA@
	mov	DWORD PTR _weapons$[esp+416], OFFSET ??_C@_0BB@GIEOMMBO@Grenade?5Launcher?$AA@
	mov	DWORD PTR _weapons$[esp+420], OFFSET ??_C@_0BO@KADDDBBC@Weapon_GrenadeLauncher_Player?$AA@
	mov	DWORD PTR _weapons$[esp+424], OFFSET ??_C@_0BP@MNCEFGCC@m00pwgl_aqob0004i1evag_snd?4wav?$AA@
	mov	DWORD PTR _weapons$[esp+428], OFFSET ??_C@_0BB@HEAHCGL@Repair?5Gun?$CIWeak?$CJ?$AA@
	mov	DWORD PTR _weapons$[esp+432], OFFSET ??_C@_0BI@NKBDMJJH@Weapon_RepairGun_Player?$AA@
	mov	DWORD PTR _weapons$[esp+440], OFFSET ??_C@_0BD@CDOMIID@Repair?5Gun?$CIStrong?$CJ?$AA@
	mov	DWORD PTR _weapons$[esp+444], OFFSET ??_C@_0CE@KGBDMOEC@CnC_Weapon_RepairGun_Player_Spec@
	mov	DWORD PTR _weapons$[esp+452], OFFSET ??_C@_0M@MPAENNJO@2?5Remote?5C4?$AA@
	mov	DWORD PTR _weapons$[esp+456], OFFSET ??_C@_0CC@NCICHILO@CnC_Weapon_MineRemote_Player_2Ma@
	mov	DWORD PTR _weapons$[esp+460], OFFSET ??_C@_0BP@MKKMBJEO@m00pac4_aqob0004i1evag_snd?4wav?$AA@
	mov	DWORD PTR _weapons$[esp+464], OFFSET ??_C@_0L@PMBHBJOF@2?5Timed?5C4?$AA@
	mov	DWORD PTR _weapons$[esp+468], OFFSET ??_C@_0CB@OCIAMJK@CnC_Weapon_MineTimed_Player_2Max@
	mov	DWORD PTR _weapons$[esp+472], OFFSET ??_C@_0BP@HBIBICLH@m00pact_aqob0004i1evag_snd?4wav?$AA@
	mov	DWORD PTR _weapons$[esp+476], OFFSET ??_C@_0N@LPHHBPGP@Proximity?5C4?$AA@
	mov	DWORD PTR _weapons$[esp+480], OFFSET ??_C@_0BM@KBGLCCJF@Weapon_MineProximity_Player?$AA@
	mov	DWORD PTR _weapons$[esp+484], OFFSET ??_C@_0BP@IKDMMIEM@m00pacp_aqob0004i1evag_snd?4wav?$AA@
	mov	DWORD PTR _weapons$[esp+488], OFFSET ??_C@_0O@JALDNJLG@GDI?5Chain?5Gun?$AA@
	mov	DWORD PTR _weapons$[esp+492], OFFSET ??_C@_0BH@IADKAKDP@Weapon_Chaingun_Player?$AA@
	mov	DWORD PTR _weapons$[esp+500], OFFSET ??_C@_0O@OMMMAILG@Nod?5Chain?5Gun?$AA@
	mov	DWORD PTR _weapons$[esp+504], OFFSET ??_C@_0BL@OOFMGFNC@Weapon_Chaingun_Player_Nod?$AA@
	mov	DWORD PTR _weapons$[esp+512], OFFSET ??_C@_0BG@EDNBDIJG@Rocket?5Launcher?$CIWeak?$CJ?$AA@
	mov	DWORD PTR _weapons$[esp+516], OFFSET ??_C@_0BN@KIEMBBLM@Weapon_RocketLauncher_Player?$AA@
	mov	DWORD PTR _weapons$[esp+524], OFFSET ??_C@_0BI@DFCFLLGM@Rocket?5Launcher?$CIStrong?$CJ?$AA@
	mov	DWORD PTR _weapons$[esp+528], OFFSET ??_C@_0CB@EPHIGEJG@CnC_Weapon_RocketLauncher_Player@
	mov	DWORD PTR _weapons$[esp+536], OFFSET ??_C@_0BB@KGIBEMJL@Chemical?5Sprayer?$AA@
	mov	DWORD PTR _weapons$[esp+540], OFFSET ??_C@_0BO@LKIHGFCM@CNC_Weapon_ChemSprayer_Player?$AA@
	mov	DWORD PTR _weapons$[esp+544], OFFSET ??_C@_0BP@FNPMIIIN@m00pwcs_aqob0004i1evag_snd?4wav?$AA@
	mov	DWORD PTR _weapons$[esp+548], OFFSET ??_C@_0BE@BGDLMLLG@Tiberium?5Auto?5Rifle?$AA@
	mov	DWORD PTR _weapons$[esp+552], OFFSET ??_C@_0CA@KBFEMNBM@Weapon_TiberiumAutoRifle_Player?$AA@
	mov	DWORD PTR _weapons$[esp+556], OFFSET ??_C@_0BP@IKOGDINN@m00pwtr_aqob0004i1evag_snd?4wav?$AA@
	mov	DWORD PTR _weapons$[esp+560], OFFSET ??_C@_0BB@MNMHKCOF@GDI?5Sniper?5Rifle?$AA@
	mov	DWORD PTR _weapons$[esp+564], OFFSET ??_C@_0BK@FHJCOGNO@Weapon_SniperRifle_Player?$AA@
	mov	DWORD PTR _weapons$[esp+568], eax

; 844  : 			{ "Nod Sniper Rifle", "Weapon_SniperRifle_Player_Nod", "m00pwsr_aqob0004i1evag_snd.wav" },

	mov	DWORD PTR _weapons$[esp+572], OFFSET ??_C@_0BB@JFFODKGK@Nod?5Sniper?5Rifle?$AA@
	mov	DWORD PTR _weapons$[esp+576], OFFSET ??_C@_0BO@FOAOBLNN@Weapon_SniperRifle_Player_Nod?$AA@
	mov	DWORD PTR _weapons$[esp+580], eax

; 845  : 			{ "Laser Chaingun", "Weapon_LaserChaingun_Player", "m00pwlc_aqob0004i1evag_snd.wav" },

	mov	DWORD PTR _weapons$[esp+584], OFFSET ??_C@_0P@CHLANEGF@Laser?5Chaingun?$AA@
	mov	DWORD PTR _weapons$[esp+588], OFFSET ??_C@_0BM@HDICNLIF@Weapon_LaserChaingun_Player?$AA@
	mov	DWORD PTR _weapons$[esp+592], OFFSET ??_C@_0BP@IIABPJHJ@m00pwlc_aqob0004i1evag_snd?4wav?$AA@

; 846  : 			{ "Laser Rifle", "Weapon_LaserRifle_Player", "m00pwlr_aqob0004i1evag_snd.wav" },

	mov	DWORD PTR _weapons$[esp+596], OFFSET ??_C@_0M@JIDFGGKB@Laser?5Rifle?$AA@
	mov	DWORD PTR _weapons$[esp+600], OFFSET ??_C@_0BJ@COMLIFHJ@Weapon_LaserRifle_Player?$AA@
	mov	DWORD PTR _weapons$[esp+604], OFFSET ??_C@_0BP@HFJNEOBJ@m00pwlr_aqob0004i1evag_snd?4wav?$AA@

; 847  : 			{ "Tiberium Flechette Gun", "Weapon_TiberiumFlechetteGun_Player", "m00pwtf_aqob0004i1evag_snd.wav" },

	mov	DWORD PTR _weapons$[esp+608], OFFSET ??_C@_0BH@FLHHBJAG@Tiberium?5Flechette?5Gun?$AA@
	mov	DWORD PTR _weapons$[esp+612], OFFSET ??_C@_0CD@EKPMIGEF@Weapon_TiberiumFlechetteGun_Play@
	mov	DWORD PTR _weapons$[esp+616], OFFSET ??_C@_0BP@CJEMFFEI@m00pwtf_aqob0004i1evag_snd?4wav?$AA@

; 848  : 			{ "Personal Ion Cannon", "Weapon_PersonalIonCannon_Player", "m00pwpi_aqob0004i1evag_snd.wav" },

	mov	DWORD PTR _weapons$[esp+620], OFFSET ??_C@_0BE@BNLHADBG@Personal?5Ion?5Cannon?$AA@
	mov	DWORD PTR _weapons$[esp+624], OFFSET ??_C@_0CA@BGNGFNL@Weapon_PersonalIonCannon_Player?$AA@
	mov	DWORD PTR _weapons$[esp+628], OFFSET ??_C@_0BP@OBIDKMIJ@m00pwpi_aqob0004i1evag_snd?4wav?$AA@

; 849  : 			{ "Railgun", "Weapon_Railgun_Player", "m00pwrg_aqob0004i1evag_snd.wav" },

	mov	DWORD PTR _weapons$[esp+632], OFFSET ??_C@_07NMJDHEIK@Railgun?$AA@
	mov	DWORD PTR _weapons$[esp+636], OFFSET ??_C@_0BG@LHJPMJHM@Weapon_Railgun_Player?$AA@
	mov	DWORD PTR _weapons$[esp+640], OFFSET ??_C@_0BP@LDBJBIPH@m00pwrg_aqob0004i1evag_snd?4wav?$AA@

; 850  : 			{ "Ramjet Rifle", "Weapon_RamjetRifle_Player", "m00pwrj_aqob0004i1evag_snd.wav" },

	mov	DWORD PTR _weapons$[esp+644], OFFSET ??_C@_0N@BEBCIPAC@Ramjet?5Rifle?$AA@
	mov	DWORD PTR _weapons$[esp+648], OFFSET ??_C@_0BK@OPFBCKCF@Weapon_RamjetRifle_Player?$AA@
	mov	DWORD PTR _weapons$[esp+652], OFFSET ??_C@_0BP@MBCEFBLF@m00pwrj_aqob0004i1evag_snd?4wav?$AA@

; 851  : 			{ "GDI Volt Auto Rifle", "Weapon_VoltAutoRifle_Player", "m00pwvr_aqob0004i1evag_snd.wav" },

	mov	DWORD PTR _weapons$[esp+656], OFFSET ??_C@_0BE@FLAAAFEC@GDI?5Volt?5Auto?5Rifle?$AA@
	mov	eax, OFFSET ??_C@_0BP@JPKMHDLC@m00pwvr_aqob0004i1evag_snd?4wav?$AA@
	mov	DWORD PTR _weapons$[esp+660], OFFSET ??_C@_0BM@HPCBCCCL@Weapon_VoltAutoRifle_Player?$AA@
	mov	DWORD PTR _weapons$[esp+664], eax

; 852  : 			{ "Nod Volt Auto Rifle", "Weapon_VoltAutoRifle_Player_Nod", "m00pwvr_aqob0004i1evag_snd.wav" }

	mov	DWORD PTR _weapons$[esp+668], OFFSET ??_C@_0BE@IBCCHCFF@Nod?5Volt?5Auto?5Rifle?$AA@
	mov	DWORD PTR _weapons$[esp+672], OFFSET ??_C@_0CA@IDENJGFF@Weapon_VoltAutoRifle_Player_Nod?$AA@
	mov	DWORD PTR _weapons$[esp+676], eax

; 853  : 		};
; 854  : 		bool granted = false;
; 855  : 		int rand = -1;
; 856  : 		for (int count = 0; count < 10; count++)

	mov	DWORD PTR _count$60264[esp+368], 0
	npad	4
$LL16@Pick:

; 857  : 		{
; 858  : 			rand = gzRandom.Get_Int(0, (sizeof(weapons) / 12) - 1);

	mov	ecx, DWORD PTR ?gzRandom@@3VaRandom@@A
	mov	eax, ecx
	add	ecx, 1
	cmp	eax, 64					; 00000040H
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A, ecx
	jle	SHORT $LN24@Pick
	mov	ecx, 1
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A, ecx
$LN24@Pick:
	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, 26					; 0000001aH
	div	ecx

; 859  : 			nc_WeaponDefinitionClass *weaponDef = gzStatic_Cast(nc_WeaponDefinitionClass, nc_DefinitionMgrClass::Find_Named_Definition(weapons[rand][1], true));

	push	1
	mov	esi, edx
	lea	edx, DWORD PTR [esi+esi*2]
	mov	eax, DWORD PTR _weapons$[esp+edx*4+376]
	push	eax
	mov	DWORD PTR _rand$[esp+376], esi
	call	?Find_Named_Definition@nc_DefinitionMgrClass@@SAPAVnc_DefinitionClass@@PBD_N@Z ; nc_DefinitionMgrClass::Find_Named_Definition
	mov	ebx, eax
	add	esp, 8

; 860  : 			if (!weaponDef)

	test	ebx, ebx
	je	$LN15@Pick

; 861  : 				continue;
; 862  : 
; 863  : 			if (!gzGameMgr->GetGame()->IsPresetDisabled(weaponDef->Get_Name()))

	mov	edx, DWORD PTR [ebx]
	mov	eax, DWORD PTR [edx+48]
	mov	ecx, ebx
	call	eax
	mov	ecx, DWORD PTR ?gzGameMgr@@3PAVgzGameManager@@A ; gzGameMgr
	push	eax
	call	?GetGame@gzGameManager@@QAEPAVgzGameModeBase@@XZ ; gzGameManager::GetGame
	mov	ecx, eax
	call	?IsPresetDisabled@gzGameModeBase@@QAE_NPBD@Z ; gzGameModeBase::IsPresetDisabled
	test	al, al
	jne	$LN15@Pick

; 864  : 			{
; 865  : 				// Weapon ban check
; 866  : 				bool isBanned = false;
; 867  : 				for (unsigned int i = 0; i < gzWeaponMgr->m_settings->Weapons.Ban.Count(); i++)

	mov	ecx, DWORD PTR ?gzWeaponMgr@@3PAVgzWeaponManager@@A ; gzWeaponMgr
	mov	eax, DWORD PTR [ecx+40]
	cmp	DWORD PTR [eax+116], 0
	mov	DWORD PTR _i$60273[esp+368], 0
	jbe	$LN2@Pick
$LL11@Pick:

; 868  : 				{
; 869  : 					if (gzWeaponMgr->m_settings->Weapons.Ban[i]->Preset == Picker->definition->Get_Name())

	mov	edx, DWORD PTR _Picker$[ebp]
	mov	ecx, DWORD PTR [edx+1724]
	mov	esi, DWORD PTR _i$60273[esp+368]
	mov	edi, DWORD PTR [eax+108]
	mov	eax, DWORD PTR [ecx]
	mov	edx, DWORD PTR [eax+48]
	add	esi, esi
	add	esi, esi
	add	edi, esi
	call	edx
	mov	ecx, DWORD PTR [edi]
	push	eax
	call	??8aString@@QAE_NPBD@Z			; aString::operator==
	test	al, al

; 870  : 					{
; 871  : 						for (unsigned int j = 0; j < gzWeaponMgr->m_settings->Weapons.Ban[i]->WeaponList.Count(); j++)

	mov	eax, DWORD PTR ?gzWeaponMgr@@3PAVgzWeaponManager@@A ; gzWeaponMgr
	je	$LN10@Pick
	mov	ecx, DWORD PTR [eax+40]
	mov	edx, DWORD PTR [ecx+108]
	mov	ecx, DWORD PTR [edx+esi]
	xor	edi, edi
	cmp	DWORD PTR [ecx+20], edi
	jbe	$LN10@Pick
$LL7@Pick:

; 872  : 						{
; 873  : 							if (gzWeaponMgr->m_settings->Weapons.Ban[i]->WeaponList[j] == weaponDef->Get_Name())

	mov	edx, DWORD PTR [eax+40]
	mov	eax, DWORD PTR [edx+108]
	push	edi
	lea	ecx, DWORD PTR $T71917[esp+372]
	add	eax, esi
	push	ecx
	mov	ecx, DWORD PTR [eax]
	add	ecx, 8
	call	??A?$aStringArrayBase@VaString@@@@QAE?AVaString@@I@Z ; aStringArrayBase<aString>::operator[]
	mov	DWORD PTR tv452[esp+368], eax
	mov	edx, DWORD PTR [ebx]
	mov	eax, DWORD PTR [edx+48]
	mov	ecx, ebx
	mov	DWORD PTR __$EHRec$[esp+376], 0
	call	eax
	mov	ecx, DWORD PTR tv452[esp+368]
	push	eax
	call	??8aString@@QAE_NPBD@Z			; aString::operator==
	lea	ecx, DWORD PTR $T71917[esp+368]
	mov	BYTE PTR $T71916[esp+368], al
	mov	DWORD PTR __$EHRec$[esp+376], -1
	call	??1aStringBase@@UAE@XZ			; aStringBase::~aStringBase
	cmp	BYTE PTR $T71916[esp+368], 0
	jne	$LN15@Pick
	mov	eax, DWORD PTR ?gzWeaponMgr@@3PAVgzWeaponManager@@A ; gzWeaponMgr
	mov	ecx, DWORD PTR [eax+40]
	mov	edx, DWORD PTR [ecx+108]
	mov	ecx, DWORD PTR [edx+esi]
	add	edi, 1
	cmp	edi, DWORD PTR [ecx+20]
	jb	SHORT $LL7@Pick
$LN10@Pick:

; 864  : 			{
; 865  : 				// Weapon ban check
; 866  : 				bool isBanned = false;
; 867  : 				for (unsigned int i = 0; i < gzWeaponMgr->m_settings->Weapons.Ban.Count(); i++)

	mov	ecx, DWORD PTR _i$60273[esp+368]
	mov	eax, DWORD PTR [eax+40]
	add	ecx, 1
	cmp	ecx, DWORD PTR [eax+116]
	mov	DWORD PTR _i$60273[esp+368], ecx
	jb	$LL11@Pick

; 853  : 		};
; 854  : 		bool granted = false;
; 855  : 		int rand = -1;
; 856  : 		for (int count = 0; count < 10; count++)

	mov	esi, DWORD PTR _rand$[esp+368]
$LN2@Pick:

; 874  : 							{
; 875  : 								isBanned = true;
; 876  : 								break;
; 877  : 							}
; 878  : 						}
; 879  : 						if (isBanned)
; 880  : 							break;
; 881  : 					}
; 882  : 				}
; 883  : 				if (isBanned)
; 884  : 					continue;
; 885  : 
; 886  : 				Picker->WeaponBag->Add_Weapon(weaponDef, weaponDef->ClipSize.Get(), true);

	push	1
	lea	ecx, DWORD PTR [ebx+116]
	call	?Get@nc_IntDataSafeClass@@QAEHXZ	; nc_IntDataSafeClass::Get
	mov	edi, DWORD PTR _Picker$[ebp]
	mov	ecx, DWORD PTR [edi+1968]
	push	eax
	push	ebx
	call	?Add_Weapon@nc_WeaponBagClass@@QAEXPBVnc_WeaponDefinitionClass@@H_N@Z ; nc_WeaponBagClass::Add_Weapon

; 887  : 				gzPlayer *gzData = gzPlayerManager::Find(Picker->Player);

	mov	edx, DWORD PTR [edi+2400]
	push	edx
	call	?Find@gzPlayerManager@@SAPAVgzPlayer@@PAVnc_cPlayer@@@Z ; gzPlayerManager::Find
	add	esp, 4

; 888  : 				if (gzData)

	test	eax, eax
	je	SHORT $LN1@Pick

; 889  : 					gzData->GetWeaponPack()->Add_Weapon(weaponDef);

	mov	ecx, DWORD PTR [eax+60]
	push	ebx
	call	?Add_Weapon@gzWeaponPackClass@@QAEXPAVnc_DefinitionClass@@@Z ; gzWeaponPackClass::Add_Weapon
$LN1@Pick:

; 890  : 				gzLogger("_CRATE", "%ls picked up a Random Weapon Crate and received %s.",
; 891  : 					Picker->Player->PlayerName.m_Buffer,
; 892  : 					weapons[rand][0]
; 893  : 				);

	mov	ecx, DWORD PTR [edi+2400]
	mov	edx, DWORD PTR [ecx+1880]
	lea	esi, DWORD PTR [esi+esi*2]
	add	esi, esi
	add	esi, esi
	mov	eax, DWORD PTR _weapons$[esp+esi+368]
	push	eax
	push	edx
	push	OFFSET ??_C@_0DF@GDKEOHJM@?$CFls?5picked?5up?5a?5Random?5Weapon?5Cr@
	push	OFFSET ??_C@_06LJACFPMC@_CRATE?$AA@
	call	?gzLogger@@YAXPBD0ZZ			; gzLogger

; 894  : 				PagePlayer(Picker->Player->PlayerId, "[Crate] You just got a %s from the Random Weapon Crate.", gzTranslator->Get(weaponDef->Get_Name()));

	mov	eax, DWORD PTR [ebx]
	mov	edx, DWORD PTR [eax+48]
	add	esp, 16					; 00000010H
	mov	ecx, ebx
	call	edx
	mov	ecx, DWORD PTR ?gzTranslator@@3PAVgzTranslateManager@@A ; gzTranslator
	push	eax
	call	?Get@gzTranslateManager@@QAEPBDPBD@Z	; gzTranslateManager::Get
	push	eax
	mov	eax, DWORD PTR [edi+2400]
	mov	ecx, DWORD PTR [eax+1884]
	push	OFFSET ??_C@_0DI@NEMNEPOI@?$FLCrate?$FN?5You?5just?5got?5a?5?$CFs?5from?5t@
	push	ecx
	call	?PagePlayer@@YAXHPBDZZ			; PagePlayer

; 895  : 				gzCreate_2D_WAV_Sound_Player(Picker, weapons[rand][2]);

	mov	edx, DWORD PTR _weapons$[esp+esi+388]
	push	edx
	push	edi
	call	DWORD PTR ?gzCreate_2D_WAV_Sound_Player@@3P6AHPAVnc_ScriptableGameObj@@PBD@ZA ; gzCreate_2D_WAV_Sound_Player
	add	esp, 20					; 00000014H

; 896  : 				granted = true;

	mov	al, 1

; 897  : 				break;
; 898  : 			}
; 899  : 		}
; 900  : 		return granted;
; 901  : 	}

	mov	ecx, DWORD PTR __$EHRec$[esp+368]
	mov	DWORD PTR fs:0, ecx
	pop	edi
	pop	esi
	pop	ebx
	mov	esp, ebp
	pop	ebp
	ret	4
$LN15@Pick:

; 853  : 		};
; 854  : 		bool granted = false;
; 855  : 		int rand = -1;
; 856  : 		for (int count = 0; count < 10; count++)

	mov	eax, DWORD PTR _count$60264[esp+368]
	add	eax, 1
	cmp	eax, 10					; 0000000aH
	mov	DWORD PTR _count$60264[esp+368], eax
	jl	$LL16@Pick

; 897  : 				break;
; 898  : 			}
; 899  : 		}
; 900  : 		return granted;
; 901  : 	}

	mov	ecx, DWORD PTR __$EHRec$[esp+368]
	pop	edi
	pop	esi
	xor	al, al
	mov	DWORD PTR fs:0, ecx
	pop	ebx
	mov	esp, ebp
	pop	ebp
	ret	4
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$?Pick@Crate_RandomWeapon@@EAE_NPAVnc_SmartGameObj@@@Z$0:
	lea	ecx, DWORD PTR $T71917[ebp]
	jmp	??1aString@@UAE@XZ
__ehhandler$?Pick@Crate_RandomWeapon@@EAE_NPAVnc_SmartGameObj@@@Z:
	mov	eax, OFFSET __ehfuncinfo$?Pick@Crate_RandomWeapon@@EAE_NPAVnc_SmartGameObj@@@Z
	jmp	___CxxFrameHandler3
text$x	ENDS
?Pick@Crate_RandomWeapon@@EAE_NPAVnc_SmartGameObj@@@Z ENDP ; Crate_RandomWeapon::Pick
PUBLIC	??_7Crate_Money@@6B@				; Crate_Money::`vftable'
PUBLIC	??0Crate_Money@@QAE@XZ				; Crate_Money::Crate_Money
PUBLIC	??_R4Crate_Money@@6B@				; Crate_Money::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVCrate_Money@@@8				; Crate_Money `RTTI Type Descriptor'
PUBLIC	??_R3Crate_Money@@8				; Crate_Money::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2Crate_Money@@8				; Crate_Money::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@Crate_Money@@8			; Crate_Money::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?GetName@Crate_Money@@EAEPBDXZ			; Crate_Money::GetName
PUBLIC	?GetType@Crate_Money@@EAEHXZ			; Crate_Money::GetType
PUBLIC	?GetPercent@Crate_Money@@EAEIXZ			; Crate_Money::GetPercent
PUBLIC	?Pick@Crate_Money@@EAE_NPAVnc_SmartGameObj@@@Z	; Crate_Money::Pick
;	COMDAT ??_R1A@?0A@EA@Crate_Money@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@Crate_Money@@8 DD FLAT:??_R0?AVCrate_Money@@@8 ; Crate_Money::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3Crate_Money@@8
rdata$r	ENDS
;	COMDAT ??_R2Crate_Money@@8
rdata$r	SEGMENT
??_R2Crate_Money@@8 DD FLAT:??_R1A@?0A@EA@Crate_Money@@8 ; Crate_Money::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzCrateBase@@8
rdata$r	ENDS
;	COMDAT ??_R3Crate_Money@@8
rdata$r	SEGMENT
??_R3Crate_Money@@8 DD 00H				; Crate_Money::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2Crate_Money@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVCrate_Money@@@8
_DATA	SEGMENT
??_R0?AVCrate_Money@@@8 DD FLAT:??_7type_info@@6B@	; Crate_Money `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVCrate_Money@@', 00H
_DATA	ENDS
;	COMDAT ??_R4Crate_Money@@6B@
rdata$r	SEGMENT
??_R4Crate_Money@@6B@ DD 00H				; Crate_Money::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVCrate_Money@@@8
	DD	FLAT:??_R3Crate_Money@@8
rdata$r	ENDS
;	COMDAT ??_7Crate_Money@@6B@
CONST	SEGMENT
??_7Crate_Money@@6B@ DD FLAT:??_R4Crate_Money@@6B@	; Crate_Money::`vftable'
	DD	FLAT:?GetName@Crate_Money@@EAEPBDXZ
	DD	FLAT:?GetType@Crate_Money@@EAEHXZ
	DD	FLAT:?GetPercent@Crate_Money@@EAEIXZ
	DD	FLAT:?SkipDefaultOutput@gzCrateBase@@UAE_NXZ
	DD	FLAT:?Pick@Crate_Money@@EAE_NPAVnc_SmartGameObj@@@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0Crate_Money@@QAE@XZ
_TEXT	SEGMENT
??0Crate_Money@@QAE@XZ PROC				; Crate_Money::Crate_Money, COMDAT
; _this$ = ecx
	xor	eax, eax
	push	esi
	mov	esi, ecx
	mov	DWORD PTR [esi+4], eax
	mov	BYTE PTR [esi+8], al
	mov	DWORD PTR [esi], OFFSET ??_7gzCrateBase@@6B@
	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	mov	eax, esi
	je	SHORT $LN8@Crate_Mone
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], esi
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN8@Crate_Mone:
	mov	DWORD PTR [esi], OFFSET ??_7Crate_Money@@6B@
	pop	esi
	ret	0
??0Crate_Money@@QAE@XZ ENDP				; Crate_Money::Crate_Money
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetName@Crate_Money@@EAEPBDXZ
_TEXT	SEGMENT
?GetName@Crate_Money@@EAEPBDXZ PROC			; Crate_Money::GetName, COMDAT
; _this$ = ecx

; 908  : 		return "Money";

	mov	eax, OFFSET ??_C@_05INIBOMDG@Money?$AA@

; 909  : 	};

	ret	0
?GetName@Crate_Money@@EAEPBDXZ ENDP			; Crate_Money::GetName
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetType@Crate_Money@@EAEHXZ
_TEXT	SEGMENT
?GetType@Crate_Money@@EAEHXZ PROC			; Crate_Money::GetType, COMDAT
; _this$ = ecx

; 912  : 		return CRATE_SOLDIER;

	mov	eax, 1

; 913  : 	};

	ret	0
?GetType@Crate_Money@@EAEHXZ ENDP			; Crate_Money::GetType
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetPercent@Crate_Money@@EAEIXZ
_TEXT	SEGMENT
?GetPercent@Crate_Money@@EAEIXZ PROC			; Crate_Money::GetPercent, COMDAT
; _this$ = ecx

; 916  : 		return this->m_percent->Money;

	mov	eax, DWORD PTR ?m_percent@gzCrateBase@@1PBUgzCratePercentStruct@@B ; gzCrateBase::m_percent
	mov	eax, DWORD PTR [eax+4]

; 917  : 	};

	ret	0
?GetPercent@Crate_Money@@EAEIXZ ENDP			; Crate_Money::GetPercent
_TEXT	ENDS
PUBLIC	??_C@_0EC@IALJPDNK@?$FLCrate?$FN?5You?5just?5got?5the?5Demoney@ ; `string'
PUBLIC	??_C@_0BP@DONBNCPC@?$CFls?5picked?5up?5a?5Demoney?5Crate?4?$AA@ ; `string'
PUBLIC	??_C@_0EC@HDJEOJPM@?$FLCrate?$FN?5You?5just?5got?5the?5Money?5C@ ; `string'
PUBLIC	??_C@_0BN@JGEMPOOA@?$CFls?5picked?5up?5a?5Money?5Crate?4?$AA@ ; `string'
;	COMDAT ??_C@_0EC@IALJPDNK@?$FLCrate?$FN?5You?5just?5got?5the?5Demoney@
; File d:\source code\alib\include\arandom.h
CONST	SEGMENT
??_C@_0EC@IALJPDNK@?$FLCrate?$FN?5You?5just?5got?5the?5Demoney@ DB '[Crat'
	DB	'e] You just got the Demoney Crate, you have lost %d credits.', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BP@DONBNCPC@?$CFls?5picked?5up?5a?5Demoney?5Crate?4?$AA@
CONST	SEGMENT
??_C@_0BP@DONBNCPC@?$CFls?5picked?5up?5a?5Demoney?5Crate?4?$AA@ DB '%ls p'
	DB	'icked up a Demoney Crate.', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_0EC@HDJEOJPM@?$FLCrate?$FN?5You?5just?5got?5the?5Money?5C@
CONST	SEGMENT
??_C@_0EC@HDJEOJPM@?$FLCrate?$FN?5You?5just?5got?5the?5Money?5C@ DB '[Cra'
	DB	'te] You just got the Money Crate, you have gained %d credits.'
	DB	00H						; `string'
CONST	ENDS
;	COMDAT ??_C@_0BN@JGEMPOOA@?$CFls?5picked?5up?5a?5Money?5Crate?4?$AA@
CONST	SEGMENT
??_C@_0BN@JGEMPOOA@?$CFls?5picked?5up?5a?5Money?5Crate?4?$AA@ DB '%ls pic'
	DB	'ked up a Money Crate.', 00H			; `string'
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
CONST	ENDS
;	COMDAT ?Pick@Crate_Money@@EAE_NPAVnc_SmartGameObj@@@Z
_TEXT	SEGMENT
_Amount$ = -4						; size = 4
tv254 = 8						; size = 4
_Picker$ = 8						; size = 4
?Pick@Crate_Money@@EAE_NPAVnc_SmartGameObj@@@Z PROC	; Crate_Money::Pick, COMDAT
; _this$ = ecx

; 919  : 	{

	push	ecx
	push	esi

; 920  : 		int	Amount = gzRandom.Get_Int(1, 1000), RndGood = gzRandom.Get_Int(1, 2);

	mov	esi, DWORD PTR ?gzRandom@@3VaRandom@@A
	mov	eax, esi
	add	esi, 1
	cmp	eax, 64					; 00000040H
	push	edi
	jle	SHORT $LN9@Pick@2
	mov	esi, 1
$LN9@Pick@2:
	mov	ecx, DWORD PTR ?gzRandom@@3VaRandom@@A+4
	imul	ecx, 22695475				; 015a4e33H
	add	ecx, esi
	mov	eax, ecx
	xor	edx, edx
	shr	eax, 16					; 00000010H
	mov	edi, 1000				; 000003e8H
	div	edi
	mov	edi, edx
	mov	edx, esi
	add	edi, 1
	add	esi, 1
	cmp	edx, 64					; 00000040H
	mov	DWORD PTR _Amount$[esp+12], edi
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A, esi
	jle	SHORT $LN16@Pick@2
	mov	esi, 1
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A, esi
$LN16@Pick@2:
	imul	ecx, 22695475				; 015a4e33H
	add	ecx, esi

; 921  : 		if (RndGood	== 1)
; 922  : 		{
; 923  : 			Picker->Player->Increment_Money((float)Amount);

	mov	esi, DWORD PTR _Picker$[esp+8]
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A+4, ecx
	shr	ecx, 16					; 00000010H
	and	ecx, 1
	add	ecx, 1
	cmp	ecx, 1
	mov	ecx, DWORD PTR [esi+2400]
	push	ecx
	jne	SHORT $LN2@Pick@2
	mov	eax, DWORD PTR [ecx]
	fild	DWORD PTR _Amount$[esp+16]
	mov	edx, DWORD PTR [eax+16]
	fstp	DWORD PTR [esp]
	call	edx

; 924  : 			gzLogger("_CRATE", "%ls picked up a Money Crate.", Picker->Player->PlayerName.m_Buffer);

	mov	eax, DWORD PTR [esi+2400]
	mov	ecx, DWORD PTR [eax+1880]
	push	ecx
	push	OFFSET ??_C@_0BN@JGEMPOOA@?$CFls?5picked?5up?5a?5Money?5Crate?4?$AA@
	push	OFFSET ??_C@_06LJACFPMC@_CRATE?$AA@
	call	?gzLogger@@YAXPBD0ZZ			; gzLogger

; 925  : 			PagePlayer(Picker->Player->PlayerId, "[Crate] You just got the Money Crate, you have gained %d credits.", Amount);

	push	edi
	push	OFFSET ??_C@_0EC@HDJEOJPM@?$FLCrate?$FN?5You?5just?5got?5the?5Money?5C@

; 926  : 		}
; 927  : 		else

	jmp	SHORT $LN19@Pick@2
$LN2@Pick@2:

; 928  : 		{
; 929  : 			Picker->Player->Increment_Money((float)-Amount);

	mov	edx, DWORD PTR [ecx]
	mov	edx, DWORD PTR [edx+16]
	mov	eax, edi
	neg	eax
	mov	DWORD PTR tv254[esp+12], eax
	fild	DWORD PTR tv254[esp+12]
	fstp	DWORD PTR [esp]
	call	edx

; 930  : 			gzLogger("_CRATE", "%ls picked up a Demoney Crate.", Picker->Player->PlayerName.m_Buffer);

	mov	eax, DWORD PTR [esi+2400]
	mov	ecx, DWORD PTR [eax+1880]
	push	ecx
	push	OFFSET ??_C@_0BP@DONBNCPC@?$CFls?5picked?5up?5a?5Demoney?5Crate?4?$AA@
	push	OFFSET ??_C@_06LJACFPMC@_CRATE?$AA@
	call	?gzLogger@@YAXPBD0ZZ			; gzLogger

; 931  : 			PagePlayer(Picker->Player->PlayerId, "[Crate] You just got the Demoney Crate, you have lost %d credits.", Amount);

	push	edi
	push	OFFSET ??_C@_0EC@IALJPDNK@?$FLCrate?$FN?5You?5just?5got?5the?5Demoney@
$LN19@Pick@2:
	mov	edx, DWORD PTR [esi+2400]
	mov	eax, DWORD PTR [edx+1884]
	push	eax
	call	?PagePlayer@@YAXHPBDZZ			; PagePlayer
	add	esp, 24					; 00000018H
	pop	edi

; 932  : 		}
; 933  : 		return true;

	mov	al, 1
	pop	esi

; 934  : 	};

	pop	ecx
	ret	4
?Pick@Crate_Money@@EAE_NPAVnc_SmartGameObj@@@Z ENDP	; Crate_Money::Pick
_TEXT	ENDS
PUBLIC	??_7Crate_Points@@6B@				; Crate_Points::`vftable'
PUBLIC	??0Crate_Points@@QAE@XZ				; Crate_Points::Crate_Points
PUBLIC	??_R4Crate_Points@@6B@				; Crate_Points::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVCrate_Points@@@8			; Crate_Points `RTTI Type Descriptor'
PUBLIC	??_R3Crate_Points@@8				; Crate_Points::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2Crate_Points@@8				; Crate_Points::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@Crate_Points@@8			; Crate_Points::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?GetName@Crate_Points@@EAEPBDXZ			; Crate_Points::GetName
PUBLIC	?GetType@Crate_Points@@EAEHXZ			; Crate_Points::GetType
PUBLIC	?GetPercent@Crate_Points@@EAEIXZ		; Crate_Points::GetPercent
PUBLIC	?Pick@Crate_Points@@EAE_NPAVnc_SmartGameObj@@@Z	; Crate_Points::Pick
;	COMDAT ??_R1A@?0A@EA@Crate_Points@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@Crate_Points@@8 DD FLAT:??_R0?AVCrate_Points@@@8 ; Crate_Points::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3Crate_Points@@8
rdata$r	ENDS
;	COMDAT ??_R2Crate_Points@@8
rdata$r	SEGMENT
??_R2Crate_Points@@8 DD FLAT:??_R1A@?0A@EA@Crate_Points@@8 ; Crate_Points::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzCrateBase@@8
rdata$r	ENDS
;	COMDAT ??_R3Crate_Points@@8
rdata$r	SEGMENT
??_R3Crate_Points@@8 DD 00H				; Crate_Points::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2Crate_Points@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVCrate_Points@@@8
_DATA	SEGMENT
??_R0?AVCrate_Points@@@8 DD FLAT:??_7type_info@@6B@	; Crate_Points `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVCrate_Points@@', 00H
_DATA	ENDS
;	COMDAT ??_R4Crate_Points@@6B@
rdata$r	SEGMENT
??_R4Crate_Points@@6B@ DD 00H				; Crate_Points::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVCrate_Points@@@8
	DD	FLAT:??_R3Crate_Points@@8
rdata$r	ENDS
;	COMDAT ??_7Crate_Points@@6B@
CONST	SEGMENT
??_7Crate_Points@@6B@ DD FLAT:??_R4Crate_Points@@6B@	; Crate_Points::`vftable'
	DD	FLAT:?GetName@Crate_Points@@EAEPBDXZ
	DD	FLAT:?GetType@Crate_Points@@EAEHXZ
	DD	FLAT:?GetPercent@Crate_Points@@EAEIXZ
	DD	FLAT:?SkipDefaultOutput@gzCrateBase@@UAE_NXZ
	DD	FLAT:?Pick@Crate_Points@@EAE_NPAVnc_SmartGameObj@@@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0Crate_Points@@QAE@XZ
_TEXT	SEGMENT
??0Crate_Points@@QAE@XZ PROC				; Crate_Points::Crate_Points, COMDAT
; _this$ = ecx
	xor	eax, eax
	push	esi
	mov	esi, ecx
	mov	DWORD PTR [esi+4], eax
	mov	BYTE PTR [esi+8], al
	mov	DWORD PTR [esi], OFFSET ??_7gzCrateBase@@6B@
	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	mov	eax, esi
	je	SHORT $LN8@Crate_Poin
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], esi
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN8@Crate_Poin:
	mov	DWORD PTR [esi], OFFSET ??_7Crate_Points@@6B@
	pop	esi
	ret	0
??0Crate_Points@@QAE@XZ ENDP				; Crate_Points::Crate_Points
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetName@Crate_Points@@EAEPBDXZ
_TEXT	SEGMENT
?GetName@Crate_Points@@EAEPBDXZ PROC			; Crate_Points::GetName, COMDAT
; _this$ = ecx

; 941  : 		return "Points";

	mov	eax, OFFSET ??_C@_06KANFALAM@Points?$AA@

; 942  : 	};

	ret	0
?GetName@Crate_Points@@EAEPBDXZ ENDP			; Crate_Points::GetName
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetType@Crate_Points@@EAEHXZ
_TEXT	SEGMENT
?GetType@Crate_Points@@EAEHXZ PROC			; Crate_Points::GetType, COMDAT
; _this$ = ecx

; 945  : 		return CRATE_SOLDIER;

	mov	eax, 1

; 946  : 	};

	ret	0
?GetType@Crate_Points@@EAEHXZ ENDP			; Crate_Points::GetType
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetPercent@Crate_Points@@EAEIXZ
_TEXT	SEGMENT
?GetPercent@Crate_Points@@EAEIXZ PROC			; Crate_Points::GetPercent, COMDAT
; _this$ = ecx

; 949  : 		return this->m_percent->Points;

	mov	eax, DWORD PTR ?m_percent@gzCrateBase@@1PBUgzCratePercentStruct@@B ; gzCrateBase::m_percent
	mov	eax, DWORD PTR [eax+8]

; 950  : 	};

	ret	0
?GetPercent@Crate_Points@@EAEIXZ ENDP			; Crate_Points::GetPercent
_TEXT	ENDS
PUBLIC	??_C@_0DG@DMLFFJGG@msg?5?$FLCrate?$FN?3?5Hope?5you?5won?8t?5miss@ ; `string'
PUBLIC	??_C@_0DN@EMCPLDCM@?$FLCrate?$FN?5You?5just?5got?5the?5Depoint@ ; `string'
PUBLIC	??_C@_0BP@NEPLHJED@?$CFS?5picked?5up?5a?5Depoints?5Crate?4?$AA@ ; `string'
PUBLIC	??_C@_0DL@NCFHFFCD@msg?5?$FLCrate?$FN?3?5Enjoy?5those?5?$CFd?5poin@ ; `string'
PUBLIC	??_C@_0EC@GPEHEGIB@?$FLCrate?$FN?5You?5just?5got?5the?5Points?5@ ; `string'
PUBLIC	??_C@_0BO@HKBDEAPH@?$CFls?5picked?5up?5a?5Points?5Crate?4?$AA@ ; `string'
;	COMDAT ??_C@_0DG@DMLFFJGG@msg?5?$FLCrate?$FN?3?5Hope?5you?5won?8t?5miss@
; File d:\source code\alib\include\arandom.h
CONST	SEGMENT
??_C@_0DG@DMLFFJGG@msg?5?$FLCrate?$FN?3?5Hope?5you?5won?8t?5miss@ DB 'msg'
	DB	' [Crate]: Hope you won''t miss those %d points, %s.', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0DN@EMCPLDCM@?$FLCrate?$FN?5You?5just?5got?5the?5Depoint@
CONST	SEGMENT
??_C@_0DN@EMCPLDCM@?$FLCrate?$FN?5You?5just?5got?5the?5Depoint@ DB '[Crat'
	DB	'e] You just got the Depoints Crate, you lost %d points.', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BP@NEPLHJED@?$CFS?5picked?5up?5a?5Depoints?5Crate?4?$AA@
CONST	SEGMENT
??_C@_0BP@NEPLHJED@?$CFS?5picked?5up?5a?5Depoints?5Crate?4?$AA@ DB '%S pi'
	DB	'cked up a Depoints Crate.', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_0DL@NCFHFFCD@msg?5?$FLCrate?$FN?3?5Enjoy?5those?5?$CFd?5poin@
CONST	SEGMENT
??_C@_0DL@NCFHFFCD@msg?5?$FLCrate?$FN?3?5Enjoy?5those?5?$CFd?5poin@ DB 'm'
	DB	'sg [Crate]: Enjoy those %d points from the crate god, %s.', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0EC@GPEHEGIB@?$FLCrate?$FN?5You?5just?5got?5the?5Points?5@
CONST	SEGMENT
??_C@_0EC@GPEHEGIB@?$FLCrate?$FN?5You?5just?5got?5the?5Points?5@ DB '[Cra'
	DB	'te] You just got the Points Crate, you have gained %d points.'
	DB	00H						; `string'
CONST	ENDS
;	COMDAT ??_C@_0BO@HKBDEAPH@?$CFls?5picked?5up?5a?5Points?5Crate?4?$AA@
CONST	SEGMENT
??_C@_0BO@HKBDEAPH@?$CFls?5picked?5up?5a?5Points?5Crate?4?$AA@ DB '%ls pi'
	DB	'cked up a Points Crate.', 00H		; `string'
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
CONST	ENDS
;	COMDAT ?Pick@Crate_Points@@EAE_NPAVnc_SmartGameObj@@@Z
_TEXT	SEGMENT
_Amount$ = -4						; size = 4
tv265 = 8						; size = 4
_Picker$ = 8						; size = 4
?Pick@Crate_Points@@EAE_NPAVnc_SmartGameObj@@@Z PROC	; Crate_Points::Pick, COMDAT
; _this$ = ecx

; 952  : 	{

	push	ecx
	push	esi

; 953  : 		int	Amount = gzRandom.Get_Int(1, 500), RndGood = gzRandom.Get_Int(1, 2);

	mov	esi, DWORD PTR ?gzRandom@@3VaRandom@@A
	mov	eax, esi
	add	esi, 1
	cmp	eax, 64					; 00000040H
	push	edi
	jle	SHORT $LN13@Pick@3
	mov	esi, 1
$LN13@Pick@3:
	mov	ecx, DWORD PTR ?gzRandom@@3VaRandom@@A+4
	imul	ecx, 22695475				; 015a4e33H
	add	ecx, esi
	mov	eax, ecx
	xor	edx, edx
	shr	eax, 16					; 00000010H
	mov	edi, 500				; 000001f4H
	div	edi
	mov	edi, edx
	mov	edx, esi
	add	edi, 1
	add	esi, 1
	cmp	edx, 64					; 00000040H
	mov	DWORD PTR _Amount$[esp+12], edi
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A, esi
	jle	SHORT $LN20@Pick@3
	mov	esi, 1
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A, esi
$LN20@Pick@3:
	imul	ecx, 22695475				; 015a4e33H
	add	ecx, esi

; 954  : 		if (RndGood == 1)
; 955  : 		{
; 956  : 			Picker->Player->Increment_Score((float)Amount);

	mov	esi, DWORD PTR _Picker$[esp+8]
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A+4, ecx
	shr	ecx, 16					; 00000010H
	and	ecx, 1
	add	ecx, 1
	cmp	ecx, 1
	mov	ecx, DWORD PTR [esi+2400]
	push	ecx
	jne	SHORT $LN2@Pick@3
	mov	eax, DWORD PTR [ecx]
	fild	DWORD PTR _Amount$[esp+16]
	mov	edx, DWORD PTR [eax+8]
	fstp	DWORD PTR [esp]
	call	edx

; 957  : 			gzLogger("_CRATE", "%ls picked up a Points Crate.", Picker->Player->PlayerName.m_Buffer);

	mov	eax, DWORD PTR [esi+2400]
	mov	ecx, DWORD PTR [eax+1880]
	push	ecx
	push	OFFSET ??_C@_0BO@HKBDEAPH@?$CFls?5picked?5up?5a?5Points?5Crate?4?$AA@
	push	OFFSET ??_C@_06LJACFPMC@_CRATE?$AA@
	call	?gzLogger@@YAXPBD0ZZ			; gzLogger

; 958  : 			PagePlayer(Picker->Player->PlayerId, "[Crate] You just got the Points Crate, you have gained %d points.", Amount);

	mov	edx, DWORD PTR [esi+2400]
	mov	eax, DWORD PTR [edx+1884]
	push	edi
	push	OFFSET ??_C@_0EC@GPEHEGIB@?$FLCrate?$FN?5You?5just?5got?5the?5Points?5@
	push	eax
	call	?PagePlayer@@YAXHPBDZZ			; PagePlayer
	add	esp, 24					; 00000018H

; 959  : 			gzConsole::In("msg [Crate]: Enjoy those %d points from the crate god, %s.", Amount, (Picker->PlayerType == 0) ? "Nod" : "GDI");

	cmp	DWORD PTR [esi+1892], 0
	mov	eax, OFFSET ??_C@_03OHGKCNFD@Nod?$AA@
	je	SHORT $LN6@Pick@3
	mov	eax, OFFSET ??_C@_03IOFAJBDH@GDI?$AA@
$LN6@Pick@3:
	push	eax
	push	edi
	push	OFFSET ??_C@_0DL@NCFHFFCD@msg?5?$FLCrate?$FN?3?5Enjoy?5those?5?$CFd?5poin@

; 965  : 			gzConsole::In("msg [Crate]: Hope you won't miss those %d points, %s.", Amount, (Picker->PlayerType == 0) ? "Nod" : "GDI");

	call	?In@gzConsole@@SAXPBDZZ			; gzConsole::In
	add	esp, 12					; 0000000cH
	pop	edi

; 966  : 		}
; 967  : 		return true;

	mov	al, 1
	pop	esi

; 968  : 	};

	pop	ecx
	ret	4
$LN2@Pick@3:

; 960  : 		}
; 961  : 		else {
; 962  : 			Picker->Player->Increment_Score((float)-Amount);

	mov	edx, DWORD PTR [ecx]
	mov	edx, DWORD PTR [edx+8]
	mov	eax, edi
	neg	eax
	mov	DWORD PTR tv265[esp+12], eax
	fild	DWORD PTR tv265[esp+12]
	fstp	DWORD PTR [esp]
	call	edx

; 963  : 			gzLogger("_CRATE", "%S picked up a Depoints Crate.",Picker->Player->PlayerName.m_Buffer);

	mov	eax, DWORD PTR [esi+2400]
	mov	ecx, DWORD PTR [eax+1880]
	push	ecx
	push	OFFSET ??_C@_0BP@NEPLHJED@?$CFS?5picked?5up?5a?5Depoints?5Crate?4?$AA@
	push	OFFSET ??_C@_06LJACFPMC@_CRATE?$AA@
	call	?gzLogger@@YAXPBD0ZZ			; gzLogger

; 964  : 			PagePlayer(Picker->Player->PlayerId, "[Crate] You just got the Depoints Crate, you lost %d points.", Amount);

	mov	edx, DWORD PTR [esi+2400]
	mov	eax, DWORD PTR [edx+1884]
	push	edi
	push	OFFSET ??_C@_0DN@EMCPLDCM@?$FLCrate?$FN?5You?5just?5got?5the?5Depoint@
	push	eax
	call	?PagePlayer@@YAXHPBDZZ			; PagePlayer
	add	esp, 24					; 00000018H

; 965  : 			gzConsole::In("msg [Crate]: Hope you won't miss those %d points, %s.", Amount, (Picker->PlayerType == 0) ? "Nod" : "GDI");

	cmp	DWORD PTR [esi+1892], 0
	mov	eax, OFFSET ??_C@_03OHGKCNFD@Nod?$AA@
	je	SHORT $LN8@Pick@3
	mov	eax, OFFSET ??_C@_03IOFAJBDH@GDI?$AA@
$LN8@Pick@3:
	push	eax
	push	edi
	push	OFFSET ??_C@_0DG@DMLFFJGG@msg?5?$FLCrate?$FN?3?5Hope?5you?5won?8t?5miss@
	call	?In@gzConsole@@SAXPBDZZ			; gzConsole::In
	add	esp, 12					; 0000000cH
	pop	edi

; 966  : 		}
; 967  : 		return true;

	mov	al, 1
	pop	esi

; 968  : 	};

	pop	ecx
	ret	4
?Pick@Crate_Points@@EAE_NPAVnc_SmartGameObj@@@Z ENDP	; Crate_Points::Pick
_TEXT	ENDS
PUBLIC	??_7Crate_RandomVehicle@@6B@			; Crate_RandomVehicle::`vftable'
PUBLIC	??0Crate_RandomVehicle@@QAE@XZ			; Crate_RandomVehicle::Crate_RandomVehicle
PUBLIC	??_R4Crate_RandomVehicle@@6B@			; Crate_RandomVehicle::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVCrate_RandomVehicle@@@8			; Crate_RandomVehicle `RTTI Type Descriptor'
PUBLIC	??_R3Crate_RandomVehicle@@8			; Crate_RandomVehicle::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2Crate_RandomVehicle@@8			; Crate_RandomVehicle::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@Crate_RandomVehicle@@8		; Crate_RandomVehicle::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?GetName@Crate_RandomVehicle@@EAEPBDXZ		; Crate_RandomVehicle::GetName
PUBLIC	?GetType@Crate_RandomVehicle@@EAEHXZ		; Crate_RandomVehicle::GetType
PUBLIC	?GetPercent@Crate_RandomVehicle@@EAEIXZ		; Crate_RandomVehicle::GetPercent
PUBLIC	?SkipDefaultOutput@Crate_RandomVehicle@@EAE_NXZ	; Crate_RandomVehicle::SkipDefaultOutput
PUBLIC	?Pick@Crate_RandomVehicle@@EAE_NPAVnc_SmartGameObj@@@Z ; Crate_RandomVehicle::Pick
;	COMDAT ??_R1A@?0A@EA@Crate_RandomVehicle@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@Crate_RandomVehicle@@8 DD FLAT:??_R0?AVCrate_RandomVehicle@@@8 ; Crate_RandomVehicle::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3Crate_RandomVehicle@@8
rdata$r	ENDS
;	COMDAT ??_R2Crate_RandomVehicle@@8
rdata$r	SEGMENT
??_R2Crate_RandomVehicle@@8 DD FLAT:??_R1A@?0A@EA@Crate_RandomVehicle@@8 ; Crate_RandomVehicle::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzCrateBase@@8
rdata$r	ENDS
;	COMDAT ??_R3Crate_RandomVehicle@@8
rdata$r	SEGMENT
??_R3Crate_RandomVehicle@@8 DD 00H			; Crate_RandomVehicle::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2Crate_RandomVehicle@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVCrate_RandomVehicle@@@8
_DATA	SEGMENT
??_R0?AVCrate_RandomVehicle@@@8 DD FLAT:??_7type_info@@6B@ ; Crate_RandomVehicle `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVCrate_RandomVehicle@@', 00H
_DATA	ENDS
;	COMDAT ??_R4Crate_RandomVehicle@@6B@
rdata$r	SEGMENT
??_R4Crate_RandomVehicle@@6B@ DD 00H			; Crate_RandomVehicle::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVCrate_RandomVehicle@@@8
	DD	FLAT:??_R3Crate_RandomVehicle@@8
rdata$r	ENDS
;	COMDAT ??_7Crate_RandomVehicle@@6B@
CONST	SEGMENT
??_7Crate_RandomVehicle@@6B@ DD FLAT:??_R4Crate_RandomVehicle@@6B@ ; Crate_RandomVehicle::`vftable'
	DD	FLAT:?GetName@Crate_RandomVehicle@@EAEPBDXZ
	DD	FLAT:?GetType@Crate_RandomVehicle@@EAEHXZ
	DD	FLAT:?GetPercent@Crate_RandomVehicle@@EAEIXZ
	DD	FLAT:?SkipDefaultOutput@Crate_RandomVehicle@@EAE_NXZ
	DD	FLAT:?Pick@Crate_RandomVehicle@@EAE_NPAVnc_SmartGameObj@@@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0Crate_RandomVehicle@@QAE@XZ
_TEXT	SEGMENT
??0Crate_RandomVehicle@@QAE@XZ PROC			; Crate_RandomVehicle::Crate_RandomVehicle, COMDAT
; _this$ = ecx
	xor	eax, eax
	push	esi
	mov	esi, ecx
	mov	DWORD PTR [esi+4], eax
	mov	BYTE PTR [esi+8], al
	mov	DWORD PTR [esi], OFFSET ??_7gzCrateBase@@6B@
	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	mov	eax, esi
	je	SHORT $LN8@Crate_Rand@2
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], esi
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN8@Crate_Rand@2:
	mov	DWORD PTR [esi], OFFSET ??_7Crate_RandomVehicle@@6B@
	pop	esi
	ret	0
??0Crate_RandomVehicle@@QAE@XZ ENDP			; Crate_RandomVehicle::Crate_RandomVehicle
_TEXT	ENDS
PUBLIC	?GetString@aString@@QBEPBDXZ			; aString::GetString
; Function compile flags: /Ogtpy
; File d:\source code\alib\include\astring.h
;	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@2
	mov	eax, DWORD PTR [eax]
	ret	0
$LN3@GetString@2:
	xor	eax, eax
	ret	0
?GetString@aString@@QBEPBDXZ ENDP			; aString::GetString
_TEXT	ENDS
PUBLIC	??_C@_0P@OPPCNNKD@Random?5Vehicle?$AA@		; `string'
;	COMDAT ??_C@_0P@OPPCNNKD@Random?5Vehicle?$AA@
; File d:\source code\gzgm\gzcrate.cpp
CONST	SEGMENT
??_C@_0P@OPPCNNKD@Random?5Vehicle?$AA@ DB 'Random Vehicle', 00H ; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?GetName@Crate_RandomVehicle@@EAEPBDXZ
_TEXT	SEGMENT
?GetName@Crate_RandomVehicle@@EAEPBDXZ PROC		; Crate_RandomVehicle::GetName, COMDAT
; _this$ = ecx

; 975  : 		return "Random Vehicle";

	mov	eax, OFFSET ??_C@_0P@OPPCNNKD@Random?5Vehicle?$AA@

; 976  : 	};

	ret	0
?GetName@Crate_RandomVehicle@@EAEPBDXZ ENDP		; Crate_RandomVehicle::GetName
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetType@Crate_RandomVehicle@@EAEHXZ
_TEXT	SEGMENT
?GetType@Crate_RandomVehicle@@EAEHXZ PROC		; Crate_RandomVehicle::GetType, COMDAT
; _this$ = ecx

; 979  : 		return CRATE_SOLDIER;

	mov	eax, 1

; 980  : 	};

	ret	0
?GetType@Crate_RandomVehicle@@EAEHXZ ENDP		; Crate_RandomVehicle::GetType
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetPercent@Crate_RandomVehicle@@EAEIXZ
_TEXT	SEGMENT
?GetPercent@Crate_RandomVehicle@@EAEIXZ PROC		; Crate_RandomVehicle::GetPercent, COMDAT
; _this$ = ecx

; 983  : 		return this->m_percent->Vehicle;

	mov	eax, DWORD PTR ?m_percent@gzCrateBase@@1PBUgzCratePercentStruct@@B ; gzCrateBase::m_percent
	mov	eax, DWORD PTR [eax+12]

; 984  : 	};

	ret	0
?GetPercent@Crate_RandomVehicle@@EAEIXZ ENDP		; Crate_RandomVehicle::GetPercent
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?SkipDefaultOutput@Crate_RandomVehicle@@EAE_NXZ
_TEXT	SEGMENT
?SkipDefaultOutput@Crate_RandomVehicle@@EAE_NXZ PROC	; Crate_RandomVehicle::SkipDefaultOutput, COMDAT
; _this$ = ecx

; 987  : 		return false;

	xor	al, al

; 988  : 	};

	ret	0
?SkipDefaultOutput@Crate_RandomVehicle@@EAE_NXZ ENDP	; Crate_RandomVehicle::SkipDefaultOutput
_TEXT	ENDS
PUBLIC	??_C@_0DP@NLKECIH@msg?5?$FLCrate?$FN?3?5Looks?5like?5?$CFs?5just?5@ ; `string'
PUBLIC	??_C@_0DE@DJNDEDHB@?$FLCrate?$FN?5You?5got?5a?5?$CFs?5from?5the?5Ra@ ; `string'
PUBLIC	??_C@_0N@GJOBBEDN@?$CFsRVC_?$CFs?4txt?$AA@	; `string'
PUBLIC	??_C@_0P@ILJCPIMA@Test_Cinematic?$AA@		; `string'
PUBLIC	??_C@_0BB@NHJNEILC@Invisible_Object?$AA@	; `string'
PUBLIC	??_C@_0BD@GFDJBLDK@CnC_Nod_Recon_Bike?$AA@	; `string'
PUBLIC	??_C@_05MIGDJIHC@recon?$AA@			; `string'
PUBLIC	??_C@_0P@JMJPFBFF@Nod?5Recon?5Bike?$AA@		; `string'
PUBLIC	??_C@_0BF@FDHNFNOP@CnC_GDI_Mammoth_Tank?$AA@	; `string'
PUBLIC	??_C@_05CJLLKJDH@mammy?$AA@			; `string'
PUBLIC	??_C@_0BB@KIBFEHIH@GDI?5Mammoth?5Tank?$AA@	; `string'
PUBLIC	??_C@_0BF@EIMMMIOI@CnC_Nod_Stealth_Tank?$AA@	; `string'
PUBLIC	??_C@_05IIADKDBM@stank?$AA@			; `string'
PUBLIC	??_C@_0BB@LDKENCIA@Nod?5Stealth?5Tank?$AA@	; `string'
PUBLIC	??_C@_0BD@FLILFJBA@CnC_Nod_Flame_Tank?$AA@	; `string'
PUBLIC	??_C@_06MLMIPFOD@flamer?$AA@			; `string'
PUBLIC	??_C@_0P@KCCNBDHP@Nod?5Flame?5Tank?$AA@		; `string'
PUBLIC	??_C@_0BD@KFFOCKEE@CnC_Nod_Light_Tank?$AA@	; `string'
PUBLIC	??_C@_09JOCCCCFA@lighttank?$AA@			; `string'
PUBLIC	??_C@_0P@FMPIGACL@Nod?5Light?5Tank?$AA@		; `string'
PUBLIC	??_C@_0BE@MFMCCHHH@CnC_GDI_Medium_Tank?$AA@	; `string'
PUBLIC	??_C@_03FIHKKIFF@med?$AA@			; `string'
PUBLIC	??_C@_0BA@PIGCOCCC@GDI?5Medium?5Tank?$AA@	; `string'
PUBLIC	??_C@_0BJ@JKMFPNNA@CnC_Nod_Mobile_Artillery?$AA@ ; `string'
PUBLIC	??_C@_04PBLMDMDL@arty?$AA@			; `string'
PUBLIC	??_C@_0BF@JIDFLGIB@Nod?5Mobile?5Artillery?$AA@	; `string'
PUBLIC	??_C@_0N@CEAEFAJG@CnC_GDI_MRLS?$AA@		; `string'
PUBLIC	??_C@_04NMJGMLHI@mrls?$AA@			; `string'
PUBLIC	??_C@_08PBJMFNPG@GDI?5MRLS?$AA@			; `string'
PUBLIC	??_C@_0M@OFJMCHAB@CnC_Nod_APC?$AA@		; `string'
PUBLIC	??_C@_06LFLBLLGJ@nodapc?$AA@			; `string'
PUBLIC	??_C@_07BNNAKDCD@Nod?5APC?$AA@			; `string'
PUBLIC	??_C@_0M@IMFLEHKE@CnC_GDI_APC?$AA@		; `string'
PUBLIC	??_C@_06LCHOMKMI@gdiapc?$AA@			; `string'
PUBLIC	??_C@_07HEBHMDIG@GDI?5APC?$AA@			; `string'
PUBLIC	??_C@_0O@KPJBJEBP@CnC_Nod_Buggy?$AA@		; `string'
PUBLIC	??_C@_05CPKHEPBC@buggy?$AA@			; `string'
PUBLIC	??_C@_09OCPGGNEK@Nod?5Buggy?$AA@		; `string'
PUBLIC	??_C@_0BB@GDPFEJDE@CnC_GDI_Humm?9vee?$AA@	; `string'
PUBLIC	??_C@_06PIEFGEOE@humvee?$AA@			; `string'
PUBLIC	??_C@_0L@CCHGEPFG@GDI?5Humvee?$AA@		; `string'
PUBLIC	__real@461c3c00
EXTRN	?Add_Observer@nc_ScriptableGameObj@@QAEXPAVnc_GameObjObserverClass@@@Z:PROC ; nc_ScriptableGameObj::Add_Observer
EXTRN	?Create_Script@nc_ScriptManager@@SAPAVnc_ScriptImpClass@@PBD@Z:PROC ; nc_ScriptManager::Create_Script
;	COMDAT ??_C@_0DP@NLKECIH@msg?5?$FLCrate?$FN?3?5Looks?5like?5?$CFs?5just?5@
; File d:\source code\alib\include\astring.h
CONST	SEGMENT
??_C@_0DP@NLKECIH@msg?5?$FLCrate?$FN?3?5Looks?5like?5?$CFs?5just?5@ DB 'm'
	DB	'sg [Crate]: Looks like %s just got a random vehicle! Go them!'
	DB	00H						; `string'
CONST	ENDS
;	COMDAT ??_C@_0DE@DJNDEDHB@?$FLCrate?$FN?5You?5got?5a?5?$CFs?5from?5the?5Ra@
CONST	SEGMENT
??_C@_0DE@DJNDEDHB@?$FLCrate?$FN?5You?5got?5a?5?$CFs?5from?5the?5Ra@ DB '['
	DB	'Crate] You got a %s from the Random Vehicle Crate.', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0N@GJOBBEDN@?$CFsRVC_?$CFs?4txt?$AA@
CONST	SEGMENT
??_C@_0N@GJOBBEDN@?$CFsRVC_?$CFs?4txt?$AA@ DB '%sRVC_%s.txt', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0P@ILJCPIMA@Test_Cinematic?$AA@
CONST	SEGMENT
??_C@_0P@ILJCPIMA@Test_Cinematic?$AA@ DB 'Test_Cinematic', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BB@NHJNEILC@Invisible_Object?$AA@
CONST	SEGMENT
??_C@_0BB@NHJNEILC@Invisible_Object?$AA@ DB 'Invisible_Object', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BD@GFDJBLDK@CnC_Nod_Recon_Bike?$AA@
CONST	SEGMENT
??_C@_0BD@GFDJBLDK@CnC_Nod_Recon_Bike?$AA@ DB 'CnC_Nod_Recon_Bike', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_05MIGDJIHC@recon?$AA@
CONST	SEGMENT
??_C@_05MIGDJIHC@recon?$AA@ DB 'recon', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_0P@JMJPFBFF@Nod?5Recon?5Bike?$AA@
CONST	SEGMENT
??_C@_0P@JMJPFBFF@Nod?5Recon?5Bike?$AA@ DB 'Nod Recon Bike', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BF@FDHNFNOP@CnC_GDI_Mammoth_Tank?$AA@
CONST	SEGMENT
??_C@_0BF@FDHNFNOP@CnC_GDI_Mammoth_Tank?$AA@ DB 'CnC_GDI_Mammoth_Tank', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_05CJLLKJDH@mammy?$AA@
CONST	SEGMENT
??_C@_05CJLLKJDH@mammy?$AA@ DB 'mammy', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_0BB@KIBFEHIH@GDI?5Mammoth?5Tank?$AA@
CONST	SEGMENT
??_C@_0BB@KIBFEHIH@GDI?5Mammoth?5Tank?$AA@ DB 'GDI Mammoth Tank', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BF@EIMMMIOI@CnC_Nod_Stealth_Tank?$AA@
CONST	SEGMENT
??_C@_0BF@EIMMMIOI@CnC_Nod_Stealth_Tank?$AA@ DB 'CnC_Nod_Stealth_Tank', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_05IIADKDBM@stank?$AA@
CONST	SEGMENT
??_C@_05IIADKDBM@stank?$AA@ DB 'stank', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_0BB@LDKENCIA@Nod?5Stealth?5Tank?$AA@
CONST	SEGMENT
??_C@_0BB@LDKENCIA@Nod?5Stealth?5Tank?$AA@ DB 'Nod Stealth Tank', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BD@FLILFJBA@CnC_Nod_Flame_Tank?$AA@
CONST	SEGMENT
??_C@_0BD@FLILFJBA@CnC_Nod_Flame_Tank?$AA@ DB 'CnC_Nod_Flame_Tank', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_06MLMIPFOD@flamer?$AA@
CONST	SEGMENT
??_C@_06MLMIPFOD@flamer?$AA@ DB 'flamer', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_0P@KCCNBDHP@Nod?5Flame?5Tank?$AA@
CONST	SEGMENT
??_C@_0P@KCCNBDHP@Nod?5Flame?5Tank?$AA@ DB 'Nod Flame Tank', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BD@KFFOCKEE@CnC_Nod_Light_Tank?$AA@
CONST	SEGMENT
??_C@_0BD@KFFOCKEE@CnC_Nod_Light_Tank?$AA@ DB 'CnC_Nod_Light_Tank', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_09JOCCCCFA@lighttank?$AA@
CONST	SEGMENT
??_C@_09JOCCCCFA@lighttank?$AA@ DB 'lighttank', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_0P@FMPIGACL@Nod?5Light?5Tank?$AA@
CONST	SEGMENT
??_C@_0P@FMPIGACL@Nod?5Light?5Tank?$AA@ DB 'Nod Light Tank', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BE@MFMCCHHH@CnC_GDI_Medium_Tank?$AA@
CONST	SEGMENT
??_C@_0BE@MFMCCHHH@CnC_GDI_Medium_Tank?$AA@ DB 'CnC_GDI_Medium_Tank', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_03FIHKKIFF@med?$AA@
CONST	SEGMENT
??_C@_03FIHKKIFF@med?$AA@ DB 'med', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_0BA@PIGCOCCC@GDI?5Medium?5Tank?$AA@
CONST	SEGMENT
??_C@_0BA@PIGCOCCC@GDI?5Medium?5Tank?$AA@ DB 'GDI Medium Tank', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BJ@JKMFPNNA@CnC_Nod_Mobile_Artillery?$AA@
CONST	SEGMENT
??_C@_0BJ@JKMFPNNA@CnC_Nod_Mobile_Artillery?$AA@ DB 'CnC_Nod_Mobile_Artil'
	DB	'lery', 00H					; `string'
CONST	ENDS
;	COMDAT ??_C@_04PBLMDMDL@arty?$AA@
CONST	SEGMENT
??_C@_04PBLMDMDL@arty?$AA@ DB 'arty', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_0BF@JIDFLGIB@Nod?5Mobile?5Artillery?$AA@
CONST	SEGMENT
??_C@_0BF@JIDFLGIB@Nod?5Mobile?5Artillery?$AA@ DB 'Nod Mobile Artillery', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0N@CEAEFAJG@CnC_GDI_MRLS?$AA@
CONST	SEGMENT
??_C@_0N@CEAEFAJG@CnC_GDI_MRLS?$AA@ DB 'CnC_GDI_MRLS', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_04NMJGMLHI@mrls?$AA@
CONST	SEGMENT
??_C@_04NMJGMLHI@mrls?$AA@ DB 'mrls', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_08PBJMFNPG@GDI?5MRLS?$AA@
CONST	SEGMENT
??_C@_08PBJMFNPG@GDI?5MRLS?$AA@ DB 'GDI MRLS', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_0M@OFJMCHAB@CnC_Nod_APC?$AA@
CONST	SEGMENT
??_C@_0M@OFJMCHAB@CnC_Nod_APC?$AA@ DB 'CnC_Nod_APC', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_06LFLBLLGJ@nodapc?$AA@
CONST	SEGMENT
??_C@_06LFLBLLGJ@nodapc?$AA@ DB 'nodapc', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_07BNNAKDCD@Nod?5APC?$AA@
CONST	SEGMENT
??_C@_07BNNAKDCD@Nod?5APC?$AA@ DB 'Nod APC', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_0M@IMFLEHKE@CnC_GDI_APC?$AA@
CONST	SEGMENT
??_C@_0M@IMFLEHKE@CnC_GDI_APC?$AA@ DB 'CnC_GDI_APC', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_06LCHOMKMI@gdiapc?$AA@
CONST	SEGMENT
??_C@_06LCHOMKMI@gdiapc?$AA@ DB 'gdiapc', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_07HEBHMDIG@GDI?5APC?$AA@
CONST	SEGMENT
??_C@_07HEBHMDIG@GDI?5APC?$AA@ DB 'GDI APC', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_0O@KPJBJEBP@CnC_Nod_Buggy?$AA@
CONST	SEGMENT
??_C@_0O@KPJBJEBP@CnC_Nod_Buggy?$AA@ DB 'CnC_Nod_Buggy', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_05CPKHEPBC@buggy?$AA@
CONST	SEGMENT
??_C@_05CPKHEPBC@buggy?$AA@ DB 'buggy', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_09OCPGGNEK@Nod?5Buggy?$AA@
CONST	SEGMENT
??_C@_09OCPGGNEK@Nod?5Buggy?$AA@ DB 'Nod Buggy', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_0BB@GDPFEJDE@CnC_GDI_Humm?9vee?$AA@
CONST	SEGMENT
??_C@_0BB@GDPFEJDE@CnC_GDI_Humm?9vee?$AA@ DB 'CnC_GDI_Humm-vee', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_06PIEFGEOE@humvee?$AA@
CONST	SEGMENT
??_C@_06PIEFGEOE@humvee?$AA@ DB 'humvee', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_0L@CCHGEPFG@GDI?5Humvee?$AA@
CONST	SEGMENT
??_C@_0L@CCHGEPFG@GDI?5Humvee?$AA@ DB 'GDI Humvee', 00H	; `string'
CONST	ENDS
;	COMDAT __real@461c3c00
CONST	SEGMENT
__real@461c3c00 DD 0461c3c00r			; 9999
CONST	ENDS
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$?Pick@Crate_RandomVehicle@@EAE_NPAVnc_SmartGameObj@@@Z DD 0ffffffffH
	DD	FLAT:__unwindfunclet$?Pick@Crate_RandomVehicle@@EAE_NPAVnc_SmartGameObj@@@Z$0
__ehfuncinfo$?Pick@Crate_RandomVehicle@@EAE_NPAVnc_SmartGameObj@@@Z DD 019930522H
	DD	01H
	DD	FLAT:__unwindtable$?Pick@Crate_RandomVehicle@@EAE_NPAVnc_SmartGameObj@@@Z
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	01H
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
xdata$x	ENDS
;	COMDAT ?Pick@Crate_RandomVehicle@@EAE_NPAVnc_SmartGameObj@@@Z
_TEXT	SEGMENT
_thePos$60402 = -188					; size = 12
_RandomVehicle$60437 = -176				; size = 144
_objPos$60410 = -32					; size = 12
$T72142 = -20						; size = 8
__$EHRec$ = -12						; size = 12
_Picker$ = 8						; size = 4
?Pick@Crate_RandomVehicle@@EAE_NPAVnc_SmartGameObj@@@Z PROC ; Crate_RandomVehicle::Pick, COMDAT
; _this$ = ecx

; 990  : 	{

	mov	eax, DWORD PTR fs:0
	push	-1
	push	__ehhandler$?Pick@Crate_RandomVehicle@@EAE_NPAVnc_SmartGameObj@@@Z
	push	eax
	mov	DWORD PTR fs:0, esp

; 991  : 		if (gzGameMgr->m_settings->m_GameMode == 1)

	mov	eax, DWORD PTR ?gzGameMgr@@3PAVgzGameManager@@A ; gzGameMgr
	mov	ecx, DWORD PTR [eax+56]
	sub	esp, 176				; 000000b0H
	cmp	DWORD PTR [ecx+24], 1
	push	ebx
	push	ebp
	push	esi
	push	edi
	jne	$LN1@Pick@4

; 992  : 		{
; 993  : 			nc_Vector3 thePos = { 0.0f, 0.0f, 0.0f };

	fldz

; 994  : 			if (gzCrateMgr->m_settings->m_vehSpawn[1].X != 0 &&
; 995  : 				gzCrateMgr->m_settings->m_vehSpawn[0].X != 0 &&
; 996  : 				gzCrateMgr->m_settings->m_vehPSpawn[1].X != 0 &&
; 997  : 				gzCrateMgr->m_settings->m_vehPSpawn[0].X != 0)

	mov	edx, DWORD PTR ?gzCrateMgr@@3PAVgzManagerCrateClass@@A ; gzCrateMgr
	fst	DWORD PTR _thePos$60402[esp+204]
	fst	DWORD PTR _thePos$60402[esp+208]
	fst	DWORD PTR _thePos$60402[esp+212]
	mov	ecx, DWORD PTR [edx+56]
	fcom	DWORD PTR [ecx+72]
	fnstsw	ax
	test	ah, 68					; 00000044H
	jnp	$LN65@Pick@4
	fcom	DWORD PTR [ecx+60]
	fnstsw	ax
	test	ah, 68					; 00000044H
	jnp	$LN65@Pick@4
	fcom	DWORD PTR [ecx+96]
	fnstsw	ax
	test	ah, 68					; 00000044H
	jnp	$LN65@Pick@4
	fcomp	DWORD PTR [ecx+84]
	fnstsw	ax
	test	ah, 68					; 00000044H
	jnp	$LN1@Pick@4

; 998  : 			{
; 999  : 				Picker->Set_Position(gzCrateMgr->m_settings->m_vehPSpawn[Picker->PlayerType]);

	mov	ebx, DWORD PTR _Picker$[esp+200]
	mov	eax, DWORD PTR [ebx+1892]
	add	eax, 7
	lea	eax, DWORD PTR [eax+eax*2]
	lea	ecx, DWORD PTR [ecx+eax*4]
	push	ecx
	mov	ecx, ebx
	call	?Set_Position@nc_PhysicalGameObj@@QAEXABUnc_Vector3@@@Z ; nc_PhysicalGameObj::Set_Position

; 1000 : 				thePos = gzCrateMgr->m_settings->m_vehSpawn[Picker->PlayerType];

	mov	eax, DWORD PTR [ebx+1892]
	add	eax, 5
	lea	edx, DWORD PTR [eax+eax*2]
	mov	eax, DWORD PTR ?gzCrateMgr@@3PAVgzManagerCrateClass@@A ; gzCrateMgr
	mov	ecx, DWORD PTR [eax+56]
	lea	eax, DWORD PTR [ecx+edx*4]
	mov	edx, DWORD PTR [eax]
	mov	DWORD PTR _thePos$60402[esp+204], edx
	mov	ecx, DWORD PTR [eax+4]
	mov	DWORD PTR _thePos$60402[esp+208], ecx
	mov	edx, DWORD PTR [eax+8]

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

	mov	eax, DWORD PTR ?GameObjList@nc_GameObjManager@@2PAV?$nc_SList@Vnc_BaseGameObj@@@@A ; nc_GameObjManager::GameObjList
	mov	DWORD PTR _thePos$60402[esp+212], edx
	mov	esi, DWORD PTR [eax+4]
	test	esi, esi
	je	$LN26@Pick@4
	npad	7
$LL28@Pick@4:

; 1002 : 				{
; 1003 : 					if (objList->NodeData && objList->NodeData->As_PhysicalGameObj())

	cmp	DWORD PTR [esi+4], 0
	je	$LN27@Pick@4
	mov	ecx, DWORD PTR [esi+4]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+36]
	call	eax
	test	eax, eax
	je	SHORT $LN27@Pick@4

; 1004 : 					{
; 1005 : 						nc_Vector3 objPos;
; 1006 : 						objList->NodeData->As_PhysicalGameObj()->Get_Position(&objPos);

	mov	ecx, DWORD PTR [esi+4]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+36]
	call	eax
	mov	edx, DWORD PTR [eax]
	mov	edx, DWORD PTR [edx+56]
	lea	ecx, DWORD PTR _objPos$60410[esp+204]
	push	ecx
	mov	ecx, eax
	call	edx

; 1007 : 						float Distance = (abs(objPos.X - thePos.X) + abs(objPos.Y + thePos.Y));

	fld	DWORD PTR _objPos$60410[esp+204]
	fsub	DWORD PTR _thePos$60402[esp+204]
	fabs
	fld	DWORD PTR _objPos$60410[esp+208]
	fadd	DWORD PTR _thePos$60402[esp+208]
	fabs
	faddp	ST(1), ST(0)

; 1008 : 						if (Distance <= 2.0f && objList->NodeData->NetworkID != Picker->NetworkID)

	fcomp	DWORD PTR __real@40000000
	fnstsw	ax
	test	ah, 65					; 00000041H
	jp	SHORT $LN27@Pick@4
	mov	eax, DWORD PTR [esi+4]
	mov	ecx, DWORD PTR [eax+12]
	cmp	ecx, DWORD PTR [ebx+12]
	je	SHORT $LN27@Pick@4

; 1009 : 							gzCommands->Apply_Damage(objList->NodeData->As_PhysicalGameObj(),9999.0f,"Laser_NoBuilding",NULL);

	mov	edi, DWORD PTR ?gzCommands@@3PAUnc_ScriptCommands@@A ; gzCommands
	fld	DWORD PTR __real@461c3c00
	mov	ecx, eax
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+36]
	push	0
	push	OFFSET ??_C@_0BB@HBAICPOK@Laser_NoBuilding?$AA@
	push	ecx
	fstp	DWORD PTR [esp]
	add	edi, 616				; 00000268H
	call	eax
	mov	ecx, DWORD PTR [edi]
	push	eax
	call	ecx
	add	esp, 16					; 00000010H
$LN27@Pick@4:
	mov	esi, DWORD PTR [esi]
	test	esi, esi
	jne	$LL28@Pick@4
$LN26@Pick@4:

; 1010 : 					}
; 1011 : 				}
; 1012 : 				int	Rnd	= gzRandom.Get_Int(1, 200);

	push	200					; 000000c8H
	push	1
	mov	ecx, OFFSET ?gzRandom@@3VaRandom@@A	; gzRandom
	call	?Get_Int@aRandom@@QAEJJJ@Z		; aRandom::Get_Int

; 1013 : 				int	Index = 0;
; 1014 : 				if (Rnd	<= 25)

	cmp	eax, 25					; 00000019H
	jg	SHORT $LN23@Pick@4

; 1015 : 					Index = 0;

	xor	eax, eax
	jmp	$LN3@Pick@4
$LN23@Pick@4:

; 1016 : 				else if	(Rnd <=	50)

	cmp	eax, 50					; 00000032H
	jg	SHORT $LN21@Pick@4

; 1017 : 					Index =	1;

	mov	eax, 1
	jmp	SHORT $LN3@Pick@4
$LN21@Pick@4:

; 1018 : 				else if	(Rnd <=	70)

	cmp	eax, 70					; 00000046H
	jg	SHORT $LN19@Pick@4

; 1019 : 					Index =	2;

	mov	eax, 2
	jmp	SHORT $LN3@Pick@4
$LN19@Pick@4:

; 1020 : 				else if	(Rnd <=	90)

	cmp	eax, 90					; 0000005aH
	jg	SHORT $LN17@Pick@4

; 1021 : 					Index =	3;

	mov	eax, 3
	jmp	SHORT $LN3@Pick@4
$LN17@Pick@4:

; 1022 : 				else if	(Rnd <=	110)

	cmp	eax, 110				; 0000006eH
	jg	SHORT $LN15@Pick@4

; 1023 : 					Index = 4;

	mov	eax, 4
	jmp	SHORT $LN3@Pick@4
$LN15@Pick@4:

; 1024 : 				else if	(Rnd <=	130)

	cmp	eax, 130				; 00000082H
	jg	SHORT $LN13@Pick@4

; 1025 : 					Index = 5;

	mov	eax, 5
	jmp	SHORT $LN3@Pick@4
$LN13@Pick@4:

; 1026 : 				else if	(Rnd <=	145)

	cmp	eax, 145				; 00000091H
	jg	SHORT $LN11@Pick@4

; 1027 : 					Index = 6;

	mov	eax, 6
	jmp	SHORT $LN3@Pick@4
$LN11@Pick@4:

; 1028 : 				else if	(Rnd <=	160)

	cmp	eax, 160				; 000000a0H
	jg	SHORT $LN9@Pick@4

; 1029 : 					Index = 7;

	mov	eax, 7
	jmp	SHORT $LN3@Pick@4
$LN9@Pick@4:

; 1030 : 				else if	(Rnd <=	170)

	cmp	eax, 170				; 000000aaH
	jg	SHORT $LN7@Pick@4

; 1031 : 					Index = 8;

	mov	eax, 8
	jmp	SHORT $LN3@Pick@4
$LN7@Pick@4:

; 1032 : 				else if	(Rnd <=	180)

	cmp	eax, 180				; 000000b4H
	jg	SHORT $LN5@Pick@4

; 1033 : 					Index = 9;

	mov	eax, 9
	jmp	SHORT $LN3@Pick@4
$LN5@Pick@4:

; 1034 : 				else if	(Rnd <=	190)

	xor	edx, edx
	cmp	eax, 190				; 000000beH
	setg	dl
	add	edx, 10					; 0000000aH
	mov	eax, edx
$LN3@Pick@4:

; 1035 : 					Index = 10;
; 1036 : 				else
; 1037 : 					Index = 11;
; 1038 : 				const char *RandomVehicle[][3] = {
; 1039 : 					{ "GDI Humvee", "humvee", "CnC_GDI_Humm-vee" },
; 1040 : 					{ "Nod Buggy", "buggy", "CnC_Nod_Buggy" },
; 1041 : 					{ "GDI APC", "gdiapc", "CnC_GDI_APC" },
; 1042 : 					{ "Nod APC", "nodapc", "CnC_Nod_APC" },
; 1043 : 					{ "GDI MRLS", "mrls", "CnC_GDI_MRLS" },
; 1044 : 					{ "Nod Mobile Artillery", "arty", "CnC_Nod_Mobile_Artillery"},
; 1045 : 					{ "GDI Medium Tank", "med", "CnC_GDI_Medium_Tank" },
; 1046 : 					{ "Nod Light Tank", "lighttank", "CnC_Nod_Light_Tank" },
; 1047 : 					{ "Nod Flame Tank",	"flamer", "CnC_Nod_Flame_Tank" },
; 1048 : 					{ "Nod Stealth Tank", "stank", "CnC_Nod_Stealth_Tank" },
; 1049 : 					{ "GDI Mammoth Tank", "mammy", "CnC_GDI_Mammoth_Tank" },
; 1050 : 					{ "Nod Recon Bike", "recon", "CnC_Nod_Recon_Bike"}
; 1051 : 				};
; 1052 : 				if (!gzGameMgr->GetGame()->IsPresetDisabled(RandomVehicle[Index][2])) {

	mov	ecx, DWORD PTR ?gzGameMgr@@3PAVgzGameManager@@A ; gzGameMgr
	lea	ebp, DWORD PTR [eax+eax*2]
	add	ebp, ebp
	add	ebp, ebp
	mov	DWORD PTR _RandomVehicle$60437[esp+204], OFFSET ??_C@_0L@CCHGEPFG@GDI?5Humvee?$AA@
	mov	DWORD PTR _RandomVehicle$60437[esp+208], OFFSET ??_C@_06PIEFGEOE@humvee?$AA@
	mov	DWORD PTR _RandomVehicle$60437[esp+212], OFFSET ??_C@_0BB@GDPFEJDE@CnC_GDI_Humm?9vee?$AA@
	mov	DWORD PTR _RandomVehicle$60437[esp+216], OFFSET ??_C@_09OCPGGNEK@Nod?5Buggy?$AA@
	mov	DWORD PTR _RandomVehicle$60437[esp+220], OFFSET ??_C@_05CPKHEPBC@buggy?$AA@
	mov	DWORD PTR _RandomVehicle$60437[esp+224], OFFSET ??_C@_0O@KPJBJEBP@CnC_Nod_Buggy?$AA@
	mov	DWORD PTR _RandomVehicle$60437[esp+228], OFFSET ??_C@_07HEBHMDIG@GDI?5APC?$AA@
	mov	DWORD PTR _RandomVehicle$60437[esp+232], OFFSET ??_C@_06LCHOMKMI@gdiapc?$AA@
	mov	DWORD PTR _RandomVehicle$60437[esp+236], OFFSET ??_C@_0M@IMFLEHKE@CnC_GDI_APC?$AA@
	mov	DWORD PTR _RandomVehicle$60437[esp+240], OFFSET ??_C@_07BNNAKDCD@Nod?5APC?$AA@
	mov	DWORD PTR _RandomVehicle$60437[esp+244], OFFSET ??_C@_06LFLBLLGJ@nodapc?$AA@
	mov	DWORD PTR _RandomVehicle$60437[esp+248], OFFSET ??_C@_0M@OFJMCHAB@CnC_Nod_APC?$AA@
	mov	DWORD PTR _RandomVehicle$60437[esp+252], OFFSET ??_C@_08PBJMFNPG@GDI?5MRLS?$AA@
	mov	DWORD PTR _RandomVehicle$60437[esp+256], OFFSET ??_C@_04NMJGMLHI@mrls?$AA@
	mov	DWORD PTR _RandomVehicle$60437[esp+260], OFFSET ??_C@_0N@CEAEFAJG@CnC_GDI_MRLS?$AA@
	mov	DWORD PTR _RandomVehicle$60437[esp+264], OFFSET ??_C@_0BF@JIDFLGIB@Nod?5Mobile?5Artillery?$AA@
	mov	DWORD PTR _RandomVehicle$60437[esp+268], OFFSET ??_C@_04PBLMDMDL@arty?$AA@
	mov	DWORD PTR _RandomVehicle$60437[esp+272], OFFSET ??_C@_0BJ@JKMFPNNA@CnC_Nod_Mobile_Artillery?$AA@
	mov	DWORD PTR _RandomVehicle$60437[esp+276], OFFSET ??_C@_0BA@PIGCOCCC@GDI?5Medium?5Tank?$AA@
	mov	DWORD PTR _RandomVehicle$60437[esp+280], OFFSET ??_C@_03FIHKKIFF@med?$AA@
	mov	DWORD PTR _RandomVehicle$60437[esp+284], OFFSET ??_C@_0BE@MFMCCHHH@CnC_GDI_Medium_Tank?$AA@
	mov	DWORD PTR _RandomVehicle$60437[esp+288], OFFSET ??_C@_0P@FMPIGACL@Nod?5Light?5Tank?$AA@
	mov	DWORD PTR _RandomVehicle$60437[esp+292], OFFSET ??_C@_09JOCCCCFA@lighttank?$AA@
	mov	DWORD PTR _RandomVehicle$60437[esp+296], OFFSET ??_C@_0BD@KFFOCKEE@CnC_Nod_Light_Tank?$AA@
	mov	DWORD PTR _RandomVehicle$60437[esp+300], OFFSET ??_C@_0P@KCCNBDHP@Nod?5Flame?5Tank?$AA@
	mov	DWORD PTR _RandomVehicle$60437[esp+304], OFFSET ??_C@_06MLMIPFOD@flamer?$AA@
	mov	DWORD PTR _RandomVehicle$60437[esp+308], OFFSET ??_C@_0BD@FLILFJBA@CnC_Nod_Flame_Tank?$AA@
	mov	DWORD PTR _RandomVehicle$60437[esp+312], OFFSET ??_C@_0BB@LDKENCIA@Nod?5Stealth?5Tank?$AA@
	mov	DWORD PTR _RandomVehicle$60437[esp+316], OFFSET ??_C@_05IIADKDBM@stank?$AA@
	mov	DWORD PTR _RandomVehicle$60437[esp+320], OFFSET ??_C@_0BF@EIMMMIOI@CnC_Nod_Stealth_Tank?$AA@
	mov	DWORD PTR _RandomVehicle$60437[esp+324], OFFSET ??_C@_0BB@KIBFEHIH@GDI?5Mammoth?5Tank?$AA@
	mov	DWORD PTR _RandomVehicle$60437[esp+328], OFFSET ??_C@_05CJLLKJDH@mammy?$AA@
	mov	DWORD PTR _RandomVehicle$60437[esp+332], OFFSET ??_C@_0BF@FDHNFNOP@CnC_GDI_Mammoth_Tank?$AA@
	mov	DWORD PTR _RandomVehicle$60437[esp+336], OFFSET ??_C@_0P@JMJPFBFF@Nod?5Recon?5Bike?$AA@
	mov	DWORD PTR _RandomVehicle$60437[esp+340], OFFSET ??_C@_05MIGDJIHC@recon?$AA@
	mov	DWORD PTR _RandomVehicle$60437[esp+344], OFFSET ??_C@_0BD@GFDJBLDK@CnC_Nod_Recon_Bike?$AA@
	mov	eax, DWORD PTR _RandomVehicle$60437[esp+ebp+212]
	push	eax
	call	?GetGame@gzGameManager@@QAEPAVgzGameModeBase@@XZ ; gzGameManager::GetGame
	mov	ecx, eax
	call	?IsPresetDisabled@gzGameModeBase@@QAE_NPBD@Z ; gzGameModeBase::IsPresetDisabled
	test	al, al
	jne	$LN1@Pick@4

; 1053 : 					nc_PhysicalGameObj *Ghost = nc_ObjectLibraryManager::Create_Object("Invisible_Object")->As_PhysicalGameObj();

	push	OFFSET ??_C@_0BB@NHJNEILC@Invisible_Object?$AA@
	call	?Create_Object@nc_ObjectLibraryManager@@SAPAVnc_ScriptableGameObj@@PBD@Z ; nc_ObjectLibraryManager::Create_Object
	mov	edx, DWORD PTR [eax]
	mov	ecx, eax
	mov	eax, DWORD PTR [edx+36]
	add	esp, 4
	call	eax

; 1054 : 					Ghost->Set_Position(thePos);

	lea	ecx, DWORD PTR _thePos$60402[esp+204]
	mov	edi, eax
	push	ecx
	mov	ecx, edi
	call	?Set_Position@nc_PhysicalGameObj@@QAEXABUnc_Vector3@@@Z ; nc_PhysicalGameObj::Set_Position

; 1055 : 					nc_ScriptImpClass *Observer = nc_ScriptManager::Create_Script("Test_Cinematic");

	push	OFFSET ??_C@_0P@ILJCPIMA@Test_Cinematic?$AA@
	call	?Create_Script@nc_ScriptManager@@SAPAVnc_ScriptImpClass@@PBD@Z ; nc_ScriptManager::Create_Script
	add	esp, 4

; 1056 : 					Observer->Set_Parameters_String(aString::Format("%sRVC_%s.txt", (Picker->PlayerType == 0) ? "Nod" : "GDI", RandomVehicle[Index][1]).GetString());

	cmp	DWORD PTR [ebx+1892], 0
	mov	esi, eax
	mov	eax, OFFSET ??_C@_03OHGKCNFD@Nod?$AA@
	je	SHORT $LN34@Pick@4
	mov	eax, OFFSET ??_C@_03IOFAJBDH@GDI?$AA@
$LN34@Pick@4:
	mov	edx, DWORD PTR _RandomVehicle$60437[esp+ebp+208]
	push	edx
	push	eax
	lea	eax, DWORD PTR $T72142[esp+212]
	push	OFFSET ??_C@_0N@GJOBBEDN@?$CFsRVC_?$CFs?4txt?$AA@
	push	eax
	call	?Format@aString@@SA?AV1@PBDZZ		; aString::Format
	add	esp, 16					; 00000010H
	mov	eax, DWORD PTR [eax+4]
	test	eax, eax
	mov	DWORD PTR __$EHRec$[esp+212], 0
	je	SHORT $LN48@Pick@4
	mov	eax, DWORD PTR [eax]
	jmp	SHORT $LN49@Pick@4
$LN48@Pick@4:
	xor	eax, eax
$LN49@Pick@4:
	mov	edx, DWORD PTR [esi]
	push	eax
	mov	eax, DWORD PTR [edx+76]
	mov	ecx, esi
	call	eax
	lea	ecx, DWORD PTR $T72142[esp+204]
	mov	DWORD PTR __$EHRec$[esp+212], -1
	call	??1aStringBase@@UAE@XZ			; aStringBase::~aStringBase

; 1057 : 					Ghost->Add_Observer(Observer);

	push	esi
	mov	ecx, edi
	call	?Add_Observer@nc_ScriptableGameObj@@QAEXPAVnc_GameObjObserverClass@@@Z ; nc_ScriptableGameObj::Add_Observer

; 1058 : 					PagePlayer(Picker->Player->PlayerId, "[Crate] You got a %s from the Random Vehicle Crate.", RandomVehicle[Index][0]);

	mov	ecx, DWORD PTR _RandomVehicle$60437[esp+ebp+204]
	mov	edx, DWORD PTR [ebx+2400]
	mov	eax, DWORD PTR [edx+1884]
	push	ecx
	push	OFFSET ??_C@_0DE@DJNDEDHB@?$FLCrate?$FN?5You?5got?5a?5?$CFs?5from?5the?5Ra@
	push	eax
	call	?PagePlayer@@YAXHPBDZZ			; PagePlayer
	add	esp, 12					; 0000000cH

; 1059 : 					gzConsole::In("msg [Crate]: Looks like %s just got a random vehicle! Go them!", (Picker->PlayerType == 0) ? "Nod" : "GDI");

	cmp	DWORD PTR [ebx+1892], 0
	mov	eax, OFFSET ??_C@_03OHGKCNFD@Nod?$AA@
	je	SHORT $LN36@Pick@4
	mov	eax, OFFSET ??_C@_03IOFAJBDH@GDI?$AA@
$LN36@Pick@4:
	push	eax
	push	OFFSET ??_C@_0DP@NLKECIH@msg?5?$FLCrate?$FN?3?5Looks?5like?5?$CFs?5just?5@
	call	?In@gzConsole@@SAXPBDZZ			; gzConsole::In
	add	esp, 8

; 1060 : 					return true;

	mov	al, 1
	jmp	SHORT $LN31@Pick@4
$LN65@Pick@4:

; 994  : 			if (gzCrateMgr->m_settings->m_vehSpawn[1].X != 0 &&
; 995  : 				gzCrateMgr->m_settings->m_vehSpawn[0].X != 0 &&
; 996  : 				gzCrateMgr->m_settings->m_vehPSpawn[1].X != 0 &&
; 997  : 				gzCrateMgr->m_settings->m_vehPSpawn[0].X != 0)

	fstp	ST(0)
$LN1@Pick@4:

; 1061 : 				}
; 1062 : 			}
; 1063 : 		}
; 1064 : 		return false;

	xor	al, al
$LN31@Pick@4:

; 1065 : 	};

	mov	ecx, DWORD PTR __$EHRec$[esp+204]
	pop	edi
	pop	esi
	pop	ebp
	pop	ebx
	mov	DWORD PTR fs:0, ecx
	add	esp, 188				; 000000bcH
	ret	4
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$?Pick@Crate_RandomVehicle@@EAE_NPAVnc_SmartGameObj@@@Z$0:
	lea	ecx, DWORD PTR $T72142[ebp]
	jmp	??1aString@@UAE@XZ
__ehhandler$?Pick@Crate_RandomVehicle@@EAE_NPAVnc_SmartGameObj@@@Z:
	mov	eax, OFFSET __ehfuncinfo$?Pick@Crate_RandomVehicle@@EAE_NPAVnc_SmartGameObj@@@Z
	jmp	___CxxFrameHandler3
text$x	ENDS
?Pick@Crate_RandomVehicle@@EAE_NPAVnc_SmartGameObj@@@Z ENDP ; Crate_RandomVehicle::Pick
PUBLIC	??_7Crate_Death@@6B@				; Crate_Death::`vftable'
PUBLIC	??0Crate_Death@@QAE@XZ				; Crate_Death::Crate_Death
PUBLIC	??_R4Crate_Death@@6B@				; Crate_Death::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVCrate_Death@@@8				; Crate_Death `RTTI Type Descriptor'
PUBLIC	??_R3Crate_Death@@8				; Crate_Death::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2Crate_Death@@8				; Crate_Death::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@Crate_Death@@8			; Crate_Death::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?GetName@Crate_Death@@EAEPBDXZ			; Crate_Death::GetName
PUBLIC	?GetType@Crate_Death@@EAEHXZ			; Crate_Death::GetType
PUBLIC	?GetPercent@Crate_Death@@EAEIXZ			; Crate_Death::GetPercent
PUBLIC	?SkipDefaultOutput@Crate_Death@@EAE_NXZ		; Crate_Death::SkipDefaultOutput
PUBLIC	?Pick@Crate_Death@@EAE_NPAVnc_SmartGameObj@@@Z	; Crate_Death::Pick
;	COMDAT ??_R1A@?0A@EA@Crate_Death@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@Crate_Death@@8 DD FLAT:??_R0?AVCrate_Death@@@8 ; Crate_Death::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3Crate_Death@@8
rdata$r	ENDS
;	COMDAT ??_R2Crate_Death@@8
rdata$r	SEGMENT
??_R2Crate_Death@@8 DD FLAT:??_R1A@?0A@EA@Crate_Death@@8 ; Crate_Death::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzCrateBase@@8
rdata$r	ENDS
;	COMDAT ??_R3Crate_Death@@8
rdata$r	SEGMENT
??_R3Crate_Death@@8 DD 00H				; Crate_Death::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2Crate_Death@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVCrate_Death@@@8
_DATA	SEGMENT
??_R0?AVCrate_Death@@@8 DD FLAT:??_7type_info@@6B@	; Crate_Death `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVCrate_Death@@', 00H
_DATA	ENDS
;	COMDAT ??_R4Crate_Death@@6B@
rdata$r	SEGMENT
??_R4Crate_Death@@6B@ DD 00H				; Crate_Death::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVCrate_Death@@@8
	DD	FLAT:??_R3Crate_Death@@8
rdata$r	ENDS
;	COMDAT ??_7Crate_Death@@6B@
CONST	SEGMENT
??_7Crate_Death@@6B@ DD FLAT:??_R4Crate_Death@@6B@	; Crate_Death::`vftable'
	DD	FLAT:?GetName@Crate_Death@@EAEPBDXZ
	DD	FLAT:?GetType@Crate_Death@@EAEHXZ
	DD	FLAT:?GetPercent@Crate_Death@@EAEIXZ
	DD	FLAT:?SkipDefaultOutput@Crate_Death@@EAE_NXZ
	DD	FLAT:?Pick@Crate_Death@@EAE_NPAVnc_SmartGameObj@@@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0Crate_Death@@QAE@XZ
_TEXT	SEGMENT
??0Crate_Death@@QAE@XZ PROC				; Crate_Death::Crate_Death, COMDAT
; _this$ = ecx
	xor	eax, eax
	push	esi
	mov	esi, ecx
	mov	DWORD PTR [esi+4], eax
	mov	BYTE PTR [esi+8], al
	mov	DWORD PTR [esi], OFFSET ??_7gzCrateBase@@6B@
	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	mov	eax, esi
	je	SHORT $LN8@Crate_Deat
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], esi
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN8@Crate_Deat:
	mov	DWORD PTR [esi], OFFSET ??_7Crate_Death@@6B@
	pop	esi
	ret	0
??0Crate_Death@@QAE@XZ ENDP				; Crate_Death::Crate_Death
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetName@Crate_Death@@EAEPBDXZ
_TEXT	SEGMENT
?GetName@Crate_Death@@EAEPBDXZ PROC			; Crate_Death::GetName, COMDAT
; _this$ = ecx

; 1072 : 		return "Death";

	mov	eax, OFFSET ??_C@_05PGGAFPFO@Death?$AA@

; 1073 : 	};

	ret	0
?GetName@Crate_Death@@EAEPBDXZ ENDP			; Crate_Death::GetName
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetType@Crate_Death@@EAEHXZ
_TEXT	SEGMENT
?GetType@Crate_Death@@EAEHXZ PROC			; Crate_Death::GetType, COMDAT
; _this$ = ecx

; 1076 : 		return CRATE_SOLDIER;

	mov	eax, 1

; 1077 : 	};

	ret	0
?GetType@Crate_Death@@EAEHXZ ENDP			; Crate_Death::GetType
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetPercent@Crate_Death@@EAEIXZ
_TEXT	SEGMENT
?GetPercent@Crate_Death@@EAEIXZ PROC			; Crate_Death::GetPercent, COMDAT
; _this$ = ecx

; 1080 : 		return this->m_percent->Death;

	mov	eax, DWORD PTR ?m_percent@gzCrateBase@@1PBUgzCratePercentStruct@@B ; gzCrateBase::m_percent
	mov	eax, DWORD PTR [eax+16]

; 1081 : 	};

	ret	0
?GetPercent@Crate_Death@@EAEIXZ ENDP			; Crate_Death::GetPercent
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?SkipDefaultOutput@Crate_Death@@EAE_NXZ
_TEXT	SEGMENT
?SkipDefaultOutput@Crate_Death@@EAE_NXZ PROC		; Crate_Death::SkipDefaultOutput, COMDAT
; _this$ = ecx

; 1084 : 		return false;

	xor	al, al

; 1085 : 	};

	ret	0
?SkipDefaultOutput@Crate_Death@@EAE_NXZ ENDP		; Crate_Death::SkipDefaultOutput
_TEXT	ENDS
PUBLIC	??_C@_0EG@NKOGANLG@msg?5?$FLCrate?$FN?3?5Some?5poor?5?$CFs?5guy?5go@ ; `string'
PUBLIC	??_C@_0ED@DAEIOGIM@?$FLCrate?$FN?5You?5just?5got?5a?5Death?5Cra@ ; `string'
PUBLIC	??_C@_0BM@BMDOCKLF@Explosion_Mine_Proximity_01?$AA@ ; `string'
EXTRN	?Find_Typed_Definition@nc_DefinitionMgrClass@@SAPAVnc_DefinitionClass@@PBDK_N@Z:PROC ; nc_DefinitionMgrClass::Find_Typed_Definition
;	COMDAT ??_C@_0EG@NKOGANLG@msg?5?$FLCrate?$FN?3?5Some?5poor?5?$CFs?5guy?5go@
CONST	SEGMENT
??_C@_0EG@NKOGANLG@msg?5?$FLCrate?$FN?3?5Some?5poor?5?$CFs?5guy?5go@ DB 'm'
	DB	'sg [Crate]: Some poor %s guy got pwned by the fearsome death '
	DB	'crate!!', 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_0ED@DAEIOGIM@?$FLCrate?$FN?5You?5just?5got?5a?5Death?5Cra@
CONST	SEGMENT
??_C@_0ED@DAEIOGIM@?$FLCrate?$FN?5You?5just?5got?5a?5Death?5Cra@ DB '[Cra'
	DB	'te] You just got a Death Crate, you have been killed. Sorry :'
	DB	'(', 00H					; `string'
CONST	ENDS
;	COMDAT ??_C@_0BM@BMDOCKLF@Explosion_Mine_Proximity_01?$AA@
CONST	SEGMENT
??_C@_0BM@BMDOCKLF@Explosion_Mine_Proximity_01?$AA@ DB 'Explosion_Mine_Pr'
	DB	'oximity_01', 00H				; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?Pick@Crate_Death@@EAE_NPAVnc_SmartGameObj@@@Z
_TEXT	SEGMENT
_Pos$ = -12						; size = 12
_Picker$ = 8						; size = 4
?Pick@Crate_Death@@EAE_NPAVnc_SmartGameObj@@@Z PROC	; Crate_Death::Pick, COMDAT
; _this$ = ecx

; 1088 : 		gzCommands->Apply_Damage(Picker, 99999, "Death", false);

	fld	DWORD PTR __real@47c34f80
	mov	eax, DWORD PTR ?gzCommands@@3PAUnc_ScriptCommands@@A ; gzCommands
	sub	esp, 12					; 0000000cH
	push	esi
	mov	esi, DWORD PTR _Picker$[esp+12]
	push	0
	push	OFFSET ??_C@_05PGGAFPFO@Death?$AA@
	push	ecx
	mov	ecx, DWORD PTR [eax+616]
	fstp	DWORD PTR [esp]
	push	esi
	call	ecx

; 1089 : 		nc_Vector3 Pos;
; 1090 : 		Picker->Get_Position(&Pos);

	mov	edx, DWORD PTR [esi]
	mov	edx, DWORD PTR [edx+56]
	add	esp, 16					; 00000010H
	lea	eax, DWORD PTR _Pos$[esp+16]
	push	eax
	mov	ecx, esi
	call	edx

; 1091 : 		nc_ExplosionManager::Server_Explode(nc_DefinitionMgrClass::Find_Typed_Definition("Explosion_Mine_Proximity_01", 0xB003, true)->Get_ID(), Pos, 0, NULL);

	push	1
	push	45059					; 0000b003H
	push	OFFSET ??_C@_0BM@BMDOCKLF@Explosion_Mine_Proximity_01?$AA@
	call	?Find_Typed_Definition@nc_DefinitionMgrClass@@SAPAVnc_DefinitionClass@@PBDK_N@Z ; nc_DefinitionMgrClass::Find_Typed_Definition
	mov	edx, DWORD PTR [eax]
	add	esp, 12					; 0000000cH
	push	0
	push	0
	lea	ecx, DWORD PTR _Pos$[esp+24]
	push	ecx
	mov	ecx, eax
	mov	eax, DWORD PTR [edx+36]
	call	eax
	push	eax
	call	?Server_Explode@nc_ExplosionManager@@SAXHABUnc_Vector3@@HPAVnc_DamageableGameObj@@@Z ; nc_ExplosionManager::Server_Explode

; 1092 : 		PagePlayer(Picker->Player->PlayerId, "[Crate] You just got a Death Crate, you have been killed. Sorry :(");

	mov	ecx, DWORD PTR [esi+2400]
	mov	edx, DWORD PTR [ecx+1884]
	push	OFFSET ??_C@_0ED@DAEIOGIM@?$FLCrate?$FN?5You?5just?5got?5a?5Death?5Cra@
	push	edx
	call	?PagePlayer@@YAXHPBDZZ			; PagePlayer
	add	esp, 24					; 00000018H

; 1093 : 		gzConsole::In("msg [Crate]: Some poor %s guy got pwned by the fearsome death crate!!", (Picker->PlayerType == 0) ? "Nod" : "GDI");

	cmp	DWORD PTR [esi+1892], 0
	pop	esi
	mov	eax, OFFSET ??_C@_03OHGKCNFD@Nod?$AA@
	je	SHORT $LN4@Pick@5
	mov	eax, OFFSET ??_C@_03IOFAJBDH@GDI?$AA@
$LN4@Pick@5:
	push	eax
	push	OFFSET ??_C@_0EG@NKOGANLG@msg?5?$FLCrate?$FN?3?5Some?5poor?5?$CFs?5guy?5go@
	call	?In@gzConsole@@SAXPBDZZ			; gzConsole::In

; 1094 : 		return true;

	mov	al, 1

; 1095 : 	};

	add	esp, 20					; 00000014H
	ret	4
?Pick@Crate_Death@@EAE_NPAVnc_SmartGameObj@@@Z ENDP	; Crate_Death::Pick
_TEXT	ENDS
PUBLIC	??_7Crate_Ammo@@6B@				; Crate_Ammo::`vftable'
PUBLIC	??0Crate_Ammo@@QAE@XZ				; Crate_Ammo::Crate_Ammo
PUBLIC	??_R4Crate_Ammo@@6B@				; Crate_Ammo::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVCrate_Ammo@@@8				; Crate_Ammo `RTTI Type Descriptor'
PUBLIC	??_R3Crate_Ammo@@8				; Crate_Ammo::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2Crate_Ammo@@8				; Crate_Ammo::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@Crate_Ammo@@8			; Crate_Ammo::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?GetName@Crate_Ammo@@EAEPBDXZ			; Crate_Ammo::GetName
PUBLIC	?GetType@Crate_Ammo@@EAEHXZ			; Crate_Ammo::GetType
PUBLIC	?GetPercent@Crate_Ammo@@EAEIXZ			; Crate_Ammo::GetPercent
PUBLIC	?SkipDefaultOutput@Crate_Ammo@@EAE_NXZ		; Crate_Ammo::SkipDefaultOutput
PUBLIC	?Pick@Crate_Ammo@@EAE_NPAVnc_SmartGameObj@@@Z	; Crate_Ammo::Pick
;	COMDAT ??_R1A@?0A@EA@Crate_Ammo@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@Crate_Ammo@@8 DD FLAT:??_R0?AVCrate_Ammo@@@8 ; Crate_Ammo::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3Crate_Ammo@@8
rdata$r	ENDS
;	COMDAT ??_R2Crate_Ammo@@8
rdata$r	SEGMENT
??_R2Crate_Ammo@@8 DD FLAT:??_R1A@?0A@EA@Crate_Ammo@@8	; Crate_Ammo::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzCrateBase@@8
rdata$r	ENDS
;	COMDAT ??_R3Crate_Ammo@@8
rdata$r	SEGMENT
??_R3Crate_Ammo@@8 DD 00H				; Crate_Ammo::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2Crate_Ammo@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVCrate_Ammo@@@8
_DATA	SEGMENT
??_R0?AVCrate_Ammo@@@8 DD FLAT:??_7type_info@@6B@	; Crate_Ammo `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVCrate_Ammo@@', 00H
_DATA	ENDS
;	COMDAT ??_R4Crate_Ammo@@6B@
rdata$r	SEGMENT
??_R4Crate_Ammo@@6B@ DD 00H				; Crate_Ammo::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVCrate_Ammo@@@8
	DD	FLAT:??_R3Crate_Ammo@@8
rdata$r	ENDS
;	COMDAT ??_7Crate_Ammo@@6B@
CONST	SEGMENT
??_7Crate_Ammo@@6B@ DD FLAT:??_R4Crate_Ammo@@6B@	; Crate_Ammo::`vftable'
	DD	FLAT:?GetName@Crate_Ammo@@EAEPBDXZ
	DD	FLAT:?GetType@Crate_Ammo@@EAEHXZ
	DD	FLAT:?GetPercent@Crate_Ammo@@EAEIXZ
	DD	FLAT:?SkipDefaultOutput@Crate_Ammo@@EAE_NXZ
	DD	FLAT:?Pick@Crate_Ammo@@EAE_NPAVnc_SmartGameObj@@@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0Crate_Ammo@@QAE@XZ
_TEXT	SEGMENT
??0Crate_Ammo@@QAE@XZ PROC				; Crate_Ammo::Crate_Ammo, COMDAT
; _this$ = ecx
	xor	eax, eax
	push	esi
	mov	esi, ecx
	mov	DWORD PTR [esi+4], eax
	mov	BYTE PTR [esi+8], al
	mov	DWORD PTR [esi], OFFSET ??_7gzCrateBase@@6B@
	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	mov	eax, esi
	je	SHORT $LN8@Crate_Ammo
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], esi
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN8@Crate_Ammo:
	mov	DWORD PTR [esi], OFFSET ??_7Crate_Ammo@@6B@
	pop	esi
	ret	0
??0Crate_Ammo@@QAE@XZ ENDP				; Crate_Ammo::Crate_Ammo
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetName@Crate_Ammo@@EAEPBDXZ
_TEXT	SEGMENT
?GetName@Crate_Ammo@@EAEPBDXZ PROC			; Crate_Ammo::GetName, COMDAT
; _this$ = ecx

; 1102 : 		return "Ammo";

	mov	eax, OFFSET ??_C@_04DHGIHJNO@Ammo?$AA@

; 1103 : 	};

	ret	0
?GetName@Crate_Ammo@@EAEPBDXZ ENDP			; Crate_Ammo::GetName
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetType@Crate_Ammo@@EAEHXZ
_TEXT	SEGMENT
?GetType@Crate_Ammo@@EAEHXZ PROC			; Crate_Ammo::GetType, COMDAT
; _this$ = ecx

; 1106 : 		return CRATE_SOLDIER;

	mov	eax, 1

; 1107 : 	};

	ret	0
?GetType@Crate_Ammo@@EAEHXZ ENDP			; Crate_Ammo::GetType
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetPercent@Crate_Ammo@@EAEIXZ
_TEXT	SEGMENT
?GetPercent@Crate_Ammo@@EAEIXZ PROC			; Crate_Ammo::GetPercent, COMDAT
; _this$ = ecx

; 1110 : 		return this->m_percent->Ammo;

	mov	eax, DWORD PTR ?m_percent@gzCrateBase@@1PBUgzCratePercentStruct@@B ; gzCrateBase::m_percent
	mov	eax, DWORD PTR [eax+20]

; 1111 : 	};

	ret	0
?GetPercent@Crate_Ammo@@EAEIXZ ENDP			; Crate_Ammo::GetPercent
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?SkipDefaultOutput@Crate_Ammo@@EAE_NXZ
_TEXT	SEGMENT
?SkipDefaultOutput@Crate_Ammo@@EAE_NXZ PROC		; Crate_Ammo::SkipDefaultOutput, COMDAT
; _this$ = ecx

; 1114 : 		return false;

	xor	al, al

; 1115 : 	};

	ret	0
?SkipDefaultOutput@Crate_Ammo@@EAE_NXZ ENDP		; Crate_Ammo::SkipDefaultOutput
_TEXT	ENDS
PUBLIC	??_C@_0EH@JDHEIEFO@?$FLCrate?$FN?5You?5just?5got?5the?5Full?5Am@ ; `string'
EXTRN	?Grant@nc_PowerUpGameObjDef@@QAEXPAVnc_SmartGameObj@@PAVnc_PowerUpGameObj@@_N@Z:PROC ; nc_PowerUpGameObjDef::Grant
;	COMDAT ??_C@_0EH@JDHEIEFO@?$FLCrate?$FN?5You?5just?5got?5the?5Full?5Am@
CONST	SEGMENT
??_C@_0EH@JDHEIEFO@?$FLCrate?$FN?5You?5just?5got?5the?5Full?5Am@ DB '[Cra'
	DB	'te] You just got the Full Ammo Crate, your ammo has been refi'
	DB	'lled.', 00H					; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?Pick@Crate_Ammo@@EAE_NPAVnc_SmartGameObj@@@Z
_TEXT	SEGMENT
_Picker$ = 8						; size = 4
?Pick@Crate_Ammo@@EAE_NPAVnc_SmartGameObj@@@Z PROC	; Crate_Ammo::Pick, COMDAT
; _this$ = ecx

; 1117 : 	{

	push	esi
	push	edi

; 1118 : 		nc_PowerUpGameObjDef *powerup = (nc_PowerUpGameObjDef *)nc_DefinitionMgrClass::Find_Typed_Definition("CnC_POW_Ammo_ClipMax", 0x3003, true);

	push	1
	push	12291					; 00003003H
	push	OFFSET ??_C@_0BF@DPHCPFOB@CnC_POW_Ammo_ClipMax?$AA@
	call	?Find_Typed_Definition@nc_DefinitionMgrClass@@SAPAVnc_DefinitionClass@@PBDK_N@Z ; nc_DefinitionMgrClass::Find_Typed_Definition

; 1119 : 		powerup->Grant(Picker, NULL, true);

	mov	edi, DWORD PTR _Picker$[esp+16]
	add	esp, 12					; 0000000cH
	push	1
	mov	esi, eax
	push	0
	push	edi
	mov	ecx, esi
	call	?Grant@nc_PowerUpGameObjDef@@QAEXPAVnc_SmartGameObj@@PAVnc_PowerUpGameObj@@_N@Z ; nc_PowerUpGameObjDef::Grant

; 1120 : 		powerup->Grant(Picker, NULL, true);

	push	1
	push	0
	push	edi
	mov	ecx, esi
	call	?Grant@nc_PowerUpGameObjDef@@QAEXPAVnc_SmartGameObj@@PAVnc_PowerUpGameObj@@_N@Z ; nc_PowerUpGameObjDef::Grant

; 1121 : 		powerup->Grant(Picker, NULL ,true);

	push	1
	push	0
	push	edi
	mov	ecx, esi
	call	?Grant@nc_PowerUpGameObjDef@@QAEXPAVnc_SmartGameObj@@PAVnc_PowerUpGameObj@@_N@Z ; nc_PowerUpGameObjDef::Grant

; 1122 : 		powerup->Grant(Picker, NULL, true);

	push	1
	push	0
	push	edi
	mov	ecx, esi
	call	?Grant@nc_PowerUpGameObjDef@@QAEXPAVnc_SmartGameObj@@PAVnc_PowerUpGameObj@@_N@Z ; nc_PowerUpGameObjDef::Grant

; 1123 : 		PagePlayer(Picker->Player->PlayerId, "[Crate] You just got the Full Ammo Crate, your ammo has been refilled.");

	mov	eax, DWORD PTR [edi+2400]
	mov	ecx, DWORD PTR [eax+1884]
	push	OFFSET ??_C@_0EH@JDHEIEFO@?$FLCrate?$FN?5You?5just?5got?5the?5Full?5Am@
	push	ecx
	call	?PagePlayer@@YAXHPBDZZ			; PagePlayer
	add	esp, 8
	pop	edi

; 1124 : 		return true;

	mov	al, 1
	pop	esi

; 1125 : 	};

	ret	4
?Pick@Crate_Ammo@@EAE_NPAVnc_SmartGameObj@@@Z ENDP	; Crate_Ammo::Pick
_TEXT	ENDS
PUBLIC	??_7Crate_Armor@@6B@				; Crate_Armor::`vftable'
PUBLIC	??0Crate_Armor@@QAE@XZ				; Crate_Armor::Crate_Armor
PUBLIC	??_R4Crate_Armor@@6B@				; Crate_Armor::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVCrate_Armor@@@8				; Crate_Armor `RTTI Type Descriptor'
PUBLIC	??_R3Crate_Armor@@8				; Crate_Armor::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2Crate_Armor@@8				; Crate_Armor::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@Crate_Armor@@8			; Crate_Armor::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?GetName@Crate_Armor@@EAEPBDXZ			; Crate_Armor::GetName
PUBLIC	?GetType@Crate_Armor@@EAEHXZ			; Crate_Armor::GetType
PUBLIC	?GetPercent@Crate_Armor@@EAEIXZ			; Crate_Armor::GetPercent
PUBLIC	?Pick@Crate_Armor@@EAE_NPAVnc_SmartGameObj@@@Z	; Crate_Armor::Pick
;	COMDAT ??_R1A@?0A@EA@Crate_Armor@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@Crate_Armor@@8 DD FLAT:??_R0?AVCrate_Armor@@@8 ; Crate_Armor::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3Crate_Armor@@8
rdata$r	ENDS
;	COMDAT ??_R2Crate_Armor@@8
rdata$r	SEGMENT
??_R2Crate_Armor@@8 DD FLAT:??_R1A@?0A@EA@Crate_Armor@@8 ; Crate_Armor::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzCrateBase@@8
rdata$r	ENDS
;	COMDAT ??_R3Crate_Armor@@8
rdata$r	SEGMENT
??_R3Crate_Armor@@8 DD 00H				; Crate_Armor::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2Crate_Armor@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVCrate_Armor@@@8
_DATA	SEGMENT
??_R0?AVCrate_Armor@@@8 DD FLAT:??_7type_info@@6B@	; Crate_Armor `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVCrate_Armor@@', 00H
_DATA	ENDS
;	COMDAT ??_R4Crate_Armor@@6B@
rdata$r	SEGMENT
??_R4Crate_Armor@@6B@ DD 00H				; Crate_Armor::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVCrate_Armor@@@8
	DD	FLAT:??_R3Crate_Armor@@8
rdata$r	ENDS
;	COMDAT ??_7Crate_Armor@@6B@
CONST	SEGMENT
??_7Crate_Armor@@6B@ DD FLAT:??_R4Crate_Armor@@6B@	; Crate_Armor::`vftable'
	DD	FLAT:?GetName@Crate_Armor@@EAEPBDXZ
	DD	FLAT:?GetType@Crate_Armor@@EAEHXZ
	DD	FLAT:?GetPercent@Crate_Armor@@EAEIXZ
	DD	FLAT:?SkipDefaultOutput@gzCrateBase@@UAE_NXZ
	DD	FLAT:?Pick@Crate_Armor@@EAE_NPAVnc_SmartGameObj@@@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0Crate_Armor@@QAE@XZ
_TEXT	SEGMENT
??0Crate_Armor@@QAE@XZ PROC				; Crate_Armor::Crate_Armor, COMDAT
; _this$ = ecx
	xor	eax, eax
	push	esi
	mov	esi, ecx
	mov	DWORD PTR [esi+4], eax
	mov	BYTE PTR [esi+8], al
	mov	DWORD PTR [esi], OFFSET ??_7gzCrateBase@@6B@
	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	mov	eax, esi
	je	SHORT $LN8@Crate_Armo
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], esi
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN8@Crate_Armo:
	mov	DWORD PTR [esi], OFFSET ??_7Crate_Armor@@6B@
	pop	esi
	ret	0
??0Crate_Armor@@QAE@XZ ENDP				; Crate_Armor::Crate_Armor
_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	??Ync_FloatDataSafeClass@@QAEXM@Z		; nc_FloatDataSafeClass::operator+=
EXTRN	?Get@nc_FloatDataSafeClass@@QAEMXZ:PROC		; nc_FloatDataSafeClass::Get
; 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+=
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
_TEXT	ENDS
;	COMDAT ?GetName@Crate_Armor@@EAEPBDXZ
_TEXT	SEGMENT
?GetName@Crate_Armor@@EAEPBDXZ PROC			; Crate_Armor::GetName, COMDAT
; _this$ = ecx

; 1132 : 		return "Armor";

	mov	eax, OFFSET ??_C@_05JOOFIMIN@Armor?$AA@

; 1133 : 	};

	ret	0
?GetName@Crate_Armor@@EAEPBDXZ ENDP			; Crate_Armor::GetName
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetType@Crate_Armor@@EAEHXZ
_TEXT	SEGMENT
?GetType@Crate_Armor@@EAEHXZ PROC			; Crate_Armor::GetType, COMDAT
; _this$ = ecx

; 1136 : 		return CRATE_SOLDIER;

	mov	eax, 1

; 1137 : 	};

	ret	0
?GetType@Crate_Armor@@EAEHXZ ENDP			; Crate_Armor::GetType
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetPercent@Crate_Armor@@EAEIXZ
_TEXT	SEGMENT
?GetPercent@Crate_Armor@@EAEIXZ PROC			; Crate_Armor::GetPercent, COMDAT
; _this$ = ecx

; 1140 : 		return this->m_percent->Armor;

	mov	eax, DWORD PTR ?m_percent@gzCrateBase@@1PBUgzCratePercentStruct@@B ; gzCrateBase::m_percent
	mov	eax, DWORD PTR [eax+24]

; 1141 : 	};

	ret	0
?GetPercent@Crate_Armor@@EAEIXZ ENDP			; Crate_Armor::GetPercent
_TEXT	ENDS
PUBLIC	??_C@_0EG@NODOLBMD@?$FLCrate?$FN?5You?5just?5got?5the?5Dearmor@ ; `string'
PUBLIC	??_C@_0CA@MPEIFKEK@?$CFls?5picked?5up?5a?5De?9armor?5Crate?4?$AA@ ; `string'
PUBLIC	??_C@_0FB@GIDNPJED@?$FLCrate?$FN?5You?5just?5got?5the?5Armor?5C@ ; `string'
PUBLIC	??_C@_0BO@NCDBJGFA@?$CFls?5picked?5up?5an?5Armor?5Crate?4?$AA@ ; `string'
;	COMDAT ??_C@_0EG@NODOLBMD@?$FLCrate?$FN?5You?5just?5got?5the?5Dearmor@
; File d:\source code\fds lib\new\fds_def.h
CONST	SEGMENT
??_C@_0EG@NODOLBMD@?$FLCrate?$FN?5You?5just?5got?5the?5Dearmor@ DB '[Crat'
	DB	'e] You just got the Dearmor Crate, your armor has been set to'
	DB	' 1.', 00H					; `string'
CONST	ENDS
;	COMDAT ??_C@_0CA@MPEIFKEK@?$CFls?5picked?5up?5a?5De?9armor?5Crate?4?$AA@
CONST	SEGMENT
??_C@_0CA@MPEIFKEK@?$CFls?5picked?5up?5a?5De?9armor?5Crate?4?$AA@ DB '%ls'
	DB	' picked up a De-armor Crate.', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_0FB@GIDNPJED@?$FLCrate?$FN?5You?5just?5got?5the?5Armor?5C@
CONST	SEGMENT
??_C@_0FB@GIDNPJED@?$FLCrate?$FN?5You?5just?5got?5the?5Armor?5C@ DB '[Cra'
	DB	'te] You just got the Armor Crate, your max armor has been inc'
	DB	'reased! [+%.0f]', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_0BO@NCDBJGFA@?$CFls?5picked?5up?5an?5Armor?5Crate?4?$AA@
CONST	SEGMENT
??_C@_0BO@NCDBJGFA@?$CFls?5picked?5up?5an?5Armor?5Crate?4?$AA@ DB '%ls pi'
	DB	'cked up an Armor Crate.', 00H		; `string'
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
CONST	ENDS
;	COMDAT ?Pick@Crate_Armor@@EAE_NPAVnc_SmartGameObj@@@Z
_TEXT	SEGMENT
_RndShield$60584 = -4					; size = 4
tv255 = 8						; size = 4
$T72338 = 8						; size = 4
$T72334 = 8						; size = 4
_Picker$ = 8						; size = 4
?Pick@Crate_Armor@@EAE_NPAVnc_SmartGameObj@@@Z PROC	; Crate_Armor::Pick, COMDAT
; _this$ = ecx

; 1143 : 	{

	push	ecx

; 1144 : 		int RndGood = gzRandom.Get_Int(1, 2);

	mov	ecx, DWORD PTR ?gzRandom@@3VaRandom@@A
	mov	eax, ecx
	add	ecx, 1
	cmp	eax, 64					; 00000040H
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A, ecx
	jle	SHORT $LN10@Pick@6
	mov	ecx, 1
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A, ecx
$LN10@Pick@6:
	mov	eax, DWORD PTR ?gzRandom@@3VaRandom@@A+4
	imul	eax, 22695475				; 015a4e33H
	add	eax, ecx
	push	ebx
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A+4, eax
	push	esi

; 1145 : 		if (Picker->Defense.ShieldStrength.Get() < 2.0f)

	mov	esi, DWORD PTR _Picker$[esp+8]
	shr	eax, 16					; 00000010H
	push	edi
	and	eax, 1
	add	eax, 1
	lea	edi, DWORD PTR [esi+1852]
	mov	ecx, edi
	mov	ebx, eax
	call	?Get@nc_FloatDataSafeClass@@QAEMXZ	; nc_FloatDataSafeClass::Get
	fcomp	DWORD PTR __real@40000000
	fnstsw	ax
	test	ah, 5

; 1146 : 			RndGood = 1;
; 1147 : 		if (RndGood	== 1)

	jnp	SHORT $LN24@Pick@6
	cmp	ebx, 1
	jne	$LN2@Pick@6
$LN24@Pick@6:

; 1148 : 		{
; 1149 : 			float RndShield = (float)gzRandom.Get_Int(5, 50);

	mov	ecx, DWORD PTR ?gzRandom@@3VaRandom@@A
	mov	edx, ecx
	add	ecx, 1
	cmp	edx, 64					; 00000040H
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A, ecx
	jle	SHORT $LN17@Pick@6
	mov	ecx, 1
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A, ecx
$LN17@Pick@6:
	mov	eax, DWORD PTR ?gzRandom@@3VaRandom@@A+4
	imul	eax, 22695475				; 015a4e33H
	add	eax, ecx
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A+4, eax
	xor	edx, edx
	shr	eax, 16					; 00000010H
	mov	ecx, 46					; 0000002eH
	div	ecx

; 1150 : 			Picker->Defense.ShieldStrengthMax += RndShield;

	lea	edi, DWORD PTR [esi+1856]
	mov	ecx, edi
	add	edx, 5
	mov	DWORD PTR tv255[esp+12], edx
	fild	DWORD PTR tv255[esp+12]
	fst	DWORD PTR _RndShield$60584[esp+16]
	fstp	DWORD PTR $T72334[esp+12]
	call	?Get@nc_FloatDataSafeClass@@QAEMXZ	; nc_FloatDataSafeClass::Get
	fadd	DWORD PTR $T72334[esp+12]
	lea	edx, DWORD PTR $T72334[esp+12]
	push	edx
	push	edi
	fstp	DWORD PTR $T72334[esp+20]
	call	?Set@nc_FloatDataSafeClass@@QAG_NAAM@Z	; nc_FloatDataSafeClass::Set

; 1151 : 			gzLogger("_CRATE", "%ls picked up an Armor Crate.", Picker->Player->PlayerName.m_Buffer);

	mov	eax, DWORD PTR [esi+2400]
	mov	ecx, DWORD PTR [eax+1880]
	push	ecx
	push	OFFSET ??_C@_0BO@NCDBJGFA@?$CFls?5picked?5up?5an?5Armor?5Crate?4?$AA@
	push	OFFSET ??_C@_06LJACFPMC@_CRATE?$AA@
	call	?gzLogger@@YAXPBD0ZZ			; gzLogger

; 1152 : 			PagePlayer(Picker->Player->PlayerId, "[Crate] You just got the Armor Crate, your max armor has been increased! [+%.0f]", RndShield);

	fld	DWORD PTR _RndShield$60584[esp+28]
	mov	edx, DWORD PTR [esi+2400]
	fstp	QWORD PTR [esp+4]
	mov	eax, DWORD PTR [edx+1884]
	add	esp, 4
	push	OFFSET ??_C@_0FB@GIDNPJED@?$FLCrate?$FN?5You?5just?5got?5the?5Armor?5C@
	push	eax
	call	?PagePlayer@@YAXHPBDZZ			; PagePlayer
	add	esp, 16					; 00000010H

; 1153 : 		}
; 1154 : 		else

	jmp	SHORT $LN1@Pick@6
$LN2@Pick@6:

; 1155 : 		{
; 1156 : 			Picker->Defense.ShieldStrength = 1.0f;

	fld1
	lea	ecx, DWORD PTR $T72338[esp+12]
	push	ecx
	fstp	DWORD PTR $T72338[esp+16]
	push	edi
	call	?Set@nc_FloatDataSafeClass@@QAG_NAAM@Z	; nc_FloatDataSafeClass::Set

; 1157 : 			gzLogger("_CRATE", "%ls picked up a De-armor Crate.", Picker->Player->PlayerName.m_Buffer);

	mov	edx, DWORD PTR [esi+2400]
	mov	eax, DWORD PTR [edx+1880]
	push	eax
	push	OFFSET ??_C@_0CA@MPEIFKEK@?$CFls?5picked?5up?5a?5De?9armor?5Crate?4?$AA@
	push	OFFSET ??_C@_06LJACFPMC@_CRATE?$AA@
	call	?gzLogger@@YAXPBD0ZZ			; gzLogger

; 1158 : 			PagePlayer(Picker->Player->PlayerId, "[Crate] You just got the Dearmor Crate, your armor has been set to 1.");

	mov	ecx, DWORD PTR [esi+2400]
	mov	edx, DWORD PTR [ecx+1884]
	push	OFFSET ??_C@_0EG@NODOLBMD@?$FLCrate?$FN?5You?5just?5got?5the?5Dearmor@
	push	edx
	call	?PagePlayer@@YAXHPBDZZ			; PagePlayer
	add	esp, 20					; 00000014H
$LN1@Pick@6:

; 1159 : 		}
; 1160 : 		Picker->Set_Object_Dirty_Bit(nc_DB_OCCASIONAL,true);

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

; 1161 : 		return true;

	mov	al, 1
	pop	ebx

; 1162 : 	};

	pop	ecx
	ret	4
?Pick@Crate_Armor@@EAE_NPAVnc_SmartGameObj@@@Z ENDP	; Crate_Armor::Pick
_TEXT	ENDS
PUBLIC	??_7Crate_Health@@6B@				; Crate_Health::`vftable'
PUBLIC	??0Crate_Health@@QAE@XZ				; Crate_Health::Crate_Health
PUBLIC	??_R4Crate_Health@@6B@				; Crate_Health::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVCrate_Health@@@8			; Crate_Health `RTTI Type Descriptor'
PUBLIC	??_R3Crate_Health@@8				; Crate_Health::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2Crate_Health@@8				; Crate_Health::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@Crate_Health@@8			; Crate_Health::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?GetName@Crate_Health@@EAEPBDXZ			; Crate_Health::GetName
PUBLIC	?GetType@Crate_Health@@EAEHXZ			; Crate_Health::GetType
PUBLIC	?GetPercent@Crate_Health@@EAEIXZ		; Crate_Health::GetPercent
PUBLIC	?Pick@Crate_Health@@EAE_NPAVnc_SmartGameObj@@@Z	; Crate_Health::Pick
;	COMDAT ??_R1A@?0A@EA@Crate_Health@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@Crate_Health@@8 DD FLAT:??_R0?AVCrate_Health@@@8 ; Crate_Health::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3Crate_Health@@8
rdata$r	ENDS
;	COMDAT ??_R2Crate_Health@@8
rdata$r	SEGMENT
??_R2Crate_Health@@8 DD FLAT:??_R1A@?0A@EA@Crate_Health@@8 ; Crate_Health::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzCrateBase@@8
rdata$r	ENDS
;	COMDAT ??_R3Crate_Health@@8
rdata$r	SEGMENT
??_R3Crate_Health@@8 DD 00H				; Crate_Health::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2Crate_Health@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVCrate_Health@@@8
_DATA	SEGMENT
??_R0?AVCrate_Health@@@8 DD FLAT:??_7type_info@@6B@	; Crate_Health `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVCrate_Health@@', 00H
_DATA	ENDS
;	COMDAT ??_R4Crate_Health@@6B@
rdata$r	SEGMENT
??_R4Crate_Health@@6B@ DD 00H				; Crate_Health::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVCrate_Health@@@8
	DD	FLAT:??_R3Crate_Health@@8
rdata$r	ENDS
;	COMDAT ??_7Crate_Health@@6B@
CONST	SEGMENT
??_7Crate_Health@@6B@ DD FLAT:??_R4Crate_Health@@6B@	; Crate_Health::`vftable'
	DD	FLAT:?GetName@Crate_Health@@EAEPBDXZ
	DD	FLAT:?GetType@Crate_Health@@EAEHXZ
	DD	FLAT:?GetPercent@Crate_Health@@EAEIXZ
	DD	FLAT:?SkipDefaultOutput@gzCrateBase@@UAE_NXZ
	DD	FLAT:?Pick@Crate_Health@@EAE_NPAVnc_SmartGameObj@@@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0Crate_Health@@QAE@XZ
_TEXT	SEGMENT
??0Crate_Health@@QAE@XZ PROC				; Crate_Health::Crate_Health, COMDAT
; _this$ = ecx
	xor	eax, eax
	push	esi
	mov	esi, ecx
	mov	DWORD PTR [esi+4], eax
	mov	BYTE PTR [esi+8], al
	mov	DWORD PTR [esi], OFFSET ??_7gzCrateBase@@6B@
	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	mov	eax, esi
	je	SHORT $LN8@Crate_Heal
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], esi
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN8@Crate_Heal:
	mov	DWORD PTR [esi], OFFSET ??_7Crate_Health@@6B@
	pop	esi
	ret	0
??0Crate_Health@@QAE@XZ ENDP				; Crate_Health::Crate_Health
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetName@Crate_Health@@EAEPBDXZ
_TEXT	SEGMENT
?GetName@Crate_Health@@EAEPBDXZ PROC			; Crate_Health::GetName, COMDAT
; _this$ = ecx

; 1169 : 		return "Health";

	mov	eax, OFFSET ??_C@_06GGDALCBD@Health?$AA@

; 1170 : 	};

	ret	0
?GetName@Crate_Health@@EAEPBDXZ ENDP			; Crate_Health::GetName
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetType@Crate_Health@@EAEHXZ
_TEXT	SEGMENT
?GetType@Crate_Health@@EAEHXZ PROC			; Crate_Health::GetType, COMDAT
; _this$ = ecx

; 1173 : 		return CRATE_SOLDIER;

	mov	eax, 1

; 1174 : 	};

	ret	0
?GetType@Crate_Health@@EAEHXZ ENDP			; Crate_Health::GetType
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetPercent@Crate_Health@@EAEIXZ
_TEXT	SEGMENT
?GetPercent@Crate_Health@@EAEIXZ PROC			; Crate_Health::GetPercent, COMDAT
; _this$ = ecx

; 1177 : 		return this->m_percent->Health;

	mov	eax, DWORD PTR ?m_percent@gzCrateBase@@1PBUgzCratePercentStruct@@B ; gzCrateBase::m_percent
	mov	eax, DWORD PTR [eax+28]

; 1178 : 	};

	ret	0
?GetPercent@Crate_Health@@EAEIXZ ENDP			; Crate_Health::GetPercent
_TEXT	ENDS
PUBLIC	??_C@_0EI@DDPEMPPJ@?$FLCrate?$FN?5You?5just?5got?5the?5Dehealt@ ; `string'
PUBLIC	??_C@_0CB@OHAHHPEA@?$CFls?5picked?5up?5a?5De?9health?5Crate?4@ ; `string'
PUBLIC	??_C@_0FD@NNKGJLEM@?$FLCrate?$FN?5You?5just?5got?5the?5Health?5@ ; `string'
PUBLIC	??_C@_0BP@BKHIPPPG@?$CFls?5picked?5up?5an?5Health?5Crate?4?$AA@ ; `string'
;	COMDAT ??_C@_0EI@DDPEMPPJ@?$FLCrate?$FN?5You?5just?5got?5the?5Dehealt@
; File d:\source code\fds lib\new\fds_def.h
CONST	SEGMENT
??_C@_0EI@DDPEMPPJ@?$FLCrate?$FN?5You?5just?5got?5the?5Dehealt@ DB '[Crat'
	DB	'e] You just got the Dehealth Crate, your health has been set '
	DB	'to 1.', 00H					; `string'
CONST	ENDS
;	COMDAT ??_C@_0CB@OHAHHPEA@?$CFls?5picked?5up?5a?5De?9health?5Crate?4@
CONST	SEGMENT
??_C@_0CB@OHAHHPEA@?$CFls?5picked?5up?5a?5De?9health?5Crate?4@ DB '%ls pi'
	DB	'cked up a De-health Crate.', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_0FD@NNKGJLEM@?$FLCrate?$FN?5You?5just?5got?5the?5Health?5@
CONST	SEGMENT
??_C@_0FD@NNKGJLEM@?$FLCrate?$FN?5You?5just?5got?5the?5Health?5@ DB '[Cra'
	DB	'te] You just got the Health Crate, your max health has been i'
	DB	'ncreased! [+%.0f]', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_0BP@BKHIPPPG@?$CFls?5picked?5up?5an?5Health?5Crate?4?$AA@
CONST	SEGMENT
??_C@_0BP@BKHIPPPG@?$CFls?5picked?5up?5an?5Health?5Crate?4?$AA@ DB '%ls p'
	DB	'icked up an Health Crate.', 00H		; `string'
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
CONST	ENDS
;	COMDAT ?Pick@Crate_Health@@EAE_NPAVnc_SmartGameObj@@@Z
_TEXT	SEGMENT
_RndHealth$60622 = -4					; size = 4
tv255 = 8						; size = 4
$T72405 = 8						; size = 4
$T72401 = 8						; size = 4
_Picker$ = 8						; size = 4
?Pick@Crate_Health@@EAE_NPAVnc_SmartGameObj@@@Z PROC	; Crate_Health::Pick, COMDAT
; _this$ = ecx

; 1180 : 	{

	push	ecx

; 1181 : 		int RndGood = gzRandom.Get_Int(1, 2);

	mov	ecx, DWORD PTR ?gzRandom@@3VaRandom@@A
	mov	eax, ecx
	add	ecx, 1
	cmp	eax, 64					; 00000040H
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A, ecx
	jle	SHORT $LN10@Pick@7
	mov	ecx, 1
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A, ecx
$LN10@Pick@7:
	mov	eax, DWORD PTR ?gzRandom@@3VaRandom@@A+4
	imul	eax, 22695475				; 015a4e33H
	add	eax, ecx
	push	ebx
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A+4, eax
	push	esi

; 1182 : 		if (Picker->Defense.Health.Get() < 2.0f)

	mov	esi, DWORD PTR _Picker$[esp+8]
	shr	eax, 16					; 00000010H
	push	edi
	and	eax, 1
	add	eax, 1
	lea	edi, DWORD PTR [esi+1840]
	mov	ecx, edi
	mov	ebx, eax
	call	?Get@nc_FloatDataSafeClass@@QAEMXZ	; nc_FloatDataSafeClass::Get
	fcomp	DWORD PTR __real@40000000
	fnstsw	ax
	test	ah, 5

; 1183 : 			RndGood = 1;
; 1184 : 		if (RndGood	== 1)

	jnp	SHORT $LN24@Pick@7
	cmp	ebx, 1
	jne	$LN2@Pick@7
$LN24@Pick@7:

; 1185 : 		{
; 1186 : 			float RndHealth = (float)gzRandom.Get_Int(5, 50);

	mov	ecx, DWORD PTR ?gzRandom@@3VaRandom@@A
	mov	edx, ecx
	add	ecx, 1
	cmp	edx, 64					; 00000040H
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A, ecx
	jle	SHORT $LN17@Pick@7
	mov	ecx, 1
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A, ecx
$LN17@Pick@7:
	mov	eax, DWORD PTR ?gzRandom@@3VaRandom@@A+4
	imul	eax, 22695475				; 015a4e33H
	add	eax, ecx
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A+4, eax
	xor	edx, edx
	shr	eax, 16					; 00000010H
	mov	ecx, 46					; 0000002eH
	div	ecx

; 1187 : 			Picker->Defense.HealthMax += RndHealth;

	lea	edi, DWORD PTR [esi+1844]
	mov	ecx, edi
	add	edx, 5
	mov	DWORD PTR tv255[esp+12], edx
	fild	DWORD PTR tv255[esp+12]
	fst	DWORD PTR _RndHealth$60622[esp+16]
	fstp	DWORD PTR $T72401[esp+12]
	call	?Get@nc_FloatDataSafeClass@@QAEMXZ	; nc_FloatDataSafeClass::Get
	fadd	DWORD PTR $T72401[esp+12]
	lea	edx, DWORD PTR $T72401[esp+12]
	push	edx
	push	edi
	fstp	DWORD PTR $T72401[esp+20]
	call	?Set@nc_FloatDataSafeClass@@QAG_NAAM@Z	; nc_FloatDataSafeClass::Set

; 1188 : 			gzLogger("_CRATE", "%ls picked up an Health Crate.", Picker->Player->PlayerName.m_Buffer);

	mov	eax, DWORD PTR [esi+2400]
	mov	ecx, DWORD PTR [eax+1880]
	push	ecx
	push	OFFSET ??_C@_0BP@BKHIPPPG@?$CFls?5picked?5up?5an?5Health?5Crate?4?$AA@
	push	OFFSET ??_C@_06LJACFPMC@_CRATE?$AA@
	call	?gzLogger@@YAXPBD0ZZ			; gzLogger

; 1189 : 			PagePlayer(Picker->Player->PlayerId, "[Crate] You just got the Health Crate, your max health has been increased! [+%.0f]", RndHealth);

	fld	DWORD PTR _RndHealth$60622[esp+28]
	mov	edx, DWORD PTR [esi+2400]
	fstp	QWORD PTR [esp+4]
	mov	eax, DWORD PTR [edx+1884]
	add	esp, 4
	push	OFFSET ??_C@_0FD@NNKGJLEM@?$FLCrate?$FN?5You?5just?5got?5the?5Health?5@
	push	eax
	call	?PagePlayer@@YAXHPBDZZ			; PagePlayer
	add	esp, 16					; 00000010H

; 1190 : 		}
; 1191 : 		else {

	jmp	SHORT $LN1@Pick@7
$LN2@Pick@7:

; 1192 : 			Picker->Defense.Health = 1.0f;

	fld1
	lea	ecx, DWORD PTR $T72405[esp+12]
	push	ecx
	fstp	DWORD PTR $T72405[esp+16]
	push	edi
	call	?Set@nc_FloatDataSafeClass@@QAG_NAAM@Z	; nc_FloatDataSafeClass::Set

; 1193 : 			gzLogger("_CRATE", "%ls picked up a De-health Crate.", Picker->Player->PlayerName.m_Buffer);

	mov	edx, DWORD PTR [esi+2400]
	mov	eax, DWORD PTR [edx+1880]
	push	eax
	push	OFFSET ??_C@_0CB@OHAHHPEA@?$CFls?5picked?5up?5a?5De?9health?5Crate?4@
	push	OFFSET ??_C@_06LJACFPMC@_CRATE?$AA@
	call	?gzLogger@@YAXPBD0ZZ			; gzLogger

; 1194 : 			PagePlayer(Picker->Player->PlayerId, "[Crate] You just got the Dehealth Crate, your health has been set to 1.");

	mov	ecx, DWORD PTR [esi+2400]
	mov	edx, DWORD PTR [ecx+1884]
	push	OFFSET ??_C@_0EI@DDPEMPPJ@?$FLCrate?$FN?5You?5just?5got?5the?5Dehealt@
	push	edx
	call	?PagePlayer@@YAXHPBDZZ			; PagePlayer
	add	esp, 20					; 00000014H
$LN1@Pick@7:

; 1195 : 		}
; 1196 : 		Picker->Set_Object_Dirty_Bit(nc_DB_OCCASIONAL,true);

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

; 1197 : 		return true;

	mov	al, 1
	pop	ebx

; 1198 : 	};

	pop	ecx
	ret	4
?Pick@Crate_Health@@EAE_NPAVnc_SmartGameObj@@@Z ENDP	; Crate_Health::Pick
_TEXT	ENDS
PUBLIC	??_7Crate_RandomCharacter@@6B@			; Crate_RandomCharacter::`vftable'
PUBLIC	??0Crate_RandomCharacter@@QAE@XZ		; Crate_RandomCharacter::Crate_RandomCharacter
PUBLIC	??_R4Crate_RandomCharacter@@6B@			; Crate_RandomCharacter::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVCrate_RandomCharacter@@@8		; Crate_RandomCharacter `RTTI Type Descriptor'
PUBLIC	??_R3Crate_RandomCharacter@@8			; Crate_RandomCharacter::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2Crate_RandomCharacter@@8			; Crate_RandomCharacter::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@Crate_RandomCharacter@@8		; Crate_RandomCharacter::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?GetName@Crate_RandomCharacter@@EAEPBDXZ	; Crate_RandomCharacter::GetName
PUBLIC	?GetType@Crate_RandomCharacter@@EAEHXZ		; Crate_RandomCharacter::GetType
PUBLIC	?GetPercent@Crate_RandomCharacter@@EAEIXZ	; Crate_RandomCharacter::GetPercent
PUBLIC	?SkipDefaultOutput@Crate_RandomCharacter@@EAE_NXZ ; Crate_RandomCharacter::SkipDefaultOutput
PUBLIC	?Pick@Crate_RandomCharacter@@EAE_NPAVnc_SmartGameObj@@@Z ; Crate_RandomCharacter::Pick
;	COMDAT ??_R1A@?0A@EA@Crate_RandomCharacter@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@Crate_RandomCharacter@@8 DD FLAT:??_R0?AVCrate_RandomCharacter@@@8 ; Crate_RandomCharacter::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3Crate_RandomCharacter@@8
rdata$r	ENDS
;	COMDAT ??_R2Crate_RandomCharacter@@8
rdata$r	SEGMENT
??_R2Crate_RandomCharacter@@8 DD FLAT:??_R1A@?0A@EA@Crate_RandomCharacter@@8 ; Crate_RandomCharacter::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzCrateBase@@8
rdata$r	ENDS
;	COMDAT ??_R3Crate_RandomCharacter@@8
rdata$r	SEGMENT
??_R3Crate_RandomCharacter@@8 DD 00H			; Crate_RandomCharacter::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2Crate_RandomCharacter@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVCrate_RandomCharacter@@@8
_DATA	SEGMENT
??_R0?AVCrate_RandomCharacter@@@8 DD FLAT:??_7type_info@@6B@ ; Crate_RandomCharacter `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVCrate_RandomCharacter@@', 00H
_DATA	ENDS
;	COMDAT ??_R4Crate_RandomCharacter@@6B@
rdata$r	SEGMENT
??_R4Crate_RandomCharacter@@6B@ DD 00H			; Crate_RandomCharacter::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVCrate_RandomCharacter@@@8
	DD	FLAT:??_R3Crate_RandomCharacter@@8
rdata$r	ENDS
;	COMDAT ??_7Crate_RandomCharacter@@6B@
CONST	SEGMENT
??_7Crate_RandomCharacter@@6B@ DD FLAT:??_R4Crate_RandomCharacter@@6B@ ; Crate_RandomCharacter::`vftable'
	DD	FLAT:?GetName@Crate_RandomCharacter@@EAEPBDXZ
	DD	FLAT:?GetType@Crate_RandomCharacter@@EAEHXZ
	DD	FLAT:?GetPercent@Crate_RandomCharacter@@EAEIXZ
	DD	FLAT:?SkipDefaultOutput@Crate_RandomCharacter@@EAE_NXZ
	DD	FLAT:?Pick@Crate_RandomCharacter@@EAE_NPAVnc_SmartGameObj@@@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0Crate_RandomCharacter@@QAE@XZ
_TEXT	SEGMENT
??0Crate_RandomCharacter@@QAE@XZ PROC			; Crate_RandomCharacter::Crate_RandomCharacter, COMDAT
; _this$ = ecx
	xor	eax, eax
	push	esi
	mov	esi, ecx
	mov	DWORD PTR [esi+4], eax
	mov	BYTE PTR [esi+8], al
	mov	DWORD PTR [esi], OFFSET ??_7gzCrateBase@@6B@
	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	mov	eax, esi
	je	SHORT $LN8@Crate_Rand@3
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], esi
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN8@Crate_Rand@3:
	mov	DWORD PTR [esi], OFFSET ??_7Crate_RandomCharacter@@6B@
	pop	esi
	ret	0
??0Crate_RandomCharacter@@QAE@XZ ENDP			; Crate_RandomCharacter::Crate_RandomCharacter
_TEXT	ENDS
PUBLIC	??_C@_0BB@EDDOMEMK@Random?5Character?$AA@	; `string'
;	COMDAT ??_C@_0BB@EDDOMEMK@Random?5Character?$AA@
CONST	SEGMENT
??_C@_0BB@EDDOMEMK@Random?5Character?$AA@ DB 'Random Character', 00H ; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?GetName@Crate_RandomCharacter@@EAEPBDXZ
_TEXT	SEGMENT
?GetName@Crate_RandomCharacter@@EAEPBDXZ PROC		; Crate_RandomCharacter::GetName, COMDAT
; _this$ = ecx

; 1205 : 		return "Random Character";

	mov	eax, OFFSET ??_C@_0BB@EDDOMEMK@Random?5Character?$AA@

; 1206 : 	};

	ret	0
?GetName@Crate_RandomCharacter@@EAEPBDXZ ENDP		; Crate_RandomCharacter::GetName
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetType@Crate_RandomCharacter@@EAEHXZ
_TEXT	SEGMENT
?GetType@Crate_RandomCharacter@@EAEHXZ PROC		; Crate_RandomCharacter::GetType, COMDAT
; _this$ = ecx

; 1209 : 		return CRATE_SOLDIER;

	mov	eax, 1

; 1210 : 	};

	ret	0
?GetType@Crate_RandomCharacter@@EAEHXZ ENDP		; Crate_RandomCharacter::GetType
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetPercent@Crate_RandomCharacter@@EAEIXZ
_TEXT	SEGMENT
?GetPercent@Crate_RandomCharacter@@EAEIXZ PROC		; Crate_RandomCharacter::GetPercent, COMDAT
; _this$ = ecx

; 1213 : 		return this->m_percent->Character;

	mov	eax, DWORD PTR ?m_percent@gzCrateBase@@1PBUgzCratePercentStruct@@B ; gzCrateBase::m_percent
	mov	eax, DWORD PTR [eax+32]

; 1214 : 	};

	ret	0
?GetPercent@Crate_RandomCharacter@@EAEIXZ ENDP		; Crate_RandomCharacter::GetPercent
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?SkipDefaultOutput@Crate_RandomCharacter@@EAE_NXZ
_TEXT	SEGMENT
?SkipDefaultOutput@Crate_RandomCharacter@@EAE_NXZ PROC	; Crate_RandomCharacter::SkipDefaultOutput, COMDAT
; _this$ = ecx

; 1217 : 		return false;

	xor	al, al

; 1218 : 	};

	ret	0
?SkipDefaultOutput@Crate_RandomCharacter@@EAE_NXZ ENDP	; Crate_RandomCharacter::SkipDefaultOutput
_TEXT	ENDS
PUBLIC	??_C@_0EL@MAOLAGPB@?$FLCrate?$FN?5You?5have?5been?5transforme@ ; `string'
PUBLIC	??_C@_0BF@OCIKBOAE@CnC_Nod_Technician_0?$AA@	; `string'
PUBLIC	??_C@_0BL@BIACMHAG@CnC_Nod_FlameThrower_3Boss?$AA@ ; `string'
PUBLIC	??_C@_0BM@ICGGCDBG@CnC_Nod_RocketSoldier_3Boss?$AA@ ; `string'
PUBLIC	??_C@_0BJ@OCAGFMMH@CnC_Nod_Minigunner_3Boss?$AA@ ; `string'
PUBLIC	??_C@_0BJ@HIKMPHIB@CnC_Nod_FlameThrower_2SF?$AA@ ; `string'
PUBLIC	??_C@_0BK@JEMDKAKL@CnC_Nod_RocketSoldier_2SF?$AA@ ; `string'
PUBLIC	??_C@_0BH@FNBMIEO@CnC_Nod_Minigunner_2SF?$AA@	; `string'
PUBLIC	??_C@_0BK@MMECAHHH@CnC_Nod_FlameThrower_1Off?$AA@ ; `string'
PUBLIC	??_C@_0BL@BHBFKBPG@CnC_Nod_RocketSoldier_1Off?$AA@ ; `string'
PUBLIC	??_C@_0BI@MHOEKFGJ@CnC_Nod_Minigunner_1Off?$AA@	; `string'
PUBLIC	??_C@_0BD@DECBIKBC@CnC_Nod_Engineer_0?$AA@	; `string'
PUBLIC	??_C@_0BH@CPEKHDKF@CnC_Nod_FlameThrower_0?$AA@	; `string'
PUBLIC	??_C@_0BI@DMFNIKGO@CnC_Nod_RocketSoldier_0?$AA@	; `string'
PUBLIC	??_C@_0BF@OEGOFECO@CnC_Nod_Minigunner_0?$AA@	; `string'
PUBLIC	??_C@_0BF@EPNAAGKC@CnC_GDI_Engineer_2SF?$AA@	; `string'
PUBLIC	??_C@_0BD@CMAELMFM@CnC_Ignatio_Mobius?$AA@	; `string'
PUBLIC	??_C@_0BF@HCCCIBHA@CnC_Sydney_PowerSuit?$AA@	; `string'
PUBLIC	??_C@_0BJ@NCHBLAIC@CnC_GDI_MiniGunner_3Boss?$AA@ ; `string'
PUBLIC	??_C@_0BG@MECGAGPJ@CnC_GDI_Grenadier_2SF?$AA@	; `string'
PUBLIC	??_C@_0BK@FPCBBKIA@CnC_GDI_RocketSoldier_2SF?$AA@ ; `string'
PUBLIC	??_C@_0BH@MBICIAPC@CnC_GDI_MiniGunner_2SF?$AA@	; `string'
PUBLIC	??_C@_0L@EGFPOOHM@CnC_Sydney?$AA@		; `string'
PUBLIC	??_C@_0BL@LLGCLKAM@CnC_GDI_RocketSoldier_1Off?$AA@ ; `string'
PUBLIC	??_C@_0BI@FPHAJIG@CnC_GDI_MiniGunner_1Off?$AA@	; `string'
PUBLIC	??_C@_0BD@DEFNPFMD@CnC_GDI_Engineer_0?$AA@	; `string'
PUBLIC	??_C@_0BE@DONKOEGE@CnC_GDI_Grenadier_0?$AA@	; `string'
PUBLIC	??_C@_0BI@OGHPPNHJ@CnC_GDI_RocketSoldier_0?$AA@	; `string'
PUBLIC	??_C@_0BF@LMPHMMKB@CnC_GDI_Minigunner_0?$AA@	; `string'
EXTRN	?Re_Init@nc_SoldierGameObj@@QAEXAAVnc_SoldierGameObjDef@@@Z:PROC ; nc_SoldierGameObj::Re_Init
;	COMDAT ??_C@_0EL@MAOLAGPB@?$FLCrate?$FN?5You?5have?5been?5transforme@
; File d:\source code\alib\include\arandom.h
CONST	SEGMENT
??_C@_0EL@MAOLAGPB@?$FLCrate?$FN?5You?5have?5been?5transforme@ DB '[Crate'
	DB	'] You have been transformed into a %s by the Random Character'
	DB	' Crate.', 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_0BF@OCIKBOAE@CnC_Nod_Technician_0?$AA@
CONST	SEGMENT
??_C@_0BF@OCIKBOAE@CnC_Nod_Technician_0?$AA@ DB 'CnC_Nod_Technician_0', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BL@BIACMHAG@CnC_Nod_FlameThrower_3Boss?$AA@
CONST	SEGMENT
??_C@_0BL@BIACMHAG@CnC_Nod_FlameThrower_3Boss?$AA@ DB 'CnC_Nod_FlameThrow'
	DB	'er_3Boss', 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_0BM@ICGGCDBG@CnC_Nod_RocketSoldier_3Boss?$AA@
CONST	SEGMENT
??_C@_0BM@ICGGCDBG@CnC_Nod_RocketSoldier_3Boss?$AA@ DB 'CnC_Nod_RocketSol'
	DB	'dier_3Boss', 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_0BJ@OCAGFMMH@CnC_Nod_Minigunner_3Boss?$AA@
CONST	SEGMENT
??_C@_0BJ@OCAGFMMH@CnC_Nod_Minigunner_3Boss?$AA@ DB 'CnC_Nod_Minigunner_3'
	DB	'Boss', 00H					; `string'
CONST	ENDS
;	COMDAT ??_C@_0BJ@HIKMPHIB@CnC_Nod_FlameThrower_2SF?$AA@
CONST	SEGMENT
??_C@_0BJ@HIKMPHIB@CnC_Nod_FlameThrower_2SF?$AA@ DB 'CnC_Nod_FlameThrower'
	DB	'_2SF', 00H					; `string'
CONST	ENDS
;	COMDAT ??_C@_0BK@JEMDKAKL@CnC_Nod_RocketSoldier_2SF?$AA@
CONST	SEGMENT
??_C@_0BK@JEMDKAKL@CnC_Nod_RocketSoldier_2SF?$AA@ DB 'CnC_Nod_RocketSoldi'
	DB	'er_2SF', 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_0BH@FNBMIEO@CnC_Nod_Minigunner_2SF?$AA@
CONST	SEGMENT
??_C@_0BH@FNBMIEO@CnC_Nod_Minigunner_2SF?$AA@ DB 'CnC_Nod_Minigunner_2SF', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BK@MMECAHHH@CnC_Nod_FlameThrower_1Off?$AA@
CONST	SEGMENT
??_C@_0BK@MMECAHHH@CnC_Nod_FlameThrower_1Off?$AA@ DB 'CnC_Nod_FlameThrowe'
	DB	'r_1Off', 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_0BL@BHBFKBPG@CnC_Nod_RocketSoldier_1Off?$AA@
CONST	SEGMENT
??_C@_0BL@BHBFKBPG@CnC_Nod_RocketSoldier_1Off?$AA@ DB 'CnC_Nod_RocketSold'
	DB	'ier_1Off', 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_0BI@MHOEKFGJ@CnC_Nod_Minigunner_1Off?$AA@
CONST	SEGMENT
??_C@_0BI@MHOEKFGJ@CnC_Nod_Minigunner_1Off?$AA@ DB 'CnC_Nod_Minigunner_1O'
	DB	'ff', 00H					; `string'
CONST	ENDS
;	COMDAT ??_C@_0BD@DECBIKBC@CnC_Nod_Engineer_0?$AA@
CONST	SEGMENT
??_C@_0BD@DECBIKBC@CnC_Nod_Engineer_0?$AA@ DB 'CnC_Nod_Engineer_0', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BH@CPEKHDKF@CnC_Nod_FlameThrower_0?$AA@
CONST	SEGMENT
??_C@_0BH@CPEKHDKF@CnC_Nod_FlameThrower_0?$AA@ DB 'CnC_Nod_FlameThrower_0'
	DB	00H						; `string'
CONST	ENDS
;	COMDAT ??_C@_0BI@DMFNIKGO@CnC_Nod_RocketSoldier_0?$AA@
CONST	SEGMENT
??_C@_0BI@DMFNIKGO@CnC_Nod_RocketSoldier_0?$AA@ DB 'CnC_Nod_RocketSoldier'
	DB	'_0', 00H					; `string'
CONST	ENDS
;	COMDAT ??_C@_0BF@OEGOFECO@CnC_Nod_Minigunner_0?$AA@
CONST	SEGMENT
??_C@_0BF@OEGOFECO@CnC_Nod_Minigunner_0?$AA@ DB 'CnC_Nod_Minigunner_0', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BF@EPNAAGKC@CnC_GDI_Engineer_2SF?$AA@
CONST	SEGMENT
??_C@_0BF@EPNAAGKC@CnC_GDI_Engineer_2SF?$AA@ DB 'CnC_GDI_Engineer_2SF', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BD@CMAELMFM@CnC_Ignatio_Mobius?$AA@
CONST	SEGMENT
??_C@_0BD@CMAELMFM@CnC_Ignatio_Mobius?$AA@ DB 'CnC_Ignatio_Mobius', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BF@HCCCIBHA@CnC_Sydney_PowerSuit?$AA@
CONST	SEGMENT
??_C@_0BF@HCCCIBHA@CnC_Sydney_PowerSuit?$AA@ DB 'CnC_Sydney_PowerSuit', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BJ@NCHBLAIC@CnC_GDI_MiniGunner_3Boss?$AA@
CONST	SEGMENT
??_C@_0BJ@NCHBLAIC@CnC_GDI_MiniGunner_3Boss?$AA@ DB 'CnC_GDI_MiniGunner_3'
	DB	'Boss', 00H					; `string'
CONST	ENDS
;	COMDAT ??_C@_0BG@MECGAGPJ@CnC_GDI_Grenadier_2SF?$AA@
CONST	SEGMENT
??_C@_0BG@MECGAGPJ@CnC_GDI_Grenadier_2SF?$AA@ DB 'CnC_GDI_Grenadier_2SF', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BK@FPCBBKIA@CnC_GDI_RocketSoldier_2SF?$AA@
CONST	SEGMENT
??_C@_0BK@FPCBBKIA@CnC_GDI_RocketSoldier_2SF?$AA@ DB 'CnC_GDI_RocketSoldi'
	DB	'er_2SF', 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_0BH@MBICIAPC@CnC_GDI_MiniGunner_2SF?$AA@
CONST	SEGMENT
??_C@_0BH@MBICIAPC@CnC_GDI_MiniGunner_2SF?$AA@ DB 'CnC_GDI_MiniGunner_2SF'
	DB	00H						; `string'
CONST	ENDS
;	COMDAT ??_C@_0L@EGFPOOHM@CnC_Sydney?$AA@
CONST	SEGMENT
??_C@_0L@EGFPOOHM@CnC_Sydney?$AA@ DB 'CnC_Sydney', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_0BL@LLGCLKAM@CnC_GDI_RocketSoldier_1Off?$AA@
CONST	SEGMENT
??_C@_0BL@LLGCLKAM@CnC_GDI_RocketSoldier_1Off?$AA@ DB 'CnC_GDI_RocketSold'
	DB	'ier_1Off', 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_0BI@FPHAJIG@CnC_GDI_MiniGunner_1Off?$AA@
CONST	SEGMENT
??_C@_0BI@FPHAJIG@CnC_GDI_MiniGunner_1Off?$AA@ DB 'CnC_GDI_MiniGunner_1Of'
	DB	'f', 00H					; `string'
CONST	ENDS
;	COMDAT ??_C@_0BD@DEFNPFMD@CnC_GDI_Engineer_0?$AA@
CONST	SEGMENT
??_C@_0BD@DEFNPFMD@CnC_GDI_Engineer_0?$AA@ DB 'CnC_GDI_Engineer_0', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BE@DONKOEGE@CnC_GDI_Grenadier_0?$AA@
CONST	SEGMENT
??_C@_0BE@DONKOEGE@CnC_GDI_Grenadier_0?$AA@ DB 'CnC_GDI_Grenadier_0', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BI@OGHPPNHJ@CnC_GDI_RocketSoldier_0?$AA@
CONST	SEGMENT
??_C@_0BI@OGHPPNHJ@CnC_GDI_RocketSoldier_0?$AA@ DB 'CnC_GDI_RocketSoldier'
	DB	'_0', 00H					; `string'
CONST	ENDS
;	COMDAT ??_C@_0BF@LMPHMMKB@CnC_GDI_Minigunner_0?$AA@
CONST	SEGMENT
??_C@_0BF@LMPHMMKB@CnC_GDI_Minigunner_0?$AA@ DB 'CnC_GDI_Minigunner_0', 00H ; `string'
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
CONST	ENDS
;	COMDAT ?Pick@Crate_RandomCharacter@@EAE_NPAVnc_SmartGameObj@@@Z
_TEXT	SEGMENT
_chars$60663 = -112					; size = 112
_Picker$ = 8						; size = 4
?Pick@Crate_RandomCharacter@@EAE_NPAVnc_SmartGameObj@@@Z PROC ; Crate_RandomCharacter::Pick, COMDAT
; _this$ = ecx

; 1220 : 	{

	sub	esp, 112				; 00000070H

; 1221 : 		if (gzGameMgr->m_settings->m_GameMode != GAMEMODE_SNIPER || gzGameMgr->m_settings->m_GameMode != GAMEMODE_500SNIP)
; 1222 : 		{
; 1223 : 			const char *chars[] = {
; 1224 : 				"CnC_GDI_Minigunner_0",
; 1225 : 				"CnC_GDI_RocketSoldier_0",
; 1226 : 				"CnC_GDI_Grenadier_0",
; 1227 : 				"CnC_GDI_Engineer_0",
; 1228 : 				"CnC_GDI_MiniGunner_1Off",
; 1229 : 				"CnC_GDI_RocketSoldier_1Off",
; 1230 : 				"CnC_Sydney",
; 1231 : 				"CnC_GDI_MiniGunner_2SF",
; 1232 : 				"CnC_GDI_RocketSoldier_2SF",
; 1233 : 				"CnC_GDI_Grenadier_2SF",
; 1234 : 				"CnC_GDI_MiniGunner_3Boss",
; 1235 : 				"CnC_Sydney_PowerSuit",
; 1236 : 				"CnC_Ignatio_Mobius",
; 1237 : 				"CnC_GDI_Engineer_2SF",
; 1238 : 				"CnC_Nod_Minigunner_0",
; 1239 : 				"CnC_Nod_RocketSoldier_0",
; 1240 : 				"CnC_Nod_FlameThrower_0",
; 1241 : 				"CnC_Nod_Engineer_0",
; 1242 : 				"CnC_Nod_Minigunner_1Off",
; 1243 : 				"CnC_Nod_RocketSoldier_1Off",
; 1244 : 				"CnC_Nod_FlameThrower_1Off",
; 1245 : 				"CnC_Nod_Minigunner_2SF",
; 1246 : 				"CnC_Nod_RocketSoldier_2SF",
; 1247 : 				"CnC_Nod_FlameThrower_2SF",
; 1248 : 				"CnC_Nod_Minigunner_3Boss",
; 1249 : 				"CnC_Nod_RocketSoldier_3Boss",
; 1250 : 				"CnC_Nod_FlameThrower_3Boss",
; 1251 : 				"CnC_Nod_Technician_0"
; 1252 : 			};
; 1253 : 			int Random = gzRandom.Get_Int(0, (sizeof(chars) / 4) - 1);

	mov	ecx, DWORD PTR ?gzRandom@@3VaRandom@@A
	mov	eax, ecx
	add	ecx, 1
	cmp	eax, 64					; 00000040H
	mov	DWORD PTR _chars$60663[esp+112], OFFSET ??_C@_0BF@LMPHMMKB@CnC_GDI_Minigunner_0?$AA@
	mov	DWORD PTR _chars$60663[esp+116], OFFSET ??_C@_0BI@OGHPPNHJ@CnC_GDI_RocketSoldier_0?$AA@
	mov	DWORD PTR _chars$60663[esp+120], OFFSET ??_C@_0BE@DONKOEGE@CnC_GDI_Grenadier_0?$AA@
	mov	DWORD PTR _chars$60663[esp+124], OFFSET ??_C@_0BD@DEFNPFMD@CnC_GDI_Engineer_0?$AA@
	mov	DWORD PTR _chars$60663[esp+128], OFFSET ??_C@_0BI@FPHAJIG@CnC_GDI_MiniGunner_1Off?$AA@
	mov	DWORD PTR _chars$60663[esp+132], OFFSET ??_C@_0BL@LLGCLKAM@CnC_GDI_RocketSoldier_1Off?$AA@
	mov	DWORD PTR _chars$60663[esp+136], OFFSET ??_C@_0L@EGFPOOHM@CnC_Sydney?$AA@
	mov	DWORD PTR _chars$60663[esp+140], OFFSET ??_C@_0BH@MBICIAPC@CnC_GDI_MiniGunner_2SF?$AA@
	mov	DWORD PTR _chars$60663[esp+144], OFFSET ??_C@_0BK@FPCBBKIA@CnC_GDI_RocketSoldier_2SF?$AA@
	mov	DWORD PTR _chars$60663[esp+148], OFFSET ??_C@_0BG@MECGAGPJ@CnC_GDI_Grenadier_2SF?$AA@
	mov	DWORD PTR _chars$60663[esp+152], OFFSET ??_C@_0BJ@NCHBLAIC@CnC_GDI_MiniGunner_3Boss?$AA@
	mov	DWORD PTR _chars$60663[esp+156], OFFSET ??_C@_0BF@HCCCIBHA@CnC_Sydney_PowerSuit?$AA@
	mov	DWORD PTR _chars$60663[esp+160], OFFSET ??_C@_0BD@CMAELMFM@CnC_Ignatio_Mobius?$AA@
	mov	DWORD PTR _chars$60663[esp+164], OFFSET ??_C@_0BF@EPNAAGKC@CnC_GDI_Engineer_2SF?$AA@
	mov	DWORD PTR _chars$60663[esp+168], OFFSET ??_C@_0BF@OEGOFECO@CnC_Nod_Minigunner_0?$AA@
	mov	DWORD PTR _chars$60663[esp+172], OFFSET ??_C@_0BI@DMFNIKGO@CnC_Nod_RocketSoldier_0?$AA@
	mov	DWORD PTR _chars$60663[esp+176], OFFSET ??_C@_0BH@CPEKHDKF@CnC_Nod_FlameThrower_0?$AA@
	mov	DWORD PTR _chars$60663[esp+180], OFFSET ??_C@_0BD@DECBIKBC@CnC_Nod_Engineer_0?$AA@
	mov	DWORD PTR _chars$60663[esp+184], OFFSET ??_C@_0BI@MHOEKFGJ@CnC_Nod_Minigunner_1Off?$AA@
	mov	DWORD PTR _chars$60663[esp+188], OFFSET ??_C@_0BL@BHBFKBPG@CnC_Nod_RocketSoldier_1Off?$AA@
	mov	DWORD PTR _chars$60663[esp+192], OFFSET ??_C@_0BK@MMECAHHH@CnC_Nod_FlameThrower_1Off?$AA@
	mov	DWORD PTR _chars$60663[esp+196], OFFSET ??_C@_0BH@FNBMIEO@CnC_Nod_Minigunner_2SF?$AA@
	mov	DWORD PTR _chars$60663[esp+200], OFFSET ??_C@_0BK@JEMDKAKL@CnC_Nod_RocketSoldier_2SF?$AA@
	mov	DWORD PTR _chars$60663[esp+204], OFFSET ??_C@_0BJ@HIKMPHIB@CnC_Nod_FlameThrower_2SF?$AA@
	mov	DWORD PTR _chars$60663[esp+208], OFFSET ??_C@_0BJ@OCAGFMMH@CnC_Nod_Minigunner_3Boss?$AA@
	mov	DWORD PTR _chars$60663[esp+212], OFFSET ??_C@_0BM@ICGGCDBG@CnC_Nod_RocketSoldier_3Boss?$AA@
	mov	DWORD PTR _chars$60663[esp+216], OFFSET ??_C@_0BL@BIACMHAG@CnC_Nod_FlameThrower_3Boss?$AA@
	mov	DWORD PTR _chars$60663[esp+220], OFFSET ??_C@_0BF@OCIKBOAE@CnC_Nod_Technician_0?$AA@
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A, ecx
	jle	SHORT $LN9@Pick@8
	mov	ecx, 1
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A, ecx
$LN9@Pick@8:
	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, 28					; 0000001cH
	div	ecx
	push	esi
	push	edi

; 1254 : 			Picker->As_SoldierGameObj()->Re_Init(*(nc_SoldierGameObjDef *)nc_DefinitionMgrClass::Find_Named_Definition(chars[Random], true));

	push	1
	mov	edi, DWORD PTR _chars$60663[esp+edx*4+124]
	push	edi
	call	?Find_Named_Definition@nc_DefinitionMgrClass@@SAPAVnc_DefinitionClass@@PBD_N@Z ; nc_DefinitionMgrClass::Find_Named_Definition
	mov	esi, DWORD PTR _Picker$[esp+124]
	mov	edx, DWORD PTR [esi]
	add	esp, 8
	push	eax
	mov	eax, DWORD PTR [edx+68]
	mov	ecx, esi
	call	eax
	mov	ecx, eax
	call	?Re_Init@nc_SoldierGameObj@@QAEXAAVnc_SoldierGameObjDef@@@Z ; nc_SoldierGameObj::Re_Init

; 1255 : 			Picker->As_SoldierGameObj()->Post_Re_Init();

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

; 1256 : 			PagePlayer(Picker->Player->PlayerId, "[Crate] You have been transformed into a %s by the Random Character Crate.", gzTranslator->Get(chars[Random]));

	mov	ecx, DWORD PTR ?gzTranslator@@3PAVgzTranslateManager@@A ; gzTranslator
	push	edi
	call	?Get@gzTranslateManager@@QAEPBDPBD@Z	; gzTranslateManager::Get
	mov	ecx, DWORD PTR [esi+2400]
	mov	edx, DWORD PTR [ecx+1884]
	push	eax
	push	OFFSET ??_C@_0EL@MAOLAGPB@?$FLCrate?$FN?5You?5have?5been?5transforme@
	push	edx
	call	?PagePlayer@@YAXHPBDZZ			; PagePlayer
	add	esp, 12					; 0000000cH
	pop	edi

; 1257 : 			return true;

	mov	al, 1
	pop	esi

; 1258 : 		}
; 1259 : 		return false;
; 1260 : 	};

	add	esp, 112				; 00000070H
	ret	4
?Pick@Crate_RandomCharacter@@EAE_NPAVnc_SmartGameObj@@@Z ENDP ; Crate_RandomCharacter::Pick
_TEXT	ENDS
PUBLIC	??_7Crate_ButterFingers@@6B@			; Crate_ButterFingers::`vftable'
PUBLIC	??0Crate_ButterFingers@@QAE@XZ			; Crate_ButterFingers::Crate_ButterFingers
PUBLIC	??_R4Crate_ButterFingers@@6B@			; Crate_ButterFingers::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVCrate_ButterFingers@@@8			; Crate_ButterFingers `RTTI Type Descriptor'
PUBLIC	??_R3Crate_ButterFingers@@8			; Crate_ButterFingers::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2Crate_ButterFingers@@8			; Crate_ButterFingers::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@Crate_ButterFingers@@8		; Crate_ButterFingers::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?GetName@Crate_ButterFingers@@EAEPBDXZ		; Crate_ButterFingers::GetName
PUBLIC	?GetType@Crate_ButterFingers@@EAEHXZ		; Crate_ButterFingers::GetType
PUBLIC	?GetPercent@Crate_ButterFingers@@EAEIXZ		; Crate_ButterFingers::GetPercent
PUBLIC	?SkipDefaultOutput@Crate_ButterFingers@@EAE_NXZ	; Crate_ButterFingers::SkipDefaultOutput
PUBLIC	?Pick@Crate_ButterFingers@@EAE_NPAVnc_SmartGameObj@@@Z ; Crate_ButterFingers::Pick
;	COMDAT ??_R1A@?0A@EA@Crate_ButterFingers@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@Crate_ButterFingers@@8 DD FLAT:??_R0?AVCrate_ButterFingers@@@8 ; Crate_ButterFingers::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3Crate_ButterFingers@@8
rdata$r	ENDS
;	COMDAT ??_R2Crate_ButterFingers@@8
rdata$r	SEGMENT
??_R2Crate_ButterFingers@@8 DD FLAT:??_R1A@?0A@EA@Crate_ButterFingers@@8 ; Crate_ButterFingers::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzCrateBase@@8
rdata$r	ENDS
;	COMDAT ??_R3Crate_ButterFingers@@8
rdata$r	SEGMENT
??_R3Crate_ButterFingers@@8 DD 00H			; Crate_ButterFingers::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2Crate_ButterFingers@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVCrate_ButterFingers@@@8
_DATA	SEGMENT
??_R0?AVCrate_ButterFingers@@@8 DD FLAT:??_7type_info@@6B@ ; Crate_ButterFingers `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVCrate_ButterFingers@@', 00H
_DATA	ENDS
;	COMDAT ??_R4Crate_ButterFingers@@6B@
rdata$r	SEGMENT
??_R4Crate_ButterFingers@@6B@ DD 00H			; Crate_ButterFingers::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVCrate_ButterFingers@@@8
	DD	FLAT:??_R3Crate_ButterFingers@@8
rdata$r	ENDS
;	COMDAT ??_7Crate_ButterFingers@@6B@
CONST	SEGMENT
??_7Crate_ButterFingers@@6B@ DD FLAT:??_R4Crate_ButterFingers@@6B@ ; Crate_ButterFingers::`vftable'
	DD	FLAT:?GetName@Crate_ButterFingers@@EAEPBDXZ
	DD	FLAT:?GetType@Crate_ButterFingers@@EAEHXZ
	DD	FLAT:?GetPercent@Crate_ButterFingers@@EAEIXZ
	DD	FLAT:?SkipDefaultOutput@Crate_ButterFingers@@EAE_NXZ
	DD	FLAT:?Pick@Crate_ButterFingers@@EAE_NPAVnc_SmartGameObj@@@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0Crate_ButterFingers@@QAE@XZ
_TEXT	SEGMENT
??0Crate_ButterFingers@@QAE@XZ PROC			; Crate_ButterFingers::Crate_ButterFingers, COMDAT
; _this$ = ecx
	xor	eax, eax
	push	esi
	mov	esi, ecx
	mov	DWORD PTR [esi+4], eax
	mov	BYTE PTR [esi+8], al
	mov	DWORD PTR [esi], OFFSET ??_7gzCrateBase@@6B@
	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	mov	eax, esi
	je	SHORT $LN8@Crate_Butt
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], esi
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN8@Crate_Butt:
	mov	DWORD PTR [esi], OFFSET ??_7Crate_ButterFingers@@6B@
	pop	esi
	ret	0
??0Crate_ButterFingers@@QAE@XZ ENDP			; Crate_ButterFingers::Crate_ButterFingers
_TEXT	ENDS
PUBLIC	??_C@_0P@JPPNDMCI@Butter?5Fingers?$AA@		; `string'
;	COMDAT ??_C@_0P@JPPNDMCI@Butter?5Fingers?$AA@
CONST	SEGMENT
??_C@_0P@JPPNDMCI@Butter?5Fingers?$AA@ DB 'Butter Fingers', 00H ; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?GetName@Crate_ButterFingers@@EAEPBDXZ
_TEXT	SEGMENT
?GetName@Crate_ButterFingers@@EAEPBDXZ PROC		; Crate_ButterFingers::GetName, COMDAT
; _this$ = ecx

; 1267 : 		return "Butter Fingers";

	mov	eax, OFFSET ??_C@_0P@JPPNDMCI@Butter?5Fingers?$AA@

; 1268 : 	};

	ret	0
?GetName@Crate_ButterFingers@@EAEPBDXZ ENDP		; Crate_ButterFingers::GetName
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetType@Crate_ButterFingers@@EAEHXZ
_TEXT	SEGMENT
?GetType@Crate_ButterFingers@@EAEHXZ PROC		; Crate_ButterFingers::GetType, COMDAT
; _this$ = ecx

; 1271 : 		return CRATE_SOLDIER;

	mov	eax, 1

; 1272 : 	};

	ret	0
?GetType@Crate_ButterFingers@@EAEHXZ ENDP		; Crate_ButterFingers::GetType
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetPercent@Crate_ButterFingers@@EAEIXZ
_TEXT	SEGMENT
?GetPercent@Crate_ButterFingers@@EAEIXZ PROC		; Crate_ButterFingers::GetPercent, COMDAT
; _this$ = ecx

; 1275 : 		return this->m_percent->ButterFingers;

	mov	eax, DWORD PTR ?m_percent@gzCrateBase@@1PBUgzCratePercentStruct@@B ; gzCrateBase::m_percent
	mov	eax, DWORD PTR [eax+36]

; 1276 : 	};

	ret	0
?GetPercent@Crate_ButterFingers@@EAEIXZ ENDP		; Crate_ButterFingers::GetPercent
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?SkipDefaultOutput@Crate_ButterFingers@@EAE_NXZ
_TEXT	SEGMENT
?SkipDefaultOutput@Crate_ButterFingers@@EAE_NXZ PROC	; Crate_ButterFingers::SkipDefaultOutput, COMDAT
; _this$ = ecx

; 1279 : 		return false;

	xor	al, al

; 1280 : 	};

	ret	0
?SkipDefaultOutput@Crate_ButterFingers@@EAE_NXZ ENDP	; Crate_ButterFingers::SkipDefaultOutput
_TEXT	ENDS
PUBLIC	??_C@_0FH@EEDKFEAP@?$FLCrate?$FN?5You?5picked?5up?5the?5Butter@ ; `string'
PUBLIC	??_C@_0BM@OMFOHCFP@CnC_Weapon_MineTimed_Player?$AA@ ; `string'
PUBLIC	??_C@_0BF@HHEIFFPM@Weapon_Pistol_Player?$AA@	; `string'
EXTRN	?Select_Weapon_Name@nc_WeaponBagClass@@QAEXPBD@Z:PROC ; nc_WeaponBagClass::Select_Weapon_Name
EXTRN	?Add_Weapon@nc_WeaponBagClass@@QAEXPBDH_N@Z:PROC ; nc_WeaponBagClass::Add_Weapon
EXTRN	?Clear_Weapons@nc_WeaponBagClass@@QAEXXZ:PROC	; nc_WeaponBagClass::Clear_Weapons
;	COMDAT ??_C@_0FH@EEDKFEAP@?$FLCrate?$FN?5You?5picked?5up?5the?5Butter@
; File d:\source code\gzgm\gzplayer.h
CONST	SEGMENT
??_C@_0FH@EEDKFEAP@?$FLCrate?$FN?5You?5picked?5up?5the?5Butter@ DB '[Crat'
	DB	'e] You picked up the Butter Fingers Crate, you have dropped m'
	DB	'ost of your weapons.', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_0BM@OMFOHCFP@CnC_Weapon_MineTimed_Player?$AA@
CONST	SEGMENT
??_C@_0BM@OMFOHCFP@CnC_Weapon_MineTimed_Player?$AA@ DB 'CnC_Weapon_MineTi'
	DB	'med_Player', 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_0BF@HHEIFFPM@Weapon_Pistol_Player?$AA@
CONST	SEGMENT
??_C@_0BF@HHEIFFPM@Weapon_Pistol_Player?$AA@ DB 'Weapon_Pistol_Player', 00H ; `string'
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
CONST	ENDS
;	COMDAT ?Pick@Crate_ButterFingers@@EAE_NPAVnc_SmartGameObj@@@Z
_TEXT	SEGMENT
_Picker$ = 8						; size = 4
?Pick@Crate_ButterFingers@@EAE_NPAVnc_SmartGameObj@@@Z PROC ; Crate_ButterFingers::Pick, COMDAT
; _this$ = ecx

; 1282 : 	{

	push	esi

; 1283 : 		Picker->WeaponBag->Clear_Weapons();

	mov	esi, DWORD PTR _Picker$[esp]
	mov	ecx, DWORD PTR [esi+1968]
	call	?Clear_Weapons@nc_WeaponBagClass@@QAEXXZ ; nc_WeaponBagClass::Clear_Weapons

; 1284 : 		int	Rnd	= gzRandom.Get_Int(1, 2);

	mov	ecx, DWORD PTR ?gzRandom@@3VaRandom@@A
	mov	eax, ecx
	add	ecx, 1
	cmp	eax, 64					; 00000040H
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A, ecx
	jle	SHORT $LN10@Pick@9
	mov	ecx, 1
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A, ecx
$LN10@Pick@9:
	mov	eax, DWORD PTR ?gzRandom@@3VaRandom@@A+4
	imul	eax, 22695475				; 015a4e33H
	add	eax, ecx
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A+4, eax

; 1285 : 		if (Rnd	== 1)
; 1286 : 		{
; 1287 : 			Picker->WeaponBag->Add_Weapon("Weapon_Pistol_Player", -1, true);

	mov	ecx, DWORD PTR [esi+1968]
	shr	eax, 16					; 00000010H
	and	eax, 1
	add	eax, 1
	cmp	eax, 1
	push	1
	jne	SHORT $LN3@Pick@9
	push	-1
	push	OFFSET ??_C@_0BF@HHEIFFPM@Weapon_Pistol_Player?$AA@
	call	?Add_Weapon@nc_WeaponBagClass@@QAEXPBDH_N@Z ; nc_WeaponBagClass::Add_Weapon

; 1288 : 			Picker->WeaponBag->Select_Weapon_Name("Weapon_Pistol_Player");

	push	OFFSET ??_C@_0BF@HHEIFFPM@Weapon_Pistol_Player?$AA@

; 1289 : 		}
; 1290 : 		else

	jmp	SHORT $LN16@Pick@9
$LN3@Pick@9:

; 1291 : 		{
; 1292 : 			Picker->WeaponBag->Add_Weapon("CnC_Weapon_MineTimed_Player", 1, true);

	push	1
	push	OFFSET ??_C@_0BM@OMFOHCFP@CnC_Weapon_MineTimed_Player?$AA@
	call	?Add_Weapon@nc_WeaponBagClass@@QAEXPBDH_N@Z ; nc_WeaponBagClass::Add_Weapon

; 1293 : 			Picker->WeaponBag->Select_Weapon_Name("CnC_Weapon_MineTimed_Player");

	push	OFFSET ??_C@_0BM@OMFOHCFP@CnC_Weapon_MineTimed_Player?$AA@
$LN16@Pick@9:
	mov	ecx, DWORD PTR [esi+1968]
	call	?Select_Weapon_Name@nc_WeaponBagClass@@QAEXPBD@Z ; nc_WeaponBagClass::Select_Weapon_Name

; 1294 : 		}
; 1295 : 		PagePlayer(Picker->Player->PlayerId, "[Crate] You picked up the Butter Fingers Crate, you have dropped most of your weapons.");

	mov	ecx, DWORD PTR [esi+2400]
	mov	edx, DWORD PTR [ecx+1884]
	push	OFFSET ??_C@_0FH@EEDKFEAP@?$FLCrate?$FN?5You?5picked?5up?5the?5Butter@
	push	edx
	call	?PagePlayer@@YAXHPBDZZ			; PagePlayer

; 1296 : 		gzPlayer *gzData = gzPlayerManager::Find(Picker->Player);

	mov	eax, DWORD PTR [esi+2400]
	push	eax
	call	?Find@gzPlayerManager@@SAPAVgzPlayer@@PAVnc_cPlayer@@@Z ; gzPlayerManager::Find
	add	esp, 12					; 0000000cH

; 1297 : 		if (gzData)

	test	eax, eax
	pop	esi
	je	SHORT $LN15@Pick@9

; 1298 : 			gzData->GetWeaponPack()->m_list.Clear();

	mov	eax, DWORD PTR [eax+60]
	mov	edx, DWORD PTR [eax+24]
	lea	ecx, DWORD PTR [eax+24]
	mov	eax, DWORD PTR [edx+4]
	call	eax
$LN15@Pick@9:

; 1299 : 		return true;

	mov	al, 1

; 1300 : 	};

	ret	4
?Pick@Crate_ButterFingers@@EAE_NPAVnc_SmartGameObj@@@Z ENDP ; Crate_ButterFingers::Pick
_TEXT	ENDS
PUBLIC	??_7Crate_Refill@@6B@				; Crate_Refill::`vftable'
PUBLIC	??0Crate_Refill@@QAE@XZ				; Crate_Refill::Crate_Refill
PUBLIC	??_R4Crate_Refill@@6B@				; Crate_Refill::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVCrate_Refill@@@8			; Crate_Refill `RTTI Type Descriptor'
PUBLIC	??_R3Crate_Refill@@8				; Crate_Refill::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2Crate_Refill@@8				; Crate_Refill::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@Crate_Refill@@8			; Crate_Refill::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?GetName@Crate_Refill@@EAEPBDXZ			; Crate_Refill::GetName
PUBLIC	?GetType@Crate_Refill@@EAEHXZ			; Crate_Refill::GetType
PUBLIC	?GetPercent@Crate_Refill@@EAEIXZ		; Crate_Refill::GetPercent
PUBLIC	?SkipDefaultOutput@Crate_Refill@@EAE_NXZ	; Crate_Refill::SkipDefaultOutput
PUBLIC	?Pick@Crate_Refill@@EAE_NPAVnc_SmartGameObj@@@Z	; Crate_Refill::Pick
;	COMDAT ??_R1A@?0A@EA@Crate_Refill@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@Crate_Refill@@8 DD FLAT:??_R0?AVCrate_Refill@@@8 ; Crate_Refill::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3Crate_Refill@@8
rdata$r	ENDS
;	COMDAT ??_R2Crate_Refill@@8
rdata$r	SEGMENT
??_R2Crate_Refill@@8 DD FLAT:??_R1A@?0A@EA@Crate_Refill@@8 ; Crate_Refill::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzCrateBase@@8
rdata$r	ENDS
;	COMDAT ??_R3Crate_Refill@@8
rdata$r	SEGMENT
??_R3Crate_Refill@@8 DD 00H				; Crate_Refill::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2Crate_Refill@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVCrate_Refill@@@8
_DATA	SEGMENT
??_R0?AVCrate_Refill@@@8 DD FLAT:??_7type_info@@6B@	; Crate_Refill `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVCrate_Refill@@', 00H
_DATA	ENDS
;	COMDAT ??_R4Crate_Refill@@6B@
rdata$r	SEGMENT
??_R4Crate_Refill@@6B@ DD 00H				; Crate_Refill::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVCrate_Refill@@@8
	DD	FLAT:??_R3Crate_Refill@@8
rdata$r	ENDS
;	COMDAT ??_7Crate_Refill@@6B@
CONST	SEGMENT
??_7Crate_Refill@@6B@ DD FLAT:??_R4Crate_Refill@@6B@	; Crate_Refill::`vftable'
	DD	FLAT:?GetName@Crate_Refill@@EAEPBDXZ
	DD	FLAT:?GetType@Crate_Refill@@EAEHXZ
	DD	FLAT:?GetPercent@Crate_Refill@@EAEIXZ
	DD	FLAT:?SkipDefaultOutput@Crate_Refill@@EAE_NXZ
	DD	FLAT:?Pick@Crate_Refill@@EAE_NPAVnc_SmartGameObj@@@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0Crate_Refill@@QAE@XZ
_TEXT	SEGMENT
??0Crate_Refill@@QAE@XZ PROC				; Crate_Refill::Crate_Refill, COMDAT
; _this$ = ecx
	xor	eax, eax
	push	esi
	mov	esi, ecx
	mov	DWORD PTR [esi+4], eax
	mov	BYTE PTR [esi+8], al
	mov	DWORD PTR [esi], OFFSET ??_7gzCrateBase@@6B@
	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	mov	eax, esi
	je	SHORT $LN8@Crate_Refi
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], esi
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN8@Crate_Refi:
	mov	DWORD PTR [esi], OFFSET ??_7Crate_Refill@@6B@
	pop	esi
	ret	0
??0Crate_Refill@@QAE@XZ ENDP				; Crate_Refill::Crate_Refill
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetName@Crate_Refill@@EAEPBDXZ
_TEXT	SEGMENT
?GetName@Crate_Refill@@EAEPBDXZ PROC			; Crate_Refill::GetName, COMDAT
; _this$ = ecx

; 1307 : 		return "Refill";

	mov	eax, OFFSET ??_C@_06FGDJGKHN@Refill?$AA@

; 1308 : 	};

	ret	0
?GetName@Crate_Refill@@EAEPBDXZ ENDP			; Crate_Refill::GetName
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetType@Crate_Refill@@EAEHXZ
_TEXT	SEGMENT
?GetType@Crate_Refill@@EAEHXZ PROC			; Crate_Refill::GetType, COMDAT
; _this$ = ecx

; 1311 : 		return CRATE_SOLDIER;

	mov	eax, 1

; 1312 : 	};

	ret	0
?GetType@Crate_Refill@@EAEHXZ ENDP			; Crate_Refill::GetType
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetPercent@Crate_Refill@@EAEIXZ
_TEXT	SEGMENT
?GetPercent@Crate_Refill@@EAEIXZ PROC			; Crate_Refill::GetPercent, COMDAT
; _this$ = ecx

; 1315 : 		return this->m_percent->Refill;

	mov	eax, DWORD PTR ?m_percent@gzCrateBase@@1PBUgzCratePercentStruct@@B ; gzCrateBase::m_percent
	mov	eax, DWORD PTR [eax+40]

; 1316 : 	};

	ret	0
?GetPercent@Crate_Refill@@EAEIXZ ENDP			; Crate_Refill::GetPercent
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?SkipDefaultOutput@Crate_Refill@@EAE_NXZ
_TEXT	SEGMENT
?SkipDefaultOutput@Crate_Refill@@EAE_NXZ PROC		; Crate_Refill::SkipDefaultOutput, COMDAT
; _this$ = ecx

; 1319 : 		return false;

	xor	al, al

; 1320 : 	};

	ret	0
?SkipDefaultOutput@Crate_Refill@@EAE_NXZ ENDP		; Crate_Refill::SkipDefaultOutput
_TEXT	ENDS
PUBLIC	??_C@_0FM@BCHIIPAO@?$FLCrate?$FN?5You?5just?5got?5the?5Refill?5@ ; `string'
EXTRN	?Grant_Supplies@nc_VendorClass@@SAHPAVnc_SoldierGameObj@@@Z:PROC ; nc_VendorClass::Grant_Supplies
;	COMDAT ??_C@_0FM@BCHIIPAO@?$FLCrate?$FN?5You?5just?5got?5the?5Refill?5@
CONST	SEGMENT
??_C@_0FM@BCHIIPAO@?$FLCrate?$FN?5You?5just?5got?5the?5Refill?5@ DB '[Cra'
	DB	'te] You just got the Refill Crate, your health, armor, and am'
	DB	'mo have all been refilled.', 00H		; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?Pick@Crate_Refill@@EAE_NPAVnc_SmartGameObj@@@Z
_TEXT	SEGMENT
_Picker$ = 8						; size = 4
?Pick@Crate_Refill@@EAE_NPAVnc_SmartGameObj@@@Z PROC	; Crate_Refill::Pick, COMDAT
; _this$ = ecx

; 1322 : 	{

	push	esi

; 1323 : 		nc_VendorClass::Grant_Supplies(Picker->As_SoldierGameObj());

	mov	esi, DWORD PTR _Picker$[esp]
	mov	eax, DWORD PTR [esi]
	mov	edx, DWORD PTR [eax+68]
	mov	ecx, esi
	call	edx
	push	eax
	call	?Grant_Supplies@nc_VendorClass@@SAHPAVnc_SoldierGameObj@@@Z ; nc_VendorClass::Grant_Supplies

; 1324 : 		PagePlayer(Picker->Player->PlayerId, "[Crate] You just got the Refill Crate, your health, armor, and ammo have all been refilled.");

	mov	eax, DWORD PTR [esi+2400]
	mov	ecx, DWORD PTR [eax+1884]
	push	OFFSET ??_C@_0FM@BCHIIPAO@?$FLCrate?$FN?5You?5just?5got?5the?5Refill?5@
	push	ecx
	call	?PagePlayer@@YAXHPBDZZ			; PagePlayer
	add	esp, 12					; 0000000cH

; 1325 : 		return true;

	mov	al, 1
	pop	esi

; 1326 : 	};

	ret	4
?Pick@Crate_Refill@@EAE_NPAVnc_SmartGameObj@@@Z ENDP	; Crate_Refill::Pick
_TEXT	ENDS
PUBLIC	??_7Crate_Beacon@@6B@				; Crate_Beacon::`vftable'
PUBLIC	??0Crate_Beacon@@QAE@XZ				; Crate_Beacon::Crate_Beacon
PUBLIC	??_R4Crate_Beacon@@6B@				; Crate_Beacon::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVCrate_Beacon@@@8			; Crate_Beacon `RTTI Type Descriptor'
PUBLIC	??_R3Crate_Beacon@@8				; Crate_Beacon::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2Crate_Beacon@@8				; Crate_Beacon::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@Crate_Beacon@@8			; Crate_Beacon::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?GetName@Crate_Beacon@@EAEPBDXZ			; Crate_Beacon::GetName
PUBLIC	?GetType@Crate_Beacon@@EAEHXZ			; Crate_Beacon::GetType
PUBLIC	?GetPercent@Crate_Beacon@@EAEIXZ		; Crate_Beacon::GetPercent
PUBLIC	?Pick@Crate_Beacon@@EAE_NPAVnc_SmartGameObj@@@Z	; Crate_Beacon::Pick
;	COMDAT ??_R1A@?0A@EA@Crate_Beacon@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@Crate_Beacon@@8 DD FLAT:??_R0?AVCrate_Beacon@@@8 ; Crate_Beacon::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3Crate_Beacon@@8
rdata$r	ENDS
;	COMDAT ??_R2Crate_Beacon@@8
rdata$r	SEGMENT
??_R2Crate_Beacon@@8 DD FLAT:??_R1A@?0A@EA@Crate_Beacon@@8 ; Crate_Beacon::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzCrateBase@@8
rdata$r	ENDS
;	COMDAT ??_R3Crate_Beacon@@8
rdata$r	SEGMENT
??_R3Crate_Beacon@@8 DD 00H				; Crate_Beacon::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2Crate_Beacon@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVCrate_Beacon@@@8
_DATA	SEGMENT
??_R0?AVCrate_Beacon@@@8 DD FLAT:??_7type_info@@6B@	; Crate_Beacon `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVCrate_Beacon@@', 00H
_DATA	ENDS
;	COMDAT ??_R4Crate_Beacon@@6B@
rdata$r	SEGMENT
??_R4Crate_Beacon@@6B@ DD 00H				; Crate_Beacon::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVCrate_Beacon@@@8
	DD	FLAT:??_R3Crate_Beacon@@8
rdata$r	ENDS
;	COMDAT ??_7Crate_Beacon@@6B@
CONST	SEGMENT
??_7Crate_Beacon@@6B@ DD FLAT:??_R4Crate_Beacon@@6B@	; Crate_Beacon::`vftable'
	DD	FLAT:?GetName@Crate_Beacon@@EAEPBDXZ
	DD	FLAT:?GetType@Crate_Beacon@@EAEHXZ
	DD	FLAT:?GetPercent@Crate_Beacon@@EAEIXZ
	DD	FLAT:?SkipDefaultOutput@gzCrateBase@@UAE_NXZ
	DD	FLAT:?Pick@Crate_Beacon@@EAE_NPAVnc_SmartGameObj@@@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0Crate_Beacon@@QAE@XZ
_TEXT	SEGMENT
??0Crate_Beacon@@QAE@XZ PROC				; Crate_Beacon::Crate_Beacon, COMDAT
; _this$ = ecx
	xor	eax, eax
	push	esi
	mov	esi, ecx
	mov	DWORD PTR [esi+4], eax
	mov	BYTE PTR [esi+8], al
	mov	DWORD PTR [esi], OFFSET ??_7gzCrateBase@@6B@
	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	mov	eax, esi
	je	SHORT $LN8@Crate_Beac
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], esi
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN8@Crate_Beac:
	mov	DWORD PTR [esi], OFFSET ??_7Crate_Beacon@@6B@
	pop	esi
	ret	0
??0Crate_Beacon@@QAE@XZ ENDP				; Crate_Beacon::Crate_Beacon
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetName@Crate_Beacon@@EAEPBDXZ
_TEXT	SEGMENT
?GetName@Crate_Beacon@@EAEPBDXZ PROC			; Crate_Beacon::GetName, COMDAT
; _this$ = ecx

; 1333 : 		return "Beacon";

	mov	eax, OFFSET ??_C@_06NMAKBGBM@Beacon?$AA@

; 1334 : 	};

	ret	0
?GetName@Crate_Beacon@@EAEPBDXZ ENDP			; Crate_Beacon::GetName
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetType@Crate_Beacon@@EAEHXZ
_TEXT	SEGMENT
?GetType@Crate_Beacon@@EAEHXZ PROC			; Crate_Beacon::GetType, COMDAT
; _this$ = ecx

; 1337 : 		return CRATE_SOLDIER;

	mov	eax, 1

; 1338 : 	};

	ret	0
?GetType@Crate_Beacon@@EAEHXZ ENDP			; Crate_Beacon::GetType
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetPercent@Crate_Beacon@@EAEIXZ
_TEXT	SEGMENT
?GetPercent@Crate_Beacon@@EAEIXZ PROC			; Crate_Beacon::GetPercent, COMDAT
; _this$ = ecx

; 1341 : 		return this->m_percent->Beacon;

	mov	eax, DWORD PTR ?m_percent@gzCrateBase@@1PBUgzCratePercentStruct@@B ; gzCrateBase::m_percent
	mov	eax, DWORD PTR [eax+44]

; 1342 : 	};

	ret	0
?GetPercent@Crate_Beacon@@EAEIXZ ENDP			; Crate_Beacon::GetPercent
_TEXT	ENDS
PUBLIC	??_C@_0EO@OLKNLLLB@msg?5?$FLCrate?$FN?3?5Looks?5like?5a?5?$CFs?5pla@ ; `string'
PUBLIC	??_C@_0EK@KPCMHMHM@?$FLCrate?$FN?5You?5just?5got?5a?5Nuclear?5B@ ; `string'
PUBLIC	??_C@_0CE@BBJLKLDO@?$CFls?5picked?5up?5a?5Nuclear?5Bomb?5Cra@ ; `string'
PUBLIC	??_C@_04OHJIHAFH@None?$AA@			; `string'
PUBLIC	__real@451c4000
PUBLIC	__real@41700000
PUBLIC	??_C@_0FE@OPINNJKA@?$FLCrate?$FN?5You?5just?5got?5the?5Beacon?5@ ; `string'
PUBLIC	??_C@_0BN@IFDDNBHL@CnC_Weapon_NukeBeacon_Player?$AA@ ; `string'
PUBLIC	??_C@_0FB@FIFAOPII@?$FLCrate?$FN?5You?5just?5got?5the?5Beacon?5@ ; `string'
PUBLIC	??_C@_0BO@IIMJDKNA@?$CFls?5picked?5up?5a?5Beacon?5Crate?4?$AA@ ; `string'
PUBLIC	??_C@_0CC@EJAOAPHI@CnC_Weapon_IonCannonBeacon_Playe@ ; `string'
;	COMDAT ??_C@_0EO@OLKNLLLB@msg?5?$FLCrate?$FN?3?5Looks?5like?5a?5?$CFs?5pla@
; File c:\program files\microsoft visual studio 8\vc\include\math.h
CONST	SEGMENT
??_C@_0EO@OLKNLLLB@msg?5?$FLCrate?$FN?3?5Looks?5like?5a?5?$CFs?5pla@ DB 'm'
	DB	'sg [Crate]: Looks like a %s player just got blown to bits by '
	DB	'a Nuclear Bomb.', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_0EK@KPCMHMHM@?$FLCrate?$FN?5You?5just?5got?5a?5Nuclear?5B@
CONST	SEGMENT
??_C@_0EK@KPCMHMHM@?$FLCrate?$FN?5You?5just?5got?5a?5Nuclear?5B@ DB '[Cra'
	DB	'te] You just got a Nuclear Bomb Crate, you have been killed. '
	DB	'Sorry :(', 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_0CE@BBJLKLDO@?$CFls?5picked?5up?5a?5Nuclear?5Bomb?5Cra@
CONST	SEGMENT
??_C@_0CE@BBJLKLDO@?$CFls?5picked?5up?5a?5Nuclear?5Bomb?5Cra@ DB '%ls pic'
	DB	'ked up a Nuclear Bomb Crate.', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_04OHJIHAFH@None?$AA@
CONST	SEGMENT
??_C@_04OHJIHAFH@None?$AA@ DB 'None', 00H		; `string'
CONST	ENDS
;	COMDAT __real@451c4000
CONST	SEGMENT
__real@451c4000 DD 0451c4000r			; 2500
CONST	ENDS
;	COMDAT __real@41700000
CONST	SEGMENT
__real@41700000 DD 041700000r			; 15
CONST	ENDS
;	COMDAT ??_C@_0FE@OPINNJKA@?$FLCrate?$FN?5You?5just?5got?5the?5Beacon?5@
CONST	SEGMENT
??_C@_0FE@OPINNJKA@?$FLCrate?$FN?5You?5just?5got?5the?5Beacon?5@ DB '[Cra'
	DB	'te] You just got the Beacon Crate, you have been given a Nucl'
	DB	'ear Strike Beacon.', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_0BN@IFDDNBHL@CnC_Weapon_NukeBeacon_Player?$AA@
CONST	SEGMENT
??_C@_0BN@IFDDNBHL@CnC_Weapon_NukeBeacon_Player?$AA@ DB 'CnC_Weapon_NukeB'
	DB	'eacon_Player', 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_0FB@FIFAOPII@?$FLCrate?$FN?5You?5just?5got?5the?5Beacon?5@
CONST	SEGMENT
??_C@_0FB@FIFAOPII@?$FLCrate?$FN?5You?5just?5got?5the?5Beacon?5@ DB '[Cra'
	DB	'te] You just got the Beacon Crate, you have been given an Ion'
	DB	' Cannon Beacon.', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_0BO@IIMJDKNA@?$CFls?5picked?5up?5a?5Beacon?5Crate?4?$AA@
CONST	SEGMENT
??_C@_0BO@IIMJDKNA@?$CFls?5picked?5up?5a?5Beacon?5Crate?4?$AA@ DB '%ls pi'
	DB	'cked up a Beacon Crate.', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_0CC@EJAOAPHI@CnC_Weapon_IonCannonBeacon_Playe@
CONST	SEGMENT
??_C@_0CC@EJAOAPHI@CnC_Weapon_IonCannonBeacon_Playe@ DB 'CnC_Weapon_IonCa'
	DB	'nnonBeacon_Player', 00H			; `string'
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
CONST	ENDS
;	COMDAT ?Pick@Crate_Beacon@@EAE_NPAVnc_SmartGameObj@@@Z
_TEXT	SEGMENT
_Pos$60806 = -24					; size = 12
_objPos$60813 = -12					; size = 12
_Picker$ = 8						; size = 4
?Pick@Crate_Beacon@@EAE_NPAVnc_SmartGameObj@@@Z PROC	; Crate_Beacon::Pick, COMDAT
; _this$ = ecx

; 1345 : 		if (gzWeaponMgr->m_settings->m_BeaconLimit > 0 && gzGameMgr->m_settings->m_GameMode == GAMEMODE_AOW)

	mov	eax, DWORD PTR ?gzWeaponMgr@@3PAVgzWeaponManager@@A ; gzWeaponMgr
	mov	ecx, DWORD PTR [eax+40]
	sub	esp, 24					; 00000018H
	cmp	DWORD PTR [ecx+24], 0
	jle	SHORT $LN25@Pick@10
	mov	edx, DWORD PTR ?gzGameMgr@@3PAVgzGameManager@@A ; gzGameMgr
	mov	eax, DWORD PTR [edx+56]
	cmp	DWORD PTR [eax+24], 1
	jne	SHORT $LN25@Pick@10
	push	esi

; 1346 : 		{
; 1347 : 			int	Random = gzRandom.Get_Int(1, 3);

	push	3
	push	1
	mov	ecx, OFFSET ?gzRandom@@3VaRandom@@A	; gzRandom
	call	?Get_Int@aRandom@@QAEJJJ@Z		; aRandom::Get_Int

; 1348 : 			if (Random == 1)

	cmp	eax, 1
	jne	SHORT $LN9@Pick@10

; 1349 : 			{
; 1350 : 				Picker->WeaponBag->Add_Weapon("CnC_Weapon_IonCannonBeacon_Player", 1, true);

	mov	esi, DWORD PTR _Picker$[esp+24]
	mov	ecx, DWORD PTR [esi+1968]
	push	eax
	push	eax
	push	OFFSET ??_C@_0CC@EJAOAPHI@CnC_Weapon_IonCannonBeacon_Playe@
	call	?Add_Weapon@nc_WeaponBagClass@@QAEXPBDH_N@Z ; nc_WeaponBagClass::Add_Weapon

; 1351 : 				gzLogger("_CRATE", "%ls picked up a Beacon Crate.", Picker->Player->PlayerName.m_Buffer);

	mov	ecx, DWORD PTR [esi+2400]
	mov	edx, DWORD PTR [ecx+1880]
	push	edx
	push	OFFSET ??_C@_0BO@IIMJDKNA@?$CFls?5picked?5up?5a?5Beacon?5Crate?4?$AA@
	push	OFFSET ??_C@_06LJACFPMC@_CRATE?$AA@
	call	?gzLogger@@YAXPBD0ZZ			; gzLogger

; 1352 : 				PagePlayer(Picker->Player->PlayerId, "[Crate] You just got the Beacon Crate, you have been given an Ion Cannon Beacon.");

	mov	eax, DWORD PTR [esi+2400]
	mov	ecx, DWORD PTR [eax+1884]
	push	OFFSET ??_C@_0FB@FIFAOPII@?$FLCrate?$FN?5You?5just?5got?5the?5Beacon?5@
	push	ecx
	call	?PagePlayer@@YAXHPBDZZ			; PagePlayer
	add	esp, 20					; 00000014H
	pop	esi
$LN25@Pick@10:

; 1381 : 			}
; 1382 : 		}
; 1383 : 		return true;

	mov	al, 1

; 1384 : 	};

	add	esp, 24					; 00000018H
	ret	4
$LN9@Pick@10:

; 1353 : 			}
; 1354 : 			else if (Random == 2)

	cmp	eax, 2
	jne	SHORT $LN7@Pick@10

; 1355 : 			{
; 1356 : 				Picker->WeaponBag->Add_Weapon("CnC_Weapon_NukeBeacon_Player", 1, true);

	mov	esi, DWORD PTR _Picker$[esp+24]
	mov	ecx, DWORD PTR [esi+1968]
	push	1
	push	1
	push	OFFSET ??_C@_0BN@IFDDNBHL@CnC_Weapon_NukeBeacon_Player?$AA@
	call	?Add_Weapon@nc_WeaponBagClass@@QAEXPBDH_N@Z ; nc_WeaponBagClass::Add_Weapon

; 1357 : 				gzLogger("_CRATE", "%ls picked up a Beacon Crate.", Picker->Player->PlayerName.m_Buffer);

	mov	edx, DWORD PTR [esi+2400]
	mov	eax, DWORD PTR [edx+1880]
	push	eax
	push	OFFSET ??_C@_0BO@IIMJDKNA@?$CFls?5picked?5up?5a?5Beacon?5Crate?4?$AA@
	push	OFFSET ??_C@_06LJACFPMC@_CRATE?$AA@
	call	?gzLogger@@YAXPBD0ZZ			; gzLogger

; 1358 : 				PagePlayer(Picker->Player->PlayerId, "[Crate] You just got the Beacon Crate, you have been given a Nuclear Strike Beacon.");

	mov	ecx, DWORD PTR [esi+2400]
	mov	edx, DWORD PTR [ecx+1884]
	push	OFFSET ??_C@_0FE@OPINNJKA@?$FLCrate?$FN?5You?5just?5got?5the?5Beacon?5@
	push	edx
	call	?PagePlayer@@YAXHPBDZZ			; PagePlayer
	add	esp, 20					; 00000014H
	pop	esi

; 1381 : 			}
; 1382 : 		}
; 1383 : 		return true;

	mov	al, 1

; 1384 : 	};

	add	esp, 24					; 00000018H
	ret	4
$LN7@Pick@10:
	push	ebx

; 1359 : 			}
; 1360 : 			else
; 1361 : 			{
; 1362 : 				nc_Vector3 Pos;
; 1363 : 				Picker->Get_Position(&Pos);

	mov	ebx, DWORD PTR _Picker$[esp+28]
	mov	eax, DWORD PTR [ebx]
	mov	edx, DWORD PTR [eax+56]
	lea	ecx, DWORD PTR _Pos$60806[esp+32]
	push	ecx
	mov	ecx, ebx
	call	edx

; 1364 : 				nc_ExplosionManager::Server_Explode(nc_DefinitionMgrClass::Find_Typed_Definition("Explosion_NukeBeacon",0xB003,true)->Get_ID(),Pos,0,NULL);

	push	1
	push	45059					; 0000b003H
	push	OFFSET ??_C@_0BF@GNBAIPLI@Explosion_NukeBeacon?$AA@
	call	?Find_Typed_Definition@nc_DefinitionMgrClass@@SAPAVnc_DefinitionClass@@PBDK_N@Z ; nc_DefinitionMgrClass::Find_Typed_Definition
	mov	edx, DWORD PTR [eax]
	add	esp, 12					; 0000000cH
	push	0
	push	0
	lea	ecx, DWORD PTR _Pos$60806[esp+40]
	push	ecx
	mov	ecx, eax
	mov	eax, DWORD PTR [edx+36]
	call	eax
	push	eax
	call	?Server_Explode@nc_ExplosionManager@@SAXHABUnc_Vector3@@HPAVnc_DamageableGameObj@@@Z ; nc_ExplosionManager::Server_Explode

; 1365 : 				Pos.Z = 0.0f;

	fldz

; 1366 : 				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
	fstp	DWORD PTR _Pos$60806[esp+56]
	mov	esi, DWORD PTR [ecx+4]
	add	esp, 16					; 00000010H
	test	esi, esi
	je	$LN3@Pick@10
	push	edi
	npad	1
$LL5@Pick@10:

; 1367 : 				{
; 1368 : 					if (objList->NodeData && objList->NodeData->As_PhysicalGameObj())

	cmp	DWORD PTR [esi+4], 0
	je	$LN4@Pick@10
	mov	ecx, DWORD PTR [esi+4]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+36]
	call	eax
	test	eax, eax
	je	$LN4@Pick@10

; 1369 : 					{
; 1370 : 						nc_Vector3 objPos;
; 1371 : 						objList->NodeData->As_PhysicalGameObj()->Get_Position(&objPos);

	mov	ecx, DWORD PTR [esi+4]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+36]
	call	eax
	mov	edx, DWORD PTR [eax]
	mov	edx, DWORD PTR [edx+56]
	lea	ecx, DWORD PTR _objPos$60813[esp+36]
	push	ecx
	mov	ecx, eax
	call	edx

; 1372 : 						objPos.Z = 0.0f;

	fldz
	fstp	DWORD PTR _objPos$60813[esp+44]

; 1373 : 						float Distance = (abs(objPos.X - Pos.X) + abs(objPos.Y + Pos.Y));

	fld	DWORD PTR _objPos$60813[esp+36]
	fsub	DWORD PTR _Pos$60806[esp+36]
	fabs
	fld	DWORD PTR _Pos$60806[esp+40]
	fadd	DWORD PTR _objPos$60813[esp+40]
	fabs
	faddp	ST(1), ST(0)

; 1374 : 						if (Distance <= 15.0f && objList->NodeData->NetworkID != gzCrateMgr->m_crateId)

	fcomp	DWORD PTR __real@41700000
	fnstsw	ax
	test	ah, 65					; 00000041H
	jp	SHORT $LN4@Pick@10
	mov	eax, DWORD PTR [esi+4]
	mov	ecx, DWORD PTR [eax+12]
	mov	edx, DWORD PTR ?gzCrateMgr@@3PAVgzManagerCrateClass@@A ; gzCrateMgr
	cmp	ecx, DWORD PTR [edx+52]
	je	SHORT $LN4@Pick@10

; 1375 : 							gzCommands->Apply_Damage(objList->NodeData->As_PhysicalGameObj(), 2500.0f, "None", NULL);

	mov	edi, DWORD PTR ?gzCommands@@3PAUnc_ScriptCommands@@A ; gzCommands
	fld	DWORD PTR __real@451c4000
	push	0
	mov	ecx, eax
	mov	eax, DWORD PTR [ecx]
	mov	edx, DWORD PTR [eax+36]
	push	OFFSET ??_C@_04OHJIHAFH@None?$AA@
	push	ecx
	fstp	DWORD PTR [esp]
	add	edi, 616				; 00000268H
	call	edx
	push	eax
	mov	eax, DWORD PTR [edi]
	call	eax
	add	esp, 16					; 00000010H
$LN4@Pick@10:
	mov	esi, DWORD PTR [esi]
	test	esi, esi
	jne	$LL5@Pick@10
	pop	edi
$LN3@Pick@10:

; 1376 : 					}
; 1377 : 				}
; 1378 : 				gzLogger("_CRATE", "%ls picked up a Nuclear Bomb Crate.", Picker->Player->PlayerName.m_Buffer);

	mov	ecx, DWORD PTR [ebx+2400]
	mov	edx, DWORD PTR [ecx+1880]
	push	edx
	push	OFFSET ??_C@_0CE@BBJLKLDO@?$CFls?5picked?5up?5a?5Nuclear?5Bomb?5Cra@
	push	OFFSET ??_C@_06LJACFPMC@_CRATE?$AA@
	call	?gzLogger@@YAXPBD0ZZ			; gzLogger

; 1379 : 				PagePlayer(Picker->Player->PlayerId, "[Crate] You just got a Nuclear Bomb Crate, you have been killed. Sorry :(");

	mov	eax, DWORD PTR [ebx+2400]
	mov	ecx, DWORD PTR [eax+1884]
	push	OFFSET ??_C@_0EK@KPCMHMHM@?$FLCrate?$FN?5You?5just?5got?5a?5Nuclear?5B@
	push	ecx
	call	?PagePlayer@@YAXHPBDZZ			; PagePlayer
	add	esp, 20					; 00000014H

; 1380 : 				gzConsole::In("msg [Crate]: Looks like a %s player just got blown to bits by a Nuclear Bomb.", (Picker->PlayerType == 0) ? "Nod" : "GDI");

	cmp	DWORD PTR [ebx+1892], 0
	pop	ebx
	mov	eax, OFFSET ??_C@_03OHGKCNFD@Nod?$AA@
	je	SHORT $LN14@Pick@10
	mov	eax, OFFSET ??_C@_03IOFAJBDH@GDI?$AA@
$LN14@Pick@10:
	push	eax
	push	OFFSET ??_C@_0EO@OLKNLLLB@msg?5?$FLCrate?$FN?3?5Looks?5like?5a?5?$CFs?5pla@
	call	?In@gzConsole@@SAXPBDZZ			; gzConsole::In
	add	esp, 8
	pop	esi

; 1381 : 			}
; 1382 : 		}
; 1383 : 		return true;

	mov	al, 1

; 1384 : 	};

	add	esp, 24					; 00000018H
	ret	4
?Pick@Crate_Beacon@@EAE_NPAVnc_SmartGameObj@@@Z ENDP	; Crate_Beacon::Pick
_TEXT	ENDS
PUBLIC	??_7Crate_Spy@@6B@				; Crate_Spy::`vftable'
PUBLIC	??0Crate_Spy@@QAE@XZ				; Crate_Spy::Crate_Spy
PUBLIC	??_R4Crate_Spy@@6B@				; Crate_Spy::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVCrate_Spy@@@8				; Crate_Spy `RTTI Type Descriptor'
PUBLIC	??_R3Crate_Spy@@8				; Crate_Spy::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2Crate_Spy@@8				; Crate_Spy::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@Crate_Spy@@8			; Crate_Spy::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?GetName@Crate_Spy@@EAEPBDXZ			; Crate_Spy::GetName
PUBLIC	?GetType@Crate_Spy@@EAEHXZ			; Crate_Spy::GetType
PUBLIC	?GetPercent@Crate_Spy@@EAEIXZ			; Crate_Spy::GetPercent
PUBLIC	?SkipDefaultOutput@Crate_Spy@@EAE_NXZ		; Crate_Spy::SkipDefaultOutput
PUBLIC	?Pick@Crate_Spy@@EAE_NPAVnc_SmartGameObj@@@Z	; Crate_Spy::Pick
;	COMDAT ??_R1A@?0A@EA@Crate_Spy@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@Crate_Spy@@8 DD FLAT:??_R0?AVCrate_Spy@@@8 ; Crate_Spy::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3Crate_Spy@@8
rdata$r	ENDS
;	COMDAT ??_R2Crate_Spy@@8
rdata$r	SEGMENT
??_R2Crate_Spy@@8 DD FLAT:??_R1A@?0A@EA@Crate_Spy@@8	; Crate_Spy::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzCrateBase@@8
rdata$r	ENDS
;	COMDAT ??_R3Crate_Spy@@8
rdata$r	SEGMENT
??_R3Crate_Spy@@8 DD 00H				; Crate_Spy::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2Crate_Spy@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVCrate_Spy@@@8
_DATA	SEGMENT
??_R0?AVCrate_Spy@@@8 DD FLAT:??_7type_info@@6B@	; Crate_Spy `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVCrate_Spy@@', 00H
_DATA	ENDS
;	COMDAT ??_R4Crate_Spy@@6B@
rdata$r	SEGMENT
??_R4Crate_Spy@@6B@ DD 00H				; Crate_Spy::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVCrate_Spy@@@8
	DD	FLAT:??_R3Crate_Spy@@8
rdata$r	ENDS
;	COMDAT ??_7Crate_Spy@@6B@
CONST	SEGMENT
??_7Crate_Spy@@6B@ DD FLAT:??_R4Crate_Spy@@6B@		; Crate_Spy::`vftable'
	DD	FLAT:?GetName@Crate_Spy@@EAEPBDXZ
	DD	FLAT:?GetType@Crate_Spy@@EAEHXZ
	DD	FLAT:?GetPercent@Crate_Spy@@EAEIXZ
	DD	FLAT:?SkipDefaultOutput@Crate_Spy@@EAE_NXZ
	DD	FLAT:?Pick@Crate_Spy@@EAE_NPAVnc_SmartGameObj@@@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0Crate_Spy@@QAE@XZ
_TEXT	SEGMENT
??0Crate_Spy@@QAE@XZ PROC				; Crate_Spy::Crate_Spy, COMDAT
; _this$ = ecx
	xor	eax, eax
	push	esi
	mov	esi, ecx
	mov	DWORD PTR [esi+4], eax
	mov	BYTE PTR [esi+8], al
	mov	DWORD PTR [esi], OFFSET ??_7gzCrateBase@@6B@
	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	mov	eax, esi
	je	SHORT $LN8@Crate_Spy
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], esi
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN8@Crate_Spy:
	mov	DWORD PTR [esi], OFFSET ??_7Crate_Spy@@6B@
	pop	esi
	ret	0
??0Crate_Spy@@QAE@XZ ENDP				; Crate_Spy::Crate_Spy
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetName@Crate_Spy@@EAEPBDXZ
_TEXT	SEGMENT
?GetName@Crate_Spy@@EAEPBDXZ PROC			; Crate_Spy::GetName, COMDAT
; _this$ = ecx

; 1391 : 		return "Spy";

	mov	eax, OFFSET ??_C@_03KNAPCKEA@Spy?$AA@

; 1392 : 	};

	ret	0
?GetName@Crate_Spy@@EAEPBDXZ ENDP			; Crate_Spy::GetName
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetType@Crate_Spy@@EAEHXZ
_TEXT	SEGMENT
?GetType@Crate_Spy@@EAEHXZ PROC				; Crate_Spy::GetType, COMDAT
; _this$ = ecx

; 1395 : 		return CRATE_SOLDIER;

	mov	eax, 1

; 1396 : 	};

	ret	0
?GetType@Crate_Spy@@EAEHXZ ENDP				; Crate_Spy::GetType
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetPercent@Crate_Spy@@EAEIXZ
_TEXT	SEGMENT
?GetPercent@Crate_Spy@@EAEIXZ PROC			; Crate_Spy::GetPercent, COMDAT
; _this$ = ecx

; 1399 : 		return this->m_percent->Spy;

	mov	eax, DWORD PTR ?m_percent@gzCrateBase@@1PBUgzCratePercentStruct@@B ; gzCrateBase::m_percent
	mov	eax, DWORD PTR [eax+48]

; 1400 : 	};

	ret	0
?GetPercent@Crate_Spy@@EAEIXZ ENDP			; Crate_Spy::GetPercent
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?SkipDefaultOutput@Crate_Spy@@EAE_NXZ
_TEXT	SEGMENT
?SkipDefaultOutput@Crate_Spy@@EAE_NXZ PROC		; Crate_Spy::SkipDefaultOutput, COMDAT
; _this$ = ecx

; 1403 : 		return false;

	xor	al, al

; 1404 : 	};

	ret	0
?SkipDefaultOutput@Crate_Spy@@EAE_NXZ ENDP		; Crate_Spy::SkipDefaultOutput
_TEXT	ENDS
PUBLIC	??_C@_0FB@HGEHIHKF@msg?5?$FLCrate?$FN?3?5Oh?5no?$CB?5A?5?$CFs?5player?5@ ; `string'
PUBLIC	??_C@_0IC@MPFKPDGP@?$FLCrate?$FN?5You?5got?5the?5Spy?5Crate?0?5b@ ; `string'
;	COMDAT ??_C@_0FB@HGEHIHKF@msg?5?$FLCrate?$FN?3?5Oh?5no?$CB?5A?5?$CFs?5player?5@
; File d:\source code\alib\include\avector.h
CONST	SEGMENT
??_C@_0FB@HGEHIHKF@msg?5?$FLCrate?$FN?3?5Oh?5no?$CB?5A?5?$CFs?5player?5@ DB 'm'
	DB	'sg [Crate]: Oh no! A %s player just got a spy crate, better w'
	DB	'atch your base %s!', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_0IC@MPFKPDGP@?$FLCrate?$FN?5You?5got?5the?5Spy?5Crate?0?5b@
CONST	SEGMENT
??_C@_0IC@MPFKPDGP@?$FLCrate?$FN?5You?5got?5the?5Spy?5Crate?0?5b@ DB '[Cr'
	DB	'ate] You got the Spy Crate, base defenses will ignore you unt'
	DB	'il you die, destroy a building. You can also see enemy team c'
	DB	'hat!', 00H					; `string'
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
CONST	ENDS
;	COMDAT ?Pick@Crate_Spy@@EAE_NPAVnc_SmartGameObj@@@Z
_TEXT	SEGMENT
_Picker$ = 8						; size = 4
?Pick@Crate_Spy@@EAE_NPAVnc_SmartGameObj@@@Z PROC	; Crate_Spy::Pick, COMDAT
; _this$ = ecx

; 1406 : 	{

	push	esi

; 1407 : 		if (Picker->As_SoldierGameObj()->IsVisible)

	mov	esi, DWORD PTR _Picker$[esp]
	mov	eax, DWORD PTR [esi]
	mov	edx, DWORD PTR [eax+68]
	push	edi
	mov	ecx, esi
	call	edx
	cmp	BYTE PTR [eax+3365], 0
	je	SHORT $LN2@Pick@11

; 1408 : 		{
; 1409 : 			for (unsigned int i = 0; i < gzCrateMgr->m_data->Spy.Count(); i++)

	mov	ecx, DWORD PTR ?gzCrateMgr@@3PAVgzManagerCrateClass@@A ; gzCrateMgr
	mov	ecx, DWORD PTR [ecx+60]
	mov	edx, DWORD PTR [ecx+12]
	xor	eax, eax
	test	edx, edx
	jbe	SHORT $LN2@Pick@11
	mov	edi, DWORD PTR [esi+12]
	mov	ecx, DWORD PTR [ecx+4]
$LL4@Pick@11:

; 1410 : 			{
; 1411 : 				if (gzCrateMgr->m_data->Spy[i] == Picker->NetworkID)

	cmp	DWORD PTR [ecx], edi
	je	$LN17@Pick@11
	add	eax, 1
	add	ecx, 4
	cmp	eax, edx
	jb	SHORT $LL4@Pick@11
$LN2@Pick@11:

; 1413 : 			}
; 1414 : 		}
; 1415 : 		Picker->As_SoldierGameObj()->Re_Init(*(nc_SoldierGameObjDef *)nc_DefinitionMgrClass::Find_Named_Definition("CnC_Nod_FlameThrower_2SF",true));

	push	1
	push	OFFSET ??_C@_0BJ@HIKMPHIB@CnC_Nod_FlameThrower_2SF?$AA@
	call	?Find_Named_Definition@nc_DefinitionMgrClass@@SAPAVnc_DefinitionClass@@PBD_N@Z ; nc_DefinitionMgrClass::Find_Named_Definition
	mov	edx, DWORD PTR [esi]
	add	esp, 8
	push	eax
	mov	eax, DWORD PTR [edx+68]
	mov	ecx, esi
	call	eax
	mov	ecx, eax
	call	?Re_Init@nc_SoldierGameObj@@QAEXAAVnc_SoldierGameObjDef@@@Z ; nc_SoldierGameObj::Re_Init

; 1416 : 		Picker->As_SoldierGameObj()->Post_Re_Init();

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

; 1417 : 		Picker->As_SoldierGameObj()->IsVisible = false;

	mov	edx, DWORD PTR [esi]
	mov	eax, DWORD PTR [edx+68]
	mov	ecx, esi
	call	eax
	mov	BYTE PTR [eax+3365], 0

; 1418 : 		gzCrateMgr->m_data->Spy.Add(Picker->NetworkID);

	mov	ecx, DWORD PTR ?gzCrateMgr@@3PAVgzManagerCrateClass@@A ; gzCrateMgr
	mov	ecx, DWORD PTR [ecx+60]
	mov	edx, DWORD PTR [ecx]
	mov	edx, DWORD PTR [edx+12]
	lea	eax, DWORD PTR [esi+12]
	push	eax
	call	edx

; 1419 : 		PagePlayer(Picker->Player->PlayerId, "[Crate] You got the Spy Crate, base defenses will ignore you until you die, destroy a building. You can also see enemy team chat!");

	mov	eax, DWORD PTR [esi+2400]
	mov	ecx, DWORD PTR [eax+1884]
	push	OFFSET ??_C@_0IC@MPFKPDGP@?$FLCrate?$FN?5You?5got?5the?5Spy?5Crate?0?5b@
	push	ecx
	call	?PagePlayer@@YAXHPBDZZ			; PagePlayer

; 1420 : 		gzConsole::In("msg [Crate]: Oh no! A %s player just got a spy crate, better watch your base %s!", (Picker->PlayerType == 0) ? "Nod" : "GDI", (Picker->PlayerType == 0) ? "GDI" : "Nod");

	mov	esi, DWORD PTR [esi+1892]
	add	esp, 8
	test	esi, esi
	mov	ecx, OFFSET ??_C@_03IOFAJBDH@GDI?$AA@
	je	SHORT $LN20@Pick@11
	mov	ecx, OFFSET ??_C@_03OHGKCNFD@Nod?$AA@
	mov	eax, OFFSET ??_C@_03IOFAJBDH@GDI?$AA@
$LN11@Pick@11:
	push	ecx
	push	eax
	push	OFFSET ??_C@_0FB@HGEHIHKF@msg?5?$FLCrate?$FN?3?5Oh?5no?$CB?5A?5?$CFs?5player?5@
	call	?In@gzConsole@@SAXPBDZZ			; gzConsole::In
	add	esp, 12					; 0000000cH
	pop	edi

; 1421 : 		return true;

	mov	al, 1
	pop	esi

; 1422 : 	};

	ret	4
$LN17@Pick@11:
	pop	edi

; 1412 : 					return false;

	xor	al, al
	pop	esi

; 1422 : 	};

	ret	4
$LN20@Pick@11:

; 1420 : 		gzConsole::In("msg [Crate]: Oh no! A %s player just got a spy crate, better watch your base %s!", (Picker->PlayerType == 0) ? "Nod" : "GDI", (Picker->PlayerType == 0) ? "GDI" : "Nod");

	mov	eax, OFFSET ??_C@_03OHGKCNFD@Nod?$AA@
	jmp	SHORT $LN11@Pick@11
?Pick@Crate_Spy@@EAE_NPAVnc_SmartGameObj@@@Z ENDP	; Crate_Spy::Pick
_TEXT	ENDS
PUBLIC	??_7Crate_Thief@@6B@				; Crate_Thief::`vftable'
PUBLIC	??0Crate_Thief@@QAE@XZ				; Crate_Thief::Crate_Thief
PUBLIC	??_R4Crate_Thief@@6B@				; Crate_Thief::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVCrate_Thief@@@8				; Crate_Thief `RTTI Type Descriptor'
PUBLIC	??_R3Crate_Thief@@8				; Crate_Thief::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2Crate_Thief@@8				; Crate_Thief::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@Crate_Thief@@8			; Crate_Thief::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?GetName@Crate_Thief@@EAEPBDXZ			; Crate_Thief::GetName
PUBLIC	?GetType@Crate_Thief@@EAEHXZ			; Crate_Thief::GetType
PUBLIC	?GetPercent@Crate_Thief@@EAEIXZ			; Crate_Thief::GetPercent
PUBLIC	?SkipDefaultOutput@Crate_Thief@@EAE_NXZ		; Crate_Thief::SkipDefaultOutput
PUBLIC	?Pick@Crate_Thief@@EAE_NPAVnc_SmartGameObj@@@Z	; Crate_Thief::Pick
;	COMDAT ??_R1A@?0A@EA@Crate_Thief@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@Crate_Thief@@8 DD FLAT:??_R0?AVCrate_Thief@@@8 ; Crate_Thief::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3Crate_Thief@@8
rdata$r	ENDS
;	COMDAT ??_R2Crate_Thief@@8
rdata$r	SEGMENT
??_R2Crate_Thief@@8 DD FLAT:??_R1A@?0A@EA@Crate_Thief@@8 ; Crate_Thief::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzCrateBase@@8
rdata$r	ENDS
;	COMDAT ??_R3Crate_Thief@@8
rdata$r	SEGMENT
??_R3Crate_Thief@@8 DD 00H				; Crate_Thief::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2Crate_Thief@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVCrate_Thief@@@8
_DATA	SEGMENT
??_R0?AVCrate_Thief@@@8 DD FLAT:??_7type_info@@6B@	; Crate_Thief `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVCrate_Thief@@', 00H
_DATA	ENDS
;	COMDAT ??_R4Crate_Thief@@6B@
rdata$r	SEGMENT
??_R4Crate_Thief@@6B@ DD 00H				; Crate_Thief::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVCrate_Thief@@@8
	DD	FLAT:??_R3Crate_Thief@@8
rdata$r	ENDS
;	COMDAT ??_7Crate_Thief@@6B@
CONST	SEGMENT
??_7Crate_Thief@@6B@ DD FLAT:??_R4Crate_Thief@@6B@	; Crate_Thief::`vftable'
	DD	FLAT:?GetName@Crate_Thief@@EAEPBDXZ
	DD	FLAT:?GetType@Crate_Thief@@EAEHXZ
	DD	FLAT:?GetPercent@Crate_Thief@@EAEIXZ
	DD	FLAT:?SkipDefaultOutput@Crate_Thief@@EAE_NXZ
	DD	FLAT:?Pick@Crate_Thief@@EAE_NPAVnc_SmartGameObj@@@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0Crate_Thief@@QAE@XZ
_TEXT	SEGMENT
??0Crate_Thief@@QAE@XZ PROC				; Crate_Thief::Crate_Thief, COMDAT
; _this$ = ecx
	xor	eax, eax
	push	esi
	mov	esi, ecx
	mov	DWORD PTR [esi+4], eax
	mov	BYTE PTR [esi+8], al
	mov	DWORD PTR [esi], OFFSET ??_7gzCrateBase@@6B@
	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	mov	eax, esi
	je	SHORT $LN8@Crate_Thie
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], esi
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN8@Crate_Thie:
	mov	DWORD PTR [esi], OFFSET ??_7Crate_Thief@@6B@
	pop	esi
	ret	0
??0Crate_Thief@@QAE@XZ ENDP				; Crate_Thief::Crate_Thief
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetName@Crate_Thief@@EAEPBDXZ
_TEXT	SEGMENT
?GetName@Crate_Thief@@EAEPBDXZ PROC			; Crate_Thief::GetName, COMDAT
; _this$ = ecx

; 1429 : 		return "Thief";

	mov	eax, OFFSET ??_C@_05ELPFFFFC@Thief?$AA@

; 1430 : 	};

	ret	0
?GetName@Crate_Thief@@EAEPBDXZ ENDP			; Crate_Thief::GetName
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetType@Crate_Thief@@EAEHXZ
_TEXT	SEGMENT
?GetType@Crate_Thief@@EAEHXZ PROC			; Crate_Thief::GetType, COMDAT
; _this$ = ecx

; 1433 : 		return CRATE_SOLDIER;

	mov	eax, 1

; 1434 : 	};

	ret	0
?GetType@Crate_Thief@@EAEHXZ ENDP			; Crate_Thief::GetType
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetPercent@Crate_Thief@@EAEIXZ
_TEXT	SEGMENT
?GetPercent@Crate_Thief@@EAEIXZ PROC			; Crate_Thief::GetPercent, COMDAT
; _this$ = ecx

; 1437 : 		return this->m_percent->Thief;

	mov	eax, DWORD PTR ?m_percent@gzCrateBase@@1PBUgzCratePercentStruct@@B ; gzCrateBase::m_percent
	mov	eax, DWORD PTR [eax+52]

; 1438 : 	};

	ret	0
?GetPercent@Crate_Thief@@EAEIXZ ENDP			; Crate_Thief::GetPercent
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?SkipDefaultOutput@Crate_Thief@@EAE_NXZ
_TEXT	SEGMENT
?SkipDefaultOutput@Crate_Thief@@EAE_NXZ PROC		; Crate_Thief::SkipDefaultOutput, COMDAT
; _this$ = ecx

; 1441 : 		return false;

	xor	al, al

; 1442 : 	};

	ret	0
?SkipDefaultOutput@Crate_Thief@@EAE_NXZ ENDP		; Crate_Thief::SkipDefaultOutput
_TEXT	ENDS
PUBLIC	??_C@_0EE@MFHPPPIG@?$FLCrate?$FN?5You?5got?5the?5Thief?5Crate?0@ ; `string'
;	COMDAT ??_C@_0EE@MFHPPPIG@?$FLCrate?$FN?5You?5got?5the?5Thief?5Crate?0@
CONST	SEGMENT
??_C@_0EE@MFHPPPIG@?$FLCrate?$FN?5You?5got?5the?5Thief?5Crate?0@ DB '[Cra'
	DB	'te] You got the Thief Crate, you have lost all of your credit'
	DB	's.', 00H					; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?Pick@Crate_Thief@@EAE_NPAVnc_SmartGameObj@@@Z
_TEXT	SEGMENT
_Picker$ = 8						; size = 4
?Pick@Crate_Thief@@EAE_NPAVnc_SmartGameObj@@@Z PROC	; Crate_Thief::Pick, COMDAT
; _this$ = ecx

; 1444 : 	{

	push	esi

; 1445 : 		if (Picker->Player->Money.Get() > 0.0f)

	mov	esi, DWORD PTR _Picker$[esp]
	mov	ecx, DWORD PTR [esi+2400]
	add	ecx, 8
	call	?Get@nc_FloatDataSafeClass@@QAEMXZ	; nc_FloatDataSafeClass::Get
	fcomp	DWORD PTR __real@00000000
	fnstsw	ax
	test	ah, 65					; 00000041H
	jne	SHORT $LN1@Pick@12

; 1446 : 		{
; 1447 : 			Picker->Player->Increment_Money(-Picker->Player->Money.Get());

	mov	eax, DWORD PTR [esi+2400]
	mov	ecx, eax
	push	edi
	mov	edi, DWORD PTR [eax]
	add	ecx, 8
	call	?Get@nc_FloatDataSafeClass@@QAEMXZ	; nc_FloatDataSafeClass::Get
	fchs
	mov	edx, DWORD PTR [edi+16]
	push	ecx
	mov	ecx, DWORD PTR [esi+2400]
	fstp	DWORD PTR [esp]
	call	edx

; 1448 : 			PagePlayer(Picker->Player->PlayerId, "[Crate] You got the Thief Crate, you have lost all of your credits.");

	mov	eax, DWORD PTR [esi+2400]
	mov	ecx, DWORD PTR [eax+1884]
	push	OFFSET ??_C@_0EE@MFHPPPIG@?$FLCrate?$FN?5You?5got?5the?5Thief?5Crate?0@
	push	ecx
	call	?PagePlayer@@YAXHPBDZZ			; PagePlayer
	add	esp, 8
	pop	edi

; 1449 : 			return true;

	mov	al, 1
	pop	esi

; 1452 : 	};

	ret	4
$LN1@Pick@12:

; 1450 : 		}
; 1451 : 		return false;

	xor	al, al
	pop	esi

; 1452 : 	};

	ret	4
?Pick@Crate_Thief@@EAE_NPAVnc_SmartGameObj@@@Z ENDP	; Crate_Thief::Pick
_TEXT	ENDS
PUBLIC	??_7Crate_WeaponPack@@6B@			; Crate_WeaponPack::`vftable'
PUBLIC	??0Crate_WeaponPack@@QAE@XZ			; Crate_WeaponPack::Crate_WeaponPack
PUBLIC	??_R4Crate_WeaponPack@@6B@			; Crate_WeaponPack::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVCrate_WeaponPack@@@8			; Crate_WeaponPack `RTTI Type Descriptor'
PUBLIC	??_R3Crate_WeaponPack@@8			; Crate_WeaponPack::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2Crate_WeaponPack@@8			; Crate_WeaponPack::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@Crate_WeaponPack@@8		; Crate_WeaponPack::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?GetName@Crate_WeaponPack@@EAEPBDXZ		; Crate_WeaponPack::GetName
PUBLIC	?GetType@Crate_WeaponPack@@EAEHXZ		; Crate_WeaponPack::GetType
PUBLIC	?GetPercent@Crate_WeaponPack@@EAEIXZ		; Crate_WeaponPack::GetPercent
PUBLIC	?SkipDefaultOutput@Crate_WeaponPack@@EAE_NXZ	; Crate_WeaponPack::SkipDefaultOutput
PUBLIC	?Pick@Crate_WeaponPack@@EAE_NPAVnc_SmartGameObj@@@Z ; Crate_WeaponPack::Pick
;	COMDAT ??_R1A@?0A@EA@Crate_WeaponPack@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@Crate_WeaponPack@@8 DD FLAT:??_R0?AVCrate_WeaponPack@@@8 ; Crate_WeaponPack::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3Crate_WeaponPack@@8
rdata$r	ENDS
;	COMDAT ??_R2Crate_WeaponPack@@8
rdata$r	SEGMENT
??_R2Crate_WeaponPack@@8 DD FLAT:??_R1A@?0A@EA@Crate_WeaponPack@@8 ; Crate_WeaponPack::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzCrateBase@@8
rdata$r	ENDS
;	COMDAT ??_R3Crate_WeaponPack@@8
rdata$r	SEGMENT
??_R3Crate_WeaponPack@@8 DD 00H				; Crate_WeaponPack::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2Crate_WeaponPack@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVCrate_WeaponPack@@@8
_DATA	SEGMENT
??_R0?AVCrate_WeaponPack@@@8 DD FLAT:??_7type_info@@6B@	; Crate_WeaponPack `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVCrate_WeaponPack@@', 00H
_DATA	ENDS
;	COMDAT ??_R4Crate_WeaponPack@@6B@
rdata$r	SEGMENT
??_R4Crate_WeaponPack@@6B@ DD 00H			; Crate_WeaponPack::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVCrate_WeaponPack@@@8
	DD	FLAT:??_R3Crate_WeaponPack@@8
rdata$r	ENDS
;	COMDAT ??_7Crate_WeaponPack@@6B@
CONST	SEGMENT
??_7Crate_WeaponPack@@6B@ DD FLAT:??_R4Crate_WeaponPack@@6B@ ; Crate_WeaponPack::`vftable'
	DD	FLAT:?GetName@Crate_WeaponPack@@EAEPBDXZ
	DD	FLAT:?GetType@Crate_WeaponPack@@EAEHXZ
	DD	FLAT:?GetPercent@Crate_WeaponPack@@EAEIXZ
	DD	FLAT:?SkipDefaultOutput@Crate_WeaponPack@@EAE_NXZ
	DD	FLAT:?Pick@Crate_WeaponPack@@EAE_NPAVnc_SmartGameObj@@@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0Crate_WeaponPack@@QAE@XZ
_TEXT	SEGMENT
??0Crate_WeaponPack@@QAE@XZ PROC			; Crate_WeaponPack::Crate_WeaponPack, COMDAT
; _this$ = ecx
	xor	eax, eax
	push	esi
	mov	esi, ecx
	mov	DWORD PTR [esi+4], eax
	mov	BYTE PTR [esi+8], al
	mov	DWORD PTR [esi], OFFSET ??_7gzCrateBase@@6B@
	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	mov	eax, esi
	je	SHORT $LN8@Crate_Weap
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], esi
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN8@Crate_Weap:
	mov	DWORD PTR [esi], OFFSET ??_7Crate_WeaponPack@@6B@
	pop	esi
	ret	0
??0Crate_WeaponPack@@QAE@XZ ENDP			; Crate_WeaponPack::Crate_WeaponPack
_TEXT	ENDS
PUBLIC	?GetData@aStringBase@@QBEPAVaStringData@@XZ	; aStringBase::GetData
; Function compile flags: /Ogtpy
; File d:\source code\alib\include\astring.h
;	COMDAT ?GetData@aStringBase@@QBEPAVaStringData@@XZ
_TEXT	SEGMENT
?GetData@aStringBase@@QBEPAVaStringData@@XZ PROC	; aStringBase::GetData, COMDAT
; _this$ = ecx

; 55   : 	inline aStringData *GetData() const { return this->m_data; };

	mov	eax, DWORD PTR [ecx+4]
	ret	0
?GetData@aStringBase@@QBEPAVaStringData@@XZ ENDP	; aStringBase::GetData
_TEXT	ENDS
PUBLIC	??_C@_0M@IBDDAEND@Weapon?5Pack?$AA@		; `string'
;	COMDAT ??_C@_0M@IBDDAEND@Weapon?5Pack?$AA@
; File d:\source code\gzgm\gzcrate.cpp
CONST	SEGMENT
??_C@_0M@IBDDAEND@Weapon?5Pack?$AA@ DB 'Weapon Pack', 00H ; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?GetName@Crate_WeaponPack@@EAEPBDXZ
_TEXT	SEGMENT
?GetName@Crate_WeaponPack@@EAEPBDXZ PROC		; Crate_WeaponPack::GetName, COMDAT
; _this$ = ecx

; 1459 : 		return "Weapon Pack";

	mov	eax, OFFSET ??_C@_0M@IBDDAEND@Weapon?5Pack?$AA@

; 1460 : 	};

	ret	0
?GetName@Crate_WeaponPack@@EAEPBDXZ ENDP		; Crate_WeaponPack::GetName
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetType@Crate_WeaponPack@@EAEHXZ
_TEXT	SEGMENT
?GetType@Crate_WeaponPack@@EAEHXZ PROC			; Crate_WeaponPack::GetType, COMDAT
; _this$ = ecx

; 1463 : 		return CRATE_SOLDIER;

	mov	eax, 1

; 1464 : 	};

	ret	0
?GetType@Crate_WeaponPack@@EAEHXZ ENDP			; Crate_WeaponPack::GetType
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetPercent@Crate_WeaponPack@@EAEIXZ
_TEXT	SEGMENT
?GetPercent@Crate_WeaponPack@@EAEIXZ PROC		; Crate_WeaponPack::GetPercent, COMDAT
; _this$ = ecx

; 1467 : 		return this->m_percent->WeaponPack;

	mov	eax, DWORD PTR ?m_percent@gzCrateBase@@1PBUgzCratePercentStruct@@B ; gzCrateBase::m_percent
	mov	eax, DWORD PTR [eax+56]

; 1468 : 	};

	ret	0
?GetPercent@Crate_WeaponPack@@EAEIXZ ENDP		; Crate_WeaponPack::GetPercent
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?SkipDefaultOutput@Crate_WeaponPack@@EAE_NXZ
_TEXT	SEGMENT
?SkipDefaultOutput@Crate_WeaponPack@@EAE_NXZ PROC	; Crate_WeaponPack::SkipDefaultOutput, COMDAT
; _this$ = ecx

; 1471 : 		return false;

	xor	al, al

; 1472 : 	};

	ret	0
?SkipDefaultOutput@Crate_WeaponPack@@EAE_NXZ ENDP	; Crate_WeaponPack::SkipDefaultOutput
_TEXT	ENDS
PUBLIC	??_7?$aVector@PAVaStringData@@@@6B@		; aVector<aStringData *>::`vftable'
PUBLIC	??0?$aVector@PAVaStringData@@@@QAE@XZ		; aVector<aStringData *>::aVector<aStringData *>
PUBLIC	??_R4?$aVector@PAVaStringData@@@@6B@		; aVector<aStringData *>::`RTTI Complete Object Locator'
PUBLIC	??_R0?AV?$aVector@PAVaStringData@@@@@8		; aVector<aStringData *> `RTTI Type Descriptor'
PUBLIC	??_R3?$aVector@PAVaStringData@@@@8		; aVector<aStringData *>::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2?$aVector@PAVaStringData@@@@8		; aVector<aStringData *>::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@?$aVector@PAVaStringData@@@@8	; aVector<aStringData *>::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?Clear@?$aVector@PAVaStringData@@@@UAEXXZ	; aVector<aStringData *>::Clear
PUBLIC	?Resize@?$aVector@PAVaStringData@@@@UAE_NI@Z	; aVector<aStringData *>::Resize
PUBLIC	?Add@?$aVector@PAVaStringData@@@@UAEXABQAVaStringData@@@Z ; aVector<aStringData *>::Add
PUBLIC	?Insert@?$aVector@PAVaStringData@@@@UAEXIABQAVaStringData@@@Z ; aVector<aStringData *>::Insert
PUBLIC	?Delete@?$aVector@PAVaStringData@@@@UAEXI@Z	; aVector<aStringData *>::Delete
EXTRN	??_E?$aVector@PAVaStringData@@@@UAEPAXI@Z:PROC	; aVector<aStringData *>::`vector deleting destructor'
;	COMDAT ??_R1A@?0A@EA@?$aVector@PAVaStringData@@@@8
; File d:\source code\alib\include\avector.h
rdata$r	SEGMENT
??_R1A@?0A@EA@?$aVector@PAVaStringData@@@@8 DD FLAT:??_R0?AV?$aVector@PAVaStringData@@@@@8 ; aVector<aStringData *>::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	00H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3?$aVector@PAVaStringData@@@@8
rdata$r	ENDS
;	COMDAT ??_R2?$aVector@PAVaStringData@@@@8
rdata$r	SEGMENT
??_R2?$aVector@PAVaStringData@@@@8 DD FLAT:??_R1A@?0A@EA@?$aVector@PAVaStringData@@@@8 ; aVector<aStringData *>::`RTTI Base Class Array'
rdata$r	ENDS
;	COMDAT ??_R3?$aVector@PAVaStringData@@@@8
rdata$r	SEGMENT
??_R3?$aVector@PAVaStringData@@@@8 DD 00H		; aVector<aStringData *>::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	01H
	DD	FLAT:??_R2?$aVector@PAVaStringData@@@@8
rdata$r	ENDS
;	COMDAT ??_R0?AV?$aVector@PAVaStringData@@@@@8
_DATA	SEGMENT
??_R0?AV?$aVector@PAVaStringData@@@@@8 DD FLAT:??_7type_info@@6B@ ; aVector<aStringData *> `RTTI Type Descriptor'
	DD	00H
	DB	'.?AV?$aVector@PAVaStringData@@@@', 00H
_DATA	ENDS
;	COMDAT ??_R4?$aVector@PAVaStringData@@@@6B@
rdata$r	SEGMENT
??_R4?$aVector@PAVaStringData@@@@6B@ DD 00H		; aVector<aStringData *>::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AV?$aVector@PAVaStringData@@@@@8
	DD	FLAT:??_R3?$aVector@PAVaStringData@@@@8
rdata$r	ENDS
;	COMDAT ??_7?$aVector@PAVaStringData@@@@6B@
CONST	SEGMENT
??_7?$aVector@PAVaStringData@@@@6B@ DD FLAT:??_R4?$aVector@PAVaStringData@@@@6B@ ; aVector<aStringData *>::`vftable'
	DD	FLAT:??_E?$aVector@PAVaStringData@@@@UAEPAXI@Z
	DD	FLAT:?Clear@?$aVector@PAVaStringData@@@@UAEXXZ
	DD	FLAT:?Resize@?$aVector@PAVaStringData@@@@UAE_NI@Z
	DD	FLAT:?Add@?$aVector@PAVaStringData@@@@UAEXABQAVaStringData@@@Z
	DD	FLAT:?Insert@?$aVector@PAVaStringData@@@@UAEXIABQAVaStringData@@@Z
	DD	FLAT:?Delete@?$aVector@PAVaStringData@@@@UAEXI@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0?$aVector@PAVaStringData@@@@QAE@XZ
_TEXT	SEGMENT
??0?$aVector@PAVaStringData@@@@QAE@XZ PROC		; aVector<aStringData *>::aVector<aStringData *>, COMDAT
; _this$ = ecx

; 20   : 	aVector()

	mov	eax, ecx

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

	xor	ecx, ecx
	mov	DWORD PTR [eax], OFFSET ??_7?$aVector@PAVaStringData@@@@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@PAVaStringData@@@@QAE@XZ ENDP		; aVector<aStringData *>::aVector<aStringData *>
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Clear@?$aVector@PAVaStringData@@@@UAEXXZ
_TEXT	SEGMENT
?Clear@?$aVector@PAVaStringData@@@@UAEXXZ PROC		; aVector<aStringData *>::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@6

; 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@6:

; 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@PAVaStringData@@@@UAEXXZ ENDP		; aVector<aStringData *>::Clear
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Resize@?$aVector@PAVaStringData@@@@UAE_NI@Z
_TEXT	SEGMENT
_nSize$ = 8						; size = 4
?Resize@?$aVector@PAVaStringData@@@@UAE_NI@Z PROC	; aVector<aStringData *>::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@6
	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@6

; 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@6
	mov	ecx, edi
$LN8@Resize@6:

; 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@6:

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

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

; 61   : 				this->m_items = nSize;

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

; 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@6:
	pop	edi

; 65   : 		}
; 66   : 		return false;

	xor	al, al
	pop	esi

; 67   : 	}

	ret	4
?Resize@?$aVector@PAVaStringData@@@@UAE_NI@Z ENDP	; aVector<aStringData *>::Resize
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Add@?$aVector@PAVaStringData@@@@UAEXABQAVaStringData@@@Z
_TEXT	SEGMENT
_obj$ = 8						; size = 4
?Add@?$aVector@PAVaStringData@@@@UAEXABQAVaStringData@@@Z PROC ; aVector<aStringData *>::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@6

; 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@6:
	pop	esi

; 74   : 		}
; 75   : 	}

	ret	4
?Add@?$aVector@PAVaStringData@@@@UAEXABQAVaStringData@@@Z ENDP ; aVector<aStringData *>::Add
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Insert@?$aVector@PAVaStringData@@@@UAEXIABQAVaStringData@@@Z
_TEXT	SEGMENT
_index$ = 8						; size = 4
_obj$ = 12						; size = 4
?Insert@?$aVector@PAVaStringData@@@@UAEXIABQAVaStringData@@@Z PROC ; aVector<aStringData *>::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@6

; 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@6:

; 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@6

; 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@6:
	pop	edi
	pop	esi

; 85   : 		}
; 86   : 	}

	ret	8
?Insert@?$aVector@PAVaStringData@@@@UAEXIABQAVaStringData@@@Z ENDP ; aVector<aStringData *>::Insert
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Delete@?$aVector@PAVaStringData@@@@UAEXI@Z
_TEXT	SEGMENT
_index$ = 8						; size = 4
?Delete@?$aVector@PAVaStringData@@@@UAEXI@Z PROC	; aVector<aStringData *>::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@6

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

	add	DWORD PTR [esi+12], -1

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

	jne	SHORT $LN3@Delete@6

; 93   : 			this->Clear();

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

; 99   : 		}
; 100  : 	}

	ret	4
$LN3@Delete@6:

; 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@6:
	pop	esi

; 99   : 		}
; 100  : 	}

	ret	4
?Delete@?$aVector@PAVaStringData@@@@UAEXI@Z ENDP	; aVector<aStringData *>::Delete
_TEXT	ENDS
PUBLIC	?Clear@?$aStringArrayBase@VaString@@@@UAEXXZ	; aStringArrayBase<aString>::Clear
EXTRN	?DecRef@aStringData@@QAEXXZ:PROC		; aStringData::DecRef
; Function compile flags: /Ogtpy
; File d:\source code\alib\include\astring.h
;	COMDAT ?Clear@?$aStringArrayBase@VaString@@@@UAEXXZ
_TEXT	SEGMENT
?Clear@?$aStringArrayBase@VaString@@@@UAEXXZ PROC	; aStringArrayBase<aString>::Clear, COMDAT
; _this$ = ecx

; 80   : 	{

	push	ebx
	push	esi
	push	edi
	mov	esi, ecx

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

	xor	ebx, ebx
	xor	edi, edi
	cmp	DWORD PTR [esi+12], ebx
	jbe	SHORT $LN1@Clear@7
	npad	2
$LL3@Clear@7:

; 82   : 			this->m_vector[i]->DecRef();

	mov	eax, DWORD PTR [esi+4]
	mov	ecx, DWORD PTR [eax+edi*4]
	call	?DecRef@aStringData@@QAEXXZ		; aStringData::DecRef
	add	edi, 1
	cmp	edi, DWORD PTR [esi+12]
	jb	SHORT $LL3@Clear@7
$LN1@Clear@7:

; 83   : 		this->aVector<aStringData*>::Clear();

	cmp	DWORD PTR [esi+4], ebx
	je	SHORT $LN13@Clear@7
	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	ecx, DWORD PTR [esi+4]
	push	ecx
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
	mov	DWORD PTR [esi+4], ebx
$LN13@Clear@7:
	pop	edi
	mov	DWORD PTR [esi+12], ebx
	mov	DWORD PTR [esi+8], ebx
	pop	esi
	pop	ebx

; 84   : 	};

	ret	0
?Clear@?$aStringArrayBase@VaString@@@@UAEXXZ ENDP	; aStringArrayBase<aString>::Clear
_TEXT	ENDS
PUBLIC	?Add@?$aStringArrayBase@VaString@@@@QAEXVaString@@@Z ; aStringArrayBase<aString>::Add
EXTRN	?IncRef@aStringData@@QAEXXZ:PROC		; aStringData::IncRef
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$?Add@?$aStringArrayBase@VaString@@@@QAEXVaString@@@Z DD 0ffffffffH
	DD	FLAT:__unwindfunclet$?Add@?$aStringArrayBase@VaString@@@@QAEXVaString@@@Z$0
__ehfuncinfo$?Add@?$aStringArrayBase@VaString@@@@QAEXVaString@@@Z DD 019930522H
	DD	01H
	DD	FLAT:__unwindtable$?Add@?$aStringArrayBase@VaString@@@@QAEXVaString@@@Z
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	01H
; Function compile flags: /Ogtpy
xdata$x	ENDS
;	COMDAT ?Add@?$aStringArrayBase@VaString@@@@QAEXVaString@@@Z
_TEXT	SEGMENT
__$EHRec$ = -12						; size = 12
_content$ = 8						; size = 8
?Add@?$aStringArrayBase@VaString@@@@QAEXVaString@@@Z PROC ; aStringArrayBase<aString>::Add, COMDAT
; _this$ = ecx

; 92   : 	{

	mov	eax, DWORD PTR fs:0
	push	-1
	push	__ehhandler$?Add@?$aStringArrayBase@VaString@@@@QAEXVaString@@@Z
	push	eax
	mov	DWORD PTR fs:0, esp
	push	esi
	mov	esi, ecx

; 93   : 		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
	mov	DWORD PTR __$EHRec$[esp+28], 0
	call	edx
	test	al, al
	je	SHORT $LN1@Add@7

; 94   : 		{
; 95   : 			content.GetData()->IncRef();

	mov	ecx, DWORD PTR _content$[esp+16]
	call	?IncRef@aStringData@@QAEXXZ		; aStringData::IncRef

; 96   : 			this->m_vector[this->m_length - 1] = content.GetData();

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

; 97   : 			this->m_items++;

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

; 98   : 		}
; 99   : 	};

	lea	ecx, DWORD PTR _content$[esp+12]
	mov	DWORD PTR __$EHRec$[esp+24], -1
	call	??1aStringBase@@UAE@XZ			; aStringBase::~aStringBase
	mov	ecx, DWORD PTR __$EHRec$[esp+16]
	mov	DWORD PTR fs:0, ecx
	pop	esi
	add	esp, 12					; 0000000cH
	ret	8
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$?Add@?$aStringArrayBase@VaString@@@@QAEXVaString@@@Z$0:
	lea	ecx, DWORD PTR _content$[ebp-4]
	jmp	??1aString@@UAE@XZ
__ehhandler$?Add@?$aStringArrayBase@VaString@@@@QAEXVaString@@@Z:
	mov	eax, OFFSET __ehfuncinfo$?Add@?$aStringArrayBase@VaString@@@@QAEXVaString@@@Z
	jmp	___CxxFrameHandler3
text$x	ENDS
?Add@?$aStringArrayBase@VaString@@@@QAEXVaString@@@Z ENDP ; aStringArrayBase<aString>::Add
PUBLIC	??_7Crate_Donation@@6B@				; Crate_Donation::`vftable'
PUBLIC	??0Crate_Donation@@QAE@XZ			; Crate_Donation::Crate_Donation
PUBLIC	??_R4Crate_Donation@@6B@			; Crate_Donation::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVCrate_Donation@@@8			; Crate_Donation `RTTI Type Descriptor'
PUBLIC	??_R3Crate_Donation@@8				; Crate_Donation::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2Crate_Donation@@8				; Crate_Donation::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@Crate_Donation@@8			; Crate_Donation::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?GetName@Crate_Donation@@EAEPBDXZ		; Crate_Donation::GetName
PUBLIC	?GetType@Crate_Donation@@EAEHXZ			; Crate_Donation::GetType
PUBLIC	?GetPercent@Crate_Donation@@EAEIXZ		; Crate_Donation::GetPercent
PUBLIC	?SkipDefaultOutput@Crate_Donation@@EAE_NXZ	; Crate_Donation::SkipDefaultOutput
PUBLIC	?Pick@Crate_Donation@@EAE_NPAVnc_SmartGameObj@@@Z ; Crate_Donation::Pick
;	COMDAT ??_R1A@?0A@EA@Crate_Donation@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@Crate_Donation@@8 DD FLAT:??_R0?AVCrate_Donation@@@8 ; Crate_Donation::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3Crate_Donation@@8
rdata$r	ENDS
;	COMDAT ??_R2Crate_Donation@@8
rdata$r	SEGMENT
??_R2Crate_Donation@@8 DD FLAT:??_R1A@?0A@EA@Crate_Donation@@8 ; Crate_Donation::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzCrateBase@@8
rdata$r	ENDS
;	COMDAT ??_R3Crate_Donation@@8
rdata$r	SEGMENT
??_R3Crate_Donation@@8 DD 00H				; Crate_Donation::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2Crate_Donation@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVCrate_Donation@@@8
_DATA	SEGMENT
??_R0?AVCrate_Donation@@@8 DD FLAT:??_7type_info@@6B@	; Crate_Donation `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVCrate_Donation@@', 00H
_DATA	ENDS
;	COMDAT ??_R4Crate_Donation@@6B@
rdata$r	SEGMENT
??_R4Crate_Donation@@6B@ DD 00H				; Crate_Donation::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVCrate_Donation@@@8
	DD	FLAT:??_R3Crate_Donation@@8
rdata$r	ENDS
;	COMDAT ??_7Crate_Donation@@6B@
CONST	SEGMENT
??_7Crate_Donation@@6B@ DD FLAT:??_R4Crate_Donation@@6B@ ; Crate_Donation::`vftable'
	DD	FLAT:?GetName@Crate_Donation@@EAEPBDXZ
	DD	FLAT:?GetType@Crate_Donation@@EAEHXZ
	DD	FLAT:?GetPercent@Crate_Donation@@EAEIXZ
	DD	FLAT:?SkipDefaultOutput@Crate_Donation@@EAE_NXZ
	DD	FLAT:?Pick@Crate_Donation@@EAE_NPAVnc_SmartGameObj@@@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0Crate_Donation@@QAE@XZ
_TEXT	SEGMENT
??0Crate_Donation@@QAE@XZ PROC				; Crate_Donation::Crate_Donation, COMDAT
; _this$ = ecx
	xor	eax, eax
	push	esi
	mov	esi, ecx
	mov	DWORD PTR [esi+4], eax
	mov	BYTE PTR [esi+8], al
	mov	DWORD PTR [esi], OFFSET ??_7gzCrateBase@@6B@
	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	mov	eax, esi
	je	SHORT $LN8@Crate_Dona
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], esi
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN8@Crate_Dona:
	mov	DWORD PTR [esi], OFFSET ??_7Crate_Donation@@6B@
	pop	esi
	ret	0
??0Crate_Donation@@QAE@XZ ENDP				; Crate_Donation::Crate_Donation
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
_TEXT	ENDS
;	COMDAT ?GetName@Crate_Donation@@EAEPBDXZ
_TEXT	SEGMENT
?GetName@Crate_Donation@@EAEPBDXZ PROC			; Crate_Donation::GetName, COMDAT
; _this$ = ecx

; 1540 : 		return "Donation";

	mov	eax, OFFSET ??_C@_08HJOLNELI@Donation?$AA@

; 1541 : 	};

	ret	0
?GetName@Crate_Donation@@EAEPBDXZ ENDP			; Crate_Donation::GetName
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetType@Crate_Donation@@EAEHXZ
_TEXT	SEGMENT
?GetType@Crate_Donation@@EAEHXZ PROC			; Crate_Donation::GetType, COMDAT
; _this$ = ecx

; 1544 : 		return CRATE_SOLDIER;

	mov	eax, 1

; 1545 : 	};

	ret	0
?GetType@Crate_Donation@@EAEHXZ ENDP			; Crate_Donation::GetType
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetPercent@Crate_Donation@@EAEIXZ
_TEXT	SEGMENT
?GetPercent@Crate_Donation@@EAEIXZ PROC			; Crate_Donation::GetPercent, COMDAT
; _this$ = ecx

; 1548 : 		return this->m_percent->Donation;

	mov	eax, DWORD PTR ?m_percent@gzCrateBase@@1PBUgzCratePercentStruct@@B ; gzCrateBase::m_percent
	mov	eax, DWORD PTR [eax+60]

; 1549 : 	};

	ret	0
?GetPercent@Crate_Donation@@EAEIXZ ENDP			; Crate_Donation::GetPercent
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?SkipDefaultOutput@Crate_Donation@@EAE_NXZ
_TEXT	SEGMENT
?SkipDefaultOutput@Crate_Donation@@EAE_NXZ PROC		; Crate_Donation::SkipDefaultOutput, COMDAT
; _this$ = ecx

; 1552 : 		return false;

	xor	al, al

; 1553 : 	};

	ret	0
?SkipDefaultOutput@Crate_Donation@@EAE_NXZ ENDP		; Crate_Donation::SkipDefaultOutput
_TEXT	ENDS
PUBLIC	??_C@_0EE@MPPGBGML@?$FLCrate?$FN?3?5Enemies?5have?5received?5?$CF@ ; `string'
PUBLIC	??_C@_0FA@BILCHHKD@?$FLCrate?$FN?3?5You?8ve?5picked?5up?5a?5Dona@ ; `string'
PUBLIC	??_C@_0EM@IIIBIOLD@?$FLCrate?$FN?3?5You?8ve?5received?5?$CFd?5cred@ ; `string'
EXTRN	?Tally_Team_Size@nc_cPlayerManager@@SAHH@Z:PROC	; nc_cPlayerManager::Tally_Team_Size
;	COMDAT ??_C@_0EE@MPPGBGML@?$FLCrate?$FN?3?5Enemies?5have?5received?5?$CF@
; File d:\source code\alib\include\arandom.h
CONST	SEGMENT
??_C@_0EE@MPPGBGML@?$FLCrate?$FN?3?5Enemies?5have?5received?5?$CF@ DB '[C'
	DB	'rate]: Enemies have received %d credits from your Donation Cr'
	DB	'ate!', 00H					; `string'
CONST	ENDS
;	COMDAT ??_C@_0FA@BILCHHKD@?$FLCrate?$FN?3?5You?8ve?5picked?5up?5a?5Dona@
CONST	SEGMENT
??_C@_0FA@BILCHHKD@?$FLCrate?$FN?3?5You?8ve?5picked?5up?5a?5Dona@ DB '[Cr'
	DB	'ate]: You''ve picked up a Donation Crate. Your team have rece'
	DB	'ived %d credits.', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_0EM@IIIBIOLD@?$FLCrate?$FN?3?5You?8ve?5received?5?$CFd?5cred@
CONST	SEGMENT
??_C@_0EM@IIIBIOLD@?$FLCrate?$FN?3?5You?8ve?5received?5?$CFd?5cred@ DB '['
	DB	'Crate]: You''ve received %d credits from the Donation Crate! '
	DB	'Thanks to %ls.', 00H			; `string'
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
CONST	ENDS
;	COMDAT ?Pick@Crate_Donation@@EAE_NPAVnc_SmartGameObj@@@Z
_TEXT	SEGMENT
_amount$ = -4						; size = 4
_Picker$ = 8						; size = 4
?Pick@Crate_Donation@@EAE_NPAVnc_SmartGameObj@@@Z PROC	; Crate_Donation::Pick, COMDAT
; _this$ = ecx

; 1555 : 	{

	push	ecx
	push	ebp
	push	esi

; 1556 : 		int amount = gzRandom.Get_Int(1, 1001), team = gzRandom.Get_Int(0, 1);

	mov	esi, DWORD PTR ?gzRandom@@3VaRandom@@A
	mov	eax, esi
	add	esi, 1
	cmp	eax, 64					; 00000040H
	push	edi
	jle	SHORT $LN16@Pick@13
	mov	esi, 1
$LN16@Pick@13:
	mov	ecx, DWORD PTR ?gzRandom@@3VaRandom@@A+4
	imul	ecx, 22695475				; 015a4e33H
	add	ecx, esi
	mov	eax, ecx
	xor	edx, edx
	shr	eax, 16					; 00000010H
	mov	edi, 1001				; 000003e9H
	div	edi
	mov	ebp, edx
	mov	edx, esi
	add	ebp, 1
	add	esi, 1
	cmp	edx, 64					; 00000040H
	mov	DWORD PTR _amount$[esp+16], ebp
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A, esi
	jle	SHORT $LN23@Pick@13
	mov	esi, 1
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A, esi
$LN23@Pick@13:
	imul	ecx, 22695475				; 015a4e33H
	add	ecx, esi
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A+4, ecx
	shr	ecx, 16					; 00000010H
	and	ecx, 1
	push	ebx
	mov	ebx, ecx

; 1557 : 		if (nc_cPlayerManager::Tally_Team_Size(team) == 0)

	push	ebx
	call	?Tally_Team_Size@nc_cPlayerManager@@SAHH@Z ; nc_cPlayerManager::Tally_Team_Size
	mov	edi, DWORD PTR _Picker$[esp+20]
	add	esp, 4
	test	eax, eax
	jne	SHORT $LN9@Pick@13

; 1558 : 			team = Picker->Player->PlayerType.Get();

	mov	ecx, DWORD PTR [edi+2400]
	add	ecx, 1900				; 0000076cH
	call	?Get@nc_IntDataSafeClass@@QAEHXZ	; nc_IntDataSafeClass::Get
	mov	ebx, eax
$LN9@Pick@13:

; 1559 : 
; 1560 : 		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	esi, DWORD PTR [eax+4]
	test	esi, esi
	je	SHORT $LN6@Pick@13
$LL8@Pick@13:

; 1561 : 		{
; 1562 : 			if (pList->NodeData->IsActive)

	mov	eax, DWORD PTR [esi+4]
	cmp	BYTE PTR [eax+1981], 0
	je	SHORT $LN7@Pick@13

; 1563 : 			{
; 1564 : 				if (pList->NodeData->PlayerType.Get() == team)

	lea	ecx, DWORD PTR [eax+1900]
	call	?Get@nc_IntDataSafeClass@@QAEHXZ	; nc_IntDataSafeClass::Get
	cmp	eax, ebx
	jne	SHORT $LN7@Pick@13

; 1565 : 				{
; 1566 : 					pList->NodeData->Increment_Money((float)amount);

	mov	ecx, DWORD PTR [esi+4]
	fild	DWORD PTR _amount$[esp+20]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+16]
	push	ecx
	fstp	DWORD PTR [esp]
	call	eax

; 1567 : 					if (pList->NodeData != Picker->Player)

	mov	eax, DWORD PTR [esi+4]
	mov	ecx, DWORD PTR [edi+2400]
	cmp	eax, ecx
	je	SHORT $LN7@Pick@13

; 1568 : 					{
; 1569 : 						PagePlayer(pList->NodeData->PlayerId, "[Crate]: You've received %d credits from the Donation Crate! Thanks to %ls.",
; 1570 : 							amount,
; 1571 : 							Picker->Player->PlayerName.m_Buffer
; 1572 : 						);

	mov	ecx, DWORD PTR [ecx+1880]
	mov	edx, DWORD PTR [eax+1884]
	push	ecx
	push	ebp
	push	OFFSET ??_C@_0EM@IIIBIOLD@?$FLCrate?$FN?3?5You?8ve?5received?5?$CFd?5cred@
	push	edx
	call	?PagePlayer@@YAXHPBDZZ			; PagePlayer
	add	esp, 16					; 00000010H
$LN7@Pick@13:
	mov	esi, DWORD PTR [esi]
	test	esi, esi
	jne	SHORT $LL8@Pick@13
$LN6@Pick@13:

; 1573 : 					}
; 1574 : 				}
; 1575 : 			}
; 1576 : 		}
; 1577 : 		if (Picker->Player->PlayerType.Get() == team)

	mov	ecx, DWORD PTR [edi+2400]
	add	ecx, 1900				; 0000076cH
	call	?Get@nc_IntDataSafeClass@@QAEHXZ	; nc_IntDataSafeClass::Get
	cmp	eax, ebx
	pop	ebx

; 1578 : 			PagePlayer(Picker->Player->PlayerId, "[Crate]: You've picked up a Donation Crate. Your team have received %d credits.", amount);

	push	ebp
	jne	SHORT $LN2@Pick@13
	mov	eax, DWORD PTR [edi+2400]
	mov	ecx, DWORD PTR [eax+1884]
	push	OFFSET ??_C@_0FA@BILCHHKD@?$FLCrate?$FN?3?5You?8ve?5picked?5up?5a?5Dona@
	push	ecx

; 1579 : 		else
; 1580 : 			PagePlayer(Picker->Player->PlayerId, "[Crate]: Enemies have received %d credits from your Donation Crate!", amount);

	call	?PagePlayer@@YAXHPBDZZ			; PagePlayer
	add	esp, 12					; 0000000cH
	pop	edi
	pop	esi

; 1581 : 		return true;

	mov	al, 1
	pop	ebp

; 1582 : 	};

	pop	ecx
	ret	4
$LN2@Pick@13:

; 1579 : 		else
; 1580 : 			PagePlayer(Picker->Player->PlayerId, "[Crate]: Enemies have received %d credits from your Donation Crate!", amount);

	mov	edx, DWORD PTR [edi+2400]
	mov	eax, DWORD PTR [edx+1884]
	push	OFFSET ??_C@_0EE@MPPGBGML@?$FLCrate?$FN?3?5Enemies?5have?5received?5?$CF@
	push	eax
	call	?PagePlayer@@YAXHPBDZZ			; PagePlayer
	add	esp, 12					; 0000000cH
	pop	edi
	pop	esi

; 1581 : 		return true;

	mov	al, 1
	pop	ebp

; 1582 : 	};

	pop	ecx
	ret	4
?Pick@Crate_Donation@@EAE_NPAVnc_SmartGameObj@@@Z ENDP	; Crate_Donation::Pick
_TEXT	ENDS
PUBLIC	??_7Crate_MetalGear@@6B@			; Crate_MetalGear::`vftable'
PUBLIC	??0Crate_MetalGear@@QAE@XZ			; Crate_MetalGear::Crate_MetalGear
PUBLIC	??_R4Crate_MetalGear@@6B@			; Crate_MetalGear::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVCrate_MetalGear@@@8			; Crate_MetalGear `RTTI Type Descriptor'
PUBLIC	??_R3Crate_MetalGear@@8				; Crate_MetalGear::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2Crate_MetalGear@@8				; Crate_MetalGear::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@Crate_MetalGear@@8		; Crate_MetalGear::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?GetName@Crate_MetalGear@@EAEPBDXZ		; Crate_MetalGear::GetName
PUBLIC	?GetType@Crate_MetalGear@@EAEHXZ		; Crate_MetalGear::GetType
PUBLIC	?GetPercent@Crate_MetalGear@@EAEIXZ		; Crate_MetalGear::GetPercent
PUBLIC	?SkipDefaultOutput@Crate_MetalGear@@EAE_NXZ	; Crate_MetalGear::SkipDefaultOutput
PUBLIC	?Pick@Crate_MetalGear@@EAE_NPAVnc_SmartGameObj@@@Z ; Crate_MetalGear::Pick
;	COMDAT ??_R1A@?0A@EA@Crate_MetalGear@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@Crate_MetalGear@@8 DD FLAT:??_R0?AVCrate_MetalGear@@@8 ; Crate_MetalGear::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3Crate_MetalGear@@8
rdata$r	ENDS
;	COMDAT ??_R2Crate_MetalGear@@8
rdata$r	SEGMENT
??_R2Crate_MetalGear@@8 DD FLAT:??_R1A@?0A@EA@Crate_MetalGear@@8 ; Crate_MetalGear::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzCrateBase@@8
rdata$r	ENDS
;	COMDAT ??_R3Crate_MetalGear@@8
rdata$r	SEGMENT
??_R3Crate_MetalGear@@8 DD 00H				; Crate_MetalGear::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2Crate_MetalGear@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVCrate_MetalGear@@@8
_DATA	SEGMENT
??_R0?AVCrate_MetalGear@@@8 DD FLAT:??_7type_info@@6B@	; Crate_MetalGear `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVCrate_MetalGear@@', 00H
_DATA	ENDS
;	COMDAT ??_R4Crate_MetalGear@@6B@
rdata$r	SEGMENT
??_R4Crate_MetalGear@@6B@ DD 00H			; Crate_MetalGear::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVCrate_MetalGear@@@8
	DD	FLAT:??_R3Crate_MetalGear@@8
rdata$r	ENDS
;	COMDAT ??_7Crate_MetalGear@@6B@
CONST	SEGMENT
??_7Crate_MetalGear@@6B@ DD FLAT:??_R4Crate_MetalGear@@6B@ ; Crate_MetalGear::`vftable'
	DD	FLAT:?GetName@Crate_MetalGear@@EAEPBDXZ
	DD	FLAT:?GetType@Crate_MetalGear@@EAEHXZ
	DD	FLAT:?GetPercent@Crate_MetalGear@@EAEIXZ
	DD	FLAT:?SkipDefaultOutput@Crate_MetalGear@@EAE_NXZ
	DD	FLAT:?Pick@Crate_MetalGear@@EAE_NPAVnc_SmartGameObj@@@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0Crate_MetalGear@@QAE@XZ
_TEXT	SEGMENT
??0Crate_MetalGear@@QAE@XZ PROC				; Crate_MetalGear::Crate_MetalGear, COMDAT
; _this$ = ecx
	xor	eax, eax
	push	esi
	mov	esi, ecx
	mov	DWORD PTR [esi+4], eax
	mov	BYTE PTR [esi+8], al
	mov	DWORD PTR [esi], OFFSET ??_7gzCrateBase@@6B@
	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	mov	eax, esi
	je	SHORT $LN8@Crate_Meta
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], esi
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN8@Crate_Meta:
	mov	DWORD PTR [esi], OFFSET ??_7Crate_MetalGear@@6B@
	pop	esi
	ret	0
??0Crate_MetalGear@@QAE@XZ ENDP				; Crate_MetalGear::Crate_MetalGear
_TEXT	ENDS
PUBLIC	??_C@_0L@PGOJPNJP@Metal?5Gear?$AA@		; `string'
;	COMDAT ??_C@_0L@PGOJPNJP@Metal?5Gear?$AA@
CONST	SEGMENT
??_C@_0L@PGOJPNJP@Metal?5Gear?$AA@ DB 'Metal Gear', 00H	; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?GetName@Crate_MetalGear@@EAEPBDXZ
_TEXT	SEGMENT
?GetName@Crate_MetalGear@@EAEPBDXZ PROC			; Crate_MetalGear::GetName, COMDAT
; _this$ = ecx

; 1589 : 		return "Metal Gear";

	mov	eax, OFFSET ??_C@_0L@PGOJPNJP@Metal?5Gear?$AA@

; 1590 : 	};

	ret	0
?GetName@Crate_MetalGear@@EAEPBDXZ ENDP			; Crate_MetalGear::GetName
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetType@Crate_MetalGear@@EAEHXZ
_TEXT	SEGMENT
?GetType@Crate_MetalGear@@EAEHXZ PROC			; Crate_MetalGear::GetType, COMDAT
; _this$ = ecx

; 1593 : 		return CRATE_SOLDIER;

	mov	eax, 1

; 1594 : 	};

	ret	0
?GetType@Crate_MetalGear@@EAEHXZ ENDP			; Crate_MetalGear::GetType
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetPercent@Crate_MetalGear@@EAEIXZ
_TEXT	SEGMENT
?GetPercent@Crate_MetalGear@@EAEIXZ PROC		; Crate_MetalGear::GetPercent, COMDAT
; _this$ = ecx

; 1597 : 		return this->m_percent->MetalGear;

	mov	eax, DWORD PTR ?m_percent@gzCrateBase@@1PBUgzCratePercentStruct@@B ; gzCrateBase::m_percent
	mov	eax, DWORD PTR [eax+80]

; 1598 : 	};

	ret	0
?GetPercent@Crate_MetalGear@@EAEIXZ ENDP		; Crate_MetalGear::GetPercent
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?SkipDefaultOutput@Crate_MetalGear@@EAE_NXZ
_TEXT	SEGMENT
?SkipDefaultOutput@Crate_MetalGear@@EAE_NXZ PROC	; Crate_MetalGear::SkipDefaultOutput, COMDAT
; _this$ = ecx

; 1601 : 		return false;

	xor	al, al

; 1602 : 	};

	ret	0
?SkipDefaultOutput@Crate_MetalGear@@EAE_NXZ ENDP	; Crate_MetalGear::SkipDefaultOutput
_TEXT	ENDS
PUBLIC	??_C@_0GL@CBDEDELA@?$FLCrate?$FN?3?5You?8ve?5received?5a?5Metal@ ; `string'
;	COMDAT ??_C@_0GL@CBDEDELA@?$FLCrate?$FN?3?5You?8ve?5received?5a?5Metal@
; File d:\source code\alib\include\avector.h
CONST	SEGMENT
??_C@_0GL@CBDEDELA@?$FLCrate?$FN?3?5You?8ve?5received?5a?5Metal@ DB '[Cra'
	DB	'te]: You''ve received a Metal Gear from the Crate God. You ca'
	DB	'n''t be run over by vehicles until you die.', 00H ; `string'
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
CONST	ENDS
;	COMDAT ?Pick@Crate_MetalGear@@EAE_NPAVnc_SmartGameObj@@@Z
_TEXT	SEGMENT
_Picker$ = 8						; size = 4
?Pick@Crate_MetalGear@@EAE_NPAVnc_SmartGameObj@@@Z PROC	; Crate_MetalGear::Pick, COMDAT
; _this$ = ecx

; 1604 : 	{

	push	ebx

; 1605 : 		for (unsigned int i = 0; i < gzCrateMgr->m_data->MetalGear.Count(); i++)

	mov	ebx, DWORD PTR ?gzCrateMgr@@3PAVgzManagerCrateClass@@A ; gzCrateMgr
	mov	edx, DWORD PTR [ebx+60]
	mov	ecx, DWORD PTR [edx+28]
	push	esi
	mov	esi, DWORD PTR _Picker$[esp+4]
	xor	eax, eax
	test	ecx, ecx
	push	edi
	jbe	SHORT $LN2@Pick@14
	mov	edi, DWORD PTR [esi+12]
	mov	edx, DWORD PTR [edx+20]
	npad	1
$LL4@Pick@14:

; 1606 : 		{
; 1607 : 			if (gzCrateMgr->m_data->MetalGear[i] == Picker->NetworkID)

	cmp	DWORD PTR [edx], edi
	je	SHORT $LN12@Pick@14
	add	eax, 1
	add	edx, 4
	cmp	eax, ecx
	jb	SHORT $LL4@Pick@14
$LN2@Pick@14:

; 1609 : 		}
; 1610 : 
; 1611 : 		gzCrateMgr->m_data->MetalGear.Add(Picker->NetworkID);

	mov	eax, DWORD PTR [ebx+60]
	lea	ecx, DWORD PTR [eax+16]
	mov	eax, DWORD PTR [ecx]
	mov	eax, DWORD PTR [eax+12]
	lea	edx, DWORD PTR [esi+12]
	push	edx
	call	eax

; 1612 : 		PagePlayer(Picker->Player->PlayerId, "[Crate]: You've received a Metal Gear from the Crate God. You can't be run over by vehicles until you die.");

	mov	ecx, DWORD PTR [esi+2400]
	mov	edx, DWORD PTR [ecx+1884]
	push	OFFSET ??_C@_0GL@CBDEDELA@?$FLCrate?$FN?3?5You?8ve?5received?5a?5Metal@
	push	edx
	call	?PagePlayer@@YAXHPBDZZ			; PagePlayer
	add	esp, 8
	pop	edi
	pop	esi

; 1613 : 		return true;

	mov	al, 1
	pop	ebx

; 1614 : 	};

	ret	4
$LN12@Pick@14:
	pop	edi
	pop	esi

; 1608 : 				return false;

	xor	al, al
	pop	ebx

; 1614 : 	};

	ret	4
?Pick@Crate_MetalGear@@EAE_NPAVnc_SmartGameObj@@@Z ENDP	; Crate_MetalGear::Pick
_TEXT	ENDS
PUBLIC	??_7Crate_EnemyThief@@6B@			; Crate_EnemyThief::`vftable'
PUBLIC	??0Crate_EnemyThief@@QAE@XZ			; Crate_EnemyThief::Crate_EnemyThief
PUBLIC	??_R4Crate_EnemyThief@@6B@			; Crate_EnemyThief::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVCrate_EnemyThief@@@8			; Crate_EnemyThief `RTTI Type Descriptor'
PUBLIC	??_R3Crate_EnemyThief@@8			; Crate_EnemyThief::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2Crate_EnemyThief@@8			; Crate_EnemyThief::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@Crate_EnemyThief@@8		; Crate_EnemyThief::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?GetName@Crate_EnemyThief@@EAEPBDXZ		; Crate_EnemyThief::GetName
PUBLIC	?GetType@Crate_EnemyThief@@EAEHXZ		; Crate_EnemyThief::GetType
PUBLIC	?GetPercent@Crate_EnemyThief@@EAEIXZ		; Crate_EnemyThief::GetPercent
PUBLIC	?SkipDefaultOutput@Crate_EnemyThief@@EAE_NXZ	; Crate_EnemyThief::SkipDefaultOutput
PUBLIC	?Pick@Crate_EnemyThief@@EAE_NPAVnc_SmartGameObj@@@Z ; Crate_EnemyThief::Pick
;	COMDAT ??_R1A@?0A@EA@Crate_EnemyThief@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@Crate_EnemyThief@@8 DD FLAT:??_R0?AVCrate_EnemyThief@@@8 ; Crate_EnemyThief::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3Crate_EnemyThief@@8
rdata$r	ENDS
;	COMDAT ??_R2Crate_EnemyThief@@8
rdata$r	SEGMENT
??_R2Crate_EnemyThief@@8 DD FLAT:??_R1A@?0A@EA@Crate_EnemyThief@@8 ; Crate_EnemyThief::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzCrateBase@@8
rdata$r	ENDS
;	COMDAT ??_R3Crate_EnemyThief@@8
rdata$r	SEGMENT
??_R3Crate_EnemyThief@@8 DD 00H				; Crate_EnemyThief::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2Crate_EnemyThief@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVCrate_EnemyThief@@@8
_DATA	SEGMENT
??_R0?AVCrate_EnemyThief@@@8 DD FLAT:??_7type_info@@6B@	; Crate_EnemyThief `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVCrate_EnemyThief@@', 00H
_DATA	ENDS
;	COMDAT ??_R4Crate_EnemyThief@@6B@
rdata$r	SEGMENT
??_R4Crate_EnemyThief@@6B@ DD 00H			; Crate_EnemyThief::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVCrate_EnemyThief@@@8
	DD	FLAT:??_R3Crate_EnemyThief@@8
rdata$r	ENDS
;	COMDAT ??_7Crate_EnemyThief@@6B@
CONST	SEGMENT
??_7Crate_EnemyThief@@6B@ DD FLAT:??_R4Crate_EnemyThief@@6B@ ; Crate_EnemyThief::`vftable'
	DD	FLAT:?GetName@Crate_EnemyThief@@EAEPBDXZ
	DD	FLAT:?GetType@Crate_EnemyThief@@EAEHXZ
	DD	FLAT:?GetPercent@Crate_EnemyThief@@EAEIXZ
	DD	FLAT:?SkipDefaultOutput@Crate_EnemyThief@@EAE_NXZ
	DD	FLAT:?Pick@Crate_EnemyThief@@EAE_NPAVnc_SmartGameObj@@@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0Crate_EnemyThief@@QAE@XZ
_TEXT	SEGMENT
??0Crate_EnemyThief@@QAE@XZ PROC			; Crate_EnemyThief::Crate_EnemyThief, COMDAT
; _this$ = ecx
	xor	eax, eax
	push	esi
	mov	esi, ecx
	mov	DWORD PTR [esi+4], eax
	mov	BYTE PTR [esi+8], al
	mov	DWORD PTR [esi], OFFSET ??_7gzCrateBase@@6B@
	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	mov	eax, esi
	je	SHORT $LN8@Crate_Enem
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], esi
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN8@Crate_Enem:
	mov	DWORD PTR [esi], OFFSET ??_7Crate_EnemyThief@@6B@
	pop	esi
	ret	0
??0Crate_EnemyThief@@QAE@XZ ENDP			; Crate_EnemyThief::Crate_EnemyThief
_TEXT	ENDS
PUBLIC	??_C@_0M@MNMAFFKA@Enemy?5Thief?$AA@		; `string'
;	COMDAT ??_C@_0M@MNMAFFKA@Enemy?5Thief?$AA@
CONST	SEGMENT
??_C@_0M@MNMAFFKA@Enemy?5Thief?$AA@ DB 'Enemy Thief', 00H ; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?GetName@Crate_EnemyThief@@EAEPBDXZ
_TEXT	SEGMENT
?GetName@Crate_EnemyThief@@EAEPBDXZ PROC		; Crate_EnemyThief::GetName, COMDAT
; _this$ = ecx

; 1621 : 		return "Enemy Thief";

	mov	eax, OFFSET ??_C@_0M@MNMAFFKA@Enemy?5Thief?$AA@

; 1622 : 	};

	ret	0
?GetName@Crate_EnemyThief@@EAEPBDXZ ENDP		; Crate_EnemyThief::GetName
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetType@Crate_EnemyThief@@EAEHXZ
_TEXT	SEGMENT
?GetType@Crate_EnemyThief@@EAEHXZ PROC			; Crate_EnemyThief::GetType, COMDAT
; _this$ = ecx

; 1625 : 		return CRATE_SOLDIER;

	mov	eax, 1

; 1626 : 	};

	ret	0
?GetType@Crate_EnemyThief@@EAEHXZ ENDP			; Crate_EnemyThief::GetType
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetPercent@Crate_EnemyThief@@EAEIXZ
_TEXT	SEGMENT
?GetPercent@Crate_EnemyThief@@EAEIXZ PROC		; Crate_EnemyThief::GetPercent, COMDAT
; _this$ = ecx

; 1629 : 		return this->m_percent->EnemyThief;

	mov	eax, DWORD PTR ?m_percent@gzCrateBase@@1PBUgzCratePercentStruct@@B ; gzCrateBase::m_percent
	mov	eax, DWORD PTR [eax+76]

; 1630 : 	};

	ret	0
?GetPercent@Crate_EnemyThief@@EAEIXZ ENDP		; Crate_EnemyThief::GetPercent
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?SkipDefaultOutput@Crate_EnemyThief@@EAE_NXZ
_TEXT	SEGMENT
?SkipDefaultOutput@Crate_EnemyThief@@EAE_NXZ PROC	; Crate_EnemyThief::SkipDefaultOutput, COMDAT
; _this$ = ecx

; 1633 : 		return false;

	xor	al, al

; 1634 : 	};

	ret	0
?SkipDefaultOutput@Crate_EnemyThief@@EAE_NXZ ENDP	; Crate_EnemyThief::SkipDefaultOutput
_TEXT	ENDS
PUBLIC	??_C@_0GG@LGMCAGCA@?$FLCrate?$FN?3?5Congratulations?$CB?5The?5en@ ; `string'
PUBLIC	??_C@_0DE@IHGGANN@?$FLCrate?$FN?3?5You?5have?5received?5?$CF?40f?5@ ; `string'
;	COMDAT ??_C@_0GG@LGMCAGCA@?$FLCrate?$FN?3?5Congratulations?$CB?5The?5en@
; File d:\source code\fds lib\new\fds_def.h
CONST	SEGMENT
??_C@_0GG@LGMCAGCA@?$FLCrate?$FN?3?5Congratulations?$CB?5The?5en@ DB '[Cr'
	DB	'ate]: Congratulations! The enemy has stolen all of your money'
	DB	' and distributed it among themselves.', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_0DE@IHGGANN@?$FLCrate?$FN?3?5You?5have?5received?5?$CF?40f?5@
CONST	SEGMENT
??_C@_0DE@IHGGANN@?$FLCrate?$FN?3?5You?5have?5received?5?$CF?40f?5@ DB '['
	DB	'Crate]: You have received %.0f credit(s) from %ls.', 00H ; `string'
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
CONST	ENDS
;	COMDAT ?Pick@Crate_EnemyThief@@EAE_NPAVnc_SmartGameObj@@@Z
_TEXT	SEGMENT
tv231 = -4						; size = 4
$T72912 = -4						; size = 4
_Money$61113 = -4					; size = 4
_enemyTeamPlayer$ = -4					; size = 4
_Picker$ = 8						; size = 4
?Pick@Crate_EnemyThief@@EAE_NPAVnc_SmartGameObj@@@Z PROC ; Crate_EnemyThief::Pick, COMDAT
; _this$ = ecx

; 1636 : 	{

	push	ebp
	mov	ebp, esp
	and	esp, -64				; ffffffc0H
	sub	esp, 52					; 00000034H
	push	ebx
	push	esi
	push	edi

; 1637 : 		int enemyTeamPlayer = nc_cPlayerManager::Tally_Team_Size(Picker->Player->PlayerType.Get() ^ 1);

	mov	edi, DWORD PTR _Picker$[ebp]
	mov	ecx, DWORD PTR [edi+2400]
	add	ecx, 1900				; 0000076cH
	call	?Get@nc_IntDataSafeClass@@QAEHXZ	; nc_IntDataSafeClass::Get
	xor	eax, 1
	push	eax
	call	?Tally_Team_Size@nc_cPlayerManager@@SAHH@Z ; nc_cPlayerManager::Tally_Team_Size
	add	esp, 4

; 1638 : 		if (enemyTeamPlayer > 0 && Picker->Player->Money.Get() > (float)enemyTeamPlayer) {

	test	eax, eax
	mov	DWORD PTR _enemyTeamPlayer$[esp+64], eax
	jle	$LN5@Pick@15
	fild	DWORD PTR _enemyTeamPlayer$[esp+64]
	mov	ecx, DWORD PTR [edi+2400]
	add	ecx, 8
	fstp	DWORD PTR tv231[esp+64]
	call	?Get@nc_FloatDataSafeClass@@QAEMXZ	; nc_FloatDataSafeClass::Get
	fcomp	DWORD PTR tv231[esp+64]
	fnstsw	ax
	test	ah, 65					; 00000041H
	jne	$LN5@Pick@15

; 1639 : 			float Money = Picker->Player->Money.Get() / enemyTeamPlayer;

	mov	ecx, DWORD PTR [edi+2400]
	add	ecx, 8
	call	?Get@nc_FloatDataSafeClass@@QAEMXZ	; nc_FloatDataSafeClass::Get
	fdiv	DWORD PTR tv231[esp+64]

; 1640 : 			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	esi, DWORD PTR [eax+4]
	test	esi, esi
	fstp	DWORD PTR _Money$61113[esp+64]
	je	$LN2@Pick@15
$LN4@Pick@15:

; 1641 : 			{
; 1642 : 				if (pList->NodeData && pList->NodeData->IsActive && pList->NodeData->PlayerType.Get() != Picker->Player->PlayerType.Get())

	mov	eax, DWORD PTR [esi+4]
	test	eax, eax
	je	$LN3@Pick@15
	cmp	BYTE PTR [eax+1981], 0
	je	SHORT $LN3@Pick@15
	mov	ecx, eax
	add	ecx, 1900				; 0000076cH
	call	?Get@nc_IntDataSafeClass@@QAEHXZ	; nc_IntDataSafeClass::Get
	mov	ecx, DWORD PTR [edi+2400]
	add	ecx, 1900				; 0000076cH
	mov	ebx, eax
	call	?Get@nc_IntDataSafeClass@@QAEHXZ	; nc_IntDataSafeClass::Get
	cmp	ebx, eax
	je	SHORT $LN3@Pick@15

; 1643 : 				{
; 1644 : 					pList->NodeData->Increment_Money(Money);

	mov	ecx, DWORD PTR [esi+4]
	fld	DWORD PTR _Money$61113[esp+64]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+16]
	push	ecx
	fstp	DWORD PTR [esp]
	call	eax

; 1645 : 					pList->NodeData->Set_Object_Dirty_Bit(nc_DB_OCCASIONAL,true);

	mov	ecx, DWORD PTR [esi+4]
	mov	edx, DWORD PTR [ecx+160]
	mov	eax, DWORD PTR [edx+56]
	add	ecx, 160				; 000000a0H
	push	1
	push	3
	call	eax

; 1646 : 					PagePlayer(pList->NodeData->PlayerId, "[Crate]: You have received %.0f credit(s) from %ls.",
; 1647 : 						Money,
; 1648 : 						Picker->Player->PlayerName.m_Buffer
; 1649 : 					);

	fld	DWORD PTR _Money$61113[esp+64]
	mov	ecx, DWORD PTR [edi+2400]
	mov	edx, DWORD PTR [ecx+1880]
	mov	eax, DWORD PTR [esi+4]
	mov	ecx, DWORD PTR [eax+1884]
	push	edx
	sub	esp, 8
	fstp	QWORD PTR [esp]
	push	OFFSET ??_C@_0DE@IHGGANN@?$FLCrate?$FN?3?5You?5have?5received?5?$CF?40f?5@
	push	ecx
	call	?PagePlayer@@YAXHPBDZZ			; PagePlayer
	add	esp, 20					; 00000014H
$LN3@Pick@15:
	mov	esi, DWORD PTR [esi]
	test	esi, esi
	jne	$LN4@Pick@15
$LN2@Pick@15:

; 1650 : 				}
; 1651 : 			}
; 1652 : 			Picker->Player->Money = 0.0f;

	mov	eax, DWORD PTR [edi+2400]
	fldz
	lea	edx, DWORD PTR $T72912[esp+64]
	fstp	DWORD PTR $T72912[esp+64]
	push	edx
	add	eax, 8
	push	eax
	call	?Set@nc_FloatDataSafeClass@@QAG_NAAM@Z	; nc_FloatDataSafeClass::Set

; 1653 : 			Picker->Player->Set_Object_Dirty_Bit(nc_DB_OCCASIONAL,true);

	mov	eax, DWORD PTR [edi+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

; 1654 : 			PagePlayer(Picker->Player->PlayerId, "[Crate]: Congratulations! The enemy has stolen all of your money and distributed it among themselves.");

	mov	ecx, DWORD PTR [edi+2400]
	mov	edx, DWORD PTR [ecx+1884]
	push	OFFSET ??_C@_0GG@LGMCAGCA@?$FLCrate?$FN?3?5Congratulations?$CB?5The?5en@
	push	edx
	call	?PagePlayer@@YAXHPBDZZ			; PagePlayer
	add	esp, 8

; 1655 : 			return true;

	mov	al, 1

; 1656 : 		}
; 1657 : 		return false;
; 1658 : 	};

	pop	edi
	pop	esi
	pop	ebx
	mov	esp, ebp
	pop	ebp
	ret	4
$LN5@Pick@15:
	pop	edi
	pop	esi
	xor	al, al
	pop	ebx
	mov	esp, ebp
	pop	ebp
	ret	4
?Pick@Crate_EnemyThief@@EAE_NPAVnc_SmartGameObj@@@Z ENDP ; Crate_EnemyThief::Pick
_TEXT	ENDS
PUBLIC	??_7Crate_Medic@@6B@				; Crate_Medic::`vftable'
PUBLIC	??0Crate_Medic@@QAE@XZ				; Crate_Medic::Crate_Medic
PUBLIC	??_R4Crate_Medic@@6B@				; Crate_Medic::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVCrate_Medic@@@8				; Crate_Medic `RTTI Type Descriptor'
PUBLIC	??_R3Crate_Medic@@8				; Crate_Medic::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2Crate_Medic@@8				; Crate_Medic::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@Crate_Medic@@8			; Crate_Medic::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?GetName@Crate_Medic@@EAEPBDXZ			; Crate_Medic::GetName
PUBLIC	?GetType@Crate_Medic@@EAEHXZ			; Crate_Medic::GetType
PUBLIC	?GetPercent@Crate_Medic@@EAEIXZ			; Crate_Medic::GetPercent
PUBLIC	?Pick@Crate_Medic@@EAE_NPAVnc_SmartGameObj@@@Z	; Crate_Medic::Pick
;	COMDAT ??_R1A@?0A@EA@Crate_Medic@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@Crate_Medic@@8 DD FLAT:??_R0?AVCrate_Medic@@@8 ; Crate_Medic::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3Crate_Medic@@8
rdata$r	ENDS
;	COMDAT ??_R2Crate_Medic@@8
rdata$r	SEGMENT
??_R2Crate_Medic@@8 DD FLAT:??_R1A@?0A@EA@Crate_Medic@@8 ; Crate_Medic::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzCrateBase@@8
rdata$r	ENDS
;	COMDAT ??_R3Crate_Medic@@8
rdata$r	SEGMENT
??_R3Crate_Medic@@8 DD 00H				; Crate_Medic::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2Crate_Medic@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVCrate_Medic@@@8
_DATA	SEGMENT
??_R0?AVCrate_Medic@@@8 DD FLAT:??_7type_info@@6B@	; Crate_Medic `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVCrate_Medic@@', 00H
_DATA	ENDS
;	COMDAT ??_R4Crate_Medic@@6B@
rdata$r	SEGMENT
??_R4Crate_Medic@@6B@ DD 00H				; Crate_Medic::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVCrate_Medic@@@8
	DD	FLAT:??_R3Crate_Medic@@8
rdata$r	ENDS
;	COMDAT ??_7Crate_Medic@@6B@
CONST	SEGMENT
??_7Crate_Medic@@6B@ DD FLAT:??_R4Crate_Medic@@6B@	; Crate_Medic::`vftable'
	DD	FLAT:?GetName@Crate_Medic@@EAEPBDXZ
	DD	FLAT:?GetType@Crate_Medic@@EAEHXZ
	DD	FLAT:?GetPercent@Crate_Medic@@EAEIXZ
	DD	FLAT:?SkipDefaultOutput@gzCrateBase@@UAE_NXZ
	DD	FLAT:?Pick@Crate_Medic@@EAE_NPAVnc_SmartGameObj@@@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0Crate_Medic@@QAE@XZ
_TEXT	SEGMENT
??0Crate_Medic@@QAE@XZ PROC				; Crate_Medic::Crate_Medic, COMDAT
; _this$ = ecx
	xor	eax, eax
	push	esi
	mov	esi, ecx
	mov	DWORD PTR [esi+4], eax
	mov	BYTE PTR [esi+8], al
	mov	DWORD PTR [esi], OFFSET ??_7gzCrateBase@@6B@
	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	mov	eax, esi
	je	SHORT $LN8@Crate_Medi
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], esi
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN8@Crate_Medi:
	mov	DWORD PTR [esi], OFFSET ??_7Crate_Medic@@6B@
	pop	esi
	ret	0
??0Crate_Medic@@QAE@XZ ENDP				; Crate_Medic::Crate_Medic
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetName@Crate_Medic@@EAEPBDXZ
_TEXT	SEGMENT
?GetName@Crate_Medic@@EAEPBDXZ PROC			; Crate_Medic::GetName, COMDAT
; _this$ = ecx

; 1665 : 		return "Medic";

	mov	eax, OFFSET ??_C@_05BBLLBHEM@Medic?$AA@

; 1666 : 	};

	ret	0
?GetName@Crate_Medic@@EAEPBDXZ ENDP			; Crate_Medic::GetName
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetPercent@Crate_Medic@@EAEIXZ
_TEXT	SEGMENT
?GetPercent@Crate_Medic@@EAEIXZ PROC			; Crate_Medic::GetPercent, COMDAT
; _this$ = ecx

; 1669 : 		return this->m_percent->Medic;

	mov	eax, DWORD PTR ?m_percent@gzCrateBase@@1PBUgzCratePercentStruct@@B ; gzCrateBase::m_percent
	mov	eax, DWORD PTR [eax+72]

; 1670 : 	};

	ret	0
?GetPercent@Crate_Medic@@EAEIXZ ENDP			; Crate_Medic::GetPercent
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetType@Crate_Medic@@EAEHXZ
_TEXT	SEGMENT
?GetType@Crate_Medic@@EAEHXZ PROC			; Crate_Medic::GetType, COMDAT
; _this$ = ecx

; 1673 : 		return CRATE_SOLDIER;

	mov	eax, 1

; 1674 : 	};

	ret	0
?GetType@Crate_Medic@@EAEHXZ ENDP			; Crate_Medic::GetType
_TEXT	ENDS
PUBLIC	??_C@_0IJ@KPNBPOMA@?$FLCrate?$FN?3?5You?8ve?5received?5a?5Medic@ ; `string'
PUBLIC	__real@4049000000000000
EXTRN	?StarGameObjList@nc_GameObjManager@@2PAV?$nc_SList@Vnc_SoldierGameObj@@@@A:DWORD ; nc_GameObjManager::StarGameObjList
;	COMDAT ??_C@_0IJ@KPNBPOMA@?$FLCrate?$FN?3?5You?8ve?5received?5a?5Medic@
; File c:\program files\microsoft visual studio 8\vc\include\math.h
CONST	SEGMENT
??_C@_0IJ@KPNBPOMA@?$FLCrate?$FN?3?5You?8ve?5received?5a?5Medic@ DB '[Cra'
	DB	'te]: You''ve received a Medic Crate. You and any soldiers wit'
	DB	'hin the distance of %.0f ren-feet from you will be given a he'
	DB	'alth of %d.', 00H				; `string'
CONST	ENDS
;	COMDAT __real@4049000000000000
CONST	SEGMENT
__real@4049000000000000 DQ 04049000000000000r	; 50
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
CONST	ENDS
;	COMDAT ?Pick@Crate_Medic@@EAE_NPAVnc_SmartGameObj@@@Z
_TEXT	SEGMENT
_objPos$61211 = -24					; size = 12
_SoldierPos$ = -12					; size = 12
_Heal$ = 8						; size = 4
_Picker$ = 8						; size = 4
?Pick@Crate_Medic@@EAE_NPAVnc_SmartGameObj@@@Z PROC	; Crate_Medic::Pick, COMDAT
; _this$ = ecx

; 1676 : 	{

	sub	esp, 24					; 00000018H
	push	ebx

; 1677 : 		nc_Vector3 SoldierPos;
; 1678 : 		Picker->Get_Position(&SoldierPos);

	mov	ebx, DWORD PTR _Picker$[esp+24]
	mov	eax, DWORD PTR [ebx]
	mov	edx, DWORD PTR [eax+56]
	push	esi
	push	edi
	lea	ecx, DWORD PTR _SoldierPos$[esp+36]
	push	ecx
	mov	ecx, ebx
	call	edx

; 1679 : 		int Heal = -gzRandom.Get_Int(10, 100);

	mov	ecx, DWORD PTR ?gzRandom@@3VaRandom@@A
	mov	eax, ecx
	add	ecx, 1
	cmp	eax, 64					; 00000040H
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A, ecx
	jle	SHORT $LN12@Pick@16
	mov	ecx, 1
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A, ecx
$LN12@Pick@16:
	mov	eax, DWORD PTR ?gzRandom@@3VaRandom@@A+4
	imul	eax, 22695475				; 015a4e33H
	add	eax, ecx
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A+4, eax
	xor	edx, edx
	shr	eax, 16					; 00000010H
	mov	ecx, 91					; 0000005bH
	div	ecx
	mov	edi, -10				; fffffff6H
	sub	edi, edx

; 1680 : 		float maxDistance = 50.0f;
; 1681 : 		for (nc_GenericSLNode<nc_SoldierGameObj> *objList = nc_GameObjManager::StarGameObjList->HeadNode; objList != NULL; objList = objList->NodeNext)

	mov	edx, DWORD PTR ?StarGameObjList@nc_GameObjManager@@2PAV?$nc_SList@Vnc_SoldierGameObj@@@@A ; nc_GameObjManager::StarGameObjList
	mov	esi, DWORD PTR [edx+4]
	test	esi, esi
	mov	DWORD PTR _Heal$[esp+32], edi
	je	SHORT $LN3@Pick@16
	npad	1
$LL5@Pick@16:

; 1682 : 		{
; 1683 : 			if (objList->NodeData)

	cmp	DWORD PTR [esi+4], 0
	je	SHORT $LN4@Pick@16

; 1684 : 			{
; 1685 : 				nc_Vector3 objPos;
; 1686 : 				objList->NodeData->As_PhysicalGameObj()->Get_Position(&objPos);

	mov	ecx, DWORD PTR [esi+4]
	mov	eax, DWORD PTR [ecx]
	mov	edx, DWORD PTR [eax+36]
	call	edx
	mov	edx, DWORD PTR [eax]
	mov	edx, DWORD PTR [edx+56]
	lea	ecx, DWORD PTR _objPos$61211[esp+36]
	push	ecx
	mov	ecx, eax
	call	edx

; 1687 : 				if ((abs(objPos.X - SoldierPos.X) + abs(objPos.Y - SoldierPos.Y)) <= maxDistance)

	fld	DWORD PTR _objPos$61211[esp+36]
	fsub	DWORD PTR _SoldierPos$[esp+36]
	fabs
	fld	DWORD PTR _objPos$61211[esp+40]
	fsub	DWORD PTR _SoldierPos$[esp+40]
	fabs
	faddp	ST(1), ST(0)
	fcomp	DWORD PTR __real@42480000
	fnstsw	ax
	test	ah, 65					; 00000041H
	jp	SHORT $LN4@Pick@16

; 1688 : 					gzCommands->Apply_Damage(objList->NodeData, (float)Heal, "Repair", NULL);

	fild	DWORD PTR _Heal$[esp+32]
	mov	eax, DWORD PTR [esi+4]
	push	0
	push	OFFSET ??_C@_06KOKHNNIE@Repair?$AA@
	push	ecx
	mov	ecx, DWORD PTR ?gzCommands@@3PAUnc_ScriptCommands@@A ; gzCommands
	fstp	DWORD PTR [esp]
	mov	edx, DWORD PTR [ecx+616]
	push	eax
	call	edx
	add	esp, 16					; 00000010H
$LN4@Pick@16:
	mov	esi, DWORD PTR [esi]
	test	esi, esi
	jne	SHORT $LL5@Pick@16
$LN3@Pick@16:

; 1689 : 			}
; 1690 : 		}
; 1691 : 		PagePlayer(Picker->Player->PlayerId, "[Crate]: You've received a Medic Crate. You and any soldiers within the distance of %.0f ren-feet from you will be given a health of %d.", maxDistance, Heal * -1);

	fld	QWORD PTR __real@4049000000000000
	mov	eax, DWORD PTR [ebx+2400]
	mov	ecx, DWORD PTR [eax+1884]
	neg	edi
	push	edi
	sub	esp, 8
	fstp	QWORD PTR [esp]
	push	OFFSET ??_C@_0IJ@KPNBPOMA@?$FLCrate?$FN?3?5You?8ve?5received?5a?5Medic@
	push	ecx
	call	?PagePlayer@@YAXHPBDZZ			; PagePlayer
	add	esp, 20					; 00000014H
	pop	edi
	pop	esi

; 1692 : 		//gzLogger("_CRATE", "%ls picked up a Medic Crate.", Picker->Player->PlayerName.m_Buffer);
; 1693 : 		return true;

	mov	al, 1
	pop	ebx

; 1694 : 	};

	add	esp, 24					; 00000018H
	ret	4
?Pick@Crate_Medic@@EAE_NPAVnc_SmartGameObj@@@Z ENDP	; Crate_Medic::Pick
_TEXT	ENDS
PUBLIC	??_7Crate_ExplosiveSuit@@6B@			; Crate_ExplosiveSuit::`vftable'
PUBLIC	??0Crate_ExplosiveSuit@@QAE@XZ			; Crate_ExplosiveSuit::Crate_ExplosiveSuit
PUBLIC	??_R4Crate_ExplosiveSuit@@6B@			; Crate_ExplosiveSuit::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVCrate_ExplosiveSuit@@@8			; Crate_ExplosiveSuit `RTTI Type Descriptor'
PUBLIC	??_R3Crate_ExplosiveSuit@@8			; Crate_ExplosiveSuit::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2Crate_ExplosiveSuit@@8			; Crate_ExplosiveSuit::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@Crate_ExplosiveSuit@@8		; Crate_ExplosiveSuit::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?GetName@Crate_ExplosiveSuit@@EAEPBDXZ		; Crate_ExplosiveSuit::GetName
PUBLIC	?GetType@Crate_ExplosiveSuit@@EAEHXZ		; Crate_ExplosiveSuit::GetType
PUBLIC	?GetPercent@Crate_ExplosiveSuit@@EAEIXZ		; Crate_ExplosiveSuit::GetPercent
PUBLIC	?SkipDefaultOutput@Crate_ExplosiveSuit@@EAE_NXZ	; Crate_ExplosiveSuit::SkipDefaultOutput
PUBLIC	?Pick@Crate_ExplosiveSuit@@EAE_NPAVnc_SmartGameObj@@@Z ; Crate_ExplosiveSuit::Pick
;	COMDAT ??_R1A@?0A@EA@Crate_ExplosiveSuit@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@Crate_ExplosiveSuit@@8 DD FLAT:??_R0?AVCrate_ExplosiveSuit@@@8 ; Crate_ExplosiveSuit::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3Crate_ExplosiveSuit@@8
rdata$r	ENDS
;	COMDAT ??_R2Crate_ExplosiveSuit@@8
rdata$r	SEGMENT
??_R2Crate_ExplosiveSuit@@8 DD FLAT:??_R1A@?0A@EA@Crate_ExplosiveSuit@@8 ; Crate_ExplosiveSuit::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzCrateBase@@8
rdata$r	ENDS
;	COMDAT ??_R3Crate_ExplosiveSuit@@8
rdata$r	SEGMENT
??_R3Crate_ExplosiveSuit@@8 DD 00H			; Crate_ExplosiveSuit::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2Crate_ExplosiveSuit@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVCrate_ExplosiveSuit@@@8
_DATA	SEGMENT
??_R0?AVCrate_ExplosiveSuit@@@8 DD FLAT:??_7type_info@@6B@ ; Crate_ExplosiveSuit `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVCrate_ExplosiveSuit@@', 00H
_DATA	ENDS
;	COMDAT ??_R4Crate_ExplosiveSuit@@6B@
rdata$r	SEGMENT
??_R4Crate_ExplosiveSuit@@6B@ DD 00H			; Crate_ExplosiveSuit::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVCrate_ExplosiveSuit@@@8
	DD	FLAT:??_R3Crate_ExplosiveSuit@@8
rdata$r	ENDS
;	COMDAT ??_7Crate_ExplosiveSuit@@6B@
CONST	SEGMENT
??_7Crate_ExplosiveSuit@@6B@ DD FLAT:??_R4Crate_ExplosiveSuit@@6B@ ; Crate_ExplosiveSuit::`vftable'
	DD	FLAT:?GetName@Crate_ExplosiveSuit@@EAEPBDXZ
	DD	FLAT:?GetType@Crate_ExplosiveSuit@@EAEHXZ
	DD	FLAT:?GetPercent@Crate_ExplosiveSuit@@EAEIXZ
	DD	FLAT:?SkipDefaultOutput@Crate_ExplosiveSuit@@EAE_NXZ
	DD	FLAT:?Pick@Crate_ExplosiveSuit@@EAE_NPAVnc_SmartGameObj@@@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0Crate_ExplosiveSuit@@QAE@XZ
_TEXT	SEGMENT
??0Crate_ExplosiveSuit@@QAE@XZ PROC			; Crate_ExplosiveSuit::Crate_ExplosiveSuit, COMDAT
; _this$ = ecx
	xor	eax, eax
	push	esi
	mov	esi, ecx
	mov	DWORD PTR [esi+4], eax
	mov	BYTE PTR [esi+8], al
	mov	DWORD PTR [esi], OFFSET ??_7gzCrateBase@@6B@
	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	mov	eax, esi
	je	SHORT $LN8@Crate_Expl
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], esi
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN8@Crate_Expl:
	mov	DWORD PTR [esi], OFFSET ??_7Crate_ExplosiveSuit@@6B@
	pop	esi
	ret	0
??0Crate_ExplosiveSuit@@QAE@XZ ENDP			; Crate_ExplosiveSuit::Crate_ExplosiveSuit
_TEXT	ENDS
PUBLIC	??_C@_0P@CKECPFIB@Explosive?5Suit?$AA@		; `string'
;	COMDAT ??_C@_0P@CKECPFIB@Explosive?5Suit?$AA@
CONST	SEGMENT
??_C@_0P@CKECPFIB@Explosive?5Suit?$AA@ DB 'Explosive Suit', 00H ; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?GetName@Crate_ExplosiveSuit@@EAEPBDXZ
_TEXT	SEGMENT
?GetName@Crate_ExplosiveSuit@@EAEPBDXZ PROC		; Crate_ExplosiveSuit::GetName, COMDAT
; _this$ = ecx

; 1701 : 		return "Explosive Suit";

	mov	eax, OFFSET ??_C@_0P@CKECPFIB@Explosive?5Suit?$AA@

; 1702 : 	};

	ret	0
?GetName@Crate_ExplosiveSuit@@EAEPBDXZ ENDP		; Crate_ExplosiveSuit::GetName
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetType@Crate_ExplosiveSuit@@EAEHXZ
_TEXT	SEGMENT
?GetType@Crate_ExplosiveSuit@@EAEHXZ PROC		; Crate_ExplosiveSuit::GetType, COMDAT
; _this$ = ecx

; 1705 : 		return CRATE_SOLDIER;

	mov	eax, 1

; 1706 : 	};

	ret	0
?GetType@Crate_ExplosiveSuit@@EAEHXZ ENDP		; Crate_ExplosiveSuit::GetType
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetPercent@Crate_ExplosiveSuit@@EAEIXZ
_TEXT	SEGMENT
?GetPercent@Crate_ExplosiveSuit@@EAEIXZ PROC		; Crate_ExplosiveSuit::GetPercent, COMDAT
; _this$ = ecx

; 1709 : 		return this->m_percent->ExplosiveSuit;

	mov	eax, DWORD PTR ?m_percent@gzCrateBase@@1PBUgzCratePercentStruct@@B ; gzCrateBase::m_percent
	mov	eax, DWORD PTR [eax+68]

; 1710 : 	};

	ret	0
?GetPercent@Crate_ExplosiveSuit@@EAEIXZ ENDP		; Crate_ExplosiveSuit::GetPercent
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?SkipDefaultOutput@Crate_ExplosiveSuit@@EAE_NXZ
_TEXT	SEGMENT
?SkipDefaultOutput@Crate_ExplosiveSuit@@EAE_NXZ PROC	; Crate_ExplosiveSuit::SkipDefaultOutput, COMDAT
; _this$ = ecx

; 1713 : 		return false;

	xor	al, al

; 1714 : 	};

	ret	0
?SkipDefaultOutput@Crate_ExplosiveSuit@@EAE_NXZ ENDP	; Crate_ExplosiveSuit::SkipDefaultOutput
_TEXT	ENDS
PUBLIC	??_C@_0IP@FBMDKIJD@?$FLCrate?$FN?3?5Explosives?5have?5been?5at@ ; `string'
;	COMDAT ??_C@_0IP@FBMDKIJD@?$FLCrate?$FN?3?5Explosives?5have?5been?5at@
; File d:\source code\alib\include\avector.h
CONST	SEGMENT
??_C@_0IP@FBMDKIJD@?$FLCrate?$FN?3?5Explosives?5have?5been?5at@ DB '[Crat'
	DB	'e]: Explosives have been attached to your soldier. Once you d'
	DB	'ie, they will explode and make a BIG BOOM with random damage!'
	DB	'!!!! Good luck!', 00H			; `string'
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
CONST	ENDS
;	COMDAT ?Pick@Crate_ExplosiveSuit@@EAE_NPAVnc_SmartGameObj@@@Z
_TEXT	SEGMENT
_Picker$ = 8						; size = 4
?Pick@Crate_ExplosiveSuit@@EAE_NPAVnc_SmartGameObj@@@Z PROC ; Crate_ExplosiveSuit::Pick, COMDAT
; _this$ = ecx

; 1716 : 	{

	push	ebx

; 1717 : 		for (unsigned int i = 0; i < gzCrateMgr->m_data->ExplosiveSuit.Count(); i++)

	mov	ebx, DWORD PTR ?gzCrateMgr@@3PAVgzManagerCrateClass@@A ; gzCrateMgr
	mov	edx, DWORD PTR [ebx+60]
	mov	ecx, DWORD PTR [edx+44]
	push	esi
	mov	esi, DWORD PTR _Picker$[esp+4]
	xor	eax, eax
	test	ecx, ecx
	push	edi
	jbe	SHORT $LN2@Pick@17
	mov	edi, DWORD PTR [esi+12]
	mov	edx, DWORD PTR [edx+36]
	npad	1
$LL4@Pick@17:

; 1718 : 		{
; 1719 : 			if (gzCrateMgr->m_data->ExplosiveSuit[i] == Picker->NetworkID)

	cmp	DWORD PTR [edx], edi
	je	SHORT $LN12@Pick@17
	add	eax, 1
	add	edx, 4
	cmp	eax, ecx
	jb	SHORT $LL4@Pick@17
$LN2@Pick@17:

; 1721 : 		}
; 1722 : 		gzCrateMgr->m_data->ExplosiveSuit.Add(Picker->NetworkID);

	mov	eax, DWORD PTR [ebx+60]
	lea	ecx, DWORD PTR [eax+32]
	mov	eax, DWORD PTR [ecx]
	mov	eax, DWORD PTR [eax+12]
	lea	edx, DWORD PTR [esi+12]
	push	edx
	call	eax

; 1723 : 		PagePlayer(Picker->Player->PlayerId, "[Crate]: Explosives have been attached to your soldier. Once you die, they will explode and make a BIG BOOM with random damage!!!!! Good luck!");

	mov	ecx, DWORD PTR [esi+2400]
	mov	edx, DWORD PTR [ecx+1884]
	push	OFFSET ??_C@_0IP@FBMDKIJD@?$FLCrate?$FN?3?5Explosives?5have?5been?5at@
	push	edx
	call	?PagePlayer@@YAXHPBDZZ			; PagePlayer
	add	esp, 8
	pop	edi
	pop	esi

; 1724 : 		return true;

	mov	al, 1
	pop	ebx

; 1725 : 	};

	ret	4
$LN12@Pick@17:
	pop	edi
	pop	esi

; 1720 : 				return false;

	xor	al, al
	pop	ebx

; 1725 : 	};

	ret	4
?Pick@Crate_ExplosiveSuit@@EAE_NPAVnc_SmartGameObj@@@Z ENDP ; Crate_ExplosiveSuit::Pick
_TEXT	ENDS
PUBLIC	??_7Crate_ChemSuit@@6B@				; Crate_ChemSuit::`vftable'
PUBLIC	??0Crate_ChemSuit@@QAE@XZ			; Crate_ChemSuit::Crate_ChemSuit
PUBLIC	??_R4Crate_ChemSuit@@6B@			; Crate_ChemSuit::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVCrate_ChemSuit@@@8			; Crate_ChemSuit `RTTI Type Descriptor'
PUBLIC	??_R3Crate_ChemSuit@@8				; Crate_ChemSuit::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2Crate_ChemSuit@@8				; Crate_ChemSuit::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@Crate_ChemSuit@@8			; Crate_ChemSuit::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?GetName@Crate_ChemSuit@@EAEPBDXZ		; Crate_ChemSuit::GetName
PUBLIC	?GetType@Crate_ChemSuit@@EAEHXZ			; Crate_ChemSuit::GetType
PUBLIC	?GetPercent@Crate_ChemSuit@@EAEIXZ		; Crate_ChemSuit::GetPercent
PUBLIC	?SkipDefaultOutput@Crate_ChemSuit@@EAE_NXZ	; Crate_ChemSuit::SkipDefaultOutput
PUBLIC	?Pick@Crate_ChemSuit@@EAE_NPAVnc_SmartGameObj@@@Z ; Crate_ChemSuit::Pick
;	COMDAT ??_R1A@?0A@EA@Crate_ChemSuit@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@Crate_ChemSuit@@8 DD FLAT:??_R0?AVCrate_ChemSuit@@@8 ; Crate_ChemSuit::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3Crate_ChemSuit@@8
rdata$r	ENDS
;	COMDAT ??_R2Crate_ChemSuit@@8
rdata$r	SEGMENT
??_R2Crate_ChemSuit@@8 DD FLAT:??_R1A@?0A@EA@Crate_ChemSuit@@8 ; Crate_ChemSuit::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzCrateBase@@8
rdata$r	ENDS
;	COMDAT ??_R3Crate_ChemSuit@@8
rdata$r	SEGMENT
??_R3Crate_ChemSuit@@8 DD 00H				; Crate_ChemSuit::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2Crate_ChemSuit@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVCrate_ChemSuit@@@8
_DATA	SEGMENT
??_R0?AVCrate_ChemSuit@@@8 DD FLAT:??_7type_info@@6B@	; Crate_ChemSuit `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVCrate_ChemSuit@@', 00H
_DATA	ENDS
;	COMDAT ??_R4Crate_ChemSuit@@6B@
rdata$r	SEGMENT
??_R4Crate_ChemSuit@@6B@ DD 00H				; Crate_ChemSuit::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVCrate_ChemSuit@@@8
	DD	FLAT:??_R3Crate_ChemSuit@@8
rdata$r	ENDS
;	COMDAT ??_7Crate_ChemSuit@@6B@
CONST	SEGMENT
??_7Crate_ChemSuit@@6B@ DD FLAT:??_R4Crate_ChemSuit@@6B@ ; Crate_ChemSuit::`vftable'
	DD	FLAT:?GetName@Crate_ChemSuit@@EAEPBDXZ
	DD	FLAT:?GetType@Crate_ChemSuit@@EAEHXZ
	DD	FLAT:?GetPercent@Crate_ChemSuit@@EAEIXZ
	DD	FLAT:?SkipDefaultOutput@Crate_ChemSuit@@EAE_NXZ
	DD	FLAT:?Pick@Crate_ChemSuit@@EAE_NPAVnc_SmartGameObj@@@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0Crate_ChemSuit@@QAE@XZ
_TEXT	SEGMENT
??0Crate_ChemSuit@@QAE@XZ PROC				; Crate_ChemSuit::Crate_ChemSuit, COMDAT
; _this$ = ecx
	xor	eax, eax
	push	esi
	mov	esi, ecx
	mov	DWORD PTR [esi+4], eax
	mov	BYTE PTR [esi+8], al
	mov	DWORD PTR [esi], OFFSET ??_7gzCrateBase@@6B@
	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	mov	eax, esi
	je	SHORT $LN8@Crate_Chem
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], esi
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN8@Crate_Chem:
	mov	DWORD PTR [esi], OFFSET ??_7Crate_ChemSuit@@6B@
	pop	esi
	ret	0
??0Crate_ChemSuit@@QAE@XZ ENDP				; Crate_ChemSuit::Crate_ChemSuit
_TEXT	ENDS
PUBLIC	??_C@_0O@FMDNCFLH@Chemical?5Suit?$AA@		; `string'
;	COMDAT ??_C@_0O@FMDNCFLH@Chemical?5Suit?$AA@
CONST	SEGMENT
??_C@_0O@FMDNCFLH@Chemical?5Suit?$AA@ DB 'Chemical Suit', 00H ; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?GetName@Crate_ChemSuit@@EAEPBDXZ
_TEXT	SEGMENT
?GetName@Crate_ChemSuit@@EAEPBDXZ PROC			; Crate_ChemSuit::GetName, COMDAT
; _this$ = ecx

; 1732 : 		return "Chemical Suit";

	mov	eax, OFFSET ??_C@_0O@FMDNCFLH@Chemical?5Suit?$AA@

; 1733 : 	};

	ret	0
?GetName@Crate_ChemSuit@@EAEPBDXZ ENDP			; Crate_ChemSuit::GetName
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetType@Crate_ChemSuit@@EAEHXZ
_TEXT	SEGMENT
?GetType@Crate_ChemSuit@@EAEHXZ PROC			; Crate_ChemSuit::GetType, COMDAT
; _this$ = ecx

; 1736 : 		return CRATE_SOLDIER;

	mov	eax, 1

; 1737 : 	};

	ret	0
?GetType@Crate_ChemSuit@@EAEHXZ ENDP			; Crate_ChemSuit::GetType
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetPercent@Crate_ChemSuit@@EAEIXZ
_TEXT	SEGMENT
?GetPercent@Crate_ChemSuit@@EAEIXZ PROC			; Crate_ChemSuit::GetPercent, COMDAT
; _this$ = ecx

; 1740 : 		return this->m_percent->ChemSuit;

	mov	eax, DWORD PTR ?m_percent@gzCrateBase@@1PBUgzCratePercentStruct@@B ; gzCrateBase::m_percent
	mov	eax, DWORD PTR [eax+64]

; 1741 : 	};

	ret	0
?GetPercent@Crate_ChemSuit@@EAEIXZ ENDP			; Crate_ChemSuit::GetPercent
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?SkipDefaultOutput@Crate_ChemSuit@@EAE_NXZ
_TEXT	SEGMENT
?SkipDefaultOutput@Crate_ChemSuit@@EAE_NXZ PROC		; Crate_ChemSuit::SkipDefaultOutput, COMDAT
; _this$ = ecx

; 1744 : 		return false;

	xor	al, al

; 1745 : 	};

	ret	0
?SkipDefaultOutput@Crate_ChemSuit@@EAE_NXZ ENDP		; Crate_ChemSuit::SkipDefaultOutput
_TEXT	ENDS
PUBLIC	??_C@_0LI@HKAJKCMM@?$FLCrate?$FN?3?5You?8ve?5received?5a?5Chemi@ ; `string'
;	COMDAT ??_C@_0LI@HKAJKCMM@?$FLCrate?$FN?3?5You?8ve?5received?5a?5Chemi@
; File d:\source code\alib\include\avector.h
CONST	SEGMENT
??_C@_0LI@HKAJKCMM@?$FLCrate?$FN?3?5You?8ve?5received?5a?5Chemi@ DB '[Cra'
	DB	'te]: You''ve received a Chemical Suit from the Crate and will'
	DB	' be protected by it while walking on Tiberium, until you die.'
	DB	' (You will be revealed with SBH while walking on Tiberium)', 00H ; `string'
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
CONST	ENDS
;	COMDAT ?Pick@Crate_ChemSuit@@EAE_NPAVnc_SmartGameObj@@@Z
_TEXT	SEGMENT
_Picker$ = 8						; size = 4
?Pick@Crate_ChemSuit@@EAE_NPAVnc_SmartGameObj@@@Z PROC	; Crate_ChemSuit::Pick, COMDAT
; _this$ = ecx

; 1747 : 	{

	push	ebx

; 1748 : 		for (unsigned int i = 0; i < gzCrateMgr->m_data->ChemSuit.Count(); i++)

	mov	ebx, DWORD PTR ?gzCrateMgr@@3PAVgzManagerCrateClass@@A ; gzCrateMgr
	mov	edx, DWORD PTR [ebx+60]
	mov	ecx, DWORD PTR [edx+60]
	push	esi
	mov	esi, DWORD PTR _Picker$[esp+4]
	xor	eax, eax
	test	ecx, ecx
	push	edi
	jbe	SHORT $LN2@Pick@18
	mov	edi, DWORD PTR [esi+12]
	mov	edx, DWORD PTR [edx+52]
	npad	1
$LL4@Pick@18:

; 1749 : 		{
; 1750 : 			if (gzCrateMgr->m_data->ChemSuit[i] == Picker->NetworkID)

	cmp	DWORD PTR [edx], edi
	je	SHORT $LN12@Pick@18
	add	eax, 1
	add	edx, 4
	cmp	eax, ecx
	jb	SHORT $LL4@Pick@18
$LN2@Pick@18:

; 1752 : 		}
; 1753 : 		gzCrateMgr->m_data->ChemSuit.Add(Picker->NetworkID);

	mov	eax, DWORD PTR [ebx+60]
	lea	ecx, DWORD PTR [eax+48]
	mov	eax, DWORD PTR [ecx]
	mov	eax, DWORD PTR [eax+12]
	lea	edx, DWORD PTR [esi+12]
	push	edx
	call	eax

; 1754 : 		PagePlayer(Picker->Player->PlayerId, "[Crate]: You've received a Chemical Suit from the Crate and will be protected by it while walking on Tiberium, until you die. (You will be revealed with SBH while walking on Tiberium)");

	mov	ecx, DWORD PTR [esi+2400]
	mov	edx, DWORD PTR [ecx+1884]
	push	OFFSET ??_C@_0LI@HKAJKCMM@?$FLCrate?$FN?3?5You?8ve?5received?5a?5Chemi@
	push	edx
	call	?PagePlayer@@YAXHPBDZZ			; PagePlayer
	add	esp, 8
	pop	edi
	pop	esi

; 1755 : 		return true;

	mov	al, 1
	pop	ebx

; 1756 : 	};

	ret	4
$LN12@Pick@18:
	pop	edi
	pop	esi

; 1751 : 				return false;

	xor	al, al
	pop	ebx

; 1756 : 	};

	ret	4
?Pick@Crate_ChemSuit@@EAE_NPAVnc_SmartGameObj@@@Z ENDP	; Crate_ChemSuit::Pick
_TEXT	ENDS
PUBLIC	??_7Crate_Hover@@6B@				; Crate_Hover::`vftable'
PUBLIC	??0Crate_Hover@@QAE@XZ				; Crate_Hover::Crate_Hover
PUBLIC	??_R4Crate_Hover@@6B@				; Crate_Hover::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVCrate_Hover@@@8				; Crate_Hover `RTTI Type Descriptor'
PUBLIC	??_R3Crate_Hover@@8				; Crate_Hover::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2Crate_Hover@@8				; Crate_Hover::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@Crate_Hover@@8			; Crate_Hover::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?GetName@Crate_Hover@@EAEPBDXZ			; Crate_Hover::GetName
PUBLIC	?GetType@Crate_Hover@@EAEHXZ			; Crate_Hover::GetType
PUBLIC	?GetPercent@Crate_Hover@@EAEIXZ			; Crate_Hover::GetPercent
PUBLIC	?SkipDefaultOutput@Crate_Hover@@EAE_NXZ		; Crate_Hover::SkipDefaultOutput
PUBLIC	?Pick@Crate_Hover@@EAE_NPAVnc_SmartGameObj@@@Z	; Crate_Hover::Pick
;	COMDAT ??_R1A@?0A@EA@Crate_Hover@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@Crate_Hover@@8 DD FLAT:??_R0?AVCrate_Hover@@@8 ; Crate_Hover::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3Crate_Hover@@8
rdata$r	ENDS
;	COMDAT ??_R2Crate_Hover@@8
rdata$r	SEGMENT
??_R2Crate_Hover@@8 DD FLAT:??_R1A@?0A@EA@Crate_Hover@@8 ; Crate_Hover::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzCrateBase@@8
rdata$r	ENDS
;	COMDAT ??_R3Crate_Hover@@8
rdata$r	SEGMENT
??_R3Crate_Hover@@8 DD 00H				; Crate_Hover::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2Crate_Hover@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVCrate_Hover@@@8
_DATA	SEGMENT
??_R0?AVCrate_Hover@@@8 DD FLAT:??_7type_info@@6B@	; Crate_Hover `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVCrate_Hover@@', 00H
_DATA	ENDS
;	COMDAT ??_R4Crate_Hover@@6B@
rdata$r	SEGMENT
??_R4Crate_Hover@@6B@ DD 00H				; Crate_Hover::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVCrate_Hover@@@8
	DD	FLAT:??_R3Crate_Hover@@8
rdata$r	ENDS
;	COMDAT ??_7Crate_Hover@@6B@
CONST	SEGMENT
??_7Crate_Hover@@6B@ DD FLAT:??_R4Crate_Hover@@6B@	; Crate_Hover::`vftable'
	DD	FLAT:?GetName@Crate_Hover@@EAEPBDXZ
	DD	FLAT:?GetType@Crate_Hover@@EAEHXZ
	DD	FLAT:?GetPercent@Crate_Hover@@EAEIXZ
	DD	FLAT:?SkipDefaultOutput@Crate_Hover@@EAE_NXZ
	DD	FLAT:?Pick@Crate_Hover@@EAE_NPAVnc_SmartGameObj@@@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0Crate_Hover@@QAE@XZ
_TEXT	SEGMENT
??0Crate_Hover@@QAE@XZ PROC				; Crate_Hover::Crate_Hover, COMDAT
; _this$ = ecx
	xor	eax, eax
	push	esi
	mov	esi, ecx
	mov	DWORD PTR [esi+4], eax
	mov	BYTE PTR [esi+8], al
	mov	DWORD PTR [esi], OFFSET ??_7gzCrateBase@@6B@
	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	mov	eax, esi
	je	SHORT $LN8@Crate_Hove
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], esi
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN8@Crate_Hove:
	mov	DWORD PTR [esi], OFFSET ??_7Crate_Hover@@6B@
	pop	esi
	ret	0
??0Crate_Hover@@QAE@XZ ENDP				; Crate_Hover::Crate_Hover
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetName@Crate_Hover@@EAEPBDXZ
_TEXT	SEGMENT
?GetName@Crate_Hover@@EAEPBDXZ PROC			; Crate_Hover::GetName, COMDAT
; _this$ = ecx

; 1763 : 		return "Hover";

	mov	eax, OFFSET ??_C@_05KLBFNLDO@Hover?$AA@

; 1764 : 	};

	ret	0
?GetName@Crate_Hover@@EAEPBDXZ ENDP			; Crate_Hover::GetName
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetType@Crate_Hover@@EAEHXZ
_TEXT	SEGMENT
?GetType@Crate_Hover@@EAEHXZ PROC			; Crate_Hover::GetType, COMDAT
; _this$ = ecx

; 1767 : 		return CRATE_SOLDIER;

	mov	eax, 1

; 1768 : 	};

	ret	0
?GetType@Crate_Hover@@EAEHXZ ENDP			; Crate_Hover::GetType
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetPercent@Crate_Hover@@EAEIXZ
_TEXT	SEGMENT
?GetPercent@Crate_Hover@@EAEIXZ PROC			; Crate_Hover::GetPercent, COMDAT
; _this$ = ecx

; 1771 : 		return this->m_percent->Hover;

	mov	eax, DWORD PTR ?m_percent@gzCrateBase@@1PBUgzCratePercentStruct@@B ; gzCrateBase::m_percent
	mov	eax, DWORD PTR [eax+88]

; 1772 : 	};

	ret	0
?GetPercent@Crate_Hover@@EAEIXZ ENDP			; Crate_Hover::GetPercent
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?SkipDefaultOutput@Crate_Hover@@EAE_NXZ
_TEXT	SEGMENT
?SkipDefaultOutput@Crate_Hover@@EAE_NXZ PROC		; Crate_Hover::SkipDefaultOutput, COMDAT
; _this$ = ecx

; 1775 : 		return false;

	xor	al, al

; 1776 : 	};

	ret	0
?SkipDefaultOutput@Crate_Hover@@EAE_NXZ ENDP		; Crate_Hover::SkipDefaultOutput
_TEXT	ENDS
PUBLIC	??_C@_0FN@IJDJONKK@You?8ve?5picked?5up?5a?5Hover?5Crate?4?5@ ; `string'
;	COMDAT ??_C@_0FN@IJDJONKK@You?8ve?5picked?5up?5a?5Hover?5Crate?4?5@
; File d:\source code\alib\include\avector.h
CONST	SEGMENT
??_C@_0FN@IJDJONKK@You?8ve?5picked?5up?5a?5Hover?5Crate?4?5@ DB 'You''ve '
	DB	'picked up a Hover Crate. You''re now invisible to enemy proxi'
	DB	'mity mines until you die.', 00H		; `string'
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
CONST	ENDS
;	COMDAT ?Pick@Crate_Hover@@EAE_NPAVnc_SmartGameObj@@@Z
_TEXT	SEGMENT
_Picker$ = 8						; size = 4
?Pick@Crate_Hover@@EAE_NPAVnc_SmartGameObj@@@Z PROC	; Crate_Hover::Pick, COMDAT
; _this$ = ecx

; 1778 : 	{

	push	ebx

; 1779 : 		for (unsigned int i = 0; i < gzCrateMgr->m_data->Hover.Count(); i++)

	mov	ebx, DWORD PTR ?gzCrateMgr@@3PAVgzManagerCrateClass@@A ; gzCrateMgr
	mov	edx, DWORD PTR [ebx+60]
	mov	ecx, DWORD PTR [edx+76]
	push	esi
	mov	esi, DWORD PTR _Picker$[esp+4]
	xor	eax, eax
	test	ecx, ecx
	push	edi
	jbe	SHORT $LN2@Pick@19
	mov	edi, DWORD PTR [esi+12]
	mov	edx, DWORD PTR [edx+68]
	npad	1
$LL4@Pick@19:

; 1780 : 		{
; 1781 : 			if (gzCrateMgr->m_data->Hover[i] == Picker->NetworkID)

	cmp	DWORD PTR [edx], edi
	je	SHORT $LN12@Pick@19
	add	eax, 1
	add	edx, 4
	cmp	eax, ecx
	jb	SHORT $LL4@Pick@19
$LN2@Pick@19:

; 1783 : 		}
; 1784 : 		gzCrateMgr->m_data->Hover.Add(Picker->NetworkID);

	mov	eax, DWORD PTR [ebx+60]
	lea	ecx, DWORD PTR [eax+64]
	mov	eax, DWORD PTR [ecx]
	mov	eax, DWORD PTR [eax+12]
	lea	edx, DWORD PTR [esi+12]
	push	edx
	call	eax

; 1785 : 		PagePlayer(Picker->Player->PlayerId, "You've picked up a Hover Crate. You're now invisible to enemy proximity mines until you die.");

	mov	ecx, DWORD PTR [esi+2400]
	mov	edx, DWORD PTR [ecx+1884]
	push	OFFSET ??_C@_0FN@IJDJONKK@You?8ve?5picked?5up?5a?5Hover?5Crate?4?5@
	push	edx
	call	?PagePlayer@@YAXHPBDZZ			; PagePlayer
	add	esp, 8
	pop	edi
	pop	esi

; 1786 : 		return true;

	mov	al, 1
	pop	ebx

; 1787 : 	};

	ret	4
$LN12@Pick@19:
	pop	edi
	pop	esi

; 1782 : 				return false;

	xor	al, al
	pop	ebx

; 1787 : 	};

	ret	4
?Pick@Crate_Hover@@EAE_NPAVnc_SmartGameObj@@@Z ENDP	; Crate_Hover::Pick
_TEXT	ENDS
PUBLIC	??_7Crate_StealthMine@@6B@			; Crate_StealthMine::`vftable'
PUBLIC	??0Crate_StealthMine@@QAE@XZ			; Crate_StealthMine::Crate_StealthMine
PUBLIC	??_R4Crate_StealthMine@@6B@			; Crate_StealthMine::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVCrate_StealthMine@@@8			; Crate_StealthMine `RTTI Type Descriptor'
PUBLIC	??_R3Crate_StealthMine@@8			; Crate_StealthMine::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2Crate_StealthMine@@8			; Crate_StealthMine::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@Crate_StealthMine@@8		; Crate_StealthMine::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?GetName@Crate_StealthMine@@EAEPBDXZ		; Crate_StealthMine::GetName
PUBLIC	?GetType@Crate_StealthMine@@EAEHXZ		; Crate_StealthMine::GetType
PUBLIC	?GetPercent@Crate_StealthMine@@EAEIXZ		; Crate_StealthMine::GetPercent
PUBLIC	?Pick@Crate_StealthMine@@EAE_NPAVnc_SmartGameObj@@@Z ; Crate_StealthMine::Pick
;	COMDAT ??_R1A@?0A@EA@Crate_StealthMine@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@Crate_StealthMine@@8 DD FLAT:??_R0?AVCrate_StealthMine@@@8 ; Crate_StealthMine::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3Crate_StealthMine@@8
rdata$r	ENDS
;	COMDAT ??_R2Crate_StealthMine@@8
rdata$r	SEGMENT
??_R2Crate_StealthMine@@8 DD FLAT:??_R1A@?0A@EA@Crate_StealthMine@@8 ; Crate_StealthMine::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzCrateBase@@8
rdata$r	ENDS
;	COMDAT ??_R3Crate_StealthMine@@8
rdata$r	SEGMENT
??_R3Crate_StealthMine@@8 DD 00H			; Crate_StealthMine::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2Crate_StealthMine@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVCrate_StealthMine@@@8
_DATA	SEGMENT
??_R0?AVCrate_StealthMine@@@8 DD FLAT:??_7type_info@@6B@ ; Crate_StealthMine `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVCrate_StealthMine@@', 00H
_DATA	ENDS
;	COMDAT ??_R4Crate_StealthMine@@6B@
rdata$r	SEGMENT
??_R4Crate_StealthMine@@6B@ DD 00H			; Crate_StealthMine::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVCrate_StealthMine@@@8
	DD	FLAT:??_R3Crate_StealthMine@@8
rdata$r	ENDS
;	COMDAT ??_7Crate_StealthMine@@6B@
CONST	SEGMENT
??_7Crate_StealthMine@@6B@ DD FLAT:??_R4Crate_StealthMine@@6B@ ; Crate_StealthMine::`vftable'
	DD	FLAT:?GetName@Crate_StealthMine@@EAEPBDXZ
	DD	FLAT:?GetType@Crate_StealthMine@@EAEHXZ
	DD	FLAT:?GetPercent@Crate_StealthMine@@EAEIXZ
	DD	FLAT:?SkipDefaultOutput@gzCrateBase@@UAE_NXZ
	DD	FLAT:?Pick@Crate_StealthMine@@EAE_NPAVnc_SmartGameObj@@@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0Crate_StealthMine@@QAE@XZ
_TEXT	SEGMENT
??0Crate_StealthMine@@QAE@XZ PROC			; Crate_StealthMine::Crate_StealthMine, COMDAT
; _this$ = ecx
	xor	eax, eax
	push	esi
	mov	esi, ecx
	mov	DWORD PTR [esi+4], eax
	mov	BYTE PTR [esi+8], al
	mov	DWORD PTR [esi], OFFSET ??_7gzCrateBase@@6B@
	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	mov	eax, esi
	je	SHORT $LN8@Crate_Stea
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], esi
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN8@Crate_Stea:
	mov	DWORD PTR [esi], OFFSET ??_7Crate_StealthMine@@6B@
	pop	esi
	ret	0
??0Crate_StealthMine@@QAE@XZ ENDP			; Crate_StealthMine::Crate_StealthMine
_TEXT	ENDS
PUBLIC	??_C@_0N@ONBHLKKK@Stealth?5Mine?$AA@		; `string'
;	COMDAT ??_C@_0N@ONBHLKKK@Stealth?5Mine?$AA@
CONST	SEGMENT
??_C@_0N@ONBHLKKK@Stealth?5Mine?$AA@ DB 'Stealth Mine', 00H ; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?GetName@Crate_StealthMine@@EAEPBDXZ
_TEXT	SEGMENT
?GetName@Crate_StealthMine@@EAEPBDXZ PROC		; Crate_StealthMine::GetName, COMDAT
; _this$ = ecx

; 1794 : 		return "Stealth Mine";

	mov	eax, OFFSET ??_C@_0N@ONBHLKKK@Stealth?5Mine?$AA@

; 1795 : 	};

	ret	0
?GetName@Crate_StealthMine@@EAEPBDXZ ENDP		; Crate_StealthMine::GetName
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetType@Crate_StealthMine@@EAEHXZ
_TEXT	SEGMENT
?GetType@Crate_StealthMine@@EAEHXZ PROC			; Crate_StealthMine::GetType, COMDAT
; _this$ = ecx

; 1798 : 		return CRATE_SOLDIER;

	mov	eax, 1

; 1799 : 	};

	ret	0
?GetType@Crate_StealthMine@@EAEHXZ ENDP			; Crate_StealthMine::GetType
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetPercent@Crate_StealthMine@@EAEIXZ
_TEXT	SEGMENT
?GetPercent@Crate_StealthMine@@EAEIXZ PROC		; Crate_StealthMine::GetPercent, COMDAT
; _this$ = ecx

; 1802 : 		return this->m_percent->StealthMine;

	mov	eax, DWORD PTR ?m_percent@gzCrateBase@@1PBUgzCratePercentStruct@@B ; gzCrateBase::m_percent
	mov	eax, DWORD PTR [eax+92]

; 1803 : 	};

	ret	0
?GetPercent@Crate_StealthMine@@EAEIXZ ENDP		; Crate_StealthMine::GetPercent
_TEXT	ENDS
PUBLIC	??_7Crate_Veteran@@6B@				; Crate_Veteran::`vftable'
PUBLIC	??0Crate_Veteran@@QAE@XZ			; Crate_Veteran::Crate_Veteran
PUBLIC	??_R4Crate_Veteran@@6B@				; Crate_Veteran::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVCrate_Veteran@@@8			; Crate_Veteran `RTTI Type Descriptor'
PUBLIC	??_R3Crate_Veteran@@8				; Crate_Veteran::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2Crate_Veteran@@8				; Crate_Veteran::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@Crate_Veteran@@8			; Crate_Veteran::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?GetName@Crate_Veteran@@EAEPBDXZ		; Crate_Veteran::GetName
PUBLIC	?GetType@Crate_Veteran@@EAEHXZ			; Crate_Veteran::GetType
PUBLIC	?GetPercent@Crate_Veteran@@EAEIXZ		; Crate_Veteran::GetPercent
PUBLIC	?Pick@Crate_Veteran@@EAE_NPAVnc_SmartGameObj@@@Z ; Crate_Veteran::Pick
;	COMDAT ??_R1A@?0A@EA@Crate_Veteran@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@Crate_Veteran@@8 DD FLAT:??_R0?AVCrate_Veteran@@@8 ; Crate_Veteran::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3Crate_Veteran@@8
rdata$r	ENDS
;	COMDAT ??_R2Crate_Veteran@@8
rdata$r	SEGMENT
??_R2Crate_Veteran@@8 DD FLAT:??_R1A@?0A@EA@Crate_Veteran@@8 ; Crate_Veteran::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzCrateBase@@8
rdata$r	ENDS
;	COMDAT ??_R3Crate_Veteran@@8
rdata$r	SEGMENT
??_R3Crate_Veteran@@8 DD 00H				; Crate_Veteran::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2Crate_Veteran@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVCrate_Veteran@@@8
_DATA	SEGMENT
??_R0?AVCrate_Veteran@@@8 DD FLAT:??_7type_info@@6B@	; Crate_Veteran `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVCrate_Veteran@@', 00H
_DATA	ENDS
;	COMDAT ??_R4Crate_Veteran@@6B@
rdata$r	SEGMENT
??_R4Crate_Veteran@@6B@ DD 00H				; Crate_Veteran::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVCrate_Veteran@@@8
	DD	FLAT:??_R3Crate_Veteran@@8
rdata$r	ENDS
;	COMDAT ??_7Crate_Veteran@@6B@
CONST	SEGMENT
??_7Crate_Veteran@@6B@ DD FLAT:??_R4Crate_Veteran@@6B@	; Crate_Veteran::`vftable'
	DD	FLAT:?GetName@Crate_Veteran@@EAEPBDXZ
	DD	FLAT:?GetType@Crate_Veteran@@EAEHXZ
	DD	FLAT:?GetPercent@Crate_Veteran@@EAEIXZ
	DD	FLAT:?SkipDefaultOutput@gzCrateBase@@UAE_NXZ
	DD	FLAT:?Pick@Crate_Veteran@@EAE_NPAVnc_SmartGameObj@@@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0Crate_Veteran@@QAE@XZ
_TEXT	SEGMENT
??0Crate_Veteran@@QAE@XZ PROC				; Crate_Veteran::Crate_Veteran, COMDAT
; _this$ = ecx
	xor	eax, eax
	push	esi
	mov	esi, ecx
	mov	DWORD PTR [esi+4], eax
	mov	BYTE PTR [esi+8], al
	mov	DWORD PTR [esi], OFFSET ??_7gzCrateBase@@6B@
	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	mov	eax, esi
	je	SHORT $LN8@Crate_Vete
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], esi
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN8@Crate_Vete:
	mov	DWORD PTR [esi], OFFSET ??_7Crate_Veteran@@6B@
	pop	esi
	ret	0
??0Crate_Veteran@@QAE@XZ ENDP				; Crate_Veteran::Crate_Veteran
_TEXT	ENDS
PUBLIC	?GetVeteran@gzPlayer@@QAEPAVgzVeteranClass@@XZ	; gzPlayer::GetVeteran
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzplayer.h
;	COMDAT ?GetVeteran@gzPlayer@@QAEPAVgzVeteranClass@@XZ
_TEXT	SEGMENT
?GetVeteran@gzPlayer@@QAEPAVgzVeteranClass@@XZ PROC	; gzPlayer::GetVeteran, COMDAT
; _this$ = ecx

; 77   : 	inline gzVeteranClass *GetVeteran() { return this->m_veteran; };

	mov	eax, DWORD PTR [ecx+64]
	ret	0
?GetVeteran@gzPlayer@@QAEPAVgzVeteranClass@@XZ ENDP	; gzPlayer::GetVeteran
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
_TEXT	ENDS
;	COMDAT ?GetName@Crate_Veteran@@EAEPBDXZ
_TEXT	SEGMENT
?GetName@Crate_Veteran@@EAEPBDXZ PROC			; Crate_Veteran::GetName, COMDAT
; _this$ = ecx

; 1838 : 		return "Veteran";

	mov	eax, OFFSET ??_C@_07GCCGIBFG@Veteran?$AA@

; 1839 : 	};

	ret	0
?GetName@Crate_Veteran@@EAEPBDXZ ENDP			; Crate_Veteran::GetName
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetType@Crate_Veteran@@EAEHXZ
_TEXT	SEGMENT
?GetType@Crate_Veteran@@EAEHXZ PROC			; Crate_Veteran::GetType, COMDAT
; _this$ = ecx

; 1842 : 		return CRATE_SOLDIER;

	mov	eax, 1

; 1843 : 	};

	ret	0
?GetType@Crate_Veteran@@EAEHXZ ENDP			; Crate_Veteran::GetType
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetPercent@Crate_Veteran@@EAEIXZ
_TEXT	SEGMENT
?GetPercent@Crate_Veteran@@EAEIXZ PROC			; Crate_Veteran::GetPercent, COMDAT
; _this$ = ecx

; 1846 : 		return this->m_percent->Veteran;

	mov	eax, DWORD PTR ?m_percent@gzCrateBase@@1PBUgzCratePercentStruct@@B ; gzCrateBase::m_percent
	mov	eax, DWORD PTR [eax+84]

; 1847 : 	};

	ret	0
?GetPercent@Crate_Veteran@@EAEIXZ ENDP			; Crate_Veteran::GetPercent
_TEXT	ENDS
PUBLIC	??_C@_0BP@GODGGBLB@?$CFls?5picked?5up?5a?5Veteran?5Crate?4?$AA@ ; `string'
EXTRN	?Promote@gzVeteranClass@@QAE_NXZ:PROC		; gzVeteranClass::Promote
EXTRN	?GetNextLevel@gzVeteranClass@@QAEPAUgzVeteranLevelDefStruct@@XZ:PROC ; gzVeteranClass::GetNextLevel
;	COMDAT ??_C@_0BP@GODGGBLB@?$CFls?5picked?5up?5a?5Veteran?5Crate?4?$AA@
; File d:\source code\gzgm\gzplayer.h
CONST	SEGMENT
??_C@_0BP@GODGGBLB@?$CFls?5picked?5up?5a?5Veteran?5Crate?4?$AA@ DB '%ls p'
	DB	'icked up a Veteran Crate.', 00H		; `string'
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
CONST	ENDS
;	COMDAT ?Pick@Crate_Veteran@@EAE_NPAVnc_SmartGameObj@@@Z
_TEXT	SEGMENT
_Picker$ = 8						; size = 4
?Pick@Crate_Veteran@@EAE_NPAVnc_SmartGameObj@@@Z PROC	; Crate_Veteran::Pick, COMDAT
; _this$ = ecx

; 1849 : 	{

	push	esi
	push	edi

; 1850 : 		gzPlayer *gzData = gzPlayerManager::Find(Picker->Player);

	mov	edi, DWORD PTR _Picker$[esp+4]
	mov	eax, DWORD PTR [edi+2400]
	push	eax
	call	?Find@gzPlayerManager@@SAPAVgzPlayer@@PAVnc_cPlayer@@@Z ; gzPlayerManager::Find
	mov	esi, eax
	add	esp, 4

; 1851 : 		if (gzData)

	test	esi, esi
	je	SHORT $LN4@Pick@20

; 1852 : 		{
; 1853 : 			if (gzData->GetVeteran()->GetNextLevel())

	mov	ecx, DWORD PTR [esi+64]
	call	?GetNextLevel@gzVeteranClass@@QAEPAUgzVeteranLevelDefStruct@@XZ ; gzVeteranClass::GetNextLevel
	test	eax, eax
	je	SHORT $LN2@Pick@20

; 1854 : 			{
; 1855 : 				if (!gzData->GetVeteran()->GetNextLevel()->CanPromoteByCrate)

	mov	ecx, DWORD PTR [esi+64]
	call	?GetNextLevel@gzVeteranClass@@QAEPAUgzVeteranLevelDefStruct@@XZ ; gzVeteranClass::GetNextLevel
	cmp	BYTE PTR [eax+57], 0

; 1856 : 					return false;

	je	SHORT $LN4@Pick@20
$LN2@Pick@20:

; 1857 : 			}
; 1858 : 
; 1859 : 			if (!gzData->GetVeteran()->Promote())

	mov	ecx, DWORD PTR [esi+64]
	call	?Promote@gzVeteranClass@@QAE_NXZ	; gzVeteranClass::Promote
	test	al, al

; 1860 : 				return false;

	je	SHORT $LN4@Pick@20

; 1861 : 
; 1862 : 			gzLogger("_CRATE", "%ls picked up a Veteran Crate.", Picker->Player->PlayerName.m_Buffer);

	mov	ecx, DWORD PTR [edi+2400]
	mov	edx, DWORD PTR [ecx+1880]
	push	edx
	push	OFFSET ??_C@_0BP@GODGGBLB@?$CFls?5picked?5up?5a?5Veteran?5Crate?4?$AA@
	push	OFFSET ??_C@_06LJACFPMC@_CRATE?$AA@
	call	?gzLogger@@YAXPBD0ZZ			; gzLogger
	add	esp, 12					; 0000000cH
	pop	edi

; 1863 : 			return true;

	mov	al, 1
	pop	esi

; 1866 : 	};

	ret	4
$LN4@Pick@20:
	pop	edi

; 1864 : 		}
; 1865 : 		return false;

	xor	al, al
	pop	esi

; 1866 : 	};

	ret	4
?Pick@Crate_Veteran@@EAE_NPAVnc_SmartGameObj@@@Z ENDP	; Crate_Veteran::Pick
_TEXT	ENDS
PUBLIC	??_7Crate_Visceroid@@6B@			; Crate_Visceroid::`vftable'
PUBLIC	??0Crate_Visceroid@@QAE@XZ			; Crate_Visceroid::Crate_Visceroid
PUBLIC	??_R4Crate_Visceroid@@6B@			; Crate_Visceroid::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVCrate_Visceroid@@@8			; Crate_Visceroid `RTTI Type Descriptor'
PUBLIC	??_R3Crate_Visceroid@@8				; Crate_Visceroid::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2Crate_Visceroid@@8				; Crate_Visceroid::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@Crate_Visceroid@@8		; Crate_Visceroid::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?GetName@Crate_Visceroid@@EAEPBDXZ		; Crate_Visceroid::GetName
PUBLIC	?GetType@Crate_Visceroid@@EAEHXZ		; Crate_Visceroid::GetType
PUBLIC	?GetPercent@Crate_Visceroid@@EAEIXZ		; Crate_Visceroid::GetPercent
PUBLIC	?Pick@Crate_Visceroid@@EAE_NPAVnc_SmartGameObj@@@Z ; Crate_Visceroid::Pick
;	COMDAT ??_R1A@?0A@EA@Crate_Visceroid@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@Crate_Visceroid@@8 DD FLAT:??_R0?AVCrate_Visceroid@@@8 ; Crate_Visceroid::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3Crate_Visceroid@@8
rdata$r	ENDS
;	COMDAT ??_R2Crate_Visceroid@@8
rdata$r	SEGMENT
??_R2Crate_Visceroid@@8 DD FLAT:??_R1A@?0A@EA@Crate_Visceroid@@8 ; Crate_Visceroid::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzCrateBase@@8
rdata$r	ENDS
;	COMDAT ??_R3Crate_Visceroid@@8
rdata$r	SEGMENT
??_R3Crate_Visceroid@@8 DD 00H				; Crate_Visceroid::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2Crate_Visceroid@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVCrate_Visceroid@@@8
_DATA	SEGMENT
??_R0?AVCrate_Visceroid@@@8 DD FLAT:??_7type_info@@6B@	; Crate_Visceroid `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVCrate_Visceroid@@', 00H
_DATA	ENDS
;	COMDAT ??_R4Crate_Visceroid@@6B@
rdata$r	SEGMENT
??_R4Crate_Visceroid@@6B@ DD 00H			; Crate_Visceroid::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVCrate_Visceroid@@@8
	DD	FLAT:??_R3Crate_Visceroid@@8
rdata$r	ENDS
;	COMDAT ??_7Crate_Visceroid@@6B@
CONST	SEGMENT
??_7Crate_Visceroid@@6B@ DD FLAT:??_R4Crate_Visceroid@@6B@ ; Crate_Visceroid::`vftable'
	DD	FLAT:?GetName@Crate_Visceroid@@EAEPBDXZ
	DD	FLAT:?GetType@Crate_Visceroid@@EAEHXZ
	DD	FLAT:?GetPercent@Crate_Visceroid@@EAEIXZ
	DD	FLAT:?SkipDefaultOutput@gzCrateBase@@UAE_NXZ
	DD	FLAT:?Pick@Crate_Visceroid@@EAE_NPAVnc_SmartGameObj@@@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0Crate_Visceroid@@QAE@XZ
_TEXT	SEGMENT
??0Crate_Visceroid@@QAE@XZ PROC				; Crate_Visceroid::Crate_Visceroid, COMDAT
; _this$ = ecx
	xor	eax, eax
	push	esi
	mov	esi, ecx
	mov	DWORD PTR [esi+4], eax
	mov	BYTE PTR [esi+8], al
	mov	DWORD PTR [esi], OFFSET ??_7gzCrateBase@@6B@
	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	mov	eax, esi
	je	SHORT $LN8@Crate_Visc
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], esi
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN8@Crate_Visc:
	mov	DWORD PTR [esi], OFFSET ??_7Crate_Visceroid@@6B@
	pop	esi
	ret	0
??0Crate_Visceroid@@QAE@XZ ENDP				; Crate_Visceroid::Crate_Visceroid
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetName@Crate_Visceroid@@EAEPBDXZ
_TEXT	SEGMENT
?GetName@Crate_Visceroid@@EAEPBDXZ PROC			; Crate_Visceroid::GetName, COMDAT
; _this$ = ecx

; 1873 : 		return "Visceroid";

	mov	eax, OFFSET ??_C@_09DOMHACGN@Visceroid?$AA@

; 1874 : 	};

	ret	0
?GetName@Crate_Visceroid@@EAEPBDXZ ENDP			; Crate_Visceroid::GetName
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetType@Crate_Visceroid@@EAEHXZ
_TEXT	SEGMENT
?GetType@Crate_Visceroid@@EAEHXZ PROC			; Crate_Visceroid::GetType, COMDAT
; _this$ = ecx

; 1877 : 		return CRATE_SOLDIER;

	mov	eax, 1

; 1878 : 	};

	ret	0
?GetType@Crate_Visceroid@@EAEHXZ ENDP			; Crate_Visceroid::GetType
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetPercent@Crate_Visceroid@@EAEIXZ
_TEXT	SEGMENT
?GetPercent@Crate_Visceroid@@EAEIXZ PROC		; Crate_Visceroid::GetPercent, COMDAT
; _this$ = ecx

; 1881 : 		return this->m_percent->Visceroid;

	mov	eax, DWORD PTR ?m_percent@gzCrateBase@@1PBUgzCratePercentStruct@@B ; gzCrateBase::m_percent
	mov	eax, DWORD PTR [eax+96]

; 1882 : 	};

	ret	0
?GetPercent@Crate_Visceroid@@EAEIXZ ENDP		; Crate_Visceroid::GetPercent
_TEXT	ENDS
PUBLIC	??_C@_0EP@OIKKFHCN@?$FLCrate?$FN?3?5You?5just?5got?5a?5Visceroi@ ; `string'
PUBLIC	__real@43fa0000
PUBLIC	__real@3dcccccd
;	COMDAT ??_C@_0EP@OIKKFHCN@?$FLCrate?$FN?3?5You?5just?5got?5a?5Visceroi@
; File d:\source code\fds lib\new\fds_def.h
CONST	SEGMENT
??_C@_0EP@OIKKFHCN@?$FLCrate?$FN?3?5You?5just?5got?5a?5Visceroi@ DB '[Cra'
	DB	'te]: You just got a Visceroid crate and have been turned into'
	DB	' a Visceroid!', 00H				; `string'
CONST	ENDS
;	COMDAT __real@43fa0000
CONST	SEGMENT
__real@43fa0000 DD 043fa0000r			; 500
CONST	ENDS
;	COMDAT __real@3dcccccd
CONST	SEGMENT
__real@3dcccccd DD 03dcccccdr			; 0.1
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
CONST	ENDS
;	COMDAT ?Pick@Crate_Visceroid@@EAE_NPAVnc_SmartGameObj@@@Z
_TEXT	SEGMENT
_pos$61437 = -12					; size = 12
$T73227 = 8						; size = 4
$T73222 = 8						; size = 4
$T73217 = 8						; size = 4
$T73212 = 8						; size = 4
_Picker$ = 8						; size = 4
?Pick@Crate_Visceroid@@EAE_NPAVnc_SmartGameObj@@@Z PROC	; Crate_Visceroid::Pick, COMDAT
; _this$ = ecx

; 1884 : 	{

	sub	esp, 12					; 0000000cH
	push	esi

; 1885 : 		if (!strstr(Picker->definition->Get_Name(), "CnC_Visceroid"))

	mov	esi, DWORD PTR _Picker$[esp+12]
	mov	ecx, DWORD PTR [esi+1724]
	mov	eax, DWORD PTR [ecx]
	mov	edx, DWORD PTR [eax+48]
	call	edx
	push	OFFSET ??_C@_0O@GJIAFLPK@CnC_Visceroid?$AA@
	push	eax
	call	_strstr
	add	esp, 8
	test	eax, eax
	jne	$LN1@Pick@21

; 1886 : 		{
; 1887 : 			// Add 0.1 to Z or player will stuck after character change
; 1888 : 			nc_Vector3 pos;
; 1889 : 			Picker->Get_Position(&pos);

	mov	eax, DWORD PTR [esi]
	mov	edx, DWORD PTR [eax+56]
	lea	ecx, DWORD PTR _pos$61437[esp+16]
	push	ecx
	mov	ecx, esi
	call	edx

; 1890 : 			pos.Z += 0.1f;

	fld	DWORD PTR _pos$61437[esp+24]
	fadd	DWORD PTR __real@3dcccccd

; 1891 : 
; 1892 : 			// Change character
; 1893 : 			Picker->As_SoldierGameObj()->Re_Init(*(nc_SoldierGameObjDef *)nc_DefinitionMgrClass::Find_Named_Definition("CnC_Visceroid", true));

	push	1
	push	OFFSET ??_C@_0O@GJIAFLPK@CnC_Visceroid?$AA@
	fstp	DWORD PTR _pos$61437[esp+32]
	call	?Find_Named_Definition@nc_DefinitionMgrClass@@SAPAVnc_DefinitionClass@@PBD_N@Z ; nc_DefinitionMgrClass::Find_Named_Definition
	add	esp, 8
	push	eax
	mov	eax, DWORD PTR [esi]
	mov	edx, DWORD PTR [eax+68]
	mov	ecx, esi
	call	edx
	mov	ecx, eax
	call	?Re_Init@nc_SoldierGameObj@@QAEXAAVnc_SoldierGameObjDef@@@Z ; nc_SoldierGameObj::Re_Init

; 1894 : 			Picker->As_SoldierGameObj()->Post_Re_Init();

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

; 1895 : 
; 1896 : 			// Set adjusted position
; 1897 : 			Picker->As_PhysicalGameObj()->Set_Position(pos);

	mov	edx, DWORD PTR [esi]
	mov	eax, DWORD PTR [edx+36]
	lea	ecx, DWORD PTR _pos$61437[esp+16]
	push	ecx
	mov	ecx, esi
	call	eax
	mov	ecx, eax
	call	?Set_Position@nc_PhysicalGameObj@@QAEXABUnc_Vector3@@@Z ; nc_PhysicalGameObj::Set_Position

; 1898 : 
; 1899 : 			// Health stuff...
; 1900 : 			Picker->As_DamageableGameObj()->Defense.HealthMax			= 500.0f;

	fld	DWORD PTR __real@43fa0000
	mov	edx, DWORD PTR [esi]
	fstp	DWORD PTR $T73212[esp+12]
	mov	eax, DWORD PTR [edx+60]
	mov	ecx, esi
	call	eax
	lea	ecx, DWORD PTR $T73212[esp+12]
	add	eax, 1844				; 00000734H
	push	ecx
	push	eax
	call	?Set@nc_FloatDataSafeClass@@QAG_NAAM@Z	; nc_FloatDataSafeClass::Set

; 1901 : 			Picker->As_DamageableGameObj()->Defense.Health				= 500.0f;

	fld	DWORD PTR __real@43fa0000
	mov	edx, DWORD PTR [esi]
	fstp	DWORD PTR $T73217[esp+12]
	mov	eax, DWORD PTR [edx+60]
	mov	ecx, esi
	call	eax
	lea	ecx, DWORD PTR $T73217[esp+12]
	add	eax, 1840				; 00000730H
	push	ecx
	push	eax
	call	?Set@nc_FloatDataSafeClass@@QAG_NAAM@Z	; nc_FloatDataSafeClass::Set

; 1902 : 			Picker->As_DamageableGameObj()->Defense.ShieldStrengthMax	= 0.0f;

	fldz
	mov	edx, DWORD PTR [esi]
	fstp	DWORD PTR $T73222[esp+12]
	mov	eax, DWORD PTR [edx+60]
	mov	ecx, esi
	call	eax
	lea	ecx, DWORD PTR $T73222[esp+12]
	add	eax, 1856				; 00000740H
	push	ecx
	push	eax
	call	?Set@nc_FloatDataSafeClass@@QAG_NAAM@Z	; nc_FloatDataSafeClass::Set

; 1903 : 			Picker->As_DamageableGameObj()->Defense.ShieldStrength		= 0.0f;

	fldz
	mov	edx, DWORD PTR [esi]
	fstp	DWORD PTR $T73227[esp+12]
	mov	eax, DWORD PTR [edx+60]
	mov	ecx, esi
	call	eax
	lea	ecx, DWORD PTR $T73227[esp+12]
	add	eax, 1852				; 0000073cH
	push	ecx
	push	eax
	call	?Set@nc_FloatDataSafeClass@@QAG_NAAM@Z	; nc_FloatDataSafeClass::Set

; 1904 : 
; 1905 : 			// Tell clients
; 1906 : 			Picker->Set_Object_Dirty_Bit(nc_DB_OCCASIONAL, true);

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

; 1907 : 
; 1908 : 			PagePlayer(Picker->Player->PlayerId, "[Crate]: You just got a Visceroid crate and have been turned into a Visceroid!");

	mov	ecx, DWORD PTR [esi+2400]
	mov	edx, DWORD PTR [ecx+1884]
	push	OFFSET ??_C@_0EP@OIKKFHCN@?$FLCrate?$FN?3?5You?5just?5got?5a?5Visceroi@
	push	edx
	call	?PagePlayer@@YAXHPBDZZ			; PagePlayer
	add	esp, 8

; 1909 : 			return true;

	mov	al, 1
	pop	esi

; 1912 : 	}

	add	esp, 12					; 0000000cH
	ret	4
$LN1@Pick@21:

; 1910 : 		}
; 1911 : 		return false;

	xor	al, al
	pop	esi

; 1912 : 	}

	add	esp, 12					; 0000000cH
	ret	4
?Pick@Crate_Visceroid@@EAE_NPAVnc_SmartGameObj@@@Z ENDP	; Crate_Visceroid::Pick
_TEXT	ENDS
PUBLIC	??_7Crate_BasePower@@6B@			; Crate_BasePower::`vftable'
PUBLIC	??0Crate_BasePower@@QAE@XZ			; Crate_BasePower::Crate_BasePower
PUBLIC	??_R4Crate_BasePower@@6B@			; Crate_BasePower::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVCrate_BasePower@@@8			; Crate_BasePower `RTTI Type Descriptor'
PUBLIC	??_R3Crate_BasePower@@8				; Crate_BasePower::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2Crate_BasePower@@8				; Crate_BasePower::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@Crate_BasePower@@8		; Crate_BasePower::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?GetName@Crate_BasePower@@EAEPBDXZ		; Crate_BasePower::GetName
PUBLIC	?GetType@Crate_BasePower@@EAEHXZ		; Crate_BasePower::GetType
PUBLIC	?GetPercent@Crate_BasePower@@EAEIXZ		; Crate_BasePower::GetPercent
PUBLIC	?Pick@Crate_BasePower@@EAE_NPAVnc_SmartGameObj@@@Z ; Crate_BasePower::Pick
;	COMDAT ??_R1A@?0A@EA@Crate_BasePower@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@Crate_BasePower@@8 DD FLAT:??_R0?AVCrate_BasePower@@@8 ; Crate_BasePower::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3Crate_BasePower@@8
rdata$r	ENDS
;	COMDAT ??_R2Crate_BasePower@@8
rdata$r	SEGMENT
??_R2Crate_BasePower@@8 DD FLAT:??_R1A@?0A@EA@Crate_BasePower@@8 ; Crate_BasePower::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzCrateBase@@8
rdata$r	ENDS
;	COMDAT ??_R3Crate_BasePower@@8
rdata$r	SEGMENT
??_R3Crate_BasePower@@8 DD 00H				; Crate_BasePower::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2Crate_BasePower@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVCrate_BasePower@@@8
_DATA	SEGMENT
??_R0?AVCrate_BasePower@@@8 DD FLAT:??_7type_info@@6B@	; Crate_BasePower `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVCrate_BasePower@@', 00H
_DATA	ENDS
;	COMDAT ??_R4Crate_BasePower@@6B@
rdata$r	SEGMENT
??_R4Crate_BasePower@@6B@ DD 00H			; Crate_BasePower::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVCrate_BasePower@@@8
	DD	FLAT:??_R3Crate_BasePower@@8
rdata$r	ENDS
;	COMDAT ??_7Crate_BasePower@@6B@
CONST	SEGMENT
??_7Crate_BasePower@@6B@ DD FLAT:??_R4Crate_BasePower@@6B@ ; Crate_BasePower::`vftable'
	DD	FLAT:?GetName@Crate_BasePower@@EAEPBDXZ
	DD	FLAT:?GetType@Crate_BasePower@@EAEHXZ
	DD	FLAT:?GetPercent@Crate_BasePower@@EAEIXZ
	DD	FLAT:?SkipDefaultOutput@gzCrateBase@@UAE_NXZ
	DD	FLAT:?Pick@Crate_BasePower@@EAE_NPAVnc_SmartGameObj@@@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0Crate_BasePower@@QAE@XZ
_TEXT	SEGMENT
??0Crate_BasePower@@QAE@XZ PROC				; Crate_BasePower::Crate_BasePower, COMDAT
; _this$ = ecx
	xor	eax, eax
	push	esi
	mov	esi, ecx
	mov	DWORD PTR [esi+4], eax
	mov	BYTE PTR [esi+8], al
	mov	DWORD PTR [esi], OFFSET ??_7gzCrateBase@@6B@
	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	mov	eax, esi
	je	SHORT $LN8@Crate_Base
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], esi
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN8@Crate_Base:
	mov	DWORD PTR [esi], OFFSET ??_7Crate_BasePower@@6B@
	pop	esi
	ret	0
??0Crate_BasePower@@QAE@XZ ENDP				; Crate_BasePower::Crate_BasePower
_TEXT	ENDS
PUBLIC	??_C@_0BD@KGKDIFFE@Base?5Defense?5Power?$AA@	; `string'
;	COMDAT ??_C@_0BD@KGKDIFFE@Base?5Defense?5Power?$AA@
CONST	SEGMENT
??_C@_0BD@KGKDIFFE@Base?5Defense?5Power?$AA@ DB 'Base Defense Power', 00H ; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?GetName@Crate_BasePower@@EAEPBDXZ
_TEXT	SEGMENT
?GetName@Crate_BasePower@@EAEPBDXZ PROC			; Crate_BasePower::GetName, COMDAT
; _this$ = ecx

; 1919 : 		return "Base Defense Power";

	mov	eax, OFFSET ??_C@_0BD@KGKDIFFE@Base?5Defense?5Power?$AA@

; 1920 : 	};

	ret	0
?GetName@Crate_BasePower@@EAEPBDXZ ENDP			; Crate_BasePower::GetName
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetType@Crate_BasePower@@EAEHXZ
_TEXT	SEGMENT
?GetType@Crate_BasePower@@EAEHXZ PROC			; Crate_BasePower::GetType, COMDAT
; _this$ = ecx

; 1923 : 		return CRATE_SOLDIER;

	mov	eax, 1

; 1924 : 	};

	ret	0
?GetType@Crate_BasePower@@EAEHXZ ENDP			; Crate_BasePower::GetType
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetPercent@Crate_BasePower@@EAEIXZ
_TEXT	SEGMENT
?GetPercent@Crate_BasePower@@EAEIXZ PROC		; Crate_BasePower::GetPercent, COMDAT
; _this$ = ecx

; 1927 : 		return this->m_percent->BaseDefensePower;

	mov	eax, DWORD PTR ?m_percent@gzCrateBase@@1PBUgzCratePercentStruct@@B ; gzCrateBase::m_percent
	mov	eax, DWORD PTR [eax+100]

; 1928 : 	};

	ret	0
?GetPercent@Crate_BasePower@@EAEIXZ ENDP		; Crate_BasePower::GetPercent
_TEXT	ENDS
PUBLIC	??_C@_0HE@NCJFOLCK@msg?5?$FLCrate?$FN?3?5?$CFs?5just?5had?5a?5power@ ; `string'
PUBLIC	??_C@_0IO@MMFOPHCH@msg?5?$FLCrate?$FN?3?5?$CFs?5found?5an?5extra?5p@ ; `string'
EXTRN	?Find_Building@nc_BaseControllerClass@@QAEPAVnc_BuildingGameObj@@W4BuildingType@@@Z:PROC ; nc_BaseControllerClass::Find_Building
EXTRN	?Find_Base@nc_BaseControllerClass@@SAPAV1@H@Z:PROC ; nc_BaseControllerClass::Find_Base
;	COMDAT ??_C@_0HE@NCJFOLCK@msg?5?$FLCrate?$FN?3?5?$CFs?5just?5had?5a?5power@
; File d:\source code\alib\include\arandom.h
CONST	SEGMENT
??_C@_0HE@NCJFOLCK@msg?5?$FLCrate?$FN?3?5?$CFs?5just?5had?5a?5power@ DB 'm'
	DB	'sg [Crate]: %s just had a power surge and the power flowing t'
	DB	'o the main base defense has stopped for %.0f seconds.', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0IO@MMFOPHCH@msg?5?$FLCrate?$FN?3?5?$CFs?5found?5an?5extra?5p@
CONST	SEGMENT
??_C@_0IO@MMFOPHCH@msg?5?$FLCrate?$FN?3?5?$CFs?5found?5an?5extra?5p@ DB 'm'
	DB	'sg [Crate]: %s found an extra power cell in their Power Plant'
	DB	'. They have returned power to their main base defense for ano'
	DB	'ther %.0f seconds.', 00H			; `string'
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
CONST	ENDS
;	COMDAT ?Pick@Crate_BasePower@@EAE_NPAVnc_SmartGameObj@@@Z
_TEXT	SEGMENT
tv313 = -4						; size = 4
_Picker$ = 8						; size = 4
?Pick@Crate_BasePower@@EAE_NPAVnc_SmartGameObj@@@Z PROC	; Crate_BasePower::Pick, COMDAT
; _this$ = ecx

; 1930 : 	{

	push	ecx

; 1931 : 		if (!gzCrateMgr->m_data->BasePower.enable)

	mov	edx, DWORD PTR ?gzCrateMgr@@3PAVgzManagerCrateClass@@A ; gzCrateMgr
	mov	eax, DWORD PTR [edx+60]
	cmp	BYTE PTR [eax+96], 0
	jne	$LN4@Pick@22

; 1932 : 		{
; 1933 : 			gzCrateMgr->m_data->BasePower.team    = gzRandom.GetInt(0, 1);

	mov	ecx, DWORD PTR ?gzRandom@@3VaRandom@@A
	push	ebx
	mov	eax, ecx
	mov	ebx, 1
	add	ecx, ebx
	cmp	eax, 64					; 00000040H
	push	esi
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A, ecx
	jle	SHORT $LN17@Pick@22
	mov	ecx, ebx
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A, ecx
$LN17@Pick@22:
	mov	eax, DWORD PTR ?gzRandom@@3VaRandom@@A+4
	imul	eax, 22695475				; 015a4e33H
	add	eax, ecx
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A+4, eax
	mov	ecx, DWORD PTR [edx+60]
	shr	eax, 16					; 00000010H
	and	eax, ebx
	mov	DWORD PTR [ecx+100], eax

; 1934 : 			gzCrateMgr->m_data->BasePower.counter = (float)gzRandom.GetInt(60, 300);

	mov	ecx, DWORD PTR ?gzRandom@@3VaRandom@@A
	mov	edx, ecx
	add	ecx, ebx
	cmp	edx, 64					; 00000040H
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A, ecx
	jle	SHORT $LN26@Pick@22
	mov	ecx, ebx
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A, ecx
$LN26@Pick@22:
	mov	eax, DWORD PTR ?gzRandom@@3VaRandom@@A+4
	imul	eax, 22695475				; 015a4e33H
	add	eax, ecx
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A+4, eax
	xor	edx, edx
	shr	eax, 16					; 00000010H
	mov	ecx, 241				; 000000f1H
	div	ecx

; 1935 : 			nc_BuildingGameObj *BaseDef = nc_BaseControllerClass::Find_Base(gzCrateMgr->m_data->BasePower.team)->Find_Building(nc_BASEDEF);

	push	9
	add	edx, 60					; 0000003cH
	mov	DWORD PTR tv313[esp+16], edx
	mov	edx, DWORD PTR ?gzCrateMgr@@3PAVgzManagerCrateClass@@A ; gzCrateMgr
	fild	DWORD PTR tv313[esp+16]
	mov	eax, DWORD PTR [edx+60]
	fstp	DWORD PTR [eax+104]
	mov	ecx, DWORD PTR ?gzCrateMgr@@3PAVgzManagerCrateClass@@A ; gzCrateMgr
	mov	edx, DWORD PTR [ecx+60]
	mov	eax, DWORD PTR [edx+100]
	push	eax
	call	?Find_Base@nc_BaseControllerClass@@SAPAV1@H@Z ; nc_BaseControllerClass::Find_Base
	add	esp, 4
	mov	ecx, eax
	call	?Find_Building@nc_BaseControllerClass@@QAEPAVnc_BuildingGameObj@@W4BuildingType@@@Z ; nc_BaseControllerClass::Find_Building
	mov	esi, eax

; 1936 : 			if (BaseDef && !BaseDef->Destroyed)

	test	esi, esi
	je	$LN1@Pick@22
	cmp	BYTE PTR [esi+1912], 0
	jne	$LN1@Pick@22

; 1937 : 			{
; 1938 : 				gzCrateMgr->m_data->BasePower.building = BaseDef;

	mov	ecx, DWORD PTR ?gzCrateMgr@@3PAVgzManagerCrateClass@@A ; gzCrateMgr
	mov	edx, DWORD PTR [ecx+60]
	mov	DWORD PTR [edx+108], esi

; 1939 : 				gzCrateMgr->m_data->BasePower.enable   = true;

	mov	eax, DWORD PTR ?gzCrateMgr@@3PAVgzManagerCrateClass@@A ; gzCrateMgr
	mov	ecx, DWORD PTR [eax+60]
	mov	BYTE PTR [ecx+96], bl

; 1940 : 				gzCrateMgr->m_data->BasePower.powered  = BaseDef->IsPowered;

	mov	edx, DWORD PTR ?gzCrateMgr@@3PAVgzManagerCrateClass@@A ; gzCrateMgr
	mov	eax, DWORD PTR [edx+60]
	mov	cl, BYTE PTR [esi+1928]
	mov	BYTE PTR [eax+112], cl

; 1941 : 				BaseDef->IsPowered ^= 1;
; 1942 : 				BaseDef->Set_Object_Dirty_Bit(nc_DB_RARE, true);

	mov	edx, DWORD PTR [esi+8]
	mov	eax, DWORD PTR [edx+56]
	xor	BYTE PTR [esi+1928], bl
	lea	ecx, DWORD PTR [esi+8]
	push	ebx
	push	7
	call	eax

; 1943 : 				if (BaseDef->IsPowered)

	cmp	BYTE PTR [esi+1928], 0
	je	SHORT $LN2@Pick@22

; 1944 : 					gzConsole::In("msg [Crate]: %s found an extra power cell in their Power Plant. They have returned power to their main base defense for another %.0f seconds.", (gzCrateMgr->m_data->BasePower.team == 1 ? "GDI" : "Nod"), gzCrateMgr->m_data->BasePower.counter);

	mov	ecx, DWORD PTR ?gzCrateMgr@@3PAVgzManagerCrateClass@@A ; gzCrateMgr
	mov	eax, DWORD PTR [ecx+60]
	cmp	DWORD PTR [eax+100], ebx
	mov	ecx, OFFSET ??_C@_03IOFAJBDH@GDI?$AA@
	je	SHORT $LN8@Pick@22
	mov	ecx, OFFSET ??_C@_03OHGKCNFD@Nod?$AA@
$LN8@Pick@22:
	fld	DWORD PTR [eax+104]
	sub	esp, 8
	fstp	QWORD PTR [esp]
	push	ecx
	push	OFFSET ??_C@_0IO@MMFOPHCH@msg?5?$FLCrate?$FN?3?5?$CFs?5found?5an?5extra?5p@

; 1945 : 				else
; 1946 : 					gzConsole::In("msg [Crate]: %s just had a power surge and the power flowing to the main base defense has stopped for %.0f seconds.", (gzCrateMgr->m_data->BasePower.team == 1 ? "GDI" : "Nod"), gzCrateMgr->m_data->BasePower.counter);

	call	?In@gzConsole@@SAXPBDZZ			; gzConsole::In
	add	esp, 16					; 00000010H
	pop	esi

; 1947 : 			}
; 1948 : 			return true;

	mov	al, bl
	pop	ebx

; 1951 : 	};

	pop	ecx
	ret	4
$LN2@Pick@22:

; 1945 : 				else
; 1946 : 					gzConsole::In("msg [Crate]: %s just had a power surge and the power flowing to the main base defense has stopped for %.0f seconds.", (gzCrateMgr->m_data->BasePower.team == 1 ? "GDI" : "Nod"), gzCrateMgr->m_data->BasePower.counter);

	mov	edx, DWORD PTR ?gzCrateMgr@@3PAVgzManagerCrateClass@@A ; gzCrateMgr
	mov	eax, DWORD PTR [edx+60]
	cmp	DWORD PTR [eax+100], ebx
	mov	ecx, OFFSET ??_C@_03IOFAJBDH@GDI?$AA@
	je	SHORT $LN10@Pick@22
	mov	ecx, OFFSET ??_C@_03OHGKCNFD@Nod?$AA@
$LN10@Pick@22:
	fld	DWORD PTR [eax+104]
	sub	esp, 8
	fstp	QWORD PTR [esp]
	push	ecx
	push	OFFSET ??_C@_0HE@NCJFOLCK@msg?5?$FLCrate?$FN?3?5?$CFs?5just?5had?5a?5power@
	call	?In@gzConsole@@SAXPBDZZ			; gzConsole::In
	add	esp, 16					; 00000010H
$LN1@Pick@22:
	pop	esi

; 1947 : 			}
; 1948 : 			return true;

	mov	al, bl
	pop	ebx

; 1951 : 	};

	pop	ecx
	ret	4
$LN4@Pick@22:

; 1949 : 		}
; 1950 : 		return false;

	xor	al, al

; 1951 : 	};

	pop	ecx
	ret	4
?Pick@Crate_BasePower@@EAE_NPAVnc_SmartGameObj@@@Z ENDP	; Crate_BasePower::Pick
_TEXT	ENDS
PUBLIC	??_7Crate_VehicleMaxArmor@@6B@			; Crate_VehicleMaxArmor::`vftable'
PUBLIC	??0Crate_VehicleMaxArmor@@QAE@XZ		; Crate_VehicleMaxArmor::Crate_VehicleMaxArmor
PUBLIC	??_R4Crate_VehicleMaxArmor@@6B@			; Crate_VehicleMaxArmor::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVCrate_VehicleMaxArmor@@@8		; Crate_VehicleMaxArmor `RTTI Type Descriptor'
PUBLIC	??_R3Crate_VehicleMaxArmor@@8			; Crate_VehicleMaxArmor::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2Crate_VehicleMaxArmor@@8			; Crate_VehicleMaxArmor::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@Crate_VehicleMaxArmor@@8		; Crate_VehicleMaxArmor::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?GetName@Crate_VehicleMaxArmor@@EAEPBDXZ	; Crate_VehicleMaxArmor::GetName
PUBLIC	?GetType@Crate_VehicleMaxArmor@@EAEHXZ		; Crate_VehicleMaxArmor::GetType
PUBLIC	?GetPercent@Crate_VehicleMaxArmor@@EAEIXZ	; Crate_VehicleMaxArmor::GetPercent
PUBLIC	?SkipDefaultOutput@Crate_VehicleMaxArmor@@EAE_NXZ ; Crate_VehicleMaxArmor::SkipDefaultOutput
PUBLIC	?Pick@Crate_VehicleMaxArmor@@EAE_NPAVnc_SmartGameObj@@@Z ; Crate_VehicleMaxArmor::Pick
;	COMDAT ??_R1A@?0A@EA@Crate_VehicleMaxArmor@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@Crate_VehicleMaxArmor@@8 DD FLAT:??_R0?AVCrate_VehicleMaxArmor@@@8 ; Crate_VehicleMaxArmor::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3Crate_VehicleMaxArmor@@8
rdata$r	ENDS
;	COMDAT ??_R2Crate_VehicleMaxArmor@@8
rdata$r	SEGMENT
??_R2Crate_VehicleMaxArmor@@8 DD FLAT:??_R1A@?0A@EA@Crate_VehicleMaxArmor@@8 ; Crate_VehicleMaxArmor::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzCrateBase@@8
rdata$r	ENDS
;	COMDAT ??_R3Crate_VehicleMaxArmor@@8
rdata$r	SEGMENT
??_R3Crate_VehicleMaxArmor@@8 DD 00H			; Crate_VehicleMaxArmor::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2Crate_VehicleMaxArmor@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVCrate_VehicleMaxArmor@@@8
_DATA	SEGMENT
??_R0?AVCrate_VehicleMaxArmor@@@8 DD FLAT:??_7type_info@@6B@ ; Crate_VehicleMaxArmor `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVCrate_VehicleMaxArmor@@', 00H
_DATA	ENDS
;	COMDAT ??_R4Crate_VehicleMaxArmor@@6B@
rdata$r	SEGMENT
??_R4Crate_VehicleMaxArmor@@6B@ DD 00H			; Crate_VehicleMaxArmor::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVCrate_VehicleMaxArmor@@@8
	DD	FLAT:??_R3Crate_VehicleMaxArmor@@8
rdata$r	ENDS
;	COMDAT ??_7Crate_VehicleMaxArmor@@6B@
CONST	SEGMENT
??_7Crate_VehicleMaxArmor@@6B@ DD FLAT:??_R4Crate_VehicleMaxArmor@@6B@ ; Crate_VehicleMaxArmor::`vftable'
	DD	FLAT:?GetName@Crate_VehicleMaxArmor@@EAEPBDXZ
	DD	FLAT:?GetType@Crate_VehicleMaxArmor@@EAEHXZ
	DD	FLAT:?GetPercent@Crate_VehicleMaxArmor@@EAEIXZ
	DD	FLAT:?SkipDefaultOutput@Crate_VehicleMaxArmor@@EAE_NXZ
	DD	FLAT:?Pick@Crate_VehicleMaxArmor@@EAE_NPAVnc_SmartGameObj@@@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0Crate_VehicleMaxArmor@@QAE@XZ
_TEXT	SEGMENT
??0Crate_VehicleMaxArmor@@QAE@XZ PROC			; Crate_VehicleMaxArmor::Crate_VehicleMaxArmor, COMDAT
; _this$ = ecx
	xor	eax, eax
	push	esi
	mov	esi, ecx
	mov	DWORD PTR [esi+4], eax
	mov	BYTE PTR [esi+8], al
	mov	DWORD PTR [esi], OFFSET ??_7gzCrateBase@@6B@
	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	mov	eax, esi
	je	SHORT $LN8@Crate_Vehi
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], esi
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN8@Crate_Vehi:
	mov	DWORD PTR [esi], OFFSET ??_7Crate_VehicleMaxArmor@@6B@
	pop	esi
	ret	0
??0Crate_VehicleMaxArmor@@QAE@XZ ENDP			; Crate_VehicleMaxArmor::Crate_VehicleMaxArmor
_TEXT	ENDS
PUBLIC	??Znc_FloatDataSafeClass@@QAEXM@Z		; nc_FloatDataSafeClass::operator-=
; Function compile flags: /Ogtpy
; File d:\source code\fds lib\new\fds_def.h
;	COMDAT ??Znc_FloatDataSafeClass@@QAEXM@Z
_TEXT	SEGMENT
_value$ = 8						; size = 4
??Znc_FloatDataSafeClass@@QAEXM@Z PROC			; nc_FloatDataSafeClass::operator-=, COMDAT
; _this$ = ecx

; 245  : 	void operator-=(float value) {

	push	esi
	mov	esi, ecx

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

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

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

; 248  : 	}

	ret	4
??Znc_FloatDataSafeClass@@QAEXM@Z ENDP			; nc_FloatDataSafeClass::operator-=
_TEXT	ENDS
PUBLIC	??_C@_0BC@OJPHHOIO@Vehicle?5Max?5Armor?$AA@	; `string'
;	COMDAT ??_C@_0BC@OJPHHOIO@Vehicle?5Max?5Armor?$AA@
; File d:\source code\gzgm\gzcrate.cpp
CONST	SEGMENT
??_C@_0BC@OJPHHOIO@Vehicle?5Max?5Armor?$AA@ DB 'Vehicle Max Armor', 00H ; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?GetName@Crate_VehicleMaxArmor@@EAEPBDXZ
_TEXT	SEGMENT
?GetName@Crate_VehicleMaxArmor@@EAEPBDXZ PROC		; Crate_VehicleMaxArmor::GetName, COMDAT
; _this$ = ecx

; 1962 : 		return "Vehicle Max Armor";

	mov	eax, OFFSET ??_C@_0BC@OJPHHOIO@Vehicle?5Max?5Armor?$AA@

; 1963 : 	};

	ret	0
?GetName@Crate_VehicleMaxArmor@@EAEPBDXZ ENDP		; Crate_VehicleMaxArmor::GetName
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetType@Crate_VehicleMaxArmor@@EAEHXZ
_TEXT	SEGMENT
?GetType@Crate_VehicleMaxArmor@@EAEHXZ PROC		; Crate_VehicleMaxArmor::GetType, COMDAT
; _this$ = ecx

; 1966 : 		return CRATE_VEHICLE;

	mov	eax, 2

; 1967 : 	};

	ret	0
?GetType@Crate_VehicleMaxArmor@@EAEHXZ ENDP		; Crate_VehicleMaxArmor::GetType
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetPercent@Crate_VehicleMaxArmor@@EAEIXZ
_TEXT	SEGMENT
?GetPercent@Crate_VehicleMaxArmor@@EAEIXZ PROC		; Crate_VehicleMaxArmor::GetPercent, COMDAT
; _this$ = ecx

; 1970 : 		return this->m_percent->vMaxArmor;

	mov	eax, DWORD PTR ?m_percent@gzCrateBase@@1PBUgzCratePercentStruct@@B ; gzCrateBase::m_percent
	mov	eax, DWORD PTR [eax+104]

; 1971 : 	};

	ret	0
?GetPercent@Crate_VehicleMaxArmor@@EAEIXZ ENDP		; Crate_VehicleMaxArmor::GetPercent
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?SkipDefaultOutput@Crate_VehicleMaxArmor@@EAE_NXZ
_TEXT	SEGMENT
?SkipDefaultOutput@Crate_VehicleMaxArmor@@EAE_NXZ PROC	; Crate_VehicleMaxArmor::SkipDefaultOutput, COMDAT
; _this$ = ecx

; 1974 : 		return true;

	mov	al, 1

; 1975 : 	};

	ret	0
?SkipDefaultOutput@Crate_VehicleMaxArmor@@EAE_NXZ ENDP	; Crate_VehicleMaxArmor::SkipDefaultOutput
_TEXT	ENDS
PUBLIC	??_C@_0CC@JIHEPFKC@?$CFls?5picked?5up?5a?5Vehicle?5?$CFs?5Crate@ ; `string'
PUBLIC	??_C@_08HMDBJNAI@De?9Armor?$AA@			; `string'
PUBLIC	??_C@_0DF@LOPNABBO@Crate?5God?5has?5?$CFs?5your?5current?5ve@ ; `string'
PUBLIC	??_C@_09DNHCPJDM@decreased?$AA@			; `string'
PUBLIC	??_C@_09EKNJOMFB@increased?$AA@			; `string'
;	COMDAT ??_C@_0CC@JIHEPFKC@?$CFls?5picked?5up?5a?5Vehicle?5?$CFs?5Crate@
; File d:\source code\fds lib\new\fds_def.h
CONST	SEGMENT
??_C@_0CC@JIHEPFKC@?$CFls?5picked?5up?5a?5Vehicle?5?$CFs?5Crate@ DB '%ls '
	DB	'picked up a Vehicle %s Crate.', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_08HMDBJNAI@De?9Armor?$AA@
CONST	SEGMENT
??_C@_08HMDBJNAI@De?9Armor?$AA@ DB 'De-Armor', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_0DF@LOPNABBO@Crate?5God?5has?5?$CFs?5your?5current?5ve@
CONST	SEGMENT
??_C@_0DF@LOPNABBO@Crate?5God?5has?5?$CFs?5your?5current?5ve@ DB 'Crate G'
	DB	'od has %s your current vehicle armor to %0.f!', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_09DNHCPJDM@decreased?$AA@
CONST	SEGMENT
??_C@_09DNHCPJDM@decreased?$AA@ DB 'decreased', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_09EKNJOMFB@increased?$AA@
CONST	SEGMENT
??_C@_09EKNJOMFB@increased?$AA@ DB 'increased', 00H	; `string'
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
CONST	ENDS
;	COMDAT ?Pick@Crate_VehicleMaxArmor@@EAE_NPAVnc_SmartGameObj@@@Z
_TEXT	SEGMENT
$T73394 = -4						; size = 4
$T73389 = -4						; size = 4
_armor$ = -4						; size = 4
tv315 = 8						; size = 4
$T73399 = 8						; size = 4
_Picker$ = 8						; size = 4
?Pick@Crate_VehicleMaxArmor@@EAE_NPAVnc_SmartGameObj@@@Z PROC ; Crate_VehicleMaxArmor::Pick, COMDAT
; _this$ = ecx

; 1977 : 	{

	push	ecx
	push	esi

; 1978 : 		int armor = gzRandom.Get_Int(5, 50), rnd = gzRandom.Get_Int(0, 1);

	mov	esi, DWORD PTR ?gzRandom@@3VaRandom@@A
	mov	eax, esi
	add	esi, 1
	cmp	eax, 64					; 00000040H
	jle	SHORT $LN14@Pick@23
	mov	esi, 1
$LN14@Pick@23:
	mov	ecx, DWORD PTR ?gzRandom@@3VaRandom@@A+4
	imul	ecx, 22695475				; 015a4e33H
	add	ecx, esi
	push	ebx
	xor	edx, edx
	mov	eax, ecx
	push	edi
	shr	eax, 16					; 00000010H
	mov	edi, 46					; 0000002eH
	div	edi
	add	edx, 5
	mov	DWORD PTR _armor$[esp+16], edx
	mov	edx, esi
	add	esi, 1
	cmp	edx, 64					; 00000040H
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A, esi
	jle	SHORT $LN21@Pick@23
	mov	esi, 1
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A, esi
$LN21@Pick@23:

; 1979 : 		if (rnd == 0)
; 1980 : 			Picker->As_SoldierGameObj()->Vehicle->Defense.ShieldStrengthMax += (float)armor;

	fild	DWORD PTR _armor$[esp+16]
	imul	ecx, 22695475				; 015a4e33H
	fstp	DWORD PTR $T73389[esp+16]
	add	ecx, esi
	mov	esi, DWORD PTR _Picker$[esp+12]
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A+4, ecx
	shr	ecx, 16					; 00000010H
	and	ecx, 1
	mov	ebx, ecx
	mov	ecx, esi
	jne	SHORT $LN3@Pick@23
	mov	eax, DWORD PTR [esi]
	mov	edx, DWORD PTR [eax+68]
	call	edx
	mov	edi, DWORD PTR [eax+2444]
	add	edi, 1856				; 00000740H
	mov	ecx, edi
	call	?Get@nc_FloatDataSafeClass@@QAEMXZ	; nc_FloatDataSafeClass::Get
	fadd	DWORD PTR $T73389[esp+16]
	lea	eax, DWORD PTR $T73389[esp+16]
	push	eax
	fstp	DWORD PTR $T73389[esp+20]
	push	edi

; 1981 : 		else

	jmp	$LN30@Pick@23
$LN3@Pick@23:

; 1982 : 		{
; 1983 : 			Picker->As_SoldierGameObj()->Vehicle->Defense.ShieldStrengthMax -= (float)armor;

	mov	edx, DWORD PTR [esi]
	mov	eax, DWORD PTR [edx+68]
	call	eax
	mov	edi, DWORD PTR [eax+2444]
	add	edi, 1856				; 00000740H
	mov	ecx, edi
	call	?Get@nc_FloatDataSafeClass@@QAEMXZ	; nc_FloatDataSafeClass::Get
	fsub	DWORD PTR $T73394[esp+16]
	lea	ecx, DWORD PTR $T73394[esp+16]
	push	ecx
	push	edi
	fstp	DWORD PTR $T73394[esp+24]
	call	?Set@nc_FloatDataSafeClass@@QAG_NAAM@Z	; nc_FloatDataSafeClass::Set

; 1984 : 			if (Picker->As_SoldierGameObj()->Vehicle->Defense.ShieldStrength.Get() > Picker->As_SoldierGameObj()->Vehicle->Defense.ShieldStrengthMax.Get())

	mov	edx, DWORD PTR [esi]
	mov	eax, DWORD PTR [edx+68]
	mov	ecx, esi
	call	eax
	mov	ecx, DWORD PTR [eax+2444]
	add	ecx, 1852				; 0000073cH
	call	?Get@nc_FloatDataSafeClass@@QAEMXZ	; nc_FloatDataSafeClass::Get
	fstp	DWORD PTR tv315[esp+12]
	mov	edx, DWORD PTR [esi]
	mov	eax, DWORD PTR [edx+68]
	mov	ecx, esi
	call	eax
	mov	ecx, DWORD PTR [eax+2444]
	add	ecx, 1856				; 00000740H
	call	?Get@nc_FloatDataSafeClass@@QAEMXZ	; nc_FloatDataSafeClass::Get
	fcomp	DWORD PTR tv315[esp+12]
	fnstsw	ax
	test	ah, 5
	jp	SHORT $LN28@Pick@23

; 1985 : 				Picker->As_SoldierGameObj()->Vehicle->Defense.ShieldStrength = Picker->As_SoldierGameObj()->Vehicle->Defense.ShieldStrengthMax.Get();

	mov	edx, DWORD PTR [esi]
	mov	eax, DWORD PTR [edx+68]
	mov	ecx, esi
	call	eax
	mov	ecx, DWORD PTR [eax+2444]
	add	ecx, 1856				; 00000740H
	call	?Get@nc_FloatDataSafeClass@@QAEMXZ	; nc_FloatDataSafeClass::Get
	fstp	DWORD PTR $T73399[esp+12]
	mov	edx, DWORD PTR [esi]
	mov	eax, DWORD PTR [edx+68]
	mov	ecx, esi
	call	eax
	mov	eax, DWORD PTR [eax+2444]
	lea	ecx, DWORD PTR $T73399[esp+12]
	add	eax, 1852				; 0000073cH
	push	ecx
	push	eax
$LN30@Pick@23:
	call	?Set@nc_FloatDataSafeClass@@QAG_NAAM@Z	; nc_FloatDataSafeClass::Set
$LN28@Pick@23:

; 1986 : 		}
; 1987 : 		Picker->As_SoldierGameObj()->Vehicle->Set_Object_Dirty_Bit(nc_DB_OCCASIONAL, true);

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

; 1988 : 		PagePlayer(Picker->Player->PlayerId, "Crate God has %s your current vehicle armor to %0.f!", rnd == 0 ? "increased" : "decreased", Picker->As_SoldierGameObj()->Vehicle->Defense.ShieldStrengthMax.Get());

	test	ebx, ebx
	mov	edi, OFFSET ??_C@_09EKNJOMFB@increased?$AA@
	je	SHORT $LN7@Pick@23
	mov	edi, OFFSET ??_C@_09DNHCPJDM@decreased?$AA@
$LN7@Pick@23:
	mov	edx, DWORD PTR [esi]
	mov	eax, DWORD PTR [edx+68]
	mov	ecx, esi
	call	eax
	mov	ecx, DWORD PTR [eax+2444]
	add	ecx, 1856				; 00000740H
	call	?Get@nc_FloatDataSafeClass@@QAEMXZ	; nc_FloatDataSafeClass::Get
	mov	ecx, DWORD PTR [esi+2400]
	mov	edx, DWORD PTR [ecx+1884]
	sub	esp, 8
	fstp	QWORD PTR [esp]
	push	edi
	push	OFFSET ??_C@_0DF@LOPNABBO@Crate?5God?5has?5?$CFs?5your?5current?5ve@
	push	edx
	call	?PagePlayer@@YAXHPBDZZ			; PagePlayer
	add	esp, 20					; 00000014H
	pop	edi

; 1989 : 		gzLogger("_CRATE", "%ls picked up a Vehicle %s Crate.", Picker->Player->PlayerName.m_Buffer, rnd == 0 ? "Armor" : "De-Armor");

	test	ebx, ebx
	pop	ebx
	mov	eax, OFFSET ??_C@_05JOOFIMIN@Armor?$AA@
	je	SHORT $LN9@Pick@23
	mov	eax, OFFSET ??_C@_08HMDBJNAI@De?9Armor?$AA@
$LN9@Pick@23:
	push	eax
	mov	eax, DWORD PTR [esi+2400]
	mov	ecx, DWORD PTR [eax+1880]
	push	ecx
	push	OFFSET ??_C@_0CC@JIHEPFKC@?$CFls?5picked?5up?5a?5Vehicle?5?$CFs?5Crate@
	push	OFFSET ??_C@_06LJACFPMC@_CRATE?$AA@
	call	?gzLogger@@YAXPBD0ZZ			; gzLogger
	add	esp, 16					; 00000010H

; 1990 : 		return true;

	mov	al, 1
	pop	esi

; 1991 : 	};

	pop	ecx
	ret	4
?Pick@Crate_VehicleMaxArmor@@EAE_NPAVnc_SmartGameObj@@@Z ENDP ; Crate_VehicleMaxArmor::Pick
_TEXT	ENDS
PUBLIC	??_7Crate_VehicleMaxHealth@@6B@			; Crate_VehicleMaxHealth::`vftable'
PUBLIC	??0Crate_VehicleMaxHealth@@QAE@XZ		; Crate_VehicleMaxHealth::Crate_VehicleMaxHealth
PUBLIC	??_R4Crate_VehicleMaxHealth@@6B@		; Crate_VehicleMaxHealth::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVCrate_VehicleMaxHealth@@@8		; Crate_VehicleMaxHealth `RTTI Type Descriptor'
PUBLIC	??_R3Crate_VehicleMaxHealth@@8			; Crate_VehicleMaxHealth::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2Crate_VehicleMaxHealth@@8			; Crate_VehicleMaxHealth::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@Crate_VehicleMaxHealth@@8		; Crate_VehicleMaxHealth::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?GetName@Crate_VehicleMaxHealth@@EAEPBDXZ	; Crate_VehicleMaxHealth::GetName
PUBLIC	?GetType@Crate_VehicleMaxHealth@@EAEHXZ		; Crate_VehicleMaxHealth::GetType
PUBLIC	?GetPercent@Crate_VehicleMaxHealth@@EAEIXZ	; Crate_VehicleMaxHealth::GetPercent
PUBLIC	?SkipDefaultOutput@Crate_VehicleMaxHealth@@EAE_NXZ ; Crate_VehicleMaxHealth::SkipDefaultOutput
PUBLIC	?Pick@Crate_VehicleMaxHealth@@EAE_NPAVnc_SmartGameObj@@@Z ; Crate_VehicleMaxHealth::Pick
;	COMDAT ??_R1A@?0A@EA@Crate_VehicleMaxHealth@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@Crate_VehicleMaxHealth@@8 DD FLAT:??_R0?AVCrate_VehicleMaxHealth@@@8 ; Crate_VehicleMaxHealth::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3Crate_VehicleMaxHealth@@8
rdata$r	ENDS
;	COMDAT ??_R2Crate_VehicleMaxHealth@@8
rdata$r	SEGMENT
??_R2Crate_VehicleMaxHealth@@8 DD FLAT:??_R1A@?0A@EA@Crate_VehicleMaxHealth@@8 ; Crate_VehicleMaxHealth::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzCrateBase@@8
rdata$r	ENDS
;	COMDAT ??_R3Crate_VehicleMaxHealth@@8
rdata$r	SEGMENT
??_R3Crate_VehicleMaxHealth@@8 DD 00H			; Crate_VehicleMaxHealth::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2Crate_VehicleMaxHealth@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVCrate_VehicleMaxHealth@@@8
_DATA	SEGMENT
??_R0?AVCrate_VehicleMaxHealth@@@8 DD FLAT:??_7type_info@@6B@ ; Crate_VehicleMaxHealth `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVCrate_VehicleMaxHealth@@', 00H
_DATA	ENDS
;	COMDAT ??_R4Crate_VehicleMaxHealth@@6B@
rdata$r	SEGMENT
??_R4Crate_VehicleMaxHealth@@6B@ DD 00H			; Crate_VehicleMaxHealth::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVCrate_VehicleMaxHealth@@@8
	DD	FLAT:??_R3Crate_VehicleMaxHealth@@8
rdata$r	ENDS
;	COMDAT ??_7Crate_VehicleMaxHealth@@6B@
CONST	SEGMENT
??_7Crate_VehicleMaxHealth@@6B@ DD FLAT:??_R4Crate_VehicleMaxHealth@@6B@ ; Crate_VehicleMaxHealth::`vftable'
	DD	FLAT:?GetName@Crate_VehicleMaxHealth@@EAEPBDXZ
	DD	FLAT:?GetType@Crate_VehicleMaxHealth@@EAEHXZ
	DD	FLAT:?GetPercent@Crate_VehicleMaxHealth@@EAEIXZ
	DD	FLAT:?SkipDefaultOutput@Crate_VehicleMaxHealth@@EAE_NXZ
	DD	FLAT:?Pick@Crate_VehicleMaxHealth@@EAE_NPAVnc_SmartGameObj@@@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0Crate_VehicleMaxHealth@@QAE@XZ
_TEXT	SEGMENT
??0Crate_VehicleMaxHealth@@QAE@XZ PROC			; Crate_VehicleMaxHealth::Crate_VehicleMaxHealth, COMDAT
; _this$ = ecx
	xor	eax, eax
	push	esi
	mov	esi, ecx
	mov	DWORD PTR [esi+4], eax
	mov	BYTE PTR [esi+8], al
	mov	DWORD PTR [esi], OFFSET ??_7gzCrateBase@@6B@
	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	mov	eax, esi
	je	SHORT $LN8@Crate_Vehi@2
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], esi
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN8@Crate_Vehi@2:
	mov	DWORD PTR [esi], OFFSET ??_7Crate_VehicleMaxHealth@@6B@
	pop	esi
	ret	0
??0Crate_VehicleMaxHealth@@QAE@XZ ENDP			; Crate_VehicleMaxHealth::Crate_VehicleMaxHealth
_TEXT	ENDS
PUBLIC	??_C@_0BD@PPEOPBFL@Vehicle?5Max?5Health?$AA@	; `string'
;	COMDAT ??_C@_0BD@PPEOPBFL@Vehicle?5Max?5Health?$AA@
CONST	SEGMENT
??_C@_0BD@PPEOPBFL@Vehicle?5Max?5Health?$AA@ DB 'Vehicle Max Health', 00H ; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?GetName@Crate_VehicleMaxHealth@@EAEPBDXZ
_TEXT	SEGMENT
?GetName@Crate_VehicleMaxHealth@@EAEPBDXZ PROC		; Crate_VehicleMaxHealth::GetName, COMDAT
; _this$ = ecx

; 1998 : 		return "Vehicle Max Health";

	mov	eax, OFFSET ??_C@_0BD@PPEOPBFL@Vehicle?5Max?5Health?$AA@

; 1999 : 	};

	ret	0
?GetName@Crate_VehicleMaxHealth@@EAEPBDXZ ENDP		; Crate_VehicleMaxHealth::GetName
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetType@Crate_VehicleMaxHealth@@EAEHXZ
_TEXT	SEGMENT
?GetType@Crate_VehicleMaxHealth@@EAEHXZ PROC		; Crate_VehicleMaxHealth::GetType, COMDAT
; _this$ = ecx

; 2002 : 		return CRATE_VEHICLE;

	mov	eax, 2

; 2003 : 	};

	ret	0
?GetType@Crate_VehicleMaxHealth@@EAEHXZ ENDP		; Crate_VehicleMaxHealth::GetType
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetPercent@Crate_VehicleMaxHealth@@EAEIXZ
_TEXT	SEGMENT
?GetPercent@Crate_VehicleMaxHealth@@EAEIXZ PROC		; Crate_VehicleMaxHealth::GetPercent, COMDAT
; _this$ = ecx

; 2006 : 		return this->m_percent->vMaxHealth;

	mov	eax, DWORD PTR ?m_percent@gzCrateBase@@1PBUgzCratePercentStruct@@B ; gzCrateBase::m_percent
	mov	eax, DWORD PTR [eax+108]

; 2007 : 	};

	ret	0
?GetPercent@Crate_VehicleMaxHealth@@EAEIXZ ENDP		; Crate_VehicleMaxHealth::GetPercent
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?SkipDefaultOutput@Crate_VehicleMaxHealth@@EAE_NXZ
_TEXT	SEGMENT
?SkipDefaultOutput@Crate_VehicleMaxHealth@@EAE_NXZ PROC	; Crate_VehicleMaxHealth::SkipDefaultOutput, COMDAT
; _this$ = ecx

; 2010 : 		return true;

	mov	al, 1

; 2011 : 	};

	ret	0
?SkipDefaultOutput@Crate_VehicleMaxHealth@@EAE_NXZ ENDP	; Crate_VehicleMaxHealth::SkipDefaultOutput
_TEXT	ENDS
PUBLIC	??_C@_09PLAABBKN@De?9Health?$AA@		; `string'
PUBLIC	??_C@_0DG@PLOOLPIH@Crate?5God?5has?5?$CFs?5your?5current?5ve@ ; `string'
;	COMDAT ??_C@_09PLAABBKN@De?9Health?$AA@
; File d:\source code\fds lib\new\fds_def.h
CONST	SEGMENT
??_C@_09PLAABBKN@De?9Health?$AA@ DB 'De-Health', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_0DG@PLOOLPIH@Crate?5God?5has?5?$CFs?5your?5current?5ve@
CONST	SEGMENT
??_C@_0DG@PLOOLPIH@Crate?5God?5has?5?$CFs?5your?5current?5ve@ DB 'Crate G'
	DB	'od has %s your current vehicle health to %0.f!', 00H ; `string'
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
CONST	ENDS
;	COMDAT ?Pick@Crate_VehicleMaxHealth@@EAE_NPAVnc_SmartGameObj@@@Z
_TEXT	SEGMENT
$T73473 = -4						; size = 4
$T73468 = -4						; size = 4
_health$ = -4						; size = 4
tv315 = 8						; size = 4
$T73478 = 8						; size = 4
_Picker$ = 8						; size = 4
?Pick@Crate_VehicleMaxHealth@@EAE_NPAVnc_SmartGameObj@@@Z PROC ; Crate_VehicleMaxHealth::Pick, COMDAT
; _this$ = ecx

; 2013 : 	{

	push	ecx
	push	esi

; 2014 : 		int health = gzRandom.Get_Int(5, 50), rnd = gzRandom.Get_Int(0, 1);

	mov	esi, DWORD PTR ?gzRandom@@3VaRandom@@A
	mov	eax, esi
	add	esi, 1
	cmp	eax, 64					; 00000040H
	jle	SHORT $LN14@Pick@24
	mov	esi, 1
$LN14@Pick@24:
	mov	ecx, DWORD PTR ?gzRandom@@3VaRandom@@A+4
	imul	ecx, 22695475				; 015a4e33H
	add	ecx, esi
	push	ebx
	xor	edx, edx
	mov	eax, ecx
	push	edi
	shr	eax, 16					; 00000010H
	mov	edi, 46					; 0000002eH
	div	edi
	add	edx, 5
	mov	DWORD PTR _health$[esp+16], edx
	mov	edx, esi
	add	esi, 1
	cmp	edx, 64					; 00000040H
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A, esi
	jle	SHORT $LN21@Pick@24
	mov	esi, 1
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A, esi
$LN21@Pick@24:

; 2015 : 		if (rnd == 0)
; 2016 : 			Picker->As_SoldierGameObj()->Vehicle->Defense.HealthMax += (float)health;

	fild	DWORD PTR _health$[esp+16]
	imul	ecx, 22695475				; 015a4e33H
	fstp	DWORD PTR $T73468[esp+16]
	add	ecx, esi
	mov	esi, DWORD PTR _Picker$[esp+12]
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A+4, ecx
	shr	ecx, 16					; 00000010H
	and	ecx, 1
	mov	ebx, ecx
	mov	ecx, esi
	jne	SHORT $LN3@Pick@24
	mov	eax, DWORD PTR [esi]
	mov	edx, DWORD PTR [eax+68]
	call	edx
	mov	edi, DWORD PTR [eax+2444]
	add	edi, 1844				; 00000734H
	mov	ecx, edi
	call	?Get@nc_FloatDataSafeClass@@QAEMXZ	; nc_FloatDataSafeClass::Get
	fadd	DWORD PTR $T73468[esp+16]
	lea	eax, DWORD PTR $T73468[esp+16]
	push	eax
	fstp	DWORD PTR $T73468[esp+20]
	push	edi

; 2017 : 		else

	jmp	$LN30@Pick@24
$LN3@Pick@24:

; 2018 : 		{
; 2019 : 			Picker->As_SoldierGameObj()->Vehicle->Defense.HealthMax -= (float)health;

	mov	edx, DWORD PTR [esi]
	mov	eax, DWORD PTR [edx+68]
	call	eax
	mov	edi, DWORD PTR [eax+2444]
	add	edi, 1844				; 00000734H
	mov	ecx, edi
	call	?Get@nc_FloatDataSafeClass@@QAEMXZ	; nc_FloatDataSafeClass::Get
	fsub	DWORD PTR $T73473[esp+16]
	lea	ecx, DWORD PTR $T73473[esp+16]
	push	ecx
	push	edi
	fstp	DWORD PTR $T73473[esp+24]
	call	?Set@nc_FloatDataSafeClass@@QAG_NAAM@Z	; nc_FloatDataSafeClass::Set

; 2020 : 			if (Picker->As_SoldierGameObj()->Vehicle->Defense.Health.Get() > Picker->As_SoldierGameObj()->Vehicle->Defense.HealthMax.Get())

	mov	edx, DWORD PTR [esi]
	mov	eax, DWORD PTR [edx+68]
	mov	ecx, esi
	call	eax
	mov	ecx, DWORD PTR [eax+2444]
	add	ecx, 1840				; 00000730H
	call	?Get@nc_FloatDataSafeClass@@QAEMXZ	; nc_FloatDataSafeClass::Get
	fstp	DWORD PTR tv315[esp+12]
	mov	edx, DWORD PTR [esi]
	mov	eax, DWORD PTR [edx+68]
	mov	ecx, esi
	call	eax
	mov	ecx, DWORD PTR [eax+2444]
	add	ecx, 1844				; 00000734H
	call	?Get@nc_FloatDataSafeClass@@QAEMXZ	; nc_FloatDataSafeClass::Get
	fcomp	DWORD PTR tv315[esp+12]
	fnstsw	ax
	test	ah, 5
	jp	SHORT $LN28@Pick@24

; 2021 : 				Picker->As_SoldierGameObj()->Vehicle->Defense.Health = Picker->As_SoldierGameObj()->Vehicle->Defense.HealthMax.Get();

	mov	edx, DWORD PTR [esi]
	mov	eax, DWORD PTR [edx+68]
	mov	ecx, esi
	call	eax
	mov	ecx, DWORD PTR [eax+2444]
	add	ecx, 1844				; 00000734H
	call	?Get@nc_FloatDataSafeClass@@QAEMXZ	; nc_FloatDataSafeClass::Get
	fstp	DWORD PTR $T73478[esp+12]
	mov	edx, DWORD PTR [esi]
	mov	eax, DWORD PTR [edx+68]
	mov	ecx, esi
	call	eax
	mov	eax, DWORD PTR [eax+2444]
	lea	ecx, DWORD PTR $T73478[esp+12]
	add	eax, 1840				; 00000730H
	push	ecx
	push	eax
$LN30@Pick@24:
	call	?Set@nc_FloatDataSafeClass@@QAG_NAAM@Z	; nc_FloatDataSafeClass::Set
$LN28@Pick@24:

; 2022 : 		}
; 2023 : 		Picker->As_SoldierGameObj()->Vehicle->Set_Object_Dirty_Bit(nc_DB_OCCASIONAL, true);

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

; 2024 : 		PagePlayer(Picker->Player->PlayerId, "Crate God has %s your current vehicle health to %0.f!", rnd == 0 ? "increased" : "decreased", Picker->As_SoldierGameObj()->Vehicle->Defense.HealthMax.Get());

	test	ebx, ebx
	mov	edi, OFFSET ??_C@_09EKNJOMFB@increased?$AA@
	je	SHORT $LN7@Pick@24
	mov	edi, OFFSET ??_C@_09DNHCPJDM@decreased?$AA@
$LN7@Pick@24:
	mov	edx, DWORD PTR [esi]
	mov	eax, DWORD PTR [edx+68]
	mov	ecx, esi
	call	eax
	mov	ecx, DWORD PTR [eax+2444]
	add	ecx, 1844				; 00000734H
	call	?Get@nc_FloatDataSafeClass@@QAEMXZ	; nc_FloatDataSafeClass::Get
	mov	ecx, DWORD PTR [esi+2400]
	mov	edx, DWORD PTR [ecx+1884]
	sub	esp, 8
	fstp	QWORD PTR [esp]
	push	edi
	push	OFFSET ??_C@_0DG@PLOOLPIH@Crate?5God?5has?5?$CFs?5your?5current?5ve@
	push	edx
	call	?PagePlayer@@YAXHPBDZZ			; PagePlayer
	add	esp, 20					; 00000014H
	pop	edi

; 2025 : 		gzLogger("_CRATE", "%ls picked up a Vehicle %s Crate.", Picker->Player->PlayerName.m_Buffer, rnd == 0 ? "Health" : "De-Health");

	test	ebx, ebx
	pop	ebx
	mov	eax, OFFSET ??_C@_06GGDALCBD@Health?$AA@
	je	SHORT $LN9@Pick@24
	mov	eax, OFFSET ??_C@_09PLAABBKN@De?9Health?$AA@
$LN9@Pick@24:
	push	eax
	mov	eax, DWORD PTR [esi+2400]
	mov	ecx, DWORD PTR [eax+1880]
	push	ecx
	push	OFFSET ??_C@_0CC@JIHEPFKC@?$CFls?5picked?5up?5a?5Vehicle?5?$CFs?5Crate@
	push	OFFSET ??_C@_06LJACFPMC@_CRATE?$AA@
	call	?gzLogger@@YAXPBD0ZZ			; gzLogger
	add	esp, 16					; 00000010H

; 2026 : 		return true;

	mov	al, 1
	pop	esi

; 2027 : 	};

	pop	ecx
	ret	4
?Pick@Crate_VehicleMaxHealth@@EAE_NPAVnc_SmartGameObj@@@Z ENDP ; Crate_VehicleMaxHealth::Pick
_TEXT	ENDS
PUBLIC	??_7Crate_VehicleRepair@@6B@			; Crate_VehicleRepair::`vftable'
PUBLIC	??0Crate_VehicleRepair@@QAE@XZ			; Crate_VehicleRepair::Crate_VehicleRepair
PUBLIC	??_R4Crate_VehicleRepair@@6B@			; Crate_VehicleRepair::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVCrate_VehicleRepair@@@8			; Crate_VehicleRepair `RTTI Type Descriptor'
PUBLIC	??_R3Crate_VehicleRepair@@8			; Crate_VehicleRepair::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2Crate_VehicleRepair@@8			; Crate_VehicleRepair::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@Crate_VehicleRepair@@8		; Crate_VehicleRepair::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?GetName@Crate_VehicleRepair@@EAEPBDXZ		; Crate_VehicleRepair::GetName
PUBLIC	?GetType@Crate_VehicleRepair@@EAEHXZ		; Crate_VehicleRepair::GetType
PUBLIC	?GetPercent@Crate_VehicleRepair@@EAEIXZ		; Crate_VehicleRepair::GetPercent
PUBLIC	?Pick@Crate_VehicleRepair@@EAE_NPAVnc_SmartGameObj@@@Z ; Crate_VehicleRepair::Pick
;	COMDAT ??_R1A@?0A@EA@Crate_VehicleRepair@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@Crate_VehicleRepair@@8 DD FLAT:??_R0?AVCrate_VehicleRepair@@@8 ; Crate_VehicleRepair::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3Crate_VehicleRepair@@8
rdata$r	ENDS
;	COMDAT ??_R2Crate_VehicleRepair@@8
rdata$r	SEGMENT
??_R2Crate_VehicleRepair@@8 DD FLAT:??_R1A@?0A@EA@Crate_VehicleRepair@@8 ; Crate_VehicleRepair::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzCrateBase@@8
rdata$r	ENDS
;	COMDAT ??_R3Crate_VehicleRepair@@8
rdata$r	SEGMENT
??_R3Crate_VehicleRepair@@8 DD 00H			; Crate_VehicleRepair::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2Crate_VehicleRepair@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVCrate_VehicleRepair@@@8
_DATA	SEGMENT
??_R0?AVCrate_VehicleRepair@@@8 DD FLAT:??_7type_info@@6B@ ; Crate_VehicleRepair `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVCrate_VehicleRepair@@', 00H
_DATA	ENDS
;	COMDAT ??_R4Crate_VehicleRepair@@6B@
rdata$r	SEGMENT
??_R4Crate_VehicleRepair@@6B@ DD 00H			; Crate_VehicleRepair::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVCrate_VehicleRepair@@@8
	DD	FLAT:??_R3Crate_VehicleRepair@@8
rdata$r	ENDS
;	COMDAT ??_7Crate_VehicleRepair@@6B@
CONST	SEGMENT
??_7Crate_VehicleRepair@@6B@ DD FLAT:??_R4Crate_VehicleRepair@@6B@ ; Crate_VehicleRepair::`vftable'
	DD	FLAT:?GetName@Crate_VehicleRepair@@EAEPBDXZ
	DD	FLAT:?GetType@Crate_VehicleRepair@@EAEHXZ
	DD	FLAT:?GetPercent@Crate_VehicleRepair@@EAEIXZ
	DD	FLAT:?SkipDefaultOutput@gzCrateBase@@UAE_NXZ
	DD	FLAT:?Pick@Crate_VehicleRepair@@EAE_NPAVnc_SmartGameObj@@@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0Crate_VehicleRepair@@QAE@XZ
_TEXT	SEGMENT
??0Crate_VehicleRepair@@QAE@XZ PROC			; Crate_VehicleRepair::Crate_VehicleRepair, COMDAT
; _this$ = ecx
	xor	eax, eax
	push	esi
	mov	esi, ecx
	mov	DWORD PTR [esi+4], eax
	mov	BYTE PTR [esi+8], al
	mov	DWORD PTR [esi], OFFSET ??_7gzCrateBase@@6B@
	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	mov	eax, esi
	je	SHORT $LN8@Crate_Vehi@3
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], esi
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN8@Crate_Vehi@3:
	mov	DWORD PTR [esi], OFFSET ??_7Crate_VehicleRepair@@6B@
	pop	esi
	ret	0
??0Crate_VehicleRepair@@QAE@XZ ENDP			; Crate_VehicleRepair::Crate_VehicleRepair
_TEXT	ENDS
PUBLIC	??_C@_0P@EMGBDNEJ@Vehicle?5Repair?$AA@		; `string'
;	COMDAT ??_C@_0P@EMGBDNEJ@Vehicle?5Repair?$AA@
CONST	SEGMENT
??_C@_0P@EMGBDNEJ@Vehicle?5Repair?$AA@ DB 'Vehicle Repair', 00H ; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?GetName@Crate_VehicleRepair@@EAEPBDXZ
_TEXT	SEGMENT
?GetName@Crate_VehicleRepair@@EAEPBDXZ PROC		; Crate_VehicleRepair::GetName, COMDAT
; _this$ = ecx

; 2034 : 		return "Vehicle Repair";

	mov	eax, OFFSET ??_C@_0P@EMGBDNEJ@Vehicle?5Repair?$AA@

; 2035 : 	};

	ret	0
?GetName@Crate_VehicleRepair@@EAEPBDXZ ENDP		; Crate_VehicleRepair::GetName
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetType@Crate_VehicleRepair@@EAEHXZ
_TEXT	SEGMENT
?GetType@Crate_VehicleRepair@@EAEHXZ PROC		; Crate_VehicleRepair::GetType, COMDAT
; _this$ = ecx

; 2038 : 		return CRATE_VEHICLE;

	mov	eax, 2

; 2039 : 	};

	ret	0
?GetType@Crate_VehicleRepair@@EAEHXZ ENDP		; Crate_VehicleRepair::GetType
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetPercent@Crate_VehicleRepair@@EAEIXZ
_TEXT	SEGMENT
?GetPercent@Crate_VehicleRepair@@EAEIXZ PROC		; Crate_VehicleRepair::GetPercent, COMDAT
; _this$ = ecx

; 2042 : 		return this->m_percent->vRepair;

	mov	eax, DWORD PTR ?m_percent@gzCrateBase@@1PBUgzCratePercentStruct@@B ; gzCrateBase::m_percent
	mov	eax, DWORD PTR [eax+120]

; 2043 : 	};

	ret	0
?GetPercent@Crate_VehicleRepair@@EAEIXZ ENDP		; Crate_VehicleRepair::GetPercent
_TEXT	ENDS
PUBLIC	??_C@_0DM@ICJMOJHC@?$FLCrate?$FN?3?5Crate?5God?5has?5fully?5rep@ ; `string'
;	COMDAT ??_C@_0DM@ICJMOJHC@?$FLCrate?$FN?3?5Crate?5God?5has?5fully?5rep@
; File d:\source code\fds lib\new\fds_def.h
CONST	SEGMENT
??_C@_0DM@ICJMOJHC@?$FLCrate?$FN?3?5Crate?5God?5has?5fully?5rep@ DB '[Cra'
	DB	'te]: Crate God has fully repaired your current vehicle.', 00H ; `string'
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
CONST	ENDS
;	COMDAT ?Pick@Crate_VehicleRepair@@EAE_NPAVnc_SmartGameObj@@@Z
_TEXT	SEGMENT
tv228 = 8						; size = 4
tv226 = 8						; size = 4
$T73517 = 8						; size = 4
$T73512 = 8						; size = 4
_Picker$ = 8						; size = 4
?Pick@Crate_VehicleRepair@@EAE_NPAVnc_SmartGameObj@@@Z PROC ; Crate_VehicleRepair::Pick, COMDAT
; _this$ = ecx

; 2045 : 	{

	push	esi

; 2046 : 		// Full health and armor doesn't need to repair
; 2047 : 		if (Picker->As_SoldierGameObj()->Vehicle->Defense.Health.Get() == Picker->As_SoldierGameObj()->Vehicle->Defense.HealthMax.Get()
; 2048 : 			&& Picker->As_SoldierGameObj()->Vehicle->Defense.ShieldStrength.Get() == Picker->As_SoldierGameObj()->Vehicle->Defense.ShieldStrengthMax.Get())

	mov	esi, DWORD PTR _Picker$[esp]
	mov	eax, DWORD PTR [esi]
	mov	edx, DWORD PTR [eax+68]
	mov	ecx, esi
	call	edx
	mov	ecx, DWORD PTR [eax+2444]
	add	ecx, 1840				; 00000730H
	call	?Get@nc_FloatDataSafeClass@@QAEMXZ	; nc_FloatDataSafeClass::Get
	fstp	DWORD PTR tv228[esp]
	mov	eax, DWORD PTR [esi]
	mov	edx, DWORD PTR [eax+68]
	mov	ecx, esi
	call	edx
	mov	ecx, DWORD PTR [eax+2444]
	add	ecx, 1844				; 00000734H
	call	?Get@nc_FloatDataSafeClass@@QAEMXZ	; nc_FloatDataSafeClass::Get
	fld	DWORD PTR tv228[esp]
	fucompp
	fnstsw	ax
	test	ah, 68					; 00000044H
	jp	SHORT $LN1@Pick@25
	mov	eax, DWORD PTR [esi]
	mov	edx, DWORD PTR [eax+68]
	mov	ecx, esi
	call	edx
	mov	ecx, DWORD PTR [eax+2444]
	add	ecx, 1852				; 0000073cH
	call	?Get@nc_FloatDataSafeClass@@QAEMXZ	; nc_FloatDataSafeClass::Get
	fstp	DWORD PTR tv226[esp]
	mov	eax, DWORD PTR [esi]
	mov	edx, DWORD PTR [eax+68]
	mov	ecx, esi
	call	edx
	mov	ecx, DWORD PTR [eax+2444]
	add	ecx, 1856				; 00000740H
	call	?Get@nc_FloatDataSafeClass@@QAEMXZ	; nc_FloatDataSafeClass::Get
	fld	DWORD PTR tv226[esp]
	fucompp
	fnstsw	ax
	test	ah, 68					; 00000044H
	jp	SHORT $LN1@Pick@25

; 2049 : 		{
; 2050 : 			return false;

	xor	al, al
	pop	esi

; 2058 : 	};

	ret	4
$LN1@Pick@25:

; 2051 : 		}
; 2052 : 
; 2053 : 		Picker->As_SoldierGameObj()->Vehicle->Defense.Health = Picker->As_SoldierGameObj()->Vehicle->Defense.HealthMax.Get();

	mov	eax, DWORD PTR [esi]
	mov	edx, DWORD PTR [eax+68]
	mov	ecx, esi
	call	edx
	mov	ecx, DWORD PTR [eax+2444]
	add	ecx, 1844				; 00000734H
	call	?Get@nc_FloatDataSafeClass@@QAEMXZ	; nc_FloatDataSafeClass::Get
	fstp	DWORD PTR $T73512[esp]
	mov	eax, DWORD PTR [esi]
	mov	edx, DWORD PTR [eax+68]
	mov	ecx, esi
	call	edx
	mov	eax, DWORD PTR [eax+2444]
	lea	ecx, DWORD PTR $T73512[esp]
	add	eax, 1840				; 00000730H
	push	ecx
	push	eax
	call	?Set@nc_FloatDataSafeClass@@QAG_NAAM@Z	; nc_FloatDataSafeClass::Set

; 2054 : 		Picker->As_SoldierGameObj()->Vehicle->Defense.ShieldStrength = Picker->As_SoldierGameObj()->Vehicle->Defense.ShieldStrengthMax.Get();

	mov	edx, DWORD PTR [esi]
	mov	eax, DWORD PTR [edx+68]
	mov	ecx, esi
	call	eax
	mov	ecx, DWORD PTR [eax+2444]
	add	ecx, 1856				; 00000740H
	call	?Get@nc_FloatDataSafeClass@@QAEMXZ	; nc_FloatDataSafeClass::Get
	fstp	DWORD PTR $T73517[esp]
	mov	edx, DWORD PTR [esi]
	mov	eax, DWORD PTR [edx+68]
	mov	ecx, esi
	call	eax
	mov	eax, DWORD PTR [eax+2444]
	lea	ecx, DWORD PTR $T73517[esp]
	add	eax, 1852				; 0000073cH
	push	ecx
	push	eax
	call	?Set@nc_FloatDataSafeClass@@QAG_NAAM@Z	; nc_FloatDataSafeClass::Set

; 2055 : 		Picker->As_SoldierGameObj()->Vehicle->Set_Object_Dirty_Bit(nc_DB_OCCASIONAL, true);

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

; 2056 : 		PagePlayer(Picker->Player->PlayerId, "[Crate]: Crate God has fully repaired your current vehicle.");

	mov	ecx, DWORD PTR [esi+2400]
	mov	edx, DWORD PTR [ecx+1884]
	push	OFFSET ??_C@_0DM@ICJMOJHC@?$FLCrate?$FN?3?5Crate?5God?5has?5fully?5rep@
	push	edx
	call	?PagePlayer@@YAXHPBDZZ			; PagePlayer
	add	esp, 8

; 2057 : 		return true;

	mov	al, 1
	pop	esi

; 2058 : 	};

	ret	4
?Pick@Crate_VehicleRepair@@EAE_NPAVnc_SmartGameObj@@@Z ENDP ; Crate_VehicleRepair::Pick
_TEXT	ENDS
PUBLIC	??_7Crate_VehicleAutoRepair@@6B@		; Crate_VehicleAutoRepair::`vftable'
PUBLIC	??0Crate_VehicleAutoRepair@@QAE@XZ		; Crate_VehicleAutoRepair::Crate_VehicleAutoRepair
PUBLIC	??_R4Crate_VehicleAutoRepair@@6B@		; Crate_VehicleAutoRepair::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVCrate_VehicleAutoRepair@@@8		; Crate_VehicleAutoRepair `RTTI Type Descriptor'
PUBLIC	??_R3Crate_VehicleAutoRepair@@8			; Crate_VehicleAutoRepair::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2Crate_VehicleAutoRepair@@8			; Crate_VehicleAutoRepair::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@Crate_VehicleAutoRepair@@8	; Crate_VehicleAutoRepair::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?GetName@Crate_VehicleAutoRepair@@EAEPBDXZ	; Crate_VehicleAutoRepair::GetName
PUBLIC	?GetType@Crate_VehicleAutoRepair@@EAEHXZ	; Crate_VehicleAutoRepair::GetType
PUBLIC	?GetPercent@Crate_VehicleAutoRepair@@EAEIXZ	; Crate_VehicleAutoRepair::GetPercent
PUBLIC	?Pick@Crate_VehicleAutoRepair@@EAE_NPAVnc_SmartGameObj@@@Z ; Crate_VehicleAutoRepair::Pick
;	COMDAT ??_R1A@?0A@EA@Crate_VehicleAutoRepair@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@Crate_VehicleAutoRepair@@8 DD FLAT:??_R0?AVCrate_VehicleAutoRepair@@@8 ; Crate_VehicleAutoRepair::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3Crate_VehicleAutoRepair@@8
rdata$r	ENDS
;	COMDAT ??_R2Crate_VehicleAutoRepair@@8
rdata$r	SEGMENT
??_R2Crate_VehicleAutoRepair@@8 DD FLAT:??_R1A@?0A@EA@Crate_VehicleAutoRepair@@8 ; Crate_VehicleAutoRepair::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzCrateBase@@8
rdata$r	ENDS
;	COMDAT ??_R3Crate_VehicleAutoRepair@@8
rdata$r	SEGMENT
??_R3Crate_VehicleAutoRepair@@8 DD 00H			; Crate_VehicleAutoRepair::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2Crate_VehicleAutoRepair@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVCrate_VehicleAutoRepair@@@8
_DATA	SEGMENT
??_R0?AVCrate_VehicleAutoRepair@@@8 DD FLAT:??_7type_info@@6B@ ; Crate_VehicleAutoRepair `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVCrate_VehicleAutoRepair@@', 00H
_DATA	ENDS
;	COMDAT ??_R4Crate_VehicleAutoRepair@@6B@
rdata$r	SEGMENT
??_R4Crate_VehicleAutoRepair@@6B@ DD 00H		; Crate_VehicleAutoRepair::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVCrate_VehicleAutoRepair@@@8
	DD	FLAT:??_R3Crate_VehicleAutoRepair@@8
rdata$r	ENDS
;	COMDAT ??_7Crate_VehicleAutoRepair@@6B@
CONST	SEGMENT
??_7Crate_VehicleAutoRepair@@6B@ DD FLAT:??_R4Crate_VehicleAutoRepair@@6B@ ; Crate_VehicleAutoRepair::`vftable'
	DD	FLAT:?GetName@Crate_VehicleAutoRepair@@EAEPBDXZ
	DD	FLAT:?GetType@Crate_VehicleAutoRepair@@EAEHXZ
	DD	FLAT:?GetPercent@Crate_VehicleAutoRepair@@EAEIXZ
	DD	FLAT:?SkipDefaultOutput@gzCrateBase@@UAE_NXZ
	DD	FLAT:?Pick@Crate_VehicleAutoRepair@@EAE_NPAVnc_SmartGameObj@@@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0Crate_VehicleAutoRepair@@QAE@XZ
_TEXT	SEGMENT
??0Crate_VehicleAutoRepair@@QAE@XZ PROC			; Crate_VehicleAutoRepair::Crate_VehicleAutoRepair, COMDAT
; _this$ = ecx
	xor	eax, eax
	push	esi
	mov	esi, ecx
	mov	DWORD PTR [esi+4], eax
	mov	BYTE PTR [esi+8], al
	mov	DWORD PTR [esi], OFFSET ??_7gzCrateBase@@6B@
	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	mov	eax, esi
	je	SHORT $LN8@Crate_Vehi@4
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], esi
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN8@Crate_Vehi@4:
	mov	DWORD PTR [esi], OFFSET ??_7Crate_VehicleAutoRepair@@6B@
	pop	esi
	ret	0
??0Crate_VehicleAutoRepair@@QAE@XZ ENDP			; Crate_VehicleAutoRepair::Crate_VehicleAutoRepair
_TEXT	ENDS
PUBLIC	??_C@_0BE@NHDDNOLE@Vehicle?5Auto?5Repair?$AA@	; `string'
;	COMDAT ??_C@_0BE@NHDDNOLE@Vehicle?5Auto?5Repair?$AA@
CONST	SEGMENT
??_C@_0BE@NHDDNOLE@Vehicle?5Auto?5Repair?$AA@ DB 'Vehicle Auto Repair', 00H ; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?GetName@Crate_VehicleAutoRepair@@EAEPBDXZ
_TEXT	SEGMENT
?GetName@Crate_VehicleAutoRepair@@EAEPBDXZ PROC		; Crate_VehicleAutoRepair::GetName, COMDAT
; _this$ = ecx

; 2065 : 		return "Vehicle Auto Repair";

	mov	eax, OFFSET ??_C@_0BE@NHDDNOLE@Vehicle?5Auto?5Repair?$AA@

; 2066 : 	};

	ret	0
?GetName@Crate_VehicleAutoRepair@@EAEPBDXZ ENDP		; Crate_VehicleAutoRepair::GetName
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetType@Crate_VehicleAutoRepair@@EAEHXZ
_TEXT	SEGMENT
?GetType@Crate_VehicleAutoRepair@@EAEHXZ PROC		; Crate_VehicleAutoRepair::GetType, COMDAT
; _this$ = ecx

; 2069 : 		return CRATE_VEHICLE;

	mov	eax, 2

; 2070 : 	};

	ret	0
?GetType@Crate_VehicleAutoRepair@@EAEHXZ ENDP		; Crate_VehicleAutoRepair::GetType
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetPercent@Crate_VehicleAutoRepair@@EAEIXZ
_TEXT	SEGMENT
?GetPercent@Crate_VehicleAutoRepair@@EAEIXZ PROC	; Crate_VehicleAutoRepair::GetPercent, COMDAT
; _this$ = ecx

; 2073 : 		return this->m_percent->vAutoRepair;

	mov	eax, DWORD PTR ?m_percent@gzCrateBase@@1PBUgzCratePercentStruct@@B ; gzCrateBase::m_percent
	mov	eax, DWORD PTR [eax+112]

; 2074 : 	};

	ret	0
?GetPercent@Crate_VehicleAutoRepair@@EAEIXZ ENDP	; Crate_VehicleAutoRepair::GetPercent
_TEXT	ENDS
PUBLIC	??_C@_0FC@PPCHOGBM@?$FLCrate?$FN?3?5Crate?5God?5has?5installed@ ; `string'
;	COMDAT ??_C@_0FC@PPCHOGBM@?$FLCrate?$FN?3?5Crate?5God?5has?5installed@
; File d:\source code\alib\include\avector.h
CONST	SEGMENT
??_C@_0FC@PPCHOGBM@?$FLCrate?$FN?3?5Crate?5God?5has?5installed@ DB '[Crat'
	DB	'e]: Crate God has installed a self-repair component to your c'
	DB	'urrent vehicle.', 00H			; `string'
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
CONST	ENDS
;	COMDAT ?Pick@Crate_VehicleAutoRepair@@EAE_NPAVnc_SmartGameObj@@@Z
_TEXT	SEGMENT
_repair$ = -8						; size = 8
_Picker$ = 8						; size = 4
?Pick@Crate_VehicleAutoRepair@@EAE_NPAVnc_SmartGameObj@@@Z PROC ; Crate_VehicleAutoRepair::Pick, COMDAT
; _this$ = ecx

; 2077 : 		for (unsigned int i = 0; i < gzCrateMgr->m_data->VehicleAutoRepair.Count(); i++)

	mov	eax, DWORD PTR ?gzCrateMgr@@3PAVgzManagerCrateClass@@A ; gzCrateMgr
	mov	eax, DWORD PTR [eax+60]
	sub	esp, 8
	push	ebx
	push	esi
	xor	esi, esi
	cmp	DWORD PTR [eax+128], esi
	push	edi
	mov	edi, DWORD PTR _Picker$[esp+16]
	jbe	SHORT $LN2@Pick@26
	npad	4
$LL4@Pick@26:
	mov	ecx, DWORD PTR [eax+120]

; 2078 : 		{
; 2079 : 			if (gzCrateMgr->m_data->VehicleAutoRepair[i].vehId == Picker->As_SoldierGameObj()->Vehicle->NetworkID)

	mov	edx, DWORD PTR [edi]
	mov	eax, DWORD PTR [edx+68]
	lea	ebx, DWORD PTR [ecx+esi*8]
	mov	ecx, edi
	call	eax
	mov	ecx, DWORD PTR [eax+2444]
	mov	edx, DWORD PTR [ebx]
	cmp	edx, DWORD PTR [ecx+12]
	je	SHORT $LN12@Pick@26
	mov	eax, DWORD PTR ?gzCrateMgr@@3PAVgzManagerCrateClass@@A ; gzCrateMgr
	mov	eax, DWORD PTR [eax+60]
	add	esi, 1
	cmp	esi, DWORD PTR [eax+128]
	jb	SHORT $LL4@Pick@26
$LN2@Pick@26:

; 2081 : 		}
; 2082 : 		gzCrateVehicleAutoRepairStruct repair;
; 2083 : 		repair.vehId = Picker->As_SoldierGameObj()->Vehicle->NetworkID;

	mov	edx, DWORD PTR [edi]
	mov	eax, DWORD PTR [edx+68]
	mov	ecx, edi
	call	eax

; 2084 : 		repair.counter = 1.0f;

	fld1
	mov	ecx, DWORD PTR [eax+2444]
	mov	edx, DWORD PTR [ecx+12]
	fstp	DWORD PTR _repair$[esp+24]

; 2085 : 		gzCrateMgr->m_data->VehicleAutoRepair.Add(repair);

	mov	eax, DWORD PTR ?gzCrateMgr@@3PAVgzManagerCrateClass@@A ; gzCrateMgr
	mov	DWORD PTR _repair$[esp+20], edx
	mov	eax, DWORD PTR [eax+60]
	mov	edx, DWORD PTR [eax+116]
	mov	edx, DWORD PTR [edx+12]
	lea	ecx, DWORD PTR [eax+116]
	lea	eax, DWORD PTR _repair$[esp+20]
	push	eax
	call	edx

; 2086 : 		PagePlayer(Picker->Player->PlayerId, "[Crate]: Crate God has installed a self-repair component to your current vehicle.");

	mov	eax, DWORD PTR [edi+2400]
	mov	ecx, DWORD PTR [eax+1884]
	push	OFFSET ??_C@_0FC@PPCHOGBM@?$FLCrate?$FN?3?5Crate?5God?5has?5installed@
	push	ecx
	call	?PagePlayer@@YAXHPBDZZ			; PagePlayer
	add	esp, 8
	pop	edi
	pop	esi

; 2087 : 		return true;

	mov	al, 1
	pop	ebx

; 2088 : 	};

	add	esp, 8
	ret	4
$LN12@Pick@26:
	pop	edi
	pop	esi

; 2080 : 				return false;

	xor	al, al
	pop	ebx

; 2088 : 	};

	add	esp, 8
	ret	4
?Pick@Crate_VehicleAutoRepair@@EAE_NPAVnc_SmartGameObj@@@Z ENDP ; Crate_VehicleAutoRepair::Pick
_TEXT	ENDS
PUBLIC	??_7Crate_VehicleDemoTruck@@6B@			; Crate_VehicleDemoTruck::`vftable'
PUBLIC	??0Crate_VehicleDemoTruck@@QAE@XZ		; Crate_VehicleDemoTruck::Crate_VehicleDemoTruck
PUBLIC	??_R4Crate_VehicleDemoTruck@@6B@		; Crate_VehicleDemoTruck::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVCrate_VehicleDemoTruck@@@8		; Crate_VehicleDemoTruck `RTTI Type Descriptor'
PUBLIC	??_R3Crate_VehicleDemoTruck@@8			; Crate_VehicleDemoTruck::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2Crate_VehicleDemoTruck@@8			; Crate_VehicleDemoTruck::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@Crate_VehicleDemoTruck@@8		; Crate_VehicleDemoTruck::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?GetName@Crate_VehicleDemoTruck@@EAEPBDXZ	; Crate_VehicleDemoTruck::GetName
PUBLIC	?GetType@Crate_VehicleDemoTruck@@EAEHXZ		; Crate_VehicleDemoTruck::GetType
PUBLIC	?GetPercent@Crate_VehicleDemoTruck@@EAEIXZ	; Crate_VehicleDemoTruck::GetPercent
PUBLIC	?Pick@Crate_VehicleDemoTruck@@EAE_NPAVnc_SmartGameObj@@@Z ; Crate_VehicleDemoTruck::Pick
;	COMDAT ??_R1A@?0A@EA@Crate_VehicleDemoTruck@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@Crate_VehicleDemoTruck@@8 DD FLAT:??_R0?AVCrate_VehicleDemoTruck@@@8 ; Crate_VehicleDemoTruck::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3Crate_VehicleDemoTruck@@8
rdata$r	ENDS
;	COMDAT ??_R2Crate_VehicleDemoTruck@@8
rdata$r	SEGMENT
??_R2Crate_VehicleDemoTruck@@8 DD FLAT:??_R1A@?0A@EA@Crate_VehicleDemoTruck@@8 ; Crate_VehicleDemoTruck::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzCrateBase@@8
rdata$r	ENDS
;	COMDAT ??_R3Crate_VehicleDemoTruck@@8
rdata$r	SEGMENT
??_R3Crate_VehicleDemoTruck@@8 DD 00H			; Crate_VehicleDemoTruck::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2Crate_VehicleDemoTruck@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVCrate_VehicleDemoTruck@@@8
_DATA	SEGMENT
??_R0?AVCrate_VehicleDemoTruck@@@8 DD FLAT:??_7type_info@@6B@ ; Crate_VehicleDemoTruck `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVCrate_VehicleDemoTruck@@', 00H
_DATA	ENDS
;	COMDAT ??_R4Crate_VehicleDemoTruck@@6B@
rdata$r	SEGMENT
??_R4Crate_VehicleDemoTruck@@6B@ DD 00H			; Crate_VehicleDemoTruck::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVCrate_VehicleDemoTruck@@@8
	DD	FLAT:??_R3Crate_VehicleDemoTruck@@8
rdata$r	ENDS
;	COMDAT ??_7Crate_VehicleDemoTruck@@6B@
CONST	SEGMENT
??_7Crate_VehicleDemoTruck@@6B@ DD FLAT:??_R4Crate_VehicleDemoTruck@@6B@ ; Crate_VehicleDemoTruck::`vftable'
	DD	FLAT:?GetName@Crate_VehicleDemoTruck@@EAEPBDXZ
	DD	FLAT:?GetType@Crate_VehicleDemoTruck@@EAEHXZ
	DD	FLAT:?GetPercent@Crate_VehicleDemoTruck@@EAEIXZ
	DD	FLAT:?SkipDefaultOutput@gzCrateBase@@UAE_NXZ
	DD	FLAT:?Pick@Crate_VehicleDemoTruck@@EAE_NPAVnc_SmartGameObj@@@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0Crate_VehicleDemoTruck@@QAE@XZ
_TEXT	SEGMENT
??0Crate_VehicleDemoTruck@@QAE@XZ PROC			; Crate_VehicleDemoTruck::Crate_VehicleDemoTruck, COMDAT
; _this$ = ecx
	xor	eax, eax
	push	esi
	mov	esi, ecx
	mov	DWORD PTR [esi+4], eax
	mov	BYTE PTR [esi+8], al
	mov	DWORD PTR [esi], OFFSET ??_7gzCrateBase@@6B@
	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	mov	eax, esi
	je	SHORT $LN8@Crate_Vehi@5
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], esi
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN8@Crate_Vehi@5:
	mov	DWORD PTR [esi], OFFSET ??_7Crate_VehicleDemoTruck@@6B@
	pop	esi
	ret	0
??0Crate_VehicleDemoTruck@@QAE@XZ ENDP			; Crate_VehicleDemoTruck::Crate_VehicleDemoTruck
_TEXT	ENDS
PUBLIC	??_C@_0L@CKAJGIMH@Demo?5Truck?$AA@		; `string'
;	COMDAT ??_C@_0L@CKAJGIMH@Demo?5Truck?$AA@
CONST	SEGMENT
??_C@_0L@CKAJGIMH@Demo?5Truck?$AA@ DB 'Demo Truck', 00H	; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?GetName@Crate_VehicleDemoTruck@@EAEPBDXZ
_TEXT	SEGMENT
?GetName@Crate_VehicleDemoTruck@@EAEPBDXZ PROC		; Crate_VehicleDemoTruck::GetName, COMDAT
; _this$ = ecx

; 2095 : 		return "Demo Truck";

	mov	eax, OFFSET ??_C@_0L@CKAJGIMH@Demo?5Truck?$AA@

; 2096 : 	};

	ret	0
?GetName@Crate_VehicleDemoTruck@@EAEPBDXZ ENDP		; Crate_VehicleDemoTruck::GetName
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetType@Crate_VehicleDemoTruck@@EAEHXZ
_TEXT	SEGMENT
?GetType@Crate_VehicleDemoTruck@@EAEHXZ PROC		; Crate_VehicleDemoTruck::GetType, COMDAT
; _this$ = ecx

; 2099 : 		return CRATE_VEHICLE;

	mov	eax, 2

; 2100 : 	};

	ret	0
?GetType@Crate_VehicleDemoTruck@@EAEHXZ ENDP		; Crate_VehicleDemoTruck::GetType
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetPercent@Crate_VehicleDemoTruck@@EAEIXZ
_TEXT	SEGMENT
?GetPercent@Crate_VehicleDemoTruck@@EAEIXZ PROC		; Crate_VehicleDemoTruck::GetPercent, COMDAT
; _this$ = ecx

; 2103 : 		return this->m_percent->vDemoTruck;

	mov	eax, DWORD PTR ?m_percent@gzCrateBase@@1PBUgzCratePercentStruct@@B ; gzCrateBase::m_percent
	mov	eax, DWORD PTR [eax+128]

; 2104 : 	};

	ret	0
?GetPercent@Crate_VehicleDemoTruck@@EAEIXZ ENDP		; Crate_VehicleDemoTruck::GetPercent
_TEXT	ENDS
PUBLIC	??_C@_0JH@MEOGFLHH@?$FLCrate?$FN?3?5Explosives?5have?5been?5at@ ; `string'
;	COMDAT ??_C@_0JH@MEOGFLHH@?$FLCrate?$FN?3?5Explosives?5have?5been?5at@
; File d:\source code\alib\include\avector.h
CONST	SEGMENT
??_C@_0JH@MEOGFLHH@?$FLCrate?$FN?3?5Explosives?5have?5been?5at@ DB '[Crat'
	DB	'e]: Explosives have been attached to your current vehicle. On'
	DB	'ce it dies, they will explode and make a BIG BOOM with random'
	DB	' damage!!!!! Good luck!', 00H		; `string'
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
CONST	ENDS
;	COMDAT ?Pick@Crate_VehicleDemoTruck@@EAE_NPAVnc_SmartGameObj@@@Z
_TEXT	SEGMENT
_Picker$ = 8						; size = 4
?Pick@Crate_VehicleDemoTruck@@EAE_NPAVnc_SmartGameObj@@@Z PROC ; Crate_VehicleDemoTruck::Pick, COMDAT
; _this$ = ecx

; 2107 : 		for (unsigned int i = 0; i < gzCrateMgr->m_data->DemoTruck.Count(); i++)

	mov	ecx, DWORD PTR ?gzCrateMgr@@3PAVgzManagerCrateClass@@A ; gzCrateMgr
	mov	eax, DWORD PTR [ecx+60]
	push	ebx
	push	esi
	xor	esi, esi
	cmp	DWORD PTR [eax+144], esi
	push	edi
	mov	edi, DWORD PTR _Picker$[esp+8]
	jbe	SHORT $LN2@Pick@27
	npad	6
$LL4@Pick@27:
	mov	eax, DWORD PTR [eax+136]

; 2108 : 		{
; 2109 : 			if (gzCrateMgr->m_data->DemoTruck[i] == Picker->As_SoldierGameObj()->Vehicle->NetworkID)

	mov	edx, DWORD PTR [edi]
	lea	ebx, DWORD PTR [eax+esi*4]
	mov	eax, DWORD PTR [edx+68]
	mov	ecx, edi
	call	eax
	mov	ecx, DWORD PTR [eax+2444]
	mov	edx, DWORD PTR [ebx]
	cmp	edx, DWORD PTR [ecx+12]
	je	SHORT $LN12@Pick@27
	mov	ecx, DWORD PTR ?gzCrateMgr@@3PAVgzManagerCrateClass@@A ; gzCrateMgr
	mov	eax, DWORD PTR [ecx+60]
	add	esi, 1
	cmp	esi, DWORD PTR [eax+144]
	jb	SHORT $LL4@Pick@27
$LN2@Pick@27:

; 2111 : 		}
; 2112 : 		gzCrateMgr->m_data->DemoTruck.Add(Picker->As_SoldierGameObj()->Vehicle->NetworkID);

	mov	eax, DWORD PTR [ecx+60]
	mov	esi, DWORD PTR [eax+132]
	mov	edx, DWORD PTR [edi]
	mov	eax, DWORD PTR [edx+68]
	mov	ecx, edi
	add	esi, 12					; 0000000cH
	call	eax
	mov	ecx, DWORD PTR [eax+2444]
	mov	edx, DWORD PTR ?gzCrateMgr@@3PAVgzManagerCrateClass@@A ; gzCrateMgr
	mov	eax, DWORD PTR [esi]
	add	ecx, 12					; 0000000cH
	push	ecx
	mov	ecx, DWORD PTR [edx+60]
	add	ecx, 132				; 00000084H
	call	eax

; 2113 : 		PagePlayer(Picker->Player->PlayerId, "[Crate]: Explosives have been attached to your current vehicle. Once it dies, they will explode and make a BIG BOOM with random damage!!!!! Good luck!");

	mov	ecx, DWORD PTR [edi+2400]
	mov	edx, DWORD PTR [ecx+1884]
	push	OFFSET ??_C@_0JH@MEOGFLHH@?$FLCrate?$FN?3?5Explosives?5have?5been?5at@
	push	edx
	call	?PagePlayer@@YAXHPBDZZ			; PagePlayer
	add	esp, 8
	pop	edi
	pop	esi

; 2114 : 		return true;

	mov	al, 1
	pop	ebx

; 2115 : 	};

	ret	4
$LN12@Pick@27:
	pop	edi
	pop	esi

; 2110 : 				return false;

	xor	al, al
	pop	ebx

; 2115 : 	};

	ret	4
?Pick@Crate_VehicleDemoTruck@@EAE_NPAVnc_SmartGameObj@@@Z ENDP ; Crate_VehicleDemoTruck::Pick
_TEXT	ENDS
PUBLIC	??_7Crate_VehicleAntiEnemy@@6B@			; Crate_VehicleAntiEnemy::`vftable'
PUBLIC	??0Crate_VehicleAntiEnemy@@QAE@XZ		; Crate_VehicleAntiEnemy::Crate_VehicleAntiEnemy
PUBLIC	??_R4Crate_VehicleAntiEnemy@@6B@		; Crate_VehicleAntiEnemy::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVCrate_VehicleAntiEnemy@@@8		; Crate_VehicleAntiEnemy `RTTI Type Descriptor'
PUBLIC	??_R3Crate_VehicleAntiEnemy@@8			; Crate_VehicleAntiEnemy::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2Crate_VehicleAntiEnemy@@8			; Crate_VehicleAntiEnemy::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@Crate_VehicleAntiEnemy@@8		; Crate_VehicleAntiEnemy::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?GetName@Crate_VehicleAntiEnemy@@EAEPBDXZ	; Crate_VehicleAntiEnemy::GetName
PUBLIC	?GetType@Crate_VehicleAntiEnemy@@EAEHXZ		; Crate_VehicleAntiEnemy::GetType
PUBLIC	?GetPercent@Crate_VehicleAntiEnemy@@EAEIXZ	; Crate_VehicleAntiEnemy::GetPercent
PUBLIC	?Pick@Crate_VehicleAntiEnemy@@EAE_NPAVnc_SmartGameObj@@@Z ; Crate_VehicleAntiEnemy::Pick
;	COMDAT ??_R1A@?0A@EA@Crate_VehicleAntiEnemy@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@Crate_VehicleAntiEnemy@@8 DD FLAT:??_R0?AVCrate_VehicleAntiEnemy@@@8 ; Crate_VehicleAntiEnemy::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3Crate_VehicleAntiEnemy@@8
rdata$r	ENDS
;	COMDAT ??_R2Crate_VehicleAntiEnemy@@8
rdata$r	SEGMENT
??_R2Crate_VehicleAntiEnemy@@8 DD FLAT:??_R1A@?0A@EA@Crate_VehicleAntiEnemy@@8 ; Crate_VehicleAntiEnemy::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzCrateBase@@8
rdata$r	ENDS
;	COMDAT ??_R3Crate_VehicleAntiEnemy@@8
rdata$r	SEGMENT
??_R3Crate_VehicleAntiEnemy@@8 DD 00H			; Crate_VehicleAntiEnemy::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2Crate_VehicleAntiEnemy@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVCrate_VehicleAntiEnemy@@@8
_DATA	SEGMENT
??_R0?AVCrate_VehicleAntiEnemy@@@8 DD FLAT:??_7type_info@@6B@ ; Crate_VehicleAntiEnemy `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVCrate_VehicleAntiEnemy@@', 00H
_DATA	ENDS
;	COMDAT ??_R4Crate_VehicleAntiEnemy@@6B@
rdata$r	SEGMENT
??_R4Crate_VehicleAntiEnemy@@6B@ DD 00H			; Crate_VehicleAntiEnemy::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVCrate_VehicleAntiEnemy@@@8
	DD	FLAT:??_R3Crate_VehicleAntiEnemy@@8
rdata$r	ENDS
;	COMDAT ??_7Crate_VehicleAntiEnemy@@6B@
CONST	SEGMENT
??_7Crate_VehicleAntiEnemy@@6B@ DD FLAT:??_R4Crate_VehicleAntiEnemy@@6B@ ; Crate_VehicleAntiEnemy::`vftable'
	DD	FLAT:?GetName@Crate_VehicleAntiEnemy@@EAEPBDXZ
	DD	FLAT:?GetType@Crate_VehicleAntiEnemy@@EAEHXZ
	DD	FLAT:?GetPercent@Crate_VehicleAntiEnemy@@EAEIXZ
	DD	FLAT:?SkipDefaultOutput@gzCrateBase@@UAE_NXZ
	DD	FLAT:?Pick@Crate_VehicleAntiEnemy@@EAE_NPAVnc_SmartGameObj@@@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0Crate_VehicleAntiEnemy@@QAE@XZ
_TEXT	SEGMENT
??0Crate_VehicleAntiEnemy@@QAE@XZ PROC			; Crate_VehicleAntiEnemy::Crate_VehicleAntiEnemy, COMDAT
; _this$ = ecx
	xor	eax, eax
	push	esi
	mov	esi, ecx
	mov	DWORD PTR [esi+4], eax
	mov	BYTE PTR [esi+8], al
	mov	DWORD PTR [esi], OFFSET ??_7gzCrateBase@@6B@
	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	mov	eax, esi
	je	SHORT $LN8@Crate_Vehi@6
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], esi
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN8@Crate_Vehi@6:
	mov	DWORD PTR [esi], OFFSET ??_7Crate_VehicleAntiEnemy@@6B@
	pop	esi
	ret	0
??0Crate_VehicleAntiEnemy@@QAE@XZ ENDP			; Crate_VehicleAntiEnemy::Crate_VehicleAntiEnemy
_TEXT	ENDS
PUBLIC	??_C@_0BD@NEDKHGMD@Vehicle?5Anti?5Enemy?$AA@	; `string'
;	COMDAT ??_C@_0BD@NEDKHGMD@Vehicle?5Anti?5Enemy?$AA@
CONST	SEGMENT
??_C@_0BD@NEDKHGMD@Vehicle?5Anti?5Enemy?$AA@ DB 'Vehicle Anti Enemy', 00H ; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?GetName@Crate_VehicleAntiEnemy@@EAEPBDXZ
_TEXT	SEGMENT
?GetName@Crate_VehicleAntiEnemy@@EAEPBDXZ PROC		; Crate_VehicleAntiEnemy::GetName, COMDAT
; _this$ = ecx

; 2122 : 		return "Vehicle Anti Enemy";

	mov	eax, OFFSET ??_C@_0BD@NEDKHGMD@Vehicle?5Anti?5Enemy?$AA@

; 2123 : 	};

	ret	0
?GetName@Crate_VehicleAntiEnemy@@EAEPBDXZ ENDP		; Crate_VehicleAntiEnemy::GetName
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetType@Crate_VehicleAntiEnemy@@EAEHXZ
_TEXT	SEGMENT
?GetType@Crate_VehicleAntiEnemy@@EAEHXZ PROC		; Crate_VehicleAntiEnemy::GetType, COMDAT
; _this$ = ecx

; 2126 : 		return CRATE_VEHICLE;

	mov	eax, 2

; 2127 : 	};

	ret	0
?GetType@Crate_VehicleAntiEnemy@@EAEHXZ ENDP		; Crate_VehicleAntiEnemy::GetType
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetPercent@Crate_VehicleAntiEnemy@@EAEIXZ
_TEXT	SEGMENT
?GetPercent@Crate_VehicleAntiEnemy@@EAEIXZ PROC		; Crate_VehicleAntiEnemy::GetPercent, COMDAT
; _this$ = ecx

; 2130 : 		return this->m_percent->vAntiEnemy;

	mov	eax, DWORD PTR ?m_percent@gzCrateBase@@1PBUgzCratePercentStruct@@B ; gzCrateBase::m_percent
	mov	eax, DWORD PTR [eax+116]

; 2131 : 	};

	ret	0
?GetPercent@Crate_VehicleAntiEnemy@@EAEIXZ ENDP		; Crate_VehicleAntiEnemy::GetPercent
_TEXT	ENDS
PUBLIC	?Length@?$nc_VectorClass@PAVnc_SoldierGameObj@@@@QAEHXZ ; nc_VectorClass<nc_SoldierGameObj *>::Length
; Function compile flags: /Ogtpy
; File d:\source code\fds lib\new\fds_vector.h
;	COMDAT ?Length@?$nc_VectorClass@PAVnc_SoldierGameObj@@@@QAEHXZ
_TEXT	SEGMENT
?Length@?$nc_VectorClass@PAVnc_SoldierGameObj@@@@QAEHXZ PROC ; nc_VectorClass<nc_SoldierGameObj *>::Length, COMDAT
; _this$ = ecx

; 337  : 		return VectorMax;

	mov	eax, DWORD PTR [ecx+8]

; 338  : 	}

	ret	0
?Length@?$nc_VectorClass@PAVnc_SoldierGameObj@@@@QAEHXZ ENDP ; nc_VectorClass<nc_SoldierGameObj *>::Length
_TEXT	ENDS
PUBLIC	??_C@_0LA@JBAMFDJE@?$FLCrate?$FN?3?5Crate?5God?5has?5installed@ ; `string'
EXTRN	?Check@nc_TransitionManager@@SAXPAVnc_SoldierGameObj@@_N@Z:PROC ; nc_TransitionManager::Check
;	COMDAT ??_C@_0LA@JBAMFDJE@?$FLCrate?$FN?3?5Crate?5God?5has?5installed@
CONST	SEGMENT
??_C@_0LA@JBAMFDJE@?$FLCrate?$FN?3?5Crate?5God?5has?5installed@ DB '[Crat'
	DB	'e]: Crate God has installed an Anti-Enemy(based on the defaul'
	DB	't side of the vehicle) component to your current vehicle. The'
	DB	'refore they will be killed when trying to enter.', 00H ; `string'
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
CONST	ENDS
;	COMDAT ?Pick@Crate_VehicleAntiEnemy@@EAE_NPAVnc_SmartGameObj@@@Z
_TEXT	SEGMENT
_Picker$ = 8						; size = 4
?Pick@Crate_VehicleAntiEnemy@@EAE_NPAVnc_SmartGameObj@@@Z PROC ; Crate_VehicleAntiEnemy::Pick, COMDAT
; _this$ = ecx

; 2134 : 		for (unsigned int i = 0; i < gzCrateMgr->m_data->VehicleAntiEnemy.Count(); i++)

	mov	eax, DWORD PTR ?gzCrateMgr@@3PAVgzManagerCrateClass@@A ; gzCrateMgr
	mov	eax, DWORD PTR [eax+60]
	push	ebx
	push	esi
	mov	esi, DWORD PTR _Picker$[esp+4]
	push	edi
	xor	edi, edi
	cmp	DWORD PTR [eax+160], edi
	jbe	SHORT $LN7@Pick@28
	npad	7
$LL9@Pick@28:
	mov	ecx, DWORD PTR [eax+152]

; 2135 : 		{
; 2136 : 			if (gzCrateMgr->m_data->VehicleAntiEnemy[i] == Picker->As_SoldierGameObj()->Vehicle->NetworkID)

	mov	edx, DWORD PTR [esi]
	mov	eax, DWORD PTR [edx+68]
	lea	ebx, DWORD PTR [ecx+edi*4]
	mov	ecx, esi
	call	eax
	mov	ecx, DWORD PTR [eax+2444]
	mov	edx, DWORD PTR [ebx]
	cmp	edx, DWORD PTR [ecx+12]
	je	$LN26@Pick@28
	mov	eax, DWORD PTR ?gzCrateMgr@@3PAVgzManagerCrateClass@@A ; gzCrateMgr
	mov	eax, DWORD PTR [eax+60]
	add	edi, 1
	cmp	edi, DWORD PTR [eax+160]
	jb	SHORT $LL9@Pick@28
$LN7@Pick@28:

; 2138 : 		}
; 2139 : 		
; 2140 : 		// Check for players in the vehicle
; 2141 : 		nc_VehicleGameObj *vehicle			= gzStatic_Cast(nc_VehicleGameObj, Picker->As_SoldierGameObj()->Vehicle);

	mov	edx, DWORD PTR [esi]
	mov	eax, DWORD PTR [edx+68]
	push	ebp
	mov	ecx, esi
	call	eax

; 2142 : 		nc_VehicleGameObjDef *vehicleDef	= gzStatic_Cast(nc_VehicleGameObjDef, Picker->As_SoldierGameObj()->Vehicle->definition);

	mov	edx, DWORD PTR [esi]
	mov	edi, DWORD PTR [eax+2444]
	mov	eax, DWORD PTR [edx+68]
	mov	ecx, esi
	call	eax
	mov	ecx, DWORD PTR [eax+2444]
	mov	ebp, DWORD PTR [ecx+1724]

; 2143 : 		for (int i = 0; i < vehicle->SeatsList.Length(); i++)

	xor	ebx, ebx
	cmp	DWORD PTR [edi+2484], ebx
	jle	SHORT $LN3@Pick@28
	npad	11
$LL30@Pick@28:
	mov	edx, DWORD PTR [edi+2480]

; 2144 : 		{
; 2145 : 			if (vehicle->SeatsList[i] != NULL)

	cmp	DWORD PTR [edx+ebx*4], 0
	lea	eax, DWORD PTR [edx+ebx*4]
	je	SHORT $LN4@Pick@28

; 2146 : 			{
; 2147 : 				if (vehicleDef->PlayerType != vehicle->SeatsList[i]->PlayerType)

	mov	eax, DWORD PTR [eax]
	mov	ecx, DWORD PTR [ebp+128]
	cmp	ecx, DWORD PTR [eax+1892]
	je	SHORT $LN4@Pick@28

; 2148 : 					nc_TransitionManager::Check(vehicle->SeatsList[i], true);

	push	1
	push	eax
	call	?Check@nc_TransitionManager@@SAXPAVnc_SoldierGameObj@@_N@Z ; nc_TransitionManager::Check
	add	esp, 8
$LN4@Pick@28:
	add	ebx, 1
	cmp	ebx, DWORD PTR [edi+2484]
	jl	SHORT $LL30@Pick@28
$LN3@Pick@28:

; 2149 : 			}
; 2150 : 		}
; 2151 : 
; 2152 : 		gzCrateMgr->m_data->VehicleAntiEnemy.Add(vehicle->NetworkID);

	mov	edx, DWORD PTR ?gzCrateMgr@@3PAVgzManagerCrateClass@@A ; gzCrateMgr
	mov	eax, DWORD PTR [edx+60]
	lea	ecx, DWORD PTR [eax+148]
	mov	eax, DWORD PTR [ecx]
	mov	edx, DWORD PTR [eax+12]
	add	edi, 12					; 0000000cH
	push	edi
	call	edx

; 2153 : 		PagePlayer(Picker->Player->PlayerId, "[Crate]: Crate God has installed an Anti-Enemy(based on the default side of the vehicle) component to your current vehicle. Therefore they will be killed when trying to enter.");

	mov	eax, DWORD PTR [esi+2400]
	mov	ecx, DWORD PTR [eax+1884]
	push	OFFSET ??_C@_0LA@JBAMFDJE@?$FLCrate?$FN?3?5Crate?5God?5has?5installed@
	push	ecx
	call	?PagePlayer@@YAXHPBDZZ			; PagePlayer
	add	esp, 8
	pop	ebp
	pop	edi
	pop	esi

; 2154 : 		return true;

	mov	al, 1
	pop	ebx

; 2155 : 	};

	ret	4
$LN26@Pick@28:
	pop	edi
	pop	esi

; 2137 : 				return false;

	xor	al, al
	pop	ebx

; 2155 : 	};

	ret	4
?Pick@Crate_VehicleAntiEnemy@@EAE_NPAVnc_SmartGameObj@@@Z ENDP ; Crate_VehicleAntiEnemy::Pick
_TEXT	ENDS
PUBLIC	??_7Crate_VehicleSpy@@6B@			; Crate_VehicleSpy::`vftable'
PUBLIC	??0Crate_VehicleSpy@@QAE@XZ			; Crate_VehicleSpy::Crate_VehicleSpy
PUBLIC	??_R4Crate_VehicleSpy@@6B@			; Crate_VehicleSpy::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVCrate_VehicleSpy@@@8			; Crate_VehicleSpy `RTTI Type Descriptor'
PUBLIC	??_R3Crate_VehicleSpy@@8			; Crate_VehicleSpy::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2Crate_VehicleSpy@@8			; Crate_VehicleSpy::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@Crate_VehicleSpy@@8		; Crate_VehicleSpy::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?GetName@Crate_VehicleSpy@@EAEPBDXZ		; Crate_VehicleSpy::GetName
PUBLIC	?GetType@Crate_VehicleSpy@@EAEHXZ		; Crate_VehicleSpy::GetType
PUBLIC	?GetPercent@Crate_VehicleSpy@@EAEIXZ		; Crate_VehicleSpy::GetPercent
PUBLIC	?Pick@Crate_VehicleSpy@@EAE_NPAVnc_SmartGameObj@@@Z ; Crate_VehicleSpy::Pick
;	COMDAT ??_R1A@?0A@EA@Crate_VehicleSpy@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@Crate_VehicleSpy@@8 DD FLAT:??_R0?AVCrate_VehicleSpy@@@8 ; Crate_VehicleSpy::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3Crate_VehicleSpy@@8
rdata$r	ENDS
;	COMDAT ??_R2Crate_VehicleSpy@@8
rdata$r	SEGMENT
??_R2Crate_VehicleSpy@@8 DD FLAT:??_R1A@?0A@EA@Crate_VehicleSpy@@8 ; Crate_VehicleSpy::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzCrateBase@@8
rdata$r	ENDS
;	COMDAT ??_R3Crate_VehicleSpy@@8
rdata$r	SEGMENT
??_R3Crate_VehicleSpy@@8 DD 00H				; Crate_VehicleSpy::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2Crate_VehicleSpy@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVCrate_VehicleSpy@@@8
_DATA	SEGMENT
??_R0?AVCrate_VehicleSpy@@@8 DD FLAT:??_7type_info@@6B@	; Crate_VehicleSpy `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVCrate_VehicleSpy@@', 00H
_DATA	ENDS
;	COMDAT ??_R4Crate_VehicleSpy@@6B@
rdata$r	SEGMENT
??_R4Crate_VehicleSpy@@6B@ DD 00H			; Crate_VehicleSpy::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVCrate_VehicleSpy@@@8
	DD	FLAT:??_R3Crate_VehicleSpy@@8
rdata$r	ENDS
;	COMDAT ??_7Crate_VehicleSpy@@6B@
CONST	SEGMENT
??_7Crate_VehicleSpy@@6B@ DD FLAT:??_R4Crate_VehicleSpy@@6B@ ; Crate_VehicleSpy::`vftable'
	DD	FLAT:?GetName@Crate_VehicleSpy@@EAEPBDXZ
	DD	FLAT:?GetType@Crate_VehicleSpy@@EAEHXZ
	DD	FLAT:?GetPercent@Crate_VehicleSpy@@EAEIXZ
	DD	FLAT:?SkipDefaultOutput@gzCrateBase@@UAE_NXZ
	DD	FLAT:?Pick@Crate_VehicleSpy@@EAE_NPAVnc_SmartGameObj@@@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0Crate_VehicleSpy@@QAE@XZ
_TEXT	SEGMENT
??0Crate_VehicleSpy@@QAE@XZ PROC			; Crate_VehicleSpy::Crate_VehicleSpy, COMDAT
; _this$ = ecx
	xor	eax, eax
	push	esi
	mov	esi, ecx
	mov	DWORD PTR [esi+4], eax
	mov	BYTE PTR [esi+8], al
	mov	DWORD PTR [esi], OFFSET ??_7gzCrateBase@@6B@
	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	mov	eax, esi
	je	SHORT $LN8@Crate_Vehi@7
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], esi
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN8@Crate_Vehi@7:
	mov	DWORD PTR [esi], OFFSET ??_7Crate_VehicleSpy@@6B@
	pop	esi
	ret	0
??0Crate_VehicleSpy@@QAE@XZ ENDP			; Crate_VehicleSpy::Crate_VehicleSpy
_TEXT	ENDS
PUBLIC	??_C@_0M@LMCBLFPK@Vehicle?5Spy?$AA@		; `string'
;	COMDAT ??_C@_0M@LMCBLFPK@Vehicle?5Spy?$AA@
CONST	SEGMENT
??_C@_0M@LMCBLFPK@Vehicle?5Spy?$AA@ DB 'Vehicle Spy', 00H ; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?GetName@Crate_VehicleSpy@@EAEPBDXZ
_TEXT	SEGMENT
?GetName@Crate_VehicleSpy@@EAEPBDXZ PROC		; Crate_VehicleSpy::GetName, COMDAT
; _this$ = ecx

; 2162 : 		return "Vehicle Spy";

	mov	eax, OFFSET ??_C@_0M@LMCBLFPK@Vehicle?5Spy?$AA@

; 2163 : 	};

	ret	0
?GetName@Crate_VehicleSpy@@EAEPBDXZ ENDP		; Crate_VehicleSpy::GetName
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetType@Crate_VehicleSpy@@EAEHXZ
_TEXT	SEGMENT
?GetType@Crate_VehicleSpy@@EAEHXZ PROC			; Crate_VehicleSpy::GetType, COMDAT
; _this$ = ecx

; 2166 : 		return CRATE_VEHICLE;

	mov	eax, 2

; 2167 : 	};

	ret	0
?GetType@Crate_VehicleSpy@@EAEHXZ ENDP			; Crate_VehicleSpy::GetType
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?GetPercent@Crate_VehicleSpy@@EAEIXZ
_TEXT	SEGMENT
?GetPercent@Crate_VehicleSpy@@EAEIXZ PROC		; Crate_VehicleSpy::GetPercent, COMDAT
; _this$ = ecx

; 2170 : 		return this->m_percent->vSpy;

	mov	eax, DWORD PTR ?m_percent@gzCrateBase@@1PBUgzCratePercentStruct@@B ; gzCrateBase::m_percent
	mov	eax, DWORD PTR [eax+124]

; 2171 : 	};

	ret	0
?GetPercent@Crate_VehicleSpy@@EAEIXZ ENDP		; Crate_VehicleSpy::GetPercent
_TEXT	ENDS
PUBLIC	??_C@_0FJ@NJDJMLFM@msg?5?$FLCrate?$FN?3?5Oh?5no?$CB?5A?5?$CFs?5player?5@ ; `string'
PUBLIC	??_C@_0IG@DOBPADBM@?$FLCrate?$FN?3?5?$FLCrate?$FN?3?5Crate?5God?5has?5@ ; `string'
;	COMDAT ??_C@_0FJ@NJDJMLFM@msg?5?$FLCrate?$FN?3?5Oh?5no?$CB?5A?5?$CFs?5player?5@
CONST	SEGMENT
??_C@_0FJ@NJDJMLFM@msg?5?$FLCrate?$FN?3?5Oh?5no?$CB?5A?5?$CFs?5player?5@ DB 'm'
	DB	'sg [Crate]: Oh no! A %s player just got a Vehicle Spy crate, '
	DB	'better watch your base %s!', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_0IG@DOBPADBM@?$FLCrate?$FN?3?5?$FLCrate?$FN?3?5Crate?5God?5has?5@
CONST	SEGMENT
??_C@_0IG@DOBPADBM@?$FLCrate?$FN?3?5?$FLCrate?$FN?3?5Crate?5God?5has?5@ DB '['
	DB	'Crate]: [Crate]: Crate God has installed a spy compoment to t'
	DB	'he vehicle. Base defenses will no longer shoot at your curren'
	DB	't vehicle.', 00H				; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?Pick@Crate_VehicleSpy@@EAE_NPAVnc_SmartGameObj@@@Z
_TEXT	SEGMENT
_Picker$ = 8						; size = 4
?Pick@Crate_VehicleSpy@@EAE_NPAVnc_SmartGameObj@@@Z PROC ; Crate_VehicleSpy::Pick, COMDAT
; _this$ = ecx

; 2173 : 	{

	push	esi

; 2174 : 		if (!Picker->As_SoldierGameObj()->Vehicle->VehicleCanEnemySeen)

	mov	esi, DWORD PTR _Picker$[esp]
	mov	eax, DWORD PTR [esi]
	mov	edx, DWORD PTR [eax+68]
	mov	ecx, esi
	call	edx
	mov	eax, DWORD PTR [eax+2444]
	cmp	BYTE PTR [eax+2453], 0
	jne	SHORT $LN1@Pick@29

; 2175 : 			return false;

	xor	al, al
	pop	esi

; 2181 : 	};

	ret	4
$LN1@Pick@29:

; 2176 : 
; 2177 : 		Picker->As_SoldierGameObj()->Vehicle->VehicleCanEnemySeen = false;

	mov	edx, DWORD PTR [esi]
	mov	eax, DWORD PTR [edx+68]
	mov	ecx, esi
	call	eax
	mov	ecx, DWORD PTR [eax+2444]
	mov	BYTE PTR [ecx+2453], 0

; 2178 : 		PagePlayer(Picker->Player->PlayerId, "[Crate]: [Crate]: Crate God has installed a spy compoment to the vehicle. Base defenses will no longer shoot at your current vehicle.");

	mov	edx, DWORD PTR [esi+2400]
	mov	eax, DWORD PTR [edx+1884]
	push	OFFSET ??_C@_0IG@DOBPADBM@?$FLCrate?$FN?3?5?$FLCrate?$FN?3?5Crate?5God?5has?5@
	push	eax
	call	?PagePlayer@@YAXHPBDZZ			; PagePlayer

; 2179 : 		gzConsole::In("msg [Crate]: Oh no! A %s player just got a Vehicle Spy crate, better watch your base %s!", Picker->PlayerType == 0 ? "Nod" : "GDI", Picker->PlayerType == 0 ? "GDI" : "Nod");

	mov	esi, DWORD PTR [esi+1892]
	add	esp, 8
	test	esi, esi
	mov	ecx, OFFSET ??_C@_03IOFAJBDH@GDI?$AA@
	je	SHORT $LN9@Pick@29
	mov	ecx, OFFSET ??_C@_03OHGKCNFD@Nod?$AA@
	mov	eax, OFFSET ??_C@_03IOFAJBDH@GDI?$AA@
$LN7@Pick@29:
	push	ecx
	push	eax
	push	OFFSET ??_C@_0FJ@NJDJMLFM@msg?5?$FLCrate?$FN?3?5Oh?5no?$CB?5A?5?$CFs?5player?5@
	call	?In@gzConsole@@SAXPBDZZ			; gzConsole::In
	add	esp, 12					; 0000000cH

; 2180 : 		return true;

	mov	al, 1
	pop	esi

; 2181 : 	};

	ret	4
$LN9@Pick@29:

; 2179 : 		gzConsole::In("msg [Crate]: Oh no! A %s player just got a Vehicle Spy crate, better watch your base %s!", Picker->PlayerType == 0 ? "Nod" : "GDI", Picker->PlayerType == 0 ? "GDI" : "Nod");

	mov	eax, OFFSET ??_C@_03OHGKCNFD@Nod?$AA@
	jmp	SHORT $LN7@Pick@29
?Pick@Crate_VehicleSpy@@EAE_NPAVnc_SmartGameObj@@@Z ENDP ; Crate_VehicleSpy::Pick
_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	?CanContinue@gzEventObjectPowerupGrant@@UAE_NXZ	; gzEventObjectPowerupGrant::CanContinue
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
_TEXT	ENDS
PUBLIC	?CanContinue@gzEventSkippable@gzEventObjectPowerupGrant@@QAE_NXZ ; gzEventObjectPowerupGrant::gzEventSkippable::CanContinue
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzeventbase.h
;	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
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	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
; 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	?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@PAVaStringData@@@@UAE@XZ		; aVector<aStringData *>::~aVector<aStringData *>
; Function compile flags: /Ogtpy
; File d:\source code\alib\include\avector.h
;	COMDAT ??1?$aVector@PAVaStringData@@@@UAE@XZ
_TEXT	SEGMENT
??1?$aVector@PAVaStringData@@@@UAE@XZ PROC		; aVector<aStringData *>::~aVector<aStringData *>, 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@PAVaStringData@@@@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@PAVaStringData@@@@UAE@XZ ENDP		; aVector<aStringData *>::~aVector<aStringData *>
_TEXT	ENDS
PUBLIC	??_7?$aStringArrayBase@VaString@@@@6B@		; aStringArrayBase<aString>::`vftable'
PUBLIC	??1?$aStringArrayBase@VaString@@@@UAE@XZ	; aStringArrayBase<aString>::~aStringArrayBase<aString>
PUBLIC	??_R4?$aStringArrayBase@VaString@@@@6B@		; aStringArrayBase<aString>::`RTTI Complete Object Locator'
PUBLIC	??_R0?AV?$aStringArrayBase@VaString@@@@@8	; aStringArrayBase<aString> `RTTI Type Descriptor'
PUBLIC	??_R3?$aStringArrayBase@VaString@@@@8		; aStringArrayBase<aString>::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2?$aStringArrayBase@VaString@@@@8		; aStringArrayBase<aString>::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@?$aStringArrayBase@VaString@@@@8	; aStringArrayBase<aString>::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?Delete@?$aStringArrayBase@VaString@@@@UAEXI@Z	; aStringArrayBase<aString>::Delete
EXTRN	??_E?$aStringArrayBase@VaString@@@@UAEPAXI@Z:PROC ; aStringArrayBase<aString>::`vector deleting destructor'
;	COMDAT ??_R1A@?0A@EA@?$aStringArrayBase@VaString@@@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@?$aStringArrayBase@VaString@@@@8 DD FLAT:??_R0?AV?$aStringArrayBase@VaString@@@@@8 ; aStringArrayBase<aString>::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3?$aStringArrayBase@VaString@@@@8
rdata$r	ENDS
;	COMDAT ??_R2?$aStringArrayBase@VaString@@@@8
rdata$r	SEGMENT
??_R2?$aStringArrayBase@VaString@@@@8 DD FLAT:??_R1A@?0A@EA@?$aStringArrayBase@VaString@@@@8 ; aStringArrayBase<aString>::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@?$aVector@PAVaStringData@@@@8
rdata$r	ENDS
;	COMDAT ??_R3?$aStringArrayBase@VaString@@@@8
rdata$r	SEGMENT
??_R3?$aStringArrayBase@VaString@@@@8 DD 00H		; aStringArrayBase<aString>::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2?$aStringArrayBase@VaString@@@@8
rdata$r	ENDS
;	COMDAT ??_R0?AV?$aStringArrayBase@VaString@@@@@8
_DATA	SEGMENT
??_R0?AV?$aStringArrayBase@VaString@@@@@8 DD FLAT:??_7type_info@@6B@ ; aStringArrayBase<aString> `RTTI Type Descriptor'
	DD	00H
	DB	'.?AV?$aStringArrayBase@VaString@@@@', 00H
_DATA	ENDS
;	COMDAT ??_R4?$aStringArrayBase@VaString@@@@6B@
rdata$r	SEGMENT
??_R4?$aStringArrayBase@VaString@@@@6B@ DD 00H		; aStringArrayBase<aString>::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AV?$aStringArrayBase@VaString@@@@@8
	DD	FLAT:??_R3?$aStringArrayBase@VaString@@@@8
rdata$r	ENDS
;	COMDAT ??_7?$aStringArrayBase@VaString@@@@6B@
CONST	SEGMENT
??_7?$aStringArrayBase@VaString@@@@6B@ DD FLAT:??_R4?$aStringArrayBase@VaString@@@@6B@ ; aStringArrayBase<aString>::`vftable'
	DD	FLAT:??_E?$aStringArrayBase@VaString@@@@UAEPAXI@Z
	DD	FLAT:?Clear@?$aStringArrayBase@VaString@@@@UAEXXZ
	DD	FLAT:?Resize@?$aVector@PAVaStringData@@@@UAE_NI@Z
	DD	FLAT:?Add@?$aVector@PAVaStringData@@@@UAEXABQAVaStringData@@@Z
	DD	FLAT:?Insert@?$aVector@PAVaStringData@@@@UAEXIABQAVaStringData@@@Z
	DD	FLAT:?Delete@?$aStringArrayBase@VaString@@@@UAEXI@Z
CONST	ENDS
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$??1?$aStringArrayBase@VaString@@@@UAE@XZ DD 0ffffffffH
	DD	FLAT:__unwindfunclet$??1?$aStringArrayBase@VaString@@@@UAE@XZ$0
__ehfuncinfo$??1?$aStringArrayBase@VaString@@@@UAE@XZ DD 019930522H
	DD	01H
	DD	FLAT:__unwindtable$??1?$aStringArrayBase@VaString@@@@UAE@XZ
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	01H
; Function compile flags: /Ogtpy
; File d:\source code\alib\include\astring.h
xdata$x	ENDS
;	COMDAT ??1?$aStringArrayBase@VaString@@@@UAE@XZ
_TEXT	SEGMENT
_this$ = -16						; size = 4
__$EHRec$ = -12						; size = 12
??1?$aStringArrayBase@VaString@@@@UAE@XZ PROC		; aStringArrayBase<aString>::~aStringArrayBase<aString>, COMDAT
; _this$ = ecx

; 76   : 	{

	push	-1
	push	__ehhandler$??1?$aStringArrayBase@VaString@@@@UAE@XZ
	mov	eax, DWORD PTR fs:0
	push	eax
	mov	DWORD PTR fs:0, esp
	push	ecx
	push	esi
	mov	esi, ecx
	push	edi
	mov	DWORD PTR _this$[esp+24], esi
	mov	DWORD PTR [esi], OFFSET ??_7?$aStringArrayBase@VaString@@@@6B@
	xor	edi, edi
	mov	DWORD PTR __$EHRec$[esp+32], edi

; 77   : 		this->Clear();

	call	?Clear@?$aStringArrayBase@VaString@@@@UAEXXZ ; aStringArrayBase<aString>::Clear

; 78   : 	};

	cmp	DWORD PTR [esi+4], edi
	mov	DWORD PTR __$EHRec$[esp+32], -1
	mov	DWORD PTR [esi], OFFSET ??_7?$aVector@PAVaStringData@@@@6B@
	je	SHORT $LN11@aStringArr
	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
$LN11@aStringArr:
	mov	ecx, DWORD PTR __$EHRec$[esp+24]
	mov	DWORD PTR [esi+12], edi
	mov	DWORD PTR [esi+8], edi
	pop	edi
	pop	esi
	mov	DWORD PTR fs:0, ecx
	add	esp, 16					; 00000010H
	ret	0
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$??1?$aStringArrayBase@VaString@@@@UAE@XZ$0:
	mov	ecx, DWORD PTR _this$[ebp]
	jmp	??1?$aVector@PAVaStringData@@@@UAE@XZ	; aVector<aStringData *>::~aVector<aStringData *>
__ehhandler$??1?$aStringArrayBase@VaString@@@@UAE@XZ:
	mov	eax, OFFSET __ehfuncinfo$??1?$aStringArrayBase@VaString@@@@UAE@XZ
	jmp	___CxxFrameHandler3
text$x	ENDS
??1?$aStringArrayBase@VaString@@@@UAE@XZ ENDP		; aStringArrayBase<aString>::~aStringArrayBase<aString>
; Function compile flags: /Ogtpy
;	COMDAT ?Delete@?$aStringArrayBase@VaString@@@@UAEXI@Z
_TEXT	SEGMENT
_index$ = 8						; size = 4
?Delete@?$aStringArrayBase@VaString@@@@UAEXI@Z PROC	; aStringArrayBase<aString>::Delete, COMDAT
; _this$ = ecx

; 114  : 	{

	push	esi
	push	edi

; 115  : 		if (index >= this->m_items)

	mov	edi, DWORD PTR _index$[esp+4]
	mov	esi, ecx
	cmp	edi, DWORD PTR [esi+12]
	jae	SHORT $LN2@Delete@7

; 116  : 			return;
; 117  : 		this->m_vector[index]->DecRef();

	mov	eax, DWORD PTR [esi+4]
	mov	ecx, DWORD PTR [eax+edi*4]
	call	?DecRef@aStringData@@QAEXXZ		; aStringData::DecRef

; 118  : 		this->aVector<aStringData*>::Delete(index);

	push	edi
	mov	ecx, esi
	call	?Delete@?$aVector@PAVaStringData@@@@UAEXI@Z ; aVector<aStringData *>::Delete
$LN2@Delete@7:
	pop	edi
	pop	esi

; 119  : 	};

	ret	4
?Delete@?$aStringArrayBase@VaString@@@@UAEXI@Z ENDP	; aStringArrayBase<aString>::Delete
_TEXT	ENDS
PUBLIC	??1?$aVector@I@@UAE@XZ				; aVector<unsigned int>::~aVector<unsigned int>
; Function compile flags: /Ogtpy
; File d:\source code\alib\include\avector.h
;	COMDAT ??1?$aVector@I@@UAE@XZ
_TEXT	SEGMENT
??1?$aVector@I@@UAE@XZ PROC				; aVector<unsigned int>::~aVector<unsigned int>, 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@I@@6B@
	je	SHORT $LN8@aVector@2
	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@2:
	mov	DWORD PTR [esi+12], edi
	mov	DWORD PTR [esi+8], edi
	pop	edi
	pop	esi

; 36   : 	};

	ret	0
??1?$aVector@I@@UAE@XZ ENDP				; aVector<unsigned int>::~aVector<unsigned int>
_TEXT	ENDS
PUBLIC	??1?$aVector@Unc_Vector3@@@@UAE@XZ		; aVector<nc_Vector3>::~aVector<nc_Vector3>
; Function compile flags: /Ogtpy
;	COMDAT ??1?$aVector@Unc_Vector3@@@@UAE@XZ
_TEXT	SEGMENT
??1?$aVector@Unc_Vector3@@@@UAE@XZ PROC			; aVector<nc_Vector3>::~aVector<nc_Vector3>, 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@Unc_Vector3@@@@6B@
	je	SHORT $LN8@aVector@3
	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@3:
	mov	DWORD PTR [esi+12], edi
	mov	DWORD PTR [esi+8], edi
	pop	edi
	pop	esi

; 36   : 	};

	ret	0
??1?$aVector@Unc_Vector3@@@@UAE@XZ ENDP			; aVector<nc_Vector3>::~aVector<nc_Vector3>
_TEXT	ENDS
PUBLIC	??1?$aVector@PAUgzCrateStealthMineStruct@@@@UAE@XZ ; aVector<gzCrateStealthMineStruct *>::~aVector<gzCrateStealthMineStruct *>
; Function compile flags: /Ogtpy
;	COMDAT ??1?$aVector@PAUgzCrateStealthMineStruct@@@@UAE@XZ
_TEXT	SEGMENT
??1?$aVector@PAUgzCrateStealthMineStruct@@@@UAE@XZ PROC	; aVector<gzCrateStealthMineStruct *>::~aVector<gzCrateStealthMineStruct *>, 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@PAUgzCrateStealthMineStruct@@@@6B@
	je	SHORT $LN8@aVector@4
	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@4:
	mov	DWORD PTR [esi+12], edi
	mov	DWORD PTR [esi+8], edi
	pop	edi
	pop	esi

; 36   : 	};

	ret	0
??1?$aVector@PAUgzCrateStealthMineStruct@@@@UAE@XZ ENDP	; aVector<gzCrateStealthMineStruct *>::~aVector<gzCrateStealthMineStruct *>
_TEXT	ENDS
PUBLIC	??1?$aVector@UgzCrateVehicleAutoRepairStruct@@@@UAE@XZ ; aVector<gzCrateVehicleAutoRepairStruct>::~aVector<gzCrateVehicleAutoRepairStruct>
; Function compile flags: /Ogtpy
;	COMDAT ??1?$aVector@UgzCrateVehicleAutoRepairStruct@@@@UAE@XZ
_TEXT	SEGMENT
??1?$aVector@UgzCrateVehicleAutoRepairStruct@@@@UAE@XZ PROC ; aVector<gzCrateVehicleAutoRepairStruct>::~aVector<gzCrateVehicleAutoRepairStruct>, 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@UgzCrateVehicleAutoRepairStruct@@@@6B@
	je	SHORT $LN8@aVector@5
	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@5:
	mov	DWORD PTR [esi+12], edi
	mov	DWORD PTR [esi+8], edi
	pop	edi
	pop	esi

; 36   : 	};

	ret	0
??1?$aVector@UgzCrateVehicleAutoRepairStruct@@@@UAE@XZ ENDP ; aVector<gzCrateVehicleAutoRepairStruct>::~aVector<gzCrateVehicleAutoRepairStruct>
_TEXT	ENDS
PUBLIC	??1?$aVector@PAVgzCrateBase@@@@UAE@XZ		; aVector<gzCrateBase *>::~aVector<gzCrateBase *>
; Function compile flags: /Ogtpy
;	COMDAT ??1?$aVector@PAVgzCrateBase@@@@UAE@XZ
_TEXT	SEGMENT
??1?$aVector@PAVgzCrateBase@@@@UAE@XZ PROC		; aVector<gzCrateBase *>::~aVector<gzCrateBase *>, 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@PAVgzCrateBase@@@@6B@
	je	SHORT $LN8@aVector@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], edi
$LN8@aVector@6:
	mov	DWORD PTR [esi+12], edi
	mov	DWORD PTR [esi+8], edi
	pop	edi
	pop	esi

; 36   : 	};

	ret	0
??1?$aVector@PAVgzCrateBase@@@@UAE@XZ ENDP		; aVector<gzCrateBase *>::~aVector<gzCrateBase *>
_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@PAVaStringData@@@@UAEPAXI@Z
_TEXT	SEGMENT
___flags$ = 8						; size = 4
??_G?$aVector@PAVaStringData@@@@UAEPAXI@Z PROC		; aVector<aStringData *>::`scalar deleting destructor', COMDAT
; _this$ = ecx
	push	esi
	mov	esi, ecx
	cmp	DWORD PTR [esi+4], 0
	mov	DWORD PTR [esi], OFFSET ??_7?$aVector@PAVaStringData@@@@6B@
	je	SHORT $LN6@scalar@4
	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@4:
	test	BYTE PTR ___flags$[esp], 1
	mov	DWORD PTR [esi+8], 0
	mov	DWORD PTR [esi+12], 0
	je	SHORT $LN11@scalar@4
	push	esi
	call	??3@YAXPAX@Z				; operator delete
	add	esp, 4
$LN11@scalar@4:
	mov	eax, esi
	pop	esi
	ret	4
??_G?$aVector@PAVaStringData@@@@UAEPAXI@Z ENDP		; aVector<aStringData *>::`scalar deleting destructor'
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ??_G?$aVector@I@@UAEPAXI@Z
_TEXT	SEGMENT
___flags$ = 8						; size = 4
??_G?$aVector@I@@UAEPAXI@Z PROC				; aVector<unsigned int>::`scalar deleting destructor', COMDAT
; _this$ = ecx
	push	esi
	mov	esi, ecx
	cmp	DWORD PTR [esi+4], 0
	mov	DWORD PTR [esi], OFFSET ??_7?$aVector@I@@6B@
	je	SHORT $LN6@scalar@5
	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@5:
	test	BYTE PTR ___flags$[esp], 1
	mov	DWORD PTR [esi+8], 0
	mov	DWORD PTR [esi+12], 0
	je	SHORT $LN11@scalar@5
	push	esi
	call	??3@YAXPAX@Z				; operator delete
	add	esp, 4
$LN11@scalar@5:
	mov	eax, esi
	pop	esi
	ret	4
??_G?$aVector@I@@UAEPAXI@Z ENDP				; aVector<unsigned int>::`scalar deleting destructor'
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ??_G?$aVector@Unc_Vector3@@@@UAEPAXI@Z
_TEXT	SEGMENT
___flags$ = 8						; size = 4
??_G?$aVector@Unc_Vector3@@@@UAEPAXI@Z PROC		; aVector<nc_Vector3>::`scalar deleting destructor', COMDAT
; _this$ = ecx
	push	esi
	mov	esi, ecx
	cmp	DWORD PTR [esi+4], 0
	mov	DWORD PTR [esi], OFFSET ??_7?$aVector@Unc_Vector3@@@@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@Unc_Vector3@@@@UAEPAXI@Z ENDP		; aVector<nc_Vector3>::`scalar deleting destructor'
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ??_G?$aVector@PAUgzCrateStealthMineStruct@@@@UAEPAXI@Z
_TEXT	SEGMENT
___flags$ = 8						; size = 4
??_G?$aVector@PAUgzCrateStealthMineStruct@@@@UAEPAXI@Z PROC ; aVector<gzCrateStealthMineStruct *>::`scalar deleting destructor', COMDAT
; _this$ = ecx
	push	esi
	mov	esi, ecx
	cmp	DWORD PTR [esi+4], 0
	mov	DWORD PTR [esi], OFFSET ??_7?$aVector@PAUgzCrateStealthMineStruct@@@@6B@
	je	SHORT $LN6@scalar@7
	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@7:
	test	BYTE PTR ___flags$[esp], 1
	mov	DWORD PTR [esi+8], 0
	mov	DWORD PTR [esi+12], 0
	je	SHORT $LN11@scalar@7
	push	esi
	call	??3@YAXPAX@Z				; operator delete
	add	esp, 4
$LN11@scalar@7:
	mov	eax, esi
	pop	esi
	ret	4
??_G?$aVector@PAUgzCrateStealthMineStruct@@@@UAEPAXI@Z ENDP ; aVector<gzCrateStealthMineStruct *>::`scalar deleting destructor'
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ??_G?$aVector@UgzCrateVehicleAutoRepairStruct@@@@UAEPAXI@Z
_TEXT	SEGMENT
___flags$ = 8						; size = 4
??_G?$aVector@UgzCrateVehicleAutoRepairStruct@@@@UAEPAXI@Z PROC ; aVector<gzCrateVehicleAutoRepairStruct>::`scalar deleting destructor', COMDAT
; _this$ = ecx
	push	esi
	mov	esi, ecx
	cmp	DWORD PTR [esi+4], 0
	mov	DWORD PTR [esi], OFFSET ??_7?$aVector@UgzCrateVehicleAutoRepairStruct@@@@6B@
	je	SHORT $LN6@scalar@8
	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@8:
	test	BYTE PTR ___flags$[esp], 1
	mov	DWORD PTR [esi+8], 0
	mov	DWORD PTR [esi+12], 0
	je	SHORT $LN11@scalar@8
	push	esi
	call	??3@YAXPAX@Z				; operator delete
	add	esp, 4
$LN11@scalar@8:
	mov	eax, esi
	pop	esi
	ret	4
??_G?$aVector@UgzCrateVehicleAutoRepairStruct@@@@UAEPAXI@Z ENDP ; aVector<gzCrateVehicleAutoRepairStruct>::`scalar deleting destructor'
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ??_G?$aVector@PAVgzCrateBase@@@@UAEPAXI@Z
_TEXT	SEGMENT
___flags$ = 8						; size = 4
??_G?$aVector@PAVgzCrateBase@@@@UAEPAXI@Z PROC		; aVector<gzCrateBase *>::`scalar deleting destructor', COMDAT
; _this$ = ecx
	push	esi
	mov	esi, ecx
	cmp	DWORD PTR [esi+4], 0
	mov	DWORD PTR [esi], OFFSET ??_7?$aVector@PAVgzCrateBase@@@@6B@
	je	SHORT $LN6@scalar@9
	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@9:
	test	BYTE PTR ___flags$[esp], 1
	mov	DWORD PTR [esi+8], 0
	mov	DWORD PTR [esi+12], 0
	je	SHORT $LN11@scalar@9
	push	esi
	call	??3@YAXPAX@Z				; operator delete
	add	esp, 4
$LN11@scalar@9:
	mov	eax, esi
	pop	esi
	ret	4
??_G?$aVector@PAVgzCrateBase@@@@UAEPAXI@Z ENDP		; aVector<gzCrateBase *>::`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	??_C@_0CJ@MGEECEHG@d?3?2source?5code?2fds?5lib?2new?2fds_s@ ; `string'
;	COMDAT ??_C@_0CJ@MGEECEHG@d?3?2source?5code?2fds?5lib?2new?2fds_s@
; File d:\source code\fds lib\new\fds_scripts.h
CONST	SEGMENT
??_C@_0CJ@MGEECEHG@d?3?2source?5code?2fds?5lib?2new?2fds_s@ DB 'd:\source'
	DB	' code\fds lib\new\fds_scripts.h', 00H	; `string'
CONST	ENDS
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$?Create@?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@UAEPAVnc_ScriptImpClass@@XZ DD 0ffffffffH
	DD	FLAT:__unwindfunclet$?Create@?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@UAEPAVnc_ScriptImpClass@@XZ$0
__ehfuncinfo$?Create@?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@UAEPAVnc_ScriptImpClass@@XZ DD 019930522H
	DD	01H
	DD	FLAT:__unwindtable$?Create@?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@UAEPAVnc_ScriptImpClass@@XZ
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	01H
; Function compile flags: /Ogtpy
xdata$x	ENDS
;	COMDAT ?Create@?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@UAEPAVnc_ScriptImpClass@@XZ
_TEXT	SEGMENT
$T73995 = -16						; size = 4
__$EHRec$ = -12						; size = 12
?Create@?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@UAEPAVnc_ScriptImpClass@@XZ PROC ; nc_ScriptRegistrant<M00_CNC_Crate>::Create, COMDAT
; _this$ = ecx

; 471  : {

	push	-1
	push	__ehhandler$?Create@?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@UAEPAVnc_ScriptImpClass@@XZ
	mov	eax, DWORD PTR fs:0
	push	eax
	mov	DWORD PTR fs:0, esp
	push	ecx
	push	esi
	push	edi

; 472  : 	nc_ScriptImpClass *scr = new T;

	push	OFFSET ??_C@_00CNPNBAHC@?$AA@
	push	472					; 000001d8H
	push	OFFSET ??_C@_0CJ@MGEECEHG@d?3?2source?5code?2fds?5lib?2new?2fds_s@
	mov	edi, ecx
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	push	28					; 0000001cH
	call	??2@YAPAXI@Z				; operator new
	mov	esi, eax
	add	esp, 16					; 00000010H
	mov	DWORD PTR $T73995[esp+24], esi
	test	esi, esi
	mov	DWORD PTR __$EHRec$[esp+32], 0
	je	SHORT $LN3@Create
	mov	ecx, esi
	call	??0nc_ScriptImpClass@@QAE@XZ		; nc_ScriptImpClass::nc_ScriptImpClass
	mov	DWORD PTR [esi], OFFSET ??_7M00_CNC_Crate@@6B@
	jmp	SHORT $LN4@Create
$LN3@Create:
	xor	esi, esi
$LN4@Create:

; 473  : 	scr->SetFactory(this);
; 474  : 	scr->Register_Auto_Save_Variables();

	mov	eax, DWORD PTR [esi]
	mov	edx, DWORD PTR [eax+100]
	mov	ecx, esi
	mov	DWORD PTR __$EHRec$[esp+32], -1
	mov	DWORD PTR [esi+20], edi
	call	edx

; 475  : 	return scr;
; 476  : }

	mov	ecx, DWORD PTR __$EHRec$[esp+24]
	pop	edi
	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$?Create@?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@UAEPAVnc_ScriptImpClass@@XZ$0:
	mov	eax, DWORD PTR $T73995[ebp]
	push	eax
	call	??3@YAXPAX@Z				; operator delete
	pop	ecx
	ret	0
__ehhandler$?Create@?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@UAEPAVnc_ScriptImpClass@@XZ:
	mov	eax, OFFSET __ehfuncinfo$?Create@?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@UAEPAVnc_ScriptImpClass@@XZ
	jmp	___CxxFrameHandler3
text$x	ENDS
?Create@?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@UAEPAVnc_ScriptImpClass@@XZ ENDP ; nc_ScriptRegistrant<M00_CNC_Crate>::Create
; Function compile flags: /Ogtpy
;	COMDAT ??_GM00_CNC_Crate@@UAEPAXI@Z
_TEXT	SEGMENT
___flags$ = 8						; size = 4
??_GM00_CNC_Crate@@UAEPAXI@Z PROC			; M00_CNC_Crate::`scalar deleting destructor', COMDAT
; _this$ = ecx
	push	esi
	mov	esi, ecx
	call	??1nc_ScriptImpClass@@UAE@XZ		; nc_ScriptImpClass::~nc_ScriptImpClass
	test	BYTE PTR ___flags$[esp], 1
	je	SHORT $LN7@scalar@10
	push	esi
	call	??3@YAXPAX@Z				; operator delete
	add	esp, 4
$LN7@scalar@10:
	mov	eax, esi
	pop	esi
	ret	4
??_GM00_CNC_Crate@@UAEPAXI@Z ENDP			; M00_CNC_Crate::`scalar deleting destructor'
_TEXT	ENDS
PUBLIC	??1gzCrateStealthMineStruct@@QAE@XZ		; gzCrateStealthMineStruct::~gzCrateStealthMineStruct
; Function compile flags: /Ogtpy
;	COMDAT ??1gzCrateStealthMineStruct@@QAE@XZ
_TEXT	SEGMENT
??1gzCrateStealthMineStruct@@QAE@XZ PROC		; gzCrateStealthMineStruct::~gzCrateStealthMineStruct, COMDAT
; _this$ = ecx
	push	esi
	push	edi
	mov	esi, ecx
	xor	edi, edi
	cmp	DWORD PTR [esi+12], edi
	mov	DWORD PTR [esi+8], OFFSET ??_7?$aVector@I@@6B@
	je	SHORT $LN11@gzCrateSte
	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+12]
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
	mov	DWORD PTR [esi+12], edi
$LN11@gzCrateSte:
	mov	DWORD PTR [esi+20], edi
	mov	DWORD PTR [esi+16], edi
	pop	edi
	pop	esi
	ret	0
??1gzCrateStealthMineStruct@@QAE@XZ ENDP		; gzCrateStealthMineStruct::~gzCrateStealthMineStruct
_TEXT	ENDS
PUBLIC	??_7gzSettingsCrateClass@@6B@			; gzSettingsCrateClass::`vftable'
PUBLIC	??0gzSettingsCrateClass@@QAE@XZ			; gzSettingsCrateClass::gzSettingsCrateClass
PUBLIC	??_R4gzSettingsCrateClass@@6B@			; gzSettingsCrateClass::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVgzSettingsCrateClass@@@8		; gzSettingsCrateClass `RTTI Type Descriptor'
PUBLIC	??_R3gzSettingsCrateClass@@8			; gzSettingsCrateClass::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2gzSettingsCrateClass@@8			; gzSettingsCrateClass::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@gzSettingsCrateClass@@8		; gzSettingsCrateClass::`RTTI Base Class Descriptor at (0,-1,0,64)'
;	COMDAT ??_R1A@?0A@EA@gzSettingsCrateClass@@8
; File d:\source code\gzgm\gzcrate.cpp
rdata$r	SEGMENT
??_R1A@?0A@EA@gzSettingsCrateClass@@8 DD FLAT:??_R0?AVgzSettingsCrateClass@@@8 ; gzSettingsCrateClass::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3gzSettingsCrateClass@@8
rdata$r	ENDS
;	COMDAT ??_R2gzSettingsCrateClass@@8
rdata$r	SEGMENT
??_R2gzSettingsCrateClass@@8 DD FLAT:??_R1A@?0A@EA@gzSettingsCrateClass@@8 ; gzSettingsCrateClass::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@stSettingsBase@@8
rdata$r	ENDS
;	COMDAT ??_R3gzSettingsCrateClass@@8
rdata$r	SEGMENT
??_R3gzSettingsCrateClass@@8 DD 00H			; gzSettingsCrateClass::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2gzSettingsCrateClass@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVgzSettingsCrateClass@@@8
_DATA	SEGMENT
??_R0?AVgzSettingsCrateClass@@@8 DD FLAT:??_7type_info@@6B@ ; gzSettingsCrateClass `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVgzSettingsCrateClass@@', 00H
_DATA	ENDS
;	COMDAT ??_R4gzSettingsCrateClass@@6B@
rdata$r	SEGMENT
??_R4gzSettingsCrateClass@@6B@ DD 00H			; gzSettingsCrateClass::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVgzSettingsCrateClass@@@8
	DD	FLAT:??_R3gzSettingsCrateClass@@8
rdata$r	ENDS
;	COMDAT ??_7gzSettingsCrateClass@@6B@
CONST	SEGMENT
??_7gzSettingsCrateClass@@6B@ DD FLAT:??_R4gzSettingsCrateClass@@6B@ ; gzSettingsCrateClass::`vftable'
	DD	FLAT:?Delete@gzSettingsCrateClass@@UAEXXZ
	DD	FLAT:?Load@gzSettingsCrateClass@@UAEXXZ
CONST	ENDS
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$??0gzSettingsCrateClass@@QAE@XZ DD 0ffffffffH
	DD	FLAT:__unwindfunclet$??0gzSettingsCrateClass@@QAE@XZ$0
__ehfuncinfo$??0gzSettingsCrateClass@@QAE@XZ DD 019930522H
	DD	01H
	DD	FLAT:__unwindtable$??0gzSettingsCrateClass@@QAE@XZ
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	01H
; Function compile flags: /Ogtpy
xdata$x	ENDS
;	COMDAT ??0gzSettingsCrateClass@@QAE@XZ
_TEXT	SEGMENT
$T74062 = -20						; size = 4
_this$ = -16						; size = 4
__$EHRec$ = -12						; size = 12
??0gzSettingsCrateClass@@QAE@XZ PROC			; gzSettingsCrateClass::gzSettingsCrateClass, COMDAT
; _this$ = ecx

; 72   : {

	push	-1
	push	__ehhandler$??0gzSettingsCrateClass@@QAE@XZ
	mov	eax, DWORD PTR fs:0
	push	eax
	mov	DWORD PTR fs:0, esp
	sub	esp, 8
	push	esi
	mov	esi, ecx
	push	edi
	xor	edi, edi
	mov	DWORD PTR [esi], OFFSET ??_7stSettingsBase@@6B@
	mov	DWORD PTR [esi+12], edi
	mov	DWORD PTR [esi+16], edi
	mov	DWORD PTR [esi+20], edi
	mov	DWORD PTR [esi+8], edi
	mov	ecx, DWORD PTR ?gzSettingsMgr@@3PAVgzSettingsManager@@A ; gzSettingsMgr
	add	ecx, 36					; 00000024H
	mov	DWORD PTR $T74062[esp+28], esi
	mov	eax, DWORD PTR [ecx]
	mov	eax, DWORD PTR [eax+12]
	lea	edx, DWORD PTR $T74062[esp+28]
	push	edx
	mov	DWORD PTR _this$[esp+32], esi
	call	eax
	mov	DWORD PTR [esi], OFFSET ??_7gzSettingsCrateClass@@6B@
	mov	DWORD PTR [esi+112], OFFSET ??_7?$aVector@Unc_Vector3@@@@6B@
	mov	DWORD PTR [esi+116], edi
	mov	DWORD PTR [esi+120], edi
	mov	DWORD PTR [esi+124], edi

; 73   : 	this->m_percent = new gzCratePercentStruct;

	push	OFFSET ??_C@_00CNPNBAHC@?$AA@
	push	73					; 00000049H
	push	OFFSET ??_C@_0O@GPLKOMOA@?4?2gzcrate?4cpp?$AA@
	mov	DWORD PTR __$EHRec$[esp+48], edi
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	push	136					; 00000088H
	call	??2@YAPAXI@Z				; operator new
	mov	ecx, eax
	add	esp, 16					; 00000010H
	cmp	ecx, edi
	je	SHORT $LN3@gzSettings
	push	3
	call	?Reset@gzCratePercentStruct@@QAEXH@Z	; gzCratePercentStruct::Reset
	pop	edi
	mov	DWORD PTR [esi+108], ecx

; 74   : }

	mov	eax, esi
	pop	esi
	mov	ecx, DWORD PTR __$EHRec$[esp+20]
	mov	DWORD PTR fs:0, ecx
	add	esp, 20					; 00000014H
	ret	0
$LN3@gzSettings:
	mov	ecx, DWORD PTR __$EHRec$[esp+28]
	mov	DWORD PTR [esi+108], edi
	pop	edi
	mov	eax, esi
	pop	esi
	mov	DWORD PTR fs:0, ecx
	add	esp, 20					; 00000014H
	ret	0
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$??0gzSettingsCrateClass@@QAE@XZ$0:
	mov	ecx, DWORD PTR _this$[ebp]
	add	ecx, 112				; 00000070H
	jmp	??1?$aVector@Unc_Vector3@@@@UAE@XZ	; aVector<nc_Vector3>::~aVector<nc_Vector3>
__ehhandler$??0gzSettingsCrateClass@@QAE@XZ:
	mov	eax, OFFSET __ehfuncinfo$??0gzSettingsCrateClass@@QAE@XZ
	jmp	___CxxFrameHandler3
text$x	ENDS
??0gzSettingsCrateClass@@QAE@XZ ENDP			; gzSettingsCrateClass::gzSettingsCrateClass
PUBLIC	??_7gzManagerCrateClass@@6BgzSettingsEvent@@@	; gzManagerCrateClass::`vftable'
PUBLIC	??_7gzManagerCrateClass@@6BgzEvtHandler@@@	; gzManagerCrateClass::`vftable'
PUBLIC	??0gzManagerCrateClass@@QAE@XZ			; gzManagerCrateClass::gzManagerCrateClass
PUBLIC	??_R4gzManagerCrateClass@@6BgzEvtHandler@@@	; gzManagerCrateClass::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVgzManagerCrateClass@@@8			; gzManagerCrateClass `RTTI Type Descriptor'
PUBLIC	??_R3gzManagerCrateClass@@8			; gzManagerCrateClass::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2gzManagerCrateClass@@8			; gzManagerCrateClass::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@gzManagerCrateClass@@8		; gzManagerCrateClass::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	??_R1A@?0A@EA@gzEvtHandler@@8			; gzEvtHandler::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	??_R0?AVgzEvtHandler@@@8			; gzEvtHandler `RTTI Type Descriptor'
PUBLIC	??_R3gzEvtHandler@@8				; gzEvtHandler::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2gzEvtHandler@@8				; gzEvtHandler::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@gzBase@@8				; gzBase::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	??_R0?AVgzBase@@@8				; gzBase `RTTI Type Descriptor'
PUBLIC	??_R3gzBase@@8					; gzBase::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2gzBase@@8					; gzBase::`RTTI Base Class Array'
PUBLIC	??_R1CE@?0A@EA@gzSettingsEvent@@8		; gzSettingsEvent::`RTTI Base Class Descriptor at (36,-1,0,64)'
PUBLIC	?GetName@gzManagerCrateClass@@UAEPBDXZ		; gzManagerCrateClass::GetName
PUBLIC	?Delete@gzManagerCrateClass@@UAEXXZ		; gzManagerCrateClass::Delete
PUBLIC	?Level_Loaded@gzManagerCrateClass@@UAEXXZ	; gzManagerCrateClass::Level_Loaded
PUBLIC	?Level_Ended@gzEvtHandler@@UAEXXZ		; gzEvtHandler::Level_Ended
PUBLIC	?Player_Left@gzEvtHandler@@UAEXAAVgzEventPlayerBase@@@Z ; gzEvtHandler::Player_Left
PUBLIC	?Player_BandwidthChange@gzEvtHandler@@UAEXAAVgzEventPlayerBandwidth@@@Z ; gzEvtHandler::Player_BandwidthChange
PUBLIC	?Player_Suicide@gzEvtHandler@@UAEXAAVgzEventPlayerBase@@@Z ; gzEvtHandler::Player_Suicide
PUBLIC	?Player_TeamChange@gzEvtHandler@@UAEXAAVgzEventPlayerBase@@@Z ; gzEvtHandler::Player_TeamChange
PUBLIC	?Player_Radio@gzEvtHandler@@UAEXAAVgzEventPlayerRadio@@@Z ; gzEvtHandler::Player_Radio
PUBLIC	?Player_SerialHash@gzEvtHandler@@UAEXAAVgzEventPlayerSerialHash@@@Z ; gzEvtHandler::Player_SerialHash
PUBLIC	?Player_RawDamage@gzEvtHandler@@UAEXAAVgzEventObjectDamage@@@Z ; gzEvtHandler::Player_RawDamage
PUBLIC	?Object_Created@gzEvtHandler@@UAEXAAVgzEventObjectCreate@@@Z ; gzEvtHandler::Object_Created
PUBLIC	?Object_Init@gzEvtHandler@@UAEXAAVgzEventObjectInit@@@Z ; gzEvtHandler::Object_Init
PUBLIC	?Object_JumpStart@gzEvtHandler@@UAEXAAVgzEventObjectJump@@@Z ; gzEvtHandler::Object_JumpStart
PUBLIC	?Object_JumpComplete@gzEvtHandler@@UAEXAAVgzEventObjectJump@@@Z ; gzEvtHandler::Object_JumpComplete
PUBLIC	?Object_PowerupGrant@gzManagerCrateClass@@UAEXAAVgzEventObjectPowerupGrant@@@Z ; gzManagerCrateClass::Object_PowerupGrant
PUBLIC	?Object_Fire@gzEvtHandler@@UAEXAAVgzEventObjectFire@@@Z ; gzEvtHandler::Object_Fire
PUBLIC	?Object_FlipKill@gzEvtHandler@@UAEXAAVgzEventObjectFlipKill@@@Z ; gzEvtHandler::Object_FlipKill
PUBLIC	?Net_WolPage@gzEvtHandler@@UAEXAAVgzEventNetWolPage@@@Z ; gzEvtHandler::Net_WolPage
PUBLIC	?Net_SerialAuth@gzEvtHandler@@UAEXAAVgzEventNetSerialAuth@@@Z ; gzEvtHandler::Net_SerialAuth
PUBLIC	?Bhs_Poke@gzEvtHandler@@UAEXAAVgzEventBhsPoke@@@Z ; gzEvtHandler::Bhs_Poke
PUBLIC	?Bhs_Version@gzEvtHandler@@UAEXAAVgzEventBhsVersion@@@Z ; gzEvtHandler::Bhs_Version
PUBLIC	??_R4gzManagerCrateClass@@6BgzSettingsEvent@@@	; gzManagerCrateClass::`RTTI Complete Object Locator'
EXTRN	??1gzEvtHandler@@UAE@XZ:PROC			; gzEvtHandler::~gzEvtHandler
EXTRN	?RegisterEvent@gzEvtHandler@@QAEXHH@Z:PROC	; gzEvtHandler::RegisterEvent
EXTRN	??0gzEvtHandler@@QAE@XZ:PROC			; gzEvtHandler::gzEvtHandler
EXTRN	??_EgzManagerCrateClass@@UAEPAXI@Z:PROC		; gzManagerCrateClass::`vector deleting destructor'
EXTRN	?SetDeletePending@gzBase@@UAEXXZ:PROC		; gzBase::SetDeletePending
;	COMDAT ??_R4gzManagerCrateClass@@6BgzSettingsEvent@@@
; File d:\source code\gzgm\gzsetting.h
rdata$r	SEGMENT
??_R4gzManagerCrateClass@@6BgzSettingsEvent@@@ DD 00H	; gzManagerCrateClass::`RTTI Complete Object Locator'
	DD	024H
	DD	00H
	DD	FLAT:??_R0?AVgzManagerCrateClass@@@8
	DD	FLAT:??_R3gzManagerCrateClass@@8
rdata$r	ENDS
;	COMDAT ??_R1CE@?0A@EA@gzSettingsEvent@@8
rdata$r	SEGMENT
??_R1CE@?0A@EA@gzSettingsEvent@@8 DD FLAT:??_R0?AVgzSettingsEvent@@@8 ; gzSettingsEvent::`RTTI Base Class Descriptor at (36,-1,0,64)'
	DD	00H
	DD	024H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3gzSettingsEvent@@8
rdata$r	ENDS
;	COMDAT ??_R2gzBase@@8
rdata$r	SEGMENT
??_R2gzBase@@8 DD FLAT:??_R1A@?0A@EA@gzBase@@8		; gzBase::`RTTI Base Class Array'
rdata$r	ENDS
;	COMDAT ??_R3gzBase@@8
rdata$r	SEGMENT
??_R3gzBase@@8 DD 00H					; gzBase::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	01H
	DD	FLAT:??_R2gzBase@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVgzBase@@@8
_DATA	SEGMENT
??_R0?AVgzBase@@@8 DD FLAT:??_7type_info@@6B@		; gzBase `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVgzBase@@', 00H
_DATA	ENDS
;	COMDAT ??_R1A@?0A@EA@gzBase@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@gzBase@@8 DD FLAT:??_R0?AVgzBase@@@8	; gzBase::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	00H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3gzBase@@8
rdata$r	ENDS
;	COMDAT ??_R2gzEvtHandler@@8
rdata$r	SEGMENT
??_R2gzEvtHandler@@8 DD FLAT:??_R1A@?0A@EA@gzEvtHandler@@8 ; gzEvtHandler::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzBase@@8
rdata$r	ENDS
;	COMDAT ??_R3gzEvtHandler@@8
rdata$r	SEGMENT
??_R3gzEvtHandler@@8 DD 00H				; gzEvtHandler::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2gzEvtHandler@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVgzEvtHandler@@@8
_DATA	SEGMENT
??_R0?AVgzEvtHandler@@@8 DD FLAT:??_7type_info@@6B@	; gzEvtHandler `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVgzEvtHandler@@', 00H
_DATA	ENDS
;	COMDAT ??_R1A@?0A@EA@gzEvtHandler@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@gzEvtHandler@@8 DD FLAT:??_R0?AVgzEvtHandler@@@8 ; gzEvtHandler::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3gzEvtHandler@@8
rdata$r	ENDS
;	COMDAT ??_R1A@?0A@EA@gzManagerCrateClass@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@gzManagerCrateClass@@8 DD FLAT:??_R0?AVgzManagerCrateClass@@@8 ; gzManagerCrateClass::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	03H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3gzManagerCrateClass@@8
rdata$r	ENDS
;	COMDAT ??_R2gzManagerCrateClass@@8
rdata$r	SEGMENT
??_R2gzManagerCrateClass@@8 DD FLAT:??_R1A@?0A@EA@gzManagerCrateClass@@8 ; gzManagerCrateClass::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@gzEvtHandler@@8
	DD	FLAT:??_R1A@?0A@EA@gzBase@@8
	DD	FLAT:??_R1CE@?0A@EA@gzSettingsEvent@@8
rdata$r	ENDS
;	COMDAT ??_R3gzManagerCrateClass@@8
rdata$r	SEGMENT
??_R3gzManagerCrateClass@@8 DD 00H			; gzManagerCrateClass::`RTTI Class Hierarchy Descriptor'
	DD	01H
	DD	04H
	DD	FLAT:??_R2gzManagerCrateClass@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVgzManagerCrateClass@@@8
_DATA	SEGMENT
??_R0?AVgzManagerCrateClass@@@8 DD FLAT:??_7type_info@@6B@ ; gzManagerCrateClass `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVgzManagerCrateClass@@', 00H
_DATA	ENDS
;	COMDAT ??_R4gzManagerCrateClass@@6BgzEvtHandler@@@
rdata$r	SEGMENT
??_R4gzManagerCrateClass@@6BgzEvtHandler@@@ DD 00H	; gzManagerCrateClass::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVgzManagerCrateClass@@@8
	DD	FLAT:??_R3gzManagerCrateClass@@8
rdata$r	ENDS
;	COMDAT ??_7gzManagerCrateClass@@6BgzSettingsEvent@@@
CONST	SEGMENT
??_7gzManagerCrateClass@@6BgzSettingsEvent@@@ DD FLAT:??_R4gzManagerCrateClass@@6BgzSettingsEvent@@@ ; gzManagerCrateClass::`vftable'
	DD	FLAT:?Settings_Loaded@gzManagerCrateClass@@UAEXXZ
CONST	ENDS
;	COMDAT ??_7gzManagerCrateClass@@6BgzEvtHandler@@@
CONST	SEGMENT
??_7gzManagerCrateClass@@6BgzEvtHandler@@@ DD FLAT:??_R4gzManagerCrateClass@@6BgzEvtHandler@@@ ; gzManagerCrateClass::`vftable'
	DD	FLAT:??_EgzManagerCrateClass@@UAEPAXI@Z
	DD	FLAT:?GetName@gzManagerCrateClass@@UAEPBDXZ
	DD	FLAT:?Delete@gzManagerCrateClass@@UAEXXZ
	DD	FLAT:?SetDeletePending@gzBase@@UAEXXZ
	DD	FLAT:?Level_Loaded@gzManagerCrateClass@@UAEXXZ
	DD	FLAT:?Level_Ended@gzEvtHandler@@UAEXXZ
	DD	FLAT:?Think@gzManagerCrateClass@@UAEXXZ
	DD	FLAT:?Player_Joined@gzManagerCrateClass@@UAEXAAVgzEventPlayerBase@@@Z
	DD	FLAT:?Player_Left@gzEvtHandler@@UAEXAAVgzEventPlayerBase@@@Z
	DD	FLAT:?Player_Purchase@gzManagerCrateClass@@UAEXAAVgzEventPlayerPurchase@@@Z
	DD	FLAT:?Player_BandwidthChange@gzEvtHandler@@UAEXAAVgzEventPlayerBandwidth@@@Z
	DD	FLAT:?Player_Suicide@gzEvtHandler@@UAEXAAVgzEventPlayerBase@@@Z
	DD	FLAT:?Player_TeamChange@gzEvtHandler@@UAEXAAVgzEventPlayerBase@@@Z
	DD	FLAT:?Player_Chat@gzManagerCrateClass@@UAEXAAVgzEventPlayerChat@@@Z
	DD	FLAT:?Player_Radio@gzEvtHandler@@UAEXAAVgzEventPlayerRadio@@@Z
	DD	FLAT:?Player_SerialHash@gzEvtHandler@@UAEXAAVgzEventPlayerSerialHash@@@Z
	DD	FLAT:?Player_RawDamage@gzEvtHandler@@UAEXAAVgzEventObjectDamage@@@Z
	DD	FLAT:?Object_Created@gzEvtHandler@@UAEXAAVgzEventObjectCreate@@@Z
	DD	FLAT:?Object_Init@gzEvtHandler@@UAEXAAVgzEventObjectInit@@@Z
	DD	FLAT:?Object_Damaged@gzManagerCrateClass@@UAEXAAVgzEventObjectDamage@@@Z
	DD	FLAT:?Object_Killed@gzManagerCrateClass@@UAEXAAVgzEventObjectKill@@@Z
	DD	FLAT:?Object_Transition@gzManagerCrateClass@@UAEXAAVgzEventObjectTransition@@@Z
	DD	FLAT:?Object_JumpStart@gzEvtHandler@@UAEXAAVgzEventObjectJump@@@Z
	DD	FLAT:?Object_JumpComplete@gzEvtHandler@@UAEXAAVgzEventObjectJump@@@Z
	DD	FLAT:?Object_SoldierSquished@gzManagerCrateClass@@UAEXAAVgzEventObjectKill@@@Z
	DD	FLAT:?Object_C4Creation@gzManagerCrateClass@@UAEXAAVgzEventObjectC4Creation@@@Z
	DD	FLAT:?Object_C4Detonate@gzManagerCrateClass@@UAEXAAVgzEventObjectC4Detonation@@@Z
	DD	FLAT:?Object_PowerupGrant@gzManagerCrateClass@@UAEXAAVgzEventObjectPowerupGrant@@@Z
	DD	FLAT:?Object_Fire@gzEvtHandler@@UAEXAAVgzEventObjectFire@@@Z
	DD	FLAT:?Object_FlipKill@gzEvtHandler@@UAEXAAVgzEventObjectFlipKill@@@Z
	DD	FLAT:?Net_WolPage@gzEvtHandler@@UAEXAAVgzEventNetWolPage@@@Z
	DD	FLAT:?Net_SerialAuth@gzEvtHandler@@UAEXAAVgzEventNetSerialAuth@@@Z
	DD	FLAT:?Bhs_Poke@gzEvtHandler@@UAEXAAVgzEventBhsPoke@@@Z
	DD	FLAT:?Bhs_Version@gzEvtHandler@@UAEXAAVgzEventBhsVersion@@@Z
CONST	ENDS
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$??0gzManagerCrateClass@@QAE@XZ DD 0ffffffffH
	DD	FLAT:__unwindfunclet$??0gzManagerCrateClass@@QAE@XZ$0
	DD	00H
	DD	FLAT:__unwindfunclet$??0gzManagerCrateClass@@QAE@XZ$1
__ehfuncinfo$??0gzManagerCrateClass@@QAE@XZ DD 019930522H
	DD	02H
	DD	FLAT:__unwindtable$??0gzManagerCrateClass@@QAE@XZ
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	01H
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
xdata$x	ENDS
;	COMDAT ??0gzManagerCrateClass@@QAE@XZ
_TEXT	SEGMENT
_this$ = -20						; size = 4
$T74081 = -16						; size = 4
__$EHRec$ = -12						; size = 12
??0gzManagerCrateClass@@QAE@XZ PROC			; gzManagerCrateClass::gzManagerCrateClass, COMDAT
; _this$ = ecx

; 213  : {

	push	-1
	push	__ehhandler$??0gzManagerCrateClass@@QAE@XZ
	mov	eax, DWORD PTR fs:0
	push	eax
	mov	DWORD PTR fs:0, esp
	sub	esp, 8
	push	esi
	mov	esi, ecx
	push	edi
	mov	DWORD PTR _this$[esp+28], esi
	call	??0gzEvtHandler@@QAE@XZ			; gzEvtHandler::gzEvtHandler
	lea	edi, DWORD PTR [esi+36]

; 214  : 	this->RegisterEvent(gzEVT_GAME_LEVEL_LOADED);

	push	0
	mov	DWORD PTR [edi], OFFSET ??_7gzSettingsEvent@@6B@
	push	4096					; 00001000H
	mov	ecx, esi
	mov	DWORD PTR __$EHRec$[esp+44], 0
	mov	DWORD PTR [esi], OFFSET ??_7gzManagerCrateClass@@6BgzEvtHandler@@@
	mov	DWORD PTR [edi], OFFSET ??_7gzManagerCrateClass@@6BgzSettingsEvent@@@
	call	?RegisterEvent@gzEvtHandler@@QAEXHH@Z	; gzEvtHandler::RegisterEvent

; 215  : 	this->RegisterEvent(gzEVT_GAME_THINK);

	push	0
	push	4098					; 00001002H
	mov	ecx, esi
	call	?RegisterEvent@gzEvtHandler@@QAEXHH@Z	; gzEvtHandler::RegisterEvent

; 216  : 	this->RegisterEvent(gzEVT_PLAYER_JOIN);

	push	0
	push	8192					; 00002000H
	mov	ecx, esi
	call	?RegisterEvent@gzEvtHandler@@QAEXHH@Z	; gzEvtHandler::RegisterEvent

; 217  : 	this->RegisterEvent(gzEVT_PLAYER_CHAT);

	push	0
	push	8195					; 00002003H
	mov	ecx, esi
	call	?RegisterEvent@gzEvtHandler@@QAEXHH@Z	; gzEvtHandler::RegisterEvent

; 218  : 	this->RegisterEvent(gzEVT_PLAYER_PURCHASE);

	push	0
	push	8201					; 00002009H
	mov	ecx, esi
	call	?RegisterEvent@gzEvtHandler@@QAEXHH@Z	; gzEvtHandler::RegisterEvent

; 219  : 	this->RegisterEvent(gzEVT_BHS_POKE);

	push	0
	push	20480					; 00005000H
	mov	ecx, esi
	call	?RegisterEvent@gzEvtHandler@@QAEXHH@Z	; gzEvtHandler::RegisterEvent

; 220  : 	this->RegisterEvent(gzEVT_OBJECT_DAMAGE);

	push	0
	push	12290					; 00003002H
	mov	ecx, esi
	call	?RegisterEvent@gzEvtHandler@@QAEXHH@Z	; gzEvtHandler::RegisterEvent

; 221  : 	this->RegisterEvent(gzEVT_OBJECT_KILL);

	push	0
	push	12291					; 00003003H
	mov	ecx, esi
	call	?RegisterEvent@gzEvtHandler@@QAEXHH@Z	; gzEvtHandler::RegisterEvent

; 222  : 	this->RegisterEvent(gzEVT_OBJECT_SQUISH);

	push	0
	push	12292					; 00003004H
	mov	ecx, esi
	call	?RegisterEvent@gzEvtHandler@@QAEXHH@Z	; gzEvtHandler::RegisterEvent

; 223  : 	this->RegisterEvent(gzEVT_OBJECT_TRANSITION);

	push	0
	push	12293					; 00003005H
	mov	ecx, esi
	call	?RegisterEvent@gzEvtHandler@@QAEXHH@Z	; gzEvtHandler::RegisterEvent

; 224  : 	this->RegisterEvent(gzEVT_OBJECT_C4_CREATE);

	push	0
	push	12296					; 00003008H
	mov	ecx, esi
	call	?RegisterEvent@gzEvtHandler@@QAEXHH@Z	; gzEvtHandler::RegisterEvent

; 225  : 	this->RegisterEvent(gzEVT_OBJECT_C4_DETONATE);

	push	0
	push	12297					; 00003009H
	mov	ecx, esi
	call	?RegisterEvent@gzEvtHandler@@QAEXHH@Z	; gzEvtHandler::RegisterEvent

; 226  : 	this->RegisterEvent(gzEVT_OBJECT_POWERUP_GRANT);

	push	0
	push	12304					; 00003010H
	mov	ecx, esi
	call	?RegisterEvent@gzEvtHandler@@QAEXHH@Z	; gzEvtHandler::RegisterEvent

; 227  : 
; 228  : 	this->m_settings = new gzSettingsCrateClass;

	push	OFFSET ??_C@_00CNPNBAHC@?$AA@
	push	228					; 000000e4H
	push	OFFSET ??_C@_0O@GPLKOMOA@?4?2gzcrate?4cpp?$AA@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	push	128					; 00000080H
	call	??2@YAPAXI@Z				; operator new
	add	esp, 16					; 00000010H
	mov	DWORD PTR $T74081[esp+28], eax
	test	eax, eax
	mov	BYTE PTR __$EHRec$[esp+36], 1
	je	SHORT $LN3@gzManagerC
	mov	ecx, eax
	call	??0gzSettingsCrateClass@@QAE@XZ		; gzSettingsCrateClass::gzSettingsCrateClass
	jmp	SHORT $LN4@gzManagerC
$LN3@gzManagerC:
	xor	eax, eax
$LN4@gzManagerC:
	mov	DWORD PTR [esi+56], eax

; 229  : 	this->m_settings->SetOwner(this);

	mov	DWORD PTR [eax+8], edi

; 230  : 	this->m_data = NULL;
; 231  : 	gzCrateBase::m_percent = this->m_settings->m_percent;

	mov	eax, DWORD PTR [esi+56]
	mov	DWORD PTR [esi+60], 0
	mov	ecx, DWORD PTR [eax+108]
	mov	DWORD PTR ?m_percent@gzCrateBase@@1PBUgzCratePercentStruct@@B, ecx ; gzCrateBase::m_percent

; 232  : 	
; 233  : }

	mov	ecx, DWORD PTR __$EHRec$[esp+28]
	pop	edi
	mov	eax, esi
	pop	esi
	mov	DWORD PTR fs:0, ecx
	add	esp, 20					; 00000014H
	ret	0
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$??0gzManagerCrateClass@@QAE@XZ$0:
	mov	ecx, DWORD PTR _this$[ebp]
	jmp	??1gzEvtHandler@@UAE@XZ			; gzEvtHandler::~gzEvtHandler
__unwindfunclet$??0gzManagerCrateClass@@QAE@XZ$1:
	mov	eax, DWORD PTR $T74081[ebp]
	push	eax
	call	??3@YAXPAX@Z				; operator delete
	pop	ecx
	ret	0
__ehhandler$??0gzManagerCrateClass@@QAE@XZ:
	mov	eax, OFFSET __ehfuncinfo$??0gzManagerCrateClass@@QAE@XZ
	jmp	___CxxFrameHandler3
text$x	ENDS
??0gzManagerCrateClass@@QAE@XZ ENDP			; gzManagerCrateClass::gzManagerCrateClass
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzevent.h
;	COMDAT ?Level_Ended@gzEvtHandler@@UAEXXZ
_TEXT	SEGMENT
?Level_Ended@gzEvtHandler@@UAEXXZ PROC			; gzEvtHandler::Level_Ended, COMDAT
; _this$ = ecx

; 64   : 	virtual void Level_Ended() { };

	ret	0
?Level_Ended@gzEvtHandler@@UAEXXZ ENDP			; gzEvtHandler::Level_Ended
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Player_Left@gzEvtHandler@@UAEXAAVgzEventPlayerBase@@@Z
_TEXT	SEGMENT
___formal$ = 8						; size = 4
?Player_Left@gzEvtHandler@@UAEXAAVgzEventPlayerBase@@@Z PROC ; gzEvtHandler::Player_Left, COMDAT
; _this$ = ecx

; 69   : 	virtual void Player_Left(gzEventPlayerBase &) { };

	ret	4
?Player_Left@gzEvtHandler@@UAEXAAVgzEventPlayerBase@@@Z ENDP ; gzEvtHandler::Player_Left
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Player_BandwidthChange@gzEvtHandler@@UAEXAAVgzEventPlayerBandwidth@@@Z
_TEXT	SEGMENT
___formal$ = 8						; size = 4
?Player_BandwidthChange@gzEvtHandler@@UAEXAAVgzEventPlayerBandwidth@@@Z PROC ; gzEvtHandler::Player_BandwidthChange, COMDAT
; _this$ = ecx

; 71   : 	virtual void Player_BandwidthChange(gzEventPlayerBandwidth &) { };

	ret	4
?Player_BandwidthChange@gzEvtHandler@@UAEXAAVgzEventPlayerBandwidth@@@Z ENDP ; gzEvtHandler::Player_BandwidthChange
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Player_Suicide@gzEvtHandler@@UAEXAAVgzEventPlayerBase@@@Z
_TEXT	SEGMENT
___formal$ = 8						; size = 4
?Player_Suicide@gzEvtHandler@@UAEXAAVgzEventPlayerBase@@@Z PROC ; gzEvtHandler::Player_Suicide, COMDAT
; _this$ = ecx

; 72   : 	virtual void Player_Suicide(gzEventPlayerBase &) { };

	ret	4
?Player_Suicide@gzEvtHandler@@UAEXAAVgzEventPlayerBase@@@Z ENDP ; gzEvtHandler::Player_Suicide
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Player_TeamChange@gzEvtHandler@@UAEXAAVgzEventPlayerBase@@@Z
_TEXT	SEGMENT
___formal$ = 8						; size = 4
?Player_TeamChange@gzEvtHandler@@UAEXAAVgzEventPlayerBase@@@Z PROC ; gzEvtHandler::Player_TeamChange, COMDAT
; _this$ = ecx

; 73   : 	virtual void Player_TeamChange(gzEventPlayerBase &) { };

	ret	4
?Player_TeamChange@gzEvtHandler@@UAEXAAVgzEventPlayerBase@@@Z ENDP ; gzEvtHandler::Player_TeamChange
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Player_Radio@gzEvtHandler@@UAEXAAVgzEventPlayerRadio@@@Z
_TEXT	SEGMENT
___formal$ = 8						; size = 4
?Player_Radio@gzEvtHandler@@UAEXAAVgzEventPlayerRadio@@@Z PROC ; gzEvtHandler::Player_Radio, COMDAT
; _this$ = ecx

; 75   : 	virtual void Player_Radio(gzEventPlayerRadio &) { };

	ret	4
?Player_Radio@gzEvtHandler@@UAEXAAVgzEventPlayerRadio@@@Z ENDP ; gzEvtHandler::Player_Radio
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Player_SerialHash@gzEvtHandler@@UAEXAAVgzEventPlayerSerialHash@@@Z
_TEXT	SEGMENT
___formal$ = 8						; size = 4
?Player_SerialHash@gzEvtHandler@@UAEXAAVgzEventPlayerSerialHash@@@Z PROC ; gzEvtHandler::Player_SerialHash, COMDAT
; _this$ = ecx

; 76   : 	virtual void Player_SerialHash(gzEventPlayerSerialHash &) { };

	ret	4
?Player_SerialHash@gzEvtHandler@@UAEXAAVgzEventPlayerSerialHash@@@Z ENDP ; gzEvtHandler::Player_SerialHash
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Player_RawDamage@gzEvtHandler@@UAEXAAVgzEventObjectDamage@@@Z
_TEXT	SEGMENT
___formal$ = 8						; size = 4
?Player_RawDamage@gzEvtHandler@@UAEXAAVgzEventObjectDamage@@@Z PROC ; gzEvtHandler::Player_RawDamage, COMDAT
; _this$ = ecx

; 77   : 	virtual void Player_RawDamage(gzEventObjectDamage &) { };

	ret	4
?Player_RawDamage@gzEvtHandler@@UAEXAAVgzEventObjectDamage@@@Z ENDP ; gzEvtHandler::Player_RawDamage
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Object_Created@gzEvtHandler@@UAEXAAVgzEventObjectCreate@@@Z
_TEXT	SEGMENT
___formal$ = 8						; size = 4
?Object_Created@gzEvtHandler@@UAEXAAVgzEventObjectCreate@@@Z PROC ; gzEvtHandler::Object_Created, COMDAT
; _this$ = ecx

; 80   : 	virtual void Object_Created(gzEventObjectCreate &) { };

	ret	4
?Object_Created@gzEvtHandler@@UAEXAAVgzEventObjectCreate@@@Z ENDP ; gzEvtHandler::Object_Created
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Object_Init@gzEvtHandler@@UAEXAAVgzEventObjectInit@@@Z
_TEXT	SEGMENT
___formal$ = 8						; size = 4
?Object_Init@gzEvtHandler@@UAEXAAVgzEventObjectInit@@@Z PROC ; gzEvtHandler::Object_Init, COMDAT
; _this$ = ecx

; 81   : 	virtual void Object_Init(gzEventObjectInit &) { };

	ret	4
?Object_Init@gzEvtHandler@@UAEXAAVgzEventObjectInit@@@Z ENDP ; gzEvtHandler::Object_Init
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Object_JumpStart@gzEvtHandler@@UAEXAAVgzEventObjectJump@@@Z
_TEXT	SEGMENT
___formal$ = 8						; size = 4
?Object_JumpStart@gzEvtHandler@@UAEXAAVgzEventObjectJump@@@Z PROC ; gzEvtHandler::Object_JumpStart, COMDAT
; _this$ = ecx

; 85   : 	virtual void Object_JumpStart(gzEventObjectJump &) { };

	ret	4
?Object_JumpStart@gzEvtHandler@@UAEXAAVgzEventObjectJump@@@Z ENDP ; gzEvtHandler::Object_JumpStart
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Object_JumpComplete@gzEvtHandler@@UAEXAAVgzEventObjectJump@@@Z
_TEXT	SEGMENT
___formal$ = 8						; size = 4
?Object_JumpComplete@gzEvtHandler@@UAEXAAVgzEventObjectJump@@@Z PROC ; gzEvtHandler::Object_JumpComplete, COMDAT
; _this$ = ecx

; 86   : 	virtual void Object_JumpComplete(gzEventObjectJump &) { };

	ret	4
?Object_JumpComplete@gzEvtHandler@@UAEXAAVgzEventObjectJump@@@Z ENDP ; gzEvtHandler::Object_JumpComplete
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Object_Fire@gzEvtHandler@@UAEXAAVgzEventObjectFire@@@Z
_TEXT	SEGMENT
___formal$ = 8						; size = 4
?Object_Fire@gzEvtHandler@@UAEXAAVgzEventObjectFire@@@Z PROC ; gzEvtHandler::Object_Fire, COMDAT
; _this$ = ecx

; 91   : 	virtual void Object_Fire(gzEventObjectFire &) { };

	ret	4
?Object_Fire@gzEvtHandler@@UAEXAAVgzEventObjectFire@@@Z ENDP ; gzEvtHandler::Object_Fire
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Object_FlipKill@gzEvtHandler@@UAEXAAVgzEventObjectFlipKill@@@Z
_TEXT	SEGMENT
___formal$ = 8						; size = 4
?Object_FlipKill@gzEvtHandler@@UAEXAAVgzEventObjectFlipKill@@@Z PROC ; gzEvtHandler::Object_FlipKill, COMDAT
; _this$ = ecx

; 92   : 	virtual void Object_FlipKill(gzEventObjectFlipKill &) { };

	ret	4
?Object_FlipKill@gzEvtHandler@@UAEXAAVgzEventObjectFlipKill@@@Z ENDP ; gzEvtHandler::Object_FlipKill
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Net_WolPage@gzEvtHandler@@UAEXAAVgzEventNetWolPage@@@Z
_TEXT	SEGMENT
___formal$ = 8						; size = 4
?Net_WolPage@gzEvtHandler@@UAEXAAVgzEventNetWolPage@@@Z PROC ; gzEvtHandler::Net_WolPage, COMDAT
; _this$ = ecx

; 95   : 	virtual void Net_WolPage(gzEventNetWolPage &) { };

	ret	4
?Net_WolPage@gzEvtHandler@@UAEXAAVgzEventNetWolPage@@@Z ENDP ; gzEvtHandler::Net_WolPage
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Net_SerialAuth@gzEvtHandler@@UAEXAAVgzEventNetSerialAuth@@@Z
_TEXT	SEGMENT
___formal$ = 8						; size = 4
?Net_SerialAuth@gzEvtHandler@@UAEXAAVgzEventNetSerialAuth@@@Z PROC ; gzEvtHandler::Net_SerialAuth, COMDAT
; _this$ = ecx

; 96   : 	virtual void Net_SerialAuth(gzEventNetSerialAuth &) { };

	ret	4
?Net_SerialAuth@gzEvtHandler@@UAEXAAVgzEventNetSerialAuth@@@Z ENDP ; gzEvtHandler::Net_SerialAuth
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Bhs_Poke@gzEvtHandler@@UAEXAAVgzEventBhsPoke@@@Z
_TEXT	SEGMENT
___formal$ = 8						; size = 4
?Bhs_Poke@gzEvtHandler@@UAEXAAVgzEventBhsPoke@@@Z PROC	; gzEvtHandler::Bhs_Poke, COMDAT
; _this$ = ecx

; 99   : 	virtual void Bhs_Poke(gzEventBhsPoke &) { };

	ret	4
?Bhs_Poke@gzEvtHandler@@UAEXAAVgzEventBhsPoke@@@Z ENDP	; gzEvtHandler::Bhs_Poke
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Bhs_Version@gzEvtHandler@@UAEXAAVgzEventBhsVersion@@@Z
_TEXT	SEGMENT
___formal$ = 8						; size = 4
?Bhs_Version@gzEvtHandler@@UAEXAAVgzEventBhsVersion@@@Z PROC ; gzEvtHandler::Bhs_Version, COMDAT
; _this$ = ecx

; 100  : 	virtual void Bhs_Version(gzEventBhsVersion &) { };

	ret	4
?Bhs_Version@gzEvtHandler@@UAEXAAVgzEventBhsVersion@@@Z ENDP ; gzEvtHandler::Bhs_Version
_TEXT	ENDS
PUBLIC	??_C@_0P@IFGAOIHP@gzCrateManager?$AA@		; `string'
;	COMDAT ??_C@_0P@IFGAOIHP@gzCrateManager?$AA@
; File d:\source code\gzgm\gzcrate.h
CONST	SEGMENT
??_C@_0P@IFGAOIHP@gzCrateManager?$AA@ DB 'gzCrateManager', 00H ; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?GetName@gzManagerCrateClass@@UAEPBDXZ
_TEXT	SEGMENT
?GetName@gzManagerCrateClass@@UAEPBDXZ PROC		; gzManagerCrateClass::GetName, COMDAT
; _this$ = ecx

; 134  : 		return "gzCrateManager";

	mov	eax, OFFSET ??_C@_0P@IFGAOIHP@gzCrateManager?$AA@

; 135  : 	};

	ret	0
?GetName@gzManagerCrateClass@@UAEPBDXZ ENDP		; gzManagerCrateClass::GetName
_TEXT	ENDS
PUBLIC	??1gzManagerCrateClass@@UAE@XZ			; gzManagerCrateClass::~gzManagerCrateClass
; Function compile flags: /Ogtpy
;	COMDAT ??1gzManagerCrateClass@@UAE@XZ
_TEXT	SEGMENT
??1gzManagerCrateClass@@UAE@XZ PROC			; gzManagerCrateClass::~gzManagerCrateClass, COMDAT
; _this$ = ecx
	jmp	??1gzEvtHandler@@UAE@XZ			; gzEvtHandler::~gzEvtHandler
??1gzManagerCrateClass@@UAE@XZ ENDP			; gzManagerCrateClass::~gzManagerCrateClass
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ??_GgzManagerCrateClass@@UAEPAXI@Z
_TEXT	SEGMENT
___flags$ = 8						; size = 4
??_GgzManagerCrateClass@@UAEPAXI@Z PROC			; gzManagerCrateClass::`scalar deleting destructor', COMDAT
; _this$ = ecx
	push	esi
	mov	esi, ecx
	call	??1gzEvtHandler@@UAE@XZ			; gzEvtHandler::~gzEvtHandler
	test	BYTE PTR ___flags$[esp], 1
	je	SHORT $LN7@scalar@11
	push	esi
	call	??3@YAXPAX@Z				; operator delete
	add	esp, 4
$LN7@scalar@11:
	mov	eax, esi
	pop	esi
	ret	4
??_GgzManagerCrateClass@@UAEPAXI@Z ENDP			; gzManagerCrateClass::`scalar deleting destructor'
_TEXT	ENDS
PUBLIC	??0gzCrateDataStruct@@QAE@XZ			; gzCrateDataStruct::gzCrateDataStruct
; Function compile flags: /Ogtpy
;	COMDAT ??0gzCrateDataStruct@@QAE@XZ
_TEXT	SEGMENT
??0gzCrateDataStruct@@QAE@XZ PROC			; gzCrateDataStruct::gzCrateDataStruct, COMDAT
; _this$ = ecx
	mov	eax, ecx
	fldz
	xor	ecx, ecx
	mov	DWORD PTR [eax+4], ecx
	mov	DWORD PTR [eax+8], ecx
	mov	DWORD PTR [eax+12], ecx
	mov	edx, OFFSET ??_7?$aVector@I@@6B@
	mov	DWORD PTR [eax], edx
	mov	DWORD PTR [eax+16], edx
	mov	DWORD PTR [eax+20], ecx
	mov	DWORD PTR [eax+24], ecx
	mov	DWORD PTR [eax+28], ecx
	mov	DWORD PTR [eax+32], edx
	mov	DWORD PTR [eax+36], ecx
	mov	DWORD PTR [eax+40], ecx
	mov	DWORD PTR [eax+44], ecx
	mov	DWORD PTR [eax+48], edx
	mov	DWORD PTR [eax+52], ecx
	mov	DWORD PTR [eax+56], ecx
	mov	DWORD PTR [eax+60], ecx
	mov	DWORD PTR [eax+64], edx
	mov	DWORD PTR [eax+68], ecx
	mov	DWORD PTR [eax+72], ecx
	mov	DWORD PTR [eax+76], ecx
	mov	DWORD PTR [eax+80], OFFSET ??_7?$aVector@PAUgzCrateStealthMineStruct@@@@6B@
	mov	DWORD PTR [eax+84], ecx
	mov	DWORD PTR [eax+88], ecx
	mov	DWORD PTR [eax+92], ecx
	fstp	DWORD PTR [eax+104]
	mov	BYTE PTR [eax+96], cl
	mov	DWORD PTR [eax+100], -1
	mov	DWORD PTR [eax+108], ecx
	mov	BYTE PTR [eax+112], 1
	mov	DWORD PTR [eax+116], OFFSET ??_7?$aVector@UgzCrateVehicleAutoRepairStruct@@@@6B@
	mov	DWORD PTR [eax+120], ecx
	mov	DWORD PTR [eax+124], ecx
	mov	DWORD PTR [eax+128], ecx
	mov	DWORD PTR [eax+132], edx
	mov	DWORD PTR [eax+136], ecx
	mov	DWORD PTR [eax+140], ecx
	mov	DWORD PTR [eax+144], ecx
	mov	DWORD PTR [eax+148], edx
	mov	DWORD PTR [eax+152], ecx
	mov	DWORD PTR [eax+156], ecx
	mov	DWORD PTR [eax+160], ecx
	ret	0
??0gzCrateDataStruct@@QAE@XZ ENDP			; gzCrateDataStruct::gzCrateDataStruct
_TEXT	ENDS
PUBLIC	??_C@_0BL@DIHDJBLG@?$CFls?5picked?5up?5?$CFs?5?$CFs?5Crate?4?$AA@ ; `string'
PUBLIC	??_C@_0CO@LPFDDLIF@?$FLCrate?$FN?5BOO?$CB?$CB?$CB?5You?5just?5wasted?5a@ ; `string'
PUBLIC	??_C@_04NPLPABOK@neck?$AA@			; `string'
PUBLIC	__real@40a00000
PUBLIC	??_C@_0M@FNEPDILO@c_visceroid?$AA@		; `string'
EXTRN	?A_Or_An@@YAPADPBD_N@Z:PROC			; A_Or_An
EXTRN	?Drop@gzTiberiumCrystal@@QAEXXZ:PROC		; gzTiberiumCrystal::Drop
EXTRN	?RestoreWeapons@gzTiberiumCrystal@@QAEXXZ:PROC	; gzTiberiumCrystal::RestoreWeapons
EXTRN	?Attach_To_Object_Bone@nc_PhysicalGameObj@@QAEXPAV1@PBD@Z:PROC ; nc_PhysicalGameObj::Attach_To_Object_Bone
EXTRN	?GetCrystalId@gzTiberiumCrystal@@QAEIXZ:PROC	; gzTiberiumCrystal::GetCrystalId
;	COMDAT ??_C@_0BL@DIHDJBLG@?$CFls?5picked?5up?5?$CFs?5?$CFs?5Crate?4?$AA@
; File d:\source code\alib\include\avector.h
CONST	SEGMENT
??_C@_0BL@DIHDJBLG@?$CFls?5picked?5up?5?$CFs?5?$CFs?5Crate?4?$AA@ DB '%ls'
	DB	' picked up %s %s Crate.', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_0CO@LPFDDLIF@?$FLCrate?$FN?5BOO?$CB?$CB?$CB?5You?5just?5wasted?5a@
CONST	SEGMENT
??_C@_0CO@LPFDDLIF@?$FLCrate?$FN?5BOO?$CB?$CB?$CB?5You?5just?5wasted?5a@ DB '['
	DB	'Crate] BOO!!! You just wasted a crate, n00b.', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_04NPLPABOK@neck?$AA@
CONST	SEGMENT
??_C@_04NPLPABOK@neck?$AA@ DB 'neck', 00H		; `string'
CONST	ENDS
;	COMDAT __real@40a00000
CONST	SEGMENT
__real@40a00000 DD 040a00000r			; 5
CONST	ENDS
;	COMDAT ??_C@_0M@FNEPDILO@c_visceroid?$AA@
CONST	SEGMENT
??_C@_0M@FNEPDILO@c_visceroid?$AA@ DB 'c_visceroid', 00H ; `string'
CONST	ENDS
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$?Object_PowerupGrant@gzManagerCrateClass@@UAEXAAVgzEventObjectPowerupGrant@@@Z DD 0ffffffffH
	DD	FLAT:__unwindfunclet$?Object_PowerupGrant@gzManagerCrateClass@@UAEXAAVgzEventObjectPowerupGrant@@@Z$0
__ehfuncinfo$?Object_PowerupGrant@gzManagerCrateClass@@UAEXAAVgzEventObjectPowerupGrant@@@Z DD 019930522H
	DD	01H
	DD	FLAT:__unwindtable$?Object_PowerupGrant@gzManagerCrateClass@@UAEXAAVgzEventObjectPowerupGrant@@@Z
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	01H
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
xdata$x	ENDS
;	COMDAT ?Object_PowerupGrant@gzManagerCrateClass@@UAEXAAVgzEventObjectPowerupGrant@@@Z
_TEXT	SEGMENT
_loopCount$60051 = -48					; size = 4
_pCount$60050 = -44					; size = 4
$T74398 = -40						; size = 4
_Percent$60048 = -36					; size = 4
_this$ = -32						; size = 4
_CrateList$60039 = -28					; size = 16
__$EHRec$ = -12						; size = 12
_evt$ = 8						; size = 4
?Object_PowerupGrant@gzManagerCrateClass@@UAEXAAVgzEventObjectPowerupGrant@@@Z PROC ; gzManagerCrateClass::Object_PowerupGrant, COMDAT
; _this$ = ecx

; 672  : {

	push	-1
	push	__ehhandler$?Object_PowerupGrant@gzManagerCrateClass@@UAEXAAVgzEventObjectPowerupGrant@@@Z
	mov	eax, DWORD PTR fs:0
	push	eax
	mov	DWORD PTR fs:0, esp
	sub	esp, 36					; 00000024H
	push	ebp

; 673  : 	if (evt.m_powerup->NetworkID == this->m_crateId)

	mov	ebp, DWORD PTR _evt$[esp+48]
	mov	eax, DWORD PTR [ebp+32]
	mov	edx, DWORD PTR [eax+12]
	cmp	edx, DWORD PTR [ecx+52]
	mov	DWORD PTR _this$[esp+52], ecx
	jne	$LN150@Object_Pow

; 674  : 	{
; 675  : 		if (evt.m_soldier->Player == NULL)

	mov	eax, DWORD PTR [ebp+36]
	push	ebx
	xor	ebx, ebx
	cmp	DWORD PTR [eax+2400], ebx

; 676  : 		{
; 677  : 			evt.Skip();
; 678  : 			return;

	je	SHORT $LN207@Object_Pow

; 679  : 		}
; 680  : 
; 681  : 		if (!stricmp(evt.m_soldier->Physics->PhysRender->Get_Name(), "c_visceroid"))

	mov	eax, DWORD PTR [eax+1908]
	mov	ecx, DWORD PTR [eax+60]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+16]
	push	OFFSET ??_C@_0M@FNEPDILO@c_visceroid?$AA@
	call	eax
	push	eax
	call	_stricmp
	add	esp, 8
	test	eax, eax
	jne	SHORT $LN36@Object_Pow
$LN207@Object_Pow:

; 682  : 		{
; 683  : 			evt.Skip();

	mov	BYTE PTR [ebp+40], bl
	pop	ebx
	pop	ebp

; 788  : }

	mov	ecx, DWORD PTR __$EHRec$[esp+48]
	mov	DWORD PTR fs:0, ecx
	add	esp, 48					; 00000030H
	ret	4
$LN36@Object_Pow:

; 684  : 			return;
; 685  : 		}
; 686  : 
; 687  : #if VERC(1, 0, 1)
; 688  : 		gzPlayer* gzData = gzPlayerManager::Find(evt.m_soldier->Player);

	mov	ecx, DWORD PTR [ebp+36]
	mov	edx, DWORD PTR [ecx+2400]
	push	esi
	push	edx
	call	?Find@gzPlayerManager@@SAPAVgzPlayer@@PAVnc_cPlayer@@@Z ; gzPlayerManager::Find
	mov	esi, eax
	add	esp, 4

; 689  : 		if (gzData != NULL)

	cmp	esi, ebx
	je	SHORT $LN34@Object_Pow

; 690  : 		{
; 691  : 			if (gzData->GetTibCrystal() != NULL)

	cmp	DWORD PTR [esi+68], ebx
	je	SHORT $LN34@Object_Pow

; 692  : 			{
; 693  : 				gzData->GetTibCrystal()->SetPickupBlock(gzData->GetPlayerData()->PlayerId, 5.0f);

	mov	eax, DWORD PTR [esi+72]
	fld	DWORD PTR __real@40a00000
	mov	ecx, DWORD PTR [esi+68]
	mov	eax, DWORD PTR [eax+1884]

; 694  : 				nc_GameObjManager::Find_PhysicalGameObj(gzData->GetTibCrystal()->GetCrystalId())->Attach_To_Object_Bone(NULL, "neck");

	push	OFFSET ??_C@_04NPLPABOK@neck?$AA@
	fstp	DWORD PTR [ecx+eax*4+104]
	push	ebx
	call	?GetCrystalId@gzTiberiumCrystal@@QAEIXZ	; gzTiberiumCrystal::GetCrystalId
	push	eax
	call	?Find_PhysicalGameObj@nc_GameObjManager@@SAPAVnc_PhysicalGameObj@@H@Z ; nc_GameObjManager::Find_PhysicalGameObj
	add	esp, 4
	mov	ecx, eax
	call	?Attach_To_Object_Bone@nc_PhysicalGameObj@@QAEXPAV1@PBD@Z ; nc_PhysicalGameObj::Attach_To_Object_Bone

; 695  : 				gzData->GetTibCrystal()->RestoreWeapons();

	mov	ecx, DWORD PTR [esi+68]
	call	?RestoreWeapons@gzTiberiumCrystal@@QAEXXZ ; gzTiberiumCrystal::RestoreWeapons

; 696  : 				gzData->GetTibCrystal()->Drop();

	mov	ecx, DWORD PTR [esi+68]
	call	?Drop@gzTiberiumCrystal@@QAEXXZ		; gzTiberiumCrystal::Drop
$LN34@Object_Pow:
	push	edi

; 697  : 			}
; 698  : 		}
; 699  : #endif
; 700  : 
; 701  : 		aVector<gzCrateBase *> CrateList;

	mov	DWORD PTR _CrateList$60039[esp+64], OFFSET ??_7?$aVector@PAVgzCrateBase@@@@6B@
	mov	DWORD PTR _CrateList$60039[esp+68], ebx
	mov	DWORD PTR _CrateList$60039[esp+72], ebx
	mov	DWORD PTR _CrateList$60039[esp+76], ebx

; 702  : 		for (unsigned int i = 0; i < this->m_list.Count(); i++)

	xor	edi, edi
	cmp	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, ebx
	mov	DWORD PTR __$EHRec$[esp+72], ebx
	jbe	$LN175@Object_Pow
	npad	4
$LL33@Object_Pow:

; 703  : 		{
; 704  : 			if ((evt.m_soldier->Vehicle && (this->m_list[i]->GetType() & CRATE_VEHICLE) == CRATE_VEHICLE) // Vehicle crate
; 705  : 				|| (!evt.m_soldier->Vehicle && (this->m_list[i]->GetType() & CRATE_SOLDIER) == CRATE_SOLDIER)) // Soldier crate

	mov	eax, DWORD PTR [ebp+36]
	cmp	DWORD PTR [eax+2444], ebx
	je	SHORT $LN28@Object_Pow
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	ecx, DWORD PTR [ecx+edi*4]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+4]
	call	eax
	test	al, 2
	jne	SHORT $LN29@Object_Pow
$LN28@Object_Pow:
	mov	ecx, DWORD PTR [ebp+36]
	cmp	DWORD PTR [ecx+2444], ebx
	jne	SHORT $LN32@Object_Pow
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	ecx, DWORD PTR [edx+edi*4]
	mov	eax, DWORD PTR [ecx]
	mov	edx, DWORD PTR [eax+4]
	call	edx
	test	al, 1
	je	SHORT $LN32@Object_Pow
$LN29@Object_Pow:

; 706  : 			{
; 707  : 				CrateList.Add(this->m_list[i]);

	mov	ecx, DWORD PTR _CrateList$60039[esp+72]
	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	edx, DWORD PTR _CrateList$60039[esp+64]
	add	ecx, 1
	lea	esi, DWORD PTR [eax+edi*4]
	mov	eax, DWORD PTR [edx+8]
	push	ecx
	lea	ecx, DWORD PTR _CrateList$60039[esp+68]
	call	eax
	test	al, al
	je	SHORT $LN32@Object_Pow
	mov	ecx, DWORD PTR [esi]
	mov	edx, DWORD PTR _CrateList$60039[esp+72]
	mov	eax, DWORD PTR _CrateList$60039[esp+68]
	mov	DWORD PTR [eax+edx*4-4], ecx
	add	DWORD PTR _CrateList$60039[esp+76], 1
$LN32@Object_Pow:
	add	edi, 1
	cmp	edi, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12
	jb	SHORT $LL33@Object_Pow

; 708  : 			}
; 709  : 		}
; 710  : 		if (CrateList.Count() == 0)

	mov	esi, DWORD PTR _CrateList$60039[esp+76]
	cmp	esi, ebx
	jne	SHORT $LN27@Object_Pow
$LN175@Object_Pow:

; 711  : 		{
; 712  : 			evt.Skip();

	mov	BYTE PTR [ebp+40], 0

; 713  : 			return;

	jmp	$LN206@Object_Pow
$LN27@Object_Pow:

; 714  : 		}
; 715  : 
; 716  : 		int Percent = gzRandom.Get_Int(0, 1000);

	push	1000					; 000003e8H
	push	ebx
	mov	ecx, OFFSET ?gzRandom@@3VaRandom@@A	; gzRandom
	call	?Get_Int@aRandom@@QAEJJJ@Z		; aRandom::Get_Int

; 717  : 		int crateIndex = gzRandom.Get_Int(0, CrateList.Count() -1);

	add	esi, -1
	push	esi
	push	ebx
	mov	ecx, OFFSET ?gzRandom@@3VaRandom@@A	; gzRandom
	mov	DWORD PTR _Percent$60048[esp+72], eax
	call	?Get_Int@aRandom@@QAEJJJ@Z		; aRandom::Get_Int
	mov	esi, eax

; 718  : 		int pCount = 0, loopCount = 0;
; 719  : #ifdef CRATEMSG
; 720  : 		gzConsole::Out("[Crate] %s Crates: %d\n",
; 721  : 			evt.m_soldier->Vehicle ? "Vehicle" : "Soldier",
; 722  : 			CrateList.Count()
; 723  : 		);
; 724  : 		gzConsole::Out("[Crate] Percent: %d\n", Percent);
; 725  : 		gzConsole::Out("[Crate] Index: %d\n", crateIndex);
; 726  : #endif
; 727  : 		for (unsigned int i = 0; i < CrateList.Count(); i++)

	xor	eax, eax
	cmp	DWORD PTR _CrateList$60039[esp+76], ebx
	mov	DWORD PTR _pCount$60050[esp+64], ebx
	mov	DWORD PTR _loopCount$60051[esp+64], ebx
	jbe	SHORT $LN157@Object_Pow
$LL192@Object_Pow:

; 728  : 			CrateList[i]->m_selected = false;

	mov	edx, DWORD PTR _CrateList$60039[esp+68]
	mov	ecx, DWORD PTR [edx+eax*4]
	add	eax, 1
	mov	BYTE PTR [ecx+8], 0
	cmp	eax, DWORD PTR _CrateList$60039[esp+76]
	jb	SHORT $LL192@Object_Pow
$LN157@Object_Pow:

; 729  : 		while (CrateList[crateIndex]->GetPercent() == 0)

	mov	edx, DWORD PTR _CrateList$60039[esp+68]
	mov	ecx, DWORD PTR [edx+esi*4]
	mov	eax, DWORD PTR [ecx]
	mov	edx, DWORD PTR [eax+8]
	call	edx
	test	eax, eax
	jne	SHORT $LN186@Object_Pow
	npad	7
$LL23@Object_Pow:

; 730  : 			crateIndex = gzRandom.Get_Int(0, CrateList.Count() -1);

	mov	ecx, DWORD PTR _CrateList$60039[esp+76]
	add	ecx, -1
	cmp	ecx, ebx
	jne	SHORT $LN101@Object_Pow
	xor	esi, esi
	jmp	SHORT $LN102@Object_Pow
$LN101@Object_Pow:
	xor	edi, edi
	cmp	ecx, ebx
	jge	SHORT $LN100@Object_Pow
	mov	edi, ecx
	xor	ecx, ecx
$LN100@Object_Pow:
	mov	edx, DWORD PTR ?gzRandom@@3VaRandom@@A
	mov	eax, edx
	add	edx, 1
	cmp	eax, 64					; 00000040H
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A, edx
	jle	SHORT $LN104@Object_Pow
	mov	edx, 1
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A, edx
$LN104@Object_Pow:
	mov	eax, DWORD PTR ?gzRandom@@3VaRandom@@A+4
	imul	eax, 22695475				; 015a4e33H
	add	eax, edx
	sub	ecx, edi
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A+4, eax
	add	ecx, 1
	shr	eax, 16					; 00000010H
	xor	edx, edx
	div	ecx
	mov	esi, edx
	add	esi, edi
$LN102@Object_Pow:
	mov	ecx, DWORD PTR _CrateList$60039[esp+68]
	mov	ecx, DWORD PTR [ecx+esi*4]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+8]
	call	eax
	test	eax, eax
	je	SHORT $LL23@Object_Pow
$LN186@Object_Pow:

; 729  : 		while (CrateList[crateIndex]->GetPercent() == 0)

	mov	ecx, DWORD PTR _CrateList$60039[esp+76]
$LL21@Object_Pow:

; 731  : 		while (true)
; 732  : 		{
; 733  : 			unsigned int selectedCount = 0;

	xor	edx, edx

; 734  : 			for (unsigned int i = 0; i < CrateList.Count(); i++)

	xor	eax, eax
	cmp	ecx, ebx
	jbe	SHORT $LN197@Object_Pow
	npad	6
$LL19@Object_Pow:

; 735  : 			{
; 736  : 				if (CrateList[i]->m_selected)

	mov	edi, DWORD PTR _CrateList$60039[esp+68]
	mov	edi, DWORD PTR [edi+eax*4]
	cmp	BYTE PTR [edi+8], 0
	je	SHORT $LN18@Object_Pow

; 737  : 					selectedCount++;

	add	edx, 1
$LN18@Object_Pow:

; 734  : 			for (unsigned int i = 0; i < CrateList.Count(); i++)

	add	eax, 1
	cmp	eax, ecx
	jb	SHORT $LL19@Object_Pow
$LN197@Object_Pow:

; 738  : 			}
; 739  : 			if (selectedCount == CrateList.Count())

	cmp	edx, ecx
	jne	SHORT $LN198@Object_Pow

; 740  : 			{
; 741  : 				for (unsigned int i = 0; i < CrateList.Count(); i++)

	xor	eax, eax
	cmp	ecx, ebx
	jbe	SHORT $LN12@Object_Pow
$LL193@Object_Pow:

; 742  : 					CrateList[i]->m_selected = false;

	mov	ecx, DWORD PTR _CrateList$60039[esp+68]
	mov	edx, DWORD PTR [ecx+eax*4]
	mov	BYTE PTR [edx+8], 0
	mov	ecx, DWORD PTR _CrateList$60039[esp+76]
	add	eax, 1
	cmp	eax, ecx
	jb	SHORT $LL193@Object_Pow
$LN12@Object_Pow:

; 743  : 				pCount = 0;
; 744  : 				loopCount++;

	add	DWORD PTR _loopCount$60051[esp+64], 1
	mov	DWORD PTR _pCount$60050[esp+64], ebx
$LN198@Object_Pow:

; 745  : 			}
; 746  : 			while (CrateList[crateIndex]->m_selected)

	mov	eax, DWORD PTR _CrateList$60039[esp+68]
	mov	edx, DWORD PTR [eax+esi*4]
	cmp	BYTE PTR [edx+8], 0
	je	SHORT $LN10@Object_Pow

; 747  : 				crateIndex = gzRandom.Get_Int(0, CrateList.Count() -1);

	mov	ebp, DWORD PTR ?gzRandom@@3VaRandom@@A+4
	mov	ebx, DWORD PTR ?gzRandom@@3VaRandom@@A
	add	ecx, -1
	mov	DWORD PTR $T74398[esp+64], ecx
$LL11@Object_Pow:
	test	ecx, ecx
	jne	SHORT $LN122@Object_Pow
	xor	esi, esi
	jmp	SHORT $LN123@Object_Pow
$LN122@Object_Pow:
	xor	edi, edi
	test	ecx, ecx
	jge	SHORT $LN121@Object_Pow
	mov	edi, ecx
	xor	ecx, ecx
$LN121@Object_Pow:
	mov	eax, ebx
	add	ebx, 1
	cmp	eax, 64					; 00000040H
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A, ebx
	jle	SHORT $LN125@Object_Pow
	mov	ebx, 1
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A, ebx
$LN125@Object_Pow:
	imul	ebp, 22695475				; 015a4e33H
	add	ebp, ebx
	sub	ecx, edi
	add	ecx, 1
	mov	eax, ebp
	shr	eax, 16					; 00000010H
	xor	edx, edx
	div	ecx
	mov	ecx, DWORD PTR $T74398[esp+64]
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A+4, ebp
	mov	esi, edx
	add	esi, edi
$LN123@Object_Pow:
	mov	eax, DWORD PTR _CrateList$60039[esp+68]
	mov	edx, DWORD PTR [eax+esi*4]
	cmp	BYTE PTR [edx+8], 0
	jne	SHORT $LL11@Object_Pow
	mov	ebp, DWORD PTR _evt$[esp+60]
	xor	ebx, ebx
$LN10@Object_Pow:

; 748  : 			CrateList[crateIndex]->m_selected = true;

	mov	eax, DWORD PTR [eax+esi*4]
	mov	BYTE PTR [eax+8], 1

; 749  : 			if (CrateList[crateIndex]->GetPercent() > 0)

	mov	ecx, DWORD PTR _CrateList$60039[esp+68]
	mov	ecx, DWORD PTR [ecx+esi*4]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+8]
	call	eax
	test	eax, eax
	jbe	SHORT $LN194@Object_Pow

; 750  : 			{
; 751  : 				pCount += CrateList[crateIndex]->GetPercent();

	mov	ecx, DWORD PTR _CrateList$60039[esp+68]
	mov	ecx, DWORD PTR [ecx+esi*4]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+8]
	call	eax
	mov	ecx, DWORD PTR _pCount$60050[esp+64]
	add	ecx, eax

; 752  : 				if (pCount >= Percent)

	cmp	ecx, DWORD PTR _Percent$60048[esp+64]
	mov	DWORD PTR _pCount$60050[esp+64], ecx
	jl	SHORT $LN194@Object_Pow

; 753  : 				{
; 754  : 					if (CrateList[crateIndex]->Pick(evt.m_soldier))

	mov	ecx, DWORD PTR _CrateList$60039[esp+68]
	mov	ecx, DWORD PTR [ecx+esi*4]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [ebp+36]
	mov	edx, DWORD PTR [edx+16]
	push	eax
	call	edx
	test	al, al
	jne	$LN163@Object_Pow

; 766  : 					}
; 767  : 					else
; 768  : 					{
; 769  : 						for (unsigned int i = 0; i < CrateList.Count(); i++)

	mov	ecx, DWORD PTR _CrateList$60039[esp+76]
	xor	eax, eax
	cmp	ecx, ebx
	jbe	SHORT $LN200@Object_Pow
	npad	1
$LL4@Object_Pow:

; 770  : 							CrateList[i]->m_selected = false;

	mov	ecx, DWORD PTR _CrateList$60039[esp+68]
	mov	edx, DWORD PTR [ecx+eax*4]
	mov	BYTE PTR [edx+8], 0
	mov	ecx, DWORD PTR _CrateList$60039[esp+76]
	add	eax, 1
	cmp	eax, ecx
	jb	SHORT $LL4@Object_Pow
$LN200@Object_Pow:

; 771  : 						pCount = 0;
; 772  : 						loopCount++;

	add	DWORD PTR _loopCount$60051[esp+64], 1
	mov	DWORD PTR _pCount$60050[esp+64], ebx
	jmp	SHORT $LN5@Object_Pow
$LN194@Object_Pow:
	mov	ecx, DWORD PTR _CrateList$60039[esp+76]
$LN5@Object_Pow:

; 773  : 					}
; 774  : 				}
; 775  : 			}
; 776  : 			if (loopCount >= 5)

	cmp	DWORD PTR _loopCount$60051[esp+64], 5
	jl	$LL21@Object_Pow

; 777  : 			{
; 778  : #ifdef CRATEMSG
; 779  : 				gzConsole::Out("[Crate] Failed to give crate to %ls after 5 tries.\n", evt.m_soldier->Player->PlayerName.m_Buffer);
; 780  : #endif
; 781  : 				PagePlayer(evt.m_soldier->Player->PlayerId, "[Crate] BOO!!! You just wasted a crate, n00b.");

	mov	ecx, DWORD PTR [ebp+36]
	mov	edx, DWORD PTR [ecx+2400]
	mov	eax, DWORD PTR [edx+1884]
	push	OFFSET ??_C@_0CO@LPFDDLIF@?$FLCrate?$FN?5BOO?$CB?$CB?$CB?5You?5just?5wasted?5a@
	push	eax
	call	?PagePlayer@@YAXHPBDZZ			; PagePlayer
	add	esp, 8
$LN20@Object_Pow:

; 782  : 				break;
; 783  : 			}
; 784  : 		}
; 785  : 		this->m_crateId = 0;

	mov	ecx, DWORD PTR _this$[esp+64]
	mov	DWORD PTR [ecx+52], ebx

; 786  : 		evt.m_powerup->Set_Delete_Pending();

	mov	eax, DWORD PTR [ebp+32]
	mov	edx, DWORD PTR [eax+8]
	lea	ecx, DWORD PTR [eax+8]
	mov	eax, DWORD PTR [edx+44]
	call	eax
$LN206@Object_Pow:

; 787  : 	}

	cmp	DWORD PTR _CrateList$60039[esp+68], ebx
	mov	DWORD PTR _CrateList$60039[esp+64], OFFSET ??_7?$aVector@PAVgzCrateBase@@@@6B@
	mov	DWORD PTR __$EHRec$[esp+72], -1
	je	SHORT $LN204@Object_Pow
	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	ecx, DWORD PTR _CrateList$60039[esp+80]
	push	ecx
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
$LN204@Object_Pow:
	pop	edi
	pop	esi
	pop	ebx
$LN150@Object_Pow:

; 788  : }

	mov	ecx, DWORD PTR __$EHRec$[esp+52]
	pop	ebp
	mov	DWORD PTR fs:0, ecx
	add	esp, 48					; 00000030H
	ret	4
$LN163@Object_Pow:

; 755  : 					{
; 756  : 						CrateList[crateIndex]->m_hitCount++;

	mov	eax, DWORD PTR _CrateList$60039[esp+68]
	mov	eax, DWORD PTR [eax+esi*4]
	add	DWORD PTR [eax+4], 1

; 757  : 						if (!CrateList[crateIndex]->SkipDefaultOutput())

	mov	ecx, DWORD PTR _CrateList$60039[esp+68]
	mov	ecx, DWORD PTR [ecx+esi*4]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+12]
	call	eax
	test	al, al
	jne	SHORT $LN20@Object_Pow

; 758  : 						{
; 759  : 							gzLogger("_CRATE", "%ls picked up %s %s Crate.",
; 760  : 								evt.m_soldier->Player->PlayerName.m_Buffer,
; 761  : 								A_Or_An(CrateList[crateIndex]->GetName()),
; 762  : 								CrateList[crateIndex]->GetName()
; 763  : 							);

	mov	ecx, DWORD PTR _CrateList$60039[esp+68]
	mov	esi, DWORD PTR [ecx+esi*4]
	mov	edx, DWORD PTR [esi]
	mov	eax, DWORD PTR [edx]
	mov	ecx, esi
	call	eax
	mov	edx, DWORD PTR [esi]
	push	eax
	mov	eax, DWORD PTR [edx]
	push	ebx
	mov	ecx, esi
	call	eax
	push	eax
	call	?A_Or_An@@YAPADPBD_N@Z			; A_Or_An
	mov	ecx, DWORD PTR [ebp+36]
	mov	edx, DWORD PTR [ecx+2400]
	add	esp, 8
	push	eax
	mov	eax, DWORD PTR [edx+1880]
	push	eax
	push	OFFSET ??_C@_0BL@DIHDJBLG@?$CFls?5picked?5up?5?$CFs?5?$CFs?5Crate?4?$AA@
	push	OFFSET ??_C@_06LJACFPMC@_CRATE?$AA@
	call	?gzLogger@@YAXPBD0ZZ			; gzLogger
	add	esp, 20					; 00000014H

; 764  : 						}
; 765  : 						break;

	jmp	$LN20@Object_Pow
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$?Object_PowerupGrant@gzManagerCrateClass@@UAEXAAVgzEventObjectPowerupGrant@@@Z$0:
	lea	ecx, DWORD PTR _CrateList$60039[ebp]
	jmp	??1?$aVector@PAVgzCrateBase@@@@UAE@XZ	; aVector<gzCrateBase *>::~aVector<gzCrateBase *>
__ehhandler$?Object_PowerupGrant@gzManagerCrateClass@@UAEXAAVgzEventObjectPowerupGrant@@@Z:
	mov	eax, OFFSET __ehfuncinfo$?Object_PowerupGrant@gzManagerCrateClass@@UAEXAAVgzEventObjectPowerupGrant@@@Z
	jmp	___CxxFrameHandler3
text$x	ENDS
?Object_PowerupGrant@gzManagerCrateClass@@UAEXAAVgzEventObjectPowerupGrant@@@Z ENDP ; gzManagerCrateClass::Object_PowerupGrant
PUBLIC	??1aStringArray@@UAE@XZ				; aStringArray::~aStringArray
; Function compile flags: /Ogtpy
;	COMDAT ??1aStringArray@@UAE@XZ
_TEXT	SEGMENT
??1aStringArray@@UAE@XZ PROC				; aStringArray::~aStringArray, COMDAT
; _this$ = ecx
	jmp	??1?$aStringArrayBase@VaString@@@@UAE@XZ ; aStringArrayBase<aString>::~aStringArrayBase<aString>
??1aStringArray@@UAE@XZ ENDP				; aStringArray::~aStringArray
_TEXT	ENDS
PUBLIC	??0?$aStringArrayBase@VaString@@@@QAE@XZ	; aStringArrayBase<aString>::aStringArrayBase<aString>
; Function compile flags: /Ogtpy
;	COMDAT ??0?$aStringArrayBase@VaString@@@@QAE@XZ
_TEXT	SEGMENT
??0?$aStringArrayBase@VaString@@@@QAE@XZ PROC		; aStringArrayBase<aString>::aStringArrayBase<aString>, COMDAT
; _this$ = ecx
	mov	eax, ecx
	xor	ecx, ecx
	mov	DWORD PTR [eax+4], ecx
	mov	DWORD PTR [eax+8], ecx
	mov	DWORD PTR [eax+12], ecx
	mov	DWORD PTR [eax], OFFSET ??_7?$aStringArrayBase@VaString@@@@6B@
	ret	0
??0?$aStringArrayBase@VaString@@@@QAE@XZ ENDP		; aStringArrayBase<aString>::aStringArrayBase<aString>
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ??_G?$aStringArrayBase@VaString@@@@UAEPAXI@Z
_TEXT	SEGMENT
___flags$ = 8						; size = 4
??_G?$aStringArrayBase@VaString@@@@UAEPAXI@Z PROC	; aStringArrayBase<aString>::`scalar deleting destructor', COMDAT
; _this$ = ecx
	push	esi
	mov	esi, ecx
	call	??1?$aStringArrayBase@VaString@@@@UAE@XZ ; aStringArrayBase<aString>::~aStringArrayBase<aString>
	test	BYTE PTR ___flags$[esp], 1
	je	SHORT $LN4@scalar@12
	push	esi
	call	??3@YAXPAX@Z				; operator delete
	add	esp, 4
$LN4@scalar@12:
	mov	eax, esi
	pop	esi
	ret	4
??_G?$aStringArrayBase@VaString@@@@UAEPAXI@Z ENDP	; aStringArrayBase<aString>::`scalar deleting destructor'
_TEXT	ENDS
PUBLIC	??0gzCrateStealthMineStruct@@QAE@XZ		; gzCrateStealthMineStruct::gzCrateStealthMineStruct
; Function compile flags: /Ogtpy
;	COMDAT ??0gzCrateStealthMineStruct@@QAE@XZ
_TEXT	SEGMENT
??0gzCrateStealthMineStruct@@QAE@XZ PROC		; gzCrateStealthMineStruct::gzCrateStealthMineStruct, COMDAT
; _this$ = ecx
	mov	eax, ecx
	xor	ecx, ecx
	mov	DWORD PTR [eax+8], OFFSET ??_7?$aVector@I@@6B@
	mov	DWORD PTR [eax+12], ecx
	mov	DWORD PTR [eax+16], ecx
	mov	DWORD PTR [eax+20], ecx
	ret	0
??0gzCrateStealthMineStruct@@QAE@XZ ENDP		; gzCrateStealthMineStruct::gzCrateStealthMineStruct
_TEXT	ENDS
PUBLIC	??_C@_01CLKCMJKC@?5?$AA@			; `string'
EXTRN	?Find_Player@nc_cPlayerManager@@SAPAVnc_cPlayer@@H@Z:PROC ; nc_cPlayerManager::Find_Player
EXTRN	_atoi:PROC
EXTRN	_strtok:PROC
;	COMDAT ??_C@_01CLKCMJKC@?5?$AA@
; File d:\source code\gzgm\gzeventbase.h
CONST	SEGMENT
??_C@_01CLKCMJKC@?5?$AA@ DB ' ', 00H			; `string'
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
CONST	ENDS
;	COMDAT ?Activate@GiveCrateConsoleFunction@@UAEXPAD@Z
_TEXT	SEGMENT
_evt$ = -48						; size = 48
_text$ = 8						; size = 4
?Activate@GiveCrateConsoleFunction@@UAEXPAD@Z PROC	; GiveCrateConsoleFunction::Activate, COMDAT
; _this$ = ecx

; 2231 : 		unsigned long id = 0;
; 2232 : 		char *token;
; 2233 : 		token = strtok(text," ");

	mov	eax, DWORD PTR _text$[esp-4]
	sub	esp, 48					; 00000030H
	push	OFFSET ??_C@_01CLKCMJKC@?5?$AA@
	push	eax
	call	_strtok
	add	esp, 8

; 2234 : 		if (!token) return;

	test	eax, eax
	je	$LN1@Activate
	push	esi

; 2235 : 		id = atoi(token);

	push	eax
	call	_atoi

; 2236 : 		if (!nc_GameObjManager::Find_PhysicalGameObj(gzCrateMgr->m_crateId))

	mov	ecx, DWORD PTR ?gzCrateMgr@@3PAVgzManagerCrateClass@@A ; gzCrateMgr
	mov	edx, DWORD PTR [ecx+52]
	push	edx
	mov	esi, eax
	call	?Find_PhysicalGameObj@nc_GameObjManager@@SAPAVnc_PhysicalGameObj@@H@Z ; nc_GameObjManager::Find_PhysicalGameObj
	add	esp, 8
	test	eax, eax
	je	SHORT $LN15@Activate

; 2237 : 			return;
; 2238 : 		nc_cPlayer *pData = nc_cPlayerManager::Find_Player(id);

	push	esi
	call	?Find_Player@nc_cPlayerManager@@SAPAVnc_cPlayer@@H@Z ; nc_cPlayerManager::Find_Player
	mov	esi, eax
	add	esp, 4

; 2239 : 		if (!pData || !pData->Owner.Reference)

	test	esi, esi
	je	SHORT $LN15@Activate
	cmp	DWORD PTR [esi+20], 0
	je	SHORT $LN15@Activate

; 2240 : 			return;
; 2241 : 		gzEventObjectPowerupGrant evt;

	fldz
	or	eax, -1
	mov	DWORD PTR _evt$[esp+72], eax
	fstp	QWORD PTR _evt$[esp+60]
	mov	DWORD PTR _evt$[esp+76], eax

; 2242 : 		evt.m_powerup = nc_GameObjManager::Find_PhysicalGameObj(gzCrateMgr->m_crateId)->As_PowerUpGameObj();

	mov	eax, DWORD PTR ?gzCrateMgr@@3PAVgzManagerCrateClass@@A ; gzCrateMgr
	mov	DWORD PTR _evt$[esp+68], 0
	mov	DWORD PTR _evt$[esp+52], OFFSET ??_7gzEventObjectPowerupGrant@@6B@
	mov	BYTE PTR _evt$[esp+92], 1
	mov	ecx, DWORD PTR [eax+52]
	push	ecx
	call	?Find_PhysicalGameObj@nc_GameObjManager@@SAPAVnc_PhysicalGameObj@@H@Z ; nc_GameObjManager::Find_PhysicalGameObj
	mov	edx, DWORD PTR [eax]
	mov	ecx, eax
	mov	eax, DWORD PTR [edx+136]
	add	esp, 4
	call	eax
	mov	DWORD PTR _evt$[esp+84], eax

; 2243 : 		evt.m_soldier = pData->Owner.Reference->obj->As_SoldierGameObj();

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

; 2244 : 		gzCrateMgr->Object_PowerupGrant(evt);

	mov	ecx, DWORD PTR ?gzCrateMgr@@3PAVgzManagerCrateClass@@A ; gzCrateMgr
	mov	DWORD PTR _evt$[esp+88], eax
	mov	edx, DWORD PTR [ecx]
	mov	edx, DWORD PTR [edx+108]
	lea	eax, DWORD PTR _evt$[esp+52]
	push	eax
	call	edx
$LN15@Activate:
	pop	esi
$LN1@Activate:

; 2245 : 	}

	add	esp, 48					; 00000030H
	ret	4
?Activate@GiveCrateConsoleFunction@@UAEXPAD@Z ENDP	; GiveCrateConsoleFunction::Activate
_TEXT	ENDS
PUBLIC	??_GgzCrateStealthMineStruct@@QAEPAXI@Z		; gzCrateStealthMineStruct::`scalar deleting destructor'
; Function compile flags: /Ogtpy
;	COMDAT ??_GgzCrateStealthMineStruct@@QAEPAXI@Z
_TEXT	SEGMENT
___flags$ = 8						; size = 4
??_GgzCrateStealthMineStruct@@QAEPAXI@Z PROC		; gzCrateStealthMineStruct::`scalar deleting destructor', COMDAT
; _this$ = ecx
	push	esi
	mov	esi, ecx
	cmp	DWORD PTR [esi+12], 0
	mov	DWORD PTR [esi+8], OFFSET ??_7?$aVector@I@@6B@
	je	SHORT $LN9@scalar@13
	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+12]
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
	mov	DWORD PTR [esi+12], 0
$LN9@scalar@13:
	test	BYTE PTR ___flags$[esp], 1
	mov	DWORD PTR [esi+16], 0
	mov	DWORD PTR [esi+20], 0
	je	SHORT $LN14@scalar@13
	push	esi
	call	??3@YAXPAX@Z				; operator delete
	add	esp, 4
$LN14@scalar@13:
	mov	eax, esi
	pop	esi
	ret	4
??_GgzCrateStealthMineStruct@@QAEPAXI@Z ENDP		; gzCrateStealthMineStruct::`scalar deleting destructor'
_TEXT	ENDS
PUBLIC	??_7aStringArray@@6B@				; aStringArray::`vftable'
PUBLIC	??0aStringArray@@QAE@XZ				; aStringArray::aStringArray
PUBLIC	??_R4aStringArray@@6B@				; aStringArray::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVaStringArray@@@8			; aStringArray `RTTI Type Descriptor'
PUBLIC	??_R3aStringArray@@8				; aStringArray::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2aStringArray@@8				; aStringArray::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@aStringArray@@8			; aStringArray::`RTTI Base Class Descriptor at (0,-1,0,64)'
EXTRN	??_EaStringArray@@UAEPAXI@Z:PROC		; aStringArray::`vector deleting destructor'
;	COMDAT ??_R1A@?0A@EA@aStringArray@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@aStringArray@@8 DD FLAT:??_R0?AVaStringArray@@@8 ; aStringArray::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	02H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3aStringArray@@8
rdata$r	ENDS
;	COMDAT ??_R2aStringArray@@8
rdata$r	SEGMENT
??_R2aStringArray@@8 DD FLAT:??_R1A@?0A@EA@aStringArray@@8 ; aStringArray::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@?$aStringArrayBase@VaString@@@@8
	DD	FLAT:??_R1A@?0A@EA@?$aVector@PAVaStringData@@@@8
rdata$r	ENDS
;	COMDAT ??_R3aStringArray@@8
rdata$r	SEGMENT
??_R3aStringArray@@8 DD 00H				; aStringArray::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	03H
	DD	FLAT:??_R2aStringArray@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVaStringArray@@@8
_DATA	SEGMENT
??_R0?AVaStringArray@@@8 DD FLAT:??_7type_info@@6B@	; aStringArray `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVaStringArray@@', 00H
_DATA	ENDS
;	COMDAT ??_R4aStringArray@@6B@
rdata$r	SEGMENT
??_R4aStringArray@@6B@ DD 00H				; aStringArray::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVaStringArray@@@8
	DD	FLAT:??_R3aStringArray@@8
rdata$r	ENDS
;	COMDAT ??_7aStringArray@@6B@
CONST	SEGMENT
??_7aStringArray@@6B@ DD FLAT:??_R4aStringArray@@6B@	; aStringArray::`vftable'
	DD	FLAT:??_EaStringArray@@UAEPAXI@Z
	DD	FLAT:?Clear@?$aStringArrayBase@VaString@@@@UAEXXZ
	DD	FLAT:?Resize@?$aVector@PAVaStringData@@@@UAE_NI@Z
	DD	FLAT:?Add@?$aVector@PAVaStringData@@@@UAEXABQAVaStringData@@@Z
	DD	FLAT:?Insert@?$aVector@PAVaStringData@@@@UAEXIABQAVaStringData@@@Z
	DD	FLAT:?Delete@?$aStringArrayBase@VaString@@@@UAEXI@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0aStringArray@@QAE@XZ
_TEXT	SEGMENT
??0aStringArray@@QAE@XZ PROC				; aStringArray::aStringArray, COMDAT
; _this$ = ecx
	mov	eax, ecx
	xor	ecx, ecx
	mov	DWORD PTR [eax+4], ecx
	mov	DWORD PTR [eax+8], ecx
	mov	DWORD PTR [eax+12], ecx
	mov	DWORD PTR [eax], OFFSET ??_7aStringArray@@6B@
	ret	0
??0aStringArray@@QAE@XZ ENDP				; aStringArray::aStringArray
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ??_GaStringArray@@UAEPAXI@Z
_TEXT	SEGMENT
___flags$ = 8						; size = 4
??_GaStringArray@@UAEPAXI@Z PROC			; aStringArray::`scalar deleting destructor', COMDAT
; _this$ = ecx
	push	esi
	mov	esi, ecx
	call	??1?$aStringArrayBase@VaString@@@@UAE@XZ ; aStringArrayBase<aString>::~aStringArrayBase<aString>
	test	BYTE PTR ___flags$[esp], 1
	je	SHORT $LN7@scalar@14
	push	esi
	call	??3@YAXPAX@Z				; operator delete
	add	esp, 4
$LN7@scalar@14:
	mov	eax, esi
	pop	esi
	ret	4
??_GaStringArray@@UAEPAXI@Z ENDP			; aStringArray::`scalar deleting destructor'
_TEXT	ENDS
PUBLIC	??_C@_0GM@NEKHGFIF@?$FLCrate?$FN?3?5You?8ve?5picked?5up?5a?5Stea@ ; `string'
EXTRN	?Add_Weapon@gzWeaponPackClass@@QAEXPBD@Z:PROC	; gzWeaponPackClass::Add_Weapon
;	COMDAT ??_C@_0GM@NEKHGFIF@?$FLCrate?$FN?3?5You?8ve?5picked?5up?5a?5Stea@
; File d:\source code\alib\include\avector.h
CONST	SEGMENT
??_C@_0GM@NEKHGFIF@?$FLCrate?$FN?3?5You?8ve?5picked?5up?5a?5Stea@ DB '[Cr'
	DB	'ate]: You''ve picked up a Stealth Mine Crate. You can place %'
	DB	'd proximity mine(s) which enemy can NOT see.', 00H ; `string'
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
CONST	ENDS
;	COMDAT ?Pick@Crate_StealthMine@@EAE_NPAVnc_SmartGameObj@@@Z
_TEXT	SEGMENT
_stealthMine$61364 = 8					; size = 4
_Picker$ = 8						; size = 4
?Pick@Crate_StealthMine@@EAE_NPAVnc_SmartGameObj@@@Z PROC ; Crate_StealthMine::Pick, COMDAT
; _this$ = ecx

; 1806 : 		int pIndex = -1;
; 1807 : 		for (unsigned int i = 0; i < gzCrateMgr->m_data->StealthMine.Count(); i++)

	mov	ecx, DWORD PTR ?gzCrateMgr@@3PAVgzManagerCrateClass@@A ; gzCrateMgr
	mov	ecx, DWORD PTR [ecx+60]
	mov	edx, DWORD PTR [ecx+92]
	push	ebx
	push	ebp
	push	esi
	xor	eax, eax
	test	edx, edx
	push	edi
	mov	edi, DWORD PTR _Picker$[esp+12]
	jbe	SHORT $LN35@Pick@30
	mov	ecx, DWORD PTR [ecx+84]
	mov	ebx, DWORD PTR [edi+2400]
	mov	esi, ecx
$LL6@Pick@30:

; 1808 : 		{
; 1809 : 			if (gzCrateMgr->m_data->StealthMine[i]->owner == Picker->Player)

	mov	ebp, DWORD PTR [esi]
	cmp	DWORD PTR [ebp], ebx
	je	SHORT $LN31@Pick@30
	add	eax, 1
	add	esi, 4
	cmp	eax, edx
	jb	SHORT $LL6@Pick@30
	jmp	SHORT $LN35@Pick@30
$LN31@Pick@30:

; 1810 : 			{
; 1811 : 				gzCrateMgr->m_data->StealthMine[i]->count += 6;

	mov	ecx, DWORD PTR [ecx+eax*4]
	add	DWORD PTR [ecx+4], 6

; 1812 : 				pIndex = i;
; 1813 : 				break;
; 1814 : 			}
; 1815 : 		}
; 1816 : 		if (pIndex == -1)

	cmp	eax, -1
	mov	esi, eax
	jne	$LN34@Pick@30
$LN35@Pick@30:

; 1817 : 		{
; 1818 : 			pIndex = gzCrateMgr->m_data->StealthMine.Count();

	mov	edx, DWORD PTR ?gzCrateMgr@@3PAVgzManagerCrateClass@@A ; gzCrateMgr
	mov	eax, DWORD PTR [edx+60]
	mov	esi, DWORD PTR [eax+92]

; 1819 : 			gzCrateStealthMineStruct *stealthMine = new gzCrateStealthMineStruct;

	push	OFFSET ??_C@_00CNPNBAHC@?$AA@
	push	1819					; 0000071bH
	push	OFFSET ??_C@_0O@GPLKOMOA@?4?2gzcrate?4cpp?$AA@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	push	24					; 00000018H
	call	??2@YAPAXI@Z				; operator new
	xor	ebx, ebx
	add	esp, 16					; 00000010H
	cmp	eax, ebx
	je	SHORT $LN9@Pick@30
	mov	DWORD PTR [eax+8], OFFSET ??_7?$aVector@I@@6B@
	mov	DWORD PTR [eax+12], ebx
	mov	DWORD PTR [eax+16], ebx
	mov	DWORD PTR [eax+20], ebx
	jmp	SHORT $LN10@Pick@30
$LN9@Pick@30:
	xor	eax, eax
$LN10@Pick@30:
	mov	DWORD PTR _stealthMine$61364[esp+12], eax

; 1820 : 			stealthMine->count = 6;

	mov	DWORD PTR [eax+4], 6

; 1821 : 			stealthMine->owner = Picker->Player;

	mov	ecx, DWORD PTR [edi+2400]
	mov	edx, DWORD PTR _stealthMine$61364[esp+12]
	mov	DWORD PTR [edx], ecx

; 1822 : 			gzCrateMgr->m_data->StealthMine.Add(stealthMine);

	mov	eax, DWORD PTR ?gzCrateMgr@@3PAVgzManagerCrateClass@@A ; gzCrateMgr
	mov	eax, DWORD PTR [eax+60]
	mov	edx, DWORD PTR [eax+80]
	mov	edx, DWORD PTR [edx+12]
	lea	ecx, DWORD PTR [eax+80]
	lea	eax, DWORD PTR _stealthMine$61364[esp+12]
	push	eax
	call	edx

; 1823 : 
; 1824 : 			gzPlayer *gzData = gzPlayerManager::Find(Picker->Player);

	mov	eax, DWORD PTR [edi+2400]
	push	eax
	call	?Find@gzPlayerManager@@SAPAVgzPlayer@@PAVnc_cPlayer@@@Z ; gzPlayerManager::Find
	add	esp, 4

; 1825 : 			if (gzData)

	cmp	eax, ebx
	je	SHORT $LN34@Pick@30

; 1826 : 				gzData->GetWeaponPack()->Add_Weapon("Weapon_MineProximity_Player");

	mov	ecx, DWORD PTR [eax+60]
	push	OFFSET ??_C@_0BM@KBGLCCJF@Weapon_MineProximity_Player?$AA@
	call	?Add_Weapon@gzWeaponPackClass@@QAEXPBD@Z ; gzWeaponPackClass::Add_Weapon
$LN34@Pick@30:

; 1827 : 		}
; 1828 : 		Picker->WeaponBag->Add_Weapon("Weapon_MineProximity_Player", 6, true);

	mov	ecx, DWORD PTR [edi+1968]
	push	1
	push	6
	push	OFFSET ??_C@_0BM@KBGLCCJF@Weapon_MineProximity_Player?$AA@
	call	?Add_Weapon@nc_WeaponBagClass@@QAEXPBDH_N@Z ; nc_WeaponBagClass::Add_Weapon

; 1829 : 		PagePlayer(Picker->Player->PlayerId, "[Crate]: You've picked up a Stealth Mine Crate. You can place %d proximity mine(s) which enemy can NOT see.", gzCrateMgr->m_data->StealthMine[pIndex]->count);

	mov	ecx, DWORD PTR ?gzCrateMgr@@3PAVgzManagerCrateClass@@A ; gzCrateMgr
	mov	edx, DWORD PTR [ecx+60]
	mov	eax, DWORD PTR [edx+84]
	mov	ecx, DWORD PTR [eax+esi*4]
	mov	edx, DWORD PTR [ecx+4]
	mov	eax, DWORD PTR [edi+2400]
	mov	ecx, DWORD PTR [eax+1884]
	push	edx
	push	OFFSET ??_C@_0GM@NEKHGFIF@?$FLCrate?$FN?3?5You?8ve?5picked?5up?5a?5Stea@
	push	ecx
	call	?PagePlayer@@YAXHPBDZZ			; PagePlayer
	add	esp, 12					; 0000000cH
	pop	edi
	pop	esi
	pop	ebp

; 1830 : 		return true;

	mov	al, 1
	pop	ebx

; 1831 : 	};

	ret	4
?Pick@Crate_StealthMine@@EAE_NPAVnc_SmartGameObj@@@Z ENDP ; Crate_StealthMine::Pick
_TEXT	ENDS
PUBLIC	??_C@_0BO@MOCMHBIB@d?3?2source?5code?2gzgm?2gzcrate?4h?$AA@ ; `string'
PUBLIC	??1gzCrateDataStruct@@QAE@XZ			; gzCrateDataStruct::~gzCrateDataStruct
;	COMDAT ??_C@_0BO@MOCMHBIB@d?3?2source?5code?2gzgm?2gzcrate?4h?$AA@
; File d:\source code\alib\include\avector.h
CONST	SEGMENT
??_C@_0BO@MOCMHBIB@d?3?2source?5code?2gzgm?2gzcrate?4h?$AA@ DB 'd:\source'
	DB	' code\gzgm\gzcrate.h', 00H			; `string'
CONST	ENDS
;	COMDAT xdata$x
xdata$x	SEGMENT
__ehfuncinfo$??1gzCrateDataStruct@@QAE@XZ DD 019930522H
	DD	09H
	DD	FLAT:__unwindtable$??1gzCrateDataStruct@@QAE@XZ
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	01H
__unwindtable$??1gzCrateDataStruct@@QAE@XZ DD 0ffffffffH
	DD	FLAT:__unwindfunclet$??1gzCrateDataStruct@@QAE@XZ$0
	DD	00H
	DD	FLAT:__unwindfunclet$??1gzCrateDataStruct@@QAE@XZ$1
	DD	01H
	DD	FLAT:__unwindfunclet$??1gzCrateDataStruct@@QAE@XZ$2
	DD	02H
	DD	FLAT:__unwindfunclet$??1gzCrateDataStruct@@QAE@XZ$3
	DD	03H
	DD	FLAT:__unwindfunclet$??1gzCrateDataStruct@@QAE@XZ$4
	DD	04H
	DD	FLAT:__unwindfunclet$??1gzCrateDataStruct@@QAE@XZ$5
	DD	05H
	DD	FLAT:__unwindfunclet$??1gzCrateDataStruct@@QAE@XZ$6
	DD	06H
	DD	FLAT:__unwindfunclet$??1gzCrateDataStruct@@QAE@XZ$7
	DD	07H
	DD	FLAT:__unwindfunclet$??1gzCrateDataStruct@@QAE@XZ$8
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.h
xdata$x	ENDS
;	COMDAT ??1gzCrateDataStruct@@QAE@XZ
_TEXT	SEGMENT
_this$ = -16						; size = 4
__$EHRec$ = -12						; size = 12
??1gzCrateDataStruct@@QAE@XZ PROC			; gzCrateDataStruct::~gzCrateDataStruct, COMDAT
; _this$ = ecx

; 90   : 	{

	push	-1
	push	__ehhandler$??1gzCrateDataStruct@@QAE@XZ
	mov	eax, DWORD PTR fs:0
	push	eax
	mov	DWORD PTR fs:0, esp
	push	ecx
	push	ebx
	push	ebp
	push	esi
	mov	esi, ecx
	push	edi
	mov	DWORD PTR _this$[esp+32], esi

; 91   : 		this->MetalGear.Clear();

	mov	eax, DWORD PTR [esi+16]
	mov	edx, DWORD PTR [eax+4]
	lea	ecx, DWORD PTR [esi+16]
	mov	DWORD PTR __$EHRec$[esp+40], 8
	call	edx

; 92   : 		this->ExplosiveSuit.Clear();

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

; 93   : 		this->ChemSuit.Clear();

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

; 94   : 		this->Hover.Clear();

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

; 95   : 		for (unsigned int i = 0; i < this->StealthMine.Count(); i++)

	mov	eax, DWORD PTR [esi+92]
	xor	ebx, ebx
	xor	ebp, ebp
	cmp	eax, ebx
	jbe	SHORT $LN1@gzCrateDat
	npad	1
$LL3@gzCrateDat:

; 96   : 		{
; 97   : 			this->StealthMine[i]->activeList.Clear();

	mov	eax, DWORD PTR [esi+84]
	mov	eax, DWORD PTR [eax+ebp*4]
	mov	edx, DWORD PTR [eax+8]
	lea	ecx, DWORD PTR [eax+8]
	mov	eax, DWORD PTR [edx+4]
	call	eax

; 98   : 			delete this->StealthMine[i];

	push	OFFSET ??_C@_00CNPNBAHC@?$AA@
	push	98					; 00000062H
	push	OFFSET ??_C@_0BO@MOCMHBIB@d?3?2source?5code?2gzgm?2gzcrate?4h?$AA@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	ecx, DWORD PTR [esi+84]
	mov	edi, DWORD PTR [ecx+ebp*4]
	add	esp, 12					; 0000000cH
	cmp	edi, ebx
	je	SHORT $LN2@gzCrateDat
	cmp	DWORD PTR [edi+12], ebx
	mov	DWORD PTR [edi+8], OFFSET ??_7?$aVector@I@@6B@
	je	SHORT $LN33@gzCrateDat
	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 [edi+12]
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
	mov	DWORD PTR [edi+12], ebx
$LN33@gzCrateDat:
	push	edi
	mov	DWORD PTR [edi+16], ebx
	mov	DWORD PTR [edi+20], ebx
	call	??3@YAXPAX@Z				; operator delete
	add	esp, 4
$LN2@gzCrateDat:
	add	ebp, 1
	cmp	ebp, DWORD PTR [esi+92]
	jb	SHORT $LL3@gzCrateDat
$LN1@gzCrateDat:

; 99   : 		}
; 100  : 		this->Spy.Clear();

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

; 101  : 		this->StealthMine.Clear();

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

; 102  : 		this->VehicleAutoRepair.Clear();

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

; 103  : 		this->DemoTruck.Clear();

	mov	edx, DWORD PTR [esi+132]
	mov	eax, DWORD PTR [edx+4]
	lea	ebp, DWORD PTR [esi+132]
	mov	ecx, ebp
	call	eax

; 104  : 		this->VehicleAntiEnemy.Clear();

	mov	edx, DWORD PTR [esi+148]
	mov	eax, DWORD PTR [edx+4]
	lea	edi, DWORD PTR [esi+148]
	mov	ecx, edi
	call	eax

; 105  : 	};

	cmp	DWORD PTR [edi+4], ebx
	mov	BYTE PTR __$EHRec$[esp+40], 7
	mov	DWORD PTR [edi], OFFSET ??_7?$aVector@I@@6B@
	je	SHORT $LN104@gzCrateDat
	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 [edi+4]
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
	mov	DWORD PTR [edi+4], ebx
$LN104@gzCrateDat:
	mov	DWORD PTR [edi+8], ebx
	mov	DWORD PTR [edi+12], ebx
	cmp	DWORD PTR [ebp+4], ebx
	mov	BYTE PTR __$EHRec$[esp+40], 6
	mov	DWORD PTR [ebp], OFFSET ??_7?$aVector@I@@6B@
	je	SHORT $LN105@gzCrateDat
	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 [ebp+4]
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
	mov	DWORD PTR [ebp+4], ebx
$LN105@gzCrateDat:
	mov	DWORD PTR [ebp+8], ebx
	mov	DWORD PTR [ebp+12], ebx
	cmp	DWORD PTR [esi+120], ebx
	mov	BYTE PTR __$EHRec$[esp+40], 5
	mov	DWORD PTR [esi+116], OFFSET ??_7?$aVector@UgzCrateVehicleAutoRepairStruct@@@@6B@
	je	SHORT $LN106@gzCrateDat
	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+120]
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
	mov	DWORD PTR [esi+120], ebx
$LN106@gzCrateDat:
	mov	DWORD PTR [esi+124], ebx
	mov	DWORD PTR [esi+128], ebx
	cmp	DWORD PTR [esi+84], ebx
	mov	BYTE PTR __$EHRec$[esp+40], 4
	mov	DWORD PTR [esi+80], OFFSET ??_7?$aVector@PAUgzCrateStealthMineStruct@@@@6B@
	je	SHORT $LN107@gzCrateDat
	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+84]
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
	mov	DWORD PTR [esi+84], ebx
$LN107@gzCrateDat:
	mov	DWORD PTR [esi+88], ebx
	mov	DWORD PTR [esi+92], ebx
	cmp	DWORD PTR [esi+68], ebx
	mov	BYTE PTR __$EHRec$[esp+40], 3
	mov	DWORD PTR [esi+64], OFFSET ??_7?$aVector@I@@6B@
	je	SHORT $LN108@gzCrateDat
	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+68]
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
	mov	DWORD PTR [esi+68], ebx
$LN108@gzCrateDat:
	mov	DWORD PTR [esi+72], ebx
	mov	DWORD PTR [esi+76], ebx
	cmp	DWORD PTR [esi+52], ebx
	mov	BYTE PTR __$EHRec$[esp+40], 2
	mov	DWORD PTR [esi+48], OFFSET ??_7?$aVector@I@@6B@
	je	SHORT $LN109@gzCrateDat
	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+52]
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
	mov	DWORD PTR [esi+52], ebx
$LN109@gzCrateDat:
	mov	DWORD PTR [esi+56], ebx
	mov	DWORD PTR [esi+60], ebx
	cmp	DWORD PTR [esi+36], ebx
	mov	BYTE PTR __$EHRec$[esp+40], 1
	mov	DWORD PTR [esi+32], OFFSET ??_7?$aVector@I@@6B@
	je	SHORT $LN110@gzCrateDat
	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+36]
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
	mov	DWORD PTR [esi+36], ebx
$LN110@gzCrateDat:
	mov	DWORD PTR [esi+40], ebx
	mov	DWORD PTR [esi+44], ebx
	cmp	DWORD PTR [esi+20], ebx
	mov	BYTE PTR __$EHRec$[esp+40], bl
	mov	DWORD PTR [esi+16], OFFSET ??_7?$aVector@I@@6B@
	je	SHORT $LN111@gzCrateDat
	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+20]
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
	mov	DWORD PTR [esi+20], ebx
$LN111@gzCrateDat:
	mov	DWORD PTR [esi+24], ebx
	mov	DWORD PTR [esi+28], ebx
	cmp	DWORD PTR [esi+4], ebx
	mov	DWORD PTR __$EHRec$[esp+40], -1
	mov	DWORD PTR [esi], OFFSET ??_7?$aVector@I@@6B@
	je	SHORT $LN103@gzCrateDat
	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	ecx, DWORD PTR [esi+4]
	push	ecx
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
	mov	DWORD PTR [esi+4], ebx
$LN103@gzCrateDat:
	mov	ecx, DWORD PTR __$EHRec$[esp+32]
	pop	edi
	mov	DWORD PTR [esi+12], ebx
	mov	DWORD PTR [esi+8], ebx
	pop	esi
	pop	ebp
	pop	ebx
	mov	DWORD PTR fs:0, ecx
	add	esp, 16					; 00000010H
	ret	0
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$??1gzCrateDataStruct@@QAE@XZ$0:
	mov	ecx, DWORD PTR _this$[ebp]
	jmp	??1?$aVector@I@@UAE@XZ			; aVector<unsigned int>::~aVector<unsigned int>
__unwindfunclet$??1gzCrateDataStruct@@QAE@XZ$1:
	mov	ecx, DWORD PTR _this$[ebp]
	add	ecx, 16					; 00000010H
	jmp	??1?$aVector@I@@UAE@XZ			; aVector<unsigned int>::~aVector<unsigned int>
__unwindfunclet$??1gzCrateDataStruct@@QAE@XZ$2:
	mov	ecx, DWORD PTR _this$[ebp]
	add	ecx, 32					; 00000020H
	jmp	??1?$aVector@I@@UAE@XZ			; aVector<unsigned int>::~aVector<unsigned int>
__unwindfunclet$??1gzCrateDataStruct@@QAE@XZ$3:
	mov	ecx, DWORD PTR _this$[ebp]
	add	ecx, 48					; 00000030H
	jmp	??1?$aVector@I@@UAE@XZ			; aVector<unsigned int>::~aVector<unsigned int>
__unwindfunclet$??1gzCrateDataStruct@@QAE@XZ$4:
	mov	ecx, DWORD PTR _this$[ebp]
	add	ecx, 64					; 00000040H
	jmp	??1?$aVector@I@@UAE@XZ			; aVector<unsigned int>::~aVector<unsigned int>
__unwindfunclet$??1gzCrateDataStruct@@QAE@XZ$5:
	mov	ecx, DWORD PTR _this$[ebp]
	add	ecx, 80					; 00000050H
	jmp	??1?$aVector@PAUgzCrateStealthMineStruct@@@@UAE@XZ ; aVector<gzCrateStealthMineStruct *>::~aVector<gzCrateStealthMineStruct *>
__unwindfunclet$??1gzCrateDataStruct@@QAE@XZ$6:
	mov	ecx, DWORD PTR _this$[ebp]
	add	ecx, 116				; 00000074H
	jmp	??1?$aVector@UgzCrateVehicleAutoRepairStruct@@@@UAE@XZ ; aVector<gzCrateVehicleAutoRepairStruct>::~aVector<gzCrateVehicleAutoRepairStruct>
__unwindfunclet$??1gzCrateDataStruct@@QAE@XZ$7:
	mov	ecx, DWORD PTR _this$[ebp]
	add	ecx, 132				; 00000084H
	jmp	??1?$aVector@I@@UAE@XZ			; aVector<unsigned int>::~aVector<unsigned int>
__unwindfunclet$??1gzCrateDataStruct@@QAE@XZ$8:
	mov	ecx, DWORD PTR _this$[ebp]
	add	ecx, 148				; 00000094H
	jmp	??1?$aVector@I@@UAE@XZ			; aVector<unsigned int>::~aVector<unsigned int>
__ehhandler$??1gzCrateDataStruct@@QAE@XZ:
	mov	eax, OFFSET __ehfuncinfo$??1gzCrateDataStruct@@QAE@XZ
	jmp	___CxxFrameHandler3
text$x	ENDS
??1gzCrateDataStruct@@QAE@XZ ENDP			; gzCrateDataStruct::~gzCrateDataStruct
PUBLIC	??_GgzCrateDataStruct@@QAEPAXI@Z		; gzCrateDataStruct::`scalar deleting destructor'
; Function compile flags: /Ogtpy
;	COMDAT ??_GgzCrateDataStruct@@QAEPAXI@Z
_TEXT	SEGMENT
___flags$ = 8						; size = 4
??_GgzCrateDataStruct@@QAEPAXI@Z PROC			; gzCrateDataStruct::`scalar deleting destructor', COMDAT
; _this$ = ecx
	push	esi
	mov	esi, ecx
	call	??1gzCrateDataStruct@@QAE@XZ		; gzCrateDataStruct::~gzCrateDataStruct
	test	BYTE PTR ___flags$[esp], 1
	je	SHORT $LN4@scalar@15
	push	esi
	call	??3@YAXPAX@Z				; operator delete
	add	esp, 4
$LN4@scalar@15:
	mov	eax, esi
	pop	esi
	ret	4
??_GgzCrateDataStruct@@QAEPAXI@Z ENDP			; gzCrateDataStruct::`scalar deleting destructor'
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
_TEXT	ENDS
;	COMDAT ?Level_Loaded@gzManagerCrateClass@@UAEXXZ
_TEXT	SEGMENT
?Level_Loaded@gzManagerCrateClass@@UAEXXZ PROC		; gzManagerCrateClass::Level_Loaded, COMDAT
; _this$ = ecx

; 241  : {

	push	esi
	mov	esi, ecx

; 242  : 	if (this->m_data)

	cmp	DWORD PTR [esi+60], 0
	je	SHORT $LN4@Level_Load
	push	edi

; 243  : 		delete this->m_data;

	push	OFFSET ??_C@_00CNPNBAHC@?$AA@
	push	243					; 000000f3H
	push	OFFSET ??_C@_0O@GPLKOMOA@?4?2gzcrate?4cpp?$AA@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	edi, DWORD PTR [esi+60]
	add	esp, 12					; 0000000cH
	test	edi, edi
	je	SHORT $LN16@Level_Load
	mov	ecx, edi
	call	??1gzCrateDataStruct@@QAE@XZ		; gzCrateDataStruct::~gzCrateDataStruct
	push	edi
	call	??3@YAXPAX@Z				; operator delete
	add	esp, 4
$LN16@Level_Load:
	pop	edi
$LN4@Level_Load:

; 244  : 	this->m_data = new gzCrateDataStruct;

	push	OFFSET ??_C@_00CNPNBAHC@?$AA@
	push	244					; 000000f4H
	push	OFFSET ??_C@_0O@GPLKOMOA@?4?2gzcrate?4cpp?$AA@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	push	164					; 000000a4H
	call	??2@YAPAXI@Z				; operator new
	add	esp, 16					; 00000010H
	test	eax, eax
	je	SHORT $LN8@Level_Load
	mov	ecx, eax
	call	??0gzCrateDataStruct@@QAE@XZ

; 245  : 
; 246  : 	this->m_crateId = 0;

	mov	DWORD PTR [esi+52], 0
	mov	DWORD PTR [esi+60], eax
	pop	esi

; 247  : }

	ret	0
$LN8@Level_Load:

; 244  : 	this->m_data = new gzCrateDataStruct;

	xor	eax, eax

; 245  : 
; 246  : 	this->m_crateId = 0;

	mov	DWORD PTR [esi+52], eax
	mov	DWORD PTR [esi+60], eax
	pop	esi

; 247  : }

	ret	0
?Level_Loaded@gzManagerCrateClass@@UAEXXZ ENDP		; gzManagerCrateClass::Level_Loaded
_TEXT	ENDS
PUBLIC	??_C@_0CI@PDMCOHD@?$FLCrate?$FN?5You?5received?5?$CFs?5?$CFs?5weapo@ ; `string'
PUBLIC	??_C@_08FAJHOPML@Engineer?$AA@			; `string'
PUBLIC	??_C@_0NE@IFEIMGFN@Weapon_RepairGun_Player?$DLCnC_Weap@ ; `string'
PUBLIC	??_C@_06OOFIBKJO@Sniper?$AA@			; `string'
PUBLIC	??_C@_0FC@ECIGCJMD@Weapon_RamjetRifle_Player?$DLWeapon@ ; `string'
PUBLIC	??_C@_05NBPPGIFL@Heavy?$AA@			; `string'
PUBLIC	??_C@_0HC@LJFNIMFF@Weapon_PersonalIonCannon_Player?$DL@ ; `string'
PUBLIC	??_C@_06LHIDHMIE@Medium?$AA@			; `string'
PUBLIC	??_C@_0JG@JKPCPKON@Weapon_LaserChaingun_Player?$DLWeap@ ; `string'
PUBLIC	??_C@_05JODGIKH@Light?$AA@			; `string'
PUBLIC	??_C@_0PH@EIHNMDDK@Weapon_AutoRifle_Player?$DLWeapon_A@ ; `string'
EXTRN	??1aToken@@QAE@XZ:PROC				; aToken::~aToken
EXTRN	?GetData@aToken@@QAEABVaString@@XZ:PROC		; aToken::GetData
EXTRN	?gettok@aToken@@QAE?AV1@HE@Z:PROC		; aToken::gettok
EXTRN	?numtok@aToken@@QAEHE@Z:PROC			; aToken::numtok
EXTRN	??0aToken@@QAE@ABVaString@@@Z:PROC		; aToken::aToken
;	COMDAT ??_C@_0CI@PDMCOHD@?$FLCrate?$FN?5You?5received?5?$CFs?5?$CFs?5weapo@
CONST	SEGMENT
??_C@_0CI@PDMCOHD@?$FLCrate?$FN?5You?5received?5?$CFs?5?$CFs?5weapo@ DB '['
	DB	'Crate] You received %s %s weapon pack.', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_08FAJHOPML@Engineer?$AA@
CONST	SEGMENT
??_C@_08FAJHOPML@Engineer?$AA@ DB 'Engineer', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_0NE@IFEIMGFN@Weapon_RepairGun_Player?$DLCnC_Weap@
CONST	SEGMENT
??_C@_0NE@IFEIMGFN@Weapon_RepairGun_Player?$DLCnC_Weap@ DB 'Weapon_Repair'
	DB	'Gun_Player;CnC_Weapon_RepairGun_Player_Special;CnC_Weapon_Min'
	DB	'eRemote_Player;CnC_Weapon_MineRemote_Player_2Max;CnC_Weapon_M'
	DB	'ineTimed_Player;CnC_Weapon_MineTimed_Player_2Max;Weapon_MineP'
	DB	'roximity_Player', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_06OOFIBKJO@Sniper?$AA@
CONST	SEGMENT
??_C@_06OOFIBKJO@Sniper?$AA@ DB 'Sniper', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_0FC@ECIGCJMD@Weapon_RamjetRifle_Player?$DLWeapon@
CONST	SEGMENT
??_C@_0FC@ECIGCJMD@Weapon_RamjetRifle_Player?$DLWeapon@ DB 'Weapon_Ramjet'
	DB	'Rifle_Player;Weapon_SniperRifle_Player;Weapon_SniperRifle_Pla'
	DB	'yer_Nod', 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_05NBPPGIFL@Heavy?$AA@
CONST	SEGMENT
??_C@_05NBPPGIFL@Heavy?$AA@ DB 'Heavy', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_0HC@LJFNIMFF@Weapon_PersonalIonCannon_Player?$DL@
CONST	SEGMENT
??_C@_0HC@LJFNIMFF@Weapon_PersonalIonCannon_Player?$DL@ DB 'Weapon_Person'
	DB	'alIonCannon_Player;Weapon_Railgun_Player;Weapon_VoltAutoRifle'
	DB	'_Player;Weapon_VoltAutoRifle_Player_Nod', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_06LHIDHMIE@Medium?$AA@
CONST	SEGMENT
??_C@_06LHIDHMIE@Medium?$AA@ DB 'Medium', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_0JG@JKPCPKON@Weapon_LaserChaingun_Player?$DLWeap@
CONST	SEGMENT
??_C@_0JG@JKPCPKON@Weapon_LaserChaingun_Player?$DLWeap@ DB 'Weapon_LaserC'
	DB	'haingun_Player;Weapon_LaserRifle_Player;Weapon_RocketLauncher'
	DB	'_Player;CnC_Weapon_RocketLauncher_Player;Weapon_TiberiumFlech'
	DB	'etteGun_Player', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_05JODGIKH@Light?$AA@
CONST	SEGMENT
??_C@_05JODGIKH@Light?$AA@ DB 'Light', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_0PH@EIHNMDDK@Weapon_AutoRifle_Player?$DLWeapon_A@
CONST	SEGMENT
??_C@_0PH@EIHNMDDK@Weapon_AutoRifle_Player?$DLWeapon_A@ DB 'Weapon_AutoRi'
	DB	'fle_Player;Weapon_AutoRifle_Player_Nod;Weapon_Chaingun_Player'
	DB	';Weapon_Chaingun_Player_Nod;CNC_Weapon_ChemSprayer_Player;CNC'
	DB	'_Weapon_Flamethrower_Player;Weapon_GrenadeLauncher_Player;Wea'
	DB	'pon_Shotgun_Player;Weapon_TiberiumAutoRifle_Player', 00H ; `string'
CONST	ENDS
;	COMDAT xdata$x
xdata$x	SEGMENT
__ehfuncinfo$?Pick@Crate_WeaponPack@@EAE_NPAVnc_SmartGameObj@@@Z DD 019930522H
	DD	0bH
	DD	FLAT:__unwindtable$?Pick@Crate_WeaponPack@@EAE_NPAVnc_SmartGameObj@@@Z
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	01H
__unwindtable$?Pick@Crate_WeaponPack@@EAE_NPAVnc_SmartGameObj@@@Z DD 0ffffffffH
	DD	FLAT:__unwindfunclet$?Pick@Crate_WeaponPack@@EAE_NPAVnc_SmartGameObj@@@Z$0
	DD	00H
	DD	FLAT:__unwindfunclet$?Pick@Crate_WeaponPack@@EAE_NPAVnc_SmartGameObj@@@Z$1
	DD	01H
	DD	FLAT:__unwindfunclet$?Pick@Crate_WeaponPack@@EAE_NPAVnc_SmartGameObj@@@Z$12
	DD	02H
	DD	FLAT:__unwindfunclet$?Pick@Crate_WeaponPack@@EAE_NPAVnc_SmartGameObj@@@Z$13
	DD	03H
	DD	FLAT:__unwindfunclet$?Pick@Crate_WeaponPack@@EAE_NPAVnc_SmartGameObj@@@Z$14
	DD	02H
	DD	FLAT:__unwindfunclet$?Pick@Crate_WeaponPack@@EAE_NPAVnc_SmartGameObj@@@Z$14
	DD	01H
	DD	FLAT:__unwindfunclet$?Pick@Crate_WeaponPack@@EAE_NPAVnc_SmartGameObj@@@Z$14
	DD	06H
	DD	FLAT:__unwindfunclet$?Pick@Crate_WeaponPack@@EAE_NPAVnc_SmartGameObj@@@Z$15
	DD	06H
	DD	FLAT:__unwindfunclet$?Pick@Crate_WeaponPack@@EAE_NPAVnc_SmartGameObj@@@Z$16
	DD	06H
	DD	FLAT:__unwindfunclet$?Pick@Crate_WeaponPack@@EAE_NPAVnc_SmartGameObj@@@Z$17
	DD	09H
	DD	FLAT:__unwindfunclet$?Pick@Crate_WeaponPack@@EAE_NPAVnc_SmartGameObj@@@Z$18
; Function compile flags: /Ogtpy
xdata$x	ENDS
;	COMDAT ?Pick@Crate_WeaponPack@@EAE_NPAVnc_SmartGameObj@@@Z
_TEXT	SEGMENT
_canGrant$60960 = -105					; size = 1
_packId$ = -104						; size = 4
_list$ = -100						; size = 4
_weaponDef$60957 = -96					; size = 4
_j$60961 = -92						; size = 4
_i$60953 = -88						; size = 4
_gzData$ = -84						; size = 4
$T74975 = -80						; size = 8
$T74972 = -80						; size = 4
$T74969 = -80						; size = 4
$T74968 = -80						; size = 4
$T74967 = -80						; size = 4
$T74966 = -80						; size = 4
$T74965 = -80						; size = 4
$T74964 = -80						; size = 4
$T74963 = -80						; size = 4
$T74962 = -80						; size = 4
$T74961 = -80						; size = 4
$T74960 = -80						; size = 4
$T74970 = -72						; size = 8
$T74971 = -64						; size = 8
$T74976 = -56						; size = 8
$T74974 = -56						; size = 8
_name$ = -48						; size = 16
_weapons$ = -32						; size = 16
__$EHRec$ = -12						; size = 12
_Picker$ = 8						; size = 4
?Pick@Crate_WeaponPack@@EAE_NPAVnc_SmartGameObj@@@Z PROC ; Crate_WeaponPack::Pick, COMDAT
; _this$ = ecx

; 1474 : 	{

	push	ebp
	mov	ebp, esp
	and	esp, -8					; fffffff8H
	push	-1
	push	__ehhandler$?Pick@Crate_WeaponPack@@EAE_NPAVnc_SmartGameObj@@@Z
	mov	eax, DWORD PTR fs:0
	push	eax
	mov	DWORD PTR fs:0, esp
	sub	esp, 96					; 00000060H

; 1475 : 		gzPlayer *gzData = gzPlayerManager::Find(Picker->Player);

	mov	eax, DWORD PTR _Picker$[ebp]
	mov	ecx, DWORD PTR [eax+2400]
	push	ebx
	push	esi
	push	edi
	push	ecx
	call	?Find@gzPlayerManager@@SAPAVgzPlayer@@PAVnc_cPlayer@@@Z ; gzPlayerManager::Find

; 1476 : 		if (!gzData)

	xor	edi, edi
	add	esp, 4
	cmp	eax, edi
	mov	DWORD PTR _gzData$[esp+120], eax
	jne	SHORT $LN13@Pick@31

; 1477 : 			return false;

	xor	al, al

; 1533 : 	};

	mov	ecx, DWORD PTR __$EHRec$[esp+120]
	mov	DWORD PTR fs:0, ecx
	pop	edi
	pop	esi
	pop	ebx
	mov	esp, ebp
	pop	ebp
	ret	4
$LN13@Pick@31:

; 1478 : 
; 1479 : 		aStringArray weapons, name;

	mov	eax, OFFSET ??_7aStringArray@@6B@
	mov	DWORD PTR _weapons$[esp+124], edi
	mov	DWORD PTR _weapons$[esp+128], edi
	mov	DWORD PTR _weapons$[esp+132], edi
	mov	DWORD PTR _weapons$[esp+120], eax
	mov	DWORD PTR __$EHRec$[esp+128], edi
	mov	DWORD PTR _name$[esp+124], edi
	mov	DWORD PTR _name$[esp+128], edi
	mov	DWORD PTR _name$[esp+132], edi
	mov	DWORD PTR _name$[esp+120], eax

; 1480 : 
; 1481 : 		// Light
; 1482 : 		weapons.Add("Weapon_AutoRifle_Player;Weapon_AutoRifle_Player_Nod;Weapon_Chaingun_Player;" \

	sub	esp, 8
	mov	ecx, esp
	mov	DWORD PTR $T74960[esp+128], esp
	push	OFFSET ??_C@_0PH@EIHNMDDK@Weapon_AutoRifle_Player?$DLWeapon_A@
	mov	BYTE PTR __$EHRec$[esp+140], 1
	call	??0aString@@QAE@PBD@Z			; aString::aString
	lea	ecx, DWORD PTR _weapons$[esp+128]
	call	?Add@?$aStringArrayBase@VaString@@@@QAEXVaString@@@Z ; aStringArrayBase<aString>::Add

; 1483 : 					"Weapon_Chaingun_Player_Nod;CNC_Weapon_ChemSprayer_Player;CNC_Weapon_Flamethrower_Player;" \
; 1484 : 					"Weapon_GrenadeLauncher_Player;Weapon_Shotgun_Player;Weapon_TiberiumAutoRifle_Player");
; 1485 : 		name.Add("Light");

	sub	esp, 8
	mov	ecx, esp
	mov	DWORD PTR $T74961[esp+128], esp
	push	OFFSET ??_C@_05JODGIKH@Light?$AA@
	call	??0aString@@QAE@PBD@Z			; aString::aString
	lea	ecx, DWORD PTR _name$[esp+128]
	call	?Add@?$aStringArrayBase@VaString@@@@QAEXVaString@@@Z ; aStringArrayBase<aString>::Add

; 1486 : 
; 1487 : 		// Medium
; 1488 : 		weapons.Add("Weapon_LaserChaingun_Player;Weapon_LaserRifle_Player;Weapon_RocketLauncher_Player;" \

	sub	esp, 8
	mov	ecx, esp
	mov	DWORD PTR $T74962[esp+128], esp
	push	OFFSET ??_C@_0JG@JKPCPKON@Weapon_LaserChaingun_Player?$DLWeap@
	call	??0aString@@QAE@PBD@Z			; aString::aString
	lea	ecx, DWORD PTR _weapons$[esp+128]
	call	?Add@?$aStringArrayBase@VaString@@@@QAEXVaString@@@Z ; aStringArrayBase<aString>::Add

; 1489 : 					"CnC_Weapon_RocketLauncher_Player;Weapon_TiberiumFlechetteGun_Player");
; 1490 : 		name.Add("Medium");

	sub	esp, 8
	mov	ecx, esp
	mov	DWORD PTR $T74963[esp+128], esp
	push	OFFSET ??_C@_06LHIDHMIE@Medium?$AA@
	call	??0aString@@QAE@PBD@Z			; aString::aString
	lea	ecx, DWORD PTR _name$[esp+128]
	call	?Add@?$aStringArrayBase@VaString@@@@QAEXVaString@@@Z ; aStringArrayBase<aString>::Add

; 1491 : 
; 1492 : 		// Heavy
; 1493 : 		weapons.Add("Weapon_PersonalIonCannon_Player;Weapon_Railgun_Player;Weapon_VoltAutoRifle_Player;" \

	sub	esp, 8
	mov	ecx, esp
	mov	DWORD PTR $T74964[esp+128], esp
	push	OFFSET ??_C@_0HC@LJFNIMFF@Weapon_PersonalIonCannon_Player?$DL@
	call	??0aString@@QAE@PBD@Z			; aString::aString
	lea	ecx, DWORD PTR _weapons$[esp+128]
	call	?Add@?$aStringArrayBase@VaString@@@@QAEXVaString@@@Z ; aStringArrayBase<aString>::Add

; 1494 : 					"Weapon_VoltAutoRifle_Player_Nod");
; 1495 : 		name.Add("Heavy");

	sub	esp, 8
	mov	ecx, esp
	mov	DWORD PTR $T74965[esp+128], esp
	push	OFFSET ??_C@_05NBPPGIFL@Heavy?$AA@
	call	??0aString@@QAE@PBD@Z			; aString::aString
	lea	ecx, DWORD PTR _name$[esp+128]
	call	?Add@?$aStringArrayBase@VaString@@@@QAEXVaString@@@Z ; aStringArrayBase<aString>::Add

; 1496 : 
; 1497 : 		// Sniper
; 1498 : 		weapons.Add("Weapon_RamjetRifle_Player;Weapon_SniperRifle_Player;Weapon_SniperRifle_Player_Nod");

	sub	esp, 8
	mov	ecx, esp
	mov	DWORD PTR $T74966[esp+128], esp
	push	OFFSET ??_C@_0FC@ECIGCJMD@Weapon_RamjetRifle_Player?$DLWeapon@
	call	??0aString@@QAE@PBD@Z			; aString::aString
	lea	ecx, DWORD PTR _weapons$[esp+128]
	call	?Add@?$aStringArrayBase@VaString@@@@QAEXVaString@@@Z ; aStringArrayBase<aString>::Add

; 1499 : 		name.Add("Sniper");

	sub	esp, 8
	mov	ecx, esp
	mov	DWORD PTR $T74967[esp+128], esp
	push	OFFSET ??_C@_06OOFIBKJO@Sniper?$AA@
	call	??0aString@@QAE@PBD@Z			; aString::aString
	lea	ecx, DWORD PTR _name$[esp+128]
	call	?Add@?$aStringArrayBase@VaString@@@@QAEXVaString@@@Z ; aStringArrayBase<aString>::Add

; 1500 : 
; 1501 : 		// Engineer
; 1502 : 		weapons.Add("Weapon_RepairGun_Player;CnC_Weapon_RepairGun_Player_Special;CnC_Weapon_MineRemote_Player;" \

	sub	esp, 8
	mov	ecx, esp
	mov	DWORD PTR $T74968[esp+128], esp
	push	OFFSET ??_C@_0NE@IFEIMGFN@Weapon_RepairGun_Player?$DLCnC_Weap@
	call	??0aString@@QAE@PBD@Z			; aString::aString
	lea	ecx, DWORD PTR _weapons$[esp+128]
	call	?Add@?$aStringArrayBase@VaString@@@@QAEXVaString@@@Z ; aStringArrayBase<aString>::Add

; 1503 : 				"CnC_Weapon_MineRemote_Player_2Max;CnC_Weapon_MineTimed_Player;CnC_Weapon_MineTimed_Player_2Max;" \
; 1504 : 				"Weapon_MineProximity_Player");
; 1505 : 		name.Add("Engineer");

	sub	esp, 8
	mov	ecx, esp
	mov	DWORD PTR $T74969[esp+128], esp
	push	OFFSET ??_C@_08FAJHOPML@Engineer?$AA@
	call	??0aString@@QAE@PBD@Z			; aString::aString
	lea	ecx, DWORD PTR _name$[esp+128]
	call	?Add@?$aStringArrayBase@VaString@@@@QAEXVaString@@@Z ; aStringArrayBase<aString>::Add

; 1506 : 
; 1507 : 		int packId = gzRandom.Get_Int(0, weapons.Count() - 1);

	mov	ecx, DWORD PTR _weapons$[esp+132]
	add	ecx, -1
	cmp	ecx, edi
	jne	SHORT $LN50@Pick@31
	mov	DWORD PTR _packId$[esp+120], edi
	jmp	SHORT $LN51@Pick@31
$LN50@Pick@31:
	xor	esi, esi
	cmp	ecx, edi
	jge	SHORT $LN49@Pick@31
	mov	esi, ecx
	xor	ecx, ecx
$LN49@Pick@31:
	mov	edx, DWORD PTR ?gzRandom@@3VaRandom@@A
	mov	eax, edx
	add	edx, 1
	cmp	eax, 64					; 00000040H
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A, edx
	jle	SHORT $LN53@Pick@31
	mov	edx, 1
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A, edx
$LN53@Pick@31:
	mov	eax, DWORD PTR ?gzRandom@@3VaRandom@@A+4
	imul	eax, 22695475				; 015a4e33H
	add	eax, edx
	sub	ecx, esi
	mov	DWORD PTR ?gzRandom@@3VaRandom@@A+4, eax
	add	ecx, 1
	shr	eax, 16					; 00000010H
	xor	edx, edx
	div	ecx
	add	edx, esi
	mov	DWORD PTR _packId$[esp+120], edx
$LN51@Pick@31:

; 1508 : 		aToken list(weapons[packId].GetString());

	mov	ecx, DWORD PTR _packId$[esp+120]
	push	ecx
	lea	edx, DWORD PTR $T74971[esp+124]
	push	edx
	lea	ecx, DWORD PTR _weapons$[esp+128]
	call	??A?$aStringArrayBase@VaString@@@@QAE?AVaString@@I@Z ; aStringArrayBase<aString>::operator[]
	mov	eax, DWORD PTR [eax+4]
	cmp	eax, edi
	mov	BYTE PTR __$EHRec$[esp+128], 2
	je	SHORT $LN58@Pick@31
	mov	eax, DWORD PTR [eax]
	jmp	SHORT $LN59@Pick@31
$LN58@Pick@31:
	xor	eax, eax
$LN59@Pick@31:
	push	eax
	lea	ecx, DWORD PTR $T74970[esp+124]
	call	??0aString@@QAE@PBD@Z			; aString::aString
	lea	eax, DWORD PTR $T74970[esp+120]
	push	eax
	lea	ecx, DWORD PTR _list$[esp+124]
	mov	BYTE PTR __$EHRec$[esp+132], 3
	call	??0aToken@@QAE@ABVaString@@@Z		; aToken::aToken
	lea	ecx, DWORD PTR $T74970[esp+120]
	mov	BYTE PTR __$EHRec$[esp+128], 5
	call	??1aStringBase@@UAE@XZ			; aStringBase::~aStringBase
	lea	ecx, DWORD PTR $T74971[esp+120]
	mov	BYTE PTR __$EHRec$[esp+128], 6
	call	??1aStringBase@@UAE@XZ			; aStringBase::~aStringBase

; 1509 : 		for (int i = 1; i <= list.numtok(';'); i++)

	mov	esi, 1
	push	59					; 0000003bH
	lea	ecx, DWORD PTR _list$[esp+124]
	mov	DWORD PTR _i$60953[esp+124], esi
	call	?numtok@aToken@@QAEHE@Z			; aToken::numtok
	cmp	eax, esi
	jl	$LN10@Pick@31
$LL12@Pick@31:

; 1510 : 		{
; 1511 : 			nc_WeaponDefinitionClass *weaponDef = gzStatic_Cast(nc_WeaponDefinitionClass, nc_DefinitionMgrClass::Find_Named_Definition(list.gettok(i, ';').GetData().GetString(), true));

	push	59					; 0000003bH
	push	esi
	lea	ecx, DWORD PTR $T74972[esp+128]
	push	ecx
	lea	ecx, DWORD PTR _list$[esp+132]
	call	?gettok@aToken@@QAE?AV1@HE@Z		; aToken::gettok
	mov	ecx, eax
	mov	BYTE PTR __$EHRec$[esp+128], 7
	call	?GetData@aToken@@QAEABVaString@@XZ	; aToken::GetData
	mov	eax, DWORD PTR [eax+4]
	cmp	eax, edi
	je	SHORT $LN70@Pick@31
	mov	eax, DWORD PTR [eax]
	jmp	SHORT $LN71@Pick@31
$LN70@Pick@31:
	xor	eax, eax
$LN71@Pick@31:
	push	1
	push	eax
	call	?Find_Named_Definition@nc_DefinitionMgrClass@@SAPAVnc_DefinitionClass@@PBD_N@Z ; nc_DefinitionMgrClass::Find_Named_Definition
	mov	esi, eax
	add	esp, 8
	lea	ecx, DWORD PTR $T74972[esp+120]
	mov	DWORD PTR _weaponDef$60957[esp+120], esi
	mov	BYTE PTR __$EHRec$[esp+128], 6
	call	??1aToken@@QAE@XZ			; aToken::~aToken

; 1512 : 			bool canGrant = true;
; 1513 : 			for (unsigned int j = 0; j < gzWeaponMgr->m_settings->Weapons.Ban.Count(); j++)

	mov	edx, DWORD PTR ?gzWeaponMgr@@3PAVgzWeaponManager@@A ; gzWeaponMgr
	mov	eax, DWORD PTR [edx+40]
	xor	ecx, ecx
	cmp	DWORD PTR [eax+116], edi
	mov	BYTE PTR _canGrant$60960[esp+120], 1
	mov	DWORD PTR _j$60961[esp+120], ecx
	jbe	$LN122@Pick@31
$LN9@Pick@31:
	mov	edi, DWORD PTR [eax+108]

; 1514 : 			{
; 1515 : 				if (gzWeaponMgr->m_settings->Weapons.Ban[j]->Preset == Picker->definition->Get_Name())

	mov	eax, DWORD PTR _Picker$[ebp]
	lea	esi, DWORD PTR [ecx*4]
	mov	ecx, DWORD PTR [eax+1724]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+48]
	add	edi, esi
	call	eax
	mov	ecx, DWORD PTR [edi]
	push	eax
	call	??8aString@@QAE_NPBD@Z			; aString::operator==
	test	al, al

; 1516 : 				{
; 1517 : 					for (unsigned int k = 0; k < gzWeaponMgr->m_settings->Weapons.Ban[j]->WeaponList.Count(); k++)

	mov	eax, DWORD PTR ?gzWeaponMgr@@3PAVgzWeaponManager@@A ; gzWeaponMgr
	je	SHORT $LN8@Pick@31
	mov	ecx, DWORD PTR [eax+40]
	mov	edx, DWORD PTR [ecx+108]
	mov	ecx, DWORD PTR [edx+esi]
	xor	edi, edi
	cmp	DWORD PTR [ecx+20], edi
	jbe	SHORT $LN8@Pick@31
	npad	7
$LL5@Pick@31:

; 1518 : 					{
; 1519 : 						if (gzWeaponMgr->m_settings->Weapons.Ban[j]->WeaponList[k] == weaponDef->Get_Name())

	mov	edx, DWORD PTR [eax+40]
	mov	eax, DWORD PTR [edx+108]
	push	edi
	lea	ecx, DWORD PTR $T74974[esp+124]
	add	eax, esi
	push	ecx
	mov	ecx, DWORD PTR [eax]
	add	ecx, 8
	call	??A?$aStringArrayBase@VaString@@@@QAE?AVaString@@I@Z ; aStringArrayBase<aString>::operator[]
	mov	ebx, eax
	mov	ecx, DWORD PTR _weaponDef$60957[esp+120]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+48]
	mov	BYTE PTR __$EHRec$[esp+128], 8
	call	eax
	push	eax
	mov	ecx, ebx
	call	??8aString@@QAE_NPBD@Z			; aString::operator==
	lea	ecx, DWORD PTR $T74974[esp+120]
	mov	bl, al
	mov	BYTE PTR __$EHRec$[esp+128], 6
	call	??1aStringBase@@UAE@XZ			; aStringBase::~aStringBase
	test	bl, bl
	mov	eax, DWORD PTR ?gzWeaponMgr@@3PAVgzWeaponManager@@A ; gzWeaponMgr
	jne	SHORT $LN118@Pick@31
	mov	ecx, DWORD PTR [eax+40]
	mov	edx, DWORD PTR [ecx+108]
	mov	ecx, DWORD PTR [edx+esi]
	add	edi, 1
	cmp	edi, DWORD PTR [ecx+20]
	jb	SHORT $LL5@Pick@31
	jmp	SHORT $LN8@Pick@31
$LN118@Pick@31:

; 1520 : 						{
; 1521 : 							canGrant = false;

	mov	BYTE PTR _canGrant$60960[esp+120], 0
$LN8@Pick@31:

; 1512 : 			bool canGrant = true;
; 1513 : 			for (unsigned int j = 0; j < gzWeaponMgr->m_settings->Weapons.Ban.Count(); j++)

	mov	ecx, DWORD PTR _j$60961[esp+120]
	mov	eax, DWORD PTR [eax+40]
	add	ecx, 1
	cmp	ecx, DWORD PTR [eax+116]
	mov	DWORD PTR _j$60961[esp+120], ecx
	jb	$LN9@Pick@31

; 1522 : 							break;
; 1523 : 						}
; 1524 : 					}
; 1525 : 				}
; 1526 : 			}
; 1527 : 			if (canGrant)

	mov	esi, DWORD PTR _weaponDef$60957[esp+120]
	xor	edi, edi
	cmp	BYTE PTR _canGrant$60960[esp+120], 0
	je	SHORT $LN1@Pick@31
$LN122@Pick@31:

; 1528 : 				Picker->WeaponBag->Add_Weapon(weaponDef, weaponDef->ClipSize.Get() + weaponDef->MaxInventoryRounds.Get(), true);

	push	1
	lea	ecx, DWORD PTR [esi+132]
	call	?Get@nc_IntDataSafeClass@@QAEHXZ	; nc_IntDataSafeClass::Get
	lea	ecx, DWORD PTR [esi+116]
	mov	ebx, eax
	call	?Get@nc_IntDataSafeClass@@QAEHXZ	; nc_IntDataSafeClass::Get
	mov	edx, DWORD PTR _Picker$[ebp]
	mov	ecx, DWORD PTR [edx+1968]
	add	ebx, eax
	push	ebx
	push	esi
	call	?Add_Weapon@nc_WeaponBagClass@@QAEXPBVnc_WeaponDefinitionClass@@H_N@Z ; nc_WeaponBagClass::Add_Weapon
$LN1@Pick@31:

; 1529 : 			gzData->GetWeaponPack()->Add_Weapon(weaponDef);

	mov	eax, DWORD PTR _gzData$[esp+120]
	mov	ecx, DWORD PTR [eax+60]
	push	esi
	call	?Add_Weapon@gzWeaponPackClass@@QAEXPAVnc_DefinitionClass@@@Z ; gzWeaponPackClass::Add_Weapon
	mov	esi, DWORD PTR _i$60953[esp+120]
	add	esi, 1
	push	59					; 0000003bH
	lea	ecx, DWORD PTR _list$[esp+124]
	mov	DWORD PTR _i$60953[esp+124], esi
	call	?numtok@aToken@@QAEHE@Z			; aToken::numtok
	cmp	esi, eax
	jle	$LL12@Pick@31
$LN10@Pick@31:

; 1530 : 		}
; 1531 : 		PagePlayer(gzData->GetPlayerData()->PlayerId, "[Crate] You received %s %s weapon pack.", A_Or_An(name[packId].GetString()), name[packId].GetString());

	mov	ecx, DWORD PTR _packId$[esp+120]
	push	ecx
	lea	edx, DWORD PTR $T74975[esp+124]
	push	edx
	lea	ecx, DWORD PTR _name$[esp+128]
	call	??A?$aStringArrayBase@VaString@@@@QAE?AVaString@@I@Z ; aStringArrayBase<aString>::operator[]
	mov	esi, eax
	mov	eax, DWORD PTR _packId$[esp+120]
	push	eax
	lea	ecx, DWORD PTR $T74976[esp+124]
	push	ecx
	mov	bl, 9
	lea	ecx, DWORD PTR _name$[esp+128]
	mov	BYTE PTR __$EHRec$[esp+136], bl
	call	??A?$aStringArrayBase@VaString@@@@QAE?AVaString@@I@Z ; aStringArrayBase<aString>::operator[]
	mov	ecx, DWORD PTR [esi+4]
	cmp	ecx, edi
	mov	BYTE PTR __$EHRec$[esp+128], 10		; 0000000aH
	je	SHORT $LN91@Pick@31
	mov	ecx, DWORD PTR [ecx]
	jmp	SHORT $LN92@Pick@31
$LN91@Pick@31:
	xor	ecx, ecx
$LN92@Pick@31:
	mov	eax, DWORD PTR [eax+4]
	cmp	eax, edi
	je	SHORT $LN97@Pick@31
	mov	eax, DWORD PTR [eax]
	jmp	SHORT $LN98@Pick@31
$LN97@Pick@31:
	xor	eax, eax
$LN98@Pick@31:
	mov	edx, DWORD PTR _gzData$[esp+120]
	mov	esi, DWORD PTR [edx+72]
	push	ecx
	push	edi
	push	eax
	call	?A_Or_An@@YAPADPBD_N@Z			; A_Or_An
	add	esp, 8
	push	eax
	mov	eax, DWORD PTR [esi+1884]
	push	OFFSET ??_C@_0CI@PDMCOHD@?$FLCrate?$FN?5You?5received?5?$CFs?5?$CFs?5weapo@
	push	eax
	call	?PagePlayer@@YAXHPBDZZ			; PagePlayer
	add	esp, 16					; 00000010H
	lea	ecx, DWORD PTR $T74976[esp+120]
	mov	BYTE PTR __$EHRec$[esp+128], bl
	call	??1aStringBase@@UAE@XZ			; aStringBase::~aStringBase
	lea	ecx, DWORD PTR $T74975[esp+120]
	mov	BYTE PTR __$EHRec$[esp+128], 6
	call	??1aStringBase@@UAE@XZ			; aStringBase::~aStringBase

; 1532 : 		return true;

	lea	ecx, DWORD PTR _list$[esp+120]
	mov	BYTE PTR __$EHRec$[esp+128], 1
	call	??1aToken@@QAE@XZ			; aToken::~aToken
	lea	ecx, DWORD PTR _name$[esp+120]
	mov	BYTE PTR __$EHRec$[esp+128], 0
	call	??1?$aStringArrayBase@VaString@@@@UAE@XZ ; aStringArrayBase<aString>::~aStringArrayBase<aString>
	lea	ecx, DWORD PTR _weapons$[esp+120]
	mov	DWORD PTR __$EHRec$[esp+128], -1
	call	??1?$aStringArrayBase@VaString@@@@UAE@XZ ; aStringArrayBase<aString>::~aStringArrayBase<aString>

; 1533 : 	};

	mov	ecx, DWORD PTR __$EHRec$[esp+120]
	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$?Pick@Crate_WeaponPack@@EAE_NPAVnc_SmartGameObj@@@Z$0:
	lea	ecx, DWORD PTR _weapons$[ebp]
	jmp	??1aStringArray@@UAE@XZ
__unwindfunclet$?Pick@Crate_WeaponPack@@EAE_NPAVnc_SmartGameObj@@@Z$1:
	lea	ecx, DWORD PTR _name$[ebp]
	jmp	??1aStringArray@@UAE@XZ
__unwindfunclet$?Pick@Crate_WeaponPack@@EAE_NPAVnc_SmartGameObj@@@Z$12:
	lea	ecx, DWORD PTR $T74971[ebp]
	jmp	??1aString@@UAE@XZ
__unwindfunclet$?Pick@Crate_WeaponPack@@EAE_NPAVnc_SmartGameObj@@@Z$13:
	lea	ecx, DWORD PTR $T74970[ebp]
	jmp	??1aString@@UAE@XZ
__unwindfunclet$?Pick@Crate_WeaponPack@@EAE_NPAVnc_SmartGameObj@@@Z$14:
	lea	ecx, DWORD PTR _list$[ebp]
	jmp	??1aToken@@QAE@XZ			; aToken::~aToken
__unwindfunclet$?Pick@Crate_WeaponPack@@EAE_NPAVnc_SmartGameObj@@@Z$15:
	lea	ecx, DWORD PTR $T74972[ebp]
	jmp	??1aToken@@QAE@XZ			; aToken::~aToken
__unwindfunclet$?Pick@Crate_WeaponPack@@EAE_NPAVnc_SmartGameObj@@@Z$16:
	lea	ecx, DWORD PTR $T74974[ebp]
	jmp	??1aString@@UAE@XZ
__unwindfunclet$?Pick@Crate_WeaponPack@@EAE_NPAVnc_SmartGameObj@@@Z$17:
	lea	ecx, DWORD PTR $T74975[ebp]
	jmp	??1aString@@UAE@XZ
__unwindfunclet$?Pick@Crate_WeaponPack@@EAE_NPAVnc_SmartGameObj@@@Z$18:
	lea	ecx, DWORD PTR $T74976[ebp]
	jmp	??1aString@@UAE@XZ
__ehhandler$?Pick@Crate_WeaponPack@@EAE_NPAVnc_SmartGameObj@@@Z:
	mov	eax, OFFSET __ehfuncinfo$?Pick@Crate_WeaponPack@@EAE_NPAVnc_SmartGameObj@@@Z
	jmp	___CxxFrameHandler3
text$x	ENDS
?Pick@Crate_WeaponPack@@EAE_NPAVnc_SmartGameObj@@@Z ENDP ; Crate_WeaponPack::Pick
; Function compile flags: /Ogtpy
;	COMDAT ?Delete@gzManagerCrateClass@@UAEXXZ
_TEXT	SEGMENT
?Delete@gzManagerCrateClass@@UAEXXZ PROC		; gzManagerCrateClass::Delete, COMDAT
; _this$ = ecx

; 236  : 	this->m_list.Clear();

	cmp	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4, 0
	push	esi
	mov	esi, ecx
	je	SHORT $LN8@Delete@8
	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@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
	mov	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4, 0
$LN8@Delete@8:
	mov	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8, 0
	mov	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 0

; 237  : 	if (this->m_data)

	cmp	DWORD PTR [esi+60], 0
	je	SHORT $LN4@Delete@8

; 238  : 		delete this->m_data;

	push	OFFSET ??_C@_00CNPNBAHC@?$AA@
	push	238					; 000000eeH
	push	OFFSET ??_C@_0O@GPLKOMOA@?4?2gzcrate?4cpp?$AA@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	esi, DWORD PTR [esi+60]
	add	esp, 12					; 0000000cH
	test	esi, esi
	je	SHORT $LN4@Delete@8
	mov	ecx, esi
	call	??1gzCrateDataStruct@@QAE@XZ		; gzCrateDataStruct::~gzCrateDataStruct
	push	esi
	call	??3@YAXPAX@Z				; operator delete
	add	esp, 4
$LN4@Delete@8:
	pop	esi

; 239  : }

	ret	0
?Delete@gzManagerCrateClass@@UAEXXZ ENDP		; gzManagerCrateClass::Delete
_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@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
_DATA	SEGMENT
?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A DD FLAT:??_7?$aVector@PAVgzCrateBase@@@@6B@ ; gzManagerCrateClass::m_list
	DD	00H
	DD	00H
	DD	00H
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
_DATA	ENDS
;	COMDAT ??__E?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A@@YAXXZ
text$yc	SEGMENT
??__E?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A@@YAXXZ PROC ; `dynamic initializer for 'gzManagerCrateClass::m_list'', COMDAT

; 211  : aVector<gzCrateBase *> gzManagerCrateClass::m_list;

	push	OFFSET ??__F?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A@@YAXXZ ; `dynamic atexit destructor for 'gzManagerCrateClass::m_list''
	call	_atexit
	pop	ecx
	ret	0
??__E?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A@@YAXXZ ENDP ; `dynamic initializer for 'gzManagerCrateClass::m_list''
text$yc	ENDS
PUBLIC	?CrateRandomWeapon@@3VCrate_RandomWeapon@@A	; CrateRandomWeapon
_DATA	SEGMENT
?CrateRandomWeapon@@3VCrate_RandomWeapon@@A DD FLAT:??_7gzCrateBase@@6B@ ; CrateRandomWeapon
	DD	00H
	DB	00H
; Function compile flags: /Ogtpy
_DATA	ENDS
;	COMDAT ??__ECrateRandomWeapon@@YAXXZ
text$yc	SEGMENT
??__ECrateRandomWeapon@@YAXXZ PROC			; `dynamic initializer for 'CrateRandomWeapon'', COMDAT

; 903  : Crate_RandomWeapon CrateRandomWeapon;

	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	je	SHORT $LN10@dynamic
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], OFFSET ?CrateRandomWeapon@@3VCrate_RandomWeapon@@A ; CrateRandomWeapon
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN10@dynamic:
	mov	DWORD PTR ?CrateRandomWeapon@@3VCrate_RandomWeapon@@A, OFFSET ??_7Crate_RandomWeapon@@6B@
	ret	0
??__ECrateRandomWeapon@@YAXXZ ENDP			; `dynamic initializer for 'CrateRandomWeapon''
text$yc	ENDS
PUBLIC	?CrateMoney@@3VCrate_Money@@A			; CrateMoney
_DATA	SEGMENT
	ORG $+3
?CrateMoney@@3VCrate_Money@@A DD FLAT:??_7gzCrateBase@@6B@ ; CrateMoney
	DD	00H
	DB	00H
; Function compile flags: /Ogtpy
_DATA	ENDS
;	COMDAT ??__ECrateMoney@@YAXXZ
text$yc	SEGMENT
??__ECrateMoney@@YAXXZ PROC				; `dynamic initializer for 'CrateMoney'', COMDAT

; 936  : Crate_Money CrateMoney;

	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	je	SHORT $LN10@dynamic@2
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], OFFSET ?CrateMoney@@3VCrate_Money@@A ; CrateMoney
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN10@dynamic@2:
	mov	DWORD PTR ?CrateMoney@@3VCrate_Money@@A, OFFSET ??_7Crate_Money@@6B@
	ret	0
??__ECrateMoney@@YAXXZ ENDP				; `dynamic initializer for 'CrateMoney''
text$yc	ENDS
PUBLIC	?CratePoints@@3VCrate_Points@@A			; CratePoints
_DATA	SEGMENT
	ORG $+3
?CratePoints@@3VCrate_Points@@A DD FLAT:??_7gzCrateBase@@6B@ ; CratePoints
	DD	00H
	DB	00H
; Function compile flags: /Ogtpy
_DATA	ENDS
;	COMDAT ??__ECratePoints@@YAXXZ
text$yc	SEGMENT
??__ECratePoints@@YAXXZ PROC				; `dynamic initializer for 'CratePoints'', COMDAT

; 970  : Crate_Points CratePoints;

	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	je	SHORT $LN10@dynamic@3
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], OFFSET ?CratePoints@@3VCrate_Points@@A ; CratePoints
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN10@dynamic@3:
	mov	DWORD PTR ?CratePoints@@3VCrate_Points@@A, OFFSET ??_7Crate_Points@@6B@
	ret	0
??__ECratePoints@@YAXXZ ENDP				; `dynamic initializer for 'CratePoints''
text$yc	ENDS
PUBLIC	?CrateRandomVehicle@@3VCrate_RandomVehicle@@A	; CrateRandomVehicle
_DATA	SEGMENT
	ORG $+3
?CrateRandomVehicle@@3VCrate_RandomVehicle@@A DD FLAT:??_7gzCrateBase@@6B@ ; CrateRandomVehicle
	DD	00H
	DB	00H
; Function compile flags: /Ogtpy
_DATA	ENDS
;	COMDAT ??__ECrateRandomVehicle@@YAXXZ
text$yc	SEGMENT
??__ECrateRandomVehicle@@YAXXZ PROC			; `dynamic initializer for 'CrateRandomVehicle'', COMDAT

; 1067 : Crate_RandomVehicle CrateRandomVehicle;

	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	je	SHORT $LN10@dynamic@4
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], OFFSET ?CrateRandomVehicle@@3VCrate_RandomVehicle@@A ; CrateRandomVehicle
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN10@dynamic@4:
	mov	DWORD PTR ?CrateRandomVehicle@@3VCrate_RandomVehicle@@A, OFFSET ??_7Crate_RandomVehicle@@6B@
	ret	0
??__ECrateRandomVehicle@@YAXXZ ENDP			; `dynamic initializer for 'CrateRandomVehicle''
text$yc	ENDS
PUBLIC	?CrateDeath@@3VCrate_Death@@A			; CrateDeath
_DATA	SEGMENT
	ORG $+3
?CrateDeath@@3VCrate_Death@@A DD FLAT:??_7gzCrateBase@@6B@ ; CrateDeath
	DD	00H
	DB	00H
; Function compile flags: /Ogtpy
_DATA	ENDS
;	COMDAT ??__ECrateDeath@@YAXXZ
text$yc	SEGMENT
??__ECrateDeath@@YAXXZ PROC				; `dynamic initializer for 'CrateDeath'', COMDAT

; 1097 : Crate_Death CrateDeath;

	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	je	SHORT $LN10@dynamic@5
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], OFFSET ?CrateDeath@@3VCrate_Death@@A ; CrateDeath
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN10@dynamic@5:
	mov	DWORD PTR ?CrateDeath@@3VCrate_Death@@A, OFFSET ??_7Crate_Death@@6B@
	ret	0
??__ECrateDeath@@YAXXZ ENDP				; `dynamic initializer for 'CrateDeath''
text$yc	ENDS
PUBLIC	?CrateAmmo@@3VCrate_Ammo@@A			; CrateAmmo
_DATA	SEGMENT
	ORG $+3
?CrateAmmo@@3VCrate_Ammo@@A DD FLAT:??_7gzCrateBase@@6B@ ; CrateAmmo
	DD	00H
	DB	00H
; Function compile flags: /Ogtpy
_DATA	ENDS
;	COMDAT ??__ECrateAmmo@@YAXXZ
text$yc	SEGMENT
??__ECrateAmmo@@YAXXZ PROC				; `dynamic initializer for 'CrateAmmo'', COMDAT

; 1127 : Crate_Ammo CrateAmmo;

	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	je	SHORT $LN10@dynamic@6
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], OFFSET ?CrateAmmo@@3VCrate_Ammo@@A ; CrateAmmo
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN10@dynamic@6:
	mov	DWORD PTR ?CrateAmmo@@3VCrate_Ammo@@A, OFFSET ??_7Crate_Ammo@@6B@
	ret	0
??__ECrateAmmo@@YAXXZ ENDP				; `dynamic initializer for 'CrateAmmo''
text$yc	ENDS
PUBLIC	?CrateArmor@@3VCrate_Armor@@A			; CrateArmor
_DATA	SEGMENT
	ORG $+3
?CrateArmor@@3VCrate_Armor@@A DD FLAT:??_7gzCrateBase@@6B@ ; CrateArmor
	DD	00H
	DB	00H
; Function compile flags: /Ogtpy
_DATA	ENDS
;	COMDAT ??__ECrateArmor@@YAXXZ
text$yc	SEGMENT
??__ECrateArmor@@YAXXZ PROC				; `dynamic initializer for 'CrateArmor'', COMDAT

; 1164 : Crate_Armor CrateArmor;

	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	je	SHORT $LN10@dynamic@7
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], OFFSET ?CrateArmor@@3VCrate_Armor@@A ; CrateArmor
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN10@dynamic@7:
	mov	DWORD PTR ?CrateArmor@@3VCrate_Armor@@A, OFFSET ??_7Crate_Armor@@6B@
	ret	0
??__ECrateArmor@@YAXXZ ENDP				; `dynamic initializer for 'CrateArmor''
text$yc	ENDS
PUBLIC	?CrateHealth@@3VCrate_Health@@A			; CrateHealth
_DATA	SEGMENT
	ORG $+3
?CrateHealth@@3VCrate_Health@@A DD FLAT:??_7gzCrateBase@@6B@ ; CrateHealth
	DD	00H
	DB	00H
; Function compile flags: /Ogtpy
_DATA	ENDS
;	COMDAT ??__ECrateHealth@@YAXXZ
text$yc	SEGMENT
??__ECrateHealth@@YAXXZ PROC				; `dynamic initializer for 'CrateHealth'', COMDAT

; 1200 : Crate_Health CrateHealth;

	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	je	SHORT $LN10@dynamic@8
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], OFFSET ?CrateHealth@@3VCrate_Health@@A ; CrateHealth
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN10@dynamic@8:
	mov	DWORD PTR ?CrateHealth@@3VCrate_Health@@A, OFFSET ??_7Crate_Health@@6B@
	ret	0
??__ECrateHealth@@YAXXZ ENDP				; `dynamic initializer for 'CrateHealth''
text$yc	ENDS
PUBLIC	?CrateRandomCharacter@@3VCrate_RandomCharacter@@A ; CrateRandomCharacter
_DATA	SEGMENT
	ORG $+3
?CrateRandomCharacter@@3VCrate_RandomCharacter@@A DD FLAT:??_7gzCrateBase@@6B@ ; CrateRandomCharacter
	DD	00H
	DB	00H
; Function compile flags: /Ogtpy
_DATA	ENDS
;	COMDAT ??__ECrateRandomCharacter@@YAXXZ
text$yc	SEGMENT
??__ECrateRandomCharacter@@YAXXZ PROC			; `dynamic initializer for 'CrateRandomCharacter'', COMDAT

; 1262 : Crate_RandomCharacter CrateRandomCharacter;

	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	je	SHORT $LN10@dynamic@9
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], OFFSET ?CrateRandomCharacter@@3VCrate_RandomCharacter@@A ; CrateRandomCharacter
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN10@dynamic@9:
	mov	DWORD PTR ?CrateRandomCharacter@@3VCrate_RandomCharacter@@A, OFFSET ??_7Crate_RandomCharacter@@6B@
	ret	0
??__ECrateRandomCharacter@@YAXXZ ENDP			; `dynamic initializer for 'CrateRandomCharacter''
text$yc	ENDS
PUBLIC	?CrateButterFinger@@3VCrate_ButterFingers@@A	; CrateButterFinger
_DATA	SEGMENT
	ORG $+3
?CrateButterFinger@@3VCrate_ButterFingers@@A DD FLAT:??_7gzCrateBase@@6B@ ; CrateButterFinger
	DD	00H
	DB	00H
; Function compile flags: /Ogtpy
_DATA	ENDS
;	COMDAT ??__ECrateButterFinger@@YAXXZ
text$yc	SEGMENT
??__ECrateButterFinger@@YAXXZ PROC			; `dynamic initializer for 'CrateButterFinger'', COMDAT

; 1302 : Crate_ButterFingers CrateButterFinger;

	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	je	SHORT $LN10@dynamic@10
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], OFFSET ?CrateButterFinger@@3VCrate_ButterFingers@@A ; CrateButterFinger
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN10@dynamic@10:
	mov	DWORD PTR ?CrateButterFinger@@3VCrate_ButterFingers@@A, OFFSET ??_7Crate_ButterFingers@@6B@
	ret	0
??__ECrateButterFinger@@YAXXZ ENDP			; `dynamic initializer for 'CrateButterFinger''
text$yc	ENDS
PUBLIC	?CrateRefill@@3VCrate_Refill@@A			; CrateRefill
_DATA	SEGMENT
	ORG $+3
?CrateRefill@@3VCrate_Refill@@A DD FLAT:??_7gzCrateBase@@6B@ ; CrateRefill
	DD	00H
	DB	00H
; Function compile flags: /Ogtpy
_DATA	ENDS
;	COMDAT ??__ECrateRefill@@YAXXZ
text$yc	SEGMENT
??__ECrateRefill@@YAXXZ PROC				; `dynamic initializer for 'CrateRefill'', COMDAT

; 1328 : Crate_Refill CrateRefill;

	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	je	SHORT $LN10@dynamic@11
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], OFFSET ?CrateRefill@@3VCrate_Refill@@A ; CrateRefill
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN10@dynamic@11:
	mov	DWORD PTR ?CrateRefill@@3VCrate_Refill@@A, OFFSET ??_7Crate_Refill@@6B@
	ret	0
??__ECrateRefill@@YAXXZ ENDP				; `dynamic initializer for 'CrateRefill''
text$yc	ENDS
PUBLIC	?CrateBeacon@@3VCrate_Beacon@@A			; CrateBeacon
_DATA	SEGMENT
	ORG $+3
?CrateBeacon@@3VCrate_Beacon@@A DD FLAT:??_7gzCrateBase@@6B@ ; CrateBeacon
	DD	00H
	DB	00H
; Function compile flags: /Ogtpy
_DATA	ENDS
;	COMDAT ??__ECrateBeacon@@YAXXZ
text$yc	SEGMENT
??__ECrateBeacon@@YAXXZ PROC				; `dynamic initializer for 'CrateBeacon'', COMDAT

; 1386 : Crate_Beacon CrateBeacon;

	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	je	SHORT $LN10@dynamic@12
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], OFFSET ?CrateBeacon@@3VCrate_Beacon@@A ; CrateBeacon
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN10@dynamic@12:
	mov	DWORD PTR ?CrateBeacon@@3VCrate_Beacon@@A, OFFSET ??_7Crate_Beacon@@6B@
	ret	0
??__ECrateBeacon@@YAXXZ ENDP				; `dynamic initializer for 'CrateBeacon''
text$yc	ENDS
PUBLIC	?CrateSpy@@3VCrate_Spy@@A			; CrateSpy
_DATA	SEGMENT
	ORG $+3
?CrateSpy@@3VCrate_Spy@@A DD FLAT:??_7gzCrateBase@@6B@	; CrateSpy
	DD	00H
	DB	00H
; Function compile flags: /Ogtpy
_DATA	ENDS
;	COMDAT ??__ECrateSpy@@YAXXZ
text$yc	SEGMENT
??__ECrateSpy@@YAXXZ PROC				; `dynamic initializer for 'CrateSpy'', COMDAT

; 1424 : Crate_Spy CrateSpy;

	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	je	SHORT $LN10@dynamic@13
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], OFFSET ?CrateSpy@@3VCrate_Spy@@A ; CrateSpy
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN10@dynamic@13:
	mov	DWORD PTR ?CrateSpy@@3VCrate_Spy@@A, OFFSET ??_7Crate_Spy@@6B@
	ret	0
??__ECrateSpy@@YAXXZ ENDP				; `dynamic initializer for 'CrateSpy''
text$yc	ENDS
PUBLIC	?CrateThief@@3VCrate_Thief@@A			; CrateThief
_DATA	SEGMENT
	ORG $+3
?CrateThief@@3VCrate_Thief@@A DD FLAT:??_7gzCrateBase@@6B@ ; CrateThief
	DD	00H
	DB	00H
; Function compile flags: /Ogtpy
_DATA	ENDS
;	COMDAT ??__ECrateThief@@YAXXZ
text$yc	SEGMENT
??__ECrateThief@@YAXXZ PROC				; `dynamic initializer for 'CrateThief'', COMDAT

; 1454 : Crate_Thief CrateThief;

	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	je	SHORT $LN10@dynamic@14
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], OFFSET ?CrateThief@@3VCrate_Thief@@A ; CrateThief
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN10@dynamic@14:
	mov	DWORD PTR ?CrateThief@@3VCrate_Thief@@A, OFFSET ??_7Crate_Thief@@6B@
	ret	0
??__ECrateThief@@YAXXZ ENDP				; `dynamic initializer for 'CrateThief''
text$yc	ENDS
PUBLIC	?CrateWeaponPack@@3VCrate_WeaponPack@@A		; CrateWeaponPack
_DATA	SEGMENT
	ORG $+3
?CrateWeaponPack@@3VCrate_WeaponPack@@A DD FLAT:??_7gzCrateBase@@6B@ ; CrateWeaponPack
	DD	00H
	DB	00H
; Function compile flags: /Ogtpy
_DATA	ENDS
;	COMDAT ??__ECrateWeaponPack@@YAXXZ
text$yc	SEGMENT
??__ECrateWeaponPack@@YAXXZ PROC			; `dynamic initializer for 'CrateWeaponPack'', COMDAT

; 1535 : Crate_WeaponPack CrateWeaponPack;

	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	je	SHORT $LN10@dynamic@15
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], OFFSET ?CrateWeaponPack@@3VCrate_WeaponPack@@A ; CrateWeaponPack
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN10@dynamic@15:
	mov	DWORD PTR ?CrateWeaponPack@@3VCrate_WeaponPack@@A, OFFSET ??_7Crate_WeaponPack@@6B@
	ret	0
??__ECrateWeaponPack@@YAXXZ ENDP			; `dynamic initializer for 'CrateWeaponPack''
text$yc	ENDS
PUBLIC	?CrateDonation@@3VCrate_Donation@@A		; CrateDonation
_DATA	SEGMENT
	ORG $+3
?CrateDonation@@3VCrate_Donation@@A DD FLAT:??_7gzCrateBase@@6B@ ; CrateDonation
	DD	00H
	DB	00H
; Function compile flags: /Ogtpy
_DATA	ENDS
;	COMDAT ??__ECrateDonation@@YAXXZ
text$yc	SEGMENT
??__ECrateDonation@@YAXXZ PROC				; `dynamic initializer for 'CrateDonation'', COMDAT

; 1584 : Crate_Donation CrateDonation;

	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	je	SHORT $LN10@dynamic@16
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], OFFSET ?CrateDonation@@3VCrate_Donation@@A ; CrateDonation
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN10@dynamic@16:
	mov	DWORD PTR ?CrateDonation@@3VCrate_Donation@@A, OFFSET ??_7Crate_Donation@@6B@
	ret	0
??__ECrateDonation@@YAXXZ ENDP				; `dynamic initializer for 'CrateDonation''
text$yc	ENDS
PUBLIC	?CrateMetalGear@@3VCrate_MetalGear@@A		; CrateMetalGear
_DATA	SEGMENT
	ORG $+3
?CrateMetalGear@@3VCrate_MetalGear@@A DD FLAT:??_7gzCrateBase@@6B@ ; CrateMetalGear
	DD	00H
	DB	00H
; Function compile flags: /Ogtpy
_DATA	ENDS
;	COMDAT ??__ECrateMetalGear@@YAXXZ
text$yc	SEGMENT
??__ECrateMetalGear@@YAXXZ PROC				; `dynamic initializer for 'CrateMetalGear'', COMDAT

; 1616 : Crate_MetalGear CrateMetalGear;

	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	je	SHORT $LN10@dynamic@17
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], OFFSET ?CrateMetalGear@@3VCrate_MetalGear@@A ; CrateMetalGear
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN10@dynamic@17:
	mov	DWORD PTR ?CrateMetalGear@@3VCrate_MetalGear@@A, OFFSET ??_7Crate_MetalGear@@6B@
	ret	0
??__ECrateMetalGear@@YAXXZ ENDP				; `dynamic initializer for 'CrateMetalGear''
text$yc	ENDS
PUBLIC	?CrateEnemyThief@@3VCrate_EnemyThief@@A		; CrateEnemyThief
_DATA	SEGMENT
	ORG $+3
?CrateEnemyThief@@3VCrate_EnemyThief@@A DD FLAT:??_7gzCrateBase@@6B@ ; CrateEnemyThief
	DD	00H
	DB	00H
; Function compile flags: /Ogtpy
_DATA	ENDS
;	COMDAT ??__ECrateEnemyThief@@YAXXZ
text$yc	SEGMENT
??__ECrateEnemyThief@@YAXXZ PROC			; `dynamic initializer for 'CrateEnemyThief'', COMDAT

; 1660 : Crate_EnemyThief CrateEnemyThief;

	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	je	SHORT $LN10@dynamic@18
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], OFFSET ?CrateEnemyThief@@3VCrate_EnemyThief@@A ; CrateEnemyThief
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN10@dynamic@18:
	mov	DWORD PTR ?CrateEnemyThief@@3VCrate_EnemyThief@@A, OFFSET ??_7Crate_EnemyThief@@6B@
	ret	0
??__ECrateEnemyThief@@YAXXZ ENDP			; `dynamic initializer for 'CrateEnemyThief''
text$yc	ENDS
PUBLIC	?CrateMedic@@3VCrate_Medic@@A			; CrateMedic
_DATA	SEGMENT
	ORG $+3
?CrateMedic@@3VCrate_Medic@@A DD FLAT:??_7gzCrateBase@@6B@ ; CrateMedic
	DD	00H
	DB	00H
; Function compile flags: /Ogtpy
_DATA	ENDS
;	COMDAT ??__ECrateMedic@@YAXXZ
text$yc	SEGMENT
??__ECrateMedic@@YAXXZ PROC				; `dynamic initializer for 'CrateMedic'', COMDAT

; 1696 : Crate_Medic CrateMedic;

	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	je	SHORT $LN10@dynamic@19
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], OFFSET ?CrateMedic@@3VCrate_Medic@@A ; CrateMedic
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN10@dynamic@19:
	mov	DWORD PTR ?CrateMedic@@3VCrate_Medic@@A, OFFSET ??_7Crate_Medic@@6B@
	ret	0
??__ECrateMedic@@YAXXZ ENDP				; `dynamic initializer for 'CrateMedic''
text$yc	ENDS
PUBLIC	?CrateExplosiveSuit@@3VCrate_ExplosiveSuit@@A	; CrateExplosiveSuit
_DATA	SEGMENT
	ORG $+3
?CrateExplosiveSuit@@3VCrate_ExplosiveSuit@@A DD FLAT:??_7gzCrateBase@@6B@ ; CrateExplosiveSuit
	DD	00H
	DB	00H
; Function compile flags: /Ogtpy
_DATA	ENDS
;	COMDAT ??__ECrateExplosiveSuit@@YAXXZ
text$yc	SEGMENT
??__ECrateExplosiveSuit@@YAXXZ PROC			; `dynamic initializer for 'CrateExplosiveSuit'', COMDAT

; 1727 : Crate_ExplosiveSuit CrateExplosiveSuit;

	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	je	SHORT $LN10@dynamic@20
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], OFFSET ?CrateExplosiveSuit@@3VCrate_ExplosiveSuit@@A ; CrateExplosiveSuit
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN10@dynamic@20:
	mov	DWORD PTR ?CrateExplosiveSuit@@3VCrate_ExplosiveSuit@@A, OFFSET ??_7Crate_ExplosiveSuit@@6B@
	ret	0
??__ECrateExplosiveSuit@@YAXXZ ENDP			; `dynamic initializer for 'CrateExplosiveSuit''
text$yc	ENDS
PUBLIC	?CrateChemSuit@@3VCrate_ChemSuit@@A		; CrateChemSuit
_DATA	SEGMENT
	ORG $+3
?CrateChemSuit@@3VCrate_ChemSuit@@A DD FLAT:??_7gzCrateBase@@6B@ ; CrateChemSuit
	DD	00H
	DB	00H
; Function compile flags: /Ogtpy
_DATA	ENDS
;	COMDAT ??__ECrateChemSuit@@YAXXZ
text$yc	SEGMENT
??__ECrateChemSuit@@YAXXZ PROC				; `dynamic initializer for 'CrateChemSuit'', COMDAT

; 1758 : Crate_ChemSuit CrateChemSuit;

	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	je	SHORT $LN10@dynamic@21
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], OFFSET ?CrateChemSuit@@3VCrate_ChemSuit@@A ; CrateChemSuit
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN10@dynamic@21:
	mov	DWORD PTR ?CrateChemSuit@@3VCrate_ChemSuit@@A, OFFSET ??_7Crate_ChemSuit@@6B@
	ret	0
??__ECrateChemSuit@@YAXXZ ENDP				; `dynamic initializer for 'CrateChemSuit''
text$yc	ENDS
PUBLIC	?CrateHover@@3VCrate_Hover@@A			; CrateHover
_DATA	SEGMENT
	ORG $+3
?CrateHover@@3VCrate_Hover@@A DD FLAT:??_7gzCrateBase@@6B@ ; CrateHover
	DD	00H
	DB	00H
; Function compile flags: /Ogtpy
_DATA	ENDS
;	COMDAT ??__ECrateHover@@YAXXZ
text$yc	SEGMENT
??__ECrateHover@@YAXXZ PROC				; `dynamic initializer for 'CrateHover'', COMDAT

; 1789 : Crate_Hover CrateHover;

	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	je	SHORT $LN10@dynamic@22
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], OFFSET ?CrateHover@@3VCrate_Hover@@A ; CrateHover
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN10@dynamic@22:
	mov	DWORD PTR ?CrateHover@@3VCrate_Hover@@A, OFFSET ??_7Crate_Hover@@6B@
	ret	0
??__ECrateHover@@YAXXZ ENDP				; `dynamic initializer for 'CrateHover''
text$yc	ENDS
PUBLIC	?CrateStealthMine@@3VCrate_StealthMine@@A	; CrateStealthMine
_DATA	SEGMENT
	ORG $+3
?CrateStealthMine@@3VCrate_StealthMine@@A DD FLAT:??_7gzCrateBase@@6B@ ; CrateStealthMine
	DD	00H
	DB	00H
; Function compile flags: /Ogtpy
_DATA	ENDS
;	COMDAT ??__ECrateStealthMine@@YAXXZ
text$yc	SEGMENT
??__ECrateStealthMine@@YAXXZ PROC			; `dynamic initializer for 'CrateStealthMine'', COMDAT

; 1833 : Crate_StealthMine CrateStealthMine;

	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	je	SHORT $LN10@dynamic@23
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], OFFSET ?CrateStealthMine@@3VCrate_StealthMine@@A ; CrateStealthMine
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN10@dynamic@23:
	mov	DWORD PTR ?CrateStealthMine@@3VCrate_StealthMine@@A, OFFSET ??_7Crate_StealthMine@@6B@
	ret	0
??__ECrateStealthMine@@YAXXZ ENDP			; `dynamic initializer for 'CrateStealthMine''
text$yc	ENDS
PUBLIC	?CrateVeteran@@3VCrate_Veteran@@A		; CrateVeteran
_DATA	SEGMENT
	ORG $+3
?CrateVeteran@@3VCrate_Veteran@@A DD FLAT:??_7gzCrateBase@@6B@ ; CrateVeteran
	DD	00H
	DB	00H
; Function compile flags: /Ogtpy
_DATA	ENDS
;	COMDAT ??__ECrateVeteran@@YAXXZ
text$yc	SEGMENT
??__ECrateVeteran@@YAXXZ PROC				; `dynamic initializer for 'CrateVeteran'', COMDAT

; 1868 : Crate_Veteran CrateVeteran;

	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	je	SHORT $LN10@dynamic@24
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], OFFSET ?CrateVeteran@@3VCrate_Veteran@@A ; CrateVeteran
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN10@dynamic@24:
	mov	DWORD PTR ?CrateVeteran@@3VCrate_Veteran@@A, OFFSET ??_7Crate_Veteran@@6B@
	ret	0
??__ECrateVeteran@@YAXXZ ENDP				; `dynamic initializer for 'CrateVeteran''
text$yc	ENDS
PUBLIC	?CrateVisceroid@@3VCrate_Visceroid@@A		; CrateVisceroid
_DATA	SEGMENT
	ORG $+3
?CrateVisceroid@@3VCrate_Visceroid@@A DD FLAT:??_7gzCrateBase@@6B@ ; CrateVisceroid
	DD	00H
	DB	00H
; Function compile flags: /Ogtpy
_DATA	ENDS
;	COMDAT ??__ECrateVisceroid@@YAXXZ
text$yc	SEGMENT
??__ECrateVisceroid@@YAXXZ PROC				; `dynamic initializer for 'CrateVisceroid'', COMDAT

; 1914 : Crate_Visceroid CrateVisceroid;

	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	je	SHORT $LN10@dynamic@25
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], OFFSET ?CrateVisceroid@@3VCrate_Visceroid@@A ; CrateVisceroid
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN10@dynamic@25:
	mov	DWORD PTR ?CrateVisceroid@@3VCrate_Visceroid@@A, OFFSET ??_7Crate_Visceroid@@6B@
	ret	0
??__ECrateVisceroid@@YAXXZ ENDP				; `dynamic initializer for 'CrateVisceroid''
text$yc	ENDS
PUBLIC	?CrateBasePower@@3VCrate_BasePower@@A		; CrateBasePower
_DATA	SEGMENT
	ORG $+3
?CrateBasePower@@3VCrate_BasePower@@A DD FLAT:??_7gzCrateBase@@6B@ ; CrateBasePower
	DD	00H
	DB	00H
; Function compile flags: /Ogtpy
_DATA	ENDS
;	COMDAT ??__ECrateBasePower@@YAXXZ
text$yc	SEGMENT
??__ECrateBasePower@@YAXXZ PROC				; `dynamic initializer for 'CrateBasePower'', COMDAT

; 1953 : Crate_BasePower CrateBasePower;

	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	je	SHORT $LN10@dynamic@26
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], OFFSET ?CrateBasePower@@3VCrate_BasePower@@A ; CrateBasePower
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN10@dynamic@26:
	mov	DWORD PTR ?CrateBasePower@@3VCrate_BasePower@@A, OFFSET ??_7Crate_BasePower@@6B@
	ret	0
??__ECrateBasePower@@YAXXZ ENDP				; `dynamic initializer for 'CrateBasePower''
text$yc	ENDS
PUBLIC	?CrateVehicleMaxArmor@@3VCrate_VehicleMaxArmor@@A ; CrateVehicleMaxArmor
_DATA	SEGMENT
	ORG $+3
?CrateVehicleMaxArmor@@3VCrate_VehicleMaxArmor@@A DD FLAT:??_7gzCrateBase@@6B@ ; CrateVehicleMaxArmor
	DD	00H
	DB	00H
; Function compile flags: /Ogtpy
_DATA	ENDS
;	COMDAT ??__ECrateVehicleMaxArmor@@YAXXZ
text$yc	SEGMENT
??__ECrateVehicleMaxArmor@@YAXXZ PROC			; `dynamic initializer for 'CrateVehicleMaxArmor'', COMDAT

; 1993 : Crate_VehicleMaxArmor CrateVehicleMaxArmor;

	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	je	SHORT $LN10@dynamic@27
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], OFFSET ?CrateVehicleMaxArmor@@3VCrate_VehicleMaxArmor@@A ; CrateVehicleMaxArmor
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN10@dynamic@27:
	mov	DWORD PTR ?CrateVehicleMaxArmor@@3VCrate_VehicleMaxArmor@@A, OFFSET ??_7Crate_VehicleMaxArmor@@6B@
	ret	0
??__ECrateVehicleMaxArmor@@YAXXZ ENDP			; `dynamic initializer for 'CrateVehicleMaxArmor''
text$yc	ENDS
PUBLIC	?CrateVehicleMaxHealth@@3VCrate_VehicleMaxHealth@@A ; CrateVehicleMaxHealth
_DATA	SEGMENT
	ORG $+3
?CrateVehicleMaxHealth@@3VCrate_VehicleMaxHealth@@A DD FLAT:??_7gzCrateBase@@6B@ ; CrateVehicleMaxHealth
	DD	00H
	DB	00H
; Function compile flags: /Ogtpy
_DATA	ENDS
;	COMDAT ??__ECrateVehicleMaxHealth@@YAXXZ
text$yc	SEGMENT
??__ECrateVehicleMaxHealth@@YAXXZ PROC			; `dynamic initializer for 'CrateVehicleMaxHealth'', COMDAT

; 2029 : Crate_VehicleMaxHealth CrateVehicleMaxHealth;

	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	je	SHORT $LN10@dynamic@28
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], OFFSET ?CrateVehicleMaxHealth@@3VCrate_VehicleMaxHealth@@A ; CrateVehicleMaxHealth
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN10@dynamic@28:
	mov	DWORD PTR ?CrateVehicleMaxHealth@@3VCrate_VehicleMaxHealth@@A, OFFSET ??_7Crate_VehicleMaxHealth@@6B@
	ret	0
??__ECrateVehicleMaxHealth@@YAXXZ ENDP			; `dynamic initializer for 'CrateVehicleMaxHealth''
text$yc	ENDS
PUBLIC	?CrateVehicleRepair@@3VCrate_VehicleRepair@@A	; CrateVehicleRepair
_DATA	SEGMENT
	ORG $+3
?CrateVehicleRepair@@3VCrate_VehicleRepair@@A DD FLAT:??_7gzCrateBase@@6B@ ; CrateVehicleRepair
	DD	00H
	DB	00H
; Function compile flags: /Ogtpy
_DATA	ENDS
;	COMDAT ??__ECrateVehicleRepair@@YAXXZ
text$yc	SEGMENT
??__ECrateVehicleRepair@@YAXXZ PROC			; `dynamic initializer for 'CrateVehicleRepair'', COMDAT

; 2060 : Crate_VehicleRepair CrateVehicleRepair;

	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	je	SHORT $LN10@dynamic@29
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], OFFSET ?CrateVehicleRepair@@3VCrate_VehicleRepair@@A ; CrateVehicleRepair
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN10@dynamic@29:
	mov	DWORD PTR ?CrateVehicleRepair@@3VCrate_VehicleRepair@@A, OFFSET ??_7Crate_VehicleRepair@@6B@
	ret	0
??__ECrateVehicleRepair@@YAXXZ ENDP			; `dynamic initializer for 'CrateVehicleRepair''
text$yc	ENDS
PUBLIC	?CrateVehicleAutoRepair@@3VCrate_VehicleAutoRepair@@A ; CrateVehicleAutoRepair
_DATA	SEGMENT
	ORG $+3
?CrateVehicleAutoRepair@@3VCrate_VehicleAutoRepair@@A DD FLAT:??_7gzCrateBase@@6B@ ; CrateVehicleAutoRepair
	DD	00H
	DB	00H
; Function compile flags: /Ogtpy
_DATA	ENDS
;	COMDAT ??__ECrateVehicleAutoRepair@@YAXXZ
text$yc	SEGMENT
??__ECrateVehicleAutoRepair@@YAXXZ PROC			; `dynamic initializer for 'CrateVehicleAutoRepair'', COMDAT

; 2090 : Crate_VehicleAutoRepair CrateVehicleAutoRepair;

	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	je	SHORT $LN10@dynamic@30
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], OFFSET ?CrateVehicleAutoRepair@@3VCrate_VehicleAutoRepair@@A ; CrateVehicleAutoRepair
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN10@dynamic@30:
	mov	DWORD PTR ?CrateVehicleAutoRepair@@3VCrate_VehicleAutoRepair@@A, OFFSET ??_7Crate_VehicleAutoRepair@@6B@
	ret	0
??__ECrateVehicleAutoRepair@@YAXXZ ENDP			; `dynamic initializer for 'CrateVehicleAutoRepair''
text$yc	ENDS
PUBLIC	?CrateVehicleDemoTruck@@3VCrate_VehicleDemoTruck@@A ; CrateVehicleDemoTruck
_DATA	SEGMENT
	ORG $+3
?CrateVehicleDemoTruck@@3VCrate_VehicleDemoTruck@@A DD FLAT:??_7gzCrateBase@@6B@ ; CrateVehicleDemoTruck
	DD	00H
	DB	00H
; Function compile flags: /Ogtpy
_DATA	ENDS
;	COMDAT ??__ECrateVehicleDemoTruck@@YAXXZ
text$yc	SEGMENT
??__ECrateVehicleDemoTruck@@YAXXZ PROC			; `dynamic initializer for 'CrateVehicleDemoTruck'', COMDAT

; 2117 : Crate_VehicleDemoTruck CrateVehicleDemoTruck;

	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	je	SHORT $LN10@dynamic@31
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], OFFSET ?CrateVehicleDemoTruck@@3VCrate_VehicleDemoTruck@@A ; CrateVehicleDemoTruck
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN10@dynamic@31:
	mov	DWORD PTR ?CrateVehicleDemoTruck@@3VCrate_VehicleDemoTruck@@A, OFFSET ??_7Crate_VehicleDemoTruck@@6B@
	ret	0
??__ECrateVehicleDemoTruck@@YAXXZ ENDP			; `dynamic initializer for 'CrateVehicleDemoTruck''
text$yc	ENDS
PUBLIC	?CrateVehicleAntiEnemy@@3VCrate_VehicleAntiEnemy@@A ; CrateVehicleAntiEnemy
_DATA	SEGMENT
	ORG $+3
?CrateVehicleAntiEnemy@@3VCrate_VehicleAntiEnemy@@A DD FLAT:??_7gzCrateBase@@6B@ ; CrateVehicleAntiEnemy
	DD	00H
	DB	00H
; Function compile flags: /Ogtpy
_DATA	ENDS
;	COMDAT ??__ECrateVehicleAntiEnemy@@YAXXZ
text$yc	SEGMENT
??__ECrateVehicleAntiEnemy@@YAXXZ PROC			; `dynamic initializer for 'CrateVehicleAntiEnemy'', COMDAT

; 2157 : Crate_VehicleAntiEnemy CrateVehicleAntiEnemy;

	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	je	SHORT $LN10@dynamic@32
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], OFFSET ?CrateVehicleAntiEnemy@@3VCrate_VehicleAntiEnemy@@A ; CrateVehicleAntiEnemy
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN10@dynamic@32:
	mov	DWORD PTR ?CrateVehicleAntiEnemy@@3VCrate_VehicleAntiEnemy@@A, OFFSET ??_7Crate_VehicleAntiEnemy@@6B@
	ret	0
??__ECrateVehicleAntiEnemy@@YAXXZ ENDP			; `dynamic initializer for 'CrateVehicleAntiEnemy''
text$yc	ENDS
PUBLIC	?CrateVehicleSpy@@3VCrate_VehicleSpy@@A		; CrateVehicleSpy
_DATA	SEGMENT
	ORG $+3
?CrateVehicleSpy@@3VCrate_VehicleSpy@@A DD FLAT:??_7gzCrateBase@@6B@ ; CrateVehicleSpy
	DD	00H
	DB	00H
; Function compile flags: /Ogtpy
_DATA	ENDS
;	COMDAT ??__ECrateVehicleSpy@@YAXXZ
text$yc	SEGMENT
??__ECrateVehicleSpy@@YAXXZ PROC			; `dynamic initializer for 'CrateVehicleSpy'', COMDAT

; 2183 : Crate_VehicleSpy CrateVehicleSpy;

	mov	eax, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+8]
	mov	ecx, OFFSET ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A ; gzManagerCrateClass::m_list
	call	eax
	test	al, al
	je	SHORT $LN10@dynamic@33
	mov	ecx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8
	mov	edx, DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	mov	DWORD PTR [edx+ecx*4-4], OFFSET ?CrateVehicleSpy@@3VCrate_VehicleSpy@@A ; CrateVehicleSpy
	add	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, 1
$LN10@dynamic@33:
	mov	DWORD PTR ?CrateVehicleSpy@@3VCrate_VehicleSpy@@A, OFFSET ??_7Crate_VehicleSpy@@6B@
	ret	0
??__ECrateVehicleSpy@@YAXXZ ENDP			; `dynamic initializer for 'CrateVehicleSpy''
text$yc	ENDS
PUBLIC	??_C@_0O@PDHFMPFI@M00_CNC_Crate?$AA@		; `string'
;	COMDAT ??_C@_0O@PDHFMPFI@M00_CNC_Crate?$AA@
; File d:\source code\fds lib\new\fds_scripts.h
CONST	SEGMENT
??_C@_0O@PDHFMPFI@M00_CNC_Crate?$AA@ DB 'M00_CNC_Crate', 00H ; `string'
; Function compile flags: /Ogtpy
; File d:\source code\gzgm\gzcrate.cpp
CONST	ENDS
;	COMDAT ??__EM00_CNC_Crate_Registrant@@YAXXZ
text$yc	SEGMENT
??__EM00_CNC_Crate_Registrant@@YAXXZ PROC		; `dynamic initializer for 'M00_CNC_Crate_Registrant'', COMDAT

; 2209 : nc_ScriptRegistrant<M00_CNC_Crate> M00_CNC_Crate_Registrant("M00_CNC_Crate", "");

	push	OFFSET ??_C@_00CNPNBAHC@?$AA@
	push	OFFSET ??_C@_0O@PDHFMPFI@M00_CNC_Crate?$AA@
	mov	ecx, OFFSET ?M00_CNC_Crate_Registrant@@3V?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@A ; M00_CNC_Crate_Registrant
	call	??0nc_ScriptFactory@@QAE@PAD0@Z		; nc_ScriptFactory::nc_ScriptFactory
	push	OFFSET ??__FM00_CNC_Crate_Registrant@@YAXXZ ; `dynamic atexit destructor for 'M00_CNC_Crate_Registrant''
	mov	DWORD PTR ?M00_CNC_Crate_Registrant@@3V?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@A, OFFSET ??_7?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@6B@
	call	_atexit
	pop	ecx
	ret	0
??__EM00_CNC_Crate_Registrant@@YAXXZ ENDP		; `dynamic initializer for 'M00_CNC_Crate_Registrant''
; Function compile flags: /Ogtpy
text$yc	ENDS
;	COMDAT ??__Egivecrate@@YAXXZ
text$yc	SEGMENT
??__Egivecrate@@YAXXZ PROC				; `dynamic initializer for 'givecrate'', COMDAT

; 2247 : GiveCrateConsoleFunction givecrate;

	mov	ecx, OFFSET ?givecrate@@3VGiveCrateConsoleFunction@@A ; givecrate
	call	??0gzConsoleCommand@@QAE@XZ		; gzConsoleCommand::gzConsoleCommand
	mov	DWORD PTR ?givecrate@@3VGiveCrateConsoleFunction@@A, OFFSET ??_7GiveCrateConsoleFunction@@6B@ ; givecrate
	ret	0
??__Egivecrate@@YAXXZ ENDP				; `dynamic initializer for 'givecrate''
; 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 ??__FM00_CNC_Crate_Registrant@@YAXXZ
text$yd	SEGMENT
??__FM00_CNC_Crate_Registrant@@YAXXZ PROC		; `dynamic atexit destructor for 'M00_CNC_Crate_Registrant'', COMDAT
	mov	ecx, OFFSET ?M00_CNC_Crate_Registrant@@3V?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@A ; M00_CNC_Crate_Registrant
	jmp	??1nc_ScriptFactory@@UAE@XZ		; nc_ScriptFactory::~nc_ScriptFactory
??__FM00_CNC_Crate_Registrant@@YAXXZ ENDP		; `dynamic atexit destructor for 'M00_CNC_Crate_Registrant''
; Function compile flags: /Ogtpy
text$yd	ENDS
;	COMDAT ??__F?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A@@YAXXZ
text$yd	SEGMENT
??__F?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A@@YAXXZ PROC ; `dynamic atexit destructor for 'gzManagerCrateClass::m_list'', COMDAT
	push	esi
	xor	esi, esi
	cmp	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4, esi
	mov	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A, OFFSET ??_7?$aVector@PAVgzCrateBase@@@@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@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
	mov	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+4, esi
$LN10@m_list:
	mov	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+12, esi
	mov	DWORD PTR ?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A+8, esi
	pop	esi
	ret	0
??__F?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A@@YAXXZ ENDP ; `dynamic atexit destructor for 'gzManagerCrateClass::m_list''
text$yd	ENDS
PUBLIC	?M00_CNC_Crate_Registrant@@3V?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@A ; M00_CNC_Crate_Registrant
PUBLIC	?givecrate@@3VGiveCrateConsoleFunction@@A	; givecrate
_BSS	SEGMENT
?M00_CNC_Crate_Registrant@@3V?$nc_ScriptRegistrant@VM00_CNC_Crate@@@@A DB 010H DUP (?) ; M00_CNC_Crate_Registrant
?givecrate@@3VGiveCrateConsoleFunction@@A DD 01H DUP (?) ; givecrate
_gzCritical DB	018H DUP (?)
_BSS	ENDS
CRT$XCU	SEGMENT
_gzCritical$initializer$ DD FLAT:??__EgzCritical@@YAXXZ
?m_list$initializer$@gzManagerCrateClass@@0P6AXXZA DD FLAT:??__E?m_list@gzManagerCrateClass@@0V?$aVector@PAVgzCrateBase@@@@A@@YAXXZ ; gzManagerCrateClass::m_list$initializer$
_CrateRandomWeapon$initializer$ DD FLAT:??__ECrateRandomWeapon@@YAXXZ
_CrateMoney$initializer$ DD FLAT:??__ECrateMoney@@YAXXZ
_CratePoints$initializer$ DD FLAT:??__ECratePoints@@YAXXZ
_CrateRandomVehicle$initializer$ DD FLAT:??__ECrateRandomVehicle@@YAXXZ
_CrateDeath$initializer$ DD FLAT:??__ECrateDeath@@YAXXZ
_CrateAmmo$initializer$ DD FLAT:??__ECrateAmmo@@YAXXZ
_CrateArmor$initializer$ DD FLAT:??__ECrateArmor@@YAXXZ
_CrateHealth$initializer$ DD FLAT:??__ECrateHealth@@YAXXZ
_CrateRandomCharacter$initializer$ DD FLAT:??__ECrateRandomCharacter@@YAXXZ
_CrateButterFinger$initializer$ DD FLAT:??__ECrateButterFinger@@YAXXZ
_CrateRefill$initializer$ DD FLAT:??__ECrateRefill@@YAXXZ
_CrateBeacon$initializer$ DD FLAT:??__ECrateBeacon@@YAXXZ
_CrateSpy$initializer$ DD FLAT:??__ECrateSpy@@YAXXZ
_CrateThief$initializer$ DD FLAT:??__ECrateThief@@YAXXZ
_CrateWeaponPack$initializer$ DD FLAT:??__ECrateWeaponPack@@YAXXZ
_CrateDonation$initializer$ DD FLAT:??__ECrateDonation@@YAXXZ
_CrateMetalGear$initializer$ DD FLAT:??__ECrateMetalGear@@YAXXZ
_CrateEnemyThief$initializer$ DD FLAT:??__ECrateEnemyThief@@YAXXZ
_CrateMedic$initializer$ DD FLAT:??__ECrateMedic@@YAXXZ
_CrateExplosiveSuit$initializer$ DD FLAT:??__ECrateExplosiveSuit@@YAXXZ
_CrateChemSuit$initializer$ DD FLAT:??__ECrateChemSuit@@YAXXZ
_CrateHover$initializer$ DD FLAT:??__ECrateHover@@YAXXZ
_CrateStealthMine$initializer$ DD FLAT:??__ECrateStealthMine@@YAXXZ
_CrateVeteran$initializer$ DD FLAT:??__ECrateVeteran@@YAXXZ
_CrateVisceroid$initializer$ DD FLAT:??__ECrateVisceroid@@YAXXZ
_CrateBasePower$initializer$ DD FLAT:??__ECrateBasePower@@YAXXZ
_CrateVehicleMaxArmor$initializer$ DD FLAT:??__ECrateVehicleMaxArmor@@YAXXZ
_CrateVehicleMaxHealth$initializer$ DD FLAT:??__ECrateVehicleMaxHealth@@YAXXZ
_CrateVehicleRepair$initializer$ DD FLAT:??__ECrateVehicleRepair@@YAXXZ
_CrateVehicleAutoRepair$initializer$ DD FLAT:??__ECrateVehicleAutoRepair@@YAXXZ
_CrateVehicleDemoTruck$initializer$ DD FLAT:??__ECrateVehicleDemoTruck@@YAXXZ
_CrateVehicleAntiEnemy$initializer$ DD FLAT:??__ECrateVehicleAntiEnemy@@YAXXZ
_CrateVehicleSpy$initializer$ DD FLAT:??__ECrateVehicleSpy@@YAXXZ
_M00_CNC_Crate_Registrant$initializer$ DD FLAT:??__EM00_CNC_Crate_Registrant@@YAXXZ
_givecrate$initializer$ DD FLAT:??__Egivecrate@@YAXXZ
CRT$XCU	ENDS
END
