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

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

INCLUDELIB LIBCMTD
INCLUDELIB OLDNAMES

PUBLIC	??_C@_0P@GHFPNOJB@bad?5allocation?$AA@		; `string'
PUBLIC	?IniClassGetBool@@3PAXA				; IniClassGetBool
PUBLIC	?IniClassGetFloat@@3PAXA			; IniClassGetFloat
PUBLIC	?IniClassGetString@@3PAXA			; IniClassGetString
PUBLIC	?GetINI@@3PAXA					; GetINI
PUBLIC	?ReleaseINI@@3PAXA				; ReleaseINI
PUBLIC	?TheFileFactory@@3PAPAVFileFactoryClass@@A	; TheFileFactory
PUBLIC	?IniClassGetInt@@3PAXA				; IniClassGetInt
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	?crc_table@@3PAKA				; crc_table
_BSS	SEGMENT
?IniClassGetBool@@3PAXA DD 01H DUP (?)			; IniClassGetBool
?IniClassGetFloat@@3PAXA DD 01H DUP (?)			; IniClassGetFloat
?IniClassGetString@@3PAXA DD 01H DUP (?)		; IniClassGetString
?GetINI@@3PAXA DD 01H DUP (?)				; GetINI
?ReleaseINI@@3PAXA DD 01H DUP (?)			; ReleaseINI
?TheFileFactory@@3PAPAVFileFactoryClass@@A DD 01H DUP (?) ; TheFileFactory
?IniClassGetInt@@3PAXA DD 01H DUP (?)			; IniClassGetInt
_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@
	ORG $+4
?crc_table@@3PAKA DD 00H				; crc_table
	DD	077073096H
	DD	0ee0e612cH
	DD	0990951baH
	DD	076dc419H
	DD	0706af48fH
	DD	0e963a535H
	DD	09e6495a3H
	DD	0edb8832H
	DD	079dcb8a4H
	DD	0e0d5e91eH
	DD	097d2d988H
	DD	09b64c2bH
	DD	07eb17cbdH
	DD	0e7b82d07H
	DD	090bf1d91H
	DD	01db71064H
	DD	06ab020f2H
	DD	0f3b97148H
	DD	084be41deH
	DD	01adad47dH
	DD	06ddde4ebH
	DD	0f4d4b551H
	DD	083d385c7H
	DD	0136c9856H
	DD	0646ba8c0H
	DD	0fd62f97aH
	DD	08a65c9ecH
	DD	014015c4fH
	DD	063066cd9H
	DD	0fa0f3d63H
	DD	08d080df5H
	DD	03b6e20c8H
	DD	04c69105eH
	DD	0d56041e4H
	DD	0a2677172H
	DD	03c03e4d1H
	DD	04b04d447H
	DD	0d20d85fdH
	DD	0a50ab56bH
	DD	035b5a8faH
	DD	042b2986cH
	DD	0dbbbc9d6H
	DD	0acbcf940H
	DD	032d86ce3H
	DD	045df5c75H
	DD	0dcd60dcfH
	DD	0abd13d59H
	DD	026d930acH
	DD	051de003aH
	DD	0c8d75180H
	DD	0bfd06116H
	DD	021b4f4b5H
	DD	056b3c423H
	DD	0cfba9599H
	DD	0b8bda50fH
	DD	02802b89eH
	DD	05f058808H
	DD	0c60cd9b2H
	DD	0b10be924H
	DD	02f6f7c87H
	DD	058684c11H
	DD	0c1611dabH
	DD	0b6662d3dH
	DD	076dc4190H
	DD	01db7106H
	DD	098d220bcH
	DD	0efd5102aH
	DD	071b18589H
	DD	06b6b51fH
	DD	09fbfe4a5H
	DD	0e8b8d433H
	DD	07807c9a2H
	DD	0f00f934H
	DD	09609a88eH
	DD	0e10e9818H
	DD	07f6a0dbbH
	DD	086d3d2dH
	DD	091646c97H
	DD	0e6635c01H
	DD	06b6b51f4H
	DD	01c6c6162H
	DD	0856530d8H
	DD	0f262004eH
	DD	06c0695edH
	DD	01b01a57bH
	DD	08208f4c1H
	DD	0f50fc457H
	DD	065b0d9c6H
	DD	012b7e950H
	DD	08bbeb8eaH
	DD	0fcb9887cH
	DD	062dd1ddfH
	DD	015da2d49H
	DD	08cd37cf3H
	DD	0fbd44c65H
	DD	04db26158H
	DD	03ab551ceH
	DD	0a3bc0074H
	DD	0d4bb30e2H
	DD	04adfa541H
	DD	03dd895d7H
	DD	0a4d1c46dH
	DD	0d3d6f4fbH
	DD	04369e96aH
	DD	0346ed9fcH
	DD	0ad678846H
	DD	0da60b8d0H
	DD	044042d73H
	DD	033031de5H
	DD	0aa0a4c5fH
	DD	0dd0d7cc9H
	DD	05005713cH
	DD	0270241aaH
	DD	0be0b1010H
	DD	0c90c2086H
	DD	05768b525H
	DD	0206f85b3H
	DD	0b966d409H
	DD	0ce61e49fH
	DD	05edef90eH
	DD	029d9c998H
	DD	0b0d09822H
	DD	0c7d7a8b4H
	DD	059b33d17H
	DD	02eb40d81H
	DD	0b7bd5c3bH
	DD	0c0ba6cadH
	DD	0edb88320H
	DD	09abfb3b6H
	DD	03b6e20cH
	DD	074b1d29aH
	DD	0ead54739H
	DD	09dd277afH
	DD	04db2615H
	DD	073dc1683H
	DD	0e3630b12H
	DD	094643b84H
	DD	0d6d6a3eH
	DD	07a6a5aa8H
	DD	0e40ecf0bH
	DD	09309ff9dH
	DD	0a00ae27H
	DD	07d079eb1H
	DD	0f00f9344H
	DD	08708a3d2H
	DD	01e01f268H
	DD	06906c2feH
	DD	0f762575dH
	DD	0806567cbH
	DD	0196c3671H
	DD	06e6b06e7H
	DD	0fed41b76H
	DD	089d32be0H
	DD	010da7a5aH
	DD	067dd4accH
	DD	0f9b9df6fH
	DD	08ebeeff9H
	DD	017b7be43H
	DD	060b08ed5H
	DD	0d6d6a3e8H
	DD	0a1d1937eH
	DD	038d8c2c4H
	DD	04fdff252H
	DD	0d1bb67f1H
	DD	0a6bc5767H
	DD	03fb506ddH
	DD	048b2364bH
	DD	0d80d2bdaH
	DD	0af0a1b4cH
	DD	036034af6H
	DD	041047a60H
	DD	0df60efc3H
	DD	0a867df55H
	DD	0316e8eefH
	DD	04669be79H
	DD	0cb61b38cH
	DD	0bc66831aH
	DD	0256fd2a0H
	DD	05268e236H
	DD	0cc0c7795H
	DD	0bb0b4703H
	DD	0220216b9H
	DD	05505262fH
	DD	0c5ba3bbeH
	DD	0b2bd0b28H
	DD	02bb45a92H
	DD	05cb36a04H
	DD	0c2d7ffa7H
	DD	0b5d0cf31H
	DD	02cd99e8bH
	DD	05bdeae1dH
	DD	09b64c2b0H
	DD	0ec63f226H
	DD	0756aa39cH
	DD	026d930aH
	DD	09c0906a9H
	DD	0eb0e363fH
	DD	072076785H
	DD	05005713H
	DD	095bf4a82H
	DD	0e2b87a14H
	DD	07bb12baeH
	DD	0cb61b38H
	DD	092d28e9bH
	DD	0e5d5be0dH
	DD	07cdcefb7H
	DD	0bdbdf21H
	DD	086d3d2d4H
	DD	0f1d4e242H
	DD	068ddb3f8H
	DD	01fda836eH
	DD	081be16cdH
	DD	0f6b9265bH
	DD	06fb077e1H
	DD	018b74777H
	DD	088085ae6H
	DD	0ff0f6a70H
	DD	066063bcaH
	DD	011010b5cH
	DD	08f659effH
	DD	0f862ae69H
	DD	0616bffd3H
	DD	0166ccf45H
	DD	0a00ae278H
	DD	0d70dd2eeH
	DD	04e048354H
	DD	03903b3c2H
	DD	0a7672661H
	DD	0d06016f7H
	DD	04969474dH
	DD	03e6e77dbH
	DD	0aed16a4aH
	DD	0d9d65adcH
	DD	040df0b66H
	DD	037d83bf0H
	DD	0a9bcae53H
	DD	0debb9ec5H
	DD	047b2cf7fH
	DD	030b5ffe9H
	DD	0bdbdf21cH
	DD	0cabac28aH
	DD	053b39330H
	DD	024b4a3a6H
	DD	0bad03605H
	DD	0cdd70693H
	DD	054de5729H
	DD	023d967bfH
	DD	0b3667a2eH
	DD	0c4614ab8H
	DD	05d681b02H
	DD	02a6f2b94H
	DD	0b40bbe37H
	DD	0c30c8ea1H
	DD	05a05df1bH
	DD	02d02ef8dH
_DATA	ENDS
;	COMDAT ??_C@_0P@GHFPNOJB@bad?5allocation?$AA@
CONST	SEGMENT
??_C@_0P@GHFPNOJB@bad?5allocation?$AA@ DB 'bad allocation', 00H ; `string'
CONST	ENDS
PUBLIC	??_7bad_alloc@std@@6B@				; std::bad_alloc::`vftable'
PUBLIC	??0bad_alloc@std@@QAE@PBD@Z			; std::bad_alloc::bad_alloc
PUBLIC	??_R4bad_alloc@std@@6B@				; std::bad_alloc::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVbad_alloc@std@@@8			; std::bad_alloc `RTTI Type Descriptor'
PUBLIC	??_R3bad_alloc@std@@8				; std::bad_alloc::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2bad_alloc@std@@8				; std::bad_alloc::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@bad_alloc@std@@8			; std::bad_alloc::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	??_R1A@?0A@EA@exception@std@@8			; std::exception::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	??_R0?AVexception@std@@@8			; std::exception `RTTI Type Descriptor'
PUBLIC	??_R3exception@std@@8				; std::exception::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2exception@std@@8				; std::exception::`RTTI Base Class Array'
EXTRN	??0exception@std@@QAE@ABQBD@Z:PROC		; std::exception::exception
EXTRN	??_7type_info@@6B@:QWORD			; type_info::`vftable'
EXTRN	??_Ebad_alloc@std@@UAEPAXI@Z:PROC		; std::bad_alloc::`vector deleting destructor'
EXTRN	?what@exception@std@@UBEPBDXZ:PROC		; std::exception::what
;	COMDAT ??_R2exception@std@@8
; File c:\program files\microsoft visual studio 8\vc\include\exception
rdata$r	SEGMENT
??_R2exception@std@@8 DD FLAT:??_R1A@?0A@EA@exception@std@@8 ; std::exception::`RTTI Base Class Array'
rdata$r	ENDS
;	COMDAT ??_R3exception@std@@8
rdata$r	SEGMENT
??_R3exception@std@@8 DD 00H				; std::exception::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	01H
	DD	FLAT:??_R2exception@std@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVexception@std@@@8
_DATA	SEGMENT
??_R0?AVexception@std@@@8 DD FLAT:??_7type_info@@6B@	; std::exception `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVexception@std@@', 00H
_DATA	ENDS
;	COMDAT ??_R1A@?0A@EA@exception@std@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@exception@std@@8 DD FLAT:??_R0?AVexception@std@@@8 ; std::exception::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	00H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3exception@std@@8
rdata$r	ENDS
;	COMDAT ??_R1A@?0A@EA@bad_alloc@std@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@bad_alloc@std@@8 DD FLAT:??_R0?AVbad_alloc@std@@@8 ; std::bad_alloc::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3bad_alloc@std@@8
rdata$r	ENDS
;	COMDAT ??_R2bad_alloc@std@@8
rdata$r	SEGMENT
??_R2bad_alloc@std@@8 DD FLAT:??_R1A@?0A@EA@bad_alloc@std@@8 ; std::bad_alloc::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@exception@std@@8
rdata$r	ENDS
;	COMDAT ??_R3bad_alloc@std@@8
rdata$r	SEGMENT
??_R3bad_alloc@std@@8 DD 00H				; std::bad_alloc::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2bad_alloc@std@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVbad_alloc@std@@@8
_DATA	SEGMENT
??_R0?AVbad_alloc@std@@@8 DD FLAT:??_7type_info@@6B@	; std::bad_alloc `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVbad_alloc@std@@', 00H
_DATA	ENDS
;	COMDAT ??_R4bad_alloc@std@@6B@
rdata$r	SEGMENT
??_R4bad_alloc@std@@6B@ DD 00H				; std::bad_alloc::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVbad_alloc@std@@@8
	DD	FLAT:??_R3bad_alloc@std@@8
rdata$r	ENDS
;	COMDAT ??_7bad_alloc@std@@6B@
CONST	SEGMENT
??_7bad_alloc@std@@6B@ DD FLAT:??_R4bad_alloc@std@@6B@	; std::bad_alloc::`vftable'
	DD	FLAT:??_Ebad_alloc@std@@UAEPAXI@Z
	DD	FLAT:?what@exception@std@@UBEPBDXZ
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0bad_alloc@std@@QAE@PBD@Z
_TEXT	SEGMENT
__Message$ = 8						; size = 4
??0bad_alloc@std@@QAE@PBD@Z PROC			; std::bad_alloc::bad_alloc, COMDAT
; _this$ = ecx

