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

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

INCLUDELIB LIBCMTD
INCLUDELIB OLDNAMES

PUBLIC	??_C@_0P@GHFPNOJB@bad?5allocation?$AA@		; `string'
PUBLIC	?ServerKillConnection@@3PAXA			; ServerKillConnection
PUBLIC	?Get_Remote_Host@@3P6APADH@ZA			; Get_Remote_Host
PUBLIC	?PacketManager@@3PAXA				; PacketManager
PUBLIC	?ServerConnection@@3PAPADA			; ServerConnection
PUBLIC	?Get_Address@@3P6APAUsockaddr_in@@XZA		; Get_Address
PUBLIC	?Bandwidth_Out@@3P6AHPAUsockaddr_in@@@ZA	; Bandwidth_Out
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
_BSS	SEGMENT
?ServerKillConnection@@3PAXA DD 01H DUP (?)		; ServerKillConnection
?Get_Remote_Host@@3P6APADH@ZA DD 01H DUP (?)		; Get_Remote_Host
?PacketManager@@3PAXA DD 01H DUP (?)			; PacketManager
?ServerConnection@@3PAPADA DD 01H DUP (?)		; ServerConnection
?Get_Address@@3P6APAUsockaddr_in@@XZA DD 01H DUP (?)	; Get_Address
?Bandwidth_Out@@3P6AHPAUsockaddr_in@@@ZA DD 01H DUP (?)	; Bandwidth_Out
_BSS	ENDS
;	COMDAT ?end@?$_Iosb@H@std@@2W4_Seekdir@12@B
CONST	SEGMENT
?end@?$_Iosb@H@std@@2W4_Seekdir@12@B DD 02H		; std::_Iosb<int>::end
CONST	ENDS
;	COMDAT ?cur@?$_Iosb@H@std@@2W4_Seekdir@12@B
CONST	SEGMENT
?cur@?$_Iosb@H@std@@2W4_Seekdir@12@B DD 01H		; std::_Iosb<int>::cur
CONST	ENDS
;	COMDAT ?beg@?$_Iosb@H@std@@2W4_Seekdir@12@B
CONST	SEGMENT
?beg@?$_Iosb@H@std@@2W4_Seekdir@12@B DD 00H		; std::_Iosb<int>::beg
CONST	ENDS
;	COMDAT ?binary@?$_Iosb@H@std@@2W4_Openmode@12@B
CONST	SEGMENT
?binary@?$_Iosb@H@std@@2W4_Openmode@12@B DD 020H	; std::_Iosb<int>::binary
CONST	ENDS
;	COMDAT ?_Noreplace@?$_Iosb@H@std@@2W4_Openmode@12@B
CONST	SEGMENT
?_Noreplace@?$_Iosb@H@std@@2W4_Openmode@12@B DD 080H	; std::_Iosb<int>::_Noreplace
CONST	ENDS
;	COMDAT ?_Nocreate@?$_Iosb@H@std@@2W4_Openmode@12@B
CONST	SEGMENT
?_Nocreate@?$_Iosb@H@std@@2W4_Openmode@12@B DD 040H	; std::_Iosb<int>::_Nocreate
CONST	ENDS
;	COMDAT ?trunc@?$_Iosb@H@std@@2W4_Openmode@12@B
CONST	SEGMENT
?trunc@?$_Iosb@H@std@@2W4_Openmode@12@B DD 010H		; std::_Iosb<int>::trunc
CONST	ENDS
;	COMDAT ?app@?$_Iosb@H@std@@2W4_Openmode@12@B
CONST	SEGMENT
?app@?$_Iosb@H@std@@2W4_Openmode@12@B DD 08H		; std::_Iosb<int>::app
CONST	ENDS
;	COMDAT ?ate@?$_Iosb@H@std@@2W4_Openmode@12@B
CONST	SEGMENT
?ate@?$_Iosb@H@std@@2W4_Openmode@12@B DD 04H		; std::_Iosb<int>::ate
CONST	ENDS
;	COMDAT ?out@?$_Iosb@H@std@@2W4_Openmode@12@B
CONST	SEGMENT
?out@?$_Iosb@H@std@@2W4_Openmode@12@B DD 02H		; std::_Iosb<int>::out
CONST	ENDS
;	COMDAT ?in@?$_Iosb@H@std@@2W4_Openmode@12@B
CONST	SEGMENT
?in@?$_Iosb@H@std@@2W4_Openmode@12@B DD 01H		; std::_Iosb<int>::in
CONST	ENDS
;	COMDAT ?_Hardfail@?$_Iosb@H@std@@2W4_Iostate@12@B
CONST	SEGMENT
?_Hardfail@?$_Iosb@H@std@@2W4_Iostate@12@B DD 010H	; std::_Iosb<int>::_Hardfail
CONST	ENDS
;	COMDAT ?badbit@?$_Iosb@H@std@@2W4_Iostate@12@B
CONST	SEGMENT
?badbit@?$_Iosb@H@std@@2W4_Iostate@12@B DD 04H		; std::_Iosb<int>::badbit
CONST	ENDS
;	COMDAT ?failbit@?$_Iosb@H@std@@2W4_Iostate@12@B
CONST	SEGMENT
?failbit@?$_Iosb@H@std@@2W4_Iostate@12@B DD 02H		; std::_Iosb<int>::failbit
CONST	ENDS
;	COMDAT ?eofbit@?$_Iosb@H@std@@2W4_Iostate@12@B
CONST	SEGMENT
?eofbit@?$_Iosb@H@std@@2W4_Iostate@12@B DD 01H		; std::_Iosb<int>::eofbit
CONST	ENDS
;	COMDAT ?goodbit@?$_Iosb@H@std@@2W4_Iostate@12@B
CONST	SEGMENT
?goodbit@?$_Iosb@H@std@@2W4_Iostate@12@B DD 00H		; std::_Iosb<int>::goodbit
CONST	ENDS
;	COMDAT ?floatfield@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?floatfield@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 03000H	; std::_Iosb<int>::floatfield
CONST	ENDS
;	COMDAT ?basefield@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?basefield@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 0e00H	; std::_Iosb<int>::basefield
CONST	ENDS
;	COMDAT ?adjustfield@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?adjustfield@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 01c0H	; std::_Iosb<int>::adjustfield
CONST	ENDS
;	COMDAT ?_Stdio@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?_Stdio@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 08000H	; std::_Iosb<int>::_Stdio
CONST	ENDS
;	COMDAT ?boolalpha@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?boolalpha@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 04000H	; std::_Iosb<int>::boolalpha
CONST	ENDS
;	COMDAT ?fixed@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?fixed@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 02000H	; std::_Iosb<int>::fixed
CONST	ENDS
;	COMDAT ?scientific@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?scientific@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 01000H	; std::_Iosb<int>::scientific
CONST	ENDS
;	COMDAT ?hex@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?hex@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 0800H		; std::_Iosb<int>::hex
CONST	ENDS
;	COMDAT ?oct@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?oct@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 0400H		; std::_Iosb<int>::oct
CONST	ENDS
;	COMDAT ?dec@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?dec@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 0200H		; std::_Iosb<int>::dec
CONST	ENDS
;	COMDAT ?internal@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?internal@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 0100H	; std::_Iosb<int>::internal
CONST	ENDS
;	COMDAT ?right@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?right@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 080H		; std::_Iosb<int>::right
CONST	ENDS
;	COMDAT ?left@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?left@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 040H		; std::_Iosb<int>::left
CONST	ENDS
;	COMDAT ?showpos@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?showpos@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 020H	; std::_Iosb<int>::showpos
CONST	ENDS
;	COMDAT ?showpoint@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?showpoint@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 010H	; std::_Iosb<int>::showpoint
CONST	ENDS
;	COMDAT ?showbase@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?showbase@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 08H	; std::_Iosb<int>::showbase
CONST	ENDS
;	COMDAT ?uppercase@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?uppercase@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 04H	; std::_Iosb<int>::uppercase
CONST	ENDS
;	COMDAT ?unitbuf@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?unitbuf@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 02H	; std::_Iosb<int>::unitbuf
CONST	ENDS
;	COMDAT ?skipws@?$_Iosb@H@std@@2W4_Fmtflags@12@B
CONST	SEGMENT
?skipws@?$_Iosb@H@std@@2W4_Fmtflags@12@B DD 01H		; std::_Iosb<int>::skipws
CONST	ENDS
;	COMDAT ?table_size@?$ctype@D@std@@2IB
CONST	SEGMENT
?table_size@?$ctype@D@std@@2IB DD 0100H			; std::ctype<char>::table_size
CONST	ENDS
;	COMDAT ?none@?$_Locbase@H@std@@2HB
CONST	SEGMENT
?none@?$_Locbase@H@std@@2HB DD 00H			; std::_Locbase<int>::none
CONST	ENDS
;	COMDAT ?all@?$_Locbase@H@std@@2HB
CONST	SEGMENT
?all@?$_Locbase@H@std@@2HB DD 03fH			; std::_Locbase<int>::all
CONST	ENDS
;	COMDAT ?messages@?$_Locbase@H@std@@2HB
CONST	SEGMENT
?messages@?$_Locbase@H@std@@2HB DD 020H			; std::_Locbase<int>::messages
CONST	ENDS
;	COMDAT ?time@?$_Locbase@H@std@@2HB
CONST	SEGMENT
?time@?$_Locbase@H@std@@2HB DD 010H			; std::_Locbase<int>::time
CONST	ENDS
;	COMDAT ?numeric@?$_Locbase@H@std@@2HB
CONST	SEGMENT
?numeric@?$_Locbase@H@std@@2HB DD 08H			; std::_Locbase<int>::numeric
CONST	ENDS
;	COMDAT ?monetary@?$_Locbase@H@std@@2HB
CONST	SEGMENT
?monetary@?$_Locbase@H@std@@2HB DD 04H			; std::_Locbase<int>::monetary
CONST	ENDS
;	COMDAT ?ctype@?$_Locbase@H@std@@2HB
CONST	SEGMENT
?ctype@?$_Locbase@H@std@@2HB DD 02H			; std::_Locbase<int>::ctype
CONST	ENDS
;	COMDAT ?collate@?$_Locbase@H@std@@2HB
CONST	SEGMENT
?collate@?$_Locbase@H@std@@2HB DD 01H			; std::_Locbase<int>::collate
CONST	ENDS
_DATA	SEGMENT
__bad_alloc_Message DD FLAT:??_C@_0P@GHFPNOJB@bad?5allocation?$AA@
_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	?Destroy_Connection@@YAXH@Z			; Destroy_Connection
; Function compile flags: /Odtpy
; File d:\source code\stgm\engine_net.cpp
;	COMDAT ?Destroy_Connection@@YAXH@Z
_TEXT	SEGMENT
_PlayerID$ = 8						; size = 4
?Destroy_Connection@@YAXH@Z PROC			; Destroy_Connection, COMDAT

; 42   : IMPLEMENT_THUNK(ServerKillConnection)

	mov	eax, DWORD PTR ?ServerKillConnection@@3PAXA ; ServerKillConnection
	jmp	eax
?Destroy_Connection@@YAXH@Z ENDP			; Destroy_Connection
_TEXT	ENDS
PUBLIC	?InitEngineNet@@YAXI@Z				; InitEngineNet
; Function compile flags: /Ogtpy
;	COMDAT ?InitEngineNet@@YAXI@Z
_TEXT	SEGMENT
_exe$ = 8						; size = 4
?InitEngineNet@@YAXI@Z PROC				; InitEngineNet, COMDAT

; 46   : 	switch(exe)

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

; 47   : 	{
; 48   : 		case 0: //game.exe
; 49   : 			PacketManager = (void *)0x00854708;

	mov	DWORD PTR ?PacketManager@@3PAXA, 8734472 ; PacketManager, 00854708H

; 50   : 			Bandwidth_Out = (BandwidthOut)0x0061D310;

	mov	DWORD PTR ?Bandwidth_Out@@3P6AHPAUsockaddr_in@@@ZA, 6411024 ; Bandwidth_Out, 0061d310H

; 51   : 			Get_Address = (GetAddress)0x0061DAF0;

	mov	DWORD PTR ?Get_Address@@3P6APAUsockaddr_in@@XZA, 6413040 ; Get_Address, 0061daf0H

; 52   : 			Get_Remote_Host = (GetRemoteHost)0x0061A840;

	mov	DWORD PTR ?Get_Remote_Host@@3P6APADH@ZA, 6400064 ; Get_Remote_Host, 0061a840H

; 53   : 			ServerConnection = (char **)0x00820D9C;

	mov	DWORD PTR ?ServerConnection@@3PAPADA, 8523164 ; ServerConnection, 00820d9cH

; 54   : 			ServerKillConnection = (void *)0x00462190;

	mov	DWORD PTR ?ServerKillConnection@@3PAXA, 4596112 ; ServerKillConnection, 00462190H

; 87   : 			break;
; 88   : 	}
; 89   : }

	ret	0
$LN4@InitEngine:

; 55   : 			break;
; 56   : 		case 1: //server.dat
; 57   : 			PacketManager = (void *)0x008538F0;

	mov	DWORD PTR ?PacketManager@@3PAXA, 8730864 ; PacketManager, 008538f0H

; 58   : 			Bandwidth_Out = (BandwidthOut)0x0061CBB0;

	mov	DWORD PTR ?Bandwidth_Out@@3P6AHPAUsockaddr_in@@@ZA, 6409136 ; Bandwidth_Out, 0061cbb0H

; 59   : 			Get_Address = (GetAddress)0x0061D390;

	mov	DWORD PTR ?Get_Address@@3P6APAUsockaddr_in@@XZA, 6411152 ; Get_Address, 0061d390H

; 60   : 			Get_Remote_Host = (GetRemoteHost)0x0061A0E0;

	mov	DWORD PTR ?Get_Remote_Host@@3P6APADH@ZA, 6398176 ; Get_Remote_Host, 0061a0e0H

; 61   : 			ServerConnection = (char **)0x0081FF84;

	mov	DWORD PTR ?ServerConnection@@3PAPADA, 8519556 ; ServerConnection, 0081ff84H

; 62   : 			ServerKillConnection = (void *)0x00461AC0;

	mov	DWORD PTR ?ServerKillConnection@@3PAXA, 4594368 ; ServerKillConnection, 00461ac0H

; 87   : 			break;
; 88   : 	}
; 89   : }

	ret	0
$LN3@InitEngine:

; 63   : 			break;
; 64   : 		case 2: //RH73
; 65   : 			ServerKillConnection = (void *)0x08094DF0;

	mov	DWORD PTR ?ServerKillConnection@@3PAXA, 134827504 ; ServerKillConnection, 08094df0H

; 66   : 			PacketManager = (void *)0x08BB6420;

	mov	DWORD PTR ?PacketManager@@3PAXA, 146498592 ; PacketManager, 08bb6420H

; 67   : 			Bandwidth_Out = (BandwidthOut)0x08370754;

	mov	DWORD PTR ?Bandwidth_Out@@3P6AHPAUsockaddr_in@@@ZA, 137824084 ; Bandwidth_Out, 08370754H

; 68   : 			Get_Address = (GetAddress)0x08371194;

	mov	DWORD PTR ?Get_Address@@3P6APAUsockaddr_in@@XZA, 137826708 ; Get_Address, 08371194H

; 69   : 			Get_Remote_Host = (GetRemoteHost)0x0836B438;

	mov	DWORD PTR ?Get_Remote_Host@@3P6APADH@ZA, 137802808 ; Get_Remote_Host, 0836b438H

; 70   : 			ServerConnection = (char **)0x086C0EDC;

	mov	DWORD PTR ?ServerConnection@@3PAPADA, 141299420 ; ServerConnection, 086c0edcH

; 87   : 			break;
; 88   : 	}
; 89   : }

	ret	0
$LN2@InitEngine:

; 71   : 			break;
; 72   : 		case 3: //RH8
; 73   : 			ServerKillConnection = (void *)0x08090D84;

	mov	DWORD PTR ?ServerKillConnection@@3PAXA, 134811012 ; ServerKillConnection, 08090d84H

; 74   : 			PacketManager = (void *)0x089D20E0;

	mov	DWORD PTR ?PacketManager@@3PAXA, 144515296 ; PacketManager, 089d20e0H

; 75   : 			Bandwidth_Out = (BandwidthOut)0x083238EA;

	mov	DWORD PTR ?Bandwidth_Out@@3P6AHPAUsockaddr_in@@@ZA, 137509098 ; Bandwidth_Out, 083238eaH

; 76   : 			Get_Address = (GetAddress)0x08324566;

	mov	DWORD PTR ?Get_Address@@3P6APAUsockaddr_in@@XZA, 137512294 ; Get_Address, 08324566H

; 77   : 			Get_Remote_Host = (GetRemoteHost)0x0831E694;

	mov	DWORD PTR ?Get_Remote_Host@@3P6APADH@ZA, 137488020 ; Get_Remote_Host, 0831e694H

; 78   : 			ServerConnection = (char **)0x085E7C2C;

	mov	DWORD PTR ?ServerConnection@@3PAPADA, 140409900 ; ServerConnection, 085e7c2cH

; 87   : 			break;
; 88   : 	}
; 89   : }

	ret	0
$LN1@InitEngine:

; 79   : 			break;
; 80   : 		default:
; 81   : 			ServerKillConnection = (void *)0;

	xor	eax, eax
	mov	DWORD PTR ?ServerKillConnection@@3PAXA, eax ; ServerKillConnection

; 82   : 			PacketManager = (void *)0;

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

; 83   : 			Bandwidth_Out = (BandwidthOut)0;

	mov	DWORD PTR ?Bandwidth_Out@@3P6AHPAUsockaddr_in@@@ZA, eax ; Bandwidth_Out

; 84   : 			Get_Address = (GetAddress)0;

	mov	DWORD PTR ?Get_Address@@3P6APAUsockaddr_in@@XZA, eax ; Get_Address

; 85   : 			Get_Remote_Host = (GetRemoteHost)0;

	mov	DWORD PTR ?Get_Remote_Host@@3P6APADH@ZA, eax ; Get_Remote_Host

; 86   : 			ServerConnection = (char **)0;

	mov	DWORD PTR ?ServerConnection@@3PAPADA, eax ; ServerConnection

; 87   : 			break;
; 88   : 	}
; 89   : }

	ret	0
	npad	3
$LN10@InitEngine:
	DD	$LN5@InitEngine
	DD	$LN4@InitEngine
	DD	$LN3@InitEngine
	DD	$LN2@InitEngine
?InitEngineNet@@YAXI@Z ENDP				; InitEngineNet
_TEXT	ENDS
PUBLIC	??_C@_0M@PCENNPGA@?$CFd?4?$CFd?4?$CFd?4?$CFd?$AA@ ; `string'
PUBLIC	??_C@_0BB@POBPMOED@?4?2engine_net?4cpp?$AA@	; `string'
PUBLIC	??_C@_0P@CIBEDKLK@Get_IP_Address?$AA@		; `string'
PUBLIC	?Get_IP_Address@@YAPBDH@Z			; Get_IP_Address
EXTRN	_sprintf:PROC
EXTRN	??_U@YAPAXI@Z:PROC				; operator new[]
EXTRN	?m_setOwner@@YAXPBDI0@Z:PROC			; m_setOwner
;	COMDAT ??_C@_0M@PCENNPGA@?$CFd?4?$CFd?4?$CFd?4?$CFd?$AA@
CONST	SEGMENT
??_C@_0M@PCENNPGA@?$CFd?4?$CFd?4?$CFd?4?$CFd?$AA@ DB '%d.%d.%d.%d', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BB@POBPMOED@?4?2engine_net?4cpp?$AA@
CONST	SEGMENT
??_C@_0BB@POBPMOED@?4?2engine_net?4cpp?$AA@ DB '.\engine_net.cpp', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0P@CIBEDKLK@Get_IP_Address?$AA@
CONST	SEGMENT
??_C@_0P@CIBEDKLK@Get_IP_Address?$AA@ DB 'Get_IP_Address', 00H ; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?Get_IP_Address@@YAPBDH@Z
_TEXT	SEGMENT
_addr$ = -8						; size = 4
_noaddr$ = -1						; size = 1
_PlayerID$ = 8						; size = 4
?Get_IP_Address@@YAPBDH@Z PROC				; Get_IP_Address, COMDAT

