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

	TITLE	d:\Source Code\NC lib\ncRegEx.cpp
	.686P
	.XMM
	include listing.inc
	.model	flat

INCLUDELIB LIBCMTD
INCLUDELIB OLDNAMES

PUBLIC	??_C@_0P@GHFPNOJB@bad?5allocation?$AA@		; `string'
PUBLIC	?collate@?$_Locbase@H@std@@2HB			; std::_Locbase<int>::collate
PUBLIC	?ctype@?$_Locbase@H@std@@2HB			; std::_Locbase<int>::ctype
PUBLIC	?monetary@?$_Locbase@H@std@@2HB			; std::_Locbase<int>::monetary
PUBLIC	?numeric@?$_Locbase@H@std@@2HB			; std::_Locbase<int>::numeric
PUBLIC	?time@?$_Locbase@H@std@@2HB			; std::_Locbase<int>::time
PUBLIC	?messages@?$_Locbase@H@std@@2HB			; std::_Locbase<int>::messages
PUBLIC	?all@?$_Locbase@H@std@@2HB			; std::_Locbase<int>::all
PUBLIC	?none@?$_Locbase@H@std@@2HB			; std::_Locbase<int>::none
PUBLIC	?table_size@?$ctype@D@std@@2IB			; std::ctype<char>::table_size
PUBLIC	?skipws@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::skipws
PUBLIC	?unitbuf@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::unitbuf
PUBLIC	?uppercase@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::uppercase
PUBLIC	?showbase@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::showbase
PUBLIC	?showpoint@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::showpoint
PUBLIC	?showpos@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::showpos
PUBLIC	?left@?$_Iosb@H@std@@2W4_Fmtflags@12@B		; std::_Iosb<int>::left
PUBLIC	?right@?$_Iosb@H@std@@2W4_Fmtflags@12@B		; std::_Iosb<int>::right
PUBLIC	?internal@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::internal
PUBLIC	?dec@?$_Iosb@H@std@@2W4_Fmtflags@12@B		; std::_Iosb<int>::dec
PUBLIC	?oct@?$_Iosb@H@std@@2W4_Fmtflags@12@B		; std::_Iosb<int>::oct
PUBLIC	?hex@?$_Iosb@H@std@@2W4_Fmtflags@12@B		; std::_Iosb<int>::hex
PUBLIC	?scientific@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::scientific
PUBLIC	?fixed@?$_Iosb@H@std@@2W4_Fmtflags@12@B		; std::_Iosb<int>::fixed
PUBLIC	?boolalpha@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::boolalpha
PUBLIC	?_Stdio@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::_Stdio
PUBLIC	?adjustfield@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::adjustfield
PUBLIC	?basefield@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::basefield
PUBLIC	?floatfield@?$_Iosb@H@std@@2W4_Fmtflags@12@B	; std::_Iosb<int>::floatfield
PUBLIC	?goodbit@?$_Iosb@H@std@@2W4_Iostate@12@B	; std::_Iosb<int>::goodbit
PUBLIC	?eofbit@?$_Iosb@H@std@@2W4_Iostate@12@B		; std::_Iosb<int>::eofbit
PUBLIC	?failbit@?$_Iosb@H@std@@2W4_Iostate@12@B	; std::_Iosb<int>::failbit
PUBLIC	?badbit@?$_Iosb@H@std@@2W4_Iostate@12@B		; std::_Iosb<int>::badbit
PUBLIC	?_Hardfail@?$_Iosb@H@std@@2W4_Iostate@12@B	; std::_Iosb<int>::_Hardfail
PUBLIC	?in@?$_Iosb@H@std@@2W4_Openmode@12@B		; std::_Iosb<int>::in
PUBLIC	?out@?$_Iosb@H@std@@2W4_Openmode@12@B		; std::_Iosb<int>::out
PUBLIC	?ate@?$_Iosb@H@std@@2W4_Openmode@12@B		; std::_Iosb<int>::ate
PUBLIC	?app@?$_Iosb@H@std@@2W4_Openmode@12@B		; std::_Iosb<int>::app
PUBLIC	?trunc@?$_Iosb@H@std@@2W4_Openmode@12@B		; std::_Iosb<int>::trunc
PUBLIC	?_Nocreate@?$_Iosb@H@std@@2W4_Openmode@12@B	; std::_Iosb<int>::_Nocreate
PUBLIC	?_Noreplace@?$_Iosb@H@std@@2W4_Openmode@12@B	; std::_Iosb<int>::_Noreplace
PUBLIC	?binary@?$_Iosb@H@std@@2W4_Openmode@12@B	; std::_Iosb<int>::binary
PUBLIC	?beg@?$_Iosb@H@std@@2W4_Seekdir@12@B		; std::_Iosb<int>::beg
PUBLIC	?cur@?$_Iosb@H@std@@2W4_Seekdir@12@B		; std::_Iosb<int>::cur
PUBLIC	?end@?$_Iosb@H@std@@2W4_Seekdir@12@B		; std::_Iosb<int>::end
;	COMDAT ?end@?$_Iosb@H@std@@2W4_Seekdir@12@B
CONST	SEGMENT
?end@?$_Iosb@H@std@@2W4_Seekdir@12@B DD 02H		; std::_Iosb<int>::end
CONST	ENDS
;	COMDAT ?cur@?$_Iosb@H@std@@2W4_Seekdir@12@B
CONST	SEGMENT
?cur@?$_Iosb@H@std@@2W4_Seekdir@12@B DD 01H		; std::_Iosb<int>::cur
CONST	ENDS
;	COMDAT ?beg@?$_Iosb@H@std@@2W4_Seekdir@12@B
CONST	SEGMENT
?beg@?$_Iosb@H@std@@2W4_Seekdir@12@B DD 00H		; std::_Iosb<int>::beg
CONST	ENDS
;	COMDAT ?binary@?$_Iosb@H@std@@2W4_Openmode@12@B
CONST	SEGMENT
?binary@?$_Iosb@H@std@@2W4_Openmode@12@B DD 020H	; std::_Iosb<int>::binary
CONST	ENDS
;	COMDAT ?_Noreplace@?$_Iosb@H@std@@2W4_Openmode@12@B
CONST	SEGMENT
?_Noreplace@?$_Iosb@H@std@@2W4_Openmode@12@B DD 080H	; std::_Iosb<int>::_Noreplace
CONST	ENDS
;	COMDAT ?_Nocreate@?$_Iosb@H@std@@2W4_Openmode@12@B
CONST	SEGMENT
?_Nocreate@?$_Iosb@H@std@@2W4_Openmode@12@B DD 040H	; std::_Iosb<int>::_Nocreate
CONST	ENDS
;	COMDAT ?trunc@?$_Iosb@H@std@@2W4_Openmode@12@B
CONST	SEGMENT
?trunc@?$_Iosb@H@std@@2W4_Openmode@12@B DD 010H		; std::_Iosb<int>::trunc
CONST	ENDS
;	COMDAT ?app@?$_Iosb@H@std@@2W4_Openmode@12@B
CONST	SEGMENT
?app@?$_Iosb@H@std@@2W4_Openmode@12@B DD 08H		; std::_Iosb<int>::app
CONST	ENDS
;	COMDAT ?ate@?$_Iosb@H@std@@2W4_Openmode@12@B
CONST	SEGMENT
?ate@?$_Iosb@H@std@@2W4_Openmode@12@B DD 04H		; std::_Iosb<int>::ate
CONST	ENDS
;	COMDAT ?out@?$_Iosb@H@std@@2W4_Openmode@12@B
CONST	SEGMENT
?out@?$_Iosb@H@std@@2W4_Openmode@12@B DD 02H		; std::_Iosb<int>::out
CONST	ENDS
;	COMDAT ?in@?$_Iosb@H@std@@2W4_Openmode@12@B
CONST	SEGMENT
?in@?$_Iosb@H@std@@2W4_Openmode@12@B DD 01H		; std::_Iosb<int>::in
CONST	ENDS
;	COMDAT ?_Hardfail@?$_Iosb@H@std@@2W4_Iostate@12@B
CONST	SEGMENT
?_Hardfail@?$_Iosb@H@std@@2W4_Iostate@12@B DD 010H	; std::_Iosb<int>::_Hardfail
CONST	ENDS
;	COMDAT ?badbit@?$_Iosb@H@std@@2W4_Iostate@12@B
CONST	SEGMENT
?badbit@?$_Iosb@H@std@@2W4_Iostate@12@B DD 04H		; std::_Iosb<int>::badbit
CONST	ENDS
;	COMDAT ?failbit@?$_Iosb@H@std@@2W4_Iostate@12@B
CONST	SEGMENT
?failbit@?$_Iosb@H@std@@2W4_Iostate@12@B DD 02H		; std::_Iosb<int>::failbit
CONST	ENDS
;	COMDAT ?eofbit@?$_Iosb@H@std@@2W4_Iostate@12@B
CONST	SEGMENT
?eofbit@?$_Iosb@H@std@@2W4_Iostate@12@B DD 01H		; std::_Iosb<int>::eofbit
CONST	ENDS
;	COMDAT ?goodbit@?$_Iosb@H@std@@2W4_Iostate@12@B
CONST	SEGMENT
?goodbit@?$_Iosb@H@std@@2W4_Iostate@12@B DD 00H		; std::_Iosb<int>::goodbit
CONST	ENDS
;	COMDAT ?floatfield@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?floatfield@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 03000H	; std::_Iosb<int>::floatfield
CONST	ENDS
;	COMDAT ?basefield@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?basefield@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 0e00H	; std::_Iosb<int>::basefield
CONST	ENDS
;	COMDAT ?adjustfield@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?adjustfield@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 01c0H	; std::_Iosb<int>::adjustfield
CONST	ENDS
;	COMDAT ?_Stdio@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?_Stdio@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 08000H	; std::_Iosb<int>::_Stdio
CONST	ENDS
;	COMDAT ?boolalpha@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?boolalpha@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 04000H	; std::_Iosb<int>::boolalpha
CONST	ENDS
;	COMDAT ?fixed@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?fixed@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 02000H	; std::_Iosb<int>::fixed
CONST	ENDS
;	COMDAT ?scientific@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?scientific@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 01000H	; std::_Iosb<int>::scientific
CONST	ENDS
;	COMDAT ?hex@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?hex@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 0800H		; std::_Iosb<int>::hex
CONST	ENDS
;	COMDAT ?oct@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?oct@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 0400H		; std::_Iosb<int>::oct
CONST	ENDS
;	COMDAT ?dec@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?dec@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 0200H		; std::_Iosb<int>::dec
CONST	ENDS
;	COMDAT ?internal@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?internal@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 0100H	; std::_Iosb<int>::internal
CONST	ENDS
;	COMDAT ?right@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?right@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 080H		; std::_Iosb<int>::right
CONST	ENDS
;	COMDAT ?left@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?left@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 040H		; std::_Iosb<int>::left
CONST	ENDS
;	COMDAT ?showpos@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?showpos@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 020H	; std::_Iosb<int>::showpos
CONST	ENDS
;	COMDAT ?showpoint@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?showpoint@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 010H	; std::_Iosb<int>::showpoint
CONST	ENDS
;	COMDAT ?showbase@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?showbase@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 08H	; std::_Iosb<int>::showbase
CONST	ENDS
;	COMDAT ?uppercase@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?uppercase@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 04H	; std::_Iosb<int>::uppercase
CONST	ENDS
;	COMDAT ?unitbuf@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?unitbuf@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 02H	; std::_Iosb<int>::unitbuf
CONST	ENDS
;	COMDAT ?skipws@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?skipws@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 01H		; std::_Iosb<int>::skipws
CONST	ENDS
;	COMDAT ?table_size@?$ctype@D@std@@2IB
CONST	SEGMENT
?table_size@?$ctype@D@std@@2IB DD 0100H			; std::ctype<char>::table_size
CONST	ENDS
;	COMDAT ?none@?$_Locbase@H@std@@2HB
CONST	SEGMENT
?none@?$_Locbase@H@std@@2HB DD 00H			; std::_Locbase<int>::none
CONST	ENDS
;	COMDAT ?all@?$_Locbase@H@std@@2HB
CONST	SEGMENT
?all@?$_Locbase@H@std@@2HB DD 03fH			; std::_Locbase<int>::all
CONST	ENDS
;	COMDAT ?messages@?$_Locbase@H@std@@2HB
CONST	SEGMENT
?messages@?$_Locbase@H@std@@2HB DD 020H			; std::_Locbase<int>::messages
CONST	ENDS
;	COMDAT ?time@?$_Locbase@H@std@@2HB
CONST	SEGMENT
?time@?$_Locbase@H@std@@2HB DD 010H			; std::_Locbase<int>::time
CONST	ENDS
;	COMDAT ?numeric@?$_Locbase@H@std@@2HB
CONST	SEGMENT
?numeric@?$_Locbase@H@std@@2HB DD 08H			; std::_Locbase<int>::numeric
CONST	ENDS
;	COMDAT ?monetary@?$_Locbase@H@std@@2HB
CONST	SEGMENT
?monetary@?$_Locbase@H@std@@2HB DD 04H			; std::_Locbase<int>::monetary
CONST	ENDS
;	COMDAT ?ctype@?$_Locbase@H@std@@2HB
CONST	SEGMENT
?ctype@?$_Locbase@H@std@@2HB DD 02H			; std::_Locbase<int>::ctype
CONST	ENDS
;	COMDAT ?collate@?$_Locbase@H@std@@2HB
CONST	SEGMENT
?collate@?$_Locbase@H@std@@2HB DD 01H			; std::_Locbase<int>::collate
CONST	ENDS
_DATA	SEGMENT
__bad_alloc_Message DD FLAT:??_C@_0P@GHFPNOJB@bad?5allocation?$AA@
_DATA	ENDS
;	COMDAT ??_C@_0P@GHFPNOJB@bad?5allocation?$AA@
CONST	SEGMENT
??_C@_0P@GHFPNOJB@bad?5allocation?$AA@ DB 'bad allocation', 00H ; `string'
CONST	ENDS
PUBLIC	??_7bad_alloc@std@@6B@				; std::bad_alloc::`vftable'
PUBLIC	??0bad_alloc@std@@QAE@PBD@Z			; std::bad_alloc::bad_alloc
PUBLIC	??_R4bad_alloc@std@@6B@				; std::bad_alloc::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVbad_alloc@std@@@8			; std::bad_alloc `RTTI Type Descriptor'
PUBLIC	??_R3bad_alloc@std@@8				; std::bad_alloc::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2bad_alloc@std@@8				; std::bad_alloc::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@bad_alloc@std@@8			; std::bad_alloc::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	??_R1A@?0A@EA@exception@std@@8			; std::exception::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	??_R0?AVexception@std@@@8			; std::exception `RTTI Type Descriptor'
PUBLIC	??_R3exception@std@@8				; std::exception::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2exception@std@@8				; std::exception::`RTTI Base Class Array'
EXTRN	??0exception@std@@QAE@ABQBD@Z:PROC		; std::exception::exception
EXTRN	??_7type_info@@6B@:QWORD			; type_info::`vftable'
EXTRN	??_Ebad_alloc@std@@UAEPAXI@Z:PROC		; std::bad_alloc::`vector deleting destructor'
EXTRN	?what@exception@std@@UBEPBDXZ:PROC		; std::exception::what
;	COMDAT ??_R2exception@std@@8
; File c:\program files\microsoft visual studio 8\vc\include\exception
rdata$r	SEGMENT
??_R2exception@std@@8 DD FLAT:??_R1A@?0A@EA@exception@std@@8 ; std::exception::`RTTI Base Class Array'
rdata$r	ENDS
;	COMDAT ??_R3exception@std@@8
rdata$r	SEGMENT
??_R3exception@std@@8 DD 00H				; std::exception::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	01H
	DD	FLAT:??_R2exception@std@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVexception@std@@@8
_DATA	SEGMENT
??_R0?AVexception@std@@@8 DD FLAT:??_7type_info@@6B@	; std::exception `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVexception@std@@', 00H
_DATA	ENDS
;	COMDAT ??_R1A@?0A@EA@exception@std@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@exception@std@@8 DD FLAT:??_R0?AVexception@std@@@8 ; std::exception::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	00H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3exception@std@@8
rdata$r	ENDS
;	COMDAT ??_R1A@?0A@EA@bad_alloc@std@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@bad_alloc@std@@8 DD FLAT:??_R0?AVbad_alloc@std@@@8 ; std::bad_alloc::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3bad_alloc@std@@8
rdata$r	ENDS
;	COMDAT ??_R2bad_alloc@std@@8
rdata$r	SEGMENT
??_R2bad_alloc@std@@8 DD FLAT:??_R1A@?0A@EA@bad_alloc@std@@8 ; std::bad_alloc::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@exception@std@@8
rdata$r	ENDS
;	COMDAT ??_R3bad_alloc@std@@8
rdata$r	SEGMENT
??_R3bad_alloc@std@@8 DD 00H				; std::bad_alloc::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2bad_alloc@std@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVbad_alloc@std@@@8
_DATA	SEGMENT
??_R0?AVbad_alloc@std@@@8 DD FLAT:??_7type_info@@6B@	; std::bad_alloc `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVbad_alloc@std@@', 00H
_DATA	ENDS
;	COMDAT ??_R4bad_alloc@std@@6B@
rdata$r	SEGMENT
??_R4bad_alloc@std@@6B@ DD 00H				; std::bad_alloc::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVbad_alloc@std@@@8
	DD	FLAT:??_R3bad_alloc@std@@8
rdata$r	ENDS
;	COMDAT ??_7bad_alloc@std@@6B@
CONST	SEGMENT
??_7bad_alloc@std@@6B@ DD FLAT:??_R4bad_alloc@std@@6B@	; std::bad_alloc::`vftable'
	DD	FLAT:??_Ebad_alloc@std@@UAEPAXI@Z
	DD	FLAT:?what@exception@std@@UBEPBDXZ
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0bad_alloc@std@@QAE@PBD@Z
_TEXT	SEGMENT
__Message$ = 8						; size = 4
??0bad_alloc@std@@QAE@PBD@Z PROC			; std::bad_alloc::bad_alloc, COMDAT
; _this$ = ecx

; 371  : 		{	// construct from message string

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

; 372  : 		}

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

; 380  : 		{	// destroy the object

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

; 381  : 		}

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

; 32   : 	inline const unsigned int GetLength() { return this->m_length; };

	mov	eax, DWORD PTR [ecx+12]
	ret	0
?GetLength@ncStringData@@QAE?BIXZ ENDP			; ncStringData::GetLength
_TEXT	ENDS
PUBLIC	?GetBuffer@ncStringData@@QAEPAXXZ		; ncStringData::GetBuffer
; Function compile flags: /Ogtpy
;	COMDAT ?GetBuffer@ncStringData@@QAEPAXXZ
_TEXT	SEGMENT
?GetBuffer@ncStringData@@QAEPAXXZ PROC			; ncStringData::GetBuffer, COMDAT
; _this$ = ecx

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

	mov	eax, DWORD PTR [ecx+8]
	ret	0
?GetBuffer@ncStringData@@QAEPAXXZ ENDP			; ncStringData::GetBuffer
_TEXT	ENDS
PUBLIC	?IsEmpty@ncStringBase@@QBE_NXZ			; ncStringBase::IsEmpty
; Function compile flags: /Ogtpy
;	COMDAT ?IsEmpty@ncStringBase@@QBE_NXZ
_TEXT	SEGMENT
?IsEmpty@ncStringBase@@QBE_NXZ PROC			; ncStringBase::IsEmpty, COMDAT
; _this$ = ecx