; 371  : 		{	// construct from message string

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

; 372  : 		}

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

; 380  : 		{	// destroy the object

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

; 381  : 		}

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

; 28   : 	switch(exe)

	mov	eax, DWORD PTR _exe$[esp-4]
	cmp	eax, 3
	ja	$LN1@InitEngine
	jmp	DWORD PTR $LN10@InitEngine[eax*4]
$LN5@InitEngine:

; 29   : 	{
; 30   : 		case 0: //game.exe
; 31   : 			TheFileFactory =	(FileFactoryClass **)0x00809E74;

	mov	DWORD PTR ?TheFileFactory@@3PAPAVFileFactoryClass@@A, 8429172 ; TheFileFactory, 00809e74H

; 32   : 			GetINI =			(void *)0x006DAB30;

	mov	DWORD PTR ?GetINI@@3PAXA, 7187248	; GetINI, 006dab30H

; 33   : 			ReleaseINI =		(void *)0x006DABE0;

	mov	DWORD PTR ?ReleaseINI@@3PAXA, 7187424	; ReleaseINI, 006dabe0H

; 34   : 			IniClassGetInt =	(void *)0x005E10B0;

	mov	DWORD PTR ?IniClassGetInt@@3PAXA, 6164656 ; IniClassGetInt, 005e10b0H

; 35   : 			IniClassGetFloat =	(void *)0x005E1670;

	mov	DWORD PTR ?IniClassGetFloat@@3PAXA, 6166128 ; IniClassGetFloat, 005e1670H

; 36   : 			IniClassGetBool =	(void *)0x005E27A0;

	mov	DWORD PTR ?IniClassGetBool@@3PAXA, 6170528 ; IniClassGetBool, 005e27a0H

; 37   : 			IniClassGetString =	(void *)0x005E1DE0;

	mov	DWORD PTR ?IniClassGetString@@3PAXA, 6168032 ; IniClassGetString, 005e1de0H

; 74   : 			break;
; 75   : 	}
; 76   : }

	ret	0
$LN4@InitEngine:

; 38   : 			break;
; 39   : 		case 1: //server.dat
; 40   : 			TheFileFactory =	(FileFactoryClass **)0x0080904C;

	mov	DWORD PTR ?TheFileFactory@@3PAPAVFileFactoryClass@@A, 8425548 ; TheFileFactory, 0080904cH

; 41   : 			GetINI =			(void *)0x006DA3D0;

	mov	DWORD PTR ?GetINI@@3PAXA, 7185360	; GetINI, 006da3d0H

; 42   : 			ReleaseINI =		(void *)0x006DA480;

	mov	DWORD PTR ?ReleaseINI@@3PAXA, 7185536	; ReleaseINI, 006da480H

; 43   : 			IniClassGetInt =	(void *)0x005E0950;

	mov	DWORD PTR ?IniClassGetInt@@3PAXA, 6162768 ; IniClassGetInt, 005e0950H

; 44   : 			IniClassGetFloat =	(void *)0x005E0F10;

	mov	DWORD PTR ?IniClassGetFloat@@3PAXA, 6164240 ; IniClassGetFloat, 005e0f10H

; 45   : 			IniClassGetBool =	(void *)0x005E2040;

	mov	DWORD PTR ?IniClassGetBool@@3PAXA, 6168640 ; IniClassGetBool, 005e2040H

; 46   : 			IniClassGetString =	(void *)0x005E1680;

	mov	DWORD PTR ?IniClassGetString@@3PAXA, 6166144 ; IniClassGetString, 005e1680H

; 74   : 			break;
; 75   : 	}
; 76   : }

	ret	0
$LN3@InitEngine:

; 47   : 			break;
; 48   : 		case 2: //RH73
; 49   : 			TheFileFactory =	(FileFactoryClass **)0x086E5F44;

	mov	DWORD PTR ?TheFileFactory@@3PAPAVFileFactoryClass@@A, 141451076 ; TheFileFactory, 086e5f44H

; 50   : 			GetINI =			(void *)0x080E0F40;

	mov	DWORD PTR ?GetINI@@3PAXA, 135139136	; GetINI, 080e0f40H

; 51   : 			ReleaseINI =		(void *)0x080E101C;

	mov	DWORD PTR ?ReleaseINI@@3PAXA, 135139356	; ReleaseINI, 080e101cH

; 52   : 			IniClassGetInt =	(void *)0x083544AC;

	mov	DWORD PTR ?IniClassGetInt@@3PAXA, 137708716 ; IniClassGetInt, 083544acH

; 53   : 			IniClassGetFloat =	(void *)0x083546F4;

	mov	DWORD PTR ?IniClassGetFloat@@3PAXA, 137709300 ; IniClassGetFloat, 083546f4H

; 54   : 			IniClassGetBool =	(void *)0x0835524C;

	mov	DWORD PTR ?IniClassGetBool@@3PAXA, 137712204 ; IniClassGetBool, 0835524cH

; 55   : 			IniClassGetString =	(void *)0x08354DB4;

	mov	DWORD PTR ?IniClassGetString@@3PAXA, 137711028 ; IniClassGetString, 08354db4H

; 74   : 			break;
; 75   : 	}
; 76   : }

	ret	0
$LN2@InitEngine:

; 56   : 			break;
; 57   : 		case 3: //RH8
; 58   : 			TheFileFactory =	(FileFactoryClass **)0x0860E9E4;

	mov	DWORD PTR ?TheFileFactory@@3PAPAVFileFactoryClass@@A, 140569060 ; TheFileFactory, 0860e9e4H

; 59   : 			GetINI =			(void *)0x080D3D74;

	mov	DWORD PTR ?GetINI@@3PAXA, 135085428	; GetINI, 080d3d74H

; 60   : 			ReleaseINI =		(void *)0x080D3E4C;

	mov	DWORD PTR ?ReleaseINI@@3PAXA, 135085644	; ReleaseINI, 080d3e4cH

; 61   : 			IniClassGetInt =	(void *)0x0830832E;

	mov	DWORD PTR ?IniClassGetInt@@3PAXA, 137397038 ; IniClassGetInt, 0830832eH

; 62   : 			IniClassGetFloat =	(void *)0x0830856C;

	mov	DWORD PTR ?IniClassGetFloat@@3PAXA, 137397612 ; IniClassGetFloat, 0830856cH

; 63   : 			IniClassGetBool =	(void *)0x08308E94;

	mov	DWORD PTR ?IniClassGetBool@@3PAXA, 137399956 ; IniClassGetBool, 08308e94H

; 64   : 			IniClassGetString =	(void *)0x08308A40;

	mov	DWORD PTR ?IniClassGetString@@3PAXA, 137398848 ; IniClassGetString, 08308a40H

; 74   : 			break;
; 75   : 	}
; 76   : }

	ret	0
$LN1@InitEngine:

; 65   : 			break;
; 66   : 		default:
; 67   : 			TheFileFactory =	(FileFactoryClass **)0;

	xor	eax, eax
	mov	DWORD PTR ?TheFileFactory@@3PAPAVFileFactoryClass@@A, eax ; TheFileFactory

; 68   : 			GetINI =			(void *)0;

	mov	DWORD PTR ?GetINI@@3PAXA, eax		; GetINI

; 69   : 			ReleaseINI =		(void *)0;

	mov	DWORD PTR ?ReleaseINI@@3PAXA, eax	; ReleaseINI

; 70   : 			IniClassGetInt =	(void *)0;

	mov	DWORD PTR ?IniClassGetInt@@3PAXA, eax	; IniClassGetInt

; 71   : 			IniClassGetFloat =	(void *)0;

	mov	DWORD PTR ?IniClassGetFloat@@3PAXA, eax	; IniClassGetFloat