; 92   : {

	push	ebp
	mov	ebp, esp
	sub	esp, 8
	push	esi
	push	edi

; 93   : 	sockaddr_in *addr = 0;

	mov	DWORD PTR _addr$[ebp], 0

; 94   : 	bool noaddr = false;

	mov	BYTE PTR _noaddr$[ebp], 0

; 95   : #ifdef WIN32
; 96   : 	_asm {
; 97   : 		push PlayerID

	push	DWORD PTR _PlayerID$[ebp]

; 98   : 		mov eax,ServerConnection

	mov	eax, DWORD PTR ?ServerConnection@@3PAPADA ; ServerConnection

; 99   : 		mov ecx,[eax]

	mov	ecx, DWORD PTR [eax]

; 100  : 		call Get_Remote_Host

	call	DWORD PTR ?Get_Remote_Host@@3P6APADH@ZA	; Get_Remote_Host

; 101  : 		test eax, eax

	test	eax, eax

; 102  : 		jz loc1

	je	SHORT $loc1$41062

; 103  : 		mov ecx,eax

	mov	ecx, eax

; 104  : 		call Get_Address

	call	DWORD PTR ?Get_Address@@3P6APAUsockaddr_in@@XZA ; Get_Address

; 105  : 		mov addr,eax

	mov	DWORD PTR _addr$[ebp], eax

; 106  : 		jmp loc2

	jmp	SHORT $loc2$41063
$loc1$41062:

; 107  : loc1:
; 108  : 		mov noaddr,1

	mov	BYTE PTR _noaddr$[ebp], 1
$loc2$41063:

; 109  : loc2:
; 110  : 	}
; 111  : #else
; 112  : 	char *RemoteHost = Get_Remote_Host(*ServerConnection,PlayerID);
; 113  : 	if (RemoteHost)
; 114  : 	{
; 115  : 		addr = Get_Address(RemoteHost);
; 116  : 	}
; 117  : 	else
; 118  : 	{
; 119  : 		noaddr = true;
; 120  : 	}
; 121  : #endif
; 122  : 	char *temp;
; 123  : 	temp = new char[40];

	push	OFFSET ??_C@_0P@CIBEDKLK@Get_IP_Address?$AA@
	push	123					; 0000007bH
	push	OFFSET ??_C@_0BB@POBPMOED@?4?2engine_net?4cpp?$AA@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	push	40					; 00000028H
	call	??_U@YAPAXI@Z				; operator new[]
	add	esp, 16					; 00000010H

; 124  : 	int ip1,ip2,ip3,ip4;
; 125  : 	if (!noaddr && addr)

	cmp	BYTE PTR _noaddr$[ebp], 0
	mov	edi, eax
	jne	SHORT $LN2@Get_IP_Add
	mov	ecx, DWORD PTR _addr$[ebp]
	test	ecx, ecx
	je	SHORT $LN2@Get_IP_Add

; 126  : 	{
; 127  : 		ip1 = addr->sin_addr.s_addr&0x000000FF;

	mov	eax, DWORD PTR [ecx+4]

; 128  : 		ip2 = (addr->sin_addr.s_addr&0x0000FF00)>>8;

	movzx	edx, BYTE PTR [ecx+5]

; 129  : 		ip3 = (addr->sin_addr.s_addr&0x00FF0000)>>16;

	movzx	esi, BYTE PTR [ecx+6]

; 130  : 		ip4 = (addr->sin_addr.s_addr&0xFF000000)>>24;

	movzx	ecx, BYTE PTR [ecx+7]
	and	eax, 255				; 000000ffH

; 131  : 	}
; 132  : 	else

	jmp	SHORT $LN1@Get_IP_Add
$LN2@Get_IP_Add:

; 133  : 	{
; 134  : 		ip1 = 0;

	xor	eax, eax

; 135  : 		ip2 = 0;

	xor	edx, edx

; 136  : 		ip3 = 0;

	xor	esi, esi

; 137  : 		ip4 = 0;

	xor	ecx, ecx
$LN1@Get_IP_Add:

; 138  : 	}
; 139  : 	sprintf(temp,"%d.%d.%d.%d",ip1,ip2,ip3,ip4);

	push	ecx
	push	esi
	push	edx
	push	eax
	push	OFFSET ??_C@_0M@PCENNPGA@?$CFd?4?$CFd?4?$CFd?4?$CFd?$AA@
	push	edi
	call	_sprintf
	add	esp, 24					; 00000018H

; 140  : 	return temp;

	mov	eax, edi

; 141  : }

	pop	edi
	pop	esi
	mov	esp, ebp
	pop	ebp
	ret	0