; 60   : 	bool IsEmpty() const { return (this->m_data == NULL || this->m_data->GetLength() == 0 || this->m_data->GetBuffer() == NULL); };

	mov	eax, DWORD PTR [ecx+4]
	test	eax, eax
	je	SHORT $LN3@IsEmpty
	cmp	DWORD PTR [eax+12], 0
	je	SHORT $LN3@IsEmpty
	cmp	DWORD PTR [eax+8], 0
	je	SHORT $LN3@IsEmpty
	xor	eax, eax
	ret	0
$LN3@IsEmpty:
	mov	eax, 1
	ret	0
?IsEmpty@ncStringBase@@QBE_NXZ ENDP			; ncStringBase::IsEmpty
_TEXT	ENDS
PUBLIC	??_7ncString2@@6B@				; ncString2::`vftable'
PUBLIC	??0ncString2@@QAE@ABV0@@Z			; ncString2::ncString2
PUBLIC	??_R4ncString2@@6B@				; ncString2::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVncString2@@@8				; ncString2 `RTTI Type Descriptor'
PUBLIC	??_R3ncString2@@8				; ncString2::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2ncString2@@8				; ncString2::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@ncString2@@8			; ncString2::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	??_R1A@?0A@EA@ncStringBase@@8			; ncStringBase::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	??_R0?AVncStringBase@@@8			; ncStringBase `RTTI Type Descriptor'
PUBLIC	??_R3ncStringBase@@8				; ncStringBase::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2ncStringBase@@8				; ncStringBase::`RTTI Base Class Array'
EXTRN	??0ncStringBase@@QAE@ABV0@@Z:PROC		; ncStringBase::ncStringBase
EXTRN	??_EncString2@@UAEPAXI@Z:PROC			; ncString2::`vector deleting destructor'
EXTRN	?GetLength@ncStringBase@@UBEIXZ:PROC		; ncStringBase::GetLength
EXTRN	?Resize@ncString2@@UAEXI@Z:PROC			; ncString2::Resize
;	COMDAT ??_R2ncStringBase@@8
rdata$r	SEGMENT
??_R2ncStringBase@@8 DD FLAT:??_R1A@?0A@EA@ncStringBase@@8 ; ncStringBase::`RTTI Base Class Array'
rdata$r	ENDS
;	COMDAT ??_R3ncStringBase@@8
rdata$r	SEGMENT
??_R3ncStringBase@@8 DD 00H				; ncStringBase::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	01H
	DD	FLAT:??_R2ncStringBase@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVncStringBase@@@8
_DATA	SEGMENT
??_R0?AVncStringBase@@@8 DD FLAT:??_7type_info@@6B@	; ncStringBase `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVncStringBase@@', 00H
_DATA	ENDS
;	COMDAT ??_R1A@?0A@EA@ncStringBase@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@ncStringBase@@8 DD FLAT:??_R0?AVncStringBase@@@8 ; ncStringBase::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	00H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3ncStringBase@@8
rdata$r	ENDS
;	COMDAT ??_R1A@?0A@EA@ncString2@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@ncString2@@8 DD FLAT:??_R0?AVncString2@@@8 ; ncString2::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3ncString2@@8
rdata$r	ENDS
;	COMDAT ??_R2ncString2@@8
rdata$r	SEGMENT
??_R2ncString2@@8 DD FLAT:??_R1A@?0A@EA@ncString2@@8	; ncString2::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@ncStringBase@@8
rdata$r	ENDS
;	COMDAT ??_R3ncString2@@8
rdata$r	SEGMENT
??_R3ncString2@@8 DD 00H				; ncString2::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2ncString2@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVncString2@@@8
_DATA	SEGMENT
??_R0?AVncString2@@@8 DD FLAT:??_7type_info@@6B@	; ncString2 `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVncString2@@', 00H
_DATA	ENDS
;	COMDAT ??_R4ncString2@@6B@
rdata$r	SEGMENT
??_R4ncString2@@6B@ DD 00H				; ncString2::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVncString2@@@8
	DD	FLAT:??_R3ncString2@@8
rdata$r	ENDS
;	COMDAT ??_7ncString2@@6B@
CONST	SEGMENT
??_7ncString2@@6B@ DD FLAT:??_R4ncString2@@6B@		; ncString2::`vftable'
	DD	FLAT:??_EncString2@@UAEPAXI@Z
	DD	FLAT:?GetLength@ncStringBase@@UBEIXZ
	DD	FLAT:?Resize@ncString2@@UAEXI@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0ncString2@@QAE@ABV0@@Z
_TEXT	SEGMENT
_str$ = 8						; size = 4
??0ncString2@@QAE@ABV0@@Z PROC				; ncString2::ncString2, COMDAT
; _this$ = ecx

; 132  : 	ncString2(const ncString2& str) : ncStringBase(str) { };

	mov	eax, DWORD PTR _str$[esp-4]
	push	esi
	push	eax
	mov	esi, ecx
	call	??0ncStringBase@@QAE@ABV0@@Z		; ncStringBase::ncStringBase
	mov	DWORD PTR [esi], OFFSET ??_7ncString2@@6B@
	mov	eax, esi
	pop	esi
	ret	4
??0ncString2@@QAE@ABV0@@Z ENDP				; ncString2::ncString2
_TEXT	ENDS
PUBLIC	??1ncString2@@UAE@XZ				; ncString2::~ncString2
EXTRN	??1ncStringBase@@UAE@XZ:PROC			; ncStringBase::~ncStringBase
; Function compile flags: /Ogtpy
;	COMDAT ??1ncString2@@UAE@XZ
_TEXT	SEGMENT
??1ncString2@@UAE@XZ PROC				; ncString2::~ncString2, COMDAT
; _this$ = ecx

; 139  : 	~ncString2() { };

	mov	DWORD PTR [ecx], OFFSET ??_7ncString2@@6B@
	jmp	??1ncStringBase@@UAE@XZ			; ncStringBase::~ncStringBase
??1ncString2@@UAE@XZ ENDP				; ncString2::~ncString2
_TEXT	ENDS
PUBLIC	?GetString@ncString2@@QBEPBDXZ			; ncString2::GetString
; Function compile flags: /Ogtpy
;	COMDAT ?GetString@ncString2@@QBEPBDXZ
_TEXT	SEGMENT
?GetString@ncString2@@QBEPBDXZ PROC			; ncString2::GetString, COMDAT
; _this$ = ecx

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

	mov	eax, DWORD PTR [ecx+4]
	test	eax, eax
	je	SHORT $LN3@GetString
	mov	eax, DWORD PTR [eax+8]
	ret	0
$LN3@GetString:
	xor	eax, eax
	ret	0
?GetString@ncString2@@QBEPBDXZ ENDP			; ncString2::GetString
_TEXT	ENDS
PUBLIC	??AncString2@@QBEAADH@Z				; ncString2::operator[]
; Function compile flags: /Ogtpy
;	COMDAT ??AncString2@@QBEAADH@Z
_TEXT	SEGMENT
_nPos$ = 8						; size = 4
??AncString2@@QBEAADH@Z PROC				; ncString2::operator[], COMDAT
; _this$ = ecx

; 146  : 	char &operator[](int nPos) const { return ((char *)this->m_data->GetBuffer())[nPos]; };

	mov	eax, DWORD PTR [ecx+4]
	mov	eax, DWORD PTR [eax+8]
	add	eax, DWORD PTR _nPos$[esp-4]
	ret	4
??AncString2@@QBEAADH@Z ENDP				; ncString2::operator[]
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ??_GncString2@@UAEPAXI@Z
_TEXT	SEGMENT
___flags$ = 8						; size = 4
??_GncString2@@UAEPAXI@Z PROC				; ncString2::`scalar deleting destructor', COMDAT
; _this$ = ecx
	push	esi
	mov	esi, ecx
	mov	DWORD PTR [esi], OFFSET ??_7ncString2@@6B@
	call	??1ncStringBase@@UAE@XZ			; ncStringBase::~ncStringBase
	test	BYTE PTR ___flags$[esp], 1
	je	SHORT $LN7@scalar@2
	push	esi
	call	??3@YAXPAX@Z				; operator delete
	add	esp, 4
$LN7@scalar@2:
	mov	eax, esi
	pop	esi
	ret	4
??_GncString2@@UAEPAXI@Z ENDP				; ncString2::`scalar deleting destructor'
_TEXT	ENDS
PUBLIC	??_C@_0BG@BAFGKCI@?4?4?2NC?5lib?2ncRegEx?4cpp?$AA@ ; `string'
PUBLIC	??_C@_00CNPNBAHC@?$AA@				; `string'
PUBLIC	??1ncRegEx@@QAE@XZ				; ncRegEx::~ncRegEx
EXTRN	__imp__pcre_free:DWORD
EXTRN	??_V@YAXPAX@Z:PROC				; operator delete[]
EXTRN	?m_setOwner@@YAXPBDI0@Z:PROC			; m_setOwner
;	COMDAT ??_C@_0BG@BAFGKCI@?4?4?2NC?5lib?2ncRegEx?4cpp?$AA@
; File d:\source code\nc lib\ncregex.cpp
CONST	SEGMENT
??_C@_0BG@BAFGKCI@?4?4?2NC?5lib?2ncRegEx?4cpp?$AA@ DB '..\NC lib\ncRegEx.'
	DB	'cpp', 00H					; `string'
CONST	ENDS
;	COMDAT ??_C@_00CNPNBAHC@?$AA@
CONST	SEGMENT
??_C@_00CNPNBAHC@?$AA@ DB 00H				; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??1ncRegEx@@QAE@XZ
_TEXT	SEGMENT
??1ncRegEx@@QAE@XZ PROC					; ncRegEx::~ncRegEx, COMDAT
; _this$ = ecx

; 26   : {

	push	esi
	mov	esi, ecx

; 27   : 	if (this->m_Buffer != NULL)

	cmp	DWORD PTR [esi], 0
	je	SHORT $LN6@ncRegEx

; 28   : 		delete [] this->m_Buffer;

	push	OFFSET ??_C@_00CNPNBAHC@?$AA@
	push	28					; 0000001cH
	push	OFFSET ??_C@_0BG@BAFGKCI@?4?4?2NC?5lib?2ncRegEx?4cpp?$AA@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	eax, DWORD PTR [esi]
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
$LN6@ncRegEx:

; 29   : 	if (this->re != NULL)

	mov	esi, DWORD PTR [esi+4]
	test	esi, esi
	je	SHORT $LN1@ncRegEx

; 30   : 		pcre_free(this->re);

	mov	ecx, DWORD PTR __imp__pcre_free
	mov	edx, DWORD PTR [ecx]
	push	esi
	call	edx
	add	esp, 4
$LN1@ncRegEx:
	pop	esi

; 31   : }

	ret	0
??1ncRegEx@@QAE@XZ ENDP					; ncRegEx::~ncRegEx
_TEXT	ENDS
PUBLIC	??_GncRegEx@@QAEPAXI@Z				; ncRegEx::`scalar deleting destructor'
; Function compile flags: /Ogtpy
;	COMDAT ??_GncRegEx@@QAEPAXI@Z
_TEXT	SEGMENT
___flags$ = 8						; size = 4
??_GncRegEx@@QAEPAXI@Z PROC				; ncRegEx::`scalar deleting destructor', COMDAT
; _this$ = ecx
	push	esi
	mov	esi, ecx
	cmp	DWORD PTR [esi], 0
	je	SHORT $LN9@scalar@3
	push	OFFSET ??_C@_00CNPNBAHC@?$AA@
	push	28					; 0000001cH
	push	OFFSET ??_C@_0BG@BAFGKCI@?4?4?2NC?5lib?2ncRegEx?4cpp?$AA@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	eax, DWORD PTR [esi]
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
$LN9@scalar@3:
	mov	eax, DWORD PTR [esi+4]
	test	eax, eax
	je	SHORT $LN4@scalar@3
	mov	ecx, DWORD PTR __imp__pcre_free
	mov	edx, DWORD PTR [ecx]
	push	eax
	call	edx
	add	esp, 4
$LN4@scalar@3:
	test	BYTE PTR ___flags$[esp], 1
	je	SHORT $LN10@scalar@3
	push	esi
	call	??3@YAXPAX@Z				; operator delete
	add	esp, 4
$LN10@scalar@3:
	mov	eax, esi
	pop	esi
	ret	4
