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

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

INCLUDELIB LIBCMT
INCLUDELIB OLDNAMES

PUBLIC	??_C@_0P@GHFPNOJB@bad?5allocation?$AA@		; `string'
PUBLIC	?_Value@?$_Is_swap_move@U_Swap_move_tag@std@@@std@@2_NB ; std::_Is_swap_move<std::_Swap_move_tag>::_Value
PUBLIC	?collate@?$_Locbase@H@std@@2HB			; std::_Locbase<int>::collate
PUBLIC	?ctype@?$_Locbase@H@std@@2HB			; std::_Locbase<int>::ctype
PUBLIC	?monetary@?$_Locbase@H@std@@2HB			; std::_Locbase<int>::monetary
PUBLIC	?numeric@?$_Locbase@H@std@@2HB			; std::_Locbase<int>::numeric
PUBLIC	?time@?$_Locbase@H@std@@2HB			; std::_Locbase<int>::time
PUBLIC	?messages@?$_Locbase@H@std@@2HB			; std::_Locbase<int>::messages
PUBLIC	?all@?$_Locbase@H@std@@2HB			; std::_Locbase<int>::all
PUBLIC	?none@?$_Locbase@H@std@@2HB			; std::_Locbase<int>::none
PUBLIC	?table_size@?$ctype@D@std@@2IB			; std::ctype<char>::table_size
PUBLIC	?skipws@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::skipws
PUBLIC	?unitbuf@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::unitbuf
PUBLIC	?uppercase@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::uppercase
PUBLIC	?showbase@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::showbase
PUBLIC	?showpoint@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::showpoint
PUBLIC	?showpos@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::showpos
PUBLIC	?left@?$_Iosb@H@std@@2W4_Fmtflags@12@B		; std::_Iosb<int>::left
PUBLIC	?right@?$_Iosb@H@std@@2W4_Fmtflags@12@B		; std::_Iosb<int>::right
PUBLIC	?internal@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::internal
PUBLIC	?dec@?$_Iosb@H@std@@2W4_Fmtflags@12@B		; std::_Iosb<int>::dec
PUBLIC	?oct@?$_Iosb@H@std@@2W4_Fmtflags@12@B		; std::_Iosb<int>::oct
PUBLIC	?hex@?$_Iosb@H@std@@2W4_Fmtflags@12@B		; std::_Iosb<int>::hex
PUBLIC	?scientific@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::scientific
PUBLIC	?fixed@?$_Iosb@H@std@@2W4_Fmtflags@12@B		; std::_Iosb<int>::fixed
PUBLIC	?hexfloat@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::hexfloat
PUBLIC	?boolalpha@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::boolalpha
PUBLIC	?_Stdio@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::_Stdio
PUBLIC	?adjustfield@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::adjustfield
PUBLIC	?basefield@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::basefield
PUBLIC	?floatfield@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::floatfield
PUBLIC	?goodbit@?$_Iosb@H@std@@2W4_Iostate@12@B	; std::_Iosb<int>::goodbit
PUBLIC	?eofbit@?$_Iosb@H@std@@2W4_Iostate@12@B		; std::_Iosb<int>::eofbit
PUBLIC	?failbit@?$_Iosb@H@std@@2W4_Iostate@12@B	; std::_Iosb<int>::failbit
PUBLIC	?badbit@?$_Iosb@H@std@@2W4_Iostate@12@B		; std::_Iosb<int>::badbit
PUBLIC	?_Hardfail@?$_Iosb@H@std@@2W4_Iostate@12@B	; std::_Iosb<int>::_Hardfail
PUBLIC	?in@?$_Iosb@H@std@@2W4_Openmode@12@B		; std::_Iosb<int>::in
PUBLIC	?out@?$_Iosb@H@std@@2W4_Openmode@12@B		; std::_Iosb<int>::out
PUBLIC	?ate@?$_Iosb@H@std@@2W4_Openmode@12@B		; std::_Iosb<int>::ate
PUBLIC	?app@?$_Iosb@H@std@@2W4_Openmode@12@B		; std::_Iosb<int>::app
PUBLIC	?trunc@?$_Iosb@H@std@@2W4_Openmode@12@B		; std::_Iosb<int>::trunc
PUBLIC	?_Nocreate@?$_Iosb@H@std@@2W4_Openmode@12@B	; std::_Iosb<int>::_Nocreate
PUBLIC	?_Noreplace@?$_Iosb@H@std@@2W4_Openmode@12@B	; std::_Iosb<int>::_Noreplace
PUBLIC	?binary@?$_Iosb@H@std@@2W4_Openmode@12@B	; std::_Iosb<int>::binary
PUBLIC	?beg@?$_Iosb@H@std@@2W4_Seekdir@12@B		; std::_Iosb<int>::beg
PUBLIC	?cur@?$_Iosb@H@std@@2W4_Seekdir@12@B		; std::_Iosb<int>::cur
PUBLIC	?end@?$_Iosb@H@std@@2W4_Seekdir@12@B		; std::_Iosb<int>::end
PUBLIC	?value@?$integral_constant@_N$0A@@tr1@std@@2_NB	; std::tr1::integral_constant<bool,0>::value
PUBLIC	?value@?$integral_constant@_N$00@tr1@std@@2_NB	; std::tr1::integral_constant<bool,1>::value
;	COMDAT ?value@?$integral_constant@_N$00@tr1@std@@2_NB
CONST	SEGMENT
?value@?$integral_constant@_N$00@tr1@std@@2_NB DB 01H	; std::tr1::integral_constant<bool,1>::value
CONST	ENDS
;	COMDAT ?value@?$integral_constant@_N$0A@@tr1@std@@2_NB
CONST	SEGMENT
?value@?$integral_constant@_N$0A@@tr1@std@@2_NB DB 00H	; std::tr1::integral_constant<bool,0>::value
CONST	ENDS
;	COMDAT ?end@?$_Iosb@H@std@@2W4_Seekdir@12@B
CONST	SEGMENT
?end@?$_Iosb@H@std@@2W4_Seekdir@12@B DD 02H		; std::_Iosb<int>::end
CONST	ENDS
;	COMDAT ?cur@?$_Iosb@H@std@@2W4_Seekdir@12@B
CONST	SEGMENT
?cur@?$_Iosb@H@std@@2W4_Seekdir@12@B DD 01H		; std::_Iosb<int>::cur
CONST	ENDS
;	COMDAT ?beg@?$_Iosb@H@std@@2W4_Seekdir@12@B
CONST	SEGMENT
?beg@?$_Iosb@H@std@@2W4_Seekdir@12@B DD 00H		; std::_Iosb<int>::beg
CONST	ENDS
;	COMDAT ?binary@?$_Iosb@H@std@@2W4_Openmode@12@B
CONST	SEGMENT
?binary@?$_Iosb@H@std@@2W4_Openmode@12@B DD 020H	; std::_Iosb<int>::binary
CONST	ENDS
;	COMDAT ?_Noreplace@?$_Iosb@H@std@@2W4_Openmode@12@B
CONST	SEGMENT
?_Noreplace@?$_Iosb@H@std@@2W4_Openmode@12@B DD 080H	; std::_Iosb<int>::_Noreplace
CONST	ENDS
;	COMDAT ?_Nocreate@?$_Iosb@H@std@@2W4_Openmode@12@B
CONST	SEGMENT
?_Nocreate@?$_Iosb@H@std@@2W4_Openmode@12@B DD 040H	; std::_Iosb<int>::_Nocreate
CONST	ENDS
;	COMDAT ?trunc@?$_Iosb@H@std@@2W4_Openmode@12@B
CONST	SEGMENT
?trunc@?$_Iosb@H@std@@2W4_Openmode@12@B DD 010H		; std::_Iosb<int>::trunc
CONST	ENDS
;	COMDAT ?app@?$_Iosb@H@std@@2W4_Openmode@12@B
CONST	SEGMENT
?app@?$_Iosb@H@std@@2W4_Openmode@12@B DD 08H		; std::_Iosb<int>::app
CONST	ENDS
;	COMDAT ?ate@?$_Iosb@H@std@@2W4_Openmode@12@B
CONST	SEGMENT
?ate@?$_Iosb@H@std@@2W4_Openmode@12@B DD 04H		; std::_Iosb<int>::ate
CONST	ENDS
;	COMDAT ?out@?$_Iosb@H@std@@2W4_Openmode@12@B
CONST	SEGMENT
?out@?$_Iosb@H@std@@2W4_Openmode@12@B DD 02H		; std::_Iosb<int>::out
CONST	ENDS
;	COMDAT ?in@?$_Iosb@H@std@@2W4_Openmode@12@B
CONST	SEGMENT
?in@?$_Iosb@H@std@@2W4_Openmode@12@B DD 01H		; std::_Iosb<int>::in
CONST	ENDS
;	COMDAT ?_Hardfail@?$_Iosb@H@std@@2W4_Iostate@12@B
CONST	SEGMENT
?_Hardfail@?$_Iosb@H@std@@2W4_Iostate@12@B DD 010H	; std::_Iosb<int>::_Hardfail
CONST	ENDS
;	COMDAT ?badbit@?$_Iosb@H@std@@2W4_Iostate@12@B
CONST	SEGMENT
?badbit@?$_Iosb@H@std@@2W4_Iostate@12@B DD 04H		; std::_Iosb<int>::badbit
CONST	ENDS
;	COMDAT ?failbit@?$_Iosb@H@std@@2W4_Iostate@12@B
CONST	SEGMENT
?failbit@?$_Iosb@H@std@@2W4_Iostate@12@B DD 02H		; std::_Iosb<int>::failbit
CONST	ENDS
;	COMDAT ?eofbit@?$_Iosb@H@std@@2W4_Iostate@12@B
CONST	SEGMENT
?eofbit@?$_Iosb@H@std@@2W4_Iostate@12@B DD 01H		; std::_Iosb<int>::eofbit
CONST	ENDS
;	COMDAT ?goodbit@?$_Iosb@H@std@@2W4_Iostate@12@B
CONST	SEGMENT
?goodbit@?$_Iosb@H@std@@2W4_Iostate@12@B DD 00H		; std::_Iosb<int>::goodbit
CONST	ENDS
;	COMDAT ?floatfield@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?floatfield@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 03000H	; std::_Iosb<int>::floatfield
CONST	ENDS
;	COMDAT ?basefield@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?basefield@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 0e00H	; std::_Iosb<int>::basefield
CONST	ENDS
;	COMDAT ?adjustfield@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?adjustfield@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 01c0H	; std::_Iosb<int>::adjustfield
CONST	ENDS
;	COMDAT ?_Stdio@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?_Stdio@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 08000H	; std::_Iosb<int>::_Stdio
CONST	ENDS
;	COMDAT ?boolalpha@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?boolalpha@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 04000H	; std::_Iosb<int>::boolalpha
CONST	ENDS
;	COMDAT ?hexfloat@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?hexfloat@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 03000H	; std::_Iosb<int>::hexfloat
CONST	ENDS
;	COMDAT ?fixed@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?fixed@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 02000H	; std::_Iosb<int>::fixed
CONST	ENDS
;	COMDAT ?scientific@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?scientific@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 01000H	; std::_Iosb<int>::scientific
CONST	ENDS
;	COMDAT ?hex@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?hex@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 0800H		; std::_Iosb<int>::hex
CONST	ENDS
;	COMDAT ?oct@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?oct@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 0400H		; std::_Iosb<int>::oct
CONST	ENDS
;	COMDAT ?dec@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?dec@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 0200H		; std::_Iosb<int>::dec
CONST	ENDS
;	COMDAT ?internal@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?internal@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 0100H	; std::_Iosb<int>::internal
CONST	ENDS
;	COMDAT ?right@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?right@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 080H		; std::_Iosb<int>::right
CONST	ENDS
;	COMDAT ?left@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?left@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 040H		; std::_Iosb<int>::left
CONST	ENDS
;	COMDAT ?showpos@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?showpos@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 020H	; std::_Iosb<int>::showpos
CONST	ENDS
;	COMDAT ?showpoint@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?showpoint@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 010H	; std::_Iosb<int>::showpoint
CONST	ENDS
;	COMDAT ?showbase@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?showbase@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 08H	; std::_Iosb<int>::showbase
CONST	ENDS
;	COMDAT ?uppercase@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?uppercase@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 04H	; std::_Iosb<int>::uppercase
CONST	ENDS
;	COMDAT ?unitbuf@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?unitbuf@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 02H	; std::_Iosb<int>::unitbuf
CONST	ENDS
;	COMDAT ?skipws@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?skipws@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 01H		; std::_Iosb<int>::skipws
CONST	ENDS
;	COMDAT ?table_size@?$ctype@D@std@@2IB
CONST	SEGMENT
?table_size@?$ctype@D@std@@2IB DD 0100H			; std::ctype<char>::table_size
CONST	ENDS
;	COMDAT ?none@?$_Locbase@H@std@@2HB
CONST	SEGMENT
?none@?$_Locbase@H@std@@2HB DD 00H			; std::_Locbase<int>::none
CONST	ENDS
;	COMDAT ?all@?$_Locbase@H@std@@2HB
CONST	SEGMENT
?all@?$_Locbase@H@std@@2HB DD 03fH			; std::_Locbase<int>::all
CONST	ENDS
;	COMDAT ?messages@?$_Locbase@H@std@@2HB
CONST	SEGMENT
?messages@?$_Locbase@H@std@@2HB DD 020H			; std::_Locbase<int>::messages
CONST	ENDS
;	COMDAT ?time@?$_Locbase@H@std@@2HB
CONST	SEGMENT
?time@?$_Locbase@H@std@@2HB DD 010H			; std::_Locbase<int>::time
CONST	ENDS
;	COMDAT ?numeric@?$_Locbase@H@std@@2HB
CONST	SEGMENT
?numeric@?$_Locbase@H@std@@2HB DD 08H			; std::_Locbase<int>::numeric
CONST	ENDS
;	COMDAT ?monetary@?$_Locbase@H@std@@2HB
CONST	SEGMENT
?monetary@?$_Locbase@H@std@@2HB DD 04H			; std::_Locbase<int>::monetary
CONST	ENDS
;	COMDAT ?ctype@?$_Locbase@H@std@@2HB
CONST	SEGMENT
?ctype@?$_Locbase@H@std@@2HB DD 02H			; std::_Locbase<int>::ctype
CONST	ENDS
;	COMDAT ?collate@?$_Locbase@H@std@@2HB
CONST	SEGMENT
?collate@?$_Locbase@H@std@@2HB DD 01H			; std::_Locbase<int>::collate
CONST	ENDS
_DATA	SEGMENT
__bad_alloc_Message DD FLAT:??_C@_0P@GHFPNOJB@bad?5allocation?$AA@
	ORG $+4
_CRCTable DD	00H
	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
;	COMDAT ?_Value@?$_Is_swap_move@U_Swap_move_tag@std@@@std@@2_NB
CONST	SEGMENT
?_Value@?$_Is_swap_move@U_Swap_move_tag@std@@@std@@2_NB DB 01H ; std::_Is_swap_move<std::_Swap_move_tag>::_Value
CONST	ENDS
PUBLIC	?GetCRC32@@YAKPBDI@Z				; GetCRC32
; Function compile flags: /Ogtpy
; File d:\# metin2\work in progress\source client\client\eterbase\crc32.cpp
;	COMDAT ?GetCRC32@@YAKPBDI@Z
_TEXT	SEGMENT
_buf$ = 8						; size = 4
_len$ = 12						; size = 4
?GetCRC32@@YAKPBDI@Z PROC				; GetCRC32, COMDAT

; 59   :     DWORD crc = 0xffffffff;
; 60   : 
; 61   :     if (len >= 16)

  00000	8b 54 24 08	 mov	 edx, DWORD PTR _len$[esp-4]
  00004	8b 4c 24 04	 mov	 ecx, DWORD PTR _buf$[esp-4]
  00008	83 c8 ff	 or	 eax, -1
  0000b	56		 push	 esi
  0000c	83 fa 10	 cmp	 edx, 16			; 00000010H
  0000f	0f 82 6e 01 00
	00		 jb	 $LN5@GetCRC32
$LL7@GetCRC32:

; 62   :     {
; 63   :         do
; 64   :         {
; 65   :             DO16(buf, 0);

  00015	0f be 31	 movsx	 esi, BYTE PTR [ecx]
  00018	33 f0		 xor	 esi, eax
  0001a	81 e6 ff 00 00
	00		 and	 esi, 255		; 000000ffH
  00020	c1 e8 08	 shr	 eax, 8
  00023	33 04 b5 00 00
	00 00		 xor	 eax, DWORD PTR _CRCTable[esi*4]
  0002a	0f be 71 01	 movsx	 esi, BYTE PTR [ecx+1]
  0002e	33 f0		 xor	 esi, eax
  00030	81 e6 ff 00 00
	00		 and	 esi, 255		; 000000ffH
  00036	c1 e8 08	 shr	 eax, 8
  00039	33 04 b5 00 00
	00 00		 xor	 eax, DWORD PTR _CRCTable[esi*4]
  00040	0f be 71 02	 movsx	 esi, BYTE PTR [ecx+2]
  00044	33 f0		 xor	 esi, eax
  00046	81 e6 ff 00 00
	00		 and	 esi, 255		; 000000ffH
  0004c	c1 e8 08	 shr	 eax, 8
  0004f	33 04 b5 00 00
	00 00		 xor	 eax, DWORD PTR _CRCTable[esi*4]
  00056	0f be 71 03	 movsx	 esi, BYTE PTR [ecx+3]
  0005a	33 f0		 xor	 esi, eax
  0005c	81 e6 ff 00 00
	00		 and	 esi, 255		; 000000ffH
  00062	c1 e8 08	 shr	 eax, 8
  00065	33 04 b5 00 00
	00 00		 xor	 eax, DWORD PTR _CRCTable[esi*4]
  0006c	0f be 71 04	 movsx	 esi, BYTE PTR [ecx+4]
  00070	33 f0		 xor	 esi, eax
  00072	81 e6 ff 00 00
	00		 and	 esi, 255		; 000000ffH
  00078	c1 e8 08	 shr	 eax, 8
  0007b	33 04 b5 00 00
	00 00		 xor	 eax, DWORD PTR _CRCTable[esi*4]
  00082	0f be 71 05	 movsx	 esi, BYTE PTR [ecx+5]
  00086	33 f0		 xor	 esi, eax
  00088	81 e6 ff 00 00
	00		 and	 esi, 255		; 000000ffH
  0008e	c1 e8 08	 shr	 eax, 8
  00091	33 04 b5 00 00
	00 00		 xor	 eax, DWORD PTR _CRCTable[esi*4]
  00098	0f be 71 06	 movsx	 esi, BYTE PTR [ecx+6]
  0009c	33 f0		 xor	 esi, eax
  0009e	81 e6 ff 00 00
	00		 and	 esi, 255		; 000000ffH
  000a4	c1 e8 08	 shr	 eax, 8
  000a7	33 04 b5 00 00
	00 00		 xor	 eax, DWORD PTR _CRCTable[esi*4]
  000ae	0f be 71 07	 movsx	 esi, BYTE PTR [ecx+7]
  000b2	33 f0		 xor	 esi, eax
  000b4	81 e6 ff 00 00
	00		 and	 esi, 255		; 000000ffH
  000ba	c1 e8 08	 shr	 eax, 8
  000bd	33 04 b5 00 00
	00 00		 xor	 eax, DWORD PTR _CRCTable[esi*4]
  000c4	0f be 71 08	 movsx	 esi, BYTE PTR [ecx+8]
  000c8	33 f0		 xor	 esi, eax
  000ca	81 e6 ff 00 00
	00		 and	 esi, 255		; 000000ffH
  000d0	c1 e8 08	 shr	 eax, 8
  000d3	33 04 b5 00 00
	00 00		 xor	 eax, DWORD PTR _CRCTable[esi*4]
  000da	0f be 71 09	 movsx	 esi, BYTE PTR [ecx+9]
  000de	33 f0		 xor	 esi, eax
  000e0	81 e6 ff 00 00
	00		 and	 esi, 255		; 000000ffH
  000e6	c1 e8 08	 shr	 eax, 8
  000e9	33 04 b5 00 00
	00 00		 xor	 eax, DWORD PTR _CRCTable[esi*4]
  000f0	0f be 71 0a	 movsx	 esi, BYTE PTR [ecx+10]
  000f4	33 f0		 xor	 esi, eax
  000f6	81 e6 ff 00 00
	00		 and	 esi, 255		; 000000ffH
  000fc	c1 e8 08	 shr	 eax, 8
  000ff	33 04 b5 00 00
	00 00		 xor	 eax, DWORD PTR _CRCTable[esi*4]
  00106	0f be 71 0b	 movsx	 esi, BYTE PTR [ecx+11]
  0010a	33 f0		 xor	 esi, eax
  0010c	81 e6 ff 00 00
	00		 and	 esi, 255		; 000000ffH
  00112	c1 e8 08	 shr	 eax, 8
  00115	33 04 b5 00 00
	00 00		 xor	 eax, DWORD PTR _CRCTable[esi*4]
  0011c	0f be 71 0c	 movsx	 esi, BYTE PTR [ecx+12]
  00120	33 f0		 xor	 esi, eax
  00122	81 e6 ff 00 00
	00		 and	 esi, 255		; 000000ffH
  00128	c1 e8 08	 shr	 eax, 8
  0012b	33 04 b5 00 00
	00 00		 xor	 eax, DWORD PTR _CRCTable[esi*4]
  00132	0f be 71 0d	 movsx	 esi, BYTE PTR [ecx+13]
  00136	33 f0		 xor	 esi, eax
  00138	81 e6 ff 00 00
	00		 and	 esi, 255		; 000000ffH
  0013e	c1 e8 08	 shr	 eax, 8
  00141	33 04 b5 00 00
	00 00		 xor	 eax, DWORD PTR _CRCTable[esi*4]
  00148	0f be 71 0e	 movsx	 esi, BYTE PTR [ecx+14]
  0014c	33 f0		 xor	 esi, eax
  0014e	81 e6 ff 00 00
	00		 and	 esi, 255		; 000000ffH
  00154	c1 e8 08	 shr	 eax, 8
  00157	33 04 b5 00 00
	00 00		 xor	 eax, DWORD PTR _CRCTable[esi*4]
  0015e	0f be 71 0f	 movsx	 esi, BYTE PTR [ecx+15]
  00162	33 f0		 xor	 esi, eax
  00164	81 e6 ff 00 00
	00		 and	 esi, 255		; 000000ffH
  0016a	c1 e8 08	 shr	 eax, 8
  0016d	33 04 b5 00 00
	00 00		 xor	 eax, DWORD PTR _CRCTable[esi*4]

; 66   : 
; 67   :             buf += 16;

  00174	83 c1 10	 add	 ecx, 16			; 00000010H

; 68   :             len -= 16;

  00177	83 ea 10	 sub	 edx, 16			; 00000010H

; 69   :         } while (len >= 16);

  0017a	83 fa 10	 cmp	 edx, 16			; 00000010H
  0017d	0f 83 92 fe ff
	ff		 jae	 $LL7@GetCRC32
$LN5@GetCRC32:

; 70   :     }
; 71   : 
; 72   :     if (len != 0)

  00183	85 d2		 test	 edx, edx
  00185	74 24		 je	 SHORT $LN1@GetCRC32
  00187	eb 07 8d a4 24
	00 00 00 00	 npad	 9
$LL3@GetCRC32:

; 73   :     {
; 74   :         do
; 75   :         {
; 76   :             DO1(buf, 0);

  00190	0f be 31	 movsx	 esi, BYTE PTR [ecx]
  00193	33 f0		 xor	 esi, eax
  00195	81 e6 ff 00 00
	00		 and	 esi, 255		; 000000ffH
  0019b	c1 e8 08	 shr	 eax, 8
  0019e	33 04 b5 00 00
	00 00		 xor	 eax, DWORD PTR _CRCTable[esi*4]

; 77   :             ++buf;

  001a5	41		 inc	 ecx

; 78   :             --len;

  001a6	83 ea 01	 sub	 edx, 1

; 79   :         } while (len > 0);

  001a9	75 e5		 jne	 SHORT $LL3@GetCRC32
$LN1@GetCRC32:

; 80   :     }
; 81   : 	
; 82   : 	crc ^= 0xffffffff;

  001ab	f7 d0		 not	 eax
  001ad	5e		 pop	 esi

; 83   : 	return crc;
; 84   : }

  001ae	c3		 ret	 0
?GetCRC32@@YAKPBDI@Z ENDP				; GetCRC32
_TEXT	ENDS
PUBLIC	?GetCaseCRC32@@YAKPBDI@Z			; GetCaseCRC32
; Function compile flags: /Ogtpy
;	COMDAT ?GetCaseCRC32@@YAKPBDI@Z
_TEXT	SEGMENT
_buf$ = 8						; size = 4
_len$ = 12						; size = 4
?GetCaseCRC32@@YAKPBDI@Z PROC				; GetCaseCRC32, COMDAT

; 98   :     DWORD crc = 0xffffffff;
; 99   : 
; 100  :     if (16 <= len)

  00000	8b 4c 24 04	 mov	 ecx, DWORD PTR _buf$[esp-4]
  00004	56		 push	 esi
  00005	8b 74 24 0c	 mov	 esi, DWORD PTR _len$[esp]
  00009	83 c8 ff	 or	 eax, -1
  0000c	83 fe 10	 cmp	 esi, 16			; 00000010H
  0000f	0f 82 ae 02 00
	00		 jb	 $LN5@GetCaseCRC
$LL7@GetCaseCRC:

; 101  :     {
; 102  :         do
; 103  :         {
; 104  :             DO16CI(buf, 0);

  00015	8a 11		 mov	 dl, BYTE PTR [ecx]
  00017	80 fa 61	 cmp	 dl, 97			; 00000061H
  0001a	7c 0d		 jl	 SHORT $LN11@GetCaseCRC
  0001c	80 fa 7a	 cmp	 dl, 122			; 0000007aH
  0001f	7f 08		 jg	 SHORT $LN11@GetCaseCRC
  00021	0f be d2	 movsx	 edx, dl
  00024	83 ea 20	 sub	 edx, 32			; 00000020H
  00027	eb 03		 jmp	 SHORT $LN12@GetCaseCRC
$LN11@GetCaseCRC:
  00029	0f be d2	 movsx	 edx, dl
$LN12@GetCaseCRC:
  0002c	33 d0		 xor	 edx, eax
  0002e	81 e2 ff 00 00
	00		 and	 edx, 255		; 000000ffH
  00034	c1 e8 08	 shr	 eax, 8
  00037	33 04 95 00 00
	00 00		 xor	 eax, DWORD PTR _CRCTable[edx*4]
  0003e	8a 51 01	 mov	 dl, BYTE PTR [ecx+1]
  00041	80 fa 61	 cmp	 dl, 97			; 00000061H
  00044	7c 0d		 jl	 SHORT $LN13@GetCaseCRC
  00046	80 fa 7a	 cmp	 dl, 122			; 0000007aH
  00049	7f 08		 jg	 SHORT $LN13@GetCaseCRC
  0004b	0f be d2	 movsx	 edx, dl
  0004e	83 ea 20	 sub	 edx, 32			; 00000020H
  00051	eb 03		 jmp	 SHORT $LN14@GetCaseCRC
$LN13@GetCaseCRC:
  00053	0f be d2	 movsx	 edx, dl
$LN14@GetCaseCRC:
  00056	33 d0		 xor	 edx, eax
  00058	81 e2 ff 00 00
	00		 and	 edx, 255		; 000000ffH
  0005e	c1 e8 08	 shr	 eax, 8
  00061	33 04 95 00 00
	00 00		 xor	 eax, DWORD PTR _CRCTable[edx*4]
  00068	8a 51 02	 mov	 dl, BYTE PTR [ecx+2]
  0006b	80 fa 61	 cmp	 dl, 97			; 00000061H
  0006e	7c 0d		 jl	 SHORT $LN15@GetCaseCRC
  00070	80 fa 7a	 cmp	 dl, 122			; 0000007aH
  00073	7f 08		 jg	 SHORT $LN15@GetCaseCRC
  00075	0f be d2	 movsx	 edx, dl
  00078	83 ea 20	 sub	 edx, 32			; 00000020H
  0007b	eb 03		 jmp	 SHORT $LN16@GetCaseCRC
$LN15@GetCaseCRC:
  0007d	0f be d2	 movsx	 edx, dl
$LN16@GetCaseCRC:
  00080	33 d0		 xor	 edx, eax
  00082	81 e2 ff 00 00
	00		 and	 edx, 255		; 000000ffH
  00088	c1 e8 08	 shr	 eax, 8
  0008b	33 04 95 00 00
	00 00		 xor	 eax, DWORD PTR _CRCTable[edx*4]
  00092	8a 51 03	 mov	 dl, BYTE PTR [ecx+3]
  00095	80 fa 61	 cmp	 dl, 97			; 00000061H
  00098	7c 0d		 jl	 SHORT $LN17@GetCaseCRC
  0009a	80 fa 7a	 cmp	 dl, 122			; 0000007aH
  0009d	7f 08		 jg	 SHORT $LN17@GetCaseCRC
  0009f	0f be d2	 movsx	 edx, dl
  000a2	83 ea 20	 sub	 edx, 32			; 00000020H
  000a5	eb 03		 jmp	 SHORT $LN18@GetCaseCRC
$LN17@GetCaseCRC:
  000a7	0f be d2	 movsx	 edx, dl
$LN18@GetCaseCRC:
  000aa	33 d0		 xor	 edx, eax
  000ac	81 e2 ff 00 00
	00		 and	 edx, 255		; 000000ffH
  000b2	c1 e8 08	 shr	 eax, 8
  000b5	33 04 95 00 00
	00 00		 xor	 eax, DWORD PTR _CRCTable[edx*4]
  000bc	8a 51 04	 mov	 dl, BYTE PTR [ecx+4]
  000bf	80 fa 61	 cmp	 dl, 97			; 00000061H
  000c2	7c 0d		 jl	 SHORT $LN19@GetCaseCRC
  000c4	80 fa 7a	 cmp	 dl, 122			; 0000007aH
  000c7	7f 08		 jg	 SHORT $LN19@GetCaseCRC
  000c9	0f be d2	 movsx	 edx, dl
  000cc	83 ea 20	 sub	 edx, 32			; 00000020H
  000cf	eb 03		 jmp	 SHORT $LN20@GetCaseCRC
$LN19@GetCaseCRC:
  000d1	0f be d2	 movsx	 edx, dl
$LN20@GetCaseCRC:
  000d4	33 d0		 xor	 edx, eax
  000d6	81 e2 ff 00 00
	00		 and	 edx, 255		; 000000ffH
  000dc	c1 e8 08	 shr	 eax, 8
  000df	33 04 95 00 00
	00 00		 xor	 eax, DWORD PTR _CRCTable[edx*4]
  000e6	8a 51 05	 mov	 dl, BYTE PTR [ecx+5]
  000e9	80 fa 61	 cmp	 dl, 97			; 00000061H
  000ec	7c 0d		 jl	 SHORT $LN21@GetCaseCRC
  000ee	80 fa 7a	 cmp	 dl, 122			; 0000007aH
  000f1	7f 08		 jg	 SHORT $LN21@GetCaseCRC
  000f3	0f be d2	 movsx	 edx, dl
  000f6	83 ea 20	 sub	 edx, 32			; 00000020H
  000f9	eb 03		 jmp	 SHORT $LN22@GetCaseCRC
$LN21@GetCaseCRC:
  000fb	0f be d2	 movsx	 edx, dl
$LN22@GetCaseCRC:
  000fe	33 d0		 xor	 edx, eax
  00100	81 e2 ff 00 00
	00		 and	 edx, 255		; 000000ffH
  00106	c1 e8 08	 shr	 eax, 8
  00109	33 04 95 00 00
	00 00		 xor	 eax, DWORD PTR _CRCTable[edx*4]
  00110	8a 51 06	 mov	 dl, BYTE PTR [ecx+6]
  00113	80 fa 61	 cmp	 dl, 97			; 00000061H
  00116	7c 0d		 jl	 SHORT $LN23@GetCaseCRC
  00118	80 fa 7a	 cmp	 dl, 122			; 0000007aH
  0011b	7f 08		 jg	 SHORT $LN23@GetCaseCRC
  0011d	0f be d2	 movsx	 edx, dl
  00120	83 ea 20	 sub	 edx, 32			; 00000020H
  00123	eb 03		 jmp	 SHORT $LN24@GetCaseCRC
$LN23@GetCaseCRC:
  00125	0f be d2	 movsx	 edx, dl
$LN24@GetCaseCRC:
  00128	33 d0		 xor	 edx, eax
  0012a	81 e2 ff 00 00
	00		 and	 edx, 255		; 000000ffH
  00130	c1 e8 08	 shr	 eax, 8
  00133	33 04 95 00 00
	00 00		 xor	 eax, DWORD PTR _CRCTable[edx*4]
  0013a	8a 51 07	 mov	 dl, BYTE PTR [ecx+7]
  0013d	80 fa 61	 cmp	 dl, 97			; 00000061H
  00140	7c 0d		 jl	 SHORT $LN25@GetCaseCRC
  00142	80 fa 7a	 cmp	 dl, 122			; 0000007aH
  00145	7f 08		 jg	 SHORT $LN25@GetCaseCRC
  00147	0f be d2	 movsx	 edx, dl
  0014a	83 ea 20	 sub	 edx, 32			; 00000020H
  0014d	eb 03		 jmp	 SHORT $LN26@GetCaseCRC
$LN25@GetCaseCRC:
  0014f	0f be d2	 movsx	 edx, dl
$LN26@GetCaseCRC:
  00152	33 d0		 xor	 edx, eax
  00154	81 e2 ff 00 00
	00		 and	 edx, 255		; 000000ffH
  0015a	c1 e8 08	 shr	 eax, 8
  0015d	33 04 95 00 00
	00 00		 xor	 eax, DWORD PTR _CRCTable[edx*4]
  00164	8a 51 08	 mov	 dl, BYTE PTR [ecx+8]
  00167	80 fa 61	 cmp	 dl, 97			; 00000061H
  0016a	7c 0d		 jl	 SHORT $LN27@GetCaseCRC
  0016c	80 fa 7a	 cmp	 dl, 122			; 0000007aH
  0016f	7f 08		 jg	 SHORT $LN27@GetCaseCRC
  00171	0f be d2	 movsx	 edx, dl
  00174	83 ea 20	 sub	 edx, 32			; 00000020H
  00177	eb 03		 jmp	 SHORT $LN28@GetCaseCRC
$LN27@GetCaseCRC:
  00179	0f be d2	 movsx	 edx, dl
$LN28@GetCaseCRC:
  0017c	33 d0		 xor	 edx, eax
  0017e	81 e2 ff 00 00
	00		 and	 edx, 255		; 000000ffH
  00184	c1 e8 08	 shr	 eax, 8
  00187	33 04 95 00 00
	00 00		 xor	 eax, DWORD PTR _CRCTable[edx*4]
  0018e	8a 51 09	 mov	 dl, BYTE PTR [ecx+9]
  00191	80 fa 61	 cmp	 dl, 97			; 00000061H
  00194	7c 0d		 jl	 SHORT $LN29@GetCaseCRC
  00196	80 fa 7a	 cmp	 dl, 122			; 0000007aH
  00199	7f 08		 jg	 SHORT $LN29@GetCaseCRC
  0019b	0f be d2	 movsx	 edx, dl
  0019e	83 ea 20	 sub	 edx, 32			; 00000020H
  001a1	eb 03		 jmp	 SHORT $LN30@GetCaseCRC
$LN29@GetCaseCRC:
  001a3	0f be d2	 movsx	 edx, dl
$LN30@GetCaseCRC:
  001a6	33 d0		 xor	 edx, eax
  001a8	81 e2 ff 00 00
	00		 and	 edx, 255		; 000000ffH
  001ae	c1 e8 08	 shr	 eax, 8
  001b1	33 04 95 00 00
	00 00		 xor	 eax, DWORD PTR _CRCTable[edx*4]
  001b8	8a 51 0a	 mov	 dl, BYTE PTR [ecx+10]
  001bb	80 fa 61	 cmp	 dl, 97			; 00000061H
  001be	7c 0d		 jl	 SHORT $LN31@GetCaseCRC
  001c0	80 fa 7a	 cmp	 dl, 122			; 0000007aH
  001c3	7f 08		 jg	 SHORT $LN31@GetCaseCRC
  001c5	0f be d2	 movsx	 edx, dl
  001c8	83 ea 20	 sub	 edx, 32			; 00000020H
  001cb	eb 03		 jmp	 SHORT $LN32@GetCaseCRC
$LN31@GetCaseCRC:
  001cd	0f be d2	 movsx	 edx, dl
$LN32@GetCaseCRC:
  001d0	33 d0		 xor	 edx, eax
  001d2	81 e2 ff 00 00
	00		 and	 edx, 255		; 000000ffH
  001d8	c1 e8 08	 shr	 eax, 8
  001db	33 04 95 00 00
	00 00		 xor	 eax, DWORD PTR _CRCTable[edx*4]
  001e2	8a 51 0b	 mov	 dl, BYTE PTR [ecx+11]
  001e5	80 fa 61	 cmp	 dl, 97			; 00000061H
  001e8	7c 0d		 jl	 SHORT $LN33@GetCaseCRC
  001ea	80 fa 7a	 cmp	 dl, 122			; 0000007aH
  001ed	7f 08		 jg	 SHORT $LN33@GetCaseCRC
  001ef	0f be d2	 movsx	 edx, dl
  001f2	83 ea 20	 sub	 edx, 32			; 00000020H
  001f5	eb 03		 jmp	 SHORT $LN34@GetCaseCRC
$LN33@GetCaseCRC:
  001f7	0f be d2	 movsx	 edx, dl
$LN34@GetCaseCRC:
  001fa	33 d0		 xor	 edx, eax
  001fc	81 e2 ff 00 00
	00		 and	 edx, 255		; 000000ffH
  00202	c1 e8 08	 shr	 eax, 8
  00205	33 04 95 00 00
	00 00		 xor	 eax, DWORD PTR _CRCTable[edx*4]
  0020c	8a 51 0c	 mov	 dl, BYTE PTR [ecx+12]
  0020f	80 fa 61	 cmp	 dl, 97			; 00000061H
  00212	7c 0d		 jl	 SHORT $LN35@GetCaseCRC
  00214	80 fa 7a	 cmp	 dl, 122			; 0000007aH
  00217	7f 08		 jg	 SHORT $LN35@GetCaseCRC
  00219	0f be d2	 movsx	 edx, dl
  0021c	83 ea 20	 sub	 edx, 32			; 00000020H
  0021f	eb 03		 jmp	 SHORT $LN36@GetCaseCRC
$LN35@GetCaseCRC:
  00221	0f be d2	 movsx	 edx, dl
$LN36@GetCaseCRC:
  00224	33 d0		 xor	 edx, eax
  00226	81 e2 ff 00 00
	00		 and	 edx, 255		; 000000ffH
  0022c	c1 e8 08	 shr	 eax, 8
  0022f	33 04 95 00 00
	00 00		 xor	 eax, DWORD PTR _CRCTable[edx*4]
  00236	8a 51 0d	 mov	 dl, BYTE PTR [ecx+13]
  00239	80 fa 61	 cmp	 dl, 97			; 00000061H
  0023c	7c 0d		 jl	 SHORT $LN37@GetCaseCRC
  0023e	80 fa 7a	 cmp	 dl, 122			; 0000007aH
  00241	7f 08		 jg	 SHORT $LN37@GetCaseCRC
  00243	0f be d2	 movsx	 edx, dl
  00246	83 ea 20	 sub	 edx, 32			; 00000020H
  00249	eb 03		 jmp	 SHORT $LN38@GetCaseCRC
$LN37@GetCaseCRC:
  0024b	0f be d2	 movsx	 edx, dl
$LN38@GetCaseCRC:
  0024e	33 d0		 xor	 edx, eax
  00250	81 e2 ff 00 00
	00		 and	 edx, 255		; 000000ffH
  00256	c1 e8 08	 shr	 eax, 8
  00259	33 04 95 00 00
	00 00		 xor	 eax, DWORD PTR _CRCTable[edx*4]
  00260	8a 51 0e	 mov	 dl, BYTE PTR [ecx+14]
  00263	80 fa 61	 cmp	 dl, 97			; 00000061H
  00266	7c 0d		 jl	 SHORT $LN39@GetCaseCRC
  00268	80 fa 7a	 cmp	 dl, 122			; 0000007aH
  0026b	7f 08		 jg	 SHORT $LN39@GetCaseCRC
  0026d	0f be d2	 movsx	 edx, dl
  00270	83 ea 20	 sub	 edx, 32			; 00000020H
  00273	eb 03		 jmp	 SHORT $LN40@GetCaseCRC
$LN39@GetCaseCRC:
  00275	0f be d2	 movsx	 edx, dl
$LN40@GetCaseCRC:
  00278	33 d0		 xor	 edx, eax
  0027a	81 e2 ff 00 00
	00		 and	 edx, 255		; 000000ffH
  00280	c1 e8 08	 shr	 eax, 8
  00283	33 04 95 00 00
	00 00		 xor	 eax, DWORD PTR _CRCTable[edx*4]
  0028a	8a 51 0f	 mov	 dl, BYTE PTR [ecx+15]
  0028d	80 fa 61	 cmp	 dl, 97			; 00000061H
  00290	7c 0d		 jl	 SHORT $LN41@GetCaseCRC
  00292	80 fa 7a	 cmp	 dl, 122			; 0000007aH
  00295	7f 08		 jg	 SHORT $LN41@GetCaseCRC
  00297	0f be d2	 movsx	 edx, dl
  0029a	83 ea 20	 sub	 edx, 32			; 00000020H
  0029d	eb 03		 jmp	 SHORT $LN42@GetCaseCRC
$LN41@GetCaseCRC:
  0029f	0f be d2	 movsx	 edx, dl
$LN42@GetCaseCRC:
  002a2	33 d0		 xor	 edx, eax
  002a4	81 e2 ff 00 00
	00		 and	 edx, 255		; 000000ffH
  002aa	c1 e8 08	 shr	 eax, 8
  002ad	33 04 95 00 00
	00 00		 xor	 eax, DWORD PTR _CRCTable[edx*4]

; 105  : 
; 106  :             buf += 16;
; 107  :             len -= 16;

  002b4	83 ee 10	 sub	 esi, 16			; 00000010H
  002b7	83 c1 10	 add	 ecx, 16			; 00000010H

; 108  :         } while (len >= 16);

  002ba	83 fe 10	 cmp	 esi, 16			; 00000010H
  002bd	0f 83 52 fd ff
	ff		 jae	 $LL7@GetCaseCRC
$LN5@GetCaseCRC:

; 109  :     }
; 110  : 
; 111  :     if (0 != len)

  002c3	85 f6		 test	 esi, esi
  002c5	74 2f		 je	 SHORT $LN1@GetCaseCRC
$LL3@GetCaseCRC:

; 112  :     {
; 113  :         do
; 114  :         {
; 115  :             DO1CI(buf, 0);

  002c7	8a 11		 mov	 dl, BYTE PTR [ecx]
  002c9	80 fa 61	 cmp	 dl, 97			; 00000061H
  002cc	7c 0d		 jl	 SHORT $LN43@GetCaseCRC
  002ce	80 fa 7a	 cmp	 dl, 122			; 0000007aH
  002d1	7f 08		 jg	 SHORT $LN43@GetCaseCRC
  002d3	0f be d2	 movsx	 edx, dl
  002d6	83 ea 20	 sub	 edx, 32			; 00000020H
  002d9	eb 03		 jmp	 SHORT $LN44@GetCaseCRC
$LN43@GetCaseCRC:
  002db	0f be d2	 movsx	 edx, dl
$LN44@GetCaseCRC:
  002de	33 d0		 xor	 edx, eax
  002e0	81 e2 ff 00 00
	00		 and	 edx, 255		; 000000ffH
  002e6	c1 e8 08	 shr	 eax, 8
  002e9	33 04 95 00 00
	00 00		 xor	 eax, DWORD PTR _CRCTable[edx*4]

; 116  : 
; 117  :             ++buf;

  002f0	41		 inc	 ecx

; 118  :             --len;

  002f1	83 ee 01	 sub	 esi, 1

; 119  :         } while (len > 0);

  002f4	75 d1		 jne	 SHORT $LL3@GetCaseCRC
$LN1@GetCaseCRC:

; 120  :     }
; 121  : 
; 122  :     crc ^= 0xffffffff;

  002f6	f7 d0		 not	 eax
  002f8	5e		 pop	 esi

; 123  :     return crc;
; 124  : }

  002f9	c3		 ret	 0
?GetCaseCRC32@@YAKPBDI@Z ENDP				; GetCaseCRC32
_TEXT	ENDS
PUBLIC	?GetHFILECRC32@@YAKPAX@Z			; GetHFILECRC32
EXTRN	__imp__CloseHandle@4:PROC
EXTRN	__imp__UnmapViewOfFile@4:PROC
EXTRN	__imp__MapViewOfFile@20:PROC
EXTRN	__imp__CreateFileMappingA@24:PROC
EXTRN	__imp__GetSystemInfo@4:PROC
EXTRN	__imp__GetFileSize@8:PROC
; Function compile flags: /Ogtpy
;	COMDAT ?GetHFILECRC32@@YAKPAX@Z
_TEXT	SEGMENT
_SysInfo$ = -36						; size = 36
_hFile$ = 8						; size = 4
?GetHFILECRC32@@YAKPAX@Z PROC				; GetHFILECRC32, COMDAT

; 127  : {

  00000	83 ec 24	 sub	 esp, 36			; 00000024H
  00003	53		 push	 ebx

; 128  : 	DWORD dwRetCRC32=0;
; 129  : 
; 130  : 	DWORD dwFileSize = GetFileSize(hFile, NULL);

  00004	8b 5c 24 2c	 mov	 ebx, DWORD PTR _hFile$[esp+36]
  00008	55		 push	 ebp
  00009	56		 push	 esi
  0000a	57		 push	 edi
  0000b	33 ed		 xor	 ebp, ebp
  0000d	55		 push	 ebp
  0000e	53		 push	 ebx
  0000f	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetFileSize@8
  00015	8b f0		 mov	 esi, eax

; 131  : 
; 132  : 	DWORD dataOffset=0;
; 133  : 	DWORD mapSize=dwFileSize;
; 134  : 
; 135  : 	SYSTEM_INFO SysInfo;
; 136  : 	GetSystemInfo(&SysInfo);

  00017	8d 44 24 10	 lea	 eax, DWORD PTR _SysInfo$[esp+52]
  0001b	50		 push	 eax
  0001c	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetSystemInfo@4

; 137  : 	
; 138  : 	DWORD dwSysGran = SysInfo.dwAllocationGranularity;

  00022	8b 7c 24 2c	 mov	 edi, DWORD PTR _SysInfo$[esp+80]

; 139  : 	DWORD dwFileMapStart = (dataOffset / dwSysGran) * dwSysGran;
; 140  : 	DWORD dwMapViewSize = (dataOffset % dwSysGran) + mapSize;
; 141  : 	//INT iViewDelta = dataOffset - dwFileMapStart;
; 142  : 
; 143  : 	HANDLE hFM = CreateFileMapping(hFile,				// handle
; 144  : 							  NULL,					// security
; 145  : 							  PAGE_READONLY,		// flProtect
; 146  : 							  0,					// high
; 147  : 							  dataOffset + mapSize,	// low
; 148  : 							  NULL);				// name

  00026	55		 push	 ebp
  00027	56		 push	 esi
  00028	55		 push	 ebp
  00029	6a 02		 push	 2
  0002b	55		 push	 ebp
  0002c	53		 push	 ebx
  0002d	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__CreateFileMappingA@24
  00033	8b d8		 mov	 ebx, eax

; 149  : 	if (hFM)

  00035	85 db		 test	 ebx, ebx
  00037	74 41		 je	 SHORT $LN5@GetHFILECR
  00039	33 c0		 xor	 eax, eax
  0003b	33 d2		 xor	 edx, edx
  0003d	f7 f7		 div	 edi
  0003f	0f af c7	 imul	 eax, edi
  00042	03 d6		 add	 edx, esi

; 150  : 	{	
; 151  : 		LPVOID lpMapData = MapViewOfFile(hFM,
; 152  : 									FILE_MAP_READ,
; 153  : 									0,
; 154  : 									dwFileMapStart,							
; 155  : 									dwMapViewSize);

  00044	52		 push	 edx
  00045	50		 push	 eax
  00046	55		 push	 ebp
  00047	6a 04		 push	 4
  00049	53		 push	 ebx
  0004a	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__MapViewOfFile@20
  00050	8b f8		 mov	 edi, eax

; 156  : 
; 157  : 		dwRetCRC32=GetCRC32((const char*)lpMapData, dwFileSize);

  00052	56		 push	 esi
  00053	57		 push	 edi
  00054	e8 00 00 00 00	 call	 ?GetCRC32@@YAKPBDI@Z	; GetCRC32
  00059	83 c4 08	 add	 esp, 8
  0005c	8b f0		 mov	 esi, eax

; 158  : 
; 159  : 		
; 160  : 		if (lpMapData)

  0005e	85 ff		 test	 edi, edi
  00060	74 07		 je	 SHORT $LN1@GetHFILECR

; 161  : 		{
; 162  : 
; 163  : 			UnmapViewOfFile(lpMapData);

  00062	57		 push	 edi
  00063	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__UnmapViewOfFile@4
$LN1@GetHFILECR:

; 164  : 		}
; 165  : 		
; 166  : 		CloseHandle(hFM);

  00069	53		 push	 ebx
  0006a	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__CloseHandle@4
  00070	5f		 pop	 edi

; 167  : 	}
; 168  : 
; 169  : 	return dwRetCRC32;

  00071	8b c6		 mov	 eax, esi
  00073	5e		 pop	 esi
  00074	5d		 pop	 ebp
  00075	5b		 pop	 ebx

; 170  : }

  00076	83 c4 24	 add	 esp, 36			; 00000024H
  00079	c3		 ret	 0
$LN5@GetHFILECR:
  0007a	5f		 pop	 edi
  0007b	5e		 pop	 esi

; 167  : 	}
; 168  : 
; 169  : 	return dwRetCRC32;

  0007c	8b c5		 mov	 eax, ebp
  0007e	5d		 pop	 ebp
  0007f	5b		 pop	 ebx

; 170  : }

  00080	83 c4 24	 add	 esp, 36			; 00000024H
  00083	c3		 ret	 0
?GetHFILECRC32@@YAKPAX@Z ENDP				; GetHFILECRC32
_TEXT	ENDS
PUBLIC	?GetFileCRC32@@YAKPBD@Z				; GetFileCRC32
EXTRN	__imp__CreateFileA@28:PROC
; Function compile flags: /Ogtpy
;	COMDAT ?GetFileCRC32@@YAKPBD@Z
_TEXT	SEGMENT
_c_szFileName$ = 8					; size = 4
?GetFileCRC32@@YAKPBD@Z PROC				; GetFileCRC32, COMDAT

; 174  : 	HANDLE hFile = CreateFile(c_szFileName,					// name of the file
; 175  : 						 GENERIC_READ,					// desired access
; 176  : 						 FILE_SHARE_READ,			// share mode
; 177  : 						 NULL,						// security attributes
; 178  : 						 OPEN_EXISTING,			// creation disposition
; 179  : 						 FILE_ATTRIBUTE_NORMAL,		// flags and attr
; 180  : 						 NULL);						// template file

  00000	8b 44 24 04	 mov	 eax, DWORD PTR _c_szFileName$[esp-4]
  00004	56		 push	 esi
  00005	6a 00		 push	 0
  00007	68 80 00 00 00	 push	 128			; 00000080H
  0000c	6a 03		 push	 3
  0000e	6a 00		 push	 0
  00010	6a 01		 push	 1
  00012	68 00 00 00 80	 push	 -2147483648		; 80000000H
  00017	50		 push	 eax
  00018	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__CreateFileA@28
  0001e	8b f0		 mov	 esi, eax

; 181  : 
; 182  : 	if (INVALID_HANDLE_VALUE == hFile)

  00020	83 fe ff	 cmp	 esi, -1
  00023	75 04		 jne	 SHORT $LN1@GetFileCRC

; 183  : 		return 0;

  00025	33 c0		 xor	 eax, eax
  00027	5e		 pop	 esi

; 191  : }

  00028	c3		 ret	 0
$LN1@GetFileCRC:
  00029	57		 push	 edi

; 184  : 
; 185  : 	
; 186  : 	DWORD dwRetCRC32=GetHFILECRC32(hFile);

  0002a	56		 push	 esi
  0002b	e8 00 00 00 00	 call	 ?GetHFILECRC32@@YAKPAX@Z ; GetHFILECRC32
  00030	83 c4 04	 add	 esp, 4

; 187  : 	
; 188  : 	CloseHandle(hFile);

  00033	56		 push	 esi
  00034	8b f8		 mov	 edi, eax
  00036	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__CloseHandle@4

; 189  : 
; 190  : 	return dwRetCRC32;

  0003c	8b c7		 mov	 eax, edi
  0003e	5f		 pop	 edi
  0003f	5e		 pop	 esi

; 191  : }

  00040	c3		 ret	 0
?GetFileCRC32@@YAKPBD@Z ENDP				; GetFileCRC32
_TEXT	ENDS
PUBLIC	?GetFileSize@@YAKPBD@Z				; GetFileSize
; Function compile flags: /Ogtpy
;	COMDAT ?GetFileSize@@YAKPBD@Z
_TEXT	SEGMENT
_c_szFileName$ = 8					; size = 4
?GetFileSize@@YAKPBD@Z PROC				; GetFileSize, COMDAT

; 195  : 	HANDLE hFile = CreateFile(c_szFileName,					// name of the file
; 196  : 						 GENERIC_READ,					// desired access
; 197  : 						 FILE_SHARE_READ,			// share mode
; 198  : 						 NULL,						// security attributes
; 199  : 						 OPEN_EXISTING,			// creation disposition
; 200  : 						 FILE_ATTRIBUTE_NORMAL,		// flags and attr
; 201  : 						 NULL);						// template file

  00000	8b 44 24 04	 mov	 eax, DWORD PTR _c_szFileName$[esp-4]
  00004	56		 push	 esi
  00005	6a 00		 push	 0
  00007	68 80 00 00 00	 push	 128			; 00000080H
  0000c	6a 03		 push	 3
  0000e	6a 00		 push	 0
  00010	6a 01		 push	 1
  00012	68 00 00 00 80	 push	 -2147483648		; 80000000H
  00017	50		 push	 eax
  00018	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__CreateFileA@28
  0001e	8b f0		 mov	 esi, eax

; 202  : 
; 203  : 	if (INVALID_HANDLE_VALUE == hFile)

  00020	83 fe ff	 cmp	 esi, -1
  00023	75 04		 jne	 SHORT $LN1@GetFileSiz

; 204  : 		return 0;

  00025	33 c0		 xor	 eax, eax
  00027	5e		 pop	 esi

; 211  : }

  00028	c3		 ret	 0
$LN1@GetFileSiz:
  00029	57		 push	 edi

; 205  : 
; 206  : 	DWORD dwSize = GetFileSize(hFile, NULL);

  0002a	6a 00		 push	 0
  0002c	56		 push	 esi
  0002d	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetFileSize@8

; 207  : 
; 208  : 	CloseHandle(hFile);

  00033	56		 push	 esi
  00034	8b f8		 mov	 edi, eax
  00036	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__CloseHandle@4

; 209  : 
; 210  : 	return dwSize;

  0003c	8b c7		 mov	 eax, edi
  0003e	5f		 pop	 edi
  0003f	5e		 pop	 esi

; 211  : }

  00040	c3		 ret	 0
?GetFileSize@@YAKPBD@Z ENDP				; GetFileSize
_TEXT	ENDS
END