?Get_IP_Address@@YAPBDH@Z ENDP				; Get_IP_Address
_TEXT	ENDS
PUBLIC	?Get_Ping@@YAKH@Z				; Get_Ping
; Function compile flags: /Ogtpy
;	COMDAT ?Get_Ping@@YAKH@Z
_TEXT	SEGMENT
_ping$ = -4						; size = 4
_PlayerID$ = 8						; size = 4
?Get_Ping@@YAKH@Z PROC					; Get_Ping, COMDAT

; 144  : {

	push	ebp
	mov	ebp, esp
	push	ecx

; 145  : 	int ping;
; 146  : #ifdef WIN32
; 147  : 	_asm {
; 148  : 		push PlayerID

	push	DWORD PTR _PlayerID$[ebp]

; 149  : 		mov eax,ServerConnection

	mov	eax, DWORD PTR ?ServerConnection@@3PAPADA ; ServerConnection

; 150  : 		mov ecx,[eax]

	mov	ecx, DWORD PTR [eax]

; 151  : 		call Get_Remote_Host

	call	DWORD PTR ?Get_Remote_Host@@3P6APADH@ZA	; Get_Remote_Host

; 152  : 		test eax, eax

	test	eax, eax

; 153  : 		jz loc1

	je	SHORT $loc1$41080

; 154  : 		mov eax,[eax+0x2A4]

	mov	eax, DWORD PTR [eax+676]

; 155  : 		mov ping,eax

	mov	DWORD PTR _ping$[ebp], eax

; 156  : 		jmp loc2

	jmp	SHORT $loc2$41081
$loc1$41080:

; 157  : loc1:
; 158  : 		mov ping, 0

	mov	DWORD PTR _ping$[ebp], 0
$loc2$41081:

; 159  : loc2:
; 160  : 	}
; 161  : #else
; 162  : 	char *RemoteHost = Get_Remote_Host(*ServerConnection,PlayerID);
; 163  : 	if (RemoteHost)
; 164  : 	{
; 165  : 		RemoteHost += 0x29C;
; 166  : 		ping = *(int *)RemoteHost;
; 167  : 	}
; 168  : 	else
; 169  : 	{
; 170  : 		ping = 0;
; 171  : 	}
; 172  : #endif
; 173  : 	return ping;

	mov	eax, DWORD PTR _ping$[ebp]

; 174  : }

	mov	esp, ebp
	pop	ebp
	ret	0