; 72   : 			IniClassGetBool =	(void *)0;

	mov	DWORD PTR ?IniClassGetBool@@3PAXA, eax	; IniClassGetBool

; 73   : 			IniClassGetString =	(void *)0;

	mov	DWORD PTR ?IniClassGetString@@3PAXA, eax ; IniClassGetString

; 74   : 			break;
; 75   : 	}
; 76   : }

	ret	0
	npad	2
$LN10@InitEngine:
	DD	$LN5@InitEngine
	DD	$LN4@InitEngine
	DD	$LN3@InitEngine
	DD	$LN2@InitEngine
?InitEngineIO@@YAXI@Z ENDP				; InitEngineIO
_TEXT	ENDS
PUBLIC	?Get_Data_File@@YAPAVFileClass@@PAD@Z		; Get_Data_File
; Function compile flags: /Ogtpy
;	COMDAT ?Get_Data_File@@YAPAVFileClass@@PAD@Z
_TEXT	SEGMENT
_file$ = 8						; size = 4
?Get_Data_File@@YAPAVFileClass@@PAD@Z PROC		; Get_Data_File, COMDAT

; 80   : 	return (*TheFileFactory)->Get_File(file);

	mov	eax, DWORD PTR ?TheFileFactory@@3PAPAVFileFactoryClass@@A ; TheFileFactory
	mov	ecx, DWORD PTR [eax]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR _file$[esp-4]
	mov	edx, DWORD PTR [edx+4]
	push	eax
	call	edx

; 81   : }

	ret	0
?Get_Data_File@@YAPAVFileClass@@PAD@Z ENDP		; Get_Data_File
_TEXT	ENDS
PUBLIC	?Close_Data_File@@YAXPAVFileClass@@@Z		; Close_Data_File
; Function compile flags: /Ogtpy
;	COMDAT ?Close_Data_File@@YAXPAVFileClass@@@Z
_TEXT	SEGMENT
_file$ = 8						; size = 4
?Close_Data_File@@YAXPAVFileClass@@@Z PROC		; Close_Data_File, COMDAT

; 85   : 	(*TheFileFactory)->Return_File(file);

	mov	eax, DWORD PTR ?TheFileFactory@@3PAPAVFileFactoryClass@@A ; TheFileFactory
	mov	ecx, DWORD PTR [eax]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR _file$[esp-4]
	mov	edx, DWORD PTR [edx+8]
	push	eax
	call	edx

; 86   : }

	ret	0
?Close_Data_File@@YAXPAVFileClass@@@Z ENDP		; Close_Data_File
_TEXT	ENDS
PUBLIC	??0ChunkLoadClass@@QAE@PAVFileClass@@@Z		; ChunkLoadClass::ChunkLoadClass
EXTRN	_memset:PROC
; Function compile flags: /Ogtpy
;	COMDAT ??0ChunkLoadClass@@QAE@PAVFileClass@@@Z
_TEXT	SEGMENT
_file$ = 8						; size = 4
??0ChunkLoadClass@@QAE@PAVFileClass@@@Z PROC		; ChunkLoadClass::ChunkLoadClass, COMDAT
; _this$ = ecx

; 90   : 	File = file;

	mov	eax, DWORD PTR _file$[esp-4]
	push	ebx
	push	esi
	mov	esi, ecx

; 91   : 	StackIndex = 0;

	xor	ebx, ebx

; 92   : 	memset(HeaderStack,0,sizeof(HeaderStack));

	push	2048					; 00000800H
	lea	ecx, DWORD PTR [esi+1032]
	push	ebx
	push	ecx
	mov	DWORD PTR [esi], eax
	mov	DWORD PTR [esi+4], ebx
	call	_memset

; 93   : 	memset(PositionStack,0,sizeof(PositionStack));

	push	1024					; 00000400H
	lea	edx, DWORD PTR [esi+8]
	push	ebx
	push	edx
	call	_memset
	add	esp, 24					; 00000018H

; 94   : 	InMicroChunk = false;

	mov	BYTE PTR [esi+3080], bl

; 95   : 	MicroChunkPosition = 0;

	mov	DWORD PTR [esi+3084], ebx

; 96   : 	MCHeader.ChunkType = 0;

	mov	BYTE PTR [esi+3088], bl

; 97   : }

	mov	eax, esi
	pop	esi
	pop	ebx
	ret	4
??0ChunkLoadClass@@QAE@PAVFileClass@@@Z ENDP		; ChunkLoadClass::ChunkLoadClass
_TEXT	ENDS
PUBLIC	?Open_Chunk@ChunkLoadClass@@QAE_NXZ		; ChunkLoadClass::Open_Chunk
; Function compile flags: /Ogtpy
;	COMDAT ?Open_Chunk@ChunkLoadClass@@QAE_NXZ
_TEXT	SEGMENT
?Open_Chunk@ChunkLoadClass@@QAE_NXZ PROC		; ChunkLoadClass::Open_Chunk, COMDAT
; _this$ = ecx

; 100  : {

	push	esi
	mov	esi, ecx

; 101  : 	if ((StackIndex <= 0) || (PositionStack[StackIndex-1] != (HeaderStack[StackIndex-1].ChunkSize & 0x7FFFFFFF)))

	mov	eax, DWORD PTR [esi+4]
	test	eax, eax
	jle	SHORT $LN2@Open_Chunk
	mov	ecx, DWORD PTR [esi+eax*8+1028]
	and	ecx, 2147483647				; 7fffffffH
	cmp	DWORD PTR [esi+eax*4+4], ecx
	je	SHORT $LN1@Open_Chunk
$LN2@Open_Chunk:

; 102  : 	{
; 103  : 		if (File->Read(&HeaderStack[StackIndex],8) == 8)

	mov	ecx, DWORD PTR [esi]
	mov	edx, DWORD PTR [ecx]
	mov	edx, DWORD PTR [edx+36]
	push	8
	lea	eax, DWORD PTR [esi+eax*8+1032]
	push	eax
	call	edx
	cmp	eax, 8
	jne	SHORT $LN1@Open_Chunk

; 104  : 		{
; 105  : 			PositionStack[StackIndex] = 0;

	mov	eax, DWORD PTR [esi+4]
	mov	DWORD PTR [esi+eax*4+8], 0

; 106  : 			StackIndex++;

	mov	eax, 1
	add	DWORD PTR [esi+4], eax
	pop	esi

; 111  : }

	ret	0
$LN1@Open_Chunk:

; 107  : 			return true;
; 108  : 		}
; 109  : 	}
; 110  : 	return false;

	xor	al, al
	pop	esi

; 111  : }

	ret	0
?Open_Chunk@ChunkLoadClass@@QAE_NXZ ENDP		; ChunkLoadClass::Open_Chunk
_TEXT	ENDS
PUBLIC	?Peek_Next_Chunk@ChunkLoadClass@@QAE_NPAI0@Z	; ChunkLoadClass::Peek_Next_Chunk
; Function compile flags: /Ogtpy
;	COMDAT ?Peek_Next_Chunk@ChunkLoadClass@@QAE_NPAI0@Z
_TEXT	SEGMENT
_h$ = -8						; size = 8
_id$ = 8						; size = 4
_length$ = 12						; size = 4
?Peek_Next_Chunk@ChunkLoadClass@@QAE_NPAI0@Z PROC	; ChunkLoadClass::Peek_Next_Chunk, COMDAT
; _this$ = ecx

; 114  : {

	sub	esp, 8
	push	esi
	mov	esi, ecx

; 115  : 	ChunkHeader h;
; 116  : 	if ((StackIndex <= 0) || (PositionStack[StackIndex-1] != (HeaderStack[StackIndex-1].ChunkSize & 0x7FFFFFFF)))

	cmp	DWORD PTR [esi+4], 0
	jle	SHORT $LN4@Peek_Next_
	mov	eax, DWORD PTR [esi+4]
	mov	ecx, DWORD PTR [esi+eax*8+1028]
	and	ecx, 2147483647				; 7fffffffH
	cmp	DWORD PTR [esi+eax*4+4], ecx
	je	SHORT $LN3@Peek_Next_
$LN4@Peek_Next_:

; 117  : 	{
; 118  : 		if (File->Read(&h,8) == 8)

	mov	ecx, DWORD PTR [esi]
	mov	edx, DWORD PTR [ecx]
	mov	edx, DWORD PTR [edx+36]
	push	8
	lea	eax, DWORD PTR _h$[esp+16]
	push	eax
	call	edx
	cmp	eax, 8
	jne	SHORT $LN3@Peek_Next_

; 119  : 		{
; 120  : 			File->Seek(-8,1);

	mov	ecx, DWORD PTR [esi]
	mov	eax, DWORD PTR [ecx]
	mov	edx, DWORD PTR [eax+40]
	push	1
	push	-8					; fffffff8H
	call	edx

; 121  : 			if (length)

	mov	eax, DWORD PTR _length$[esp+8]
	test	eax, eax
	je	SHORT $LN2@Peek_Next_

; 122  : 			{
; 123  : 				*length = h.ChunkSize;

	mov	ecx, DWORD PTR _h$[esp+16]
	mov	DWORD PTR [eax], ecx
$LN2@Peek_Next_:

; 124  : 			}
; 125  : 			if (id)

	mov	eax, DWORD PTR _id$[esp+8]
	test	eax, eax
	je	SHORT $LN1@Peek_Next_

; 126  : 			{
; 127  : 				*id = h.ChunkType & 0x7FFFFFFF;

	mov	edx, DWORD PTR _h$[esp+12]
	and	edx, 2147483647				; 7fffffffH
	mov	DWORD PTR [eax], edx
$LN1@Peek_Next_:

; 128  : 			}
; 129  : 			return true;

	mov	al, 1
	pop	esi

; 133  : }

	add	esp, 8
	ret	8
$LN3@Peek_Next_:

; 130  : 		}
; 131  : 	}
; 132  : 	return false;

	xor	al, al
	pop	esi

; 133  : }

	add	esp, 8
	ret	8
?Peek_Next_Chunk@ChunkLoadClass@@QAE_NPAI0@Z ENDP	; ChunkLoadClass::Peek_Next_Chunk
_TEXT	ENDS
PUBLIC	?Close_Chunk@ChunkLoadClass@@QAE_NXZ		; ChunkLoadClass::Close_Chunk
; Function compile flags: /Ogtpy
;	COMDAT ?Close_Chunk@ChunkLoadClass@@QAE_NXZ
_TEXT	SEGMENT
?Close_Chunk@ChunkLoadClass@@QAE_NXZ PROC		; ChunkLoadClass::Close_Chunk, COMDAT
; _this$ = ecx

