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

	TITLE	d:\# METIN2\work in progress\source client\Client\EterBase\FileDir.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@
_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	?strchr@@YAPADPADH@Z				; strchr
EXTRN	_strchr:PROC
; Function compile flags: /Ogtpy
; File c:\program files (x86)\microsoft visual studio 9.0\vc\include\string.h
;	COMDAT ?strchr@@YAPADPADH@Z
_TEXT	SEGMENT
__Str$ = 8						; size = 4
__Ch$ = 12						; size = 4
?strchr@@YAPADPADH@Z PROC				; strchr, COMDAT

; 184  : 	{ return (char*)strchr((const char*)_Str, _Ch); }

  00000	e9 00 00 00 00	 jmp	 _strchr
?strchr@@YAPADPADH@Z ENDP				; strchr
_TEXT	ENDS
PUBLIC	?assign@?$char_traits@D@std@@SAXAADABD@Z	; std::char_traits<char>::assign
; Function compile flags: /Ogtpy
; File c:\program files (x86)\microsoft visual studio 9.0\vc\include\iosfwd
;	COMDAT ?assign@?$char_traits@D@std@@SAXAADABD@Z
_TEXT	SEGMENT
__Left$ = 8						; size = 4
__Right$ = 12						; size = 4
?assign@?$char_traits@D@std@@SAXAADABD@Z PROC		; std::char_traits<char>::assign, COMDAT

; 425  : 		_Left = _Right;

  00000	8b 44 24 08	 mov	 eax, DWORD PTR __Right$[esp-4]
  00004	8a 08		 mov	 cl, BYTE PTR [eax]
  00006	8b 54 24 04	 mov	 edx, DWORD PTR __Left$[esp-4]
  0000a	88 0a		 mov	 BYTE PTR [edx], cl

; 426  : 		}

  0000c	c3		 ret	 0
?assign@?$char_traits@D@std@@SAXAADABD@Z ENDP		; std::char_traits<char>::assign
_TEXT	ENDS
PUBLIC	?compare@?$char_traits@D@std@@SAHPBD0I@Z	; std::char_traits<char>::compare
; Function compile flags: /Ogtpy
;	COMDAT ?compare@?$char_traits@D@std@@SAHPBD0I@Z
_TEXT	SEGMENT
__First1$ = 8						; size = 4
__First2$ = 12						; size = 4
__Count$ = 16						; size = 4
?compare@?$char_traits@D@std@@SAHPBD0I@Z PROC		; std::char_traits<char>::compare, COMDAT

; 441  : //		_DEBUG_POINTER(_First1);
; 442  : //		_DEBUG_POINTER(_First2);
; 443  : 		return (::memcmp(_First1, _First2, _Count));

  00000	8b 4c 24 08	 mov	 ecx, DWORD PTR __First2$[esp-4]
  00004	8b 54 24 04	 mov	 edx, DWORD PTR __First1$[esp-4]
  00008	56		 push	 esi
  00009	8b 74 24 10	 mov	 esi, DWORD PTR __Count$[esp]
  0000d	57		 push	 edi
  0000e	83 fe 04	 cmp	 esi, 4
  00011	72 14		 jb	 SHORT $LN11@compare
$LL4@compare:
  00013	8b 02		 mov	 eax, DWORD PTR [edx]
  00015	3b 01		 cmp	 eax, DWORD PTR [ecx]
  00017	75 12		 jne	 SHORT $LN5@compare
  00019	83 ee 04	 sub	 esi, 4
  0001c	83 c1 04	 add	 ecx, 4
  0001f	83 c2 04	 add	 edx, 4
  00022	83 fe 04	 cmp	 esi, 4
  00025	73 ec		 jae	 SHORT $LL4@compare
$LN11@compare:
  00027	85 f6		 test	 esi, esi
  00029	74 44		 je	 SHORT $LN6@compare
$LN5@compare:
  0002b	0f b6 02	 movzx	 eax, BYTE PTR [edx]
  0002e	0f b6 39	 movzx	 edi, BYTE PTR [ecx]
  00031	2b c7		 sub	 eax, edi
  00033	75 31		 jne	 SHORT $LN7@compare
  00035	83 fe 01	 cmp	 esi, 1
  00038	76 35		 jbe	 SHORT $LN6@compare
  0003a	0f b6 42 01	 movzx	 eax, BYTE PTR [edx+1]
  0003e	0f b6 79 01	 movzx	 edi, BYTE PTR [ecx+1]
  00042	2b c7		 sub	 eax, edi
  00044	75 20		 jne	 SHORT $LN7@compare
  00046	83 fe 02	 cmp	 esi, 2
  00049	76 24		 jbe	 SHORT $LN6@compare
  0004b	0f b6 42 02	 movzx	 eax, BYTE PTR [edx+2]
  0004f	0f b6 79 02	 movzx	 edi, BYTE PTR [ecx+2]
  00053	2b c7		 sub	 eax, edi
  00055	75 0f		 jne	 SHORT $LN7@compare
  00057	83 fe 03	 cmp	 esi, 3
  0005a	76 13		 jbe	 SHORT $LN6@compare
  0005c	0f b6 42 03	 movzx	 eax, BYTE PTR [edx+3]
  00060	0f b6 49 03	 movzx	 ecx, BYTE PTR [ecx+3]
  00064	2b c1		 sub	 eax, ecx
$LN7@compare:
  00066	c1 f8 1f	 sar	 eax, 31			; 0000001fH
  00069	5f		 pop	 edi
  0006a	83 c8 01	 or	 eax, 1
  0006d	5e		 pop	 esi

; 444  : 		}

  0006e	c3		 ret	 0
$LN6@compare:
  0006f	5f		 pop	 edi

; 441  : //		_DEBUG_POINTER(_First1);
; 442  : //		_DEBUG_POINTER(_First2);
; 443  : 		return (::memcmp(_First1, _First2, _Count));

  00070	33 c0		 xor	 eax, eax
  00072	5e		 pop	 esi

; 444  : 		}

  00073	c3		 ret	 0
?compare@?$char_traits@D@std@@SAHPBD0I@Z ENDP		; std::char_traits<char>::compare
_TEXT	ENDS
PUBLIC	?length@?$char_traits@D@std@@SAIPBD@Z		; std::char_traits<char>::length
; Function compile flags: /Ogtpy
;	COMDAT ?length@?$char_traits@D@std@@SAIPBD@Z
_TEXT	SEGMENT
__First$ = 8						; size = 4
?length@?$char_traits@D@std@@SAIPBD@Z PROC		; std::char_traits<char>::length, COMDAT

; 448  : //		_DEBUG_POINTER(_First);
; 449  : 		return (::strlen(_First));

  00000	8b 44 24 04	 mov	 eax, DWORD PTR __First$[esp-4]
  00004	8d 50 01	 lea	 edx, DWORD PTR [eax+1]
$LL3@length:
  00007	8a 08		 mov	 cl, BYTE PTR [eax]
  00009	40		 inc	 eax
  0000a	84 c9		 test	 cl, cl
  0000c	75 f9		 jne	 SHORT $LL3@length
  0000e	2b c2		 sub	 eax, edx

; 450  : 		}

  00010	c3		 ret	 0
?length@?$char_traits@D@std@@SAIPBD@Z ENDP		; std::char_traits<char>::length
_TEXT	ENDS
PUBLIC	?_Copy_s@?$char_traits@D@std@@SAPADPADIPBDI@Z	; std::char_traits<char>::_Copy_s
EXTRN	_memcpy_s:PROC
; Function compile flags: /Ogtpy
;	COMDAT ?_Copy_s@?$char_traits@D@std@@SAPADPADIPBDI@Z
_TEXT	SEGMENT
__First1$ = 8						; size = 4
__Size_in_bytes$ = 12					; size = 4
__First2$ = 16						; size = 4
__Count$ = 20						; size = 4
?_Copy_s@?$char_traits@D@std@@SAPADPADIPBDI@Z PROC	; std::char_traits<char>::_Copy_s, COMDAT

; 463  : //		_DEBUG_POINTER(_First1);
; 464  : //		_DEBUG_POINTER(_First2);
; 465  : 		_CRT_SECURE_MEMCPY(_First1, _Size_in_bytes, _First2, _Count);

  00000	8b 44 24 10	 mov	 eax, DWORD PTR __Count$[esp-4]
  00004	8b 4c 24 0c	 mov	 ecx, DWORD PTR __First2$[esp-4]
  00008	8b 54 24 08	 mov	 edx, DWORD PTR __Size_in_bytes$[esp-4]
  0000c	56		 push	 esi
  0000d	8b 74 24 08	 mov	 esi, DWORD PTR __First1$[esp]
  00011	50		 push	 eax
  00012	51		 push	 ecx
  00013	52		 push	 edx
  00014	56		 push	 esi
  00015	e8 00 00 00 00	 call	 _memcpy_s
  0001a	83 c4 10	 add	 esp, 16			; 00000010H

; 466  : 		return _First1;

  0001d	8b c6		 mov	 eax, esi
  0001f	5e		 pop	 esi

; 467  : 		}

  00020	c3		 ret	 0
?_Copy_s@?$char_traits@D@std@@SAPADPADIPBDI@Z ENDP	; std::char_traits<char>::_Copy_s
_TEXT	ENDS
PUBLIC	?find@?$char_traits@D@std@@SAPBDPBDIABD@Z	; std::char_traits<char>::find
EXTRN	_memchr:PROC
; Function compile flags: /Ogtpy
;	COMDAT ?find@?$char_traits@D@std@@SAPBDPBDIABD@Z
_TEXT	SEGMENT
__First$ = 8						; size = 4
__Count$ = 12						; size = 4
__Ch$ = 16						; size = 4
?find@?$char_traits@D@std@@SAPBDPBDIABD@Z PROC		; std::char_traits<char>::find, COMDAT

; 472  : //		_DEBUG_POINTER(_First);
; 473  : 		return ((const _Elem *)::memchr(_First, _Ch, _Count));

  00000	8b 4c 24 0c	 mov	 ecx, DWORD PTR __Ch$[esp-4]
  00004	8b 44 24 08	 mov	 eax, DWORD PTR __Count$[esp-4]
  00008	0f be 11	 movsx	 edx, BYTE PTR [ecx]
  0000b	50		 push	 eax
  0000c	8b 44 24 08	 mov	 eax, DWORD PTR __First$[esp]
  00010	52		 push	 edx
  00011	50		 push	 eax
  00012	e8 00 00 00 00	 call	 _memchr
  00017	83 c4 0c	 add	 esp, 12			; 0000000cH

; 474  : 		}

  0001a	c3		 ret	 0
?find@?$char_traits@D@std@@SAPBDPBDIABD@Z ENDP		; std::char_traits<char>::find
_TEXT	ENDS
PUBLIC	?_Move_s@?$char_traits@D@std@@SAPADPADIPBDI@Z	; std::char_traits<char>::_Move_s
EXTRN	_memmove_s:PROC
; Function compile flags: /Ogtpy
;	COMDAT ?_Move_s@?$char_traits@D@std@@SAPADPADIPBDI@Z
_TEXT	SEGMENT
__First1$ = 8						; size = 4
__Size_in_bytes$ = 12					; size = 4
__First2$ = 16						; size = 4
__Count$ = 20						; size = 4
?_Move_s@?$char_traits@D@std@@SAPADPADIPBDI@Z PROC	; std::char_traits<char>::_Move_s, COMDAT

; 487  : //		_DEBUG_POINTER(_First1);
; 488  : //		_DEBUG_POINTER(_First2);
; 489  : 		_CRT_SECURE_MEMMOVE(_First1, _Size_in_bytes, _First2, _Count);

  00000	8b 44 24 10	 mov	 eax, DWORD PTR __Count$[esp-4]
  00004	8b 4c 24 0c	 mov	 ecx, DWORD PTR __First2$[esp-4]
  00008	8b 54 24 08	 mov	 edx, DWORD PTR __Size_in_bytes$[esp-4]
  0000c	56		 push	 esi
  0000d	8b 74 24 08	 mov	 esi, DWORD PTR __First1$[esp]
  00011	50		 push	 eax
  00012	51		 push	 ecx
  00013	52		 push	 edx
  00014	56		 push	 esi
  00015	e8 00 00 00 00	 call	 _memmove_s
  0001a	83 c4 10	 add	 esp, 16			; 00000010H

; 490  : 		return _First1;

  0001d	8b c6		 mov	 eax, esi
  0001f	5e		 pop	 esi

; 491  : 		}

  00020	c3		 ret	 0
?_Move_s@?$char_traits@D@std@@SAPADPADIPBDI@Z ENDP	; std::char_traits<char>::_Move_s
_TEXT	ENDS
PUBLIC	?assign@?$char_traits@D@std@@SAPADPADID@Z	; std::char_traits<char>::assign
EXTRN	_memset:PROC
; Function compile flags: /Ogtpy
;	COMDAT ?assign@?$char_traits@D@std@@SAPADPADID@Z
_TEXT	SEGMENT
__First$ = 8						; size = 4
__Count$ = 12						; size = 4
__Ch$ = 16						; size = 1
?assign@?$char_traits@D@std@@SAPADPADID@Z PROC		; std::char_traits<char>::assign, COMDAT

; 495  : //		_DEBUG_POINTER(_First);
; 496  : 		return ((_Elem *)::memset(_First, _Ch, _Count));

  00000	8b 44 24 08	 mov	 eax, DWORD PTR __Count$[esp-4]
  00004	0f be 4c 24 0c	 movsx	 ecx, BYTE PTR __Ch$[esp-4]
  00009	8b 54 24 04	 mov	 edx, DWORD PTR __First$[esp-4]
  0000d	50		 push	 eax
  0000e	51		 push	 ecx
  0000f	52		 push	 edx
  00010	e8 00 00 00 00	 call	 _memset
  00015	83 c4 0c	 add	 esp, 12			; 0000000cH

; 497  : 		}

  00018	c3		 ret	 0
?assign@?$char_traits@D@std@@SAPADPADID@Z ENDP		; std::char_traits<char>::assign
_TEXT	ENDS
PUBLIC	??_7bad_alloc@std@@6B@				; std::bad_alloc::`vftable'
PUBLIC	??0bad_alloc@std@@QAE@PBD@Z			; std::bad_alloc::bad_alloc
PUBLIC	??_R4bad_alloc@std@@6B@				; std::bad_alloc::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVbad_alloc@std@@@8			; std::bad_alloc `RTTI Type Descriptor'
PUBLIC	??_R3bad_alloc@std@@8				; std::bad_alloc::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2bad_alloc@std@@8				; std::bad_alloc::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@bad_alloc@std@@8			; std::bad_alloc::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	??_R1A@?0A@EA@exception@std@@8			; std::exception::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	??_R0?AVexception@std@@@8			; std::exception `RTTI Type Descriptor'
PUBLIC	??_R3exception@std@@8				; std::exception::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2exception@std@@8				; std::exception::`RTTI Base Class Array'
EXTRN	??0exception@std@@QAE@ABQBD@Z:PROC		; std::exception::exception
EXTRN	??_7type_info@@6B@:QWORD			; type_info::`vftable'
EXTRN	??_Ebad_alloc@std@@UAEPAXI@Z:PROC		; std::bad_alloc::`vector deleting destructor'
EXTRN	?what@exception@std@@UBEPBDXZ:PROC		; std::exception::what
;	COMDAT ??_R2exception@std@@8
; File c:\program files (x86)\microsoft visual studio 9.0\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

  00000	56		 push	 esi
  00001	8d 44 24 08	 lea	 eax, DWORD PTR __Message$[esp]
  00005	50		 push	 eax
  00006	8b f1		 mov	 esi, ecx
  00008	e8 00 00 00 00	 call	 ??0exception@std@@QAE@ABQBD@Z ; std::exception::exception
  0000d	c7 06 00 00 00
	00		 mov	 DWORD PTR [esi], OFFSET ??_7bad_alloc@std@@6B@

; 372  : 		}

  00013	8b c6		 mov	 eax, esi
  00015	5e		 pop	 esi
  00016	c2 04 00	 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

  00000	c7 01 00 00 00
	00		 mov	 DWORD PTR [ecx], OFFSET ??_7bad_alloc@std@@6B@

; 381  : 		}

  00006	e9 00 00 00 00	 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
  00000	56		 push	 esi
  00001	8b f1		 mov	 esi, ecx
  00003	c7 06 00 00 00
	00		 mov	 DWORD PTR [esi], OFFSET ??_7bad_alloc@std@@6B@
  00009	e8 00 00 00 00	 call	 ??1exception@std@@UAE@XZ ; std::exception::~exception
  0000e	f6 44 24 08 01	 test	 BYTE PTR ___flags$[esp], 1
  00013	74 09		 je	 SHORT $LN6@scalar
  00015	56		 push	 esi
  00016	e8 00 00 00 00	 call	 ??3@YAXPAX@Z		; operator delete
  0001b	83 c4 04	 add	 esp, 4
$LN6@scalar:
  0001e	8b c6		 mov	 eax, esi
  00020	5e		 pop	 esi
  00021	c2 04 00	 ret	 4
