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

	TITLE	d:\Source Code\NC lib\ncSocket.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	?SetError@ncSocketBase@@QAEXH@Z			; ncSocketBase::SetError
; Function compile flags: /Ogtpy
; File d:\source code\nc lib\ncsocket.h
;	COMDAT ?SetError@ncSocketBase@@QAEXH@Z
_TEXT	SEGMENT
_error$ = 8						; size = 4
?SetError@ncSocketBase@@QAEXH@Z PROC			; ncSocketBase::SetError, COMDAT
; _this$ = ecx

; 35   : 	void SetError(int error) { this->m_error = error; };

	mov	eax, DWORD PTR _error$[esp-4]
	mov	DWORD PTR [ecx+404], eax
	ret	4
?SetError@ncSocketBase@@QAEXH@Z ENDP			; ncSocketBase::SetError
_TEXT	ENDS
PUBLIC	?GetMode@ncSocketBase@@QAEHXZ			; ncSocketBase::GetMode
; Function compile flags: /Ogtpy
;	COMDAT ?GetMode@ncSocketBase@@QAEHXZ
_TEXT	SEGMENT
?GetMode@ncSocketBase@@QAEHXZ PROC			; ncSocketBase::GetMode, COMDAT
; _this$ = ecx

; 36   : 	int GetMode() { return this->m_mode; };

	mov	eax, DWORD PTR [ecx+408]
	ret	0
?GetMode@ncSocketBase@@QAEHXZ ENDP			; ncSocketBase::GetMode
_TEXT	ENDS
PUBLIC	??_7ncSocketBase@@6B@				; ncSocketBase::`vftable'
PUBLIC	??0ncSocketBase@@QAE@H@Z			; ncSocketBase::ncSocketBase
PUBLIC	??_R4ncSocketBase@@6B@				; ncSocketBase::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVncSocketBase@@@8			; ncSocketBase `RTTI Type Descriptor'
PUBLIC	??_R3ncSocketBase@@8				; ncSocketBase::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2ncSocketBase@@8				; ncSocketBase::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@ncSocketBase@@8			; ncSocketBase::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	?Close@ncSocketBase@@UAEXXZ			; ncSocketBase::Close
PUBLIC	?GetIP@ncSocketBase@@UAEPBDXZ			; ncSocketBase::GetIP
PUBLIC	?SetIP@ncSocketBase@@UAEXPBD@Z			; ncSocketBase::SetIP
PUBLIC	?GetPort@ncSocketBase@@UAEGXZ			; ncSocketBase::GetPort
PUBLIC	?SetPort@ncSocketBase@@UAEXG@Z			; ncSocketBase::SetPort
EXTRN	__imp__WSAStartup@8:PROC
EXTRN	??_EncSocketBase@@UAEPAXI@Z:PROC		; ncSocketBase::`vector deleting destructor'
EXTRN	__purecall:PROC
;	COMDAT ??_R1A@?0A@EA@ncSocketBase@@8
; File d:\source code\nc lib\ncsocket.cpp
rdata$r	SEGMENT
??_R1A@?0A@EA@ncSocketBase@@8 DD FLAT:??_R0?AVncSocketBase@@@8 ; ncSocketBase::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	00H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3ncSocketBase@@8
rdata$r	ENDS
;	COMDAT ??_R2ncSocketBase@@8
rdata$r	SEGMENT
??_R2ncSocketBase@@8 DD FLAT:??_R1A@?0A@EA@ncSocketBase@@8 ; ncSocketBase::`RTTI Base Class Array'
rdata$r	ENDS
;	COMDAT ??_R3ncSocketBase@@8
rdata$r	SEGMENT
??_R3ncSocketBase@@8 DD 00H				; ncSocketBase::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	01H
	DD	FLAT:??_R2ncSocketBase@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVncSocketBase@@@8
_DATA	SEGMENT
??_R0?AVncSocketBase@@@8 DD FLAT:??_7type_info@@6B@	; ncSocketBase `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVncSocketBase@@', 00H
_DATA	ENDS
;	COMDAT ??_R4ncSocketBase@@6B@
rdata$r	SEGMENT
??_R4ncSocketBase@@6B@ DD 00H				; ncSocketBase::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVncSocketBase@@@8
	DD	FLAT:??_R3ncSocketBase@@8
rdata$r	ENDS
;	COMDAT ??_7ncSocketBase@@6B@
CONST	SEGMENT
??_7ncSocketBase@@6B@ DD FLAT:??_R4ncSocketBase@@6B@	; ncSocketBase::`vftable'
	DD	FLAT:??_EncSocketBase@@UAEPAXI@Z
	DD	FLAT:__purecall
	DD	FLAT:?Close@ncSocketBase@@UAEXXZ
	DD	FLAT:?GetIP@ncSocketBase@@UAEPBDXZ
	DD	FLAT:?SetIP@ncSocketBase@@UAEXPBD@Z
	DD	FLAT:?GetPort@ncSocketBase@@UAEGXZ
	DD	FLAT:?SetPort@ncSocketBase@@UAEXG@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0ncSocketBase@@QAE@H@Z
_TEXT	SEGMENT
_mode$ = 8						; size = 4
??0ncSocketBase@@QAE@H@Z PROC				; ncSocketBase::ncSocketBase, COMDAT
; _this$ = ecx

; 10   : {

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

; 11   : 	WSAStartup(MAKEWORD(2,2), &this->m_wsaData);

	lea	ecx, DWORD PTR [esi+4]
	push	ecx
	push	514					; 00000202H
	mov	DWORD PTR [esi], OFFSET ??_7ncSocketBase@@6B@
	mov	DWORD PTR [esi+408], eax
	mov	DWORD PTR [esi+412], 0
	call	DWORD PTR __imp__WSAStartup@8

; 12   : 	this->m_socketData.sin_family = AF_INET;

	mov	WORD PTR [esi+416], 2

; 13   : 	this->m_error = -1;

	mov	DWORD PTR [esi+404], -1

; 14   : }

	mov	eax, esi
	pop	esi
	ret	4
??0ncSocketBase@@QAE@H@Z ENDP				; ncSocketBase::ncSocketBase
_TEXT	ENDS
EXTRN	__imp__inet_ntoa@4:PROC
; Function compile flags: /Ogtpy
; File d:\source code\nc lib\ncsocket.h
;	COMDAT ?GetIP@ncSocketBase@@UAEPBDXZ
_TEXT	SEGMENT
?GetIP@ncSocketBase@@UAEPBDXZ PROC			; ncSocketBase::GetIP, COMDAT
; _this$ = ecx

; 29   : 	virtual const char *GetIP() { return inet_ntoa(this->m_socketData.sin_addr); };

	mov	eax, DWORD PTR [ecx+420]
	push	eax
	call	DWORD PTR __imp__inet_ntoa@4
	ret	0
?GetIP@ncSocketBase@@UAEPBDXZ ENDP			; ncSocketBase::GetIP
_TEXT	ENDS
EXTRN	__imp__inet_addr@4:PROC
; Function compile flags: /Ogtpy
;	COMDAT ?SetIP@ncSocketBase@@UAEXPBD@Z
_TEXT	SEGMENT
_ip$ = 8						; size = 4
?SetIP@ncSocketBase@@UAEXPBD@Z PROC			; ncSocketBase::SetIP, COMDAT
; _this$ = ecx

; 30   : 	virtual void SetIP(const char *ip) { this->m_socketData.sin_addr.s_addr = inet_addr(ip); };

	mov	eax, DWORD PTR _ip$[esp-4]
	push	esi
	push	eax
	mov	esi, ecx
	call	DWORD PTR __imp__inet_addr@4
	mov	DWORD PTR [esi+420], eax
	pop	esi
	ret	4
?SetIP@ncSocketBase@@UAEXPBD@Z ENDP			; ncSocketBase::SetIP
_TEXT	ENDS
EXTRN	__imp__ntohs@4:PROC
; Function compile flags: /Ogtpy
;	COMDAT ?GetPort@ncSocketBase@@UAEGXZ
_TEXT	SEGMENT
?GetPort@ncSocketBase@@UAEGXZ PROC			; ncSocketBase::GetPort, COMDAT
; _this$ = ecx

; 31   : 	virtual unsigned short GetPort() { return ntohs(this->m_socketData.sin_port); };

	movzx	eax, WORD PTR [ecx+418]
	push	eax
	call	DWORD PTR __imp__ntohs@4
	ret	0