; 136  : {

	push	esi
	mov	esi, ecx

; 137  : 	unsigned int x = HeaderStack[StackIndex-1].ChunkSize & 0x7FFFFFFF;

	mov	eax, DWORD PTR [esi+4]
	push	edi
	mov	edi, DWORD PTR [esi+eax*8+1028]

; 138  : 	if (PositionStack[StackIndex-1] < (x))

	mov	eax, DWORD PTR [esi+eax*4+4]
	and	edi, 2147483647				; 7fffffffH
	cmp	eax, edi
	jae	SHORT $LN2@Close_Chun

; 139  : 	{
; 140  : 		File->Seek((x) - PositionStack[StackIndex-1],1);

	mov	ecx, DWORD PTR [esi]
	mov	edx, DWORD PTR [ecx]
	push	ebx
	mov	ebx, edi
	sub	ebx, eax
	mov	eax, DWORD PTR [edx+40]
	push	1
	push	ebx
	call	eax
	pop	ebx
$LN2@Close_Chun:

; 141  : 	}
; 142  : 	StackIndex--;

	add	DWORD PTR [esi+4], -1
	mov	eax, DWORD PTR [esi+4]

; 143  : 	if (StackIndex > 0)

	test	eax, eax
	jle	SHORT $LN5@Close_Chun

; 144  : 	{
; 145  : 		PositionStack[StackIndex-1] += (x);

	add	DWORD PTR [esi+eax*4+4], edi

; 146  : 		PositionStack[StackIndex-1] += 8;

	mov	ecx, DWORD PTR [esi+4]
	add	DWORD PTR [esi+ecx*4+4], 8
	lea	eax, DWORD PTR [esi+ecx*4+4]
$LN5@Close_Chun:
	pop	edi

; 147  : 	}
; 148  : 	return true;

	mov	al, 1
	pop	esi

; 149  : }

	ret	0
?Close_Chunk@ChunkLoadClass@@QAE_NXZ ENDP		; ChunkLoadClass::Close_Chunk
_TEXT	ENDS
PUBLIC	?Cur_Chunk_ID@ChunkLoadClass@@QAEKXZ		; ChunkLoadClass::Cur_Chunk_ID
; Function compile flags: /Ogtpy
;	COMDAT ?Cur_Chunk_ID@ChunkLoadClass@@QAEKXZ
_TEXT	SEGMENT
?Cur_Chunk_ID@ChunkLoadClass@@QAEKXZ PROC		; ChunkLoadClass::Cur_Chunk_ID, COMDAT
; _this$ = ecx

; 153  : 	return HeaderStack[StackIndex-1].ChunkType;

	mov	eax, DWORD PTR [ecx+4]
	mov	eax, DWORD PTR [ecx+eax*8+1024]

; 154  : }

	ret	0
?Cur_Chunk_ID@ChunkLoadClass@@QAEKXZ ENDP		; ChunkLoadClass::Cur_Chunk_ID
_TEXT	ENDS
PUBLIC	?Cur_Chunk_Length@ChunkLoadClass@@QAEKXZ	; ChunkLoadClass::Cur_Chunk_Length
; Function compile flags: /Ogtpy
;	COMDAT ?Cur_Chunk_Length@ChunkLoadClass@@QAEKXZ
_TEXT	SEGMENT
?Cur_Chunk_Length@ChunkLoadClass@@QAEKXZ PROC		; ChunkLoadClass::Cur_Chunk_Length, COMDAT
; _this$ = ecx

; 158  : 	return HeaderStack[StackIndex-1].ChunkSize & 0x7FFFFFFF;

	mov	eax, DWORD PTR [ecx+4]
	mov	eax, DWORD PTR [ecx+eax*8+1028]
	and	eax, 2147483647				; 7fffffffH

; 159  : }

	ret	0
?Cur_Chunk_Length@ChunkLoadClass@@QAEKXZ ENDP		; ChunkLoadClass::Cur_Chunk_Length
_TEXT	ENDS
PUBLIC	?Cur_Chunk_Depth@ChunkLoadClass@@QAEHXZ		; ChunkLoadClass::Cur_Chunk_Depth
; Function compile flags: /Ogtpy
;	COMDAT ?Cur_Chunk_Depth@ChunkLoadClass@@QAEHXZ
_TEXT	SEGMENT
?Cur_Chunk_Depth@ChunkLoadClass@@QAEHXZ PROC		; ChunkLoadClass::Cur_Chunk_Depth, COMDAT
; _this$ = ecx

; 163  : 	return StackIndex;

	mov	eax, DWORD PTR [ecx+4]

; 164  : }

	ret	0
?Cur_Chunk_Depth@ChunkLoadClass@@QAEHXZ ENDP		; ChunkLoadClass::Cur_Chunk_Depth
_TEXT	ENDS
PUBLIC	?Contains_Chunks@ChunkLoadClass@@QAEHXZ		; ChunkLoadClass::Contains_Chunks
; Function compile flags: /Ogtpy
;	COMDAT ?Contains_Chunks@ChunkLoadClass@@QAEHXZ
_TEXT	SEGMENT
?Contains_Chunks@ChunkLoadClass@@QAEHXZ PROC		; ChunkLoadClass::Contains_Chunks, COMDAT
; _this$ = ecx

; 168  : 	return HeaderStack[StackIndex-1].ChunkSize & 0x80000000;

	mov	eax, DWORD PTR [ecx+4]
	mov	eax, DWORD PTR [ecx+eax*8+1028]
	and	eax, -2147483648			; 80000000H

; 169  : }

	ret	0
?Contains_Chunks@ChunkLoadClass@@QAEHXZ ENDP		; ChunkLoadClass::Contains_Chunks
_TEXT	ENDS
PUBLIC	?Close_Micro_Chunk@ChunkLoadClass@@QAE_NXZ	; ChunkLoadClass::Close_Micro_Chunk
; Function compile flags: /Ogtpy
;	COMDAT ?Close_Micro_Chunk@ChunkLoadClass@@QAE_NXZ
_TEXT	SEGMENT
?Close_Micro_Chunk@ChunkLoadClass@@QAE_NXZ PROC		; ChunkLoadClass::Close_Micro_Chunk, COMDAT
; _this$ = ecx

; 184  : {

	push	esi
	mov	esi, ecx

; 185  : 	InMicroChunk = false;
; 186  : 	if (MicroChunkPosition < 0)

	mov	eax, DWORD PTR [esi+3084]
	test	eax, eax
	mov	BYTE PTR [esi+3080], 0
	jge	SHORT $LN6@Close_Micr

; 187  : 	{
; 188  : 		File->Seek(MCHeader.ChunkSize - MicroChunkPosition,1);

	mov	ecx, DWORD PTR [esi]
	mov	edx, DWORD PTR [ecx]
	push	edi
	movzx	edi, BYTE PTR [esi+3089]
	sub	edi, eax
	mov	eax, DWORD PTR [edx+40]
	push	1
	push	edi
	call	eax

; 189  : 		if (StackIndex > 0)

	mov	eax, DWORD PTR [esi+4]
	test	eax, eax
	pop	edi
	jle	SHORT $LN6@Close_Micr

; 190  : 		{
; 191  : 			PositionStack[StackIndex-1] += MCHeader.ChunkSize - MicroChunkPosition;

	movzx	ecx, BYTE PTR [esi+3089]
	sub	ecx, DWORD PTR [esi+3084]
	add	DWORD PTR [esi+eax*4+4], ecx
$LN6@Close_Micr:

; 192  : 		}
; 193  : 	}
; 194  : 	return true;

	mov	al, 1
	pop	esi

; 195  : }

	ret	0
?Close_Micro_Chunk@ChunkLoadClass@@QAE_NXZ ENDP		; ChunkLoadClass::Close_Micro_Chunk
_TEXT	ENDS
PUBLIC	?Cur_Micro_Chunk_ID@ChunkLoadClass@@QAEKXZ	; ChunkLoadClass::Cur_Micro_Chunk_ID
; Function compile flags: /Ogtpy
;	COMDAT ?Cur_Micro_Chunk_ID@ChunkLoadClass@@QAEKXZ
_TEXT	SEGMENT
?Cur_Micro_Chunk_ID@ChunkLoadClass@@QAEKXZ PROC		; ChunkLoadClass::Cur_Micro_Chunk_ID, COMDAT
; _this$ = ecx

; 199  : 	return MCHeader.ChunkType;

	movzx	eax, BYTE PTR [ecx+3088]

; 200  : }

	ret	0
?Cur_Micro_Chunk_ID@ChunkLoadClass@@QAEKXZ ENDP		; ChunkLoadClass::Cur_Micro_Chunk_ID
_TEXT	ENDS
PUBLIC	?Cur_Micro_Chunk_Length@ChunkLoadClass@@QAEKXZ	; ChunkLoadClass::Cur_Micro_Chunk_Length
; Function compile flags: /Ogtpy
;	COMDAT ?Cur_Micro_Chunk_Length@ChunkLoadClass@@QAEKXZ
_TEXT	SEGMENT
?Cur_Micro_Chunk_Length@ChunkLoadClass@@QAEKXZ PROC	; ChunkLoadClass::Cur_Micro_Chunk_Length, COMDAT
; _this$ = ecx

; 204  : 	return MCHeader.ChunkSize;

	movzx	eax, BYTE PTR [ecx+3089]

; 205  : }

	ret	0
?Cur_Micro_Chunk_Length@ChunkLoadClass@@QAEKXZ ENDP	; ChunkLoadClass::Cur_Micro_Chunk_Length
_TEXT	ENDS
PUBLIC	?Seek@ChunkLoadClass@@QAEJK@Z			; ChunkLoadClass::Seek
; Function compile flags: /Ogtpy
;	COMDAT ?Seek@ChunkLoadClass@@QAEJK@Z
_TEXT	SEGMENT
_nbytes$ = 8						; size = 4
?Seek@ChunkLoadClass@@QAEJK@Z PROC			; ChunkLoadClass::Seek, COMDAT
; _this$ = ecx