??_Gbad_alloc@std@@UAEPAXI@Z ENDP			; std::bad_alloc::`scalar deleting destructor'
_TEXT	ENDS
PUBLIC	?IsFolder@CDir@@IAE_NXZ				; CDir::IsFolder
; Function compile flags: /Ogtpy
; File d:\# metin2\work in progress\source client\client\eterbase\filedir.cpp
;	COMDAT ?IsFolder@CDir@@IAE_NXZ
_TEXT	SEGMENT
?IsFolder@CDir@@IAE_NXZ PROC				; CDir::IsFolder, COMDAT
; _this$ = ecx

; 95   : 	if (m_wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)

  00000	8a 41 04	 mov	 al, BYTE PTR [ecx+4]
  00003	c0 e8 04	 shr	 al, 4
  00006	24 01		 and	 al, 1

; 96   : 		return true;
; 97   : 	
; 98   : 	return false;
; 99   : }		

  00008	c3		 ret	 0
?IsFolder@CDir@@IAE_NXZ ENDP				; CDir::IsFolder
_TEXT	ENDS
PUBLIC	?Initialize@CDir@@IAEXXZ			; CDir::Initialize
; Function compile flags: /Ogtpy
;	COMDAT ?Initialize@CDir@@IAEXXZ
_TEXT	SEGMENT
?Initialize@CDir@@IAEXXZ PROC				; CDir::Initialize, COMDAT
; _this$ = ecx

; 102  : {

  00000	56		 push	 esi
  00001	8b f1		 mov	 esi, ecx

; 103  : 	memset(&m_wfd, 0, sizeof(m_wfd));

  00003	68 40 01 00 00	 push	 320			; 00000140H
  00008	8d 46 04	 lea	 eax, DWORD PTR [esi+4]
  0000b	6a 00		 push	 0
  0000d	50		 push	 eax
  0000e	e8 00 00 00 00	 call	 _memset
  00013	83 c4 0c	 add	 esp, 12			; 0000000cH

; 104  : 	m_hFind = NULL;				

  00016	c7 86 44 01 00
	00 00 00 00 00	 mov	 DWORD PTR [esi+324], 0
  00020	5e		 pop	 esi

; 105  : }

  00021	c3		 ret	 0
?Initialize@CDir@@IAEXXZ ENDP				; CDir::Initialize
_TEXT	ENDS
PUBLIC	?length@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::length
; Function compile flags: /Ogtpy
; File c:\program files (x86)\microsoft visual studio 9.0\vc\include\xstring
;	COMDAT ?length@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ
_TEXT	SEGMENT
?length@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ PROC ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::length, COMDAT
; _this$ = ecx

; 1661 : 		return (_Mysize);

  00000	8b 41 14	 mov	 eax, DWORD PTR [ecx+20]

; 1662 : 		}

  00003	c3		 ret	 0
?length@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ ENDP ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::length
_TEXT	ENDS
PUBLIC	?size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::size
; Function compile flags: /Ogtpy
;	COMDAT ?size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ
_TEXT	SEGMENT
?size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ PROC ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::size, COMDAT
; _this$ = ecx

; 1666 : 		return (_Mysize);

  00000	8b 41 14	 mov	 eax, DWORD PTR [ecx+20]

; 1667 : 		}

  00003	c3		 ret	 0
?size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ ENDP ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::size
_TEXT	ENDS
PUBLIC	?_Myptr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEPADXZ ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Myptr
; Function compile flags: /Ogtpy
;	COMDAT ?_Myptr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEPADXZ
_TEXT	SEGMENT
?_Myptr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEPADXZ PROC ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Myptr, COMDAT
; _this$ = ecx

; 2170 : 		return (_BUF_SIZE <= _Myres ? _Bx._Ptr : _Bx._Buf);

  00000	83 79 18 10	 cmp	 DWORD PTR [ecx+24], 16	; 00000010H
  00004	72 04		 jb	 SHORT $LN3@Myptr
  00006	8b 41 04	 mov	 eax, DWORD PTR [ecx+4]

; 2171 : 		}

  00009	c3		 ret	 0
$LN3@Myptr:

; 2170 : 		return (_BUF_SIZE <= _Myres ? _Bx._Ptr : _Bx._Buf);

  0000a	8d 41 04	 lea	 eax, DWORD PTR [ecx+4]

; 2171 : 		}

  0000d	c3		 ret	 0
?_Myptr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEPADXZ ENDP ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Myptr
_TEXT	ENDS
PUBLIC	?_Myptr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IBEPBDXZ ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Myptr
; Function compile flags: /Ogtpy
;	COMDAT ?_Myptr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IBEPBDXZ
_TEXT	SEGMENT
?_Myptr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IBEPBDXZ PROC ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Myptr, COMDAT
; _this$ = ecx

; 2175 : 		return (_BUF_SIZE <= _Myres ? _Bx._Ptr : _Bx._Buf);

  00000	83 79 18 10	 cmp	 DWORD PTR [ecx+24], 16	; 00000010H
  00004	72 04		 jb	 SHORT $LN3@Myptr@2
  00006	8b 41 04	 mov	 eax, DWORD PTR [ecx+4]

; 2176 : 		}

  00009	c3		 ret	 0
$LN3@Myptr@2:

; 2175 : 		return (_BUF_SIZE <= _Myres ? _Bx._Ptr : _Bx._Buf);

  0000a	8d 41 04	 lea	 eax, DWORD PTR [ecx+4]

; 2176 : 		}

  0000d	c3		 ret	 0
?_Myptr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IBEPBDXZ ENDP ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Myptr
_TEXT	ENDS
PUBLIC	??0?$allocator@D@std@@QAE@XZ			; std::allocator<char>::allocator<char>
; Function compile flags: /Ogtpy
; File c:\program files (x86)\microsoft visual studio 9.0\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

; 119  : 	allocator() _THROW0()

  00000	8b c1		 mov	 eax, ecx

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

  00002	c3		 ret	 0
??0?$allocator@D@std@@QAE@XZ ENDP			; std::allocator<char>::allocator<char>
_TEXT	ENDS
PUBLIC	?_Chassign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXIID@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Chassign
; Function compile flags: /Ogtpy
; File c:\program files (x86)\microsoft visual studio 9.0\vc\include\xstring
;	COMDAT ?_Chassign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXIID@Z
_TEXT	SEGMENT
__Off$ = 8						; size = 4
__Count$ = 12						; size = 4
__Ch$ = 16						; size = 1
?_Chassign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXIID@Z PROC ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Chassign, COMDAT
; _this$ = ecx

; 2076 : 		if (_Count == 1)

  00000	8b 44 24 08	 mov	 eax, DWORD PTR __Count$[esp-4]
  00004	83 f8 01	 cmp	 eax, 1
  00007	75 28		 jne	 SHORT $LN2@Chassign

; 2077 : 			_Traits::assign(*(_Myptr() + _Off), _Ch);

  00009	83 79 18 10	 cmp	 DWORD PTR [ecx+24], 16	; 00000010H
  0000d	72 11		 jb	 SHORT $LN7@Chassign
  0000f	8b 49 04	 mov	 ecx, DWORD PTR [ecx+4]
  00012	8a 44 24 0c	 mov	 al, BYTE PTR __Ch$[esp-4]
  00016	8b 54 24 04	 mov	 edx, DWORD PTR __Off$[esp-4]
  0001a	88 04 11	 mov	 BYTE PTR [ecx+edx], al

; 2080 : 		}

  0001d	c2 0c 00	 ret	 12			; 0000000cH

; 2077 : 			_Traits::assign(*(_Myptr() + _Off), _Ch);

$LN7@Chassign:
  00020	8a 44 24 0c	 mov	 al, BYTE PTR __Ch$[esp-4]
  00024	8b 54 24 04	 mov	 edx, DWORD PTR __Off$[esp-4]
  00028	83 c1 04	 add	 ecx, 4
  0002b	88 04 11	 mov	 BYTE PTR [ecx+edx], al

; 2080 : 		}

  0002e	c2 0c 00	 ret	 12			; 0000000cH
$LN2@Chassign:

; 2078 : 		else
; 2079 : 			_Traits::assign(_Myptr() + _Off, _Count, _Ch);

  00031	83 79 18 10	 cmp	 DWORD PTR [ecx+24], 16	; 00000010H
  00035	72 05		 jb	 SHORT $LN13@Chassign
  00037	8b 49 04	 mov	 ecx, DWORD PTR [ecx+4]
  0003a	eb 03		 jmp	 SHORT $LN14@Chassign
$LN13@Chassign:
  0003c	83 c1 04	 add	 ecx, 4
$LN14@Chassign:
  0003f	8b 54 24 04	 mov	 edx, DWORD PTR __Off$[esp-4]
  00043	50		 push	 eax
  00044	0f be 44 24 10	 movsx	 eax, BYTE PTR __Ch$[esp]
  00049	50		 push	 eax
  0004a	03 ca		 add	 ecx, edx
  0004c	51		 push	 ecx
  0004d	e8 00 00 00 00	 call	 _memset
  00052	83 c4 0c	 add	 esp, 12			; 0000000cH

; 2080 : 		}

  00055	c2 0c 00	 ret	 12			; 0000000cH
?_Chassign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXIID@Z ENDP ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Chassign
_TEXT	ENDS
PUBLIC	?_Eos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXI@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Eos
; Function compile flags: /Ogtpy
;	COMDAT ?_Eos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXI@Z
_TEXT	SEGMENT
__Newsize$ = 8						; size = 4
?_Eos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXI@Z PROC ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Eos, COMDAT
; _this$ = ecx

; 2114 : 		_Traits::assign(_Myptr()[_Mysize = _Newsize], _Elem());

  00000	83 79 18 10	 cmp	 DWORD PTR [ecx+24], 16	; 00000010H
  00004	8b 44 24 04	 mov	 eax, DWORD PTR __Newsize$[esp-4]
  00008	89 41 14	 mov	 DWORD PTR [ecx+20], eax
  0000b	72 0a		 jb	 SHORT $LN5@Eos
  0000d	8b 49 04	 mov	 ecx, DWORD PTR [ecx+4]
  00010	c6 04 01 00	 mov	 BYTE PTR [ecx+eax], 0

; 2115 : 		}

  00014	c2 04 00	 ret	 4

; 2114 : 		_Traits::assign(_Myptr()[_Mysize = _Newsize], _Elem());

$LN5@Eos:
  00017	c6 44 01 04 00	 mov	 BYTE PTR [ecx+eax+4], 0

; 2115 : 		}

  0001c	c2 04 00	 ret	 4
?_Eos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXI@Z ENDP ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Eos
_TEXT	ENDS
PUBLIC	??0?$allocator@D@std@@QAE@ABV01@@Z		; std::allocator<char>::allocator<char>
; Function compile flags: /Ogtpy
; File c:\program files (x86)\microsoft visual studio 9.0\vc\include\xmemory
;	COMDAT ??0?$allocator@D@std@@QAE@ABV01@@Z
_TEXT	SEGMENT
___formal$ = 8						; size = 4
??0?$allocator@D@std@@QAE@ABV01@@Z PROC			; std::allocator<char>::allocator<char>, COMDAT
; _this$ = ecx

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

  00000	8b c1		 mov	 eax, ecx

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

  00002	c2 04 00	 ret	 4
??0?$allocator@D@std@@QAE@ABV01@@Z ENDP			; std::allocator<char>::allocator<char>
_TEXT	ENDS
PUBLIC	?deallocate@?$allocator@D@std@@QAEXPADI@Z	; std::allocator<char>::deallocate
; Function compile flags: /Ogtpy
;	COMDAT ?deallocate@?$allocator@D@std@@QAEXPADI@Z
_TEXT	SEGMENT
__Ptr$ = 8						; size = 4
___formal$ = 12						; size = 4
?deallocate@?$allocator@D@std@@QAEXPADI@Z PROC		; std::allocator<char>::deallocate, COMDAT
; _this$ = ecx

; 140  : 		::operator delete(_Ptr);

  00000	8b 44 24 04	 mov	 eax, DWORD PTR __Ptr$[esp-4]
  00004	50		 push	 eax
  00005	e8 00 00 00 00	 call	 ??3@YAXPAX@Z		; operator delete
  0000a	59		 pop	 ecx

; 141  : 		}

  0000b	c2 08 00	 ret	 8
?deallocate@?$allocator@D@std@@QAEXPADI@Z ENDP		; std::allocator<char>::deallocate
_TEXT	ENDS
PUBLIC	?_Inside@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAE_NPBD@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Inside
; Function compile flags: /Ogtpy
; File c:\program files (x86)\microsoft visual studio 9.0\vc\include\xstring
;	COMDAT ?_Inside@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAE_NPBD@Z
_TEXT	SEGMENT
__Ptr$ = 8						; size = 4
?_Inside@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAE_NPBD@Z PROC ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Inside, COMDAT
; _this$ = ecx

; 2133 : 		{	// test if _Ptr points inside string

  00000	56		 push	 esi
  00001	57		 push	 edi

; 2134 : 		if (_Ptr == 0 || _Ptr < _Myptr() || _Myptr() + _Mysize <= _Ptr)

  00002	8b 7c 24 0c	 mov	 edi, DWORD PTR __Ptr$[esp+4]
  00006	85 ff		 test	 edi, edi
  00008	74 2c		 je	 SHORT $LN2@Inside
  0000a	8b 71 18	 mov	 esi, DWORD PTR [ecx+24]
  0000d	8d 41 04	 lea	 eax, DWORD PTR [ecx+4]
  00010	83 fe 10	 cmp	 esi, 16			; 00000010H
  00013	72 04		 jb	 SHORT $LN8@Inside
  00015	8b 10		 mov	 edx, DWORD PTR [eax]
  00017	eb 02		 jmp	 SHORT $LN9@Inside
$LN8@Inside:
  00019	8b d0		 mov	 edx, eax
$LN9@Inside:
  0001b	3b fa		 cmp	 edi, edx
  0001d	72 17		 jb	 SHORT $LN2@Inside
  0001f	83 fe 10	 cmp	 esi, 16			; 00000010H
  00022	72 02		 jb	 SHORT $LN12@Inside
  00024	8b 00		 mov	 eax, DWORD PTR [eax]
$LN12@Inside:
  00026	8b 49 14	 mov	 ecx, DWORD PTR [ecx+20]
  00029	03 c8		 add	 ecx, eax
  0002b	3b cf		 cmp	 ecx, edi
  0002d	76 07		 jbe	 SHORT $LN2@Inside
  0002f	5f		 pop	 edi

; 2136 : 		else
; 2137 : 			return (true);

  00030	b0 01		 mov	 al, 1
  00032	5e		 pop	 esi

; 2138 : 		}

  00033	c2 04 00	 ret	 4
$LN2@Inside:
  00036	5f		 pop	 edi

; 2135 : 			return (false);	// don't ask

  00037	32 c0		 xor	 al, al
  00039	5e		 pop	 esi

; 2138 : 		}

  0003a	c2 04 00	 ret	 4
?_Inside@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAE_NPBD@Z ENDP ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Inside
_TEXT	ENDS
PUBLIC	?max_size@?$allocator@D@std@@QBEIXZ		; std::allocator<char>::max_size
; Function compile flags: /Ogtpy
; File c:\program files (x86)\microsoft visual studio 9.0\vc\include\xmemory
;	COMDAT ?max_size@?$allocator@D@std@@QBEIXZ
_TEXT	SEGMENT
?max_size@?$allocator@D@std@@QBEIXZ PROC		; std::allocator<char>::max_size, COMDAT
; _this$ = ecx

; 165  : 		_SIZT _Count = (_SIZT)(-1) / sizeof (_Ty);
; 166  : 		return (0 < _Count ? _Count : 1);

  00000	83 c8 ff	 or	 eax, -1

; 167  : 		}

  00003	c3		 ret	 0
?max_size@?$allocator@D@std@@QBEIXZ ENDP		; std::allocator<char>::max_size
_TEXT	ENDS
PUBLIC	__TI2?AVbad_alloc@std@@
PUBLIC	??$_Allocate@D@std@@YAPADIPAD@Z			; std::_Allocate<char>
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	??2@YAPAXI@Z:PROC				; operator new
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 (x86)\microsoft visual studio 9.0\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@@
; Function compile flags: /Ogtpy
; File c:\program files (x86)\microsoft visual studio 9.0\vc\include\xmemory
xdata$x	ENDS
;	COMDAT ??$_Allocate@D@std@@YAPADIPAD@Z
_TEXT	SEGMENT
$T95292 = -12						; size = 12
$T95297 = 8						; size = 4
__Count$ = 8						; size = 4
___formal$ = 12						; size = 4
??$_Allocate@D@std@@YAPADIPAD@Z PROC			; std::_Allocate<char>, COMDAT

; 37   : 	if (_Count <= 0)

  00000	8b 4c 24 04	 mov	 ecx, DWORD PTR __Count$[esp-4]
  00004	83 ec 0c	 sub	 esp, 12			; 0000000cH
  00007	85 c9		 test	 ecx, ecx
  00009	77 0f		 ja	 SHORT $LN3@Allocate

; 38   : 		_Count = 0;

  0000b	33 c9		 xor	 ecx, ecx
$LN1@Allocate:

; 41   : 
; 42   : 		// allocate storage for _Count elements of type _Ty
; 43   : 	return ((_Ty _FARQ *)::operator new(_Count * sizeof (_Ty)));

  0000d	51		 push	 ecx
  0000e	e8 00 00 00 00	 call	 ??2@YAPAXI@Z		; operator new
  00013	83 c4 04	 add	 esp, 4

; 44   : 	}

  00016	83 c4 0c	 add	 esp, 12			; 0000000cH
  00019	c3		 ret	 0
$LN3@Allocate:

; 39   : 	else if (((_SIZT)(-1) / _Count) < sizeof (_Ty))

  0001a	83 c8 ff	 or	 eax, -1
  0001d	33 d2		 xor	 edx, edx
  0001f	f7 f1		 div	 ecx
  00021	83 f8 01	 cmp	 eax, 1
  00024	73 e7		 jae	 SHORT $LN1@Allocate

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

  00026	8d 44 24 10	 lea	 eax, DWORD PTR $T95297[esp+8]
  0002a	50		 push	 eax
  0002b	8d 4c 24 04	 lea	 ecx, DWORD PTR $T95292[esp+16]
  0002f	c7 44 24 14 00
	00 00 00	 mov	 DWORD PTR $T95297[esp+12], 0
  00037	e8 00 00 00 00	 call	 ??0exception@std@@QAE@ABQBD@Z ; std::exception::exception
  0003c	68 00 00 00 00	 push	 OFFSET __TI2?AVbad_alloc@std@@
  00041	8d 4c 24 04	 lea	 ecx, DWORD PTR $T95292[esp+16]
  00045	51		 push	 ecx
  00046	c7 44 24 08 00
	00 00 00	 mov	 DWORD PTR $T95292[esp+20], OFFSET ??_7bad_alloc@std@@6B@
  0004e	e8 00 00 00 00	 call	 __CxxThrowException@8
$LN9@Allocate:
$LN8@Allocate:
  00053	cc		 int	 3
??$_Allocate@D@std@@YAPADIPAD@Z ENDP			; std::_Allocate<char>
; 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
  00000	8b 44 24 04	 mov	 eax, DWORD PTR ___that$[esp-4]
  00004	56		 push	 esi
  00005	50		 push	 eax
  00006	8b f1		 mov	 esi, ecx
  00008	e8 00 00 00 00	 call	 ??0exception@std@@QAE@ABV01@@Z ; std::exception::exception
  0000d	c7 06 00 00 00
	00		 mov	 DWORD PTR [esi], OFFSET ??_7bad_alloc@std@@6B@
  00013	8b c6		 mov	 eax, esi
  00015	5e		 pop	 esi
  00016	c2 04 00	 ret	 4
??0bad_alloc@std@@QAE@ABV01@@Z ENDP			; std::bad_alloc::bad_alloc
_TEXT	ENDS
PUBLIC	??$_Char_traits_cat@U?$char_traits@D@std@@@std@@YA?AU_Secure_char_traits_tag@0@XZ ; std::_Char_traits_cat<std::char_traits<char> >
; Function compile flags: /Ogtpy
; File c:\program files (x86)\microsoft visual studio 9.0\vc\include\iosfwd
;	COMDAT ??$_Char_traits_cat@U?$char_traits@D@std@@@std@@YA?AU_Secure_char_traits_tag@0@XZ
_TEXT	SEGMENT
__Secure$ = -1						; size = 1
??$_Char_traits_cat@U?$char_traits@D@std@@@std@@YA?AU_Secure_char_traits_tag@0@XZ PROC ; std::_Char_traits_cat<std::char_traits<char> >, COMDAT

; 575  : 	{

  00000	51		 push	 ecx

; 576  : 		typename _Char_traits_category<_Traits>::_Secure_char_traits _Secure;
; 577  : 		return (_Secure);

  00001	8a 44 24 03	 mov	 al, BYTE PTR __Secure$[esp+4]

; 578  : 	}

  00005	59		 pop	 ecx
  00006	c3		 ret	 0
??$_Char_traits_cat@U?$char_traits@D@std@@@std@@YA?AU_Secure_char_traits_tag@0@XZ ENDP ; std::_Char_traits_cat<std::char_traits<char> >
_TEXT	ENDS
PUBLIC	??$copy_s@U?$char_traits@D@std@@@_Traits_helper@std@@YAPADPADIPBDIU_Secure_char_traits_tag@1@@Z ; std::_Traits_helper::copy_s<std::char_traits<char> >
; Function compile flags: /Ogtpy
;	COMDAT ??$copy_s@U?$char_traits@D@std@@@_Traits_helper@std@@YAPADPADIPBDIU_Secure_char_traits_tag@1@@Z
_TEXT	SEGMENT
__First1$ = 8						; size = 4
__Size$ = 12						; size = 4
__First2$ = 16						; size = 4
__Count$ = 20						; size = 4
___formal$ = 24						; size = 1
??$copy_s@U?$char_traits@D@std@@@_Traits_helper@std@@YAPADPADIPBDIU_Secure_char_traits_tag@1@@Z PROC ; std::_Traits_helper::copy_s<std::char_traits<char> >, COMDAT

; 597  : 		return _Traits::_Copy_s(_First1, _Size, _First2, _Count);

  00000	8b 44 24 10	 mov	 eax, DWORD PTR __Count$[esp-4]
  00004	8b 4c 24 0c	 mov	 ecx, DWORD PTR __First2$[esp-4]
  00008	8b 54 24 08	 mov	 edx, DWORD PTR __Size$[esp-4]
  0000c	56		 push	 esi
  0000d	8b 74 24 08	 mov	 esi, DWORD PTR __First1$[esp]
  00011	50		 push	 eax
  00012	51		 push	 ecx
  00013	52		 push	 edx
  00014	56		 push	 esi
  00015	e8 00 00 00 00	 call	 _memcpy_s
  0001a	83 c4 10	 add	 esp, 16			; 00000010H
  0001d	8b c6		 mov	 eax, esi
  0001f	5e		 pop	 esi

; 598  : 	}

  00020	c3		 ret	 0
??$copy_s@U?$char_traits@D@std@@@_Traits_helper@std@@YAPADPADIPBDIU_Secure_char_traits_tag@1@@Z ENDP ; std::_Traits_helper::copy_s<std::char_traits<char> >
_TEXT	ENDS
PUBLIC	??$move_s@U?$char_traits@D@std@@@_Traits_helper@std@@YAPADPADIPBDIU_Secure_char_traits_tag@1@@Z ; std::_Traits_helper::move_s<std::char_traits<char> >
; Function compile flags: /Ogtpy
;	COMDAT ??$move_s@U?$char_traits@D@std@@@_Traits_helper@std@@YAPADPADIPBDIU_Secure_char_traits_tag@1@@Z
_TEXT	SEGMENT
__First1$ = 8						; size = 4
__Size$ = 12						; size = 4
__First2$ = 16						; size = 4
__Count$ = 20						; size = 4
___formal$ = 24						; size = 1
??$move_s@U?$char_traits@D@std@@@_Traits_helper@std@@YAPADPADIPBDIU_Secure_char_traits_tag@1@@Z PROC ; std::_Traits_helper::move_s<std::char_traits<char> >, COMDAT

; 624  : 		return _Traits::_Move_s(_First1, _Size, _First2, _Count);

  00000	8b 44 24 10	 mov	 eax, DWORD PTR __Count$[esp-4]
  00004	8b 4c 24 0c	 mov	 ecx, DWORD PTR __First2$[esp-4]
  00008	8b 54 24 08	 mov	 edx, DWORD PTR __Size$[esp-4]
  0000c	56		 push	 esi
  0000d	8b 74 24 08	 mov	 esi, DWORD PTR __First1$[esp]
  00011	50		 push	 eax
  00012	51		 push	 ecx
  00013	52		 push	 edx
  00014	56		 push	 esi
  00015	e8 00 00 00 00	 call	 _memmove_s
  0001a	83 c4 10	 add	 esp, 16			; 00000010H
  0001d	8b c6		 mov	 eax, esi
  0001f	5e		 pop	 esi

; 625  : 	}

  00020	c3		 ret	 0
??$move_s@U?$char_traits@D@std@@@_Traits_helper@std@@YAPADPADIPBDIU_Secure_char_traits_tag@1@@Z ENDP ; std::_Traits_helper::move_s<std::char_traits<char> >
_TEXT	ENDS
PUBLIC	??_7CDir@@6B@					; CDir::`vftable'
PUBLIC	??0CDir@@QAE@XZ					; CDir::CDir
PUBLIC	??_R4CDir@@6B@					; CDir::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVCDir@@@8				; CDir `RTTI Type Descriptor'
PUBLIC	??_R3CDir@@8					; CDir::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2CDir@@8					; CDir::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@CDir@@8				; CDir::`RTTI Base Class Descriptor at (0,-1,0,64)'
EXTRN	??_ECDir@@UAEPAXI@Z:PROC			; CDir::`vector deleting destructor'
EXTRN	__purecall:PROC
;	COMDAT ??_R1A@?0A@EA@CDir@@8
; File d:\# metin2\work in progress\source client\client\eterbase\filedir.cpp
rdata$r	SEGMENT
??_R1A@?0A@EA@CDir@@8 DD FLAT:??_R0?AVCDir@@@8		; CDir::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	00H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3CDir@@8
rdata$r	ENDS
;	COMDAT ??_R2CDir@@8
rdata$r	SEGMENT
??_R2CDir@@8 DD	FLAT:??_R1A@?0A@EA@CDir@@8		; CDir::`RTTI Base Class Array'
rdata$r	ENDS
;	COMDAT ??_R3CDir@@8
rdata$r	SEGMENT
??_R3CDir@@8 DD	00H					; CDir::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	01H
	DD	FLAT:??_R2CDir@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVCDir@@@8
_DATA	SEGMENT
??_R0?AVCDir@@@8 DD FLAT:??_7type_info@@6B@		; CDir `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVCDir@@', 00H
_DATA	ENDS
;	COMDAT ??_R4CDir@@6B@
rdata$r	SEGMENT
??_R4CDir@@6B@ DD 00H					; CDir::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVCDir@@@8
	DD	FLAT:??_R3CDir@@8
rdata$r	ENDS
;	COMDAT ??_7CDir@@6B@
CONST	SEGMENT
??_7CDir@@6B@ DD FLAT:??_R4CDir@@6B@			; CDir::`vftable'
	DD	FLAT:??_ECDir@@UAEPAXI@Z
	DD	FLAT:__purecall
	DD	FLAT:__purecall
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0CDir@@QAE@XZ
_TEXT	SEGMENT
??0CDir@@QAE@XZ PROC					; CDir::CDir, COMDAT
; _this$ = ecx

; 6    : {

  00000	56		 push	 esi
  00001	8b f1		 mov	 esi, ecx
  00003	c7 06 00 00 00
	00		 mov	 DWORD PTR [esi], OFFSET ??_7CDir@@6B@

; 7    : 	Initialize();

  00009	e8 00 00 00 00	 call	 ?Initialize@CDir@@IAEXXZ ; CDir::Initialize

; 8    : }

  0000e	8b c6		 mov	 eax, esi
  00010	5e		 pop	 esi
  00011	c3		 ret	 0
??0CDir@@QAE@XZ ENDP					; CDir::CDir
_TEXT	ENDS
PUBLIC	?Destroy@CDir@@QAEXXZ				; CDir::Destroy
EXTRN	__imp__FindClose@4:PROC
; Function compile flags: /Ogtpy
;	COMDAT ?Destroy@CDir@@QAEXXZ
_TEXT	SEGMENT
?Destroy@CDir@@QAEXXZ PROC				; CDir::Destroy, COMDAT
; _this$ = ecx

; 16   : {

  00000	56		 push	 esi
  00001	8b f1		 mov	 esi, ecx

; 17   : 	if (m_hFind)

  00003	8b 86 44 01 00
	00		 mov	 eax, DWORD PTR [esi+324]
  00009	85 c0		 test	 eax, eax
  0000b	74 07		 je	 SHORT $LN1@Destroy

; 18   : 		FindClose(m_hFind);

  0000d	50		 push	 eax
  0000e	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__FindClose@4
$LN1@Destroy:

; 19   : 
; 20   : 	Initialize();

  00014	8b ce		 mov	 ecx, esi
  00016	5e		 pop	 esi
  00017	e9 00 00 00 00	 jmp	 ?Initialize@CDir@@IAEXXZ ; CDir::Initialize
?Destroy@CDir@@QAEXXZ ENDP				; CDir::Destroy
_TEXT	ENDS
PUBLIC	??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADI@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::operator[]
EXTRN	__invalid_parameter_noinfo:PROC
; Function compile flags: /Ogtpy
; File c:\program files (x86)\microsoft visual studio 9.0\vc\include\xstring
;	COMDAT ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADI@Z
_TEXT	SEGMENT
__Off$ = 8						; size = 4
??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADI@Z PROC ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::operator[], COMDAT
; _this$ = ecx

; 1557 : 		{	// subscript mutable sequence

  00000	56		 push	 esi
  00001	57		 push	 edi

; 1558 : 
; 1559 :  #if _HAS_ITERATOR_DEBUGGING
; 1560 : 		// skip debug checks if the container is initizialed with _IGNORE_MYITERLIST
; 1561 : 		if (this->_Myfirstiter != _IGNORE_MYITERLIST)
; 1562 : 			{
; 1563 : 			if (_Mysize < _Off)
; 1564 : 				{
; 1565 : 				_DEBUG_ERROR("string subscript out of range");
; 1566 : 				_SCL_SECURE_OUT_OF_RANGE;
; 1567 : 				}
; 1568 : 			}
; 1569 :  #else
; 1570 : 		_SCL_SECURE_VALIDATE_RANGE(_Off <= _Mysize);

  00002	8b 7c 24 0c	 mov	 edi, DWORD PTR __Off$[esp+4]
  00006	8b f1		 mov	 esi, ecx
  00008	3b 7e 14	 cmp	 edi, DWORD PTR [esi+20]
  0000b	76 05		 jbe	 SHORT $LN3@operator
  0000d	e8 00 00 00 00	 call	 __invalid_parameter_noinfo
$LN3@operator:

; 1571 :  #endif /* _HAS_ITERATOR_DEBUGGING */
; 1572 : 
; 1573 : 		return (_Myptr()[_Off]);

  00012	83 7e 18 10	 cmp	 DWORD PTR [esi+24], 16	; 00000010H
  00016	72 0b		 jb	 SHORT $LN9@operator
  00018	8b 76 04	 mov	 esi, DWORD PTR [esi+4]
  0001b	8d 04 3e	 lea	 eax, DWORD PTR [esi+edi]
  0001e	5f		 pop	 edi
  0001f	5e		 pop	 esi

; 1574 : 		}

  00020	c2 04 00	 ret	 4

; 1571 :  #endif /* _HAS_ITERATOR_DEBUGGING */
; 1572 : 
; 1573 : 		return (_Myptr()[_Off]);

$LN9@operator:
  00023	8d 44 3e 04	 lea	 eax, DWORD PTR [esi+edi+4]
  00027	5f		 pop	 edi
  00028	5e		 pop	 esi

; 1574 : 		}

  00029	c2 04 00	 ret	 4