?Get_Ping@@YAKH@Z ENDP					; Get_Ping
_TEXT	ENDS
PUBLIC	?Get_Kbits@@YAKH@Z				; Get_Kbits
; Function compile flags: /Ogtpy
;	COMDAT ?Get_Kbits@@YAKH@Z
_TEXT	SEGMENT
_kbits$ = -4						; size = 4
_PlayerID$ = 8						; size = 4
?Get_Kbits@@YAKH@Z PROC					; Get_Kbits, COMDAT

; 177  : {

	push	ebp
	mov	ebp, esp
	push	ecx

; 178  : 	int kbits;
; 179  : #ifdef WIN32
; 180  : 	_asm {
; 181  : 		push PlayerID

	push	DWORD PTR _PlayerID$[ebp]

; 182  : 		mov eax,ServerConnection

	mov	eax, DWORD PTR ?ServerConnection@@3PAPADA ; ServerConnection

; 183  : 		mov ecx,[eax]

	mov	ecx, DWORD PTR [eax]

; 184  : 		call Get_Remote_Host

	call	DWORD PTR ?Get_Remote_Host@@3P6APADH@ZA	; Get_Remote_Host

; 185  : 		test eax, eax

	test	eax, eax

; 186  : 		jz loc1

	je	SHORT $loc1$41086

; 187  : 		mov ecx,eax

	mov	ecx, eax

; 188  : 		call Get_Address

	call	DWORD PTR ?Get_Address@@3P6APAUsockaddr_in@@XZA ; Get_Address

; 189  : 		mov ecx, PacketManager

	mov	ecx, DWORD PTR ?PacketManager@@3PAXA	; PacketManager

; 190  : 		push eax

	push	eax

; 191  : 		call Bandwidth_Out

	call	DWORD PTR ?Bandwidth_Out@@3P6AHPAUsockaddr_in@@@ZA ; Bandwidth_Out

; 192  : 		mov kbits, eax

	mov	DWORD PTR _kbits$[ebp], eax

; 193  : 		jmp loc2

	jmp	SHORT $loc2$41087
$loc1$41086:

; 194  : loc1:
; 195  : 		mov kbits, 0

	mov	DWORD PTR _kbits$[ebp], 0
$loc2$41087:

; 196  : loc2:
; 197  : 	}
; 198  : #else
; 199  : 	char *RemoteHost = Get_Remote_Host(*ServerConnection,PlayerID);
; 200  : 	if (RemoteHost)
; 201  : 	{
; 202  : 		sockaddr_in *addr = Get_Address(RemoteHost);
; 203  : 		kbits = Bandwidth_Out(PacketManager,addr);
; 204  : 	}
; 205  : 	else
; 206  : 	{
; 207  : 		kbits = 0;
; 208  : 	}
; 209  : #endif
; 210  : 	return kbits >> 0x0A;

	mov	eax, DWORD PTR _kbits$[ebp]
	sar	eax, 10					; 0000000aH

; 211  : }

	mov	esp, ebp
	pop	ebp
	ret	0