; 208  : {

	push	esi
	mov	esi, ecx

; 209  : 	if ((PositionStack[StackIndex-1] + nbytes) <= (HeaderStack[StackIndex-1].ChunkSize & 0x7FFFFFFF))

	mov	eax, DWORD PTR [esi+4]
	mov	ecx, DWORD PTR [esi+eax*4+4]
	mov	edx, DWORD PTR [esi+eax*8+1028]
	push	edi
	mov	edi, DWORD PTR _nbytes$[esp+4]
	add	ecx, edi
	and	edx, 2147483647				; 7fffffffH
	cmp	ecx, edx
	ja	SHORT $LN2@Seek

; 210  : 	{
; 211  : 		if ((!InMicroChunk) || ((MicroChunkPosition + nbytes) <= MCHeader.ChunkSize))

	cmp	BYTE PTR [esi+3080], 0
	je	SHORT $LN3@Seek
	mov	eax, DWORD PTR [esi+3084]
	movzx	ecx, BYTE PTR [esi+3089]
	add	eax, edi
	cmp	eax, ecx
	ja	SHORT $LN2@Seek
$LN3@Seek:

; 212  : 		{
; 213  : 			int pos = File->Tell();

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

; 214  : 			int seek = File->Seek(nbytes,1);

	mov	ecx, DWORD PTR [esi]
	mov	edx, DWORD PTR [ecx]
	push	1
	mov	ebx, eax
	mov	eax, DWORD PTR [edx+40]
	push	edi
	call	eax

; 215  : 			if ((seek - pos) == (int)nbytes)

	sub	eax, ebx
	cmp	eax, edi
	pop	ebx
	jne	SHORT $LN2@Seek

; 216  : 			{
; 217  : 				PositionStack[StackIndex-1] += nbytes;

	mov	ecx, DWORD PTR [esi+4]
	add	DWORD PTR [esi+ecx*4+4], edi

; 218  : 				if (InMicroChunk)

	cmp	BYTE PTR [esi+3080], 0
	lea	eax, DWORD PTR [esi+ecx*4+4]
	je	SHORT $LN1@Seek

; 219  : 				{
; 220  : 					MicroChunkPosition += nbytes;

	add	DWORD PTR [esi+3084], edi
$LN1@Seek:

; 221  : 				}
; 222  : 				return nbytes;

	mov	eax, edi
	pop	edi
	pop	esi

; 227  : }

	ret	4
$LN2@Seek:
	pop	edi

; 223  : 			}
; 224  : 		}
; 225  : 	}
; 226  : 	return 0;

	xor	eax, eax
	pop	esi

; 227  : }

	ret	4
?Seek@ChunkLoadClass@@QAEJK@Z ENDP			; ChunkLoadClass::Seek
_TEXT	ENDS
PUBLIC	?Read@ChunkLoadClass@@QAEJPAXK@Z		; ChunkLoadClass::Read
; Function compile flags: /Ogtpy
;	COMDAT ?Read@ChunkLoadClass@@QAEJPAXK@Z
_TEXT	SEGMENT
_buf$ = 8						; size = 4
_nbytes$ = 12						; size = 4
?Read@ChunkLoadClass@@QAEJPAXK@Z PROC			; ChunkLoadClass::Read, COMDAT
; _this$ = ecx

; 230  : {

	push	esi
	mov	esi, ecx

; 231  : 	if ((PositionStack[StackIndex-1] + nbytes) <= (HeaderStack[StackIndex-1].ChunkSize & 0x7FFFFFFF))

	mov	eax, DWORD PTR [esi+4]
	mov	ecx, DWORD PTR [esi+eax*4+4]
	mov	edx, DWORD PTR [esi+eax*8+1028]
	push	edi
	mov	edi, DWORD PTR _nbytes$[esp+4]
	add	ecx, edi
	and	edx, 2147483647				; 7fffffffH
	cmp	ecx, edx
	ja	SHORT $LN2@Read

; 232  : 	{
; 233  : 		if ((!InMicroChunk) || ((MicroChunkPosition + nbytes) <= MCHeader.ChunkSize))

	cmp	BYTE PTR [esi+3080], 0
	je	SHORT $LN3@Read
	mov	eax, DWORD PTR [esi+3084]
	movzx	ecx, BYTE PTR [esi+3089]
	add	eax, edi
	cmp	eax, ecx
	ja	SHORT $LN2@Read
$LN3@Read:

; 234  : 		{
; 235  : 			int read = File->Read(buf,nbytes);

	mov	ecx, DWORD PTR [esi]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR _buf$[esp+4]
	mov	edx, DWORD PTR [edx+36]
	push	edi
	push	eax
	call	edx

; 236  : 			if (read == (int)nbytes)

	cmp	eax, edi
	jne	SHORT $LN2@Read

; 237  : 			{
; 238  : 				PositionStack[StackIndex-1] += nbytes;

	mov	eax, DWORD PTR [esi+4]
	add	DWORD PTR [esi+eax*4+4], edi

; 239  : 				if (InMicroChunk)

	cmp	BYTE PTR [esi+3080], 0
	lea	eax, DWORD PTR [esi+eax*4+4]
	je	SHORT $LN1@Read

; 240  : 				{
; 241  : 					MicroChunkPosition += nbytes;

	add	DWORD PTR [esi+3084], edi
$LN1@Read:

; 242  : 				}
; 243  : 				return nbytes;

	mov	eax, edi
	pop	edi
	pop	esi

; 248  : }

	ret	8
$LN2@Read:
	pop	edi

; 244  : 			}
; 245  : 		}
; 246  : 	}
; 247  : 	return 0;

	xor	eax, eax
	pop	esi

; 248  : }

	ret	8
?Read@ChunkLoadClass@@QAEJPAXK@Z ENDP			; ChunkLoadClass::Read
_TEXT	ENDS
PUBLIC	?Read@ChunkLoadClass@@QAEJPAUIOVector2Struct@@@Z ; ChunkLoadClass::Read
; Function compile flags: /Ogtpy
;	COMDAT ?Read@ChunkLoadClass@@QAEJPAUIOVector2Struct@@@Z
_TEXT	SEGMENT
_v$ = 8							; size = 4
?Read@ChunkLoadClass@@QAEJPAUIOVector2Struct@@@Z PROC	; ChunkLoadClass::Read, COMDAT
; _this$ = ecx

; 252  : 	return Read(v,4);

	mov	eax, DWORD PTR _v$[esp-4]
	push	4
	push	eax
	call	?Read@ChunkLoadClass@@QAEJPAXK@Z	; ChunkLoadClass::Read

; 253  : }

	ret	4
?Read@ChunkLoadClass@@QAEJPAUIOVector2Struct@@@Z ENDP	; ChunkLoadClass::Read
_TEXT	ENDS
PUBLIC	?Read@ChunkLoadClass@@QAEJPAUIOVector3Struct@@@Z ; ChunkLoadClass::Read
; Function compile flags: /Ogtpy
;	COMDAT ?Read@ChunkLoadClass@@QAEJPAUIOVector3Struct@@@Z
_TEXT	SEGMENT
_v$ = 8							; size = 4
?Read@ChunkLoadClass@@QAEJPAUIOVector3Struct@@@Z PROC	; ChunkLoadClass::Read, COMDAT
; _this$ = ecx

; 257  : 	return Read(v,4);

	mov	eax, DWORD PTR _v$[esp-4]
	push	4
	push	eax
	call	?Read@ChunkLoadClass@@QAEJPAXK@Z	; ChunkLoadClass::Read

; 258  : }

	ret	4
?Read@ChunkLoadClass@@QAEJPAUIOVector3Struct@@@Z ENDP	; ChunkLoadClass::Read
_TEXT	ENDS
PUBLIC	?Read@ChunkLoadClass@@QAEJPAUIOVector4Struct@@@Z ; ChunkLoadClass::Read
; Function compile flags: /Ogtpy
;	COMDAT ?Read@ChunkLoadClass@@QAEJPAUIOVector4Struct@@@Z
_TEXT	SEGMENT
_v$ = 8							; size = 4
?Read@ChunkLoadClass@@QAEJPAUIOVector4Struct@@@Z PROC	; ChunkLoadClass::Read, COMDAT
; _this$ = ecx

; 262  : 	return Read(v,4);

	mov	eax, DWORD PTR _v$[esp-4]
	push	4
	push	eax
	call	?Read@ChunkLoadClass@@QAEJPAXK@Z	; ChunkLoadClass::Read

; 263  : }

	ret	4
?Read@ChunkLoadClass@@QAEJPAUIOVector4Struct@@@Z ENDP	; ChunkLoadClass::Read
_TEXT	ENDS
PUBLIC	?Read@ChunkLoadClass@@QAEJPAUIOQuaternionStruct@@@Z ; ChunkLoadClass::Read
; Function compile flags: /Ogtpy
;	COMDAT ?Read@ChunkLoadClass@@QAEJPAUIOQuaternionStruct@@@Z
_TEXT	SEGMENT
_q$ = 8							; size = 4
?Read@ChunkLoadClass@@QAEJPAUIOQuaternionStruct@@@Z PROC ; ChunkLoadClass::Read, COMDAT
; _this$ = ecx

; 267  : 	return Read(q,4);

	mov	eax, DWORD PTR _q$[esp-4]
	push	4
	push	eax
	call	?Read@ChunkLoadClass@@QAEJPAXK@Z	; ChunkLoadClass::Read

; 268  : }

	ret	4
?Read@ChunkLoadClass@@QAEJPAUIOQuaternionStruct@@@Z ENDP ; ChunkLoadClass::Read
_TEXT	ENDS
PUBLIC	??0ChunkSaveClass@@QAE@PAVFileClass@@@Z		; ChunkSaveClass::ChunkSaveClass
; Function compile flags: /Ogtpy
;	COMDAT ??0ChunkSaveClass@@QAE@PAVFileClass@@@Z
_TEXT	SEGMENT
_file$ = 8						; size = 4
??0ChunkSaveClass@@QAE@PAVFileClass@@@Z PROC		; ChunkSaveClass::ChunkSaveClass, COMDAT
; _this$ = ecx

; 272  : 	File = file;

	mov	eax, DWORD PTR _file$[esp-4]
	push	ebx
	push	esi
	mov	esi, ecx

; 273  : 	StackIndex = 0;

	xor	ebx, ebx

; 274  : 	memset(HeaderStack,0,sizeof(HeaderStack));

	push	2048					; 00000800H
	lea	ecx, DWORD PTR [esi+1032]
	push	ebx
	push	ecx
	mov	DWORD PTR [esi], eax
	mov	DWORD PTR [esi+4], ebx
	call	_memset

; 275  : 	memset(PositionStack,0,sizeof(PositionStack));

	push	1024					; 00000400H
	lea	edx, DWORD PTR [esi+8]
	push	ebx
	push	edx
	call	_memset
	add	esp, 24					; 00000018H

; 276  : 	InMicroChunk = false;

	mov	BYTE PTR [esi+3080], bl

; 277  : 	MicroChunkPosition = 0;

	mov	DWORD PTR [esi+3084], ebx

; 278  : 	MCHeader.ChunkType = 0;

	mov	BYTE PTR [esi+3088], bl

; 279  : }

	mov	eax, esi
	pop	esi
	pop	ebx
	ret	4