??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADI@Z ENDP ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::operator[]
_TEXT	ENDS
PUBLIC	?c_str@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::c_str
; Function compile flags: /Ogtpy
;	COMDAT ?c_str@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ
_TEXT	SEGMENT
?c_str@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ PROC ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::c_str, COMDAT
; _this$ = ecx

; 1651 : 		return (_Myptr());

  00000	83 79 18 10	 cmp	 DWORD PTR [ecx+24], 16	; 00000010H
  00004	72 04		 jb	 SHORT $LN5@c_str
  00006	8b 41 04	 mov	 eax, DWORD PTR [ecx+4]

; 1652 : 		}

  00009	c3		 ret	 0

; 1651 : 		return (_Myptr());

$LN5@c_str:
  0000a	8d 41 04	 lea	 eax, DWORD PTR [ecx+4]

; 1652 : 		}

  0000d	c3		 ret	 0
?c_str@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ ENDP ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::c_str
_TEXT	ENDS
PUBLIC	?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::find
; Function compile flags: /Ogtpy
;	COMDAT ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
__Ptr$ = 8						; size = 4
tv206 = 12						; size = 4
__Off$ = 12						; size = 4
__Count$ = 16						; size = 4
?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z PROC ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::find, COMDAT
; _this$ = ecx

; 1770 : 		{	// look for [_Ptr, _Ptr + _Count) beginnng at or after _Off

  00000	51		 push	 ecx

; 1771 : 
; 1772 :  #if _HAS_ITERATOR_DEBUGGING
; 1773 : 		if (_Count != 0)
; 1774 : 			_DEBUG_POINTER(_Ptr);
; 1775 :  #endif /* _HAS_ITERATOR_DEBUGGING */
; 1776 : 
; 1777 : 		if (_Count == 0 && _Off <= _Mysize)

  00001	8b 54 24 10	 mov	 edx, DWORD PTR __Count$[esp]
  00005	8b 44 24 0c	 mov	 eax, DWORD PTR __Off$[esp]
  00009	89 0c 24	 mov	 DWORD PTR _this$[esp+4], ecx
  0000c	85 d2		 test	 edx, edx
  0000e	75 09		 jne	 SHORT $LN6@find
  00010	3b 41 14	 cmp	 eax, DWORD PTR [ecx+20]

; 1778 : 			return (_Off);	// null string always matches (if inside string)

  00013	0f 86 86 00 00
	00		 jbe	 $LN7@find
$LN6@find:
  00019	53		 push	 ebx
  0001a	55		 push	 ebp
  0001b	56		 push	 esi
  0001c	57		 push	 edi

; 1779 : 
; 1780 : 		size_type _Nm;
; 1781 : 		if (_Off < _Mysize && _Count <= (_Nm = _Mysize - _Off))

  0001d	8b 79 14	 mov	 edi, DWORD PTR [ecx+20]
  00020	3b c7		 cmp	 eax, edi
  00022	73 74		 jae	 SHORT $LN2@find
  00024	2b f8		 sub	 edi, eax
  00026	3b d7		 cmp	 edx, edi
  00028	77 6e		 ja	 SHORT $LN2@find

; 1782 : 			{	// room for match, look for it
; 1783 : 			const _Elem *_Uptr, *_Vptr;
; 1784 : 			for (_Nm -= _Count - 1, _Vptr = _Myptr() + _Off;

  0002a	be 01 00 00 00	 mov	 esi, 1
  0002f	2b f2		 sub	 esi, edx
  00031	03 fe		 add	 edi, esi
  00033	83 79 18 10	 cmp	 DWORD PTR [ecx+24], 16	; 00000010H
  00037	72 0b		 jb	 SHORT $LN11@find
  00039	83 c1 04	 add	 ecx, 4
  0003c	89 4c 24 1c	 mov	 DWORD PTR tv206[esp+16], ecx
  00040	8b 09		 mov	 ecx, DWORD PTR [ecx]
  00042	eb 07		 jmp	 SHORT $LN12@find
$LN11@find:
  00044	83 c1 04	 add	 ecx, 4
  00047	89 4c 24 1c	 mov	 DWORD PTR tv206[esp+16], ecx
$LN12@find:

; 1785 : 				(_Uptr = _Traits::find(_Vptr, _Nm, *_Ptr)) != 0;
; 1786 : 				_Nm -= _Uptr - _Vptr + 1, _Vptr = _Uptr + 1)

  0004b	8b 6c 24 18	 mov	 ebp, DWORD PTR __Ptr$[esp+16]
  0004f	8d 1c 01	 lea	 ebx, DWORD PTR [ecx+eax]
  00052	0f be 45 00	 movsx	 eax, BYTE PTR [ebp]
  00056	57		 push	 edi
  00057	50		 push	 eax
  00058	53		 push	 ebx
  00059	e8 00 00 00 00	 call	 _memchr
  0005e	8b f0		 mov	 esi, eax
  00060	83 c4 0c	 add	 esp, 12			; 0000000cH
  00063	85 f6		 test	 esi, esi
  00065	74 31		 je	 SHORT $LN2@find
$LL4@find:

; 1787 : 				if (_Traits::compare(_Uptr, _Ptr, _Count) == 0)

  00067	8b 4c 24 20	 mov	 ecx, DWORD PTR __Count$[esp+16]
  0006b	51		 push	 ecx
  0006c	55		 push	 ebp
  0006d	56		 push	 esi
  0006e	e8 00 00 00 00	 call	 ?compare@?$char_traits@D@std@@SAHPBD0I@Z ; std::char_traits<char>::compare
  00073	83 c4 0c	 add	 esp, 12			; 0000000cH
  00076	85 c0		 test	 eax, eax
  00078	74 29		 je	 SHORT $LN20@find
  0007a	0f be 55 00	 movsx	 edx, BYTE PTR [ebp]
  0007e	2b de		 sub	 ebx, esi
  00080	8d 7c 1f ff	 lea	 edi, DWORD PTR [edi+ebx-1]
  00084	57		 push	 edi
  00085	52		 push	 edx
  00086	8d 5e 01	 lea	 ebx, DWORD PTR [esi+1]
  00089	53		 push	 ebx
  0008a	e8 00 00 00 00	 call	 _memchr
  0008f	8b f0		 mov	 esi, eax
  00091	83 c4 0c	 add	 esp, 12			; 0000000cH
  00094	85 f6		 test	 esi, esi
  00096	75 cf		 jne	 SHORT $LL4@find
$LN2@find:
  00098	5f		 pop	 edi
  00099	5e		 pop	 esi
  0009a	5d		 pop	 ebp

; 1789 : 			}
; 1790 : 
; 1791 : 		return (npos);	// no match

  0009b	83 c8 ff	 or	 eax, -1
  0009e	5b		 pop	 ebx
$LN7@find:

; 1792 : 		}

  0009f	59		 pop	 ecx
  000a0	c2 0c 00	 ret	 12			; 0000000cH
$LN20@find:

; 1788 : 					return (_Uptr - _Myptr());	// found a match

  000a3	8b 44 24 10	 mov	 eax, DWORD PTR _this$[esp+20]
  000a7	83 78 18 10	 cmp	 DWORD PTR [eax+24], 16	; 00000010H
  000ab	8b 4c 24 1c	 mov	 ecx, DWORD PTR tv206[esp+16]
  000af	72 02		 jb	 SHORT $LN18@find
  000b1	8b 09		 mov	 ecx, DWORD PTR [ecx]
$LN18@find:
  000b3	5f		 pop	 edi
  000b4	8b c6		 mov	 eax, esi
  000b6	5e		 pop	 esi
  000b7	5d		 pop	 ebp
  000b8	2b c1		 sub	 eax, ecx
  000ba	5b		 pop	 ebx

; 1792 : 		}

  000bb	59		 pop	 ecx
  000bc	c2 0c 00	 ret	 12			; 0000000cH
?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z ENDP ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::find
_TEXT	ENDS
PUBLIC	?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIPBDI@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::compare
EXTRN	?_Xran@_String_base@std@@SAXXZ:PROC		; std::_String_base::_Xran
; Function compile flags: /Ogtpy
;	COMDAT ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIPBDI@Z
_TEXT	SEGMENT
__Off$ = 8						; size = 4
__N0$ = 12						; size = 4
__Ptr$ = 16						; size = 4
__Count$ = 20						; size = 4
?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIPBDI@Z PROC ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::compare, COMDAT
; _this$ = ecx

; 2038 : 		{	// compare [_Off, _Off + _N0) with [_Ptr, _Ptr + _Count)

  00000	53		 push	 ebx
  00001	55		 push	 ebp

; 2039 : 
; 2040 :  #if _HAS_ITERATOR_DEBUGGING
; 2041 : 		if (_Count != 0)
; 2042 : 			_DEBUG_POINTER(_Ptr);
; 2043 :  #endif /* _HAS_ITERATOR_DEBUGGING */
; 2044 : 
; 2045 : 		if (_Mysize < _Off)

  00002	8b 6c 24 0c	 mov	 ebp, DWORD PTR __Off$[esp+4]
  00006	56		 push	 esi
  00007	57		 push	 edi
  00008	8b f9		 mov	 edi, ecx
  0000a	39 6f 14	 cmp	 DWORD PTR [edi+20], ebp
  0000d	73 05		 jae	 SHORT $LN2@compare@2

; 2046 : 			_String_base::_Xran();	// _Off off end

  0000f	e8 00 00 00 00	 call	 ?_Xran@_String_base@std@@SAXXZ ; std::_String_base::_Xran
$LN2@compare@2:

; 2047 : 		if (_Mysize - _Off < _N0)

  00014	8b 47 14	 mov	 eax, DWORD PTR [edi+20]
  00017	8b 74 24 18	 mov	 esi, DWORD PTR __N0$[esp+12]
  0001b	2b c5		 sub	 eax, ebp
  0001d	3b c6		 cmp	 eax, esi
  0001f	73 02		 jae	 SHORT $LN1@compare@2

; 2048 : 			_N0 = _Mysize - _Off;	// trim _N0 to size

  00021	8b f0		 mov	 esi, eax
$LN1@compare@2:

; 2049 : 
; 2050 : 		size_type _Ans = _Traits::compare(_Myptr() + _Off, _Ptr,
; 2051 : 			_N0 < _Count ? _N0 : _Count);

  00023	8b 5c 24 20	 mov	 ebx, DWORD PTR __Count$[esp+12]
  00027	8b c6		 mov	 eax, esi
  00029	3b f3		 cmp	 esi, ebx
  0002b	72 02		 jb	 SHORT $LN6@compare@2
  0002d	8b c3		 mov	 eax, ebx
$LN6@compare@2:
  0002f	83 7f 18 10	 cmp	 DWORD PTR [edi+24], 16	; 00000010H
  00033	72 05		 jb	 SHORT $LN13@compare@2
  00035	8b 7f 04	 mov	 edi, DWORD PTR [edi+4]
  00038	eb 03		 jmp	 SHORT $LN14@compare@2
$LN13@compare@2:
  0003a	83 c7 04	 add	 edi, 4
$LN14@compare@2:
  0003d	50		 push	 eax
  0003e	8b 44 24 20	 mov	 eax, DWORD PTR __Ptr$[esp+16]
  00042	50		 push	 eax
  00043	03 fd		 add	 edi, ebp
  00045	57		 push	 edi
  00046	e8 00 00 00 00	 call	 ?compare@?$char_traits@D@std@@SAHPBD0I@Z ; std::char_traits<char>::compare
  0004b	83 c4 0c	 add	 esp, 12			; 0000000cH

; 2052 : 		return (_Ans != 0 ? (int)_Ans : _N0 < _Count ? -1
; 2053 : 			: _N0 == _Count ? 0 : +1);

  0004e	85 c0		 test	 eax, eax
  00050	75 15		 jne	 SHORT $LN8@compare@2
  00052	3b f3		 cmp	 esi, ebx
  00054	73 0a		 jae	 SHORT $LN7@compare@2
  00056	5f		 pop	 edi
  00057	5e		 pop	 esi
  00058	5d		 pop	 ebp
  00059	83 c8 ff	 or	 eax, -1
  0005c	5b		 pop	 ebx

; 2054 : 		}

  0005d	c2 10 00	 ret	 16			; 00000010H
$LN7@compare@2:

; 2052 : 		return (_Ans != 0 ? (int)_Ans : _N0 < _Count ? -1
; 2053 : 			: _N0 == _Count ? 0 : +1);

  00060	33 c0		 xor	 eax, eax
  00062	3b f3		 cmp	 esi, ebx
  00064	0f 95 c0	 setne	 al
$LN8@compare@2:
  00067	5f		 pop	 edi
  00068	5e		 pop	 esi
  00069	5d		 pop	 ebp
  0006a	5b		 pop	 ebx

; 2054 : 		}

  0006b	c2 10 00	 ret	 16			; 00000010H
?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIPBDI@Z ENDP ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::compare
_TEXT	ENDS
PUBLIC	?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$allocator@D@2@XZ ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::get_allocator
; Function compile flags: /Ogtpy
;	COMDAT ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$allocator@D@2@XZ
_TEXT	SEGMENT
___$ReturnUdt$ = 8					; size = 4
?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$allocator@D@2@XZ PROC ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::get_allocator, COMDAT
; _this$ = ecx

; 2058 : 		return (_Mybase::_Alval);

  00000	8b 44 24 04	 mov	 eax, DWORD PTR ___$ReturnUdt$[esp-4]

; 2059 : 		}

  00004	c2 04 00	 ret	 4
?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$allocator@D@2@XZ ENDP ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::get_allocator
_TEXT	ENDS
PUBLIC	??0?$_String_val@DV?$allocator@D@std@@@std@@IAE@V?$allocator@D@1@@Z ; std::_String_val<char,std::allocator<char> >::_String_val<char,std::allocator<char> >
; Function compile flags: /Ogtpy
;	COMDAT ??0?$_String_val@DV?$allocator@D@std@@@std@@IAE@V?$allocator@D@1@@Z
_TEXT	SEGMENT
__Al$ = 8						; size = 1
??0?$_String_val@DV?$allocator@D@std@@@std@@IAE@V?$allocator@D@1@@Z PROC ; std::_String_val<char,std::allocator<char> >::_String_val<char,std::allocator<char> >, COMDAT
; _this$ = ecx

; 472  : 		{	// construct allocator from _Al

  00000	8b c1		 mov	 eax, ecx

; 473  : 		}

  00002	c2 04 00	 ret	 4
??0?$_String_val@DV?$allocator@D@std@@@std@@IAE@V?$allocator@D@1@@Z ENDP ; std::_String_val<char,std::allocator<char> >::_String_val<char,std::allocator<char> >
_TEXT	ENDS
PUBLIC	?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::max_size
; Function compile flags: /Ogtpy
;	COMDAT ?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ
_TEXT	SEGMENT
?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ PROC ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::max_size, COMDAT
; _this$ = ecx

; 1671 : 		size_type _Num = _Mybase::_Alval.max_size();
; 1672 : 		return (_Num <= 1 ? 1 : _Num - 1);

  00000	b8 fe ff ff ff	 mov	 eax, -2			; fffffffeH

; 1673 : 		}

  00005	c3		 ret	 0
?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ ENDP ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::max_size
_TEXT	ENDS
PUBLIC	?allocate@?$allocator@D@std@@QAEPADI@Z		; std::allocator<char>::allocate
; Function compile flags: /Ogtpy
; File c:\program files (x86)\microsoft visual studio 9.0\vc\include\xmemory
;	COMDAT ?allocate@?$allocator@D@std@@QAEPADI@Z
_TEXT	SEGMENT
__Count$ = 8						; size = 4
?allocate@?$allocator@D@std@@QAEPADI@Z PROC		; std::allocator<char>::allocate, COMDAT
; _this$ = ecx

; 145  : 		return (_Allocate(_Count, (pointer)0));

  00000	8b 44 24 04	 mov	 eax, DWORD PTR __Count$[esp-4]
  00004	6a 00		 push	 0
  00006	50		 push	 eax
  00007	e8 00 00 00 00	 call	 ??$_Allocate@D@std@@YAPADIPAD@Z ; std::_Allocate<char>
  0000c	83 c4 08	 add	 esp, 8

; 146  : 		}

  0000f	c2 04 00	 ret	 4
?allocate@?$allocator@D@std@@QAEPADI@Z ENDP		; std::allocator<char>::allocate
_TEXT	ENDS
PUBLIC	??$copy_s@U?$char_traits@D@std@@@_Traits_helper@std@@YAPADPADIPBDI@Z ; std::_Traits_helper::copy_s<std::char_traits<char> >
; Function compile flags: /Ogtpy
; File c:\program files (x86)\microsoft visual studio 9.0\vc\include\iosfwd
;	COMDAT ??$copy_s@U?$char_traits@D@std@@@_Traits_helper@std@@YAPADPADIPBDI@Z
_TEXT	SEGMENT
__First1$ = 8						; size = 4
__Size$ = 12						; size = 4
__First2$ = 16						; size = 4
__Count$ = 20						; size = 4
??$copy_s@U?$char_traits@D@std@@@_Traits_helper@std@@YAPADPADIPBDI@Z PROC ; std::_Traits_helper::copy_s<std::char_traits<char> >, COMDAT

; 589  : 		return copy_s<_Traits>(_First1, _Size, _First2, _Count, _Char_traits_cat<_Traits>());

  00000	8b 44 24 10	 mov	 eax, DWORD PTR __Count$[esp-4]
  00004	8b 4c 24 0c	 mov	 ecx, DWORD PTR __First2$[esp-4]
  00008	8b 54 24 08	 mov	 edx, DWORD PTR __Size$[esp-4]
  0000c	56		 push	 esi
  0000d	8b 74 24 08	 mov	 esi, DWORD PTR __First1$[esp]
  00011	50		 push	 eax
  00012	51		 push	 ecx
  00013	52		 push	 edx
  00014	56		 push	 esi
  00015	e8 00 00 00 00	 call	 _memcpy_s
  0001a	83 c4 10	 add	 esp, 16			; 00000010H
  0001d	8b c6		 mov	 eax, esi
  0001f	5e		 pop	 esi

; 590  : 	}

  00020	c3		 ret	 0
??$copy_s@U?$char_traits@D@std@@@_Traits_helper@std@@YAPADPADIPBDI@Z ENDP ; std::_Traits_helper::copy_s<std::char_traits<char> >
_TEXT	ENDS
PUBLIC	??$move_s@U?$char_traits@D@std@@@_Traits_helper@std@@YAPADPADIPBDI@Z ; std::_Traits_helper::move_s<std::char_traits<char> >
; Function compile flags: /Ogtpy
;	COMDAT ??$move_s@U?$char_traits@D@std@@@_Traits_helper@std@@YAPADPADIPBDI@Z
_TEXT	SEGMENT
__First1$ = 8						; size = 4
__Size$ = 12						; size = 4
__First2$ = 16						; size = 4
__Count$ = 20						; size = 4
??$move_s@U?$char_traits@D@std@@@_Traits_helper@std@@YAPADPADIPBDI@Z PROC ; std::_Traits_helper::move_s<std::char_traits<char> >, COMDAT

; 616  : 		return move_s<_Traits>(_First1, _Size, _First2, _Count, _Char_traits_cat<_Traits>());

  00000	8b 44 24 10	 mov	 eax, DWORD PTR __Count$[esp-4]
  00004	8b 4c 24 0c	 mov	 ecx, DWORD PTR __First2$[esp-4]
  00008	8b 54 24 08	 mov	 edx, DWORD PTR __Size$[esp-4]
  0000c	56		 push	 esi
  0000d	8b 74 24 08	 mov	 esi, DWORD PTR __First1$[esp]
  00011	50		 push	 eax
  00012	51		 push	 ecx
  00013	52		 push	 edx
  00014	56		 push	 esi
  00015	e8 00 00 00 00	 call	 _memmove_s
  0001a	83 c4 10	 add	 esp, 16			; 00000010H
  0001d	8b c6		 mov	 eax, esi
  0001f	5e		 pop	 esi

; 617  : 	}

  00020	c3		 ret	 0
??$move_s@U?$char_traits@D@std@@@_Traits_helper@std@@YAPADPADIPBDI@Z ENDP ; std::_Traits_helper::move_s<std::char_traits<char> >
_TEXT	ENDS
PUBLIC	??1CDir@@UAE@XZ					; CDir::~CDir
; Function compile flags: /Ogtpy
; File d:\# metin2\work in progress\source client\client\eterbase\filedir.cpp
;	COMDAT ??1CDir@@UAE@XZ
_TEXT	SEGMENT
??1CDir@@UAE@XZ PROC					; CDir::~CDir, COMDAT
; _this$ = ecx

; 11   : {

  00000	c7 01 00 00 00
	00		 mov	 DWORD PTR [ecx], OFFSET ??_7CDir@@6B@

; 12   : 	Destroy();

  00006	e9 00 00 00 00	 jmp	 ?Destroy@CDir@@QAEXXZ	; CDir::Destroy
??1CDir@@UAE@XZ ENDP					; CDir::~CDir
_TEXT	ENDS
PUBLIC	?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::find_first_of
; Function compile flags: /Ogtpy
; File c:\program files (x86)\microsoft visual studio 9.0\vc\include\xstring
;	COMDAT ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z
_TEXT	SEGMENT
__Ch$ = 8						; size = 1
__Off$ = 12						; size = 4
?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z PROC ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::find_first_of, COMDAT
; _this$ = ecx

; 1881 : 		return (find((const _Elem *)&_Ch, _Off, 1));

  00000	8b 44 24 08	 mov	 eax, DWORD PTR __Off$[esp-4]
  00004	6a 01		 push	 1
  00006	50		 push	 eax
  00007	8d 54 24 0c	 lea	 edx, DWORD PTR __Ch$[esp+4]
  0000b	52		 push	 edx
  0000c	e8 00 00 00 00	 call	 ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::find

; 1882 : 		}

  00011	c2 08 00	 ret	 8
?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z ENDP ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::find_first_of
_TEXT	ENDS
PUBLIC	?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHPBD@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::compare
; Function compile flags: /Ogtpy
;	COMDAT ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHPBD@Z
_TEXT	SEGMENT
__Ptr$ = 8						; size = 4
?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHPBD@Z PROC ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::compare, COMDAT
; _this$ = ecx

; 2025 : 		{	// compare [0, _Mysize) with [_Ptr, <null>)

  00000	56		 push	 esi

; 2026 : 		_DEBUG_POINTER(_Ptr);
; 2027 : 		return (compare(0, _Mysize, _Ptr, _Traits::length(_Ptr)));

  00001	8b 74 24 08	 mov	 esi, DWORD PTR __Ptr$[esp]
  00005	8b c6		 mov	 eax, esi
  00007	57		 push	 edi
  00008	8d 78 01	 lea	 edi, DWORD PTR [eax+1]
  0000b	eb 03 8d 49 00	 npad	 5
$LL5@compare@3:
  00010	8a 10		 mov	 dl, BYTE PTR [eax]
  00012	40		 inc	 eax
  00013	84 d2		 test	 dl, dl
  00015	75 f9		 jne	 SHORT $LL5@compare@3
  00017	2b c7		 sub	 eax, edi
  00019	50		 push	 eax
  0001a	8b 41 14	 mov	 eax, DWORD PTR [ecx+20]
  0001d	56		 push	 esi
  0001e	50		 push	 eax
  0001f	6a 00		 push	 0
  00021	e8 00 00 00 00	 call	 ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIPBDI@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::compare
  00026	5f		 pop	 edi
  00027	5e		 pop	 esi

; 2028 : 		}

  00028	c2 04 00	 ret	 4
?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHPBD@Z ENDP ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::compare
_TEXT	ENDS
PUBLIC	?_Tidy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEX_NI@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Tidy
; Function compile flags: /Ogtpy
;	COMDAT ?_Tidy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEX_NI@Z
_TEXT	SEGMENT
__Built$ = 8						; size = 1
__Newsize$ = 12						; size = 4
?_Tidy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEX_NI@Z PROC ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Tidy, COMDAT
; _this$ = ecx