?GetPort@ncSocketBase@@UAEGXZ ENDP			; ncSocketBase::GetPort
_TEXT	ENDS
EXTRN	__imp__htons@4:PROC
; Function compile flags: /Ogtpy
;	COMDAT ?SetPort@ncSocketBase@@UAEXG@Z
_TEXT	SEGMENT
_port$ = 8						; size = 2
?SetPort@ncSocketBase@@UAEXG@Z PROC			; ncSocketBase::SetPort, COMDAT
; _this$ = ecx

; 32   : 	virtual void SetPort(unsigned short port) { this->m_socketData.sin_port = htons(port); };

	mov	eax, DWORD PTR _port$[esp-4]
	push	esi
	push	eax
	mov	esi, ecx
	call	DWORD PTR __imp__htons@4
	mov	WORD PTR [esi+418], ax
	pop	esi
	ret	4
?SetPort@ncSocketBase@@UAEXG@Z ENDP			; ncSocketBase::SetPort
_TEXT	ENDS
EXTRN	__imp__WSACleanup@0:PROC
EXTRN	__imp__closesocket@4:PROC
EXTRN	__imp__shutdown@8:PROC
; Function compile flags: /Ogtpy
; File d:\source code\nc lib\ncsocket.cpp
;	COMDAT ?Close@ncSocketBase@@UAEXXZ
_TEXT	SEGMENT
?Close@ncSocketBase@@UAEXXZ PROC			; ncSocketBase::Close, COMDAT
; _this$ = ecx

; 20   : {

	push	esi
	mov	esi, ecx

; 21   : 	if (this->m_socket)

	mov	eax, DWORD PTR [esi+412]
	test	eax, eax
	je	SHORT $LN1@Close

; 22   : 	{
; 23   : 		shutdown(this->m_socket, SD_BOTH);

	push	2
	push	eax
	call	DWORD PTR __imp__shutdown@8

; 24   : 		closesocket(this->m_socket);

	mov	eax, DWORD PTR [esi+412]
	push	eax
	call	DWORD PTR __imp__closesocket@4

; 25   : 		this->m_socket = NULL;

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

; 26   : 		WSACleanup();

	jmp	DWORD PTR __imp__WSACleanup@0
$LN1@Close:
	pop	esi

; 27   : 	}
; 28   : }

	ret	0
?Close@ncSocketBase@@UAEXXZ ENDP			; ncSocketBase::Close
_TEXT	ENDS
PUBLIC	?GetError@ncSocketBase@@QAEHXZ			; ncSocketBase::GetError
; Function compile flags: /Ogtpy
;	COMDAT ?GetError@ncSocketBase@@QAEHXZ
_TEXT	SEGMENT
?GetError@ncSocketBase@@QAEHXZ PROC			; ncSocketBase::GetError, COMDAT
; _this$ = ecx

; 31   : 	int error = this->m_error;

	mov	eax, DWORD PTR [ecx+404]

; 32   : 	this->m_error = -1;

	mov	DWORD PTR [ecx+404], -1

; 33   : 	return error;
; 34   : }

	ret	0
?GetError@ncSocketBase@@QAEHXZ ENDP			; ncSocketBase::GetError
_TEXT	ENDS
PUBLIC	?CreateSocket@ncSocketTCP@@UAE_NXZ		; ncSocketTCP::CreateSocket
EXTRN	__imp__socket@12:PROC
; Function compile flags: /Ogtpy
;	COMDAT ?CreateSocket@ncSocketTCP@@UAE_NXZ
_TEXT	SEGMENT
?CreateSocket@ncSocketTCP@@UAE_NXZ PROC			; ncSocketTCP::CreateSocket, COMDAT
; _this$ = ecx

; 55   : {

	push	esi
	mov	esi, ecx

; 56   : 	// Socket already created
; 57   : 	if (this->m_socket)

	cmp	DWORD PTR [esi+412], 0
	je	SHORT $LN1@CreateSock

; 58   : 		return false;

	xor	al, al
	pop	esi

; 61   : }

	ret	0
$LN1@CreateSock:

; 59   : 
; 60   : 	return ((this->m_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) != NULL);

	push	6
	push	1
	push	2
	call	DWORD PTR __imp__socket@12
	xor	ecx, ecx
	test	eax, eax
	mov	DWORD PTR [esi+412], eax
	setne	cl
	mov	al, cl
	pop	esi

; 61   : }

	ret	0
?CreateSocket@ncSocketTCP@@UAE_NXZ ENDP			; ncSocketTCP::CreateSocket
_TEXT	ENDS
PUBLIC	?Connect@ncSocketTCP@@QAE_NXZ			; ncSocketTCP::Connect
EXTRN	__imp__WSAGetLastError@0:PROC
EXTRN	__imp__connect@12:PROC
; Function compile flags: /Ogtpy
;	COMDAT ?Connect@ncSocketTCP@@QAE_NXZ
_TEXT	SEGMENT
?Connect@ncSocketTCP@@QAE_NXZ PROC			; ncSocketTCP::Connect, COMDAT
; _this$ = ecx

; 91   : {

	push	esi
	mov	esi, ecx

; 92   : 	if (connect(this->m_socket, (sockaddr *)&this->m_socketData, sizeof(this->m_socketData)) == SOCKET_ERROR)

	mov	ecx, DWORD PTR [esi+412]
	push	16					; 00000010H
	lea	eax, DWORD PTR [esi+416]
	push	eax
	push	ecx
	call	DWORD PTR __imp__connect@12
	cmp	eax, -1
	jne	SHORT $LN1@Connect

; 93   : 	{
; 94   : 		this->SetError(WSAGetLastError());

	call	DWORD PTR __imp__WSAGetLastError@0
	mov	DWORD PTR [esi+404], eax

; 95   : 		return false;

	xor	al, al
	pop	esi

; 98   : 	return true;
; 99   : }

	ret	0
$LN1@Connect:

; 96   : 	}
; 97   : 	this->m_isConnected = true;

	mov	al, 1
	mov	BYTE PTR [esi+432], al
	pop	esi

; 98   : 	return true;
; 99   : }

	ret	0
?Connect@ncSocketTCP@@QAE_NXZ ENDP			; ncSocketTCP::Connect
_TEXT	ENDS
PUBLIC	?Listen@ncSocketTCP@@QAE_NXZ			; ncSocketTCP::Listen
EXTRN	__imp__listen@8:PROC
EXTRN	__imp__bind@12:PROC
; Function compile flags: /Ogtpy
;	COMDAT ?Listen@ncSocketTCP@@QAE_NXZ
_TEXT	SEGMENT
?Listen@ncSocketTCP@@QAE_NXZ PROC			; ncSocketTCP::Listen, COMDAT
; _this$ = ecx

; 101  : {

	push	esi
	mov	esi, ecx

; 102  : 	if (bind(this->m_socket, (sockaddr *)&this->m_socketData, sizeof(sockaddr)) == SOCKET_ERROR)

	mov	ecx, DWORD PTR [esi+412]
	push	16					; 00000010H
	lea	eax, DWORD PTR [esi+416]
	push	eax
	push	ecx
	call	DWORD PTR __imp__bind@12
	cmp	eax, -1
	jne	SHORT $LN2@Listen
$LN9@Listen:

; 103  : 	{
; 104  : 		this->SetError(WSAGetLastError());

	call	DWORD PTR __imp__WSAGetLastError@0
	mov	DWORD PTR [esi+404], eax

; 105  : 		return false;

	xor	al, al
	pop	esi

; 113  : }

	ret	0
$LN2@Listen:

; 106  : 	}
; 107  : 	if (listen(this->m_socket, SOMAXCONN) == SOCKET_ERROR)

	mov	edx, DWORD PTR [esi+412]
	push	2147483647				; 7fffffffH
	push	edx
	call	DWORD PTR __imp__listen@8
	cmp	eax, -1

; 108  : 	{
; 109  : 		this->SetError(WSAGetLastError());
; 110  : 		return false;

	je	SHORT $LN9@Listen

; 111  : 	}
; 112  : 	return true;

	mov	al, 1
	pop	esi

; 113  : }

	ret	0
?Listen@ncSocketTCP@@QAE_NXZ ENDP			; ncSocketTCP::Listen
_TEXT	ENDS
PUBLIC	?IsConnected@ncSocketTCP@@QAE_NXZ		; ncSocketTCP::IsConnected
; Function compile flags: /Ogtpy
;	COMDAT ?IsConnected@ncSocketTCP@@QAE_NXZ
_TEXT	SEGMENT
?IsConnected@ncSocketTCP@@QAE_NXZ PROC			; ncSocketTCP::IsConnected, COMDAT
; _this$ = ecx