??_GncRegEx@@QAEPAXI@Z ENDP				; ncRegEx::`scalar deleting destructor'
_TEXT	ENDS
PUBLIC	?Compile@ncRegEx@@QAE_NPBD@Z			; ncRegEx::Compile
EXTRN	__imp__pcre_exec:PROC
EXTRN	__imp__pcre_study:PROC
EXTRN	__imp__pcre_compile:PROC
EXTRN	??_U@YAPAXI@Z:PROC				; operator new[]
; Function compile flags: /Ogtpy
;	COMDAT ?Compile@ncRegEx@@QAE_NPBD@Z
_TEXT	SEGMENT
_error$ = -8						; size = 4
_erroffset$ = -4					; size = 4
_closePos$ = 8						; size = 4
_RegEx$ = 8						; size = 4
?Compile@ncRegEx@@QAE_NPBD@Z PROC			; ncRegEx::Compile, COMDAT
; _this$ = ecx

; 41   : {

	sub	esp, 8
	push	ebx
	push	ebp
	push	edi

; 42   : 	if (!RegEx || !*RegEx) // NULL pointer or empty string

	mov	edi, DWORD PTR _RegEx$[esp+16]
	xor	ebp, ebp
	cmp	edi, ebp
	mov	ebx, ecx
	je	$LN20@Compile
	cmp	BYTE PTR [edi], 0
	je	$LN20@Compile

; 44   : 
; 45   : 	if (this->re != NULL) // previous

	mov	eax, DWORD PTR [ebx+4]
	cmp	eax, ebp
	je	SHORT $LN19@Compile

; 46   : 	{
; 47   : 		pcre_free(this->re);

	push	eax
	mov	eax, DWORD PTR __imp__pcre_free
	mov	ecx, DWORD PTR [eax]
	call	ecx
	add	esp, 4

; 48   : 		this->re = NULL;

	mov	DWORD PTR [ebx+4], ebp
$LN19@Compile:

; 49   : 	}
; 50   : 	char *nRegEx = new char[strlen(RegEx) +1]; // Stands for "New RegEx"

	push	OFFSET ??_C@_00CNPNBAHC@?$AA@
	push	50					; 00000032H
	push	OFFSET ??_C@_0BG@BAFGKCI@?4?4?2NC?5lib?2ncRegEx?4cpp?$AA@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	eax, edi
	add	esp, 12					; 0000000cH
	lea	edx, DWORD PTR [eax+1]
	npad	1
$LL35@Compile:
	mov	cl, BYTE PTR [eax]
	add	eax, 1
	test	cl, cl
	jne	SHORT $LL35@Compile
	sub	eax, edx
	add	eax, 1
	push	esi
	push	eax
	call	??_U@YAPAXI@Z				; operator new[]
	mov	esi, eax

; 51   : 
; 52   : 	strcpy(nRegEx,RegEx); // Copy to "New RegEx"

	mov	edx, esi
	add	esp, 4
	mov	eax, edi
	sub	edx, edi
$LL26@Compile:
	mov	cl, BYTE PTR [eax]
	mov	BYTE PTR [edx+eax], cl
	add	eax, 1
	test	cl, cl
	jne	SHORT $LL26@Compile

; 53   : 
; 54   : 	/* variables initial */
; 55   : 	const char *error;
; 56   : 	int erroffset, option = 0;
; 57   : 
; 58   : 	/*
; 59   : 		NC specific
; 60   : 		Global flag support for RegEx
; 61   : 		(?[-][JimsuxX]) can override global options
; 62   : 	*/
; 63   : 	int closePos = -1;
; 64   : 	if (nRegEx[0] == '/')

	cmp	BYTE PTR [esi], 47			; 0000002fH
	mov	DWORD PTR _closePos$[esp+20], -1
	jne	$LN13@Compile

; 65   : 	{
; 66   : 		for (int i = strlen(nRegEx) -1; i >= 1; i--) /* "i" can't be lower than 0 or it will have buffer overflow */

	mov	eax, esi
	lea	edx, DWORD PTR [eax+1]
$LL36@Compile:
	mov	cl, BYTE PTR [eax]
	add	eax, 1
	test	cl, cl
	jne	SHORT $LL36@Compile
	sub	eax, edx
	lea	ecx, DWORD PTR [eax-1]
	cmp	ecx, 1
	jl	$LN13@Compile
	mov	al, 92					; 0000005cH
	npad	5
$LL17@Compile:

; 67   : 		{
; 68   : 			if (nRegEx[i] == '/' && nRegEx[i -1] != '\\') /* Make sure it's not evaluated "/" */

	cmp	BYTE PTR [ecx+esi], 47			; 0000002fH
	jne	SHORT $LN16@Compile
	cmp	BYTE PTR [ecx+esi-1], al
	jne	SHORT $LN32@Compile
$LN16@Compile:

; 65   : 	{
; 66   : 		for (int i = strlen(nRegEx) -1; i >= 1; i--) /* "i" can't be lower than 0 or it will have buffer overflow */

	sub	ecx, 1
	cmp	ecx, 1
	jge	SHORT $LL17@Compile

; 67   : 		{
; 68   : 			if (nRegEx[i] == '/' && nRegEx[i -1] != '\\') /* Make sure it's not evaluated "/" */

	jmp	SHORT $LN13@Compile
$LN32@Compile:

; 69   : 			{
; 70   : 				closePos = i;
; 71   : 				break;
; 72   : 			}
; 73   : 		}
; 74   : 
; 75   : 		if (closePos != -1) /* Open and close "/" found */

	cmp	ecx, -1
	mov	DWORD PTR _closePos$[esp+20], ecx
	je	SHORT $LN13@Compile

; 76   : 		{
; 77   : 			for (int i = strlen(nRegEx) -1; i > closePos; i--) /* Check for all options */

	mov	eax, esi
	lea	edi, DWORD PTR [eax+1]
$LL37@Compile:
	mov	dl, BYTE PTR [eax]
	add	eax, 1
	test	dl, dl
	jne	SHORT $LL37@Compile
	sub	eax, edi
	lea	edx, DWORD PTR [eax-1]
	cmp	edx, ecx
	jle	SHORT $LN10@Compile
$LL12@Compile:

; 78   : 			{
; 79   : 				switch(nRegEx[i])

	movsx	eax, BYTE PTR [edx+esi]
	add	eax, -85				; ffffffabH
	cmp	eax, 35					; 00000023H
	ja	SHORT $LN11@Compile
	movzx	eax, BYTE PTR $LN38@Compile[eax]
	jmp	DWORD PTR $LN41@Compile[eax*4]
$LN7@Compile:

; 80   : 				{
; 81   : 					case 'i':
; 82   : 						option |= PCRE_CASELESS;

	or	ebp, 1

; 83   : 						break;

	jmp	SHORT $LN11@Compile
$LN6@Compile:

; 84   : 					case 'm':
; 85   : 						option |= PCRE_MULTILINE;

	or	ebp, 2

; 86   : 						break;

	jmp	SHORT $LN11@Compile
$LN5@Compile:

; 87   : 					case 's':
; 88   : 						option |= PCRE_DOTALL;

	or	ebp, 4

; 89   : 						break;

	jmp	SHORT $LN11@Compile
$LN4@Compile:

; 90   : 					case 'U':
; 91   : 						option |= PCRE_UNGREEDY;

	or	ebp, 512				; 00000200H

; 92   : 						break;

	jmp	SHORT $LN11@Compile
$LN3@Compile:

; 93   : 					case 'x':
; 94   : 						option |= PCRE_EXTENDED;

	or	ebp, 8

; 95   : 						break;

	jmp	SHORT $LN11@Compile
$LN2@Compile:

; 96   : 					case 'X':
; 97   : 						option |= PCRE_EXTRA;

	or	ebp, 64					; 00000040H
$LN11@Compile:

; 76   : 		{
; 77   : 			for (int i = strlen(nRegEx) -1; i > closePos; i--) /* Check for all options */

	sub	edx, 1
	cmp	edx, ecx
	jg	SHORT $LL12@Compile
$LN10@Compile:

; 98   : 						break;
; 99   : 				}
; 100  : 			}
; 101  : 			*nRegEx++;

	add	esi, 1

; 102  : 			nRegEx[closePos -1] = '\0';

	mov	BYTE PTR [ecx+esi-1], 0
$LN13@Compile:

; 103  : 		}
; 104  : 	}
; 105  : 	this->re = pcre_compile(nRegEx,option,&error,&erroffset,NULL);

	push	0
	lea	ecx, DWORD PTR _erroffset$[esp+28]
	push	ecx
	lea	edx, DWORD PTR _error$[esp+32]
	push	edx
	push	ebp
	push	esi
	call	DWORD PTR __imp__pcre_compile

; 106  : 	this->matchCount = pcre_exec(this->re,pcre_study(this->re,0,&error),this->m_Buffer,strlen(this->m_Buffer),0,0,this->countVector,1024);

	mov	edi, DWORD PTR [ebx]
	mov	ecx, edi
	add	esp, 20					; 00000014H
	mov	DWORD PTR [ebx+4], eax
	lea	ebp, DWORD PTR [ecx+1]
	npad	1
$LL39@Compile:
	mov	dl, BYTE PTR [ecx]
	add	ecx, 1
	test	dl, dl
	jne	SHORT $LL39@Compile
	push	1024					; 00000400H
	lea	edx, DWORD PTR [ebx+8]
	push	edx
	push	0
	push	0
	sub	ecx, ebp
	push	ecx
	push	edi
	lea	ecx, DWORD PTR _error$[esp+48]
	push	ecx
	push	0
	push	eax
	call	DWORD PTR __imp__pcre_study
	mov	edx, DWORD PTR [ebx+4]
	add	esp, 12					; 0000000cH
	push	eax
	push	edx
	call	DWORD PTR __imp__pcre_exec
	add	esp, 32					; 00000020H

; 107  : 	if (closePos != -1)

	cmp	DWORD PTR _closePos$[esp+20], -1
	mov	DWORD PTR [ebx+4104], eax
	je	SHORT $LN1@Compile

; 108  : 		*nRegEx--;

	sub	esi, 1
$LN1@Compile:

; 109  : 	delete [] nRegEx;

	push	OFFSET ??_C@_00CNPNBAHC@?$AA@
	push	109					; 0000006dH
	push	OFFSET ??_C@_0BG@BAFGKCI@?4?4?2NC?5lib?2ncRegEx?4cpp?$AA@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	push	esi
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H

; 110  : 	return (this->matchCount >= 0 ? true : false);

	cmp	DWORD PTR [ebx+4104], 0
	pop	esi
	pop	edi
	pop	ebp
	setge	al
	pop	ebx

; 111  : }

	add	esp, 8
	ret	4
$LN20@Compile:
	pop	edi
	pop	ebp

; 43   : 		return false;

	xor	al, al
	pop	ebx

; 111  : }

	add	esp, 8
	ret	4
	npad	2
$LN41@Compile:
	DD	$LN4@Compile
	DD	$LN2@Compile
	DD	$LN7@Compile
	DD	$LN6@Compile
	DD	$LN5@Compile
	DD	$LN3@Compile
	DD	$LN11@Compile
$LN38@Compile:
	DB	0
	DB	6
	DB	6
	DB	1
	DB	6
	DB	6
	DB	6
	DB	6
	DB	6
	DB	6
	DB	6
	DB	6
	DB	6
	DB	6
	DB	6
	DB	6
	DB	6
	DB	6
	DB	6
	DB	6
	DB	2
	DB	6
	DB	6
	DB	6
	DB	3
	DB	6
	DB	6
	DB	6
	DB	6
	DB	6
	DB	4
	DB	6
	DB	6
	DB	6
	DB	6
	DB	5
?Compile@ncRegEx@@QAE_NPBD@Z ENDP			; ncRegEx::Compile
_TEXT	ENDS
PUBLIC	?Compile@ncRegEx@@QAE_NPB_W@Z			; ncRegEx::Compile
EXTRN	_wcstombs:PROC
; Function compile flags: /Ogtpy
;	COMDAT ?Compile@ncRegEx@@QAE_NPB_W@Z
_TEXT	SEGMENT
_RegEx$ = 8						; size = 4
?Compile@ncRegEx@@QAE_NPB_W@Z PROC			; ncRegEx::Compile, COMDAT
; _this$ = ecx

; 113  : {

	push	ebx
	push	esi
	push	edi

; 114  : 	char *tmpBuf = new char[wcslen(RegEx) *2 +1];

	push	OFFSET ??_C@_00CNPNBAHC@?$AA@
	push	114					; 00000072H
	push	OFFSET ??_C@_0BG@BAFGKCI@?4?4?2NC?5lib?2ncRegEx?4cpp?$AA@
	mov	ebx, ecx
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	edi, DWORD PTR _RegEx$[esp+20]
	mov	eax, edi
	add	esp, 12					; 0000000cH
	lea	edx, DWORD PTR [eax+2]
$LL7@Compile@2:
	mov	cx, WORD PTR [eax]
	add	eax, 2
	test	cx, cx
	jne	SHORT $LL7@Compile@2
	sub	eax, edx
	sar	eax, 1
	lea	eax, DWORD PTR [eax+eax+1]
	push	eax
	call	??_U@YAPAXI@Z				; operator new[]
	mov	esi, eax

; 115  : 	wcstombs(tmpBuf,RegEx,wcslen(RegEx) *2);

	mov	eax, edi
	add	esp, 4
	lea	edx, DWORD PTR [eax+2]
$LL8@Compile@2:
	mov	cx, WORD PTR [eax]
	add	eax, 2
	test	cx, cx
	jne	SHORT $LL8@Compile@2
	sub	eax, edx
	sar	eax, 1
	lea	ecx, DWORD PTR [eax+eax]
	push	ecx
	push	edi
	push	esi
	call	_wcstombs
	add	esp, 12					; 0000000cH

; 116  : 	bool r = this->Compile(tmpBuf);

	push	esi
	mov	ecx, ebx
	call	?Compile@ncRegEx@@QAE_NPBD@Z		; ncRegEx::Compile

; 117  : 	delete [] tmpBuf;

	push	OFFSET ??_C@_00CNPNBAHC@?$AA@
	push	117					; 00000075H
	push	OFFSET ??_C@_0BG@BAFGKCI@?4?4?2NC?5lib?2ncRegEx?4cpp?$AA@
	mov	bl, al
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	push	esi
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
	pop	edi
	pop	esi

; 118  : 	return r;

	mov	al, bl
	pop	ebx

; 119  : }

	ret	4
?Compile@ncRegEx@@QAE_NPB_W@Z ENDP			; ncRegEx::Compile
_TEXT	ENDS
PUBLIC	?Get_Match@ncRegEx@@QAEXHPADH@Z			; ncRegEx::Get_Match
EXTRN	_strncpy:PROC
; Function compile flags: /Ogtpy
;	COMDAT ?Get_Match@ncRegEx@@QAEXHPADH@Z
_TEXT	SEGMENT
_arrayId$ = 8						; size = 4
_buf$ = 12						; size = 4
_size$ = 16						; size = 4
?Get_Match@ncRegEx@@QAEXHPADH@Z PROC			; ncRegEx::Get_Match, COMDAT
; _this$ = ecx

; 122  : 	if (arrayId <= 0 || /* Invalid array Id */
; 123  : 		this->matchCount == PCRE_ERROR_NOMATCH) /* No match */

	mov	edx, DWORD PTR _arrayId$[esp-4]
	test	edx, edx
	jle	SHORT $LN1@Get_Match
	cmp	DWORD PTR [ecx+4104], -1
	je	SHORT $LN1@Get_Match

; 126  : 		return;
; 127  : 	}
; 128  : 	int strLength = this->countVector[2 * arrayId +1] - this->countVector[2 * arrayId];

	mov	eax, DWORD PTR [ecx+edx*8+8]
	push	ebx
	push	esi
	mov	esi, DWORD PTR [ecx+edx*8+12]
	push	edi

; 129  : 	strncpy(buf,this->m_Buffer + this->countVector[2 * arrayId],size > strLength ? strLength : size);

	mov	edi, DWORD PTR _size$[esp+8]
	sub	esi, eax
	cmp	edi, esi
	mov	edx, esi
	jg	SHORT $LN6@Get_Match
	mov	edx, edi
$LN6@Get_Match:
	mov	ecx, DWORD PTR [ecx]
	mov	ebx, DWORD PTR _buf$[esp+8]
	push	edx
	add	ecx, eax
	push	ecx
	push	ebx
	call	_strncpy
	add	esp, 12					; 0000000cH

; 130  : 	buf[size > strLength ? strLength : size] = '\0';

	cmp	edi, esi
	jg	SHORT $LN8@Get_Match
	mov	esi, edi
$LN8@Get_Match:
	pop	edi
	mov	BYTE PTR [esi+ebx], 0
	pop	esi
	pop	ebx

; 131  : }

	ret	12					; 0000000cH
$LN1@Get_Match:

; 124  : 	{
; 125  : 		strcpy(buf,"");

	mov	edx, DWORD PTR _buf$[esp-4]
	mov	BYTE PTR [edx], 0

; 131  : }

	ret	12					; 0000000cH
?Get_Match@ncRegEx@@QAEXHPADH@Z ENDP			; ncRegEx::Get_Match
_TEXT	ENDS
PUBLIC	?Get_Match_Length@ncRegEx@@QAEHH@Z		; ncRegEx::Get_Match_Length
; Function compile flags: /Ogtpy
;	COMDAT ?Get_Match_Length@ncRegEx@@QAEHH@Z
_TEXT	SEGMENT
_arrayId$ = 8						; size = 4
?Get_Match_Length@ncRegEx@@QAEHH@Z PROC			; ncRegEx::Get_Match_Length, COMDAT
; _this$ = ecx

; 134  : 	if (arrayId <= 0 || /* Invalid array Id */
; 135  : 		this->matchCount == PCRE_ERROR_NOMATCH) /* No match */

	mov	edx, DWORD PTR _arrayId$[esp-4]
	test	edx, edx
	jle	SHORT $LN1@Get_Match_
	cmp	DWORD PTR [ecx+4104], -1
	je	SHORT $LN1@Get_Match_

; 138  : 	}
; 139  : 	return this->countVector[2 * arrayId +1] - this->countVector[2 * arrayId];

	mov	eax, DWORD PTR [ecx+edx*8+12]
	sub	eax, DWORD PTR [ecx+edx*8+8]

; 140  : }

	ret	4
$LN1@Get_Match_:

; 136  : 	{
; 137  : 		return 0;

	xor	eax, eax

; 140  : }

	ret	4
?Get_Match_Length@ncRegEx@@QAEHH@Z ENDP			; ncRegEx::Get_Match_Length
_TEXT	ENDS
PUBLIC	?Set_String@ncRegEx@@QAEXPBD@Z			; ncRegEx::Set_String
; Function compile flags: /Ogtpy
;	COMDAT ?Set_String@ncRegEx@@QAEXPBD@Z
_TEXT	SEGMENT
_string$ = 8						; size = 4
?Set_String@ncRegEx@@QAEXPBD@Z PROC			; ncRegEx::Set_String, COMDAT
; _this$ = ecx

; 146  : {

	push	esi
	push	edi

; 147  : 	if (!string) // NULL pointer

	mov	edi, DWORD PTR _string$[esp+4]
	test	edi, edi
	mov	esi, ecx
	je	SHORT $LN3@Set_String

; 148  : 		return;
; 149  : 
; 150  : 	/* Delete if allocated before */
; 151  : 	if (this->m_Buffer != NULL)

	cmp	DWORD PTR [esi], 0
	je	SHORT $LN6@Set_String

; 152  : 		delete [] this->m_Buffer;

	push	OFFSET ??_C@_00CNPNBAHC@?$AA@
	push	152					; 00000098H
	push	OFFSET ??_C@_0BG@BAFGKCI@?4?4?2NC?5lib?2ncRegEx?4cpp?$AA@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	eax, DWORD PTR [esi]
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
$LN6@Set_String:

; 153  : 
; 154  : 	this->m_Buffer = new char[strlen(string) +1]; // Allocate a new buffer

	push	OFFSET ??_C@_00CNPNBAHC@?$AA@
	push	154					; 0000009aH
	push	OFFSET ??_C@_0BG@BAFGKCI@?4?4?2NC?5lib?2ncRegEx?4cpp?$AA@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	eax, edi
	add	esp, 12					; 0000000cH
	lea	edx, DWORD PTR [eax+1]
	npad	4
$LL11@Set_String:
	mov	cl, BYTE PTR [eax]
	add	eax, 1
	test	cl, cl
	jne	SHORT $LL11@Set_String
	sub	eax, edx
	add	eax, 1
	push	eax
	call	??_U@YAPAXI@Z				; operator new[]
	add	esp, 4
	mov	DWORD PTR [esi], eax

; 155  : 	strcpy(this->m_Buffer,string); // Copy string to new allocated buffer

	mov	ecx, edi
	mov	edx, eax
	npad	3
$LL9@Set_String:
	mov	al, BYTE PTR [ecx]
	mov	BYTE PTR [edx], al
	add	ecx, 1
	add	edx, 1
	test	al, al
	jne	SHORT $LL9@Set_String
$LN3@Set_String:
	pop	edi
	pop	esi

; 156  : }

	ret	4
?Set_String@ncRegEx@@QAEXPBD@Z ENDP			; ncRegEx::Set_String
_TEXT	ENDS
PUBLIC	?Set_String@ncRegEx@@QAEXPB_W@Z			; ncRegEx::Set_String
; Function compile flags: /Ogtpy
;	COMDAT ?Set_String@ncRegEx@@QAEXPB_W@Z
_TEXT	SEGMENT
_wString$ = 8						; size = 4
?Set_String@ncRegEx@@QAEXPB_W@Z PROC			; ncRegEx::Set_String, COMDAT
; _this$ = ecx

; 158  : {

	push	esi
	push	edi

; 159  : 	if (!wString) // NULL pointer

	mov	edi, DWORD PTR _wString$[esp+4]
	test	edi, edi
	mov	esi, ecx
	je	$LN3@Set_String@2

; 160  : 		return;
; 161  : 
; 162  : 	/* Delete if allocated before */
; 163  : 	if (this->m_Buffer != NULL)

	cmp	DWORD PTR [esi], 0
	je	SHORT $LN6@Set_String@2

; 164  : 		delete [] this->m_Buffer;

	push	OFFSET ??_C@_00CNPNBAHC@?$AA@
	push	164					; 000000a4H
	push	OFFSET ??_C@_0BG@BAFGKCI@?4?4?2NC?5lib?2ncRegEx?4cpp?$AA@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	eax, DWORD PTR [esi]
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
$LN6@Set_String@2:

; 165  : 
; 166  : 	this->m_Buffer = new char[wcslen(wString) *2 +1]; // Allocate a new buffer

	push	OFFSET ??_C@_00CNPNBAHC@?$AA@
	push	166					; 000000a6H
	push	OFFSET ??_C@_0BG@BAFGKCI@?4?4?2NC?5lib?2ncRegEx?4cpp?$AA@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	eax, edi
	add	esp, 12					; 0000000cH
	lea	edx, DWORD PTR [eax+2]
$LL9@Set_String@2:
	mov	cx, WORD PTR [eax]
	add	eax, 2
	test	cx, cx
	jne	SHORT $LL9@Set_String@2
	sub	eax, edx
	sar	eax, 1
	lea	ecx, DWORD PTR [eax+eax+1]
	push	ecx
	call	??_U@YAPAXI@Z				; operator new[]

; 167  : 	wcstombs(this->m_Buffer,wString,wcslen(wString) *2); // Convert to multi-byte character and copy to new allocated buffer

	mov	ecx, edi
	mov	DWORD PTR [esi], eax
	add	esp, 4
	lea	esi, DWORD PTR [ecx+2]
$LL10@Set_String@2:
	mov	dx, WORD PTR [ecx]
	add	ecx, 2
	test	dx, dx
	jne	SHORT $LL10@Set_String@2
	sub	ecx, esi
	sar	ecx, 1
	lea	edx, DWORD PTR [ecx+ecx]
	push	edx
	push	edi
	push	eax
	call	_wcstombs
	add	esp, 12					; 0000000cH
$LN3@Set_String@2:
	pop	edi
	pop	esi

; 168  : }

	ret	4
?Set_String@ncRegEx@@QAEXPB_W@Z ENDP			; ncRegEx::Set_String
_TEXT	ENDS
PUBLIC	__TI2?AVbad_alloc@std@@
PUBLIC	??_C@_0DN@JHKGIIJF@C?3?2Program?5Files?2Microsoft?5Visua@ ; `string'
PUBLIC	?allocate@?$_DebugHeapAllocator@D@std@@QAAPADIPBX@Z ; std::_DebugHeapAllocator<char>::allocate
PUBLIC	__CTA2?AVbad_alloc@std@@
PUBLIC	__CT??_R0?AVbad_alloc@std@@@8??0bad_alloc@std@@QAE@ABV01@@Z12
PUBLIC	??0bad_alloc@std@@QAE@ABV01@@Z			; std::bad_alloc::bad_alloc
PUBLIC	__CT??_R0?AVexception@std@@@8??0exception@std@@QAE@ABV01@@Z12
EXTRN	??_U@YAPAXIABU_DebugHeapTag_t@std@@PADH@Z:PROC	; operator new[]
EXTRN	?_DebugHeapTag_func@std@@YAABU_DebugHeapTag_t@1@XZ:PROC ; std::_DebugHeapTag_func
EXTRN	__CxxThrowException@8:PROC
EXTRN	??0exception@std@@QAE@ABV01@@Z:PROC		; std::exception::exception
;	COMDAT __CT??_R0?AVexception@std@@@8??0exception@std@@QAE@ABV01@@Z12
; File c:\program files\microsoft visual studio 8\vc\include\exception
xdata$x	SEGMENT
__CT??_R0?AVexception@std@@@8??0exception@std@@QAE@ABV01@@Z12 DD 00H
	DD	FLAT:??_R0?AVexception@std@@@8
	DD	00H
	DD	0ffffffffH
	ORG $+4
	DD	0cH
	DD	FLAT:??0exception@std@@QAE@ABV01@@Z
xdata$x	ENDS
;	COMDAT __CT??_R0?AVbad_alloc@std@@@8??0bad_alloc@std@@QAE@ABV01@@Z12
xdata$x	SEGMENT
__CT??_R0?AVbad_alloc@std@@@8??0bad_alloc@std@@QAE@ABV01@@Z12 DD 00H
	DD	FLAT:??_R0?AVbad_alloc@std@@@8
	DD	00H
	DD	0ffffffffH
	ORG $+4
	DD	0cH
	DD	FLAT:??0bad_alloc@std@@QAE@ABV01@@Z
xdata$x	ENDS
;	COMDAT __CTA2?AVbad_alloc@std@@
xdata$x	SEGMENT
__CTA2?AVbad_alloc@std@@ DD 02H
	DD	FLAT:__CT??_R0?AVbad_alloc@std@@@8??0bad_alloc@std@@QAE@ABV01@@Z12
	DD	FLAT:__CT??_R0?AVexception@std@@@8??0exception@std@@QAE@ABV01@@Z12
xdata$x	ENDS
;	COMDAT __TI2?AVbad_alloc@std@@
xdata$x	SEGMENT
__TI2?AVbad_alloc@std@@ DD 00H
	DD	FLAT:??1bad_alloc@std@@UAE@XZ
	DD	00H
	DD	FLAT:__CTA2?AVbad_alloc@std@@