; 2149 : 		if (!_Built)

  00000	80 7c 24 04 00	 cmp	 BYTE PTR __Built$[esp-4], 0
  00005	56		 push	 esi
  00006	57		 push	 edi
  00007	8b 7c 24 10	 mov	 edi, DWORD PTR __Newsize$[esp+4]
  0000b	8b f1		 mov	 esi, ecx
  0000d	74 27		 je	 SHORT $LN15@Tidy

; 2150 : 			;
; 2151 : 		else if (_BUF_SIZE <= _Myres)

  0000f	83 7e 18 10	 cmp	 DWORD PTR [esi+24], 16	; 00000010H
  00013	72 21		 jb	 SHORT $LN15@Tidy

; 2152 : 			{	// copy any leftovers to small buffer and deallocate
; 2153 : 			_Elem *_Ptr = _Bx._Ptr;

  00015	8d 46 04	 lea	 eax, DWORD PTR [esi+4]
  00018	53		 push	 ebx
  00019	8b 18		 mov	 ebx, DWORD PTR [eax]

; 2154 : 			if (0 < _Newsize)

  0001b	85 ff		 test	 edi, edi
  0001d	76 0d		 jbe	 SHORT $LN13@Tidy

; 2155 : 				_Traits_helper::copy_s<_Traits>(_Bx._Buf, _BUF_SIZE, _Ptr, _Newsize);

  0001f	57		 push	 edi
  00020	53		 push	 ebx
  00021	6a 10		 push	 16			; 00000010H
  00023	50		 push	 eax
  00024	e8 00 00 00 00	 call	 _memcpy_s
  00029	83 c4 10	 add	 esp, 16			; 00000010H
$LN13@Tidy:

; 2156 : 			_Mybase::_Alval.deallocate(_Ptr, _Myres + 1);

  0002c	53		 push	 ebx
  0002d	e8 00 00 00 00	 call	 ??3@YAXPAX@Z		; operator delete
  00032	83 c4 04	 add	 esp, 4
  00035	5b		 pop	 ebx
$LN15@Tidy:

; 2157 : 			}
; 2158 : 		_Myres = _BUF_SIZE - 1;
; 2159 : 		_Eos(_Newsize);

  00036	89 7e 14	 mov	 DWORD PTR [esi+20], edi
  00039	c7 46 18 0f 00
	00 00		 mov	 DWORD PTR [esi+24], 15	; 0000000fH
  00040	c6 44 3e 04 00	 mov	 BYTE PTR [esi+edi+4], 0
  00045	5f		 pop	 edi
  00046	5e		 pop	 esi

; 2160 : 		}

  00047	c2 08 00	 ret	 8
?_Tidy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEX_NI@Z ENDP ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Tidy
_TEXT	ENDS
PUBLIC	?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@II@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::erase
; Function compile flags: /Ogtpy
;	COMDAT ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@II@Z
_TEXT	SEGMENT
tv130 = 8						; size = 4
__Off$ = 8						; size = 4
__Count$ = 12						; size = 4
?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@II@Z PROC ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::erase, COMDAT
; _this$ = ecx

; 1262 : 		{	// erase elements [_Off, _Off + _Count)

  00000	53		 push	 ebx

; 1263 : 		if (_Mysize < _Off)

  00001	8b 5c 24 08	 mov	 ebx, DWORD PTR __Off$[esp]
  00005	56		 push	 esi
  00006	8b f1		 mov	 esi, ecx
  00008	57		 push	 edi
  00009	39 5e 14	 cmp	 DWORD PTR [esi+20], ebx
  0000c	73 05		 jae	 SHORT $LN3@erase

; 1264 : 			_String_base::_Xran();	// _Off off end

  0000e	e8 00 00 00 00	 call	 ?_Xran@_String_base@std@@SAXXZ ; std::_String_base::_Xran
$LN3@erase:

; 1265 : 		if (_Mysize - _Off < _Count)

  00013	8b 46 14	 mov	 eax, DWORD PTR [esi+20]
  00016	8b 7c 24 14	 mov	 edi, DWORD PTR __Count$[esp+8]
  0001a	2b c3		 sub	 eax, ebx
  0001c	3b c7		 cmp	 eax, edi
  0001e	73 02		 jae	 SHORT $LN2@erase

; 1266 : 			_Count = _Mysize - _Off;	// trim _Count

  00020	8b f8		 mov	 edi, eax
$LN2@erase:

; 1267 : 		if (0 < _Count)

  00022	85 ff		 test	 edi, edi
  00024	76 55		 jbe	 SHORT $LN30@erase

; 1268 : 			{	// move elements down
; 1269 : 			_Traits_helper::move_s<_Traits>(_Myptr() + _Off, _Myres - _Off, _Myptr() + _Off + _Count,
; 1270 : 				_Mysize - _Off - _Count);

  00026	8b 4e 18	 mov	 ecx, DWORD PTR [esi+24]
  00029	55		 push	 ebp
  0002a	8d 6e 04	 lea	 ebp, DWORD PTR [esi+4]
  0002d	83 f9 10	 cmp	 ecx, 16			; 00000010H
  00030	72 09		 jb	 SHORT $LN8@erase
  00032	8b 55 00	 mov	 edx, DWORD PTR [ebp]
  00035	89 54 24 14	 mov	 DWORD PTR tv130[esp+12], edx
  00039	eb 04		 jmp	 SHORT $LN9@erase
$LN8@erase:
  0003b	89 6c 24 14	 mov	 DWORD PTR tv130[esp+12], ebp
$LN9@erase:
  0003f	83 f9 10	 cmp	 ecx, 16			; 00000010H
  00042	72 05		 jb	 SHORT $LN12@erase
  00044	8b 55 00	 mov	 edx, DWORD PTR [ebp]
  00047	eb 02		 jmp	 SHORT $LN13@erase
$LN12@erase:
  00049	8b d5		 mov	 edx, ebp
$LN13@erase:
  0004b	2b c7		 sub	 eax, edi
  0004d	50		 push	 eax
  0004e	8b 44 24 18	 mov	 eax, DWORD PTR tv130[esp+16]
  00052	03 c3		 add	 eax, ebx
  00054	03 c7		 add	 eax, edi
  00056	50		 push	 eax
  00057	2b cb		 sub	 ecx, ebx
  00059	51		 push	 ecx
  0005a	03 d3		 add	 edx, ebx
  0005c	52		 push	 edx
  0005d	e8 00 00 00 00	 call	 _memmove_s

; 1271 : 			size_type _Newsize = _Mysize - _Count;

  00062	8b 46 14	 mov	 eax, DWORD PTR [esi+20]
  00065	2b c7		 sub	 eax, edi
  00067	83 c4 10	 add	 esp, 16			; 00000010H

; 1272 : 			_Eos(_Newsize);

  0006a	83 7e 18 10	 cmp	 DWORD PTR [esi+24], 16	; 00000010H
  0006e	89 46 14	 mov	 DWORD PTR [esi+20], eax
  00071	72 03		 jb	 SHORT $LN26@erase
  00073	8b 6d 00	 mov	 ebp, DWORD PTR [ebp]
$LN26@erase:
  00076	c6 04 28 00	 mov	 BYTE PTR [eax+ebp], 0
  0007a	5d		 pop	 ebp
$LN30@erase:
  0007b	5f		 pop	 edi

; 1273 : 			}
; 1274 : 		return (*this);

  0007c	8b c6		 mov	 eax, esi
  0007e	5e		 pop	 esi
  0007f	5b		 pop	 ebx

; 1275 : 		}

  00080	c2 08 00	 ret	 8
?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@II@Z ENDP ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::erase
_TEXT	ENDS
PUBLIC	?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXII@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Copy
EXTRN	___security_cookie:DWORD
EXTRN	___CxxFrameHandler3:PROC
EXTRN	@__security_check_cookie@4:PROC
;	COMDAT xdata$x
; File c:\program files (x86)\microsoft visual studio 9.0\vc\include\iosfwd
xdata$x	SEGMENT
__catchsym$?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXII@Z$5 DD 040H
	DD	00H
	DD	00H
	DD	FLAT:__catch$?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXII@Z$0
__catchsym$?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXII@Z$4 DD 040H
	DD	00H
	DD	00H
	DD	FLAT:__catch$?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXII@Z$1
__unwindtable$?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXII@Z DD 0ffffffffH
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	01H
	DD	00H
	DD	01H
	DD	00H
__ehfuncinfo$?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXII@Z DD 019930522H
	DD	04H
	DD	FLAT:__unwindtable$?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXII@Z
	DD	02H
	DD	FLAT:__tryblocktable$?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXII@Z
	DD	2 DUP(00H)
	DD	00H
	DD	01H
__tryblocktable$?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXII@Z DD 02H
	DD	02H
	DD	03H
	DD	01H
	DD	FLAT:__catchsym$?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXII@Z$4
	DD	00H
	DD	00H
	DD	03H
	DD	01H
	DD	FLAT:__catchsym$?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXII@Z$5
; Function compile flags: /Ogtpy
; File c:\program files (x86)\microsoft visual studio 9.0\vc\include\xstring
xdata$x	ENDS
;	COMDAT ?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXII@Z
_TEXT	SEGMENT
__Newres$ = -24						; size = 4
_this$ = -20						; size = 4
__$EHRec$ = -16						; size = 16
__Ptr$ = 8						; size = 4
__Newsize$ = 8						; size = 4
__Oldlen$ = 12						; size = 4
?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXII@Z PROC ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Copy, COMDAT
; _this$ = ecx

; 2083 : 		{	// copy _Oldlen elements to newly allocated buffer

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	6a ff		 push	 -1
  00005	68 00 00 00 00	 push	 __ehhandler$?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXII@Z
  0000a	64 a1 00 00 00
	00		 mov	 eax, DWORD PTR fs:0
  00010	50		 push	 eax
  00011	83 ec 0c	 sub	 esp, 12			; 0000000cH
  00014	53		 push	 ebx
  00015	56		 push	 esi
  00016	57		 push	 edi
  00017	a1 00 00 00 00	 mov	 eax, DWORD PTR ___security_cookie
  0001c	33 c5		 xor	 eax, ebp
  0001e	50		 push	 eax
  0001f	8d 45 f4	 lea	 eax, DWORD PTR __$EHRec$[ebp+4]
  00022	64 a3 00 00 00
	00		 mov	 DWORD PTR fs:0, eax
  00028	89 65 f0	 mov	 DWORD PTR __$EHRec$[ebp], esp
  0002b	8b f9		 mov	 edi, ecx
  0002d	89 7d ec	 mov	 DWORD PTR _this$[ebp], edi

; 2084 : 		size_type _Newres = _Newsize | _ALLOC_MASK;

  00030	8b 45 08	 mov	 eax, DWORD PTR __Newsize$[ebp]
  00033	8b f0		 mov	 esi, eax
  00035	83 ce 0f	 or	 esi, 15			; 0000000fH

; 2085 : 		if (max_size() < _Newres)

  00038	83 fe fe	 cmp	 esi, -2			; fffffffeH
  0003b	76 04		 jbe	 SHORT $LN6@Copy

; 2086 : 			_Newres = _Newsize;	// undo roundup if too big

  0003d	8b f0		 mov	 esi, eax

; 2087 : 		else if (_Newres / 3 < _Myres / 2

  0003f	eb 22		 jmp	 SHORT $LN4@Copy
$LN6@Copy:

; 2088 : 			&& _Myres <= max_size() - _Myres / 2)

  00041	8b 5f 18	 mov	 ebx, DWORD PTR [edi+24]
  00044	b8 ab aa aa aa	 mov	 eax, -1431655765	; aaaaaaabH
  00049	f7 e6		 mul	 esi
  0004b	8b cb		 mov	 ecx, ebx
  0004d	d1 e9		 shr	 ecx, 1
  0004f	d1 ea		 shr	 edx, 1
  00051	3b d1		 cmp	 edx, ecx
  00053	73 0e		 jae	 SHORT $LN4@Copy
  00055	b8 fe ff ff ff	 mov	 eax, -2			; fffffffeH
  0005a	2b c1		 sub	 eax, ecx
  0005c	3b d8		 cmp	 ebx, eax
  0005e	77 03		 ja	 SHORT $LN4@Copy

; 2089 : 			_Newres = _Myres + _Myres / 2;	// grow exponentially if possible

  00060	8d 34 19	 lea	 esi, DWORD PTR [ecx+ebx]
$LN4@Copy:

; 2090 : 		_Elem *_Ptr = 0;
; 2091 : 
; 2092 : 		_TRY_BEGIN
; 2093 : 			_Ptr = _Mybase::_Alval.allocate(_Newres + 1);

  00063	8d 4e 01	 lea	 ecx, DWORD PTR [esi+1]
  00066	6a 00		 push	 0
  00068	51		 push	 ecx
  00069	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+12], 0
  00070	e8 00 00 00 00	 call	 ??$_Allocate@D@std@@YAPADIPAD@Z ; std::_Allocate<char>
  00075	83 c4 08	 add	 esp, 8
  00078	89 45 08	 mov	 DWORD PTR __Ptr$[ebp], eax
  0007b	eb 28		 jmp	 SHORT $LN16@Copy
__catch$?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXII@Z$0:

; 2094 : 		_CATCH_ALL
; 2095 : 			_Newres = _Newsize;	// allocation failed, undo roundup and retry

  0007d	8b 45 08	 mov	 eax, DWORD PTR __Newsize$[ebp]
  00080	89 65 f0	 mov	 DWORD PTR __$EHRec$[ebp], esp
  00083	89 45 e8	 mov	 DWORD PTR __Newres$[ebp], eax

; 2096 : 			_TRY_BEGIN
; 2097 : 				_Ptr = _Mybase::_Alval.allocate(_Newres + 1);

  00086	40		 inc	 eax
  00087	6a 00		 push	 0
  00089	50		 push	 eax
  0008a	c6 45 fc 02	 mov	 BYTE PTR __$EHRec$[ebp+12], 2
  0008e	e8 00 00 00 00	 call	 ??$_Allocate@D@std@@YAPADIPAD@Z ; std::_Allocate<char>
  00093	89 45 08	 mov	 DWORD PTR __Ptr$[ebp], eax
  00096	83 c4 08	 add	 esp, 8

; 2101 : 			_CATCH_END
; 2102 : 		_CATCH_END

  00099	b8 00 00 00 00	 mov	 eax, $LN106@Copy
  0009e	c3		 ret	 0
$LN106@Copy:
  0009f	8b 7d ec	 mov	 edi, DWORD PTR _this$[ebp]
  000a2	8b 75 e8	 mov	 esi, DWORD PTR __Newres$[ebp]
$LN16@Copy:

; 2103 : 
; 2104 : 		if (0 < _Oldlen)

  000a5	8b 5d 0c	 mov	 ebx, DWORD PTR __Oldlen$[ebp]
  000a8	85 db		 test	 ebx, ebx
  000aa	76 20		 jbe	 SHORT $LN71@Copy

; 2105 : 			_Traits_helper::copy_s<_Traits>(_Ptr, _Newres + 1, _Myptr(), _Oldlen);	// copy existing elements

  000ac	83 7f 18 10	 cmp	 DWORD PTR [edi+24], 16	; 00000010H
  000b0	72 05		 jb	 SHORT $LN63@Copy
  000b2	8b 47 04	 mov	 eax, DWORD PTR [edi+4]
  000b5	eb 03		 jmp	 SHORT $LN64@Copy
$LN63@Copy:
  000b7	8d 47 04	 lea	 eax, DWORD PTR [edi+4]
$LN64@Copy:
  000ba	53		 push	 ebx
  000bb	50		 push	 eax
  000bc	8b 45 08	 mov	 eax, DWORD PTR __Ptr$[ebp]
  000bf	8d 56 01	 lea	 edx, DWORD PTR [esi+1]
  000c2	52		 push	 edx
  000c3	50		 push	 eax
  000c4	e8 00 00 00 00	 call	 _memcpy_s
  000c9	83 c4 10	 add	 esp, 16			; 00000010H
$LN71@Copy:

; 2106 : 		_Tidy(true);

  000cc	83 7f 18 10	 cmp	 DWORD PTR [edi+24], 16	; 00000010H
  000d0	72 0c		 jb	 SHORT $LN87@Copy
  000d2	8b 4f 04	 mov	 ecx, DWORD PTR [edi+4]
  000d5	51		 push	 ecx
  000d6	e8 00 00 00 00	 call	 ??3@YAXPAX@Z		; operator delete
  000db	83 c4 04	 add	 esp, 4
$LN87@Copy:

; 2107 : 		_Bx._Ptr = _Ptr;

  000de	8b 4d 08	 mov	 ecx, DWORD PTR __Ptr$[ebp]
  000e1	8d 47 04	 lea	 eax, DWORD PTR [edi+4]
  000e4	c6 00 00	 mov	 BYTE PTR [eax], 0
  000e7	89 08		 mov	 DWORD PTR [eax], ecx

; 2108 : 		_Myres = _Newres;

  000e9	89 77 18	 mov	 DWORD PTR [edi+24], esi

; 2109 : 		_Eos(_Oldlen);

  000ec	89 5f 14	 mov	 DWORD PTR [edi+20], ebx
  000ef	83 fe 10	 cmp	 esi, 16			; 00000010H
  000f2	72 02		 jb	 SHORT $LN101@Copy
  000f4	8b c1		 mov	 eax, ecx
$LN101@Copy:
  000f6	c6 04 18 00	 mov	 BYTE PTR [eax+ebx], 0

; 2110 : 		}

  000fa	8b 4d f4	 mov	 ecx, DWORD PTR __$EHRec$[ebp+4]
  000fd	64 89 0d 00 00
	00 00		 mov	 DWORD PTR fs:0, ecx
  00104	59		 pop	 ecx
  00105	5f		 pop	 edi
  00106	5e		 pop	 esi
  00107	5b		 pop	 ebx
  00108	8b e5		 mov	 esp, ebp
  0010a	5d		 pop	 ebp
  0010b	c2 08 00	 ret	 8
__catch$?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXII@Z$1:

; 2098 : 			_CATCH_ALL
; 2099 : 			_Tidy(true);	// failed again, discard storage and reraise

  0010e	8b 75 ec	 mov	 esi, DWORD PTR _this$[ebp]
  00111	83 7e 18 10	 cmp	 DWORD PTR [esi+24], 16	; 00000010H
  00115	72 0c		 jb	 SHORT $LN51@Copy
  00117	8b 56 04	 mov	 edx, DWORD PTR [esi+4]
  0011a	52		 push	 edx
  0011b	e8 00 00 00 00	 call	 ??3@YAXPAX@Z		; operator delete
  00120	83 c4 04	 add	 esp, 4
$LN51@Copy:

; 2100 : 			_RERAISE;

  00123	6a 00		 push	 0
  00125	c7 46 18 0f 00
	00 00		 mov	 DWORD PTR [esi+24], 15	; 0000000fH
  0012c	c7 46 14 00 00
	00 00		 mov	 DWORD PTR [esi+20], 0
  00133	6a 00		 push	 0
  00135	c6 46 04 00	 mov	 BYTE PTR [esi+4], 0
  00139	e8 00 00 00 00	 call	 __CxxThrowException@8
$LN110@Copy:
$LN109@Copy:
  0013e	cc		 int	 3
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__ehhandler$?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXII@Z:
  00000	8b 54 24 08	 mov	 edx, DWORD PTR [esp+8]
  00004	8d 42 0c	 lea	 eax, DWORD PTR [edx+12]
  00007	8b 4a e4	 mov	 ecx, DWORD PTR [edx-28]
  0000a	33 c8		 xor	 ecx, eax
  0000c	e8 00 00 00 00	 call	 @__security_check_cookie@4
  00011	b8 00 00 00 00	 mov	 eax, OFFSET __ehfuncinfo$?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXII@Z
  00016	e9 00 00 00 00	 jmp	 ___CxxFrameHandler3
text$x	ENDS
?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXII@Z ENDP ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Copy
; Function compile flags: /Ogtpy
;	COMDAT ??_GCDir@@UAEPAXI@Z
_TEXT	SEGMENT
___flags$ = 8						; size = 4
??_GCDir@@UAEPAXI@Z PROC				; CDir::`scalar deleting destructor', COMDAT
; _this$ = ecx
  00000	56		 push	 esi
  00001	8b f1		 mov	 esi, ecx
  00003	e8 00 00 00 00	 call	 ??1CDir@@UAE@XZ		; CDir::~CDir
  00008	f6 44 24 08 01	 test	 BYTE PTR ___flags$[esp], 1
  0000d	74 09		 je	 SHORT $LN4@scalar@2
  0000f	56		 push	 esi
  00010	e8 00 00 00 00	 call	 ??3@YAXPAX@Z		; operator delete
  00015	83 c4 04	 add	 esp, 4
$LN4@scalar@2:
  00018	8b c6		 mov	 eax, esi
  0001a	5e		 pop	 esi
  0001b	c2 04 00	 ret	 4
??_GCDir@@UAEPAXI@Z ENDP				; CDir::`scalar deleting destructor'
_TEXT	ENDS
PUBLIC	??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::basic_string<char,std::char_traits<char>,std::allocator<char> >
; Function compile flags: /Ogtpy
;	COMDAT ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ
_TEXT	SEGMENT
??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ PROC ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::basic_string<char,std::char_traits<char>,std::allocator<char> >, COMDAT
; _this$ = ecx

; 565  : 		{	// construct empty string

  00000	8b c1		 mov	 eax, ecx

; 566  : 		_Tidy();

  00002	33 c9		 xor	 ecx, ecx
  00004	c7 40 18 0f 00
	00 00		 mov	 DWORD PTR [eax+24], 15	; 0000000fH
  0000b	89 48 14	 mov	 DWORD PTR [eax+20], ecx
  0000e	88 48 04	 mov	 BYTE PTR [eax+4], cl

; 567  : 		}

  00011	c3		 ret	 0
??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ ENDP ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::basic_string<char,std::char_traits<char>,std::allocator<char> >
_TEXT	ENDS
PUBLIC	??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::~basic_string<char,std::char_traits<char>,std::allocator<char> >
; Function compile flags: /Ogtpy
;	COMDAT ??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ
_TEXT	SEGMENT
??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ PROC ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::~basic_string<char,std::char_traits<char>,std::allocator<char> >, COMDAT
; _this$ = ecx

; 905  : 		{	// destroy the string

  00000	56		 push	 esi
  00001	8b f1		 mov	 esi, ecx

; 906  : 		_Tidy(true);

  00003	83 7e 18 10	 cmp	 DWORD PTR [esi+24], 16	; 00000010H
  00007	72 0c		 jb	 SHORT $LN17@basic_stri
  00009	8b 46 04	 mov	 eax, DWORD PTR [esi+4]
  0000c	50		 push	 eax
  0000d	e8 00 00 00 00	 call	 ??3@YAXPAX@Z		; operator delete
  00012	83 c4 04	 add	 esp, 4
$LN17@basic_stri:
  00015	33 c0		 xor	 eax, eax
  00017	c7 46 18 0f 00
	00 00		 mov	 DWORD PTR [esi+24], 15	; 0000000fH
  0001e	89 46 14	 mov	 DWORD PTR [esi+20], eax
  00021	88 46 04	 mov	 BYTE PTR [esi+4], al
  00024	5e		 pop	 esi

; 907  : 		}

  00025	c3		 ret	 0
??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ ENDP ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::~basic_string<char,std::char_traits<char>,std::allocator<char> >
_TEXT	ENDS
PUBLIC	?_Grow@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAE_NI_N@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Grow
EXTRN	?_Xlen@_String_base@std@@SAXXZ:PROC		; std::_String_base::_Xlen
; Function compile flags: /Ogtpy
;	COMDAT ?_Grow@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAE_NI_N@Z
_TEXT	SEGMENT
__Newsize$ = 8						; size = 4
__Trim$ = 12						; size = 1
?_Grow@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAE_NI_N@Z PROC ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Grow, COMDAT
; _this$ = ecx