; 161  : 	return this->m_isConnected;

	mov	al, BYTE PTR [ecx+432]

; 162  : }

	ret	0
?IsConnected@ncSocketTCP@@QAE_NXZ ENDP			; ncSocketTCP::IsConnected
_TEXT	ENDS
PUBLIC	?CreateSocket@ncSocketUDP@@UAE_NXZ		; ncSocketUDP::CreateSocket
; Function compile flags: /Ogtpy
;	COMDAT ?CreateSocket@ncSocketUDP@@UAE_NXZ
_TEXT	SEGMENT
?CreateSocket@ncSocketUDP@@UAE_NXZ PROC			; ncSocketUDP::CreateSocket, COMDAT
; _this$ = ecx

; 176  : {

	push	esi
	mov	esi, ecx

; 177  : 	// Socket already created
; 178  : 	if (this->m_socket)

	cmp	DWORD PTR [esi+412], 0
	je	SHORT $LN1@CreateSock@2

; 179  : 		return false;

	xor	al, al
	pop	esi

; 182  : }

	ret	0
$LN1@CreateSock@2:

; 180  : 
; 181  : 	return ((this->m_socket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) != NULL);

	push	17					; 00000011H
	push	2
	push	2
	call	DWORD PTR __imp__socket@12
	xor	ecx, ecx
	test	eax, eax
	mov	DWORD PTR [esi+412], eax
	setne	cl
	mov	al, cl
	pop	esi

; 182  : }

	ret	0
?CreateSocket@ncSocketUDP@@UAE_NXZ ENDP			; ncSocketUDP::CreateSocket
_TEXT	ENDS
PUBLIC	?Listen@ncSocketUDP@@QAE_NXZ			; ncSocketUDP::Listen
; Function compile flags: /Ogtpy
;	COMDAT ?Listen@ncSocketUDP@@QAE_NXZ
_TEXT	SEGMENT
?Listen@ncSocketUDP@@QAE_NXZ PROC			; ncSocketUDP::Listen, COMDAT
; _this$ = ecx

; 184  : {

	push	esi
	mov	esi, ecx

; 185  : 	if (bind(this->m_socket, (sockaddr *)&this->m_socketData, sizeof(sockaddr)) == SOCKET_ERROR)

	mov	ecx, DWORD PTR [esi+412]
	push	16					; 00000010H
	lea	eax, DWORD PTR [esi+416]
	push	eax
	push	ecx
	call	DWORD PTR __imp__bind@12
	cmp	eax, -1
	jne	SHORT $LN1@Listen@2

; 186  : 	{
; 187  : 		this->SetError(WSAGetLastError());

	call	DWORD PTR __imp__WSAGetLastError@0
	mov	DWORD PTR [esi+404], eax

; 188  : 		return false;

	xor	al, al
	pop	esi

; 191  : }

	ret	0
$LN1@Listen@2:

; 189  : 	}
; 190  : 	return true;

	mov	al, 1
	pop	esi

; 191  : }

	ret	0
?Listen@ncSocketUDP@@QAE_NXZ ENDP			; ncSocketUDP::Listen
_TEXT	ENDS
PUBLIC	?RecvFrom@ncSocketUDP@@QAEHPAXHHAAUsockaddr_in@@@Z ; ncSocketUDP::RecvFrom
EXTRN	__imp__recvfrom@24:PROC
EXTRN	__imp__select@20:PROC
; Function compile flags: /Ogtpy
;	COMDAT ?RecvFrom@ncSocketUDP@@QAEHPAXHHAAUsockaddr_in@@@Z
_TEXT	SEGMENT
_srcDataLen$ = -272					; size = 4
_Timeout$38131 = -268					; size = 8
_readfds$38132 = -260					; size = 260
_buf$ = 8						; size = 4
_length$ = 12						; size = 4
_timeoutMs$ = 16					; size = 4
_src$ = 20						; size = 4
?RecvFrom@ncSocketUDP@@QAEHPAXHHAAUsockaddr_in@@@Z PROC	; ncSocketUDP::RecvFrom, COMDAT
; _this$ = ecx

; 193  : {

	sub	esp, 272				; 00000110H
	push	esi
	mov	esi, ecx

; 194  : 	if ((this->GetMode() & ncSOCKET_NONBLOCKING) == ncSOCKET_NONBLOCKING)

	test	BYTE PTR [esi+408], 2
	je	SHORT $LN3@RecvFrom

; 195  : 	{
; 196  : 		struct timeval Timeout;
; 197  : 		fd_set readfds;
; 198  : 		readfds.fd_count = 1;
; 199  : 		readfds.fd_array[0] = this->m_socket;

	mov	eax, DWORD PTR [esi+412]

; 200  : 		Timeout.tv_sec = 0;
; 201  : 		Timeout.tv_usec = timeoutMs;

	mov	ecx, DWORD PTR _timeoutMs$[esp+272]

; 202  : 		int nSel = select(1, &readfds, NULL, NULL, &Timeout);

	lea	edx, DWORD PTR _Timeout$38131[esp+276]
	push	edx
	push	0
	mov	DWORD PTR _readfds$38132[esp+288], eax
	push	0
	lea	eax, DWORD PTR _readfds$38132[esp+288]
	push	eax
	push	1
	mov	DWORD PTR _readfds$38132[esp+296], 1
	mov	DWORD PTR _Timeout$38131[esp+296], 0
	mov	DWORD PTR _Timeout$38131[esp+300], ecx
	call	DWORD PTR __imp__select@20

; 203  : 		switch (nSel)

	cmp	eax, -1
	je	SHORT $LN2@RecvFrom
	test	eax, eax
	jne	SHORT $LN3@RecvFrom
	pop	esi

; 218  : 	return len;
; 219  : }

	add	esp, 272				; 00000110H
	ret	16					; 00000010H
$LN2@RecvFrom:

; 204  : 		{
; 205  : 			// Socket error
; 206  : 			case SOCKET_ERROR:
; 207  : 				this->SetError(WSAGetLastError());

	call	DWORD PTR __imp__WSAGetLastError@0
	mov	DWORD PTR [esi+404], eax

; 208  : 				return -1;

	or	eax, -1
	pop	esi

; 218  : 	return len;
; 219  : }

	add	esp, 272				; 00000110H
	ret	16					; 00000010H
$LN3@RecvFrom:

; 209  : 
; 210  : 			// No data
; 211  : 			case 0:
; 212  : 				return 0;
; 213  : 		}
; 214  : 	}
; 215  : 
; 216  : 	int srcDataLen = sizeof(sockaddr_in);
; 217  : 	int len = recvfrom(this->m_socket, (char *)buf, length, 0, (sockaddr *)&src, &srcDataLen);

	mov	edx, DWORD PTR _src$[esp+272]
	mov	eax, DWORD PTR _length$[esp+272]
	lea	ecx, DWORD PTR _srcDataLen$[esp+276]
	push	ecx
	mov	ecx, DWORD PTR _buf$[esp+276]
	push	edx
	mov	edx, DWORD PTR [esi+412]
	push	0
	push	eax
	push	ecx
	push	edx
	mov	DWORD PTR _srcDataLen$[esp+300], 16	; 00000010H
	call	DWORD PTR __imp__recvfrom@24
	pop	esi

; 218  : 	return len;
; 219  : }

	add	esp, 272				; 00000110H
	ret	16					; 00000010H
?RecvFrom@ncSocketUDP@@QAEHPAXHHAAUsockaddr_in@@@Z ENDP	; ncSocketUDP::RecvFrom
_TEXT	ENDS
PUBLIC	?Sendto@ncSocketUDP@@QAE_NAAUsockaddr_in@@PBXH@Z ; ncSocketUDP::Sendto
EXTRN	__imp__sendto@24:PROC
; Function compile flags: /Ogtpy
;	COMDAT ?Sendto@ncSocketUDP@@QAE_NAAUsockaddr_in@@PBXH@Z
_TEXT	SEGMENT
_dst$ = 8						; size = 4
_data$ = 12						; size = 4
_length$ = 16						; size = 4
?Sendto@ncSocketUDP@@QAE_NAAUsockaddr_in@@PBXH@Z PROC	; ncSocketUDP::Sendto, COMDAT
; _this$ = ecx