xdata$x	ENDS
;	COMDAT ??_C@_0DN@JHKGIIJF@C?3?2Program?5Files?2Microsoft?5Visua@
CONST	SEGMENT
??_C@_0DN@JHKGIIJF@C?3?2Program?5Files?2Microsoft?5Visua@ DB 'C:\Program '
	DB	'Files\Microsoft Visual Studio 8\VC\include\xdebug', 00H ; `string'
; Function compile flags: /Ogtpy
; File c:\program files\microsoft visual studio 8\vc\include\xdebug
CONST	ENDS
;	COMDAT ?allocate@?$_DebugHeapAllocator@D@std@@QAAPADIPBX@Z
_TEXT	SEGMENT
$T42102 = -12						; size = 12
_this$ = 8						; size = 4
$T42108 = 12						; size = 4
__Count$ = 12						; size = 4
___formal$ = 16						; size = 4
?allocate@?$_DebugHeapAllocator@D@std@@QAAPADIPBX@Z PROC ; std::_DebugHeapAllocator<char>::allocate, COMDAT

; 79   : 		{	// check for integer overflow

	sub	esp, 12					; 0000000cH
	push	esi

; 80   : 		if (_Count <= 0)

	mov	esi, DWORD PTR __Count$[esp+12]
	test	esi, esi
	ja	SHORT $LN3@allocate

; 81   : 			_Count = 0;

	xor	esi, esi
$LN1@allocate:

; 84   : 
; 85   : 			// allocate array of _Count elements, ignore hint
; 86   : 		return ((_Ty *)_NEW_CRT char[_Count * sizeof(_Ty)]);

	push	86					; 00000056H
	push	OFFSET ??_C@_0DN@JHKGIIJF@C?3?2Program?5Files?2Microsoft?5Visua@
	call	?_DebugHeapTag_func@std@@YAABU_DebugHeapTag_t@1@XZ ; std::_DebugHeapTag_func
	push	eax
	push	esi
	call	??_U@YAPAXIABU_DebugHeapTag_t@std@@PADH@Z ; operator new[]
	add	esp, 16					; 00000010H
	pop	esi

; 87   : 		}

	add	esp, 12					; 0000000cH
	ret	0
$LN3@allocate:

; 82   : 		else if (((size_t)(-1) / _Count) < sizeof(_Ty))

	or	eax, -1
	xor	edx, edx
	div	esi
	cmp	eax, 1
	jae	SHORT $LN1@allocate

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

	lea	eax, DWORD PTR $T42108[esp+12]
	push	eax
	lea	ecx, DWORD PTR $T42102[esp+20]
	mov	DWORD PTR $T42108[esp+16], 0
	call	??0exception@std@@QAE@ABQBD@Z		; std::exception::exception
	push	OFFSET __TI2?AVbad_alloc@std@@
	lea	ecx, DWORD PTR $T42102[esp+20]
	push	ecx
	mov	DWORD PTR $T42102[esp+24], OFFSET ??_7bad_alloc@std@@6B@
	call	__CxxThrowException@8
$LN9@allocate:
$LN8@allocate:
	int	3
?allocate@?$_DebugHeapAllocator@D@std@@QAAPADIPBX@Z ENDP ; std::_DebugHeapAllocator<char>::allocate
_TEXT	ENDS
PUBLIC	?allocate@?$_DebugHeapAllocator@D@std@@QAEPADI@Z ; std::_DebugHeapAllocator<char>::allocate
; Function compile flags: /Ogtpy
;	COMDAT ?allocate@?$_DebugHeapAllocator@D@std@@QAEPADI@Z
_TEXT	SEGMENT
$T42114 = -12						; size = 12
$T42119 = 8						; size = 4
__Count$ = 8						; size = 4
?allocate@?$_DebugHeapAllocator@D@std@@QAEPADI@Z PROC	; std::_DebugHeapAllocator<char>::allocate, COMDAT
; _this$ = ecx

; 90   : 		{	// check for integer overflow

	sub	esp, 12					; 0000000cH
	push	esi

; 91   : 		if (_Count <= 0)

	mov	esi, DWORD PTR __Count$[esp+12]
	test	esi, esi
	ja	SHORT $LN3@allocate@2

; 92   : 			_Count = 0;

	xor	esi, esi
$LN1@allocate@2:

; 95   : 
; 96   : 			// allocate array of _Count elements
; 97   : 		return ((_Ty *)_NEW_CRT char[_Count * sizeof(_Ty)]);

	push	97					; 00000061H
	push	OFFSET ??_C@_0DN@JHKGIIJF@C?3?2Program?5Files?2Microsoft?5Visua@
	call	?_DebugHeapTag_func@std@@YAABU_DebugHeapTag_t@1@XZ ; std::_DebugHeapTag_func
	push	eax
	push	esi
	call	??_U@YAPAXIABU_DebugHeapTag_t@std@@PADH@Z ; operator new[]
	add	esp, 16					; 00000010H
	pop	esi

; 98   : 		}

	add	esp, 12					; 0000000cH
	ret	4
$LN3@allocate@2:

; 93   : 		else if (((size_t)(-1) / _Count) < sizeof(_Ty))

	or	eax, -1
	xor	edx, edx
	div	esi
	cmp	eax, 1
	jae	SHORT $LN1@allocate@2

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

	lea	eax, DWORD PTR $T42119[esp+12]
	push	eax
	lea	ecx, DWORD PTR $T42114[esp+20]
	mov	DWORD PTR $T42119[esp+16], 0
	call	??0exception@std@@QAE@ABQBD@Z		; std::exception::exception
	push	OFFSET __TI2?AVbad_alloc@std@@
	lea	ecx, DWORD PTR $T42114[esp+20]
	push	ecx
	mov	DWORD PTR $T42114[esp+24], OFFSET ??_7bad_alloc@std@@6B@
	call	__CxxThrowException@8
$LN9@allocate@2:
$LN8@allocate@2:
	int	3
?allocate@?$_DebugHeapAllocator@D@std@@QAEPADI@Z ENDP	; std::_DebugHeapAllocator<char>::allocate
_TEXT	ENDS
PUBLIC	?Count@?$ncDynamicVector@UncRegExFltrData@@@@QAEIXZ ; ncDynamicVector<ncRegExFltrData>::Count
; Function compile flags: /Ogtpy
; File d:\source code\nc lib\ncvector.h
;	COMDAT ?Count@?$ncDynamicVector@UncRegExFltrData@@@@QAEIXZ
_TEXT	SEGMENT
?Count@?$ncDynamicVector@UncRegExFltrData@@@@QAEIXZ PROC ; ncDynamicVector<ncRegExFltrData>::Count, COMDAT
; _this$ = ecx

; 127  : 		return this->m_Items;

	mov	eax, DWORD PTR [ecx+12]

; 128  : 	}

	ret	0
?Count@?$ncDynamicVector@UncRegExFltrData@@@@QAEIXZ ENDP ; ncDynamicVector<ncRegExFltrData>::Count
_TEXT	ENDS
PUBLIC	??A?$ncVector@UncRegExFltrData@@@@QAEAAUncRegExFltrData@@I@Z ; ncVector<ncRegExFltrData>::operator[]
; Function compile flags: /Ogtpy
;	COMDAT ??A?$ncVector@UncRegExFltrData@@@@QAEAAUncRegExFltrData@@I@Z
_TEXT	SEGMENT
_Index$ = 8						; size = 4
??A?$ncVector@UncRegExFltrData@@@@QAEAAUncRegExFltrData@@I@Z PROC ; ncVector<ncRegExFltrData>::operator[], COMDAT
; _this$ = ecx

; 40   : 		return this->m_Vector[Index];

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

; 41   : 	}

	ret	4
??A?$ncVector@UncRegExFltrData@@@@QAEAAUncRegExFltrData@@I@Z ENDP ; ncVector<ncRegExFltrData>::operator[]
_TEXT	ENDS
PUBLIC	??_C@_0CB@BOFIHJED@d?3?2source?5code?2nc?5lib?2ncVector?4h@ ; `string'
PUBLIC	?Clear@?$ncVector@UncRegExFltrData@@@@UAEXXZ	; ncVector<ncRegExFltrData>::Clear
;	COMDAT ??_C@_0CB@BOFIHJED@d?3?2source?5code?2nc?5lib?2ncVector?4h@
CONST	SEGMENT
??_C@_0CB@BOFIHJED@d?3?2source?5code?2nc?5lib?2ncVector?4h@ DB 'd:\source'
	DB	' code\nc lib\ncVector.h', 00H		; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?Clear@?$ncVector@UncRegExFltrData@@@@UAEXXZ
_TEXT	SEGMENT
?Clear@?$ncVector@UncRegExFltrData@@@@UAEXXZ PROC	; ncVector<ncRegExFltrData>::Clear, COMDAT
; _this$ = ecx

; 52   : 	{

	push	esi
	mov	esi, ecx

; 53   : 		if (this->m_Vector)

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

; 54   : 		{
; 55   : 			delete [] this->m_Vector;

	push	OFFSET ??_C@_00CNPNBAHC@?$AA@
	push	55					; 00000037H
	push	OFFSET ??_C@_0CB@BOFIHJED@d?3?2source?5code?2nc?5lib?2ncVector?4h@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	eax, DWORD PTR [esi+4]
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H

; 56   : 			this->m_Vector = NULL;

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

; 57   : 		}
; 58   : 		this->m_Length = 0;

	mov	DWORD PTR [esi+8], 0
	pop	esi

; 59   : 	}

	ret	0
?Clear@?$ncVector@UncRegExFltrData@@@@UAEXXZ ENDP	; ncVector<ncRegExFltrData>::Clear
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ??0bad_alloc@std@@QAE@ABV01@@Z
_TEXT	SEGMENT
___that$ = 8						; size = 4
??0bad_alloc@std@@QAE@ABV01@@Z PROC			; std::bad_alloc::bad_alloc, COMDAT
; _this$ = ecx
	mov	eax, DWORD PTR ___that$[esp-4]
	push	esi
	push	eax
	mov	esi, ecx
	call	??0exception@std@@QAE@ABV01@@Z		; std::exception::exception
	mov	DWORD PTR [esi], OFFSET ??_7bad_alloc@std@@6B@
	mov	eax, esi
	pop	esi
	ret	4
??0bad_alloc@std@@QAE@ABV01@@Z ENDP			; std::bad_alloc::bad_alloc
_TEXT	ENDS
PUBLIC	??_H@YGXPAXIHP6EPAX0@Z@Z			; `vector constructor iterator'
; Function compile flags: /Ogtpy
;	COMDAT ??_H@YGXPAXIHP6EPAX0@Z@Z
_TEXT	SEGMENT
___t$ = 8						; size = 4
___s$ = 12						; size = 4
___n$ = 16						; size = 4
___f$ = 20						; size = 4
??_H@YGXPAXIHP6EPAX0@Z@Z PROC				; `vector constructor iterator', COMDAT
	push	edi
	mov	edi, DWORD PTR ___n$[esp]
	sub	edi, 1
	js	SHORT $LN1@vector
	push	ebx
	mov	ebx, DWORD PTR ___f$[esp+4]
	push	ebp
	mov	ebp, DWORD PTR ___s$[esp+8]
	push	esi
	mov	esi, DWORD PTR ___t$[esp+12]
	npad	7
$LL2@vector:
	mov	ecx, esi
	call	ebx
	add	esi, ebp
	sub	edi, 1
	jns	SHORT $LL2@vector
	pop	esi
	pop	ebp
	pop	ebx
$LN1@vector:
	pop	edi
	ret	16					; 00000010H
??_H@YGXPAXIHP6EPAX0@Z@Z ENDP				; `vector constructor iterator'
_TEXT	ENDS
PUBLIC	??0?$allocator@D@std@@QAE@XZ			; std::allocator<char>::allocator<char>
; Function compile flags: /Ogtpy
; File c:\program files\microsoft visual studio 8\vc\include\xmemory
;	COMDAT ??0?$allocator@D@std@@QAE@XZ
_TEXT	SEGMENT
??0?$allocator@D@std@@QAE@XZ PROC			; std::allocator<char>::allocator<char>, COMDAT
; _this$ = ecx

; 120  : 	allocator() _THROW0()

	mov	eax, ecx

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

	ret	0
??0?$allocator@D@std@@QAE@XZ ENDP			; std::allocator<char>::allocator<char>
_TEXT	ENDS
PUBLIC	??_7?$ncVector@UncRegExFltrData@@@@6B@		; ncVector<ncRegExFltrData>::`vftable'
PUBLIC	??0?$ncVector@UncRegExFltrData@@@@QAE@XZ	; ncVector<ncRegExFltrData>::ncVector<ncRegExFltrData>
PUBLIC	??_R4?$ncVector@UncRegExFltrData@@@@6B@		; ncVector<ncRegExFltrData>::`RTTI Complete Object Locator'
PUBLIC	??_R0?AV?$ncVector@UncRegExFltrData@@@@@8	; ncVector<ncRegExFltrData> `RTTI Type Descriptor'
PUBLIC	??_R3?$ncVector@UncRegExFltrData@@@@8		; ncVector<ncRegExFltrData>::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2?$ncVector@UncRegExFltrData@@@@8		; ncVector<ncRegExFltrData>::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@?$ncVector@UncRegExFltrData@@@@8	; ncVector<ncRegExFltrData>::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?Resize@?$ncVector@UncRegExFltrData@@@@UAE_NH@Z	; ncVector<ncRegExFltrData>::Resize
EXTRN	??_E?$ncVector@UncRegExFltrData@@@@UAEPAXI@Z:PROC ; ncVector<ncRegExFltrData>::`vector deleting destructor'
;	COMDAT ??_R1A@?0A@EA@?$ncVector@UncRegExFltrData@@@@8
; File d:\source code\nc lib\ncvector.h
rdata$r	SEGMENT
??_R1A@?0A@EA@?$ncVector@UncRegExFltrData@@@@8 DD FLAT:??_R0?AV?$ncVector@UncRegExFltrData@@@@@8 ; ncVector<ncRegExFltrData>::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	00H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3?$ncVector@UncRegExFltrData@@@@8
rdata$r	ENDS
;	COMDAT ??_R2?$ncVector@UncRegExFltrData@@@@8
rdata$r	SEGMENT
??_R2?$ncVector@UncRegExFltrData@@@@8 DD FLAT:??_R1A@?0A@EA@?$ncVector@UncRegExFltrData@@@@8 ; ncVector<ncRegExFltrData>::`RTTI Base Class Array'
rdata$r	ENDS
;	COMDAT ??_R3?$ncVector@UncRegExFltrData@@@@8
rdata$r	SEGMENT
??_R3?$ncVector@UncRegExFltrData@@@@8 DD 00H		; ncVector<ncRegExFltrData>::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	01H
	DD	FLAT:??_R2?$ncVector@UncRegExFltrData@@@@8
rdata$r	ENDS
;	COMDAT ??_R0?AV?$ncVector@UncRegExFltrData@@@@@8
_DATA	SEGMENT
??_R0?AV?$ncVector@UncRegExFltrData@@@@@8 DD FLAT:??_7type_info@@6B@ ; ncVector<ncRegExFltrData> `RTTI Type Descriptor'
	DD	00H
	DB	'.?AV?$ncVector@UncRegExFltrData@@@@', 00H
_DATA	ENDS
;	COMDAT ??_R4?$ncVector@UncRegExFltrData@@@@6B@
rdata$r	SEGMENT
??_R4?$ncVector@UncRegExFltrData@@@@6B@ DD 00H		; ncVector<ncRegExFltrData>::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AV?$ncVector@UncRegExFltrData@@@@@8
	DD	FLAT:??_R3?$ncVector@UncRegExFltrData@@@@8
rdata$r	ENDS
;	COMDAT ??_7?$ncVector@UncRegExFltrData@@@@6B@
CONST	SEGMENT
??_7?$ncVector@UncRegExFltrData@@@@6B@ DD FLAT:??_R4?$ncVector@UncRegExFltrData@@@@6B@ ; ncVector<ncRegExFltrData>::`vftable'
	DD	FLAT:??_E?$ncVector@UncRegExFltrData@@@@UAEPAXI@Z
	DD	FLAT:?Clear@?$ncVector@UncRegExFltrData@@@@UAEXXZ
	DD	FLAT:?Resize@?$ncVector@UncRegExFltrData@@@@UAE_NH@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0?$ncVector@UncRegExFltrData@@@@QAE@XZ
_TEXT	SEGMENT
??0?$ncVector@UncRegExFltrData@@@@QAE@XZ PROC		; ncVector<ncRegExFltrData>::ncVector<ncRegExFltrData>, COMDAT
; _this$ = ecx

; 19   : 	ncVector()

	mov	eax, ecx

; 20   : 	{
; 21   : 		this->m_Length = 0;

	xor	ecx, ecx
	mov	DWORD PTR [eax], OFFSET ??_7?$ncVector@UncRegExFltrData@@@@6B@
	mov	DWORD PTR [eax+8], ecx

; 22   : 		this->m_Vector = NULL;

	mov	DWORD PTR [eax+4], ecx

; 23   : 	}

	ret	0
??0?$ncVector@UncRegExFltrData@@@@QAE@XZ ENDP		; ncVector<ncRegExFltrData>::ncVector<ncRegExFltrData>
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Resize@?$ncVector@UncRegExFltrData@@@@UAE_NH@Z
_TEXT	SEGMENT
___formal$ = 8						; size = 4
?Resize@?$ncVector@UncRegExFltrData@@@@UAE_NH@Z PROC	; ncVector<ncRegExFltrData>::Resize, COMDAT
; _this$ = ecx

; 66   : 		return false;

	xor	al, al

; 67   : 	}

	ret	4
?Resize@?$ncVector@UncRegExFltrData@@@@UAE_NH@Z ENDP	; ncVector<ncRegExFltrData>::Resize
_TEXT	ENDS
PUBLIC	??0?$allocator@D@std@@QAE@ABV01@@Z		; std::allocator<char>::allocator<char>
; Function compile flags: /Ogtpy
; File c:\program files\microsoft visual studio 8\vc\include\xmemory
;	COMDAT ??0?$allocator@D@std@@QAE@ABV01@@Z
_TEXT	SEGMENT
___formal$ = 8						; size = 4
??0?$allocator@D@std@@QAE@ABV01@@Z PROC			; std::allocator<char>::allocator<char>, COMDAT
; _this$ = ecx

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

	mov	eax, ecx

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

	ret	4
??0?$allocator@D@std@@QAE@ABV01@@Z ENDP			; std::allocator<char>::allocator<char>
_TEXT	ENDS
PUBLIC	??$_DebugHeapDelete@X@std@@YAXPAX@Z		; std::_DebugHeapDelete<void>
EXTRN	_free:PROC
; Function compile flags: /Ogtpy
; File c:\program files\microsoft visual studio 8\vc\include\xdebug
;	COMDAT ??$_DebugHeapDelete@X@std@@YAXPAX@Z
_TEXT	SEGMENT
__Ptr$ = 8						; size = 4
??$_DebugHeapDelete@X@std@@YAXPAX@Z PROC		; std::_DebugHeapDelete<void>, COMDAT

; 56   : 	if (_Ptr != 0)

	mov	eax, DWORD PTR __Ptr$[esp-4]
	test	eax, eax
	je	SHORT $LN1@DebugHeapD

; 57   : 		{	// worth deleting
; 58   : 		_Ptr->~_Ty();
; 59   : 		// delete as _NORMAL_BLOCK, not _CRT_BLOCK, since we might have
; 60   : 		// facets allocated by normal new.
; 61   : 		free(_Ptr);

	mov	DWORD PTR __Ptr$[esp-4], eax
	jmp	_free
$LN1@DebugHeapD:

; 62   : 		}
; 63   : 	}

	ret	0