; 2119 : 		{	// ensure buffer is big enough, trim to size if _Trim is true

  00000	53		 push	 ebx

; 2120 : 			if (max_size() < _Newsize)

  00001	8b 5c 24 08	 mov	 ebx, DWORD PTR __Newsize$[esp]
  00005	56		 push	 esi
  00006	8b f1		 mov	 esi, ecx
  00008	83 fb fe	 cmp	 ebx, -2			; fffffffeH
  0000b	76 05		 jbe	 SHORT $LN6@Grow

; 2121 : 			_String_base::_Xlen();	// result too long

  0000d	e8 00 00 00 00	 call	 ?_Xlen@_String_base@std@@SAXXZ ; std::_String_base::_Xlen
$LN6@Grow:

; 2122 : 		if (_Myres < _Newsize)

  00012	8b 46 18	 mov	 eax, DWORD PTR [esi+24]
  00015	3b c3		 cmp	 eax, ebx
  00017	73 19		 jae	 SHORT $LN5@Grow

; 2123 : 			_Copy(_Newsize, _Mysize);	// reallocate to grow

  00019	8b 46 14	 mov	 eax, DWORD PTR [esi+20]
  0001c	50		 push	 eax
  0001d	53		 push	 ebx
  0001e	8b ce		 mov	 ecx, esi
  00020	e8 00 00 00 00	 call	 ?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXII@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Copy

; 2129 : 		return (0 < _Newsize);	// return true only if more work to do

  00025	33 c9		 xor	 ecx, ecx
  00027	3b cb		 cmp	 ecx, ebx
  00029	1b c0		 sbb	 eax, eax
  0002b	5e		 pop	 esi
  0002c	f7 d8		 neg	 eax
  0002e	5b		 pop	 ebx

; 2130 : 		}

  0002f	c2 08 00	 ret	 8
$LN5@Grow:

; 2124 : 		else if (_Trim && _Newsize < _BUF_SIZE)

  00032	80 7c 24 10 00	 cmp	 BYTE PTR __Trim$[esp+4], 0
  00037	74 52		 je	 SHORT $LN3@Grow
  00039	83 fb 10	 cmp	 ebx, 16			; 00000010H
  0003c	73 4d		 jae	 SHORT $LN3@Grow
  0003e	57		 push	 edi

; 2125 : 			_Tidy(true,	// copy and deallocate if trimming to small string
; 2126 : 				_Newsize < _Mysize ? _Newsize : _Mysize);

  0003f	8b 7e 14	 mov	 edi, DWORD PTR [esi+20]
  00042	3b df		 cmp	 ebx, edi
  00044	73 02		 jae	 SHORT $LN9@Grow
  00046	8b fb		 mov	 edi, ebx
$LN9@Grow:
  00048	83 f8 10	 cmp	 eax, 16			; 00000010H
  0004b	72 21		 jb	 SHORT $LN33@Grow
  0004d	8d 46 04	 lea	 eax, DWORD PTR [esi+4]
  00050	55		 push	 ebp
  00051	8b 28		 mov	 ebp, DWORD PTR [eax]
  00053	85 ff		 test	 edi, edi
  00055	76 0d		 jbe	 SHORT $LN31@Grow
  00057	57		 push	 edi
  00058	55		 push	 ebp
  00059	6a 10		 push	 16			; 00000010H
  0005b	50		 push	 eax
  0005c	e8 00 00 00 00	 call	 _memcpy_s
  00061	83 c4 10	 add	 esp, 16			; 00000010H
$LN31@Grow:
  00064	55		 push	 ebp
  00065	e8 00 00 00 00	 call	 ??3@YAXPAX@Z		; operator delete
  0006a	83 c4 04	 add	 esp, 4
  0006d	5d		 pop	 ebp
$LN33@Grow:
  0006e	89 7e 14	 mov	 DWORD PTR [esi+20], edi
  00071	c7 46 18 0f 00
	00 00		 mov	 DWORD PTR [esi+24], 15	; 0000000fH

; 2129 : 		return (0 < _Newsize);	// return true only if more work to do

  00078	33 c9		 xor	 ecx, ecx
  0007a	c6 44 3e 04 00	 mov	 BYTE PTR [esi+edi+4], 0
  0007f	3b cb		 cmp	 ecx, ebx
  00081	5f		 pop	 edi
  00082	1b c0		 sbb	 eax, eax
  00084	5e		 pop	 esi
  00085	f7 d8		 neg	 eax
  00087	5b		 pop	 ebx

; 2130 : 		}

  00088	c2 08 00	 ret	 8
$LN3@Grow:

; 2127 : 		else if (_Newsize == 0)

  0008b	85 db		 test	 ebx, ebx
  0008d	75 20		 jne	 SHORT $LN49@Grow

; 2128 : 			_Eos(0);	// new size is zero, just null terminate

  0008f	89 5e 14	 mov	 DWORD PTR [esi+20], ebx
  00092	83 f8 10	 cmp	 eax, 16			; 00000010H
  00095	72 12		 jb	 SHORT $LN47@Grow
  00097	8b 76 04	 mov	 esi, DWORD PTR [esi+4]

; 2129 : 		return (0 < _Newsize);	// return true only if more work to do

  0009a	33 c9		 xor	 ecx, ecx
  0009c	3b cb		 cmp	 ecx, ebx
  0009e	88 1e		 mov	 BYTE PTR [esi], bl
  000a0	1b c0		 sbb	 eax, eax
  000a2	5e		 pop	 esi
  000a3	f7 d8		 neg	 eax
  000a5	5b		 pop	 ebx

; 2130 : 		}

  000a6	c2 08 00	 ret	 8

; 2128 : 			_Eos(0);	// new size is zero, just null terminate

$LN47@Grow:
  000a9	83 c6 04	 add	 esi, 4
  000ac	c6 06 00	 mov	 BYTE PTR [esi], 0
$LN49@Grow:

; 2129 : 		return (0 < _Newsize);	// return true only if more work to do

  000af	33 c9		 xor	 ecx, ecx
  000b1	3b cb		 cmp	 ecx, ebx
  000b3	1b c0		 sbb	 eax, eax
  000b5	5e		 pop	 esi
  000b6	f7 d8		 neg	 eax
  000b8	5b		 pop	 ebx

; 2130 : 		}

  000b9	c2 08 00	 ret	 8
?_Grow@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAE_NI_N@Z ENDP ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Grow
_TEXT	ENDS
PUBLIC	?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::append
; Function compile flags: /Ogtpy
;	COMDAT ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z
_TEXT	SEGMENT
__Count$ = 8						; size = 4
__Ch$ = 12						; size = 1
?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z PROC ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::append, COMDAT
; _this$ = ecx

; 998  : 		{	// append _Count * _Ch

  00000	53		 push	 ebx

; 999  : 			if (npos - _Mysize <= _Count)

  00001	8b 5c 24 08	 mov	 ebx, DWORD PTR __Count$[esp]
  00005	56		 push	 esi
  00006	83 c8 ff	 or	 eax, -1
  00009	8b f1		 mov	 esi, ecx
  0000b	2b 46 14	 sub	 eax, DWORD PTR [esi+20]
  0000e	3b c3		 cmp	 eax, ebx
  00010	77 05		 ja	 SHORT $LN2@append

; 1000 : 			_String_base::_Xlen();	// result too long

  00012	e8 00 00 00 00	 call	 ?_Xlen@_String_base@std@@SAXXZ ; std::_String_base::_Xlen
$LN2@append:

; 1001 : 
; 1002 : 		size_type _Num;
; 1003 : 		if (0 < _Count && _Grow(_Num = _Mysize + _Count))

  00017	85 db		 test	 ebx, ebx
  00019	0f 86 80 00 00
	00		 jbe	 $LN63@append
  0001f	57		 push	 edi
  00020	8b 7e 14	 mov	 edi, DWORD PTR [esi+20]
  00023	03 fb		 add	 edi, ebx
  00025	83 ff fe	 cmp	 edi, -2			; fffffffeH
  00028	76 05		 jbe	 SHORT $LN10@append
  0002a	e8 00 00 00 00	 call	 ?_Xlen@_String_base@std@@SAXXZ ; std::_String_base::_Xlen
$LN10@append:
  0002f	8b 46 18	 mov	 eax, DWORD PTR [esi+24]
  00032	3b c7		 cmp	 eax, edi
  00034	73 39		 jae	 SHORT $LN9@append
  00036	8b 4e 14	 mov	 ecx, DWORD PTR [esi+20]
  00039	51		 push	 ecx
  0003a	57		 push	 edi
  0003b	8b ce		 mov	 ecx, esi
  0003d	e8 00 00 00 00	 call	 ?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXII@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Copy
  00042	85 ff		 test	 edi, edi
$LN66@append:
  00044	76 58		 jbe	 SHORT $LN64@append

; 1004 : 			{	// make room and append new stuff using assign
; 1005 : 			_Chassign(_Mysize, _Count, _Ch);

  00046	8b 54 24 14	 mov	 edx, DWORD PTR __Ch$[esp+8]
  0004a	8b 46 14	 mov	 eax, DWORD PTR [esi+20]
  0004d	52		 push	 edx
  0004e	53		 push	 ebx
  0004f	50		 push	 eax
  00050	8b ce		 mov	 ecx, esi
  00052	e8 00 00 00 00	 call	 ?_Chassign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXIID@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Chassign

; 1006 : 			_Eos(_Num);

  00057	83 7e 18 10	 cmp	 DWORD PTR [esi+24], 16	; 00000010H
  0005b	89 7e 14	 mov	 DWORD PTR [esi+20], edi
  0005e	72 37		 jb	 SHORT $LN59@append
  00060	8b 46 04	 mov	 eax, DWORD PTR [esi+4]
  00063	c6 04 38 00	 mov	 BYTE PTR [eax+edi], 0
  00067	5f		 pop	 edi

; 1007 : 			}
; 1008 : 		return (*this);

  00068	8b c6		 mov	 eax, esi
  0006a	5e		 pop	 esi
  0006b	5b		 pop	 ebx

; 1009 : 		}

  0006c	c2 08 00	 ret	 8

; 1001 : 
; 1002 : 		size_type _Num;
; 1003 : 		if (0 < _Count && _Grow(_Num = _Mysize + _Count))

$LN9@append:
  0006f	85 ff		 test	 edi, edi
  00071	75 d1		 jne	 SHORT $LN66@append
  00073	89 7e 14	 mov	 DWORD PTR [esi+20], edi
  00076	83 f8 10	 cmp	 eax, 16			; 00000010H
  00079	72 0e		 jb	 SHORT $LN51@append
  0007b	8b 46 04	 mov	 eax, DWORD PTR [esi+4]
  0007e	5f		 pop	 edi
  0007f	c6 00 00	 mov	 BYTE PTR [eax], 0

; 1007 : 			}
; 1008 : 		return (*this);

  00082	8b c6		 mov	 eax, esi
  00084	5e		 pop	 esi
  00085	5b		 pop	 ebx

; 1009 : 		}

  00086	c2 08 00	 ret	 8

; 1001 : 
; 1002 : 		size_type _Num;
; 1003 : 		if (0 < _Count && _Grow(_Num = _Mysize + _Count))

$LN51@append:
  00089	8d 46 04	 lea	 eax, DWORD PTR [esi+4]
  0008c	5f		 pop	 edi
  0008d	c6 00 00	 mov	 BYTE PTR [eax], 0

; 1007 : 			}
; 1008 : 		return (*this);

  00090	8b c6		 mov	 eax, esi
  00092	5e		 pop	 esi
  00093	5b		 pop	 ebx

; 1009 : 		}

  00094	c2 08 00	 ret	 8

; 1006 : 			_Eos(_Num);

$LN59@append:
  00097	8d 46 04	 lea	 eax, DWORD PTR [esi+4]
  0009a	c6 04 38 00	 mov	 BYTE PTR [eax+edi], 0
$LN64@append:
  0009e	5f		 pop	 edi
$LN63@append:

; 1007 : 			}
; 1008 : 		return (*this);

  0009f	8b c6		 mov	 eax, esi
  000a1	5e		 pop	 esi
  000a2	5b		 pop	 ebx

; 1009 : 		}

  000a3	c2 08 00	 ret	 8
?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z ENDP ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::append
_TEXT	ENDS
PUBLIC	?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::assign
; Function compile flags: /Ogtpy
;	COMDAT ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z
_TEXT	SEGMENT
__Right$ = 8						; size = 4
__Roff$ = 12						; size = 4
__Count$ = 16						; size = 4
?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z PROC ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::assign, COMDAT
; _this$ = ecx

; 1046 : 		{	// assign _Right [_Roff, _Roff + _Count)

  00000	53		 push	 ebx

; 1047 : 		if (_Right.size() < _Roff)

  00001	8b 5c 24 08	 mov	 ebx, DWORD PTR __Right$[esp]
  00005	55		 push	 ebp
  00006	8b 6c 24 10	 mov	 ebp, DWORD PTR __Roff$[esp+4]
  0000a	56		 push	 esi
  0000b	57		 push	 edi
  0000c	8b f1		 mov	 esi, ecx
  0000e	39 6b 14	 cmp	 DWORD PTR [ebx+20], ebp
  00011	73 05		 jae	 SHORT $LN5@assign

; 1048 : 			_String_base::_Xran();	// _Roff off end

  00013	e8 00 00 00 00	 call	 ?_Xran@_String_base@std@@SAXXZ ; std::_String_base::_Xran
$LN5@assign:

; 1049 : 		size_type _Num = _Right.size() - _Roff;

  00018	8b 7b 14	 mov	 edi, DWORD PTR [ebx+20]

; 1050 : 		if (_Count < _Num)

  0001b	8b 44 24 1c	 mov	 eax, DWORD PTR __Count$[esp+12]
  0001f	2b fd		 sub	 edi, ebp
  00021	3b c7		 cmp	 eax, edi
  00023	73 02		 jae	 SHORT $LN4@assign

; 1051 : 			_Num = _Count;	// trim _Num to size

  00025	8b f8		 mov	 edi, eax
$LN4@assign:

; 1052 : 
; 1053 : 		if (this == &_Right)

  00027	3b f3		 cmp	 esi, ebx
  00029	75 1f		 jne	 SHORT $LN3@assign

; 1054 : 			erase((size_type)(_Roff + _Num)), erase(0, _Roff);	// substring

  0002b	6a ff		 push	 -1
  0002d	03 fd		 add	 edi, ebp
  0002f	57		 push	 edi
  00030	8b ce		 mov	 ecx, esi
  00032	e8 00 00 00 00	 call	 ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@II@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::erase
  00037	55		 push	 ebp
  00038	6a 00		 push	 0
  0003a	8b ce		 mov	 ecx, esi
  0003c	e8 00 00 00 00	 call	 ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@II@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::erase
  00041	5f		 pop	 edi

; 1059 : 			}
; 1060 : 		return (*this);

  00042	8b c6		 mov	 eax, esi
  00044	5e		 pop	 esi
  00045	5d		 pop	 ebp
  00046	5b		 pop	 ebx

; 1061 : 		}

  00047	c2 0c 00	 ret	 12			; 0000000cH
$LN3@assign:

; 1055 : 		else if (_Grow(_Num))

  0004a	83 ff fe	 cmp	 edi, -2			; fffffffeH
  0004d	76 05		 jbe	 SHORT $LN17@assign
  0004f	e8 00 00 00 00	 call	 ?_Xlen@_String_base@std@@SAXXZ ; std::_String_base::_Xlen
$LN17@assign:
  00054	8b 46 18	 mov	 eax, DWORD PTR [esi+24]
  00057	3b c7		 cmp	 eax, edi
  00059	73 1b		 jae	 SHORT $LN16@assign
  0005b	8b 46 14	 mov	 eax, DWORD PTR [esi+20]
  0005e	50		 push	 eax
  0005f	57		 push	 edi
  00060	8b ce		 mov	 ecx, esi
  00062	e8 00 00 00 00	 call	 ?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXII@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Copy
  00067	85 ff		 test	 edi, edi
$LN87@assign:
  00069	76 66		 jbe	 SHORT $LN86@assign

; 1056 : 			{	// make room and assign new stuff
; 1057 : 			_Traits_helper::copy_s<_Traits>(_Myptr(), _Myres, _Right._Myptr() + _Roff, _Num);

  0006b	83 7b 18 10	 cmp	 DWORD PTR [ebx+24], 16	; 00000010H
  0006f	72 2f		 jb	 SHORT $LN64@assign
  00071	8b 53 04	 mov	 edx, DWORD PTR [ebx+4]
  00074	eb 2d		 jmp	 SHORT $LN65@assign

; 1055 : 		else if (_Grow(_Num))

$LN16@assign:
  00076	85 ff		 test	 edi, edi
  00078	75 ef		 jne	 SHORT $LN87@assign
  0007a	89 7e 14	 mov	 DWORD PTR [esi+20], edi
  0007d	83 f8 10	 cmp	 eax, 16			; 00000010H
  00080	72 0f		 jb	 SHORT $LN58@assign
  00082	8b 46 04	 mov	 eax, DWORD PTR [esi+4]
  00085	5f		 pop	 edi
  00086	c6 00 00	 mov	 BYTE PTR [eax], 0

; 1059 : 			}
; 1060 : 		return (*this);

  00089	8b c6		 mov	 eax, esi
  0008b	5e		 pop	 esi
  0008c	5d		 pop	 ebp
  0008d	5b		 pop	 ebx

; 1061 : 		}

  0008e	c2 0c 00	 ret	 12			; 0000000cH

; 1055 : 		else if (_Grow(_Num))

$LN58@assign:
  00091	8d 46 04	 lea	 eax, DWORD PTR [esi+4]
  00094	5f		 pop	 edi
  00095	c6 00 00	 mov	 BYTE PTR [eax], 0

; 1059 : 			}
; 1060 : 		return (*this);

  00098	8b c6		 mov	 eax, esi
  0009a	5e		 pop	 esi
  0009b	5d		 pop	 ebp
  0009c	5b		 pop	 ebx

; 1061 : 		}

  0009d	c2 0c 00	 ret	 12			; 0000000cH

; 1056 : 			{	// make room and assign new stuff
; 1057 : 			_Traits_helper::copy_s<_Traits>(_Myptr(), _Myres, _Right._Myptr() + _Roff, _Num);

$LN64@assign:
  000a0	8d 53 04	 lea	 edx, DWORD PTR [ebx+4]
$LN65@assign:
  000a3	8b 4e 18	 mov	 ecx, DWORD PTR [esi+24]
  000a6	8d 5e 04	 lea	 ebx, DWORD PTR [esi+4]
  000a9	83 f9 10	 cmp	 ecx, 16			; 00000010H
  000ac	72 04		 jb	 SHORT $LN68@assign
  000ae	8b 03		 mov	 eax, DWORD PTR [ebx]
  000b0	eb 02		 jmp	 SHORT $LN69@assign
$LN68@assign:
  000b2	8b c3		 mov	 eax, ebx
$LN69@assign:
  000b4	57		 push	 edi
  000b5	03 d5		 add	 edx, ebp
  000b7	52		 push	 edx
  000b8	51		 push	 ecx
  000b9	50		 push	 eax
  000ba	e8 00 00 00 00	 call	 _memcpy_s
  000bf	83 c4 10	 add	 esp, 16			; 00000010H

; 1058 : 			_Eos(_Num);

  000c2	83 7e 18 10	 cmp	 DWORD PTR [esi+24], 16	; 00000010H
  000c6	89 7e 14	 mov	 DWORD PTR [esi+20], edi
  000c9	72 02		 jb	 SHORT $LN82@assign
  000cb	8b 1b		 mov	 ebx, DWORD PTR [ebx]
$LN82@assign:
  000cd	c6 04 3b 00	 mov	 BYTE PTR [ebx+edi], 0
$LN86@assign:
  000d1	5f		 pop	 edi

; 1059 : 			}
; 1060 : 		return (*this);

  000d2	8b c6		 mov	 eax, esi
  000d4	5e		 pop	 esi
  000d5	5d		 pop	 ebp
  000d6	5b		 pop	 ebx

; 1061 : 		}

  000d7	c2 0c 00	 ret	 12			; 0000000cH
?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z ENDP ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::assign
_TEXT	ENDS
PUBLIC	?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::append
; Function compile flags: /Ogtpy
;	COMDAT ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z
_TEXT	SEGMENT
__Right$ = 8						; size = 4
__Roff$ = 12						; size = 4
__Count$ = 16						; size = 4
?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z PROC ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::append, COMDAT
; _this$ = ecx

; 951  : 		{	// append _Right [_Roff, _Roff + _Count)

  00000	53		 push	 ebx
  00001	55		 push	 ebp

; 952  : 		if (_Right.size() < _Roff)

  00002	8b 6c 24 0c	 mov	 ebp, DWORD PTR __Right$[esp+4]
  00006	56		 push	 esi
  00007	57		 push	 edi
  00008	8b 7c 24 18	 mov	 edi, DWORD PTR __Roff$[esp+12]
  0000c	8b f1		 mov	 esi, ecx
  0000e	39 7d 14	 cmp	 DWORD PTR [ebp+20], edi
  00011	73 05		 jae	 SHORT $LN5@append@2

; 953  : 			_String_base::_Xran();	// _Roff off end

  00013	e8 00 00 00 00	 call	 ?_Xran@_String_base@std@@SAXXZ ; std::_String_base::_Xran
$LN5@append@2:

; 954  : 		size_type _Num = _Right.size() - _Roff;

  00018	8b 45 14	 mov	 eax, DWORD PTR [ebp+20]

; 955  : 		if (_Num < _Count)

  0001b	8b 5c 24 1c	 mov	 ebx, DWORD PTR __Count$[esp+12]
  0001f	2b c7		 sub	 eax, edi
  00021	3b c3		 cmp	 eax, ebx
  00023	73 02		 jae	 SHORT $LN4@append@2

; 956  : 			_Count = _Num;	// trim _Count to size

  00025	8b d8		 mov	 ebx, eax
$LN4@append@2:

; 957  : 		if (npos - _Mysize <= _Count || _Mysize + _Count < _Mysize)

  00027	8b 46 14	 mov	 eax, DWORD PTR [esi+20]
  0002a	83 c9 ff	 or	 ecx, -1
  0002d	2b c8		 sub	 ecx, eax
  0002f	3b cb		 cmp	 ecx, ebx
  00031	76 07		 jbe	 SHORT $LN2@append@2
  00033	8d 14 18	 lea	 edx, DWORD PTR [eax+ebx]
  00036	3b d0		 cmp	 edx, eax
  00038	73 05		 jae	 SHORT $LN3@append@2
$LN2@append@2:

; 958  : 			_String_base::_Xlen();	// result too long

  0003a	e8 00 00 00 00	 call	 ?_Xlen@_String_base@std@@SAXXZ ; std::_String_base::_Xlen
$LN3@append@2:

; 959  : 
; 960  : 		if (0 < _Count && _Grow(_Num = _Mysize + _Count))

  0003f	85 db		 test	 ebx, ebx
  00041	0f 86 ab 00 00
	00		 jbe	 $LN87@append@2
  00047	8b 7e 14	 mov	 edi, DWORD PTR [esi+20]
  0004a	03 fb		 add	 edi, ebx
  0004c	83 ff fe	 cmp	 edi, -2			; fffffffeH
  0004f	76 05		 jbe	 SHORT $LN17@append@2
  00051	e8 00 00 00 00	 call	 ?_Xlen@_String_base@std@@SAXXZ ; std::_String_base::_Xlen
$LN17@append@2:
  00056	8b 46 18	 mov	 eax, DWORD PTR [esi+24]
  00059	3b c7		 cmp	 eax, edi
  0005b	73 1f		 jae	 SHORT $LN16@append@2
  0005d	8b 46 14	 mov	 eax, DWORD PTR [esi+20]
  00060	50		 push	 eax
  00061	57		 push	 edi
  00062	8b ce		 mov	 ecx, esi
  00064	e8 00 00 00 00	 call	 ?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXII@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Copy
  00069	85 ff		 test	 edi, edi
$LN88@append@2:
  0006b	0f 86 81 00 00
	00		 jbe	 $LN87@append@2

; 961  : 			{	// make room and append new stuff
; 962  : 			_Traits_helper::copy_s<_Traits>(_Myptr() + _Mysize, _Myres - _Mysize,
; 963  : 				_Right._Myptr() + _Roff, _Count);

  00071	83 7d 18 10	 cmp	 DWORD PTR [ebp+24], 16	; 00000010H
  00075	72 2f		 jb	 SHORT $LN64@append@2
  00077	8b 6d 04	 mov	 ebp, DWORD PTR [ebp+4]
  0007a	eb 2d		 jmp	 SHORT $LN65@append@2

; 959  : 
; 960  : 		if (0 < _Count && _Grow(_Num = _Mysize + _Count))

$LN16@append@2:
  0007c	85 ff		 test	 edi, edi
  0007e	75 eb		 jne	 SHORT $LN88@append@2
  00080	89 7e 14	 mov	 DWORD PTR [esi+20], edi
  00083	83 f8 10	 cmp	 eax, 16			; 00000010H
  00086	72 0f		 jb	 SHORT $LN58@append@2
  00088	8b 46 04	 mov	 eax, DWORD PTR [esi+4]
  0008b	5f		 pop	 edi
  0008c	c6 00 00	 mov	 BYTE PTR [eax], 0

; 965  : 			}
; 966  : 		return (*this);

  0008f	8b c6		 mov	 eax, esi
  00091	5e		 pop	 esi
  00092	5d		 pop	 ebp
  00093	5b		 pop	 ebx

; 967  : 		}

  00094	c2 0c 00	 ret	 12			; 0000000cH