; 230  : 	if (sendto(this->m_socket, (const char *)data, length, 0, (sockaddr *)&dst, sizeof(sockaddr_in)) == SOCKET_ERROR)

	mov	eax, DWORD PTR _dst$[esp-4]
	mov	edx, DWORD PTR _data$[esp-4]
	push	esi
	push	16					; 00000010H
	push	eax
	mov	esi, ecx
	mov	ecx, DWORD PTR _length$[esp+8]
	mov	eax, DWORD PTR [esi+412]
	push	0
	push	ecx
	push	edx
	push	eax
	call	DWORD PTR __imp__sendto@24
	cmp	eax, -1
	jne	SHORT $LN1@Sendto

; 231  : 	{
; 232  : 		this->SetError(WSAGetLastError());

	call	DWORD PTR __imp__WSAGetLastError@0
	mov	DWORD PTR [esi+404], eax

; 233  : 		return false;

	xor	al, al
	pop	esi

; 236  : }

	ret	12					; 0000000cH
$LN1@Sendto:

; 234  : 	}
; 235  : 	return true;

	mov	al, 1
	pop	esi

; 236  : }

	ret	12					; 0000000cH
?Sendto@ncSocketUDP@@QAE_NAAUsockaddr_in@@PBXH@Z ENDP	; ncSocketUDP::Sendto
_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
$T41194 = -12						; size = 12
_this$ = 8						; size = 4
$T41200 = 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 $T41200[esp+12]
	push	eax
	lea	ecx, DWORD PTR $T41194[esp+20]
	mov	DWORD PTR $T41200[esp+16], 0
	call	??0exception@std@@QAE@ABQBD@Z		; std::exception::exception
	push	OFFSET __TI2?AVbad_alloc@std@@
	lea	ecx, DWORD PTR $T41194[esp+20]
	push	ecx
	mov	DWORD PTR $T41194[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
$T41206 = -12						; size = 12
$T41211 = 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 $T41211[esp+12]
	push	eax
	lea	ecx, DWORD PTR $T41206[esp+20]
	mov	DWORD PTR $T41211[esp+16], 0
	call	??0exception@std@@QAE@ABQBD@Z		; std::exception::exception
	push	OFFSET __TI2?AVbad_alloc@std@@
	lea	ecx, DWORD PTR $T41206[esp+20]
	push	ecx
	mov	DWORD PTR $T41206[esp+24], OFFSET ??_7bad_alloc@std@@6B@
	call	__CxxThrowException@8
$LN9@allocate@2:
$LN8@allocate@2:
	int	3
?allocate@?$_DebugHeapAllocator@D@std@@QAEPADI@Z ENDP	; std::_DebugHeapAllocator<char>::allocate
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ??0bad_alloc@std@@QAE@ABV01@@Z
_TEXT	SEGMENT
___that$ = 8						; size = 4
??0bad_alloc@std@@QAE@ABV01@@Z PROC			; std::bad_alloc::bad_alloc, COMDAT
; _this$ = ecx
	mov	eax, DWORD PTR ___that$[esp-4]
	push	esi
	push	eax
	mov	esi, ecx
	call	??0exception@std@@QAE@ABV01@@Z		; std::exception::exception
	mov	DWORD PTR [esi], OFFSET ??_7bad_alloc@std@@6B@
	mov	eax, esi
	pop	esi
	ret	4
??0bad_alloc@std@@QAE@ABV01@@Z ENDP			; std::bad_alloc::bad_alloc
_TEXT	ENDS
PUBLIC	??0?$allocator@D@std@@QAE@XZ			; std::allocator<char>::allocator<char>
; Function compile flags: /Ogtpy
; File c:\program files\microsoft visual studio 8\vc\include\xmemory
;	COMDAT ??0?$allocator@D@std@@QAE@XZ
_TEXT	SEGMENT
??0?$allocator@D@std@@QAE@XZ PROC			; std::allocator<char>::allocator<char>, COMDAT
; _this$ = ecx

; 120  : 	allocator() _THROW0()

	mov	eax, ecx

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

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

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

	mov	eax, ecx

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

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

; 56   : 	if (_Ptr != 0)

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

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

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

; 62   : 		}
; 63   : 	}

	ret	0
??$_DebugHeapDelete@X@std@@YAXPAX@Z ENDP		; std::_DebugHeapDelete<void>
_TEXT	ENDS
PUBLIC	??1ncSocketBase@@UAE@XZ				; ncSocketBase::~ncSocketBase
; Function compile flags: /Ogtpy
; File d:\source code\nc lib\ncsocket.cpp
;	COMDAT ??1ncSocketBase@@UAE@XZ
_TEXT	SEGMENT
??1ncSocketBase@@UAE@XZ PROC				; ncSocketBase::~ncSocketBase, COMDAT
; _this$ = ecx

; 16   : {

	push	esi
	mov	esi, ecx

; 17   : 	this->Close();

	mov	eax, DWORD PTR [esi+412]
	test	eax, eax
	mov	DWORD PTR [esi], OFFSET ??_7ncSocketBase@@6B@
	je	SHORT $LN3@ncSocketBa
	push	2
	push	eax
	call	DWORD PTR __imp__shutdown@8
	mov	eax, DWORD PTR [esi+412]
	push	eax
	call	DWORD PTR __imp__closesocket@4
	mov	DWORD PTR [esi+412], 0
	pop	esi
	jmp	DWORD PTR __imp__WSACleanup@0
$LN3@ncSocketBa:
	pop	esi

; 18   : }

	ret	0
??1ncSocketBase@@UAE@XZ ENDP				; ncSocketBase::~ncSocketBase
_TEXT	ENDS
PUBLIC	??_7ncSocketTCP@@6B@				; ncSocketTCP::`vftable'
PUBLIC	??0ncSocketTCP@@QAE@AAUsockaddr_in@@H@Z		; ncSocketTCP::ncSocketTCP
PUBLIC	??_R4ncSocketTCP@@6B@				; ncSocketTCP::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVncSocketTCP@@@8				; ncSocketTCP `RTTI Type Descriptor'
PUBLIC	??_R3ncSocketTCP@@8				; ncSocketTCP::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2ncSocketTCP@@8				; ncSocketTCP::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@ncSocketTCP@@8			; ncSocketTCP::`RTTI Base Class Descriptor at (0,-1,0,64)'
EXTRN	??_EncSocketTCP@@UAEPAXI@Z:PROC			; ncSocketTCP::`vector deleting destructor'
;	COMDAT ??_R1A@?0A@EA@ncSocketTCP@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@ncSocketTCP@@8 DD FLAT:??_R0?AVncSocketTCP@@@8 ; ncSocketTCP::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3ncSocketTCP@@8
rdata$r	ENDS
;	COMDAT ??_R2ncSocketTCP@@8
rdata$r	SEGMENT
??_R2ncSocketTCP@@8 DD FLAT:??_R1A@?0A@EA@ncSocketTCP@@8 ; ncSocketTCP::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@ncSocketBase@@8
rdata$r	ENDS
;	COMDAT ??_R3ncSocketTCP@@8
rdata$r	SEGMENT
??_R3ncSocketTCP@@8 DD 00H				; ncSocketTCP::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2ncSocketTCP@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVncSocketTCP@@@8
_DATA	SEGMENT
??_R0?AVncSocketTCP@@@8 DD FLAT:??_7type_info@@6B@	; ncSocketTCP `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVncSocketTCP@@', 00H
_DATA	ENDS
;	COMDAT ??_R4ncSocketTCP@@6B@
rdata$r	SEGMENT
??_R4ncSocketTCP@@6B@ DD 00H				; ncSocketTCP::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVncSocketTCP@@@8
	DD	FLAT:??_R3ncSocketTCP@@8
rdata$r	ENDS
;	COMDAT ??_7ncSocketTCP@@6B@
CONST	SEGMENT
??_7ncSocketTCP@@6B@ DD FLAT:??_R4ncSocketTCP@@6B@	; ncSocketTCP::`vftable'
	DD	FLAT:??_EncSocketTCP@@UAEPAXI@Z
	DD	FLAT:?CreateSocket@ncSocketTCP@@UAE_NXZ
	DD	FLAT:?Close@ncSocketBase@@UAEXXZ
	DD	FLAT:?GetIP@ncSocketBase@@UAEPBDXZ
	DD	FLAT:?SetIP@ncSocketBase@@UAEXPBD@Z
	DD	FLAT:?GetPort@ncSocketBase@@UAEGXZ
	DD	FLAT:?SetPort@ncSocketBase@@UAEXG@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0ncSocketTCP@@QAE@AAUsockaddr_in@@H@Z