?Get_Kbits@@YAKH@Z ENDP					; Get_Kbits
_TEXT	ENDS
PUBLIC	?Get_Bandwidth@@YAHH@Z				; Get_Bandwidth
; Function compile flags: /Ogtpy
;	COMDAT ?Get_Bandwidth@@YAHH@Z
_TEXT	SEGMENT
_bandwidth$ = -4					; size = 4
_PlayerID$ = 8						; size = 4
?Get_Bandwidth@@YAHH@Z PROC				; Get_Bandwidth, COMDAT

; 214  : {

	push	ebp
	mov	ebp, esp
	push	ecx

; 215  : 	int bandwidth;
; 216  : #ifdef WIN32
; 217  : 	_asm {
; 218  : 		push PlayerID

	push	DWORD PTR _PlayerID$[ebp]

; 219  : 		mov eax,ServerConnection

	mov	eax, DWORD PTR ?ServerConnection@@3PAPADA ; ServerConnection

; 220  : 		mov ecx,[eax]

	mov	ecx, DWORD PTR [eax]

; 221  : 		call Get_Remote_Host

	call	DWORD PTR ?Get_Remote_Host@@3P6APADH@ZA	; Get_Remote_Host

; 222  : 		test eax, eax

	test	eax, eax

; 223  : 		jz loc1

	je	SHORT $loc1$41092

; 224  : 		mov eax,[eax+0x338]

	mov	eax, DWORD PTR [eax+824]

; 225  : 		mov bandwidth,eax

	mov	DWORD PTR _bandwidth$[ebp], eax

; 226  : 		jmp loc2

	jmp	SHORT $loc2$41093
$loc1$41092:

; 227  : loc1:
; 228  : 		mov bandwidth, 0

	mov	DWORD PTR _bandwidth$[ebp], 0
$loc2$41093:

; 229  : loc2:
; 230  : 	}
; 231  : #else
; 232  : 	char *RemoteHost = Get_Remote_Host(*ServerConnection,PlayerID);
; 233  : 	if (RemoteHost)
; 234  : 	{
; 235  : 		RemoteHost += 0x330;
; 236  : 		bandwidth = *(int *)RemoteHost;
; 237  : 	}
; 238  : 	else
; 239  : 	{
; 240  : 		bandwidth = 0;
; 241  : 	}
; 242  : #endif
; 243  : 	return bandwidth;

	mov	eax, DWORD PTR _bandwidth$[ebp]

; 244  : }

	mov	esp, ebp
	pop	ebp
	ret	0