??$_DebugHeapDelete@X@std@@YAXPAX@Z ENDP		; std::_DebugHeapDelete<void>
_TEXT	ENDS
PUBLIC	??0ncRegEx@@QAE@PBD@Z				; ncRegEx::ncRegEx
; Function compile flags: /Ogtpy
; File d:\source code\nc lib\ncregex.cpp
;	COMDAT ??0ncRegEx@@QAE@PBD@Z
_TEXT	SEGMENT
_string$ = 8						; size = 4
??0ncRegEx@@QAE@PBD@Z PROC				; ncRegEx::ncRegEx, COMDAT
; _this$ = ecx

; 11   : 	this->m_Buffer = NULL;
; 12   : 	this->re = NULL;
; 13   : 
; 14   : 	/* Set string */
; 15   : 	this->Set_String(string);

	mov	eax, DWORD PTR _string$[esp-4]
	push	esi
	mov	esi, ecx
	push	eax
	mov	DWORD PTR [esi], 0
	mov	DWORD PTR [esi+4], 0
	call	?Set_String@ncRegEx@@QAEXPBD@Z		; ncRegEx::Set_String

; 16   : }

	mov	eax, esi
	pop	esi
	ret	4
??0ncRegEx@@QAE@PBD@Z ENDP				; ncRegEx::ncRegEx
_TEXT	ENDS
PUBLIC	??0ncRegEx@@QAE@PB_W@Z				; ncRegEx::ncRegEx
; Function compile flags: /Ogtpy
;	COMDAT ??0ncRegEx@@QAE@PB_W@Z
_TEXT	SEGMENT
_wString$ = 8						; size = 4
??0ncRegEx@@QAE@PB_W@Z PROC				; ncRegEx::ncRegEx, COMDAT
; _this$ = ecx

; 19   : 	this->m_Buffer = NULL;
; 20   : 	this->re = NULL;
; 21   : 
; 22   : 	/* Set string */
; 23   : 	this->Set_String(wString);

	mov	eax, DWORD PTR _wString$[esp-4]
	push	esi
	mov	esi, ecx
	push	eax
	mov	DWORD PTR [esi], 0
	mov	DWORD PTR [esi+4], 0
	call	?Set_String@ncRegEx@@QAEXPB_W@Z		; ncRegEx::Set_String

; 24   : }

	mov	eax, esi
	pop	esi
	ret	4
??0ncRegEx@@QAE@PB_W@Z ENDP				; ncRegEx::ncRegEx
_TEXT	ENDS
PUBLIC	?New@ncRegEx@@SAPAV1@PBD@Z			; ncRegEx::New
EXTRN	??2@YAPAXI@Z:PROC				; operator new
EXTRN	___CxxFrameHandler3:PROC
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$?New@ncRegEx@@SAPAV1@PBD@Z DD 0ffffffffH
	DD	FLAT:__unwindfunclet$?New@ncRegEx@@SAPAV1@PBD@Z$0
__ehfuncinfo$?New@ncRegEx@@SAPAV1@PBD@Z DD 019930522H
	DD	01H
	DD	FLAT:__unwindtable$?New@ncRegEx@@SAPAV1@PBD@Z
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	01H
; Function compile flags: /Ogtpy
xdata$x	ENDS
;	COMDAT ?New@ncRegEx@@SAPAV1@PBD@Z
_TEXT	SEGMENT
$T42170 = -16						; size = 4
__$EHRec$ = -12						; size = 12
_string$ = 8						; size = 4
?New@ncRegEx@@SAPAV1@PBD@Z PROC				; ncRegEx::New, COMDAT

; 33   : {

	push	-1
	push	__ehhandler$?New@ncRegEx@@SAPAV1@PBD@Z
	mov	eax, DWORD PTR fs:0
	push	eax
	mov	DWORD PTR fs:0, esp
	push	ecx
	push	esi

; 34   : 	return new ncRegEx(string);

	push	OFFSET ??_C@_00CNPNBAHC@?$AA@
	push	34					; 00000022H
	push	OFFSET ??_C@_0BG@BAFGKCI@?4?4?2NC?5lib?2ncRegEx?4cpp?$AA@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	push	4108					; 0000100cH
	call	??2@YAPAXI@Z				; operator new
	mov	esi, eax
	add	esp, 16					; 00000010H
	mov	DWORD PTR $T42170[esp+20], esi
	xor	eax, eax
	cmp	esi, eax
	mov	DWORD PTR __$EHRec$[esp+28], eax
	je	SHORT $LN4@New
	mov	DWORD PTR [esi], eax
	mov	DWORD PTR [esi+4], eax
	mov	eax, DWORD PTR _string$[esp+16]
	push	eax
	mov	ecx, esi
	call	?Set_String@ncRegEx@@QAEXPBD@Z		; ncRegEx::Set_String
	mov	eax, esi
$LN4@New:

; 35   : }

	mov	ecx, DWORD PTR __$EHRec$[esp+20]
	pop	esi
	mov	DWORD PTR fs:0, ecx
	add	esp, 16					; 00000010H
	ret	0
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$?New@ncRegEx@@SAPAV1@PBD@Z$0:
	mov	eax, DWORD PTR $T42170[ebp]
	push	eax
	call	??3@YAXPAX@Z				; operator delete
	pop	ecx
	ret	0
__ehhandler$?New@ncRegEx@@SAPAV1@PBD@Z:
	mov	eax, OFFSET __ehfuncinfo$?New@ncRegEx@@SAPAV1@PBD@Z
	jmp	___CxxFrameHandler3
text$x	ENDS
?New@ncRegEx@@SAPAV1@PBD@Z ENDP				; ncRegEx::New
PUBLIC	?Close@ncRegEx@@QAEXXZ				; ncRegEx::Close
; Function compile flags: /Ogtpy
;	COMDAT ?Close@ncRegEx@@QAEXXZ
_TEXT	SEGMENT
?Close@ncRegEx@@QAEXXZ PROC				; ncRegEx::Close, COMDAT
; _this$ = ecx

; 37   : {

	push	esi

; 38   : 	delete this;

	push	OFFSET ??_C@_00CNPNBAHC@?$AA@
	push	38					; 00000026H
	push	OFFSET ??_C@_0BG@BAFGKCI@?4?4?2NC?5lib?2ncRegEx?4cpp?$AA@
	mov	esi, ecx
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	add	esp, 12					; 0000000cH
	test	esi, esi
	je	SHORT $LN3@Close
	cmp	DWORD PTR [esi], 0
	je	SHORT $LN15@Close
	push	OFFSET ??_C@_00CNPNBAHC@?$AA@
	push	28					; 0000001cH
	push	OFFSET ??_C@_0BG@BAFGKCI@?4?4?2NC?5lib?2ncRegEx?4cpp?$AA@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	eax, DWORD PTR [esi]
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
$LN15@Close:
	mov	eax, DWORD PTR [esi+4]
	test	eax, eax
	je	SHORT $LN10@Close
	mov	ecx, DWORD PTR __imp__pcre_free
	mov	edx, DWORD PTR [ecx]
	push	eax
	call	edx
	add	esp, 4
$LN10@Close:
	push	esi
	call	??3@YAXPAX@Z				; operator delete
	add	esp, 4
$LN3@Close:
	pop	esi

; 39   : }

	ret	0
?Close@ncRegEx@@QAEXXZ ENDP				; ncRegEx::Close
_TEXT	ENDS
PUBLIC	?Compile@ncRegEx2@@QAEHVncString2@@H@Z		; ncRegEx2::Compile
EXTRN	??4ncString2@@QAEAAV0@ABV0@@Z:PROC		; ncString2::operator=
EXTRN	?Mid@ncString2@@QAE?AV1@II@Z:PROC		; ncString2::Mid
EXTRN	??8ncString2@@QAE_NABV0@@Z:PROC			; ncString2::operator==
EXTRN	?Left@ncString2@@QAE?AV1@I@Z:PROC		; ncString2::Left
EXTRN	??0ncString2@@QAE@D@Z:PROC			; ncString2::ncString2
;	COMDAT xdata$x
; File d:\source code\nc lib\ncstring2.h
xdata$x	SEGMENT
__unwindtable$?Compile@ncRegEx2@@QAEHVncString2@@H@Z DD 0ffffffffH
	DD	FLAT:__unwindfunclet$?Compile@ncRegEx2@@QAEHVncString2@@H@Z$0
	DD	00H
	DD	FLAT:__unwindfunclet$?Compile@ncRegEx2@@QAEHVncString2@@H@Z$1
	DD	01H
	DD	FLAT:__unwindfunclet$?Compile@ncRegEx2@@QAEHVncString2@@H@Z$2
	DD	00H
	DD	FLAT:__unwindfunclet$?Compile@ncRegEx2@@QAEHVncString2@@H@Z$3
__ehfuncinfo$?Compile@ncRegEx2@@QAEHVncString2@@H@Z DD 019930522H
	DD	04H
	DD	FLAT:__unwindtable$?Compile@ncRegEx2@@QAEHVncString2@@H@Z
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	01H
; Function compile flags: /Ogtpy
; File d:\source code\nc lib\ncregex.cpp
xdata$x	ENDS
;	COMDAT ?Compile@ncRegEx2@@QAEHVncString2@@H@Z
_TEXT	SEGMENT
$T42223 = -41						; size = 1
_ncOption$ = -40					; size = 4
_error$ = -36						; size = 4
_errstr$ = -32						; size = 4
_study$ = -28						; size = 4
$T42225 = -28						; size = 8
_fltr$38397 = -20					; size = 8
$T42226 = -20						; size = 8
$T42224 = -20						; size = 8
__$EHRec$ = -12						; size = 12
_regex$ = 8						; size = 8
_vSize$ = 16						; size = 4
?Compile@ncRegEx2@@QAEHVncString2@@H@Z PROC		; ncRegEx2::Compile, COMDAT
; _this$ = ecx

; 188  : {

	push	-1
	push	__ehhandler$?Compile@ncRegEx2@@QAEHVncString2@@H@Z
	mov	eax, DWORD PTR fs:0
	push	eax
	mov	DWORD PTR fs:0, esp
	sub	esp, 32					; 00000020H
	push	ebx
	push	edi
	mov	ebx, ecx

; 189  : 	if (regex.IsEmpty()) // Empty string

	mov	eax, DWORD PTR _regex$[esp+52]
	xor	edi, edi
	cmp	eax, edi
	mov	DWORD PTR __$EHRec$[esp+60], edi
	je	SHORT $LN45@Compile@3
	cmp	DWORD PTR [eax+12], edi
	je	SHORT $LN45@Compile@3
	cmp	DWORD PTR [eax+8], edi
	jne	SHORT $LN32@Compile@3
$LN45@Compile@3:

; 190  : 		return false;

	lea	ecx, DWORD PTR _regex$[esp+48]
	mov	DWORD PTR __$EHRec$[esp+60], -1
	mov	DWORD PTR _regex$[esp+48], OFFSET ??_7ncString2@@6B@
	call	??1ncStringBase@@UAE@XZ			; ncStringBase::~ncStringBase
	pop	edi
	xor	eax, eax
	pop	ebx

; 301  : }

	mov	ecx, DWORD PTR __$EHRec$[esp+44]
	mov	DWORD PTR fs:0, ecx
	add	esp, 44					; 0000002cH
	ret	12					; 0000000cH
$LN32@Compile@3:

; 191  : 
; 192  : 	// Cleanups
; 193  : 	this->m_subData.Clear();

	mov	eax, DWORD PTR [ebx+16]
	mov	edx, DWORD PTR [eax+4]
	lea	ecx, DWORD PTR [ebx+16]
	call	edx

; 194  : 
; 195  : 	// Previous allocated PCRE
; 196  : 	if (this->m_re != NULL)

	mov	eax, DWORD PTR [ebx+8]
	cmp	eax, edi
	je	SHORT $LN31@Compile@3

; 197  : 	{
; 198  : 		pcre_free(this->m_re);

	push	eax
	mov	eax, DWORD PTR __imp__pcre_free
	mov	ecx, DWORD PTR [eax]
	call	ecx
	add	esp, 4

; 199  : 		this->m_re = NULL;

	mov	DWORD PTR [ebx+8], edi
$LN31@Compile@3:
	push	ebp
	push	esi

; 200  : 	}
; 201  : 
; 202  : 	int option   = 0;
; 203  : 	int ncOption = 0;
; 204  : 	int closePos = -1;
; 205  : 	if (regex.Left(1) == '/')

	push	47					; 0000002fH
	lea	ecx, DWORD PTR $T42225[esp+64]
	mov	DWORD PTR _ncOption$[esp+64], edi
	call	??0ncString2@@QAE@D@Z			; ncString2::ncString2
	push	1
	lea	edx, DWORD PTR $T42224[esp+64]
	push	edx
	lea	ecx, DWORD PTR _regex$[esp+64]
	mov	BYTE PTR __$EHRec$[esp+76], 1
	call	?Left@ncString2@@QAE?AV1@I@Z		; ncString2::Left
	lea	ecx, DWORD PTR $T42225[esp+60]
	push	ecx
	mov	ecx, eax
	mov	BYTE PTR __$EHRec$[esp+72], 2
	call	??8ncString2@@QAE_NABV0@@Z		; ncString2::operator==
	mov	ebp, OFFSET ??_7ncString2@@6B@
	lea	ecx, DWORD PTR $T42224[esp+60]
	mov	BYTE PTR $T42223[esp+60], al
	mov	BYTE PTR __$EHRec$[esp+68], 1
	mov	DWORD PTR $T42224[esp+60], ebp
	call	??1ncStringBase@@UAE@XZ			; ncStringBase::~ncStringBase
	lea	ecx, DWORD PTR $T42225[esp+60]
	mov	BYTE PTR __$EHRec$[esp+68], 0
	mov	DWORD PTR $T42225[esp+60], ebp
	call	??1ncStringBase@@UAE@XZ			; ncStringBase::~ncStringBase
	cmp	BYTE PTR $T42223[esp+60], 0
	je	$LN103@Compile@3

; 206  : 	{
; 207  : 		// Check for the end of /
; 208  : 		for (int i = (regex.GetLength() - 1); i >= 1; i--)

	lea	ecx, DWORD PTR _regex$[esp+56]
	call	?GetLength@ncStringBase@@UBEIXZ		; ncStringBase::GetLength
	mov	esi, eax
	sub	esi, 1
	cmp	esi, 1
	jl	$LN103@Compile@3

; 253  : 		}
; 254  : 	}
; 255  : 
; 256  : 	int error = 0;
; 257  : 	const char *errstr;
; 258  : 	this->m_re = pcre_compile(regex.GetString(), option, &errstr, &error, NULL);

	mov	edx, DWORD PTR _regex$[esp+60]
	mov	eax, DWORD PTR [edx+8]
	mov	cl, 92					; 0000005cH
$LL29@Compile@3:

; 209  : 		{
; 210  : 			if (regex[i] == '/' && regex[i - 1] != '\\')

	cmp	BYTE PTR [eax+esi], 47			; 0000002fH
	jne	SHORT $LN28@Compile@3
	cmp	BYTE PTR [eax+esi-1], cl
	jne	SHORT $LN94@Compile@3
$LN28@Compile@3:

; 206  : 	{
; 207  : 		// Check for the end of /
; 208  : 		for (int i = (regex.GetLength() - 1); i >= 1; i--)

	sub	esi, 1
	cmp	esi, 1
	jge	SHORT $LL29@Compile@3

; 209  : 		{
; 210  : 			if (regex[i] == '/' && regex[i - 1] != '\\')

	jmp	$LN103@Compile@3
$LN94@Compile@3:

; 211  : 			{
; 212  : 				closePos = i;
; 213  : 				break;
; 214  : 			}
; 215  : 		}
; 216  : 
; 217  : 		if (closePos > -1)

	cmp	esi, -1
	jle	$LN103@Compile@3

; 218  : 		{
; 219  : 			for (int i = (regex.GetLength() - 1); i > closePos; i--)

	lea	ecx, DWORD PTR _regex$[esp+56]
	call	?GetLength@ncStringBase@@UBEIXZ		; ncStringBase::GetLength
	sub	eax, 1
	cmp	eax, esi
	jle	SHORT $LN22@Compile@3

; 220  : 			{
; 221  : 				switch (regex[i])

	mov	ecx, DWORD PTR _regex$[esp+60]
	mov	edx, DWORD PTR [ecx+8]
	npad	4
$LL24@Compile@3:
	movsx	ecx, BYTE PTR [edx+eax]
	add	ecx, -85				; ffffffabH
	cmp	ecx, 35					; 00000023H
	ja	SHORT $LN23@Compile@3
	movzx	ecx, BYTE PTR $LN99@Compile@3[ecx]
	jmp	DWORD PTR $LN106@Compile@3[ecx*4]
$LN19@Compile@3:

; 222  : 				{
; 223  : 					case 'g':
; 224  : 						ncOption |= ncREGEX_TOTAL;

	or	DWORD PTR _ncOption$[esp+60], 1

; 225  : 						break;

	jmp	SHORT $LN23@Compile@3
$LN18@Compile@3:

; 226  : 
; 227  : 					case 'i':
; 228  : 						option |= PCRE_CASELESS;

	or	edi, 1

; 229  : 						break;

	jmp	SHORT $LN23@Compile@3
$LN17@Compile@3:

; 230  : 
; 231  : 					case 'm':
; 232  : 						option |= PCRE_MULTILINE;

	or	edi, 2

; 233  : 						break;

	jmp	SHORT $LN23@Compile@3
$LN16@Compile@3:

; 234  : 
; 235  : 					case 's':
; 236  : 						option |= PCRE_DOTALL;

	or	edi, 4

; 237  : 						break;

	jmp	SHORT $LN23@Compile@3
$LN15@Compile@3:

; 238  : 
; 239  : 					case 'U':
; 240  : 						option |= PCRE_UNGREEDY;

	or	edi, 512				; 00000200H

; 241  : 						break;

	jmp	SHORT $LN23@Compile@3
$LN14@Compile@3:

; 242  : 
; 243  : 					case 'x':
; 244  : 						option |= PCRE_EXTENDED;

	or	edi, 8

; 245  : 						break;

	jmp	SHORT $LN23@Compile@3
$LN13@Compile@3:

; 246  : 
; 247  : 					case 'X':
; 248  : 						option |= PCRE_EXTRA;

	or	edi, 64					; 00000040H
$LN23@Compile@3:

; 218  : 		{
; 219  : 			for (int i = (regex.GetLength() - 1); i > closePos; i--)

	sub	eax, 1
	cmp	eax, esi
	jg	SHORT $LL24@Compile@3
$LN22@Compile@3:

; 249  : 						break;
; 250  : 				}
; 251  : 			}
; 252  : 			regex = regex.Mid(1, regex.GetLength() - (regex.GetLength() - closePos + 1));

	lea	ecx, DWORD PTR _regex$[esp+56]
	call	?GetLength@ncStringBase@@UBEIXZ		; ncStringBase::GetLength
	lea	ecx, DWORD PTR _regex$[esp+56]
	sub	esi, eax
	call	?GetLength@ncStringBase@@UBEIXZ		; ncStringBase::GetLength
	lea	edx, DWORD PTR [eax+esi-1]
	push	edx
	push	1
	lea	eax, DWORD PTR $T42226[esp+68]
	push	eax
	lea	ecx, DWORD PTR _regex$[esp+68]
	call	?Mid@ncString2@@QAE?AV1@II@Z		; ncString2::Mid
	push	eax
	lea	ecx, DWORD PTR _regex$[esp+60]
	mov	BYTE PTR __$EHRec$[esp+72], 3
	call	??4ncString2@@QAEAAV0@ABV0@@Z		; ncString2::operator=
	lea	ecx, DWORD PTR $T42226[esp+60]
	mov	BYTE PTR __$EHRec$[esp+68], 0
	mov	DWORD PTR $T42226[esp+60], ebp
	call	??1ncStringBase@@UAE@XZ			; ncStringBase::~ncStringBase
$LN103@Compile@3:

; 253  : 		}
; 254  : 	}
; 255  : 
; 256  : 	int error = 0;
; 257  : 	const char *errstr;
; 258  : 	this->m_re = pcre_compile(regex.GetString(), option, &errstr, &error, NULL);

	mov	eax, DWORD PTR _regex$[esp+60]
	xor	ebp, ebp
	cmp	eax, ebp
	mov	DWORD PTR _error$[esp+60], ebp
	je	SHORT $LN77@Compile@3
	mov	eax, DWORD PTR [eax+8]
	jmp	SHORT $LN78@Compile@3
$LN77@Compile@3:
	xor	eax, eax
$LN78@Compile@3:
	push	ebp
	lea	ecx, DWORD PTR _error$[esp+64]
	push	ecx
	lea	edx, DWORD PTR _errstr$[esp+68]
	push	edx
	push	edi
	push	eax
	call	DWORD PTR __imp__pcre_compile

; 259  : 	pcre_extra *study = pcre_study(this->m_re, 0, &errstr);

	lea	ecx, DWORD PTR _errstr$[esp+80]
	push	ecx
	push	ebp
	push	eax
	mov	DWORD PTR [ebx+8], eax
	call	DWORD PTR __imp__pcre_study

; 260  : 
; 261  : 	int curMatch = 0;
; 262  : 	unsigned int start = 0;
; 263  : 	int *matchVec = new int[vSize];

	push	OFFSET ??_C@_00CNPNBAHC@?$AA@
	push	263					; 00000107H
	push	OFFSET ??_C@_0BG@BAFGKCI@?4?4?2NC?5lib?2ncRegEx?4cpp?$AA@
	mov	DWORD PTR _study$[esp+104], eax
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	eax, DWORD PTR _vSize$[esp+100]
	xor	ecx, ecx
	mov	edx, 4
	mul	edx
	seto	cl
	neg	ecx
	or	ecx, eax
	push	ecx
	call	??_U@YAPAXI@Z				; operator new[]
	mov	edi, eax

; 264  : 	int ret = 0;
; 265  : 
; 266  : 	while (this->m_content.GetLength() > start)

	mov	eax, DWORD PTR [ebx]
	mov	edx, DWORD PTR [eax+4]
	add	esp, 48					; 00000030H
	mov	ecx, ebx
	call	edx
	test	eax, eax
	jbe	$LN101@Compile@3
$LL12@Compile@3:

; 267  : 	{
; 268  : 		curMatch = pcre_exec(this->m_re, study, this->m_content.GetString(), this->m_content.GetLength(), start, 0, matchVec, vSize);

	mov	eax, DWORD PTR _vSize$[esp+56]
	mov	edx, DWORD PTR [ebx]
	push	eax
	mov	eax, DWORD PTR [edx+4]
	push	edi
	push	0
	push	ebp
	mov	ecx, ebx
	call	eax
	push	eax
	mov	ecx, ebx
	call	?GetString@ncString2@@QBEPBDXZ		; ncString2::GetString
	mov	ecx, DWORD PTR _study$[esp+80]
	mov	edx, DWORD PTR [ebx+8]
	push	eax
	push	ecx
	push	edx
	call	DWORD PTR __imp__pcre_exec
	mov	ebp, eax
	add	esp, 32					; 00000020H

; 269  : 		if (curMatch > 1)

	cmp	ebp, 1
	jle	SHORT $LN10@Compile@3

; 270  : 		{
; 271  : 			for (int i = 1; i < curMatch; i++)

	mov	esi, 1
	npad	6
$LL9@Compile@3:

; 272  : 			{
; 273  : 				ncRegExFltrData fltr;
; 274  : 				fltr.start = matchVec[2 * i];

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

; 275  : 				fltr.length = (matchVec[2 * i + 1] - matchVec[2 * i]);

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

; 276  : 				this->m_subData.Add(fltr);

	mov	edx, DWORD PTR [ebx+16]
	mov	edx, DWORD PTR [edx+16]
	sub	ecx, eax
	mov	DWORD PTR _fltr$38397[esp+64], ecx
	lea	ecx, DWORD PTR [ebx+16]
	mov	DWORD PTR _fltr$38397[esp+60], eax
	lea	eax, DWORD PTR _fltr$38397[esp+60]
	push	eax
	call	edx
	add	esi, 1
	cmp	esi, ebp
	jl	SHORT $LL9@Compile@3
	mov	eax, DWORD PTR [ebx]
	mov	edx, DWORD PTR [eax+4]

; 277  : 			}
; 278  : 			start = matchVec[2 * (curMatch - 1) + 1];

	mov	ebp, DWORD PTR [edi+ebp*8-4]
	mov	ecx, ebx
	call	edx
	cmp	eax, ebp
	ja	SHORT $LL12@Compile@3

; 209  : 		{
; 210  : 			if (regex[i] == '/' && regex[i - 1] != '\\')

	jmp	SHORT $LN101@Compile@3
$LN10@Compile@3:

; 279  : 		}
; 280  : 		else
; 281  : 		{
; 282  : 			if (this->m_subData.Count() == 0)

	cmp	DWORD PTR [ebx+28], 0
	jne	SHORT $LN101@Compile@3

; 283  : 			{
; 284  : 				if (curMatch == -1)

	cmp	ebp, -1
	je	SHORT $LN101@Compile@3

; 285  : 					ret = 0;
; 286  : 				else
; 287  : 					ret = (this->m_error = curMatch);

	mov	DWORD PTR [ebx+12], ebp
$LN101@Compile@3:

; 288  : 			}
; 289  : 			break;
; 290  : 		}
; 291  : 	}
; 292  : 
; 293  : 	delete[] matchVec;

	push	OFFSET ??_C@_00CNPNBAHC@?$AA@
	push	293					; 00000125H
	push	OFFSET ??_C@_0BG@BAFGKCI@?4?4?2NC?5lib?2ncRegEx?4cpp?$AA@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	push	edi
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H

; 294  : 
; 295  : 	if (ncOption & ncREGEX_TOTAL)

	test	BYTE PTR _ncOption$[esp+60], 1
	pop	esi
	pop	ebp
	je	SHORT $LN2@Compile@3

; 296  : 		ret = this->m_subData.Count();

	mov	ebx, DWORD PTR [ebx+28]

; 297  : 	else

	jmp	SHORT $LN1@Compile@3
$LN2@Compile@3:

; 298  : 		ret = (this->m_subData.Count() >= 0);

	mov	ebx, 1
$LN1@Compile@3:

; 299  : 
; 300  : 	return ret;

	lea	ecx, DWORD PTR _regex$[esp+48]
	mov	DWORD PTR __$EHRec$[esp+60], -1
	mov	DWORD PTR _regex$[esp+48], OFFSET ??_7ncString2@@6B@
	call	??1ncStringBase@@UAE@XZ			; ncStringBase::~ncStringBase

; 301  : }

	mov	ecx, DWORD PTR __$EHRec$[esp+52]
	pop	edi
	mov	eax, ebx
	pop	ebx
	mov	DWORD PTR fs:0, ecx
	add	esp, 44					; 0000002cH
	ret	12					; 0000000cH
	npad	1
$LN106@Compile@3:
	DD	$LN15@Compile@3
	DD	$LN13@Compile@3
	DD	$LN19@Compile@3
	DD	$LN18@Compile@3
	DD	$LN17@Compile@3
	DD	$LN16@Compile@3
	DD	$LN14@Compile@3
	DD	$LN23@Compile@3
$LN99@Compile@3:
	DB	0
	DB	7
	DB	7
	DB	1
	DB	7
	DB	7
	DB	7
	DB	7
	DB	7
	DB	7
	DB	7
	DB	7
	DB	7
	DB	7
	DB	7
	DB	7
	DB	7
	DB	7
	DB	2
	DB	7
	DB	3
	DB	7
	DB	7
	DB	7
	DB	4
	DB	7
	DB	7
	DB	7
	DB	7
	DB	7
	DB	5
	DB	7
	DB	7
	DB	7
	DB	7
	DB	6
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$?Compile@ncRegEx2@@QAEHVncString2@@H@Z$0:
	lea	ecx, DWORD PTR _regex$[ebp-4]
	jmp	??1ncString2@@UAE@XZ			; ncString2::~ncString2
__unwindfunclet$?Compile@ncRegEx2@@QAEHVncString2@@H@Z$1:
	lea	ecx, DWORD PTR $T42225[ebp]
	jmp	??1ncString2@@UAE@XZ			; ncString2::~ncString2
__unwindfunclet$?Compile@ncRegEx2@@QAEHVncString2@@H@Z$2:
	lea	ecx, DWORD PTR $T42224[ebp]
	jmp	??1ncString2@@UAE@XZ			; ncString2::~ncString2
__unwindfunclet$?Compile@ncRegEx2@@QAEHVncString2@@H@Z$3:
	lea	ecx, DWORD PTR $T42226[ebp]
	jmp	??1ncString2@@UAE@XZ			; ncString2::~ncString2
__ehhandler$?Compile@ncRegEx2@@QAEHVncString2@@H@Z:
	mov	eax, OFFSET __ehfuncinfo$?Compile@ncRegEx2@@QAEHVncString2@@H@Z
	jmp	___CxxFrameHandler3
text$x	ENDS
?Compile@ncRegEx2@@QAEHVncString2@@H@Z ENDP		; ncRegEx2::Compile
PUBLIC	?Replace@ncRegEx2@@QAE?AVncString2@@V2@0@Z	; ncRegEx2::Replace
EXTRN	?Right@ncString2@@QAE?AV1@I@Z:PROC		; ncString2::Right
EXTRN	??YncString2@@QAEAAV0@ABV0@@Z:PROC		; ncString2::operator+=
EXTRN	?Clear@ncStringBase@@QAEXXZ:PROC		; ncStringBase::Clear
;	COMDAT xdata$x
; File d:\source code\nc lib\ncstring2.h
xdata$x	SEGMENT
__ehfuncinfo$?Replace@ncRegEx2@@QAE?AVncString2@@V2@0@Z DD 019930522H
	DD	06H
	DD	FLAT:__unwindtable$?Replace@ncRegEx2@@QAE?AVncString2@@V2@0@Z
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	01H
__unwindtable$?Replace@ncRegEx2@@QAE?AVncString2@@V2@0@Z DD 0ffffffffH
	DD	FLAT:__unwindfunclet$?Replace@ncRegEx2@@QAE?AVncString2@@V2@0@Z$2
	DD	00H
	DD	FLAT:__unwindfunclet$?Replace@ncRegEx2@@QAE?AVncString2@@V2@0@Z$0
	DD	01H
	DD	FLAT:__unwindfunclet$?Replace@ncRegEx2@@QAE?AVncString2@@V2@0@Z$1
	DD	02H
	DD	FLAT:__unwindfunclet$?Replace@ncRegEx2@@QAE?AVncString2@@V2@0@Z$4
	DD	02H
	DD	FLAT:__unwindfunclet$?Replace@ncRegEx2@@QAE?AVncString2@@V2@0@Z$5
	DD	02H
	DD	FLAT:__unwindfunclet$?Replace@ncRegEx2@@QAE?AVncString2@@V2@0@Z$6
; Function compile flags: /Ogtpy
; File d:\source code\nc lib\ncregex.cpp
xdata$x	ENDS
;	COMDAT ?Replace@ncRegEx2@@QAE?AVncString2@@V2@0@Z
_TEXT	SEGMENT
$T42354 = -28						; size = 4
_repCount$38414 = -28					; size = 4
$T42361 = -24						; size = 4
$T42357 = -20						; size = 8
$T42356 = -20						; size = 8
$T42355 = -20						; size = 8
__$EHRec$ = -12						; size = 12
___$ReturnUdt$ = 8					; size = 4
_regex$ = 12						; size = 8
_replacement$ = 20					; size = 8
?Replace@ncRegEx2@@QAE?AVncString2@@V2@0@Z PROC		; ncRegEx2::Replace, COMDAT
; _this$ = ecx

; 303  : {

	push	-1
	push	__ehhandler$?Replace@ncRegEx2@@QAE?AVncString2@@V2@0@Z
	mov	eax, DWORD PTR fs:0
	push	eax
	mov	DWORD PTR fs:0, esp
	sub	esp, 16					; 00000010H
	push	ebx
	push	ebp
	push	esi
	xor	ebp, ebp
	push	edi
	mov	esi, ecx
	mov	DWORD PTR $T42361[esp+44], ebp

; 304  : 	ncString2 ret = this->m_content;

	mov	edi, DWORD PTR ___$ReturnUdt$[esp+40]
	push	esi
	mov	ecx, edi
	mov	DWORD PTR __$EHRec$[esp+56], 2
	call	??0ncStringBase@@QAE@ABV0@@Z		; ncStringBase::ncStringBase
	mov	DWORD PTR [edi], OFFSET ??_7ncString2@@6B@

; 339  : 		}
; 340  : 	}
; 341  : 	return ret;

	mov	eax, DWORD PTR _regex$[esp+44]
	cmp	eax, ebp
	mov	DWORD PTR $T42361[esp+44], 1
	je	$LN1@Replace

; 305  : 
; 306  : 	if (!regex.IsEmpty())

	cmp	DWORD PTR [eax+12], ebp
	je	$LN1@Replace
	cmp	DWORD PTR [eax+8], ebp
	je	$LN1@Replace

; 307  : 	{
; 308  : 		int repCount = this->Compile(regex);

	push	64					; 00000040H
	sub	esp, 8
	mov	ebx, esp
	lea	eax, DWORD PTR _regex$[esp+52]
	mov	DWORD PTR $T42354[esp+56], esp
	push	eax
	mov	ecx, ebx
	call	??0ncStringBase@@QAE@ABV0@@Z		; ncStringBase::ncStringBase
	mov	ecx, esi
	mov	DWORD PTR [ebx], OFFSET ??_7ncString2@@6B@
	call	?Compile@ncRegEx2@@QAEHVncString2@@H@Z	; ncRegEx2::Compile

; 309  : 		if (repCount > 0 && this->m_subData.Count() > 0)

	cmp	eax, ebp
	mov	DWORD PTR _repCount$38414[esp+44], eax
	jle	$LN1@Replace
	cmp	DWORD PTR [esi+28], ebp
	jbe	$LN1@Replace

; 310  : 		{
; 311  : 			ret.Clear();

	mov	ecx, edi
	call	?Clear@ncStringBase@@QAEXXZ		; ncStringBase::Clear

; 312  : 			unsigned int minRep = 0;
; 313  : 
; 314  : 			// Set the start of the string
; 315  : 			if (this->m_subData[0].start > 0)

	mov	eax, DWORD PTR [esi+20]
	xor	ebx, ebx
	cmp	DWORD PTR [eax], ebp
	jbe	SHORT $LN8@Replace

; 316  : 				ret = this->m_content.Left(this->m_subData[0].start);

	mov	ecx, DWORD PTR [eax]
	push	ecx
	lea	edx, DWORD PTR $T42355[esp+48]
	push	edx
	mov	ecx, esi
	call	?Left@ncString2@@QAE?AV1@I@Z		; ncString2::Left
	push	eax
	mov	ecx, edi
	mov	BYTE PTR __$EHRec$[esp+56], 3
	call	??4ncString2@@QAEAAV0@ABV0@@Z		; ncString2::operator=
	lea	ecx, DWORD PTR $T42355[esp+44]
	mov	BYTE PTR __$EHRec$[esp+52], 2
	mov	DWORD PTR $T42355[esp+44], OFFSET ??_7ncString2@@6B@
	call	??1ncStringBase@@UAE@XZ			; ncStringBase::~ncStringBase
$LN8@Replace:

; 317  : 
; 318  : 			for (int i = 0; i < repCount; i++)

	mov	edx, DWORD PTR _repCount$38414[esp+44]
	test	edx, edx
	jle	SHORT $LN5@Replace
$LL7@Replace:
	mov	eax, DWORD PTR [esi+20]

; 319  : 			{
; 320  : 				if (minRep <= this->m_subData[i].start)

	cmp	ebx, DWORD PTR [eax+ebp*8]
	lea	eax, DWORD PTR [eax+ebp*8]
	ja	SHORT $LN4@Replace

; 321  : 				{
; 322  : 					ret += replacement;

	lea	ecx, DWORD PTR _replacement$[esp+40]
	push	ecx
	mov	ecx, edi
	call	??YncString2@@QAEAAV0@ABV0@@Z		; ncString2::operator+=
	mov	edx, DWORD PTR [esi+20]

; 323  : 					minRep = (this->m_subData[i].start + this->m_subData[i].length);

	mov	ebx, DWORD PTR [edx+ebp*8+4]
	add	ebx, DWORD PTR [edx+ebp*8]
	lea	eax, DWORD PTR [edx+ebp*8]
	mov	edx, DWORD PTR _repCount$38414[esp+44]
$LN4@Replace:

; 324  : 				}
; 325  : 
; 326  : 				if (i < (repCount - 1))

	lea	ecx, DWORD PTR [edx-1]
	cmp	ebp, ecx
	jge	SHORT $LN6@Replace

; 327  : 				{
; 328  : 					int var = (this->m_subData[i + 1].start - (this->m_subData[i].start + this->m_subData[i].length));

	mov	ecx, DWORD PTR [eax+8]
	sub	ecx, DWORD PTR [eax+4]
	sub	ecx, DWORD PTR [eax]

; 329  : 					if (var > 0)

	test	ecx, ecx
	jle	SHORT $LN6@Replace

; 330  : 						ret += this->m_content.Mid((this->m_subData[i].start + this->m_subData[i].length), var);

	push	ecx
	mov	ecx, DWORD PTR [eax+4]
	add	ecx, DWORD PTR [eax]
	lea	edx, DWORD PTR $T42356[esp+48]
	push	ecx
	push	edx
	mov	ecx, esi
	call	?Mid@ncString2@@QAE?AV1@II@Z		; ncString2::Mid
	push	eax
	mov	ecx, edi
	mov	BYTE PTR __$EHRec$[esp+56], 4
	call	??YncString2@@QAEAAV0@ABV0@@Z		; ncString2::operator+=
	lea	ecx, DWORD PTR $T42356[esp+44]
	mov	BYTE PTR __$EHRec$[esp+52], 2
	mov	DWORD PTR $T42356[esp+44], OFFSET ??_7ncString2@@6B@
	call	??1ncStringBase@@UAE@XZ			; ncStringBase::~ncStringBase
	mov	edx, DWORD PTR _repCount$38414[esp+44]
$LN6@Replace:
	add	ebp, 1
	cmp	ebp, edx
	jl	SHORT $LL7@Replace
$LN5@Replace:

; 331  : 				}
; 332  : 				
; 333  : 				//printf("%d:%d -> %s\n", this->m_subData[i].start, this->m_subData[i].length, ret.GetString());
; 334  : 			}
; 335  : 
; 336  : 			// Append the remaining content if any
; 337  : 			if ((this->m_subData[repCount - 1].start + this->m_subData[repCount - 1].length) < this->m_content.GetLength())

	mov	eax, DWORD PTR [esi+20]
	lea	ebx, DWORD PTR [eax+edx*8-8]
	mov	edx, DWORD PTR [esi]
	mov	eax, DWORD PTR [edx+4]
	mov	ecx, esi
	call	eax
	mov	ecx, DWORD PTR [ebx+4]
	add	ecx, DWORD PTR [ebx]
	cmp	ecx, eax
	jae	SHORT $LN1@Replace

; 338  : 				ret += this->m_content.Right(this->m_content.GetLength() - (this->m_subData[repCount - 1].start + this->m_subData[repCount - 1].length));

	mov	edx, DWORD PTR [esi+20]
	mov	eax, DWORD PTR _repCount$38414[esp+44]
	lea	ebp, DWORD PTR [edx+eax*8-8]
	mov	edx, DWORD PTR [esi]
	mov	eax, DWORD PTR [edx+4]
	mov	ecx, esi
	call	eax
	sub	eax, DWORD PTR [ebp+4]
	lea	ecx, DWORD PTR $T42357[esp+44]
	sub	eax, DWORD PTR [ebp]
	push	eax
	push	ecx
	mov	ecx, esi
	call	?Right@ncString2@@QAE?AV1@I@Z		; ncString2::Right
	push	eax
	mov	ecx, edi
	mov	BYTE PTR __$EHRec$[esp+56], 5
	call	??YncString2@@QAEAAV0@ABV0@@Z		; ncString2::operator+=
	lea	ecx, DWORD PTR $T42357[esp+44]
	mov	BYTE PTR __$EHRec$[esp+52], 2
	mov	DWORD PTR $T42357[esp+44], OFFSET ??_7ncString2@@6B@
	call	??1ncStringBase@@UAE@XZ			; ncStringBase::~ncStringBase
$LN1@Replace:

; 339  : 		}
; 340  : 	}
; 341  : 	return ret;

	mov	esi, OFFSET ??_7ncString2@@6B@
	lea	ecx, DWORD PTR _regex$[esp+40]
	mov	BYTE PTR __$EHRec$[esp+52], 1
	mov	DWORD PTR _regex$[esp+40], esi
	call	??1ncStringBase@@UAE@XZ			; ncStringBase::~ncStringBase
	lea	ecx, DWORD PTR _replacement$[esp+40]
	mov	BYTE PTR __$EHRec$[esp+52], 0
	mov	DWORD PTR _replacement$[esp+40], esi
	call	??1ncStringBase@@UAE@XZ			; ncStringBase::~ncStringBase

; 342  : }

	mov	ecx, DWORD PTR __$EHRec$[esp+44]
	mov	eax, edi
	pop	edi
	pop	esi
	pop	ebp
	mov	DWORD PTR fs:0, ecx
	pop	ebx
	add	esp, 28					; 0000001cH
	ret	20					; 00000014H
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$?Replace@ncRegEx2@@QAE?AVncString2@@V2@0@Z$0:
	lea	ecx, DWORD PTR _replacement$[ebp-4]
	jmp	??1ncString2@@UAE@XZ			; ncString2::~ncString2