_TEXT	SEGMENT
_socketData$ = 8					; size = 4
_mode$ = 12						; size = 4
??0ncSocketTCP@@QAE@AAUsockaddr_in@@H@Z PROC		; ncSocketTCP::ncSocketTCP, COMDAT
; _this$ = ecx

; 42   : {

	mov	eax, DWORD PTR _mode$[esp-4]
	push	esi
	mov	esi, ecx
	lea	ecx, DWORD PTR [esi+4]
	push	ecx
	push	514					; 00000202H
	mov	DWORD PTR [esi], OFFSET ??_7ncSocketBase@@6B@
	mov	DWORD PTR [esi+408], eax
	mov	DWORD PTR [esi+412], 0
	call	DWORD PTR __imp__WSAStartup@8

; 43   : 	this->CreateSocket();

	cmp	DWORD PTR [esi+412], 0
	mov	WORD PTR [esi+416], 2
	mov	DWORD PTR [esi+404], -1
	mov	DWORD PTR [esi], OFFSET ??_7ncSocketTCP@@6B@
	jne	SHORT $LN7@ncSocketTC
	push	6
	push	1
	push	2
	call	DWORD PTR __imp__socket@12
	mov	DWORD PTR [esi+412], eax
$LN7@ncSocketTC:

; 44   : 	this->m_socketData	= socketData;

	mov	eax, DWORD PTR _socketData$[esp]
	mov	edx, DWORD PTR [eax]
	mov	DWORD PTR [esi+416], edx
	mov	ecx, DWORD PTR [eax+4]
	mov	DWORD PTR [esi+420], ecx
	mov	edx, DWORD PTR [eax+8]
	mov	DWORD PTR [esi+424], edx
	mov	eax, DWORD PTR [eax+12]
	mov	DWORD PTR [esi+428], eax

; 45   : 	this->m_isConnected	= false;

	mov	BYTE PTR [esi+432], 0

; 46   : }

	mov	eax, esi
	pop	esi
	ret	8
??0ncSocketTCP@@QAE@AAUsockaddr_in@@H@Z ENDP		; ncSocketTCP::ncSocketTCP
_TEXT	ENDS
PUBLIC	??0ncSocketTCP@@QAE@PBDGH@Z			; ncSocketTCP::ncSocketTCP
; Function compile flags: /Ogtpy
;	COMDAT ??0ncSocketTCP@@QAE@PBDGH@Z
_TEXT	SEGMENT
_ip$ = 8						; size = 4
_port$ = 12						; size = 2
_mode$ = 16						; size = 4
??0ncSocketTCP@@QAE@PBDGH@Z PROC			; ncSocketTCP::ncSocketTCP, COMDAT
; _this$ = ecx

; 49   : {

	mov	eax, DWORD PTR _mode$[esp-4]
	push	esi
	mov	esi, ecx
	lea	ecx, DWORD PTR [esi+4]
	push	ecx
	push	514					; 00000202H
	mov	DWORD PTR [esi], OFFSET ??_7ncSocketBase@@6B@
	mov	DWORD PTR [esi+408], eax
	mov	DWORD PTR [esi+412], 0
	call	DWORD PTR __imp__WSAStartup@8

; 50   : 	this->CreateSocket();

	cmp	DWORD PTR [esi+412], 0
	mov	WORD PTR [esi+416], 2
	mov	DWORD PTR [esi+404], -1
	mov	DWORD PTR [esi], OFFSET ??_7ncSocketTCP@@6B@
	jne	SHORT $LN7@ncSocketTC@2
	push	6
	push	1
	push	2
	call	DWORD PTR __imp__socket@12
	mov	DWORD PTR [esi+412], eax
$LN7@ncSocketTC@2:

; 51   : 	this->m_socketData.sin_addr.s_addr = inet_addr(ip);

	mov	edx, DWORD PTR _ip$[esp]
	push	edx
	call	DWORD PTR __imp__inet_addr@4
	mov	DWORD PTR [esi+420], eax

; 52   : 	this->m_socketData.sin_port = htons(port);

	mov	eax, DWORD PTR _port$[esp]
	push	eax
	call	DWORD PTR __imp__htons@4
	mov	WORD PTR [esi+418], ax

; 53   : }

	mov	eax, esi
	pop	esi
	ret	12					; 0000000cH
??0ncSocketTCP@@QAE@PBDGH@Z ENDP			; ncSocketTCP::ncSocketTCP
_TEXT	ENDS
PUBLIC	??_C@_0BH@DEOEAIBB@?4?4?2NC?5lib?2ncSocket?4cpp?$AA@ ; `string'
PUBLIC	??_C@_00CNPNBAHC@?$AA@				; `string'
PUBLIC	?Accept@ncSocketTCP@@QAEPAV1@H@Z		; ncSocketTCP::Accept
EXTRN	??2@YAPAXI@Z:PROC				; operator new
EXTRN	?m_setOwner@@YAXPBDI0@Z:PROC			; m_setOwner
EXTRN	__imp__accept@12:PROC
EXTRN	__imp__ioctlsocket@12:PROC
;	COMDAT ??_C@_0BH@DEOEAIBB@?4?4?2NC?5lib?2ncSocket?4cpp?$AA@
; File d:\source code\nc lib\ncsocket.h
CONST	SEGMENT
??_C@_0BH@DEOEAIBB@?4?4?2NC?5lib?2ncSocket?4cpp?$AA@ DB '..\NC lib\ncSock'
	DB	'et.cpp', 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_00CNPNBAHC@?$AA@