??0ChunkSaveClass@@QAE@PAVFileClass@@@Z ENDP		; ChunkSaveClass::ChunkSaveClass
_TEXT	ENDS
PUBLIC	?Begin_Chunk@ChunkSaveClass@@QAE_NK@Z		; ChunkSaveClass::Begin_Chunk
; Function compile flags: /Ogtpy
;	COMDAT ?Begin_Chunk@ChunkSaveClass@@QAE_NK@Z
_TEXT	SEGMENT
_chunkh$ = -8						; size = 8
_id$ = 8						; size = 4
?Begin_Chunk@ChunkSaveClass@@QAE_NK@Z PROC		; ChunkSaveClass::Begin_Chunk, COMDAT
; _this$ = ecx

; 282  : {

	sub	esp, 8
	push	esi
	mov	esi, ecx

; 283  : 	ChunkHeader chunkh;
; 284  : 	chunkh.ChunkSize = 0;
; 285  : 	chunkh.ChunkType = 0;
; 286  : 	if (StackIndex > 0)

	mov	eax, DWORD PTR [esi+4]
	xor	edx, edx
	cmp	eax, edx
	mov	DWORD PTR _chunkh$[esp+16], edx
	mov	DWORD PTR _chunkh$[esp+12], edx
	mov	ecx, -2147483648			; 80000000H
	jle	SHORT $LN2@Begin_Chun

; 287  : 	{
; 288  : 		HeaderStack[StackIndex-1].ChunkSize |= 0x80000000;

	or	DWORD PTR [esi+eax*8+1028], ecx
$LN2@Begin_Chun:

; 289  : 	}
; 290  : 	chunkh.ChunkType = id;
; 291  : 	chunkh.ChunkSize &= 0x80000000;

	and	DWORD PTR _chunkh$[esp+16], ecx
	mov	eax, DWORD PTR _id$[esp+8]

; 292  : 	PositionStack[StackIndex] = File->Seek(0,1);

	mov	ecx, DWORD PTR [esi]
	mov	DWORD PTR _chunkh$[esp+12], eax
	mov	eax, DWORD PTR [ecx]
	push	1
	push	edx
	mov	edx, DWORD PTR [eax+40]
	call	edx
	mov	ecx, DWORD PTR [esi+4]
	mov	DWORD PTR [esi+ecx*4+8], eax

; 293  : 	HeaderStack[StackIndex].ChunkType = chunkh.ChunkType;

	mov	edx, DWORD PTR [esi+4]
	mov	eax, DWORD PTR _chunkh$[esp+12]
	mov	DWORD PTR [esi+edx*8+1032], eax

; 294  : 	HeaderStack[StackIndex].ChunkSize = chunkh.ChunkSize;

	mov	ecx, DWORD PTR [esi+4]
	mov	edx, DWORD PTR _chunkh$[esp+16]
	mov	DWORD PTR [esi+ecx*8+1036], edx

; 295  : 	StackIndex++;
; 296  : 	if (File->Write(&chunkh,8) == 8)

	mov	ecx, DWORD PTR [esi]
	add	DWORD PTR [esi+4], 1
	mov	eax, DWORD PTR [ecx]
	mov	eax, DWORD PTR [eax+52]
	push	8
	lea	edx, DWORD PTR _chunkh$[esp+16]
	push	edx
	call	eax
	cmp	eax, 8
	sete	al
	pop	esi

; 297  : 	{
; 298  : 		return true;
; 299  : 	}
; 300  : 	return false;
; 301  : }

	add	esp, 8
	ret	4
?Begin_Chunk@ChunkSaveClass@@QAE_NK@Z ENDP		; ChunkSaveClass::Begin_Chunk
_TEXT	ENDS
PUBLIC	?End_Chunk@ChunkSaveClass@@QAE_NXZ		; ChunkSaveClass::End_Chunk
; Function compile flags: /Ogtpy
;	COMDAT ?End_Chunk@ChunkSaveClass@@QAE_NXZ
_TEXT	SEGMENT
_chunkh$ = -8						; size = 8
?End_Chunk@ChunkSaveClass@@QAE_NXZ PROC			; ChunkSaveClass::End_Chunk, COMDAT
; _this$ = ecx

; 304  : {

	sub	esp, 8
	push	esi
	mov	esi, ecx

; 305  : 	ChunkHeader chunkh;
; 306  : 	int temp = File->Seek(0,1);

	mov	ecx, DWORD PTR [esi]
	mov	eax, DWORD PTR [ecx]
	mov	edx, DWORD PTR [eax+40]
	push	edi
	push	1
	push	0
	call	edx

; 307  : 	StackIndex--;

	add	DWORD PTR [esi+4], -1
	mov	edi, eax
	mov	eax, DWORD PTR [esi+4]

; 308  : 	chunkh.ChunkType = HeaderStack[StackIndex].ChunkType;

	mov	ecx, DWORD PTR [esi+eax*8+1032]
	mov	DWORD PTR _chunkh$[esp+16], ecx

; 309  : 	chunkh.ChunkSize = HeaderStack[StackIndex].ChunkSize;

	mov	edx, DWORD PTR [esi+eax*8+1036]

; 310  : 	File->Seek(PositionStack[StackIndex],0);

	mov	ecx, DWORD PTR [esi]
	mov	DWORD PTR _chunkh$[esp+20], edx
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [esi+eax*4+8]
	mov	edx, DWORD PTR [edx+40]
	push	0
	push	eax
	call	edx

; 311  : 	if (File->Write(&chunkh,8) == 8)

	mov	ecx, DWORD PTR [esi]
	mov	eax, DWORD PTR [ecx]
	mov	eax, DWORD PTR [eax+52]
	push	8
	lea	edx, DWORD PTR _chunkh$[esp+20]
	push	edx
	call	eax
	cmp	eax, 8
	jne	SHORT $LN3@End_Chunk

; 312  : 	{
; 313  : 		if ((StackIndex) && (StackIndex < 256))

	mov	ecx, DWORD PTR [esi+4]
	test	ecx, ecx
	je	SHORT $LN2@End_Chunk
	cmp	ecx, 256				; 00000100H
	jge	SHORT $LN2@End_Chunk

; 314  : 		{
; 315  : 			int temp2 = (HeaderStack[StackIndex-1].ChunkSize & 0x7FFFFFFF) + (chunkh.ChunkSize & 0x7FFFFFFF) + 8;

	mov	eax, DWORD PTR [esi+ecx*8+1028]
	push	ebx
	mov	ebx, DWORD PTR _chunkh$[esp+24]
	mov	edx, eax
	and	ebx, 2147483647				; 7fffffffH
	and	edx, 2147483647				; 7fffffffH

; 316  : 			if (HeaderStack[StackIndex-1].ChunkSize & 0x80000000)

	test	eax, eax
	lea	edx, DWORD PTR [edx+ebx+8]
	pop	ebx
	jns	SHORT $LN1@End_Chunk

; 317  : 			{
; 318  : 				temp2 |= 0x80000000;

	or	edx, -2147483648			; 80000000H
$LN1@End_Chunk:

; 319  : 			}
; 320  : 			HeaderStack[StackIndex-1].ChunkSize = temp2;

	mov	DWORD PTR [esi+ecx*8+1028], edx
$LN2@End_Chunk:

; 321  : 		}
; 322  : 		File->Seek(temp,0);

	mov	ecx, DWORD PTR [esi]
	mov	eax, DWORD PTR [ecx]
	mov	edx, DWORD PTR [eax+40]
	push	0
	push	edi
	call	edx
	pop	edi

; 323  : 		return true;

	mov	al, 1
	pop	esi

; 326  : }

	add	esp, 8
	ret	0
$LN3@End_Chunk:
	pop	edi

; 324  : 	}
; 325  : 	return false;

	xor	al, al
	pop	esi

; 326  : }

	add	esp, 8
	ret	0
?End_Chunk@ChunkSaveClass@@QAE_NXZ ENDP			; ChunkSaveClass::End_Chunk
_TEXT	ENDS
PUBLIC	?Cur_Chunk_Depth@ChunkSaveClass@@QAEHXZ		; ChunkSaveClass::Cur_Chunk_Depth
; Function compile flags: /Ogtpy
;	COMDAT ?Cur_Chunk_Depth@ChunkSaveClass@@QAEHXZ
_TEXT	SEGMENT
?Cur_Chunk_Depth@ChunkSaveClass@@QAEHXZ PROC		; ChunkSaveClass::Cur_Chunk_Depth, COMDAT
; _this$ = ecx

; 330  : 	return StackIndex;

	mov	eax, DWORD PTR [ecx+4]

; 331  : }

	ret	0
?Cur_Chunk_Depth@ChunkSaveClass@@QAEHXZ ENDP		; ChunkSaveClass::Cur_Chunk_Depth
_TEXT	ENDS
PUBLIC	?End_Micro_Chunk@ChunkSaveClass@@QAE_NXZ	; ChunkSaveClass::End_Micro_Chunk
; Function compile flags: /Ogtpy
;	COMDAT ?End_Micro_Chunk@ChunkSaveClass@@QAE_NXZ
_TEXT	SEGMENT
?End_Micro_Chunk@ChunkSaveClass@@QAE_NXZ PROC		; ChunkSaveClass::End_Micro_Chunk, COMDAT
; _this$ = ecx

; 347  : {

	push	esi
	mov	esi, ecx

; 348  : 	int temp = File->Seek(0,1);

	mov	ecx, DWORD PTR [esi]
	mov	eax, DWORD PTR [ecx]
	mov	edx, DWORD PTR [eax+40]
	push	edi
	push	1
	push	0
	call	edx

; 349  : 	File->Seek(MicroChunkPosition,0);

	mov	ecx, DWORD PTR [esi]
	mov	edx, DWORD PTR [esi+3084]
	mov	edi, eax
	mov	eax, DWORD PTR [ecx]
	mov	eax, DWORD PTR [eax+40]
	push	0
	push	edx
	call	eax

; 350  : 	if (File->Write(&MCHeader,2) == 2)

	mov	ecx, DWORD PTR [esi]
	mov	edx, DWORD PTR [ecx]
	mov	edx, DWORD PTR [edx+52]
	push	2
	lea	eax, DWORD PTR [esi+3088]
	push	eax
	call	edx
	cmp	eax, 2
	jne	SHORT $LN1@End_Micro_

; 351  : 	{
; 352  : 		File->Seek(temp,0);

	mov	ecx, DWORD PTR [esi]
	mov	eax, DWORD PTR [ecx]
	mov	edx, DWORD PTR [eax+40]
	push	0
	push	edi
	call	edx
	pop	edi

; 353  : 		InMicroChunk = false;

	mov	BYTE PTR [esi+3080], 0

; 354  : 		return true;

	mov	al, 1
	pop	esi

; 357  : }

	ret	0
$LN1@End_Micro_:
	pop	edi

; 355  : 	}
; 356  : 	return false;

	xor	al, al
	pop	esi

; 357  : }

	ret	0