; 959  : 
; 960  : 		if (0 < _Count && _Grow(_Num = _Mysize + _Count))

$LN58@append@2:
  00097	8d 46 04	 lea	 eax, DWORD PTR [esi+4]
  0009a	5f		 pop	 edi
  0009b	c6 00 00	 mov	 BYTE PTR [eax], 0

; 965  : 			}
; 966  : 		return (*this);

  0009e	8b c6		 mov	 eax, esi
  000a0	5e		 pop	 esi
  000a1	5d		 pop	 ebp
  000a2	5b		 pop	 ebx

; 967  : 		}

  000a3	c2 0c 00	 ret	 12			; 0000000cH

; 961  : 			{	// make room and append new stuff
; 962  : 			_Traits_helper::copy_s<_Traits>(_Myptr() + _Mysize, _Myres - _Mysize,
; 963  : 				_Right._Myptr() + _Roff, _Count);

$LN64@append@2:
  000a6	83 c5 04	 add	 ebp, 4
$LN65@append@2:
  000a9	8b 46 18	 mov	 eax, DWORD PTR [esi+24]
  000ac	83 f8 10	 cmp	 eax, 16			; 00000010H
  000af	72 05		 jb	 SHORT $LN68@append@2
  000b1	8b 56 04	 mov	 edx, DWORD PTR [esi+4]
  000b4	eb 03		 jmp	 SHORT $LN69@append@2
$LN68@append@2:
  000b6	8d 56 04	 lea	 edx, DWORD PTR [esi+4]
$LN69@append@2:
  000b9	8b 4e 14	 mov	 ecx, DWORD PTR [esi+20]
  000bc	53		 push	 ebx
  000bd	8b 5c 24 1c	 mov	 ebx, DWORD PTR __Roff$[esp+16]
  000c1	03 eb		 add	 ebp, ebx
  000c3	2b c1		 sub	 eax, ecx
  000c5	55		 push	 ebp
  000c6	50		 push	 eax
  000c7	03 ca		 add	 ecx, edx
  000c9	51		 push	 ecx
  000ca	e8 00 00 00 00	 call	 _memcpy_s
  000cf	83 c4 10	 add	 esp, 16			; 00000010H

; 964  : 			_Eos(_Num);

  000d2	83 7e 18 10	 cmp	 DWORD PTR [esi+24], 16	; 00000010H
  000d6	89 7e 14	 mov	 DWORD PTR [esi+20], edi
  000d9	72 10		 jb	 SHORT $LN82@append@2
  000db	8b 46 04	 mov	 eax, DWORD PTR [esi+4]
  000de	c6 04 38 00	 mov	 BYTE PTR [eax+edi], 0
  000e2	5f		 pop	 edi

; 965  : 			}
; 966  : 		return (*this);

  000e3	8b c6		 mov	 eax, esi
  000e5	5e		 pop	 esi
  000e6	5d		 pop	 ebp
  000e7	5b		 pop	 ebx

; 967  : 		}

  000e8	c2 0c 00	 ret	 12			; 0000000cH

; 964  : 			_Eos(_Num);

$LN82@append@2:
  000eb	8d 46 04	 lea	 eax, DWORD PTR [esi+4]
  000ee	c6 04 38 00	 mov	 BYTE PTR [eax+edi], 0
$LN87@append@2:
  000f2	5f		 pop	 edi

; 965  : 			}
; 966  : 		return (*this);

  000f3	8b c6		 mov	 eax, esi
  000f5	5e		 pop	 esi
  000f6	5d		 pop	 ebp
  000f7	5b		 pop	 ebx

; 967  : 		}

  000f8	c2 0c 00	 ret	 12			; 0000000cH
?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z ENDP ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::append
_TEXT	ENDS
PUBLIC	?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::append
; Function compile flags: /Ogtpy
;	COMDAT ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z
_TEXT	SEGMENT
__Ptr$ = 8						; size = 4
__Count$ = 12						; size = 4
?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z PROC ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::append, COMDAT
; _this$ = ecx

; 971  : 
; 972  :  #if _HAS_ITERATOR_DEBUGGING
; 973  : 		if (_Count != 0)
; 974  : 			_DEBUG_POINTER(_Ptr);
; 975  :  #endif /* _HAS_ITERATOR_DEBUGGING */
; 976  : 
; 977  : 		if (_Inside(_Ptr))

  00000	8b 54 24 04	 mov	 edx, DWORD PTR __Ptr$[esp-4]
  00004	53		 push	 ebx
  00005	56		 push	 esi
  00006	57		 push	 edi
  00007	8b f1		 mov	 esi, ecx
  00009	85 d2		 test	 edx, edx
  0000b	74 46		 je	 SHORT $LN4@append@3
  0000d	8b 7e 18	 mov	 edi, DWORD PTR [esi+24]
  00010	8d 46 04	 lea	 eax, DWORD PTR [esi+4]
  00013	83 ff 10	 cmp	 edi, 16			; 00000010H
  00016	72 04		 jb	 SHORT $LN14@append@3
  00018	8b 08		 mov	 ecx, DWORD PTR [eax]
  0001a	eb 02		 jmp	 SHORT $LN15@append@3
$LN14@append@3:
  0001c	8b c8		 mov	 ecx, eax
$LN15@append@3:
  0001e	3b d1		 cmp	 edx, ecx
  00020	72 31		 jb	 SHORT $LN4@append@3
  00022	83 ff 10	 cmp	 edi, 16			; 00000010H
  00025	72 04		 jb	 SHORT $LN18@append@3
  00027	8b 08		 mov	 ecx, DWORD PTR [eax]
  00029	eb 02		 jmp	 SHORT $LN19@append@3
$LN18@append@3:
  0002b	8b c8		 mov	 ecx, eax
$LN19@append@3:
  0002d	8b 5e 14	 mov	 ebx, DWORD PTR [esi+20]
  00030	03 d9		 add	 ebx, ecx
  00032	3b da		 cmp	 ebx, edx
  00034	76 1d		 jbe	 SHORT $LN4@append@3

; 978  : 			return (append(*this, _Ptr - _Myptr(), _Count));	// substring

  00036	83 ff 10	 cmp	 edi, 16			; 00000010H
  00039	72 02		 jb	 SHORT $LN22@append@3
  0003b	8b 00		 mov	 eax, DWORD PTR [eax]
$LN22@append@3:
  0003d	8b 4c 24 14	 mov	 ecx, DWORD PTR __Count$[esp+8]
  00041	51		 push	 ecx
  00042	2b d0		 sub	 edx, eax
  00044	52		 push	 edx
  00045	56		 push	 esi
  00046	8b ce		 mov	 ecx, esi
  00048	e8 00 00 00 00	 call	 ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::append
  0004d	5f		 pop	 edi
  0004e	5e		 pop	 esi
  0004f	5b		 pop	 ebx

; 989  : 		}

  00050	c2 08 00	 ret	 8
$LN4@append@3:

; 979  : 		if (npos - _Mysize <= _Count || _Mysize + _Count < _Mysize)

  00053	8b 46 14	 mov	 eax, DWORD PTR [esi+20]
  00056	83 ca ff	 or	 edx, -1
  00059	55		 push	 ebp
  0005a	8b 6c 24 18	 mov	 ebp, DWORD PTR __Count$[esp+12]
  0005e	2b d0		 sub	 edx, eax
  00060	3b d5		 cmp	 edx, ebp
  00062	76 07		 jbe	 SHORT $LN2@append@3
  00064	8d 0c 28	 lea	 ecx, DWORD PTR [eax+ebp]
  00067	3b c8		 cmp	 ecx, eax
  00069	73 05		 jae	 SHORT $LN3@append@3
$LN2@append@3:

; 980  : 			_String_base::_Xlen();	// result too long

  0006b	e8 00 00 00 00	 call	 ?_Xlen@_String_base@std@@SAXXZ ; std::_String_base::_Xlen
$LN3@append@3:

; 981  : 
; 982  : 		size_type _Num;
; 983  : 		if (0 < _Count && _Grow(_Num = _Mysize + _Count))

  00070	85 ed		 test	 ebp, ebp
  00072	0f 86 87 00 00
	00		 jbe	 $LN92@append@3
  00078	8b 7e 14	 mov	 edi, DWORD PTR [esi+20]
  0007b	03 fd		 add	 edi, ebp
  0007d	83 ff fe	 cmp	 edi, -2			; fffffffeH
  00080	76 05		 jbe	 SHORT $LN29@append@3
  00082	e8 00 00 00 00	 call	 ?_Xlen@_String_base@std@@SAXXZ ; std::_String_base::_Xlen
$LN29@append@3:
  00087	8b 46 18	 mov	 eax, DWORD PTR [esi+24]
  0008a	3b c7		 cmp	 eax, edi
  0008c	73 1f		 jae	 SHORT $LN28@append@3
  0008e	8b 56 14	 mov	 edx, DWORD PTR [esi+20]
  00091	52		 push	 edx
  00092	57		 push	 edi
  00093	8b ce		 mov	 ecx, esi
  00095	e8 00 00 00 00	 call	 ?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXII@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Copy
  0009a	85 ff		 test	 edi, edi
$LN95@append@3:
  0009c	76 61		 jbe	 SHORT $LN92@append@3

; 984  : 			{	// make room and append new stuff
; 985  : 			_Traits_helper::copy_s<_Traits>(_Myptr() + _Mysize, _Myres - _Mysize, _Ptr, _Count);

  0009e	8b 46 18	 mov	 eax, DWORD PTR [esi+24]
  000a1	8d 5e 04	 lea	 ebx, DWORD PTR [esi+4]
  000a4	83 f8 10	 cmp	 eax, 16			; 00000010H
  000a7	72 2e		 jb	 SHORT $LN76@append@3
  000a9	8b 13		 mov	 edx, DWORD PTR [ebx]
  000ab	eb 2c		 jmp	 SHORT $LN77@append@3

; 981  : 
; 982  : 		size_type _Num;
; 983  : 		if (0 < _Count && _Grow(_Num = _Mysize + _Count))

$LN28@append@3:
  000ad	85 ff		 test	 edi, edi
  000af	75 eb		 jne	 SHORT $LN95@append@3
  000b1	89 7e 14	 mov	 DWORD PTR [esi+20], edi
  000b4	83 f8 10	 cmp	 eax, 16			; 00000010H
  000b7	72 0f		 jb	 SHORT $LN70@append@3
  000b9	8b 46 04	 mov	 eax, DWORD PTR [esi+4]
  000bc	5d		 pop	 ebp
  000bd	5f		 pop	 edi
  000be	c6 00 00	 mov	 BYTE PTR [eax], 0

; 987  : 			}
; 988  : 		return (*this);

  000c1	8b c6		 mov	 eax, esi
  000c3	5e		 pop	 esi
  000c4	5b		 pop	 ebx

; 989  : 		}

  000c5	c2 08 00	 ret	 8

; 981  : 
; 982  : 		size_type _Num;
; 983  : 		if (0 < _Count && _Grow(_Num = _Mysize + _Count))

$LN70@append@3:
  000c8	8d 46 04	 lea	 eax, DWORD PTR [esi+4]
  000cb	5d		 pop	 ebp
  000cc	5f		 pop	 edi
  000cd	c6 00 00	 mov	 BYTE PTR [eax], 0

; 987  : 			}
; 988  : 		return (*this);

  000d0	8b c6		 mov	 eax, esi
  000d2	5e		 pop	 esi
  000d3	5b		 pop	 ebx

; 989  : 		}

  000d4	c2 08 00	 ret	 8

; 984  : 			{	// make room and append new stuff
; 985  : 			_Traits_helper::copy_s<_Traits>(_Myptr() + _Mysize, _Myres - _Mysize, _Ptr, _Count);

$LN76@append@3:
  000d7	8b d3		 mov	 edx, ebx
$LN77@append@3:
  000d9	8b 4e 14	 mov	 ecx, DWORD PTR [esi+20]
  000dc	55		 push	 ebp
  000dd	8b 6c 24 18	 mov	 ebp, DWORD PTR __Ptr$[esp+16]
  000e1	2b c1		 sub	 eax, ecx
  000e3	55		 push	 ebp
  000e4	50		 push	 eax
  000e5	03 ca		 add	 ecx, edx
  000e7	51		 push	 ecx
  000e8	e8 00 00 00 00	 call	 _memcpy_s
  000ed	83 c4 10	 add	 esp, 16			; 00000010H

; 986  : 			_Eos(_Num);

  000f0	83 7e 18 10	 cmp	 DWORD PTR [esi+24], 16	; 00000010H
  000f4	89 7e 14	 mov	 DWORD PTR [esi+20], edi
  000f7	72 02		 jb	 SHORT $LN90@append@3
  000f9	8b 1b		 mov	 ebx, DWORD PTR [ebx]
$LN90@append@3:
  000fb	c6 04 3b 00	 mov	 BYTE PTR [ebx+edi], 0
$LN92@append@3:
  000ff	5d		 pop	 ebp
  00100	5f		 pop	 edi

; 987  : 			}
; 988  : 		return (*this);

  00101	8b c6		 mov	 eax, esi
  00103	5e		 pop	 esi
  00104	5b		 pop	 ebx

; 989  : 		}

  00105	c2 08 00	 ret	 8
?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z ENDP ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::append
_TEXT	ENDS
PUBLIC	?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::assign
; Function compile flags: /Ogtpy
;	COMDAT ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z
_TEXT	SEGMENT
__Ptr$ = 8						; size = 4
__Count$ = 12						; size = 4
?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z PROC ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::assign, COMDAT
; _this$ = ecx

; 1064 : 		{	// assign [_Ptr, _Ptr + _Count)

  00000	55		 push	 ebp

; 1065 : 
; 1066 :  #if _HAS_ITERATOR_DEBUGGING
; 1067 : 		if (_Count != 0)
; 1068 : 			_DEBUG_POINTER(_Ptr);
; 1069 :  #endif /* _HAS_ITERATOR_DEBUGGING */
; 1070 : 
; 1071 : 		if (_Inside(_Ptr))

  00001	8b 6c 24 08	 mov	 ebp, DWORD PTR __Ptr$[esp]
  00005	56		 push	 esi
  00006	57		 push	 edi
  00007	8b f1		 mov	 esi, ecx
  00009	85 ed		 test	 ebp, ebp
  0000b	74 46		 je	 SHORT $LN93@assign@2
  0000d	8b 56 18	 mov	 edx, DWORD PTR [esi+24]
  00010	8d 46 04	 lea	 eax, DWORD PTR [esi+4]
  00013	83 fa 10	 cmp	 edx, 16			; 00000010H
  00016	72 04		 jb	 SHORT $LN12@assign@2
  00018	8b 08		 mov	 ecx, DWORD PTR [eax]
  0001a	eb 02		 jmp	 SHORT $LN13@assign@2
$LN12@assign@2:
  0001c	8b c8		 mov	 ecx, eax
$LN13@assign@2:
  0001e	3b e9		 cmp	 ebp, ecx
  00020	72 31		 jb	 SHORT $LN93@assign@2
  00022	83 fa 10	 cmp	 edx, 16			; 00000010H
  00025	72 04		 jb	 SHORT $LN16@assign@2
  00027	8b 08		 mov	 ecx, DWORD PTR [eax]
  00029	eb 02		 jmp	 SHORT $LN17@assign@2
$LN16@assign@2:
  0002b	8b c8		 mov	 ecx, eax
$LN17@assign@2:
  0002d	8b 7e 14	 mov	 edi, DWORD PTR [esi+20]
  00030	03 f9		 add	 edi, ecx
  00032	3b fd		 cmp	 edi, ebp
  00034	76 1d		 jbe	 SHORT $LN93@assign@2

; 1072 : 			return (assign(*this, _Ptr - _Myptr(), _Count));	// substring

  00036	83 fa 10	 cmp	 edx, 16			; 00000010H
  00039	72 02		 jb	 SHORT $LN20@assign@2
  0003b	8b 00		 mov	 eax, DWORD PTR [eax]
$LN20@assign@2:
  0003d	8b 4c 24 14	 mov	 ecx, DWORD PTR __Count$[esp+8]
  00041	51		 push	 ecx
  00042	2b e8		 sub	 ebp, eax
  00044	55		 push	 ebp
  00045	56		 push	 esi
  00046	8b ce		 mov	 ecx, esi
  00048	e8 00 00 00 00	 call	 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::assign
  0004d	5f		 pop	 edi
  0004e	5e		 pop	 esi
  0004f	5d		 pop	 ebp

; 1080 : 		}

  00050	c2 08 00	 ret	 8
$LN93@assign@2:

; 1073 : 
; 1074 : 		if (_Grow(_Count))

  00053	8b 7c 24 14	 mov	 edi, DWORD PTR __Count$[esp+8]
  00057	83 ff fe	 cmp	 edi, -2			; fffffffeH
  0005a	76 05		 jbe	 SHORT $LN27@assign@2
  0005c	e8 00 00 00 00	 call	 ?_Xlen@_String_base@std@@SAXXZ ; std::_String_base::_Xlen
$LN27@assign@2:
  00061	8b 46 18	 mov	 eax, DWORD PTR [esi+24]
  00064	3b c7		 cmp	 eax, edi
  00066	73 20		 jae	 SHORT $LN26@assign@2
  00068	8b 56 14	 mov	 edx, DWORD PTR [esi+20]
  0006b	52		 push	 edx
  0006c	57		 push	 edi
  0006d	8b ce		 mov	 ecx, esi
  0006f	e8 00 00 00 00	 call	 ?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXII@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Copy
  00074	85 ff		 test	 edi, edi
$LN94@assign@2:
  00076	76 56		 jbe	 SHORT $LN90@assign@2

; 1075 : 			{	// make room and assign new stuff
; 1076 : 			_Traits_helper::copy_s<_Traits>(_Myptr(), _Myres, _Ptr, _Count);

  00078	8b 4e 18	 mov	 ecx, DWORD PTR [esi+24]
  0007b	53		 push	 ebx
  0007c	8d 5e 04	 lea	 ebx, DWORD PTR [esi+4]
  0007f	83 f9 10	 cmp	 ecx, 16			; 00000010H
  00082	72 2c		 jb	 SHORT $LN74@assign@2
  00084	8b 03		 mov	 eax, DWORD PTR [ebx]
  00086	eb 2a		 jmp	 SHORT $LN75@assign@2

; 1073 : 
; 1074 : 		if (_Grow(_Count))

$LN26@assign@2:
  00088	85 ff		 test	 edi, edi
  0008a	75 ea		 jne	 SHORT $LN94@assign@2
  0008c	89 7e 14	 mov	 DWORD PTR [esi+20], edi
  0008f	83 f8 10	 cmp	 eax, 16			; 00000010H
  00092	72 0e		 jb	 SHORT $LN68@assign@2
  00094	8b 46 04	 mov	 eax, DWORD PTR [esi+4]
  00097	5f		 pop	 edi
  00098	c6 00 00	 mov	 BYTE PTR [eax], 0

; 1078 : 			}
; 1079 : 		return (*this);

  0009b	8b c6		 mov	 eax, esi
  0009d	5e		 pop	 esi
  0009e	5d		 pop	 ebp

; 1080 : 		}

  0009f	c2 08 00	 ret	 8

; 1073 : 
; 1074 : 		if (_Grow(_Count))

$LN68@assign@2:
  000a2	8d 46 04	 lea	 eax, DWORD PTR [esi+4]
  000a5	5f		 pop	 edi
  000a6	c6 00 00	 mov	 BYTE PTR [eax], 0

; 1078 : 			}
; 1079 : 		return (*this);

  000a9	8b c6		 mov	 eax, esi
  000ab	5e		 pop	 esi
  000ac	5d		 pop	 ebp

; 1080 : 		}

  000ad	c2 08 00	 ret	 8

; 1075 : 			{	// make room and assign new stuff
; 1076 : 			_Traits_helper::copy_s<_Traits>(_Myptr(), _Myres, _Ptr, _Count);

$LN74@assign@2:
  000b0	8b c3		 mov	 eax, ebx
$LN75@assign@2:
  000b2	57		 push	 edi
  000b3	55		 push	 ebp
  000b4	51		 push	 ecx
  000b5	50		 push	 eax
  000b6	e8 00 00 00 00	 call	 _memcpy_s
  000bb	83 c4 10	 add	 esp, 16			; 00000010H

; 1077 : 			_Eos(_Count);

  000be	83 7e 18 10	 cmp	 DWORD PTR [esi+24], 16	; 00000010H
  000c2	89 7e 14	 mov	 DWORD PTR [esi+20], edi
  000c5	72 02		 jb	 SHORT $LN88@assign@2
  000c7	8b 1b		 mov	 ebx, DWORD PTR [ebx]
$LN88@assign@2:
  000c9	c6 04 3b 00	 mov	 BYTE PTR [ebx+edi], 0
  000cd	5b		 pop	 ebx
$LN90@assign@2:
  000ce	5f		 pop	 edi

; 1078 : 			}
; 1079 : 		return (*this);

  000cf	8b c6		 mov	 eax, esi
  000d1	5e		 pop	 esi
  000d2	5d		 pop	 ebp

; 1080 : 		}

  000d3	c2 08 00	 ret	 8
?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z ENDP ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::assign
_TEXT	ENDS
PUBLIC	??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@D@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::operator+=
; Function compile flags: /Ogtpy
;	COMDAT ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@D@Z
_TEXT	SEGMENT
__Ch$ = 8						; size = 1
??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@D@Z PROC ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::operator+=, COMDAT
; _this$ = ecx

; 941  : 		return (append((size_type)1, _Ch));

  00000	8b 44 24 04	 mov	 eax, DWORD PTR __Ch$[esp-4]
  00004	50		 push	 eax
  00005	6a 01		 push	 1
  00007	e8 00 00 00 00	 call	 ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::append

; 942  : 		}

  0000c	c2 04 00	 ret	 4
??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@D@Z ENDP ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::operator+=
_TEXT	ENDS
PUBLIC	??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@IIABV?$allocator@D@1@@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::basic_string<char,std::char_traits<char>,std::allocator<char> >
; Function compile flags: /Ogtpy
;	COMDAT ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@IIABV?$allocator@D@1@@Z
_TEXT	SEGMENT
__Right$ = 8						; size = 4
__Roff$ = 12						; size = 4
__Count$ = 16						; size = 4
__Al$ = 20						; size = 4
??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@IIABV?$allocator@D@1@@Z PROC ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::basic_string<char,std::char_traits<char>,std::allocator<char> >, COMDAT
; _this$ = ecx

; 625  : #if _HAS_ITERATOR_DEBUGGING
; 626  : 		if (_Right._Myfirstiter == _IGNORE_MYITERLIST)
; 627  : 			{
; 628  : 			this->_Myfirstiter = _IGNORE_MYITERLIST;
; 629  : 			}
; 630  : #endif
; 631  : 		_Tidy();
; 632  : 		assign(_Right, _Roff, _Count);

  00000	8b 54 24 04	 mov	 edx, DWORD PTR __Right$[esp-4]
  00004	56		 push	 esi
  00005	8b f1		 mov	 esi, ecx
  00007	8b 4c 24 0c	 mov	 ecx, DWORD PTR __Roff$[esp]
  0000b	33 c0		 xor	 eax, eax
  0000d	89 46 14	 mov	 DWORD PTR [esi+20], eax
  00010	c7 46 18 0f 00
	00 00		 mov	 DWORD PTR [esi+24], 15	; 0000000fH
  00017	88 46 04	 mov	 BYTE PTR [esi+4], al
  0001a	8b 44 24 10	 mov	 eax, DWORD PTR __Count$[esp]
  0001e	50		 push	 eax
  0001f	51		 push	 ecx
  00020	52		 push	 edx
  00021	8b ce		 mov	 ecx, esi
  00023	e8 00 00 00 00	 call	 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::assign