CONST	SEGMENT
??_C@_00CNPNBAHC@?$AA@ DB 00H				; `string'
; Function compile flags: /Ogtpy
; File d:\source code\nc lib\ncsocket.cpp
CONST	ENDS
;	COMDAT ?Accept@ncSocketTCP@@QAEPAV1@H@Z
_TEXT	SEGMENT
_mode$38042 = -24					; size = 4
_dataLen$ = -20						; size = 4
_connData$ = -16					; size = 16
_mode$38060 = 8						; size = 4
_newConnMode$ = 8					; size = 4
?Accept@ncSocketTCP@@QAEPAV1@H@Z PROC			; ncSocketTCP::Accept, COMDAT
; _this$ = ecx

; 63   : {

	sub	esp, 24					; 00000018H
	push	ebx

; 64   : 	if (this->GetMode() & ncSOCKET_NONBLOCKING)

	mov	ebx, DWORD PTR __imp__ioctlsocket@12
	push	ebp
	push	esi
	mov	esi, ecx
	test	BYTE PTR [esi+408], 2
	je	SHORT $LN3@Accept

; 65   : 	{
; 66   : 		unsigned long mode = 1;
; 67   : 		ioctlsocket(this->m_socket, FIONBIO, &mode);

	mov	ecx, DWORD PTR [esi+412]
	lea	eax, DWORD PTR _mode$38042[esp+36]
	push	eax
	push	-2147195266				; 8004667eH
	push	ecx
	mov	DWORD PTR _mode$38042[esp+48], 1
	call	ebx
$LN3@Accept:

; 68   : 	}
; 69   : 
; 70   : 	int dataLen = sizeof(sockaddr_in);
; 71   : 	sockaddr_in connData;
; 72   : 	SOCKET newConn = accept(this->m_socket, (sockaddr *)&connData, &dataLen);

	mov	ecx, DWORD PTR [esi+412]
	lea	edx, DWORD PTR _dataLen$[esp+36]
	push	edx
	lea	eax, DWORD PTR _connData$[esp+40]
	push	eax
	push	ecx
	mov	DWORD PTR _dataLen$[esp+48], 16		; 00000010H
	call	DWORD PTR __imp__accept@12
	mov	ebp, eax

; 73   : 	if (newConn == INVALID_SOCKET)

	cmp	ebp, -1
	jne	SHORT $LN2@Accept

; 74   : 	{
; 75   : 		this->SetError(WSAGetLastError());

	call	DWORD PTR __imp__WSAGetLastError@0
	mov	DWORD PTR [esi+404], eax
	pop	esi
	pop	ebp

; 76   : 		return NULL;

	xor	eax, eax
	pop	ebx

; 89   : }

	add	esp, 24					; 00000018H
	ret	4
$LN2@Accept:
	push	edi

; 77   : 	}
; 78   : 
; 79   : 	ncSocketTCP *newSocket = new ncSocketTCP(connData, newConnMode);

	push	OFFSET ??_C@_00CNPNBAHC@?$AA@
	push	79					; 0000004fH
	push	OFFSET ??_C@_0BH@DEOEAIBB@?4?4?2NC?5lib?2ncSocket?4cpp?$AA@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	push	436					; 000001b4H
	call	??2@YAPAXI@Z				; operator new
	add	esp, 16					; 00000010H
	test	eax, eax
	je	SHORT $LN6@Accept
	mov	edx, DWORD PTR _newConnMode$[esp+36]
	push	edx
	lea	ecx, DWORD PTR _connData$[esp+44]
	push	ecx
	mov	ecx, eax
	call	??0ncSocketTCP@@QAE@AAUsockaddr_in@@H@Z	; ncSocketTCP::ncSocketTCP
	mov	edi, eax
	jmp	SHORT $LN7@Accept
$LN6@Accept:
	xor	edi, edi
$LN7@Accept:

; 80   : 	newSocket->m_socket = newConn;

	mov	DWORD PTR [edi+412], ebp

; 81   : 	newSocket->m_isConnected = true;

	mov	BYTE PTR [edi+432], 1

; 82   : 
; 83   : 	if (this->GetMode() & ncSOCKET_NONBLOCKING)

	test	BYTE PTR [esi+408], 2
	je	SHORT $LN1@Accept

; 84   : 	{
; 85   : 		unsigned long mode = 0;
; 86   : 		ioctlsocket(this->m_socket, FIONBIO, &mode);

	mov	eax, DWORD PTR [esi+412]
	lea	edx, DWORD PTR _mode$38060[esp+36]
	push	edx
	push	-2147195266				; 8004667eH
	push	eax
	mov	DWORD PTR _mode$38060[esp+48], 0
	call	ebx
$LN1@Accept:

; 87   : 	}
; 88   : 	return newSocket;

	mov	eax, edi
	pop	edi
	pop	esi
	pop	ebp
	pop	ebx

; 89   : }

	add	esp, 24					; 00000018H
	ret	4
?Accept@ncSocketTCP@@QAEPAV1@H@Z ENDP			; ncSocketTCP::Accept
_TEXT	ENDS
PUBLIC	?Recv@ncSocketTCP@@QAEHPAXHH@Z			; ncSocketTCP::Recv
EXTRN	__imp__recv@16:PROC
; Function compile flags: /Ogtpy
;	COMDAT ?Recv@ncSocketTCP@@QAEHPAXHH@Z
_TEXT	SEGMENT
_Timeout$38084 = -268					; size = 8
_readfds$38085 = -260					; size = 260
_buf$ = 8						; size = 4
_length$ = 12						; size = 4
_timeoutMs$ = 16					; size = 4
?Recv@ncSocketTCP@@QAEHPAXHH@Z PROC			; ncSocketTCP::Recv, COMDAT
; _this$ = ecx

; 115  : {

	sub	esp, 268				; 0000010cH
	push	ebx

; 116  : 	if (length <= 0 || !buf || !this->IsConnected())

	mov	ebx, DWORD PTR _length$[esp+268]
	test	ebx, ebx
	push	esi
	push	edi
	mov	esi, ecx
	jle	$LN7@Recv
	mov	edi, DWORD PTR _buf$[esp+276]
	test	edi, edi
	je	$LN7@Recv
	cmp	BYTE PTR [esi+432], 0
	je	$LN7@Recv

; 118  : 
; 119  : 	if (this->GetMode() & ncSOCKET_NONBLOCKING)

	test	BYTE PTR [esi+408], 2
	je	SHORT $LN4@Recv

; 120  : 	{
; 121  : 		struct timeval Timeout;
; 122  : 		fd_set readfds;
; 123  : 		readfds.fd_count = 1;
; 124  : 		readfds.fd_array[0] = this->m_socket;

	mov	eax, DWORD PTR [esi+412]

; 125  : 		Timeout.tv_sec = 0;
; 126  : 		Timeout.tv_usec = timeoutMs;

	mov	ecx, DWORD PTR _timeoutMs$[esp+276]

; 127  : 		int nSel = select(1, &readfds, NULL, NULL, &Timeout);

	lea	edx, DWORD PTR _Timeout$38084[esp+280]
	push	edx
	push	0
	mov	DWORD PTR _readfds$38085[esp+292], eax
	push	0
	lea	eax, DWORD PTR _readfds$38085[esp+292]
	push	eax
	push	1
	mov	DWORD PTR _readfds$38085[esp+300], 1
	mov	DWORD PTR _Timeout$38084[esp+300], 0
	mov	DWORD PTR _Timeout$38084[esp+304], ecx
	call	DWORD PTR __imp__select@20

; 128  : 		switch (nSel)

	cmp	eax, -1
	je	SHORT $LN3@Recv
	test	eax, eax
	jne	SHORT $LN4@Recv
	pop	edi
	pop	esi

; 134  : 
; 135  : 			case 0:
; 136  : 				memset(&buf, 0, 1);
; 137  : 				return 1;

	mov	eax, 1
	pop	ebx

; 145  : }

	add	esp, 268				; 0000010cH
	ret	12					; 0000000cH
$LN3@Recv:

; 129  : 		{
; 130  : 			// Socket error
; 131  : 			case SOCKET_ERROR:
; 132  : 				this->SetError(WSAGetLastError());

	call	DWORD PTR __imp__WSAGetLastError@0
	pop	edi
	mov	DWORD PTR [esi+404], eax
	pop	esi

; 133  : 				return -1;

	or	eax, -1
	pop	ebx

; 145  : }

	add	esp, 268				; 0000010cH
	ret	12					; 0000000cH
$LN4@Recv:

; 138  : 		}
; 139  : 	}
; 140  : 
; 141  : 	int len = recv(this->m_socket, (char *)buf, length, 0);

	mov	ecx, DWORD PTR [esi+412]
	push	0
	push	ebx
	push	edi
	push	ecx
	call	DWORD PTR __imp__recv@16
	mov	edi, eax

; 142  : 	if (len == SOCKET_ERROR)

	cmp	edi, -1
	jne	SHORT $LN17@Recv

; 143  : 		this->SetError(WSAGetLastError());

	call	DWORD PTR __imp__WSAGetLastError@0
	mov	DWORD PTR [esi+404], eax
$LN17@Recv:

; 144  : 	return len;

	mov	eax, edi
	pop	edi
	pop	esi
	pop	ebx

; 145  : }

	add	esp, 268				; 0000010cH
	ret	12					; 0000000cH
$LN7@Recv:
	pop	edi
	pop	esi

; 117  : 		return 0;

	xor	eax, eax
	pop	ebx

; 145  : }

	add	esp, 268				; 0000010cH
	ret	12					; 0000000cH
?Recv@ncSocketTCP@@QAEHPAXHH@Z ENDP			; ncSocketTCP::Recv
_TEXT	ENDS
PUBLIC	?Send@ncSocketTCP@@QAE_NPBXH@Z			; ncSocketTCP::Send
EXTRN	__imp__send@16:PROC
; Function compile flags: /Ogtpy
;	COMDAT ?Send@ncSocketTCP@@QAE_NPBXH@Z
_TEXT	SEGMENT
_data$ = 8						; size = 4
_length$ = 12						; size = 4
?Send@ncSocketTCP@@QAE_NPBXH@Z PROC			; ncSocketTCP::Send, COMDAT
; _this$ = ecx

; 147  : {

	push	esi
	mov	esi, ecx

; 148  : 	if (this->IsConnected())

	cmp	BYTE PTR [esi+432], 0
	je	SHORT $LN2@Send

; 149  : 	{
; 150  : 		if (send(this->m_socket, (const char *)data, length, 0) == SOCKET_ERROR)

	mov	eax, DWORD PTR _length$[esp]
	mov	ecx, DWORD PTR _data$[esp]
	mov	edx, DWORD PTR [esi+412]
	push	0
	push	eax
	push	ecx
	push	edx
	call	DWORD PTR __imp__send@16
	cmp	eax, -1
	jne	SHORT $LN1@Send

; 151  : 		{
; 152  : 			this->SetError(WSAGetLastError());

	call	DWORD PTR __imp__WSAGetLastError@0
	mov	DWORD PTR [esi+404], eax
$LN2@Send:

; 156  : 	}
; 157  : 	return false;

	xor	al, al
	pop	esi

; 158  : }

	ret	8
$LN1@Send:

; 153  : 			return false;
; 154  : 		}
; 155  : 		return true;

	mov	al, 1
	pop	esi

; 158  : }

	ret	8
?Send@ncSocketTCP@@QAE_NPBXH@Z ENDP			; ncSocketTCP::Send
_TEXT	ENDS
PUBLIC	??_7ncSocketUDP@@6B@				; ncSocketUDP::`vftable'
PUBLIC	??0ncSocketUDP@@QAE@PBDGH@Z			; ncSocketUDP::ncSocketUDP
PUBLIC	??_R4ncSocketUDP@@6B@				; ncSocketUDP::`RTTI Complete Object Locator'
PUBLIC	??_R0?AVncSocketUDP@@@8				; ncSocketUDP `RTTI Type Descriptor'
PUBLIC	??_R3ncSocketUDP@@8				; ncSocketUDP::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2ncSocketUDP@@8				; ncSocketUDP::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@ncSocketUDP@@8			; ncSocketUDP::`RTTI Base Class Descriptor at (0,-1,0,64)'
EXTRN	??_EncSocketUDP@@UAEPAXI@Z:PROC			; ncSocketUDP::`vector deleting destructor'
;	COMDAT ??_R1A@?0A@EA@ncSocketUDP@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@ncSocketUDP@@8 DD FLAT:??_R0?AVncSocketUDP@@@8 ; ncSocketUDP::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3ncSocketUDP@@8
rdata$r	ENDS
;	COMDAT ??_R2ncSocketUDP@@8
rdata$r	SEGMENT
??_R2ncSocketUDP@@8 DD FLAT:??_R1A@?0A@EA@ncSocketUDP@@8 ; ncSocketUDP::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@ncSocketBase@@8
rdata$r	ENDS
;	COMDAT ??_R3ncSocketUDP@@8
rdata$r	SEGMENT
??_R3ncSocketUDP@@8 DD 00H				; ncSocketUDP::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2ncSocketUDP@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVncSocketUDP@@@8
_DATA	SEGMENT
??_R0?AVncSocketUDP@@@8 DD FLAT:??_7type_info@@6B@	; ncSocketUDP `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVncSocketUDP@@', 00H
_DATA	ENDS
;	COMDAT ??_R4ncSocketUDP@@6B@
rdata$r	SEGMENT
??_R4ncSocketUDP@@6B@ DD 00H				; ncSocketUDP::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVncSocketUDP@@@8
	DD	FLAT:??_R3ncSocketUDP@@8
rdata$r	ENDS
;	COMDAT ??_7ncSocketUDP@@6B@
CONST	SEGMENT
??_7ncSocketUDP@@6B@ DD FLAT:??_R4ncSocketUDP@@6B@	; ncSocketUDP::`vftable'
	DD	FLAT:??_EncSocketUDP@@UAEPAXI@Z
	DD	FLAT:?CreateSocket@ncSocketUDP@@UAE_NXZ
	DD	FLAT:?Close@ncSocketBase@@UAEXXZ
	DD	FLAT:?GetIP@ncSocketBase@@UAEPBDXZ
	DD	FLAT:?SetIP@ncSocketBase@@UAEXPBD@Z
	DD	FLAT:?GetPort@ncSocketBase@@UAEGXZ
	DD	FLAT:?SetPort@ncSocketBase@@UAEXG@Z
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ??0ncSocketUDP@@QAE@PBDGH@Z
_TEXT	SEGMENT
_ip$ = 8						; size = 4
_port$ = 12						; size = 2
_mode$ = 16						; size = 4
??0ncSocketUDP@@QAE@PBDGH@Z PROC			; ncSocketUDP::ncSocketUDP, COMDAT
; _this$ = ecx