?End_Micro_Chunk@ChunkSaveClass@@QAE_NXZ ENDP		; ChunkSaveClass::End_Micro_Chunk
_TEXT	ENDS
PUBLIC	?Write@ChunkSaveClass@@QAEKPAXK@Z		; ChunkSaveClass::Write
; Function compile flags: /Ogtpy
;	COMDAT ?Write@ChunkSaveClass@@QAEKPAXK@Z
_TEXT	SEGMENT
_buf$ = 8						; size = 4
_nbytes$ = 12						; size = 4
?Write@ChunkSaveClass@@QAEKPAXK@Z PROC			; ChunkSaveClass::Write, COMDAT
; _this$ = ecx

; 361  : 	if (File->Write(buf,nbytes) == (int)nbytes)

	mov	edx, DWORD PTR _buf$[esp-4]
	push	ebx
	mov	ebx, DWORD PTR _nbytes$[esp]
	push	esi
	mov	esi, ecx
	mov	ecx, DWORD PTR [esi]
	mov	eax, DWORD PTR [ecx]
	mov	eax, DWORD PTR [eax+52]
	push	ebx
	push	edx
	call	eax
	cmp	eax, ebx
	jne	SHORT $LN3@Write

; 362  : 	{
; 363  : 		int temp = (HeaderStack[StackIndex-1].ChunkSize & 0x7FFFFFFF) + nbytes;

	mov	ecx, DWORD PTR [esi+4]
	push	edi
	lea	edi, DWORD PTR [esi+ecx*8+1028]
	mov	ecx, DWORD PTR [edi]
	mov	eax, ecx
	and	eax, 2147483647				; 7fffffffH
	add	eax, ebx

; 364  : 		if (HeaderStack[StackIndex-1].ChunkSize & 0x80000000)

	test	ecx, ecx
	jns	SHORT $LN2@Write

; 365  : 		{
; 366  : 			temp |= 0x80000000;

	or	eax, -2147483648			; 80000000H
$LN2@Write:

; 367  : 		}
; 368  : 		HeaderStack[StackIndex-1].ChunkSize = temp;

	mov	DWORD PTR [edi], eax

; 369  : 		if (InMicroChunk)

	cmp	BYTE PTR [esi+3080], 0
	pop	edi
	je	SHORT $LN1@Write

; 370  : 		{
; 371  : 			MCHeader.ChunkSize = MCHeader.ChunkSize + (unsigned char)nbytes;

	add	BYTE PTR [esi+3089], bl
$LN1@Write:
	pop	esi

; 372  : 		}
; 373  : 		return nbytes;

	mov	eax, ebx
	pop	ebx

; 376  : }

	ret	8
$LN3@Write:
	pop	esi

; 374  : 	}
; 375  : 	return 0;

	xor	eax, eax
	pop	ebx

; 376  : }

	ret	8
?Write@ChunkSaveClass@@QAEKPAXK@Z ENDP			; ChunkSaveClass::Write
_TEXT	ENDS
PUBLIC	?Write@ChunkSaveClass@@QAEKAAUIOVector2Struct@@@Z ; ChunkSaveClass::Write
; Function compile flags: /Ogtpy
;	COMDAT ?Write@ChunkSaveClass@@QAEKAAUIOVector2Struct@@@Z
_TEXT	SEGMENT
_v$ = 8							; size = 4
?Write@ChunkSaveClass@@QAEKAAUIOVector2Struct@@@Z PROC	; ChunkSaveClass::Write, COMDAT
; _this$ = ecx

; 380  : 	return Write(&v,4);

	mov	eax, DWORD PTR _v$[esp-4]
	push	4
	push	eax
	call	?Write@ChunkSaveClass@@QAEKPAXK@Z	; ChunkSaveClass::Write

; 381  : }

	ret	4
?Write@ChunkSaveClass@@QAEKAAUIOVector2Struct@@@Z ENDP	; ChunkSaveClass::Write
_TEXT	ENDS
PUBLIC	?Write@ChunkSaveClass@@QAEKAAUIOVector3Struct@@@Z ; ChunkSaveClass::Write
; Function compile flags: /Ogtpy
;	COMDAT ?Write@ChunkSaveClass@@QAEKAAUIOVector3Struct@@@Z
_TEXT	SEGMENT
_v$ = 8							; size = 4
?Write@ChunkSaveClass@@QAEKAAUIOVector3Struct@@@Z PROC	; ChunkSaveClass::Write, COMDAT
; _this$ = ecx

; 385  : 	return Write(&v,4);

	mov	eax, DWORD PTR _v$[esp-4]
	push	4
	push	eax
	call	?Write@ChunkSaveClass@@QAEKPAXK@Z	; ChunkSaveClass::Write

; 386  : }

	ret	4
?Write@ChunkSaveClass@@QAEKAAUIOVector3Struct@@@Z ENDP	; ChunkSaveClass::Write
_TEXT	ENDS
PUBLIC	?Write@ChunkSaveClass@@QAEKAAUIOVector4Struct@@@Z ; ChunkSaveClass::Write
; Function compile flags: /Ogtpy
;	COMDAT ?Write@ChunkSaveClass@@QAEKAAUIOVector4Struct@@@Z
_TEXT	SEGMENT
_v$ = 8							; size = 4
?Write@ChunkSaveClass@@QAEKAAUIOVector4Struct@@@Z PROC	; ChunkSaveClass::Write, COMDAT
; _this$ = ecx

; 390  : 	return Write(&v,4);

	mov	eax, DWORD PTR _v$[esp-4]
	push	4
	push	eax
	call	?Write@ChunkSaveClass@@QAEKPAXK@Z	; ChunkSaveClass::Write

; 391  : }

	ret	4
?Write@ChunkSaveClass@@QAEKAAUIOVector4Struct@@@Z ENDP	; ChunkSaveClass::Write
_TEXT	ENDS
PUBLIC	?Write@ChunkSaveClass@@QAEKAAUIOQuaternionStruct@@@Z ; ChunkSaveClass::Write
; Function compile flags: /Ogtpy
;	COMDAT ?Write@ChunkSaveClass@@QAEKAAUIOQuaternionStruct@@@Z
_TEXT	SEGMENT
_q$ = 8							; size = 4
?Write@ChunkSaveClass@@QAEKAAUIOQuaternionStruct@@@Z PROC ; ChunkSaveClass::Write, COMDAT
; _this$ = ecx

; 395  : 	return Write(&q,4);

	mov	eax, DWORD PTR _q$[esp-4]
	push	4
	push	eax
	call	?Write@ChunkSaveClass@@QAEKPAXK@Z	; ChunkSaveClass::Write

; 396  : }

	ret	4
?Write@ChunkSaveClass@@QAEKAAUIOQuaternionStruct@@@Z ENDP ; ChunkSaveClass::Write
_TEXT	ENDS
PUBLIC	?Get_INI@@YAPAVINIClass@@PBD@Z			; Get_INI
; Function compile flags: /Odtpy
;	COMDAT ?Get_INI@@YAPAVINIClass@@PBD@Z
_TEXT	SEGMENT
_filename$ = 8						; size = 4
?Get_INI@@YAPAVINIClass@@PBD@Z PROC			; Get_INI, COMDAT

; 399  : IMPLEMENT_THUNK_RETURN(GetINI)

	mov	eax, DWORD PTR ?GetINI@@3PAXA		; GetINI
	jmp	eax
?Get_INI@@YAPAVINIClass@@PBD@Z ENDP			; Get_INI
_TEXT	ENDS
PUBLIC	?Release_INI@@YAXPAVINIClass@@@Z		; Release_INI
; Function compile flags: /Odtpy
;	COMDAT ?Release_INI@@YAXPAVINIClass@@@Z
_TEXT	SEGMENT
_ini$ = 8						; size = 4
?Release_INI@@YAXPAVINIClass@@@Z PROC			; Release_INI, COMDAT

; 401  : IMPLEMENT_THUNK(ReleaseINI)

	mov	eax, DWORD PTR ?ReleaseINI@@3PAXA	; ReleaseINI
	jmp	eax
?Release_INI@@YAXPAVINIClass@@@Z ENDP			; Release_INI
_TEXT	ENDS
PUBLIC	?Get_Int@INIClass@@QAEHPBD0H@Z			; INIClass::Get_Int
; Function compile flags: /Odtpy
;	COMDAT ?Get_Int@INIClass@@QAEHPBD0H@Z
_TEXT	SEGMENT
_section$ = 8						; size = 4
_entry$ = 12						; size = 4
_defaultvalue$ = 16					; size = 4
?Get_Int@INIClass@@QAEHPBD0H@Z PROC			; INIClass::Get_Int, COMDAT
; _this$ = ecx

; 403  : IMPLEMENT_THUNK_RETURN(IniClassGetInt)

	mov	eax, DWORD PTR ?IniClassGetInt@@3PAXA	; IniClassGetInt
	jmp	eax
?Get_Int@INIClass@@QAEHPBD0H@Z ENDP			; INIClass::Get_Int
_TEXT	ENDS
PUBLIC	?Get_Float@INIClass@@QAEMPBD0M@Z		; INIClass::Get_Float
; Function compile flags: /Odtpy
;	COMDAT ?Get_Float@INIClass@@QAEMPBD0M@Z
_TEXT	SEGMENT
_section$ = 8						; size = 4
_entry$ = 12						; size = 4
_defaultvalue$ = 16					; size = 4
?Get_Float@INIClass@@QAEMPBD0M@Z PROC			; INIClass::Get_Float, COMDAT
; _this$ = ecx

; 405  : IMPLEMENT_THUNK_RETURN_X(IniClassGetFloat)

	mov	eax, DWORD PTR ?IniClassGetFloat@@3PAXA	; IniClassGetFloat
	jmp	eax
?Get_Float@INIClass@@QAEMPBD0M@Z ENDP			; INIClass::Get_Float
_TEXT	ENDS
PUBLIC	?Get_Bool@INIClass@@QAE_NPBD0_N@Z		; INIClass::Get_Bool
; Function compile flags: /Odtpy
;	COMDAT ?Get_Bool@INIClass@@QAE_NPBD0_N@Z
_TEXT	SEGMENT
_section$ = 8						; size = 4
_entry$ = 12						; size = 4
_defaultvalue$ = 16					; size = 1
?Get_Bool@INIClass@@QAE_NPBD0_N@Z PROC			; INIClass::Get_Bool, COMDAT
; _this$ = ecx

; 407  : IMPLEMENT_THUNK_RETURN(IniClassGetBool)

	mov	eax, DWORD PTR ?IniClassGetBool@@3PAXA	; IniClassGetBool
	jmp	eax