; 633  : 		}

  00028	8b c6		 mov	 eax, esi
  0002a	5e		 pop	 esi
  0002b	c2 10 00	 ret	 16			; 00000010H
??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@IIABV?$allocator@D@1@@Z ENDP ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::basic_string<char,std::char_traits<char>,std::allocator<char> >
_TEXT	ENDS
PUBLIC	?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::append
; Function compile flags: /Ogtpy
;	COMDAT ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@@Z
_TEXT	SEGMENT
__Right$ = 8						; size = 4
?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@@Z PROC ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::append, COMDAT
; _this$ = ecx

; 946  : 		return (append(_Right, 0, npos));

  00000	8b 44 24 04	 mov	 eax, DWORD PTR __Right$[esp-4]
  00004	6a ff		 push	 -1
  00006	6a 00		 push	 0
  00008	50		 push	 eax
  00009	e8 00 00 00 00	 call	 ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::append

; 947  : 		}

  0000e	c2 04 00	 ret	 4
?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@@Z ENDP ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::append
_TEXT	ENDS
PUBLIC	?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::append
; Function compile flags: /Ogtpy
;	COMDAT ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD@Z
_TEXT	SEGMENT
__Ptr$ = 8						; size = 4
?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD@Z PROC ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::append, COMDAT
; _this$ = ecx

; 992  : 		{	// append [_Ptr, <null>)

  00000	56		 push	 esi

; 993  : 		_DEBUG_POINTER(_Ptr);
; 994  : 		return (append(_Ptr, _Traits::length(_Ptr)));

  00001	8b 74 24 08	 mov	 esi, DWORD PTR __Ptr$[esp]
  00005	8b c6		 mov	 eax, esi
  00007	57		 push	 edi
  00008	8d 78 01	 lea	 edi, DWORD PTR [eax+1]
  0000b	eb 03 8d 49 00	 npad	 5
$LL5@append@4:
  00010	8a 10		 mov	 dl, BYTE PTR [eax]
  00012	40		 inc	 eax
  00013	84 d2		 test	 dl, dl
  00015	75 f9		 jne	 SHORT $LL5@append@4
  00017	2b c7		 sub	 eax, edi
  00019	50		 push	 eax
  0001a	56		 push	 esi
  0001b	e8 00 00 00 00	 call	 ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::append
  00020	5f		 pop	 edi
  00021	5e		 pop	 esi

; 995  : 		}

  00022	c2 04 00	 ret	 4
?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD@Z ENDP ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::append
_TEXT	ENDS
PUBLIC	?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::assign
; Function compile flags: /Ogtpy
;	COMDAT ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD@Z
_TEXT	SEGMENT
__Ptr$ = 8						; size = 4
?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD@Z PROC ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::assign, COMDAT
; _this$ = ecx

; 1083 : 		{	// assign [_Ptr, <null>)

  00000	56		 push	 esi

; 1084 : 		_DEBUG_POINTER(_Ptr);
; 1085 : 		return (assign(_Ptr, _Traits::length(_Ptr)));

  00001	8b 74 24 08	 mov	 esi, DWORD PTR __Ptr$[esp]
  00005	8b c6		 mov	 eax, esi
  00007	57		 push	 edi
  00008	8d 78 01	 lea	 edi, DWORD PTR [eax+1]
  0000b	eb 03 8d 49 00	 npad	 5
$LL5@assign@3:
  00010	8a 10		 mov	 dl, BYTE PTR [eax]
  00012	40		 inc	 eax
  00013	84 d2		 test	 dl, dl
  00015	75 f9		 jne	 SHORT $LL5@assign@3
  00017	2b c7		 sub	 eax, edi
  00019	50		 push	 eax
  0001a	56		 push	 esi
  0001b	e8 00 00 00 00	 call	 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::assign
  00020	5f		 pop	 edi
  00021	5e		 pop	 esi

; 1086 : 		}

  00022	c2 04 00	 ret	 4
?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD@Z ENDP ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::assign
_TEXT	ENDS
PUBLIC	??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::basic_string<char,std::char_traits<char>,std::allocator<char> >
; Function compile flags: /Ogtpy
;	COMDAT ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD@Z
_TEXT	SEGMENT
__Ptr$ = 8						; size = 4
??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD@Z PROC ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::basic_string<char,std::char_traits<char>,std::allocator<char> >, COMDAT
; _this$ = ecx

; 652  : 		_Tidy();
; 653  : 		assign(_Ptr);

  00000	8b 54 24 04	 mov	 edx, DWORD PTR __Ptr$[esp-4]
  00004	56		 push	 esi
  00005	8b f1		 mov	 esi, ecx
  00007	8b c2		 mov	 eax, edx
  00009	57		 push	 edi
  0000a	c7 46 18 0f 00
	00 00		 mov	 DWORD PTR [esi+24], 15	; 0000000fH
  00011	c7 46 14 00 00
	00 00		 mov	 DWORD PTR [esi+20], 0
  00018	c6 46 04 00	 mov	 BYTE PTR [esi+4], 0
  0001c	8d 78 01	 lea	 edi, DWORD PTR [eax+1]
  0001f	90		 npad	 1
$LL37@basic_stri@2:
  00020	8a 08		 mov	 cl, BYTE PTR [eax]
  00022	40		 inc	 eax
  00023	84 c9		 test	 cl, cl
  00025	75 f9		 jne	 SHORT $LL37@basic_stri@2
  00027	2b c7		 sub	 eax, edi
  00029	50		 push	 eax
  0002a	52		 push	 edx
  0002b	8b ce		 mov	 ecx, esi
  0002d	e8 00 00 00 00	 call	 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::assign
  00032	5f		 pop	 edi

; 654  : 		}

  00033	8b c6		 mov	 eax, esi
  00035	5e		 pop	 esi
  00036	c2 04 00	 ret	 4
??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD@Z ENDP ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::basic_string<char,std::char_traits<char>,std::allocator<char> >
_TEXT	ENDS
PUBLIC	??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@ABV01@@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::operator+=
; Function compile flags: /Ogtpy
;	COMDAT ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@ABV01@@Z
_TEXT	SEGMENT
__Right$ = 8						; size = 4
??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@ABV01@@Z PROC ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::operator+=, COMDAT
; _this$ = ecx

; 931  : 		return (append(_Right));

  00000	8b 44 24 04	 mov	 eax, DWORD PTR __Right$[esp-4]
  00004	6a ff		 push	 -1
  00006	6a 00		 push	 0
  00008	50		 push	 eax
  00009	e8 00 00 00 00	 call	 ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::append

; 932  : 		}

  0000e	c2 04 00	 ret	 4
??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@ABV01@@Z ENDP ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::operator+=
_TEXT	ENDS
PUBLIC	??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@PBD@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::operator+=
; Function compile flags: /Ogtpy
;	COMDAT ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@PBD@Z
_TEXT	SEGMENT
__Ptr$ = 8						; size = 4
??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@PBD@Z PROC ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::operator+=, COMDAT
; _this$ = ecx

; 935  : 		{	// append [_Ptr, <null>)

  00000	56		 push	 esi

; 936  : 		return (append(_Ptr));

  00001	8b 74 24 08	 mov	 esi, DWORD PTR __Ptr$[esp]
  00005	8b c6		 mov	 eax, esi
  00007	57		 push	 edi
  00008	8d 78 01	 lea	 edi, DWORD PTR [eax+1]
  0000b	eb 03 8d 49 00	 npad	 5
$LL7@operator@2:
  00010	8a 10		 mov	 dl, BYTE PTR [eax]
  00012	40		 inc	 eax
  00013	84 d2		 test	 dl, dl
  00015	75 f9		 jne	 SHORT $LL7@operator@2
  00017	2b c7		 sub	 eax, edi
  00019	50		 push	 eax
  0001a	56		 push	 esi
  0001b	e8 00 00 00 00	 call	 ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::append
  00020	5f		 pop	 edi
  00021	5e		 pop	 esi

; 937  : 		}

  00022	c2 04 00	 ret	 4
??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@PBD@Z ENDP ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::operator+=
_TEXT	ENDS
PUBLIC	?substr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV12@II@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::substr
; Function compile flags: /Ogtpy
;	COMDAT ?substr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV12@II@Z
_TEXT	SEGMENT
$T97702 = -4						; size = 4
___$ReturnUdt$ = 8					; size = 4
__Off$ = 12						; size = 4
__Count$ = 16						; size = 4
?substr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV12@II@Z PROC ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::substr, COMDAT
; _this$ = ecx

; 1998 : 		{	// return [_Off, _Off + _Count) as new string

  00000	51		 push	 ecx

; 1999 : 		return (_Myt(*this, _Off, _Count, get_allocator()));

  00001	8b 54 24 0c	 mov	 edx, DWORD PTR __Off$[esp]
  00005	56		 push	 esi
  00006	8b 74 24 0c	 mov	 esi, DWORD PTR ___$ReturnUdt$[esp+4]
  0000a	33 c0		 xor	 eax, eax
  0000c	89 46 14	 mov	 DWORD PTR [esi+20], eax
  0000f	c7 46 18 0f 00
	00 00		 mov	 DWORD PTR [esi+24], 15	; 0000000fH
  00016	89 44 24 04	 mov	 DWORD PTR $T97702[esp+8], eax
  0001a	88 46 04	 mov	 BYTE PTR [esi+4], al
  0001d	8b 44 24 14	 mov	 eax, DWORD PTR __Count$[esp+4]
  00021	50		 push	 eax
  00022	52		 push	 edx
  00023	51		 push	 ecx
  00024	8b ce		 mov	 ecx, esi
  00026	e8 00 00 00 00	 call	 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::assign
  0002b	8b c6		 mov	 eax, esi
  0002d	5e		 pop	 esi

; 2000 : 		}

  0002e	59		 pop	 ecx
  0002f	c2 0c 00	 ret	 12			; 0000000cH
?substr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV12@II@Z ENDP ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::substr
_TEXT	ENDS
PUBLIC	??_C@_03EMIMMIHL@?$CK?4?$CK?$AA@		; `string'
PUBLIC	_this$GSCopy$
PUBLIC	__$ArrayPad$
PUBLIC	?Create@CDir@@QAE_NPBD0H@Z			; CDir::Create
EXTRN	__stricmp:PROC
EXTRN	__imp__FindNextFileA@8:PROC
EXTRN	__imp__FindFirstFileA@8:PROC
;	COMDAT ??_C@_03EMIMMIHL@?$CK?4?$CK?$AA@
; File c:\program files (x86)\microsoft visual studio 9.0\vc\include\iosfwd
CONST	SEGMENT
??_C@_03EMIMMIHL@?$CK?4?$CK?$AA@ DB '*.*', 00H		; `string'
CONST	ENDS
;	COMDAT xdata$x
xdata$x	SEGMENT
__ehfuncinfo$?Create@CDir@@QAE_NPBD0H@Z DD 019930522H
	DD	09H
	DD	FLAT:__unwindtable$?Create@CDir@@QAE_NPBD0H@Z
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	01H
__unwindtable$?Create@CDir@@QAE_NPBD0H@Z DD 0ffffffffH
	DD	FLAT:__unwindfunclet$?Create@CDir@@QAE_NPBD0H@Z$0
	DD	00H
	DD	FLAT:__unwindfunclet$?Create@CDir@@QAE_NPBD0H@Z$1
	DD	01H
	DD	FLAT:__unwindfunclet$?Create@CDir@@QAE_NPBD0H@Z$2
	DD	02H
	DD	FLAT:__unwindfunclet$?Create@CDir@@QAE_NPBD0H@Z$3
	DD	03H
	DD	FLAT:__unwindfunclet$?Create@CDir@@QAE_NPBD0H@Z$4
	DD	02H
	DD	FLAT:__unwindfunclet$?Create@CDir@@QAE_NPBD0H@Z$4
	DD	05H
	DD	FLAT:__unwindfunclet$?Create@CDir@@QAE_NPBD0H@Z$5
	DD	06H
	DD	FLAT:__unwindfunclet$?Create@CDir@@QAE_NPBD0H@Z$6
	DD	05H
	DD	FLAT:__unwindfunclet$?Create@CDir@@QAE_NPBD0H@Z$6
; Function compile flags: /Ogtpy
; File d:\# metin2\work in progress\source client\client\eterbase\filedir.cpp
xdata$x	ENDS
;	COMDAT ?Create@CDir@@QAE_NPBD0H@Z
_TEXT	SEGMENT
$T98804 = -224						; size = 1
tv1197 = -220						; size = 4
_c_szExtension$93078 = -220				; size = 4
_this$GSCopy$ = -216					; size = 4
$T97850 = -212						; size = 28
$T97849 = -184						; size = 28
_stQuery$ = -156					; size = 28
_stPath$ = -128						; size = 28
_strFilter$93081 = -100					; size = 28
_strSecondFilter$93087 = -72				; size = 28
_strFirstFilter$93084 = -44				; size = 28
__$ArrayPad$ = -16					; size = 4
__$EHRec$ = -12						; size = 12
_c_szFilter$ = 8					; size = 4
_c_szPath$ = 12						; size = 4
_bCheckedExtension$ = 16				; size = 4
?Create@CDir@@QAE_NPBD0H@Z PROC				; CDir::Create, COMDAT
; _this$ = ecx

; 24   : {

  00000	6a ff		 push	 -1
  00002	68 00 00 00 00	 push	 __ehhandler$?Create@CDir@@QAE_NPBD0H@Z
  00007	64 a1 00 00 00
	00		 mov	 eax, DWORD PTR fs:0
  0000d	50		 push	 eax
  0000e	81 ec d4 00 00
	00		 sub	 esp, 212		; 000000d4H
  00014	a1 00 00 00 00	 mov	 eax, DWORD PTR ___security_cookie
  00019	33 c4		 xor	 eax, esp
  0001b	89 84 24 d0 00
	00 00		 mov	 DWORD PTR __$ArrayPad$[esp+224], eax
  00022	53		 push	 ebx
  00023	55		 push	 ebp
  00024	56		 push	 esi
  00025	57		 push	 edi
  00026	a1 00 00 00 00	 mov	 eax, DWORD PTR ___security_cookie
  0002b	33 c4		 xor	 eax, esp
  0002d	50		 push	 eax
  0002e	8d 84 24 e8 00
	00 00		 lea	 eax, DWORD PTR __$EHRec$[esp+244]
  00035	64 a3 00 00 00
	00		 mov	 DWORD PTR fs:0, eax
  0003b	8b ac 24 f8 00
	00 00		 mov	 ebp, DWORD PTR _c_szFilter$[esp+240]
  00042	8b b4 24 fc 00
	00 00		 mov	 esi, DWORD PTR _c_szPath$[esp+240]

; 86   : 		}
; 87   : 	} 			
; 88   : 	while (FindNextFile(m_hFind, &m_wfd));

  00049	89 4c 24 1c	 mov	 DWORD PTR _this$GSCopy$[esp+244], ecx
  0004d	e8 00 00 00 00	 call	 ?Destroy@CDir@@QAEXXZ	; CDir::Destroy
  00052	33 db		 xor	 ebx, ebx
  00054	8b c6		 mov	 eax, esi
  00056	c7 84 24 8c 00
	00 00 0f 00 00
	00		 mov	 DWORD PTR _stPath$[esp+268], 15 ; 0000000fH
  00061	89 9c 24 88 00
	00 00		 mov	 DWORD PTR _stPath$[esp+264], ebx
  00068	88 5c 24 78	 mov	 BYTE PTR _stPath$[esp+248], bl
  0006c	8d 78 01	 lea	 edi, DWORD PTR [eax+1]
  0006f	90		 npad	 1
$LL527@Create:
  00070	8a 08		 mov	 cl, BYTE PTR [eax]
  00072	40		 inc	 eax
  00073	3a cb		 cmp	 cl, bl
  00075	75 f9		 jne	 SHORT $LL527@Create
  00077	2b c7		 sub	 eax, edi
  00079	50		 push	 eax
  0007a	56		 push	 esi
  0007b	8d 4c 24 7c	 lea	 ecx, DWORD PTR _stPath$[esp+252]
  0007f	e8 00 00 00 00	 call	 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::assign
  00084	8b 84 24 88 00
	00 00		 mov	 eax, DWORD PTR _stPath$[esp+264]
  0008b	89 9c 24 f0 00
	00 00		 mov	 DWORD PTR __$EHRec$[esp+252], ebx
  00092	3b c3		 cmp	 eax, ebx
  00094	74 32		 je	 SHORT $LN77@Create
  00096	8d 70 ff	 lea	 esi, DWORD PTR [eax-1]
  00099	3b f0		 cmp	 esi, eax
  0009b	76 05		 jbe	 SHORT $LN69@Create

; 25   : 	Destroy();
; 26   : 	
; 27   : 	std::string stPath = c_szPath;
; 28   : 
; 29   : 	if (stPath.length())
; 30   : 	{
; 31   : 		char end = stPath[stPath.length() - 1];

  0009d	e8 00 00 00 00	 call	 __invalid_parameter_noinfo
$LN69@Create:
  000a2	83 bc 24 8c 00
	00 00 10	 cmp	 DWORD PTR _stPath$[esp+268], 16 ; 00000010H
  000aa	8b 44 24 78	 mov	 eax, DWORD PTR _stPath$[esp+248]
  000ae	73 04		 jae	 SHORT $LN76@Create
  000b0	8d 44 24 78	 lea	 eax, DWORD PTR _stPath$[esp+248]
$LN76@Create:
  000b4	8a 04 30	 mov	 al, BYTE PTR [eax+esi]

; 32   : 
; 33   : 		if (end != '\\')

  000b7	3c 5c		 cmp	 al, 92			; 0000005cH
  000b9	74 0d		 je	 SHORT $LN77@Create

; 34   : 			stPath+='\\';

  000bb	6a 5c		 push	 92			; 0000005cH
  000bd	6a 01		 push	 1
  000bf	8d 4c 24 7c	 lea	 ecx, DWORD PTR _stPath$[esp+252]
  000c3	e8 00 00 00 00	 call	 ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::append
$LN77@Create:

; 35   : 	}
; 36   : 
; 37   : 	std::string stQuery;

  000c8	c7 44 24 70 0f
	00 00 00	 mov	 DWORD PTR _stQuery$[esp+268], 15 ; 0000000fH
  000d0	89 5c 24 6c	 mov	 DWORD PTR _stQuery$[esp+264], ebx
  000d4	88 5c 24 5c	 mov	 BYTE PTR _stQuery$[esp+248], bl

; 38   : 	stQuery += stPath;

  000d8	6a ff		 push	 -1
  000da	53		 push	 ebx
  000db	8d 44 24 7c	 lea	 eax, DWORD PTR _stPath$[esp+252]
  000df	50		 push	 eax
  000e0	8d 4c 24 64	 lea	 ecx, DWORD PTR _stQuery$[esp+256]
  000e4	c6 84 24 fc 00
	00 00 01	 mov	 BYTE PTR __$EHRec$[esp+264], 1
  000ec	e8 00 00 00 00	 call	 ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::append

; 39   : 	stQuery += "*.*";

  000f1	6a 03		 push	 3
  000f3	68 00 00 00 00	 push	 OFFSET ??_C@_03EMIMMIHL@?$CK?4?$CK?$AA@
  000f8	8d 4c 24 60	 lea	 ecx, DWORD PTR _stQuery$[esp+252]
  000fc	e8 00 00 00 00	 call	 ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::append

; 40   : 	
; 41   : 	m_wfd.dwFileAttributes |= FILE_ATTRIBUTE_DIRECTORY;

  00101	8b 7c 24 1c	 mov	 edi, DWORD PTR _this$GSCopy$[esp+244]

; 42   : 	m_hFind = FindFirstFile(stQuery.c_str(), &m_wfd);

  00105	8b 44 24 5c	 mov	 eax, DWORD PTR _stQuery$[esp+248]
  00109	be 10 00 00 00	 mov	 esi, 16			; 00000010H
  0010e	09 77 04	 or	 DWORD PTR [edi+4], esi
  00111	8d 4f 04	 lea	 ecx, DWORD PTR [edi+4]
  00114	39 74 24 70	 cmp	 DWORD PTR _stQuery$[esp+268], esi
  00118	73 04		 jae	 SHORT $LN126@Create
  0011a	8d 44 24 5c	 lea	 eax, DWORD PTR _stQuery$[esp+248]
$LN126@Create:
  0011e	51		 push	 ecx
  0011f	50		 push	 eax
  00120	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__FindFirstFileA@8
  00126	89 87 44 01 00
	00		 mov	 DWORD PTR [edi+324], eax

; 43   : 
; 44   : 	if (m_hFind == INVALID_HANDLE_VALUE)

  0012c	83 f8 ff	 cmp	 eax, -1
  0012f	75 3f		 jne	 SHORT $LL14@Create

; 45   : 		return true;

  00131	39 74 24 70	 cmp	 DWORD PTR _stQuery$[esp+268], esi
  00135	72 0d		 jb	 SHORT $LN143@Create
  00137	8b 4c 24 5c	 mov	 ecx, DWORD PTR _stQuery$[esp+248]
  0013b	51		 push	 ecx
  0013c	e8 00 00 00 00	 call	 ??3@YAXPAX@Z		; operator delete
  00141	83 c4 04	 add	 esp, 4
$LN143@Create:
  00144	c7 44 24 70 0f
	00 00 00	 mov	 DWORD PTR _stQuery$[esp+268], 15 ; 0000000fH
  0014c	89 5c 24 6c	 mov	 DWORD PTR _stQuery$[esp+264], ebx
  00150	88 5c 24 5c	 mov	 BYTE PTR _stQuery$[esp+248], bl
  00154	39 b4 24 8c 00
	00 00		 cmp	 DWORD PTR _stPath$[esp+268], esi
  0015b	0f 82 2e 03 00
	00		 jb	 $LN511@Create
  00161	8b 54 24 78	 mov	 edx, DWORD PTR _stPath$[esp+248]
  00165	52		 push	 edx
  00166	e9 1c 03 00 00	 jmp	 $LN536@Create
  0016b	eb 03 8d 49 00	 npad	 5
$LL14@Create:

; 46   : 
; 47   : 	do
; 48   : 	{
; 49   : 		if (*m_wfd.cFileName == '.')

  00170	80 7f 30 2e	 cmp	 BYTE PTR [edi+48], 46	; 0000002eH
  00174	8d 57 30	 lea	 edx, DWORD PTR [edi+48]
  00177	0f 84 c0 02 00
	00		 je	 $LN13@Create

; 50   : 			continue;
; 51   : 
; 52   : 		if (IsFolder())	

  0017d	8b cf		 mov	 ecx, edi
  0017f	e8 00 00 00 00	 call	 ?IsFolder@CDir@@IAE_NXZ	; CDir::IsFolder
  00184	84 c0		 test	 al, al
  00186	74 65		 je	 SHORT $LN10@Create

; 53   : 		{
; 54   : 			if (!OnFolder(c_szFilter, stPath.c_str(), m_wfd.cFileName))

  00188	8b 44 24 78	 mov	 eax, DWORD PTR _stPath$[esp+248]
  0018c	39 b4 24 8c 00
	00 00		 cmp	 DWORD PTR _stPath$[esp+268], esi
  00193	73 04		 jae	 SHORT $LN184@Create
  00195	8d 44 24 78	 lea	 eax, DWORD PTR _stPath$[esp+248]
$LN184@Create:
  00199	52		 push	 edx
  0019a	50		 push	 eax
  0019b	8b 07		 mov	 eax, DWORD PTR [edi]
  0019d	8b 40 04	 mov	 eax, DWORD PTR [eax+4]
  001a0	55		 push	 ebp
  001a1	8b cf		 mov	 ecx, edi
  001a3	ff d0		 call	 eax
  001a5	84 c0		 test	 al, al
  001a7	0f 85 90 02 00
	00		 jne	 $LN13@Create

; 55   : 				return false;

  001ad	39 74 24 70	 cmp	 DWORD PTR _stQuery$[esp+268], esi
  001b1	72 0d		 jb	 SHORT $LN201@Create
  001b3	8b 54 24 5c	 mov	 edx, DWORD PTR _stQuery$[esp+248]
  001b7	52		 push	 edx
  001b8	e8 00 00 00 00	 call	 ??3@YAXPAX@Z		; operator delete
  001bd	83 c4 04	 add	 esp, 4
$LN201@Create:
  001c0	c7 44 24 70 0f
	00 00 00	 mov	 DWORD PTR _stQuery$[esp+268], 15 ; 0000000fH
  001c8	89 5c 24 6c	 mov	 DWORD PTR _stQuery$[esp+264], ebx
  001cc	88 5c 24 5c	 mov	 BYTE PTR _stQuery$[esp+248], bl
  001d0	39 b4 24 8c 00
	00 00		 cmp	 DWORD PTR _stPath$[esp+268], esi
  001d7	72 0d		 jb	 SHORT $LN227@Create
  001d9	8b 44 24 78	 mov	 eax, DWORD PTR _stPath$[esp+248]
  001dd	50		 push	 eax
  001de	e8 00 00 00 00	 call	 ??3@YAXPAX@Z		; operator delete
  001e3	83 c4 04	 add	 esp, 4
$LN227@Create:
  001e6	32 c0		 xor	 al, al
  001e8	e9 a4 02 00 00	 jmp	 $LN18@Create
$LN10@Create:

; 56   : 		}
; 57   : 		else
; 58   : 		{
; 59   : 			const char * c_szExtension = strchr(m_wfd.cFileName, '.');

  001ed	6a 2e		 push	 46			; 0000002eH
  001ef	52		 push	 edx
  001f0	e8 00 00 00 00	 call	 _strchr
  001f5	83 c4 08	 add	 esp, 8
  001f8	89 44 24 18	 mov	 DWORD PTR _c_szExtension$93078[esp+244], eax

; 60   : 			if (!c_szExtension)

  001fc	3b c3		 cmp	 eax, ebx
  001fe	0f 84 39 02 00
	00		 je	 $LN13@Create

; 61   : 				continue;
; 62   : 
; 63   : 			// NOTE : ÀÓ½Ã º¯¼ö - [levites]
; 64   : 			//        ÃÖÁ¾ÀûÀ¸·Î´Â ¹«Á¶°Ç TRUE ÇüÅÂ·Î ¸¸µç´Ù.
; 65   : 			//        ±×Àü¿¡ Àü ÇÁ·ÎÁ§Æ®ÀÇ CDirÀ» »ç¿ëÇÏ´Â °÷¿¡¼­ ExtensionÀ» "wav", "gr2" ÀÌ·±½ÄÀ¸·Î ³Ö°Ô²û ÇÑ´Ù. - [levites]
; 66   : 			if (bCheckedExtension)

  00204	39 9c 24 00 01
	00 00		 cmp	 DWORD PTR _bCheckedExtension$[esp+240], ebx
  0020b	0f 84 05 02 00
	00		 je	 $LN401@Create

; 67   : 			{
; 68   : 				std::string strFilter = c_szFilter;

  00211	8b c5		 mov	 eax, ebp
  00213	c7 84 24 a8 00
	00 00 0f 00 00
	00		 mov	 DWORD PTR _strFilter$93081[esp+268], 15 ; 0000000fH
  0021e	89 9c 24 a4 00
	00 00		 mov	 DWORD PTR _strFilter$93081[esp+264], ebx
  00225	88 9c 24 94 00
	00 00		 mov	 BYTE PTR _strFilter$93081[esp+248], bl
  0022c	8d 50 01	 lea	 edx, DWORD PTR [eax+1]
  0022f	90		 npad	 1
$LL528@Create:
  00230	8a 08		 mov	 cl, BYTE PTR [eax]
  00232	40		 inc	 eax
  00233	3a cb		 cmp	 cl, bl
  00235	75 f9		 jne	 SHORT $LL528@Create
  00237	2b c2		 sub	 eax, edx
  00239	50		 push	 eax
  0023a	55		 push	 ebp
  0023b	8d 8c 24 98 00
	00 00		 lea	 ecx, DWORD PTR _strFilter$93081[esp+252]
  00242	e8 00 00 00 00	 call	 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::assign

; 69   : 				int iPos = strFilter.find_first_of(';', 0);

  00247	6a 01		 push	 1
  00249	53		 push	 ebx
  0024a	8d 4c 24 1c	 lea	 ecx, DWORD PTR $T98804[esp+252]
  0024e	51		 push	 ecx
  0024f	8d 8c 24 9c 00
	00 00		 lea	 ecx, DWORD PTR _strFilter$93081[esp+256]
  00256	c6 84 24 fc 00
	00 00 02	 mov	 BYTE PTR __$EHRec$[esp+264], 2
  0025e	c6 44 24 20 3b	 mov	 BYTE PTR $T98804[esp+256], 59 ; 0000003bH
  00263	e8 00 00 00 00	 call	 ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::find
  00268	8b f0		 mov	 esi, eax

; 70   : 				if (iPos > 0)

  0026a	3b f3		 cmp	 esi, ebx

; 71   : 				{
; 72   : 					std::string strFirstFilter = std::string(c_szFilter).substr(0, iPos);

  0026c	55		 push	 ebp
  0026d	0f 8e 48 02 00
	00		 jle	 $LN5@Create
  00273	8d 4c 24 40	 lea	 ecx, DWORD PTR $T97849[esp+248]
  00277	e8 00 00 00 00	 call	 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::basic_string<char,std::char_traits<char>,std::allocator<char> >
  0027c	56		 push	 esi
  0027d	53		 push	 ebx
  0027e	8d 94 24 d0 00
	00 00		 lea	 edx, DWORD PTR _strFirstFilter$93084[esp+252]
  00285	52		 push	 edx
  00286	8b c8		 mov	 ecx, eax
  00288	c6 84 24 fc 00
	00 00 03	 mov	 BYTE PTR __$EHRec$[esp+264], 3
  00290	e8 00 00 00 00	 call	 ?substr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV12@II@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::substr
  00295	83 7c 24 54 10	 cmp	 DWORD PTR $T97849[esp+268], 16 ; 00000010H
  0029a	c6 84 24 f0 00
	00 00 05	 mov	 BYTE PTR __$EHRec$[esp+252], 5
  002a2	72 0d		 jb	 SHORT $LN293@Create
  002a4	8b 44 24 40	 mov	 eax, DWORD PTR $T97849[esp+248]
  002a8	50		 push	 eax
  002a9	e8 00 00 00 00	 call	 ??3@YAXPAX@Z		; operator delete
  002ae	83 c4 04	 add	 esp, 4
$LN293@Create:

; 73   : 					std::string strSecondFilter = std::string(c_szFilter).substr(iPos+1, strlen(c_szFilter));

  002b1	8b c5		 mov	 eax, ebp
  002b3	c7 44 24 54 0f
	00 00 00	 mov	 DWORD PTR $T97849[esp+268], 15 ; 0000000fH
  002bb	89 5c 24 50	 mov	 DWORD PTR $T97849[esp+264], ebx
  002bf	88 5c 24 40	 mov	 BYTE PTR $T97849[esp+248], bl
  002c3	8d 50 01	 lea	 edx, DWORD PTR [eax+1]
$LL529@Create:
  002c6	8a 08		 mov	 cl, BYTE PTR [eax]
  002c8	40		 inc	 eax
  002c9	3a cb		 cmp	 cl, bl
  002cb	75 f9		 jne	 SHORT $LL529@Create
  002cd	2b c2		 sub	 eax, edx
  002cf	55		 push	 ebp
  002d0	8d 4c 24 24	 lea	 ecx, DWORD PTR $T97850[esp+248]
  002d4	8b f8		 mov	 edi, eax
  002d6	e8 00 00 00 00	 call	 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::basic_string<char,std::char_traits<char>,std::allocator<char> >
  002db	57		 push	 edi
  002dc	46		 inc	 esi
  002dd	56		 push	 esi
  002de	8d 8c 24 b4 00
	00 00		 lea	 ecx, DWORD PTR _strSecondFilter$93087[esp+252]
  002e5	51		 push	 ecx
  002e6	8b c8		 mov	 ecx, eax
  002e8	c6 84 24 fc 00
	00 00 06	 mov	 BYTE PTR __$EHRec$[esp+264], 6
  002f0	e8 00 00 00 00	 call	 ?substr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV12@II@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::substr
  002f5	83 7c 24 38 10	 cmp	 DWORD PTR $T97850[esp+268], 16 ; 00000010H
  002fa	c6 84 24 f0 00
	00 00 08	 mov	 BYTE PTR __$EHRec$[esp+252], 8
  00302	72 0d		 jb	 SHORT $LN319@Create
  00304	8b 54 24 24	 mov	 edx, DWORD PTR $T97850[esp+248]
  00308	52		 push	 edx
  00309	e8 00 00 00 00	 call	 ??3@YAXPAX@Z		; operator delete
  0030e	83 c4 04	 add	 esp, 4
$LN319@Create:

; 74   : 					if (0 != strFirstFilter.compare(c_szExtension+1) && 0 != strSecondFilter.compare(c_szExtension+1))

  00311	8b 74 24 18	 mov	 esi, DWORD PTR _c_szExtension$93078[esp+244]
  00315	46		 inc	 esi
  00316	bf 0f 00 00 00	 mov	 edi, 15			; 0000000fH
  0031b	8b c6		 mov	 eax, esi
  0031d	89 7c 24 38	 mov	 DWORD PTR $T97850[esp+268], edi
  00321	89 5c 24 34	 mov	 DWORD PTR $T97850[esp+264], ebx
  00325	88 5c 24 24	 mov	 BYTE PTR $T97850[esp+248], bl
  00329	8d 50 01	 lea	 edx, DWORD PTR [eax+1]
  0032c	8d 64 24 00	 npad	 4
$LL530@Create:
  00330	8a 08		 mov	 cl, BYTE PTR [eax]
  00332	40		 inc	 eax
  00333	3a cb		 cmp	 cl, bl
  00335	75 f9		 jne	 SHORT $LL530@Create
  00337	2b c2		 sub	 eax, edx
  00339	50		 push	 eax
  0033a	8b 84 24 e0 00
	00 00		 mov	 eax, DWORD PTR _strFirstFilter$93084[esp+268]
  00341	56		 push	 esi
  00342	50		 push	 eax
  00343	53		 push	 ebx
  00344	8d 8c 24 d8 00
	00 00		 lea	 ecx, DWORD PTR _strFirstFilter$93084[esp+260]
  0034b	e8 00 00 00 00	 call	 ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIPBDI@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::compare
  00350	85 c0		 test	 eax, eax
  00352	74 4b		 je	 SHORT $LN4@Create
  00354	56		 push	 esi
  00355	8d 8c 24 b0 00
	00 00		 lea	 ecx, DWORD PTR _strSecondFilter$93087[esp+248]
  0035c	e8 00 00 00 00	 call	 ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHPBD@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::compare
  00361	85 c0		 test	 eax, eax
  00363	74 3a		 je	 SHORT $LN4@Create

; 75   : 						continue;

  00365	8d 8c 24 ac 00
	00 00		 lea	 ecx, DWORD PTR _strSecondFilter$93087[esp+244]
  0036c	e8 00 00 00 00	 call	 ??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::~basic_string<char,std::char_traits<char>,std::allocator<char> >
  00371	8d 8c 24 c8 00
	00 00		 lea	 ecx, DWORD PTR _strFirstFilter$93084[esp+244]
  00378	e8 00 00 00 00	 call	 ??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::~basic_string<char,std::char_traits<char>,std::allocator<char> >
  0037d	8d 8c 24 90 00
	00 00		 lea	 ecx, DWORD PTR _strFilter$93081[esp+244]
  00384	c6 84 24 f0 00
	00 00 01	 mov	 BYTE PTR __$EHRec$[esp+252], 1
  0038c	e8 00 00 00 00	 call	 ??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::~basic_string<char,std::char_traits<char>,std::allocator<char> >
  00391	8b 7c 24 1c	 mov	 edi, DWORD PTR _this$GSCopy$[esp+244]
  00395	be 10 00 00 00	 mov	 esi, 16			; 00000010H
  0039a	e9 9e 00 00 00	 jmp	 $LN13@Create
$LN4@Create:

; 76   : 				}

  0039f	be 10 00 00 00	 mov	 esi, 16			; 00000010H
  003a4	39 b4 24 c4 00
	00 00		 cmp	 DWORD PTR _strSecondFilter$93087[esp+268], esi
  003ab	72 10		 jb	 SHORT $LN349@Create
  003ad	8b 8c 24 b0 00
	00 00		 mov	 ecx, DWORD PTR _strSecondFilter$93087[esp+248]
  003b4	51		 push	 ecx
  003b5	e8 00 00 00 00	 call	 ??3@YAXPAX@Z		; operator delete
  003ba	83 c4 04	 add	 esp, 4
$LN349@Create:
  003bd	89 bc 24 c4 00
	00 00		 mov	 DWORD PTR _strSecondFilter$93087[esp+268], edi
  003c4	89 9c 24 c0 00
	00 00		 mov	 DWORD PTR _strSecondFilter$93087[esp+264], ebx
  003cb	88 9c 24 b0 00
	00 00		 mov	 BYTE PTR _strSecondFilter$93087[esp+248], bl
  003d2	39 b4 24 e0 00
	00 00		 cmp	 DWORD PTR _strFirstFilter$93084[esp+268], esi
  003d9	72 10		 jb	 SHORT $LN533@Create
  003db	8b 94 24 cc 00
	00 00		 mov	 edx, DWORD PTR _strFirstFilter$93084[esp+248]
  003e2	52		 push	 edx
  003e3	e8 00 00 00 00	 call	 ??3@YAXPAX@Z		; operator delete
  003e8	83 c4 04	 add	 esp, 4
$LN533@Create:

; 77   : 				else

  003eb	8b 7c 24 1c	 mov	 edi, DWORD PTR _this$GSCopy$[esp+244]
$LN2@Create:

; 81   : 				}
; 82   : 			}

  003ef	83 bc 24 a8 00
	00 00 10	 cmp	 DWORD PTR _strFilter$93081[esp+268], 16 ; 00000010H
  003f7	c6 84 24 f0 00
	00 00 01	 mov	 BYTE PTR __$EHRec$[esp+252], 1
  003ff	72 10		 jb	 SHORT $LN534@Create
  00401	8b 8c 24 94 00
	00 00		 mov	 ecx, DWORD PTR _strFilter$93081[esp+248]
  00408	51		 push	 ecx
  00409	e8 00 00 00 00	 call	 ??3@YAXPAX@Z		; operator delete
  0040e	83 c4 04	 add	 esp, 4
$LN534@Create:
  00411	be 10 00 00 00	 mov	 esi, 16			; 00000010H
$LN401@Create:

; 83   : 
; 84   : 			if (!OnFile(stPath.c_str(), m_wfd.cFileName))

  00416	8b 44 24 78	 mov	 eax, DWORD PTR _stPath$[esp+248]
  0041a	39 b4 24 8c 00
	00 00		 cmp	 DWORD PTR _stPath$[esp+268], esi
  00421	73 04		 jae	 SHORT $LN416@Create
  00423	8d 44 24 78	 lea	 eax, DWORD PTR _stPath$[esp+248]
$LN416@Create:
  00427	8b 17		 mov	 edx, DWORD PTR [edi]
  00429	8d 4f 30	 lea	 ecx, DWORD PTR [edi+48]
  0042c	51		 push	 ecx
  0042d	50		 push	 eax
  0042e	8b 42 08	 mov	 eax, DWORD PTR [edx+8]
  00431	8b cf		 mov	 ecx, edi
  00433	ff d0		 call	 eax
  00435	84 c0		 test	 al, al
  00437	0f 84 b2 00 00
	00		 je	 $LN524@Create
$LN13@Create:

; 86   : 		}
; 87   : 	} 			
; 88   : 	while (FindNextFile(m_hFind, &m_wfd));

  0043d	8b 8f 44 01 00
	00		 mov	 ecx, DWORD PTR [edi+324]
  00443	8d 47 04	 lea	 eax, DWORD PTR [edi+4]
  00446	50		 push	 eax
  00447	51		 push	 ecx
  00448	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__FindNextFileA@8
  0044e	85 c0		 test	 eax, eax
  00450	0f 85 1a fd ff
	ff		 jne	 $LL14@Create

; 89   : 
; 90   : 	return true;

  00456	39 74 24 70	 cmp	 DWORD PTR _stQuery$[esp+268], esi
  0045a	72 0d		 jb	 SHORT $LN485@Create
  0045c	8b 44 24 5c	 mov	 eax, DWORD PTR _stQuery$[esp+248]
  00460	50		 push	 eax
  00461	e8 00 00 00 00	 call	 ??3@YAXPAX@Z		; operator delete
  00466	83 c4 04	 add	 esp, 4
$LN485@Create:
  00469	c7 44 24 70 0f
	00 00 00	 mov	 DWORD PTR _stQuery$[esp+268], 15 ; 0000000fH
  00471	89 5c 24 6c	 mov	 DWORD PTR _stQuery$[esp+264], ebx
  00475	88 5c 24 5c	 mov	 BYTE PTR _stQuery$[esp+248], bl
  00479	39 b4 24 8c 00
	00 00		 cmp	 DWORD PTR _stPath$[esp+268], esi
  00480	72 0d		 jb	 SHORT $LN511@Create
  00482	8b 4c 24 78	 mov	 ecx, DWORD PTR _stPath$[esp+248]
  00486	51		 push	 ecx
$LN536@Create:
  00487	e8 00 00 00 00	 call	 ??3@YAXPAX@Z		; operator delete
  0048c	83 c4 04	 add	 esp, 4
$LN511@Create:
  0048f	b0 01		 mov	 al, 1
$LN18@Create:

; 91   : }

  00491	8b 8c 24 e8 00
	00 00		 mov	 ecx, DWORD PTR __$EHRec$[esp+244]
  00498	64 89 0d 00 00
	00 00		 mov	 DWORD PTR fs:0, ecx
  0049f	59		 pop	 ecx
  004a0	5f		 pop	 edi
  004a1	5e		 pop	 esi
  004a2	5d		 pop	 ebp
  004a3	5b		 pop	 ebx
  004a4	8b 8c 24 d0 00
	00 00		 mov	 ecx, DWORD PTR __$ArrayPad$[esp+224]
  004ab	33 cc		 xor	 ecx, esp
  004ad	e8 00 00 00 00	 call	 @__security_check_cookie@4
  004b2	81 c4 e0 00 00
	00		 add	 esp, 224		; 000000e0H
  004b8	c2 0c 00	 ret	 12			; 0000000cH
$LN5@Create:

; 78   : 				{
; 79   : 					if (0 != stricmp(c_szExtension+1, c_szFilter))

  004bb	8b 44 24 1c	 mov	 eax, DWORD PTR _c_szExtension$93078[esp+248]
  004bf	40		 inc	 eax
  004c0	50		 push	 eax
  004c1	e8 00 00 00 00	 call	 __stricmp
  004c6	83 c4 08	 add	 esp, 8
  004c9	85 c0		 test	 eax, eax
  004cb	0f 84 1e ff ff
	ff		 je	 $LN2@Create

; 80   : 						continue;

  004d1	8d 8c 24 90 00
	00 00		 lea	 ecx, DWORD PTR _strFilter$93081[esp+244]
  004d8	c6 84 24 f0 00
	00 00 01	 mov	 BYTE PTR __$EHRec$[esp+252], 1
  004e0	e8 00 00 00 00	 call	 ??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::~basic_string<char,std::char_traits<char>,std::allocator<char> >
  004e5	be 10 00 00 00	 mov	 esi, 16			; 00000010H
  004ea	e9 4e ff ff ff	 jmp	 $LN13@Create
$LN524@Create:

; 85   : 				return false;

  004ef	39 74 24 70	 cmp	 DWORD PTR _stQuery$[esp+268], esi
  004f3	72 0d		 jb	 SHORT $LN433@Create
  004f5	8b 4c 24 5c	 mov	 ecx, DWORD PTR _stQuery$[esp+248]
  004f9	51		 push	 ecx
  004fa	e8 00 00 00 00	 call	 ??3@YAXPAX@Z		; operator delete
  004ff	83 c4 04	 add	 esp, 4
$LN433@Create:
  00502	c7 44 24 70 0f
	00 00 00	 mov	 DWORD PTR _stQuery$[esp+268], 15 ; 0000000fH
  0050a	89 5c 24 6c	 mov	 DWORD PTR _stQuery$[esp+264], ebx
  0050e	88 5c 24 5c	 mov	 BYTE PTR _stQuery$[esp+248], bl
  00512	39 b4 24 8c 00
	00 00		 cmp	 DWORD PTR _stPath$[esp+268], esi
  00519	0f 82 c7 fc ff
	ff		 jb	 $LN227@Create
  0051f	8b 54 24 78	 mov	 edx, DWORD PTR _stPath$[esp+248]
  00523	52		 push	 edx
  00524	e8 00 00 00 00	 call	 ??3@YAXPAX@Z		; operator delete
  00529	83 c4 04	 add	 esp, 4
  0052c	32 c0		 xor	 al, al
  0052e	e9 5e ff ff ff	 jmp	 $LN18@Create
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$?Create@CDir@@QAE_NPBD0H@Z$0:
  00000	8d 4d 80	 lea	 ecx, DWORD PTR _stPath$[ebp]
  00003	e9 00 00 00 00	 jmp	 ??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::~basic_string<char,std::char_traits<char>,std::allocator<char> >
__unwindfunclet$?Create@CDir@@QAE_NPBD0H@Z$1:
  00008	8d 8d 64 ff ff
	ff		 lea	 ecx, DWORD PTR _stQuery$[ebp]
  0000e	e9 00 00 00 00	 jmp	 ??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::~basic_string<char,std::char_traits<char>,std::allocator<char> >
__unwindfunclet$?Create@CDir@@QAE_NPBD0H@Z$2:
  00013	8d 4d 9c	 lea	 ecx, DWORD PTR _strFilter$93081[ebp]
  00016	e9 00 00 00 00	 jmp	 ??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::~basic_string<char,std::char_traits<char>,std::allocator<char> >
__unwindfunclet$?Create@CDir@@QAE_NPBD0H@Z$3:
  0001b	8d 8d 48 ff ff
	ff		 lea	 ecx, DWORD PTR $T97849[ebp]
  00021	e9 00 00 00 00	 jmp	 ??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::~basic_string<char,std::char_traits<char>,std::allocator<char> >
__unwindfunclet$?Create@CDir@@QAE_NPBD0H@Z$4:
  00026	8d 4d d4	 lea	 ecx, DWORD PTR _strFirstFilter$93084[ebp]
  00029	e9 00 00 00 00	 jmp	 ??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::~basic_string<char,std::char_traits<char>,std::allocator<char> >
__unwindfunclet$?Create@CDir@@QAE_NPBD0H@Z$5:
  0002e	8d 8d 2c ff ff
	ff		 lea	 ecx, DWORD PTR $T97850[ebp]
  00034	e9 00 00 00 00	 jmp	 ??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::~basic_string<char,std::char_traits<char>,std::allocator<char> >
__unwindfunclet$?Create@CDir@@QAE_NPBD0H@Z$6:
  00039	8d 4d b8	 lea	 ecx, DWORD PTR _strSecondFilter$93087[ebp]
  0003c	e9 00 00 00 00	 jmp	 ??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::~basic_string<char,std::char_traits<char>,std::allocator<char> >
__ehhandler$?Create@CDir@@QAE_NPBD0H@Z:
  00041	8b 54 24 08	 mov	 edx, DWORD PTR [esp+8]
  00045	8d 82 1c ff ff
	ff		 lea	 eax, DWORD PTR [edx-228]
  0004b	8b 8a 18 ff ff
	ff		 mov	 ecx, DWORD PTR [edx-232]
  00051	33 c8		 xor	 ecx, eax
  00053	e8 00 00 00 00	 call	 @__security_check_cookie@4
  00058	83 c0 10	 add	 eax, 16			; 00000010H
  0005b	8b 4a fc	 mov	 ecx, DWORD PTR [edx-4]
  0005e	33 c8		 xor	 ecx, eax
  00060	e8 00 00 00 00	 call	 @__security_check_cookie@4
  00065	b8 00 00 00 00	 mov	 eax, OFFSET __ehfuncinfo$?Create@CDir@@QAE_NPBD0H@Z
  0006a	e9 00 00 00 00	 jmp	 ___CxxFrameHandler3
text$x	ENDS
?Create@CDir@@QAE_NPBD0H@Z ENDP				; CDir::Create
END