; 170  : {

	mov	eax, DWORD PTR _mode$[esp-4]
	push	esi
	mov	esi, ecx
	lea	ecx, DWORD PTR [esi+4]
	push	ecx
	push	514					; 00000202H
	mov	DWORD PTR [esi], OFFSET ??_7ncSocketBase@@6B@
	mov	DWORD PTR [esi+408], eax
	mov	DWORD PTR [esi+412], 0
	call	DWORD PTR __imp__WSAStartup@8

; 171  : 	this->CreateSocket();

	cmp	DWORD PTR [esi+412], 0
	mov	WORD PTR [esi+416], 2
	mov	DWORD PTR [esi+404], -1
	mov	DWORD PTR [esi], OFFSET ??_7ncSocketUDP@@6B@
	jne	SHORT $LN7@ncSocketUD
	push	17					; 00000011H
	push	2
	push	2
	call	DWORD PTR __imp__socket@12
	mov	DWORD PTR [esi+412], eax
$LN7@ncSocketUD:

; 172  : 	this->m_socketData.sin_addr.s_addr = inet_addr(ip);

	mov	edx, DWORD PTR _ip$[esp]
	push	edx
	call	DWORD PTR __imp__inet_addr@4
	mov	DWORD PTR [esi+420], eax

; 173  : 	this->m_socketData.sin_port = htons(port);

	mov	eax, DWORD PTR _port$[esp]
	push	eax
	call	DWORD PTR __imp__htons@4
	mov	WORD PTR [esi+418], ax

; 174  : }

	mov	eax, esi
	pop	esi
	ret	12					; 0000000cH
??0ncSocketUDP@@QAE@PBDGH@Z ENDP			; ncSocketUDP::ncSocketUDP
_TEXT	ENDS
PUBLIC	?Sendto@ncSocketUDP@@QAE_NPBDGPBXH@Z		; ncSocketUDP::Sendto
; Function compile flags: /Ogtpy
;	COMDAT ?Sendto@ncSocketUDP@@QAE_NPBDGPBXH@Z
_TEXT	SEGMENT
_target$ = -16						; size = 16
_ip$ = 8						; size = 4
_port$ = 12						; size = 2
_data$ = 16						; size = 4
_length$ = 20						; size = 4
?Sendto@ncSocketUDP@@QAE_NPBDGPBXH@Z PROC		; ncSocketUDP::Sendto, COMDAT
; _this$ = ecx

; 221  : {

	sub	esp, 16					; 00000010H

; 222  : 	sockaddr_in target;
; 223  : 	target.sin_family = AF_INET;
; 224  : 	target.sin_addr.s_addr = inet_addr(ip);

	mov	eax, DWORD PTR _ip$[esp+12]
	push	esi
	push	eax
	mov	esi, ecx
	mov	WORD PTR _target$[esp+24], 2
	call	DWORD PTR __imp__inet_addr@4

; 225  : 	target.sin_port = htons(port);

	mov	ecx, DWORD PTR _port$[esp+16]
	push	ecx
	mov	DWORD PTR _target$[esp+28], eax
	call	DWORD PTR __imp__htons@4

; 226  : 	return this->Sendto(target, data, length);

	mov	ecx, DWORD PTR _data$[esp+16]
	push	16					; 00000010H
	lea	edx, DWORD PTR _target$[esp+24]
	push	edx
	mov	edx, DWORD PTR [esi+412]
	push	0
	mov	WORD PTR _target$[esp+34], ax
	mov	eax, DWORD PTR _length$[esp+28]
	push	eax
	push	ecx
	push	edx
	call	DWORD PTR __imp__sendto@24
	cmp	eax, -1
	jne	SHORT $LN3@Sendto@2
	call	DWORD PTR __imp__WSAGetLastError@0
	mov	DWORD PTR [esi+404], eax
	xor	al, al
	pop	esi

; 227  : }

	add	esp, 16					; 00000010H
	ret	16					; 00000010H

; 226  : 	return this->Sendto(target, data, length);

$LN3@Sendto@2:
	mov	al, 1
	pop	esi

; 227  : }

	add	esp, 16					; 00000010H
	ret	16					; 00000010H
?Sendto@ncSocketUDP@@QAE_NPBDGPBXH@Z ENDP		; ncSocketUDP::Sendto
_TEXT	ENDS
PUBLIC	?deallocate@?$_DebugHeapAllocator@D@std@@QAEXPADI@Z ; std::_DebugHeapAllocator<char>::deallocate
; Function compile flags: /Ogtpy
; File c:\program files\microsoft visual studio 8\vc\include\xdebug
;	COMDAT ?deallocate@?$_DebugHeapAllocator@D@std@@QAEXPADI@Z
_TEXT	SEGMENT
__Ptr$ = 8						; size = 4
___formal$ = 12						; size = 4
?deallocate@?$_DebugHeapAllocator@D@std@@QAEXPADI@Z PROC ; std::_DebugHeapAllocator<char>::deallocate, COMDAT
; _this$ = ecx