?Get_Bandwidth@@YAHH@Z ENDP				; Get_Bandwidth
_TEXT	ENDS
PUBLIC	??_C@_0P@FOCHHKCH@?$CFd?4?$CFd?4?$CFd?4?$CFd?$DL?$CFd?$AA@ ; `string'
PUBLIC	??_C@_0M@BMLEFENB@Get_IP_Port?$AA@		; `string'
PUBLIC	?Get_IP_Port@@YAPBDH@Z				; Get_IP_Port
EXTRN	__imp__ntohs@4:PROC
;	COMDAT ??_C@_0P@FOCHHKCH@?$CFd?4?$CFd?4?$CFd?4?$CFd?$DL?$CFd?$AA@
CONST	SEGMENT
??_C@_0P@FOCHHKCH@?$CFd?4?$CFd?4?$CFd?4?$CFd?$DL?$CFd?$AA@ DB '%d.%d.%d.%'
	DB	'd;%d', 00H					; `string'
CONST	ENDS
;	COMDAT ??_C@_0M@BMLEFENB@Get_IP_Port?$AA@
CONST	SEGMENT
??_C@_0M@BMLEFENB@Get_IP_Port?$AA@ DB 'Get_IP_Port', 00H ; `string'
; Function compile flags: /Ogtpy
CONST	ENDS
;	COMDAT ?Get_IP_Port@@YAPBDH@Z
_TEXT	SEGMENT
_ip4$ = -16						; size = 4
_temp$ = -12						; size = 4
_addr$ = -8						; size = 4
_noaddr$ = -1						; size = 1
_PlayerID$ = 8						; size = 4
?Get_IP_Port@@YAPBDH@Z PROC				; Get_IP_Port, COMDAT