?Get_Bool@INIClass@@QAE_NPBD0_N@Z ENDP			; INIClass::Get_Bool
_TEXT	ENDS
PUBLIC	?Get_String@INIClass@@QAEXPBD00PADH@Z		; INIClass::Get_String
; Function compile flags: /Odtpy
;	COMDAT ?Get_String@INIClass@@QAEXPBD00PADH@Z
_TEXT	SEGMENT
_section$ = 8						; size = 4
_entry$ = 12						; size = 4
_defaultvalue$ = 16					; size = 4
_result$ = 20						; size = 4
_size$ = 24						; size = 4
?Get_String@INIClass@@QAEXPBD00PADH@Z PROC		; INIClass::Get_String, COMDAT
; _this$ = ecx

; 409  : IMPLEMENT_THUNK(IniClassGetString)

	mov	eax, DWORD PTR ?IniClassGetString@@3PAXA ; IniClassGetString
	jmp	eax
?Get_String@INIClass@@QAEXPBD00PADH@Z ENDP		; INIClass::Get_String
_TEXT	ENDS
PUBLIC	??_C@_0BL@NICCBOAN@SOFTWARE?2Westwood?2Renegade?$AA@ ; `string'
PUBLIC	?Get_Registry_Int@@YAIPBDH@Z			; Get_Registry_Int
EXTRN	__imp__RegQueryValueExA@24:PROC
EXTRN	__imp__RegOpenKeyExA@20:PROC
;	COMDAT ??_C@_0BL@NICCBOAN@SOFTWARE?2Westwood?2Renegade?$AA@
CONST	SEGMENT
??_C@_0BL@NICCBOAN@SOFTWARE?2Westwood?2Renegade?$AA@ DB 'SOFTWARE\Westwoo'
	DB	'd\Renegade', 00H				; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?Get_Registry_Int@@YAIPBDH@Z
_TEXT	SEGMENT
_value$ = -16						; size = 4
_size$ = -12						; size = 4
_key$ = -8						; size = 4
_type$ = -4						; size = 4
_entry$ = 8						; size = 4
_defaultvalue$ = 12					; size = 4
?Get_Registry_Int@@YAIPBDH@Z PROC			; Get_Registry_Int, COMDAT

; 413  : {

	sub	esp, 16					; 00000010H

; 414  : 	unsigned int value;
; 415  : 	HKEY key;
; 416  : 	LONG error = RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Westwood\\Renegade",0,KEY_ALL_ACCESS,&key);

	lea	eax, DWORD PTR _key$[esp+16]
	push	eax
	push	983103					; 000f003fH
	push	0
	push	OFFSET ??_C@_0BL@NICCBOAN@SOFTWARE?2Westwood?2Renegade?$AA@
	push	-2147483646				; 80000002H
	call	DWORD PTR __imp__RegOpenKeyExA@20

; 417  : 	value = 0;
; 418  : 	unsigned long size = 4;
; 419  : 	unsigned long type;
; 420  : 	error = RegQueryValueEx(key,entry,0,&type,(BYTE *)&value,&size);

	lea	ecx, DWORD PTR _size$[esp+16]
	push	ecx
	mov	ecx, DWORD PTR _entry$[esp+16]
	lea	edx, DWORD PTR _value$[esp+20]
	push	edx
	mov	edx, DWORD PTR _key$[esp+24]
	lea	eax, DWORD PTR _type$[esp+24]
	push	eax
	push	0
	push	ecx
	push	edx
	mov	DWORD PTR _value$[esp+40], 0
	mov	DWORD PTR _size$[esp+40], 4
	call	DWORD PTR __imp__RegQueryValueExA@24

; 421  : 	if (error == ERROR_FILE_NOT_FOUND)

	cmp	eax, 2

; 422  : 	{
; 423  : 		value = defaultvalue;
; 424  : 	}
; 425  : 	return value;

	mov	eax, DWORD PTR _defaultvalue$[esp+12]
	je	SHORT $LN1@Get_Regist
	mov	eax, DWORD PTR _value$[esp+16]
$LN1@Get_Regist:

; 426  : }

	add	esp, 16					; 00000010H
	ret	0
?Get_Registry_Int@@YAIPBDH@Z ENDP			; Get_Registry_Int
_TEXT	ENDS
PUBLIC	?CRC_Memory@@YAKPBEKK@Z				; CRC_Memory
; Function compile flags: /Ogtpy
;	COMDAT ?CRC_Memory@@YAKPBEKK@Z
_TEXT	SEGMENT
_data$ = 8						; size = 4
_length$ = 12						; size = 4
_crc$ = 16						; size = 4
?CRC_Memory@@YAKPBEKK@Z PROC				; CRC_Memory, COMDAT

; 465  : 	if (!length)

	mov	edx, DWORD PTR _length$[esp-4]
	test	edx, edx
	jne	SHORT $LN4@CRC_Memory

; 466  : 	{
; 467  : 		return 0;

	xor	eax, eax

; 477  : 	return crc;
; 478  : }

	ret	0
$LN4@CRC_Memory:

; 468  : 	}
; 469  : 	crc = 0xFFFFFFFF;

	mov	ecx, DWORD PTR _data$[esp-4]
	push	esi
	or	eax, -1
	push	edi
$LL3@CRC_Memory:

; 470  : 	do
; 471  : 	{
; 472  : 		crc = (crc >> 8) ^ crc_table[(crc & 0xff) ^ *data];

	movzx	edi, BYTE PTR [ecx]
	mov	esi, eax
	and	esi, 255				; 000000ffH
	xor	esi, edi
	shr	eax, 8
	xor	eax, DWORD PTR ?crc_table@@3PAKA[esi*4]

; 473  : 		data++;

	add	ecx, 1

; 474  : 		length--;

	sub	edx, 1

; 475  : 	} while (length);

	jne	SHORT $LL3@CRC_Memory
	pop	edi

; 476  : 	crc ^= ~0;

	not	eax
	pop	esi

; 477  : 	return crc;
; 478  : }

	ret	0
?CRC_Memory@@YAKPBEKK@Z ENDP				; CRC_Memory
_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
$T54595 = -12						; size = 12
_this$ = 8						; size = 4
$T54601 = 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 $T54601[esp+12]
	push	eax
	lea	ecx, DWORD PTR $T54595[esp+20]
	mov	DWORD PTR $T54601[esp+16], 0
	call	??0exception@std@@QAE@ABQBD@Z		; std::exception::exception
	push	OFFSET __TI2?AVbad_alloc@std@@
	lea	ecx, DWORD PTR $T54595[esp+20]
	push	ecx
	mov	DWORD PTR $T54595[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
$T54607 = -12						; size = 12
$T54612 = 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 $T54612[esp+12]
	push	eax
	lea	ecx, DWORD PTR $T54607[esp+20]
	mov	DWORD PTR $T54612[esp+16], 0
	call	??0exception@std@@QAE@ABQBD@Z		; std::exception::exception
	push	OFFSET __TI2?AVbad_alloc@std@@
	lea	ecx, DWORD PTR $T54607[esp+20]
	push	ecx
	mov	DWORD PTR $T54607[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
; 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	??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	?Open_Micro_Chunk@ChunkLoadClass@@QAE_NXZ	; ChunkLoadClass::Open_Micro_Chunk
; Function compile flags: /Ogtpy
; File d:\source code\stgm\engine_io.cpp
;	COMDAT ?Open_Micro_Chunk@ChunkLoadClass@@QAE_NXZ
_TEXT	SEGMENT
?Open_Micro_Chunk@ChunkLoadClass@@QAE_NXZ PROC		; ChunkLoadClass::Open_Micro_Chunk, COMDAT
; _this$ = ecx

; 172  : {

	push	esi
	mov	esi, ecx

; 173  : 	int bytesread = Read(&MCHeader,2);

	push	2
	lea	eax, DWORD PTR [esi+3088]
	push	eax
	call	?Read@ChunkLoadClass@@QAEJPAXK@Z	; ChunkLoadClass::Read

; 174  : 	if (bytesread == 2)

	cmp	eax, 2
	jne	SHORT $LN1@Open_Micro

; 175  : 	{
; 176  : 		MicroChunkPosition = 0;
; 177  : 		InMicroChunk = true;

	mov	al, 1
	mov	DWORD PTR [esi+3084], 0
	mov	BYTE PTR [esi+3080], al
	pop	esi

; 181  : }

	ret	0
$LN1@Open_Micro:

; 178  : 		return true;
; 179  : 	}
; 180  : 	return false;

	xor	al, al
	pop	esi

; 181  : }

	ret	0
?Open_Micro_Chunk@ChunkLoadClass@@QAE_NXZ ENDP		; ChunkLoadClass::Open_Micro_Chunk
_TEXT	ENDS
PUBLIC	?Begin_Micro_Chunk@ChunkSaveClass@@QAE_NK@Z	; ChunkSaveClass::Begin_Micro_Chunk
; Function compile flags: /Ogtpy
;	COMDAT ?Begin_Micro_Chunk@ChunkSaveClass@@QAE_NK@Z
_TEXT	SEGMENT
_id$ = 8						; size = 4
?Begin_Micro_Chunk@ChunkSaveClass@@QAE_NK@Z PROC	; ChunkSaveClass::Begin_Micro_Chunk, COMDAT
; _this$ = ecx

; 335  : 	MCHeader.ChunkType = (unsigned char)id;

	mov	al, BYTE PTR _id$[esp-4]
	push	esi
	push	edi
	mov	esi, ecx

; 336  : 	MicroChunkPosition = File->Seek(0,1);

	mov	ecx, DWORD PTR [esi]
	lea	edi, DWORD PTR [esi+3088]
	mov	BYTE PTR [edi], al
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR [edx+40]
	push	1
	push	0
	call	eax

; 337  : 	MCHeader.ChunkSize = 0;
; 338  : 	if (Write(&MCHeader,2) == 2)

	push	2
	push	edi
	mov	ecx, esi
	mov	DWORD PTR [esi+3084], eax
	mov	BYTE PTR [esi+3089], 0
	call	?Write@ChunkSaveClass@@QAEKPAXK@Z	; ChunkSaveClass::Write
	cmp	eax, 2
	jne	SHORT $LN1@Begin_Micr
	pop	edi

; 339  : 	{
; 340  : 		InMicroChunk = true;

	mov	BYTE PTR [esi+3080], 1

; 341  : 		return true;

	mov	al, 1
	pop	esi

; 344  : }

	ret	4
$LN1@Begin_Micr:
	pop	edi

; 342  : 	}
; 343  : 	return false;

	xor	al, al
	pop	esi

; 344  : }

	ret	4
?Begin_Micro_Chunk@ChunkSaveClass@@QAE_NK@Z ENDP	; ChunkSaveClass::Begin_Micro_Chunk
_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	??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>
_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
END