; 102  : 		_DELETE_CRT_VEC(_Ptr);

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

; 103  : 		}

	ret	8
?deallocate@?$_DebugHeapAllocator@D@std@@QAEXPADI@Z ENDP ; std::_DebugHeapAllocator<char>::deallocate
_TEXT	ENDS
PUBLIC	??0?$_DebugHeapAllocator@D@std@@QAE@XZ		; std::_DebugHeapAllocator<char>::_DebugHeapAllocator<char>
; Function compile flags: /Ogtpy
;	COMDAT ??0?$_DebugHeapAllocator@D@std@@QAE@XZ
_TEXT	SEGMENT
??0?$_DebugHeapAllocator@D@std@@QAE@XZ PROC		; std::_DebugHeapAllocator<char>::_DebugHeapAllocator<char>, COMDAT
; _this$ = ecx
	mov	eax, ecx
	ret	0
??0?$_DebugHeapAllocator@D@std@@QAE@XZ ENDP		; std::_DebugHeapAllocator<char>::_DebugHeapAllocator<char>
_TEXT	ENDS
PUBLIC	??0?$_DebugHeapAllocator@D@std@@QAE@ABV01@@Z	; std::_DebugHeapAllocator<char>::_DebugHeapAllocator<char>
; Function compile flags: /Ogtpy
;	COMDAT ??0?$_DebugHeapAllocator@D@std@@QAE@ABV01@@Z
_TEXT	SEGMENT
___that$ = 8						; size = 4
??0?$_DebugHeapAllocator@D@std@@QAE@ABV01@@Z PROC	; std::_DebugHeapAllocator<char>::_DebugHeapAllocator<char>, COMDAT
; _this$ = ecx
	mov	eax, ecx
	ret	4
??0?$_DebugHeapAllocator@D@std@@QAE@ABV01@@Z ENDP	; std::_DebugHeapAllocator<char>::_DebugHeapAllocator<char>
_TEXT	ENDS
PUBLIC	??1ncSocketTCP@@UAE@XZ				; ncSocketTCP::~ncSocketTCP
; Function compile flags: /Ogtpy
;	COMDAT ??1ncSocketTCP@@UAE@XZ
_TEXT	SEGMENT
??1ncSocketTCP@@UAE@XZ PROC				; ncSocketTCP::~ncSocketTCP, COMDAT
; _this$ = ecx
	push	esi
	mov	esi, ecx
	mov	eax, DWORD PTR [esi+412]
	test	eax, eax
	mov	DWORD PTR [esi], OFFSET ??_7ncSocketBase@@6B@
	je	SHORT $LN6@ncSocketTC@3
	push	2
	push	eax
	call	DWORD PTR __imp__shutdown@8
	mov	eax, DWORD PTR [esi+412]
	push	eax
	call	DWORD PTR __imp__closesocket@4
	mov	DWORD PTR [esi+412], 0
	pop	esi
	jmp	DWORD PTR __imp__WSACleanup@0
$LN6@ncSocketTC@3:
	pop	esi
	ret	0
??1ncSocketTCP@@UAE@XZ ENDP				; ncSocketTCP::~ncSocketTCP
_TEXT	ENDS
PUBLIC	??1ncSocketUDP@@UAE@XZ				; ncSocketUDP::~ncSocketUDP
; Function compile flags: /Ogtpy
;	COMDAT ??1ncSocketUDP@@UAE@XZ
_TEXT	SEGMENT
??1ncSocketUDP@@UAE@XZ PROC				; ncSocketUDP::~ncSocketUDP, COMDAT
; _this$ = ecx
	push	esi
	mov	esi, ecx
	mov	eax, DWORD PTR [esi+412]
	test	eax, eax
	mov	DWORD PTR [esi], OFFSET ??_7ncSocketBase@@6B@
	je	SHORT $LN6@ncSocketUD@2
	push	2
	push	eax
	call	DWORD PTR __imp__shutdown@8
	mov	eax, DWORD PTR [esi+412]
	push	eax
	call	DWORD PTR __imp__closesocket@4
	mov	DWORD PTR [esi+412], 0
	pop	esi
	jmp	DWORD PTR __imp__WSACleanup@0
$LN6@ncSocketUD@2:
	pop	esi
	ret	0
??1ncSocketUDP@@UAE@XZ ENDP				; ncSocketUDP::~ncSocketUDP
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ??_GncSocketBase@@UAEPAXI@Z
_TEXT	SEGMENT
___flags$ = 8						; size = 4
??_GncSocketBase@@UAEPAXI@Z PROC			; ncSocketBase::`scalar deleting destructor', COMDAT
; _this$ = ecx
	push	esi
	mov	esi, ecx
	mov	eax, DWORD PTR [esi+412]
	test	eax, eax
	mov	DWORD PTR [esi], OFFSET ??_7ncSocketBase@@6B@
	je	SHORT $LN6@scalar@2
	push	2
	push	eax
	call	DWORD PTR __imp__shutdown@8
	mov	eax, DWORD PTR [esi+412]
	push	eax
	call	DWORD PTR __imp__closesocket@4
	mov	DWORD PTR [esi+412], 0
	call	DWORD PTR __imp__WSACleanup@0
$LN6@scalar@2:
	test	BYTE PTR ___flags$[esp], 1
	je	SHORT $LN9@scalar@2
	push	esi
	call	??3@YAXPAX@Z				; operator delete
	add	esp, 4
$LN9@scalar@2:
	mov	eax, esi
	pop	esi
	ret	4
??_GncSocketBase@@UAEPAXI@Z ENDP			; ncSocketBase::`scalar deleting destructor'
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ??_GncSocketTCP@@UAEPAXI@Z
_TEXT	SEGMENT
___flags$ = 8						; size = 4
??_GncSocketTCP@@UAEPAXI@Z PROC				; ncSocketTCP::`scalar deleting destructor', COMDAT
; _this$ = ecx
	push	esi
	mov	esi, ecx
	mov	eax, DWORD PTR [esi+412]
	test	eax, eax
	mov	DWORD PTR [esi], OFFSET ??_7ncSocketBase@@6B@
	je	SHORT $LN8@scalar@3
	push	2
	push	eax
	call	DWORD PTR __imp__shutdown@8
	mov	eax, DWORD PTR [esi+412]
	push	eax
	call	DWORD PTR __imp__closesocket@4
	mov	DWORD PTR [esi+412], 0
	call	DWORD PTR __imp__WSACleanup@0
$LN8@scalar@3:
	test	BYTE PTR ___flags$[esp], 1
	je	SHORT $LN11@scalar@3
	push	esi
	call	??3@YAXPAX@Z				; operator delete
	add	esp, 4
$LN11@scalar@3:
	mov	eax, esi
	pop	esi
	ret	4
??_GncSocketTCP@@UAEPAXI@Z ENDP				; ncSocketTCP::`scalar deleting destructor'
; Function compile flags: /Ogtpy
_TEXT	ENDS
;	COMDAT ??_GncSocketUDP@@UAEPAXI@Z
_TEXT	SEGMENT
___flags$ = 8						; size = 4
??_GncSocketUDP@@UAEPAXI@Z PROC				; ncSocketUDP::`scalar deleting destructor', COMDAT
; _this$ = ecx
	push	esi
	mov	esi, ecx
	mov	eax, DWORD PTR [esi+412]
	test	eax, eax
	mov	DWORD PTR [esi], OFFSET ??_7ncSocketBase@@6B@
	je	SHORT $LN8@scalar@4
	push	2
	push	eax
	call	DWORD PTR __imp__shutdown@8
	mov	eax, DWORD PTR [esi+412]
	push	eax
	call	DWORD PTR __imp__closesocket@4
	mov	DWORD PTR [esi+412], 0
	call	DWORD PTR __imp__WSACleanup@0
$LN8@scalar@4:
	test	BYTE PTR ___flags$[esp], 1
	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
??_GncSocketUDP@@UAEPAXI@Z ENDP				; ncSocketUDP::`scalar deleting destructor'
_TEXT	ENDS
END