; 247  : {

	push	ebp
	mov	ebp, esp
	sub	esp, 16					; 00000010H
	push	ebx

; 248  : 	sockaddr_in *addr = 0;

	xor	ebx, ebx
	push	esi
	push	edi
	mov	DWORD PTR _addr$[ebp], ebx

; 249  : 	bool noaddr = false;

	mov	BYTE PTR _noaddr$[ebp], bl

; 250  : #ifdef WIN32
; 251  : 	_asm {
; 252  : 		push PlayerID

	push	DWORD PTR _PlayerID$[ebp]

; 253  : 		mov eax,ServerConnection

	mov	eax, DWORD PTR ?ServerConnection@@3PAPADA ; ServerConnection

; 254  : 		mov ecx,[eax]

	mov	ecx, DWORD PTR [eax]

; 255  : 		call Get_Remote_Host

	call	DWORD PTR ?Get_Remote_Host@@3P6APADH@ZA	; Get_Remote_Host

; 256  : 		test eax, eax

	test	eax, eax

; 257  : 		jz loc1

	je	SHORT $loc1$41099

; 258  : 		mov ecx,eax

	mov	ecx, eax

; 259  : 		call Get_Address

	call	DWORD PTR ?Get_Address@@3P6APAUsockaddr_in@@XZA ; Get_Address

; 260  : 		mov addr,eax

	mov	DWORD PTR _addr$[ebp], eax

; 261  : 		jmp loc2

	jmp	SHORT $loc2$41100
$loc1$41099:

; 262  : loc1:
; 263  : 		mov noaddr,1

	mov	BYTE PTR _noaddr$[ebp], 1
$loc2$41100:

; 264  : loc2:
; 265  : 	}
; 266  : #else
; 267  : 	char *RemoteHost = Get_Remote_Host(*ServerConnection,PlayerID);
; 268  : 	if (RemoteHost)
; 269  : 	{
; 270  : 		addr = Get_Address(RemoteHost);
; 271  : 	}
; 272  : 	else
; 273  : 	{
; 274  : 		noaddr = true;
; 275  : 	}
; 276  : #endif
; 277  : 	char *temp;
; 278  : 	temp = new char[40];

	push	OFFSET ??_C@_0M@BMLEFENB@Get_IP_Port?$AA@
	push	278					; 00000116H
	push	OFFSET ??_C@_0BB@POBPMOED@?4?2engine_net?4cpp?$AA@
	call	?m_setOwner@@YAXPBDI0@Z			; m_setOwner
	push	40					; 00000028H
	call	??_U@YAPAXI@Z				; operator new[]
	add	esp, 16					; 00000010H

; 279  : 	int ip1,ip2,ip3,ip4,port;
; 280  : 	if (!noaddr && addr)

	cmp	BYTE PTR _noaddr$[ebp], bl
	mov	DWORD PTR _temp$[ebp], eax
	jne	SHORT $LN2@Get_IP_Por
	mov	eax, DWORD PTR _addr$[ebp]
	cmp	eax, ebx
	je	SHORT $LN2@Get_IP_Por

; 281  : 	{
; 282  : 		ip1 = addr->sin_addr.s_addr&0x000000FF;
; 283  : 		ip2 = (addr->sin_addr.s_addr&0x0000FF00)>>8;
; 284  : 		ip3 = (addr->sin_addr.s_addr&0x00FF0000)>>16;
; 285  : 		ip4 = (addr->sin_addr.s_addr&0xFF000000)>>24;
; 286  : 		port = ntohs(addr->sin_port);

	movzx	edx, WORD PTR [eax+2]
	movzx	ecx, BYTE PTR [eax+7]
	mov	esi, DWORD PTR [eax+4]
	movzx	edi, BYTE PTR [eax+5]
	movzx	ebx, BYTE PTR [eax+6]
	push	edx
	and	esi, 255				; 000000ffH
	mov	DWORD PTR _ip4$[ebp], ecx
	call	DWORD PTR __imp__ntohs@4

; 287  : 	}
; 288  : 	else

	mov	ecx, DWORD PTR _ip4$[ebp]
	movzx	eax, ax
	jmp	SHORT $LN1@Get_IP_Por
$LN2@Get_IP_Por:

; 289  : 	{
; 290  : 		ip1 = 0;

	xor	esi, esi

; 291  : 		ip2 = 0;

	xor	edi, edi

; 292  : 		ip3 = 0;
; 293  : 		ip4 = 0;

	xor	ecx, ecx

; 294  : 		port = 0;

	xor	eax, eax
$LN1@Get_IP_Por:

; 295  : 	}
; 296  : 	sprintf(temp,"%d.%d.%d.%d;%d",ip1,ip2,ip3,ip4,port);

	push	eax
	mov	eax, DWORD PTR _temp$[ebp]
	push	ecx
	push	ebx
	push	edi
	push	esi
	push	OFFSET ??_C@_0P@FOCHHKCH@?$CFd?4?$CFd?4?$CFd?4?$CFd?$DL?$CFd?$AA@
	push	eax
	call	_sprintf

; 297  : 	return temp;

	mov	eax, DWORD PTR _temp$[ebp]
	add	esp, 28					; 0000001cH

; 298  : }

	pop	edi
	pop	esi
	pop	ebx
	mov	esp, ebp
	pop	ebp
	ret	0