__unwindfunclet$?Replace@ncRegEx2@@QAE?AVncString2@@V2@0@Z$1:
	lea	ecx, DWORD PTR _regex$[ebp-4]
	jmp	??1ncString2@@UAE@XZ			; ncString2::~ncString2
__unwindfunclet$?Replace@ncRegEx2@@QAE?AVncString2@@V2@0@Z$2:
	mov	eax, DWORD PTR $T42361[ebp]
	and	eax, 1
	je	$LN16@Replace
	and	DWORD PTR $T42361[ebp], -2		; fffffffeH
	mov	ecx, DWORD PTR ___$ReturnUdt$[ebp-4]
	jmp	??1ncString2@@UAE@XZ			; ncString2::~ncString2
$LN16@Replace:
	ret	0
__unwindfunclet$?Replace@ncRegEx2@@QAE?AVncString2@@V2@0@Z$4:
	lea	ecx, DWORD PTR $T42355[ebp]
	jmp	??1ncString2@@UAE@XZ			; ncString2::~ncString2
__unwindfunclet$?Replace@ncRegEx2@@QAE?AVncString2@@V2@0@Z$5:
	lea	ecx, DWORD PTR $T42356[ebp]
	jmp	??1ncString2@@UAE@XZ			; ncString2::~ncString2
__unwindfunclet$?Replace@ncRegEx2@@QAE?AVncString2@@V2@0@Z$6:
	lea	ecx, DWORD PTR $T42357[ebp]
	jmp	??1ncString2@@UAE@XZ			; ncString2::~ncString2
__ehhandler$?Replace@ncRegEx2@@QAE?AVncString2@@V2@0@Z:
	mov	eax, OFFSET __ehfuncinfo$?Replace@ncRegEx2@@QAE?AVncString2@@V2@0@Z
	jmp	___CxxFrameHandler3
text$x	ENDS
?Replace@ncRegEx2@@QAE?AVncString2@@V2@0@Z ENDP		; ncRegEx2::Replace
PUBLIC	?GetMatch@ncRegEx2@@QAE?AVncString2@@I@Z	; ncRegEx2::GetMatch
EXTRN	??0ncString2@@QAE@PBD@Z:PROC			; ncString2::ncString2
EXTRN	?m_EmptyString@ncString2@@2PBDB:DWORD		; ncString2::m_EmptyString
; Function compile flags: /Ogtpy
;	COMDAT ?GetMatch@ncRegEx2@@QAE?AVncString2@@I@Z
_TEXT	SEGMENT
$T42483 = -4						; size = 4
___$ReturnUdt$ = 8					; size = 4
_n$ = 12						; size = 4
?GetMatch@ncRegEx2@@QAE?AVncString2@@I@Z PROC		; ncRegEx2::GetMatch, COMDAT
; _this$ = ecx

; 344  : {

	push	ecx

; 345  : 	if (n > 0 && n <= this->m_subData.Count())

	mov	eax, DWORD PTR _n$[esp]
	test	eax, eax
	push	esi
	mov	DWORD PTR $T42483[esp+8], 0
	jbe	SHORT $LN1@GetMatch
	cmp	eax, DWORD PTR [ecx+28]
	ja	SHORT $LN1@GetMatch

; 346  : 	{
; 347  : 		n--;
; 348  : 		return this->m_content.Mid(this->m_subData[n].start, this->m_subData[n].length);

	mov	edx, DWORD PTR [ecx+20]
	mov	esi, DWORD PTR ___$ReturnUdt$[esp+4]
	sub	eax, 1
	lea	eax, DWORD PTR [edx+eax*8]
	mov	edx, DWORD PTR [eax+4]
	mov	eax, DWORD PTR [eax]
	push	edx
	push	eax
	push	esi
	call	?Mid@ncString2@@QAE?AV1@II@Z		; ncString2::Mid

; 349  : 	}
; 350  : 	return ncString2::m_EmptyString;

	mov	eax, esi
	pop	esi

; 351  : }

	pop	ecx
	ret	8
$LN1@GetMatch:

; 349  : 	}
; 350  : 	return ncString2::m_EmptyString;

	mov	ecx, DWORD PTR ?m_EmptyString@ncString2@@2PBDB ; ncString2::m_EmptyString
	mov	esi, DWORD PTR ___$ReturnUdt$[esp+4]
	push	ecx
	mov	ecx, esi
	call	??0ncString2@@QAE@PBD@Z			; ncString2::ncString2
	mov	eax, esi
	pop	esi

; 351  : }

	pop	ecx
	ret	8
?GetMatch@ncRegEx2@@QAE?AVncString2@@I@Z ENDP		; ncRegEx2::GetMatch
_TEXT	ENDS
PUBLIC	?deallocate@?$_DebugHeapAllocator@D@std@@QAEXPADI@Z ; std::_DebugHeapAllocator<char>::deallocate
; Function compile flags: /Ogtpy
; File c:\program files\microsoft visual studio 8\vc\include\xdebug
;	COMDAT ?deallocate@?$_DebugHeapAllocator@D@std@@QAEXPADI@Z
_TEXT	SEGMENT
__Ptr$ = 8						; size = 4
___formal$ = 12						; size = 4
?deallocate@?$_DebugHeapAllocator@D@std@@QAEXPADI@Z PROC ; std::_DebugHeapAllocator<char>::deallocate, COMDAT
; _this$ = ecx

; 102  : 		_DELETE_CRT_VEC(_Ptr);

	mov	eax, DWORD PTR __Ptr$[esp-4]
	test	eax, eax
	je	SHORT $LN3@deallocate
	push	eax
	call	_free
	pop	ecx
$LN3@deallocate:

; 103  : 		}

	ret	8
?deallocate@?$_DebugHeapAllocator@D@std@@QAEXPADI@Z ENDP ; std::_DebugHeapAllocator<char>::deallocate
_TEXT	ENDS
PUBLIC	??1?$ncVector@UncRegExFltrData@@@@UAE@XZ	; ncVector<ncRegExFltrData>::~ncVector<ncRegExFltrData>
; Function compile flags: /Ogtpy
; File d:\source code\nc lib\ncvector.h
;	COMDAT ??1?$ncVector@UncRegExFltrData@@@@UAE@XZ
_TEXT	SEGMENT
??1?$ncVector@UncRegExFltrData@@@@UAE@XZ PROC		; ncVector<ncRegExFltrData>::~ncVector<ncRegExFltrData>, COMDAT
; _this$ = ecx

; 35   : 	{

	push	esi
	mov	esi, ecx

; 36   : 		this->Clear();

	cmp	DWORD PTR [esi+4], 0
	mov	DWORD PTR [esi], OFFSET ??_7?$ncVector@UncRegExFltrData@@@@6B@
	je	SHORT $LN8@ncVector
	push	OFFSET ??_C@_00CNPNBAHC@?$AA@
	push	55					; 00000037H
	push	OFFSET ??_C@_0CB@BOFIHJED@d?3?2source?5code?2nc?5lib?2ncVector?4h@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	eax, DWORD PTR [esi+4]
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
	mov	DWORD PTR [esi+4], 0
$LN8@ncVector:
	mov	DWORD PTR [esi+8], 0
	pop	esi

; 37   : 	}

	ret	0
??1?$ncVector@UncRegExFltrData@@@@UAE@XZ ENDP		; ncVector<ncRegExFltrData>::~ncVector<ncRegExFltrData>
_TEXT	ENDS
PUBLIC	??0?$_DebugHeapAllocator@D@std@@QAE@XZ		; std::_DebugHeapAllocator<char>::_DebugHeapAllocator<char>
; Function compile flags: /Ogtpy
;	COMDAT ??0?$_DebugHeapAllocator@D@std@@QAE@XZ
_TEXT	SEGMENT
??0?$_DebugHeapAllocator@D@std@@QAE@XZ PROC		; std::_DebugHeapAllocator<char>::_DebugHeapAllocator<char>, COMDAT
; _this$ = ecx
	mov	eax, ecx
	ret	0
??0?$_DebugHeapAllocator@D@std@@QAE@XZ ENDP		; std::_DebugHeapAllocator<char>::_DebugHeapAllocator<char>
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ??_G?$ncVector@UncRegExFltrData@@@@UAEPAXI@Z
_TEXT	SEGMENT
___flags$ = 8						; size = 4
??_G?$ncVector@UncRegExFltrData@@@@UAEPAXI@Z PROC	; ncVector<ncRegExFltrData>::`scalar deleting destructor', COMDAT
; _this$ = ecx
	push	esi
	mov	esi, ecx
	cmp	DWORD PTR [esi+4], 0
	mov	DWORD PTR [esi], OFFSET ??_7?$ncVector@UncRegExFltrData@@@@6B@
	je	SHORT $LN6@scalar@4
	push	OFFSET ??_C@_00CNPNBAHC@?$AA@
	push	55					; 00000037H
	push	OFFSET ??_C@_0CB@BOFIHJED@d?3?2source?5code?2nc?5lib?2ncVector?4h@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	eax, DWORD PTR [esi+4]
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
	mov	DWORD PTR [esi+4], 0
$LN6@scalar@4:
	test	BYTE PTR ___flags$[esp], 1
	mov	DWORD PTR [esi+8], 0
	je	SHORT $LN11@scalar@4
	push	esi
	call	??3@YAXPAX@Z				; operator delete
	add	esp, 4
$LN11@scalar@4:
	mov	eax, esi
	pop	esi
	ret	4
??_G?$ncVector@UncRegExFltrData@@@@UAEPAXI@Z ENDP	; ncVector<ncRegExFltrData>::`scalar deleting destructor'
_TEXT	ENDS
PUBLIC	??0?$_DebugHeapAllocator@D@std@@QAE@ABV01@@Z	; std::_DebugHeapAllocator<char>::_DebugHeapAllocator<char>
; Function compile flags: /Ogtpy
;	COMDAT ??0?$_DebugHeapAllocator@D@std@@QAE@ABV01@@Z
_TEXT	SEGMENT
___that$ = 8						; size = 4
??0?$_DebugHeapAllocator@D@std@@QAE@ABV01@@Z PROC	; std::_DebugHeapAllocator<char>::_DebugHeapAllocator<char>, COMDAT
; _this$ = ecx
	mov	eax, ecx
	ret	4
??0?$_DebugHeapAllocator@D@std@@QAE@ABV01@@Z ENDP	; std::_DebugHeapAllocator<char>::_DebugHeapAllocator<char>
_TEXT	ENDS
PUBLIC	??_7?$ncDynamicVector@UncRegExFltrData@@@@6B@	; ncDynamicVector<ncRegExFltrData>::`vftable'
PUBLIC	??0?$ncDynamicVector@UncRegExFltrData@@@@QAE@XZ	; ncDynamicVector<ncRegExFltrData>::ncDynamicVector<ncRegExFltrData>
PUBLIC	??_R4?$ncDynamicVector@UncRegExFltrData@@@@6B@	; ncDynamicVector<ncRegExFltrData>::`RTTI Complete Object Locator'
PUBLIC	??_R0?AV?$ncDynamicVector@UncRegExFltrData@@@@@8 ; ncDynamicVector<ncRegExFltrData> `RTTI Type Descriptor'
PUBLIC	??_R3?$ncDynamicVector@UncRegExFltrData@@@@8	; ncDynamicVector<ncRegExFltrData>::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2?$ncDynamicVector@UncRegExFltrData@@@@8	; ncDynamicVector<ncRegExFltrData>::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@?$ncDynamicVector@UncRegExFltrData@@@@8 ; ncDynamicVector<ncRegExFltrData>::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?Clear@?$ncDynamicVector@UncRegExFltrData@@@@UAEXXZ ; ncDynamicVector<ncRegExFltrData>::Clear
PUBLIC	?Resize@?$ncDynamicVector@UncRegExFltrData@@@@UAE_NI@Z ; ncDynamicVector<ncRegExFltrData>::Resize
PUBLIC	?Add@?$ncDynamicVector@UncRegExFltrData@@@@UAEXABUncRegExFltrData@@@Z ; ncDynamicVector<ncRegExFltrData>::Add
PUBLIC	?Insert@?$ncDynamicVector@UncRegExFltrData@@@@UAEXIABUncRegExFltrData@@@Z ; ncDynamicVector<ncRegExFltrData>::Insert
PUBLIC	?Delete@?$ncDynamicVector@UncRegExFltrData@@@@UAEXI@Z ; ncDynamicVector<ncRegExFltrData>::Delete
EXTRN	??_E?$ncDynamicVector@UncRegExFltrData@@@@UAEPAXI@Z:PROC ; ncDynamicVector<ncRegExFltrData>::`vector deleting destructor'
;	COMDAT ??_R1A@?0A@EA@?$ncDynamicVector@UncRegExFltrData@@@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@?$ncDynamicVector@UncRegExFltrData@@@@8 DD FLAT:??_R0?AV?$ncDynamicVector@UncRegExFltrData@@@@@8 ; ncDynamicVector<ncRegExFltrData>::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3?$ncDynamicVector@UncRegExFltrData@@@@8
rdata$r	ENDS
;	COMDAT ??_R2?$ncDynamicVector@UncRegExFltrData@@@@8
rdata$r	SEGMENT
??_R2?$ncDynamicVector@UncRegExFltrData@@@@8 DD FLAT:??_R1A@?0A@EA@?$ncDynamicVector@UncRegExFltrData@@@@8 ; ncDynamicVector<ncRegExFltrData>::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@?$ncVector@UncRegExFltrData@@@@8
rdata$r	ENDS
;	COMDAT ??_R3?$ncDynamicVector@UncRegExFltrData@@@@8
rdata$r	SEGMENT
??_R3?$ncDynamicVector@UncRegExFltrData@@@@8 DD 00H	; ncDynamicVector<ncRegExFltrData>::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2?$ncDynamicVector@UncRegExFltrData@@@@8
rdata$r	ENDS
;	COMDAT ??_R0?AV?$ncDynamicVector@UncRegExFltrData@@@@@8
_DATA	SEGMENT
??_R0?AV?$ncDynamicVector@UncRegExFltrData@@@@@8 DD FLAT:??_7type_info@@6B@ ; ncDynamicVector<ncRegExFltrData> `RTTI Type Descriptor'
	DD	00H
	DB	'.?AV?$ncDynamicVector@UncRegExFltrData@@@@', 00H
_DATA	ENDS
;	COMDAT ??_R4?$ncDynamicVector@UncRegExFltrData@@@@6B@
rdata$r	SEGMENT
??_R4?$ncDynamicVector@UncRegExFltrData@@@@6B@ DD 00H	; ncDynamicVector<ncRegExFltrData>::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AV?$ncDynamicVector@UncRegExFltrData@@@@@8
	DD	FLAT:??_R3?$ncDynamicVector@UncRegExFltrData@@@@8
rdata$r	ENDS
;	COMDAT ??_7?$ncDynamicVector@UncRegExFltrData@@@@6B@
CONST	SEGMENT
??_7?$ncDynamicVector@UncRegExFltrData@@@@6B@ DD FLAT:??_R4?$ncDynamicVector@UncRegExFltrData@@@@6B@ ; ncDynamicVector<ncRegExFltrData>::`vftable'
	DD	FLAT:??_E?$ncDynamicVector@UncRegExFltrData@@@@UAEPAXI@Z
	DD	FLAT:?Clear@?$ncDynamicVector@UncRegExFltrData@@@@UAEXXZ
	DD	FLAT:?Resize@?$ncVector@UncRegExFltrData@@@@UAE_NH@Z
	DD	FLAT:?Resize@?$ncDynamicVector@UncRegExFltrData@@@@UAE_NI@Z
	DD	FLAT:?Add@?$ncDynamicVector@UncRegExFltrData@@@@UAEXABUncRegExFltrData@@@Z
	DD	FLAT:?Insert@?$ncDynamicVector@UncRegExFltrData@@@@UAEXIABUncRegExFltrData@@@Z
	DD	FLAT:?Delete@?$ncDynamicVector@UncRegExFltrData@@@@UAEXI@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0?$ncDynamicVector@UncRegExFltrData@@@@QAE@XZ
_TEXT	SEGMENT
??0?$ncDynamicVector@UncRegExFltrData@@@@QAE@XZ PROC	; ncDynamicVector<ncRegExFltrData>::ncDynamicVector<ncRegExFltrData>, COMDAT
; _this$ = ecx

; 101  : 	{

	mov	eax, ecx
	xor	ecx, ecx
	mov	DWORD PTR [eax+8], ecx
	mov	DWORD PTR [eax+4], ecx
	mov	DWORD PTR [eax], OFFSET ??_7?$ncDynamicVector@UncRegExFltrData@@@@6B@

; 102  : 		this->m_Items = 0;

	mov	DWORD PTR [eax+12], ecx

; 103  : 	}

	ret	0
??0?$ncDynamicVector@UncRegExFltrData@@@@QAE@XZ ENDP	; ncDynamicVector<ncRegExFltrData>::ncDynamicVector<ncRegExFltrData>
_TEXT	ENDS
EXTRN	_memcpy:PROC
; Function compile flags: /Ogtpy
;	COMDAT ?Resize@?$ncDynamicVector@UncRegExFltrData@@@@UAE_NI@Z
_TEXT	SEGMENT
_newSize$ = 8						; size = 4
?Resize@?$ncDynamicVector@UncRegExFltrData@@@@UAE_NI@Z PROC ; ncDynamicVector<ncRegExFltrData>::Resize, COMDAT
; _this$ = ecx

; 130  : 	{

	push	esi
	push	edi

; 131  : 		if (newSize > 0)

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

; 132  : 		{
; 133  : 			T *newVec = new T[newSize];

	push	OFFSET ??_C@_00CNPNBAHC@?$AA@
	push	133					; 00000085H
	push	OFFSET ??_C@_0CB@BOFIHJED@d?3?2source?5code?2nc?5lib?2ncVector?4h@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	xor	ecx, ecx
	mov	eax, edi
	mov	edx, 8
	mul	edx
	seto	cl
	neg	ecx
	or	ecx, eax
	push	ecx
	call	??_U@YAPAXI@Z				; operator new[]
	mov	ebx, eax

; 134  : 			if (this->m_Vector != NULL)

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

; 135  : 			{
; 136  : 				int allocCount = (this->m_Length > newSize) ? newSize : this->m_Length;

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

; 137  : 				memcpy(newVec, this->m_Vector, allocCount * sizeof(T));

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

; 138  : 				delete [] this->m_Vector;

	push	OFFSET ??_C@_00CNPNBAHC@?$AA@
	push	138					; 0000008aH
	push	OFFSET ??_C@_0CB@BOFIHJED@d?3?2source?5code?2nc?5lib?2ncVector?4h@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	edx, DWORD PTR [esi+4]
	push	edx
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 28					; 0000001cH
$LN11@Resize:

; 139  : 			}
; 140  : 			if (this->m_Items > newSize)

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

; 141  : 				this->m_Items = newSize;

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

; 142  : 			this->m_Length = newSize;
; 143  : 			this->m_Vector = newVec;

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

; 144  : 			return true;

	mov	al, 1
	pop	esi

; 147  : 	}

	ret	4
$LN3@Resize:
	pop	edi

; 145  : 		}
; 146  : 		return false;

	xor	al, al
	pop	esi

; 147  : 	}

	ret	4
?Resize@?$ncDynamicVector@UncRegExFltrData@@@@UAE_NI@Z ENDP ; ncDynamicVector<ncRegExFltrData>::Resize
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Add@?$ncDynamicVector@UncRegExFltrData@@@@UAEXABUncRegExFltrData@@@Z
_TEXT	SEGMENT
_object$ = 8						; size = 4
?Add@?$ncDynamicVector@UncRegExFltrData@@@@UAEXABUncRegExFltrData@@@Z PROC ; ncDynamicVector<ncRegExFltrData>::Add, COMDAT
; _this$ = ecx

; 149  : 	{

	push	esi
	mov	esi, ecx

; 150  : 		if (this->Resize(this->m_Length +1))

	mov	ecx, DWORD PTR [esi+8]
	mov	eax, DWORD PTR [esi]
	mov	edx, DWORD PTR [eax+12]
	add	ecx, 1
	push	ecx
	mov	ecx, esi
	call	edx
	test	al, al
	je	SHORT $LN1@Add

; 151  : 		{
; 152  : 			this->m_Vector[this->m_Length -1] = object;

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

; 153  : 			this->m_Items++;

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

; 154  : 		}
; 155  : 	}

	ret	4
?Add@?$ncDynamicVector@UncRegExFltrData@@@@UAEXABUncRegExFltrData@@@Z ENDP ; ncDynamicVector<ncRegExFltrData>::Add
_TEXT	ENDS
EXTRN	_memmove:PROC
; Function compile flags: /Ogtpy
;	COMDAT ?Insert@?$ncDynamicVector@UncRegExFltrData@@@@UAEXIABUncRegExFltrData@@@Z
_TEXT	SEGMENT
_Index$ = 8						; size = 4
_object$ = 12						; size = 4
?Insert@?$ncDynamicVector@UncRegExFltrData@@@@UAEXIABUncRegExFltrData@@@Z PROC ; ncDynamicVector<ncRegExFltrData>::Insert, COMDAT
; _this$ = ecx

; 157  : 	{

	push	esi
	mov	esi, ecx

; 158  : 		if (Index > this->m_Length)

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

; 159  : 			this->Add(object);

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

; 165  : 		}
; 166  : 	}

	ret	8
$LN3@Insert:

; 160  : 		else if (this->Resize(this->m_Length + 1))

	mov	edx, DWORD PTR [esi]
	add	eax, 1
	push	eax
	mov	eax, DWORD PTR [edx+12]
	call	eax
	test	al, al
	je	SHORT $LN1@Insert

; 161  : 		{
; 162  : 			memmove(&this->m_Vector[Index + 1], &this->m_Vector[Index], (this->m_Length - Index -1) * sizeof(T));

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

; 163  : 			this->m_Vector[Index] = object;

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

; 164  : 			this->m_Items++;

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

; 165  : 		}
; 166  : 	}

	ret	8
?Insert@?$ncDynamicVector@UncRegExFltrData@@@@UAEXIABUncRegExFltrData@@@Z ENDP ; ncDynamicVector<ncRegExFltrData>::Insert
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Delete@?$ncDynamicVector@UncRegExFltrData@@@@UAEXI@Z
_TEXT	SEGMENT
_Index$ = 8						; size = 4
?Delete@?$ncDynamicVector@UncRegExFltrData@@@@UAEXI@Z PROC ; ncDynamicVector<ncRegExFltrData>::Delete, COMDAT
; _this$ = ecx

; 169  : 		if (Index < 0 || Index >= this->m_Length)

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

; 170  : 			return;
; 171  : 		this->m_Items--;

	add	DWORD PTR [esi+12], -1

; 172  : 		if (this->m_Items == 0)

	jne	SHORT $LN3@Delete

; 173  : 			this->Clear();

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

; 179  : 		}
; 180  : 	}

	ret	4
$LN3@Delete:

; 174  : 		else
; 175  : 		{
; 176  : 			if (Index < this->m_Length)
; 177  : 				memmove(&this->m_Vector[Index], &this->m_Vector[Index +1], (this->m_Length - Index -1) * sizeof(T));

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

; 178  : 			this->Resize(this->m_Items);

	mov	edx, DWORD PTR [esi]
	mov	eax, DWORD PTR [esi+12]
	mov	edx, DWORD PTR [edx+12]
	add	esp, 12					; 0000000cH
	push	eax
	mov	ecx, esi
	call	edx
$LN4@Delete:
	pop	esi

; 179  : 		}
; 180  : 	}

	ret	4
?Delete@?$ncDynamicVector@UncRegExFltrData@@@@UAEXI@Z ENDP ; ncDynamicVector<ncRegExFltrData>::Delete
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ?Clear@?$ncDynamicVector@UncRegExFltrData@@@@UAEXXZ
_TEXT	SEGMENT
?Clear@?$ncDynamicVector@UncRegExFltrData@@@@UAEXXZ PROC ; ncDynamicVector<ncRegExFltrData>::Clear, COMDAT
; _this$ = ecx

; 121  : 	{

	push	esi
	push	edi
	mov	esi, ecx

; 122  : 		this->ncVector<T>::Clear();

	xor	edi, edi
	cmp	DWORD PTR [esi+4], edi
	je	SHORT $LN8@Clear@2
	push	OFFSET ??_C@_00CNPNBAHC@?$AA@
	push	55					; 00000037H
	push	OFFSET ??_C@_0CB@BOFIHJED@d?3?2source?5code?2nc?5lib?2ncVector?4h@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	eax, DWORD PTR [esi+4]
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
	mov	DWORD PTR [esi+4], edi
$LN8@Clear@2:

; 123  : 		this->m_Items = 0;

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

; 124  : 	}

	ret	0
?Clear@?$ncDynamicVector@UncRegExFltrData@@@@UAEXXZ ENDP ; ncDynamicVector<ncRegExFltrData>::Clear
_TEXT	ENDS
PUBLIC	??1?$ncDynamicVector@UncRegExFltrData@@@@UAE@XZ	; ncDynamicVector<ncRegExFltrData>::~ncDynamicVector<ncRegExFltrData>
; Function compile flags: /Ogtpy
;	COMDAT ??1?$ncDynamicVector@UncRegExFltrData@@@@UAE@XZ
_TEXT	SEGMENT
??1?$ncDynamicVector@UncRegExFltrData@@@@UAE@XZ PROC	; ncDynamicVector<ncRegExFltrData>::~ncDynamicVector<ncRegExFltrData>, COMDAT
; _this$ = ecx

; 117  : 	{

	push	esi
	mov	esi, ecx
	push	edi

; 118  : 		this->m_Items = 0;

	xor	edi, edi

; 119  : 	}

	cmp	DWORD PTR [esi+4], edi
	mov	DWORD PTR [esi+12], edi
	mov	DWORD PTR [esi], OFFSET ??_7?$ncVector@UncRegExFltrData@@@@6B@
	je	SHORT $LN11@ncDynamicV
	push	OFFSET ??_C@_00CNPNBAHC@?$AA@
	push	55					; 00000037H
	push	OFFSET ??_C@_0CB@BOFIHJED@d?3?2source?5code?2nc?5lib?2ncVector?4h@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	eax, DWORD PTR [esi+4]
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
	mov	DWORD PTR [esi+4], edi
$LN11@ncDynamicV:
	mov	DWORD PTR [esi+8], edi
	pop	edi
	pop	esi
	ret	0
??1?$ncDynamicVector@UncRegExFltrData@@@@UAE@XZ ENDP	; ncDynamicVector<ncRegExFltrData>::~ncDynamicVector<ncRegExFltrData>
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ??_G?$ncDynamicVector@UncRegExFltrData@@@@UAEPAXI@Z
_TEXT	SEGMENT
___flags$ = 8						; size = 4
??_G?$ncDynamicVector@UncRegExFltrData@@@@UAEPAXI@Z PROC ; ncDynamicVector<ncRegExFltrData>::`scalar deleting destructor', COMDAT
; _this$ = ecx
	push	esi
	mov	esi, ecx
	cmp	DWORD PTR [esi+4], 0
	mov	DWORD PTR [esi+12], 0
	mov	DWORD PTR [esi], OFFSET ??_7?$ncVector@UncRegExFltrData@@@@6B@
	je	SHORT $LN9@scalar@5
	push	OFFSET ??_C@_00CNPNBAHC@?$AA@
	push	55					; 00000037H
	push	OFFSET ??_C@_0CB@BOFIHJED@d?3?2source?5code?2nc?5lib?2ncVector?4h@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	eax, DWORD PTR [esi+4]
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
	mov	DWORD PTR [esi+4], 0
$LN9@scalar@5:
	test	BYTE PTR ___flags$[esp], 1
	mov	DWORD PTR [esi+8], 0
	je	SHORT $LN14@scalar@5
	push	esi
	call	??3@YAXPAX@Z				; operator delete
	add	esp, 4
$LN14@scalar@5:
	mov	eax, esi
	pop	esi
	ret	4
??_G?$ncDynamicVector@UncRegExFltrData@@@@UAEPAXI@Z ENDP ; ncDynamicVector<ncRegExFltrData>::`scalar deleting destructor'
_TEXT	ENDS
PUBLIC	??0ncRegEx2@@QAE@VncString2@@@Z			; ncRegEx2::ncRegEx2
EXTRN	??0ncString2@@QAE@XZ:PROC			; ncString2::ncString2
;	COMDAT xdata$x
; File d:\source code\nc lib\ncstring2.h
xdata$x	SEGMENT
__unwindtable$??0ncRegEx2@@QAE@VncString2@@@Z DD 0ffffffffH
	DD	FLAT:__unwindfunclet$??0ncRegEx2@@QAE@VncString2@@@Z$0
	DD	00H
	DD	FLAT:__unwindfunclet$??0ncRegEx2@@QAE@VncString2@@@Z$1
	DD	01H
	DD	FLAT:__unwindfunclet$??0ncRegEx2@@QAE@VncString2@@@Z$2
__ehfuncinfo$??0ncRegEx2@@QAE@VncString2@@@Z DD 019930522H
	DD	03H
	DD	FLAT:__unwindtable$??0ncRegEx2@@QAE@VncString2@@@Z
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	01H
; Function compile flags: /Ogtpy
; File d:\source code\nc lib\ncregex.cpp
xdata$x	ENDS
;	COMDAT ??0ncRegEx2@@QAE@VncString2@@@Z
_TEXT	SEGMENT
_this$ = -16						; size = 4
__$EHRec$ = -12						; size = 12
_content$ = 8						; size = 8
??0ncRegEx2@@QAE@VncString2@@@Z PROC			; ncRegEx2::ncRegEx2, COMDAT
; _this$ = ecx

; 172  : {

	push	-1
	push	__ehhandler$??0ncRegEx2@@QAE@VncString2@@@Z
	mov	eax, DWORD PTR fs:0
	push	eax
	mov	DWORD PTR fs:0, esp
	push	ecx
	push	esi
	mov	esi, ecx
	push	edi
	mov	DWORD PTR _this$[esp+24], esi
	xor	edi, edi
	mov	DWORD PTR __$EHRec$[esp+32], edi
	call	??0ncString2@@QAE@XZ			; ncString2::ncString2
	mov	DWORD PTR [esi+24], edi
	mov	DWORD PTR [esi+20], edi
	mov	DWORD PTR [esi+16], OFFSET ??_7?$ncDynamicVector@UncRegExFltrData@@@@6B@
	mov	DWORD PTR [esi+28], edi

; 173  : 	this->m_content = content;

	lea	eax, DWORD PTR _content$[esp+20]
	push	eax
	mov	ecx, esi
	mov	BYTE PTR __$EHRec$[esp+36], 2
	call	??4ncString2@@QAEAAV0@ABV0@@Z		; ncString2::operator=

; 174  : 	this->m_re      = NULL;
; 175  : 	this->m_error   = 0;
; 176  : }

	lea	ecx, DWORD PTR _content$[esp+20]
	mov	DWORD PTR [esi+8], edi
	mov	DWORD PTR [esi+12], edi
	mov	DWORD PTR __$EHRec$[esp+32], -1
	mov	DWORD PTR _content$[esp+20], OFFSET ??_7ncString2@@6B@
	call	??1ncStringBase@@UAE@XZ			; ncStringBase::~ncStringBase
	mov	ecx, DWORD PTR __$EHRec$[esp+24]
	pop	edi
	mov	eax, esi
	pop	esi
	mov	DWORD PTR fs:0, ecx
	add	esp, 16					; 00000010H
	ret	8
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$??0ncRegEx2@@QAE@VncString2@@@Z$0:
	lea	ecx, DWORD PTR _content$[ebp-4]
	jmp	??1ncString2@@UAE@XZ			; ncString2::~ncString2
__unwindfunclet$??0ncRegEx2@@QAE@VncString2@@@Z$1:
	mov	ecx, DWORD PTR _this$[ebp]
	jmp	??1ncString2@@UAE@XZ			; ncString2::~ncString2
__unwindfunclet$??0ncRegEx2@@QAE@VncString2@@@Z$2:
	mov	ecx, DWORD PTR _this$[ebp]
	add	ecx, 16					; 00000010H
	jmp	??1?$ncDynamicVector@UncRegExFltrData@@@@UAE@XZ ; ncDynamicVector<ncRegExFltrData>::~ncDynamicVector<ncRegExFltrData>
__ehhandler$??0ncRegEx2@@QAE@VncString2@@@Z:
	mov	eax, OFFSET __ehfuncinfo$??0ncRegEx2@@QAE@VncString2@@@Z
	jmp	___CxxFrameHandler3
text$x	ENDS
??0ncRegEx2@@QAE@VncString2@@@Z ENDP			; ncRegEx2::ncRegEx2
PUBLIC	??1ncRegEx2@@QAE@XZ				; ncRegEx2::~ncRegEx2
;	COMDAT xdata$x
; File d:\source code\nc lib\ncstring2.h
xdata$x	SEGMENT
__unwindtable$??1ncRegEx2@@QAE@XZ DD 0ffffffffH
	DD	FLAT:__unwindfunclet$??1ncRegEx2@@QAE@XZ$0
	DD	00H
	DD	FLAT:__unwindfunclet$??1ncRegEx2@@QAE@XZ$1
__ehfuncinfo$??1ncRegEx2@@QAE@XZ DD 019930522H
	DD	02H
	DD	FLAT:__unwindtable$??1ncRegEx2@@QAE@XZ
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	01H
; Function compile flags: /Ogtpy
; File d:\source code\nc lib\ncregex.cpp
xdata$x	ENDS
;	COMDAT ??1ncRegEx2@@QAE@XZ
_TEXT	SEGMENT
_this$ = -16						; size = 4
__$EHRec$ = -12						; size = 12
??1ncRegEx2@@QAE@XZ PROC				; ncRegEx2::~ncRegEx2, COMDAT
; _this$ = ecx

; 178  : {

	push	-1
	push	__ehhandler$??1ncRegEx2@@QAE@XZ
	mov	eax, DWORD PTR fs:0
	push	eax
	mov	DWORD PTR fs:0, esp
	push	ecx
	push	ebx
	push	esi
	push	edi
	mov	edi, ecx
	mov	DWORD PTR _this$[esp+28], edi
	mov	DWORD PTR __$EHRec$[esp+36], 1

; 179  : 	this->m_content.Clear();

	call	?Clear@ncStringBase@@QAEXXZ		; ncStringBase::Clear

; 180  : 	this->m_subData.Clear();

	mov	eax, DWORD PTR [edi+16]
	mov	edx, DWORD PTR [eax+4]
	lea	esi, DWORD PTR [edi+16]
	mov	ecx, esi
	call	edx

; 181  : 	if (this->m_re)

	mov	eax, DWORD PTR [edi+8]
	xor	ebx, ebx
	cmp	eax, ebx
	je	SHORT $LN1@ncRegEx2

; 182  : 	{
; 183  : 		pcre_free(this->m_re);

	push	eax
	mov	eax, DWORD PTR __imp__pcre_free
	mov	ecx, DWORD PTR [eax]
	call	ecx
	add	esp, 4

; 184  : 		this->m_re = NULL;

	mov	DWORD PTR [edi+8], ebx
$LN1@ncRegEx2:

; 185  : 	}
; 186  : }

	cmp	DWORD PTR [esi+4], ebx
	mov	BYTE PTR __$EHRec$[esp+36], bl
	mov	DWORD PTR [esi+12], ebx
	mov	DWORD PTR [esi], OFFSET ??_7?$ncVector@UncRegExFltrData@@@@6B@
	je	SHORT $LN11@ncRegEx2
	push	OFFSET ??_C@_00CNPNBAHC@?$AA@
	push	55					; 00000037H
	push	OFFSET ??_C@_0CB@BOFIHJED@d?3?2source?5code?2nc?5lib?2ncVector?4h@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	mov	eax, DWORD PTR [esi+4]
	push	eax
	call	??_V@YAXPAX@Z				; operator delete[]
	add	esp, 16					; 00000010H
	mov	DWORD PTR [esi+4], ebx
$LN11@ncRegEx2:
	mov	DWORD PTR [esi+8], ebx
	mov	ecx, edi
	mov	DWORD PTR __$EHRec$[esp+36], -1
	mov	DWORD PTR [edi], OFFSET ??_7ncString2@@6B@
	call	??1ncStringBase@@UAE@XZ			; ncStringBase::~ncStringBase
	mov	ecx, DWORD PTR __$EHRec$[esp+28]
	pop	edi
	pop	esi
	pop	ebx
	mov	DWORD PTR fs:0, ecx
	add	esp, 16					; 00000010H
	ret	0
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$??1ncRegEx2@@QAE@XZ$0:
	mov	ecx, DWORD PTR _this$[ebp]
	jmp	??1ncString2@@UAE@XZ			; ncString2::~ncString2
__unwindfunclet$??1ncRegEx2@@QAE@XZ$1:
	mov	ecx, DWORD PTR _this$[ebp]
	add	ecx, 16					; 00000010H
	jmp	??1?$ncDynamicVector@UncRegExFltrData@@@@UAE@XZ ; ncDynamicVector<ncRegExFltrData>::~ncDynamicVector<ncRegExFltrData>
__ehhandler$??1ncRegEx2@@QAE@XZ:
	mov	eax, OFFSET __ehfuncinfo$??1ncRegEx2@@QAE@XZ
	jmp	___CxxFrameHandler3
text$x	ENDS
??1ncRegEx2@@QAE@XZ ENDP				; ncRegEx2::~ncRegEx2
END