?Get_IP_Port@@YAPBDH@Z ENDP				; Get_IP_Port
_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
$T44014 = -12						; size = 12
_this$ = 8						; size = 4
$T44020 = 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 $T44020[esp+12]
	push	eax
	lea	ecx, DWORD PTR $T44014[esp+20]
	mov	DWORD PTR $T44020[esp+16], 0
	call	??0exception@std@@QAE@ABQBD@Z		; std::exception::exception
	push	OFFSET __TI2?AVbad_alloc@std@@
	lea	ecx, DWORD PTR $T44014[esp+20]
	push	ecx
	mov	DWORD PTR $T44014[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
$T44026 = -12						; size = 12
$T44031 = 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 $T44031[esp+12]
	push	eax
	lea	ecx, DWORD PTR $T44026[esp+20]
	mov	DWORD PTR $T44031[esp+16], 0
	call	??0exception@std@@QAE@ABQBD@Z		; std::exception::exception
	push	OFFSET __TI2?AVbad_alloc@std@@
	lea	ecx, DWORD PTR $T44026[esp+20]
	push	ecx
	mov	DWORD PTR $T44026[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	?deallocate@?$_DebugHeapAllocator@D@std@@QAEXPADI@Z ; std::_DebugHeapAllocator<char>::deallocate
; Function compile flags: /Ogtpy
;	COMDAT ?deallocate@?$_DebugHeapAllocator@D@std@@QAEXPADI@Z
_TEXT	SEGMENT
__Ptr$ = 8						; size = 4
___formal$ = 12						; size = 4
?deallocate@?$_DebugHeapAllocator@D@std@@QAEXPADI@Z PROC ; std::_DebugHeapAllocator<char>::deallocate, COMDAT
; _this$ = ecx

; 102  : 		_DELETE_CRT_VEC(_Ptr);

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

; 103  : 		}

	ret	8
?deallocate@?$_DebugHeapAllocator@D@std@@QAEXPADI@Z ENDP ; std::_DebugHeapAllocator<char>::deallocate
_TEXT	ENDS
PUBLIC	??0?$_DebugHeapAllocator@D@std@@QAE@XZ		; std::_DebugHeapAllocator<char>::_DebugHeapAllocator<char>
; Function compile flags: /Ogtpy
;	COMDAT ??0?$_DebugHeapAllocator@D@std@@QAE@XZ
_TEXT	SEGMENT
??0?$_DebugHeapAllocator@D@std@@QAE@XZ PROC		; std::_DebugHeapAllocator<char>::_DebugHeapAllocator<char>, COMDAT
; _this$ = ecx
	mov	eax, ecx
	ret	0
??0?$_DebugHeapAllocator@D@std@@QAE@XZ ENDP		; std::_DebugHeapAllocator<char>::_DebugHeapAllocator<char>
_TEXT	ENDS
PUBLIC	??0?$_DebugHeapAllocator@D@std@@QAE@ABV01@@Z	; std::_DebugHeapAllocator<char>::_DebugHeapAllocator<char>
; Function compile flags: /Ogtpy
;	COMDAT ??0?$_DebugHeapAllocator@D@std@@QAE@ABV01@@Z
_TEXT	SEGMENT
___that$ = 8						; size = 4
??0?$_DebugHeapAllocator@D@std@@QAE@ABV01@@Z PROC	; std::_DebugHeapAllocator<char>::_DebugHeapAllocator<char>, COMDAT
; _this$ = ecx
	mov	eax, ecx
	ret	4
??0?$_DebugHeapAllocator@D@std@@QAE@ABV01@@Z ENDP	; std::_DebugHeapAllocator<char>::_DebugHeapAllocator<char>
_TEXT	ENDS
END
